Contract 0xd2a23e28a6cF48357D3A40d00CC318fbCB6a3b26 14

 

Contract Overview

Balance:
0.000018914442997783 ETH

ETH Value:
$0.06 (@ $2,987.72/ETH)

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xbd74e65400b574171feaf85fbc44fdd188913308501d190916351d6c5db108e2Approve1782187792024-02-07 3:43:2817 days 15 hrs ago0x88f7340d080b2cda71a6ba1e75f1147b6fff7543 IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.000105280.1
0x01118a2b2aa9f9f014aa86ec52cbc964611ae4292a47a37d2a066f977e609c65Approve1679027852024-01-07 4:59:5648 days 13 hrs ago0x50a0d247dfc06a86360bc148a9377be14a970d29 IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.00008857 0.1
0xda64285d1a6ef30d01fd607b0820a8bcd175c1245425aaebdead5fc668ba28bbApprove1407675722023-10-15 9:18:44132 days 9 hrs ago0x49802bdbe1cefb8e2291c72def8c2b0c5bf24b09 IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.00001758 0.1
0x6cacba53733645ce6f0f676467e85dd916161e38a16950e057e16c5bae055487Approve1239042432023-08-22 15:46:40186 days 3 hrs ago0xd1dc8e14dcb1c98335dc4a23941fb0b289caf933 IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.0001475 0.1
0x47676447069846d2f7bd6e5f27d329dabfe1c325686881249169f76223986279Approve1210906652023-08-13 20:13:47194 days 22 hrs ago0x8df3e2e70aa58cc5d14a7036b31eab0e227b3a20 IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.000031880.1
0xc6d938189d0d646bf5f1dacd45b7dccf4328fffc5f6c65aa3e227d3e12b1aca6Transfer1182833552023-08-05 4:11:50203 days 14 hrs ago0x9a9244db3935b12d3136a34fee9eb1c976d998ad IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.00003527 0.1
0x564e7d6783d19615a252d575c2dfeadf645391c0676c67748898418b9f44ae7fTransfer1132861752023-07-20 23:31:32218 days 19 hrs ago0xdf125e7bb18f6971b15c0ac55944c2ee522db469 IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.00005162 0.1
0x56fb20307b563c01252468eca2a602dcdf387130b3078e42c80ba8e0cddcd7f2Approve1114106562023-07-15 8:53:18224 days 9 hrs ago0xfed26ffe66d703d79f136cc6578cd18e0a7a4f70 IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.00003179 0.1
0x98f02da30fba168ef26e1cabc7eb829b66e36eeebeca55e6185b83a9a757ed23Approve1111445972023-07-14 14:01:44225 days 4 hrs ago0x756ba867441d14dc62ec8dec7fbe0b5b71e3ff6c IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.00006241 0.1
0x50591e08ff979dc5a4a4578b78e6468acf761f87a66e04cb1fbb3a8b2a6da49dTransfer1096863132023-07-10 6:18:22229 days 12 hrs ago0xd25f3ff4d63179800dce837dc5412dac1ba6133f IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.000030970.1
0xc2a462184665897fc556e1c591e2732058b36f574efae7357f8a45255f9ebb5dApprove1069542902023-07-02 0:31:29237 days 18 hrs ago0x1814d4e71ad8008ee9af5590e9d24df23f6ff700 IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.00003283 0.1
0x63faecd77a1dc537663abd6d4a8c1da3873b7524ea0955c3c7730fbc0da9f718Transfer1067165372023-07-01 7:21:05238 days 11 hrs ago0x3c47842c75431aa72e7c9ce57150d7add6367a67 IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.000034570.1
0x94ef9b4d60de515a32efb1114cce013daf08d5f961634dad42a6bd65902926efTransfer1036568822023-06-22 4:52:23247 days 13 hrs ago0x12727429ccc5f9fb0a5de715c6f7a261cd32719e IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.000046050.1
0xe3aef15751074910c27e636d75f5b9ca5c44f1e951ee4607fa8903d9f72ca702Approve1033182002023-06-21 4:57:02248 days 13 hrs ago0x11574f9c167926e9a4cd0ac4238643ce792284b8 IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.00003101 0.1
0x722a991cf717a3995b5d9b17c4005f94924b500566479cd0e30b13ba6594708eApprove995771932023-06-10 2:33:12259 days 16 hrs ago0xe124ac1d71ab774f31b884fefafd126a66e5b935 IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.000042510.1
0xe3b760a188e28cde65a75424a479d4f951f9120e791d5776261fe1d43009f30aTransfer982906342023-06-06 6:42:25263 days 12 hrs ago0x3da9839d263e65f3a3d2e304de33d0e7ef812404 IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.000043370.1
0x967bc692810c674d277e70d8f9627e7a30bd8d0abf4188e3ada5b7bea11b3527Set Wallets976980172023-06-04 12:37:19265 days 6 hrs ago0xb7e041809b7b026b97f03bd6dbc28e74cceca08e IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.00003795 0.1
0x465defef8293e951d1af47f2c19666123b61da4c46cd24a97ca23b96d0a0db80Set Token Swap T...976979432023-06-04 12:37:03265 days 6 hrs ago0xb7e041809b7b026b97f03bd6dbc28e74cceca08e IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.00003267 0.1
0x9c63b51adbca34d884d12238139131f35466103d1b422f8f325dfa9131fe3c3cSet Token Swap T...976971072023-06-04 12:33:33265 days 6 hrs ago0xb7e041809b7b026b97f03bd6dbc28e74cceca08e IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.00003347 0.1
0x2cf7411e2153fe54327db4e0c0ab08b62c63dca249accdcc9e995ead5e602f06Set Wallets974141482023-06-03 16:21:18266 days 2 hrs ago0xb7e041809b7b026b97f03bd6dbc28e74cceca08e IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.00008184 0.1
0xa7230c517b2230be1697c2a16f137c8beb7aebf4fb20d749bfa537456aaacf5cSet Excluded Fro...974136882023-06-03 16:19:28266 days 2 hrs ago0xb7e041809b7b026b97f03bd6dbc28e74cceca08e IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.00006771 0.1
0xdf48986dd3c3ed00310d9f23836d2a3062b2772b3f2798c48e1936f0f49ce0adApprove949288522023-05-27 9:18:17273 days 9 hrs ago0x3f88e7c03775aa1b8ca78b6039ee4c2c071945cd IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.000044380.1
0x46fb04f1c3a38b5b122cee0429e569673a060f39504e59801f3c40588f98144dApprove949274392023-05-27 9:12:23273 days 9 hrs ago0xb87b8ba6405d76ddda1799fa81220037f8c5231a IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.000042390.1
0xb43206802f708c4bf601a09851a4bed8692114d4d6a31ad49445f6d9b872884bApprove949268442023-05-27 9:09:56273 days 9 hrs ago0xb87b8ba6405d76ddda1799fa81220037f8c5231a IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.000042830.1
0x01677c3076266ffcb36442798d9fa732746790e96f4c3f166d3a432be2b6e67cApprove949264292023-05-27 9:08:12273 days 9 hrs ago0xb87b8ba6405d76ddda1799fa81220037f8c5231a IN  0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260 ETH0.000044820.1
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xc3781b127a74d6062fe1812bae935ef02560b1bca70fb9cf3b7c43ba98a51455976972182023-06-04 12:34:01265 days 6 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260xb7e041809b7b026b97f03bd6dbc28e74cceca08e0.299488258899568633 ETH
0xc3781b127a74d6062fe1812bae935ef02560b1bca70fb9cf3b7c43ba98a51455976972182023-06-04 12:34:01265 days 6 hrs ago 0x863e9610e9e0c3986dcc6fb2cd335e11d88f7d5f 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260.299488258899568633 ETH
0xba07eaf9ea666dfbdd369ca71cd6a920f0b6fe3a84594da36b19437ec34532c1871990102023-05-04 11:46:43296 days 7 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260xb7e041809b7b026b97f03bd6dbc28e74cceca08e0.036621794699089549 ETH
0xba07eaf9ea666dfbdd369ca71cd6a920f0b6fe3a84594da36b19437ec34532c1871990102023-05-04 11:46:43296 days 7 hrs ago 0x863e9610e9e0c3986dcc6fb2cd335e11d88f7d5f 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260.036621794699089549 ETH
0x4b593fa974b3f8e6edc44915ed380b0486951c927a8fc0ccb216f6fcdd12a14a871617512023-05-04 9:12:06296 days 9 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260xb7e041809b7b026b97f03bd6dbc28e74cceca08e0.037817388909210933 ETH
0x4b593fa974b3f8e6edc44915ed380b0486951c927a8fc0ccb216f6fcdd12a14a871617512023-05-04 9:12:06296 days 9 hrs ago 0x863e9610e9e0c3986dcc6fb2cd335e11d88f7d5f 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260.037817388909210933 ETH
0xe7a02a9c626d3f3921fc2adf789485d8241cb63ff9d723071a6692232540e945868922692023-05-03 14:19:41297 days 4 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b26 0x863e9610e9e0c3986dcc6fb2cd335e11d88f7d5f0.000960637605344417 ETH
0xe7a02a9c626d3f3921fc2adf789485d8241cb63ff9d723071a6692232540e945868922692023-05-03 14:19:41297 days 4 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260xd0712accc15ccf193df94d6e832a5c949a7864320.017291476896199513 ETH
0xe7a02a9c626d3f3921fc2adf789485d8241cb63ff9d723071a6692232540e945868922692023-05-03 14:19:41297 days 4 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260xe7d5b947ae87d13a25bc3c6534663c5486ef7e6c0.01921275210688835 ETH
0xe7a02a9c626d3f3921fc2adf789485d8241cb63ff9d723071a6692232540e945868922692023-05-03 14:19:41297 days 4 hrs ago 0x863e9610e9e0c3986dcc6fb2cd335e11d88f7d5f 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260.03746486660843228 ETH
0x7cefa02d10b3b16a140b4443cbaa05d9d17f8a7c25817bef7e92a8ac81f676a5868072622023-05-03 8:26:17297 days 10 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b26 0x863e9610e9e0c3986dcc6fb2cd335e11d88f7d5f0.000975885262748962 ETH
0x7cefa02d10b3b16a140b4443cbaa05d9d17f8a7c25817bef7e92a8ac81f676a5868072622023-05-03 8:26:17297 days 10 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260xd0712accc15ccf193df94d6e832a5c949a7864320.017565934729481327 ETH
0x7cefa02d10b3b16a140b4443cbaa05d9d17f8a7c25817bef7e92a8ac81f676a5868072622023-05-03 8:26:17297 days 10 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260xe7d5b947ae87d13a25bc3c6534663c5486ef7e6c0.019517705254979253 ETH
0x7cefa02d10b3b16a140b4443cbaa05d9d17f8a7c25817bef7e92a8ac81f676a5868072622023-05-03 8:26:17297 days 10 hrs ago 0x863e9610e9e0c3986dcc6fb2cd335e11d88f7d5f 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260.038059525247209542 ETH
0x0feff71b8510229b8c1a056f4b4843266956aa019f09b25d78f0b8dfe9900c6e867072662023-05-03 1:21:21297 days 17 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b26 0x863e9610e9e0c3986dcc6fb2cd335e11d88f7d5f0.00098393003682453 ETH
0x0feff71b8510229b8c1a056f4b4843266956aa019f09b25d78f0b8dfe9900c6e867072662023-05-03 1:21:21297 days 17 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260xd0712accc15ccf193df94d6e832a5c949a7864320.017710740662841542 ETH
0x0feff71b8510229b8c1a056f4b4843266956aa019f09b25d78f0b8dfe9900c6e867072662023-05-03 1:21:21297 days 17 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260xe7d5b947ae87d13a25bc3c6534663c5486ef7e6c0.019678600736490604 ETH
0x0feff71b8510229b8c1a056f4b4843266956aa019f09b25d78f0b8dfe9900c6e867072662023-05-03 1:21:21297 days 17 hrs ago 0x863e9610e9e0c3986dcc6fb2cd335e11d88f7d5f 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260.038373271436156676 ETH
0xf532984fd93b5fbf4d3592da2f0b70172fab184244fad57d5d241c427bad5680867002442023-05-03 0:50:19297 days 17 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b26 0x863e9610e9e0c3986dcc6fb2cd335e11d88f7d5f0.0010277776437485 ETH
0xf532984fd93b5fbf4d3592da2f0b70172fab184244fad57d5d241c427bad5680867002442023-05-03 0:50:19297 days 17 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260xd0712accc15ccf193df94d6e832a5c949a7864320.018499997587473015 ETH
0xf532984fd93b5fbf4d3592da2f0b70172fab184244fad57d5d241c427bad5680867002442023-05-03 0:50:19297 days 17 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260xe7d5b947ae87d13a25bc3c6534663c5486ef7e6c0.020555552874970019 ETH
0xf532984fd93b5fbf4d3592da2f0b70172fab184244fad57d5d241c427bad5680867002442023-05-03 0:50:19297 days 17 hrs ago 0x863e9610e9e0c3986dcc6fb2cd335e11d88f7d5f 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260.040083328106191534 ETH
0x409b04cc195f2e143034b488c64901ae4d009c4710275c62195d460c232da928866342292023-05-02 19:57:00297 days 22 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b26 0x863e9610e9e0c3986dcc6fb2cd335e11d88f7d5f0.001054271617797481 ETH
0x409b04cc195f2e143034b488c64901ae4d009c4710275c62195d460c232da928866342292023-05-02 19:57:00297 days 22 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260xd0712accc15ccf193df94d6e832a5c949a7864320.018976889120354673 ETH
0x409b04cc195f2e143034b488c64901ae4d009c4710275c62195d460c232da928866342292023-05-02 19:57:00297 days 22 hrs ago 0xd2a23e28a6cf48357d3a40d00cc318fbcb6a3b260xe7d5b947ae87d13a25bc3c6534663c5486ef7e6c0.021085432355949639 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Pornlab

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2023-02-28
*/

