Polygon Sponsored slots available. Book your slot here!
Contract Overview
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Source Code Verified (Exact Match)
Contract Name:
TDEX
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.8.0 <0.9.0; import "./TokenConfig.sol"; abstract contract ERC20 { string private _name; string private _symbol; uint8 private _decimals; /** * @dev Returns the name of the token. */ function name() public view virtual returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). */ function decimals() public view virtual returns (uint8) { return _decimals; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } function max(uint256 a, uint256 b) internal pure returns (uint256) { if (a >= b) return a; return b; } function min(uint256 a, uint256 b) internal pure returns (uint256) { require(a >=0 && b>=0, "SafeMath: Cannot have negative numbers"); if (a <= b) return a; return b; } } library TransferHelper { function safeApprove(address token, address to, uint value) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED'); } function safeTransfer(address token, address to, uint value) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED'); } function safeTransferFrom(address token, address from, address to, uint value) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED'); } function safeTransferETH(address to, uint value) internal { (bool success,) = to.call{value : value}(new bytes(0)); require(success, 'TransferHelper: ETH_TRANSFER_FAILED'); } } struct Dish { uint256 price; uint256 number; } enum OrderType { Buy, Sell } enum OrderStatus { None, Waiting, Finished, Cancelled } struct Order { uint256 orderId; uint256 price; uint256 tokenTotal; uint256 tokenSurplus; uint256 tokenFee; uint256 usdtSurplus; uint256 usdtFee; uint256 createnTime; uint256 endTime; OrderType orderType; OrderStatus status; address sender; } struct Match { uint256 matchId; uint256 buyOrderId; uint256 sellOrderId; uint256 price; uint256 tokenDeal; uint256 usdtDeal; uint256 tokenFee; uint256 usdtFee; uint256 time; } interface OrderInterface { function getOrder(address _tokenContract, uint256 _orderId) external view returns (Order memory); function getMatch(address _tokenContract, uint256 _matchId) external view returns (Match memory); function getPrice(address _tokenContract) external view returns (uint256 price); function getLastMatchId(address _tokenContract) external view returns (uint256 matchId); function getLastOrderId(address _tokenContract) external view returns (uint256 orderId); function getBuyOrderPriceListLength(address _tokenContract) external view returns (uint); function getBuyOrderPriceList(address _tokenContract, uint256 start, uint256 end) external view returns (uint256[] memory); function getBuyOrderPriceListPublished(address _tokenContract, uint count) external view returns (uint256[] memory); function getBuyOrderPriceOrderIdList(address _tokenContract, uint256 _price) external view returns (uint256[] memory); function getSellOrderPriceListLength(address _tokenContract) external view returns (uint); function getSellOrderPriceList(address _tokenContract, uint256 start, uint256 end) external view returns (uint256[] memory); function getSellOrderPriceListPublished(address _tokenContract, uint count) external view returns (uint256[] memory); function getBuyOrderPriceTokenNumber(address _tokenContract, uint256 _price) external view returns (uint256); function getSellOrderPriceTokenNumber(address _tokenContract, uint256 _price) external view returns (uint256); function getSellOrderPriceOrderIdList(address _tokenContract, uint256 _price) external view returns (uint256[] memory); function getOrderMatching(address _tokenContract, uint256 _orderId) external view returns (uint256[] memory); function getOrderUnmatchedListLength(address _tokenContract, address _sender) external view returns (uint); function getOrderFinishedListLength(address _tokenContract, address _sender) external view returns (uint); function getOrderUnmatchedList(address _tokenContract, address _sender, uint256 start, uint256 end) external view returns (uint256[] memory); function getOrderFinishedList(address _tokenContract, address _sender, uint256 start, uint256 end) external view returns (uint256[] memory); } interface DexInterface { function createOrder(address _tokenContract, address _sender, uint256 _price, uint256 _token, uint256 _usdt, uint8 _type) external returns (uint256); function removeOrder(address _tokenContract, uint256 _orderId, address _sender) external returns (bool); function orderManager() external view returns (address); function books() external view returns (address); } interface TokenInterface { function getToken(address _tokenContract) external view returns (Token memory token); function getTokenMapLength() external view returns (uint length); function getTokenAddressList(uint256 start, uint256 end) external view returns (address[] memory list); } interface __tdexDelegate { function __buy(address __tokenContract, address __sender) external; function __sell(address __tokenContract, address __sender) external; } /** * @title Storage * @dev Store & retrieve value in a variable */ contract TDEX { address private _owner; address private _dexInterface = address(0); address private _tokenManager = address(0); address private _delegate = address(0); Token private USDT; Token private ETH; event CreateOrder(address indexed tokenContract, uint256 indexed orderId, address sender, OrderType ordertType, uint256 price, uint256 value); event CancelOrder(address indexed tokenContract, uint256 indexed orderId, address sender); constructor () { _owner = msg.sender; USDT = T.USDT(); ETH = T.ETH(); } modifier onlyOwner() { require(_owner == msg.sender, "Ownable: caller is not the owner"); _; } function init(address __dexInterface) external onlyOwner { require(_dexInterface == address(0), "Can only be assigned once"); _dexInterface = __dexInterface; } function setTokenManager(address ___tokenManager) external onlyOwner { _tokenManager = ___tokenManager; } function setDelegate(address __delegate) external onlyOwner { _delegate = __delegate; } function getToken(address _tokenContract) external view returns ( address tokenContract, string memory symbol, string memory name, uint decimals) { Token memory token = TokenInterface(_tokenManager).getToken(_tokenContract); tokenContract = token.tokenContract; symbol = token.symbol; name = token.name; decimals = token.decimals; } function getTokenAddressListLength() external view returns (uint length) { return TokenInterface(_tokenManager).getTokenMapLength(); } function getTokenAddressList(uint256 start, uint256 end) external view returns (address[] memory list) { return TokenInterface(_tokenManager).getTokenAddressList(start, end); } /**********************************************************/ function _buy(address _tokenContract, uint256 _price, uint256 _token_amount, address _sender) internal returns (uint256) { if (_delegate != address(0)) __tdexDelegate(_delegate).__buy(_tokenContract, _sender); require(_token_amount > 0, "The quantity cannot be 0"); Token memory token = TokenInterface(_tokenManager).getToken(_tokenContract); require(token.decimals > 0, "This contract address is not supported"); require(_price > 0, "No, no price"); uint256 _usdt_amount = SafeMath.div(SafeMath.mul(_token_amount, _price), PDEC); require(_usdt_amount <= 100000 * 10 ** USDT.decimals, "Maximum single transaction amount 100000 USDT"); TransferHelper.safeTransferFrom(USDT.tokenContract, _sender, _dexInterface, _usdt_amount); uint256 orderId = DexInterface(_dexInterface).createOrder(_tokenContract, _sender, _price, _token_amount, _usdt_amount, 0); emit CreateOrder(_tokenContract, orderId, _sender, OrderType.Buy, _price, _token_amount); return orderId; } function Buy(address _tokenContract, uint256 _price, uint256 _token_amount) external returns (uint256 orderId) { require(_tokenContract != ETH.tokenContract, "Does not support ETH"); return _buy(_tokenContract, _price, _token_amount, msg.sender); } function BuyETH(uint256 _price, uint256 _token_amount) external returns (uint256 orderId) { return _buy(ETH.tokenContract, _price, _token_amount, msg.sender); } function _sell(address _tokenContract, uint256 _price, uint256 _token_amount, address _sender) internal returns (uint256) { if (_delegate != address(0)) __tdexDelegate(_delegate).__sell(_tokenContract, _sender); require(_token_amount > 0, "The quantity cannot be 0"); Token memory token = TokenInterface(_tokenManager).getToken(_tokenContract); require(token.decimals > 0, "This contract address is not supported"); require(_price > 0, "No, no price"); uint256 _usdt_amount = SafeMath.div(SafeMath.mul(_token_amount, _price), PDEC); require(_usdt_amount <= 100000 * 10 ** USDT.decimals, "Maximum single transaction amount 100000 USDT"); if (_tokenContract == ETH.tokenContract) { TransferHelper.safeTransferETH(_dexInterface, _token_amount); } else { TransferHelper.safeTransferFrom(_tokenContract, _sender, _dexInterface, _token_amount); } uint256 orderId = DexInterface(_dexInterface).createOrder(_tokenContract, _sender, _price, _token_amount, _usdt_amount, 1); emit CreateOrder(_tokenContract, orderId, _sender, OrderType.Sell, _price, _token_amount); return orderId; } function Sell(address _tokenContract, uint256 _price, uint256 _token_amount) external returns (uint256 orderId) { require(_tokenContract != ETH.tokenContract, "Does not support ETH"); return _sell(_tokenContract, _price, _token_amount, msg.sender); } function SellETH(uint256 _price) external payable returns (uint256 orderId) { return _sell(ETH.tokenContract, _price, msg.value, msg.sender); } function Cancel(address _tokenContract, uint256 _orderId) external returns (bool) { Token memory token = TokenInterface(_tokenManager).getToken(_tokenContract); require(token.decimals > 0, "This contract address is not supported"); bool result = DexInterface(_dexInterface).removeOrder(_tokenContract, _orderId, msg.sender); emit CancelOrder(_tokenContract, _orderId, msg.sender); return result; } function CancelRoot(address _tokenContract, uint256 _orderId, address _sender) external onlyOwner returns (bool) { Token memory token = TokenInterface(_tokenManager).getToken(_tokenContract); require(token.decimals > 0, "This contract address is not supported"); bool result = DexInterface(_dexInterface).removeOrder(_tokenContract, _orderId, _sender); emit CancelOrder(_tokenContract, _orderId, _sender); return result; } /**********************************************************/ function balanceOf(address _tokenContract, address _sender) external view returns (uint256) { uint256 balance; if (_tokenContract == ETH.tokenContract) { balance = _sender.balance; } else { balance = IERC20(_tokenContract).balanceOf(_sender); } return balance; } function getOrderManager() internal view returns (OrderInterface) { return OrderInterface(DexInterface(_dexInterface).orderManager()); } function getPrice(address _tokenContract) external view returns (uint256 price) { return getOrderManager().getPrice(_tokenContract); } function getLastMatchId(address _tokenContract) external view returns (uint256 matchId) { return getOrderManager().getLastMatchId(_tokenContract); } function getLastOrderId(address _tokenContract) external view returns (uint256 orderId) { return getOrderManager().getLastOrderId(_tokenContract); } function getOrder(address _tokenContract, uint256 _orderId) external view returns ( uint256 price, uint256 tokenTotal, uint256 tokenSurplus, uint256 tokenFee, uint256 usdtSurplus, uint256 usdtFee, uint256 createnTime, uint256 endTime, uint8 orderType, uint8 status, address sender ) { Order memory order = getOrderManager().getOrder(_tokenContract, _orderId); price = order.price; tokenTotal = order.tokenTotal; tokenSurplus = order.tokenSurplus; tokenFee = order.tokenFee; usdtSurplus = order.usdtSurplus; usdtFee = order.usdtFee; createnTime = order.createnTime; endTime = order.endTime; orderType = uint8(order.orderType); status = uint8(order.status); sender = order.sender; } function getMatch(address _tokenContract, uint256 _matchId) external view returns ( uint256 matchId, uint256 buyOrderId, uint256 sellOrderId, uint256 price, uint256 tokenDeal, uint256 usdtDeal, uint256 tokenFee, uint256 usdtFee, uint256 time ) { Match memory _match = getOrderManager().getMatch(_tokenContract, _matchId); matchId = _match.matchId; buyOrderId = _match.buyOrderId; sellOrderId = _match.sellOrderId; price = _match.price; tokenDeal = _match.tokenDeal; usdtDeal = _match.usdtDeal; tokenFee = _match.tokenFee; usdtFee = _match.usdtFee; time = _match.time; } function getBuyOrderPriceListLength(address _tokenContract) external view returns (uint length) { return getOrderManager().getBuyOrderPriceListLength(_tokenContract); } function getBuyOrderPriceList(address _tokenContract, uint256 start, uint256 end) external view returns (uint256[] memory list) { return getOrderManager().getBuyOrderPriceList(_tokenContract, start, end); } function getBuyOrderPriceTokenNumber(address _tokenContract, uint256 _price) external view returns (uint256 number) { return getOrderManager().getBuyOrderPriceTokenNumber(_tokenContract, _price); } function getBuyOrderPriceListPublished(address _tokenContract, uint count) external view returns (uint256[] memory list) { return getOrderManager().getBuyOrderPriceListPublished(_tokenContract, count); } function getBuyOrderPublished(address _tokenContract, uint count) external view returns (Dish[] memory list) { OrderInterface orderManager = getOrderManager(); uint256[] memory priceList = orderManager.getBuyOrderPriceListPublished(_tokenContract, count); list = new Dish[](count); for (uint i=0; i<count; i++) { uint256 price = priceList[i]; uint256 number = orderManager.getBuyOrderPriceTokenNumber(_tokenContract, price); list[i] = Dish(price, number); } } function getBuyOrderPriceOrderIdList(address _tokenContract, uint256 _price) external view returns (uint256[] memory list) { return getOrderManager().getBuyOrderPriceOrderIdList(_tokenContract, _price); } function getSellOrderPriceListLength(address _tokenContract) external view returns (uint length) { return getOrderManager().getSellOrderPriceListLength(_tokenContract); } function getSellOrderPriceList(address _tokenContract, uint256 start, uint256 end) external view returns (uint256[] memory list) { return getOrderManager().getSellOrderPriceList(_tokenContract, start, end); } function getSellOrderPriceTokenNumber(address _tokenContract, uint256 _price) external view returns (uint256 number) { return getOrderManager().getSellOrderPriceTokenNumber(_tokenContract, _price); } function getSellOrderPriceListPublished(address _tokenContract, uint count) external view returns (uint256[] memory list) { return getOrderManager().getSellOrderPriceListPublished(_tokenContract, count); } function getSellOrderPublished(address _tokenContract, uint count) external view returns (Dish[] memory list) { OrderInterface orderManager = getOrderManager(); uint256[] memory priceList = orderManager.getSellOrderPriceListPublished(_tokenContract, count); list = new Dish[](count); for (uint i=0; i<count; i++) { uint256 price = priceList[i]; uint256 number = orderManager.getSellOrderPriceTokenNumber(_tokenContract, price); list[i] = Dish(price, number); } } function getSellOrderPriceOrderIdList(address _tokenContract, uint256 _price) external view returns (uint256[] memory list) { return getOrderManager().getSellOrderPriceOrderIdList(_tokenContract, _price); } function getOrderMatching(address _tokenContract, uint256 _orderId) external view returns (uint256[] memory matchingList) { return getOrderManager().getOrderMatching(_tokenContract, _orderId); } function getOrderUnmatchedListLength(address _tokenContract, address _sender) external view returns (uint length) { return getOrderManager().getOrderUnmatchedListLength(_tokenContract, _sender); } function getOrderFinishedListLength(address _tokenContract, address _sender) external view returns (uint length) { return getOrderManager().getOrderFinishedListLength(_tokenContract, _sender); } function getOrderUnmatchedList(address _tokenContract, address _sender, uint256 start, uint256 end) external view returns (uint256[] memory list) { return getOrderManager().getOrderUnmatchedList(_tokenContract, _sender, start, end); } function getOrderFinishedList(address _tokenContract, address _sender, uint256 start, uint256 end) external view returns (uint256[] memory list) { return getOrderManager().getOrderFinishedList(_tokenContract, _sender, start, end); } }
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.8.0 <0.9.0; uint256 constant PDEC = 1e30; struct Token { address tokenContract; string symbol; string name; uint decimals; } library T { function USDT() internal pure returns (Token memory) { return Token({ symbol: "USDT", name: "Tether USD", tokenContract: 0xc2132D05D31c914a87C6611C10748AEb04B58e8F, decimals: 6 }); } function ETH() internal pure returns (Token memory) { return Token({ symbol: "MATIC", name: "Matic Token", tokenContract: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE, decimals: 18 }); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenContract","type":"address"},{"indexed":true,"internalType":"uint256","name":"orderId","type":"uint256"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"CancelOrder","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenContract","type":"address"},{"indexed":true,"internalType":"uint256","name":"orderId","type":"uint256"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"enum OrderType","name":"ordertType","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"CreateOrder","type":"event"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_token_amount","type":"uint256"}],"name":"Buy","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_token_amount","type":"uint256"}],"name":"BuyETH","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_orderId","type":"uint256"}],"name":"Cancel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_orderId","type":"uint256"},{"internalType":"address","name":"_sender","type":"address"}],"name":"CancelRoot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_token_amount","type":"uint256"}],"name":"Sell","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"SellETH","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"address","name":"_sender","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"getBuyOrderPriceList","outputs":[{"internalType":"uint256[]","name":"list","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"getBuyOrderPriceListLength","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"getBuyOrderPriceListPublished","outputs":[{"internalType":"uint256[]","name":"list","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"getBuyOrderPriceOrderIdList","outputs":[{"internalType":"uint256[]","name":"list","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"getBuyOrderPriceTokenNumber","outputs":[{"internalType":"uint256","name":"number","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"getBuyOrderPublished","outputs":[{"components":[{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"number","type":"uint256"}],"internalType":"struct Dish[]","name":"list","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"getLastMatchId","outputs":[{"internalType":"uint256","name":"matchId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"getLastOrderId","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_matchId","type":"uint256"}],"name":"getMatch","outputs":[{"internalType":"uint256","name":"matchId","type":"uint256"},{"internalType":"uint256","name":"buyOrderId","type":"uint256"},{"internalType":"uint256","name":"sellOrderId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenDeal","type":"uint256"},{"internalType":"uint256","name":"usdtDeal","type":"uint256"},{"internalType":"uint256","name":"tokenFee","type":"uint256"},{"internalType":"uint256","name":"usdtFee","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_orderId","type":"uint256"}],"name":"getOrder","outputs":[{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenTotal","type":"uint256"},{"internalType":"uint256","name":"tokenSurplus","type":"uint256"},{"internalType":"uint256","name":"tokenFee","type":"uint256"},{"internalType":"uint256","name":"usdtSurplus","type":"uint256"},{"internalType":"uint256","name":"usdtFee","type":"uint256"},{"internalType":"uint256","name":"createnTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint8","name":"orderType","type":"uint8"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"address","name":"sender","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"getOrderFinishedList","outputs":[{"internalType":"uint256[]","name":"list","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"address","name":"_sender","type":"address"}],"name":"getOrderFinishedListLength","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_orderId","type":"uint256"}],"name":"getOrderMatching","outputs":[{"internalType":"uint256[]","name":"matchingList","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"getOrderUnmatchedList","outputs":[{"internalType":"uint256[]","name":"list","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"address","name":"_sender","type":"address"}],"name":"getOrderUnmatchedListLength","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"getSellOrderPriceList","outputs":[{"internalType":"uint256[]","name":"list","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"getSellOrderPriceListLength","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"getSellOrderPriceListPublished","outputs":[{"internalType":"uint256[]","name":"list","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"getSellOrderPriceOrderIdList","outputs":[{"internalType":"uint256[]","name":"list","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"getSellOrderPriceTokenNumber","outputs":[{"internalType":"uint256","name":"number","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"getSellOrderPublished","outputs":[{"components":[{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"number","type":"uint256"}],"internalType":"struct Dish[]","name":"list","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"getToken","outputs":[{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"getTokenAddressList","outputs":[{"internalType":"address[]","name":"list","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenAddressListLength","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"__dexInterface","type":"address"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"__delegate","type":"address"}],"name":"setDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"___tokenManager","type":"address"}],"name":"setTokenManager","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600180546001600160a01b031990811690915560028054821690556003805490911690553480156200003557600080fd5b5060008054336001600160a01b0319909116179055620000606200012f602090811b620019e917901c565b8051600480546001600160a01b0319166001600160a01b03909216919091178155602082015160059062000095908262000344565b5060408201516002820190620000ac908262000344565b5060608201518160030155905050620000cf620001e660201b62001a9f1760201c565b8051600880546001600160a01b0319166001600160a01b03909216919091178155602082015160099062000104908262000344565b50604082015160028201906200011b908262000344565b506060820151816003015590505062000410565b62000164604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600081525090565b604051806080016040528073c2132d05d31c914a87c6611c10748aeb04b58e8f6001600160a01b03168152602001604051806040016040528060048152602001631554d11560e21b81525081526020016040518060400160405280600a81526020016915195d1a195c881554d160b21b81525081526020016006815250905090565b6200021b604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600081525090565b604051806080016040528073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03168152602001604051806040016040528060058152602001644d4154494360d81b81525081526020016040518060400160405280600b81526020016a26b0ba34b1902a37b5b2b760a91b81525081526020016012815250905090565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002ca57607f821691505b602082108103620002eb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033f57600081815260208120601f850160051c810160208610156200031a5750805b601f850160051c820191505b818110156200033b5782815560010162000326565b5050505b505050565b81516001600160401b038111156200036057620003606200029f565b6200037881620003718454620002b5565b84620002f1565b602080601f831160018114620003b05760008415620003975750858301515b600019600386901b1c1916600185901b1785556200033b565b600085815260208120601f198616915b82811015620003e157888601518255948401946001909101908401620003c0565b5085821015620004005787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612fac80620004206000396000f3fe6080604052600436106102045760003560e01c80637017689611610118578063d4de8ad2116100a0578063edb258411161006f578063edb2584114610660578063f248d4bb146106e2578063f3da8edf14610702578063f7888aec14610722578063f79fde671461074257600080fd5b8063d4de8ad2146105e0578063e3dddfc814610600578063e501d5f414610620578063ed7a144f1461064057600080fd5b80639fd95a42116100e75780639fd95a4214610540578063b424bd8314610560578063bdda1d1a14610580578063c27b6f29146105a0578063ca5eb5e1146105c057600080fd5b806370176896146104cd5780637cb2b79c146104e057806394f27d081461050057806395265e6c1461052057600080fd5b806327f83af91161019b57806350ab38711161016a57806350ab3871146103d9578063594251341461043d578063597704381461045d5780635d4e94071461048d5780635f8e651e146104ad57600080fd5b806327f83af91461035957806341976e091461037957806347c3b77d146103995780634f9f21f9146103b957600080fd5b8063161b71fa116101d7578063161b71fa146102bd57806319ab453c146102ea5780631cbc5ab11461030c5780631f69ae121461032c57600080fd5b80630479569f1461020957806305a7b0411461023f578063083c63511461026d5780630afbe8731461028d575b600080fd5b34801561021557600080fd5b506102296102243660046124b6565b610757565b60405161023691906124e2565b60405180910390f35b34801561024b57600080fd5b5061025f61025a366004612531565b610929565b604051908152602001610236565b34801561027957600080fd5b5061025f610288366004612531565b6109a6565b34801561029957600080fd5b506102ad6102a836600461254e565b6109e0565b6040519015158152602001610236565b3480156102c957600080fd5b506102dd6102d83660046124b6565b610b7b565b6040516102369190612590565b3480156102f657600080fd5b5061030a610305366004612531565b610bfe565b005b34801561031857600080fd5b5061025f6103273660046125d4565b610ca3565b34801561033857600080fd5b5061034c610347366004612609565b610d0f565b604051610236919061262b565b34801561036557600080fd5b506102ad6103743660046124b6565b610d88565b34801561038557600080fd5b5061025f610394366004612531565b610eed565b3480156103a557600080fd5b506102dd6103b43660046125d4565b610f27565b3480156103c557600080fd5b506102dd6103d43660046125d4565b610fb0565b3480156103e557600080fd5b506103f96103f43660046124b6565b610ff8565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e083015261010082015261012001610236565b34801561044957600080fd5b5061025f610458366004612531565b6110ce565b34801561046957600080fd5b5061047d610478366004612531565b611108565b60405161023694939291906126bc565b34801561049957600080fd5b506102296104a83660046124b6565b6111a7565b3480156104b957600080fd5b5061025f6104c8366004612704565b611370565b61025f6104db36600461273d565b6113ef565b3480156104ec57600080fd5b5061030a6104fb366004612531565b61140a565b34801561050c57600080fd5b506102dd61051b3660046124b6565b611456565b34801561052c57600080fd5b5061025f61053b3660046124b6565b61148d565b34801561054c57600080fd5b506102dd61055b3660046124b6565b6114c4565b34801561056c57600080fd5b5061025f61057b366004612531565b6114fb565b34801561058c57600080fd5b506102dd61059b3660046124b6565b611535565b3480156105ac57600080fd5b5061025f6105bb366004612704565b61156c565b3480156105cc57600080fd5b5061030a6105db366004612531565b6115ae565b3480156105ec57600080fd5b506102dd6105fb3660046124b6565b6115fa565b34801561060c57600080fd5b506102dd61061b366004612756565b611631565b34801561062c57600080fd5b5061025f61063b3660046124b6565b6116cb565b34801561064c57600080fd5b5061025f61065b3660046125d4565b611702565b34801561066c57600080fd5b5061068061067b3660046124b6565b611766565b604080519b8c5260208c019a909a52988a01979097526060890195909552608088019390935260a087019190915260c086015260e085015260ff908116610100850152166101208301526001600160a01b031661014082015261016001610236565b3480156106ee57600080fd5b506102dd6106fd366004612756565b611875565b34801561070e57600080fd5b5061025f61071d366004612609565b6118c5565b34801561072e57600080fd5b5061025f61073d366004612704565b6118e0565b34801561074e57600080fd5b5061025f611976565b60606000610763611b57565b90506000816001600160a01b0316639fd95a4286866040518363ffffffff1660e01b815260040161079592919061279c565b600060405180830381865afa1580156107b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107da9190810190612891565b90508367ffffffffffffffff8111156107f5576107f56127b5565b60405190808252806020026020018201604052801561083a57816020015b60408051808201909152600080825260208201528152602001906001900390816108135790505b50925060005b8481101561092057600082828151811061085c5761085c612927565b602002602001015190506000846001600160a01b031663e501d5f489846040518363ffffffff1660e01b815260040161089692919061279c565b602060405180830381865afa1580156108b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d7919061293d565b905060405180604001604052808381526020018281525086848151811061090057610900612927565b6020026020010181905250505080806109189061296c565b915050610840565b50505092915050565b6000610933611b57565b6040516305a7b04160e01b81526001600160a01b03848116600483015291909116906305a7b041906024015b602060405180830381865afa15801561097c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a0919061293d565b92915050565b60006109b0611b57565b60405163083c635160e01b81526001600160a01b038481166004830152919091169063083c63519060240161095f565b600080546001600160a01b03163314610a145760405162461bcd60e51b8152600401610a0b90612985565b60405180910390fd5b600254604051630b2ee08760e31b81526001600160a01b0386811660048301526000921690635977043890602401600060405180830381865afa158015610a5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a879190810190612a2e565b90506000816060015111610aad5760405162461bcd60e51b8152600401610a0b90612adf565b600154604051630e9cacff60e21b81526001600160a01b0387811660048301526024820187905285811660448301526000921690633a72b3fc906064016020604051808303816000875af1158015610b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2d9190612b25565b6040516001600160a01b03868116825291925086918816907f815e548fe24679a5c17a12d6857eba6a816b25878050abfcb7b0e88f07d6418b9060200160405180910390a395945050505050565b6060610b85611b57565b6001600160a01b031663161b71fa84846040518363ffffffff1660e01b8152600401610bb292919061279c565b600060405180830381865afa158015610bcf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bf79190810190612891565b9392505050565b6000546001600160a01b03163314610c285760405162461bcd60e51b8152600401610a0b90612985565b6001546001600160a01b031615610c815760405162461bcd60e51b815260206004820152601960248201527f43616e206f6e6c792062652061737369676e6564206f6e6365000000000000006044820152606401610a0b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6008546000906001600160a01b0390811690851603610cfb5760405162461bcd60e51b8152602060048201526014602482015273088decae640dcdee840e6eae0e0dee4e8408aa8960631b6044820152606401610a0b565b610d0784848433611bc5565b949350505050565b600254604051630fb4d70960e11b815260048101849052602481018390526060916001600160a01b031690631f69ae1290604401600060405180830381865afa158015610d60573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bf79190810190612b47565b600254604051630b2ee08760e31b81526001600160a01b0384811660048301526000928392911690635977043890602401600060405180830381865afa158015610dd6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dfe9190810190612a2e565b90506000816060015111610e245760405162461bcd60e51b8152600401610a0b90612adf565b600154604051630e9cacff60e21b81526001600160a01b038681166004830152602482018690523360448301526000921690633a72b3fc906064016020604051808303816000875af1158015610e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea29190612b25565b60405133815290915084906001600160a01b038716907f815e548fe24679a5c17a12d6857eba6a816b25878050abfcb7b0e88f07d6418b9060200160405180910390a3949350505050565b6000610ef7611b57565b6040516341976e0960e01b81526001600160a01b03848116600483015291909116906341976e099060240161095f565b6060610f31611b57565b6040516347c3b77d60e01b81526001600160a01b038681166004830152602482018690526044820185905291909116906347c3b77d906064015b600060405180830381865afa158015610f88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d079190810190612891565b6060610fba611b57565b604051634f9f21f960e01b81526001600160a01b03868116600483015260248201869052604482018590529190911690634f9f21f990606401610f6b565b60008060008060008060008060008061100f611b57565b6001600160a01b03166350ab38718d8d6040518363ffffffff1660e01b815260040161103c92919061279c565b61012060405180830381865afa15801561105a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107e9190612bd6565b905080600001519950806020015198508060400151975080606001519650806080015195508060a0015194508060c0015193508060e0015192508061010001519150509295985092959850929598565b60006110d8611b57565b604051631650944d60e21b81526001600160a01b038481166004830152919091169063594251349060240161095f565b600254604051630b2ee08760e31b81526001600160a01b038381166004830152600092606092839285928392911690635977043890602401600060405180830381865afa15801561115d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111859190810190612a2e565b8051602082015160408301516060909301519199909850919650945092505050565b606060006111b3611b57565b90506000816001600160a01b031663d4de8ad286866040518363ffffffff1660e01b81526004016111e592919061279c565b600060405180830381865afa158015611202573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261122a9190810190612891565b90508367ffffffffffffffff811115611245576112456127b5565b60405190808252806020026020018201604052801561128a57816020015b60408051808201909152600080825260208201528152602001906001900390816112635790505b50925060005b848110156109205760008282815181106112ac576112ac612927565b602002602001015190506000846001600160a01b03166395265e6c89846040518363ffffffff1660e01b81526004016112e692919061279c565b602060405180830381865afa158015611303573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611327919061293d565b905060405180604001604052808381526020018281525086848151811061135057611350612927565b6020026020010181905250505080806113689061296c565b915050611290565b600061137a611b57565b604051632fc7328f60e11b81526001600160a01b03858116600483015284811660248301529190911690635f8e651e906044015b602060405180830381865afa1580156113cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf7919061293d565b6008546000906109a0906001600160a01b0316833433611eb6565b6000546001600160a01b031633146114345760405162461bcd60e51b8152600401610a0b90612985565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6060611460611b57565b6001600160a01b03166394f27d0884846040518363ffffffff1660e01b8152600401610bb292919061279c565b6000611497611b57565b6001600160a01b03166395265e6c84846040518363ffffffff1660e01b81526004016113ae92919061279c565b60606114ce611b57565b6001600160a01b0316639fd95a4284846040518363ffffffff1660e01b8152600401610bb292919061279c565b6000611505611b57565b60405163b424bd8360e01b81526001600160a01b038481166004830152919091169063b424bd839060240161095f565b606061153f611b57565b6001600160a01b031663bdda1d1a84846040518363ffffffff1660e01b8152600401610bb292919061279c565b6000611576611b57565b60405163c27b6f2960e01b81526001600160a01b0385811660048301528481166024830152919091169063c27b6f29906044016113ae565b6000546001600160a01b031633146115d85760405162461bcd60e51b8152600401610a0b90612985565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6060611604611b57565b6001600160a01b031663d4de8ad284846040518363ffffffff1660e01b8152600401610bb292919061279c565b606061163b611b57565b604051631c7bbbf960e31b81526001600160a01b03878116600483015286811660248301526044820186905260648201859052919091169063e3dddfc8906084015b600060405180830381865afa15801561169a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116c29190810190612891565b95945050505050565b60006116d5611b57565b6001600160a01b031663e501d5f484846040518363ffffffff1660e01b81526004016113ae92919061279c565b6008546000906001600160a01b039081169085160361175a5760405162461bcd60e51b8152602060048201526014602482015273088decae640dcdee840e6eae0e0dee4e8408aa8960631b6044820152606401610a0b565b610d0784848433611eb6565b600080600080600080600080600080600080611780611b57565b6001600160a01b031663edb258418f8f6040518363ffffffff1660e01b81526004016117ad92919061279c565b61018060405180830381865afa1580156117cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ef9190612c6f565b905080602001519b5080604001519a5080606001519950806080015198508060a0015197508060c0015196508060e0015195508061010001519450806101200151600181111561184157611841612d1d565b9350806101400151600381111561185a5761185a612d1d565b92508061016001519150509295989b509295989b9093969950565b606061187f611b57565b60405163f248d4bb60e01b81526001600160a01b03878116600483015286811660248301526044820186905260648201859052919091169063f248d4bb9060840161167d565b600854600090610bf7906001600160a01b0316848433611bc5565b60085460009081906001600160a01b039081169085160361190c57506001600160a01b03821631610bf7565b6040516370a0823160e01b81526001600160a01b0384811660048301528516906370a0823190602401602060405180830381865afa158015611952573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d07919061293d565b600254604080516303c381ad60e61b815290516000926001600160a01b03169163f0e06b409160048083019260209291908290030181865afa1580156119c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e4919061293d565b905090565b611a1d604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600081525090565b604051806080016040528073c2132d05d31c914a87c6611c10748aeb04b58e8f6001600160a01b03168152602001604051806040016040528060048152602001631554d11560e21b81525081526020016040518060400160405280600a81526020016915195d1a195c881554d160b21b81525081526020016006815250905090565b611ad3604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600081525090565b604051806080016040528073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03168152602001604051806040016040528060058152602001644d4154494360d81b81525081526020016040518060400160405280600b81526020016a26b0ba34b1902a37b5b2b760a91b81525081526020016012815250905090565b6001546040805163f9b6117f60e01b815290516000926001600160a01b03169163f9b6117f9160048083019260209291908290030181865afa158015611ba1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e49190612d33565b6003546000906001600160a01b031615611c41576003546040516316b3980160e11b81526001600160a01b038781166004830152848116602483015290911690632d67300290604401600060405180830381600087803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b505050505b60008311611c8c5760405162461bcd60e51b81526020600482015260186024820152770546865207175616e746974792063616e6e6f7420626520360441b6044820152606401610a0b565b600254604051630b2ee08760e31b81526001600160a01b0387811660048301526000921690635977043890602401600060405180830381865afa158015611cd7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cff9190810190612a2e565b90506000816060015111611d255760405162461bcd60e51b8152600401610a0b90612adf565b60008511611d645760405162461bcd60e51b815260206004820152600c60248201526b4e6f2c206e6f20707269636560a01b6044820152606401610a0b565b6000611d86611d7386886121ae565b6c0c9f2c9cd04674edea40000000612230565b600754909150611d9790600a612e34565b611da490620186a0612e40565b811115611dc35760405162461bcd60e51b8152600401610a0b90612e57565b600454600154611de2916001600160a01b039081169187911684612272565b600154604051631b5522f960e11b81526000916001600160a01b0316906336aa45f290611e1d908b9089908c908c9089908990600401612ea4565b6020604051808303816000875af1158015611e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e60919061293d565b905080886001600160a01b03167f164666df0cbe6896e7bda798468870a2933385c7517e10080233b7d1a1a4c2f08760008b8b604051611ea39493929190612edc565b60405180910390a3979650505050505050565b6003546000906001600160a01b031615611f325760035460405163f46dc94760e01b81526001600160a01b03878116600483015284811660248301529091169063f46dc94790604401600060405180830381600087803b158015611f1957600080fd5b505af1158015611f2d573d6000803e3d6000fd5b505050505b60008311611f7d5760405162461bcd60e51b81526020600482015260186024820152770546865207175616e746974792063616e6e6f7420626520360441b6044820152606401610a0b565b600254604051630b2ee08760e31b81526001600160a01b0387811660048301526000921690635977043890602401600060405180830381865afa158015611fc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ff09190810190612a2e565b905060008160600151116120165760405162461bcd60e51b8152600401610a0b90612adf565b600085116120555760405162461bcd60e51b815260206004820152600c60248201526b4e6f2c206e6f20707269636560a01b6044820152606401610a0b565b6000612064611d7386886121ae565b60075490915061207590600a612e34565b61208290620186a0612e40565b8111156120a15760405162461bcd60e51b8152600401610a0b90612e57565b6008546001600160a01b03908116908816036120d2576001546120cd906001600160a01b0316866123a2565b6120ec565b6001546120ec90889086906001600160a01b031688612272565b60018054604051631b5522f960e11b81526000926001600160a01b03909216916336aa45f291612128918c918a918d918d918a91600401612ea4565b6020604051808303816000875af1158015612147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216b919061293d565b905080886001600160a01b03167f164666df0cbe6896e7bda798468870a2933385c7517e10080233b7d1a1a4c2f08760018b8b604051611ea39493929190612edc565b6000826000036121c0575060006109a0565b60006121cc8385612e40565b9050826121d98583612f25565b14610bf75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a0b565b6000610bf783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612470565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916122d69190612f47565b6000604051808303816000865af19150503d8060008114612313576040519150601f19603f3d011682016040523d82523d6000602084013e612318565b606091505b50915091508180156123425750805115806123425750808060200190518101906123429190612b25565b61239a5760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b6064820152608401610a0b565b505050505050565b604080516000808252602082019092526001600160a01b0384169083906040516123cc9190612f47565b60006040518083038185875af1925050503d8060008114612409576040519150601f19603f3d011682016040523d82523d6000602084013e61240e565b606091505b505090508061246b5760405162461bcd60e51b815260206004820152602360248201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960448201526213115160ea1b6064820152608401610a0b565b505050565b600081836124915760405162461bcd60e51b8152600401610a0b9190612f63565b5060006116c28486612f25565b6001600160a01b03811681146124b357600080fd5b50565b600080604083850312156124c957600080fd5b82356124d48161249e565b946020939093013593505050565b602080825282518282018190526000919060409081850190868401855b82811015612524578151805185528601518685015292840192908501906001016124ff565b5091979650505050505050565b60006020828403121561254357600080fd5b8135610bf78161249e565b60008060006060848603121561256357600080fd5b833561256e8161249e565b92506020840135915060408401356125858161249e565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b818110156125c8578351835292840192918401916001016125ac565b50909695505050505050565b6000806000606084860312156125e957600080fd5b83356125f48161249e565b95602085013595506040909401359392505050565b6000806040838503121561261c57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b818110156125c85783516001600160a01b031683529284019291840191600101612647565b60005b8381101561268757818101518382015260200161266f565b50506000910152565b600081518084526126a881602086016020860161266c565b601f01601f19169290920160200192915050565b6001600160a01b03851681526080602082018190526000906126e090830186612690565b82810360408401526126f28186612690565b91505082606083015295945050505050565b6000806040838503121561271757600080fd5b82356127228161249e565b915060208301356127328161249e565b809150509250929050565b60006020828403121561274f57600080fd5b5035919050565b6000806000806080858703121561276c57600080fd5b84356127778161249e565b935060208501356127878161249e565b93969395505050506040820135916060013590565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156127ee576127ee6127b5565b60405290565b604051610120810167ffffffffffffffff811182821017156127ee576127ee6127b5565b604051610180810167ffffffffffffffff811182821017156127ee576127ee6127b5565b604051601f8201601f1916810167ffffffffffffffff81118282101715612865576128656127b5565b604052919050565b600067ffffffffffffffff821115612887576128876127b5565b5060051b60200190565b600060208083850312156128a457600080fd5b825167ffffffffffffffff8111156128bb57600080fd5b8301601f810185136128cc57600080fd5b80516128df6128da8261286d565b61283c565b81815260059190911b820183019083810190878311156128fe57600080fd5b928401925b8284101561291c57835182529284019290840190612903565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561294f57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161297e5761297e612956565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b80516129c58161249e565b919050565b600082601f8301126129db57600080fd5b815167ffffffffffffffff8111156129f5576129f56127b5565b612a08601f8201601f191660200161283c565b818152846020838601011115612a1d57600080fd5b610d0782602083016020870161266c565b600060208284031215612a4057600080fd5b815167ffffffffffffffff80821115612a5857600080fd5b9083019060808286031215612a6c57600080fd5b612a746127cb565b8251612a7f8161249e565b8152602083015182811115612a9357600080fd5b612a9f878286016129ca565b602083015250604083015182811115612ab757600080fd5b612ac3878286016129ca565b6040830152506060830151606082015280935050505092915050565b60208082526026908201527f5468697320636f6e74726163742061646472657373206973206e6f74207375706040820152651c1bdc9d195960d21b606082015260800190565b600060208284031215612b3757600080fd5b81518015158114610bf757600080fd5b60006020808385031215612b5a57600080fd5b825167ffffffffffffffff811115612b7157600080fd5b8301601f81018513612b8257600080fd5b8051612b906128da8261286d565b81815260059190911b82018301908381019087831115612baf57600080fd5b928401925b8284101561291c578351612bc78161249e565b82529284019290840190612bb4565b60006101208284031215612be957600080fd5b612bf16127f4565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b8051600281106129c557600080fd5b8051600481106129c557600080fd5b60006101808284031215612c8257600080fd5b612c8a612818565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120612cee818501612c51565b90820152610140612d00848201612c60565b90820152610160612d128482016129ba565b908201529392505050565b634e487b7160e01b600052602160045260246000fd5b600060208284031215612d4557600080fd5b8151610bf78161249e565b600181815b80851115612d8b578160001904821115612d7157612d71612956565b80851615612d7e57918102915b93841c9390800290612d55565b509250929050565b600082612da2575060016109a0565b81612daf575060006109a0565b8160018114612dc55760028114612dcf57612deb565b60019150506109a0565b60ff841115612de057612de0612956565b50506001821b6109a0565b5060208310610133831016604e8410600b8410161715612e0e575081810a6109a0565b612e188383612d50565b8060001904821115612e2c57612e2c612956565b029392505050565b6000610bf78383612d93565b80820281158282048414176109a0576109a0612956565b6020808252602d908201527f4d6178696d756d2073696e676c65207472616e73616374696f6e20616d6f756e60408201526c1d080c4c0c0c0c0c081554d115609a1b606082015260800190565b6001600160a01b03968716815294909516602085015260408401929092526060830152608082015260ff90911660a082015260c00190565b6001600160a01b03851681526080810160028510612f0a57634e487b7160e01b600052602160045260246000fd5b84602083015283604083015282606083015295945050505050565b600082612f4257634e487b7160e01b600052601260045260246000fd5b500490565b60008251612f5981846020870161266c565b9190910192915050565b602081526000610bf7602083018461269056fea264697066735822122046a912d34f63a36f8db25e86d36c32d96d3d096ee16e53424ae187fec646b01e64736f6c63430008110033
Deployed ByteCode Sourcemap
10825:13291:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20519:551;;;;;;;;;;-1:-1:-1;20519:551:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17695:164;;;;;;;;;;-1:-1:-1;17695:164:0;;;;;:::i;:::-;;:::i;:::-;;;1653:25:2;;;1641:2;1626:18;17695:164:0;1507:177:2;21302:186:0;;;;;;;;;;-1:-1:-1;21302:186:0;;;;;:::i;:::-;;:::i;16472:473::-;;;;;;;;;;-1:-1:-1;16472:473:0;;;;;:::i;:::-;;:::i;:::-;;;2315:14:2;;2308:22;2290:41;;2278:2;2263:18;16472:473:0;2150:187:2;21076:220:0;;;;;;;;;;-1:-1:-1;21076:220:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11536:183::-;;;;;;;;;;-1:-1:-1;11536:183:0;;;;;:::i;:::-;;:::i;:::-;;13867:272;;;;;;;;;;-1:-1:-1;13867:272:0;;;;;:::i;:::-;;:::i;12536:192::-;;;;;;;;;;-1:-1:-1;12536:192:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;16018:448::-;;;;;;;;;;-1:-1:-1;16018:448:0;;;;;:::i;:::-;;:::i;17539:150::-;;;;;;;;;;-1:-1:-1;17539:150:0;;;;;:::i;:::-;;:::i;21494:224::-;;;;;;;;;;-1:-1:-1;21494:224:0;;;;;:::i;:::-;;:::i;19847:222::-;;;;;;;;;;-1:-1:-1;19847:222:0;;;;;:::i;:::-;;:::i;18917:734::-;;;;;;;;;;-1:-1:-1;18917:734:0;;;;;:::i;:::-;;:::i;:::-;;;;4654:25:2;;;4710:2;4695:18;;4688:34;;;;4738:18;;;4731:34;;;;4796:2;4781:18;;4774:34;;;;4839:3;4824:19;;4817:35;;;;4883:3;4868:19;;4861:35;4927:3;4912:19;;4905:35;4971:3;4956:19;;4949:35;5015:3;5000:19;;4993:35;4641:3;4626:19;18917:734:0;4283:751:2;19657:184:0;;;;;;;;;;-1:-1:-1;19657:184:0;;;;;:::i;:::-;;:::i;11961:413::-;;;;;;;;;;-1:-1:-1;11961:413:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;22172:554::-;;;;;;;;;;-1:-1:-1;22172:554:0;;;;;:::i;:::-;;:::i;23176:212::-;;;;;;;;;;-1:-1:-1;23176:212:0;;;;;:::i;:::-;;:::i;15853:159::-;;;;;;:::i;:::-;;:::i;11725:121::-;;;;;;;;;;-1:-1:-1;11725:121:0;;;;;:::i;:::-;;:::i;22732:222::-;;;;;;;;;;-1:-1:-1;22732:222:0;;;;;:::i;:::-;;:::i;21724:215::-;;;;;;;;;;-1:-1:-1;21724:215:0;;;;;:::i;:::-;;:::i;20294:219::-;;;;;;;;;;-1:-1:-1;20294:219:0;;;;;:::i;:::-;;:::i;17865:164::-;;;;;;;;;;-1:-1:-1;17865:164:0;;;;;:::i;:::-;;:::i;22960:210::-;;;;;;;;;;-1:-1:-1;22960:210:0;;;;;:::i;:::-;;:::i;23394:::-;;;;;;;;;;-1:-1:-1;23394:210:0;;;;;:::i;:::-;;:::i;11852:103::-;;;;;;;;;;-1:-1:-1;11852:103:0;;;;;:::i;:::-;;:::i;21945:221::-;;;;;;;;;;-1:-1:-1;21945:221:0;;;;;:::i;:::-;;:::i;23866:248::-;;;;;;;;;;-1:-1:-1;23866:248:0;;;;;:::i;:::-;;:::i;20075:213::-;;;;;;;;;;-1:-1:-1;20075:213:0;;;;;:::i;:::-;;:::i;15573:274::-;;;;;;;;;;-1:-1:-1;15573:274:0;;;;;:::i;:::-;;:::i;18035:876::-;;;;;;;;;;-1:-1:-1;18035:876:0;;;;;:::i;:::-;;:::i;:::-;;;;7656:25:2;;;7712:2;7697:18;;7690:34;;;;7740:18;;;7733:34;;;;7798:2;7783:18;;7776:34;;;;7841:3;7826:19;;7819:35;;;;7885:3;7870:19;;7863:35;;;;7929:3;7914:19;;7907:35;7973:3;7958:19;;7951:35;8035:4;8023:17;;;8017:3;8002:19;;7995:46;8078:17;8072:3;8057:19;;8050:46;-1:-1:-1;;;;;8133:33:2;8127:3;8112:19;;8105:62;7643:3;7628:19;18035:876:0;7236:937:2;23610:250:0;;;;;;;;;;-1:-1:-1;23610:250:0;;;;;:::i;:::-;;:::i;14145:176::-;;;;;;;;;;-1:-1:-1;14145:176:0;;;;;:::i;:::-;;:::i;17017:358::-;;;;;;;;;;-1:-1:-1;17017:358:0;;;;;:::i;:::-;;:::i;12380:150::-;;;;;;;;;;;;;:::i;20519:551::-;20608:18;20642:27;20672:17;:15;:17::i;:::-;20642:47;;20699:26;20728:12;-1:-1:-1;;;;;20728:42:0;;20771:14;20787:5;20728:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20728:65:0;;;;;;;;;;;;:::i;:::-;20699:94;;20821:5;20810:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;20810:17:0;;;;;;;;;;;;;;;;20803:24;;20842:6;20837:227;20854:5;20852:1;:7;20837:227;;;20888:13;20904:9;20914:1;20904:12;;;;;;;;:::i;:::-;;;;;;;20888:28;;20930:14;20947:12;-1:-1:-1;;;;;20947:40:0;;20988:14;21004:5;20947:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20930:80;;21034:19;;;;;;;;21039:5;21034:19;;;;21046:6;21034:19;;;21024:4;21029:1;21024:7;;;;;;;;:::i;:::-;;;;;;:29;;;;20874:190;;20861:3;;;;;:::i;:::-;;;;20837:227;;;;20632:438;;20519:551;;;;:::o;17695:164::-;17766:15;17804:17;:15;:17::i;:::-;:48;;-1:-1:-1;;;17804:48:0;;-1:-1:-1;;;;;11472:32:2;;;17804:48:0;;;11454:51:2;17804:32:0;;;;;;;11427:18:2;;17804:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17797:55;17695:164;-1:-1:-1;;17695:164:0:o;21302:186::-;21386:11;21420:17;:15;:17::i;:::-;:61;;-1:-1:-1;;;21420:61:0;;-1:-1:-1;;;;;11472:32:2;;;21420:61:0;;;11454:51:2;21420:45:0;;;;;;;11427:18:2;;21420:61:0;11308:203:2;16472:473:0;16579:4;11455:6;;-1:-1:-1;;;;;11455:6:0;11465:10;11455:20;11447:65;;;;-1:-1:-1;;;11447:65:0;;;;;;;:::i;:::-;;;;;;;;;16635:13:::1;::::0;16620:54:::1;::::0;-1:-1:-1;;;16620:54:0;;-1:-1:-1;;;;;11472:32:2;;;16620:54:0::1;::::0;::::1;11454:51:2::0;16599:18:0::1;::::0;16635:13:::1;::::0;16620:38:::1;::::0;11427:18:2;;16620:54:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;16620:54:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;16599:75;;16709:1;16692:5;:14;;;:18;16684:69;;;;-1:-1:-1::0;;;16684:69:0::1;;;;;;;:::i;:::-;16791:13;::::0;16778:74:::1;::::0;-1:-1:-1;;;16778:74:0;;-1:-1:-1;;;;;14172:15:2;;;16778:74:0::1;::::0;::::1;14154:34:2::0;14204:18;;;14197:34;;;14267:15;;;14247:18;;;14240:43;16764:11:0::1;::::0;16791:13:::1;::::0;16778:39:::1;::::0;14089:18:2;;16778:74:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16868:46;::::0;-1:-1:-1;;;;;11472:32:2;;;11454:51;;16764:88:0;;-1:-1:-1;16896:8:0;;16868:46;::::1;::::0;::::1;::::0;11442:2:2;11427:18;16868:46:0::1;;;;;;;16932:6:::0;16472:473;-1:-1:-1;;;;;16472:473:0:o;21076:220::-;21176:21;21220:17;:15;:17::i;:::-;-1:-1:-1;;;;;21220:45:0;;21266:14;21282:6;21220:69;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21220:69:0;;;;;;;;;;;;:::i;:::-;21213:76;21076:220;-1:-1:-1;;;21076:220:0:o;11536:183::-;11455:6;;-1:-1:-1;;;;;11455:6:0;11465:10;11455:20;11447:65;;;;-1:-1:-1;;;11447:65:0;;;;;;;:::i;:::-;11615:13:::1;::::0;-1:-1:-1;;;;;11615:13:0::1;:27:::0;11607:65:::1;;;::::0;-1:-1:-1;;;11607:65:0;;14778:2:2;11607:65:0::1;::::0;::::1;14760:21:2::0;14817:2;14797:18;;;14790:30;14856:27;14836:18;;;14829:55;14901:18;;11607:65:0::1;14576:349:2::0;11607:65:0::1;11682:13;:30:::0;;-1:-1:-1;;;;;;11682:30:0::1;-1:-1:-1::0;;;;;11682:30:0;;;::::1;::::0;;;::::1;::::0;;11536:183::o;13867:272::-;14018:3;:17;13961:15;;-1:-1:-1;;;;;14018:17:0;;;14000:35;;;;13992:68;;;;-1:-1:-1;;;13992:68:0;;15132:2:2;13992:68:0;;;15114:21:2;15171:2;15151:18;;;15144:30;-1:-1:-1;;;15190:18:2;;;15183:50;15250:18;;13992:68:0;14930:344:2;13992:68:0;14077:55;14082:14;14098:6;14106:13;14121:10;14077:4;:55::i;:::-;14070:62;13867:272;-1:-1:-1;;;;13867:272:0:o;12536:192::-;12675:13;;12660:61;;-1:-1:-1;;;12660:61:0;;;;;15453:25:2;;;15494:18;;;15487:34;;;12616:21:0;;-1:-1:-1;;;;;12675:13:0;;12660:49;;15426:18:2;;12660:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12660:61:0;;;;;;;;;;;;:::i;16018:448::-;16150:13;;16135:54;;-1:-1:-1;;;16135:54:0;;-1:-1:-1;;;;;11472:32:2;;;16135:54:0;;;11454:51:2;16094:4:0;;;;16150:13;;;16135:38;;11427:18:2;;16135:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16135:54:0;;;;;;;;;;;;:::i;:::-;16114:75;;16224:1;16207:5;:14;;;:18;16199:69;;;;-1:-1:-1;;;16199:69:0;;;;;;;:::i;:::-;16306:13;;16293:77;;-1:-1:-1;;;16293:77:0;;-1:-1:-1;;;;;14172:15:2;;;16293:77:0;;;14154:34:2;14204:18;;;14197:34;;;16359:10:0;14247:18:2;;;14240:43;16279:11:0;;16306:13;;16293:39;;14089:18:2;;16293:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16386:49;;16424:10;11454:51:2;;16279:91:0;;-1:-1:-1;16414:8:0;;-1:-1:-1;;;;;16386:49:0;;;;;11442:2:2;11427:18;16386:49:0;;;;;;;16453:6;16018:448;-1:-1:-1;;;;16018:448:0:o;17539:150::-;17604:13;17640:17;:15;:17::i;:::-;:42;;-1:-1:-1;;;17640:42:0;;-1:-1:-1;;;;;11472:32:2;;;17640:42:0;;;11454:51:2;17640:26:0;;;;;;;11427:18:2;;17640:42:0;11308:203:2;21494:224:0;21600:21;21644:17;:15;:17::i;:::-;:67;;-1:-1:-1;;;21644:67:0;;-1:-1:-1;;;;;16713:32:2;;;21644:67:0;;;16695:51:2;16762:18;;;16755:34;;;16805:18;;;16798:34;;;21644:39:0;;;;;;;16668:18:2;;21644:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21644:67:0;;;;;;;;;;;;:::i;19847:222::-;19952:21;19996:17;:15;:17::i;:::-;:66;;-1:-1:-1;;;19996:66:0;;-1:-1:-1;;;;;16713:32:2;;;19996:66:0;;;16695:51:2;16762:18;;;16755:34;;;16805:18;;;16798:34;;;19996:38:0;;;;;;;16668:18:2;;19996:66:0;16493:345:2;18917:734:0;19009:15;19034:18;19062:19;19091:13;19114:17;19141:16;19167;19193:15;19218:12;19251:19;19273:17;:15;:17::i;:::-;-1:-1:-1;;;;;19273:26:0;;19300:14;19316:8;19273:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19251:74;;19346:6;:14;;;19336:24;;19383:6;:17;;;19370:30;;19424:6;:18;;;19410:32;;19460:6;:12;;;19452:20;;19494:6;:16;;;19482:28;;19531:6;:15;;;19520:26;;19567:6;:15;;;19556:26;;19602:6;:14;;;19592:24;;19633:6;:11;;;19626:18;;19241:410;18917:734;;;;;;;;;;;:::o;19657:184::-;19740:11;19774:17;:15;:17::i;:::-;:60;;-1:-1:-1;;;19774:60:0;;-1:-1:-1;;;;;11472:32:2;;;19774:60:0;;;11454:51:2;19774:44:0;;;;;;;11427:18:2;;19774:60:0;11308:203:2;11961:413:0;12189:13;;12174:54;;-1:-1:-1;;;12174:54:0;;-1:-1:-1;;;;;11472:32:2;;;12174:54:0;;;11454:51:2;12035:21:0;;12066:20;;;;12035:21;;;;12189:13;;;12174:38;;11427:18:2;;12174:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12174:54:0;;;;;;;;;;;;:::i;:::-;12255:19;;12293:12;;;;12322:10;;;;12353:14;;;;;12255:19;;12293:12;;-1:-1:-1;12322:10:0;;-1:-1:-1;12353:14:0;-1:-1:-1;11961:413:0;-1:-1:-1;;;11961:413:0:o;22172:554::-;22262:18;22296:27;22326:17;:15;:17::i;:::-;22296:47;;22353:26;22382:12;-1:-1:-1;;;;;22382:43:0;;22426:14;22442:5;22382:66;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22382:66:0;;;;;;;;;;;;:::i;:::-;22353:95;;22476:5;22465:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;22465:17:0;;;;;;;;;;;;;;;;22458:24;;22497:6;22492:228;22509:5;22507:1;:7;22492:228;;;22543:13;22559:9;22569:1;22559:12;;;;;;;;:::i;:::-;;;;;;;22543:28;;22585:14;22602:12;-1:-1:-1;;;;;22602:41:0;;22644:14;22660:5;22602:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22585:81;;22690:19;;;;;;;;22695:5;22690:19;;;;22702:6;22690:19;;;22680:4;22685:1;22680:7;;;;;;;;:::i;:::-;;;;;;:29;;;;22529:191;;22516:3;;;;;:::i;:::-;;;;22492:228;;23176:212;23277:11;23311:17;:15;:17::i;:::-;:70;;-1:-1:-1;;;23311:70:0;;-1:-1:-1;;;;;17852:15:2;;;23311:70:0;;;17834:34:2;17904:15;;;17884:18;;;17877:43;23311:45:0;;;;;;;17769:18:2;;23311:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15853:159::-;15956:3;:17;15912:15;;15950:55;;-1:-1:-1;;;;;15956:17:0;15975:6;15983:9;15994:10;15950:5;:55::i;11725:121::-;11455:6;;-1:-1:-1;;;;;11455:6:0;11465:10;11455:20;11447:65;;;;-1:-1:-1;;;11447:65:0;;;;;;;:::i;:::-;11808:13:::1;:31:::0;;-1:-1:-1;;;;;;11808:31:0::1;-1:-1:-1::0;;;;;11808:31:0;;;::::1;::::0;;;::::1;::::0;;11725:121::o;22732:222::-;22833:21;22877:17;:15;:17::i;:::-;-1:-1:-1;;;;;22877:46:0;;22924:14;22940:6;22877:70;;;;;;;;;;;;;;;;:::i;21724:215::-;21825:14;21862:17;:15;:17::i;:::-;-1:-1:-1;;;;;21862:46:0;;21909:14;21925:6;21862:70;;;;;;;;;;;;;;;;:::i;20294:219::-;20392:21;20436:17;:15;:17::i;:::-;-1:-1:-1;;;;;20436:47:0;;20484:14;20500:5;20436:70;;;;;;;;;;;;;;;;:::i;17865:164::-;17936:15;17974:17;:15;:17::i;:::-;:48;;-1:-1:-1;;;17974:48:0;;-1:-1:-1;;;;;11472:32:2;;;17974:48:0;;;11454:51:2;17974:32:0;;;;;;;11427:18:2;;17974:48:0;11308:203:2;22960:210:0;23051:29;23103:17;:15;:17::i;:::-;-1:-1:-1;;;;;23103:34:0;;23138:14;23154:8;23103:60;;;;;;;;;;;;;;;;:::i;23394:210::-;23494:11;23528:17;:15;:17::i;:::-;:69;;-1:-1:-1;;;23528:69:0;;-1:-1:-1;;;;;17852:15:2;;;23528:69:0;;;17834:34:2;17904:15;;;17884:18;;;17877:43;23528:44:0;;;;;;;17769:18:2;;23528:69:0;17622:304:2;11852:103:0;11455:6;;-1:-1:-1;;;;;11455:6:0;11465:10;11455:20;11447:65;;;;-1:-1:-1;;;11447:65:0;;;;;;;:::i;:::-;11926:9:::1;:22:::0;;-1:-1:-1;;;;;;11926:22:0::1;-1:-1:-1::0;;;;;11926:22:0;;;::::1;::::0;;;::::1;::::0;;11852:103::o;21945:221::-;22044:21;22088:17;:15;:17::i;:::-;-1:-1:-1;;;;;22088:48:0;;22137:14;22153:5;22088:71;;;;;;;;;;;;;;;;:::i;23866:248::-;23988:21;24032:17;:15;:17::i;:::-;:75;;-1:-1:-1;;;24032:75:0;;-1:-1:-1;;;;;18218:15:2;;;24032:75:0;;;18200:34:2;18270:15;;;18250:18;;;18243:43;18302:18;;;18295:34;;;18345:18;;;18338:34;;;24032:38:0;;;;;;;18134:19:2;;24032:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24032:75:0;;;;;;;;;;;;:::i;:::-;24025:82;23866:248;-1:-1:-1;;;;;23866:248:0:o;20075:213::-;20175:14;20212:17;:15;:17::i;:::-;-1:-1:-1;;;;;20212:45:0;;20258:14;20274:6;20212:69;;;;;;;;;;;;;;;;:::i;15573:274::-;15725:3;:17;15668:15;;-1:-1:-1;;;;;15725:17:0;;;15707:35;;;;15699:68;;;;-1:-1:-1;;;15699:68:0;;15132:2:2;15699:68:0;;;15114:21:2;15171:2;15151:18;;;15144:30;-1:-1:-1;;;15190:18:2;;;15183:50;15250:18;;15699:68:0;14930:344:2;15699:68:0;15784:56;15790:14;15806:6;15814:13;15829:10;15784:5;:56::i;18035:876::-;18127:13;18150:18;18178:20;18208:16;18234:19;18263:15;18288:19;18317:15;18342;18367:12;18389:14;18424:18;18445:17;:15;:17::i;:::-;-1:-1:-1;;;;;18445:26:0;;18472:14;18488:8;18445:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18424:73;;18515:5;:11;;;18507:19;;18549:5;:16;;;18536:29;;18590:5;:18;;;18575:33;;18629:5;:14;;;18618:25;;18667:5;:17;;;18653:31;;18704:5;:13;;;18694:23;;18741:5;:17;;;18727:31;;18778:5;:13;;;18768:23;;18819:5;:15;;;18813:22;;;;;;;;:::i;:::-;18801:34;;18860:5;:12;;;18854:19;;;;;;;;:::i;:::-;18845:28;;18892:5;:12;;;18883:21;;18414:497;18035:876;;;;;;;;;;;;;;:::o;23610:250::-;23733:21;23777:17;:15;:17::i;:::-;:76;;-1:-1:-1;;;23777:76:0;;-1:-1:-1;;;;;18218:15:2;;;23777:76:0;;;18200:34:2;18270:15;;;18250:18;;;18243:43;18302:18;;;18295:34;;;18345:18;;;18338:34;;;23777:39:0;;;;;;;18134:19:2;;23777:76:0;17931:447:2;14145:176:0;14261:3;:17;14218:15;;14256:58;;-1:-1:-1;;;;;14261:17:0;14280:6;14288:13;14303:10;14256:4;:58::i;17017:358::-;17170:3;:17;17100:7;;;;-1:-1:-1;;;;;17170:17:0;;;17152:35;;;;17148:197;;-1:-1:-1;;;;;;17221:15:0;;;17148:197;;;17293:41;;-1:-1:-1;;;17293:41:0;;-1:-1:-1;;;;;11472:32:2;;;17293:41:0;;;11454:51:2;17293:32:0;;;;;11427:18:2;;17293:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12380:150::-;12489:13;;12474:49;;;-1:-1:-1;;;12474:49:0;;;;12440:11;;-1:-1:-1;;;;;12489:13:0;;12474:47;;:49;;;;;;;;;;;;;;12489:13;12474:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12467:56;;12380:150;:::o;218:254:1:-;257:12;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;257:12:1;292:173;;;;;;;;387:42;-1:-1:-1;;;;;292:173:1;;;;;;;;;;;;;;;;;;-1:-1:-1;;;292:173:1;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;292:173:1;;;;;;;453:1;292:173;;;285:180;;218:254;:::o;478:256::-;516:12;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;516:12:1;551:176;;;;;;;;648:42;-1:-1:-1;;;;;551:176:1;;;;;;;;;;;;;;;;;;-1:-1:-1;;;551:176:1;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;551:176:1;;;;;;;714:2;551:176;;;544:183;;478:256;:::o;17381:152:0:-;17496:13;;17483:42;;;-1:-1:-1;;;17483:42:0;;;;17431:14;;-1:-1:-1;;;;;17496:13:0;;17483:40;;:42;;;;;;;;;;;;;;17496:13;17483:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12800:1061::-;12939:9;;12912:7;;-1:-1:-1;;;;;12939:9:0;:23;12935:85;;12979:9;;12964:56;;-1:-1:-1;;;12964:56:0;;-1:-1:-1;;;;;17852:15:2;;;12964:56:0;;;17834:34:2;17904:15;;;17884:18;;;17877:43;12979:9:0;;;;12964:31;;17769:18:2;;12964:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12935:85;13055:1;13039:13;:17;13031:54;;;;-1:-1:-1;;;13031:54:0;;20400:2:2;13031:54:0;;;20382:21:2;20439:2;20419:18;;;20412:30;-1:-1:-1;;;20458:18:2;;;20451:54;20522:18;;13031:54:0;20198:348:2;13031:54:0;13132:13;;13117:54;;-1:-1:-1;;;13117:54:0;;-1:-1:-1;;;;;11472:32:2;;;13117:54:0;;;11454:51:2;13096:18:0;;13132:13;;13117:38;;11427:18:2;;13117:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13117:54:0;;;;;;;;;;;;:::i;:::-;13096:75;;13206:1;13189:5;:14;;;:18;13181:69;;;;-1:-1:-1;;;13181:69:0;;;;;;;:::i;:::-;13277:1;13268:6;:10;13260:35;;;;-1:-1:-1;;;13260:35:0;;20753:2:2;13260:35:0;;;20735:21:2;20792:2;20772:18;;;20765:30;-1:-1:-1;;;20811:18:2;;;20804:42;20863:18;;13260:35:0;20551:336:2;13260:35:0;13306:20;13329:55;13342:35;13355:13;13370:6;13342:12;:35::i;:::-;94:4:1;13329:12:0;:55::i;:::-;13434:13;;13306:78;;-1:-1:-1;13428:19:0;;:2;:19;:::i;:::-;13419:28;;:6;:28;:::i;:::-;13403:12;:44;;13395:102;;;;-1:-1:-1;;;13395:102:0;;;;;;;:::i;:::-;13540:4;:18;;13569:13;13508:89;;-1:-1:-1;;;;;13540:18:0;;;;13560:7;;13569:13;13584:12;13508:31;:89::i;:::-;13639:13;;13626:104;;-1:-1:-1;;;13626:104:0;;13608:15;;-1:-1:-1;;;;;13639:13:0;;13626:39;;:104;;13666:14;;13682:7;;13691:6;;13699:13;;13714:12;;13608:15;;13626:104;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13608:122;;13774:7;13758:14;-1:-1:-1;;;;;13746:83:0;;13783:7;13792:13;13807:6;13815:13;13746:83;;;;;;;;;:::i;:::-;;;;;;;;13847:7;12800:1061;-1:-1:-1;;;;;;;12800:1061:0:o;14327:1240::-;14467:9;;14440:7;;-1:-1:-1;;;;;14467:9:0;:23;14463:86;;14507:9;;14492:57;;-1:-1:-1;;;14492:57:0;;-1:-1:-1;;;;;17852:15:2;;;14492:57:0;;;17834:34:2;17904:15;;;17884:18;;;17877:43;14507:9:0;;;;14492:32;;17769:18:2;;14492:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14463:86;14584:1;14568:13;:17;14560:54;;;;-1:-1:-1;;;14560:54:0;;20400:2:2;14560:54:0;;;20382:21:2;20439:2;20419:18;;;20412:30;-1:-1:-1;;;20458:18:2;;;20451:54;20522:18;;14560:54:0;20198:348:2;14560:54:0;14661:13;;14646:54;;-1:-1:-1;;;14646:54:0;;-1:-1:-1;;;;;11472:32:2;;;14646:54:0;;;11454:51:2;14625:18:0;;14661:13;;14646:38;;11427:18:2;;14646:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14646:54:0;;;;;;;;;;;;:::i;:::-;14625:75;;14735:1;14718:5;:14;;;:18;14710:69;;;;-1:-1:-1;;;14710:69:0;;;;;;;:::i;:::-;14806:1;14797:6;:10;14789:35;;;;-1:-1:-1;;;14789:35:0;;20753:2:2;14789:35:0;;;20735:21:2;20792:2;20772:18;;;20765:30;-1:-1:-1;;;20811:18:2;;;20804:42;20863:18;;14789:35:0;20551:336:2;14789:35:0;14835:20;14858:55;14871:35;14884:13;14899:6;14871:12;:35::i;14858:55::-;14962:13;;14835:78;;-1:-1:-1;14956:19:0;;:2;:19;:::i;:::-;14947:28;;:6;:28;:::i;:::-;14931:12;:44;;14923:102;;;;-1:-1:-1;;;14923:102:0;;;;;;;:::i;:::-;15058:3;:17;-1:-1:-1;;;;;15058:17:0;;;15040:35;;;;15036:267;;15130:13;;15099:60;;-1:-1:-1;;;;;15130:13:0;15145;15099:30;:60::i;:::-;15036:267;;;15263:13;;15206:86;;15238:14;;15254:7;;-1:-1:-1;;;;;15263:13:0;15278;15206:31;:86::i;:::-;15344:13;;;15331:104;;-1:-1:-1;;;15331:104:0;;15313:15;;-1:-1:-1;;;;;15344:13:0;;;;15331:39;;:104;;15371:14;;15387:7;;15396:6;;15404:13;;15419:12;;15331:104;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15313:122;;15479:7;15463:14;-1:-1:-1;;;;;15451:84:0;;15488:7;15497:14;15513:6;15521:13;15451:84;;;;;;;;;:::i;4038:459::-;4096:7;4337:1;4342;4337:6;4333:45;;-1:-1:-1;4366:1:0;4359:8;;4333:45;4388:9;4400:5;4404:1;4400;:5;:::i;:::-;4388:17;-1:-1:-1;4432:1:0;4423:5;4427:1;4388:17;4423:5;:::i;:::-;:10;4415:56;;;;-1:-1:-1;;;4415:56:0;;25089:2:2;4415:56:0;;;25071:21:2;25128:2;25108:18;;;25101:30;25167:34;25147:18;;;25140:62;-1:-1:-1;;;25218:18:2;;;25211:31;25259:19;;4415:56:0;24887:397:2;4503:130:0;4561:7;4587:39;4591:1;4594;4587:39;;;;;;;;;;;;;;;;;:3;:39::i;6300:398::-;6523:51;;;-1:-1:-1;;;;;25547:15:2;;;6523:51:0;;;25529:34:2;25599:15;;;25579:18;;;25572:43;25631:18;;;;25624:34;;;6523:51:0;;;;;;;;;;25464:18:2;;;;6523:51:0;;;;;;;-1:-1:-1;;;;;6523:51:0;-1:-1:-1;;;6523:51:0;;;6512:63;;-1:-1:-1;;;;6512:10:0;;;;:63;;6523:51;6512:63;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6476:99;;;;6593:7;:57;;;;-1:-1:-1;6605:11:0;;:16;;:44;;;6636:4;6625:24;;;;;;;;;;;;:::i;:::-;6585:106;;;;-1:-1:-1;;;6585:106:0;;26163:2:2;6585:106:0;;;26145:21:2;26202:2;26182:18;;;26175:30;26241:34;26221:18;;;26214:62;-1:-1:-1;;;26292:18:2;;;26285:34;26336:19;;6585:106:0;25961:400:2;6585:106:0;6388:310;;6300:398;;;;:::o;6704:194::-;6813:12;;;6773;6813;;;;;;;;;-1:-1:-1;;;;;6790:7:0;;;6806:5;;6790:36;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6772:54;;;6844:7;6836:55;;;;-1:-1:-1;;;6836:55:0;;26568:2:2;6836:55:0;;;26550:21:2;26607:2;26587:18;;;26580:30;26646:34;26626:18;;;26619:62;-1:-1:-1;;;26697:18:2;;;26690:33;26740:19;;6836:55:0;26366:399:2;6836:55:0;6762:136;6704:194;;:::o;4639:272::-;4725:7;4759:12;4752:5;4744:28;;;;-1:-1:-1;;;4744:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4782:9:0;4794:5;4798:1;4794;:5;:::i;14:131:2:-;-1:-1:-1;;;;;89:31:2;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:315::-;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;455:2;440:18;;;;427:32;;-1:-1:-1;;;150:315:2:o;470:780::-;683:2;735:21;;;805:13;;708:18;;;827:22;;;654:4;;683:2;868;;886:18;;;;927:15;;;654:4;970:254;984:6;981:1;978:13;970:254;;;1043:13;;1081:9;;1069:22;;1131:11;;1125:18;1111:12;;;1104:40;1164:12;;;;1199:15;;;;1006:1;999:9;970:254;;;-1:-1:-1;1241:3:2;;470:780;-1:-1:-1;;;;;;;470:780:2:o;1255:247::-;1314:6;1367:2;1355:9;1346:7;1342:23;1338:32;1335:52;;;1383:1;1380;1373:12;1335:52;1422:9;1409:23;1441:31;1466:5;1441:31;:::i;1689:456::-;1766:6;1774;1782;1835:2;1823:9;1814:7;1810:23;1806:32;1803:52;;;1851:1;1848;1841:12;1803:52;1890:9;1877:23;1909:31;1934:5;1909:31;:::i;:::-;1959:5;-1:-1:-1;2011:2:2;1996:18;;1983:32;;-1:-1:-1;2067:2:2;2052:18;;2039:32;2080:33;2039:32;2080:33;:::i;:::-;2132:7;2122:17;;;1689:456;;;;;:::o;2342:632::-;2513:2;2565:21;;;2635:13;;2538:18;;;2657:22;;;2484:4;;2513:2;2736:15;;;;2710:2;2695:18;;;2484:4;2779:169;2793:6;2790:1;2787:13;2779:169;;;2854:13;;2842:26;;2923:15;;;;2888:12;;;;2815:1;2808:9;2779:169;;;-1:-1:-1;2965:3:2;;2342:632;-1:-1:-1;;;;;;2342:632:2:o;2979:383::-;3056:6;3064;3072;3125:2;3113:9;3104:7;3100:23;3096:32;3093:52;;;3141:1;3138;3131:12;3093:52;3180:9;3167:23;3199:31;3224:5;3199:31;:::i;:::-;3249:5;3301:2;3286:18;;3273:32;;-1:-1:-1;3352:2:2;3337:18;;;3324:32;;2979:383;-1:-1:-1;;;2979:383:2:o;3367:248::-;3435:6;3443;3496:2;3484:9;3475:7;3471:23;3467:32;3464:52;;;3512:1;3509;3502:12;3464:52;-1:-1:-1;;3535:23:2;;;3605:2;3590:18;;;3577:32;;-1:-1:-1;3367:248:2:o;3620:658::-;3791:2;3843:21;;;3913:13;;3816:18;;;3935:22;;;3762:4;;3791:2;4014:15;;;;3988:2;3973:18;;;3762:4;4057:195;4071:6;4068:1;4065:13;4057:195;;;4136:13;;-1:-1:-1;;;;;4132:39:2;4120:52;;4227:15;;;;4192:12;;;;4168:1;4086:9;4057:195;;5039:250;5124:1;5134:113;5148:6;5145:1;5142:13;5134:113;;;5224:11;;;5218:18;5205:11;;;5198:39;5170:2;5163:10;5134:113;;;-1:-1:-1;;5281:1:2;5263:16;;5256:27;5039:250::o;5294:271::-;5336:3;5374:5;5368:12;5401:6;5396:3;5389:19;5417:76;5486:6;5479:4;5474:3;5470:14;5463:4;5456:5;5452:16;5417:76;:::i;:::-;5547:2;5526:15;-1:-1:-1;;5522:29:2;5513:39;;;;5554:4;5509:50;;5294:271;-1:-1:-1;;5294:271:2:o;5570:553::-;-1:-1:-1;;;;;5823:32:2;;5805:51;;5892:3;5887:2;5872:18;;5865:31;;;-1:-1:-1;;5919:46:2;;5945:19;;5937:6;5919:46;:::i;:::-;6013:9;6005:6;6001:22;5996:2;5985:9;5981:18;5974:50;6041:33;6067:6;6059;6041:33;:::i;:::-;6033:41;;;6110:6;6105:2;6094:9;6090:18;6083:34;5570:553;;;;;;;:::o;6128:388::-;6196:6;6204;6257:2;6245:9;6236:7;6232:23;6228:32;6225:52;;;6273:1;6270;6263:12;6225:52;6312:9;6299:23;6331:31;6356:5;6331:31;:::i;:::-;6381:5;-1:-1:-1;6438:2:2;6423:18;;6410:32;6451:33;6410:32;6451:33;:::i;:::-;6503:7;6493:17;;;6128:388;;;;;:::o;6521:180::-;6580:6;6633:2;6621:9;6612:7;6608:23;6604:32;6601:52;;;6649:1;6646;6639:12;6601:52;-1:-1:-1;6672:23:2;;6521:180;-1:-1:-1;6521:180:2:o;6706:525::-;6792:6;6800;6808;6816;6869:3;6857:9;6848:7;6844:23;6840:33;6837:53;;;6886:1;6883;6876:12;6837:53;6925:9;6912:23;6944:31;6969:5;6944:31;:::i;:::-;6994:5;-1:-1:-1;7051:2:2;7036:18;;7023:32;7064:33;7023:32;7064:33;:::i;:::-;6706:525;;7116:7;;-1:-1:-1;;;;7170:2:2;7155:18;;7142:32;;7221:2;7206:18;7193:32;;6706:525::o;8178:274::-;-1:-1:-1;;;;;8370:32:2;;;;8352:51;;8434:2;8419:18;;8412:34;8340:2;8325:18;;8178:274::o;8457:127::-;8518:10;8513:3;8509:20;8506:1;8499:31;8549:4;8546:1;8539:15;8573:4;8570:1;8563:15;8589:253;8661:2;8655:9;8703:4;8691:17;;8738:18;8723:34;;8759:22;;;8720:62;8717:88;;;8785:18;;:::i;:::-;8821:2;8814:22;8589:253;:::o;8847:252::-;8919:2;8913:9;8961:3;8949:16;;8995:18;8980:34;;9016:22;;;8977:62;8974:88;;;9042:18;;:::i;9104:252::-;9176:2;9170:9;9218:3;9206:16;;9252:18;9237:34;;9273:22;;;9234:62;9231:88;;;9299:18;;:::i;9361:275::-;9432:2;9426:9;9497:2;9478:13;;-1:-1:-1;;9474:27:2;9462:40;;9532:18;9517:34;;9553:22;;;9514:62;9511:88;;;9579:18;;:::i;:::-;9615:2;9608:22;9361:275;;-1:-1:-1;9361:275:2:o;9641:183::-;9701:4;9734:18;9726:6;9723:30;9720:56;;;9756:18;;:::i;:::-;-1:-1:-1;9801:1:2;9797:14;9813:4;9793:25;;9641:183::o;9829:881::-;9924:6;9955:2;9998;9986:9;9977:7;9973:23;9969:32;9966:52;;;10014:1;10011;10004:12;9966:52;10047:9;10041:16;10080:18;10072:6;10069:30;10066:50;;;10112:1;10109;10102:12;10066:50;10135:22;;10188:4;10180:13;;10176:27;-1:-1:-1;10166:55:2;;10217:1;10214;10207:12;10166:55;10246:2;10240:9;10269:60;10285:43;10325:2;10285:43;:::i;:::-;10269:60;:::i;:::-;10363:15;;;10445:1;10441:10;;;;10433:19;;10429:28;;;10394:12;;;;10469:19;;;10466:39;;;10501:1;10498;10491:12;10466:39;10525:11;;;;10545:135;10561:6;10556:3;10553:15;10545:135;;;10627:10;;10615:23;;10578:12;;;;10658;;;;10545:135;;;10699:5;9829:881;-1:-1:-1;;;;;;;9829:881:2:o;10715:127::-;10776:10;10771:3;10767:20;10764:1;10757:31;10807:4;10804:1;10797:15;10831:4;10828:1;10821:15;10847:184;10917:6;10970:2;10958:9;10949:7;10945:23;10941:32;10938:52;;;10986:1;10983;10976:12;10938:52;-1:-1:-1;11009:16:2;;10847:184;-1:-1:-1;10847:184:2:o;11036:127::-;11097:10;11092:3;11088:20;11085:1;11078:31;11128:4;11125:1;11118:15;11152:4;11149:1;11142:15;11168:135;11207:3;11228:17;;;11225:43;;11248:18;;:::i;:::-;-1:-1:-1;11295:1:2;11284:13;;11168:135::o;11516:356::-;11718:2;11700:21;;;11737:18;;;11730:30;11796:34;11791:2;11776:18;;11769:62;11863:2;11848:18;;11516:356::o;11877:138::-;11956:13;;11978:31;11956:13;11978:31;:::i;:::-;11877:138;;;:::o;12020:510::-;12074:5;12127:3;12120:4;12112:6;12108:17;12104:27;12094:55;;12145:1;12142;12135:12;12094:55;12174:6;12168:13;12200:18;12196:2;12193:26;12190:52;;;12222:18;;:::i;:::-;12266:55;12309:2;12290:13;;-1:-1:-1;;12286:27:2;12315:4;12282:38;12266:55;:::i;:::-;12346:2;12337:7;12330:19;12392:3;12385:4;12380:2;12372:6;12368:15;12364:26;12361:35;12358:55;;;12409:1;12406;12399:12;12358:55;12422:77;12496:2;12489:4;12480:7;12476:18;12469:4;12461:6;12457:17;12422:77;:::i;12535:967::-;12628:6;12681:2;12669:9;12660:7;12656:23;12652:32;12649:52;;;12697:1;12694;12687:12;12649:52;12730:9;12724:16;12759:18;12800:2;12792:6;12789:14;12786:34;;;12816:1;12813;12806:12;12786:34;12839:22;;;;12895:4;12877:16;;;12873:27;12870:47;;;12913:1;12910;12903:12;12870:47;12939:22;;:::i;:::-;12991:2;12985:9;13003:33;13028:7;13003:33;:::i;:::-;13045:22;;13106:2;13098:11;;13092:18;13122:16;;;13119:36;;;13151:1;13148;13141:12;13119:36;13187:56;13235:7;13224:8;13220:2;13216:17;13187:56;:::i;:::-;13182:2;13175:5;13171:14;13164:80;;13283:2;13279;13275:11;13269:18;13312:2;13302:8;13299:16;13296:36;;;13328:1;13325;13318:12;13296:36;13364:56;13412:7;13401:8;13397:2;13393:17;13364:56;:::i;:::-;13359:2;13352:5;13348:14;13341:80;;13467:2;13463;13459:11;13453:18;13448:2;13441:5;13437:14;13430:42;13491:5;13481:15;;;;;12535:967;;;;:::o;13507:402::-;13709:2;13691:21;;;13748:2;13728:18;;;13721:30;13787:34;13782:2;13767:18;;13760:62;-1:-1:-1;;;13853:2:2;13838:18;;13831:36;13899:3;13884:19;;13507:402::o;14294:277::-;14361:6;14414:2;14402:9;14393:7;14389:23;14385:32;14382:52;;;14430:1;14427;14420:12;14382:52;14462:9;14456:16;14515:5;14508:13;14501:21;14494:5;14491:32;14481:60;;14537:1;14534;14527:12;15532:956;15627:6;15658:2;15701;15689:9;15680:7;15676:23;15672:32;15669:52;;;15717:1;15714;15707:12;15669:52;15750:9;15744:16;15783:18;15775:6;15772:30;15769:50;;;15815:1;15812;15805:12;15769:50;15838:22;;15891:4;15883:13;;15879:27;-1:-1:-1;15869:55:2;;15920:1;15917;15910:12;15869:55;15949:2;15943:9;15972:60;15988:43;16028:2;15988:43;:::i;15972:60::-;16066:15;;;16148:1;16144:10;;;;16136:19;;16132:28;;;16097:12;;;;16172:19;;;16169:39;;;16204:1;16201;16194:12;16169:39;16228:11;;;;16248:210;16264:6;16259:3;16256:15;16248:210;;;16337:3;16331:10;16354:31;16379:5;16354:31;:::i;:::-;16398:18;;16281:12;;;;16436;;;;16248:210;;16843:774;16935:6;16988:3;16976:9;16967:7;16963:23;16959:33;16956:53;;;17005:1;17002;16995:12;16956:53;17031:22;;:::i;:::-;17082:9;17076:16;17069:5;17062:31;17146:2;17135:9;17131:18;17125:25;17120:2;17113:5;17109:14;17102:49;17204:2;17193:9;17189:18;17183:25;17178:2;17171:5;17167:14;17160:49;17262:2;17251:9;17247:18;17241:25;17236:2;17229:5;17225:14;17218:49;17321:3;17310:9;17306:19;17300:26;17294:3;17287:5;17283:15;17276:51;17381:3;17370:9;17366:19;17360:26;17354:3;17347:5;17343:15;17336:51;17441:3;17430:9;17426:19;17420:26;17414:3;17407:5;17403:15;17396:51;17501:3;17490:9;17486:19;17480:26;17474:3;17467:5;17463:15;17456:51;17526:3;17582:2;17571:9;17567:18;17561:25;17556:2;17549:5;17545:14;17538:49;;17606:5;17596:15;;;16843:774;;;;:::o;18383:154::-;18469:13;;18511:1;18501:12;;18491:40;;18527:1;18524;18517:12;18542:156;18630:13;;18672:1;18662:12;;18652:40;;18688:1;18685;18678:12;18703:1102;18795:6;18848:3;18836:9;18827:7;18823:23;18819:33;18816:53;;;18865:1;18862;18855:12;18816:53;18891:22;;:::i;:::-;18942:9;18936:16;18929:5;18922:31;19006:2;18995:9;18991:18;18985:25;18980:2;18973:5;18969:14;18962:49;19064:2;19053:9;19049:18;19043:25;19038:2;19031:5;19027:14;19020:49;19122:2;19111:9;19107:18;19101:25;19096:2;19089:5;19085:14;19078:49;19181:3;19170:9;19166:19;19160:26;19154:3;19147:5;19143:15;19136:51;19241:3;19230:9;19226:19;19220:26;19214:3;19207:5;19203:15;19196:51;19301:3;19290:9;19286:19;19280:26;19274:3;19267:5;19263:15;19256:51;19361:3;19350:9;19346:19;19340:26;19334:3;19327:5;19323:15;19316:51;19386:3;19442:2;19431:9;19427:18;19421:25;19416:2;19409:5;19405:14;19398:49;;19466:3;19501:56;19553:2;19542:9;19538:18;19501:56;:::i;:::-;19485:14;;;19478:80;19577:3;19612:58;19651:18;;;19612:58;:::i;:::-;19596:14;;;19589:82;19690:3;19725:49;19755:18;;;19725:49;:::i;:::-;19709:14;;;19702:73;19713:5;18703:1102;-1:-1:-1;;;18703:1102:2:o;19810:127::-;19871:10;19866:3;19862:20;19859:1;19852:31;19902:4;19899:1;19892:15;19926:4;19923:1;19916:15;19942:251;20012:6;20065:2;20053:9;20044:7;20040:23;20036:32;20033:52;;;20081:1;20078;20071:12;20033:52;20113:9;20107:16;20132:31;20157:5;20132:31;:::i;20892:422::-;20981:1;21024:5;20981:1;21038:270;21059:7;21049:8;21046:21;21038:270;;;21118:4;21114:1;21110:6;21106:17;21100:4;21097:27;21094:53;;;21127:18;;:::i;:::-;21177:7;21167:8;21163:22;21160:55;;;21197:16;;;;21160:55;21276:22;;;;21236:15;;;;21038:270;;;21042:3;20892:422;;;;;:::o;21319:806::-;21368:5;21398:8;21388:80;;-1:-1:-1;21439:1:2;21453:5;;21388:80;21487:4;21477:76;;-1:-1:-1;21524:1:2;21538:5;;21477:76;21569:4;21587:1;21582:59;;;;21655:1;21650:130;;;;21562:218;;21582:59;21612:1;21603:10;;21626:5;;;21650:130;21687:3;21677:8;21674:17;21671:43;;;21694:18;;:::i;:::-;-1:-1:-1;;21750:1:2;21736:16;;21765:5;;21562:218;;21864:2;21854:8;21851:16;21845:3;21839:4;21836:13;21832:36;21826:2;21816:8;21813:16;21808:2;21802:4;21799:12;21795:35;21792:77;21789:159;;;-1:-1:-1;21901:19:2;;;21933:5;;21789:159;21980:34;22005:8;21999:4;21980:34;:::i;:::-;22050:6;22046:1;22042:6;22038:19;22029:7;22026:32;22023:58;;;22061:18;;:::i;:::-;22099:20;;21319:806;-1:-1:-1;;;21319:806:2:o;22130:131::-;22190:5;22219:36;22246:8;22240:4;22219:36;:::i;22266:168::-;22339:9;;;22370;;22387:15;;;22381:22;;22367:37;22357:71;;22408:18;;:::i;22439:409::-;22641:2;22623:21;;;22680:2;22660:18;;;22653:30;22719:34;22714:2;22699:18;;22692:62;-1:-1:-1;;;22785:2:2;22770:18;;22763:43;22838:3;22823:19;;22439:409::o;22853:608::-;-1:-1:-1;;;;;23202:15:2;;;23184:34;;23254:15;;;;23249:2;23234:18;;23227:43;23301:2;23286:18;;23279:34;;;;23344:2;23329:18;;23322:34;23387:3;23372:19;;23365:35;23449:4;23437:17;;;23164:3;23416:19;;23409:46;23133:3;23118:19;;22853:608::o;23466:581::-;-1:-1:-1;;;;;23726:32:2;;23708:51;;23695:3;23680:19;;23789:1;23778:13;;23768:144;;23834:10;23829:3;23825:20;23822:1;23815:31;23869:4;23866:1;23859:15;23897:4;23894:1;23887:15;23768:144;23948:6;23943:2;23932:9;23928:18;23921:34;23991:6;23986:2;23975:9;23971:18;23964:34;24034:6;24029:2;24018:9;24014:18;24007:34;23466:581;;;;;;;:::o;24665:217::-;24705:1;24731;24721:132;;24775:10;24770:3;24766:20;24763:1;24756:31;24810:4;24807:1;24800:15;24838:4;24835:1;24828:15;24721:132;-1:-1:-1;24867:9:2;;24665:217::o;25669:287::-;25798:3;25836:6;25830:13;25852:66;25911:6;25906:3;25899:4;25891:6;25887:17;25852:66;:::i;:::-;25934:16;;;;;25669:287;-1:-1:-1;;25669:287:2:o;26770:220::-;26919:2;26908:9;26901:21;26882:4;26939:45;26980:2;26969:9;26965:18;26957:6;26939:45;:::i
Swarm Source
ipfs://46a912d34f63a36f8db25e86d36c32d96d3d096ee16e53424ae187fec646b01e
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.