Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
OinStake
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity >=0.5.0 <0.8.0; import "./Math.sol"; import "./SafeMath.sol"; import "./IERC20.sol"; import "./Owned.sol"; import "./IDparam.sol"; import "./WhiteList.sol"; interface IOracle { function val() external returns (uint256); function poke(uint256 price) external; function peek() external; } interface IESM { function isStakePaused() external view returns (bool); function isRedeemPaused() external view returns (bool); function isClosed() external view returns (bool); function time() external view returns (uint256); } interface ICoin { function burn(address account, uint256 amount) external; function mint(address account, uint256 amount) external; function balanceOf(address account) external view returns (uint256); } contract OinStake is Owned, WhiteList { using Math for uint256; using SafeMath for uint256; /** * @notice Struct reward pools state * @param index Accumulated earnings index * @param block Update index, updating blockNumber together */ struct RewardState { uint256 index; uint256 block; } /** * @notice reward pools state * @param index Accumulated earnings index by staker * @param reward Accumulative reward */ struct StakerState { uint256 index; uint256 reward; } /// @notice TThe reward pool put into by the project side uint256 public reward; /// @notice The number of token per-block uint256 public rewardSpeed = 5e8; /// @notice Inital index uint256 public initialIndex = 1e16; /// @notice Amplification factor uint256 public doubleScale = 1e16; /// @notice The instance reward pools state RewardState public rewardState; /// @notice All staker-instances state mapping(address => StakerState) public stakerStates; /// @notice The amount by staker with token mapping(address => uint256) public tokens; /// @notice The amount by staker with coin mapping(address => uint256) public coins; /// @notice The total amount of out-coin in sys uint256 public totalCoin; /// @notice The total amount of stake-token in sys uint256 public totalToken; /// @notice Cumulative service fee, it will be burn, not join reward. uint256 public sFee; uint256 constant ONE = 10**8; address constant blackhole = 0x1111111111111111111111111111111111111111; /// @notice Dparam address IDparam params; /// @notice Oracle address IOracle orcl; /// @notice Esm address IESM esm; /// @notice Coin address ICoin coin; /// @notice Token address IERC20 token; /// @notice Setup Oracle address success event SetupOracle(address orcl); /// @notice Setup Dparam address success event SetupParam(address param); /// @notice Setup Esm address success event SetupEsm(address esm); /// @notice Setup Token&Coin address success event SetupCoin(address token, address coin); /// @notice Stake success event StakeEvent(uint256 token, uint256 coin); /// @notice redeem success event RedeemEvent(uint256 token, uint256 move, uint256 fee, uint256 coin); /// @notice Update index success event IndexUpdate(uint256 delt, uint256 block, uint256 index); /// @notice ClaimToken success event ClaimToken(address holder, uint256 amount); /// @notice InjectReward success event InjectReward(uint256 amount); /// @notice ExtractReward success event ExtractReward(address reciver, uint256 amount); /** * @notice Construct a new OinStake, owner by msg.sender * @param _param Dparam address * @param _orcl Oracle address * @param _esm Esm address */ constructor( address _param, address _orcl, address _esm ) public Owned(msg.sender) { params = IDparam(_param); orcl = IOracle(_orcl); esm = IESM(_esm); rewardState = RewardState(initialIndex, getBlockNumber()); } modifier notClosed() { require(!esm.isClosed(), "System closed"); _; } /** * @notice reset Dparams address. * @param _params Configuration dynamic params contract address */ function setupParams(address _params) public onlyWhiter { params = IDparam(_params); emit SetupParam(_params); } /** * @notice reset Oracle address. * @param _orcl Configuration Oracle contract address */ function setupOracle(address _orcl) public onlyWhiter { orcl = IOracle(_orcl); emit SetupOracle(_orcl); } /** * @notice reset Esm address. * @param _esm Configuration Esm contract address */ function setupEsm(address _esm) public onlyWhiter { esm = IESM(_esm); emit SetupEsm(_esm); } /** * @notice get Dparam address. * @return Dparam contract address */ function getParamsAddr() public view returns (address) { return address(params); } /** * @notice get Oracle address. * @return Oracle contract address */ function getOracleAddr() public view returns (address) { return address(orcl); } /** * @notice get Esm address. * @return Esm contract address */ function getEsmAddr() public view returns (address) { return address(esm); } /** * @notice get token of staking address. * @return ERC20 address */ function getCoinAddress() public view returns (address) { return address(coin); } /** * @notice get StableToken address. * @return ERC20 address */ function getTokenAddress() public view returns (address) { return address(token); } /** * @notice inject token address & coin address only once. * @param _token token address * @param _coin coin address */ function setup(address _token, address _coin) public onlyWhiter { require( address(token) == address(0) && address(coin) == address(0), "setuped yet." ); token = IERC20(_token); coin = ICoin(_coin); emit SetupCoin(_token, _coin); } /** * @notice Get the number of debt by the `account` * @param account token address * @return (tokenAmount,coinAmount) */ function debtOf(address account) public view returns (uint256, uint256) { return (tokens[account], coins[account]); } /** * @notice Get the number of debt by the `account` * @param coinAmount The amount that staker want to get stableToken * @return The amount that staker want to transfer token. */ function getInputToken(uint256 coinAmount) public view returns (uint256 tokenAmount) { tokenAmount = coinAmount.mul(params.stakeRate()); } /** * @notice Normally redeem anyAmount internal * @param coinAmount The number of coin will be staking */ function stake(uint256 coinAmount) external notClosed { require(!esm.isStakePaused(), "Stake paused"); require(coinAmount > 0, "The quantity is less than the minimum"); require(orcl.val() > 0, "Oracle price not initialized."); require(params.isNormal(orcl.val()), "Oin's price is too low."); address from = msg.sender; if (coins[from] == 0) { require( coinAmount >= params.minMint(), "First make coin must grater than 100." ); } accuredToken(from); uint256 tokenAmount = getInputToken(coinAmount); token.transferFrom(from, address(this), tokenAmount); coin.mint(from, coinAmount); totalCoin = totalCoin.add(coinAmount); totalToken = totalToken.add(tokenAmount); coins[from] = coins[from].add(coinAmount); tokens[from] = tokens[from].add(tokenAmount); emit StakeEvent(tokenAmount, coinAmount); } /** * @notice Normally redeem anyAmount internal * @param coinAmount The number of coin will be redeemed * @param receiver Address of receiving */ function _normalRedeem(uint256 coinAmount, address receiver) internal notClosed { require(!esm.isRedeemPaused(), "Redeem paused"); address staker = msg.sender; require(coins[staker] > 0, "No collateral"); require(coinAmount > 0, "The quantity is less than zero"); require(coinAmount <= coins[staker], "input amount overflow"); accuredToken(staker); uint256 tokenAmount = getInputToken(coinAmount); uint256 feeRate = params.feeRate(); uint256 fee = tokenAmount.mul(feeRate).div(1000); uint256 move = tokenAmount.sub(fee); sFee = sFee.add(fee); token.transfer(blackhole, fee); coin.burn(staker, coinAmount); token.transfer(receiver, move); coins[staker] = coins[staker].sub(coinAmount); tokens[staker] = tokens[staker].sub(tokenAmount); totalCoin = totalCoin.sub(coinAmount); totalToken = totalToken.sub(tokenAmount); emit RedeemEvent(tokenAmount, move, fee, coinAmount); } /** * @notice Abnormally redeem anyAmount internal * @param coinAmount The number of coin will be redeemed * @param receiver Address of receiving */ function _abnormalRedeem(uint256 coinAmount, address receiver) internal { require(esm.isClosed(), "System not Closed yet."); address from = msg.sender; require(coinAmount > 0, "The quantity is less than zero"); require(coin.balanceOf(from) > 0, "The coin no balance."); require(coinAmount <= coin.balanceOf(from), "Coin balance exceed"); uint256 tokenAmount = getInputToken(coinAmount); coin.burn(from, coinAmount); token.transfer(receiver, tokenAmount); totalCoin = totalCoin.sub(coinAmount); totalToken = totalToken.sub(tokenAmount); emit RedeemEvent(tokenAmount, tokenAmount, 0, coinAmount); } /** * @notice Normally redeem anyAmount * @param coinAmount The number of coin will be redeemed * @param receiver Address of receiving */ function redeem(uint256 coinAmount, address receiver) public { _normalRedeem(coinAmount, receiver); } /** * @notice Normally redeem anyAmount to msg.sender * @param coinAmount The number of coin will be redeemed */ function redeem(uint256 coinAmount) public { redeem(coinAmount, msg.sender); } /** * @notice normally redeem them all at once * @param holder reciver */ function redeemMax(address holder) public { redeem(coins[msg.sender], holder); } /** * @notice normally redeem them all at once to msg.sender */ function redeemMax() public { redeemMax(msg.sender); } /** * @notice System shutdown under the redemption rule * @param coinAmount The number coin * @param receiver Address of receiving */ function oRedeem(uint256 coinAmount, address receiver) public { _abnormalRedeem(coinAmount, receiver); } /** * @notice System shutdown under the redemption rule * @param coinAmount The number coin */ function oRedeem(uint256 coinAmount) public { oRedeem(coinAmount, msg.sender); } /** * @notice Refresh reward speed. */ function setRewardSpeed(uint256 speed) public onlyWhiter { updateIndex(); rewardSpeed = speed; } /** * @notice Used to correct the effect of one's actions on one's own earnings * System shutdown will no longer count */ function updateIndex() public { if (esm.isClosed()) { return; } uint256 blockNumber = getBlockNumber(); uint256 deltBlock = blockNumber.sub(rewardState.block); if (deltBlock > 0) { uint256 accruedReward = rewardSpeed.mul(deltBlock); uint256 ratio = totalToken == 0 ? 0 : accruedReward.mul(doubleScale).div(totalToken); rewardState.index = rewardState.index.add(ratio); rewardState.block = blockNumber; emit IndexUpdate(deltBlock, blockNumber, rewardState.index); } } /** * @notice Used to correct the effect of one's actions on one's own earnings * System shutdown will no longer count * @param account staker address */ function accuredToken(address account) internal { updateIndex(); StakerState storage stakerState = stakerStates[account]; stakerState.reward = _getReward(account); stakerState.index = rewardState.index; } /** * @notice Calculate the current holder's mining income * @param staker Address of holder */ function _getReward(address staker) internal view returns (uint256 value) { StakerState storage stakerState = stakerStates[staker]; value = stakerState.reward.add( rewardState.index.sub(stakerState.index).mul(tokens[staker]).div( doubleScale ) ); } /** * @notice Estimate the mortgagor's reward * @param account Address of staker */ function getHolderReward(address account) public view returns (uint256 value) { uint256 blockReward2 = (totalToken == 0 || esm.isClosed()) ? 0 : getBlockNumber() .sub(rewardState.block) .mul(rewardSpeed) .mul(tokens[account]) .div(totalToken); value = _getReward(account) + blockReward2; } /** * @notice Extract the current reward in one go * @param holder Address of receiver */ function claimToken(address holder) public { accuredToken(holder); StakerState storage stakerState = stakerStates[holder]; uint256 value = stakerState.reward.min(reward); require(value > 0, "The reward of address is zero."); token.transfer(holder, value); reward = reward.sub(value); stakerState.index = rewardState.index; stakerState.reward = stakerState.reward.sub(value); emit ClaimToken(holder, value); } /** * @notice Get block number now */ function getBlockNumber() public view returns (uint256) { return block.number; } /** * @notice Inject token to reward * @param amount The number of injecting */ function injectReward(uint256 amount) external onlyOwner { token.transferFrom(msg.sender, address(this), amount); reward = reward.add(amount); emit InjectReward(amount); } /** * @notice Extract token from reward * @param account Address of receiver * @param amount The number of extracting */ function extractReward(address account, uint256 amount) external onlyOwner { require(amount <= reward, "withdraw overflow."); token.transfer(account, amount); reward = reward.sub(amount); emit ExtractReward(account, amount); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.5.0 <0.8.0; interface IDparam { event FeeRateEvent(uint256 feeRate); event LiquidationLineEvent(uint256 liquidationRate); event MinMintEvent(uint256 minMint); function stakeRate() external view returns (uint256); function liquidationLine() external view returns (uint256); function feeRate() external view returns (uint256); function minMint() external view returns (uint256); function setFeeRate(uint256 _feeRate) external; function setLiquidationLine(uint256 _liquidationLine) external; function setMinMint(uint256 _minMint) external; function isLiquidation(uint256 price) external view returns (bool); function isNormal(uint256 price) external view returns (bool); }
pragma solidity ^0.5.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); }
pragma solidity ^0.5.0; /** * @dev Standard math utilities missing in the Solidity language. */ library Math { /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow, so we distribute return (a / 2) + (b / 2) + (((a % 2) + (b % 2)) / 2); } }
pragma solidity ^0.5.16; // https://docs.synthetix.io/contracts/Owned contract Owned { address public owner; address public nominatedOwner; constructor(address _owner) public { require(_owner != address(0), "Owner address cannot be 0"); owner = _owner; emit OwnerChanged(address(0), _owner); } function nominateNewOwner(address _owner) external onlyOwner { nominatedOwner = _owner; emit OwnerNominated(_owner); } function acceptOwnership() external { require( msg.sender == nominatedOwner, "You must be nominated before you can accept ownership" ); emit OwnerChanged(owner, nominatedOwner); owner = nominatedOwner; nominatedOwner = address(0); } modifier onlyOwner { require( msg.sender == owner, "Only the contract owner may perform this action" ); _; } event OwnerNominated(address newOwner); event OwnerChanged(address oldOwner, address newOwner); }
pragma solidity ^0.5.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, 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; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.5.0 <0.8.0; import "./Owned.sol"; contract WhiteList is Owned { /// @notice Users with permissions mapping(address => uint256) public whiter; /// @notice Append address into whiteList successevent event AppendWhiter(address adder); /// @notice Remove address into whiteList successevent event RemoveWhiter(address remover); /** * @notice Construct a new WhiteList, default owner in whiteList */ constructor() internal { appendWhiter(owner); } modifier onlyWhiter() { require(isWhiter(), "WhiteList: msg.sender not in whilteList."); _; } /** * @notice Only onwer can append address into whitelist * @param account The address not added, can added to the whitelist */ function appendWhiter(address account) public onlyOwner { require(account != address(0), "WhiteList: address not zero"); require( !isWhiter(account), "WhiteListe: the account exsit whilteList yet" ); whiter[account] = 1; emit AppendWhiter(account); } /** * @notice Only onwer can remove address into whitelist * @param account The address in whitelist yet */ function removeWhiter(address account) public onlyOwner { require( isWhiter(account), "WhiteListe: the account not exist whilteList" ); delete whiter[account]; emit RemoveWhiter(account); } /** * @notice Check whether acccount in whitelist * @param account Any address */ function isWhiter(address account) public view returns (bool) { return whiter[account] == 1; } /** * @notice Check whether msg.sender in whitelist overrides. */ function isWhiter() public view returns (bool) { return isWhiter(msg.sender); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_param","type":"address"},{"internalType":"address","name":"_orcl","type":"address"},{"internalType":"address","name":"_esm","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"adder","type":"address"}],"name":"AppendWhiter","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"reciver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ExtractReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"delt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"block","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"IndexUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"InjectReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"token","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"move","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"coin","type":"uint256"}],"name":"RedeemEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"remover","type":"address"}],"name":"RemoveWhiter","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"coin","type":"address"}],"name":"SetupCoin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"esm","type":"address"}],"name":"SetupEsm","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"orcl","type":"address"}],"name":"SetupOracle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"param","type":"address"}],"name":"SetupParam","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"token","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"coin","type":"uint256"}],"name":"StakeEvent","type":"event"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"appendWhiter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"claimToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"coins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"debtOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"doubleScale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"extractReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCoinAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getEsmAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getHolderReward","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"coinAmount","type":"uint256"}],"name":"getInputToken","outputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOracleAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getParamsAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"injectReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isWhiter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhiter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"coinAmount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"oRedeem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"coinAmount","type":"uint256"}],"name":"oRedeem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"coinAmount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"redeem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"coinAmount","type":"uint256"}],"name":"redeem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"redeemMax","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"redeemMax","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeWhiter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"reward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardSpeed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardState","outputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"block","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"speed","type":"uint256"}],"name":"setRewardSpeed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_coin","type":"address"}],"name":"setup","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_esm","type":"address"}],"name":"setupEsm","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_orcl","type":"address"}],"name":"setupOracle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_params","type":"address"}],"name":"setupParams","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"coinAmount","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakerStates","outputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"reward","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalCoin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"updateIndex","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whiter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052631dcd6500600455662386f26fc10000600555662386f26fc100006006553480156200002f57600080fd5b5060405162004f4538038062004f45833981810160405260608110156200005557600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505033600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200011f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4f776e657220616464726573732063616e6e6f7420626520300000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c600082604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1506200022a6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200033560201b60201c565b82600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180604001604052806005548152602001620003106200059460201b60201c565b81525060076000820151816000015560208201518160010155905050505050620005e8565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620003dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018062004eea602f913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f57686974654c6973743a2061646472657373206e6f74207a65726f000000000081525060200191505060405180910390fd5b62000491816200059c60201b60201c565b15620004e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018062004f19602c913960400191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507ff6f23488d2332695a038c333e5b9b5ad5a5a6aa7001c5c8f2c851051907402c681604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600043905090565b60006001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054149050919050565b6148f280620005f86000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c80637d0f7a881161015c578063b9f412b0116100ce578063d283e75f11610087578063d283e75f14610b8a578063db006a7514610be9578063dfbeed4e14610c17578063e486033914610c35578063f251234814610c8d578063f95f450014610cab5761027f565b8063b9f412b014610a4c578063c0d66cef14610a56578063c97ec6bd14610a9a578063cad5a3e414610ade578063cd1f66ff14610b28578063cf8e6c7f14610b6c5761027f565b8063a53c724811610120578063a53c724814610928578063a55d82571461096a578063a62f723c14610998578063a694fc3a146109a2578063b69e5e95146109d0578063b7565d2914610a1e5761027f565b80637d0f7a88146107965780637d7fbb18146107ee57806385a04b46146108465780638da5cb5b146108945780639d5e68e6146108de5761027f565b806345baf332116101f5578063626aa3bc116101b9578063626aa3bc14610656578063626be5671461069a57806367f3c2a5146106b85780636ba8a0cb1461071057806379ba50971461073e5780637bde82f2146107485761027f565b806345baf3321461053b57806353a47bb714610585578063582c7928146105cf5780635c0f6bd1146105f45780635d58d312146106125761027f565b80632d34ba79116102475780632d34ba79146103b157806332a2b2db1461041557806332f289cf1461047157806339ce4227146104b557806340043068146104d357806342cbb15c1461051d5761027f565b806310fe9ae8146102845780631627540c146102ce5780631dcba53114610312578063228cb733146103345780632483c69514610352575b600080fd5b61028c610cef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610310600480360360208110156102e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d19565b005b61031a610e65565b604051808215151515815260200191505060405180910390f35b61033c610e75565b6040518082815260200191505060405180910390f35b6103946004803603602081101561036857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e7b565b604051808381526020018281526020019250505060405180910390f35b610413600480360360408110156103c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e9f565b005b6104576004803603602081101561042b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611137565b604051808215151515815260200191505060405180910390f35b6104b36004803603602081101561048757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611183565b005b6104bd6113ff565b6040518082815260200191505060405180910390f35b6104db611405565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61052561142f565b6040518082815260200191505060405180910390f35b610543611437565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61058d611461565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105d7611487565b604051808381526020018281526020019250505060405180910390f35b6105fc611499565b6040518082815260200191505060405180910390f35b6106546004803603602081101561062857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061149f565b005b6106986004803603602081101561066c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115a3565b005b6106a26116a7565b6040518082815260200191505060405180910390f35b6106fa600480360360208110156106ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ad565b6040518082815260200191505060405180910390f35b61073c6004803603602081101561072657600080fd5b81019080803590602001909291905050506116c5565b005b6107466118d8565b005b6107946004803603604081101561075e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611afe565b005b6107d8600480360360208110156107ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b0c565b6040518082815260200191505060405180910390f35b6108306004803603602081101561080457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b24565b6040518082815260200191505060405180910390f35b6108926004803603604081101561085c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c90565b005b61089c611f1c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108e6611f41565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109546004803603602081101561093e57600080fd5b8101908080359060200190929190505050611f6b565b6040518082815260200191505060405180910390f35b6109966004803603602081101561098057600080fd5b8101908080359060200190929190505050612029565b005b6109a0612098565b005b6109ce600480360360208110156109b857600080fd5b81019080803590602001909291905050506120a3565b005b610a1c600480360360408110156109e657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ae3565b005b610a4a60048036036020811015610a3457600080fd5b8101908080359060200190929190505050612af1565b005b610a54612afe565b005b610a9860048036036020811015610a6c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cb2565b005b610adc60048036036020811015610ab057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cfe565b005b610ae6612eaa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b6a60048036036020811015610b3e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ed4565b005b610b74612fd8565b6040518082815260200191505060405180910390f35b610bcc60048036036020811015610ba057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fde565b604051808381526020018281526020019250505060405180910390f35b610c1560048036036020811015610bff57600080fd5b810190808035906020019092919050505061306a565b005b610c1f613077565b6040518082815260200191505060405180910390f35b610c7760048036036020811015610c4b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061307d565b6040518082815260200191505060405180910390f35b610c95613095565b6040518082815260200191505060405180910390f35b610ced60048036036020811015610cc157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061309b565b005b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806147c9602f913960400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2281604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000610e7033611137565b905090565b60035481565b60096020528060005260406000206000915090508060000154908060010154905082565b610ea7610e65565b610efc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806148966028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610fa85750600073ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61101a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f73657475706564207965742e000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f055d48959ab0a44a3dfe28fcac1d5b64ed25011093fc295336744a51ccfdb5c78282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60006001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054149050919050565b61118c816132ed565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006111ea600354836001015461335b90919063ffffffff16565b905060008111611262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f54686520726577617264206f662061646472657373206973207a65726f2e000081525060200191505060405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561130b57600080fd5b505af115801561131f573d6000803e3d6000fd5b505050506040513d602081101561133557600080fd5b81019080805190602001909291905050505061135c8160035461337490919063ffffffff16565b600381905550600760000154826000018190555061138781836001015461337490919063ffffffff16565b82600101819055507f5d425a3a6a3d5a60fbf147dc6659ce3dfeb701fc44fe90058c32783b8807c5748382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b600c5481565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600043905090565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60078060000154908060010154905082565b60045481565b6114a7610e65565b6114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806148966028913960400191505060405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f70f17ab8dac76211346c8b353f372be6fe4f52618a921c29c44ff1ff144b598481604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6115ab610e65565b611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806148966028913960400191505060405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f08e18e5b86af741f2bcc5d53c21baa21fcf02ad08ed38020a71d946239979bf781604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600d5481565b60026020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461176a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806147c9602f913960400191505060405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561184757600080fd5b505af115801561185b573d6000803e3d6000fd5b505050506040513d602081101561187157600080fd5b810190808051906020019092919050505050611898816003546133be90919063ffffffff16565b6003819055507f319ef1de2dd33401c28c364877d6d61a9e96c3ac0794e4074ed77c169a45cedf816040518082815260200191505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061476f6035913960400191505060405180910390fd5b7fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611b088282613446565b5050565b600b6020528060005260406000206000915090505481565b6000806000600d541480611bd75750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2b6b58c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9b57600080fd5b505afa158015611baf573d6000803e3d6000fd5b505050506040513d6020811015611bc557600080fd5b81019080805190602001909291905050505b611c7857611c73600d54611c65600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c57600454611c49600760010154611c3b61142f565b61337490919063ffffffff16565b613dc890919063ffffffff16565b613dc890919063ffffffff16565b613e4e90919063ffffffff16565b611c7b565b60005b905080611c8784613e98565b01915050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806147c9602f913960400191505060405180910390fd5b600354811115611dad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f7769746864726177206f766572666c6f772e000000000000000000000000000081525060200191505060405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611e5657600080fd5b505af1158015611e6a573d6000803e3d6000fd5b505050506040513d6020811015611e8057600080fd5b810190808051906020019092919050505050611ea78160035461337490919063ffffffff16565b6003819055507f1feb1e5103960611c3fe922e6197b84b16553e55eba53acf31f56ea030096cbe8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000612022600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381160fe36040518163ffffffff1660e01b815260040160206040518083038186803b158015611fd857600080fd5b505afa158015611fec573d6000803e3d6000fd5b505050506040513d602081101561200257600080fd5b810190808051906020019092919050505083613dc890919063ffffffff16565b9050919050565b612031610e65565b612086576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806148966028913960400191505060405180910390fd5b61208e612afe565b8060048190555050565b6120a133612cb2565b565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2b6b58c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561210b57600080fd5b505afa15801561211f573d6000803e3d6000fd5b505050506040513d602081101561213557600080fd5b8101908080519060200190929190505050156121b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f53797374656d20636c6f7365640000000000000000000000000000000000000081525060200191505060405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2c60c286040518163ffffffff1660e01b815260040160206040518083038186803b15801561222157600080fd5b505afa158015612235573d6000803e3d6000fd5b505050506040513d602081101561224b57600080fd5b8101908080519060200190929190505050156122cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5374616b6520706175736564000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008111612328576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806148456025913960400191505060405180910390fd5b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633c6bb4366040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561239457600080fd5b505af11580156123a8573d6000803e3d6000fd5b505050506040513d60208110156123be57600080fd5b810190808051906020019092919050505011612442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f7261636c65207072696365206e6f7420696e697469616c697a65642e00000081525060200191505060405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634bf404ec601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633c6bb4366040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156124ea57600080fd5b505af11580156124fe573d6000803e3d6000fd5b505050506040513d602081101561251457600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561255957600080fd5b505afa15801561256d573d6000803e3d6000fd5b505050506040513d602081101561258357600080fd5b8101908080519060200190929190505050612606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4f696e277320707269636520697320746f6f206c6f772e00000000000000000081525060200191505060405180910390fd5b60003390506000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561274f57600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638376112a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156126bb57600080fd5b505afa1580156126cf573d6000803e3d6000fd5b505050506040513d60208110156126e557600080fd5b810190808051906020019092919050505082101561274e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806147a46025913960400191505060405180910390fd5b5b612758816132ed565b600061276383611f6b565b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561284257600080fd5b505af1158015612856573d6000803e3d6000fd5b505050506040513d602081101561286c57600080fd5b810190808051906020019092919050505050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561292757600080fd5b505af115801561293b573d6000803e3d6000fd5b5050505061295483600c546133be90919063ffffffff16565b600c8190555061296f81600d546133be90919063ffffffff16565b600d819055506129c783600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133be90919063ffffffff16565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a5c81600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133be90919063ffffffff16565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fb4423d40ed9dae9515810826dc63edd971a73d88d5bcc6eccf17a28856ad057a8184604051808381526020018281526020019250505060405180910390a1505050565b612aed8282613f7b565b5050565b612afb8133612ae3565b50565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2b6b58c6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b6657600080fd5b505afa158015612b7a573d6000803e3d6000fd5b505050506040513d6020811015612b9057600080fd5b810190808051906020019092919050505015612bab57612cb0565b6000612bb561142f565b90506000612bd16007600101548361337490919063ffffffff16565b90506000811115612cad576000612bf382600454613dc890919063ffffffff16565b9050600080600d5414612c2e57612c29600d54612c1b60065485613dc890919063ffffffff16565b613e4e90919063ffffffff16565b612c31565b60005b9050612c4b816007600001546133be90919063ffffffff16565b600760000181905550836007600101819055507fa8b52d4c21c4c3e0e28c90b4133fdaa0c671f3830ab2ab6a9cf95cb7bde83669838560076000015460405180848152602001838152602001828152602001935050505060405180910390a150505b50505b565b612cfb600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611afe565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612da3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806147c9602f913960400191505060405180910390fd5b612dac81611137565b612e01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614819602c913960400191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090557fa7498c8942adb10d7b806c9a26cff6dd93b6f0259681ffcb98d8dafd8b174f8e81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612edc610e65565b612f31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806148966028913960400191505060405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1bffa28019d1cc5c1306e29d09c3d3be8a18b258f05410bc8e66e36e643e1e7981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60055481565b600080600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491509150915091565b6130748133611afe565b50565b60065481565b600a6020528060005260406000206000915090505481565b600e5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806147c9602f913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156131e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f57686974654c6973743a2061646472657373206e6f74207a65726f000000000081525060200191505060405180910390fd5b6131ec81611137565b15613242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061486a602c913960400191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507ff6f23488d2332695a038c333e5b9b5ad5a5a6aa7001c5c8f2c851051907402c681604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6132f5612afe565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061334182613e98565b816001018190555060076000015481600001819055505050565b600081831061336a578161336c565b825b905092915050565b60006133b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506145e8565b905092915050565b60008082840190508381101561343c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2b6b58c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156134ae57600080fd5b505afa1580156134c2573d6000803e3d6000fd5b505050506040513d60208110156134d857600080fd5b81019080805190602001909291905050501561355c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f53797374656d20636c6f7365640000000000000000000000000000000000000081525060200191505060405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633cd9b53c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156135c457600080fd5b505afa1580156135d8573d6000803e3d6000fd5b505050506040513d60208110156135ee57600080fd5b810190808051906020019092919050505015613672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f52656465656d207061757365640000000000000000000000000000000000000081525060200191505060405180910390fd5b60003390506000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161372c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4e6f20636f6c6c61746572616c0000000000000000000000000000000000000081525060200191505060405180910390fd5b600083116137a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f546865207175616e74697479206973206c657373207468616e207a65726f000081525060200191505060405180910390fd5b600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054831115613857576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e70757420616d6f756e74206f766572666c6f77000000000000000000000081525060200191505060405180910390fd5b613860816132ed565b600061386b84611f6b565b90506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663978bbdb96040518163ffffffff1660e01b815260040160206040518083038186803b1580156138d757600080fd5b505afa1580156138eb573d6000803e3d6000fd5b505050506040513d602081101561390157600080fd5b81019080805190602001909291905050509050600061393d6103e861392f8486613dc890919063ffffffff16565b613e4e90919063ffffffff16565b90506000613954828561337490919063ffffffff16565b905061396b82600e546133be90919063ffffffff16565b600e81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb731111111111111111111111111111111111111111846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a2e57600080fd5b505af1158015613a42573d6000803e3d6000fd5b505050506040513d6020811015613a5857600080fd5b810190808051906020019092919050505050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac86896040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613b1357600080fd5b505af1158015613b27573d6000803e3d6000fd5b50505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613bd457600080fd5b505af1158015613be8573d6000803e3d6000fd5b505050506040513d6020811015613bfe57600080fd5b810190808051906020019092919050505050613c6287600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337490919063ffffffff16565b600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cf784600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337490919063ffffffff16565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d4f87600c5461337490919063ffffffff16565b600c81905550613d6a84600d5461337490919063ffffffff16565b600d819055507f0cabeaa2c4a0e1c5eefe6c6097602c06789155d09c5269d9520dd6b203861be98482848a6040518085815260200184815260200183815260200182815260200194505050505060405180910390a150505050505050565b600080831415613ddb5760009050613e48565b6000828402905082848281613dec57fe5b0414613e43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806147f86021913960400191505060405180910390fd5b809150505b92915050565b6000613e9083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506146a8565b905092915050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050613f73613f60600654613f52600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f44866000015460076000015461337490919063ffffffff16565b613dc890919063ffffffff16565b613e4e90919063ffffffff16565b82600101546133be90919063ffffffff16565b915050919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2b6b58c6040518163ffffffff1660e01b815260040160206040518083038186803b158015613fe357600080fd5b505afa158015613ff7573d6000803e3d6000fd5b505050506040513d602081101561400d57600080fd5b8101908080519060200190929190505050614090576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53797374656d206e6f7420436c6f736564207965742e0000000000000000000081525060200191505060405180910390fd5b60003390506000831161410b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f546865207175616e74697479206973206c657373207468616e207a65726f000081525060200191505060405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156141ac57600080fd5b505afa1580156141c0573d6000803e3d6000fd5b505050506040513d60208110156141d657600080fd5b81019080805190602001909291905050501161425a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f54686520636f696e206e6f2062616c616e63652e00000000000000000000000081525060200191505060405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156142f957600080fd5b505afa15801561430d573d6000803e3d6000fd5b505050506040513d602081101561432357600080fd5b81019080805190602001909291905050508311156143a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f436f696e2062616c616e6365206578636565640000000000000000000000000081525060200191505060405180910390fd5b60006143b484611f6b565b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac83866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561445f57600080fd5b505af1158015614473573d6000803e3d6000fd5b50505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561452057600080fd5b505af1158015614534573d6000803e3d6000fd5b505050506040513d602081101561454a57600080fd5b81019080805190602001909291905050505061457184600c5461337490919063ffffffff16565b600c8190555061458c81600d5461337490919063ffffffff16565b600d819055507f0cabeaa2c4a0e1c5eefe6c6097602c06789155d09c5269d9520dd6b203861be981826000876040518085815260200184815260200183815260200182815260200194505050505060405180910390a150505050565b6000838311158290614695576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561465a57808201518184015260208101905061463f565b50505050905090810190601f1680156146875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290614754576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156147195780820151818401526020810190506146fe565b50505050905090810190601f1680156147465780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161476057fe5b04905080915050939250505056fe596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869704669727374206d616b6520636f696e206d75737420677261746572207468616e203130302e4f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7757686974654c697374653a20746865206163636f756e74206e6f74206578697374207768696c74654c697374546865207175616e74697479206973206c657373207468616e20746865206d696e696d756d57686974654c697374653a20746865206163636f756e74206578736974207768696c74654c6973742079657457686974654c6973743a206d73672e73656e646572206e6f7420696e207768696c74654c6973742ea265627a7a723158206e56814a1f55ec0be86f69a809e9d0f79f1f3472df39e646a97cd326b27085bc64736f6c634300051000324f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e57686974654c697374653a20746865206163636f756e74206578736974207768696c74654c697374207965740000000000000000000000009278a2967770cbd357031681f455b500e44c3d840000000000000000000000001248460fd7e9c7148f2c11e94e0524c3dcfa72190000000000000000000000009278a2967770cbd357031681f455b500e44c3d84
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061027f5760003560e01c80637d0f7a881161015c578063b9f412b0116100ce578063d283e75f11610087578063d283e75f14610b8a578063db006a7514610be9578063dfbeed4e14610c17578063e486033914610c35578063f251234814610c8d578063f95f450014610cab5761027f565b8063b9f412b014610a4c578063c0d66cef14610a56578063c97ec6bd14610a9a578063cad5a3e414610ade578063cd1f66ff14610b28578063cf8e6c7f14610b6c5761027f565b8063a53c724811610120578063a53c724814610928578063a55d82571461096a578063a62f723c14610998578063a694fc3a146109a2578063b69e5e95146109d0578063b7565d2914610a1e5761027f565b80637d0f7a88146107965780637d7fbb18146107ee57806385a04b46146108465780638da5cb5b146108945780639d5e68e6146108de5761027f565b806345baf332116101f5578063626aa3bc116101b9578063626aa3bc14610656578063626be5671461069a57806367f3c2a5146106b85780636ba8a0cb1461071057806379ba50971461073e5780637bde82f2146107485761027f565b806345baf3321461053b57806353a47bb714610585578063582c7928146105cf5780635c0f6bd1146105f45780635d58d312146106125761027f565b80632d34ba79116102475780632d34ba79146103b157806332a2b2db1461041557806332f289cf1461047157806339ce4227146104b557806340043068146104d357806342cbb15c1461051d5761027f565b806310fe9ae8146102845780631627540c146102ce5780631dcba53114610312578063228cb733146103345780632483c69514610352575b600080fd5b61028c610cef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610310600480360360208110156102e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d19565b005b61031a610e65565b604051808215151515815260200191505060405180910390f35b61033c610e75565b6040518082815260200191505060405180910390f35b6103946004803603602081101561036857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e7b565b604051808381526020018281526020019250505060405180910390f35b610413600480360360408110156103c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e9f565b005b6104576004803603602081101561042b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611137565b604051808215151515815260200191505060405180910390f35b6104b36004803603602081101561048757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611183565b005b6104bd6113ff565b6040518082815260200191505060405180910390f35b6104db611405565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61052561142f565b6040518082815260200191505060405180910390f35b610543611437565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61058d611461565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105d7611487565b604051808381526020018281526020019250505060405180910390f35b6105fc611499565b6040518082815260200191505060405180910390f35b6106546004803603602081101561062857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061149f565b005b6106986004803603602081101561066c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115a3565b005b6106a26116a7565b6040518082815260200191505060405180910390f35b6106fa600480360360208110156106ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ad565b6040518082815260200191505060405180910390f35b61073c6004803603602081101561072657600080fd5b81019080803590602001909291905050506116c5565b005b6107466118d8565b005b6107946004803603604081101561075e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611afe565b005b6107d8600480360360208110156107ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b0c565b6040518082815260200191505060405180910390f35b6108306004803603602081101561080457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b24565b6040518082815260200191505060405180910390f35b6108926004803603604081101561085c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c90565b005b61089c611f1c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108e6611f41565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109546004803603602081101561093e57600080fd5b8101908080359060200190929190505050611f6b565b6040518082815260200191505060405180910390f35b6109966004803603602081101561098057600080fd5b8101908080359060200190929190505050612029565b005b6109a0612098565b005b6109ce600480360360208110156109b857600080fd5b81019080803590602001909291905050506120a3565b005b610a1c600480360360408110156109e657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ae3565b005b610a4a60048036036020811015610a3457600080fd5b8101908080359060200190929190505050612af1565b005b610a54612afe565b005b610a9860048036036020811015610a6c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cb2565b005b610adc60048036036020811015610ab057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cfe565b005b610ae6612eaa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b6a60048036036020811015610b3e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ed4565b005b610b74612fd8565b6040518082815260200191505060405180910390f35b610bcc60048036036020811015610ba057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fde565b604051808381526020018281526020019250505060405180910390f35b610c1560048036036020811015610bff57600080fd5b810190808035906020019092919050505061306a565b005b610c1f613077565b6040518082815260200191505060405180910390f35b610c7760048036036020811015610c4b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061307d565b6040518082815260200191505060405180910390f35b610c95613095565b6040518082815260200191505060405180910390f35b610ced60048036036020811015610cc157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061309b565b005b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806147c9602f913960400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2281604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000610e7033611137565b905090565b60035481565b60096020528060005260406000206000915090508060000154908060010154905082565b610ea7610e65565b610efc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806148966028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610fa85750600073ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61101a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f73657475706564207965742e000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f055d48959ab0a44a3dfe28fcac1d5b64ed25011093fc295336744a51ccfdb5c78282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60006001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054149050919050565b61118c816132ed565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006111ea600354836001015461335b90919063ffffffff16565b905060008111611262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f54686520726577617264206f662061646472657373206973207a65726f2e000081525060200191505060405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561130b57600080fd5b505af115801561131f573d6000803e3d6000fd5b505050506040513d602081101561133557600080fd5b81019080805190602001909291905050505061135c8160035461337490919063ffffffff16565b600381905550600760000154826000018190555061138781836001015461337490919063ffffffff16565b82600101819055507f5d425a3a6a3d5a60fbf147dc6659ce3dfeb701fc44fe90058c32783b8807c5748382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b600c5481565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600043905090565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60078060000154908060010154905082565b60045481565b6114a7610e65565b6114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806148966028913960400191505060405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f70f17ab8dac76211346c8b353f372be6fe4f52618a921c29c44ff1ff144b598481604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6115ab610e65565b611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806148966028913960400191505060405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f08e18e5b86af741f2bcc5d53c21baa21fcf02ad08ed38020a71d946239979bf781604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600d5481565b60026020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461176a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806147c9602f913960400191505060405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561184757600080fd5b505af115801561185b573d6000803e3d6000fd5b505050506040513d602081101561187157600080fd5b810190808051906020019092919050505050611898816003546133be90919063ffffffff16565b6003819055507f319ef1de2dd33401c28c364877d6d61a9e96c3ac0794e4074ed77c169a45cedf816040518082815260200191505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061476f6035913960400191505060405180910390fd5b7fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611b088282613446565b5050565b600b6020528060005260406000206000915090505481565b6000806000600d541480611bd75750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2b6b58c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9b57600080fd5b505afa158015611baf573d6000803e3d6000fd5b505050506040513d6020811015611bc557600080fd5b81019080805190602001909291905050505b611c7857611c73600d54611c65600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c57600454611c49600760010154611c3b61142f565b61337490919063ffffffff16565b613dc890919063ffffffff16565b613dc890919063ffffffff16565b613e4e90919063ffffffff16565b611c7b565b60005b905080611c8784613e98565b01915050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806147c9602f913960400191505060405180910390fd5b600354811115611dad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f7769746864726177206f766572666c6f772e000000000000000000000000000081525060200191505060405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611e5657600080fd5b505af1158015611e6a573d6000803e3d6000fd5b505050506040513d6020811015611e8057600080fd5b810190808051906020019092919050505050611ea78160035461337490919063ffffffff16565b6003819055507f1feb1e5103960611c3fe922e6197b84b16553e55eba53acf31f56ea030096cbe8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000612022600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381160fe36040518163ffffffff1660e01b815260040160206040518083038186803b158015611fd857600080fd5b505afa158015611fec573d6000803e3d6000fd5b505050506040513d602081101561200257600080fd5b810190808051906020019092919050505083613dc890919063ffffffff16565b9050919050565b612031610e65565b612086576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806148966028913960400191505060405180910390fd5b61208e612afe565b8060048190555050565b6120a133612cb2565b565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2b6b58c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561210b57600080fd5b505afa15801561211f573d6000803e3d6000fd5b505050506040513d602081101561213557600080fd5b8101908080519060200190929190505050156121b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f53797374656d20636c6f7365640000000000000000000000000000000000000081525060200191505060405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2c60c286040518163ffffffff1660e01b815260040160206040518083038186803b15801561222157600080fd5b505afa158015612235573d6000803e3d6000fd5b505050506040513d602081101561224b57600080fd5b8101908080519060200190929190505050156122cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5374616b6520706175736564000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008111612328576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806148456025913960400191505060405180910390fd5b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633c6bb4366040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561239457600080fd5b505af11580156123a8573d6000803e3d6000fd5b505050506040513d60208110156123be57600080fd5b810190808051906020019092919050505011612442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f7261636c65207072696365206e6f7420696e697469616c697a65642e00000081525060200191505060405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634bf404ec601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633c6bb4366040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156124ea57600080fd5b505af11580156124fe573d6000803e3d6000fd5b505050506040513d602081101561251457600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561255957600080fd5b505afa15801561256d573d6000803e3d6000fd5b505050506040513d602081101561258357600080fd5b8101908080519060200190929190505050612606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4f696e277320707269636520697320746f6f206c6f772e00000000000000000081525060200191505060405180910390fd5b60003390506000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561274f57600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638376112a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156126bb57600080fd5b505afa1580156126cf573d6000803e3d6000fd5b505050506040513d60208110156126e557600080fd5b810190808051906020019092919050505082101561274e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806147a46025913960400191505060405180910390fd5b5b612758816132ed565b600061276383611f6b565b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561284257600080fd5b505af1158015612856573d6000803e3d6000fd5b505050506040513d602081101561286c57600080fd5b810190808051906020019092919050505050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561292757600080fd5b505af115801561293b573d6000803e3d6000fd5b5050505061295483600c546133be90919063ffffffff16565b600c8190555061296f81600d546133be90919063ffffffff16565b600d819055506129c783600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133be90919063ffffffff16565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a5c81600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133be90919063ffffffff16565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fb4423d40ed9dae9515810826dc63edd971a73d88d5bcc6eccf17a28856ad057a8184604051808381526020018281526020019250505060405180910390a1505050565b612aed8282613f7b565b5050565b612afb8133612ae3565b50565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2b6b58c6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b6657600080fd5b505afa158015612b7a573d6000803e3d6000fd5b505050506040513d6020811015612b9057600080fd5b810190808051906020019092919050505015612bab57612cb0565b6000612bb561142f565b90506000612bd16007600101548361337490919063ffffffff16565b90506000811115612cad576000612bf382600454613dc890919063ffffffff16565b9050600080600d5414612c2e57612c29600d54612c1b60065485613dc890919063ffffffff16565b613e4e90919063ffffffff16565b612c31565b60005b9050612c4b816007600001546133be90919063ffffffff16565b600760000181905550836007600101819055507fa8b52d4c21c4c3e0e28c90b4133fdaa0c671f3830ab2ab6a9cf95cb7bde83669838560076000015460405180848152602001838152602001828152602001935050505060405180910390a150505b50505b565b612cfb600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611afe565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612da3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806147c9602f913960400191505060405180910390fd5b612dac81611137565b612e01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614819602c913960400191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090557fa7498c8942adb10d7b806c9a26cff6dd93b6f0259681ffcb98d8dafd8b174f8e81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612edc610e65565b612f31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806148966028913960400191505060405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1bffa28019d1cc5c1306e29d09c3d3be8a18b258f05410bc8e66e36e643e1e7981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60055481565b600080600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491509150915091565b6130748133611afe565b50565b60065481565b600a6020528060005260406000206000915090505481565b600e5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806147c9602f913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156131e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f57686974654c6973743a2061646472657373206e6f74207a65726f000000000081525060200191505060405180910390fd5b6131ec81611137565b15613242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061486a602c913960400191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507ff6f23488d2332695a038c333e5b9b5ad5a5a6aa7001c5c8f2c851051907402c681604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6132f5612afe565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061334182613e98565b816001018190555060076000015481600001819055505050565b600081831061336a578161336c565b825b905092915050565b60006133b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506145e8565b905092915050565b60008082840190508381101561343c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2b6b58c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156134ae57600080fd5b505afa1580156134c2573d6000803e3d6000fd5b505050506040513d60208110156134d857600080fd5b81019080805190602001909291905050501561355c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f53797374656d20636c6f7365640000000000000000000000000000000000000081525060200191505060405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633cd9b53c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156135c457600080fd5b505afa1580156135d8573d6000803e3d6000fd5b505050506040513d60208110156135ee57600080fd5b810190808051906020019092919050505015613672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f52656465656d207061757365640000000000000000000000000000000000000081525060200191505060405180910390fd5b60003390506000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161372c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4e6f20636f6c6c61746572616c0000000000000000000000000000000000000081525060200191505060405180910390fd5b600083116137a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f546865207175616e74697479206973206c657373207468616e207a65726f000081525060200191505060405180910390fd5b600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054831115613857576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e70757420616d6f756e74206f766572666c6f77000000000000000000000081525060200191505060405180910390fd5b613860816132ed565b600061386b84611f6b565b90506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663978bbdb96040518163ffffffff1660e01b815260040160206040518083038186803b1580156138d757600080fd5b505afa1580156138eb573d6000803e3d6000fd5b505050506040513d602081101561390157600080fd5b81019080805190602001909291905050509050600061393d6103e861392f8486613dc890919063ffffffff16565b613e4e90919063ffffffff16565b90506000613954828561337490919063ffffffff16565b905061396b82600e546133be90919063ffffffff16565b600e81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb731111111111111111111111111111111111111111846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a2e57600080fd5b505af1158015613a42573d6000803e3d6000fd5b505050506040513d6020811015613a5857600080fd5b810190808051906020019092919050505050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac86896040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613b1357600080fd5b505af1158015613b27573d6000803e3d6000fd5b50505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613bd457600080fd5b505af1158015613be8573d6000803e3d6000fd5b505050506040513d6020811015613bfe57600080fd5b810190808051906020019092919050505050613c6287600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337490919063ffffffff16565b600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cf784600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337490919063ffffffff16565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d4f87600c5461337490919063ffffffff16565b600c81905550613d6a84600d5461337490919063ffffffff16565b600d819055507f0cabeaa2c4a0e1c5eefe6c6097602c06789155d09c5269d9520dd6b203861be98482848a6040518085815260200184815260200183815260200182815260200194505050505060405180910390a150505050505050565b600080831415613ddb5760009050613e48565b6000828402905082848281613dec57fe5b0414613e43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806147f86021913960400191505060405180910390fd5b809150505b92915050565b6000613e9083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506146a8565b905092915050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050613f73613f60600654613f52600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f44866000015460076000015461337490919063ffffffff16565b613dc890919063ffffffff16565b613e4e90919063ffffffff16565b82600101546133be90919063ffffffff16565b915050919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2b6b58c6040518163ffffffff1660e01b815260040160206040518083038186803b158015613fe357600080fd5b505afa158015613ff7573d6000803e3d6000fd5b505050506040513d602081101561400d57600080fd5b8101908080519060200190929190505050614090576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53797374656d206e6f7420436c6f736564207965742e0000000000000000000081525060200191505060405180910390fd5b60003390506000831161410b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f546865207175616e74697479206973206c657373207468616e207a65726f000081525060200191505060405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156141ac57600080fd5b505afa1580156141c0573d6000803e3d6000fd5b505050506040513d60208110156141d657600080fd5b81019080805190602001909291905050501161425a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f54686520636f696e206e6f2062616c616e63652e00000000000000000000000081525060200191505060405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156142f957600080fd5b505afa15801561430d573d6000803e3d6000fd5b505050506040513d602081101561432357600080fd5b81019080805190602001909291905050508311156143a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f436f696e2062616c616e6365206578636565640000000000000000000000000081525060200191505060405180910390fd5b60006143b484611f6b565b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac83866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561445f57600080fd5b505af1158015614473573d6000803e3d6000fd5b50505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561452057600080fd5b505af1158015614534573d6000803e3d6000fd5b505050506040513d602081101561454a57600080fd5b81019080805190602001909291905050505061457184600c5461337490919063ffffffff16565b600c8190555061458c81600d5461337490919063ffffffff16565b600d819055507f0cabeaa2c4a0e1c5eefe6c6097602c06789155d09c5269d9520dd6b203861be981826000876040518085815260200184815260200183815260200182815260200194505050505060405180910390a150505050565b6000838311158290614695576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561465a57808201518184015260208101905061463f565b50505050905090810190601f1680156146875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290614754576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156147195780820151818401526020810190506146fe565b50505050905090810190601f1680156147465780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161476057fe5b04905080915050939250505056fe596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869704669727374206d616b6520636f696e206d75737420677261746572207468616e203130302e4f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7757686974654c697374653a20746865206163636f756e74206e6f74206578697374207768696c74654c697374546865207175616e74697479206973206c657373207468616e20746865206d696e696d756d57686974654c697374653a20746865206163636f756e74206578736974207768696c74654c6973742079657457686974654c6973743a206d73672e73656e646572206e6f7420696e207768696c74654c6973742ea265627a7a723158206e56814a1f55ec0be86f69a809e9d0f79f1f3472df39e646a97cd326b27085bc64736f6c63430005100032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009278a2967770cbd357031681f455b500e44c3d840000000000000000000000001248460fd7e9c7148f2c11e94e0524c3dcfa72190000000000000000000000009278a2967770cbd357031681f455b500e44c3d84
-----Decoded View---------------
Arg [0] : _param (address): 0x9278A2967770cbD357031681F455B500E44c3D84
Arg [1] : _orcl (address): 0x1248460FD7E9c7148f2c11E94e0524c3dCfa7219
Arg [2] : _esm (address): 0x9278A2967770cbD357031681F455B500E44c3D84
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000009278a2967770cbd357031681f455b500e44c3d84
Arg [1] : 0000000000000000000000001248460fd7e9c7148f2c11e94e0524c3dcfa7219
Arg [2] : 0000000000000000000000009278a2967770cbd357031681f455b500e44c3d84
Deployed Bytecode Sourcemap
819:14502:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;819:14502:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5712:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;341:138:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;341:138:4;;;;;;;;;;;;;;;;;;;:::i;:::-;;1825:91:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1458:21:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1842:51;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1842:51:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;5959:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5959:300:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1633:106:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1633:106:6;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13966:486:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13966:486:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;2140:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5528:93;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14510:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4972:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;118:29:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1762:30:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1531:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4529:125;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4529:125:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;4280:132;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4280:132:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;2225:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;161:41:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;161:41:6;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14707:199:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14707:199:3;;;;;;;;;;;;;;;;;:::i;:::-;;485:300:4;;;:::i;:::-;;10320:113:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10320:113:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2042:40;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2042:40:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13426:425;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13426:425:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15057:262;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15057:262:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;92:20:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5162:92:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6752:178;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6752:178:3;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11553:116;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11553:116:3;;;;;;;;;;;;;;;;;:::i;:::-;;10936:66;;;:::i;:::-;;7062:989;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7062:989:3;;;;;;;;;;;;;;;;;:::i;:::-;;11166:116;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11166:116:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11402:92;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11402:92:3;;;;;;;;;;;;;;;;;:::i;:::-;;11824:624;;;:::i;:::-;;10760:92;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10760:92:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;1277:249:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1277:249:6;;;;;;;;;;;;;;;;;;;:::i;:::-;;5344:88:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4764:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4764:112:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;1598:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6412:129;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6412:129:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;10571:90;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10571:90:3;;;;;;;;;;;;;;;;;:::i;:::-;;1675:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1948:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1948:41:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2331:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;826:318:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;826:318:6;;;;;;;;;;;;;;;;;;;:::i;:::-;;5712:95:3;5760:7;5794:5;;;;;;;;;;;5779:21;;5712:95;:::o;341:138:4:-;855:5;;;;;;;;;;;841:19;;:10;:19;;;820:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;429:6;412:14;;:23;;;;;;;;;;;;;;;;;;450:22;465:6;450:22;;;;;;;;;;;;;;;;;;;;;;341:138;:::o;1825:91:6:-;1866:4;1889:20;1898:10;1889:8;:20::i;:::-;1882:27;;1825:91;:::o;1458:21:3:-;;;;:::o;1842:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5959:300::-;599:10:6;:8;:10::i;:::-;591:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6080:1:3;6054:28;;6062:5;;;;;;;;;;;6054:28;;;:59;;;;;6111:1;6086:27;;6094:4;;;;;;;;;;;6086:27;;;6054:59;6033:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6176:6;6161:5;;:22;;;;;;;;;;;;;;;;;;6206:5;6193:4;;:19;;;;;;;;;;;;;;;;;;6228:24;6238:6;6246:5;6228:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5959:300;;:::o;1633:106:6:-;1689:4;1731:1;1712:6;:15;1719:7;1712:15;;;;;;;;;;;;;;;;:20;1705:27;;1633:106;;;:::o;13966:486:3:-;14019:20;14032:6;14019:12;:20::i;:::-;14049:31;14083:12;:20;14096:6;14083:20;;;;;;;;;;;;;;;14049:54;;14113:13;14129:30;14152:6;;14129:11;:18;;;:22;;:30;;;;:::i;:::-;14113:46;;14185:1;14177:5;:9;14169:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14232:5;;;;;;;;;;;:14;;;14247:6;14255:5;14232:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14232:29:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14232:29:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14232:29:3;;;;;;;;;;;;;;;;;14280:17;14291:5;14280:6;;:10;;:17;;;;:::i;:::-;14271:6;:26;;;;14328:11;:17;;;14308:11;:17;;:37;;;;14376:29;14399:5;14376:11;:18;;;:22;;:29;;;;:::i;:::-;14355:11;:18;;:50;;;;14420:25;14431:6;14439:5;14420:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;13966:486;;;:::o;2140:24::-;;;;:::o;5528:93::-;5575:7;5609:4;;;;;;;;;;;5594:20;;5528:93;:::o;14510:92::-;14557:7;14583:12;14576:19;;14510:92;:::o;4972:94::-;5018:7;5052:6;;;;;;;;;;;5037:22;;4972:94;:::o;118:29:4:-;;;;;;;;;;;;;:::o;1762:30:3:-;;;;;;;;;;;;;;:::o;1531:32::-;;;;:::o;4529:125::-;599:10:6;:8;:10::i;:::-;591:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4608:5:3;4593:4;;:21;;;;;;;;;;;;;;;;;;4629:18;4641:5;4629:18;;;;;;;;;;;;;;;;;;;;;;4529:125;:::o;4280:132::-;599:10:6;:8;:10::i;:::-;591:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4363:7:3;4346:6;;:25;;;;;;;;;;;;;;;;;;4386:19;4397:7;4386:19;;;;;;;;;;;;;;;;;;;;;;4280:132;:::o;2225:25::-;;;;:::o;161:41:6:-;;;;;;;;;;;;;;;;;:::o;14707:199:3:-;855:5:4;;;;;;;;;;;841:19;;:10;:19;;;820:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14774:5:3;;;;;;;;;;;:18;;;14793:10;14813:4;14820:6;14774:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14774:53:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14774:53:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14774:53:3;;;;;;;;;;;;;;;;;14846:18;14857:6;14846;;:10;;:18;;;;:::i;:::-;14837:6;:27;;;;14879:20;14892:6;14879:20;;;;;;;;;;;;;;;;;;14707:199;:::o;485:300:4:-;566:14;;;;;;;;;;;552:28;;:10;:28;;;531:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;674:35;687:5;;;;;;;;;;;694:14;;;;;;;;;;;674:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;727:14;;;;;;;;;;;719:5;;:22;;;;;;;;;;;;;;;;;;776:1;751:14;;:27;;;;;;;;;;;;;;;;;;485:300::o;10320:113:3:-;10391:35;10405:10;10417:8;10391:13;:35::i;:::-;10320:113;;:::o;2042:40::-;;;;;;;;;;;;;;;;;:::o;13426:425::-;13513:13;13542:20;13580:1;13566:10;;:15;:33;;;;13585:3;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13585:14:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13585:14:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13585:14:3;;;;;;;;;;;;;;;;13566:33;13565:227;;13631:161;13781:10;;13631:128;13743:6;:15;13750:7;13743:15;;;;;;;;;;;;;;;;13631:90;13709:11;;13631:56;13669:11;:17;;;13631:16;:14;:16::i;:::-;:37;;:56;;;;:::i;:::-;:77;;:90;;;;:::i;:::-;:111;;:128;;;;:::i;:::-;:149;;:161;;;;:::i;:::-;13565:227;;;13615:1;13565:227;13542:250;;13832:12;13810:19;13821:7;13810:10;:19::i;:::-;:34;13802:42;;13426:425;;;;:::o;15057:262::-;855:5:4;;;;;;;;;;;841:19;;:10;:19;;;820:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15160:6:3;;15150;:16;;15142:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15199:5;;;;;;;;;;;:14;;;15214:7;15223:6;15199:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15199:31:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15199:31:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15199:31:3;;;;;;;;;;;;;;;;;15249:18;15260:6;15249;;:10;;:18;;;;:::i;:::-;15240:6;:27;;;;15282:30;15296:7;15305:6;15282:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;15057:262;;:::o;92:20:4:-;;;;;;;;;;;;;:::o;5162:92:3:-;5208:7;5242:4;;;;;;;;;;;5227:20;;5162:92;:::o;6752:178::-;6840:19;6889:34;6904:6;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6904:18:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6904:18:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6904:18:3;;;;;;;;;;;;;;;;6889:10;:14;;:34;;;;:::i;:::-;6875:48;;6752:178;;;:::o;11553:116::-;599:10:6;:8;:10::i;:::-;591:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11620:13:3;:11;:13::i;:::-;11657:5;11643:11;:19;;;;11553:116;:::o;10936:66::-;10974:21;10984:10;10974:9;:21::i;:::-;10936:66::o;7062:989::-;4102:3;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4102:14:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4102:14:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4102:14:3;;;;;;;;;;;;;;;;4101:15;4093:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7135:3;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7135:19:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7135:19:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7135:19:3;;;;;;;;;;;;;;;;7134:20;7126:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7202:1;7189:10;:14;7181:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7276:1;7263:4;;;;;;;;;;;:8;;;:10;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7263:10:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7263:10:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7263:10:3;;;;;;;;;;;;;;;;:14;7255:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7329:6;;;;;;;;;;;:15;;;7345:4;;;;;;;;;;;:8;;;:10;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7345:10:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7345:10:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7345:10:3;;;;;;;;;;;;;;;;7329:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7329:27:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7329:27:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7329:27:3;;;;;;;;;;;;;;;;7321:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7395:12;7410:10;7395:25;;7450:1;7435:5;:11;7441:4;7435:11;;;;;;;;;;;;;;;;:16;7431:173;;;7506:6;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7506:16:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7506:16:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7506:16:3;;;;;;;;;;;;;;;;7492:10;:30;;7467:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7431:173;7614:18;7627:4;7614:12;:18::i;:::-;7643:19;7665:25;7679:10;7665:13;:25::i;:::-;7643:47;;7701:5;;;;;;;;;;;:18;;;7720:4;7734;7741:11;7701:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7701:52:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7701:52:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7701:52:3;;;;;;;;;;;;;;;;;7763:4;;;;;;;;;;;:9;;;7773:4;7779:10;7763:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7763:27:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7763:27:3;;;;7813:25;7827:10;7813:9;;:13;;:25;;;;:::i;:::-;7801:9;:37;;;;7861:27;7876:11;7861:10;;:14;;:27;;;;:::i;:::-;7848:10;:40;;;;7912:27;7928:10;7912:5;:11;7918:4;7912:11;;;;;;;;;;;;;;;;:15;;:27;;;;:::i;:::-;7898:5;:11;7904:4;7898:11;;;;;;;;;;;;;;;:41;;;;7964:29;7981:11;7964:6;:12;7971:4;7964:12;;;;;;;;;;;;;;;;:16;;:29;;;;:::i;:::-;7949:6;:12;7956:4;7949:12;;;;;;;;;;;;;;;:44;;;;8009:35;8020:11;8033:10;8009:35;;;;;;;;;;;;;;;;;;;;;;;;4144:1;;7062:989;:::o;11166:116::-;11238:37;11254:10;11266:8;11238:15;:37::i;:::-;11166:116;;:::o;11402:92::-;11456:31;11464:10;11476;11456:7;:31::i;:::-;11402:92;:::o;11824:624::-;11868:3;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11868:14:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11868:14:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11868:14:3;;;;;;;;;;;;;;;;11864:51;;;11898:7;;11864:51;11925:19;11947:16;:14;:16::i;:::-;11925:38;;11973:17;11993:34;12009:11;:17;;;11993:11;:15;;:34;;;;:::i;:::-;11973:54;;12054:1;12042:9;:13;12038:404;;;12071:21;12095:26;12111:9;12095:11;;:15;;:26;;;;:::i;:::-;12071:50;;12135:13;12165:1;12151:10;;:15;:100;;12205:46;12240:10;;12205:30;12223:11;;12205:13;:17;;:30;;;;:::i;:::-;:34;;:46;;;;:::i;:::-;12151:100;;;12185:1;12151:100;12135:116;;12285:28;12307:5;12285:11;:17;;;:21;;:28;;;;:::i;:::-;12265:11;:17;;:48;;;;12347:11;12327;:17;;:31;;;;12377:54;12389:9;12400:11;12413;:17;;;12377:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12038:404;;;11824:624;;;:::o;10760:92::-;10812:33;10819:5;:17;10825:10;10819:17;;;;;;;;;;;;;;;;10838:6;10812;:33::i;:::-;10760:92;:::o;1277:249:6:-;855:5:4;;;;;;;;;;;841:19;;:10;:19;;;820:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1364:17:6;1373:7;1364:8;:17::i;:::-;1343:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1468:6;:15;1475:7;1468:15;;;;;;;;;;;;;;;1461:22;;;1498:21;1511:7;1498:21;;;;;;;;;;;;;;;;;;;;;;1277:249;:::o;5344:88:3:-;5387:7;5421:3;;;;;;;;;;;5406:19;;5344:88;:::o;4764:112::-;599:10:6;:8;:10::i;:::-;591:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4835:4:3;4824:3;;:16;;;;;;;;;;;;;;;;;;4855:14;4864:4;4855:14;;;;;;;;;;;;;;;;;;;;;;4764:112;:::o;1598:34::-;;;;:::o;6412:129::-;6466:7;6475;6502:6;:15;6509:7;6502:15;;;;;;;;;;;;;;;;6519:5;:14;6525:7;6519:14;;;;;;;;;;;;;;;;6494:40;;;;6412:129;;;:::o;10571:90::-;10624:30;10631:10;10643;10624:6;:30::i;:::-;10571:90;:::o;1675:33::-;;;;:::o;1948:41::-;;;;;;;;;;;;;;;;;:::o;2331:19::-;;;;:::o;826:318:6:-;855:5:4;;;;;;;;;;;841:19;;:10;:19;;;820:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;919:1:6;900:21;;:7;:21;;;;892:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;985:17;994:7;985:8;:17::i;:::-;984:18;963:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1100:1;1082:6;:15;1089:7;1082:15;;;;;;;;;;;;;;;:19;;;;1116:21;1129:7;1116:21;;;;;;;;;;;;;;;;;;;;;;826:318;:::o;12640:240:3:-;12698:13;:11;:13::i;:::-;12721:31;12755:12;:21;12768:7;12755:21;;;;;;;;;;;;;;;12721:55;;12807:19;12818:7;12807:10;:19::i;:::-;12786:11;:18;;:40;;;;12856:11;:17;;;12836:11;:17;;:37;;;;12640:240;;:::o;358:104:2:-;416:7;446:1;442;:5;:13;;454:1;442:13;;;450:1;442:13;435:20;;358:104;;;;:::o;1274:134:5:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;834:176::-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;8228:1053:3:-;4102:3;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4102:14:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4102:14:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4102:14:3;;;;;;;;;;;;;;;;4101:15;4093:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8347:3;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8347:20:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8347:20:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8347:20:3;;;;;;;;;;;;;;;;8346:21;8338:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8395:14;8412:10;8395:27;;8456:1;8440:5;:13;8446:6;8440:13;;;;;;;;;;;;;;;;:17;8432:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8506:1;8493:10;:14;8485:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8574:5;:13;8580:6;8574:13;;;;;;;;;;;;;;;;8560:10;:27;;8552:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8624:20;8637:6;8624:12;:20::i;:::-;8655:19;8677:25;8691:10;8677:13;:25::i;:::-;8655:47;;8713:15;8731:6;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8731:16:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8731:16:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8731:16:3;;;;;;;;;;;;;;;;8713:34;;8757:11;8771:34;8800:4;8771:24;8787:7;8771:11;:15;;:24;;;;:::i;:::-;:28;;:34;;;;:::i;:::-;8757:48;;8815:12;8830:20;8846:3;8830:11;:15;;:20;;;;:::i;:::-;8815:35;;8867:13;8876:3;8867:4;;:8;;:13;;;;:::i;:::-;8860:4;:20;;;;8891:5;;;;;;;;;;;:14;;;2419:42;8917:3;8891:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8891:30:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8891:30:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8891:30:3;;;;;;;;;;;;;;;;;8931:4;;;;;;;;;;;:9;;;8941:6;8949:10;8931:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8931:29:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8931:29:3;;;;8970:5;;;;;;;;;;;:14;;;8985:8;8995:4;8970:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8970:30:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8970:30:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8970:30:3;;;;;;;;;;;;;;;;;9027:29;9045:10;9027:5;:13;9033:6;9027:13;;;;;;;;;;;;;;;;:17;;:29;;;;:::i;:::-;9011:5;:13;9017:6;9011:13;;;;;;;;;;;;;;;:45;;;;9083:31;9102:11;9083:6;:14;9090:6;9083:14;;;;;;;;;;;;;;;;:18;;:31;;;;:::i;:::-;9066:6;:14;9073:6;9066:14;;;;;;;;;;;;;;;:48;;;;9136:25;9150:10;9136:9;;:13;;:25;;;;:::i;:::-;9124:9;:37;;;;9184:27;9199:11;9184:10;;:14;;:27;;;;:::i;:::-;9171:10;:40;;;;9227:47;9239:11;9252:4;9258:3;9263:10;9227:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4144:1;;;;;8228:1053;;:::o;2189:459:5:-;2247:7;2493:1;2488;:6;2484:45;;;2517:1;2510:8;;;;2484:45;2539:9;2555:1;2551;:5;2539:17;;2583:1;2578;2574;:5;;;;;;:10;2566:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2640:1;2633:8;;;2189:459;;;;;:::o;3103:130::-;3161:7;3187:39;3191:1;3194;3187:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3180:46;;3103:130;;;;:::o;13001:316:3:-;13060:13;13085:31;13119:12;:20;13132:6;13119:20;;;;;;;;;;;;;;;13085:54;;13157:153;13193:107;13275:11;;13193:60;13238:6;:14;13245:6;13238:14;;;;;;;;;;;;;;;;13193:40;13215:11;:17;;;13193:11;:17;;;:21;;:40;;;;:::i;:::-;:44;;:60;;;;:::i;:::-;:64;;:107;;;;:::i;:::-;13157:11;:18;;;:22;;:153;;;;:::i;:::-;13149:161;;13001:316;;;;:::o;9460:692::-;9550:3;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9550:14:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9550:14:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9550:14:3;;;;;;;;;;;;;;;;9542:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9601:12;9616:10;9601:25;;9657:1;9644:10;:14;9636:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9734:1;9711:4;;;;;;;;;;;:14;;;9726:4;9711:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9711:20:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9711:20:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9711:20:3;;;;;;;;;;;;;;;;:24;9703:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9792:4;;;;;;;;;;;:14;;;9807:4;9792:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9792:20:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9792:20:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9792:20:3;;;;;;;;;;;;;;;;9778:10;:34;;9770:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9847:19;9869:25;9883:10;9869:13;:25::i;:::-;9847:47;;9905:4;;;;;;;;;;;:9;;;9915:4;9921:10;9905:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9905:27:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9905:27:3;;;;9942:5;;;;;;;;;;;:14;;;9957:8;9967:11;9942:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9942:37:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9942:37:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9942:37:3;;;;;;;;;;;;;;;;;10002:25;10016:10;10002:9;;:13;;:25;;;;:::i;:::-;9990:9;:37;;;;10050:27;10065:11;10050:10;;:14;;:27;;;;:::i;:::-;10037:10;:40;;;;10093:52;10105:11;10118;10131:1;10134:10;10093:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9460:692;;;;:::o;1732:217:5:-;1848:7;1880:1;1875;:6;;1883:12;1867: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;1867:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:9;1922:1;1918;:5;1906:17;;1941:1;1934:8;;;1732:217;;;;;:::o;3748:368::-;3864:7;3961:1;3957;:5;3964:12;3949: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;3949:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3987:9;4003:1;3999;:5;;;;;;3987:17;;4108:1;4101:8;;;3748:368;;;;;:::o
Swarm Source
bzzr://6e56814a1f55ec0be86f69a809e9d0f79f1f3472df39e646a97cd326b27085bc
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.