Contract 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b

 

Contract Overview

Balance:
1,241.187746310426263831 BNB

BNB Value:
$778,497.78 (@ $627.22/BNB)

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0x937382f8bc3082bd7063647d90a84ae0e5618f0c0840a85c8da7980657e7f209(pending)2021-05-06 21:11:293 secs ago0x94bdc2703c389d3febf606234a87c882773d3363 IN 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB(Pending)
0x429d6816c5d1cdefccaa5e5c0983b7ded2784704fde5da0b902f3714564b9da1(pending)2021-05-06 21:11:293 secs ago0xdac6f676c6c1a2c09498425ad3b2ba657ca89149 IN 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB(Pending)
0x2f2b9322c4d6da36a70c31efddd907db0611320471a478d345e9328f6903336c71958572021-05-06 21:11:239 secs ago0xc1ce0b4963f59dfe3de3c2ac05319340c216d97f IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.1 BNB0.000622765
0x318ab1c1d9973c3be1b5bb3fcf5c8c83128a237cd2bb2c5f0a4ffb935f31e68a71958572021-05-06 21:11:239 secs ago0xdac6f676c6c1a2c09498425ad3b2ba657ca89149 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.00118545
0xa62b5e401c758d802f7af84ecd3e3c8e2296243f2b30d580a40b9cdaae3bb05871958562021-05-06 21:11:2012 secs ago0xf98a8d75994bec8ffc303083192bcd98af8b324b IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.019757425288155 BNB0.000132755
0xc0bb4d481fe9693db98104d2c7cce00847247ec229a5a5f21105e007db8441e371958562021-05-06 21:11:2012 secs ago0x2ba3eacaadfb746d65ea55784c3a595e338fa60f IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.02 BNB0.00013281
0x90360e5ea59dc0139ba93767ce3fdc854393d3c43ee97eee98ba985df3852eb871958562021-05-06 21:11:2012 secs ago0xdac6f676c6c1a2c09498425ad3b2ba657ca89149 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.0067645
0xf691494a4475f4ef0831ce42c3ec177485d709d676c7edf77726373ee75de20971958552021-05-06 21:11:1715 secs ago0x010dd0b8ee75e35169e1a42163ab9c6f162708da IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.12348068369103 BNB0.00013719
0x3e137987c31d2bd4d76b19071b2c913a3686f4ee3114f06e03da2f6f3347dc3e71958552021-05-06 21:11:1715 secs ago0x03ef80d827af450863479affb06411102133949e IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.001391885135275 BNB0.00013719
0xc0d37ffce5339fdff5bb5a55864fd8e8d28a30aa1a88978e74bbcf4850d534af71958552021-05-06 21:11:1715 secs ago0x28940722edeeba771090138338a45155bf6d641d IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.001 BNB0.000137135
0x1788c4466464d93814c8324c92cf387aa25d1ac726f841f13955461956072dcb71958552021-05-06 21:11:1715 secs ago0x84579d4988bd3ba9b994b86d0ebce7846efa7ab7 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.016239379144219 BNB0.000137135
0xbdecdb1848ea57116e79f24a96d1cb85fe3ded3011b1d349fcf18b09083329c271958542021-05-06 21:11:1418 secs ago0xd66c9fe1be11fd5ec608fe686138edff40462f5e IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.001 BNB0.000137135
0x6d945fb61cf4cbf00f1a5f8c5b9cce383f4c14e05da1aed4258f08400f1349bf71958542021-05-06 21:11:1418 secs ago0x2d121321c33b8daf74ddcc5df3fa4cb0c112bfe0 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.012711588745583 BNB0.00013719
0x1a2187a7bb226deb15a939b1eb26e176012f49962d5b4f6b1c315068a5cc710271958542021-05-06 21:11:1418 secs ago0x54e87d4c8b37aa4c568847dd65d6555448190335 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.03 BNB0.00013719
0x207829bb5bcc55ef5fa111dfb427c8e1364d5f07cc35bab58b3fb45fbf5b5caf71958542021-05-06 21:11:1418 secs ago0x44ff29168d9c5472c9e051ff3a2740a879102400 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.122127307917063 BNB0.000137135
0x4470c18426b953e8f9a4c999a2d3d959b85ca08bc296a3edcda8fab17a11b76871958542021-05-06 21:11:1418 secs ago0x82cfe72553f2571ce5216b7611b27e1b617a02bd IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.00012548
0x50d7a64705bf0121a258d704607f2be62f8ec5a104d79232acfee93e48a8759a71958532021-05-06 21:11:1121 secs ago0xef967cdc71e0f9140bd5799566dcefe211e90d59 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.009262021812378 BNB0.000137135
0x817b0aacd3f194631e4336016d68e0ecc14da06aa7d616269099b9942fcaa69171958532021-05-06 21:11:1121 secs ago0xd3bbf1d0c58b9b6cc177f245156614c5b6ab6e65 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.105792025367228 BNB0.000137135
0x813ddba3c7f80307d02c3866f35e644828cb84c03b6d50dafbf5d23ac477ae5271958532021-05-06 21:11:1121 secs ago0xb9f4cdd9ede4f8cb42a1a8348397487973c62509 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.06 BNB0.000137135
0x773eb97b9be1ae01df73621415d345e4be411e2d5ddaa4b0d45720362f0a23bc71958532021-05-06 21:11:1121 secs ago0x418dc35100be400a75e8577fc8352ea1ec3cd04a IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.019703184441655 BNB0.000137135
0x626f4982f3767f9b483de43bc1db7358f4f5a127f3fae8c94cb7391f53b1f5df71958532021-05-06 21:11:1121 secs ago0xb372fb0d46821aeab6ebe6b9f442345ebefcc643 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.087516177790203 BNB0.000137135
0xae57cab2a2ecdd5b0fc3006c5f283c527d771334ed03458a6fc3b8ba98556f8371958532021-05-06 21:11:1121 secs ago0x790af295a40bd39aa82479691a2dbfe1d1c692b6 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.45 BNB0.000137135
0x5180be9391d2303f85834893c82dcfdc4bf097860181923802be1aff499bbbc671958522021-05-06 21:11:0824 secs ago0xb6d8db81e1e195edbbc604e6329ff544be942a3e IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.050264592564103 BNB0.00013719
0xa23ead092338ed8390ffd552ee13b132a1875d50b1d985bf92ff4b2948471fe471958522021-05-06 21:11:0824 secs ago0x47add36098d28fb8196def9bec7b5b66a3c97cf9 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.00689977497715 BNB0.00013719
0xaf8c1ff6c705928153cbc634cbba0ab68a422f2a65fc9b24fe28f6f05b4cfd0a71958522021-05-06 21:11:0824 secs ago0xf1a83db8c4736478d9a33443878d7ec45c5e680e IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.0080873459375 BNB0.00013719
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x1f7e3930c7fa438d472bf607a9962ee465603f0d3103872d7dae9b4e040fe10471958462021-05-06 21:10:5042 secs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xabe39c30eced0d065b6189e75af316dd8424e6540.01076049638175562 BNB
0x77489ed345c4979b8b21203aa4894d8cfe301685f5300cfdf92adba0c2b6d25371958452021-05-06 21:10:4745 secs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xc6e3da7fbbeca562a575d01db6a7b468de19e7900.045356204479919342 BNB
0x2d3d9e8c2acfa52cd89d5bfefd994a69e475fcb71b4c10e511e0266ec088cadc71958412021-05-06 21:10:3557 secs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x02d49fbc41db471d1f734dd88fa6dcfd86c0f4880.007854209105105947 BNB
0xb4727b07ac1ee68f8801148af990923b87abcf6fffdebf94e92c55b36873f1df71958392021-05-06 21:10:291 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xf98a8d75994bec8ffc303083192bcd98af8b324b0.067369209539825882 BNB
0x4982ef4beffcd3f5d70dde8a2e19551c95477487da255d4d928fa5e2a0b33b2b71958372021-05-06 21:10:231 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x6969674de2a8618f907870addc0deb1d8fda6bcb0.011487341040463696 BNB
0xa40ba30ddd6ce3b40c9b62402a4f5e7cb4e5ef556043ba8e261fed9c4f5b95e371958362021-05-06 21:10:201 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xffe0d27e0963e195b47bb5fbae6629529cc0e00b0.048454365831268405 BNB
0xcca989f35b84f5bc3e0495746c6dae1b66d74b348ea0b0bc8ceca3ffe93676dc71958352021-05-06 21:10:171 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x031bcafe8fa15dc1a66fcb41ffd34b09dd2d689c0.007270469012951706 BNB
0x71b36a4eb9022cb320b87a75c09b925f9a542c576b11c202af085027848e3eb571958312021-05-06 21:10:051 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x210add88c75255e95a4c8c4b9c694ccd77dde4c30.010544426133620007 BNB
0x1ff168a2b45e53585b9acd6957b0e7700ef0181c0a267c533f44890d56e86d9c71958282021-05-06 21:09:561 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xce4326ef36face42034eab3e029a476ab31760a80.01062592305805395 BNB
0x828afdb549fb063d60478df25fe93e1197ad26d94a68d4ea23976d23d851569571958282021-05-06 21:09:561 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x9fc0d2974a7c8fbf966812bcee06629f83f24a410.07523731365116066 BNB
0x11b365e050a14fffb2ca6d2008eda7033211aad27410ac5ef162d4feaece51a971958242021-05-06 21:09:441 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x3f48857d7bc0b651127a547d099fa4580b72ca170.007325323475030021 BNB
0x9e170351585e63455ed5bb08f95e3a1e8ea0835daefa7db14e859c9a0e5e7a7271958242021-05-06 21:09:441 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xd3ae2fb12cbd7a49b9e47d89f94364c657d7e8f70.786469368975538541 BNB
0xebe2aee358fef831ca95af1aa5867bcdcb25332240dd827825981150f668350771958232021-05-06 21:09:411 min ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x7dfc7f7cced6e36144cdc82c9375f30906a357b70.074413384441626505 BNB
0xd7da9636453990f8c020788d7193845616d666bc49bb34c012461c0aabe0c3d771958202021-05-06 21:09:322 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x6123d4abd919f6c17a218546a5b35b15a7fb354b0.292048448951436056 BNB
0xec2758d9df05ca2eb6151c6392f8a47009e8be1eef9e7f4f9d665d07ddb9d13271958202021-05-06 21:09:322 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xe4b898487dff6386dfdd5883c70e8bb2814c1c6a0.020033192477777603 BNB
0x98957bd807313b26b33248be0fdf6f54091d5332eb08dff1239e8d415ceed83071958182021-05-06 21:09:262 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xb1b013b1fafdf8005247715d568135bb7d7c8e0b0.005816375210361365 BNB
0xa93e2401ec5763fa1d863c38eefe926e931a51f5993ca6670ac28f39cc750e6071958172021-05-06 21:09:232 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x4da31f15a5b384184cf4fc42471714da54efdd090.056039019306855417 BNB
0x1819ffab3f767287d8555cf3f4dabf30b1b36c29770b5669175ca6a9601e386c71958172021-05-06 21:09:232 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x1d6e3cff42e00a0ed962b54a5df999b86956c3300.036471026614804335 BNB
0xed01b0fe2e47ef5b334dcc71f26a9d107e044148ba26c3cffae450688b9174be71958162021-05-06 21:09:202 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x01cef2cc601208be55c5b67ea9d7b7520a95d7330.019328045821033215 BNB
0x93fbd9e9a5b9a3bbaae8a46cb962697d63c0684191fb21be4f3fc011e40f70f271958152021-05-06 21:09:172 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x14389a211db80f182603e83814e6acdd9fe455790.043622814077710241 BNB
0xb8a31692773b548c4e1b35a865c6beae4334e2648c3a43964b7fabfb0540385771958152021-05-06 21:09:172 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x78d7a2405b7c2196ec039edbdf9355ad82b680b70.189334517564338669 BNB
0xd31f61f16ebb1a234bd490a6548f5cd15b546346740c05d128fcc321fce1418271958152021-05-06 21:09:172 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xf2efce459da9dd4d4596677a219d1d6a283da9371.454093802590341369 BNB
0x01ec74bdb8b5a3029950172644e21d4ba336344b5c68cc588c874851b196d5fe71958142021-05-06 21:09:142 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x527e2488587c3b17ede0c7a115eec4990f008bd10.290818760518068273 BNB
0xefb69b9b52f4df0299a41bdded5ecf47cc7a94267e1e63b577de070c8c13bb7a71958132021-05-06 21:09:112 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x6d45dd94b4f628e50cbd54072170757e5ddbea070.008846815751994831 BNB
0xb55682f698e02fd088c8fcc1e9ef5e813701ee0496816bfdf2d8d56b8509fbd671958122021-05-06 21:09:082 mins ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x3944236d593750c63b7bb315950432c594442e820.007270469012951706 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BnbPricePrediction

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 99999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-04-28
*/

