Overview
ETH Balance
ETH Value
$0.00Latest 25 from a total of 2,845 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Execute Emergenc... | 10227419 | 465 days ago | IN | 0 ETH | 0.00000073 | ||||
| Sign Emergency W... | 10227172 | 465 days ago | IN | 0 ETH | 0.00000032 | ||||
| Sign Emergency W... | 10227045 | 465 days ago | IN | 0 ETH | 0.0000004 | ||||
| Sign Emergency W... | 10226414 | 465 days ago | IN | 0 ETH | 0.00000051 | ||||
| Propose Emergenc... | 10226082 | 465 days ago | IN | 0 ETH | 0.0000003 | ||||
| Claim Rewards | 10216725 | 465 days ago | IN | 0 ETH | 0.00000031 | ||||
| Claim Rewards | 10127521 | 467 days ago | IN | 0 ETH | 0.00000035 | ||||
| Mine | 10099496 | 468 days ago | IN | 0 ETH | 0.00000019 | ||||
| Mine | 10099488 | 468 days ago | IN | 0 ETH | 0.00000019 | ||||
| Complete Mining | 10099485 | 468 days ago | IN | 0 ETH | 0.00127244 | ||||
| Mine | 10099477 | 468 days ago | IN | 0 ETH | 0.00003302 | ||||
| Mine | 10099465 | 468 days ago | IN | 0 ETH | 0.00003399 | ||||
| Mine | 10099460 | 468 days ago | IN | 0 ETH | 0.00003379 | ||||
| Mine | 10099456 | 468 days ago | IN | 0 ETH | 0.00003339 | ||||
| Mine | 10099443 | 468 days ago | IN | 0 ETH | 0.0000334 | ||||
| Mine | 10099439 | 468 days ago | IN | 0 ETH | 0.0000334 | ||||
| Mine | 10099434 | 468 days ago | IN | 0 ETH | 0.00003353 | ||||
| Mine | 10099430 | 468 days ago | IN | 0 ETH | 0.0000334 | ||||
| Mine | 10099427 | 468 days ago | IN | 0 ETH | 0.00003353 | ||||
| Mine | 10099423 | 468 days ago | IN | 0 ETH | 0.00003383 | ||||
| Mine | 10099418 | 468 days ago | IN | 0 ETH | 0.00003342 | ||||
| Mine | 10099406 | 468 days ago | IN | 0 ETH | 0.00003353 | ||||
| Mine | 10099403 | 468 days ago | IN | 0 ETH | 0.00003383 | ||||
| Mine | 10099400 | 468 days ago | IN | 0 ETH | 0.00003383 | ||||
| Mine | 10099375 | 468 days ago | IN | 0 ETH | 0.0000339 |
Latest 14 internal transactions
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 10227419 | 465 days ago | 0.00320181 ETH | ||||
| 10099485 | 468 days ago | 0.0000236 ETH | ||||
| 10099485 | 468 days ago | 0.0000234 ETH | ||||
| 10099485 | 468 days ago | 0.00035575 ETH | ||||
| 10086079 | 468 days ago | 0.05 ETH | ||||
| 10063962 | 468 days ago | 0.00015007 ETH | ||||
| 10063962 | 468 days ago | 0.0001272 ETH | ||||
| 10063962 | 468 days ago | 0.00025667 ETH | ||||
| 10059442 | 468 days ago | 0.05 ETH | ||||
| 9762669 | 475 days ago | 0.00001734 ETH | ||||
| 9762669 | 475 days ago | 0.00000412 ETH | ||||
| 9762669 | 475 days ago | 0.00014825 ETH | ||||
| 9762137 | 475 days ago | 0.00014825 ETH | ||||
| 9749317 | 476 days ago | 0.06 ETH |
Cross-Chain Transactions
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;
import "./IERC20.sol";
import "./Ownable.sol";
import "./ReentrancyGuard.sol";
import "./SafeMath.sol";
import "./IKHYPERSToken.sol";
import "./IBlast.sol";
import "./IBlastPoints.sol";
import "./IHypersoundV3.sol";
import "./IKONKMaster.sol";
contract KONKHypersPool is ReentrancyGuard, Ownable {
using SafeMath for uint256;
IBlast public constant BLAST = IBlast(0x4300000000000000000000000000000000000002);
IBlastPoints public constant BLAST_POINTS = IBlastPoints(0x2536FE9ab3F511540F2f9e2eC2A805005C3Dd800);
IKONKMaster public masterContract;
IHypersoundV3 public hypersound;
IERC20 public hypersToken;
uint256 public poolCap;
uint256 public fixedDeposit;
uint256 public stakerDiscount;
uint256 public fixedFeeAmount;
uint256 public platformFees;
uint256 public totalHypersMined;
uint256 public miningSessionCount;
uint256 public constant MINIMUM_SPEND_PERCENTAGE = 1;
address public pointsOperator;
address public currentMiningBot;
struct Pool {
uint256 totalDeposits;
bool locked;
uint256 smartRampVotes;
uint256 aggressiveVotes;
uint256 contributorCount;
uint256 sessionId;
uint256 hypersEarned;
address[] depositors;
mapping(address => bool) isDepositor;
}
Pool public currentPool;
mapping(address => uint256) public poolDeposits;
uint256 public accumulatedHypersRewards;
uint256 public platformFeePercentage = 10;
bool public miningSessionInProgress;
// Multisig variables
address[5] public signers;
uint256 public constant REQUIRED_SIGNATURES = 3;
mapping(address => bool) public isSigner;
uint256 public emergencyWithdrawalProposalId;
mapping(uint256 => mapping(address => bool)) public hasSignedWithdrawal;
uint256 public emergencyWithdrawalSignatures;
IKHYPERSToken public kHypersToken;
uint256 public totalKHypersMinted;
event Deposited(address indexed user, uint256 amount, uint256 fee, bool isSmartRamp, uint256 sessionId);
event PoolFilled(uint256 sessionId, uint256 smartRampVotes, uint256 aggressiveVotes, uint256 poolAmount);
event RewardsClaimed(address indexed user, uint256 amount);
event MiningSessionStarted(uint256 sessionId, uint256 requiredAmount, address bot);
event MiningComplete(uint256 sessionId, uint256 totalRewards);
event RewardDistributed(address indexed user, uint256 amount);
event PoolReset(uint256 indexed newSessionId);
event PoolYieldAndGasClaimed(uint256 yieldAmount, uint256 gasAmount);
event EmergencyWithdrawalExecuted(uint256 proposalId, uint256 ethAmount, uint256 hypersAmount);
event SignerUpdated(address oldSigner, address newSigner);
constructor(
address _pointsOperator,
address _hypersound,
address _masterContract,
address _hypersToken,
uint256 _poolCap,
uint256 _fixedDeposit,
uint256 _fixedFeeAmount,
uint256 _stakerDiscount,
address _kHypersTokenAddress,
address[5] memory _initialSigners
) Ownable(msg.sender) {
pointsOperator = _pointsOperator;
BLAST_POINTS.configurePointsOperator(_pointsOperator);
hypersound = IHypersoundV3(_hypersound);
masterContract = IKONKMaster(_masterContract);
hypersToken = IERC20(_hypersToken);
poolCap = _poolCap;
fixedDeposit = _fixedDeposit;
fixedFeeAmount = _fixedFeeAmount;
stakerDiscount = _stakerDiscount;
currentPool.sessionId = 1;
BLAST.configureClaimableYield();
BLAST.configureClaimableGas();
kHypersToken = IKHYPERSToken(_kHypersTokenAddress);
for (uint i = 0; i < 5; i++) {
require(_initialSigners[i] != address(0), "Invalid signer");
signers[i] = _initialSigners[i];
isSigner[_initialSigners[i]] = true;
}
}
function setFee(uint256 _fixedFeeAmount, uint256 _stakerDiscount) external onlyOwner {
fixedFeeAmount = _fixedFeeAmount;
stakerDiscount = _stakerDiscount;
}
function multiDeposit(uint256 times, bool isSmartRamp) external payable nonReentrant {
require(times > 0, "Invalid deposit count");
uint256 feePerDeposit = calculateFee(msg.sender);
uint256 totalRequiredAmount = (fixedDeposit + feePerDeposit) * times;
require(msg.value == totalRequiredAmount, "Incorrect ETH amount");
uint256 totalDeposit = fixedDeposit * times;
uint256 totalFees = feePerDeposit * times;
require(!currentPool.locked, "Pool is locked");
require(currentPool.totalDeposits + totalDeposit <= poolCap, "Deposit would exceed pool cap");
for (uint i = 0; i < times; i++) {
addToCurrentPool(fixedDeposit, isSmartRamp);
emit Deposited(msg.sender, fixedDeposit, feePerDeposit, isSmartRamp, currentPool.sessionId);
}
platformFees += totalFees;
}
function calculateFee(address user) public view returns (uint256) {
uint256 stakedAmount = masterContract.getStakedAmount(user);
if (stakedAmount >= 5555 * 1e18) {
uint256 discount = fixedFeeAmount * stakerDiscount / 10000;
return fixedFeeAmount > discount ? fixedFeeAmount - discount : 0;
}
return fixedFeeAmount;
}
function addToCurrentPool(uint256 amount, bool isSmartRamp) internal {
currentPool.totalDeposits += amount;
poolDeposits[msg.sender] += amount;
if (isSmartRamp) {
currentPool.smartRampVotes += amount;
} else {
currentPool.aggressiveVotes += amount;
}
if (!currentPool.isDepositor[msg.sender]) {
currentPool.depositors.push(msg.sender);
currentPool.isDepositor[msg.sender] = true;
currentPool.contributorCount++;
}
if (currentPool.totalDeposits >= poolCap) {
currentPool.locked = true;
emit PoolFilled(currentPool.sessionId, currentPool.smartRampVotes, currentPool.aggressiveVotes, currentPool.totalDeposits);
}
}
function startMining() external {
require(masterContract.authorizedBotWallets(msg.sender), "Not authorized");
require(currentPool.locked && !miningSessionInProgress, "Invalid pool state");
miningSessionInProgress = true;
currentMiningBot = msg.sender;
uint256 poolAmount = currentPool.totalDeposits;
(bool success, ) = currentMiningBot.call{value: poolAmount}("");
require(success, "Failed to send funds to bot");
currentPool.hypersEarned = hypersToken.balanceOf(address(this));
emit MiningSessionStarted(currentPool.sessionId, poolAmount, msg.sender);
}
function mine(uint256 batchSize) external {
require(msg.sender == currentMiningBot && miningSessionInProgress, "Not authorized");
require(batchSize >= 1 && batchSize <= 1000, "Invalid batch size");
hypersound.mineBatch(batchSize, "");
}
function completeMining() external {
require(msg.sender == currentMiningBot && miningSessionInProgress, "Not authorized");
uint256 finalHypersBalance = hypersToken.balanceOf(address(this));
uint256 newRewards = finalHypersBalance - currentPool.hypersEarned;
totalHypersMined += newRewards;
accumulatedHypersRewards += newRewards;
distributeRewards(newRewards);
uint256 feeToTransfer = platformFees.mul(platformFeePercentage).div(100);
platformFees = platformFees.sub(feeToTransfer);
(bool feeSuccess, ) = address(masterContract).call{value: feeToTransfer}(
abi.encodeWithSignature("receivePlatformFees()")
);
require(feeSuccess, "Fee transfer failed");
claimYieldAndGasForCurrentPool();
emit MiningComplete(currentPool.sessionId, newRewards);
resetPool();
miningSessionInProgress = false;
currentMiningBot = address(0);
}
function distributeRewards(uint256 rewardsAmount) internal {
if (rewardsAmount == 0 || currentPool.totalDeposits == 0) return;
for (uint i = 0; i < currentPool.depositors.length; i++) {
address depositor = currentPool.depositors[i];
uint256 userDeposit = poolDeposits[depositor];
if (userDeposit > 0) {
uint256 userRewardShare = (userDeposit * rewardsAmount) / currentPool.totalDeposits;
kHypersToken.mint(depositor, userRewardShare);
totalKHypersMinted += userRewardShare;
emit RewardDistributed(depositor, userRewardShare);
}
}
}
function claimYieldAndGasForCurrentPool() internal {
uint256 initialBalance = address(this).balance;
BLAST.claimAllYield(address(this), address(this));
uint256 afterYieldBalance = address(this).balance;
uint256 yieldAmount = afterYieldBalance - initialBalance;
BLAST.claimMaxGas(address(this), address(this));
uint256 finalBalance = address(this).balance;
uint256 gasAmount = finalBalance - afterYieldBalance;
uint256 totalAmount = yieldAmount + gasAmount;
if (totalAmount > 0) {
(bool success, ) = address(masterContract).call{value: totalAmount}(
abi.encodeWithSignature("receiveYieldAndGas()")
);
require(success, "Failed to send yield and gas to master contract");
masterContract.claimYieldAndGas();
emit PoolYieldAndGasClaimed(yieldAmount, gasAmount);
}
}
function resetPool() internal {
miningSessionCount++;
delete currentPool;
currentPool.sessionId = miningSessionCount;
currentPool.locked = false;
emit PoolReset(currentPool.sessionId);
}
function claimRewards(uint256 amount) external nonReentrant {
require(kHypersToken.balanceOf(msg.sender) >= amount, "Insufficient kHYPERS balance");
require(hypersToken.balanceOf(address(this)) >= amount, "Insufficient HYPERS in pool");
kHypersToken.burn(msg.sender, amount);
require(hypersToken.transfer(msg.sender, amount), "HYPERS transfer failed");
accumulatedHypersRewards = accumulatedHypersRewards.sub(amount);
emit RewardsClaimed(msg.sender, amount);
}
function withdrawPlatformFees(uint256 amount) external onlyOwner {
require(amount <= platformFees, "Insufficient fees");
platformFees -= amount;
(bool success, ) = msg.sender.call{value: amount}("");
require(success, "Transfer failed");
}
function setPlatformFeePercentage(uint256 _newPercentage) external onlyOwner {
require(_newPercentage <= 100, "Percentage must be between 0 and 100");
platformFeePercentage = _newPercentage;
}
function updateMasterContract(address _newMasterContract) external onlyOwner {
require(_newMasterContract != address(0), "Invalid address");
masterContract = IKONKMaster(_newMasterContract);
}
function updatePointsOperator(address _newOperator) external onlyOwner {
require(_newOperator != address(0), "Invalid address");
pointsOperator = _newOperator;
BLAST_POINTS.configurePointsOperator(_newOperator);
}
// Multisig and Emergency Withdrawal Functions
function proposeEmergencyWithdrawal() external onlyOwner {
require(emergencyWithdrawalSignatures == 0, "Proposal pending");
emergencyWithdrawalProposalId++;
emergencyWithdrawalSignatures = 0;
}
function signEmergencyWithdrawal() external {
require(isSigner[msg.sender], "Not a signer");
require(!hasSignedWithdrawal[emergencyWithdrawalProposalId][msg.sender], "Already signed");
hasSignedWithdrawal[emergencyWithdrawalProposalId][msg.sender] = true;
emergencyWithdrawalSignatures++;
}
function executeEmergencyWithdrawal() external onlyOwner {
require(emergencyWithdrawalSignatures >= REQUIRED_SIGNATURES, "Insufficient signatures");
_executeWithdrawal();
emergencyWithdrawalSignatures = 0;
for (uint i = 0; i < 5; i++) {
hasSignedWithdrawal[emergencyWithdrawalProposalId][signers[i]] = false;
}
}
function replaceSigner(address oldSigner, address newSigner) external onlyOwner {
require(isSigner[oldSigner] && !isSigner[newSigner], "Invalid signers");
require(newSigner != address(0), "Invalid address");
for (uint i = 0; i < 5; i++) {
if (signers[i] == oldSigner) {
signers[i] = newSigner;
break;
}
}
isSigner[oldSigner] = false;
isSigner[newSigner] = true;
emit SignerUpdated(oldSigner, newSigner);
}
function _executeWithdrawal() private {
uint256 ethBalance = address(this).balance;
uint256 hypersBalance = hypersToken.balanceOf(address(this));
(bool success, ) = owner().call{value: ethBalance}("");
require(success, "ETH transfer failed");
require(hypersToken.transfer(owner(), hypersBalance), "HYPERS transfer failed");
emit EmergencyWithdrawalExecuted(emergencyWithdrawalProposalId, ethBalance, hypersBalance);
delete currentPool;
miningSessionCount = 0;
platformFees = 0;
totalHypersMined = 0;
accumulatedHypersRewards = 0;
currentPool.sessionId = 1;
}
function updatePoolSettings(uint256 _newFixedDeposit, uint256 _newPoolCap) external onlyOwner {
require(_newFixedDeposit > 0, "Invalid fixed deposit value");
require(_newPoolCap > 0 && _newPoolCap >= currentPool.totalDeposits, "Invalid pool cap value");
fixedDeposit = _newFixedDeposit;
poolCap = _newPoolCap;
}
// Function to change the kHYPERS token contract if needed
function setKHypersToken(address newKHypersToken) external onlyOwner {
kHypersToken = IKHYPERSToken(newKHypersToken);
}
function getPoolInfo() external view returns (
uint256 currentSessionId,
bool isLocked,
uint256 totalDeposits,
uint256 smartRampVotes,
uint256 aggressiveVotes,
uint256 contributorCount
) {
return (
currentPool.sessionId,
currentPool.locked,
currentPool.totalDeposits,
currentPool.smartRampVotes,
currentPool.aggressiveVotes,
currentPool.contributorCount
);
}
function getMiningStatus() external view returns (
bool miningInProgress,
address currentBot
) {
return (
miningSessionInProgress,
currentMiningBot
);
}
function getContractTotalBal() external view returns (
uint256 balance,
uint256 hypersBalance
) {
return (
address(this).balance,
hypersToken.balanceOf(address(this))
);
}
function getFinancialData() external view returns (
uint256 totalFees,
uint256 totalMined,
uint256 accumulatedRewards
) {
return (
platformFees,
totalHypersMined,
accumulatedHypersRewards
);
}
function getUserInfo(address user) external view returns (
uint256 currentDeposit,
uint256 kHYPERSBalance
) {
return (
poolDeposits[user],
kHypersToken.balanceOf(user)
);
}
receive() external payable {}
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;
interface IBlast {
function configureClaimableYield() external;
function configureClaimableGas() external;
function claimAllYield(address contractAddress, address recipientOfYield) external returns (uint256);
function claimMaxGas(address contractAddress, address recipientOfGas) external returns (uint256);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;
interface IBlastPoints {
function configurePointsOperator(address operator) external;
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;
interface IERC20 {
/**
* @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);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) 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 a `value` amount of tokens 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 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;
interface IHypersoundV3 {
function mineBatch(uint256 nbTx, bytes calldata extraData) external;
function balanceOf(address account) external view returns (uint256);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;
import "./IERC20.sol";
interface IKHYPERSToken is IERC20 {
function authorizedPools(address) external view returns (bool);
function setPoolAuthorization(address pool, bool isAuthorized) external;
function mint(address to, uint256 amount) external;
function burn(address from, uint256 amount) external;
event PoolAuthorizationChanged(address pool, bool isAuthorized);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;
interface IKONKMaster {
function authorizedBotWallets(address wallet) external view returns (bool);
function receiveYieldAndGas() external payable;
function claimYieldAndGas() external;
function getStakedAmount(address user) external view returns (uint256);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;
import "./Context.sol";
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
_nonReentrantBefore();
_;
_nonReentrantAfter();
}
function _nonReentrantBefore() private {
// On the first call to nonReentrant, _status will be _NOT_ENTERED
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
}
function _nonReentrantAfter() private {
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
/**
* @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
* `nonReentrant` function in the call stack.
*/
function _reentrancyGuardEntered() internal view returns (bool) {
return _status == _ENTERED;
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the subtraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
/**
* @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 a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator.
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_pointsOperator","type":"address"},{"internalType":"address","name":"_hypersound","type":"address"},{"internalType":"address","name":"_masterContract","type":"address"},{"internalType":"address","name":"_hypersToken","type":"address"},{"internalType":"uint256","name":"_poolCap","type":"uint256"},{"internalType":"uint256","name":"_fixedDeposit","type":"uint256"},{"internalType":"uint256","name":"_fixedFeeAmount","type":"uint256"},{"internalType":"uint256","name":"_stakerDiscount","type":"uint256"},{"internalType":"address","name":"_kHypersTokenAddress","type":"address"},{"internalType":"address[5]","name":"_initialSigners","type":"address[5]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isSmartRamp","type":"bool"},{"indexed":false,"internalType":"uint256","name":"sessionId","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"hypersAmount","type":"uint256"}],"name":"EmergencyWithdrawalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sessionId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalRewards","type":"uint256"}],"name":"MiningComplete","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sessionId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"requiredAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"bot","type":"address"}],"name":"MiningSessionStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sessionId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"smartRampVotes","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"aggressiveVotes","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poolAmount","type":"uint256"}],"name":"PoolFilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newSessionId","type":"uint256"}],"name":"PoolReset","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"yieldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gasAmount","type":"uint256"}],"name":"PoolYieldAndGasClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldSigner","type":"address"},{"indexed":false,"internalType":"address","name":"newSigner","type":"address"}],"name":"SignerUpdated","type":"event"},{"inputs":[],"name":"BLAST","outputs":[{"internalType":"contract IBlast","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BLAST_POINTS","outputs":[{"internalType":"contract IBlastPoints","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_SPEND_PERCENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REQUIRED_SIGNATURES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accumulatedHypersRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"calculateFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"completeMining","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentMiningBot","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPool","outputs":[{"internalType":"uint256","name":"totalDeposits","type":"uint256"},{"internalType":"bool","name":"locked","type":"bool"},{"internalType":"uint256","name":"smartRampVotes","type":"uint256"},{"internalType":"uint256","name":"aggressiveVotes","type":"uint256"},{"internalType":"uint256","name":"contributorCount","type":"uint256"},{"internalType":"uint256","name":"sessionId","type":"uint256"},{"internalType":"uint256","name":"hypersEarned","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdrawalProposalId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdrawalSignatures","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"executeEmergencyWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fixedDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fixedFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractTotalBal","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"hypersBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFinancialData","outputs":[{"internalType":"uint256","name":"totalFees","type":"uint256"},{"internalType":"uint256","name":"totalMined","type":"uint256"},{"internalType":"uint256","name":"accumulatedRewards","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMiningStatus","outputs":[{"internalType":"bool","name":"miningInProgress","type":"bool"},{"internalType":"address","name":"currentBot","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolInfo","outputs":[{"internalType":"uint256","name":"currentSessionId","type":"uint256"},{"internalType":"bool","name":"isLocked","type":"bool"},{"internalType":"uint256","name":"totalDeposits","type":"uint256"},{"internalType":"uint256","name":"smartRampVotes","type":"uint256"},{"internalType":"uint256","name":"aggressiveVotes","type":"uint256"},{"internalType":"uint256","name":"contributorCount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserInfo","outputs":[{"internalType":"uint256","name":"currentDeposit","type":"uint256"},{"internalType":"uint256","name":"kHYPERSBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"hasSignedWithdrawal","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hypersToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hypersound","outputs":[{"internalType":"contract IHypersoundV3","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSigner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kHypersToken","outputs":[{"internalType":"contract IKHYPERSToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"masterContract","outputs":[{"internalType":"contract IKONKMaster","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"batchSize","type":"uint256"}],"name":"mine","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"miningSessionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"miningSessionInProgress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"times","type":"uint256"},{"internalType":"bool","name":"isSmartRamp","type":"bool"}],"name":"multiDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platformFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platformFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pointsOperator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"poolDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposeEmergencyWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"oldSigner","type":"address"},{"internalType":"address","name":"newSigner","type":"address"}],"name":"replaceSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fixedFeeAmount","type":"uint256"},{"internalType":"uint256","name":"_stakerDiscount","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newKHypersToken","type":"address"}],"name":"setKHypersToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPercentage","type":"uint256"}],"name":"setPlatformFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"signEmergencyWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"signers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakerDiscount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startMining","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalHypersMined","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalKHypersMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newMasterContract","type":"address"}],"name":"updateMasterContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOperator","type":"address"}],"name":"updatePointsOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFixedDeposit","type":"uint256"},{"internalType":"uint256","name":"_newPoolCap","type":"uint256"}],"name":"updatePoolSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawPlatformFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080604052600a601955348015610014575f5ffd5b5060405161563e38038061563e8339818101604052810190610036919061079e565b3360015f819055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100ae575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100a59190610886565b60405180910390fd5b6100bd8161050360201b60201c565b5089600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732536fe9ab3f511540f2f9e2ec2a805005c3dd80073ffffffffffffffffffffffffffffffffffffffff166336b91f2b8b6040518263ffffffff1660e01b815260040161014b9190610886565b5f604051808303815f87803b158015610162575f5ffd5b505af1158015610174573d5f5f3e3d5ffd5b505050508860035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508760025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508660045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550856005819055508460068190555083600881905550826007819055506001600e6005018190555073430000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff1663f098767a6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156102b8575f5ffd5b505af11580156102ca573d5f5f3e3d5ffd5b5050505073430000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff16634e606c476040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610327575f5ffd5b505af1158015610339573d5f5f3e3d5ffd5b505050508160245f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5f90505b60058110156104f3575f73ffffffffffffffffffffffffffffffffffffffff168282600581106103b5576103b461089f565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1603610410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040790610926565b60405180910390fd5b8181600581106104235761042261089f565b5b6020020151601b826005811061043c5761043b61089f565b5b015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160205f8484600581106104925761049161089f565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610382565b5050505050505050505050610944565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051905090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6105fc826105d3565b9050919050565b61060c816105f2565b8114610616575f5ffd5b50565b5f8151905061062781610603565b92915050565b5f819050919050565b61063f8161062d565b8114610649575f5ffd5b50565b5f8151905061065a81610636565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6106aa82610664565b810181811067ffffffffffffffff821117156106c9576106c8610674565b5b80604052505050565b5f6106db6105c6565b90506106e782826106a1565b919050565b5f67ffffffffffffffff82111561070657610705610674565b5b602082029050919050565b5f5ffd5b5f610727610722846106ec565b6106d2565b9050806020840283018581111561074157610740610711565b5b835b8181101561076a57806107568882610619565b845260208401935050602081019050610743565b5050509392505050565b5f82601f83011261078857610787610660565b5b6005610795848285610715565b91505092915050565b5f5f5f5f5f5f5f5f5f5f6101c08b8d0312156107bd576107bc6105cf565b5b5f6107ca8d828e01610619565b9a505060206107db8d828e01610619565b99505060406107ec8d828e01610619565b98505060606107fd8d828e01610619565b975050608061080e8d828e0161064c565b96505060a061081f8d828e0161064c565b95505060c06108308d828e0161064c565b94505060e06108418d828e0161064c565b9350506101006108538d828e01610619565b9250506101206108658d828e01610774565b9150509295989b9194979a5092959850565b610880816105f2565b82525050565b5f6020820190506108995f830184610877565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82825260208201905092915050565b7f496e76616c6964207369676e65720000000000000000000000000000000000005f82015250565b5f610910600e836108cc565b915061091b826108dc565b602082019050919050565b5f6020820190508181035f83015261093d81610904565b9050919050565b614ced806109515f395ff3fe60806040526004361061031d575f3560e01c80638c28efba116101aa578063b6e19e06116100f6578063e72328ce11610094578063ef93de1e1161006e578063ef93de1e14610b2a578063f2fde38b14610b52578063f4993bbd14610b7a578063f76e947b14610b9057610324565b8063e72328ce14610ad0578063e994561814610af8578063ea6c2e8414610b0e57610324565b8063cdd78cfc116100d0578063cdd78cfc14610a1a578063d037125014610a44578063dca7bbe614610a6c578063e3d9109f14610aa857610324565b8063b6e19e061461099c578063b954dc57146109c6578063cd446e22146109f057610324565b80639ac18b1911610163578063acddb1c01161013d578063acddb1c014610908578063b009231c14610932578063b0a8d5ca1461095c578063b3381df61461097257610324565b80639ac18b191461088a5780639ec9ac41146108b4578063a64f9ff6146108de57610324565b80638c28efba1461078e5780638da5cb5b146107ba5780639031d1a8146107e4578063941aef641461082057806397d7577614610836578063992f90751461086057610324565b80634c069a33116102695780636aa214161161022257806379a1800a116101fc57806379a1800a146106d65780637a86b282146107005780637df73e271461072a5780638333903e1461076657610324565b80636aa214161461066e5780636d55669514610696578063715018a6146106c057610324565b80634c069a33146105575780634d4748981461058257806352f7c988146105aa57806360246c88146105d25780636386c1c714610601578063692b69ae1461063e57610324565b80632a150127116102d6578063457fb905116102b0578063457fb9051461049d578063465f5eb8146104c757806347fb4553146105035780634b8f90251461052d57610324565b80632a150127146104215780632d35aaba146104495780633da79c151461047357610324565b8063068ed2f5146103285780630962ef791461035257806316de4d5d1461037a578063194a4e7e146103a55780632079fb9a146103cf57806321b79d981461040b57610324565b3661032457005b5f5ffd5b348015610333575f5ffd5b5061033c610bba565b6040516103499190613850565b60405180910390f35b34801561035d575f5ffd5b5061037860048036038101906103739190613897565b610bc0565b005b348015610385575f5ffd5b5061038e610f56565b60405161039c9291906138c2565b60405180910390f35b3480156103b0575f5ffd5b506103b9610ffa565b6040516103c69190613850565b60405180910390f35b3480156103da575f5ffd5b506103f560048036038101906103f09190613897565b611000565b6040516104029190613928565b60405180910390f35b348015610416575f5ffd5b5061041f611034565b005b34801561042c575f5ffd5b506104476004803603810190610442919061396b565b611386565b005b348015610454575f5ffd5b5061045d61143f565b60405161046a9190613850565b60405180910390f35b34801561047e575f5ffd5b50610487611444565b6040516104949190613928565b60405180910390f35b3480156104a8575f5ffd5b506104b1611469565b6040516104be91906139f1565b60405180910390f35b3480156104d2575f5ffd5b506104ed60048036038101906104e8919061396b565b61148e565b6040516104fa9190613850565b60405180910390f35b34801561050e575f5ffd5b5061051761158f565b6040516105249190613928565b60405180910390f35b348015610538575f5ffd5b506105416115b4565b60405161054e9190613a2a565b60405180910390f35b348015610562575f5ffd5b5061056b6115cc565b604051610579929190613a5d565b60405180910390f35b34801561058d575f5ffd5b506105a860048036038101906105a39190613897565b611607565b005b3480156105b5575f5ffd5b506105d060048036038101906105cb9190613a84565b611789565b005b3480156105dd575f5ffd5b506105e66117a3565b6040516105f896959493929190613ac2565b60405180910390f35b34801561060c575f5ffd5b506106276004803603810190610622919061396b565b6117ec565b6040516106359291906138c2565b60405180910390f35b348015610649575f5ffd5b506106526118ce565b6040516106659796959493929190613b21565b60405180910390f35b348015610679575f5ffd5b50610694600480360381019061068f9190613897565b611909565b005b3480156106a1575f5ffd5b506106aa611a1a565b6040516106b79190613850565b60405180910390f35b3480156106cb575f5ffd5b506106d4611a20565b005b3480156106e1575f5ffd5b506106ea611a33565b6040516106f79190613850565b60405180910390f35b34801561070b575f5ffd5b50610714611a39565b6040516107219190613850565b60405180910390f35b348015610735575f5ffd5b50610750600480360381019061074b919061396b565b611a3f565b60405161075d9190613b8e565b60405180910390f35b348015610771575f5ffd5b5061078c60048036038101906107879190613897565b611a5b565b005b348015610799575f5ffd5b506107a2611ab1565b6040516107b193929190613ba7565b60405180910390f35b3480156107c5575f5ffd5b506107ce611ac8565b6040516107db9190613928565b60405180910390f35b3480156107ef575f5ffd5b5061080a6004803603810190610805919061396b565b611af0565b6040516108179190613850565b60405180910390f35b34801561082b575f5ffd5b50610834611b05565b005b348015610841575f5ffd5b5061084a611b71565b6040516108579190613bfc565b60405180910390f35b34801561086b575f5ffd5b50610874611b89565b6040516108819190613850565b60405180910390f35b348015610895575f5ffd5b5061089e611b8f565b6040516108ab9190613850565b60405180910390f35b3480156108bf575f5ffd5b506108c8611b94565b6040516108d59190613850565b60405180910390f35b3480156108e9575f5ffd5b506108f2611b9a565b6040516108ff9190613850565b60405180910390f35b348015610913575f5ffd5b5061091c611ba0565b6040516109299190613850565b60405180910390f35b34801561093d575f5ffd5b50610946611ba6565b6040516109539190613c35565b60405180910390f35b348015610967575f5ffd5b50610970611bcb565b005b34801561097d575f5ffd5b50610986611f9c565b6040516109939190613b8e565b60405180910390f35b3480156109a7575f5ffd5b506109b0611fae565b6040516109bd9190613c6e565b60405180910390f35b3480156109d1575f5ffd5b506109da611fd3565b6040516109e79190613850565b60405180910390f35b3480156109fb575f5ffd5b50610a04611fd9565b604051610a119190613ca7565b60405180910390f35b348015610a25575f5ffd5b50610a2e611ffe565b604051610a3b9190613850565b60405180910390f35b348015610a4f575f5ffd5b50610a6a6004803603810190610a659190613a84565b612004565b005b348015610a77575f5ffd5b50610a926004803603810190610a8d9190613cc0565b6120b2565b604051610a9f9190613b8e565b60405180910390f35b348015610ab3575f5ffd5b50610ace6004803603810190610ac99190613cfe565b6120dc565b005b348015610adb575f5ffd5b50610af66004803603810190610af1919061396b565b6123ef565b005b348015610b03575f5ffd5b50610b0c612522565b005b610b286004803603810190610b239190613d66565b6126c5565b005b348015610b35575f5ffd5b50610b506004803603810190610b4b919061396b565b6128e9565b005b348015610b5d575f5ffd5b50610b786004803603810190610b73919061396b565b612934565b005b348015610b85575f5ffd5b50610b8e6129b8565b005b348015610b9b575f5ffd5b50610ba4612acc565b604051610bb19190613850565b60405180910390f35b600b5481565b610bc8612ad2565b8060245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610c239190613928565b602060405180830381865afa158015610c3e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c629190613db8565b1015610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9a90613e3d565b60405180910390fd5b8060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cfe9190613928565b602060405180830381865afa158015610d19573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3d9190613db8565b1015610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7590613ea5565b60405180910390fd5b60245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac33836040518363ffffffff1660e01b8152600401610dda929190613ec3565b5f604051808303815f87803b158015610df1575f5ffd5b505af1158015610e03573d5f5f3e3d5ffd5b5050505060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610e63929190613ec3565b6020604051808303815f875af1158015610e7f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea39190613efe565b610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990613f73565b60405180910390fd5b610ef781601854612b1f90919063ffffffff16565b6018819055503373ffffffffffffffffffffffffffffffffffffffff167ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe82604051610f439190613850565b60405180910390a2610f53612b34565b50565b5f5f4760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fb39190613928565b602060405180830381865afa158015610fce573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff29190613db8565b915091509091565b60095481565b601b816005811061100f575f80fd5b015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632058c3b6336040518263ffffffff1660e01b815260040161108e9190613928565b602060405180830381865afa1580156110a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110cd9190613efe565b61110c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110390613fdb565b60405180910390fd5b600e6001015f9054906101000a900460ff1680156111365750601a5f9054906101000a900460ff16155b611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c90614043565b60405180910390fd5b6001601a5f6101000a81548160ff02191690831515021790555033600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600e5f015490505f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161121d9061408e565b5f6040518083038185875af1925050503d805f8114611257576040519150601f19603f3d011682016040523d82523d5f602084013e61125c565b606091505b50509050806112a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611297906140ec565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112fa9190613928565b602060405180830381865afa158015611315573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113399190613db8565b600e600601819055507f677b28c00e1df8ed0bed5e22ae5a2035f0701672bfa215b9809b6d0155e60c56600e60050154833360405161137a9392919061410a565b60405180910390a15050565b61138e612b3d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f390614189565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634da6a556846040518263ffffffff1660e01b81526004016114ea9190613928565b602060405180830381865afa158015611505573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115299190613db8565b905069012d231c7c593eec00008110611583575f61271060075460085461155091906141d4565b61155a9190614242565b9050806008541161156b575f61157a565b806008546115799190614272565b5b9250505061158a565b6008549150505b919050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b732536fe9ab3f511540f2f9e2ec2a805005c3dd80081565b5f5f601a5f9054906101000a900460ff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091509091565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561166e5750601a5f9054906101000a900460ff165b6116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490613fdb565b60405180910390fd5b600181101580156116c057506103e88111155b6116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f6906142ef565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e493031826040518263ffffffff1660e01b8152600401611759919061433d565b5f604051808303815f87803b158015611770575f5ffd5b505af1158015611782573d5f5f3e3d5ffd5b5050505050565b611791612b3d565b81600881905550806007819055505050565b5f5f5f5f5f5f600e60050154600e6001015f9054906101000a900460ff16600e5f0154600e60020154600e60030154600e60040154955095509550955095509550909192939495565b5f5f60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b81526004016118869190613928565b602060405180830381865afa1580156118a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c59190613db8565b91509150915091565b600e805f015490806001015f9054906101000a900460ff16908060020154908060030154908060040154908060050154908060060154905087565b611911612b3d565b600954811115611956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194d906143b3565b60405180910390fd5b8060095f8282546119679190614272565b925050819055505f3373ffffffffffffffffffffffffffffffffffffffff16826040516119939061408e565b5f6040518083038185875af1925050503d805f81146119cd576040519150601f19603f3d011682016040523d82523d5f602084013e6119d2565b606091505b5050905080611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d9061441b565b60405180910390fd5b5050565b60185481565b611a28612b3d565b611a315f612bc4565b565b60255481565b60215481565b60208052805f5260405f205f915054906101000a900460ff1681565b611a63612b3d565b6064811115611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e906144a9565b60405180910390fd5b8060198190555050565b5f5f5f600954600a54601854925092509250909192565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6017602052805f5260405f205f915090505481565b611b0d612b3d565b5f60235414611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4890614511565b60405180910390fd5b60215f815480929190611b639061452f565b91905055505f602381905550565b73430000000000000000000000000000000000000281565b60235481565b600381565b60085481565b600a5481565b60075481565b60245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015611c325750601a5f9054906101000a900460ff165b611c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6890613fdb565b60405180910390fd5b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ccc9190613928565b602060405180830381865afa158015611ce7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0b9190613db8565b90505f600e6006015482611d1f9190614272565b905080600a5f828254611d329190614576565b925050819055508060185f828254611d4a9190614576565b92505081905550611d5a81612c87565b5f611d856064611d77601954600954612e5f90919063ffffffff16565b612e7490919063ffffffff16565b9050611d9c81600954612b1f90919063ffffffff16565b6009819055505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516024016040516020818303038152906040527f9b29c418000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611e6c91906145f1565b5f6040518083038185875af1925050503d805f8114611ea6576040519150601f19603f3d011682016040523d82523d5f602084013e611eab565b606091505b5050905080611eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee690614651565b60405180910390fd5b611ef7612e89565b7f5e63f04f01459b14a84df2fde69183c88b8cc3ba2b1a5b7d9e7b6ef5b3c0ad44600e6005015484604051611f2d9291906138c2565b60405180910390a1611f3d6131f6565b5f601a5f6101000a81548160ff0219169083151502179055505f600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b601a5f9054906101000a900460ff1681565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b61200c612b3d565b5f821161204e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612045906146b9565b60405180910390fd5b5f811180156120615750600e5f01548110155b6120a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209790614721565b60405180910390fd5b81600681905550806005819055505050565b6022602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b6120e4612b3d565b60205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612181575060205f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6121c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b790614789565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361222e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222590614189565b60405180910390fd5b5f5f90505b6005811015612308578273ffffffffffffffffffffffffffffffffffffffff16601b8260058110612267576122666147a7565b5b015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036122fb5781601b82600581106122b8576122b76147a7565b5b015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612308565b8080600101915050612233565b505f60205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f2d025324f0a785e8c12d0a0d91a9caa49df4ef20ff87e0df7213a1d4f3157beb82826040516123e39291906147d4565b60405180910390a15050565b6123f7612b3d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90614189565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732536fe9ab3f511540f2f9e2ec2a805005c3dd80073ffffffffffffffffffffffffffffffffffffffff166336b91f2b826040518263ffffffff1660e01b81526004016124f29190613928565b5f604051808303815f87803b158015612509575f5ffd5b505af115801561251b573d5f5f3e3d5ffd5b5050505050565b60205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a290614845565b60405180910390fd5b60225f60215481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263d906148ad565b60405180910390fd5b600160225f60215481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060235f8154809291906126be9061452f565b9190505550565b6126cd612ad2565b5f821161270f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270690614915565b60405180910390fd5b5f6127193361148e565b90505f838260065461272b9190614576565b61273591906141d4565b9050803414612779576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127709061497d565b60405180910390fd5b5f8460065461278891906141d4565b90505f858461279791906141d4565b9050600e6001015f9054906101000a900460ff16156127eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e2906149e5565b60405180910390fd5b60055482600e5f01546127fe9190614576565b111561283f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283690614a4d565b60405180910390fd5b5f5f90505b868110156128c057612858600654876132b9565b3373ffffffffffffffffffffffffffffffffffffffff167f66d462ae7c8e10bbc849bf692fa676566a2457b5fa467244bfa87417a0925e056006548789600e600501546040516128ab9493929190614a6b565b60405180910390a28080600101915050612844565b508060095f8282546128d29190614576565b92505081905550505050506128e5612b34565b5050565b6128f1612b3d565b8060245f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61293c612b3d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129ac575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016129a39190613928565b60405180910390fd5b6129b581612bc4565b50565b6129c0612b3d565b60036023541015612a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fd90614af8565b60405180910390fd5b612a0e61350e565b5f6023819055505f5f90505b6005811015612ac9575f60225f60215481526020019081526020015f205f601b8460058110612a4c57612a4b6147a7565b5b015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050612a1a565b50565b60065481565b60025f5403612b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0d90614b60565b60405180910390fd5b60025f81905550565b5f8183612b2c9190614272565b905092915050565b60015f81905550565b612b456137f8565b73ffffffffffffffffffffffffffffffffffffffff16612b63611ac8565b73ffffffffffffffffffffffffffffffffffffffff1614612bc257612b866137f8565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612bb99190613928565b60405180910390fd5b565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f811480612c9857505f600e5f0154145b612e5c575f5f90505b600e60070180549050811015612e5a575f600e6007018281548110612cc957612cc86147a7565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f811115612e4b575f600e5f01548583612d4e91906141d4565b612d589190614242565b905060245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1984836040518363ffffffff1660e01b8152600401612db6929190613ec3565b5f604051808303815f87803b158015612dcd575f5ffd5b505af1158015612ddf573d5f5f3e3d5ffd5b505050508060255f828254612df49190614576565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea682604051612e419190613850565b60405180910390a2505b50508080600101915050612ca1565b505b50565b5f8183612e6c91906141d4565b905092915050565b5f8183612e819190614242565b905092915050565b5f47905073430000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff1663860043b630306040518363ffffffff1660e01b8152600401612edc9291906147d4565b6020604051808303815f875af1158015612ef8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f1c9190613db8565b505f4790505f8282612f2e9190614272565b905073430000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff1663662aa11d30306040518363ffffffff1660e01b8152600401612f7f9291906147d4565b6020604051808303815f875af1158015612f9b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fbf9190613db8565b505f4790505f8382612fd19190614272565b90505f8184612fe09190614576565b90505f8111156131ee575f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516024016040516020818303038152906040527ff128c717000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516130b491906145f1565b5f6040518083038185875af1925050503d805f81146130ee576040519150601f19603f3d011682016040523d82523d5f602084013e6130f3565b606091505b5050905080613137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312e90614bee565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ec8b426040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561319d575f5ffd5b505af11580156131af573d5f5f3e3d5ffd5b505050507f3842b2195b08a05bc0b797bee80aa3f1bcd53f79cf77b1d4a99bfd41b93ae2a785846040516131e49291906138c2565b60405180910390a1505b505050505050565b600b5f8154809291906132089061452f565b9190505550600e5f5f82015f9055600182015f6101000a81549060ff0219169055600282015f9055600382015f9055600482015f9055600582015f9055600682015f9055600782015f61325b91906137ff565b5050600b54600e600501819055505f600e6001015f6101000a81548160ff021916908315150217905550600e600501547ff883bd997a5ff824fb701f4caaec246151da39606d495d24bf5f8f667093daf560405160405180910390a2565b81600e5f015f8282546132cc9190614576565b925050819055508160175f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461331f9190614576565b92505081905550801561334c5781600e6002015f8282546133409190614576565b92505081905550613368565b81600e6003015f8282546133609190614576565b925050819055505b600e6008015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661348f57600e60070133908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e6008015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600e6004015f8154809291906134899061452f565b91905055505b600554600e5f01541061350a576001600e6001015f6101000a81548160ff0219169083151502179055507f4bc8083dd1c3e5ec0ddbfe5bfa4edcf6a8251f2454b1f76e98d776a58bee40ea600e60050154600e60020154600e60030154600e5f01546040516135019493929190614c0c565b60405180910390a15b5050565b5f4790505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161356d9190613928565b602060405180830381865afa158015613588573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135ac9190613db8565b90505f6135b7611ac8565b73ffffffffffffffffffffffffffffffffffffffff16836040516135da9061408e565b5f6040518083038185875af1925050503d805f8114613614576040519150601f19603f3d011682016040523d82523d5f602084013e613619565b606091505b505090508061365d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161365490614c99565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6136a2611ac8565b846040518363ffffffff1660e01b81526004016136c0929190613ec3565b6020604051808303815f875af11580156136dc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137009190613efe565b61373f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373690613f73565b60405180910390fd5b7fe1afeafeedce22783df08e2c5f38d287bc3bae1e0ee7d12937dc80ebf7db7a3c602154848460405161377493929190613ba7565b60405180910390a1600e5f5f82015f9055600182015f6101000a81549060ff0219169055600282015f9055600382015f9055600482015f9055600582015f9055600682015f9055600782015f6137ca91906137ff565b50505f600b819055505f6009819055505f600a819055505f6018819055506001600e60050181905550505050565b5f33905090565b5080545f8255905f5260205f209081019061381a919061381d565b50565b5b80821115613834575f815f90555060010161381e565b5090565b5f819050919050565b61384a81613838565b82525050565b5f6020820190506138635f830184613841565b92915050565b5f5ffd5b61387681613838565b8114613880575f5ffd5b50565b5f813590506138918161386d565b92915050565b5f602082840312156138ac576138ab613869565b5b5f6138b984828501613883565b91505092915050565b5f6040820190506138d55f830185613841565b6138e26020830184613841565b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613912826138e9565b9050919050565b61392281613908565b82525050565b5f60208201905061393b5f830184613919565b92915050565b61394a81613908565b8114613954575f5ffd5b50565b5f8135905061396581613941565b92915050565b5f602082840312156139805761397f613869565b5b5f61398d84828501613957565b91505092915050565b5f819050919050565b5f6139b96139b46139af846138e9565b613996565b6138e9565b9050919050565b5f6139ca8261399f565b9050919050565b5f6139db826139c0565b9050919050565b6139eb816139d1565b82525050565b5f602082019050613a045f8301846139e2565b92915050565b5f613a14826139c0565b9050919050565b613a2481613a0a565b82525050565b5f602082019050613a3d5f830184613a1b565b92915050565b5f8115159050919050565b613a5781613a43565b82525050565b5f604082019050613a705f830185613a4e565b613a7d6020830184613919565b9392505050565b5f5f60408385031215613a9a57613a99613869565b5b5f613aa785828601613883565b9250506020613ab885828601613883565b9150509250929050565b5f60c082019050613ad55f830189613841565b613ae26020830188613a4e565b613aef6040830187613841565b613afc6060830186613841565b613b096080830185613841565b613b1660a0830184613841565b979650505050505050565b5f60e082019050613b345f83018a613841565b613b416020830189613a4e565b613b4e6040830188613841565b613b5b6060830187613841565b613b686080830186613841565b613b7560a0830185613841565b613b8260c0830184613841565b98975050505050505050565b5f602082019050613ba15f830184613a4e565b92915050565b5f606082019050613bba5f830186613841565b613bc76020830185613841565b613bd46040830184613841565b949350505050565b5f613be6826139c0565b9050919050565b613bf681613bdc565b82525050565b5f602082019050613c0f5f830184613bed565b92915050565b5f613c1f826139c0565b9050919050565b613c2f81613c15565b82525050565b5f602082019050613c485f830184613c26565b92915050565b5f613c58826139c0565b9050919050565b613c6881613c4e565b82525050565b5f602082019050613c815f830184613c5f565b92915050565b5f613c91826139c0565b9050919050565b613ca181613c87565b82525050565b5f602082019050613cba5f830184613c98565b92915050565b5f5f60408385031215613cd657613cd5613869565b5b5f613ce385828601613883565b9250506020613cf485828601613957565b9150509250929050565b5f5f60408385031215613d1457613d13613869565b5b5f613d2185828601613957565b9250506020613d3285828601613957565b9150509250929050565b613d4581613a43565b8114613d4f575f5ffd5b50565b5f81359050613d6081613d3c565b92915050565b5f5f60408385031215613d7c57613d7b613869565b5b5f613d8985828601613883565b9250506020613d9a85828601613d52565b9150509250929050565b5f81519050613db28161386d565b92915050565b5f60208284031215613dcd57613dcc613869565b5b5f613dda84828501613da4565b91505092915050565b5f82825260208201905092915050565b7f496e73756666696369656e74206b4859504552532062616c616e6365000000005f82015250565b5f613e27601c83613de3565b9150613e3282613df3565b602082019050919050565b5f6020820190508181035f830152613e5481613e1b565b9050919050565b7f496e73756666696369656e742048595045525320696e20706f6f6c00000000005f82015250565b5f613e8f601b83613de3565b9150613e9a82613e5b565b602082019050919050565b5f6020820190508181035f830152613ebc81613e83565b9050919050565b5f604082019050613ed65f830185613919565b613ee36020830184613841565b9392505050565b5f81519050613ef881613d3c565b92915050565b5f60208284031215613f1357613f12613869565b5b5f613f2084828501613eea565b91505092915050565b7f485950455253207472616e73666572206661696c6564000000000000000000005f82015250565b5f613f5d601683613de3565b9150613f6882613f29565b602082019050919050565b5f6020820190508181035f830152613f8a81613f51565b9050919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f613fc5600e83613de3565b9150613fd082613f91565b602082019050919050565b5f6020820190508181035f830152613ff281613fb9565b9050919050565b7f496e76616c696420706f6f6c20737461746500000000000000000000000000005f82015250565b5f61402d601283613de3565b915061403882613ff9565b602082019050919050565b5f6020820190508181035f83015261405a81614021565b9050919050565b5f81905092915050565b50565b5f6140795f83614061565b91506140848261406b565b5f82019050919050565b5f6140988261406e565b9150819050919050565b7f4661696c656420746f2073656e642066756e647320746f20626f7400000000005f82015250565b5f6140d6601b83613de3565b91506140e1826140a2565b602082019050919050565b5f6020820190508181035f830152614103816140ca565b9050919050565b5f60608201905061411d5f830186613841565b61412a6020830185613841565b6141376040830184613919565b949350505050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f614173600f83613de3565b915061417e8261413f565b602082019050919050565b5f6020820190508181035f8301526141a081614167565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6141de82613838565b91506141e983613838565b92508282026141f781613838565b9150828204841483151761420e5761420d6141a7565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61424c82613838565b915061425783613838565b92508261426757614266614215565b5b828204905092915050565b5f61427c82613838565b915061428783613838565b925082820390508181111561429f5761429e6141a7565b5b92915050565b7f496e76616c69642062617463682073697a6500000000000000000000000000005f82015250565b5f6142d9601283613de3565b91506142e4826142a5565b602082019050919050565b5f6020820190508181035f830152614306816142cd565b9050919050565b5f82825260208201905092915050565b5f6143285f8361430d565b91506143338261406b565b5f82019050919050565b5f6040820190506143505f830184613841565b81810360208301526143618161431d565b905092915050565b7f496e73756666696369656e7420666565730000000000000000000000000000005f82015250565b5f61439d601183613de3565b91506143a882614369565b602082019050919050565b5f6020820190508181035f8301526143ca81614391565b9050919050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f614405600f83613de3565b9150614410826143d1565b602082019050919050565b5f6020820190508181035f830152614432816143f9565b9050919050565b7f50657263656e74616765206d757374206265206265747765656e203020616e645f8201527f2031303000000000000000000000000000000000000000000000000000000000602082015250565b5f614493602483613de3565b915061449e82614439565b604082019050919050565b5f6020820190508181035f8301526144c081614487565b9050919050565b7f50726f706f73616c2070656e64696e67000000000000000000000000000000005f82015250565b5f6144fb601083613de3565b9150614506826144c7565b602082019050919050565b5f6020820190508181035f830152614528816144ef565b9050919050565b5f61453982613838565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361456b5761456a6141a7565b5b600182019050919050565b5f61458082613838565b915061458b83613838565b92508282019050808211156145a3576145a26141a7565b5b92915050565b5f81519050919050565b8281835e5f83830152505050565b5f6145cb826145a9565b6145d58185614061565b93506145e58185602086016145b3565b80840191505092915050565b5f6145fc82846145c1565b915081905092915050565b7f466565207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f61463b601383613de3565b915061464682614607565b602082019050919050565b5f6020820190508181035f8301526146688161462f565b9050919050565b7f496e76616c6964206669786564206465706f7369742076616c756500000000005f82015250565b5f6146a3601b83613de3565b91506146ae8261466f565b602082019050919050565b5f6020820190508181035f8301526146d081614697565b9050919050565b7f496e76616c696420706f6f6c206361702076616c7565000000000000000000005f82015250565b5f61470b601683613de3565b9150614716826146d7565b602082019050919050565b5f6020820190508181035f830152614738816146ff565b9050919050565b7f496e76616c6964207369676e65727300000000000000000000000000000000005f82015250565b5f614773600f83613de3565b915061477e8261473f565b602082019050919050565b5f6020820190508181035f8301526147a081614767565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6040820190506147e75f830185613919565b6147f46020830184613919565b9392505050565b7f4e6f742061207369676e657200000000000000000000000000000000000000005f82015250565b5f61482f600c83613de3565b915061483a826147fb565b602082019050919050565b5f6020820190508181035f83015261485c81614823565b9050919050565b7f416c7265616479207369676e65640000000000000000000000000000000000005f82015250565b5f614897600e83613de3565b91506148a282614863565b602082019050919050565b5f6020820190508181035f8301526148c48161488b565b9050919050565b7f496e76616c6964206465706f73697420636f756e7400000000000000000000005f82015250565b5f6148ff601583613de3565b915061490a826148cb565b602082019050919050565b5f6020820190508181035f83015261492c816148f3565b9050919050565b7f496e636f72726563742045544820616d6f756e740000000000000000000000005f82015250565b5f614967601483613de3565b915061497282614933565b602082019050919050565b5f6020820190508181035f8301526149948161495b565b9050919050565b7f506f6f6c206973206c6f636b65640000000000000000000000000000000000005f82015250565b5f6149cf600e83613de3565b91506149da8261499b565b602082019050919050565b5f6020820190508181035f8301526149fc816149c3565b9050919050565b7f4465706f73697420776f756c642065786365656420706f6f6c206361700000005f82015250565b5f614a37601d83613de3565b9150614a4282614a03565b602082019050919050565b5f6020820190508181035f830152614a6481614a2b565b9050919050565b5f608082019050614a7e5f830187613841565b614a8b6020830186613841565b614a986040830185613a4e565b614aa56060830184613841565b95945050505050565b7f496e73756666696369656e74207369676e6174757265730000000000000000005f82015250565b5f614ae2601783613de3565b9150614aed82614aae565b602082019050919050565b5f6020820190508181035f830152614b0f81614ad6565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f614b4a601f83613de3565b9150614b5582614b16565b602082019050919050565b5f6020820190508181035f830152614b7781614b3e565b9050919050565b7f4661696c656420746f2073656e64207969656c6420616e642067617320746f205f8201527f6d617374657220636f6e74726163740000000000000000000000000000000000602082015250565b5f614bd8602f83613de3565b9150614be382614b7e565b604082019050919050565b5f6020820190508181035f830152614c0581614bcc565b9050919050565b5f608082019050614c1f5f830187613841565b614c2c6020830186613841565b614c396040830185613841565b614c466060830184613841565b95945050505050565b7f455448207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f614c83601383613de3565b9150614c8e82614c4f565b602082019050919050565b5f6020820190508181035f830152614cb081614c77565b905091905056fea2646970667358221220e5c4dfa594edc1ff2eee6dc64719930f86ef214576c5238493bd744ac7bc130564736f6c634300081b00330000000000000000000000003e6109d1a62e16c709444b49004f513b0d5978d2000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc3000000000000000000000000362cf050550865ed3c5af543dc740c492885ed0d000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc3000000000000000000000000000000000000000000000000016345785d8a000000000000000000000000000000000000000000000000000000071afd498d000000000000000000000000000000000000000000000000000000002d79883d200000000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000957173f438ccec7f0f22d69b079b66e816df348d00000000000000000000000044127ec6b8dd04c63c58c70276628034d697731b000000000000000000000000705e45c73a854a06fe64c9bd3bbf8be1edd93274000000000000000000000000798ed654f4d9599b99f94f4a61609b7a7cfbd200000000000000000000000000b2d2ecc7d94cfb8e70f60aeb97bf7f4c4cb8ef280000000000000000000000007f448f0435803744bcda76afed4f17b0a6e0fb23
Deployed Bytecode
0x60806040526004361061031d575f3560e01c80638c28efba116101aa578063b6e19e06116100f6578063e72328ce11610094578063ef93de1e1161006e578063ef93de1e14610b2a578063f2fde38b14610b52578063f4993bbd14610b7a578063f76e947b14610b9057610324565b8063e72328ce14610ad0578063e994561814610af8578063ea6c2e8414610b0e57610324565b8063cdd78cfc116100d0578063cdd78cfc14610a1a578063d037125014610a44578063dca7bbe614610a6c578063e3d9109f14610aa857610324565b8063b6e19e061461099c578063b954dc57146109c6578063cd446e22146109f057610324565b80639ac18b1911610163578063acddb1c01161013d578063acddb1c014610908578063b009231c14610932578063b0a8d5ca1461095c578063b3381df61461097257610324565b80639ac18b191461088a5780639ec9ac41146108b4578063a64f9ff6146108de57610324565b80638c28efba1461078e5780638da5cb5b146107ba5780639031d1a8146107e4578063941aef641461082057806397d7577614610836578063992f90751461086057610324565b80634c069a33116102695780636aa214161161022257806379a1800a116101fc57806379a1800a146106d65780637a86b282146107005780637df73e271461072a5780638333903e1461076657610324565b80636aa214161461066e5780636d55669514610696578063715018a6146106c057610324565b80634c069a33146105575780634d4748981461058257806352f7c988146105aa57806360246c88146105d25780636386c1c714610601578063692b69ae1461063e57610324565b80632a150127116102d6578063457fb905116102b0578063457fb9051461049d578063465f5eb8146104c757806347fb4553146105035780634b8f90251461052d57610324565b80632a150127146104215780632d35aaba146104495780633da79c151461047357610324565b8063068ed2f5146103285780630962ef791461035257806316de4d5d1461037a578063194a4e7e146103a55780632079fb9a146103cf57806321b79d981461040b57610324565b3661032457005b5f5ffd5b348015610333575f5ffd5b5061033c610bba565b6040516103499190613850565b60405180910390f35b34801561035d575f5ffd5b5061037860048036038101906103739190613897565b610bc0565b005b348015610385575f5ffd5b5061038e610f56565b60405161039c9291906138c2565b60405180910390f35b3480156103b0575f5ffd5b506103b9610ffa565b6040516103c69190613850565b60405180910390f35b3480156103da575f5ffd5b506103f560048036038101906103f09190613897565b611000565b6040516104029190613928565b60405180910390f35b348015610416575f5ffd5b5061041f611034565b005b34801561042c575f5ffd5b506104476004803603810190610442919061396b565b611386565b005b348015610454575f5ffd5b5061045d61143f565b60405161046a9190613850565b60405180910390f35b34801561047e575f5ffd5b50610487611444565b6040516104949190613928565b60405180910390f35b3480156104a8575f5ffd5b506104b1611469565b6040516104be91906139f1565b60405180910390f35b3480156104d2575f5ffd5b506104ed60048036038101906104e8919061396b565b61148e565b6040516104fa9190613850565b60405180910390f35b34801561050e575f5ffd5b5061051761158f565b6040516105249190613928565b60405180910390f35b348015610538575f5ffd5b506105416115b4565b60405161054e9190613a2a565b60405180910390f35b348015610562575f5ffd5b5061056b6115cc565b604051610579929190613a5d565b60405180910390f35b34801561058d575f5ffd5b506105a860048036038101906105a39190613897565b611607565b005b3480156105b5575f5ffd5b506105d060048036038101906105cb9190613a84565b611789565b005b3480156105dd575f5ffd5b506105e66117a3565b6040516105f896959493929190613ac2565b60405180910390f35b34801561060c575f5ffd5b506106276004803603810190610622919061396b565b6117ec565b6040516106359291906138c2565b60405180910390f35b348015610649575f5ffd5b506106526118ce565b6040516106659796959493929190613b21565b60405180910390f35b348015610679575f5ffd5b50610694600480360381019061068f9190613897565b611909565b005b3480156106a1575f5ffd5b506106aa611a1a565b6040516106b79190613850565b60405180910390f35b3480156106cb575f5ffd5b506106d4611a20565b005b3480156106e1575f5ffd5b506106ea611a33565b6040516106f79190613850565b60405180910390f35b34801561070b575f5ffd5b50610714611a39565b6040516107219190613850565b60405180910390f35b348015610735575f5ffd5b50610750600480360381019061074b919061396b565b611a3f565b60405161075d9190613b8e565b60405180910390f35b348015610771575f5ffd5b5061078c60048036038101906107879190613897565b611a5b565b005b348015610799575f5ffd5b506107a2611ab1565b6040516107b193929190613ba7565b60405180910390f35b3480156107c5575f5ffd5b506107ce611ac8565b6040516107db9190613928565b60405180910390f35b3480156107ef575f5ffd5b5061080a6004803603810190610805919061396b565b611af0565b6040516108179190613850565b60405180910390f35b34801561082b575f5ffd5b50610834611b05565b005b348015610841575f5ffd5b5061084a611b71565b6040516108579190613bfc565b60405180910390f35b34801561086b575f5ffd5b50610874611b89565b6040516108819190613850565b60405180910390f35b348015610895575f5ffd5b5061089e611b8f565b6040516108ab9190613850565b60405180910390f35b3480156108bf575f5ffd5b506108c8611b94565b6040516108d59190613850565b60405180910390f35b3480156108e9575f5ffd5b506108f2611b9a565b6040516108ff9190613850565b60405180910390f35b348015610913575f5ffd5b5061091c611ba0565b6040516109299190613850565b60405180910390f35b34801561093d575f5ffd5b50610946611ba6565b6040516109539190613c35565b60405180910390f35b348015610967575f5ffd5b50610970611bcb565b005b34801561097d575f5ffd5b50610986611f9c565b6040516109939190613b8e565b60405180910390f35b3480156109a7575f5ffd5b506109b0611fae565b6040516109bd9190613c6e565b60405180910390f35b3480156109d1575f5ffd5b506109da611fd3565b6040516109e79190613850565b60405180910390f35b3480156109fb575f5ffd5b50610a04611fd9565b604051610a119190613ca7565b60405180910390f35b348015610a25575f5ffd5b50610a2e611ffe565b604051610a3b9190613850565b60405180910390f35b348015610a4f575f5ffd5b50610a6a6004803603810190610a659190613a84565b612004565b005b348015610a77575f5ffd5b50610a926004803603810190610a8d9190613cc0565b6120b2565b604051610a9f9190613b8e565b60405180910390f35b348015610ab3575f5ffd5b50610ace6004803603810190610ac99190613cfe565b6120dc565b005b348015610adb575f5ffd5b50610af66004803603810190610af1919061396b565b6123ef565b005b348015610b03575f5ffd5b50610b0c612522565b005b610b286004803603810190610b239190613d66565b6126c5565b005b348015610b35575f5ffd5b50610b506004803603810190610b4b919061396b565b6128e9565b005b348015610b5d575f5ffd5b50610b786004803603810190610b73919061396b565b612934565b005b348015610b85575f5ffd5b50610b8e6129b8565b005b348015610b9b575f5ffd5b50610ba4612acc565b604051610bb19190613850565b60405180910390f35b600b5481565b610bc8612ad2565b8060245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610c239190613928565b602060405180830381865afa158015610c3e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c629190613db8565b1015610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9a90613e3d565b60405180910390fd5b8060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cfe9190613928565b602060405180830381865afa158015610d19573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3d9190613db8565b1015610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7590613ea5565b60405180910390fd5b60245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac33836040518363ffffffff1660e01b8152600401610dda929190613ec3565b5f604051808303815f87803b158015610df1575f5ffd5b505af1158015610e03573d5f5f3e3d5ffd5b5050505060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610e63929190613ec3565b6020604051808303815f875af1158015610e7f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea39190613efe565b610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990613f73565b60405180910390fd5b610ef781601854612b1f90919063ffffffff16565b6018819055503373ffffffffffffffffffffffffffffffffffffffff167ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe82604051610f439190613850565b60405180910390a2610f53612b34565b50565b5f5f4760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fb39190613928565b602060405180830381865afa158015610fce573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff29190613db8565b915091509091565b60095481565b601b816005811061100f575f80fd5b015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632058c3b6336040518263ffffffff1660e01b815260040161108e9190613928565b602060405180830381865afa1580156110a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110cd9190613efe565b61110c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110390613fdb565b60405180910390fd5b600e6001015f9054906101000a900460ff1680156111365750601a5f9054906101000a900460ff16155b611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c90614043565b60405180910390fd5b6001601a5f6101000a81548160ff02191690831515021790555033600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600e5f015490505f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161121d9061408e565b5f6040518083038185875af1925050503d805f8114611257576040519150601f19603f3d011682016040523d82523d5f602084013e61125c565b606091505b50509050806112a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611297906140ec565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112fa9190613928565b602060405180830381865afa158015611315573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113399190613db8565b600e600601819055507f677b28c00e1df8ed0bed5e22ae5a2035f0701672bfa215b9809b6d0155e60c56600e60050154833360405161137a9392919061410a565b60405180910390a15050565b61138e612b3d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f390614189565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634da6a556846040518263ffffffff1660e01b81526004016114ea9190613928565b602060405180830381865afa158015611505573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115299190613db8565b905069012d231c7c593eec00008110611583575f61271060075460085461155091906141d4565b61155a9190614242565b9050806008541161156b575f61157a565b806008546115799190614272565b5b9250505061158a565b6008549150505b919050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b732536fe9ab3f511540f2f9e2ec2a805005c3dd80081565b5f5f601a5f9054906101000a900460ff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091509091565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561166e5750601a5f9054906101000a900460ff165b6116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490613fdb565b60405180910390fd5b600181101580156116c057506103e88111155b6116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f6906142ef565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e493031826040518263ffffffff1660e01b8152600401611759919061433d565b5f604051808303815f87803b158015611770575f5ffd5b505af1158015611782573d5f5f3e3d5ffd5b5050505050565b611791612b3d565b81600881905550806007819055505050565b5f5f5f5f5f5f600e60050154600e6001015f9054906101000a900460ff16600e5f0154600e60020154600e60030154600e60040154955095509550955095509550909192939495565b5f5f60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b81526004016118869190613928565b602060405180830381865afa1580156118a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c59190613db8565b91509150915091565b600e805f015490806001015f9054906101000a900460ff16908060020154908060030154908060040154908060050154908060060154905087565b611911612b3d565b600954811115611956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194d906143b3565b60405180910390fd5b8060095f8282546119679190614272565b925050819055505f3373ffffffffffffffffffffffffffffffffffffffff16826040516119939061408e565b5f6040518083038185875af1925050503d805f81146119cd576040519150601f19603f3d011682016040523d82523d5f602084013e6119d2565b606091505b5050905080611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d9061441b565b60405180910390fd5b5050565b60185481565b611a28612b3d565b611a315f612bc4565b565b60255481565b60215481565b60208052805f5260405f205f915054906101000a900460ff1681565b611a63612b3d565b6064811115611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e906144a9565b60405180910390fd5b8060198190555050565b5f5f5f600954600a54601854925092509250909192565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6017602052805f5260405f205f915090505481565b611b0d612b3d565b5f60235414611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4890614511565b60405180910390fd5b60215f815480929190611b639061452f565b91905055505f602381905550565b73430000000000000000000000000000000000000281565b60235481565b600381565b60085481565b600a5481565b60075481565b60245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015611c325750601a5f9054906101000a900460ff165b611c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6890613fdb565b60405180910390fd5b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ccc9190613928565b602060405180830381865afa158015611ce7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0b9190613db8565b90505f600e6006015482611d1f9190614272565b905080600a5f828254611d329190614576565b925050819055508060185f828254611d4a9190614576565b92505081905550611d5a81612c87565b5f611d856064611d77601954600954612e5f90919063ffffffff16565b612e7490919063ffffffff16565b9050611d9c81600954612b1f90919063ffffffff16565b6009819055505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516024016040516020818303038152906040527f9b29c418000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611e6c91906145f1565b5f6040518083038185875af1925050503d805f8114611ea6576040519150601f19603f3d011682016040523d82523d5f602084013e611eab565b606091505b5050905080611eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee690614651565b60405180910390fd5b611ef7612e89565b7f5e63f04f01459b14a84df2fde69183c88b8cc3ba2b1a5b7d9e7b6ef5b3c0ad44600e6005015484604051611f2d9291906138c2565b60405180910390a1611f3d6131f6565b5f601a5f6101000a81548160ff0219169083151502179055505f600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b601a5f9054906101000a900460ff1681565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b61200c612b3d565b5f821161204e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612045906146b9565b60405180910390fd5b5f811180156120615750600e5f01548110155b6120a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209790614721565b60405180910390fd5b81600681905550806005819055505050565b6022602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b6120e4612b3d565b60205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612181575060205f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6121c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b790614789565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361222e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222590614189565b60405180910390fd5b5f5f90505b6005811015612308578273ffffffffffffffffffffffffffffffffffffffff16601b8260058110612267576122666147a7565b5b015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036122fb5781601b82600581106122b8576122b76147a7565b5b015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612308565b8080600101915050612233565b505f60205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f2d025324f0a785e8c12d0a0d91a9caa49df4ef20ff87e0df7213a1d4f3157beb82826040516123e39291906147d4565b60405180910390a15050565b6123f7612b3d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90614189565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732536fe9ab3f511540f2f9e2ec2a805005c3dd80073ffffffffffffffffffffffffffffffffffffffff166336b91f2b826040518263ffffffff1660e01b81526004016124f29190613928565b5f604051808303815f87803b158015612509575f5ffd5b505af115801561251b573d5f5f3e3d5ffd5b5050505050565b60205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a290614845565b60405180910390fd5b60225f60215481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263d906148ad565b60405180910390fd5b600160225f60215481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060235f8154809291906126be9061452f565b9190505550565b6126cd612ad2565b5f821161270f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270690614915565b60405180910390fd5b5f6127193361148e565b90505f838260065461272b9190614576565b61273591906141d4565b9050803414612779576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127709061497d565b60405180910390fd5b5f8460065461278891906141d4565b90505f858461279791906141d4565b9050600e6001015f9054906101000a900460ff16156127eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e2906149e5565b60405180910390fd5b60055482600e5f01546127fe9190614576565b111561283f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283690614a4d565b60405180910390fd5b5f5f90505b868110156128c057612858600654876132b9565b3373ffffffffffffffffffffffffffffffffffffffff167f66d462ae7c8e10bbc849bf692fa676566a2457b5fa467244bfa87417a0925e056006548789600e600501546040516128ab9493929190614a6b565b60405180910390a28080600101915050612844565b508060095f8282546128d29190614576565b92505081905550505050506128e5612b34565b5050565b6128f1612b3d565b8060245f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61293c612b3d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129ac575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016129a39190613928565b60405180910390fd5b6129b581612bc4565b50565b6129c0612b3d565b60036023541015612a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fd90614af8565b60405180910390fd5b612a0e61350e565b5f6023819055505f5f90505b6005811015612ac9575f60225f60215481526020019081526020015f205f601b8460058110612a4c57612a4b6147a7565b5b015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050612a1a565b50565b60065481565b60025f5403612b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0d90614b60565b60405180910390fd5b60025f81905550565b5f8183612b2c9190614272565b905092915050565b60015f81905550565b612b456137f8565b73ffffffffffffffffffffffffffffffffffffffff16612b63611ac8565b73ffffffffffffffffffffffffffffffffffffffff1614612bc257612b866137f8565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612bb99190613928565b60405180910390fd5b565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f811480612c9857505f600e5f0154145b612e5c575f5f90505b600e60070180549050811015612e5a575f600e6007018281548110612cc957612cc86147a7565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f811115612e4b575f600e5f01548583612d4e91906141d4565b612d589190614242565b905060245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1984836040518363ffffffff1660e01b8152600401612db6929190613ec3565b5f604051808303815f87803b158015612dcd575f5ffd5b505af1158015612ddf573d5f5f3e3d5ffd5b505050508060255f828254612df49190614576565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea682604051612e419190613850565b60405180910390a2505b50508080600101915050612ca1565b505b50565b5f8183612e6c91906141d4565b905092915050565b5f8183612e819190614242565b905092915050565b5f47905073430000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff1663860043b630306040518363ffffffff1660e01b8152600401612edc9291906147d4565b6020604051808303815f875af1158015612ef8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f1c9190613db8565b505f4790505f8282612f2e9190614272565b905073430000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff1663662aa11d30306040518363ffffffff1660e01b8152600401612f7f9291906147d4565b6020604051808303815f875af1158015612f9b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fbf9190613db8565b505f4790505f8382612fd19190614272565b90505f8184612fe09190614576565b90505f8111156131ee575f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516024016040516020818303038152906040527ff128c717000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516130b491906145f1565b5f6040518083038185875af1925050503d805f81146130ee576040519150601f19603f3d011682016040523d82523d5f602084013e6130f3565b606091505b5050905080613137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312e90614bee565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ec8b426040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561319d575f5ffd5b505af11580156131af573d5f5f3e3d5ffd5b505050507f3842b2195b08a05bc0b797bee80aa3f1bcd53f79cf77b1d4a99bfd41b93ae2a785846040516131e49291906138c2565b60405180910390a1505b505050505050565b600b5f8154809291906132089061452f565b9190505550600e5f5f82015f9055600182015f6101000a81549060ff0219169055600282015f9055600382015f9055600482015f9055600582015f9055600682015f9055600782015f61325b91906137ff565b5050600b54600e600501819055505f600e6001015f6101000a81548160ff021916908315150217905550600e600501547ff883bd997a5ff824fb701f4caaec246151da39606d495d24bf5f8f667093daf560405160405180910390a2565b81600e5f015f8282546132cc9190614576565b925050819055508160175f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461331f9190614576565b92505081905550801561334c5781600e6002015f8282546133409190614576565b92505081905550613368565b81600e6003015f8282546133609190614576565b925050819055505b600e6008015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661348f57600e60070133908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e6008015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600e6004015f8154809291906134899061452f565b91905055505b600554600e5f01541061350a576001600e6001015f6101000a81548160ff0219169083151502179055507f4bc8083dd1c3e5ec0ddbfe5bfa4edcf6a8251f2454b1f76e98d776a58bee40ea600e60050154600e60020154600e60030154600e5f01546040516135019493929190614c0c565b60405180910390a15b5050565b5f4790505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161356d9190613928565b602060405180830381865afa158015613588573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135ac9190613db8565b90505f6135b7611ac8565b73ffffffffffffffffffffffffffffffffffffffff16836040516135da9061408e565b5f6040518083038185875af1925050503d805f8114613614576040519150601f19603f3d011682016040523d82523d5f602084013e613619565b606091505b505090508061365d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161365490614c99565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6136a2611ac8565b846040518363ffffffff1660e01b81526004016136c0929190613ec3565b6020604051808303815f875af11580156136dc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137009190613efe565b61373f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373690613f73565b60405180910390fd5b7fe1afeafeedce22783df08e2c5f38d287bc3bae1e0ee7d12937dc80ebf7db7a3c602154848460405161377493929190613ba7565b60405180910390a1600e5f5f82015f9055600182015f6101000a81549060ff0219169055600282015f9055600382015f9055600482015f9055600582015f9055600682015f9055600782015f6137ca91906137ff565b50505f600b819055505f6009819055505f600a819055505f6018819055506001600e60050181905550505050565b5f33905090565b5080545f8255905f5260205f209081019061381a919061381d565b50565b5b80821115613834575f815f90555060010161381e565b5090565b5f819050919050565b61384a81613838565b82525050565b5f6020820190506138635f830184613841565b92915050565b5f5ffd5b61387681613838565b8114613880575f5ffd5b50565b5f813590506138918161386d565b92915050565b5f602082840312156138ac576138ab613869565b5b5f6138b984828501613883565b91505092915050565b5f6040820190506138d55f830185613841565b6138e26020830184613841565b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613912826138e9565b9050919050565b61392281613908565b82525050565b5f60208201905061393b5f830184613919565b92915050565b61394a81613908565b8114613954575f5ffd5b50565b5f8135905061396581613941565b92915050565b5f602082840312156139805761397f613869565b5b5f61398d84828501613957565b91505092915050565b5f819050919050565b5f6139b96139b46139af846138e9565b613996565b6138e9565b9050919050565b5f6139ca8261399f565b9050919050565b5f6139db826139c0565b9050919050565b6139eb816139d1565b82525050565b5f602082019050613a045f8301846139e2565b92915050565b5f613a14826139c0565b9050919050565b613a2481613a0a565b82525050565b5f602082019050613a3d5f830184613a1b565b92915050565b5f8115159050919050565b613a5781613a43565b82525050565b5f604082019050613a705f830185613a4e565b613a7d6020830184613919565b9392505050565b5f5f60408385031215613a9a57613a99613869565b5b5f613aa785828601613883565b9250506020613ab885828601613883565b9150509250929050565b5f60c082019050613ad55f830189613841565b613ae26020830188613a4e565b613aef6040830187613841565b613afc6060830186613841565b613b096080830185613841565b613b1660a0830184613841565b979650505050505050565b5f60e082019050613b345f83018a613841565b613b416020830189613a4e565b613b4e6040830188613841565b613b5b6060830187613841565b613b686080830186613841565b613b7560a0830185613841565b613b8260c0830184613841565b98975050505050505050565b5f602082019050613ba15f830184613a4e565b92915050565b5f606082019050613bba5f830186613841565b613bc76020830185613841565b613bd46040830184613841565b949350505050565b5f613be6826139c0565b9050919050565b613bf681613bdc565b82525050565b5f602082019050613c0f5f830184613bed565b92915050565b5f613c1f826139c0565b9050919050565b613c2f81613c15565b82525050565b5f602082019050613c485f830184613c26565b92915050565b5f613c58826139c0565b9050919050565b613c6881613c4e565b82525050565b5f602082019050613c815f830184613c5f565b92915050565b5f613c91826139c0565b9050919050565b613ca181613c87565b82525050565b5f602082019050613cba5f830184613c98565b92915050565b5f5f60408385031215613cd657613cd5613869565b5b5f613ce385828601613883565b9250506020613cf485828601613957565b9150509250929050565b5f5f60408385031215613d1457613d13613869565b5b5f613d2185828601613957565b9250506020613d3285828601613957565b9150509250929050565b613d4581613a43565b8114613d4f575f5ffd5b50565b5f81359050613d6081613d3c565b92915050565b5f5f60408385031215613d7c57613d7b613869565b5b5f613d8985828601613883565b9250506020613d9a85828601613d52565b9150509250929050565b5f81519050613db28161386d565b92915050565b5f60208284031215613dcd57613dcc613869565b5b5f613dda84828501613da4565b91505092915050565b5f82825260208201905092915050565b7f496e73756666696369656e74206b4859504552532062616c616e6365000000005f82015250565b5f613e27601c83613de3565b9150613e3282613df3565b602082019050919050565b5f6020820190508181035f830152613e5481613e1b565b9050919050565b7f496e73756666696369656e742048595045525320696e20706f6f6c00000000005f82015250565b5f613e8f601b83613de3565b9150613e9a82613e5b565b602082019050919050565b5f6020820190508181035f830152613ebc81613e83565b9050919050565b5f604082019050613ed65f830185613919565b613ee36020830184613841565b9392505050565b5f81519050613ef881613d3c565b92915050565b5f60208284031215613f1357613f12613869565b5b5f613f2084828501613eea565b91505092915050565b7f485950455253207472616e73666572206661696c6564000000000000000000005f82015250565b5f613f5d601683613de3565b9150613f6882613f29565b602082019050919050565b5f6020820190508181035f830152613f8a81613f51565b9050919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f613fc5600e83613de3565b9150613fd082613f91565b602082019050919050565b5f6020820190508181035f830152613ff281613fb9565b9050919050565b7f496e76616c696420706f6f6c20737461746500000000000000000000000000005f82015250565b5f61402d601283613de3565b915061403882613ff9565b602082019050919050565b5f6020820190508181035f83015261405a81614021565b9050919050565b5f81905092915050565b50565b5f6140795f83614061565b91506140848261406b565b5f82019050919050565b5f6140988261406e565b9150819050919050565b7f4661696c656420746f2073656e642066756e647320746f20626f7400000000005f82015250565b5f6140d6601b83613de3565b91506140e1826140a2565b602082019050919050565b5f6020820190508181035f830152614103816140ca565b9050919050565b5f60608201905061411d5f830186613841565b61412a6020830185613841565b6141376040830184613919565b949350505050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f614173600f83613de3565b915061417e8261413f565b602082019050919050565b5f6020820190508181035f8301526141a081614167565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6141de82613838565b91506141e983613838565b92508282026141f781613838565b9150828204841483151761420e5761420d6141a7565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61424c82613838565b915061425783613838565b92508261426757614266614215565b5b828204905092915050565b5f61427c82613838565b915061428783613838565b925082820390508181111561429f5761429e6141a7565b5b92915050565b7f496e76616c69642062617463682073697a6500000000000000000000000000005f82015250565b5f6142d9601283613de3565b91506142e4826142a5565b602082019050919050565b5f6020820190508181035f830152614306816142cd565b9050919050565b5f82825260208201905092915050565b5f6143285f8361430d565b91506143338261406b565b5f82019050919050565b5f6040820190506143505f830184613841565b81810360208301526143618161431d565b905092915050565b7f496e73756666696369656e7420666565730000000000000000000000000000005f82015250565b5f61439d601183613de3565b91506143a882614369565b602082019050919050565b5f6020820190508181035f8301526143ca81614391565b9050919050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f614405600f83613de3565b9150614410826143d1565b602082019050919050565b5f6020820190508181035f830152614432816143f9565b9050919050565b7f50657263656e74616765206d757374206265206265747765656e203020616e645f8201527f2031303000000000000000000000000000000000000000000000000000000000602082015250565b5f614493602483613de3565b915061449e82614439565b604082019050919050565b5f6020820190508181035f8301526144c081614487565b9050919050565b7f50726f706f73616c2070656e64696e67000000000000000000000000000000005f82015250565b5f6144fb601083613de3565b9150614506826144c7565b602082019050919050565b5f6020820190508181035f830152614528816144ef565b9050919050565b5f61453982613838565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361456b5761456a6141a7565b5b600182019050919050565b5f61458082613838565b915061458b83613838565b92508282019050808211156145a3576145a26141a7565b5b92915050565b5f81519050919050565b8281835e5f83830152505050565b5f6145cb826145a9565b6145d58185614061565b93506145e58185602086016145b3565b80840191505092915050565b5f6145fc82846145c1565b915081905092915050565b7f466565207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f61463b601383613de3565b915061464682614607565b602082019050919050565b5f6020820190508181035f8301526146688161462f565b9050919050565b7f496e76616c6964206669786564206465706f7369742076616c756500000000005f82015250565b5f6146a3601b83613de3565b91506146ae8261466f565b602082019050919050565b5f6020820190508181035f8301526146d081614697565b9050919050565b7f496e76616c696420706f6f6c206361702076616c7565000000000000000000005f82015250565b5f61470b601683613de3565b9150614716826146d7565b602082019050919050565b5f6020820190508181035f830152614738816146ff565b9050919050565b7f496e76616c6964207369676e65727300000000000000000000000000000000005f82015250565b5f614773600f83613de3565b915061477e8261473f565b602082019050919050565b5f6020820190508181035f8301526147a081614767565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6040820190506147e75f830185613919565b6147f46020830184613919565b9392505050565b7f4e6f742061207369676e657200000000000000000000000000000000000000005f82015250565b5f61482f600c83613de3565b915061483a826147fb565b602082019050919050565b5f6020820190508181035f83015261485c81614823565b9050919050565b7f416c7265616479207369676e65640000000000000000000000000000000000005f82015250565b5f614897600e83613de3565b91506148a282614863565b602082019050919050565b5f6020820190508181035f8301526148c48161488b565b9050919050565b7f496e76616c6964206465706f73697420636f756e7400000000000000000000005f82015250565b5f6148ff601583613de3565b915061490a826148cb565b602082019050919050565b5f6020820190508181035f83015261492c816148f3565b9050919050565b7f496e636f72726563742045544820616d6f756e740000000000000000000000005f82015250565b5f614967601483613de3565b915061497282614933565b602082019050919050565b5f6020820190508181035f8301526149948161495b565b9050919050565b7f506f6f6c206973206c6f636b65640000000000000000000000000000000000005f82015250565b5f6149cf600e83613de3565b91506149da8261499b565b602082019050919050565b5f6020820190508181035f8301526149fc816149c3565b9050919050565b7f4465706f73697420776f756c642065786365656420706f6f6c206361700000005f82015250565b5f614a37601d83613de3565b9150614a4282614a03565b602082019050919050565b5f6020820190508181035f830152614a6481614a2b565b9050919050565b5f608082019050614a7e5f830187613841565b614a8b6020830186613841565b614a986040830185613a4e565b614aa56060830184613841565b95945050505050565b7f496e73756666696369656e74207369676e6174757265730000000000000000005f82015250565b5f614ae2601783613de3565b9150614aed82614aae565b602082019050919050565b5f6020820190508181035f830152614b0f81614ad6565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f614b4a601f83613de3565b9150614b5582614b16565b602082019050919050565b5f6020820190508181035f830152614b7781614b3e565b9050919050565b7f4661696c656420746f2073656e64207969656c6420616e642067617320746f205f8201527f6d617374657220636f6e74726163740000000000000000000000000000000000602082015250565b5f614bd8602f83613de3565b9150614be382614b7e565b604082019050919050565b5f6020820190508181035f830152614c0581614bcc565b9050919050565b5f608082019050614c1f5f830187613841565b614c2c6020830186613841565b614c396040830185613841565b614c466060830184613841565b95945050505050565b7f455448207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f614c83601383613de3565b9150614c8e82614c4f565b602082019050919050565b5f6020820190508181035f830152614cb081614c77565b905091905056fea2646970667358221220e5c4dfa594edc1ff2eee6dc64719930f86ef214576c5238493bd744ac7bc130564736f6c634300081b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003e6109d1a62e16c709444b49004f513b0d5978d2000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc3000000000000000000000000362cf050550865ed3c5af543dc740c492885ed0d000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc3000000000000000000000000000000000000000000000000016345785d8a000000000000000000000000000000000000000000000000000000071afd498d000000000000000000000000000000000000000000000000000000002d79883d200000000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000957173f438ccec7f0f22d69b079b66e816df348d00000000000000000000000044127ec6b8dd04c63c58c70276628034d697731b000000000000000000000000705e45c73a854a06fe64c9bd3bbf8be1edd93274000000000000000000000000798ed654f4d9599b99f94f4a61609b7a7cfbd200000000000000000000000000b2d2ecc7d94cfb8e70f60aeb97bf7f4c4cb8ef280000000000000000000000007f448f0435803744bcda76afed4f17b0a6e0fb23
-----Decoded View---------------
Arg [0] : _pointsOperator (address): 0x3e6109D1A62E16C709444B49004f513B0D5978d2
Arg [1] : _hypersound (address): 0xF8797dB8a9EeD416Ca14e8dFaEde2BF4E1aabFC3
Arg [2] : _masterContract (address): 0x362cf050550865Ed3C5aF543dC740C492885Ed0d
Arg [3] : _hypersToken (address): 0xF8797dB8a9EeD416Ca14e8dFaEde2BF4E1aabFC3
Arg [4] : _poolCap (uint256): 100000000000000000
Arg [5] : _fixedDeposit (uint256): 2000000000000000
Arg [6] : _fixedFeeAmount (uint256): 50000000000000
Arg [7] : _stakerDiscount (uint256): 500
Arg [8] : _kHypersTokenAddress (address): 0x957173F438cCeC7f0F22d69b079b66e816Df348d
Arg [9] : _initialSigners (address[5]): 0x44127ec6b8dd04C63C58c70276628034D697731b,0x705E45c73A854A06fE64c9bD3bbf8Be1edD93274,0x798ed654F4D9599B99f94F4A61609b7A7cFBD200,0xB2D2ECC7d94CFb8e70F60AeB97Bf7F4C4cB8eF28,0x7F448F0435803744Bcda76afED4F17B0A6E0FB23
-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000003e6109d1a62e16c709444b49004f513b0d5978d2
Arg [1] : 000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc3
Arg [2] : 000000000000000000000000362cf050550865ed3c5af543dc740c492885ed0d
Arg [3] : 000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc3
Arg [4] : 000000000000000000000000000000000000000000000000016345785d8a0000
Arg [5] : 00000000000000000000000000000000000000000000000000071afd498d0000
Arg [6] : 00000000000000000000000000000000000000000000000000002d79883d2000
Arg [7] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [8] : 000000000000000000000000957173f438ccec7f0f22d69b079b66e816df348d
Arg [9] : 00000000000000000000000044127ec6b8dd04c63c58c70276628034d697731b
Arg [10] : 000000000000000000000000705e45c73a854a06fe64c9bd3bbf8be1edd93274
Arg [11] : 000000000000000000000000798ed654f4d9599b99f94f4a61609b7a7cfbd200
Arg [12] : 000000000000000000000000b2d2ecc7d94cfb8e70f60aeb97bf7f4c4cb8ef28
Arg [13] : 0000000000000000000000007f448f0435803744bcda76afed4f17b0a6e0fb23
Deployed Bytecode Sourcemap
315:16041:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;923:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10381:539;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15527:243;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;851:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1674:25;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6488:656;;;;;;;;;;;;;:::i;:::-;;11438:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;963:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1060:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;644;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5294:383;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1024:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;497:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15295:224;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;7152:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4208:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14769:518;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;16072:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1421:23;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;10928:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1507:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1773:103:8;;;;;;;;;;;;;:::i;:::-;;2029:33:7;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1807:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1760:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11215:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15778:286;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;1098:87:8;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1453:47:7;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11966:225;;;;;;;;;;;;;:::i;:::-;;409:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1936:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1706:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;815:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;885:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;779:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1989:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7430:1005;;;;;;;;;;;;;:::i;:::-;;1603:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;682:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;716:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;604:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1555:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14191:362;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1858:71;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12933:539;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11661:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12199:333;;;;;;;;;;;;;:::i;:::-;;4395:891;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14632:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2031:220:8;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12540:385:7;;;;;;;;;;;;;:::i;:::-;;745:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;923:33;;;;:::o;10381:539::-;1462:21:9;:19;:21::i;:::-;10498:6:7::1;10460:12;;;;;;;;;;;:22;;;10483:10;10460:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;10452:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10596:6;10556:11;;;;;;;;;;;:21;;;10586:4;10556:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;10548:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;10655:12;;;;;;;;;;;:17;;;10673:10;10685:6;10655:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10711:11;;;;;;;;;;;:20;;;10732:10;10744:6;10711:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10703:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;10826:36;10855:6;10826:24;;:28;;:36;;;;:::i;:::-;10799:24;:63;;;;10893:10;10878:34;;;10905:6;10878:34;;;;;;:::i;:::-;;;;;;;;1506:20:9::0;:18;:20::i;:::-;10381:539:7;:::o;15527:243::-;15591:15;15617:21;15679;15715:11;;;;;;;;;;;:21;;;15745:4;15715:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15657:105;;;;15527:243;;:::o;851:27::-;;;;:::o;1674:25::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6488:656::-;6539:14;;;;;;;;;;;:35;;;6575:10;6539:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6531:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6624:11;:18;;;;;;;;;;;;:46;;;;;6647:23;;;;;;;;;;;6646:24;6624:46;6616:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;6732:4;6706:23;;:30;;;;;;;;;;;;;;;;;;6766:10;6747:16;;:29;;;;;;;;;;;;;;;;;;6797:18;6818:11;:25;;;6797:46;;6855:12;6873:16;;;;;;;;;;;:21;;6902:10;6873:44;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6854:63;;;6936:7;6928:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;7015:11;;;;;;;;;;;:21;;;7045:4;7015:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6988:11;:24;;:63;;;;7069:67;7090:11;:21;;;7113:10;7125;7069:67;;;;;;;;:::i;:::-;;;;;;;;6520:624;;6488:656::o;11438:215::-;984:13:8;:11;:13::i;:::-;11564:1:7::1;11534:32;;:18;:32;;::::0;11526:60:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11626:18;11597:14;;:48;;;;;;;;;;;;;;;;;;11438:215:::0;:::o;963:52::-;1014:1;963:52;:::o;1060:31::-;;;;;;;;;;;;;:::o;644:::-;;;;;;;;;;;;;:::o;5294:383::-;5351:7;5371:20;5394:14;;;;;;;;;;;:30;;;5425:4;5394:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5371:59;;5461:11;5445:12;:27;5441:197;;5489:16;5542:5;5525:14;;5508;;:31;;;;:::i;:::-;:39;;;;:::i;:::-;5489:58;;5586:8;5569:14;;:25;:57;;5625:1;5569:57;;;5614:8;5597:14;;:25;;;;:::i;:::-;5569:57;5562:64;;;;;;5441:197;5655:14;;5648:21;;;5294:383;;;;:::o;1024:29::-;;;;;;;;;;;;;:::o;497:100::-;554:42;497:100;:::o;15295:224::-;15355:21;15387:18;15446:23;;;;;;;;;;;15484:16;;;;;;;;;;;15424:87;;;;15295:224;;:::o;7152:270::-;7227:16;;;;;;;;;;;7213:30;;:10;:30;;;:57;;;;;7247:23;;;;;;;;;;;7213:57;7205:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;7321:1;7308:9;:14;;:35;;;;;7339:4;7326:9;:17;;7308:35;7300:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;7379:10;;;;;;;;;;;:20;;;7400:9;7379:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7152:270;:::o;4208:179::-;984:13:8;:11;:13::i;:::-;4321:15:7::1;4304:14;:32;;;;4364:15;4347:14;:32;;;;4208:179:::0;;:::o;14769:518::-;14825:24;14860:13;14884:21;14916:22;14949:23;14983:24;15048:11;:21;;;15084:11;:18;;;;;;;;;;;;15117:11;:25;;;15157:11;:26;;;15198:11;:27;;;15240:11;:28;;;15026:253;;;;;;;;;;;;14769:518;;;;;;:::o;16072:244::-;16140:22;16173;16236:12;:18;16249:4;16236:18;;;;;;;;;;;;;;;;16269:12;;;;;;;;;;;:22;;;16292:4;16269:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16214:94;;;;16072:244;;;:::o;1421:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10928:279::-;984:13:8;:11;:13::i;:::-;11022:12:7::1;;11012:6;:22;;11004:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11083:6;11067:12;;:22;;;;;;;:::i;:::-;;;;;;;;11101:12;11119:10;:15;;11142:6;11119:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11100:53;;;11172:7;11164:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;10993:214;10928:279:::0;:::o;1507:39::-;;;;:::o;1773:103:8:-;984:13;:11;:13::i;:::-;1838:30:::1;1865:1;1838:18;:30::i;:::-;1773:103::o:0;2029:33:7:-;;;;:::o;1807:44::-;;;;:::o;1760:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;11215:215::-;984:13:8;:11;:13::i;:::-;11329:3:7::1;11311:14;:21;;11303:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11408:14;11384:21;:38;;;;11215:215:::0;:::o;15778:286::-;15839:17;15867:18;15896:26;15963:12;;15990:16;;16021:24;;15941:115;;;;;;15778:286;;;:::o;1098:87:8:-;1144:7;1171:6;;;;;;;;;;;1164:13;;1098:87;:::o;1453:47:7:-;;;;;;;;;;;;;;;;;:::o;11966:225::-;984:13:8;:11;:13::i;:::-;12075:1:7::1;12042:29;;:34;12034:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;12108:29;;:31;;;;;;;;;:::i;:::-;;;;;;12182:1;12150:29;:33;;;;11966:225::o:0;409:81::-;447:42;409:81;:::o;1936:44::-;;;;:::o;1706:47::-;1752:1;1706:47;:::o;815:29::-;;;;:::o;885:31::-;;;;:::o;779:29::-;;;;:::o;1989:33::-;;;;;;;;;;;;;:::o;7430:1005::-;7498:16;;;;;;;;;;;7484:30;;:10;:30;;;:57;;;;;7518:23;;;;;;;;;;;7484:57;7476:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;7573:26;7602:11;;;;;;;;;;;:21;;;7632:4;7602:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7573:65;;7649:18;7691:11;:24;;;7670:18;:45;;;;:::i;:::-;7649:66;;7746:10;7726:16;;:30;;;;;;;:::i;:::-;;;;;;;;7795:10;7767:24;;:38;;;;;;;:::i;:::-;;;;;;;;7818:29;7836:10;7818:17;:29::i;:::-;7860:21;7884:48;7928:3;7884:39;7901:21;;7884:12;;:16;;:39;;;;:::i;:::-;:43;;:48;;;;:::i;:::-;7860:72;;7958:31;7975:13;7958:12;;:16;;:31;;;;:::i;:::-;7943:12;:46;;;;8011:15;8040:14;;;;;;;;;;;8032:28;;8068:13;8097:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8032:124;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8010:146;;;8175:10;8167:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;8222:32;:30;:32::i;:::-;8272:49;8287:11;:21;;;8310:10;8272:49;;;;;;;:::i;:::-;;;;;;;;8334:11;:9;:11::i;:::-;8382:5;8356:23;;:31;;;;;;;;;;;;;;;;;;8425:1;8398:16;;:29;;;;;;;;;;;;;;;;;;7465:970;;;;7430:1005::o;1603:35::-;;;;;;;;;;;;;:::o;682:25::-;;;;;;;;;;;;;:::o;716:22::-;;;;:::o;604:33::-;;;;;;;;;;;;;:::o;1555:41::-;;;;:::o;14191:362::-;984:13:8;:11;:13::i;:::-;14323:1:7::1;14304:16;:20;14296:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;14389:1;14375:11;:15;:59;;;;;14409:11;:25;;;14394:11;:40;;14375:59;14367:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;14497:16;14482:12;:31;;;;14534:11;14524:7;:21;;;;14191:362:::0;;:::o;1858:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12933:539::-;984:13:8;:11;:13::i;:::-;13032:8:7::1;:19;13041:9;13032:19;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;;;13056:8;:19;13065:9;13056:19;;;;;;;;;;;;;;;;;;;;;;;;;13055:20;13032:43;13024:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13135:1;13114:23;;:9;:23;;::::0;13106:51:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13175:6;13184:1;13175:10;;13170:165;13191:1;13187;:5;13170:165;;;13232:9;13218:23;;:7;13226:1;13218:10;;;;;;;:::i;:::-;;;;;;;;;;;;;:23;;::::0;13214:110:::1;;13275:9;13262:7;13270:1;13262:10;;;;;;;:::i;:::-;;;;:22;;;;;;;;;;;;;;;;;;13303:5;;13214:110;13194:3;;;;;;;13170:165;;;;13369:5;13347:8;:19;13356:9;13347:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;13407:4;13385:8;:19;13394:9;13385:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;13429:35;13443:9;13454;13429:35;;;;;;;:::i;:::-;;;;;;;;12933:539:::0;;:::o;11661:245::-;984:13:8;:11;:13::i;:::-;11775:1:7::1;11751:26;;:12;:26;;::::0;11743:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11825:12;11808:14;;:29;;;;;;;;;;;;;;;;;;554:42;11848:36;;;11885:12;11848:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11661:245:::0;:::o;12199:333::-;12262:8;:20;12271:10;12262:20;;;;;;;;;;;;;;;;;;;;;;;;;12254:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;12319:19;:50;12339:29;;12319:50;;;;;;;;;;;:62;12370:10;12319:62;;;;;;;;;;;;;;;;;;;;;;;;;12318:63;12310:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;12478:4;12413:19;:50;12433:29;;12413:50;;;;;;;;;;;:62;12464:10;12413:62;;;;;;;;;;;;;;;;:69;;;;;;;;;;;;;;;;;;12493:29;;:31;;;;;;;;;:::i;:::-;;;;;;12199:333::o;4395:891::-;1462:21:9;:19;:21::i;:::-;4507:1:7::1;4499:5;:9;4491:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;4545:21;4569:24;4582:10;4569:12;:24::i;:::-;4545:48;;4604:27;4667:5;4650:13;4635:12;;:28;;;;:::i;:::-;4634:38;;;;:::i;:::-;4604:68;;4704:19;4691:9;:32;4683:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;4761:20;4799:5;4784:12;;:20;;;;:::i;:::-;4761:43;;4815:17;4851:5;4835:13;:21;;;;:::i;:::-;4815:41;;4878:11;:18;;;;;;;;;;;;4877:19;4869:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4978:7;;4962:12;4934:11;:25;;;:40;;;;:::i;:::-;:51;;4926:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;5037:6;5046:1;5037:10;;5032:209;5053:5;5049:1;:9;5032:209;;;5080:43;5097:12;;5111:11;5080:16;:43::i;:::-;5153:10;5143:86;;;5165:12;;5179:13;5194:11;5207;:21;;;5143:86;;;;;;;;;:::i;:::-;;;;;;;;5060:3;;;;;;;5032:209;;;;5269:9;5253:12;;:25;;;;;;;:::i;:::-;;;;;;;;4480:806;;;;1506:20:9::0;:18;:20::i;:::-;4395:891:7;;:::o;14632:129::-;984:13:8;:11;:13::i;:::-;14737:15:7::1;14708:12;;:45;;;;;;;;;;;;;;;;;;14632:129:::0;:::o;2031:220:8:-;984:13;:11;:13::i;:::-;2136:1:::1;2116:22;;:8;:22;;::::0;2112:93:::1;;2190:1;2162:31;;;;;;;;;;;:::i;:::-;;;;;;;;2112:93;2215:28;2234:8;2215:18;:28::i;:::-;2031:220:::0;:::o;12540:385:7:-;984:13:8;:11;:13::i;:::-;1752:1:7::1;12616:29;;:52;;12608:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;12707:20;:18;:20::i;:::-;12780:1;12748:29;:33;;;;12797:6;12806:1;12797:10;;12792:126;12813:1;12809;:5;12792:126;;;12901:5;12836:19;:50;12856:29;;12836:50;;;;;;;;;;;:62;12887:7;12895:1;12887:10;;;;;;;:::i;:::-;;;;;;;;;;;;;12836:62;;;;;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;12816:3;;;;;;;12792:126;;;;12540:385::o:0;745:27::-;;;;:::o;1542:293:9:-;944:1;1676:7;;:19;1668:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;944:1;1809:7;:18;;;;1542:293::o;2791:98:10:-;2849:7;2880:1;2876;:5;;;;:::i;:::-;2869:12;;2791:98;;;;:::o;1843:213:9:-;900:1;2026:7;:22;;;;1843:213::o;1263:166:8:-;1334:12;:10;:12::i;:::-;1323:23;;:7;:5;:7::i;:::-;:23;;;1319:103;;1397:12;:10;:12::i;:::-;1370:40;;;;;;;;;;;:::i;:::-;;;;;;;;1319:103;1263:166::o;2411:191::-;2485:16;2504:6;;;;;;;;;;;2485:25;;2530:8;2521:6;;:17;;;;;;;;;;;;;;;;;;2585:8;2554:40;;2575:8;2554:40;;;;;;;;;;;;2474:128;2411:191;:::o;8443:685:7:-;8534:1;8517:13;:18;:52;;;;8568:1;8539:11;:25;;;:30;8517:52;8571:7;8513:65;8595:6;8604:1;8595:10;;8590:531;8611:11;:22;;:29;;;;8607:1;:33;8590:531;;;8662:17;8682:11;:22;;8705:1;8682:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8662:45;;8722:19;8744:12;:23;8757:9;8744:23;;;;;;;;;;;;;;;;8722:45;;8800:1;8786:11;:15;8782:328;;;8822:23;8880:11;:25;;;8863:13;8849:11;:27;;;;:::i;:::-;8848:57;;;;:::i;:::-;8822:83;;8924:12;;;;;;;;;;;:17;;;8942:9;8953:15;8924:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9010:15;8988:18;;:37;;;;;;;:::i;:::-;;;;;;;;9067:9;9049:45;;;9078:15;9049:45;;;;;;:::i;:::-;;;;;;;;8803:307;8782:328;8647:474;;8642:3;;;;;;;8590:531;;;;8443:685;;:::o;3148:98:10:-;3206:7;3237:1;3233;:5;;;;:::i;:::-;3226:12;;3148:98;;;;:::o;3547:::-;3605:7;3636:1;3632;:5;;;;:::i;:::-;3625:12;;3547:98;;;;:::o;9136:973:7:-;9198:22;9223:21;9198:46;;447:42;9257:19;;;9285:4;9300;9257:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9317:25;9345:21;9317:49;;9377:19;9419:14;9399:17;:34;;;;:::i;:::-;9377:56;;447:42;9446:17;;;9472:4;9487;9446:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9504:20;9527:21;9504:44;;9559:17;9594;9579:12;:32;;;;:::i;:::-;9559:52;;9624:19;9660:9;9646:11;:23;;;;:::i;:::-;9624:45;;9700:1;9686:11;:15;9682:420;;;9719:12;9745:14;;;;;;;;;;;9737:28;;9773:11;9804:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9737:129;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9718:148;;;9889:7;9881:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9977:14;;;;;;;;;;;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10044:46;10067:11;10080:9;10044:46;;;;;;;:::i;:::-;;;;;;;;9703:399;9682:420;9187:922;;;;;;9136:973::o;10117:256::-;10158:18;;:20;;;;;;;;;:::i;:::-;;;;;;10206:11;;10199:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;10252;;10228:11;:21;;:42;;;;10302:5;10281:11;:18;;;:26;;;;;;;;;;;;;;;;;;10343:11;:21;;;10333:32;;;;;;;;;;10117:256::o;5685:795::-;5794:6;5765:11;:25;;;:35;;;;;;;:::i;:::-;;;;;;;;5839:6;5811:12;:24;5824:10;5811:24;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;5862:11;5858:150;;;5920:6;5890:11;:26;;;:36;;;;;;;:::i;:::-;;;;;;;;5858:150;;;5990:6;5959:11;:27;;;:37;;;;;;;:::i;:::-;;;;;;;;5858:150;6025:11;:23;;:35;6049:10;6025:35;;;;;;;;;;;;;;;;;;;;;;;;;6020:210;;6077:11;:22;;6105:10;6077:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6169:4;6131:11;:23;;:35;6155:10;6131:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;6188:11;:28;;;:30;;;;;;;;;:::i;:::-;;;;;;6020:210;6275:7;;6246:11;:25;;;:36;6242:231;;6320:4;6299:11;:18;;;:25;;;;;;;;;;;;;;;;;;6344:117;6355:11;:21;;;6378:11;:26;;;6406:11;:27;;;6435:11;:25;;;6344:117;;;;;;;;;:::i;:::-;;;;;;;;6242:231;5685:795;;:::o;13480:703::-;13529:18;13550:21;13529:42;;13582:21;13606:11;;;;;;;;;;;:21;;;13636:4;13606:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13582:60;;13664:12;13682:7;:5;:7::i;:::-;:12;;13702:10;13682:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13663:54;;;13736:7;13728:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;13796:11;;;;;;;;;;;:20;;;13817:7;:5;:7::i;:::-;13826:13;13796:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13788:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;13893:85;13921:29;;13952:10;13964:13;13893:85;;;;;;;;:::i;:::-;;;;;;;;13998:11;;13991:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14041:1;14020:18;:22;;;;14068:1;14053:12;:16;;;;14099:1;14080:16;:20;;;;14138:1;14111:24;:28;;;;14174:1;14150:11;:21;;:25;;;;13518:665;;;13480:703::o;93:98:0:-;146:7;173:10;166:17;;93:98;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:77:11:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:332::-;1498:4;1536:2;1525:9;1521:18;1513:26;;1549:71;1617:1;1606:9;1602:17;1593:6;1549:71;:::i;:::-;1630:72;1698:2;1687:9;1683:18;1674:6;1630:72;:::i;:::-;1377:332;;;;;:::o;1715:126::-;1752:7;1792:42;1785:5;1781:54;1770:65;;1715:126;;;:::o;1847:96::-;1884:7;1913:24;1931:5;1913:24;:::i;:::-;1902:35;;1847:96;;;:::o;1949:118::-;2036:24;2054:5;2036:24;:::i;:::-;2031:3;2024:37;1949:118;;:::o;2073:222::-;2166:4;2204:2;2193:9;2189:18;2181:26;;2217:71;2285:1;2274:9;2270:17;2261:6;2217:71;:::i;:::-;2073:222;;;;:::o;2301:122::-;2374:24;2392:5;2374:24;:::i;:::-;2367:5;2364:35;2354:63;;2413:1;2410;2403:12;2354:63;2301:122;:::o;2429:139::-;2475:5;2513:6;2500:20;2491:29;;2529:33;2556:5;2529:33;:::i;:::-;2429:139;;;;:::o;2574:329::-;2633:6;2682:2;2670:9;2661:7;2657:23;2653:32;2650:119;;;2688:79;;:::i;:::-;2650:119;2808:1;2833:53;2878:7;2869:6;2858:9;2854:22;2833:53;:::i;:::-;2823:63;;2779:117;2574:329;;;;:::o;2909:60::-;2937:3;2958:5;2951:12;;2909:60;;;:::o;2975:142::-;3025:9;3058:53;3076:34;3085:24;3103:5;3085:24;:::i;:::-;3076:34;:::i;:::-;3058:53;:::i;:::-;3045:66;;2975:142;;;:::o;3123:126::-;3173:9;3206:37;3237:5;3206:37;:::i;:::-;3193:50;;3123:126;;;:::o;3255:147::-;3326:9;3359:37;3390:5;3359:37;:::i;:::-;3346:50;;3255:147;;;:::o;3408:173::-;3516:58;3568:5;3516:58;:::i;:::-;3511:3;3504:71;3408:173;;:::o;3587:264::-;3701:4;3739:2;3728:9;3724:18;3716:26;;3752:92;3841:1;3830:9;3826:17;3817:6;3752:92;:::i;:::-;3587:264;;;;:::o;3857:145::-;3926:9;3959:37;3990:5;3959:37;:::i;:::-;3946:50;;3857:145;;;:::o;4008:169::-;4114:56;4164:5;4114:56;:::i;:::-;4109:3;4102:69;4008:169;;:::o;4183:260::-;4295:4;4333:2;4322:9;4318:18;4310:26;;4346:90;4433:1;4422:9;4418:17;4409:6;4346:90;:::i;:::-;4183:260;;;;:::o;4449:90::-;4483:7;4526:5;4519:13;4512:21;4501:32;;4449:90;;;:::o;4545:109::-;4626:21;4641:5;4626:21;:::i;:::-;4621:3;4614:34;4545:109;;:::o;4660:320::-;4775:4;4813:2;4802:9;4798:18;4790:26;;4826:65;4888:1;4877:9;4873:17;4864:6;4826:65;:::i;:::-;4901:72;4969:2;4958:9;4954:18;4945:6;4901:72;:::i;:::-;4660:320;;;;;:::o;4986:474::-;5054:6;5062;5111:2;5099:9;5090:7;5086:23;5082:32;5079:119;;;5117:79;;:::i;:::-;5079:119;5237:1;5262:53;5307:7;5298:6;5287:9;5283:22;5262:53;:::i;:::-;5252:63;;5208:117;5364:2;5390:53;5435:7;5426:6;5415:9;5411:22;5390:53;:::i;:::-;5380:63;;5335:118;4986:474;;;;;:::o;5466:763::-;5693:4;5731:3;5720:9;5716:19;5708:27;;5745:71;5813:1;5802:9;5798:17;5789:6;5745:71;:::i;:::-;5826:66;5888:2;5877:9;5873:18;5864:6;5826:66;:::i;:::-;5902:72;5970:2;5959:9;5955:18;5946:6;5902:72;:::i;:::-;5984;6052:2;6041:9;6037:18;6028:6;5984:72;:::i;:::-;6066:73;6134:3;6123:9;6119:19;6110:6;6066:73;:::i;:::-;6149;6217:3;6206:9;6202:19;6193:6;6149:73;:::i;:::-;5466:763;;;;;;;;;:::o;6235:874::-;6490:4;6528:3;6517:9;6513:19;6505:27;;6542:71;6610:1;6599:9;6595:17;6586:6;6542:71;:::i;:::-;6623:66;6685:2;6674:9;6670:18;6661:6;6623:66;:::i;:::-;6699:72;6767:2;6756:9;6752:18;6743:6;6699:72;:::i;:::-;6781;6849:2;6838:9;6834:18;6825:6;6781:72;:::i;:::-;6863:73;6931:3;6920:9;6916:19;6907:6;6863:73;:::i;:::-;6946;7014:3;7003:9;6999:19;6990:6;6946:73;:::i;:::-;7029;7097:3;7086:9;7082:19;7073:6;7029:73;:::i;:::-;6235:874;;;;;;;;;;:::o;7115:210::-;7202:4;7240:2;7229:9;7225:18;7217:26;;7253:65;7315:1;7304:9;7300:17;7291:6;7253:65;:::i;:::-;7115:210;;;;:::o;7331:442::-;7480:4;7518:2;7507:9;7503:18;7495:26;;7531:71;7599:1;7588:9;7584:17;7575:6;7531:71;:::i;:::-;7612:72;7680:2;7669:9;7665:18;7656:6;7612:72;:::i;:::-;7694;7762:2;7751:9;7747:18;7738:6;7694:72;:::i;:::-;7331:442;;;;;;:::o;7779:139::-;7842:9;7875:37;7906:5;7875:37;:::i;:::-;7862:50;;7779:139;;;:::o;7924:157::-;8024:50;8068:5;8024:50;:::i;:::-;8019:3;8012:63;7924:157;;:::o;8087:248::-;8193:4;8231:2;8220:9;8216:18;8208:26;;8244:84;8325:1;8314:9;8310:17;8301:6;8244:84;:::i;:::-;8087:248;;;;:::o;8341:147::-;8412:9;8445:37;8476:5;8445:37;:::i;:::-;8432:50;;8341:147;;;:::o;8494:173::-;8602:58;8654:5;8602:58;:::i;:::-;8597:3;8590:71;8494:173;;:::o;8673:264::-;8787:4;8825:2;8814:9;8810:18;8802:26;;8838:92;8927:1;8916:9;8912:17;8903:6;8838:92;:::i;:::-;8673:264;;;;:::o;8943:140::-;9007:9;9040:37;9071:5;9040:37;:::i;:::-;9027:50;;8943:140;;;:::o;9089:159::-;9190:51;9235:5;9190:51;:::i;:::-;9185:3;9178:64;9089:159;;:::o;9254:250::-;9361:4;9399:2;9388:9;9384:18;9376:26;;9412:85;9494:1;9483:9;9479:17;9470:6;9412:85;:::i;:::-;9254:250;;;;:::o;9510:145::-;9579:9;9612:37;9643:5;9612:37;:::i;:::-;9599:50;;9510:145;;;:::o;9661:169::-;9767:56;9817:5;9767:56;:::i;:::-;9762:3;9755:69;9661:169;;:::o;9836:260::-;9948:4;9986:2;9975:9;9971:18;9963:26;;9999:90;10086:1;10075:9;10071:17;10062:6;9999:90;:::i;:::-;9836:260;;;;:::o;10102:474::-;10170:6;10178;10227:2;10215:9;10206:7;10202:23;10198:32;10195:119;;;10233:79;;:::i;:::-;10195:119;10353:1;10378:53;10423:7;10414:6;10403:9;10399:22;10378:53;:::i;:::-;10368:63;;10324:117;10480:2;10506:53;10551:7;10542:6;10531:9;10527:22;10506:53;:::i;:::-;10496:63;;10451:118;10102:474;;;;;:::o;10582:::-;10650:6;10658;10707:2;10695:9;10686:7;10682:23;10678:32;10675:119;;;10713:79;;:::i;:::-;10675:119;10833:1;10858:53;10903:7;10894:6;10883:9;10879:22;10858:53;:::i;:::-;10848:63;;10804:117;10960:2;10986:53;11031:7;11022:6;11011:9;11007:22;10986:53;:::i;:::-;10976:63;;10931:118;10582:474;;;;;:::o;11062:116::-;11132:21;11147:5;11132:21;:::i;:::-;11125:5;11122:32;11112:60;;11168:1;11165;11158:12;11112:60;11062:116;:::o;11184:133::-;11227:5;11265:6;11252:20;11243:29;;11281:30;11305:5;11281:30;:::i;:::-;11184:133;;;;:::o;11323:468::-;11388:6;11396;11445:2;11433:9;11424:7;11420:23;11416:32;11413:119;;;11451:79;;:::i;:::-;11413:119;11571:1;11596:53;11641:7;11632:6;11621:9;11617:22;11596:53;:::i;:::-;11586:63;;11542:117;11698:2;11724:50;11766:7;11757:6;11746:9;11742:22;11724:50;:::i;:::-;11714:60;;11669:115;11323:468;;;;;:::o;11797:143::-;11854:5;11885:6;11879:13;11870:22;;11901:33;11928:5;11901:33;:::i;:::-;11797:143;;;;:::o;11946:351::-;12016:6;12065:2;12053:9;12044:7;12040:23;12036:32;12033:119;;;12071:79;;:::i;:::-;12033:119;12191:1;12216:64;12272:7;12263:6;12252:9;12248:22;12216:64;:::i;:::-;12206:74;;12162:128;11946:351;;;;:::o;12303:169::-;12387:11;12421:6;12416:3;12409:19;12461:4;12456:3;12452:14;12437:29;;12303:169;;;;:::o;12478:178::-;12618:30;12614:1;12606:6;12602:14;12595:54;12478:178;:::o;12662:366::-;12804:3;12825:67;12889:2;12884:3;12825:67;:::i;:::-;12818:74;;12901:93;12990:3;12901:93;:::i;:::-;13019:2;13014:3;13010:12;13003:19;;12662:366;;;:::o;13034:419::-;13200:4;13238:2;13227:9;13223:18;13215:26;;13287:9;13281:4;13277:20;13273:1;13262:9;13258:17;13251:47;13315:131;13441:4;13315:131;:::i;:::-;13307:139;;13034:419;;;:::o;13459:177::-;13599:29;13595:1;13587:6;13583:14;13576:53;13459:177;:::o;13642:366::-;13784:3;13805:67;13869:2;13864:3;13805:67;:::i;:::-;13798:74;;13881:93;13970:3;13881:93;:::i;:::-;13999:2;13994:3;13990:12;13983:19;;13642:366;;;:::o;14014:419::-;14180:4;14218:2;14207:9;14203:18;14195:26;;14267:9;14261:4;14257:20;14253:1;14242:9;14238:17;14231:47;14295:131;14421:4;14295:131;:::i;:::-;14287:139;;14014:419;;;:::o;14439:332::-;14560:4;14598:2;14587:9;14583:18;14575:26;;14611:71;14679:1;14668:9;14664:17;14655:6;14611:71;:::i;:::-;14692:72;14760:2;14749:9;14745:18;14736:6;14692:72;:::i;:::-;14439:332;;;;;:::o;14777:137::-;14831:5;14862:6;14856:13;14847:22;;14878:30;14902:5;14878:30;:::i;:::-;14777:137;;;;:::o;14920:345::-;14987:6;15036:2;15024:9;15015:7;15011:23;15007:32;15004:119;;;15042:79;;:::i;:::-;15004:119;15162:1;15187:61;15240:7;15231:6;15220:9;15216:22;15187:61;:::i;:::-;15177:71;;15133:125;14920:345;;;;:::o;15271:172::-;15411:24;15407:1;15399:6;15395:14;15388:48;15271:172;:::o;15449:366::-;15591:3;15612:67;15676:2;15671:3;15612:67;:::i;:::-;15605:74;;15688:93;15777:3;15688:93;:::i;:::-;15806:2;15801:3;15797:12;15790:19;;15449:366;;;:::o;15821:419::-;15987:4;16025:2;16014:9;16010:18;16002:26;;16074:9;16068:4;16064:20;16060:1;16049:9;16045:17;16038:47;16102:131;16228:4;16102:131;:::i;:::-;16094:139;;15821:419;;;:::o;16246:164::-;16386:16;16382:1;16374:6;16370:14;16363:40;16246:164;:::o;16416:366::-;16558:3;16579:67;16643:2;16638:3;16579:67;:::i;:::-;16572:74;;16655:93;16744:3;16655:93;:::i;:::-;16773:2;16768:3;16764:12;16757:19;;16416:366;;;:::o;16788:419::-;16954:4;16992:2;16981:9;16977:18;16969:26;;17041:9;17035:4;17031:20;17027:1;17016:9;17012:17;17005:47;17069:131;17195:4;17069:131;:::i;:::-;17061:139;;16788:419;;;:::o;17213:168::-;17353:20;17349:1;17341:6;17337:14;17330:44;17213:168;:::o;17387:366::-;17529:3;17550:67;17614:2;17609:3;17550:67;:::i;:::-;17543:74;;17626:93;17715:3;17626:93;:::i;:::-;17744:2;17739:3;17735:12;17728:19;;17387:366;;;:::o;17759:419::-;17925:4;17963:2;17952:9;17948:18;17940:26;;18012:9;18006:4;18002:20;17998:1;17987:9;17983:17;17976:47;18040:131;18166:4;18040:131;:::i;:::-;18032:139;;17759:419;;;:::o;18184:147::-;18285:11;18322:3;18307:18;;18184:147;;;;:::o;18337:114::-;;:::o;18457:398::-;18616:3;18637:83;18718:1;18713:3;18637:83;:::i;:::-;18630:90;;18729:93;18818:3;18729:93;:::i;:::-;18847:1;18842:3;18838:11;18831:18;;18457:398;;;:::o;18861:379::-;19045:3;19067:147;19210:3;19067:147;:::i;:::-;19060:154;;19231:3;19224:10;;18861:379;;;:::o;19246:177::-;19386:29;19382:1;19374:6;19370:14;19363:53;19246:177;:::o;19429:366::-;19571:3;19592:67;19656:2;19651:3;19592:67;:::i;:::-;19585:74;;19668:93;19757:3;19668:93;:::i;:::-;19786:2;19781:3;19777:12;19770:19;;19429:366;;;:::o;19801:419::-;19967:4;20005:2;19994:9;19990:18;19982:26;;20054:9;20048:4;20044:20;20040:1;20029:9;20025:17;20018:47;20082:131;20208:4;20082:131;:::i;:::-;20074:139;;19801:419;;;:::o;20226:442::-;20375:4;20413:2;20402:9;20398:18;20390:26;;20426:71;20494:1;20483:9;20479:17;20470:6;20426:71;:::i;:::-;20507:72;20575:2;20564:9;20560:18;20551:6;20507:72;:::i;:::-;20589;20657:2;20646:9;20642:18;20633:6;20589:72;:::i;:::-;20226:442;;;;;;:::o;20674:165::-;20814:17;20810:1;20802:6;20798:14;20791:41;20674:165;:::o;20845:366::-;20987:3;21008:67;21072:2;21067:3;21008:67;:::i;:::-;21001:74;;21084:93;21173:3;21084:93;:::i;:::-;21202:2;21197:3;21193:12;21186:19;;20845:366;;;:::o;21217:419::-;21383:4;21421:2;21410:9;21406:18;21398:26;;21470:9;21464:4;21460:20;21456:1;21445:9;21441:17;21434:47;21498:131;21624:4;21498:131;:::i;:::-;21490:139;;21217:419;;;:::o;21642:180::-;21690:77;21687:1;21680:88;21787:4;21784:1;21777:15;21811:4;21808:1;21801:15;21828:410;21868:7;21891:20;21909:1;21891:20;:::i;:::-;21886:25;;21925:20;21943:1;21925:20;:::i;:::-;21920:25;;21980:1;21977;21973:9;22002:30;22020:11;22002:30;:::i;:::-;21991:41;;22181:1;22172:7;22168:15;22165:1;22162:22;22142:1;22135:9;22115:83;22092:139;;22211:18;;:::i;:::-;22092:139;21876:362;21828:410;;;;:::o;22244:180::-;22292:77;22289:1;22282:88;22389:4;22386:1;22379:15;22413:4;22410:1;22403:15;22430:185;22470:1;22487:20;22505:1;22487:20;:::i;:::-;22482:25;;22521:20;22539:1;22521:20;:::i;:::-;22516:25;;22560:1;22550:35;;22565:18;;:::i;:::-;22550:35;22607:1;22604;22600:9;22595:14;;22430:185;;;;:::o;22621:194::-;22661:4;22681:20;22699:1;22681:20;:::i;:::-;22676:25;;22715:20;22733:1;22715:20;:::i;:::-;22710:25;;22759:1;22756;22752:9;22744:17;;22783:1;22777:4;22774:11;22771:37;;;22788:18;;:::i;:::-;22771:37;22621:194;;;;:::o;22821:168::-;22961:20;22957:1;22949:6;22945:14;22938:44;22821:168;:::o;22995:366::-;23137:3;23158:67;23222:2;23217:3;23158:67;:::i;:::-;23151:74;;23234:93;23323:3;23234:93;:::i;:::-;23352:2;23347:3;23343:12;23336:19;;22995:366;;;:::o;23367:419::-;23533:4;23571:2;23560:9;23556:18;23548:26;;23620:9;23614:4;23610:20;23606:1;23595:9;23591:17;23584:47;23648:131;23774:4;23648:131;:::i;:::-;23640:139;;23367:419;;;:::o;23792:168::-;23875:11;23909:6;23904:3;23897:19;23949:4;23944:3;23940:14;23925:29;;23792:168;;;;:::o;23966:362::-;24107:3;24128:65;24191:1;24186:3;24128:65;:::i;:::-;24121:72;;24202:93;24291:3;24202:93;:::i;:::-;24320:1;24315:3;24311:11;24304:18;;23966:362;;;:::o;24334:527::-;24527:4;24565:2;24554:9;24550:18;24542:26;;24578:71;24646:1;24635:9;24631:17;24622:6;24578:71;:::i;:::-;24696:9;24690:4;24686:20;24681:2;24670:9;24666:18;24659:48;24724:130;24849:4;24724:130;:::i;:::-;24716:138;;24334:527;;;;:::o;24867:167::-;25007:19;25003:1;24995:6;24991:14;24984:43;24867:167;:::o;25040:366::-;25182:3;25203:67;25267:2;25262:3;25203:67;:::i;:::-;25196:74;;25279:93;25368:3;25279:93;:::i;:::-;25397:2;25392:3;25388:12;25381:19;;25040:366;;;:::o;25412:419::-;25578:4;25616:2;25605:9;25601:18;25593:26;;25665:9;25659:4;25655:20;25651:1;25640:9;25636:17;25629:47;25693:131;25819:4;25693:131;:::i;:::-;25685:139;;25412:419;;;:::o;25837:165::-;25977:17;25973:1;25965:6;25961:14;25954:41;25837:165;:::o;26008:366::-;26150:3;26171:67;26235:2;26230:3;26171:67;:::i;:::-;26164:74;;26247:93;26336:3;26247:93;:::i;:::-;26365:2;26360:3;26356:12;26349:19;;26008:366;;;:::o;26380:419::-;26546:4;26584:2;26573:9;26569:18;26561:26;;26633:9;26627:4;26623:20;26619:1;26608:9;26604:17;26597:47;26661:131;26787:4;26661:131;:::i;:::-;26653:139;;26380:419;;;:::o;26805:223::-;26945:34;26941:1;26933:6;26929:14;26922:58;27014:6;27009:2;27001:6;26997:15;26990:31;26805:223;:::o;27034:366::-;27176:3;27197:67;27261:2;27256:3;27197:67;:::i;:::-;27190:74;;27273:93;27362:3;27273:93;:::i;:::-;27391:2;27386:3;27382:12;27375:19;;27034:366;;;:::o;27406:419::-;27572:4;27610:2;27599:9;27595:18;27587:26;;27659:9;27653:4;27649:20;27645:1;27634:9;27630:17;27623:47;27687:131;27813:4;27687:131;:::i;:::-;27679:139;;27406:419;;;:::o;27831:166::-;27971:18;27967:1;27959:6;27955:14;27948:42;27831:166;:::o;28003:366::-;28145:3;28166:67;28230:2;28225:3;28166:67;:::i;:::-;28159:74;;28242:93;28331:3;28242:93;:::i;:::-;28360:2;28355:3;28351:12;28344:19;;28003:366;;;:::o;28375:419::-;28541:4;28579:2;28568:9;28564:18;28556:26;;28628:9;28622:4;28618:20;28614:1;28603:9;28599:17;28592:47;28656:131;28782:4;28656:131;:::i;:::-;28648:139;;28375:419;;;:::o;28800:233::-;28839:3;28862:24;28880:5;28862:24;:::i;:::-;28853:33;;28908:66;28901:5;28898:77;28895:103;;28978:18;;:::i;:::-;28895:103;29025:1;29018:5;29014:13;29007:20;;28800:233;;;:::o;29039:191::-;29079:3;29098:20;29116:1;29098:20;:::i;:::-;29093:25;;29132:20;29150:1;29132:20;:::i;:::-;29127:25;;29175:1;29172;29168:9;29161:16;;29196:3;29193:1;29190:10;29187:36;;;29203:18;;:::i;:::-;29187:36;29039:191;;;;:::o;29236:98::-;29287:6;29321:5;29315:12;29305:22;;29236:98;;;:::o;29340:139::-;29429:6;29424:3;29419;29413:23;29470:1;29461:6;29456:3;29452:16;29445:27;29340:139;;;:::o;29485:386::-;29589:3;29617:38;29649:5;29617:38;:::i;:::-;29671:88;29752:6;29747:3;29671:88;:::i;:::-;29664:95;;29768:65;29826:6;29821:3;29814:4;29807:5;29803:16;29768:65;:::i;:::-;29858:6;29853:3;29849:16;29842:23;;29593:278;29485:386;;;;:::o;29877:271::-;30007:3;30029:93;30118:3;30109:6;30029:93;:::i;:::-;30022:100;;30139:3;30132:10;;29877:271;;;;:::o;30154:169::-;30294:21;30290:1;30282:6;30278:14;30271:45;30154:169;:::o;30329:366::-;30471:3;30492:67;30556:2;30551:3;30492:67;:::i;:::-;30485:74;;30568:93;30657:3;30568:93;:::i;:::-;30686:2;30681:3;30677:12;30670:19;;30329:366;;;:::o;30701:419::-;30867:4;30905:2;30894:9;30890:18;30882:26;;30954:9;30948:4;30944:20;30940:1;30929:9;30925:17;30918:47;30982:131;31108:4;30982:131;:::i;:::-;30974:139;;30701:419;;;:::o;31126:177::-;31266:29;31262:1;31254:6;31250:14;31243:53;31126:177;:::o;31309:366::-;31451:3;31472:67;31536:2;31531:3;31472:67;:::i;:::-;31465:74;;31548:93;31637:3;31548:93;:::i;:::-;31666:2;31661:3;31657:12;31650:19;;31309:366;;;:::o;31681:419::-;31847:4;31885:2;31874:9;31870:18;31862:26;;31934:9;31928:4;31924:20;31920:1;31909:9;31905:17;31898:47;31962:131;32088:4;31962:131;:::i;:::-;31954:139;;31681:419;;;:::o;32106:172::-;32246:24;32242:1;32234:6;32230:14;32223:48;32106:172;:::o;32284:366::-;32426:3;32447:67;32511:2;32506:3;32447:67;:::i;:::-;32440:74;;32523:93;32612:3;32523:93;:::i;:::-;32641:2;32636:3;32632:12;32625:19;;32284:366;;;:::o;32656:419::-;32822:4;32860:2;32849:9;32845:18;32837:26;;32909:9;32903:4;32899:20;32895:1;32884:9;32880:17;32873:47;32937:131;33063:4;32937:131;:::i;:::-;32929:139;;32656:419;;;:::o;33081:165::-;33221:17;33217:1;33209:6;33205:14;33198:41;33081:165;:::o;33252:366::-;33394:3;33415:67;33479:2;33474:3;33415:67;:::i;:::-;33408:74;;33491:93;33580:3;33491:93;:::i;:::-;33609:2;33604:3;33600:12;33593:19;;33252:366;;;:::o;33624:419::-;33790:4;33828:2;33817:9;33813:18;33805:26;;33877:9;33871:4;33867:20;33863:1;33852:9;33848:17;33841:47;33905:131;34031:4;33905:131;:::i;:::-;33897:139;;33624:419;;;:::o;34049:180::-;34097:77;34094:1;34087:88;34194:4;34191:1;34184:15;34218:4;34215:1;34208:15;34235:332;34356:4;34394:2;34383:9;34379:18;34371:26;;34407:71;34475:1;34464:9;34460:17;34451:6;34407:71;:::i;:::-;34488:72;34556:2;34545:9;34541:18;34532:6;34488:72;:::i;:::-;34235:332;;;;;:::o;34573:162::-;34713:14;34709:1;34701:6;34697:14;34690:38;34573:162;:::o;34741:366::-;34883:3;34904:67;34968:2;34963:3;34904:67;:::i;:::-;34897:74;;34980:93;35069:3;34980:93;:::i;:::-;35098:2;35093:3;35089:12;35082:19;;34741:366;;;:::o;35113:419::-;35279:4;35317:2;35306:9;35302:18;35294:26;;35366:9;35360:4;35356:20;35352:1;35341:9;35337:17;35330:47;35394:131;35520:4;35394:131;:::i;:::-;35386:139;;35113:419;;;:::o;35538:164::-;35678:16;35674:1;35666:6;35662:14;35655:40;35538:164;:::o;35708:366::-;35850:3;35871:67;35935:2;35930:3;35871:67;:::i;:::-;35864:74;;35947:93;36036:3;35947:93;:::i;:::-;36065:2;36060:3;36056:12;36049:19;;35708:366;;;:::o;36080:419::-;36246:4;36284:2;36273:9;36269:18;36261:26;;36333:9;36327:4;36323:20;36319:1;36308:9;36304:17;36297:47;36361:131;36487:4;36361:131;:::i;:::-;36353:139;;36080:419;;;:::o;36505:171::-;36645:23;36641:1;36633:6;36629:14;36622:47;36505:171;:::o;36682:366::-;36824:3;36845:67;36909:2;36904:3;36845:67;:::i;:::-;36838:74;;36921:93;37010:3;36921:93;:::i;:::-;37039:2;37034:3;37030:12;37023:19;;36682:366;;;:::o;37054:419::-;37220:4;37258:2;37247:9;37243:18;37235:26;;37307:9;37301:4;37297:20;37293:1;37282:9;37278:17;37271:47;37335:131;37461:4;37335:131;:::i;:::-;37327:139;;37054:419;;;:::o;37479:170::-;37619:22;37615:1;37607:6;37603:14;37596:46;37479:170;:::o;37655:366::-;37797:3;37818:67;37882:2;37877:3;37818:67;:::i;:::-;37811:74;;37894:93;37983:3;37894:93;:::i;:::-;38012:2;38007:3;38003:12;37996:19;;37655:366;;;:::o;38027:419::-;38193:4;38231:2;38220:9;38216:18;38208:26;;38280:9;38274:4;38270:20;38266:1;38255:9;38251:17;38244:47;38308:131;38434:4;38308:131;:::i;:::-;38300:139;;38027:419;;;:::o;38452:164::-;38592:16;38588:1;38580:6;38576:14;38569:40;38452:164;:::o;38622:366::-;38764:3;38785:67;38849:2;38844:3;38785:67;:::i;:::-;38778:74;;38861:93;38950:3;38861:93;:::i;:::-;38979:2;38974:3;38970:12;38963:19;;38622:366;;;:::o;38994:419::-;39160:4;39198:2;39187:9;39183:18;39175:26;;39247:9;39241:4;39237:20;39233:1;39222:9;39218:17;39211:47;39275:131;39401:4;39275:131;:::i;:::-;39267:139;;38994:419;;;:::o;39419:179::-;39559:31;39555:1;39547:6;39543:14;39536:55;39419:179;:::o;39604:366::-;39746:3;39767:67;39831:2;39826:3;39767:67;:::i;:::-;39760:74;;39843:93;39932:3;39843:93;:::i;:::-;39961:2;39956:3;39952:12;39945:19;;39604:366;;;:::o;39976:419::-;40142:4;40180:2;40169:9;40165:18;40157:26;;40229:9;40223:4;40219:20;40215:1;40204:9;40200:17;40193:47;40257:131;40383:4;40257:131;:::i;:::-;40249:139;;39976:419;;;:::o;40401:541::-;40572:4;40610:3;40599:9;40595:19;40587:27;;40624:71;40692:1;40681:9;40677:17;40668:6;40624:71;:::i;:::-;40705:72;40773:2;40762:9;40758:18;40749:6;40705:72;:::i;:::-;40787:66;40849:2;40838:9;40834:18;40825:6;40787:66;:::i;:::-;40863:72;40931:2;40920:9;40916:18;40907:6;40863:72;:::i;:::-;40401:541;;;;;;;:::o;40948:173::-;41088:25;41084:1;41076:6;41072:14;41065:49;40948:173;:::o;41127:366::-;41269:3;41290:67;41354:2;41349:3;41290:67;:::i;:::-;41283:74;;41366:93;41455:3;41366:93;:::i;:::-;41484:2;41479:3;41475:12;41468:19;;41127:366;;;:::o;41499:419::-;41665:4;41703:2;41692:9;41688:18;41680:26;;41752:9;41746:4;41742:20;41738:1;41727:9;41723:17;41716:47;41780:131;41906:4;41780:131;:::i;:::-;41772:139;;41499:419;;;:::o;41924:181::-;42064:33;42060:1;42052:6;42048:14;42041:57;41924:181;:::o;42111:366::-;42253:3;42274:67;42338:2;42333:3;42274:67;:::i;:::-;42267:74;;42350:93;42439:3;42350:93;:::i;:::-;42468:2;42463:3;42459:12;42452:19;;42111:366;;;:::o;42483:419::-;42649:4;42687:2;42676:9;42672:18;42664:26;;42736:9;42730:4;42726:20;42722:1;42711:9;42707:17;42700:47;42764:131;42890:4;42764:131;:::i;:::-;42756:139;;42483:419;;;:::o;42908:234::-;43048:34;43044:1;43036:6;43032:14;43025:58;43117:17;43112:2;43104:6;43100:15;43093:42;42908:234;:::o;43148:366::-;43290:3;43311:67;43375:2;43370:3;43311:67;:::i;:::-;43304:74;;43387:93;43476:3;43387:93;:::i;:::-;43505:2;43500:3;43496:12;43489:19;;43148:366;;;:::o;43520:419::-;43686:4;43724:2;43713:9;43709:18;43701:26;;43773:9;43767:4;43763:20;43759:1;43748:9;43744:17;43737:47;43801:131;43927:4;43801:131;:::i;:::-;43793:139;;43520:419;;;:::o;43945:553::-;44122:4;44160:3;44149:9;44145:19;44137:27;;44174:71;44242:1;44231:9;44227:17;44218:6;44174:71;:::i;:::-;44255:72;44323:2;44312:9;44308:18;44299:6;44255:72;:::i;:::-;44337;44405:2;44394:9;44390:18;44381:6;44337:72;:::i;:::-;44419;44487:2;44476:9;44472:18;44463:6;44419:72;:::i;:::-;43945:553;;;;;;;:::o;44504:169::-;44644:21;44640:1;44632:6;44628:14;44621:45;44504:169;:::o;44679:366::-;44821:3;44842:67;44906:2;44901:3;44842:67;:::i;:::-;44835:74;;44918:93;45007:3;44918:93;:::i;:::-;45036:2;45031:3;45027:12;45020:19;;44679:366;;;:::o;45051:419::-;45217:4;45255:2;45244:9;45240:18;45232:26;;45304:9;45298:4;45294:20;45290:1;45279:9;45275:17;45268:47;45332:131;45458:4;45332:131;:::i;:::-;45324:139;;45051:419;;;:::o
Swarm Source
ipfs://e5c4dfa594edc1ff2eee6dc64719930f86ef214576c5238493bd744ac7bc1305
Net Worth in USD
Net Worth in ETH
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.