// SPDX-License-Identifier: MIT

pragma solidity >= 0.8.0;

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(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;
    }
}
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}
interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}
interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

 contract Pornlab is IERC20, Ownable {

  uint256 private constant _totalTokens = 1_000_000_000 * 10**DECIMALS; 
  string private constant NAME = "PornLab";
  string private constant SYMBOL = "PLAB";
  uint8 private constant DECIMALS = 18;

  struct feeProfile{ uint8 _liquidity; uint8 _marketing; uint8 _dev; uint8 _totalFee; }

  feeProfile public _buyProfile;
  feeProfile public _sellProfile;
        
  mapping (address => mapping (address => uint256)) private _allowances;
  mapping (address => uint256) private _balances; 
  mapping (address => bool) public _addressesExcludedFromFees; 

  bool public _isSwapEnabled; 
  bool public _isFeeEnabled; 
  bool public _isBuyingAllowed; //The contract will be activated once liquidity is added.

  uint256 public _tokenSwapThreshold = _totalTokens / 1000 * 1; //0.1%

  // UNISWAP INTERFACES (For swaps)
  IRouter02 internal V2Router;
  address private V2Pair;

  address public _marketingWallet;
  address public _devWallet;

  uint256 private blockPenalty;
  uint256 public tradingActiveBlock = 0; // 0 means trading is not active

  event _changeFees(uint256 _liq, uint256 _marketing, uint256 _dev, bool _isBuy);
  event _updateWallets(address _marketing, address _dev);
  event _setRouter(address _routerAddress);
  event _setThreshold(uint256 _threshold);
  event _clear(uint256 _tokenAmount);
  event _claimDust(uint256 _amount);
  event _launch(uint256 _start);
  event _swapAndLiquify(uint256 _amount);
    
  // BSC TESTNET: 0xD99D1c33F9fC3444f8101754aBC46c52416550D1
  constructor () {
    _balances[_msgSender()] = totalSupply();
    _marketingWallet = address(0xA51e4ca53f6e7722922B6B18ce1F5E058C15198c);
    _devWallet = address(0xB7E041809B7B026b97f03Bd6dbC28E74cCECa08E);

    // Initialize V2 router 
    setSwapRouter(address(0x863e9610E9E0C3986DCc6fb2cD335e11D88f7D5f));

    // Exclude contract from fees
    setExcludedFromFees(address(this), true);
    setExcludedFromFees(_msgSender(), true);
    setExcludedFromFees(_marketingWallet, true);
    setExcludedFromFees(_devWallet, true);

    // buy 
    setFeeProfile(1,1,1,true);
    // sell
    setFeeProfile(1,1,1,false);

    emit Transfer(address(0), _msgSender(), totalSupply());
  }

  function Launch(uint256 _blockPenalty) external onlyOwner {
    require(!_isBuyingAllowed, "trading is already active");
  
    setSwapEnabled(true);
    setFeeEnabled(true);

    _isBuyingAllowed = true;
    tradingActiveBlock = block.number;
    blockPenalty = _blockPenalty;

    emit _launch(tradingActiveBlock);
  }

  function setWallets(address _marketing, address _dev) external onlyOwner() {
        _marketingWallet = _marketing;
        _devWallet = _dev;
        emit _updateWallets(_marketing, _dev);
    }

  function setFeeProfile(uint8 _liquidity, uint8 _marketing, uint8 _dev, bool _updateBuy) public onlyOwner() {
    uint8 _totalFee = _liquidity + _marketing + _dev;
    require(_totalFee <= 20, "tax to high");
        if(_updateBuy) { _buyProfile._liquidity = _liquidity;  _buyProfile._marketing = _marketing;  _buyProfile._dev = _dev; _buyProfile._totalFee = _totalFee; }
        else{ _sellProfile._liquidity = _liquidity; _sellProfile._marketing = _marketing; _sellProfile._dev = _dev; _sellProfile._totalFee = _totalFee;}
        emit _changeFees(_liquidity,_marketing,_dev,_updateBuy);
    }
    
  function transfer(address recipient, uint256 amount) public override returns (bool) {
    doTransfer(_msgSender(), recipient, amount);
    return true;
  }

  function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
    doTransfer(sender, recipient, amount);
    doApprove(sender, _msgSender(), _allowances[sender][_msgSender()] - amount); // Will fail when there is not enough allowance
    return true;
  }
  
  function balanceOf(address account) public view override returns (uint256) {
    return _balances[account];
  }

  function approve(address spender, uint256 amount) public override returns (bool) {
    doApprove(_msgSender(), spender, amount);
    return true;
  }
  
  function doTransfer(address sender, address recipient, uint256 amount) internal virtual {
    require(sender != address(0), "zero address transfer is not allowed");
    require(recipient != address(0), "zero address transfer is not allowed");
    require(amount > 0, "amount must be greater than zero");

    if(!_isBuyingAllowed)  { require(_addressesExcludedFromFees[sender], "cant transfer"); }
    if(_isSwapEnabled){	executeSwapCheck(sender, recipient); }

    uint256 feeRate = calculateFeeRate(sender, recipient);
    uint256 feeAmount = amount * feeRate / 100;
    uint256 transferAmount = amount - feeAmount;

    updateBalances(sender, recipient, amount, feeAmount);

    emit Transfer(sender, recipient, transferAmount); 
  }
  
  function executeSwapCheck(address sender, address recipient) private {
    if (!isMarketTransfer(sender, recipient)) {
      return;
    }

    uint256 tokensAvailableForSwap = balanceOf(address(this));
    if (tokensAvailableForSwap >= _tokenSwapThreshold) {
      tokensAvailableForSwap = _tokenSwapThreshold;

      bool isSelling = isPancakeswapPair(recipient);
      if (isSelling) {
        executeSwap(tokensAvailableForSwap);
      }
    }
  }

  // if buildup becomes to large in contract
  function clearSwap(uint256 _tokenAmount) external onlyOwner(){
    executeSwap(_tokenAmount);
    emit _clear(_tokenAmount);
  }
  
  function executeSwap(uint256 amount) private {
    // Allow pancakeswap to spend the tokens of the address
    doApprove(address(this), address(V2Router), amount);
    uint256 total = _sellProfile._totalFee;

    uint256 tokensReservedForLiquidity = amount * _sellProfile._liquidity / total;
    uint256 tokensReservedForDev = amount * _sellProfile._dev / total ;
    uint256 tokensReservedForMarketing = amount - tokensReservedForLiquidity - tokensReservedForDev;

    uint256 tokensToSwapForLiquidity = tokensReservedForLiquidity / 2;
    uint256 tokensToAddAsLiquidity = tokensToSwapForLiquidity;

    uint256 tokensToSwap = tokensToSwapForLiquidity + tokensReservedForMarketing + tokensReservedForDev;
    uint256 ethSwapped = swapTokensForBNB(tokensToSwap);
    
    uint256 bnbToBeAddedToLiquidity = ethSwapped * tokensToSwapForLiquidity / tokensToSwap;
    uint256 bnbToBeSentToDevelopment = ethSwapped * tokensReservedForDev / tokensToSwap;
    uint256 bnbToBeSentToMarketing = ethSwapped - bnbToBeAddedToLiquidity- bnbToBeSentToDevelopment;

    payable(_marketingWallet).transfer(bnbToBeSentToMarketing);
    payable(_devWallet).transfer(bnbToBeSentToDevelopment);

    try V2Router.addLiquidityETH{value: bnbToBeAddedToLiquidity}(address(this), tokensToAddAsLiquidity, 0, 0, _devWallet, block.timestamp){} catch {}
    
    emit _swapAndLiquify(ethSwapped);
  }

  function updateBalances(address sender, address recipient, uint256 sentAmount, uint256 feeAmount) private {
    // Calculate amount to be received by recipient
    uint256 receivedAmount = sentAmount - feeAmount;

    // Update balances
    _balances[sender] -= sentAmount;
    _balances[recipient] += receivedAmount;
    
    // Add fees to contract
    _balances[address(this)] += feeAmount;

    // hides bloat emits
    if(feeAmount > 0 ){
      emit Transfer(sender, address(this), feeAmount); 
    }
  
  }

  function doApprove(address owner, address spender, uint256 amount) private {
    require(owner != address(0), "Cannot approve from the zero address");
    require(spender != address(0), "Cannot approve to the zero address");

    _allowances[owner][spender] = amount;
    emit Approval(owner, spender, amount);
  }

  function calculateFeeRate(address sender, address recipient) private view returns(uint256) {
    bool applyFees = _isFeeEnabled && !_addressesExcludedFromFees[sender] && !_addressesExcludedFromFees[recipient];
    if (applyFees) {
      if (isPancakeswapPair(recipient)) {
        return _sellProfile._totalFee;
      }else{
            if(isPenaltyActive()){
                return 75;
              }else{
                return _buyProfile._totalFee;
              }
            }
    }
    return 0;
  }
  
  function swapTokensForBNB(uint256 tokenAmount) internal returns(uint256) {
    uint256 initialBalance = address(this).balance;
  
    address[] memory path = new address[](2);
    path[0] = address(this);
    path[1] = V2Router.WETH();
    V2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
 
    return address(this).balance - initialBalance;
  }

  function isSwapTransfer(address sender, address recipient) private view returns(bool) {
    bool isContractSelling = sender == address(this) && isPancakeswapPair(recipient);
    return isContractSelling;
  }

  function isMarketTransfer(address sender, address recipient) internal virtual view returns(bool) {
    return !isSwapTransfer(sender, recipient);
  }

  function amountUntilSwap() external  view returns (uint256) {
    uint256 balance = balanceOf(address(this));
    if (balance > _tokenSwapThreshold) {
      return 0;
    }
    return _tokenSwapThreshold - balance;
  }

  function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
    doApprove(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
    return true;
  }

  function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
    doApprove(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
    return true;
  }

  function setSwapRouter(address routerAddress) public onlyOwner {
    require(routerAddress != address(0), "Cannot use the zero address as router address");
    V2Router = IRouter02(routerAddress);
    V2Pair = IFactoryV2(V2Router.factory()).createPair(address(this), V2Router.WETH());
    emit _setRouter(routerAddress);
  }

  function isPancakeswapPair(address addr) internal view returns(bool) {
    return V2Pair == addr;
  }

  function setTokenSwapThreshold(uint256 threshold) external  onlyOwner {
    require(threshold > 0, "Threshold must be greater than 0");
    _tokenSwapThreshold = threshold;
    emit _setThreshold(threshold);
  }

  // dust can build up by failure of adding liq 
  function clearDust() external  onlyOwner{
      payable(_devWallet).transfer(address(this).balance);
      emit _claimDust(address(this).balance);
  }

    function totalSupply() public override pure returns (uint256) { return _totalTokens; }
    function allowance(address user, address spender) public view override returns (uint256) { return _allowances[user][spender]; }
    function pairAddress() public view returns (address) { return V2Pair; }
    function setSwapEnabled(bool isEnabled) public onlyOwner { _isSwapEnabled = isEnabled; }
    function setFeeEnabled(bool isEnabled) public onlyOwner { _isFeeEnabled = isEnabled; }
    function setExcludedFromFees(address addr, bool value) public onlyOwner { _addressesExcludedFromFees[addr] = value; }
    function isPenaltyActive() public view returns (bool) { return tradingActiveBlock >= block.number - blockPenalty; } 
    function decimals() external pure override returns (uint8) { if (totalSupply() == 0) { revert(); } return DECIMALS; }
    function symbol() external pure override returns (string memory) { return SYMBOL; }
    function name() external pure override returns (string memory) { return NAME; }
    function getOwner() external view override returns (address) { return owner(); }

  receive() external payable {}
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_liq","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_dev","type":"uint256"},{"indexed":false,"internalType":"bool","name":"_isBuy","type":"bool"}],"name":"_changeFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"_claimDust","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"_clear","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_start","type":"uint256"}],"name":"_launch","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_routerAddress","type":"address"}],"name":"_setRouter","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"_setThreshold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"_swapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_marketing","type":"address"},{"indexed":false,"internalType":"address","name":"_dev","type":"address"}],"name":"_updateWallets","type":"event"},{"inputs":[{"internalType":"uint256","name":"_blockPenalty","type":"uint256"}],"name":"Launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_addressesExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyProfile","outputs":[{"internalType":"uint8","name":"_liquidity","type":"uint8"},{"internalType":"uint8","name":"_marketing","type":"uint8"},{"internalType":"uint8","name":"_dev","type":"uint8"},{"internalType":"uint8","name":"_totalFee","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isBuyingAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isFeeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellProfile","outputs":[{"internalType":"uint8","name":"_liquidity","type":"uint8"},{"internalType":"uint8","name":"_marketing","type":"uint8"},{"internalType":"uint8","name":"_dev","type":"uint8"},{"internalType":"uint8","name":"_totalFee","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountUntilSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearDust","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"clearSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isPenaltyActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isEnabled","type":"bool"}],"name":"setFeeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_liquidity","type":"uint8"},{"internalType":"uint8","name":"_marketing","type":"uint8"},{"internalType":"uint8","name":"_dev","type":"uint8"},{"internalType":"bool","name":"_updateBuy","type":"bool"}],"name":"setFeeProfile","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isEnabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"name":"setSwapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setTokenSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_dev","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526103e8620000156012600a62000796565b6200002590633b9aca00620007ae565b620000319190620007c8565b6200003e906001620007ae565b6009556000600f553480156200005357600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200009f620001c6565b33600090815260066020526040902055600c80546001600160a01b031990811673a51e4ca53f6e7722922b6b18ce1f5e058c15198c17909155600d805490911673b7e041809b7b026b97f03bd6dbc28e74cceca08e1790556200011673863e9610e9e0c3986dcc6fb2cd335e11d88f7d5f620001eb565b6200012330600162000479565b6200013033600162000479565b600c5462000149906001600160a01b0316600162000479565b600d5462000162906001600160a01b0316600162000479565b620001716001808080620004ef565b62000181600180806000620004ef565b3360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001af620001c6565b60405190815260200160405180910390a362000832565b6000620001d66012600a62000796565b620001e690633b9aca00620007ae565b905090565b6000546001600160a01b031633146200023a5760405162461bcd60e51b815260206004820181905260248201526000805160206200269083398151915260448201526064015b60405180910390fd5b6001600160a01b038116620002a85760405162461bcd60e51b815260206004820152602d60248201527f43616e6e6f742075736520746865207a65726f2061646472657373206173207260448201526c6f75746572206164647265737360981b606482015260840162000231565b600a80546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000302573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003289190620007eb565b6001600160a01b031663c9c6539630600a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b19190620007eb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620003ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004259190620007eb565b600b80546001600160a01b0319166001600160a01b0392831617905560405190821681527fd1431ffd6b1c0a705bfdf15dbd9a5954739e5f4f093dd08fef588fd4151642619060200160405180910390a150565b6000546001600160a01b03163314620004c45760405162461bcd60e51b8152602060048201819052602482015260008051602062002690833981519152604482015260640162000231565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146200053a5760405162461bcd60e51b8152602060048201819052602482015260008051602062002690833981519152604482015260640162000231565b60008262000549858762000816565b62000555919062000816565b905060148160ff1611156200059b5760405162461bcd60e51b815260206004820152600b60248201526a0e8c2f040e8de40d0d2ced60ab1b604482015260640162000231565b8115620005ea576003805460ff87811661ffff1990921691909117610100878316021763ffff00001916620100008683160263ff0000001916176301000000918416919091021790556200062d565b6004805460ff87811661ffff1990921691909117610100878316021763ffff00001916620100008683160263ff0000001916176301000000918416919091021790555b6040805160ff87811682528681166020830152851681830152831515606082015290517f44bc7ab7a81ee033147d69565c5c1c74915cd840ece00a5eb172ce9c7b7814c09181900360800190a15050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006d8578160001904821115620006bc57620006bc62000681565b80851615620006ca57918102915b93841c93908002906200069c565b509250929050565b600082620006f15750600162000790565b81620007005750600062000790565b8160018114620007195760028114620007245762000744565b600191505062000790565b60ff84111562000738576200073862000681565b50506001821b62000790565b5060208310610133831016604e8410600b841016171562000769575081810a62000790565b62000775838362000697565b80600019048211156200078c576200078c62000681565b0290505b92915050565b6000620007a760ff841683620006e0565b9392505050565b808202811582820484141762000790576200079062000681565b600082620007e657634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620007fe57600080fd5b81516001600160a01b0381168114620007a757600080fd5b60ff818116838216019081111562000790576200079062000681565b611e4e80620008426000396000f3fe6080604052600436106102135760003560e01c8063893d20e811610118578063d3f6a157116100a0578063e6f2306b1161006f578063e6f2306b14610695578063ee40166e146106cb578063f0977357146106e1578063f16f07ae14610701578063fb96a95f1461071757600080fd5b8063d3f6a157146105f0578063d3ff209d14610610578063dd62ed3e1461062f578063e01af92c1461067557600080fd5b8063962dfc75116100e7578063962dfc7514610552578063a457c2d714610572578063a72e5e1514610592578063a8b08982146105b2578063a9059cbb146105d057600080fd5b8063893d20e8146104e75780638da5cb5b146104e757806391f24c091461050557806395d89b411461052557600080fd5b80633e0bf7161161019b57806359ecf39e1161016a57806359ecf39e146104425780635a264ca71461046257806370a08231146104825780637d584aa1146104b85780637f7fcecc146104cd57600080fd5b80633e0bf7161461038a57806341273657146103ed57806358b69bc31461040d578063590ffdce1461042257600080fd5b806318160ddd116101e257806318160ddd146102eb57806323b872dd1461030e5780633094375d1461032e578063313ce56714610343578063395093511461036a57600080fd5b806306fdde031461021f578063095ea7b3146102615780630db474fa1461029157806311a63e17146102b357600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b506040805180820190915260078152662837b9372630b160c91b60208201525b6040516102589190611939565b60405180910390f35b34801561026d57600080fd5b5061028161027c36600461199f565b610747565b6040519015158152602001610258565b34801561029d57600080fd5b506102b16102ac3660046119e0565b61075e565b005b3480156102bf57600080fd5b50600d546102d3906001600160a01b031681565b6040516001600160a01b039091168152602001610258565b3480156102f757600080fd5b506103006107ab565b604051908152602001610258565b34801561031a57600080fd5b50610281610329366004611a02565b6107cc565b34801561033a57600080fd5b5061030061081e565b34801561034f57600080fd5b50610358610854565b60405160ff9091168152602001610258565b34801561037657600080fd5b5061028161038536600461199f565b610870565b34801561039657600080fd5b506003546103c09060ff808216916101008104821691620100008204811691630100000090041684565b6040805160ff95861681529385166020850152918416918301919091529091166060820152608001610258565b3480156103f957600080fd5b506102b1610408366004611a43565b6108a7565b34801561041957600080fd5b50610281610b06565b34801561042e57600080fd5b506102b161043d366004611a60565b610b20565b34801561044e57600080fd5b506102b161045d366004611a95565b610b75565b34801561046e57600080fd5b506008546102819062010000900460ff1681565b34801561048e57600080fd5b5061030061049d366004611a43565b6001600160a01b031660009081526006602052604090205490565b3480156104c457600080fd5b506102b1610c24565b3480156104d957600080fd5b506008546102819060ff1681565b3480156104f357600080fd5b506000546001600160a01b03166102d3565b34801561051157600080fd5b506102b1610520366004611abf565b610cbd565b34801561053157600080fd5b50604080518082019091526004815263282620a160e11b602082015261024b565b34801561055e57600080fd5b50600c546102d3906001600160a01b031681565b34801561057e57600080fd5b5061028161058d36600461199f565b610e26565b34801561059e57600080fd5b506102b16105ad366004611a95565b610e5d565b3480156105be57600080fd5b50600b546001600160a01b03166102d3565b3480156105dc57600080fd5b506102816105eb36600461199f565b610f42565b3480156105fc57600080fd5b506102b161060b366004611b13565b610f4f565b34801561061c57600080fd5b5060085461028190610100900460ff1681565b34801561063b57600080fd5b5061030061064a366004611b13565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561068157600080fd5b506102b16106903660046119e0565b610fe7565b3480156106a157600080fd5b506004546103c09060ff808216916101008104821691620100008204811691630100000090041684565b3480156106d757600080fd5b50610300600f5481565b3480156106ed57600080fd5b506102b16106fc366004611a95565b611024565b34801561070d57600080fd5b5061030060095481565b34801561072357600080fd5b50610281610732366004611a43565b60076020526000908152604090205460ff1681565b6000610754338484611087565b5060015b92915050565b6000546001600160a01b031633146107915760405162461bcd60e51b815260040161078890611b4c565b60405180910390fd5b600880549115156101000261ff0019909216919091179055565b60006107b96012600a611c7b565b6107c790633b9aca00611c8a565b905090565b60006107d98484846111ab565b6001600160a01b03841660009081526005602090815260408083203380855292529091205461081491869161080f908690611ca1565b611087565b5060019392505050565b3060009081526006602052604081205460095481111561084057600091505090565b8060095461084e9190611ca1565b91505090565b600061085e6107ab565b60000361086a57600080fd5b50601290565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161075491859061080f908690611cb4565b6000546001600160a01b031633146108d15760405162461bcd60e51b815260040161078890611b4c565b6001600160a01b03811661093d5760405162461bcd60e51b815260206004820152602d60248201527f43616e6e6f742075736520746865207a65726f2061646472657373206173207260448201526c6f75746572206164647265737360981b6064820152608401610788565b600a80546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba9190611cc7565b6001600160a01b031663c9c6539630600a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a409190611cc7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab19190611cc7565b600b80546001600160a01b0319166001600160a01b0392831617905560405190821681527fd1431ffd6b1c0a705bfdf15dbd9a5954739e5f4f093dd08fef588fd415164261906020015b60405180910390a150565b6000600e5443610b169190611ca1565b600f541015905090565b6000546001600160a01b03163314610b4a5760405162461bcd60e51b815260040161078890611b4c565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b9f5760405162461bcd60e51b815260040161078890611b4c565b60008111610bef5760405162461bcd60e51b815260206004820181905260248201527f5468726573686f6c64206d7573742062652067726561746572207468616e20306044820152606401610788565b60098190556040518181527f3d5472e45a39af360c106b99aa48f7356cd3b609ea581b5deb38a4b1270e898590602001610afb565b6000546001600160a01b03163314610c4e5760405162461bcd60e51b815260040161078890611b4c565b600d546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610c87573d6000803e3d6000fd5b506040514781527fd1c23667321cc2db9d1de3db7f4dcf0eb5ade4f87e163713d3667eec1e92facb9060200160405180910390a1565b6000546001600160a01b03163314610ce75760405162461bcd60e51b815260040161078890611b4c565b600082610cf48587611ce4565b610cfe9190611ce4565b905060148160ff161115610d425760405162461bcd60e51b815260206004820152600b60248201526a0e8c2f040e8de40d0d2ced60ab1b6044820152606401610788565b8115610d8f576003805460ff87811661ffff1990921691909117610100878316021763ffff00001916620100008683160263ff000000191617630100000091841691909102179055610dd2565b6004805460ff87811661ffff1990921691909117610100878316021763ffff00001916620100008683160263ff0000001916176301000000918416919091021790555b6040805160ff87811682528681166020830152851681830152831515606082015290517f44bc7ab7a81ee033147d69565c5c1c74915cd840ece00a5eb172ce9c7b7814c09181900360800190a15050505050565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161075491859061080f908690611ca1565b6000546001600160a01b03163314610e875760405162461bcd60e51b815260040161078890611b4c565b60085462010000900460ff1615610ee05760405162461bcd60e51b815260206004820152601960248201527f74726164696e6720697320616c726561647920616374697665000000000000006044820152606401610788565b610eea6001610fe7565b610ef4600161075e565b6008805462ff000019166201000017905543600f819055600e8290556040517f6600f6005863f92891b8c04d901a1f5d14860257428eba2058e9f3f9175b563391610afb9190815260200190565b60006107543384846111ab565b6000546001600160a01b03163314610f795760405162461bcd60e51b815260040161078890611b4c565b600c80546001600160a01b038481166001600160a01b03199283168117909355600d80549185169190921681179091556040805192835260208301919091527fe67d5d4d7e74d0ccbdf30dbd83729da0b6a8405bfb83b5f35038638e19a4ea13910160405180910390a15050565b6000546001600160a01b031633146110115760405162461bcd60e51b815260040161078890611b4c565b6008805460ff1916911515919091179055565b6000546001600160a01b0316331461104e5760405162461bcd60e51b815260040161078890611b4c565b6110578161135b565b6040518181527f8d9f39d10957a4e556f944f249fcdc7cc1263cc4e31368fe3056895f85d4599d90602001610afb565b6001600160a01b0383166110e95760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610788565b6001600160a01b03821661114a5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610788565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111d15760405162461bcd60e51b815260040161078890611cfd565b6001600160a01b0382166111f75760405162461bcd60e51b815260040161078890611cfd565b600081116112475760405162461bcd60e51b815260206004820181905260248201527f616d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610788565b60085462010000900460ff166112af576001600160a01b03831660009081526007602052604090205460ff166112af5760405162461bcd60e51b815260206004820152600d60248201526c31b0b73a103a3930b739b332b960991b6044820152606401610788565b60085460ff16156112c4576112c483836115ac565b60006112d08484611602565b9050600060646112e08385611c8a565b6112ea9190611d41565b905060006112f88285611ca1565b9050611306868686856116c2565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161134b91815260200190565b60405180910390a3505050505050565b600a546113739030906001600160a01b031683611087565b60045460ff630100000082048116916000918391611392911685611c8a565b61139c9190611d41565b60045490915060009083906113ba9062010000900460ff1686611c8a565b6113c49190611d41565b90506000816113d38487611ca1565b6113dd9190611ca1565b905060006113ec600285611d41565b9050806000846113fc8584611cb4565b6114069190611cb4565b905060006114138261179f565b90506000826114228684611c8a565b61142c9190611d41565b905060008361143b8985611c8a565b6114459190611d41565b90506000816114548486611ca1565b61145e9190611ca1565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611499573d6000803e3d6000fd5b50600d546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156114d4573d6000803e3d6000fd5b50600a54600d5460405163f305d71960e01b81523060048201526024810189905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af193505050508015611562575060408051601f3d908101601f1916820190925261155f91810190611d63565b60015b1561156b575050505b6040518481527f7bf54cb9a865e8dabf744f65dfac5fe865060b1d1b8172c512d88fe90815cf2a9060200160405180910390a1505050505050505050505050565b6115b682826118f6565b6115be575050565b3060009081526006602052604090205460095481106115fd5750600954600b546001600160a01b0383811691161480156115fb576115fb8261135b565b505b505050565b6008546000908190610100900460ff16801561163757506001600160a01b03841660009081526007602052604090205460ff16155b801561165c57506001600160a01b03831660009081526007602052604090205460ff16155b905080156116b857600b546001600160a01b0380851691160361168d5750506004546301000000900460ff16610758565b611695610b06565b156116a457604b915050610758565b50506003546301000000900460ff16610758565b5060009392505050565b60006116ce8284611ca1565b6001600160a01b0386166000908152600660205260408120805492935085929091906116fb908490611ca1565b90915550506001600160a01b03841660009081526006602052604081208054839290611728908490611cb4565b9091555050306000908152600660205260408120805484929061174c908490611cb4565b909155505081156117985760405182815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050505050565b60408051600280825260608201835260009247928492909160208301908036833701905050905030816000815181106117da576117da611d91565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118579190611cc7565b8160018151811061186a5761186a611d91565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b815291169063791ac947906118b0908790600090869030904290600401611da7565b600060405180830381600087803b1580156118ca57600080fd5b505af11580156118de573d6000803e3d6000fd5b5050505081476118ee9190611ca1565b949350505050565b6000611902838361190a565b159392505050565b6000806001600160a01b038416301480156118ee5750600b546001600160a01b03808516911614949350505050565b600060208083528351808285015260005b818110156119665785810183015185820160400152820161194a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461199c57600080fd5b50565b600080604083850312156119b257600080fd5b82356119bd81611987565b946020939093013593505050565b803580151581146119db57600080fd5b919050565b6000602082840312156119f257600080fd5b6119fb826119cb565b9392505050565b600080600060608486031215611a1757600080fd5b8335611a2281611987565b92506020840135611a3281611987565b929592945050506040919091013590565b600060208284031215611a5557600080fd5b81356119fb81611987565b60008060408385031215611a7357600080fd5b8235611a7e81611987565b9150611a8c602084016119cb565b90509250929050565b600060208284031215611aa757600080fd5b5035919050565b803560ff811681146119db57600080fd5b60008060008060808587031215611ad557600080fd5b611ade85611aae565b9350611aec60208601611aae565b9250611afa60408601611aae565b9150611b08606086016119cb565b905092959194509250565b60008060408385031215611b2657600080fd5b8235611b3181611987565b91506020830135611b4181611987565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611bd2578160001904821115611bb857611bb8611b81565b80851615611bc557918102915b93841c9390800290611b9c565b509250929050565b600082611be957506001610758565b81611bf657506000610758565b8160018114611c0c5760028114611c1657611c32565b6001915050610758565b60ff841115611c2757611c27611b81565b50506001821b610758565b5060208310610133831016604e8410600b8410161715611c55575081810a610758565b611c5f8383611b97565b8060001904821115611c7357611c73611b81565b029392505050565b60006119fb60ff841683611bda565b808202811582820484141761075857610758611b81565b8181038181111561075857610758611b81565b8082018082111561075857610758611b81565b600060208284031215611cd957600080fd5b81516119fb81611987565b60ff818116838216019081111561075857610758611b81565b60208082526024908201527f7a65726f2061646472657373207472616e73666572206973206e6f7420616c6c6040820152631bddd95960e21b606082015260800190565b600082611d5e57634e487b7160e01b600052601260045260246000fd5b500490565b600080600060608486031215611d7857600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611df75784516001600160a01b031683529383019391830191600101611dd2565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212208d6a8638a76bbd781beaa0ba68f009b3312deaa25ba0608c5db808e931f9e23764736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106102135760003560e01c8063893d20e811610118578063d3f6a157116100a0578063e6f2306b1161006f578063e6f2306b14610695578063ee40166e146106cb578063f0977357146106e1578063f16f07ae14610701578063fb96a95f1461071757600080fd5b8063d3f6a157146105f0578063d3ff209d14610610578063dd62ed3e1461062f578063e01af92c1461067557600080fd5b8063962dfc75116100e7578063962dfc7514610552578063a457c2d714610572578063a72e5e1514610592578063a8b08982146105b2578063a9059cbb146105d057600080fd5b8063893d20e8146104e75780638da5cb5b146104e757806391f24c091461050557806395d89b411461052557600080fd5b80633e0bf7161161019b57806359ecf39e1161016a57806359ecf39e146104425780635a264ca71461046257806370a08231146104825780637d584aa1146104b85780637f7fcecc146104cd57600080fd5b80633e0bf7161461038a57806341273657146103ed57806358b69bc31461040d578063590ffdce1461042257600080fd5b806318160ddd116101e257806318160ddd146102eb57806323b872dd1461030e5780633094375d1461032e578063313ce56714610343578063395093511461036a57600080fd5b806306fdde031461021f578063095ea7b3146102615780630db474fa1461029157806311a63e17146102b357600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b506040805180820190915260078152662837b9372630b160c91b60208201525b6040516102589190611939565b60405180910390f35b34801561026d57600080fd5b5061028161027c36600461199f565b610747565b6040519015158152602001610258565b34801561029d57600080fd5b506102b16102ac3660046119e0565b61075e565b005b3480156102bf57600080fd5b50600d546102d3906001600160a01b031681565b6040516001600160a01b039091168152602001610258565b3480156102f757600080fd5b506103006107ab565b604051908152602001610258565b34801561031a57600080fd5b50610281610329366004611a02565b6107cc565b34801561033a57600080fd5b5061030061081e565b34801561034f57600080fd5b50610358610854565b60405160ff9091168152602001610258565b34801561037657600080fd5b5061028161038536600461199f565b610870565b34801561039657600080fd5b506003546103c09060ff808216916101008104821691620100008204811691630100000090041684565b6040805160ff95861681529385166020850152918416918301919091529091166060820152608001610258565b3480156103f957600080fd5b506102b1610408366004611a43565b6108a7565b34801561041957600080fd5b50610281610b06565b34801561042e57600080fd5b506102b161043d366004611a60565b610b20565b34801561044e57600080fd5b506102b161045d366004611a95565b610b75565b34801561046e57600080fd5b506008546102819062010000900460ff1681565b34801561048e57600080fd5b5061030061049d366004611a43565b6001600160a01b031660009081526006602052604090205490565b3480156104c457600080fd5b506102b1610c24565b3480156104d957600080fd5b506008546102819060ff1681565b3480156104f357600080fd5b506000546001600160a01b03166102d3565b34801561051157600080fd5b506102b1610520366004611abf565b610cbd565b34801561053157600080fd5b50604080518082019091526004815263282620a160e11b602082015261024b565b34801561055e57600080fd5b50600c546102d3906001600160a01b031681565b34801561057e57600080fd5b5061028161058d36600461199f565b610e26565b34801561059e57600080fd5b506102b16105ad366004611a95565b610e5d565b3480156105be57600080fd5b50600b546001600160a01b03166102d3565b3480156105dc57600080fd5b506102816105eb36600461199f565b610f42565b3480156105fc57600080fd5b506102b161060b366004611b13565b610f4f565b34801561061c57600080fd5b5060085461028190610100900460ff1681565b34801561063b57600080fd5b5061030061064a366004611b13565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561068157600080fd5b506102b16106903660046119e0565b610fe7565b3480156106a157600080fd5b506004546103c09060ff808216916101008104821691620100008204811691630100000090041684565b3480156106d757600080fd5b50610300600f5481565b3480156106ed57600080fd5b506102b16106fc366004611a95565b611024565b34801561070d57600080fd5b5061030060095481565b34801561072357600080fd5b50610281610732366004611a43565b60076020526000908152604090205460ff1681565b6000610754338484611087565b5060015b92915050565b6000546001600160a01b031633146107915760405162461bcd60e51b815260040161078890611b4c565b60405180910390fd5b600880549115156101000261ff0019909216919091179055565b60006107b96012600a611c7b565b6107c790633b9aca00611c8a565b905090565b60006107d98484846111ab565b6001600160a01b03841660009081526005602090815260408083203380855292529091205461081491869161080f908690611ca1565b611087565b5060019392505050565b3060009081526006602052604081205460095481111561084057600091505090565b8060095461084e9190611ca1565b91505090565b600061085e6107ab565b60000361086a57600080fd5b50601290565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161075491859061080f908690611cb4565b6000546001600160a01b031633146108d15760405162461bcd60e51b815260040161078890611b4c565b6001600160a01b03811661093d5760405162461bcd60e51b815260206004820152602d60248201527f43616e6e6f742075736520746865207a65726f2061646472657373206173207260448201526c6f75746572206164647265737360981b6064820152608401610788565b600a80546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba9190611cc7565b6001600160a01b031663c9c6539630600a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a409190611cc7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab19190611cc7565b600b80546001600160a01b0319166001600160a01b0392831617905560405190821681527fd1431ffd6b1c0a705bfdf15dbd9a5954739e5f4f093dd08fef588fd415164261906020015b60405180910390a150565b6000600e5443610b169190611ca1565b600f541015905090565b6000546001600160a01b03163314610b4a5760405162461bcd60e51b815260040161078890611b4c565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b9f5760405162461bcd60e51b815260040161078890611b4c565b60008111610bef5760405162461bcd60e51b815260206004820181905260248201527f5468726573686f6c64206d7573742062652067726561746572207468616e20306044820152606401610788565b60098190556040518181527f3d5472e45a39af360c106b99aa48f7356cd3b609ea581b5deb38a4b1270e898590602001610afb565b6000546001600160a01b03163314610c4e5760405162461bcd60e51b815260040161078890611b4c565b600d546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610c87573d6000803e3d6000fd5b506040514781527fd1c23667321cc2db9d1de3db7f4dcf0eb5ade4f87e163713d3667eec1e92facb9060200160405180910390a1565b6000546001600160a01b03163314610ce75760405162461bcd60e51b815260040161078890611b4c565b600082610cf48587611ce4565b610cfe9190611ce4565b905060148160ff161115610d425760405162461bcd60e51b815260206004820152600b60248201526a0e8c2f040e8de40d0d2ced60ab1b6044820152606401610788565b8115610d8f576003805460ff87811661ffff1990921691909117610100878316021763ffff00001916620100008683160263ff000000191617630100000091841691909102179055610dd2565b6004805460ff87811661ffff1990921691909117610100878316021763ffff00001916620100008683160263ff0000001916176301000000918416919091021790555b6040805160ff87811682528681166020830152851681830152831515606082015290517f44bc7ab7a81ee033147d69565c5c1c74915cd840ece00a5eb172ce9c7b7814c09181900360800190a15050505050565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161075491859061080f908690611ca1565b6000546001600160a01b03163314610e875760405162461bcd60e51b815260040161078890611b4c565b60085462010000900460ff1615610ee05760405162461bcd60e51b815260206004820152601960248201527f74726164696e6720697320616c726561647920616374697665000000000000006044820152606401610788565b610eea6001610fe7565b610ef4600161075e565b6008805462ff000019166201000017905543600f819055600e8290556040517f6600f6005863f92891b8c04d901a1f5d14860257428eba2058e9f3f9175b563391610afb9190815260200190565b60006107543384846111ab565b6000546001600160a01b03163314610f795760405162461bcd60e51b815260040161078890611b4c565b600c80546001600160a01b038481166001600160a01b03199283168117909355600d80549185169190921681179091556040805192835260208301919091527fe67d5d4d7e74d0ccbdf30dbd83729da0b6a8405bfb83b5f35038638e19a4ea13910160405180910390a15050565b6000546001600160a01b031633146110115760405162461bcd60e51b815260040161078890611b4c565b6008805460ff1916911515919091179055565b6000546001600160a01b0316331461104e5760405162461bcd60e51b815260040161078890611b4c565b6110578161135b565b6040518181527f8d9f39d10957a4e556f944f249fcdc7cc1263cc4e31368fe3056895f85d4599d90602001610afb565b6001600160a01b0383166110e95760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610788565b6001600160a01b03821661114a5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610788565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111d15760405162461bcd60e51b815260040161078890611cfd565b6001600160a01b0382166111f75760405162461bcd60e51b815260040161078890611cfd565b600081116112475760405162461bcd60e51b815260206004820181905260248201527f616d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610788565b60085462010000900460ff166112af576001600160a01b03831660009081526007602052604090205460ff166112af5760405162461bcd60e51b815260206004820152600d60248201526c31b0b73a103a3930b739b332b960991b6044820152606401610788565b60085460ff16156112c4576112c483836115ac565b60006112d08484611602565b9050600060646112e08385611c8a565b6112ea9190611d41565b905060006112f88285611ca1565b9050611306868686856116c2565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161134b91815260200190565b60405180910390a3505050505050565b600a546113739030906001600160a01b031683611087565b60045460ff630100000082048116916000918391611392911685611c8a565b61139c9190611d41565b60045490915060009083906113ba9062010000900460ff1686611c8a565b6113c49190611d41565b90506000816113d38487611ca1565b6113dd9190611ca1565b905060006113ec600285611d41565b9050806000846113fc8584611cb4565b6114069190611cb4565b905060006114138261179f565b90506000826114228684611c8a565b61142c9190611d41565b905060008361143b8985611c8a565b6114459190611d41565b90506000816114548486611ca1565b61145e9190611ca1565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611499573d6000803e3d6000fd5b50600d546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156114d4573d6000803e3d6000fd5b50600a54600d5460405163f305d71960e01b81523060048201526024810189905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af193505050508015611562575060408051601f3d908101601f1916820190925261155f91810190611d63565b60015b1561156b575050505b6040518481527f7bf54cb9a865e8dabf744f65dfac5fe865060b1d1b8172c512d88fe90815cf2a9060200160405180910390a1505050505050505050505050565b6115b682826118f6565b6115be575050565b3060009081526006602052604090205460095481106115fd5750600954600b546001600160a01b0383811691161480156115fb576115fb8261135b565b505b505050565b6008546000908190610100900460ff16801561163757506001600160a01b03841660009081526007602052604090205460ff16155b801561165c57506001600160a01b03831660009081526007602052604090205460ff16155b905080156116b857600b546001600160a01b0380851691160361168d5750506004546301000000900460ff16610758565b611695610b06565b156116a457604b915050610758565b50506003546301000000900460ff16610758565b5060009392505050565b60006116ce8284611ca1565b6001600160a01b0386166000908152600660205260408120805492935085929091906116fb908490611ca1565b90915550506001600160a01b03841660009081526006602052604081208054839290611728908490611cb4565b9091555050306000908152600660205260408120805484929061174c908490611cb4565b909155505081156117985760405182815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050505050565b60408051600280825260608201835260009247928492909160208301908036833701905050905030816000815181106117da576117da611d91565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118579190611cc7565b8160018151811061186a5761186a611d91565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b815291169063791ac947906118b0908790600090869030904290600401611da7565b600060405180830381600087803b1580156118ca57600080fd5b505af11580156118de573d6000803e3d6000fd5b5050505081476118ee9190611ca1565b949350505050565b6000611902838361190a565b159392505050565b6000806001600160a01b038416301480156118ee5750600b546001600160a01b03808516911614949350505050565b600060208083528351808285015260005b818110156119665785810183015185820160400152820161194a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461199c57600080fd5b50565b600080604083850312156119b257600080fd5b82356119bd81611987565b946020939093013593505050565b803580151581146119db57600080fd5b919050565b6000602082840312156119f257600080fd5b6119fb826119cb565b9392505050565b600080600060608486031215611a1757600080fd5b8335611a2281611987565b92506020840135611a3281611987565b929592945050506040919091013590565b600060208284031215611a5557600080fd5b81356119fb81611987565b60008060408385031215611a7357600080fd5b8235611a7e81611987565b9150611a8c602084016119cb565b90509250929050565b600060208284031215611aa757600080fd5b5035919050565b803560ff811681146119db57600080fd5b60008060008060808587031215611ad557600080fd5b611ade85611aae565b9350611aec60208601611aae565b9250611afa60408601611aae565b9150611b08606086016119cb565b905092959194509250565b60008060408385031215611b2657600080fd5b8235611b3181611987565b91506020830135611b4181611987565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611bd2578160001904821115611bb857611bb8611b81565b80851615611bc557918102915b93841c9390800290611b9c565b509250929050565b600082611be957506001610758565b81611bf657506000610758565b8160018114611c0c5760028114611c1657611c32565b6001915050610758565b60ff841115611c2757611c27611b81565b50506001821b610758565b5060208310610133831016604e8410600b8410161715611c55575081810a610758565b611c5f8383611b97565b8060001904821115611c7357611c73611b81565b029392505050565b60006119fb60ff841683611bda565b808202811582820484141761075857610758611b81565b8181038181111561075857610758611b81565b8082018082111561075857610758611b81565b600060208284031215611cd957600080fd5b81516119fb81611987565b60ff818116838216019081111561075857610758611b81565b60208082526024908201527f7a65726f2061646472657373207472616e73666572206973206e6f7420616c6c6040820152631bddd95960e21b606082015260800190565b600082611d5e57634e487b7160e01b600052601260045260246000fd5b500490565b600080600060608486031215611d7857600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611df75784516001600160a01b031683529383019391830191600101611dd2565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212208d6a8638a76bbd781beaa0ba68f009b3312deaa25ba0608c5db808e931f9e23764736f6c63430008130033