// File: @openzeppelin/contracts/math/SafeMath.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
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) {
        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) {
        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) {
        // 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) {
        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) {
        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) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    /**
     * @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) {
        require(b <= a, "SafeMath: subtraction overflow");
        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) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    /**
     * @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. 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) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        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) {
        require(b > 0, "SafeMath: modulo by zero");
        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) {
        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.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * 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) {
        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) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

// File: @openzeppelin/contracts/utils/Context.sol

pragma solidity >=0.6.0 <0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

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

// File: @openzeppelin/contracts/access/Ownable.sol

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: @openzeppelin/contracts/utils/Pausable.sol

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() internal {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

// File: contracts/interfaces/AggregatorV3Interface.sol

pragma solidity >=0.6.0;

interface AggregatorV3Interface {
    function decimals() external view returns (uint8);

    function description() external view returns (string memory);

    function version() external view returns (uint256);

    // getRoundData and latestRoundData should both raise "No data present"
    // if they do not have data to report, instead of returning unset values
    // which could be misinterpreted as actual reported values.
    function getRoundData(uint80 _roundId)
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );

    function latestRoundData()
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );
}

// File: contracts/BnbPricePrediction.sol

pragma solidity 0.6.12;

contract BnbPricePrediction is Ownable, Pausable {
    using SafeMath for uint256;

    struct Round {
        uint256 epoch;
        uint256 startBlock;
        uint256 lockBlock;
        uint256 endBlock;
        int256 lockPrice;
        int256 closePrice;
        uint256 totalAmount;
        uint256 bullAmount;
        uint256 bearAmount;
        uint256 rewardBaseCalAmount;
        uint256 rewardAmount;
        bool oracleCalled;
    }

    enum Position {Bull, Bear}

    struct BetInfo {
        Position position;
        uint256 amount;
        bool claimed; // default false
    }

    mapping(uint256 => Round) public rounds;
    mapping(uint256 => mapping(address => BetInfo)) public ledger;
    mapping(address => uint256[]) public userRounds;
    uint256 public currentEpoch;
    uint256 public intervalBlocks;
    uint256 public bufferBlocks;
    address public adminAddress;
    address public operatorAddress;
    uint256 public treasuryAmount;
    AggregatorV3Interface internal oracle;
    uint256 public oracleLatestRoundId;

    uint256 public constant TOTAL_RATE = 100; // 100%
    uint256 public rewardRate = 90; // 90%
    uint256 public treasuryRate = 10; // 10%
    uint256 public minBetAmount;
    uint256 public oracleUpdateAllowance; // seconds

    bool public genesisStartOnce = false;
    bool public genesisLockOnce = false;

    event StartRound(uint256 indexed epoch, uint256 blockNumber);
    event LockRound(uint256 indexed epoch, uint256 blockNumber, int256 price);
    event EndRound(uint256 indexed epoch, uint256 blockNumber, int256 price);
    event BetBull(address indexed sender, uint256 indexed currentEpoch, uint256 amount);
    event BetBear(address indexed sender, uint256 indexed currentEpoch, uint256 amount);
    event Claim(address indexed sender, uint256 indexed currentEpoch, uint256 amount);
    event ClaimTreasury(uint256 amount);
    event RatesUpdated(uint256 indexed epoch, uint256 rewardRate, uint256 treasuryRate);
    event MinBetAmountUpdated(uint256 indexed epoch, uint256 minBetAmount);
    event RewardsCalculated(
        uint256 indexed epoch,
        uint256 rewardBaseCalAmount,
        uint256 rewardAmount,
        uint256 treasuryAmount
    );
    event Pause(uint256 epoch);
    event Unpause(uint256 epoch);

    constructor(
        AggregatorV3Interface _oracle,
        address _adminAddress,
        address _operatorAddress,
        uint256 _intervalBlocks,
        uint256 _bufferBlocks,
        uint256 _minBetAmount,
        uint256 _oracleUpdateAllowance
    ) public {
        oracle = _oracle;
        adminAddress = _adminAddress;
        operatorAddress = _operatorAddress;
        intervalBlocks = _intervalBlocks;
        bufferBlocks = _bufferBlocks;
        minBetAmount = _minBetAmount;
        oracleUpdateAllowance = _oracleUpdateAllowance;
    }

    modifier onlyAdmin() {
        require(msg.sender == adminAddress, "admin: wut?");
        _;
    }

    modifier onlyOperator() {
        require(msg.sender == operatorAddress, "operator: wut?");
        _;
    }

    modifier onlyAdminOrOperator() {
        require(msg.sender == adminAddress || msg.sender == operatorAddress, "admin | operator: wut?");
        _;
    }

    modifier notContract() {
        require(!_isContract(msg.sender), "contract not allowed");
        require(msg.sender == tx.origin, "proxy contract not allowed");
        _;
    }

    /**
     * @dev set admin address
     * callable by owner
     */
    function setAdmin(address _adminAddress) external onlyOwner {
        require(_adminAddress != address(0), "Cannot be zero address");
        adminAddress = _adminAddress;
    }

    /**
     * @dev set operator address
     * callable by admin
     */
    function setOperator(address _operatorAddress) external onlyAdmin {
        require(_operatorAddress != address(0), "Cannot be zero address");
        operatorAddress = _operatorAddress;
    }

    /**
     * @dev set interval blocks
     * callable by admin
     */
    function setIntervalBlocks(uint256 _intervalBlocks) external onlyAdmin {
        intervalBlocks = _intervalBlocks;
    }

    /**
     * @dev set buffer blocks
     * callable by admin
     */
    function setBufferBlocks(uint256 _bufferBlocks) external onlyAdmin {
        require(_bufferBlocks <= intervalBlocks, "Cannot be more than intervalBlocks");
        bufferBlocks = _bufferBlocks;
    }

    /**
     * @dev set Oracle address
     * callable by admin
     */
    function setOracle(address _oracle) external onlyAdmin {
        require(_oracle != address(0), "Cannot be zero address");
        oracle = AggregatorV3Interface(_oracle);
    }

    /**
     * @dev set oracle update allowance
     * callable by admin
     */
    function setOracleUpdateAllowance(uint256 _oracleUpdateAllowance) external onlyAdmin {
        oracleUpdateAllowance = _oracleUpdateAllowance;
    }

    /**
     * @dev set reward rate
     * callable by admin
     */
    function setRewardRate(uint256 _rewardRate) external onlyAdmin {
        require(_rewardRate <= TOTAL_RATE, "rewardRate cannot be more than 100%");
        rewardRate = _rewardRate;
        treasuryRate = TOTAL_RATE.sub(_rewardRate);

        emit RatesUpdated(currentEpoch, rewardRate, treasuryRate);
    }

    /**
     * @dev set treasury rate
     * callable by admin
     */
    function setTreasuryRate(uint256 _treasuryRate) external onlyAdmin {
        require(_treasuryRate <= TOTAL_RATE, "treasuryRate cannot be more than 100%");
        rewardRate = TOTAL_RATE.sub(_treasuryRate);
        treasuryRate = _treasuryRate;

        emit RatesUpdated(currentEpoch, rewardRate, treasuryRate);
    }

    /**
     * @dev set minBetAmount
     * callable by admin
     */
    function setMinBetAmount(uint256 _minBetAmount) external onlyAdmin {
        minBetAmount = _minBetAmount;

        emit MinBetAmountUpdated(currentEpoch, minBetAmount);
    }

    /**
     * @dev Start genesis round
     */
    function genesisStartRound() external onlyOperator whenNotPaused {
        require(!genesisStartOnce, "Can only run genesisStartRound once");

        currentEpoch = currentEpoch + 1;
        _startRound(currentEpoch);
        genesisStartOnce = true;
    }

    /**
     * @dev Lock genesis round
     */
    function genesisLockRound() external onlyOperator whenNotPaused {
        require(genesisStartOnce, "Can only run after genesisStartRound is triggered");
        require(!genesisLockOnce, "Can only run genesisLockRound once");
        require(
            block.number <= rounds[currentEpoch].lockBlock.add(bufferBlocks),
            "Can only lock round within bufferBlocks"
        );

        int256 currentPrice = _getPriceFromOracle();
        _safeLockRound(currentEpoch, currentPrice);

        currentEpoch = currentEpoch + 1;
        _startRound(currentEpoch);
        genesisLockOnce = true;
    }

    /**
     * @dev Start the next round n, lock price for round n-1, end round n-2
     */
    function executeRound() external onlyOperator whenNotPaused {
        require(
            genesisStartOnce && genesisLockOnce,
            "Can only run after genesisStartRound and genesisLockRound is triggered"
        );

        int256 currentPrice = _getPriceFromOracle();
        // CurrentEpoch refers to previous round (n-1)
        _safeLockRound(currentEpoch, currentPrice);
        _safeEndRound(currentEpoch - 1, currentPrice);
        _calculateRewards(currentEpoch - 1);

        // Increment currentEpoch to current round (n)
        currentEpoch = currentEpoch + 1;
        _safeStartRound(currentEpoch);
    }

    /**
     * @dev Bet bear position
     */
    function betBear() external payable whenNotPaused notContract {
        require(_bettable(currentEpoch), "Round not bettable");
        require(msg.value >= minBetAmount, "Bet amount must be greater than minBetAmount");
        require(ledger[currentEpoch][msg.sender].amount == 0, "Can only bet once per round");

        // Update round data
        uint256 amount = msg.value;
        Round storage round = rounds[currentEpoch];
        round.totalAmount = round.totalAmount.add(amount);
        round.bearAmount = round.bearAmount.add(amount);

        // Update user data
        BetInfo storage betInfo = ledger[currentEpoch][msg.sender];
        betInfo.position = Position.Bear;
        betInfo.amount = amount;
        userRounds[msg.sender].push(currentEpoch);

        emit BetBear(msg.sender, currentEpoch, amount);
    }

    /**
     * @dev Bet bull position
     */
    function betBull() external payable whenNotPaused notContract {
        require(_bettable(currentEpoch), "Round not bettable");
        require(msg.value >= minBetAmount, "Bet amount must be greater than minBetAmount");
        require(ledger[currentEpoch][msg.sender].amount == 0, "Can only bet once per round");

        // Update round data
        uint256 amount = msg.value;
        Round storage round = rounds[currentEpoch];
        round.totalAmount = round.totalAmount.add(amount);
        round.bullAmount = round.bullAmount.add(amount);

        // Update user data
        BetInfo storage betInfo = ledger[currentEpoch][msg.sender];
        betInfo.position = Position.Bull;
        betInfo.amount = amount;
        userRounds[msg.sender].push(currentEpoch);

        emit BetBull(msg.sender, currentEpoch, amount);
    }

    /**
     * @dev Claim reward
     */
    function claim(uint256 epoch) external notContract {
        require(rounds[epoch].startBlock != 0, "Round has not started");
        require(block.number > rounds[epoch].endBlock, "Round has not ended");
        require(!ledger[epoch][msg.sender].claimed, "Rewards claimed");

        uint256 reward;
        // Round valid, claim rewards
        if (rounds[epoch].oracleCalled) {
            require(claimable(epoch, msg.sender), "Not eligible for claim");
            Round memory round = rounds[epoch];
            reward = ledger[epoch][msg.sender].amount.mul(round.rewardAmount).div(round.rewardBaseCalAmount);
        }
        // Round invalid, refund bet amount
        else {
            require(refundable(epoch, msg.sender), "Not eligible for refund");
            reward = ledger[epoch][msg.sender].amount;
        }

        BetInfo storage betInfo = ledger[epoch][msg.sender];
        betInfo.claimed = true;
        _safeTransferBNB(address(msg.sender), reward);

        emit Claim(msg.sender, epoch, reward);
    }

    /**
     * @dev Claim all rewards in treasury
     * callable by admin
     */
    function claimTreasury() external onlyAdmin {
        uint256 currentTreasuryAmount = treasuryAmount;
        treasuryAmount = 0;
        _safeTransferBNB(adminAddress, currentTreasuryAmount);

        emit ClaimTreasury(currentTreasuryAmount);
    }

    /**
     * @dev Return round epochs that a user has participated
     */
    function getUserRounds(
        address user,
        uint256 cursor,
        uint256 size
    ) external view returns (uint256[] memory, uint256) {
        uint256 length = size;
        if (length > userRounds[user].length - cursor) {
            length = userRounds[user].length - cursor;
        }

        uint256[] memory values = new uint256[](length);
        for (uint256 i = 0; i < length; i++) {
            values[i] = userRounds[user][cursor + i];
        }

        return (values, cursor + length);
    }

    /**
     * @dev called by the admin to pause, triggers stopped state
     */
    function pause() public onlyAdminOrOperator whenNotPaused {
        _pause();

        emit Pause(currentEpoch);
    }

    /**
     * @dev called by the admin to unpause, returns to normal state
     * Reset genesis state. Once paused, the rounds would need to be kickstarted by genesis
     */
    function unpause() public onlyAdmin whenPaused {
        genesisStartOnce = false;
        genesisLockOnce = false;
        _unpause();

        emit Unpause(currentEpoch);
    }

    /**
     * @dev Get the claimable stats of specific epoch and user account
     */
    function claimable(uint256 epoch, address user) public view returns (bool) {
        BetInfo memory betInfo = ledger[epoch][user];
        Round memory round = rounds[epoch];
        if (round.lockPrice == round.closePrice) {
            return false;
        }
        return
            round.oracleCalled &&
            ((round.closePrice > round.lockPrice && betInfo.position == Position.Bull) ||
                (round.closePrice < round.lockPrice && betInfo.position == Position.Bear));
    }

    /**
     * @dev Get the refundable stats of specific epoch and user account
     */
    function refundable(uint256 epoch, address user) public view returns (bool) {
        BetInfo memory betInfo = ledger[epoch][user];
        Round memory round = rounds[epoch];
        return !round.oracleCalled && block.number > round.endBlock.add(bufferBlocks) && betInfo.amount != 0;
    }

    /**
     * @dev Start round
     * Previous round n-2 must end
     */
    function _safeStartRound(uint256 epoch) internal {
        require(genesisStartOnce, "Can only run after genesisStartRound is triggered");
        require(rounds[epoch - 2].endBlock != 0, "Can only start round after round n-2 has ended");
        require(block.number >= rounds[epoch - 2].endBlock, "Can only start new round after round n-2 endBlock");
        _startRound(epoch);
    }

    function _startRound(uint256 epoch) internal {
        Round storage round = rounds[epoch];
        round.startBlock = block.number;
        round.lockBlock = block.number.add(intervalBlocks);
        round.endBlock = block.number.add(intervalBlocks * 2);
        round.epoch = epoch;
        round.totalAmount = 0;

        emit StartRound(epoch, block.number);
    }

    /**
     * @dev Lock round
     */
    function _safeLockRound(uint256 epoch, int256 price) internal {
        require(rounds[epoch].startBlock != 0, "Can only lock round after round has started");
        require(block.number >= rounds[epoch].lockBlock, "Can only lock round after lockBlock");
        require(block.number <= rounds[epoch].lockBlock.add(bufferBlocks), "Can only lock round within bufferBlocks");
        _lockRound(epoch, price);
    }

    function _lockRound(uint256 epoch, int256 price) internal {
        Round storage round = rounds[epoch];
        round.lockPrice = price;

        emit LockRound(epoch, block.number, round.lockPrice);
    }

    /**
     * @dev End round
     */
    function _safeEndRound(uint256 epoch, int256 price) internal {
        require(rounds[epoch].lockBlock != 0, "Can only end round after round has locked");
        require(block.number >= rounds[epoch].endBlock, "Can only end round after endBlock");
        require(block.number <= rounds[epoch].endBlock.add(bufferBlocks), "Can only end round within bufferBlocks");
        _endRound(epoch, price);
    }

    function _endRound(uint256 epoch, int256 price) internal {
        Round storage round = rounds[epoch];
        round.closePrice = price;
        round.oracleCalled = true;

        emit EndRound(epoch, block.number, round.closePrice);
    }

    /**
     * @dev Calculate rewards for round
     */
    function _calculateRewards(uint256 epoch) internal {
        require(rewardRate.add(treasuryRate) == TOTAL_RATE, "rewardRate and treasuryRate must add up to TOTAL_RATE");
        require(rounds[epoch].rewardBaseCalAmount == 0 && rounds[epoch].rewardAmount == 0, "Rewards calculated");
        Round storage round = rounds[epoch];
        uint256 rewardBaseCalAmount;
        uint256 rewardAmount;
        uint256 treasuryAmt;
        // Bull wins
        if (round.closePrice > round.lockPrice) {
            rewardBaseCalAmount = round.bullAmount;
            rewardAmount = round.totalAmount.mul(rewardRate).div(TOTAL_RATE);
            treasuryAmt = round.totalAmount.mul(treasuryRate).div(TOTAL_RATE);
        }
        // Bear wins
        else if (round.closePrice < round.lockPrice) {
            rewardBaseCalAmount = round.bearAmount;
            rewardAmount = round.totalAmount.mul(rewardRate).div(TOTAL_RATE);
            treasuryAmt = round.totalAmount.mul(treasuryRate).div(TOTAL_RATE);
        }
        // House wins
        else {
            rewardBaseCalAmount = 0;
            rewardAmount = 0;
            treasuryAmt = round.totalAmount;
        }
        round.rewardBaseCalAmount = rewardBaseCalAmount;
        round.rewardAmount = rewardAmount;

        // Add to treasury
        treasuryAmount = treasuryAmount.add(treasuryAmt);

        emit RewardsCalculated(epoch, rewardBaseCalAmount, rewardAmount, treasuryAmt);
    }

    /**
     * @dev Get latest recorded price from oracle
     * If it falls below allowed buffer or has not updated, it would be invalid
     */
    function _getPriceFromOracle() internal returns (int256) {
        uint256 leastAllowedTimestamp = block.timestamp.add(oracleUpdateAllowance);
        (uint80 roundId, int256 price, , uint256 timestamp, ) = oracle.latestRoundData();
        require(timestamp <= leastAllowedTimestamp, "Oracle update exceeded max timestamp allowance");
        require(roundId > oracleLatestRoundId, "Oracle update roundId must be larger than oracleLatestRoundId");
        oracleLatestRoundId = uint256(roundId);
        return price;
    }

    function _safeTransferBNB(address to, uint256 value) internal {
        (bool success, ) = to.call{gas: 23000, value: value}("");
        require(success, "TransferHelper: BNB_TRANSFER_FAILED");
    }

    function _isContract(address addr) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(addr)
        }
        return size > 0;
    }

    /**
     * @dev Determine if a round is valid for receiving bets
     * Round must have started and locked
     * Current block must be within startBlock and endBlock
     */
    function _bettable(uint256 epoch) internal view returns (bool) {
        return
            rounds[epoch].startBlock != 0 &&
            rounds[epoch].lockBlock != 0 &&
            block.number > rounds[epoch].startBlock &&
            block.number < rounds[epoch].lockBlock;
    }
}

