Latest 25 from a total of 350 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Redeem Tokens | 11856488 | 1840 days ago | IN | 0 ETH | 0.00318932 | ||||
| Redeem Tokens | 11844979 | 1842 days ago | IN | 0 ETH | 0.02793609 | ||||
| Swap | 11844662 | 1842 days ago | IN | 0.29999999 ETH | 0.00480871 | ||||
| Redeem Tokens | 11833441 | 1843 days ago | IN | 0 ETH | 0.01451774 | ||||
| Redeem Tokens | 11809988 | 1847 days ago | IN | 0 ETH | 0.01310314 | ||||
| Redeem Tokens | 11809940 | 1847 days ago | IN | 0 ETH | 0.01522249 | ||||
| Redeem Tokens | 11807116 | 1848 days ago | IN | 0 ETH | 0.01423584 | ||||
| Redeem Tokens | 11805285 | 1848 days ago | IN | 0 ETH | 0.01564533 | ||||
| Redeem Tokens | 11798379 | 1849 days ago | IN | 0 ETH | 0.02184709 | ||||
| Redeem Tokens | 11795958 | 1849 days ago | IN | 0 ETH | 0.0204376 | ||||
| Redeem Tokens | 11793587 | 1850 days ago | IN | 0 ETH | 0.01550439 | ||||
| Redeem Tokens | 11793579 | 1850 days ago | IN | 0 ETH | 0.01959191 | ||||
| Redeem Tokens | 11793313 | 1850 days ago | IN | 0 ETH | 0.01484249 | ||||
| Redeem Tokens | 11793127 | 1850 days ago | IN | 0 ETH | 0.03143162 | ||||
| Redeem Tokens | 11792874 | 1850 days ago | IN | 0 ETH | 0.02255184 | ||||
| Redeem Tokens | 11792405 | 1850 days ago | IN | 0 ETH | 0.05172828 | ||||
| Redeem Tokens | 11792371 | 1850 days ago | IN | 0 ETH | 0.0281898 | ||||
| Redeem Tokens | 11792180 | 1850 days ago | IN | 0 ETH | 0.0052284 | ||||
| Redeem Tokens | 11792180 | 1850 days ago | IN | 0 ETH | 0.0210014 | ||||
| Redeem Tokens | 11792166 | 1850 days ago | IN | 0 ETH | 0.03072688 | ||||
| Withdraw Funds | 11791474 | 1850 days ago | IN | 0 ETH | 0.00663673 | ||||
| Redeem Tokens | 11791471 | 1850 days ago | IN | 0 ETH | 0.02043901 | ||||
| Redeem Tokens | 11791328 | 1850 days ago | IN | 0 ETH | 0.04764076 | ||||
| Redeem Tokens | 11791154 | 1850 days ago | IN | 0 ETH | 0.01691388 | ||||
| Swap | 11791110 | 1850 days ago | IN | 0.1 ETH | 0.00683019 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xc6c97d38...42f088650 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
FixedSwap
Compiler Version
v0.5.8+commit.23d335f2
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2021-02-15
*/
pragma solidity 0.5.8;
/**
* @title ERC20Basic
* @dev Simpler version of ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/179
*/
contract ERC20Basic {
function decimals() public view returns (uint8);
function totalSupply() public view returns (uint256);
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*
* _Available since v2.4.0._
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// 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;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*
* _Available since v2.4.0._
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
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;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*
* _Available since v2.4.0._
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
// File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol
/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
*/
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) public view returns (uint256);
function transferFrom(address from, address to, uint256 value) public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// File: openzeppelin-solidity/contracts/ownership/Ownable.sol
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
*/
contract Ownable {
address public owner;
address public proposedOwner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
constructor() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner, "Has to be owner");
_;
}
function transferOwnership(address _proposedOwner) public onlyOwner {
require(msg.sender != _proposedOwner, "Has to be diff than current owner");
proposedOwner = _proposedOwner;
}
function claimOwnership() public {
require(msg.sender == proposedOwner, "Has to be the proposed owner");
emit OwnershipTransferred(owner, proposedOwner);
owner = proposedOwner;
proposedOwner = address(0);
}
}
// File: openzeppelin-solidity/contracts/lifecycle/Pausable.sol
/**
* @title Pausable
* @dev Base contract which allows children to implement an emergency stop mechanism.
*/
contract Pausable is Ownable {
event Pause();
event Unpause();
bool public paused = false;
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*/
modifier whenNotPaused() {
require(!paused, "Has to be unpaused");
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*/
modifier whenPaused() {
require(paused, "Has to be paused");
_;
}
/**
* @dev called by the owner to pause, triggers stopped state
*/
function pause() onlyOwner whenNotPaused public {
paused = true;
emit Pause();
}
/**
* @dev called by the owner to unpause, returns to normal state
*/
function unpause() onlyOwner whenPaused public {
paused = false;
emit Unpause();
}
}
contract Whitelist is Ownable {
mapping(address => bool) public whitelist;
address[] public whitelistedAddresses;
bool public hasWhitelisting = false;
event AddedToWhitelist(address[] indexed accounts);
event RemovedFromWhitelist(address indexed account);
modifier onlyWhitelisted() {
if(hasWhitelisting){
require(isWhitelisted(msg.sender));
}
_;
}
constructor (bool _hasWhitelisting) public{
hasWhitelisting = _hasWhitelisting;
}
function add(address[] memory _addresses) public onlyOwner {
for (uint i = 0; i < _addresses.length; i++) {
require(whitelist[_addresses[i]] != true);
whitelist[_addresses[i]] = true;
whitelistedAddresses.push(_addresses[i]);
}
emit AddedToWhitelist(_addresses);
}
function remove(address _address, uint256 _index) public onlyOwner {
require(_address == whitelistedAddresses[_index]);
whitelist[_address] = false;
delete whitelistedAddresses[_index];
emit RemovedFromWhitelist(_address);
}
function getWhitelistedAddresses() public view returns(address[] memory) {
return whitelistedAddresses;
}
function isWhitelisted(address _address) public view returns(bool) {
return whitelist[_address];
}
}
contract FixedSwap is Pausable, Whitelist {
using SafeMath for uint256;
uint256 increment = 0;
mapping(uint256 => Purchase) public purchases; /* Purchasers mapping */
address[] public buyers; /* Current Buyers Addresses */
uint256[] public purchaseIds; /* All purchaseIds */
mapping(address => uint256[]) public myPurchases; /* Purchasers mapping */
ERC20 public erc20;
bool public isSaleFunded = false;
uint public decimals = 0;
bool public unsoldTokensReedemed = false;
uint256 public tradeValue; /* Price in Wei */
uint256 public startDate; /* Start Date */
uint256 public endDate; /* End Date */
uint256 public individualMinimumAmount = 0; /* Minimum Amount Per Address */
uint256 public individualMaximumAmount = 0; /* Minimum Amount Per Address */
uint256 public minimumRaise = 0; /* Minimum Amount of Tokens that have to be sold */
uint256 public tokensAllocated = 0; /* Tokens Available for Allocation - Dynamic */
uint256 public tokensForSale = 0; /* Tokens Available for Sale */
bool public isTokenSwapAtomic; /* Make token release atomic or not */
address payable public FEE_ADDRESS = 0xAEb39b67F27b641Ef9F95fB74F1A46b1EE4Efc83; /* Default Address for Fee Percentage */
uint256 public feePercentage = 1; /* Default Fee 1% */
struct Purchase {
uint256 amount;
address purchaser;
uint256 ethAmount;
uint256 timestamp;
bool wasFinalized /* Confirm the tokens were sent already */;
bool reverted /* Confirm the tokens were sent already */;
}
event PurchaseEvent(uint256 amount, address indexed purchaser, uint256 timestamp);
constructor(address _tokenAddress, uint256 _tradeValue, uint256 _tokensForSale, uint256 _startDate,
uint256 _endDate, uint256 _individualMinimumAmount, uint256 _individualMaximumAmount, bool _isTokenSwapAtomic, uint256 _minimumRaise,
uint256 _feeAmount, bool _hasWhitelisting
) public Whitelist(_hasWhitelisting) {
/* Confirmations */
require(block.timestamp < _endDate, "End Date should be further than current date");
require(block.timestamp < _startDate, "End Date should be further than current date");
require(_startDate < _endDate, "End Date higher than Start Date");
require(_tokensForSale > 0, "Tokens for Sale should be > 0");
require(_tokensForSale > _individualMinimumAmount, "Tokens for Sale should be > Individual Minimum Amount");
require(_individualMaximumAmount >= _individualMinimumAmount, "Individual Maximim AMount should be > Individual Minimum Amount");
require(_minimumRaise <= _tokensForSale, "Minimum Raise should be < Tokens For Sale");
require(_feeAmount >= feePercentage, "Fee Percentage has to be >= 1");
require(_feeAmount <= 99, "Fee Percentage has to be < 100");
startDate = _startDate;
endDate = _endDate;
tokensForSale = _tokensForSale;
tradeValue = _tradeValue;
individualMinimumAmount = _individualMinimumAmount;
individualMaximumAmount = _individualMaximumAmount;
isTokenSwapAtomic = _isTokenSwapAtomic;
if(!_isTokenSwapAtomic){ /* If raise is not atomic swap */
minimumRaise = _minimumRaise;
}
erc20 = ERC20(_tokenAddress);
decimals = erc20.decimals();
feePercentage = _feeAmount;
}
/**
* Modifier to make a function callable only when the contract has Atomic Swaps not available.
*/
modifier isNotAtomicSwap() {
require(!isTokenSwapAtomic, "Has to be non Atomic swap");
_;
}
/**
* Modifier to make a function callable only when the contract has Atomic Swaps not available.
*/
modifier isSaleFinalized() {
require(hasFinalized(), "Has to be finalized");
_;
}
/**
* Modifier to make a function callable only when the swap time is open.
*/
modifier isSaleOpen() {
require(isOpen(), "Has to be open");
_;
}
/**
* Modifier to make a function callable only when the contract has Atomic Swaps not available.
*/
modifier isSalePreStarted() {
require(isPreStart(), "Has to be pre-started");
_;
}
/**
* Modifier to make a function callable only when the contract has Atomic Swaps not available.
*/
modifier isFunded() {
require(isSaleFunded, "Has to be funded");
_;
}
/* Get Functions */
function isBuyer(uint256 purchase_id) public view returns (bool) {
return (msg.sender == purchases[purchase_id].purchaser);
}
/* Get Functions */
function totalRaiseCost() public view returns (uint256) {
return (cost(tokensForSale));
}
function availableTokens() public view returns (uint256) {
return erc20.balanceOf(address(this));
}
function tokensLeft() public view returns (uint256) {
return tokensForSale - tokensAllocated;
}
function hasMinimumRaise() public view returns (bool){
return (minimumRaise != 0);
}
/* Verify if minimum raise was not achieved */
function minimumRaiseNotAchieved() public view returns (bool){
require(cost(tokensAllocated) < cost(minimumRaise), "TotalRaise is bigger than minimum raise amount");
return true;
}
/* Verify if minimum raise was achieved */
function minimumRaiseAchieved() public view returns (bool){
if(hasMinimumRaise()){
require(cost(tokensAllocated) >= cost(minimumRaise), "TotalRaise is less than minimum raise amount");
}
return true;
}
function hasFinalized() public view returns (bool){
return block.timestamp > endDate;
}
function hasStarted() public view returns (bool){
return block.timestamp >= startDate;
}
function isPreStart() public view returns (bool){
return block.timestamp < startDate;
}
function isOpen() public view returns (bool){
return hasStarted() && !hasFinalized();
}
function hasMinimumAmount() public view returns (bool){
return (individualMinimumAmount != 0);
}
function cost(uint256 _amount) public view returns (uint){
return _amount.mul(tradeValue).div(10**decimals);
}
function getPurchase(uint256 _purchase_id) external view returns (uint256, address, uint256, uint256, bool, bool){
Purchase memory purchase = purchases[_purchase_id];
return (purchase.amount, purchase.purchaser, purchase.ethAmount, purchase.timestamp, purchase.wasFinalized, purchase.reverted);
}
function getPurchaseIds() public view returns(uint256[] memory) {
return purchaseIds;
}
function getBuyers() public view returns(address[] memory) {
return buyers;
}
function getMyPurchases(address _address) public view returns(uint256[] memory) {
return myPurchases[_address];
}
/* Fund - Pre Sale Start */
function fund(uint256 _amount) public isSalePreStarted {
/* Confirm transfered tokens is no more than needed */
require(availableTokens().add(_amount) <= tokensForSale, "Transfered tokens have to be equal or less than proposed");
/* Transfer Funds */
require(erc20.transferFrom(msg.sender, address(this), _amount), "Failed ERC20 token transfer");
/* If Amount is equal to needed - sale is ready */
if(availableTokens() == tokensForSale){
isSaleFunded = true;
}
}
/* Action Functions */
function swap(uint256 _amount) payable external whenNotPaused isFunded isSaleOpen onlyWhitelisted {
/* Confirm Amount is positive */
require(_amount > 0, "Amount has to be positive");
/* Confirm Amount is less than tokens available */
require(_amount <= tokensLeft(), "Amount is less than tokens available");
/* Confirm the user has funds for the transfer, confirm the value is equal */
require(msg.value == cost(_amount), "User has to cover the cost of the swap in ETH, use the cost function to determine");
/* Confirm Amount is bigger than minimum Amount */
require(_amount >= individualMinimumAmount, "Amount is bigger than minimum amount");
/* Confirm Amount is smaller than maximum Amount */
require(_amount <= individualMaximumAmount, "Amount is smaller than maximum amount");
/* Verify all user purchases, loop thru them */
uint256[] memory _purchases = getMyPurchases(msg.sender);
uint256 purchaserTotalAmountPurchased = 0;
for (uint i = 0; i < _purchases.length; i++) {
Purchase memory _purchase = purchases[_purchases[i]];
purchaserTotalAmountPurchased = purchaserTotalAmountPurchased.add(_purchase.amount);
}
require(purchaserTotalAmountPurchased.add(_amount) <= individualMaximumAmount, "Address has already passed the max amount of swap");
if(isTokenSwapAtomic){
/* Confirm transfer */
require(erc20.transfer(msg.sender, _amount), "ERC20 transfer didn´t work");
}
uint256 purchase_id = increment;
increment = increment.add(1);
/* Create new purchase */
Purchase memory purchase = Purchase(_amount, msg.sender, msg.value, block.timestamp, isTokenSwapAtomic /* If Atomic Swap */, false);
purchases[purchase_id] = purchase;
purchaseIds.push(purchase_id);
myPurchases[msg.sender].push(purchase_id);
buyers.push(msg.sender);
tokensAllocated = tokensAllocated.add(_amount);
emit PurchaseEvent(_amount, msg.sender, block.timestamp);
}
/* Redeem tokens when the sale was finalized */
function redeemTokens(uint256 purchase_id) external isNotAtomicSwap isSaleFinalized whenNotPaused {
/* Confirm it exists and was not finalized */
require((purchases[purchase_id].amount != 0) && !purchases[purchase_id].wasFinalized, "Purchase is either 0 or finalized");
require(isBuyer(purchase_id), "Address is not buyer");
purchases[purchase_id].wasFinalized = true;
require(erc20.transfer(msg.sender, purchases[purchase_id].amount), "ERC20 transfer failed");
}
/* Retrieve Minumum Amount */
function redeemGivenMinimumGoalNotAchieved(uint256 purchase_id) external isSaleFinalized isNotAtomicSwap {
require(hasMinimumRaise(), "Minimum raise has to exist");
require(minimumRaiseNotAchieved(), "Minimum raise has to be reached");
/* Confirm it exists and was not finalized */
require((purchases[purchase_id].amount != 0) && !purchases[purchase_id].wasFinalized, "Purchase is either 0 or finalized");
require(isBuyer(purchase_id), "Address is not buyer");
purchases[purchase_id].wasFinalized = true;
purchases[purchase_id].reverted = true;
msg.sender.transfer(purchases[purchase_id].ethAmount);
}
/* Admin Functions */
function withdrawFunds() external onlyOwner whenNotPaused isSaleFinalized {
require(minimumRaiseAchieved(), "Minimum raise has to be reached");
FEE_ADDRESS.transfer(address(this).balance.mul(feePercentage).div(100)); /* Fee Address */
msg.sender.transfer(address(this).balance);
}
function withdrawUnsoldTokens() external onlyOwner isSaleFinalized {
require(!unsoldTokensReedemed);
uint256 unsoldTokens;
if(hasMinimumRaise() &&
(cost(tokensAllocated) < cost(minimumRaise))){ /* Minimum Raise not reached */
unsoldTokens = tokensForSale;
}else{
/* If minimum Raise Achieved Redeem All Tokens minus the ones */
unsoldTokens = tokensForSale.sub(tokensAllocated);
}
if(unsoldTokens > 0){
unsoldTokensReedemed = true;
require(erc20.transfer(msg.sender, unsoldTokens), "ERC20 transfer failed");
}
}
function removeOtherERC20Tokens(address _tokenAddress, address _to) external onlyOwner isSaleFinalized {
require(_tokenAddress != address(erc20), "Token Address has to be diff than the erc20 subject to sale"); // Confirm tokens addresses are different from main sale one
ERC20 erc20Token = ERC20(_tokenAddress);
require(erc20Token.transfer(_to, erc20Token.balanceOf(address(this))), "ERC20 Token transfer failed");
}
/* Safe Pull function */
function safePull() payable external onlyOwner whenPaused {
msg.sender.transfer(address(this).balance);
erc20.transfer(msg.sender, erc20.balanceOf(address(this)));
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"hasWhitelisting","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensForSale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hasMinimumRaise","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isSaleFunded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"purchase_id","type":"uint256"}],"name":"redeemGivenMinimumGoalNotAchieved","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isTokenSwapAtomic","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"safePull","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"individualMinimumAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isPreStart","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_purchase_id","type":"uint256"}],"name":"getPurchase","outputs":[{"name":"","type":"uint256"},{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isWhitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hasFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hasStarted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOpen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"myPurchases","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tradeValue","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"availableTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPurchaseIds","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getWhitelistedAddresses","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hasMinimumAmount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minimumRaiseNotAchieved","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensAllocated","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"erc20","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"purchases","outputs":[{"name":"amount","type":"uint256"},{"name":"purchaser","type":"address"},{"name":"ethAmount","type":"uint256"},{"name":"timestamp","type":"uint256"},{"name":"wasFinalized","type":"bool"},{"name":"reverted","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minimumRaise","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_amount","type":"uint256"}],"name":"cost","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_to","type":"address"}],"name":"removeOtherERC20Tokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"swap","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feePercentage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"purchase_id","type":"uint256"}],"name":"redeemTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_index","type":"uint256"}],"name":"remove","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokensLeft","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minimumRaiseAchieved","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"unsoldTokensReedemed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"whitelistedAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"getMyPurchases","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addresses","type":"address[]"}],"name":"add","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawUnsoldTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"fund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"proposedOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"purchaseIds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"individualMaximumAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FEE_ADDRESS","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalRaiseCost","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"buyers","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_proposedOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getBuyers","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"purchase_id","type":"uint256"}],"name":"isBuyer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_tradeValue","type":"uint256"},{"name":"_tokensForSale","type":"uint256"},{"name":"_startDate","type":"uint256"},{"name":"_endDate","type":"uint256"},{"name":"_individualMinimumAmount","type":"uint256"},{"name":"_individualMaximumAmount","type":"uint256"},{"name":"_isTokenSwapAtomic","type":"bool"},{"name":"_minimumRaise","type":"uint256"},{"name":"_feeAmount","type":"uint256"},{"name":"_hasWhitelisting","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"},{"indexed":true,"name":"purchaser","type":"address"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"PurchaseEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"accounts","type":"address[]"}],"name":"AddedToWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"RemovedFromWhitelist","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]Contract Creation Code
0x60806040526000600160146101000a81548160ff0219169083151502179055506000600460006101000a81548160ff02191690831515021790555060006005556000600a60146101000a81548160ff0219169083151502179055506000600b556000600c60006101000a81548160ff0219169083151502179055506000601055600060115560006012556000601355600060145573aeb39b67f27b641ef9f95fb74f1a46b1ee4efc83601560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601655348015620000fa57600080fd5b50604051610160806200567983398101806040526101608110156200011e57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505080336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548160ff0219169083151502179055505086421062000249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180620055b0602c913960400191505060405180910390fd5b874210620002a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180620055b0602c913960400191505060405180910390fd5b86881062000319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f456e64204461746520686967686572207468616e20537461727420446174650081525060200191505060405180910390fd5b6000891162000390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f546f6b656e7320666f722053616c652073686f756c64206265203e203000000081525060200191505060405180910390fd5b858911620003ea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180620056446035913960400191505060405180910390fd5b8585101562000445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180620055dc603f913960400191505060405180910390fd5b88831115620004a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806200561b6029913960400191505060405180910390fd5b60165482101562000519576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4665652050657263656e746167652068617320746f206265203e3d203100000081525060200191505060405180910390fd5b606382111562000591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4665652050657263656e746167652068617320746f206265203c20313030000081525060200191505060405180910390fd5b87600e8190555086600f819055508860148190555089600d81905550856010819055508460118190555083601560006101000a81548160ff02191690831515021790555083620005e357826012819055505b8a600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200068d57600080fd5b505afa158015620006a2573d6000803e3d6000fd5b505050506040513d6020811015620006b957600080fd5b810190808051906020019092919050505060ff16600b81905550816016819055505050505050505050505050614ebb80620006f56000396000f3fe6080604052600436106103815760003560e01c80638392fe31116101d1578063ba4e5c4911610102578063d65fb160116100a0578063f2aa82181161006f578063f2aa821814611185578063f2fde38b14611200578063f64bfaba14611251578063fecf415a146112bd57610381565b8063d65fb16014611089578063e4101de5146110d8578063eb1edd6114611103578063efbb34d51461115a57610381565b8063c4c1c94f116100dc578063c4c1c94f14610f1b578063c8bdbfb614610fe0578063ca1d209d14610ff7578063d153b60c1461103257610381565b8063ba4e5c4914610dcf578063c24a0f8b14610e4a578063c3ca324f14610e7557610381565b80639b19251a1161016f578063abe7f1ab11610149578063abe7f1ab14610ceb578063b31f8f9314610d46578063b367940e14610d71578063b7fd706d14610da057610381565b80639b19251a14610c1c578063a001ecdd14610c85578063a6e158f814610cb057610381565b80638e75b131116101ab5780638e75b13114610b035780639097548d14610b2e578063917c854d14610b7d57806394b918de14610bee57610381565b80638392fe31146109ef5780638456cb5914610a955780638da5cb5b14610aac57610381565b80633f4ba83a116102b65780636295a2f41161025457806370a898bc1161022357806370a898bc1461090f57806374fa05fb1461093e578063755e3e281461096d578063785e9e861461099857610381565b80636295a2f4146107e157806369bb4dc21461080c5780636a93df11146108375780636d028027146108a357610381565b806347535d7b1161029057806347535d7b146106fd5780634e71e0c81461072c5780635ac699bb146107435780635c975abb146107b257610381565b80633f4ba83a146106885780634089aa9a1461069f57806344691f7e146106ce57610381565b806324600fc3116103235780632ebb5c1e116102fd5780632ebb5c1e1461051f578063313ce5671461054e5780633742a9f7146105795780633af32abf1461061f57610381565b806324600fc3146104d35780632daa8c84146104ea5780632e154107146104f457610381565b806315b578661161035f57806315b578661461040b578063161a7b2a1461043a5780631de18af71461046957806321d3002a146104a457610381565b806307662345146103865780630b97bc86146103b557806312aef8c3146103e0575b600080fd5b34801561039257600080fd5b5061039b611310565b604051808215151515815260200191505060405180910390f35b3480156103c157600080fd5b506103ca611323565b6040518082815260200191505060405180910390f35b3480156103ec57600080fd5b506103f5611329565b6040518082815260200191505060405180910390f35b34801561041757600080fd5b5061042061132f565b604051808215151515815260200191505060405180910390f35b34801561044657600080fd5b5061044f61133c565b604051808215151515815260200191505060405180910390f35b34801561047557600080fd5b506104a26004803603602081101561048c57600080fd5b810190808035906020019092919050505061134f565b005b3480156104b057600080fd5b506104b9611716565b604051808215151515815260200191505060405180910390f35b3480156104df57600080fd5b506104e8611729565b005b6104f2611a69565b005b34801561050057600080fd5b50610509611dcb565b6040518082815260200191505060405180910390f35b34801561052b57600080fd5b50610534611dd1565b604051808215151515815260200191505060405180910390f35b34801561055a57600080fd5b50610563611ddd565b6040518082815260200191505060405180910390f35b34801561058557600080fd5b506105b26004803603602081101561059c57600080fd5b8101908080359060200190929190505050611de3565b604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018315151515815260200182151515158152602001965050505050505060405180910390f35b34801561062b57600080fd5b5061066e6004803603602081101561064257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ef2565b604051808215151515815260200191505060405180910390f35b34801561069457600080fd5b5061069d611f48565b005b3480156106ab57600080fd5b506106b46120d5565b604051808215151515815260200191505060405180910390f35b3480156106da57600080fd5b506106e36120e1565b604051808215151515815260200191505060405180910390f35b34801561070957600080fd5b506107126120ee565b604051808215151515815260200191505060405180910390f35b34801561073857600080fd5b5061074161210e565b005b34801561074f57600080fd5b5061079c6004803603604081101561076657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612314565b6040518082815260200191505060405180910390f35b3480156107be57600080fd5b506107c7612342565b604051808215151515815260200191505060405180910390f35b3480156107ed57600080fd5b506107f6612355565b6040518082815260200191505060405180910390f35b34801561081857600080fd5b5061082161235b565b6040518082815260200191505060405180910390f35b34801561084357600080fd5b5061084c61243c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088f578082015181840152602081019050610874565b505050509050019250505060405180910390f35b3480156108af57600080fd5b506108b8612494565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108fb5780820151818401526020810190506108e0565b505050509050019250505060405180910390f35b34801561091b57600080fd5b50610924612522565b604051808215151515815260200191505060405180910390f35b34801561094a57600080fd5b5061095361252f565b604051808215151515815260200191505060405180910390f35b34801561097957600080fd5b506109826125a4565b6040518082815260200191505060405180910390f35b3480156109a457600080fd5b506109ad6125aa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109fb57600080fd5b50610a2860048036036020811015610a1257600080fd5b81019080803590602001909291905050506125d0565b604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018315151515815260200182151515158152602001965050505050505060405180910390f35b348015610aa157600080fd5b50610aaa612646565b005b348015610ab857600080fd5b50610ac16127d3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b0f57600080fd5b50610b186127f8565b6040518082815260200191505060405180910390f35b348015610b3a57600080fd5b50610b6760048036036020811015610b5157600080fd5b81019080803590602001909291905050506127fe565b6040518082815260200191505060405180910390f35b348015610b8957600080fd5b50610bec60048036036040811015610ba057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612833565b005b610c1a60048036036020811015610c0457600080fd5b8101908080359060200190929190505050612c0b565b005b348015610c2857600080fd5b50610c6b60048036036020811015610c3f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613558565b604051808215151515815260200191505060405180910390f35b348015610c9157600080fd5b50610c9a613578565b6040518082815260200191505060405180910390f35b348015610cbc57600080fd5b50610ce960048036036020811015610cd357600080fd5b810190808035906020019092919050505061357e565b005b348015610cf757600080fd5b50610d4460048036036040811015610d0e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506139b4565b005b348015610d5257600080fd5b50610d5b613bbe565b6040518082815260200191505060405180910390f35b348015610d7d57600080fd5b50610d86613bcc565b604051808215151515815260200191505060405180910390f35b348015610dac57600080fd5b50610db5613c50565b604051808215151515815260200191505060405180910390f35b348015610ddb57600080fd5b50610e0860048036036020811015610df257600080fd5b8101908080359060200190929190505050613c63565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e5657600080fd5b50610e5f613c9f565b6040518082815260200191505060405180910390f35b348015610e8157600080fd5b50610ec460048036036020811015610e9857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ca5565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610f07578082015181840152602081019050610eec565b505050509050019250505060405180910390f35b348015610f2757600080fd5b50610fde60048036036020811015610f3e57600080fd5b8101908080359060200190640100000000811115610f5b57600080fd5b820183602082011115610f6d57600080fd5b80359060200191846020830284011164010000000083111715610f8f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050613d3c565b005b348015610fec57600080fd5b50610ff5613fe2565b005b34801561100357600080fd5b506110306004803603602081101561101a57600080fd5b8101908080359060200190929190505050614308565b005b34801561103e57600080fd5b506110476145b0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561109557600080fd5b506110c2600480360360208110156110ac57600080fd5b81019080803590602001909291905050506145d6565b6040518082815260200191505060405180910390f35b3480156110e457600080fd5b506110ed6145f7565b6040518082815260200191505060405180910390f35b34801561110f57600080fd5b506111186145fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561116657600080fd5b5061116f614623565b6040518082815260200191505060405180910390f35b34801561119157600080fd5b506111be600480360360208110156111a857600080fd5b8101908080359060200190929190505050614635565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561120c57600080fd5b5061124f6004803603602081101561122357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614671565b005b34801561125d57600080fd5b506112666147fc565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156112a957808201518184015260208101905061128e565b505050509050019250505060405180910390f35b3480156112c957600080fd5b506112f6600480360360208110156112e057600080fd5b810190808035906020019092919050505061488a565b604051808215151515815260200191505060405180910390f35b600460009054906101000a900460ff1681565b600e5481565b60145481565b6000806012541415905090565b600a60149054906101000a900460ff1681565b6113576120d5565b6113c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f48617320746f2062652066696e616c697a65640000000000000000000000000081525060200191505060405180910390fd5b601560009054906101000a900460ff161561144c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f48617320746f206265206e6f6e2041746f6d696320737761700000000000000081525060200191505060405180910390fd5b61145461132f565b6114c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4d696e696d756d2072616973652068617320746f20657869737400000000000081525060200191505060405180910390fd5b6114ce61252f565b611540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d696e696d756d2072616973652068617320746f20626520726561636865640081525060200191505060405180910390fd5b600060066000838152602001908152602001600020600001541415801561158857506006600082815260200190815260200160002060040160009054906101000a900460ff16155b6115dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614cac6021913960400191505060405180910390fd5b6115e68161488a565b611658576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f41646472657373206973206e6f7420627579657200000000000000000000000081525060200191505060405180910390fd5b60016006600083815260200190815260200160002060040160006101000a81548160ff02191690831515021790555060016006600083815260200190815260200160002060040160016101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166108fc60066000848152602001908152602001600020600201549081150290604051600060405180830381858888f19350505050158015611712573d6000803e3d6000fd5b5050565b601560009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff161561186e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f48617320746f20626520756e706175736564000000000000000000000000000081525060200191505060405180910390fd5b6118766120d5565b6118e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f48617320746f2062652066696e616c697a65640000000000000000000000000081525060200191505060405180910390fd5b6118f0613bcc565b611962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d696e696d756d2072616973652068617320746f20626520726561636865640081525060200191505060405180910390fd5b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6119dd60646119cf6016543073ffffffffffffffffffffffffffffffffffffffff16316148f890919063ffffffff16565b61497e90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611a08573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611a66573d6000803e3d6000fd5b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff16611bad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f48617320746f206265207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611c0a573d6000803e3d6000fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611ce957600080fd5b505afa158015611cfd573d6000803e3d6000fd5b505050506040513d6020811015611d1357600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d8d57600080fd5b505af1158015611da1573d6000803e3d6000fd5b505050506040513d6020811015611db757600080fd5b810190808051906020019092919050505050565b60105481565b6000600e544210905090565b600b5481565b600080600080600080611df4614c20565b600660008981526020019081526020016000206040518060c0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250509050806000015181602001518260400151836060015184608001518560a001519650965096509650965096505091939550919395565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461200a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff1661208c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f48617320746f206265207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6000600160146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600f544211905090565b6000600e54421015905090565b60006120f86120e1565b801561210957506121076120d5565b155b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f48617320746f206265207468652070726f706f736564206f776e65720000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6009602052816000526040600020818154811061232d57fe5b90600052602060002001600091509150505481565b600160149054906101000a900460ff1681565b600d5481565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156123fc57600080fd5b505afa158015612410573d6000803e3d6000fd5b505050506040513d602081101561242657600080fd5b8101908080519060200190929190505050905090565b6060600880548060200260200160405190810160405280929190818152602001828054801561248a57602002820191906000526020600020905b815481526020019060010190808311612476575b5050505050905090565b6060600380548060200260200160405190810160405280929190818152602001828054801561251857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116124ce575b5050505050905090565b6000806010541415905090565b600061253c6012546127fe565b6125476013546127fe565b1061259d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180614d29602e913960400191505060405180910390fd5b6001905090565b60135481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154908060040160009054906101000a900460ff16908060040160019054906101000a900460ff16905086565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff161561278b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f48617320746f20626520756e706175736564000000000000000000000000000081525060200191505060405180910390fd5b60018060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b600061282c600b54600a0a61281e600d54856148f890919063ffffffff16565b61497e90919063ffffffff16565b9050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b6128fd6120d5565b61296f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f48617320746f2062652066696e616c697a65640000000000000000000000000081525060200191505060405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180614c71603b913960400191505060405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb838373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612ab557600080fd5b505afa158015612ac9573d6000803e3d6000fd5b505050506040513d6020811015612adf57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b5957600080fd5b505af1158015612b6d573d6000803e3d6000fd5b505050506040513d6020811015612b8357600080fd5b8101908080519060200190929190505050612c06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f455243323020546f6b656e207472616e73666572206661696c6564000000000081525060200191505060405180910390fd5b505050565b600160149054906101000a900460ff1615612c8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f48617320746f20626520756e706175736564000000000000000000000000000081525060200191505060405180910390fd5b600a60149054906101000a900460ff16612d10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f48617320746f2062652066756e6465640000000000000000000000000000000081525060200191505060405180910390fd5b612d186120ee565b612d8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f48617320746f206265206f70656e00000000000000000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900460ff1615612db257612da833611ef2565b612db157600080fd5b5b60008111612e28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f416d6f756e742068617320746f20626520706f7369746976650000000000000081525060200191505060405180910390fd5b612e30613bbe565b811115612e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180614d056024913960400191505060405180910390fd5b612e91816127fe565b3414612ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526051815260200180614e1b6051913960600191505060405180910390fd5b601054811015612f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180614e6c6024913960400191505060405180910390fd5b601154811115612f9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614d576025913960400191505060405180910390fd5b6060612fa933613ca5565b9050600080905060008090505b82518110156130cb57612fc7614c20565b60066000858481518110612fd757fe5b602002602001015181526020019081526020016000206040518060c0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505090506130bb8160000151846149c890919063ffffffff16565b9250508080600101915050612fb6565b506011546130e284836149c890919063ffffffff16565b1115613139576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180614dc96031913960400191505060405180910390fd5b601560009054906101000a900460ff16156132a557600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156131f757600080fd5b505af115801561320b573d6000803e3d6000fd5b505050506040513d602081101561322157600080fd5b81019080805190602001909291905050506132a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4552433230207472616e73666572206469646ec2b47420776f726b000000000081525060200191505060405180910390fd5b5b600060055490506132c260016005546149c890919063ffffffff16565b6005819055506132d0614c20565b6040518060c001604052808681526020013373ffffffffffffffffffffffffffffffffffffffff168152602001348152602001428152602001601560009054906101000a900460ff161515815260200160001515815250905080600660008481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff02191690831515021790555060a08201518160040160016101000a81548160ff0219169083151502179055509050506008829080600181540180825580915050906001820390600052602060002001600090919290919091505550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082908060018154018082558091505090600182039060005260206000200160009091929091909150555060073390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506134f5856013546149c890919063ffffffff16565b6013819055503373ffffffffffffffffffffffffffffffffffffffff167fbec109f7ee137de661c6887caa96653c0545050a9908a3b6eb5190440bbec8648642604051808381526020018281526020019250505060405180910390a25050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60165481565b601560009054906101000a900460ff1615613601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f48617320746f206265206e6f6e2041746f6d696320737761700000000000000081525060200191505060405180910390fd5b6136096120d5565b61367b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f48617320746f2062652066696e616c697a65640000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff16156136fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f48617320746f20626520756e706175736564000000000000000000000000000081525060200191505060405180910390fd5b600060066000838152602001908152602001600020600001541415801561374657506006600082815260200190815260200160002060040160009054906101000a900460ff16155b61379b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614cac6021913960400191505060405180910390fd5b6137a48161488a565b613816576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f41646472657373206973206e6f7420627579657200000000000000000000000081525060200191505060405180910390fd5b60016006600083815260200190815260200160002060040160006101000a81548160ff021916908315150217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3360066000858152602001908152602001600020600001546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561390457600080fd5b505af1158015613918573d6000803e3d6000fd5b505050506040513d602081101561392e57600080fd5b81019080805190602001909291905050506139b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4552433230207472616e73666572206661696c6564000000000000000000000081525060200191505060405180910390fd5b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b60038181548110613a8357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613ae557600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038181548110613b4a57fe5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690558173ffffffffffffffffffffffffffffffffffffffff167fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df75760405160405180910390a25050565b600060135460145403905090565b6000613bd661132f565b15613c4957613be66012546127fe565b613bf16013546127fe565b1015613c48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614d7c602c913960400191505060405180910390fd5b5b6001905090565b600c60009054906101000a900460ff1681565b60038181548110613c7057fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6060600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015613d3057602002820191906000526020600020905b815481526020019060010190808311613d1c575b50505050509050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613dfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b60008090505b8151811015613f6f576001151560026000848481518110613e2157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613e7e57600080fd5b600160026000848481518110613e9057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003828281518110613ef757fe5b602002602001015190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508080600101915050613e04565b508060405180828051906020019060200280838360005b83811015613fa1578082015181840152602081019050613f86565b5050505090500191505060405180910390207fe3c5086a518f78e8aa61952bb9c28a9a0f0022707e537ea961faa918e0d89f6f60405160405180910390a250565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146140a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b6140ac6120d5565b61411e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f48617320746f2062652066696e616c697a65640000000000000000000000000081525060200191505060405180910390fd5b600c60009054906101000a900460ff161561413857600080fd5b600061414261132f565b801561416157506141546012546127fe565b61415f6013546127fe565b105b1561417057601454905061418a565b614187601354601454614a5090919063ffffffff16565b90505b6000811115614305576001600c60006101000a81548160ff021916908315150217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561425757600080fd5b505af115801561426b573d6000803e3d6000fd5b505050506040513d602081101561428157600080fd5b8101908080519060200190929190505050614304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4552433230207472616e73666572206661696c6564000000000000000000000081525060200191505060405180910390fd5b5b50565b614310611dd1565b614382576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f48617320746f206265207072652d73746172746564000000000000000000000081525060200191505060405180910390fd5b60145461439f8261439161235b565b6149c890919063ffffffff16565b11156143f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180614ccd6038913960400191505060405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156144d357600080fd5b505af11580156144e7573d6000803e3d6000fd5b505050506040513d60208110156144fd57600080fd5b8101908080519060200190929190505050614580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4661696c656420455243323020746f6b656e207472616e73666572000000000081525060200191505060405180910390fd5b60145461458b61235b565b14156145ad576001600a60146101000a81548160ff0219169083151502179055505b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600881815481106145e357fe5b906000526020600020016000915090505481565b60115481565b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006146306014546127fe565b905090565b6007818154811061464257fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156147b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614dfa6021913960400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600780548060200260200160405190810160405280929190818152602001828054801561488057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311614836575b5050505050905090565b60006006600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008083141561490b5760009050614978565b600082840290508284828161491c57fe5b0414614973576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614da86021913960400191505060405180910390fd5b809150505b92915050565b60006149c083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614a9a565b905092915050565b600080828401905083811015614a46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000614a9283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614b60565b905092915050565b60008083118290614b46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614b0b578082015181840152602081019050614af0565b50505050905090810190601f168015614b385780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614b5257fe5b049050809150509392505050565b6000838311158290614c0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614bd2578082015181840152602081019050614bb7565b50505050905090810190601f168015614bff5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6040518060c0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600015158152602001600015158152509056fe546f6b656e20416464726573732068617320746f2062652064696666207468616e20746865206572633230207375626a65637420746f2073616c655075726368617365206973206569746865722030206f722066696e616c697a65645472616e73666572656420746f6b656e73206861766520746f20626520657175616c206f72206c657373207468616e2070726f706f736564416d6f756e74206973206c657373207468616e20746f6b656e7320617661696c61626c65546f74616c526169736520697320626967676572207468616e206d696e696d756d20726169736520616d6f756e74416d6f756e7420697320736d616c6c6572207468616e206d6178696d756d20616d6f756e74546f74616c5261697365206973206c657373207468616e206d696e696d756d20726169736520616d6f756e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77416464726573732068617320616c72656164792070617373656420746865206d617820616d6f756e74206f66207377617048617320746f2062652064696666207468616e2063757272656e74206f776e6572557365722068617320746f20636f7665722074686520636f7374206f6620746865207377617020696e204554482c207573652074686520636f73742066756e6374696f6e20746f2064657465726d696e65416d6f756e7420697320626967676572207468616e206d696e696d756d20616d6f756e74a165627a7a723058201976832cb41c0befbada94f6a055f1eb1393a2933e82566329bc9c50d44c9ece0029456e6420446174652073686f756c642062652066757274686572207468616e2063757272656e742064617465496e646976696475616c204d6178696d696d20414d6f756e742073686f756c64206265203e20496e646976696475616c204d696e696d756d20416d6f756e744d696e696d756d2052616973652073686f756c64206265203c20546f6b656e7320466f722053616c65546f6b656e7320666f722053616c652073686f756c64206265203e20496e646976696475616c204d696e696d756d20416d6f756e74000000000000000000000000f680429328caaacabee69b7a9fdb21a71419c063000000000000000000000000000000000000000000000000000096110e63500000000000000000000000000000000000000000000000273bb94220470aa8000000000000000000000000000000000000000000000000000000000000601befd000000000000000000000000000000000000000000000000000000000601c11cc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062d3350955011c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000134d85bf641c7c6c0000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001
Deployed Bytecode
0x6080604052600436106103815760003560e01c80638392fe31116101d1578063ba4e5c4911610102578063d65fb160116100a0578063f2aa82181161006f578063f2aa821814611185578063f2fde38b14611200578063f64bfaba14611251578063fecf415a146112bd57610381565b8063d65fb16014611089578063e4101de5146110d8578063eb1edd6114611103578063efbb34d51461115a57610381565b8063c4c1c94f116100dc578063c4c1c94f14610f1b578063c8bdbfb614610fe0578063ca1d209d14610ff7578063d153b60c1461103257610381565b8063ba4e5c4914610dcf578063c24a0f8b14610e4a578063c3ca324f14610e7557610381565b80639b19251a1161016f578063abe7f1ab11610149578063abe7f1ab14610ceb578063b31f8f9314610d46578063b367940e14610d71578063b7fd706d14610da057610381565b80639b19251a14610c1c578063a001ecdd14610c85578063a6e158f814610cb057610381565b80638e75b131116101ab5780638e75b13114610b035780639097548d14610b2e578063917c854d14610b7d57806394b918de14610bee57610381565b80638392fe31146109ef5780638456cb5914610a955780638da5cb5b14610aac57610381565b80633f4ba83a116102b65780636295a2f41161025457806370a898bc1161022357806370a898bc1461090f57806374fa05fb1461093e578063755e3e281461096d578063785e9e861461099857610381565b80636295a2f4146107e157806369bb4dc21461080c5780636a93df11146108375780636d028027146108a357610381565b806347535d7b1161029057806347535d7b146106fd5780634e71e0c81461072c5780635ac699bb146107435780635c975abb146107b257610381565b80633f4ba83a146106885780634089aa9a1461069f57806344691f7e146106ce57610381565b806324600fc3116103235780632ebb5c1e116102fd5780632ebb5c1e1461051f578063313ce5671461054e5780633742a9f7146105795780633af32abf1461061f57610381565b806324600fc3146104d35780632daa8c84146104ea5780632e154107146104f457610381565b806315b578661161035f57806315b578661461040b578063161a7b2a1461043a5780631de18af71461046957806321d3002a146104a457610381565b806307662345146103865780630b97bc86146103b557806312aef8c3146103e0575b600080fd5b34801561039257600080fd5b5061039b611310565b604051808215151515815260200191505060405180910390f35b3480156103c157600080fd5b506103ca611323565b6040518082815260200191505060405180910390f35b3480156103ec57600080fd5b506103f5611329565b6040518082815260200191505060405180910390f35b34801561041757600080fd5b5061042061132f565b604051808215151515815260200191505060405180910390f35b34801561044657600080fd5b5061044f61133c565b604051808215151515815260200191505060405180910390f35b34801561047557600080fd5b506104a26004803603602081101561048c57600080fd5b810190808035906020019092919050505061134f565b005b3480156104b057600080fd5b506104b9611716565b604051808215151515815260200191505060405180910390f35b3480156104df57600080fd5b506104e8611729565b005b6104f2611a69565b005b34801561050057600080fd5b50610509611dcb565b6040518082815260200191505060405180910390f35b34801561052b57600080fd5b50610534611dd1565b604051808215151515815260200191505060405180910390f35b34801561055a57600080fd5b50610563611ddd565b6040518082815260200191505060405180910390f35b34801561058557600080fd5b506105b26004803603602081101561059c57600080fd5b8101908080359060200190929190505050611de3565b604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018315151515815260200182151515158152602001965050505050505060405180910390f35b34801561062b57600080fd5b5061066e6004803603602081101561064257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ef2565b604051808215151515815260200191505060405180910390f35b34801561069457600080fd5b5061069d611f48565b005b3480156106ab57600080fd5b506106b46120d5565b604051808215151515815260200191505060405180910390f35b3480156106da57600080fd5b506106e36120e1565b604051808215151515815260200191505060405180910390f35b34801561070957600080fd5b506107126120ee565b604051808215151515815260200191505060405180910390f35b34801561073857600080fd5b5061074161210e565b005b34801561074f57600080fd5b5061079c6004803603604081101561076657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612314565b6040518082815260200191505060405180910390f35b3480156107be57600080fd5b506107c7612342565b604051808215151515815260200191505060405180910390f35b3480156107ed57600080fd5b506107f6612355565b6040518082815260200191505060405180910390f35b34801561081857600080fd5b5061082161235b565b6040518082815260200191505060405180910390f35b34801561084357600080fd5b5061084c61243c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088f578082015181840152602081019050610874565b505050509050019250505060405180910390f35b3480156108af57600080fd5b506108b8612494565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108fb5780820151818401526020810190506108e0565b505050509050019250505060405180910390f35b34801561091b57600080fd5b50610924612522565b604051808215151515815260200191505060405180910390f35b34801561094a57600080fd5b5061095361252f565b604051808215151515815260200191505060405180910390f35b34801561097957600080fd5b506109826125a4565b6040518082815260200191505060405180910390f35b3480156109a457600080fd5b506109ad6125aa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109fb57600080fd5b50610a2860048036036020811015610a1257600080fd5b81019080803590602001909291905050506125d0565b604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018315151515815260200182151515158152602001965050505050505060405180910390f35b348015610aa157600080fd5b50610aaa612646565b005b348015610ab857600080fd5b50610ac16127d3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b0f57600080fd5b50610b186127f8565b6040518082815260200191505060405180910390f35b348015610b3a57600080fd5b50610b6760048036036020811015610b5157600080fd5b81019080803590602001909291905050506127fe565b6040518082815260200191505060405180910390f35b348015610b8957600080fd5b50610bec60048036036040811015610ba057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612833565b005b610c1a60048036036020811015610c0457600080fd5b8101908080359060200190929190505050612c0b565b005b348015610c2857600080fd5b50610c6b60048036036020811015610c3f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613558565b604051808215151515815260200191505060405180910390f35b348015610c9157600080fd5b50610c9a613578565b6040518082815260200191505060405180910390f35b348015610cbc57600080fd5b50610ce960048036036020811015610cd357600080fd5b810190808035906020019092919050505061357e565b005b348015610cf757600080fd5b50610d4460048036036040811015610d0e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506139b4565b005b348015610d5257600080fd5b50610d5b613bbe565b6040518082815260200191505060405180910390f35b348015610d7d57600080fd5b50610d86613bcc565b604051808215151515815260200191505060405180910390f35b348015610dac57600080fd5b50610db5613c50565b604051808215151515815260200191505060405180910390f35b348015610ddb57600080fd5b50610e0860048036036020811015610df257600080fd5b8101908080359060200190929190505050613c63565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e5657600080fd5b50610e5f613c9f565b6040518082815260200191505060405180910390f35b348015610e8157600080fd5b50610ec460048036036020811015610e9857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ca5565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610f07578082015181840152602081019050610eec565b505050509050019250505060405180910390f35b348015610f2757600080fd5b50610fde60048036036020811015610f3e57600080fd5b8101908080359060200190640100000000811115610f5b57600080fd5b820183602082011115610f6d57600080fd5b80359060200191846020830284011164010000000083111715610f8f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050613d3c565b005b348015610fec57600080fd5b50610ff5613fe2565b005b34801561100357600080fd5b506110306004803603602081101561101a57600080fd5b8101908080359060200190929190505050614308565b005b34801561103e57600080fd5b506110476145b0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561109557600080fd5b506110c2600480360360208110156110ac57600080fd5b81019080803590602001909291905050506145d6565b6040518082815260200191505060405180910390f35b3480156110e457600080fd5b506110ed6145f7565b6040518082815260200191505060405180910390f35b34801561110f57600080fd5b506111186145fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561116657600080fd5b5061116f614623565b6040518082815260200191505060405180910390f35b34801561119157600080fd5b506111be600480360360208110156111a857600080fd5b8101908080359060200190929190505050614635565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561120c57600080fd5b5061124f6004803603602081101561122357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614671565b005b34801561125d57600080fd5b506112666147fc565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156112a957808201518184015260208101905061128e565b505050509050019250505060405180910390f35b3480156112c957600080fd5b506112f6600480360360208110156112e057600080fd5b810190808035906020019092919050505061488a565b604051808215151515815260200191505060405180910390f35b600460009054906101000a900460ff1681565b600e5481565b60145481565b6000806012541415905090565b600a60149054906101000a900460ff1681565b6113576120d5565b6113c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f48617320746f2062652066696e616c697a65640000000000000000000000000081525060200191505060405180910390fd5b601560009054906101000a900460ff161561144c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f48617320746f206265206e6f6e2041746f6d696320737761700000000000000081525060200191505060405180910390fd5b61145461132f565b6114c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4d696e696d756d2072616973652068617320746f20657869737400000000000081525060200191505060405180910390fd5b6114ce61252f565b611540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d696e696d756d2072616973652068617320746f20626520726561636865640081525060200191505060405180910390fd5b600060066000838152602001908152602001600020600001541415801561158857506006600082815260200190815260200160002060040160009054906101000a900460ff16155b6115dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614cac6021913960400191505060405180910390fd5b6115e68161488a565b611658576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f41646472657373206973206e6f7420627579657200000000000000000000000081525060200191505060405180910390fd5b60016006600083815260200190815260200160002060040160006101000a81548160ff02191690831515021790555060016006600083815260200190815260200160002060040160016101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166108fc60066000848152602001908152602001600020600201549081150290604051600060405180830381858888f19350505050158015611712573d6000803e3d6000fd5b5050565b601560009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff161561186e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f48617320746f20626520756e706175736564000000000000000000000000000081525060200191505060405180910390fd5b6118766120d5565b6118e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f48617320746f2062652066696e616c697a65640000000000000000000000000081525060200191505060405180910390fd5b6118f0613bcc565b611962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d696e696d756d2072616973652068617320746f20626520726561636865640081525060200191505060405180910390fd5b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6119dd60646119cf6016543073ffffffffffffffffffffffffffffffffffffffff16316148f890919063ffffffff16565b61497e90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611a08573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611a66573d6000803e3d6000fd5b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff16611bad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f48617320746f206265207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611c0a573d6000803e3d6000fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611ce957600080fd5b505afa158015611cfd573d6000803e3d6000fd5b505050506040513d6020811015611d1357600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d8d57600080fd5b505af1158015611da1573d6000803e3d6000fd5b505050506040513d6020811015611db757600080fd5b810190808051906020019092919050505050565b60105481565b6000600e544210905090565b600b5481565b600080600080600080611df4614c20565b600660008981526020019081526020016000206040518060c0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250509050806000015181602001518260400151836060015184608001518560a001519650965096509650965096505091939550919395565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461200a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff1661208c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f48617320746f206265207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6000600160146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600f544211905090565b6000600e54421015905090565b60006120f86120e1565b801561210957506121076120d5565b155b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f48617320746f206265207468652070726f706f736564206f776e65720000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6009602052816000526040600020818154811061232d57fe5b90600052602060002001600091509150505481565b600160149054906101000a900460ff1681565b600d5481565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156123fc57600080fd5b505afa158015612410573d6000803e3d6000fd5b505050506040513d602081101561242657600080fd5b8101908080519060200190929190505050905090565b6060600880548060200260200160405190810160405280929190818152602001828054801561248a57602002820191906000526020600020905b815481526020019060010190808311612476575b5050505050905090565b6060600380548060200260200160405190810160405280929190818152602001828054801561251857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116124ce575b5050505050905090565b6000806010541415905090565b600061253c6012546127fe565b6125476013546127fe565b1061259d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180614d29602e913960400191505060405180910390fd5b6001905090565b60135481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154908060040160009054906101000a900460ff16908060040160019054906101000a900460ff16905086565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff161561278b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f48617320746f20626520756e706175736564000000000000000000000000000081525060200191505060405180910390fd5b60018060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b600061282c600b54600a0a61281e600d54856148f890919063ffffffff16565b61497e90919063ffffffff16565b9050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b6128fd6120d5565b61296f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f48617320746f2062652066696e616c697a65640000000000000000000000000081525060200191505060405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180614c71603b913960400191505060405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb838373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612ab557600080fd5b505afa158015612ac9573d6000803e3d6000fd5b505050506040513d6020811015612adf57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b5957600080fd5b505af1158015612b6d573d6000803e3d6000fd5b505050506040513d6020811015612b8357600080fd5b8101908080519060200190929190505050612c06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f455243323020546f6b656e207472616e73666572206661696c6564000000000081525060200191505060405180910390fd5b505050565b600160149054906101000a900460ff1615612c8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f48617320746f20626520756e706175736564000000000000000000000000000081525060200191505060405180910390fd5b600a60149054906101000a900460ff16612d10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f48617320746f2062652066756e6465640000000000000000000000000000000081525060200191505060405180910390fd5b612d186120ee565b612d8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f48617320746f206265206f70656e00000000000000000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900460ff1615612db257612da833611ef2565b612db157600080fd5b5b60008111612e28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f416d6f756e742068617320746f20626520706f7369746976650000000000000081525060200191505060405180910390fd5b612e30613bbe565b811115612e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180614d056024913960400191505060405180910390fd5b612e91816127fe565b3414612ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526051815260200180614e1b6051913960600191505060405180910390fd5b601054811015612f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180614e6c6024913960400191505060405180910390fd5b601154811115612f9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614d576025913960400191505060405180910390fd5b6060612fa933613ca5565b9050600080905060008090505b82518110156130cb57612fc7614c20565b60066000858481518110612fd757fe5b602002602001015181526020019081526020016000206040518060c0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505090506130bb8160000151846149c890919063ffffffff16565b9250508080600101915050612fb6565b506011546130e284836149c890919063ffffffff16565b1115613139576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180614dc96031913960400191505060405180910390fd5b601560009054906101000a900460ff16156132a557600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156131f757600080fd5b505af115801561320b573d6000803e3d6000fd5b505050506040513d602081101561322157600080fd5b81019080805190602001909291905050506132a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4552433230207472616e73666572206469646ec2b47420776f726b000000000081525060200191505060405180910390fd5b5b600060055490506132c260016005546149c890919063ffffffff16565b6005819055506132d0614c20565b6040518060c001604052808681526020013373ffffffffffffffffffffffffffffffffffffffff168152602001348152602001428152602001601560009054906101000a900460ff161515815260200160001515815250905080600660008481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff02191690831515021790555060a08201518160040160016101000a81548160ff0219169083151502179055509050506008829080600181540180825580915050906001820390600052602060002001600090919290919091505550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082908060018154018082558091505090600182039060005260206000200160009091929091909150555060073390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506134f5856013546149c890919063ffffffff16565b6013819055503373ffffffffffffffffffffffffffffffffffffffff167fbec109f7ee137de661c6887caa96653c0545050a9908a3b6eb5190440bbec8648642604051808381526020018281526020019250505060405180910390a25050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60165481565b601560009054906101000a900460ff1615613601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f48617320746f206265206e6f6e2041746f6d696320737761700000000000000081525060200191505060405180910390fd5b6136096120d5565b61367b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f48617320746f2062652066696e616c697a65640000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff16156136fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f48617320746f20626520756e706175736564000000000000000000000000000081525060200191505060405180910390fd5b600060066000838152602001908152602001600020600001541415801561374657506006600082815260200190815260200160002060040160009054906101000a900460ff16155b61379b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614cac6021913960400191505060405180910390fd5b6137a48161488a565b613816576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f41646472657373206973206e6f7420627579657200000000000000000000000081525060200191505060405180910390fd5b60016006600083815260200190815260200160002060040160006101000a81548160ff021916908315150217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3360066000858152602001908152602001600020600001546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561390457600080fd5b505af1158015613918573d6000803e3d6000fd5b505050506040513d602081101561392e57600080fd5b81019080805190602001909291905050506139b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4552433230207472616e73666572206661696c6564000000000000000000000081525060200191505060405180910390fd5b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b60038181548110613a8357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613ae557600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038181548110613b4a57fe5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690558173ffffffffffffffffffffffffffffffffffffffff167fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df75760405160405180910390a25050565b600060135460145403905090565b6000613bd661132f565b15613c4957613be66012546127fe565b613bf16013546127fe565b1015613c48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614d7c602c913960400191505060405180910390fd5b5b6001905090565b600c60009054906101000a900460ff1681565b60038181548110613c7057fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6060600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015613d3057602002820191906000526020600020905b815481526020019060010190808311613d1c575b50505050509050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613dfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b60008090505b8151811015613f6f576001151560026000848481518110613e2157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613e7e57600080fd5b600160026000848481518110613e9057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003828281518110613ef757fe5b602002602001015190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508080600101915050613e04565b508060405180828051906020019060200280838360005b83811015613fa1578082015181840152602081019050613f86565b5050505090500191505060405180910390207fe3c5086a518f78e8aa61952bb9c28a9a0f0022707e537ea961faa918e0d89f6f60405160405180910390a250565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146140a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b6140ac6120d5565b61411e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f48617320746f2062652066696e616c697a65640000000000000000000000000081525060200191505060405180910390fd5b600c60009054906101000a900460ff161561413857600080fd5b600061414261132f565b801561416157506141546012546127fe565b61415f6013546127fe565b105b1561417057601454905061418a565b614187601354601454614a5090919063ffffffff16565b90505b6000811115614305576001600c60006101000a81548160ff021916908315150217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561425757600080fd5b505af115801561426b573d6000803e3d6000fd5b505050506040513d602081101561428157600080fd5b8101908080519060200190929190505050614304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4552433230207472616e73666572206661696c6564000000000000000000000081525060200191505060405180910390fd5b5b50565b614310611dd1565b614382576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f48617320746f206265207072652d73746172746564000000000000000000000081525060200191505060405180910390fd5b60145461439f8261439161235b565b6149c890919063ffffffff16565b11156143f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180614ccd6038913960400191505060405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156144d357600080fd5b505af11580156144e7573d6000803e3d6000fd5b505050506040513d60208110156144fd57600080fd5b8101908080519060200190929190505050614580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4661696c656420455243323020746f6b656e207472616e73666572000000000081525060200191505060405180910390fd5b60145461458b61235b565b14156145ad576001600a60146101000a81548160ff0219169083151502179055505b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600881815481106145e357fe5b906000526020600020016000915090505481565b60115481565b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006146306014546127fe565b905090565b6007818154811061464257fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f48617320746f206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156147b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614dfa6021913960400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600780548060200260200160405190810160405280929190818152602001828054801561488057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311614836575b5050505050905090565b60006006600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008083141561490b5760009050614978565b600082840290508284828161491c57fe5b0414614973576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614da86021913960400191505060405180910390fd5b809150505b92915050565b60006149c083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614a9a565b905092915050565b600080828401905083811015614a46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000614a9283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614b60565b905092915050565b60008083118290614b46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614b0b578082015181840152602081019050614af0565b50505050905090810190601f168015614b385780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614b5257fe5b049050809150509392505050565b6000838311158290614c0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614bd2578082015181840152602081019050614bb7565b50505050905090810190601f168015614bff5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6040518060c0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600015158152602001600015158152509056fe546f6b656e20416464726573732068617320746f2062652064696666207468616e20746865206572633230207375626a65637420746f2073616c655075726368617365206973206569746865722030206f722066696e616c697a65645472616e73666572656420746f6b656e73206861766520746f20626520657175616c206f72206c657373207468616e2070726f706f736564416d6f756e74206973206c657373207468616e20746f6b656e7320617661696c61626c65546f74616c526169736520697320626967676572207468616e206d696e696d756d20726169736520616d6f756e74416d6f756e7420697320736d616c6c6572207468616e206d6178696d756d20616d6f756e74546f74616c5261697365206973206c657373207468616e206d696e696d756d20726169736520616d6f756e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77416464726573732068617320616c72656164792070617373656420746865206d617820616d6f756e74206f66207377617048617320746f2062652064696666207468616e2063757272656e74206f776e6572557365722068617320746f20636f7665722074686520636f7374206f6620746865207377617020696e204554482c207573652074686520636f73742066756e6374696f6e20746f2064657465726d696e65416d6f756e7420697320626967676572207468616e206d696e696d756d20616d6f756e74a165627a7a723058201976832cb41c0befbada94f6a055f1eb1393a2933e82566329bc9c50d44c9ece0029
Deployed Bytecode Sourcemap
10264:13037:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8988:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8988:35:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10846:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10846:24:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11287:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11287:32:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15434:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15434:98:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10678:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10678:32:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20909:678;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20909:678:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20909:678:0;;;;;;;;;;;;;;;;;:::i;:::-;;11358:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11358:32:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;21622:312;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21622:312:0;;;:::i;:::-;;23110:188;;;:::i;:::-;;10941:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10941:42:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16328:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16328:101:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10717:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10717:24:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16796:319;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16796:319:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16796:319:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10145:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10145:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10145:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8743:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8743:105:0;;;:::i;:::-;;16105:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16105:101:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16214:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16214:102:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16437:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16437:101:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7508:247;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7508:247:0;;;:::i;:::-;;10571:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10571:48:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10571:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8026:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8026:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10795:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10795:25:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15196:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15196:113:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17123:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17123:101:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17123:101:0;;;;;;;;;;;;;;;;;10017:119;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10017:119:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10017:119:0;;;;;;;;;;;;;;;;;16546:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16546:109:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15592:203;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15592:203:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11198:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11198:34:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10653:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10653:18:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10376:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10376:45:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10376:45:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8547:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8547:103:0;;;:::i;:::-;;6761:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6761:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11107:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11107:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16663:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16663:125:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16663:125:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22623:448;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22623:448:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22623:448:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18104:2188;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18104:2188:0;;;;;;;;;;;;;;;;;:::i;:::-;;8896:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8896:41:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8896:41:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11563:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11563:32:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20353:513;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20353:513:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20353:513:0;;;;;;;;;;;;;;;;;:::i;:::-;;9744:265;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9744:265:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9744:265:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15317:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15317:109:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15851:246;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15851:246:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10748:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10748:40:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8944:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8944:37:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8944:37:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10895:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10895:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17331:127;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17331:127:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17331:127:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17331:127:0;;;;;;;;;;;;;;;;;9401:335;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9401:335:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9401:335:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9401:335:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9401:335:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9401:335:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9401:335:0;;;;;;;;;;;;;;;:::i;:::-;;21948:664;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21948:664:0;;;:::i;:::-;;17499:565;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17499:565:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17499:565:0;;;;;;;;;;;;;;;;;:::i;:::-;;6788:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6788:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10514;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10514:28:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10514:28:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11024:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11024:42:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11436:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11436:79:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15085:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15085:103:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10453:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10453:23:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10453:23:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7298:202;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7298:202:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7298:202:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;17232:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17232:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17232:91:0;;;;;;;;;;;;;;;;;14913:139;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14913:139:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14913:139:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8988:35;;;;;;;;;;;;;:::o;10846:24::-;;;;:::o;11287:32::-;;;;:::o;15434:98::-;15482:4;15522:1;15506:12;;:17;;15498:26;;15434:98;:::o;10678:32::-;;;;;;;;;;;;;:::o;20909:678::-;14183:14;:12;:14::i;:::-;14175:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13945:17;;;;;;;;;;;13944:18;13936:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21033:17;:15;:17::i;:::-;21025:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21100:25;:23;:25::i;:::-;21092:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21269:1;21236:9;:22;21246:11;21236:22;;;;;;;;;;;:29;;;:34;;21235:76;;;;;21276:9;:22;21286:11;21276:22;;;;;;;;;;;:35;;;;;;;;;;;;21275:36;21235:76;21227:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21368:20;21376:11;21368:7;:20::i;:::-;21360:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21462:4;21424:9;:22;21434:11;21424:22;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;21511:4;21477:9;:22;21487:11;21477:22;;;;;;;;;;;:31;;;:38;;;;;;;;;;;;;;;;;;21526:10;:19;;:53;21546:9;:22;21556:11;21546:22;;;;;;;;;;;:32;;;21526:53;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21526:53:0;20909:678;:::o;11358:32::-;;;;;;;;;;;;;:::o;21622:312::-;7245:5;;;;;;;;;;;7231:19;;:10;:19;;;7223:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8212:6;;;;;;;;;;;8211:7;8203:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14183:14;:12;:14::i;:::-;14175:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21715:22;:20;:22::i;:::-;21707:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21784:11;;;;;;;;;;;:20;;:71;21805:49;21850:3;21805:40;21831:13;;21813:4;21805:21;;;:25;;:40;;;;:::i;:::-;:44;;:49;;;;:::i;:::-;21784:71;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21784:71:0;21884:10;:19;;:42;21912:4;21904:21;;;21884:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21884:42:0;21622:312::o;23110:188::-;7245:5;;;;;;;;;;;7231:19;;:10;:19;;;7223:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8410:6;;;;;;;;;;;8402:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23179:10;:19;;:42;23207:4;23199:21;;;23179:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23179:42:0;23232:5;;;;;;;;;;;:14;;;23247:10;23259:5;;;;;;;;;;;:15;;;23283:4;23259:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23259:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23259:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23259:30:0;;;;;;;;;;;;;;;;23232:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23232:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23232:58:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23232:58:0;;;;;;;;;;;;;;;;;23110:188::o;10941:42::-;;;;:::o;16328:101::-;16371:4;16412:9;;16394:15;:27;16387:34;;16328:101;:::o;10717:24::-;;;;:::o;16796:319::-;16862:7;16871;16880;16889;16898:4;16904;16920:24;;:::i;:::-;16947:9;:23;16957:12;16947:23;;;;;;;;;;;16920:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16989:8;:15;;;17006:8;:18;;;17026:8;:18;;;17046:8;:18;;;17066:8;:21;;;17089:8;:17;;;16981:126;;;;;;;;;;;;;16796:319;;;;;;;:::o;10145:112::-;10206:4;10230:9;:19;10240:8;10230:19;;;;;;;;;;;;;;;;;;;;;;;;;10223:26;;10145:112;;;:::o;8743:105::-;7245:5;;;;;;;;;;;7231:19;;:10;:19;;;7223:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8410:6;;;;;;;;;;;8402:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8810:5;8801:6;;:14;;;;;;;;;;;;;;;;;;8831:9;;;;;;;;;;8743:105::o;16105:101::-;16150:4;16191:7;;16173:15;:25;16166:32;;16105:101;:::o;16214:102::-;16257:4;16299:9;;16280:15;:28;;16273:35;;16214:102;:::o;16437:101::-;16476:4;16499:12;:10;:12::i;:::-;:31;;;;;16516:14;:12;:14::i;:::-;16515:15;16499:31;16492:38;;16437:101;:::o;7508:247::-;7574:13;;;;;;;;;;;7560:27;;:10;:27;;;7552:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7664:13;;;;;;;;;;;7636:42;;7657:5;;;;;;;;;;;7636:42;;;;;;;;;;;;7697:13;;;;;;;;;;;7689:5;;:21;;;;;;;;;;;;;;;;;;7745:1;7721:13;;:26;;;;;;;;;;;;;;;;;;7508:247::o;10571:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8026:26::-;;;;;;;;;;;;;:::o;10795:25::-;;;;:::o;15196:113::-;15244:7;15271:5;;;;;;;;;;;:15;;;15295:4;15271:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15271:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15271:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15271:30:0;;;;;;;;;;;;;;;;15264:37;;15196:113;:::o;17123:101::-;17169:16;17205:11;17198:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17123:101;:::o;10017:119::-;10072:16;10108:20;10101:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10017:119;:::o;16546:109::-;16595:4;16645:1;16618:23;;:28;;16610:37;;16546:109;:::o;15592:203::-;15648:4;15696:18;15701:12;;15696:4;:18::i;:::-;15672:21;15677:15;;15672:4;:21::i;:::-;:42;15664:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15783:4;15776:11;;15592:203;:::o;11198:34::-;;;;:::o;10653:18::-;;;;;;;;;;;;;:::o;10376:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8547:103::-;7245:5;;;;;;;;;;;7231:19;;:10;:19;;;7223:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8212:6;;;;;;;;;;;8211:7;8203:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8615:4;8606:6;;:13;;;;;;;;;;;;;;;;;;8635:7;;;;;;;;;;8547:103::o;6761:20::-;;;;;;;;;;;;;:::o;11107:31::-;;;;:::o;16663:125::-;16715:4;16738:41;16770:8;;16766:2;:12;16738:23;16750:10;;16738:7;:11;;:23;;;;:::i;:::-;:27;;:41;;;;:::i;:::-;16731:48;;16663:125;;;:::o;22623:448::-;7245:5;;;;;;;;;;;7231:19;;:10;:19;;;7223:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14183:14;:12;:14::i;:::-;14175:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22770:5;;;;;;;;;;;22745:31;;:13;:31;;;;22737:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22912:16;22937:13;22912:39;;22970:10;:19;;;22990:3;22995:10;:20;;;23024:4;22995:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22995:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22995:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22995:35:0;;;;;;;;;;;;;;;;22970:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22970:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22970:61:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22970:61:0;;;;;;;;;;;;;;;;22962:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14232:1;22623:448;;:::o;18104:2188::-;8212:6;;;;;;;;;;;8211:7;8203:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14825:12;;;;;;;;;;;14817:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14385:8;:6;:8::i;:::-;14377:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9190:15;;;;;;;;;;;9187:80;;;9229:25;9243:10;9229:13;:25::i;:::-;9221:34;;;;;;9187:80;18275:1;18265:7;:11;18257:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18398:12;:10;:12::i;:::-;18387:7;:23;;18379:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18584:13;18589:7;18584:4;:13::i;:::-;18571:9;:26;18563:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18775:23;;18764:7;:34;;18756:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18932:23;;18921:7;:34;;18913:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19067:27;19097:26;19112:10;19097:14;:26::i;:::-;19067:56;;19134:37;19174:1;19134:41;;19191:6;19200:1;19191:10;;19186:222;19207:10;:17;19203:1;:21;19186:222;;;19246:25;;:::i;:::-;19274:9;:24;19284:10;19295:1;19284:13;;;;;;;;;;;;;;19274:24;;;;;;;;;;;19246:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19345:51;19379:9;:16;;;19345:29;:33;;:51;;;;:::i;:::-;19313:83;;19186:222;19226:3;;;;;;;19186:222;;;;19472:23;;19426:42;19460:7;19426:29;:33;;:42;;;;:::i;:::-;:69;;19418:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19565:17;;;;;;;;;;;19562:159;;;19642:5;;;;;;;;;;;:14;;;19657:10;19669:7;19642:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19642:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19642:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19642:35:0;;;;;;;;;;;;;;;;19634:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19562:159;19741:19;19763:9;;19741:31;;19795:16;19809:1;19795:9;;:13;;:16;;;;:::i;:::-;19783:9;:28;;;;19859:24;;:::i;:::-;19886:104;;;;;;;;19895:7;19886:104;;;;19904:10;19886:104;;;;;;19916:9;19886:104;;;;19927:15;19886:104;;;;19944:17;;;;;;;;;;;19886:104;;;;;;19984:5;19886:104;;;;;19859:131;;20026:8;20001:9;:22;20011:11;20001:22;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20045:11;20062;20045:29;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;20045:29:0;;;;;;;;;;;;;;;;;;;;;;20085:11;:23;20097:10;20085:23;;;;;;;;;;;;;;;20114:11;20085:41;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;20085:41:0;;;;;;;;;;;;;;;;;;;;;;20137:6;20149:10;20137:23;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;20137:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20189:28;20209:7;20189:15;;:19;;:28;;;;:::i;:::-;20171:15;:46;;;;20256:10;20233:51;;;20247:7;20268:15;20233:51;;;;;;;;;;;;;;;;;;;;;;;;9277:1;;;;18104:2188;:::o;8896:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;11563:32::-;;;;:::o;20353:513::-;13945:17;;;;;;;;;;;13944:18;13936:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14183:14;:12;:14::i;:::-;14175:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8212:6;;;;;;;;;;;8211:7;8203:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20559:1;20526:9;:22;20536:11;20526:22;;;;;;;;;;;:29;;;:34;;20525:76;;;;;20566:9;:22;20576:11;20566:22;;;;;;;;;;;:35;;;;;;;;;;;;20565:36;20525:76;20517:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20658:20;20666:11;20658:7;:20::i;:::-;20650:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20752:4;20714:9;:22;20724:11;20714:22;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;20775:5;;;;;;;;;;;:14;;;20790:10;20802:9;:22;20812:11;20802:22;;;;;;;;;;;:29;;;20775:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20775:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20775:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20775:57:0;;;;;;;;;;;;;;;;20767:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20353:513;:::o;9744:265::-;7245:5;;;;;;;;;;;7231:19;;:10;:19;;;7223:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9842:20;9863:6;9842:28;;;;;;;;;;;;;;;;;;;;;;;;;9830:40;;:8;:40;;;9822:49;;;;;;9904:5;9882:9;:19;9892:8;9882:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;9927:20;9948:6;9927:28;;;;;;;;;;;;;;;;9920:35;;;;;;;;;;;9992:8;9971:30;;;;;;;;;;;;9744:265;;:::o;15317:109::-;15360:7;15403:15;;15387:13;;:31;15380:38;;15317:109;:::o;15851:246::-;15904:4;15923:17;:15;:17::i;:::-;15920:148;;;15989:18;15994:12;;15989:4;:18::i;:::-;15964:21;15969:15;;15964:4;:21::i;:::-;:43;;15956:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15920:148;16085:4;16078:11;;15851:246;:::o;10748:40::-;;;;;;;;;;;;;:::o;8944:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10895:22::-;;;;:::o;17331:127::-;17393:16;17429:11;:21;17441:8;17429:21;;;;;;;;;;;;;;;17422:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17331:127;;;:::o;9401:335::-;7245:5;;;;;;;;;;;7231:19;;:10;:19;;;7223:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9476:6;9485:1;9476:10;;9471:214;9492:10;:17;9488:1;:21;9471:214;;;9567:4;9539:32;;:9;:24;9549:10;9560:1;9549:13;;;;;;;;;;;;;;9539:24;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;9531:41;;;;;;9614:4;9587:9;:24;9597:10;9608:1;9597:13;;;;;;;;;;;;;;9587:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;9633:20;9659:10;9670:1;9659:13;;;;;;;;;;;;;;9633:40;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;9633:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9511:3;;;;;;;9471:214;;;;9717:10;9700:28;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9700:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;9401:335;:::o;21948:664::-;7245:5;;;;;;;;;;;7231:19;;:10;:19;;;7223:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14183:14;:12;:14::i;:::-;14175:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22035:20;;;;;;;;;;;22034:21;22026:30;;;;;;22067:20;22101:17;:15;:17::i;:::-;:79;;;;;22161:18;22166:12;;22161:4;:18::i;:::-;22137:21;22142:15;;22137:4;:21::i;:::-;:42;22101:79;22098:332;;;22247:13;;22232:28;;22098:332;;;22384:34;22402:15;;22384:13;;:17;;:34;;;;:::i;:::-;22369:49;;22098:332;22460:1;22445:12;:16;22442:163;;;22500:4;22477:20;;:27;;;;;;;;;;;;;;;;;;22527:5;;;;;;;;;;;:14;;;22542:10;22554:12;22527:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22527:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22527:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22527:40:0;;;;;;;;;;;;;;;;22519:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22442:163;14232:1;21948:664::o;17499:565::-;14604:12;:10;:12::i;:::-;14596:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17681:13;;17647:30;17669:7;17647:17;:15;:17::i;:::-;:21;;:30;;;;:::i;:::-;:47;;17639:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17806:5;;;;;;;;;;;:18;;;17825:10;17845:4;17852:7;17806:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17806:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17806:54:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17806:54:0;;;;;;;;;;;;;;;;17798:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17997:13;;17976:17;:15;:17::i;:::-;:34;17973:84;;;18041:4;18026:12;;:19;;;;;;;;;;;;;;;;;;17973:84;17499:565;:::o;6788:28::-;;;;;;;;;;;;;:::o;10514:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11024:42::-;;;;:::o;11436:79::-;;;;;;;;;;;;;:::o;15085:103::-;15132:7;15160:19;15165:13;;15160:4;:19::i;:::-;15152:28;;15085:103;:::o;10453:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7298:202::-;7245:5;;;;;;;;;;;7231:19;;:10;:19;;;7223:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7399:14;7385:28;;:10;:28;;;;7377:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7478:14;7462:13;;:30;;;;;;;;;;;;;;;;;;7298:202;:::o;17232:91::-;17273:16;17309:6;17302:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17232:91;:::o;14913:139::-;14972:4;15011:9;:22;15021:11;15011:22;;;;;;;;;;;:32;;;;;;;;;;;;14997:46;;:10;:46;;;14989:55;;14913:139;;;:::o;2724:471::-;2782:7;3032:1;3027;:6;3023:47;;;3057:1;3050:8;;;;3023:47;3082:9;3098:1;3094;:5;3082:17;;3127:1;3122;3118;:5;;;;;;:10;3110:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3186:1;3179:8;;;2724:471;;;;;:::o;3663:132::-;3721:7;3748:39;3752:1;3755;3748:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3741:46;;3663:132;;;;:::o;1352:181::-;1410:7;1430:9;1446:1;1442;:5;1430:17;;1471:1;1466;:6;;1458:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1524:1;1517:8;;;1352:181;;;;:::o;1808:136::-;1866:7;1893:43;1897:1;1900;1893:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1886:50;;1808:136;;;;:::o;4325:345::-;4411:7;4510:1;4506;:5;4513:12;4498:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4498:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4537:9;4553:1;4549;:5;;;;;;4537:17;;4661:1;4654:8;;;4325:345;;;;;:::o;2281:192::-;2367:7;2400:1;2395;:6;;2403:12;2387:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2387:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2427:9;2443:1;2439;:5;2427:17;;2464:1;2457:8;;;2281:192;;;;;:::o;10264:13037::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://1976832cb41c0befbada94f6a055f1eb1393a2933e82566329bc9c50d44c9ece
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.57
Net Worth in ETH
0.000285
Token Allocations
BFLY
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $0.004333 | 132.6061 | $0.5745 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.