Deployed ByteCode Sourcemap

4556:11876:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16229:79;;;;;;;;;;-1:-1:-1;16301:4:0;;;;;;;;;;;;-1:-1:-1;;;16301:4:0;;;;16229:79;;;;;;;:::i;:::-;;;;;;;;8578:152;;;;;;;;;;-1:-1:-1;8578:152:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8578:152:0;1023:187:1;15680:86:0;;;;;;;;;;-1:-1:-1;15680:86:0;;;;;:::i;:::-;;:::i;:::-;;5532:25;;;;;;;;;;-1:-1:-1;5532:25:0;;;;-1:-1:-1;;;;;5532:25:0;;;;;;-1:-1:-1;;;;;1729:32:1;;;1711:51;;1699:2;1684:18;5532:25:0;1565:203:1;15284:86:0;;;;;;;;;;;;;:::i;:::-;;;1919:25:1;;;1907:2;1892:18;15284:86:0;1773:177:1;8149:302:0;;;;;;;;;;-1:-1:-1;8149:302:0;;;;;:::i;:::-;;:::i;13744:224::-;;;;;;;;;;;;;:::i;16017:117::-;;;;;;;;;;;;;:::i;:::-;;;2588:4:1;2576:17;;;2558:36;;2546:2;2531:18;16017:117:0;2416:184:1;13974:206:0;;;;;;;;;;-1:-1:-1;13974:206:0;;;;;:::i;:::-;;:::i;4896:29::-;;;;;;;;;;-1:-1:-1;4896:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2850:4:1;2838:17;;;2820:36;;2892:17;;;2887:2;2872:18;;2865:45;2946:17;;;2926:18;;;2919:45;;;;3000:17;;;2995:2;2980:18;;2973:45;2807:3;2792:19;4896:29:0;2605:419:1;14408:329:0;;;;;;;;;;-1:-1:-1;14408:329:0;;;;;:::i;:::-;;:::i;15895:115::-;;;;;;;;;;;;;:::i;15772:117::-;;;;;;;;;;-1:-1:-1;15772:117:0;;;;;:::i;:::-;;:::i;14852:215::-;;;;;;;;;;-1:-1:-1;14852:215:0;;;;;:::i;:::-;;:::i;5231:28::-;;;;;;;;;;-1:-1:-1;5231:28:0;;;;;;;;;;;8459:113;;;;;;;;;;-1:-1:-1;8459:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;8548:18:0;8525:7;8548:18;;;:9;:18;;;;;;;8459:113;15123:153;;;;;;;;;;;;;:::i;5168:26::-;;;;;;;;;;-1:-1:-1;5168:26:0;;;;;;;;16314:80;;;;;;;;;;-1:-1:-1;16366:7:0;936:6;-1:-1:-1;;;;;936:6:0;16314:80;15284:86;7375:600;;;;;;;;;;-1:-1:-1;7375:600:0;;;;;:::i;:::-;;:::i;16140:83::-;;;;;;;;;;-1:-1:-1;16214:6:0;;;;;;;;;;;;-1:-1:-1;;;16214:6:0;;;;16140:83;;5496:31;;;;;;;;;;-1:-1:-1;5496:31:0;;;;-1:-1:-1;;;;;5496:31:0;;;14186:216;;;;;;;;;;-1:-1:-1;14186:216:0;;;;;:::i;:::-;;:::i;6833:331::-;;;;;;;;;;-1:-1:-1;6833:331:0;;;;;:::i;:::-;;:::i;15509:71::-;;;;;;;;;;-1:-1:-1;15571:6:0;;-1:-1:-1;;;;;15571:6:0;15509:71;;7985:158;;;;;;;;;;-1:-1:-1;7985:158:0;;;;;:::i;:::-;;:::i;7170:199::-;;;;;;;;;;-1:-1:-1;7170:199:0;;;;;:::i;:::-;;:::i;5200:25::-;;;;;;;;;;-1:-1:-1;5200:25:0;;;;;;;;;;;15376:127;;;;;;;;;;-1:-1:-1;15376:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;15474:17:0;;;15456:7;15474:17;;;:11;:17;;;;;;;;:26;;;;;;;;;;;;;15376:127;15586:88;;;;;;;;;;-1:-1:-1;15586:88:0;;;;;:::i;:::-;;:::i;4930:30::-;;;;;;;;;;-1:-1:-1;4930:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5597:37;;;;;;;;;;;;;;;;10014:131;;;;;;;;;;-1:-1:-1;10014:131:0;;;;;:::i;:::-;;:::i;5324:60::-;;;;;;;;;;;;;;;;5101:59;;;;;;;;;;-1:-1:-1;5101:59:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8578:152;8653:4;8666:40;193:10;8690:7;8699:6;8666:9;:40::i;:::-;-1:-1:-1;8720:4:0;8578:152;;;;;:::o;15680:86::-;998:6;;-1:-1:-1;;;;;998:6:0;193:10;998:22;990:67;;;;-1:-1:-1;;;990:67:0;;;;;;;:::i;:::-;;;;;;;;;15738:13:::1;:25:::0;;;::::1;;;;-1:-1:-1::0;;15738:25:0;;::::1;::::0;;;::::1;::::0;;15680:86::o;15284:::-;15337:7;4655:12;4796:2;4655;:12;:::i;:::-;4639:28;;:13;:28;:::i;:::-;15348:19;;15284:86;:::o;8149:302::-;8247:4;8260:37;8271:6;8279:9;8290:6;8260:10;:37::i;:::-;-1:-1:-1;;;;;8336:19:0;;;;;;:11;:19;;;;;;;;193:10;8336:33;;;;;;;;;8304:75;;8314:6;;8336:42;;8372:6;;8336:42;:::i;:::-;8304:9;:75::i;:::-;-1:-1:-1;8441:4:0;8149:302;;;;;:::o;13744:224::-;13847:4;13795:7;8548:18;;;:9;:18;;;;;;13874:19;;13864:7;:29;13860:60;;;13911:1;13904:8;;;13744:224;:::o;13860:60::-;13955:7;13933:19;;:29;;;;:::i;:::-;13926:36;;;13744:224;:::o;16017:117::-;16069:5;16082:13;:11;:13::i;:::-;16099:1;16082:18;16078:37;;16104:8;;;16078:37;-1:-1:-1;4796:2:0;;16017:117::o;13974:206::-;193:10;14062:4;14108:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14108:34:0;;;;;;;;;;14062:4;;14075:81;;14099:7;;14108:47;;14145:10;;14108:47;:::i;14408:329::-;998:6;;-1:-1:-1;;;;;998:6:0;193:10;998:22;990:67;;;;-1:-1:-1;;;990:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14486:27:0;::::1;14478:85;;;::::0;-1:-1:-1;;;14478:85:0;;7250:2:1;14478:85:0::1;::::0;::::1;7232:21:1::0;7289:2;7269:18;;;7262:30;7328:34;7308:18;;;7301:62;-1:-1:-1;;;7379:18:1;;;7372:43;7432:19;;14478:85:0::1;7048:409:1::0;14478:85:0::1;14570:8;:35:::0;;-1:-1:-1;;;;;;14570:35:0::1;-1:-1:-1::0;;;;;14570:35:0;::::1;::::0;;::::1;::::0;;;14632:18:::1;::::0;;-1:-1:-1;;;14632:18:0;;;;:16:::1;::::0;:18:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;14570:35;14632:18:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14621:41:0::1;;14671:4;14678:8;;;;;;;;;-1:-1:-1::0;;;;;14678:8:0::1;-1:-1:-1::0;;;;;14678:13:0::1;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14621:73;::::0;-1:-1:-1;;;;;;14621:73:0::1;::::0;;;;;;-1:-1:-1;;;;;7948:15:1;;;14621:73:0::1;::::0;::::1;7930:34:1::0;8000:15;;7980:18;;;7973:43;7865:18;;14621:73:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14612:6;:82:::0;;-1:-1:-1;;;;;;14612:82:0::1;-1:-1:-1::0;;;;;14612:82:0;;::::1;;::::0;;14706:25:::1;::::0;1729:32:1;;;1711:51;;14706:25:0::1;::::0;1699:2:1;1684:18;14706:25:0::1;;;;;;;;14408:329:::0;:::o;15895:115::-;15943:4;15995:12;;15980;:27;;;;:::i;:::-;15958:18;;:49;;15951:56;;15895:115;:::o;15772:117::-;998:6;;-1:-1:-1;;;;;998:6:0;193:10;998:22;990:67;;;;-1:-1:-1;;;990:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15846:32:0;;;::::1;;::::0;;;:26:::1;:32;::::0;;;;:40;;-1:-1:-1;;15846:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15772:117::o;14852:215::-;998:6;;-1:-1:-1;;;;;998:6:0;193:10;998:22;990:67;;;;-1:-1:-1;;;990:67:0;;;;;;;:::i;:::-;14949:1:::1;14937:9;:13;14929:58;;;::::0;-1:-1:-1;;;14929:58:0;;8229:2:1;14929:58:0::1;::::0;::::1;8211:21:1::0;;;8248:18;;;8241:30;8307:34;8287:18;;;8280:62;8359:18;;14929:58:0::1;8027:356:1::0;14929:58:0::1;14994:19;:31:::0;;;15037:24:::1;::::0;1919:25:1;;;15037:24:0::1;::::0;1907:2:1;1892:18;15037:24:0::1;1773:177:1::0;15123:153:0;998:6;;-1:-1:-1;;;;;998:6:0;193:10;998:22;990:67;;;;-1:-1:-1;;;990:67:0;;;;;;;:::i;:::-;15180:10:::1;::::0;15172:51:::1;::::0;-1:-1:-1;;;;;15180:10:0;;::::1;::::0;15201:21:::1;15172:51:::0;::::1;;;::::0;15180:10:::1;15172:51:::0;15180:10;15172:51;15201:21;15180:10;15172:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;15237:33:0::1;::::0;15248:21:::1;1919:25:1::0;;15237:33:0::1;::::0;1907:2:1;1892:18;15237:33:0::1;;;;;;;15123:153::o:0;7375:600::-;998:6;;-1:-1:-1;;;;;998:6:0;193:10;998:22;990:67;;;;-1:-1:-1;;;990:67:0;;;;;;;:::i;:::-;7489:15:::1;7533:4:::0;7507:23:::1;7520:10:::0;7507;:23:::1;:::i;:::-;:30;;;;:::i;:::-;7489:48;;7565:2;7552:9;:15;;;;7544:39;;;::::0;-1:-1:-1;;;7544:39:0;;8743:2:1;7544:39:0::1;::::0;::::1;8725:21:1::0;8782:2;8762:18;;;8755:30;-1:-1:-1;;;8801:18:1;;;8794:41;8852:18;;7544:39:0::1;8541:335:1::0;7544:39:0::1;7597:10;7594:308;;;7611:11;:35:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;7649:35:0;;;;;;;7611::::1;7649::::0;;::::1;;;-1:-1:-1::0;;7712:33:0;7687:23;;;::::1;;-1:-1:-1::0;;7712:33:0;;;;;::::1;::::0;;;::::1;;::::0;;7594:308:::1;;;7764:12;:36:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;7802:36:0;;;;;;;7764::::1;7802::::0;;::::1;;;-1:-1:-1::0;;7866:34:0;7840:24;;;::::1;;-1:-1:-1::0;;7866:34:0;;;;;::::1;::::0;;;::::1;;::::0;;7594:308:::1;7917:50;::::0;;9130:4:1;9118:17;;;9100:36;;9172:17;;;9167:2;9152:18;;9145:45;9226:17;;9206:18;;;9199:45;9287:14;;9280:22;9275:2;9260:18;;9253:50;7917::0;;::::1;::::0;;;;9087:3:1;7917:50:0;;::::1;7482:493;7375:600:::0;;;;:::o;14186:216::-;193:10;14279:4;14325:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14325:34:0;;;;;;;;;;14279:4;;14292:86;;14316:7;;14325:52;;14362:15;;14325:52;:::i;6833:331::-;998:6;;-1:-1:-1;;;;;998:6:0;193:10;998:22;990:67;;;;-1:-1:-1;;;990:67:0;;;;;;;:::i;:::-;6907:16:::1;::::0;;;::::1;;;6906:17;6898:55;;;::::0;-1:-1:-1;;;6898:55:0;;9516:2:1;6898:55:0::1;::::0;::::1;9498:21:1::0;9555:2;9535:18;;;9528:30;9594:27;9574:18;;;9567:55;9639:18;;6898:55:0::1;9314:349:1::0;6898:55:0::1;6964:20;6979:4;6964:14;:20::i;:::-;6991:19;7005:4;6991:13;:19::i;:::-;7019:16;:23:::0;;-1:-1:-1;;7019:23:0::1;::::0;::::1;::::0;;7070:12:::1;7049:18;:33:::0;;;7089:12:::1;:28:::0;;;7131:27:::1;::::0;::::1;::::0;::::1;::::0;1919:25:1;;;1907:2;1892:18;;1773:177;7985:158:0;8063:4;8076:43;193:10;8101:9;8112:6;8076:10;:43::i;7170:199::-;998:6;;-1:-1:-1;;;;;998:6:0;193:10;998:22;990:67;;;;-1:-1:-1;;;990:67:0;;;;;;;:::i;:::-;7256:16:::1;:29:::0;;-1:-1:-1;;;;;7256:29:0;;::::1;-1:-1:-1::0;;;;;;7256:29:0;;::::1;::::0;::::1;::::0;;;7296:10:::1;:17:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;7329:32:::1;::::0;;7930:34:1;;;7995:2;7980:18;;7973:43;;;;7329:32:0::1;::::0;7865:18:1;7329:32:0::1;;;;;;;7170:199:::0;;:::o;15586:88::-;998:6;;-1:-1:-1;;;;;998:6:0;193:10;998:22;990:67;;;;-1:-1:-1;;;990:67:0;;;;;;;:::i;:::-;15645:14:::1;:26:::0;;-1:-1:-1;;15645:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15586:88::o;10014:131::-;998:6;;-1:-1:-1;;;;;998:6:0;193:10;998:22;990:67;;;;-1:-1:-1;;;990:67:0;;;;;;;:::i;:::-;10082:25:::1;10094:12;10082:11;:25::i;:::-;10119:20;::::0;1919:25:1;;;10119:20:0::1;::::0;1907:2:1;1892:18;10119:20:0::1;1773:177:1::0;12090:320:0;-1:-1:-1;;;;;12180:19:0;;12172:68;;;;-1:-1:-1;;;12172:68:0;;9870:2:1;12172:68:0;;;9852:21:1;9909:2;9889:18;;;9882:30;9948:34;9928:18;;;9921:62;-1:-1:-1;;;9999:18:1;;;9992:34;10043:19;;12172:68:0;9668:400:1;12172:68:0;-1:-1:-1;;;;;12255:21:0;;12247:68;;;;-1:-1:-1;;;12247:68:0;;10275:2:1;12247:68:0;;;10257:21:1;10314:2;10294:18;;;10287:30;10353:34;10333:18;;;10326:62;-1:-1:-1;;;10404:18:1;;;10397:32;10446:19;;12247:68:0;10073:398:1;12247:68:0;-1:-1:-1;;;;;12324:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12372:32;;1919:25:1;;;12372:32:0;;1892:18:1;12372:32:0;;;;;;;12090:320;;;:::o;8738:751::-;-1:-1:-1;;;;;8841:20:0;;8833:69;;;;-1:-1:-1;;;8833:69:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8917:23:0;;8909:72;;;;-1:-1:-1;;;8909:72:0;;;;;;;:::i;:::-;9005:1;8996:6;:10;8988:55;;;;-1:-1:-1;;;8988:55:0;;11083:2:1;8988:55:0;;;11065:21:1;;;11102:18;;;11095:30;11161:34;11141:18;;;11134:62;11213:18;;8988:55:0;10881:356:1;8988:55:0;9056:16;;;;;;;9052:88;;-1:-1:-1;;;;;9085:34:0;;;;;;:26;:34;;;;;;;;9077:60;;;;-1:-1:-1;;;9077:60:0;;11444:2:1;9077:60:0;;;11426:21:1;11483:2;11463:18;;;11456:30;-1:-1:-1;;;11502:18:1;;;11495:43;11555:18;;9077:60:0;11242:337:1;9077:60:0;9149:14;;;;9146:58;;;9166:35;9183:6;9191:9;9166:16;:35::i;:::-;9212:15;9230:35;9247:6;9255:9;9230:16;:35::i;:::-;9212:53;-1:-1:-1;9272:17:0;9311:3;9292:16;9212:53;9292:6;:16;:::i;:::-;:22;;;;:::i;:::-;9272:42;-1:-1:-1;9321:22:0;9346:18;9272:42;9346:6;:18;:::i;:::-;9321:43;;9373:52;9388:6;9396:9;9407:6;9415:9;9373:14;:52::i;:::-;9456:9;-1:-1:-1;;;;;9439:43:0;9448:6;-1:-1:-1;;;;;9439:43:0;;9467:14;9439:43;;;;1919:25:1;;1907:2;1892:18;;1773:177;9439:43:0;;;;;;;;8826:663;;;8738:751;;;:::o;10153:1397::-;10299:8;;10266:51;;10284:4;;-1:-1:-1;;;;;10299:8:0;10310:6;10266:9;:51::i;:::-;10340:12;:22;;;;;;;;10324:13;;10340:22;;10408:32;;10417:23;10408:6;:32;:::i;:::-;:40;;;;:::i;:::-;10495:12;:17;10371:77;;-1:-1:-1;10455:28:0;;10515:5;;10486:26;;10495:17;;;;;10486:6;:26;:::i;:::-;:34;;;;:::i;:::-;10455:65;-1:-1:-1;10528:34:0;10455:65;10565:35;10574:26;10565:6;:35;:::i;:::-;:58;;;;:::i;:::-;10528:95;-1:-1:-1;10632:32:0;10667:30;10696:1;10667:26;:30;:::i;:::-;10632:65;-1:-1:-1;10632:65:0;10704:30;10849:20;10793:53;10820:26;10632:65;10793:53;:::i;:::-;:76;;;;:::i;:::-;10770:99;;10876:18;10897:30;10914:12;10897:16;:30::i;:::-;10876:51;-1:-1:-1;10940:31:0;11014:12;10974:37;10987:24;10876:51;10974:37;:::i;:::-;:52;;;;:::i;:::-;10940:86;-1:-1:-1;11033:32:0;11104:12;11068:33;11081:20;11068:10;:33;:::i;:::-;:48;;;;:::i;:::-;11033:83;-1:-1:-1;11123:30:0;11033:83;11156:36;11169:23;11156:10;:36;:::i;:::-;:62;;;;:::i;:::-;11235:16;;11227:58;;11123:95;;-1:-1:-1;;;;;;11235:16:0;;11227:58;;;;;11123:95;;11235:16;11227:58;11235:16;11227:58;11123:95;11235:16;11227:58;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11300:10:0;;11292:54;;-1:-1:-1;;;;;11300:10:0;;;;11292:54;;;;;11321:24;;11300:10;11292:54;11300:10;11292:54;11321:24;11300:10;11292:54;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11359:8:0;;11461:10;;11359:130;;-1:-1:-1;;;11359:130:0;;11424:4;11359:130;;;12147:34:1;12197:18;;;12190:34;;;11359:8:0;12240:18:1;;;12233:34;;;12283:18;;;12276:34;-1:-1:-1;;;;;11461:10:0;;;12326:19:1;;;12319:44;11473:15:0;12379:19:1;;;12372:35;11359:8:0;;;:24;;11391:23;;12081:19:1;;11359:130:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11359:130:0;;;;;;;;-1:-1:-1;;11359:130:0;;;;;;;;;;;;:::i;:::-;;;11355:145;;;;;;;11517:27;;1919:25:1;;;11517:27:0;;1907:2:1;1892:18;11517:27:0;;;;;;;10198:1352;;;;;;;;;;;10153:1397;:::o;9497:465::-;9578:35;9595:6;9603:9;9578:16;:35::i;:::-;9573:65;;9497:465;;:::o;9573:65::-;9697:4;9646:30;8548:18;;;:9;:18;;;;;;9740:19;;9714:45;;9710:247;;-1:-1:-1;9795:19:0;;14826:6;;-1:-1:-1;;;;;14826:14:0;;;:6;;:14;9879:71;;;;9905:35;9917:22;9905:11;:35::i;:::-;9761:196;9710:247;9566:396;9497:465;;:::o;12416:521::-;12531:13;;12498:7;;;;12531:13;;;;;:52;;;;-1:-1:-1;;;;;;12549:34:0;;;;;;:26;:34;;;;;;;;12548:35;12531:52;:94;;;;-1:-1:-1;;;;;;12588:37:0;;;;;;:26;:37;;;;;;;;12587:38;12531:94;12514:111;;12636:9;12632:285;;;14826:6;;-1:-1:-1;;;;;14826:14:0;;;:6;;:14;12656:254;;-1:-1:-1;;12708:12:0;:22;;;;;;12701:29;;12656:254;12762:17;:15;:17::i;:::-;12759:136;;;12806:2;12799:9;;;;;12759:136;-1:-1:-1;;12856:11:0;:21;;;;;;12849:28;;12759:136;-1:-1:-1;12930:1:0;;12416:521;-1:-1:-1;;;12416:521:0:o;11556:528::-;11722:22;11747;11760:9;11747:10;:22;:::i;:::-;-1:-1:-1;;;;;11802:17:0;;;;;;:9;:17;;;;;:31;;11722:47;;-1:-1:-1;11823:10:0;;11802:17;;;:31;;11823:10;;11802:31;:::i;:::-;;;;-1:-1:-1;;;;;;;11840:20:0;;;;;;:9;:20;;;;;:38;;11864:14;;11840:20;:38;;11864:14;;11840:38;:::i;:::-;;;;-1:-1:-1;;11938:4:0;11920:24;;;;:9;:24;;;;;:37;;11948:9;;11920:24;:37;;11948:9;;11920:37;:::i;:::-;;;;-1:-1:-1;;11995:13:0;;11992:83;;12024:42;;1919:25:1;;;12049:4:0;;-1:-1:-1;;;;;12024:42:0;;;;;1907:2:1;1892:18;12024:42:0;;;;;;;11992:83;11662:422;11556:528;;;;:::o;12945:420::-;13106:16;;;13120:1;13106:16;;;;;;;;13009:7;;13050:21;;13009:7;;13106:16;;;;;;;;;;;;-1:-1:-1;13106:16:0;13082:40;;13147:4;13129;13134:1;13129:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13129:23:0;;;:7;;;;;;;;;;:23;;;;13169:8;;:15;;;-1:-1:-1;;;13169:15:0;;;;:8;;;;;:13;;:15;;;;;13129:7;;13169:15;;;;;:8;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13159:4;13164:1;13159:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13159:25:0;;;:7;;;;;;;;;:25;13191:8;;:113;;-1:-1:-1;;;13191:113:0;;:8;;;:59;;:113;;13251:11;;13191:8;;13267:4;;13281;;13288:15;;13191:113;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13345:14;13321:21;:38;;;;:::i;:::-;13314:45;12945:420;-1:-1:-1;;;;12945:420:0:o;13587:151::-;13678:4;13699:33;13714:6;13722:9;13699:14;:33::i;:::-;13698:34;;13587:151;-1:-1:-1;;;13587:151:0:o;13371:210::-;13451:4;;-1:-1:-1;;;;;13489:23:0;;13507:4;13489:23;:55;;;;-1:-1:-1;14826:6:0;;-1:-1:-1;;;;;14826:14:0;;;:6;;:14;13464:80;13371:210;-1:-1:-1;;;;13371:210:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:160::-;1280:20;;1336:13;;1329:21;1319:32;;1309:60;;1365:1;1362;1355:12;1309:60;1215:160;;;:::o;1380:180::-;1436:6;1489:2;1477:9;1468:7;1464:23;1460:32;1457:52;;;1505:1;1502;1495:12;1457:52;1528:26;1544:9;1528:26;:::i;:::-;1518:36;1380:180;-1:-1:-1;;;1380:180:1:o;1955:456::-;2032:6;2040;2048;2101:2;2089:9;2080:7;2076:23;2072:32;2069:52;;;2117:1;2114;2107:12;2069:52;2156:9;2143:23;2175:31;2200:5;2175:31;:::i;:::-;2225:5;-1:-1:-1;2282:2:1;2267:18;;2254:32;2295:33;2254:32;2295:33;:::i;:::-;1955:456;;2347:7;;-1:-1:-1;;;2401:2:1;2386:18;;;;2373:32;;1955:456::o;3029:247::-;3088:6;3141:2;3129:9;3120:7;3116:23;3112:32;3109:52;;;3157:1;3154;3147:12;3109:52;3196:9;3183:23;3215:31;3240:5;3215:31;:::i;3281:315::-;3346:6;3354;3407:2;3395:9;3386:7;3382:23;3378:32;3375:52;;;3423:1;3420;3413:12;3375:52;3462:9;3449:23;3481:31;3506:5;3481:31;:::i;:::-;3531:5;-1:-1:-1;3555:35:1;3586:2;3571:18;;3555:35;:::i;:::-;3545:45;;3281:315;;;;;:::o;3601:180::-;3660:6;3713:2;3701:9;3692:7;3688:23;3684:32;3681:52;;;3729:1;3726;3719:12;3681:52;-1:-1:-1;3752:23:1;;3601:180;-1:-1:-1;3601:180:1:o;3786:156::-;3852:20;;3912:4;3901:16;;3891:27;;3881:55;;3932:1;3929;3922:12;3947:391;4024:6;4032;4040;4048;4101:3;4089:9;4080:7;4076:23;4072:33;4069:53;;;4118:1;4115;4108:12;4069:53;4141:27;4158:9;4141:27;:::i;:::-;4131:37;;4187:36;4219:2;4208:9;4204:18;4187:36;:::i;:::-;4177:46;;4242:36;4274:2;4263:9;4259:18;4242:36;:::i;:::-;4232:46;;4297:35;4328:2;4317:9;4313:18;4297:35;:::i;:::-;4287:45;;3947:391;;;;;;;:::o;4343:388::-;4411:6;4419;4472:2;4460:9;4451:7;4447:23;4443:32;4440:52;;;4488:1;4485;4478:12;4440:52;4527:9;4514:23;4546:31;4571:5;4546:31;:::i;:::-;4596:5;-1:-1:-1;4653:2:1;4638:18;;4625:32;4666:33;4625:32;4666:33;:::i;:::-;4718:7;4708:17;;;4343:388;;;;;:::o;4736:356::-;4938:2;4920:21;;;4957:18;;;4950:30;5016:34;5011:2;4996:18;;4989:62;5083:2;5068:18;;4736:356::o;5097:127::-;5158:10;5153:3;5149:20;5146:1;5139:31;5189:4;5186:1;5179:15;5213:4;5210:1;5203:15;5229:422;5318:1;5361:5;5318:1;5375:270;5396:7;5386:8;5383:21;5375:270;;;5455:4;5451:1;5447:6;5443:17;5437:4;5434:27;5431:53;;;5464:18;;:::i;:::-;5514:7;5504:8;5500:22;5497:55;;;5534:16;;;;5497:55;5613:22;;;;5573:15;;;;5375:270;;;5379:3;5229:422;;;;;:::o;5656:806::-;5705:5;5735:8;5725:80;;-1:-1:-1;5776:1:1;5790:5;;5725:80;5824:4;5814:76;;-1:-1:-1;5861:1:1;5875:5;;5814:76;5906:4;5924:1;5919:59;;;;5992:1;5987:130;;;;5899:218;;5919:59;5949:1;5940:10;;5963:5;;;5987:130;6024:3;6014:8;6011:17;6008:43;;;6031:18;;:::i;:::-;-1:-1:-1;;6087:1:1;6073:16;;6102:5;;5899:218;;6201:2;6191:8;6188:16;6182:3;6176:4;6173:13;6169:36;6163:2;6153:8;6150:16;6145:2;6139:4;6136:12;6132:35;6129:77;6126:159;;;-1:-1:-1;6238:19:1;;;6270:5;;6126:159;6317:34;6342:8;6336:4;6317:34;:::i;:::-;6387:6;6383:1;6379:6;6375:19;6366:7;6363:32;6360:58;;;6398:18;;:::i;:::-;6436:20;;5656:806;-1:-1:-1;;;5656:806:1:o;6467:140::-;6525:5;6554:47;6595:4;6585:8;6581:19;6575:4;6554:47;:::i;6612:168::-;6685:9;;;6716;;6733:15;;;6727:22;;6713:37;6703:71;;6754:18;;:::i;6785:128::-;6852:9;;;6873:11;;;6870:37;;;6887:18;;:::i;6918:125::-;6983:9;;;7004:10;;;7001:36;;;7017:18;;:::i;7462:251::-;7532:6;7585:2;7573:9;7564:7;7560:23;7556:32;7553:52;;;7601:1;7598;7591:12;7553:52;7633:9;7627:16;7652:31;7677:5;7652:31;:::i;8388:148::-;8476:4;8455:12;;;8469;;;8451:31;;8494:13;;8491:39;;;8510:18;;:::i;10476:400::-;10678:2;10660:21;;;10717:2;10697:18;;;10690:30;10756:34;10751:2;10736:18;;10729:62;-1:-1:-1;;;10822:2:1;10807:18;;10800:34;10866:3;10851:19;;10476:400::o;11584:217::-;11624:1;11650;11640:132;;11694:10;11689:3;11685:20;11682:1;11675:31;11729:4;11726:1;11719:15;11757:4;11754:1;11747:15;11640:132;-1:-1:-1;11786:9:1;;11584:217::o;12418:306::-;12506:6;12514;12522;12575:2;12563:9;12554:7;12550:23;12546:32;12543:52;;;12591:1;12588;12581:12;12543:52;12620:9;12614:16;12604:26;;12670:2;12659:9;12655:18;12649:25;12639:35;;12714:2;12703:9;12699:18;12693:25;12683:35;;12418:306;;;;;:::o;12861:127::-;12922:10;12917:3;12913:20;12910:1;12903:31;12953:4;12950:1;12943:15;12977:4;12974:1;12967:15;12993:980;13255:4;13303:3;13292:9;13288:19;13334:6;13323:9;13316:25;13360:2;13398:6;13393:2;13382:9;13378:18;13371:34;13441:3;13436:2;13425:9;13421:18;13414:31;13465:6;13500;13494:13;13531:6;13523;13516:22;13569:3;13558:9;13554:19;13547:26;;13608:2;13600:6;13596:15;13582:29;;13629:1;13639:195;13653:6;13650:1;13647:13;13639:195;;;13718:13;;-1:-1:-1;;;;;13714:39:1;13702:52;;13809:15;;;;13774:12;;;;13750:1;13668:9;13639:195;;;-1:-1:-1;;;;;;;13890:32:1;;;;13885:2;13870:18;;13863:60;-1:-1:-1;;;13954:3:1;13939:19;13932:35;13851:3;12993:980;-1:-1:-1;;;12993:980:1:o

Metadata Hash

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