Contract ABI

[{"inputs":[{"internalType":"contract AggregatorV3Interface","name":"_oracle","type":"address"},{"internalType":"address","name":"_adminAddress","type":"address"},{"internalType":"address","name":"_operatorAddress","type":"address"},{"internalType":"uint256","name":"_intervalBlocks","type":"uint256"},{"internalType":"uint256","name":"_bufferBlocks","type":"uint256"},{"internalType":"uint256","name":"_minBetAmount","type":"uint256"},{"internalType":"uint256","name":"_oracleUpdateAllowance","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"currentEpoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BetBear","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"currentEpoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BetBull","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"currentEpoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimTreasury","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"},{"indexed":false,"internalType":"int256","name":"price","type":"int256"}],"name":"EndRound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"},{"indexed":false,"internalType":"int256","name":"price","type":"int256"}],"name":"LockRound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minBetAmount","type":"uint256"}],"name":"MinBetAmountUpdated","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":false,"internalType":"uint256","name":"epoch","type":"uint256"}],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewardRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"treasuryRate","type":"uint256"}],"name":"RatesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewardBaseCalAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"treasuryAmount","type":"uint256"}],"name":"RewardsCalculated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"StartRound","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"epoch","type":"uint256"}],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"TOTAL_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"adminAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"betBear","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"betBull","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"bufferBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"executeRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"genesisLockOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesisLockRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"genesisStartOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesisStartRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"cursor","type":"uint256"},{"internalType":"uint256","name":"size","type":"uint256"}],"name":"getUserRounds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"intervalBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"ledger","outputs":[{"internalType":"enum BnbPricePrediction.Position","name":"position","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBetAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracleLatestRoundId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracleUpdateAllowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"refundable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rounds","outputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"lockBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"int256","name":"lockPrice","type":"int256"},{"internalType":"int256","name":"closePrice","type":"int256"},{"internalType":"uint256","name":"totalAmount","type":"uint256"},{"internalType":"uint256","name":"bullAmount","type":"uint256"},{"internalType":"uint256","name":"bearAmount","type":"uint256"},{"internalType":"uint256","name":"rewardBaseCalAmount","type":"uint256"},{"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"internalType":"bool","name":"oracleCalled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adminAddress","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bufferBlocks","type":"uint256"}],"name":"setBufferBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_intervalBlocks","type":"uint256"}],"name":"setIntervalBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minBetAmount","type":"uint256"}],"name":"setMinBetAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operatorAddress","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oracle","type":"address"}],"name":"setOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_oracleUpdateAllowance","type":"uint256"}],"name":"setOracleUpdateAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardRate","type":"uint256"}],"name":"setRewardRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryRate","type":"uint256"}],"name":"setTreasuryRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userRounds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052605a600c55600a600d556010805461ffff191690553480156200002657600080fd5b50604051620044af380380620044af833981810160405260e08110156200004c57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949593949293919290919060006200008562000132565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805460ff60a01b19169055600a80546001600160a01b03199081166001600160a01b03998a161790915560078054821697891697909717909655600880549096169490961693909317909355600555600691909155600e55600f5562000136565b3390565b61436980620001466000396000f3fe6080604052600436106102cf5760003560e01c8063821daba111610179578063b3ab15fb116100d6578063e4b725161161008a578063f7fdec2811610064578063f7fdec281461097a578063fa968eea1461098f578063fc6f9468146109a4576102cf565b8063e4b7251614610910578063ec32470314610925578063f2fde38b1461093a576102cf565b8063d0bf9c54116100bb578063d0bf9c541461088b578063d9d55eac146108b5578063dd1f7596146108ca576102cf565b8063b3ab15fb14610821578063cf2f503914610861576102cf565b80639780a7521161012d578063a067455b11610112578063a067455b1461079c578063a0c7f71c146107c6578063b29c299b1461080c576102cf565b80639780a7521461075d5780639e447fc614610772576102cf565b80638c65c81f1161015e5780638c65c81f146106165780638da5cb5b146106a1578063951fd600146106b6576102cf565b8063821daba1146105f95780638456cb5914610601576102cf565b80635c975abb116102325780637285c58b116101e65780637b0a47ee116101c05780637b0a47ee146105895780637b3205f51461059e5780637bf41254146105b3576102cf565b80637285c58b146104bd57806376671808146105345780637adbf97314610549576102cf565b80636c188593116102175780636c1885931461043e578063704b6c0214610468578063715018a6146104a8576102cf565b80635c975abb146104145780636055401114610429576102cf565b80631ec9f34b11610289578063379607f51161026e578063379607f5146103c05780633f4ba83a146103ea578063452fd75a146103ff576102cf565b80631ec9f34b14610384578063368acb09146103ab576102cf565b80630f74174f116102ba5780630f74174f146102f357806310c0ee641461031c578063127effb214610346576102cf565b80623bdc74146102d457806288160f146102eb575b600080fd5b3480156102e057600080fd5b506102e96109b9565b005b6102e9610aa1565b3480156102ff57600080fd5b50610308610e39565b604080519115158252519081900360200190f35b34801561032857600080fd5b506102e96004803603602081101561033f57600080fd5b5035610e47565b34801561035257600080fd5b5061035b610f2d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561039057600080fd5b50610399610f49565b60408051918252519081900360200190f35b3480156103b757600080fd5b50610399610f4f565b3480156103cc57600080fd5b506102e9600480360360208110156103e357600080fd5b5035610f55565b3480156103f657600080fd5b506102e9611445565b34801561040b57600080fd5b506102e96115a5565b34801561042057600080fd5b5061030861173c565b34801561043557600080fd5b5061039961175d565b34801561044a57600080fd5b506102e96004803603602081101561046157600080fd5b5035611763565b34801561047457600080fd5b506102e96004803603602081101561048b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611827565b3480156104b457600080fd5b506102e9611998565b3480156104c957600080fd5b50610503600480360360408110156104e057600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16611aaf565b6040518084600181111561051357fe5b81526020018381526020018215158152602001935050505060405180910390f35b34801561054057600080fd5b50610399611ade565b34801561055557600080fd5b506102e96004803603602081101561056c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ae4565b34801561059557600080fd5b50610399611c33565b3480156105aa57600080fd5b506102e9611c39565b3480156105bf57600080fd5b50610308600480360360408110156105d657600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16611ded565b6102e9611f46565b34801561060d57600080fd5b506102e96122db565b34801561062257600080fd5b506106406004803603602081101561063957600080fd5b5035612436565b604080519c8d5260208d019b909b528b8b019990995260608b019790975260808a019590955260a089019390935260c088019190915260e0870152610100860152610120850152610140840152151561016083015251908190036101800190f35b3480156106ad57600080fd5b5061035b612499565b3480156106c257600080fd5b50610702600480360360608110156106d957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602081013590604001356124b5565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b83811015610748578181015183820152602001610730565b50505050905001935050505060405180910390f35b34801561076957600080fd5b506103996125cf565b34801561077e57600080fd5b506102e96004803603602081101561079557600080fd5b50356125d5565b3480156107a857600080fd5b506102e9600480360360208110156107bf57600080fd5b503561270f565b3480156107d257600080fd5b50610308600480360360408110156107e957600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff1661279a565b34801561081857600080fd5b50610399612935565b34801561082d57600080fd5b506102e96004803603602081101561084457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661293a565b34801561086d57600080fd5b506102e96004803603602081101561088457600080fd5b5035612a89565b34801561089757600080fd5b506102e9600480360360208110156108ae57600080fd5b5035612b14565b3480156108c157600080fd5b506102e9612c4c565b3480156108d657600080fd5b50610399600480360360408110156108ed57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135612ed6565b34801561091c57600080fd5b50610399612f04565b34801561093157600080fd5b50610399612f0a565b34801561094657600080fd5b506102e96004803603602081101561095d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612f10565b34801561098657600080fd5b506103086130b1565b34801561099b57600080fd5b506103996130ba565b3480156109b057600080fd5b5061035b6130c0565b60075473ffffffffffffffffffffffffffffffffffffffff163314610a3f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b600980546000909155600754610a6b9073ffffffffffffffffffffffffffffffffffffffff16826130dc565b6040805182815290517f609175abb7f12481e4f200d1ef4fc834e6caac3d9eadba42d664352f6d0932ca9181900360200190a150565b610aa961173c565b15610b1557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b610b1e3361319d565b15610b8a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f636f6e7472616374206e6f7420616c6c6f776564000000000000000000000000604482015290519081900360640190fd5b333214610bf857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f70726f787920636f6e7472616374206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b610c036004546131a3565b610c6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f526f756e64206e6f74206265747461626c650000000000000000000000000000604482015290519081900360640190fd5b600e54341015610cc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806140eb602c913960400191505060405180910390fd5b600454600090815260026020908152604080832033845290915290206001015415610d5557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43616e206f6e6c7920626574206f6e63652070657220726f756e640000000000604482015290519081900360640190fd5b60045460009081526001602052604090206006810154349190610d78908361320f565b60068201556008810154610d8c908361320f565b60088201556004805460009081526002602090815260408083203380855290835281842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081178255808201899055600385528386208754815492830182559087529585902001949094559354815187815291519394909390927f0d8c1fe3e67ab767116a81f122b83c2557a8c2564019cb7c4f83de1aeb1f1f0d928290030190a3505050565b601054610100900460ff1681565b60075473ffffffffffffffffffffffffffffffffffffffff163314610ecd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b600554811115610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613f946022913960400191505060405180910390fd5b600655565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60095481565b610f5e3361319d565b15610fca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f636f6e7472616374206e6f7420616c6c6f776564000000000000000000000000604482015290519081900360640190fd5b33321461103857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f70726f787920636f6e7472616374206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b600081815260016020819052604090912001546110b657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f526f756e6420686173206e6f7420737461727465640000000000000000000000604482015290519081900360640190fd5b600081815260016020526040902060030154431161113557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f526f756e6420686173206e6f7420656e64656400000000000000000000000000604482015290519081900360640190fd5b6000818152600260208181526040808420338552909152909120015460ff16156111c057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5265776172647320636c61696d65640000000000000000000000000000000000604482015290519081900360640190fd5b6000818152600160205260408120600b015460ff1615611324576111e4823361279a565b61124f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4e6f7420656c696769626c6520666f7220636c61696d00000000000000000000604482015290519081900360640190fd5b611257613f0e565b506000828152600160208181526040808420815161018081018352815481528185015481850152600280830154828501526003830154606083015260048301546080830152600583015460a0830152600683015460c0830152600783015460e0830152600883015461010083015260098301546101208301819052600a8401546101408401819052600b9094015460ff1615156101608401528988529085528387203388529094529190942090920154919261131c926113169161328a565b906132fd565b9150506113b8565b61132e8233611ded565b61139957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f7420656c696769626c6520666f7220726566756e64000000000000000000604482015290519081900360640190fd5b5060008181526002602090815260408083203384529091529020600101545b600082815260026020818152604080842033808652925290922090810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790559061140990836130dc565b604080518381529051849133917f34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf79181900360200190a3505050565b60075473ffffffffffffffffffffffffffffffffffffffff1633146114cb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b6114d361173c565b61153e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905561156e61337e565b60045460408051918252517faaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab79181900360200190a1565b60085473ffffffffffffffffffffffffffffffffffffffff16331461162b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6f70657261746f723a207775743f000000000000000000000000000000000000604482015290519081900360640190fd5b61163361173c565b1561169f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b60105460ff16156116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806141bd6023913960400191505060405180910390fd5b600480546001019081905561170f9061346c565b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60005474010000000000000000000000000000000000000000900460ff1690565b600f5481565b60075473ffffffffffffffffffffffffffffffffffffffff1633146117e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b600e8190556004546040805183815290517f82480e97991520549ac4b5d0e1d97edb3bfac2666202923b6903d2a953dc76089181900360200190a250565b61182f6134f3565b73ffffffffffffffffffffffffffffffffffffffff1661184d612499565b73ffffffffffffffffffffffffffffffffffffffff16146118cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661195157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f43616e6e6f74206265207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6119a06134f3565b73ffffffffffffffffffffffffffffffffffffffff166119be612499565b73ffffffffffffffffffffffffffffffffffffffff1614611a4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6002602081815260009384526040808520909152918352912080546001820154919092015460ff928316921683565b60045481565b60075473ffffffffffffffffffffffffffffffffffffffff163314611b6a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116611bec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f43616e6e6f74206265207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600c5481565b60085473ffffffffffffffffffffffffffffffffffffffff163314611cbf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6f70657261746f723a207775743f000000000000000000000000000000000000604482015290519081900360640190fd5b611cc761173c565b15611d3357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b60105460ff168015611d4c5750601054610100900460ff165b611da1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260468152602001806142036046913960600191505060405180910390fd5b6000611dab6134f7565b9050611db960045482613695565b611dc8600160045403826137eb565b611dd660016004540361393c565b6004805460010190819055611dea90613b5f565b50565b6000611df7613f71565b600084815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152908190208151606081019092528054829060ff166001811115611e4357fe5b6001811115611e4e57fe5b81526001820154602082015260029091015460ff1615156040909101529050611e75613f0e565b506000848152600160208181526040928390208351610180810185528154815292810154918301919091526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b9091015460ff161580156101608301819052611f2c57506006546060820151611f299161320f565b43115b8015611f3b5750602082015115155b925050505b92915050565b611f4e61173c565b15611fba57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b611fc33361319d565b1561202f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f636f6e7472616374206e6f7420616c6c6f776564000000000000000000000000604482015290519081900360640190fd5b33321461209d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f70726f787920636f6e7472616374206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b6120a86004546131a3565b61211357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f526f756e64206e6f74206265747461626c650000000000000000000000000000604482015290519081900360640190fd5b600e5434101561216e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806140eb602c913960400191505060405180910390fd5b6004546000908152600260209081526040808320338452909152902060010154156121fa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43616e206f6e6c7920626574206f6e63652070657220726f756e640000000000604482015290519081900360640190fd5b6004546000908152600160205260409020600681015434919061221d908361320f565b60068201556007810154612231908361320f565b60078201556004805460009081526002602090815260408083203380855290835281842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681556001808201899055600385528386208754815492830182559087529585902001949094559354815187815291519394909390927f438122d8cff518d18388099a5181f0d17a12b4f1b55faedf6e4a6acee0060c12928290030190a3505050565b60075473ffffffffffffffffffffffffffffffffffffffff16331480612318575060085473ffffffffffffffffffffffffffffffffffffffff1633145b61238357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f61646d696e207c206f70657261746f723a207775743f00000000000000000000604482015290519081900360640190fd5b61238b61173c565b156123f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6123ff613cda565b60045460408051918252517f68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d9181900360200190a1565b600160208190526000918252604090912080549181015460028201546003830154600484015460058501546006860154600787015460088801546009890154600a8a0154600b909a01549899979896979596949593949293919290919060ff168c565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812054606091908390859003811115612516575073ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260409020548490035b60608167ffffffffffffffff8111801561252f57600080fd5b50604051908082528060200260200182016040528015612559578160200160208202803683370190505b50905060005b828110156125c45773ffffffffffffffffffffffffffffffffffffffff88166000908152600360205260409020805488830190811061259a57fe5b90600052602060002001548282815181106125b157fe5b602090810291909101015260010161255f565b509694019450505050565b60065481565b60075473ffffffffffffffffffffffffffffffffffffffff16331461265b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b60648111156126b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061426c6023913960400191505060405180910390fd5b600c8190556126c5606482613db6565b600d819055600454600c54604080519182526020820193909352825191927f023010bc68e7f4c0be9887f513c570c7a0f5f511b9716abccd42bf3b8943532b92918290030190a250565b60075473ffffffffffffffffffffffffffffffffffffffff16331461279557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b600555565b60006127a4613f71565b600084815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152908190208151606081019092528054829060ff1660018111156127f057fe5b60018111156127fb57fe5b81526001820154602082015260029091015460ff1615156040909101529050612822613f0e565b5060008481526001602081815260409283902083516101808101855281548152928101549183019190915260028101549282019290925260038201546060820152600482015460808201819052600583015460a08301819052600684015460c0840152600784015460e084015260088401546101008401526009840154610120840152600a840154610140840152600b9093015460ff161515610160830152909114156128d457600092505050611f40565b8061016001518015611f3b575080608001518160a00151138015612904575060008251600181111561290257fe5b145b80611f3b575080608001518160a00151128015611f3b575060018251600181111561292b57fe5b1495945050505050565b606481565b60075473ffffffffffffffffffffffffffffffffffffffff1633146129c057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116612a4257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f43616e6e6f74206265207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60075473ffffffffffffffffffffffffffffffffffffffff163314612b0f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b600f55565b60075473ffffffffffffffffffffffffffffffffffffffff163314612b9a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b6064811115612bf4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806142b06025913960400191505060405180910390fd5b612bff606482613db6565b600c819055600d8290556004546040805192835260208301849052805191927f023010bc68e7f4c0be9887f513c570c7a0f5f511b9716abccd42bf3b8943532b929081900390910190a250565b60085473ffffffffffffffffffffffffffffffffffffffff163314612cd257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6f70657261746f723a207775743f000000000000000000000000000000000000604482015290519081900360640190fd5b612cda61173c565b15612d4657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b60105460ff16612da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613fe16031913960400191505060405180910390fd5b601054610100900460ff1615612e02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806140c96022913960400191505060405180910390fd5b600654600454600090815260016020526040902060020154612e239161320f565b431115612e7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806141176027913960400191505060405180910390fd5b6000612e856134f7565b9050612e9360045482613695565b6004805460010190819055612ea79061346c565b50601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b60036020528160005260406000208181548110612eef57fe5b90600052602060002001600091509150505481565b600d5481565b600b5481565b612f186134f3565b73ffffffffffffffffffffffffffffffffffffffff16612f36612499565b73ffffffffffffffffffffffffffffffffffffffff1614612fb857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116613024576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806140126026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60105460ff1681565b600e5481565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60405160009073ffffffffffffffffffffffffffffffffffffffff8416906159d890849084818181858888f193505050503d8060008114613139576040519150601f19603f3d011682016040523d82523d6000602084013e61313e565b606091505b5050905080613198576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806142496023913960400191505060405180910390fd5b505050565b3b151590565b600081815260016020819052604082200154158015906131d3575060008281526001602052604090206002015415155b80156131f057506000828152600160208190526040909120015443115b8015611f40575050600090815260016020526040902060020154431090565b60008282018381101561328357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60008261329957506000611f40565b828202828482816132a657fe5b0414613283576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806141736021913960400191505060405180910390fd5b600080821161336d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161337657fe5b049392505050565b61338661173c565b6133f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6134426134f3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190a1565b60008181526001602081905260409091204391810182905560055490916134929161320f565b6002808301919091556005546134aa9143910261320f565b60038201558181556000600682015560408051438152905183917f0e5543feb86a4cd302f2b88b26c42be2d1673013a34e1f98bd6d524dd3b4ab41919081900360200190a25050565b3390565b60008061350f600f544261320f90919063ffffffff16565b90506000806000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561357e57600080fd5b505afa158015613592573d6000803e3d6000fd5b505050506040513d60a08110156135a857600080fd5b5080516020820151606090920151909450909250905083811115613617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180614306602e913960400191505060405180910390fd5b600b548369ffffffffffffffffffff161161367d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180614066603d913960400191505060405180910390fd5b5069ffffffffffffffffffff909116600b5591505090565b600082815260016020819052604090912001546136fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613fb6602b913960400191505060405180910390fd5b600082815260016020526040902060020154431015613767576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806141e06023913960400191505060405180910390fd5b6006546000838152600160205260409020600201546137859161320f565b4311156137dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806141176027913960400191505060405180910390fd5b6137e78282613e2d565b5050565b600082815260016020526040902060020154613852576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806141946029913960400191505060405180910390fd5b6000828152600160205260409020600301544310156138bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061428f6021913960400191505060405180910390fd5b6006546000838152600160205260409020600301546138da9161320f565b431115613932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806140a36026913960400191505060405180910390fd5b6137e78282613e87565b6064613955600d54600c5461320f90919063ffffffff16565b146139ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061413e6035913960400191505060405180910390fd5b6000818152600160205260409020600901541580156139d957506000818152600160205260409020600a0154155b613a4457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f526577617264732063616c63756c617465640000000000000000000000000000604482015290519081900360640190fd5b600081815260016020526040812060048101546005820154919291829182911315613ab55783600701549250613a8e6064611316600c54876006015461328a90919063ffffffff16565b9150613aae6064611316600d54876006015461328a90919063ffffffff16565b9050613af8565b836004015484600501541215613aea5783600801549250613a8e6064611316600c54876006015461328a90919063ffffffff16565b505050600681015460009081905b6009808501849055600a850183905554613b12908261320f565b6009556040805184815260208101849052808201839052905186917f6dfdfcb09c8804d0058826cd2539f1acfbe3cb887c9be03d928035bce0f1a58d919081900360600190a25050505050565b60105460ff16613bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613fe16031913960400191505060405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8101600090815260016020526040902060030154613c44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180614038602e913960400191505060405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8101600090815260016020526040902060030154431015613cd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806142d56031913960400191505060405180910390fd5b611dea8161346c565b613ce261173c565b15613d4e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586134426134f3565b600082821115613e2757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828152600160209081526040918290206004810184905582514381529182018490528251909285927f482e76a65b448a42deef26e99e58fb20c85e26f075defff8df6aa80459b39006929081900390910190a2505050565b60008281526001602081815260409283902060058101859055600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690931790925582514381529081018490528251919285927fb6ff1fe915db84788cbbbc017f0d2bef9485fad9fd0bd8ce9340fde0d8410dd89281900390910190a2505050565b60405180610180016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b604080516060810190915280600081526000602082018190526040909101529056fe43616e6e6f74206265206d6f7265207468616e20696e74657276616c426c6f636b7343616e206f6e6c79206c6f636b20726f756e6420616674657220726f756e6420686173207374617274656443616e206f6e6c792072756e2061667465722067656e657369735374617274526f756e64206973207472696767657265644f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737343616e206f6e6c7920737461727420726f756e6420616674657220726f756e64206e2d322068617320656e6465644f7261636c652075706461746520726f756e644964206d757374206265206c6172676572207468616e206f7261636c654c6174657374526f756e64496443616e206f6e6c7920656e6420726f756e642077697468696e20627566666572426c6f636b7343616e206f6e6c792072756e2067656e657369734c6f636b526f756e64206f6e636542657420616d6f756e74206d7573742062652067726561746572207468616e206d696e426574416d6f756e7443616e206f6e6c79206c6f636b20726f756e642077697468696e20627566666572426c6f636b737265776172645261746520616e6420747265617375727952617465206d7573742061646420757020746f20544f54414c5f52415445536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743616e206f6e6c7920656e6420726f756e6420616674657220726f756e6420686173206c6f636b656443616e206f6e6c792072756e2067656e657369735374617274526f756e64206f6e636543616e206f6e6c79206c6f636b20726f756e64206166746572206c6f636b426c6f636b43616e206f6e6c792072756e2061667465722067656e657369735374617274526f756e6420616e642067656e657369734c6f636b526f756e64206973207472696767657265645472616e7366657248656c7065723a20424e425f5452414e534645525f4641494c4544726577617264526174652063616e6e6f74206265206d6f7265207468616e203130302543616e206f6e6c7920656e6420726f756e6420616674657220656e64426c6f636b7472656173757279526174652063616e6e6f74206265206d6f7265207468616e203130302543616e206f6e6c79207374617274206e657720726f756e6420616674657220726f756e64206e2d3220656e64426c6f636b4f7261636c6520757064617465206578636565646564206d61782074696d657374616d7020616c6c6f77616e6365a26469706673582212205f381da2546906c21d47467cb54bd4e02bfd6b81997b4bec99f2fa296c32d26d64736f6c634300060c00330000000000000000000000000567f2323251f0aab15c8dfb1967e4e8a7d42aee00000000000000000000000056b81bff33110b7f810828ec35f0049aa9078d8f000000000000000000000000dac6f676c6c1a2c09498425ad3b2ba657ca891490000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000000000000012c

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

0000000000000000000000000567f2323251f0aab15c8dfb1967e4e8a7d42aee00000000000000000000000056b81bff33110b7f810828ec35f0049aa9078d8f000000000000000000000000dac6f676c6c1a2c09498425ad3b2ba657ca891490000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000000000000012c

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000567f2323251f0aab15c8dfb1967e4e8a7d42aee
Arg [1] : 00000000000000000000000056b81bff33110b7f810828ec35f0049aa9078d8f
Arg [2] : 000000000000000000000000dac6f676c6c1a2c09498425ad3b2ba657ca89149
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [5] : 00000000000000000000000000000000000000000000000000038d7ea4c68000
Arg [6] : 000000000000000000000000000000000000000000000000000000000000012c


Deployed ByteCode Sourcemap

14285:18740:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25167:256;;;;;;;;;;;;;:::i;:::-;;22206:851;;;:::i;15655:35::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;18631:203;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18631:203:0;;:::i;15217:30::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15113:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;15254;;;;;;;;;;;;;:::i;24017:1055::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24017:1055:0;;:::i;26448:184::-;;;;;;;;;;;;;:::i;20463:263::-;;;;;;;;;;;;;:::i;11976:86::-;;;;;;;;;;;;;:::i;15556:36::-;;;;;;;;;;;;;:::i;20225:179::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20225:179:0;;:::i;17880:180::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17880:180:0;;;;:::i;10340:148::-;;;;;;;;;;;;;:::i;14957:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14957:61:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15079:27;;;;;;;;;;;;;:::i;18918:180::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18918:180:0;;;;:::i;15432:30::-;;;;;;;;;;;;;:::i;21508:641::-;;;;;;;;;;;;;:::i;27337:295::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27337:295:0;;;;;;;;;:::i;23114:851::-;;;:::i;26138:122::-;;;;;;;;;;;;;:::i;14911:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14911:39:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9689:87;;;;;;;;;;;;;:::i;25511:535::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25511:535:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15149:27;;;;;;;;;;;;;:::i;19422:313::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19422:313:0;;:::i;18426:122::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18426:122:0;;:::i;26730:508::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26730:508:0;;;;;;;;;:::i;15377:40::-;;;;;;;;;;;;;:::i;18146:195::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18146:195:0;;;;:::i;19191:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19191:150:0;;:::i;19818:325::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19818:325:0;;:::i;20784:621::-;;;;;;;;;;;;;:::i;15025:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15025:47:0;;;;;;;;;:::i;15476:32::-;;;;;;;;;;;;;:::i;15334:34::-;;;;;;;;;;;;;:::i;10643:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10643:244:0;;;;:::i;15612:36::-;;;;;;;;;;;;;:::i;15522:27::-;;;;;;;;;;;;;:::i;15183:::-;;;;;;;;;;;;;:::i;25167:256::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25254:14:::1;::::0;;25222:29:::1;25279:18:::0;;;25325:12:::1;::::0;25308:53:::1;::::0;25325:12:::1;;25254:14:::0;25308:16:::1;:53::i;:::-;25379:36;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;17313:1;25167:256::o:0;22206:851::-;12302:8;:6;:8::i;:::-;12301:9;12293:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17656:23:::1;17668:10;17656:11;:23::i;:::-;17655:24;17647:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;17723:10;17737:9;17723:23;17715:62;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;22287:23:::2;22297:12;;22287:9;:23::i;:::-;22279:54;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;22365:12;;22352:9;:25;;22344:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22452:12;::::0;22445:20:::2;::::0;;;:6:::2;:20;::::0;;;;;;;22466:10:::2;22445:32:::0;;;;;;;:39:::2;;::::0;:44;22437:84:::2;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;22630:12;::::0;22564:14:::2;22623:20:::0;;;:6:::2;:20;::::0;;;;22674:17:::2;::::0;::::2;::::0;22581:9:::2;::::0;22623:20;22674:29:::2;::::0;22581:9;22674:21:::2;:29::i;:::-;22654:17;::::0;::::2;:49:::0;22733:16:::2;::::0;::::2;::::0;:28:::2;::::0;22754:6;22733:20:::2;:28::i;:::-;22714:16;::::0;::::2;:47:::0;22836:12:::2;::::0;;22803:23:::2;22829:20:::0;;;:6:::2;:20;::::0;;;;;;;22850:10:::2;22829:32:::0;;;;;;;;;22872;;;::::2;22891:13;22872:32:::0;;::::2;::::0;;22915:14;;::::2;:23:::0;;;22949:10:::2;:22:::0;;;;;22977:12;;22949:41;;;;::::2;::::0;;;;;;;;;::::2;::::0;;;;23028:12;;23008:41;;;;;;;22829:32;;23028:12;;22850:10;;23008:41:::2;::::0;;;;;;::::2;17788:1;;;22206:851::o:0;15655:35::-;;;;;;;;;:::o;18631:203::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18734:14:::1;;18717:13;:31;;18709:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18798:12;:28:::0;18631:203::o;15217:30::-;;;;;;:::o;15113:29::-;;;;:::o;15254:::-;;;;:::o;24017:1055::-;17656:23;17668:10;17656:11;:23::i;:::-;17655:24;17647:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17723:10;17737:9;17723:23;17715:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24087:13:::1;::::0;;;:6:::1;:13;::::0;;;;;;;:24:::1;::::0;24079:63:::1;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24176:13;::::0;;;:6:::1;:13;::::0;;;;:22:::1;;::::0;24161:12:::1;:37;24153:69;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24242:13;::::0;;;:6:::1;:13;::::0;;;;;;;24256:10:::1;24242:25:::0;;;;;;;;:33:::1;::::0;::::1;;24241:34;24233:62;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24308:14;24376:13:::0;;;:6:::1;:13;::::0;;;;:26:::1;;::::0;::::1;;24372:490;;;24427:28;24437:5;24444:10;24427:9;:28::i;:::-;24419:63;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24497:18;;:::i;:::-;-1:-1:-1::0;24518:13:0::1;::::0;;;:6:::1;:13;::::0;;;;;;;24497:34;;::::1;::::0;::::1;::::0;;;;;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;::::1;::::0;::::1;;;;::::0;;;;24555:13;;;;;;;;;24569:10:::1;24555:25:::0;;;;;;;;;:32;;::::1;::::0;24497:34;;24555:87:::1;::::0;:56:::1;::::0;:36:::1;:56::i;:::-;:60:::0;::::1;:87::i;:::-;24546:96;;24372:490;;;;24737:29;24748:5;24755:10;24737;:29::i;:::-;24729:65;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;24818:13:0::1;::::0;;;:6:::1;:13;::::0;;;;;;;24832:10:::1;24818:25:::0;;;;;;;:32:::1;;::::0;24372:490:::1;24874:23;24900:13:::0;;;:6:::1;:13;::::0;;;;;;;24914:10:::1;24900:25:::0;;;;;;;;24936:15;;::::1;:22:::0;;;::::1;24954:4;24936:22;::::0;;24900:25;24969:45:::1;::::0;25007:6;24969:16:::1;:45::i;:::-;25032:32;::::0;;;;;;;25050:5;;25038:10:::1;::::0;25032:32:::1;::::0;;;;::::1;::::0;;::::1;17788:1;;24017:1055:::0;:::o;26448:184::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12579:8:::1;:6;:8::i;:::-;12571:41;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;26506:16:::2;:24:::0;;26541:23;;;;26575:10:::2;:8;:10::i;:::-;26611:12;::::0;26603:21:::2;::::0;;;;;;::::2;::::0;;;;::::2;::::0;;::::2;26448:184::o:0;20463:263::-;17387:15;;;;17373:10;:29;17365:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12302:8:::1;:6;:8::i;:::-;12301:9;12293:38;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;20548:16:::2;::::0;::::2;;20547:17;20539:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20632:12;::::0;;20647:1:::2;20632:16;20617:31:::0;;;;20659:25:::2;::::0;:11:::2;:25::i;:::-;20695:16;:23:::0;;;::::2;20714:4;20695:23;::::0;;20463:263::o;11976:86::-;12023:4;12047:7;;;;;;;11976:86::o;15556:36::-;;;;:::o;20225:179::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20303:12:::1;:28:::0;;;20369:12:::1;::::0;20349:47:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;20225:179:::0;:::o;17880:180::-;9920:12;:10;:12::i;:::-;9909:23;;:7;:5;:7::i;:::-;:23;;;9901:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17959:27:::1;::::0;::::1;17951:62;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;18024:12;:28:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;17880:180::o;10340:148::-;9920:12;:10;:12::i;:::-;9909:23;;:7;:5;:7::i;:::-;:23;;;9901:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10447:1:::1;10431:6:::0;;10410:40:::1;::::0;::::1;10431:6:::0;;::::1;::::0;10410:40:::1;::::0;10447:1;;10410:40:::1;10478:1;10461:19:::0;;;::::1;::::0;;10340:148::o;14957:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15079:27::-;;;;:::o;18918:180::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18992:21:::1;::::0;::::1;18984:56;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;19051:6;:39:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;18918:180::o;15432:30::-;;;;:::o;21508:641::-;17387:15;;;;17373:10;:29;17365:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12302:8:::1;:6;:8::i;:::-;12301:9;12293:38;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;21601:16:::2;::::0;::::2;;:35:::0;::::2;;;-1:-1:-1::0;21621:15:0::2;::::0;::::2;::::0;::::2;;;21601:35;21579:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21747:19;21769:21;:19;:21::i;:::-;21747:43;;21857:42;21872:12;;21886;21857:14;:42::i;:::-;21910:45;21939:1;21924:12;;:16;21942:12;21910:13;:45::i;:::-;21966:35;21999:1;21984:12;;:16;21966:17;:35::i;:::-;22085:12;::::0;;22100:1:::2;22085:16;22070:31:::0;;;;22112:29:::2;::::0;:15:::2;:29::i;:::-;12342:1;21508:641::o:0;27337:295::-;27407:4;27424:22;;:::i;:::-;27449:13;;;;:6;:13;;;;;;;;:19;;;;;;;;;;;;27424:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27479:18:0;;:::i;:::-;-1:-1:-1;27500:13:0;;;;:6;:13;;;;;;;;;27479:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27531:70;;-1:-1:-1;27588:12:0;;27569:14;;;;:32;;:18;:32::i;:::-;27554:12;:47;27531:70;:93;;;;-1:-1:-1;27605:14:0;;;;:19;;27531:93;27524:100;;;;27337:295;;;;;:::o;23114:851::-;12302:8;:6;:8::i;:::-;12301:9;12293:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17656:23:::1;17668:10;17656:11;:23::i;:::-;17655:24;17647:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;17723:10;17737:9;17723:23;17715:62;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;23195:23:::2;23205:12;;23195:9;:23::i;:::-;23187:54;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;23273:12;;23260:9;:25;;23252:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23360:12;::::0;23353:20:::2;::::0;;;:6:::2;:20;::::0;;;;;;;23374:10:::2;23353:32:::0;;;;;;;:39:::2;;::::0;:44;23345:84:::2;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;23538:12;::::0;23472:14:::2;23531:20:::0;;;:6:::2;:20;::::0;;;;23582:17:::2;::::0;::::2;::::0;23489:9:::2;::::0;23531:20;23582:29:::2;::::0;23489:9;23582:21:::2;:29::i;:::-;23562:17;::::0;::::2;:49:::0;23641:16:::2;::::0;::::2;::::0;:28:::2;::::0;23662:6;23641:20:::2;:28::i;:::-;23622:16;::::0;::::2;:47:::0;23744:12:::2;::::0;;23711:23:::2;23737:20:::0;;;:6:::2;:20;::::0;;;;;;;23758:10:::2;23737:32:::0;;;;;;;;;23780;;;::::2;::::0;;;23823:14;;::::2;:23:::0;;;23857:10:::2;:22:::0;;;;;23885:12;;23857:41;;;;::::2;::::0;;;;;;;;;::::2;::::0;;;;23936:12;;23916:41;;;;;;;23737:32;;23936:12;;23758:10;;23916:41:::2;::::0;;;;;;::::2;17788:1;;;23114:851::o:0;26138:122::-;17513:12;;;;17499:10;:26;;:59;;-1:-1:-1;17543:15:0;;;;17529:10;:29;17499:59;17491:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12302:8:::1;:6;:8::i;:::-;12301:9;12293:38;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;26207:8:::2;:6;:8::i;:::-;26239:12;::::0;26233:19:::2;::::0;;;;;;::::2;::::0;;;;::::2;::::0;;::::2;26138:122::o:0;14911:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9689:87::-;9735:7;9762:6;;;9689:87;:::o;25511:535::-;25718:16;;;25653:7;25718:16;;;:10;:16;;;;;:23;25635:16;;25653:7;25690:4;;25718:32;;;25709:41;;25705:115;;;-1:-1:-1;25776:16:0;;;;;;;:10;:16;;;;;:23;:32;;;25705:115;25832:23;25872:6;25858:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25858:21:0;;25832:47;;25895:9;25890:104;25914:6;25910:1;:10;25890:104;;;25954:16;;;;;;;:10;:16;;;;;:28;;25971:10;;;;25954:28;;;;;;;;;;;;;;25942:6;25949:1;25942:9;;;;;;;;;;;;;;;;;:40;25922:3;;25890:104;;;-1:-1:-1;26014:6:0;26022:15;;;-1:-1:-1;;;;25511:535:0:o;15149:27::-;;;;:::o;19422:313::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15414:3:::1;19504:11;:25;;19496:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19580:10;:24:::0;;;19630:27:::1;15414:3;19593:11:::0;19630:14:::1;:27::i;:::-;19615:12;:42:::0;;;19688:12:::1;::::0;19702:10:::1;::::0;19675:52:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;19688:12;;19675:52:::1;::::0;;;;;;;::::1;19422:313:::0;:::o;18426:122::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18508:14:::1;:32:::0;18426:122::o;26730:508::-;26799:4;26816:22;;:::i;:::-;26841:13;;;;:6;:13;;;;;;;;:19;;;;;;;;;;;;26816:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26871:18:0;;:::i;:::-;-1:-1:-1;26892:13:0;;;;:6;:13;;;;;;;;;26871:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26920:35;26916:80;;;26979:5;26972:12;;;;;;26916:80;27026:5;:18;;;:204;;;;;27082:5;:15;;;27063:5;:16;;;:34;:71;;;;-1:-1:-1;27121:13:0;27101:16;;:33;;;;;;;;;27063:71;27062:167;;;;27176:5;:15;;;27157:5;:16;;;:34;:71;;;;-1:-1:-1;27215:13:0;27195:16;;:33;;;;;;;;;;26730:508;-1:-1:-1;;;;;26730:508:0:o;15377:40::-;15414:3;15377:40;:::o;18146:195::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18231:30:::1;::::0;::::1;18223:65;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;18299:15;:34:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;18146:195::o;19191:150::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19287:21:::1;:46:::0;19191:150::o;19818:325::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15414:3:::1;19904:13;:27;;19896:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19997:29;15414:3;20012:13:::0;19997:14:::1;:29::i;:::-;19984:10;:42:::0;;;20037:12:::1;:28:::0;;;20096:12:::1;::::0;20083:52:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;20096:12;;20083:52:::1;::::0;;;;;;;;;::::1;19818:325:::0;:::o;20784:621::-;17387:15;;;;17373:10;:29;17365:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12302:8:::1;:6;:8::i;:::-;12301:9;12293:38;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;20867:16:::2;::::0;::::2;;20859:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20957:15;::::0;::::2;::::0;::::2;;;20956:16;20948:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21095:12;::::0;21067::::2;::::0;21060:20:::2;::::0;;;:6:::2;:20;::::0;;;;:30:::2;;::::0;:48:::2;::::0;:34:::2;:48::i;:::-;21044:12;:64;;21022:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21188:19;21210:21;:19;:21::i;:::-;21188:43;;21242:42;21257:12;;21271;21242:14;:42::i;:::-;21312:12;::::0;;21327:1:::2;21312:16;21297:31:::0;;;;21339:25:::2;::::0;:11:::2;:25::i;:::-;-1:-1:-1::0;21375:15:0::2;:22:::0;;;::::2;;;::::0;;20784:621::o;15025:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15476:32::-;;;;:::o;15334:34::-;;;;:::o;10643:244::-;9920:12;:10;:12::i;:::-;9909:23;;:7;:5;:7::i;:::-;:23;;;9901:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10732:22:::1;::::0;::::1;10724:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10834:6;::::0;;10813:38:::1;::::0;::::1;::::0;;::::1;::::0;10834:6;::::1;::::0;10813:38:::1;::::0;::::1;10862:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;10643:244::o;15612:36::-;;;;;;:::o;15522:27::-;;;;:::o;15183:::-;;;;;;:::o;32141:203::-;32233:37;;32215:12;;32233:7;;;;32246:5;;32260;;32215:12;32233:37;32215:12;32233:37;32260:5;32233:7;32246:5;32233:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32214:56;;;32289:7;32281:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32141:203;;;:::o;32352:191::-;32482:17;32527:8;;;32352:191::o;32735:287::-;32792:4;32829:13;;;:6;:13;;;;;;;:24;;:29;;;;:74;;-1:-1:-1;32875:13:0;;;;:6;:13;;;;;:23;;;:28;;32829:74;:130;;;;-1:-1:-1;32935:13:0;;;;:6;:13;;;;;;;;:24;;32920:12;:39;32829:130;:185;;;;-1:-1:-1;;32991:13:0;;;;:6;:13;;;;;:23;;;32976:12;:38;;32735:287::o;2828:179::-;2886:7;2918:5;;;2942:6;;;;2934:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2998:1;2828:179;-1:-1:-1;;;2828:179:0:o;3707:220::-;3765:7;3789:6;3785:20;;-1:-1:-1;3804:1:0;3797:8;;3785:20;3828:5;;;3832:1;3828;:5;:1;3852:5;;;;;:10;3844:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4405:153;4463:7;4495:1;4491;:5;4483:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4549:1;4545;:5;;;;;;;4405:153;-1:-1:-1;;;4405:153:0:o;13035:120::-;12579:8;:6;:8::i;:::-;12571:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13104:5:::1;13094:15:::0;;;::::1;::::0;;13125:22:::1;13134:12;:10;:12::i;:::-;13125:22;::::0;;::::1;::::0;;::::1;::::0;;;;;;;::::1;::::0;;::::1;13035:120::o:0;28118:377::-;28174:19;28196:13;;;:6;:13;;;;;;;;28239:12;28220:16;;;:31;;;28297:14;;28196:13;;28280:32;;:16;:32::i;:::-;28262:15;;;;:50;;;;28357:14;;28340:36;;:12;;28357:18;28340:16;:36::i;:::-;28323:14;;;:53;28387:19;;;:11;28417:17;;;:21;28456:31;;;28474:12;28456:31;;;;28401:5;;28456:31;;;;;;;;;;28118:377;;:::o;8229:106::-;8317:10;8229:106;:::o;31602:531::-;31651:6;31670:29;31702:42;31722:21;;31702:15;:19;;:42;;;;:::i;:::-;31670:74;;31756:14;31772:12;31788:17;31811:6;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31811:24:0;;;;;;;;;;;;;-1:-1:-1;31811:24:0;;-1:-1:-1;31811:24:0;-1:-1:-1;31854:34:0;;;;31846:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31968:19;;31958:7;:29;;;31950:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32086:16:0;;;;32064:19;:38;32120:5;-1:-1:-1;;31602:531:0;:::o;28545:419::-;28626:13;;;;:6;:13;;;;;;;;:24;;28618:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28738:13;;;;:6;:13;;;;;:23;;;28722:12;:39;;28714:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28864:12;;28836:13;;;;:6;:13;;;;;:23;;;:41;;:27;:41::i;:::-;28820:12;:57;;28812:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28932:24;28943:5;28950;28932:10;:24::i;:::-;28545:419;;:::o;29232:409::-;29312:13;;;;:6;:13;;;;;:23;;;29304:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29421:13;;;;:6;:13;;;;;:22;;;29405:12;:38;;29397:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29543:12;;29516:13;;;;:6;:13;;;;;:22;;;:40;;:26;:40::i;:::-;29500:12;:56;;29492:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29610:23;29620:5;29627;29610:9;:23::i;29963:1481::-;15414:3;30033:28;30048:12;;30033:10;;:14;;:28;;;;:::i;:::-;:42;30025:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30152:13;;;;:6;:13;;;;;:33;;;:38;:73;;;;-1:-1:-1;30194:13:0;;;;:6;:13;;;;;:26;;;:31;30152:73;30144:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30259:19;30281:13;;;:6;:13;;;;;30449:15;;;;30430:16;;;;30281:13;;30259:19;;;;;30430:34;30426:730;;;30503:5;:16;;;30481:38;;30549:49;15414:3;30549:33;30571:10;;30549:5;:17;;;:21;;:33;;;;:::i;:49::-;30534:64;;30627:51;15414:3;30627:35;30649:12;;30627:5;:17;;;:21;;:35;;;;:::i;:51::-;30613:65;;30426:730;;;30750:5;:15;;;30731:5;:16;;;:34;30727:429;;;30804:5;:16;;;30782:38;;30850:49;15414:3;30850:33;30872:10;;30850:5;:17;;;:21;;:33;;;;:::i;30727:429::-;-1:-1:-1;;;31127:17:0;;;;31066:1;;;;30727:429;31166:25;;;;:47;;;31224:18;;;:33;;;31315:14;:31;;31334:11;31315:18;:31::i;:::-;31298:14;:48;31364:72;;;;;;;;;;;;;;;;;;;;31382:5;;31364:72;;;;;;;;;;29963:1481;;;;;:::o;27719:391::-;27787:16;;;;27779:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27883:9;;;27876:17;;;;:6;:17;;;;;:26;;;27868:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28000:9;;;27993:17;;;;:6;:17;;;;;:26;;;27977:12;:42;;27969:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28084:18;28096:5;28084:11;:18::i;12776:118::-;12302:8;:6;:8::i;:::-;12301:9;12293:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12836:7:::1;:14:::0;;;::::1;::::0;::::1;::::0;;12866:20:::1;12873:12;:10;:12::i;3290:158::-:0;3348:7;3381:1;3376;:6;;3368:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3435:5:0;;;3290:158::o;28972:211::-;29041:19;29063:13;;;:6;:13;;;;;;;;;29087:15;;;:23;;;29128:47;;29145:12;29128:47;;;;;;;;;;29063:13;;29070:5;;29128:47;;;;;;;;;;;28972:211;;;:::o;29649:247::-;29717:19;29739:13;;;:6;:13;;;;;;;;;29763:16;;;:24;;;29798:18;;;:25;;;;;;;;;;29841:47;;29857:12;29841:47;;;;;;;;;;29739:13;;29746:5;;29841:47;;;;;;;;;;29649:247;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://5f381da2546906c21d47467cb54bd4e02bfd6b81997b4bec99f2fa296c32d26d
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.