Token migration announcement. AurusDeFi token contract has migrated to a new address.
Overview ERC-20
Price
$0.00 @ 0.000000 MATIC
Fully Diluted Market Cap
Total Supply:
2,309,626.1574 AWX
Holders:
498 addresses
Transfers:
-
Contract:
Decimals:
18
Official Site:
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
AWX
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-14 */ pragma solidity 0.8.10; /** * @title Roles * @dev Library for managing addresses assigned to a Role. */ library Roles { struct Role { mapping (address => bool) bearer; } /** * @dev Give an account access to this role. */ function add(Role storage role, address account) internal { require(!has(role, account), "Roles: account already has role"); role.bearer[account] = true; } /** * @dev Remove an account's access to this role. */ function remove(Role storage role, address account) internal { require(has(role, account), "Roles: account does not have role"); role.bearer[account] = false; } /** * @dev Check if an account has this role. * @return bool */ function has(Role storage role, address account) internal view returns (bool) { require(account != address(0), "Roles: account is the zero address"); return role.bearer[account]; } } // File: openzeppelin-solidity/contracts/access/roles/PauserRole.sol contract PauserRole { using Roles for Roles.Role; event PauserAdded(address indexed account); event PauserRemoved(address indexed account); Roles.Role private _pausers; constructor () { _addPauser(msg.sender); } modifier onlyPauser() { require(isPauser(msg.sender), "PauserRole: caller does not have the Pauser role"); _; } function isPauser(address account) public view returns (bool) { return _pausers.has(account); } function addPauser(address account) public onlyPauser { _addPauser(account); } function renouncePauser() public { _removePauser(msg.sender); } function _addPauser(address account) internal { _pausers.add(account); emit PauserAdded(account); } function _removePauser(address account) internal { _pausers.remove(account); emit PauserRemoved(account); } } // File: openzeppelin-solidity/contracts/lifecycle/Pausable.sol /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ contract Pausable is PauserRole { /** * @dev Emitted when the pause is triggered by a pauser (`account`). */ event Paused(address account); /** * @dev Emitted when the pause is lifted by a pauser (`account`). */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. Assigns the Pauser role * to the deployer. */ constructor () { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!_paused, "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(_paused, "Pausable: not paused"); _; } /** * @dev Called by a pauser to pause, triggers stopped state. */ function pause() public onlyPauser whenNotPaused { _paused = true; emit Paused(msg.sender); } /** * @dev Called by a pauser to unpause, returns to normal state. */ function unpause() public onlyPauser whenPaused { _paused = false; emit Unpaused(msg.sender); } } // File: openzeppelin-solidity/contracts/token/ERC20/IERC20.sol /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see `ERC20Detailed`. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`, both locked and unlocked */ function balanceOf(address account) external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`, and unlocked */ function internalBalance(address account) external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`, and locked */ function internalLocked(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a `Transfer` event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through `transferFrom`. This is * zero by default. * * This value changes when `approve` or `transferFrom` are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * > Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an `Approval` event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a `Transfer` event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `owner` unlocks tokens for a wallet */ event Unlock(address indexed target, uint256 amount); /** * @dev Emitted when a wallet receives locked tokens. */ event Lock(address indexed target, uint256 amount); /** * @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 Emitted when the `owner` initiates a force transfer * * Note that `value` may be zero. * Note that `details` may be zero. */ event ForceTransfer(address indexed from, address indexed to, uint256 value, bytes32 details); } // File: openzeppelin-solidity/contracts/math/SafeMath.sol /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath: modulo by zero"); return a % b; } } // File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol /** * @dev Implementation of the `IERC20` interface. * * *For a detailed writeup see our guide [How to implement supply * mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).* * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an `Approval` event is emitted on calls to `transferFrom`. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard `decreaseAllowance` and `increaseAllowance` * functions have been added to mitigate the well-known issues around setting * allowances. See `IERC20.approve`. */ contract ERC20 is IERC20, Pausable { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => uint256) private _locked; /** * @dev List of whitelisted accounts. * 0 = default (initial value for all accounts) * 1 = blacklisted account (cannot send or receive tokens) */ mapping (address => uint8) public whitelist; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; bool private _migrationOpen = true; address public childChainManagerProxy = 0xA6FA4fB5f76172d178d61B04b0ecd319C5d1C0aa; // being proxified smart contract, most probably childChainManagerProxy contract's address // is not going to change ever, but still, lets keep it function _updateChildChainManager(address newChildChainManagerProxy) internal { require(newChildChainManagerProxy != address(0), "Bad ChildChainManagerProxy address"); childChainManagerProxy = newChildChainManagerProxy; } function _deposit(address user, bytes calldata depositData) internal whenNotPaused { require(msg.sender == childChainManagerProxy, "You're not allowed to deposit"); uint256 amount = abi.decode(depositData, (uint256)); // `amount` token getting minted here & equal amount got locked in RootChainManager _totalSupply = _totalSupply.add(amount); _balances[user] = _balances[user].add(amount); emit Transfer(address(0), user, amount); } function _withdraw(uint256 amount) internal whenNotPaused { _balances[msg.sender] = _balances[msg.sender].sub(amount); _totalSupply = _totalSupply.sub(amount); emit Transfer(msg.sender, address(0), amount); } /** * @dev Forced transfer from one account to another. Will contain details about AML procedure. */ function _forceTransfer(address sender, address recipient, uint256 amount, bytes32 details) internal { _balances[sender] = _balances[sender].sub(amount); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); emit ForceTransfer(sender, recipient, amount, details); } /** * Mint tokens to migrate balances */ function _mintTokens(address recipient, uint256 amount) internal { require(_migrationOpen == true, "Migration is stopped"); _balances[recipient] = _balances[recipient].add(amount); _totalSupply = _totalSupply.add(amount); emit Transfer(address(0),recipient,amount); } /** * Burn tokens to migrate balances */ function _burnTokens(address recipient, uint256 amount) internal { require(_migrationOpen == true, "Migration is stopped"); _balances[recipient] = _balances[recipient].sub(amount); _totalSupply = _totalSupply.sub(amount); emit Transfer(recipient,address(0),amount); } /** * Stop migration stops minting and burning of tokens */ function _stopMigration() internal { _migrationOpen = false; } /** * @dev See `IERC20.totalSupply`. */ function totalSupply() public view returns (uint256) { return _totalSupply; } /** * @dev See `IERC20.balanceOf`. */ function balanceOf(address account) public view returns (uint256) { return _balances[account].add(_locked[account]); } function internalBalance(address account) public view returns (uint256) { return _balances[account]; } function internalLocked(address account) public view returns (uint256) { return _locked[account]; } /** * @dev See `IERC20.transfer`. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) override virtual public returns (bool) { _transfer(msg.sender, recipient, amount); return true; } /** * @dev See `IERC20.allowance`. */ function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } /** * @dev See `IERC20.approve`. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 value) override virtual public returns (bool) { _approve(msg.sender, spender, value); return true; } /** * @dev See `IERC20.transferFrom`. * * Emits an `Approval` event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of `ERC20`; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `value`. * - the caller must have allowance for `sender`'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) override virtual public returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount)); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to `approve` that can be used as a mitigation for * problems described in `IERC20.approve`. * * Emits an `Approval` event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) virtual public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to `approve` that can be used as a mitigation for * problems described in `IERC20.approve`. * * Emits an `Approval` event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) virtual public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue)); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to `transfer`, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a `Transfer` event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(whitelist[sender] != 1, "Sender is blacklisted"); require(whitelist[recipient] != 1, "Recipient is blacklisted"); _balances[sender] = _balances[sender].sub(amount); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** * @dev Transfer tokens from balance to locked balance of another wallet. */ function _transferToLocked(address sender, address recipient, uint256 amount) internal { _balances[sender] = _balances[sender].sub(amount); _locked[recipient] = _locked[recipient].add(amount); emit Transfer(sender, recipient, amount); emit Lock(recipient, amount); } /** * @dev Owner can unlock wallet balance */ function _unlockBalance(address target, uint256 amount) internal { _balances[target] = _balances[target].add(amount); _locked[target] = _locked[target].sub(amount); emit Unlock(target, amount); } /** * @dev Owner can lock wallet balance */ function _lockBalance(address target, uint256 amount) internal { _balances[target] = _balances[target].sub(amount); _locked[target] = _locked[target].add(amount); emit Lock(target, amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an `Approval` event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 value) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = value; emit Approval(owner, spender, value); } } // File: openzeppelin-solidity/contracts/ownership/Ownable.sol /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be aplied to your functions to restrict their use to * the owner. */ contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return msg.sender == _owner; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * > Note: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = 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 onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: contracts/token/AWX.sol /** * @title AWX Token * @notice ERC20 token implementation. * @dev Implements pausable token interfaces. */ contract AWX is ERC20, Ownable { /** * @notice ERC20 convention. */ uint8 public constant decimals = 18; /** * @notice ERC20 convention. */ string public name = "AurusDeFi"; /** * @notice ERC20 convention. */ string public symbol = "AWX"; /** * Update the childChainManagerProxy */ function updateChildChainManager(address newChildChainManagerProxy) external onlyOwner { _updateChildChainManager(newChildChainManagerProxy); } function deposit(address user, bytes calldata depositData) external { _deposit(user, depositData); } function withdraw(uint256 amount) external { _withdraw(amount); } /** * @dev Force a transfer between 2 accounts. AML logs on https://aurus.io/aml */ function forceTransfer(address sender, address recipient, uint256 amount, bytes32 details) external onlyOwner { _forceTransfer(sender,recipient,amount,details); } function mintTokens(address recipient, uint256 amount) external onlyOwner { _mintTokens(recipient,amount); } function burnTokens(address recipient, uint256 amount) external onlyOwner { _burnTokens(recipient,amount); } function stopMigration() external onlyOwner { _stopMigration(); } /** * @dev Change the name and symbol of the token */ function setTokenDetails(string memory _name, string memory _symbol) external onlyOwner { name = _name; symbol = _symbol; } /** * @dev Transfer to locked balance */ function transferToLocked(address recipient, uint256 amount) external onlyOwner { _transferToLocked(msg.sender,recipient,amount); } /** * @dev Unlock balance */ function unlockBalance(address target, uint256 amount) external onlyOwner { _unlockBalance(target, amount); } /** * @dev Lock balance */ function LockBalance(address target, uint256 amount) external onlyOwner { _lockBalance(target, amount); } /** * @dev Set the whitelisting level for an account. */ function whitelistAddress(address account, uint8 level) external onlyOwner { require(level<=1, "Level: Please use level 0 to 1."); whitelist[account] = level; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"details","type":"bytes32"}],"name":"ForceTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Lock","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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PauserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LockBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addPauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"childChainManagerProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bytes","name":"depositData","type":"bytes"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"details","type":"bytes32"}],"name":"forceTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"internalBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"internalLocked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isPauser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renouncePauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"setTokenDetails","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopMigration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferToLocked","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unlockBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newChildChainManagerProxy","type":"address"}],"name":"updateChildChainManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"whitelistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526001600760006101000a81548160ff02191690831515021790555073a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600981526020017f417572757344654669000000000000000000000000000000000000000000000081525060099080519060200190620000c1929190620003ed565b506040518060400160405280600381526020017f4157580000000000000000000000000000000000000000000000000000000000815250600a90805190602001906200010f929190620003ed565b503480156200011d57600080fd5b506200012f336200020e60201b60201c565b6000600160006101000a81548160ff02191690831515021790555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36200061d565b620002298160006200026f60201b620014831790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b6200028182826200032260201b60201c565b15620002c4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002bb90620004fe565b60405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000396576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200038d9062000596565b60405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054620003fb90620005e7565b90600052602060002090601f0160209004810192826200041f57600085556200046b565b82601f106200043a57805160ff19168380011785556200046b565b828001600101855582156200046b579182015b828111156200046a5782518255916020019190600101906200044d565b5b5090506200047a91906200047e565b5090565b5b80821115620004995760008160009055506001016200047f565b5090565b600082825260208201905092915050565b7f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500600082015250565b6000620004e6601f836200049d565b9150620004f382620004ae565b602082019050919050565b600060208201905081810360008301526200051981620004d7565b9050919050565b7f526f6c65733a206163636f756e7420697320746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200057e6022836200049d565b91506200058b8262000520565b604082019050919050565b60006020820190508181036000830152620005b1816200056f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200060057607f821691505b60208210811415620006175762000616620005b8565b5b50919050565b613f57806200062d6000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c806370a0823111610130578063a457c2d7116100b8578063e19a7bc81161007c578063e19a7bc81461063c578063e5e009a114610646578063f0dda65c14610662578063f2fde38b1461067e578063f69dbf551461069a57610227565b8063a457c2d714610574578063a9059cbb146105a4578063cf2c52cb146105d4578063dd62ed3e146105f0578063de94e0f61461062057610227565b806388f259b0116100ff57806388f259b0146104ce5780638da5cb5b146104ea5780638f32d59b1461050857806395d89b41146105265780639b19251a1461054457610227565b806370a082311461046e578063715018a61461049e57806382dc1ec4146104a85780638456cb59146104c457610227565b8063313ce567116101b357806346fbf68e1161018257806346fbf68e146103dc5780635c975abb1461040c57806362f629e71461042a5780636b9a5c6c146104485780636ef8d66d1461046457610227565b8063313ce5671461036857806339509351146103865780633f4ba83a146103b6578063445a6797146103c057610227565b80630d1118ce116101fa5780630d1118ce146102b25780630e49cf44146102ce57806318160ddd146102fe57806323b872dd1461031c5780632e1a7d4d1461034c57610227565b8063016fb5221461022c5780630426dcef1461024857806306fdde0314610264578063095ea7b314610282575b600080fd5b61024660048036038101906102419190612dea565b6106ca565b005b610262600480360381019061025d9190612dea565b61071f565b005b61026c610774565b6040516102799190612ec3565b60405180910390f35b61029c60048036038101906102979190612dea565b610802565b6040516102a99190612f00565b60405180910390f35b6102cc60048036038101906102c79190612dea565b610819565b005b6102e860048036038101906102e39190612f1b565b61086e565b6040516102f59190612f57565b60405180910390f35b6103066108b7565b6040516103139190612f57565b60405180910390f35b61033660048036038101906103319190612f72565b6108c1565b6040516103439190612f00565b60405180910390f35b61036660048036038101906103619190612fc5565b610972565b005b61037061097e565b60405161037d919061300e565b60405180910390f35b6103a0600480360381019061039b9190612dea565b610983565b6040516103ad9190612f00565b60405180910390f35b6103be610a28565b005b6103da60048036038101906103d59190612f1b565b610b13565b005b6103f660048036038101906103f19190612f1b565b610b66565b6040516104039190612f00565b60405180910390f35b610414610b83565b6040516104219190612f00565b60405180910390f35b610432610b9a565b60405161043f9190613038565b60405180910390f35b610462600480360381019061045d919061307f565b610bc0565b005b61046c610caa565b005b61048860048036038101906104839190612f1b565b610cb5565b6040516104959190612f57565b60405180910390f35b6104a6610d4f565b005b6104c260048036038101906104bd9190612f1b565b610e57565b005b6104cc610eab565b005b6104e860048036038101906104e391906131f4565b610f96565b005b6104f261100f565b6040516104ff9190613038565b60405180910390f35b610510611039565b60405161051d9190612f00565b60405180910390f35b61052e611091565b60405161053b9190612ec3565b60405180910390f35b61055e60048036038101906105599190612f1b565b61111f565b60405161056b919061300e565b60405180910390f35b61058e60048036038101906105899190612dea565b61113f565b60405161059b9190612f00565b60405180910390f35b6105be60048036038101906105b99190612dea565b6111e4565b6040516105cb9190612f00565b60405180910390f35b6105ee60048036038101906105e991906132cc565b6111fb565b005b61060a6004803603810190610605919061332c565b61120b565b6040516106179190612f57565b60405180910390f35b61063a600480360381019061063591906133a2565b611292565b005b6106446112eb565b005b610660600480360381019061065b9190612dea565b61133c565b005b61067c60048036038101906106779190612dea565b611392565b005b61069860048036038101906106939190612f1b565b6113e7565b005b6106b460048036038101906106af9190612f1b565b61143a565b6040516106c19190612f57565b60405180910390f35b6106d2611039565b610711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070890613455565b60405180910390fd5b61071b828261152b565b5050565b610727611039565b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90613455565b60405180910390fd5b61077082826116a7565b5050565b60098054610781906134a4565b80601f01602080910402602001604051908101604052809291908181526020018280546107ad906134a4565b80156107fa5780601f106107cf576101008083540402835291602001916107fa565b820191906000526020600020905b8154815290600101906020018083116107dd57829003601f168201915b505050505081565b600061080f338484611823565b6001905092915050565b610821611039565b610860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085790613455565b60405180910390fd5b61086a82826119ee565b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600654905090565b60006108ce848484611b5e565b610967843361096285600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b611823565b600190509392505050565b61097b81611f57565b50565b601281565b6000610a1e3384610a1985600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b611823565b6001905092915050565b610a3133610b66565b610a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6790613548565b60405180910390fd5b600160009054906101000a900460ff16610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab6906135b4565b60405180910390fd5b6000600160006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051610b099190613038565b60405180910390a1565b610b1b611039565b610b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5190613455565b60405180910390fd5b610b638161211e565b50565b6000610b7c8260006121d290919063ffffffff16565b9050919050565b6000600160009054906101000a900460ff16905090565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bc8611039565b610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe90613455565b60405180910390fd5b60018160ff161115610c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4590613620565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b610cb33361229a565b565b6000610d48600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b9050919050565b610d57611039565b610d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8d90613455565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e6033610b66565b610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9690613548565b60405180910390fd5b610ea8816122f4565b50565b610eb433610b66565b610ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eea90613548565b60405180910390fd5b600160009054906101000a900460ff1615610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3a9061368c565b60405180910390fd5b60018060006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051610f8c9190613038565b60405180910390a1565b610f9e611039565b610fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd490613455565b60405180910390fd5b8160099080519060200190610ff3929190612c9f565b5080600a908051906020019061100a929190612c9f565b505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600a805461109e906134a4565b80601f01602080910402602001604051908101604052809291908181526020018280546110ca906134a4565b80156111175780601f106110ec57610100808354040283529160200191611117565b820191906000526020600020905b8154815290600101906020018083116110fa57829003601f168201915b505050505081565b60046020528060005260406000206000915054906101000a900460ff1681565b60006111da33846111d585600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b611823565b6001905092915050565b60006111f1338484611b5e565b6001905092915050565b61120683838361234e565b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61129a611039565b6112d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d090613455565b60405180910390fd5b6112e58484848461255d565b50505050565b6112f3611039565b611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132990613455565b60405180910390fd5b61133a612759565b565b611344611039565b611383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137a90613455565b60405180910390fd5b61138e338383612776565b5050565b61139a611039565b6113d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d090613455565b60405180910390fd5b6113e38282612958565b5050565b6113ef611039565b61142e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142590613455565b60405180910390fd5b61143781612ac8565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61148d82826121d2565b156114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c4906136f8565b60405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61157d81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061161281600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d4278260405161169b9190612f57565b60405180910390a25050565b6116f981600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061178e81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1826040516118179190612f57565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188a9061378a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa9061381c565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119e19190612f57565b60405180910390a3505050565b60011515600760009054906101000a900460ff16151514611a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3b90613888565b60405180910390fd5b611a9681600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611aee81600654611ef890919063ffffffff16565b600681905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b529190612f57565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc59061391a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c35906139ac565b60405180910390fd5b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161415611cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc890613a18565b60405180910390fd5b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161415611d64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5b90613a84565b60405180910390fd5b611db681600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e4b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611eeb9190612f57565b60405180910390a3505050565b600082821115611f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3490613af0565b60405180910390fd5b60008284611f4b9190613b3f565b90508091505092915050565b600160009054906101000a900460ff1615611fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9e9061368c565b60405180910390fd5b611ff981600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061205181600654611ef890919063ffffffff16565b600681905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120b59190612f57565b60405180910390a350565b60008082846120cf9190613b73565b905083811015612114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210b90613c15565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561218e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218590613ca7565b60405180910390fd5b80600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223a90613d39565b60405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6122ae816000612bf890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b61230881600061148390919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b600160009054906101000a900460ff161561239e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123959061368c565b60405180910390fd5b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461242e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242590613da5565b60405180910390fd5b6000828281019061243f9190612fc5565b9050612456816006546120c090919063ffffffff16565b6006819055506124ae81600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161254f9190612f57565b60405180910390a350505050565b6125af82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061264482600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126e49190612f57565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f91f8b835be584629107fbfe5be695e33c56ebe55697d7c8a30d309a2b8dce937848460405161274b929190613dd4565b60405180910390a350505050565b6000600760006101000a81548160ff021916908315150217905550565b6127c881600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061285d81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128fd9190612f57565b60405180910390a38173ffffffffffffffffffffffffffffffffffffffff167f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d4278260405161294b9190612f57565b60405180910390a2505050565b60011515600760009054906101000a900460ff161515146129ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a590613888565b60405180910390fd5b612a0081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a58816006546120c090919063ffffffff16565b6006819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612abc9190612f57565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2f90613e6f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612c0282826121d2565b612c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3890613f01565b60405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b828054612cab906134a4565b90600052602060002090601f016020900481019282612ccd5760008555612d14565b82601f10612ce657805160ff1916838001178555612d14565b82800160010185558215612d14579182015b82811115612d13578251825591602001919060010190612cf8565b5b509050612d219190612d25565b5090565b5b80821115612d3e576000816000905550600101612d26565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d8182612d56565b9050919050565b612d9181612d76565b8114612d9c57600080fd5b50565b600081359050612dae81612d88565b92915050565b6000819050919050565b612dc781612db4565b8114612dd257600080fd5b50565b600081359050612de481612dbe565b92915050565b60008060408385031215612e0157612e00612d4c565b5b6000612e0f85828601612d9f565b9250506020612e2085828601612dd5565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e64578082015181840152602081019050612e49565b83811115612e73576000848401525b50505050565b6000601f19601f8301169050919050565b6000612e9582612e2a565b612e9f8185612e35565b9350612eaf818560208601612e46565b612eb881612e79565b840191505092915050565b60006020820190508181036000830152612edd8184612e8a565b905092915050565b60008115159050919050565b612efa81612ee5565b82525050565b6000602082019050612f156000830184612ef1565b92915050565b600060208284031215612f3157612f30612d4c565b5b6000612f3f84828501612d9f565b91505092915050565b612f5181612db4565b82525050565b6000602082019050612f6c6000830184612f48565b92915050565b600080600060608486031215612f8b57612f8a612d4c565b5b6000612f9986828701612d9f565b9350506020612faa86828701612d9f565b9250506040612fbb86828701612dd5565b9150509250925092565b600060208284031215612fdb57612fda612d4c565b5b6000612fe984828501612dd5565b91505092915050565b600060ff82169050919050565b61300881612ff2565b82525050565b60006020820190506130236000830184612fff565b92915050565b61303281612d76565b82525050565b600060208201905061304d6000830184613029565b92915050565b61305c81612ff2565b811461306757600080fd5b50565b60008135905061307981613053565b92915050565b6000806040838503121561309657613095612d4c565b5b60006130a485828601612d9f565b92505060206130b58582860161306a565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61310182612e79565b810181811067ffffffffffffffff821117156131205761311f6130c9565b5b80604052505050565b6000613133612d42565b905061313f82826130f8565b919050565b600067ffffffffffffffff82111561315f5761315e6130c9565b5b61316882612e79565b9050602081019050919050565b82818337600083830152505050565b600061319761319284613144565b613129565b9050828152602081018484840111156131b3576131b26130c4565b5b6131be848285613175565b509392505050565b600082601f8301126131db576131da6130bf565b5b81356131eb848260208601613184565b91505092915050565b6000806040838503121561320b5761320a612d4c565b5b600083013567ffffffffffffffff81111561322957613228612d51565b5b613235858286016131c6565b925050602083013567ffffffffffffffff81111561325657613255612d51565b5b613262858286016131c6565b9150509250929050565b600080fd5b600080fd5b60008083601f84011261328c5761328b6130bf565b5b8235905067ffffffffffffffff8111156132a9576132a861326c565b5b6020830191508360018202830111156132c5576132c4613271565b5b9250929050565b6000806000604084860312156132e5576132e4612d4c565b5b60006132f386828701612d9f565b935050602084013567ffffffffffffffff81111561331457613313612d51565b5b61332086828701613276565b92509250509250925092565b6000806040838503121561334357613342612d4c565b5b600061335185828601612d9f565b925050602061336285828601612d9f565b9150509250929050565b6000819050919050565b61337f8161336c565b811461338a57600080fd5b50565b60008135905061339c81613376565b92915050565b600080600080608085870312156133bc576133bb612d4c565b5b60006133ca87828801612d9f565b94505060206133db87828801612d9f565b93505060406133ec87828801612dd5565b92505060606133fd8782880161338d565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061343f602083612e35565b915061344a82613409565b602082019050919050565b6000602082019050818103600083015261346e81613432565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134bc57607f821691505b602082108114156134d0576134cf613475565b5b50919050565b7f506175736572526f6c653a2063616c6c657220646f6573206e6f74206861766560008201527f207468652050617573657220726f6c6500000000000000000000000000000000602082015250565b6000613532603083612e35565b915061353d826134d6565b604082019050919050565b6000602082019050818103600083015261356181613525565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b600061359e601483612e35565b91506135a982613568565b602082019050919050565b600060208201905081810360008301526135cd81613591565b9050919050565b7f4c6576656c3a20506c6561736520757365206c6576656c203020746f20312e00600082015250565b600061360a601f83612e35565b9150613615826135d4565b602082019050919050565b60006020820190508181036000830152613639816135fd565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613676601083612e35565b915061368182613640565b602082019050919050565b600060208201905081810360008301526136a581613669565b9050919050565b7f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500600082015250565b60006136e2601f83612e35565b91506136ed826136ac565b602082019050919050565b60006020820190508181036000830152613711816136d5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613774602483612e35565b915061377f82613718565b604082019050919050565b600060208201905081810360008301526137a381613767565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613806602283612e35565b9150613811826137aa565b604082019050919050565b60006020820190508181036000830152613835816137f9565b9050919050565b7f4d6967726174696f6e2069732073746f70706564000000000000000000000000600082015250565b6000613872601483612e35565b915061387d8261383c565b602082019050919050565b600060208201905081810360008301526138a181613865565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613904602583612e35565b915061390f826138a8565b604082019050919050565b60006020820190508181036000830152613933816138f7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613996602383612e35565b91506139a18261393a565b604082019050919050565b600060208201905081810360008301526139c581613989565b9050919050565b7f53656e64657220697320626c61636b6c69737465640000000000000000000000600082015250565b6000613a02601583612e35565b9150613a0d826139cc565b602082019050919050565b60006020820190508181036000830152613a31816139f5565b9050919050565b7f526563697069656e7420697320626c61636b6c69737465640000000000000000600082015250565b6000613a6e601883612e35565b9150613a7982613a38565b602082019050919050565b60006020820190508181036000830152613a9d81613a61565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b6000613ada601e83612e35565b9150613ae582613aa4565b602082019050919050565b60006020820190508181036000830152613b0981613acd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b4a82612db4565b9150613b5583612db4565b925082821015613b6857613b67613b10565b5b828203905092915050565b6000613b7e82612db4565b9150613b8983612db4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613bbe57613bbd613b10565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613bff601b83612e35565b9150613c0a82613bc9565b602082019050919050565b60006020820190508181036000830152613c2e81613bf2565b9050919050565b7f426164204368696c64436861696e4d616e6167657250726f787920616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c91602283612e35565b9150613c9c82613c35565b604082019050919050565b60006020820190508181036000830152613cc081613c84565b9050919050565b7f526f6c65733a206163636f756e7420697320746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d23602283612e35565b9150613d2e82613cc7565b604082019050919050565b60006020820190508181036000830152613d5281613d16565b9050919050565b7f596f75277265206e6f7420616c6c6f77656420746f206465706f736974000000600082015250565b6000613d8f601d83612e35565b9150613d9a82613d59565b602082019050919050565b60006020820190508181036000830152613dbe81613d82565b9050919050565b613dce8161336c565b82525050565b6000604082019050613de96000830185612f48565b613df66020830184613dc5565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e59602683612e35565b9150613e6482613dfd565b604082019050919050565b60006020820190508181036000830152613e8881613e4c565b9050919050565b7f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c60008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613eeb602183612e35565b9150613ef682613e8f565b604082019050919050565b60006020820190508181036000830152613f1a81613ede565b905091905056fea2646970667358221220c60633ef24171d021a50ef38e8cfe1cfed4a381f5aaaa8bbcc8a8d787a2d7ad664736f6c634300080a0033
Deployed ByteCode Sourcemap
24850:2454:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26909:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26734:123;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25038:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17143:165;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26023:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16300:113;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15878:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17779:273;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25521:79;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24942:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18461:214;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3972:118;;;:::i;:::-;;25234:157;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1497:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3181:78;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13157:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27118:183;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1714:77;;;:::i;:::-;;16032:132;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23952:140;;;:::i;:::-;;1614:92;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3761:116;;;:::i;:::-;;26319:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23141:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23507:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25135:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12947:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19178:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16626:173;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25399:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16862:134;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25709:176;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26157:79;;;:::i;:::-;;26535:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25893:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24247:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16172:116;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26909:119;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26992:28:::1;27005:6;27013;26992:12;:28::i;:::-;26909:119:::0;;:::o;26734:123::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26819:30:::1;26834:6;26842;26819:14;:30::i;:::-;26734:123:::0;;:::o;25038:32::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17143:165::-;17225:4;17242:36;17251:10;17263:7;17272:5;17242:8;:36::i;:::-;17296:4;17289:11;;17143:165;;;;:::o;26023:122::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26108:29:::1;26120:9;26130:6;26108:11;:29::i;:::-;26023:122:::0;;:::o;16300:113::-;16362:7;16389;:16;16397:7;16389:16;;;;;;;;;;;;;;;;16382:23;;16300:113;;;:::o;15878:91::-;15922:7;15949:12;;15942:19;;15878:91;:::o;17779:273::-;17885:4;17902:36;17912:6;17920:9;17931:6;17902:9;:36::i;:::-;17949:73;17958:6;17966:10;17978:43;18014:6;17978:11;:19;17990:6;17978:19;;;;;;;;;;;;;;;:31;17998:10;17978:31;;;;;;;;;;;;;;;;:35;;:43;;;;:::i;:::-;17949:8;:73::i;:::-;18040:4;18033:11;;17779:273;;;;;:::o;25521:79::-;25575:17;25585:6;25575:9;:17::i;:::-;25521:79;:::o;24942:35::-;24975:2;24942:35;:::o;18461:214::-;18549:4;18566:79;18575:10;18587:7;18596:48;18633:10;18596:11;:23;18608:10;18596:23;;;;;;;;;;;;;;;:32;18620:7;18596:32;;;;;;;;;;;;;;;;:36;;:48;;;;:::i;:::-;18566:8;:79::i;:::-;18663:4;18656:11;;18461:214;;;;:::o;3972:118::-;1396:20;1405:10;1396:8;:20::i;:::-;1388:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;3617:7:::1;;;;;;;;;;;3609:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;4041:5:::2;4031:7;;:15;;;;;;;;;;;;;;;;;;4062:20;4071:10;4062:20;;;;;;:::i;:::-;;;;;;;;3972:118::o:0;25234:157::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;25332:51:::1;25357:25;25332:24;:51::i;:::-;25234:157:::0;:::o;1497:109::-;1553:4;1577:21;1590:7;1577:8;:12;;:21;;;;:::i;:::-;1570:28;;1497:109;;;:::o;3181:78::-;3220:4;3244:7;;;;;;;;;;;3237:14;;3181:78;:::o;13157:82::-;;;;;;;;;;;;;:::o;27118:183::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;27219:1:::1;27212:5;:8;;;;27204:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;27288:5;27267:9;:18;27277:7;27267:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;27118:183:::0;;:::o;1714:77::-;1758:25;1772:10;1758:13;:25::i;:::-;1714:77::o;16032:132::-;16089:7;16116:40;16139:7;:16;16147:7;16139:16;;;;;;;;;;;;;;;;16116:9;:18;16126:7;16116:18;;;;;;;;;;;;;;;;:22;;:40;;;;:::i;:::-;16109:47;;16032:132;;;:::o;23952:140::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;24051:1:::1;24014:40;;24035:6;;;;;;;;;;;24014:40;;;;;;;;;;;;24082:1;24065:6;;:19;;;;;;;;;;;;;;;;;;23952:140::o:0;1614:92::-;1396:20;1405:10;1396:8;:20::i;:::-;1388:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;1679:19:::1;1690:7;1679:10;:19::i;:::-;1614:92:::0;:::o;3761:116::-;1396:20;1405:10;1396:8;:20::i;:::-;1388:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;3418:7:::1;;;;;;;;;;;3417:8;3409:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;3831:4:::2;3821:7:::0;::::2;:14;;;;;;;;;;;;;;;;;;3851:18;3858:10;3851:18;;;;;;:::i;:::-;;;;;;;;3761:116::o:0;26319:146::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26425:5:::1;26418:4;:12;;;;;;;;;;;;:::i;:::-;;26450:7;26441:6;:16;;;;;;;;;;;;:::i;:::-;;26319:146:::0;;:::o;23141:79::-;23179:7;23206:6;;;;;;;;;;;23199:13;;23141:79;:::o;23507:92::-;23547:4;23585:6;;;;;;;;;;;23571:20;;:10;:20;;;23564:27;;23507:92;:::o;25135:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12947:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;19178:224::-;19271:4;19288:84;19297:10;19309:7;19318:53;19355:15;19318:11;:23;19330:10;19318:23;;;;;;;;;;;;;;;:32;19342:7;19318:32;;;;;;;;;;;;;;;;:36;;:53;;;;:::i;:::-;19288:8;:84::i;:::-;19390:4;19383:11;;19178:224;;;;:::o;16626:173::-;16712:4;16729:40;16739:10;16751:9;16762:6;16729:9;:40::i;:::-;16787:4;16780:11;;16626:173;;;;:::o;25399:114::-;25478:27;25487:4;25493:11;;25478:8;:27::i;:::-;25399:114;;;:::o;16862:134::-;16934:7;16961:11;:18;16973:5;16961:18;;;;;;;;;;;;;;;:27;16980:7;16961:27;;;;;;;;;;;;;;;;16954:34;;16862:134;;;;:::o;25709:176::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;25830:47:::1;25845:6;25852:9;25862:6;25869:7;25830:14;:47::i;:::-;25709:176:::0;;;;:::o;26157:79::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26212:16:::1;:14;:16::i;:::-;26157:79::o:0;26535:145::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26626:46:::1;26644:10;26655:9;26665:6;26626:17;:46::i;:::-;26535:145:::0;;:::o;25893:122::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;25978:29:::1;25990:9;26000:6;25978:11;:29::i;:::-;25893:122:::0;;:::o;24247:109::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;24320:28:::1;24339:8;24320:18;:28::i;:::-;24247:109:::0;:::o;16172:116::-;16235:7;16262:9;:18;16272:7;16262:18;;;;;;;;;;;;;;;;16255:25;;16172:116;;;:::o;274:178::-;352:18;356:4;362:7;352:3;:18::i;:::-;351:19;343:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;440:4;417;:11;;:20;429:7;417:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;274:178;;:::o;21260:223::-;21354:29;21376:6;21354:9;:17;21364:6;21354:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;21334:9;:17;21344:6;21334:17;;;;;;;;;;;;;;;:49;;;;21412:27;21432:6;21412:7;:15;21420:6;21412:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;21394:7;:15;21402:6;21394:15;;;;;;;;;;;;;;;:45;;;;21460:6;21455:20;;;21468:6;21455:20;;;;;;:::i;:::-;;;;;;;;21260:223;;:::o;20964:227::-;21060:29;21082:6;21060:9;:17;21070:6;21060:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;21040:9;:17;21050:6;21040:17;;;;;;;;;;;;;;;:49;;;;21118:27;21138:6;21118:7;:15;21126:6;21118:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;21100:7;:15;21108:6;21100:15;;;;;;;;;;;;;;;:45;;;;21168:6;21161:22;;;21176:6;21161:22;;;;;;:::i;:::-;;;;;;;;20964:227;;:::o;21929:335::-;22039:1;22022:19;;:5;:19;;;;22014:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22120:1;22101:21;;:7;:21;;;;22093:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22204:5;22174:11;:18;22186:5;22174:18;;;;;;;;;;;;;;;:27;22193:7;22174:27;;;;;;;;;;;;;;;:35;;;;22241:7;22225:31;;22234:5;22225:31;;;22250:5;22225:31;;;;;;:::i;:::-;;;;;;;;21929:335;;;:::o;15338:308::-;15440:4;15422:22;;:14;;;;;;;;;;;:22;;;15414:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;15503:32;15528:6;15503:9;:20;15513:9;15503:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15480:9;:20;15490:9;15480:20;;;;;;;;;;;;;;;:55;;;;15561:24;15578:6;15561:12;;:16;;:24;;;;:::i;:::-;15546:12;:39;;;;15628:1;15601:37;;15610:9;15601:37;;;15631:6;15601:37;;;;;;:::i;:::-;;;;;;;;15338:308;;:::o;19892:577::-;20008:1;19990:20;;:6;:20;;;;19982:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;20092:1;20071:23;;:9;:23;;;;20063:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;20178:1;20157:9;:17;20167:6;20157:17;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;;20149:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;20248:1;20224:9;:20;20234:9;20224:20;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;20216:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20313:29;20335:6;20313:9;:17;20323:6;20313:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;20293:9;:17;20303:6;20293:17;;;;;;;;;;;;;;;:49;;;;20376:32;20401:6;20376:9;:20;20386:9;20376:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20353:9;:20;20363:9;20353:20;;;;;;;;;;;;;;;:55;;;;20443:9;20426:35;;20435:6;20426:35;;;20454:6;20426:35;;;;;;:::i;:::-;;;;;;;;19892:577;;;:::o;9238:184::-;9296:7;9329:1;9324;:6;;9316:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9376:9;9392:1;9388;:5;;;;:::i;:::-;9376:17;;9413:1;9406:8;;;9238:184;;;;:::o;14171:250::-;3418:7;;;;;;;;;;;3417:8;3409:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;14264:33:::1;14290:6;14264:9;:21;14274:10;14264:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;14240:9;:21;14250:10;14240:21;;;;;;;;;;;;;;;:57;;;;14323:24;14340:6;14323:12;;:16;;:24;;;;:::i;:::-;14308:12;:39;;;;14402:1;14373:40;;14382:10;14373:40;;;14406:6;14373:40;;;;;;:::i;:::-;;;;;;;;14171:250:::0;:::o;8782:181::-;8840:7;8860:9;8876:1;8872;:5;;;;:::i;:::-;8860:17;;8901:1;8896;:6;;8888:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8954:1;8947:8;;;8782:181;;;;:::o;13406:244::-;13540:1;13503:39;;:25;:39;;;;13495:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;13617:25;13592:22;;:50;;;;;;;;;;;;;;;;;;13406:244;:::o;810:203::-;882:4;926:1;907:21;;:7;:21;;;;899:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;985:4;:11;;:20;997:7;985:20;;;;;;;;;;;;;;;;;;;;;;;;;978:27;;810:203;;;;:::o;1929:130::-;1989:24;2005:7;1989:8;:15;;:24;;;;:::i;:::-;2043:7;2029:22;;;;;;;;;;;;1929:130;:::o;1799:122::-;1856:21;1869:7;1856:8;:12;;:21;;;;:::i;:::-;1905:7;1893:20;;;;;;;;;;;;1799:122;:::o;13658:505::-;3418:7;;;;;;;;;;;3417:8;3409:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;13774:22:::1;;;;;;;;;;;13760:36;;:10;:36;;;13752:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;13843:14;13871:11;;13860:34;;;;;;;:::i;:::-;13843:51;;14015:24;14032:6;14015:12;;:16;;:24;;;;:::i;:::-;14000:12;:39;;;;14068:27;14088:6;14068:9;:15;14078:4;14068:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;14050:9;:15;14060:4;14050:15;;;;;;;;;;;;;;;:45;;;;14142:4;14121:34;;14138:1;14121:34;;;14148:6;14121:34;;;;;;:::i;:::-;;;;;;;;13741:422;13658:505:::0;;;:::o;14547:351::-;14679:29;14701:6;14679:9;:17;14689:6;14679:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;14659:9;:17;14669:6;14659:17;;;;;;;;;;;;;;;:49;;;;14742:32;14767:6;14742:9;:20;14752:9;14742:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14719:9;:20;14729:9;14719:20;;;;;;;;;;;;;;;:55;;;;14807:9;14790:35;;14799:6;14790:35;;;14818:6;14790:35;;;;;;:::i;:::-;;;;;;;;14863:9;14841:49;;14855:6;14841:49;;;14874:6;14882:7;14841:49;;;;;;;:::i;:::-;;;;;;;;14547:351;;;;:::o;15737:76::-;15800:5;15783:14;;:22;;;;;;;;;;;;;;;;;;15737:76::o;20582:307::-;20700:29;20722:6;20700:9;:17;20710:6;20700:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;20680:9;:17;20690:6;20680:17;;;;;;;;;;;;;;;:49;;;;20761:30;20784:6;20761:7;:18;20769:9;20761:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;20740:7;:18;20748:9;20740:18;;;;;;;;;;;;;;;:51;;;;20824:9;20807:35;;20816:6;20807:35;;;20835:6;20807:35;;;;;;:::i;:::-;;;;;;;;20863:9;20858:23;;;20874:6;20858:23;;;;;;:::i;:::-;;;;;;;;20582:307;;;:::o;14964:308::-;15066:4;15048:22;;:14;;;;;;;;;;;:22;;;15040:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;15129:32;15154:6;15129:9;:20;15139:9;15129:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15106:9;:20;15116:9;15106:20;;;;;;;;;;;;;;;:55;;;;15187:24;15204:6;15187:12;;:16;;:24;;;;:::i;:::-;15172:12;:39;;;;15247:9;15227:37;;15244:1;15227:37;;;15257:6;15227:37;;;;;;:::i;:::-;;;;;;;;14964:308;;:::o;24462:229::-;24556:1;24536:22;;:8;:22;;;;24528:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;24646:8;24617:38;;24638:6;;;;;;;;;;;24617:38;;;;;;;;;;;;24675:8;24666:6;;:17;;;;;;;;;;;;;;;;;;24462:229;:::o;532:183::-;612:18;616:4;622:7;612:3;:18::i;:::-;604:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;702:5;679:4;:11;;:20;691:7;679:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;532:183;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:99::-;1729:6;1763:5;1757:12;1747:22;;1677:99;;;:::o;1782:169::-;1866:11;1900:6;1895:3;1888:19;1940:4;1935:3;1931:14;1916:29;;1782:169;;;;:::o;1957:307::-;2025:1;2035:113;2049:6;2046:1;2043:13;2035:113;;;2134:1;2129:3;2125:11;2119:18;2115:1;2110:3;2106:11;2099:39;2071:2;2068:1;2064:10;2059:15;;2035:113;;;2166:6;2163:1;2160:13;2157:101;;;2246:1;2237:6;2232:3;2228:16;2221:27;2157:101;2006:258;1957:307;;;:::o;2270:102::-;2311:6;2362:2;2358:7;2353:2;2346:5;2342:14;2338:28;2328:38;;2270:102;;;:::o;2378:364::-;2466:3;2494:39;2527:5;2494:39;:::i;:::-;2549:71;2613:6;2608:3;2549:71;:::i;:::-;2542:78;;2629:52;2674:6;2669:3;2662:4;2655:5;2651:16;2629:52;:::i;:::-;2706:29;2728:6;2706:29;:::i;:::-;2701:3;2697:39;2690:46;;2470:272;2378:364;;;;:::o;2748:313::-;2861:4;2899:2;2888:9;2884:18;2876:26;;2948:9;2942:4;2938:20;2934:1;2923:9;2919:17;2912:47;2976:78;3049:4;3040:6;2976:78;:::i;:::-;2968:86;;2748:313;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:619::-;4258:6;4266;4274;4323:2;4311:9;4302:7;4298:23;4294:32;4291:119;;;4329:79;;:::i;:::-;4291:119;4449:1;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;:::i;:::-;4464:63;;4420:117;4576:2;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4547:118;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4181:619;;;;;:::o;4806:329::-;4865:6;4914:2;4902:9;4893:7;4889:23;4885:32;4882:119;;;4920:79;;:::i;:::-;4882:119;5040:1;5065:53;5110:7;5101:6;5090:9;5086:22;5065:53;:::i;:::-;5055:63;;5011:117;4806:329;;;;:::o;5141:86::-;5176:7;5216:4;5209:5;5205:16;5194:27;;5141:86;;;:::o;5233:112::-;5316:22;5332:5;5316:22;:::i;:::-;5311:3;5304:35;5233:112;;:::o;5351:214::-;5440:4;5478:2;5467:9;5463:18;5455:26;;5491:67;5555:1;5544:9;5540:17;5531:6;5491:67;:::i;:::-;5351:214;;;;:::o;5571:118::-;5658:24;5676:5;5658:24;:::i;:::-;5653:3;5646:37;5571:118;;:::o;5695:222::-;5788:4;5826:2;5815:9;5811:18;5803:26;;5839:71;5907:1;5896:9;5892:17;5883:6;5839:71;:::i;:::-;5695:222;;;;:::o;5923:118::-;5994:22;6010:5;5994:22;:::i;:::-;5987:5;5984:33;5974:61;;6031:1;6028;6021:12;5974:61;5923:118;:::o;6047:135::-;6091:5;6129:6;6116:20;6107:29;;6145:31;6170:5;6145:31;:::i;:::-;6047:135;;;;:::o;6188:470::-;6254:6;6262;6311:2;6299:9;6290:7;6286:23;6282:32;6279:119;;;6317:79;;:::i;:::-;6279:119;6437:1;6462:53;6507:7;6498:6;6487:9;6483:22;6462:53;:::i;:::-;6452:63;;6408:117;6564:2;6590:51;6633:7;6624:6;6613:9;6609:22;6590:51;:::i;:::-;6580:61;;6535:116;6188:470;;;;;:::o;6664:117::-;6773:1;6770;6763:12;6787:117;6896:1;6893;6886:12;6910:180;6958:77;6955:1;6948:88;7055:4;7052:1;7045:15;7079:4;7076:1;7069:15;7096:281;7179:27;7201:4;7179:27;:::i;:::-;7171:6;7167:40;7309:6;7297:10;7294:22;7273:18;7261:10;7258:34;7255:62;7252:88;;;7320:18;;:::i;:::-;7252:88;7360:10;7356:2;7349:22;7139:238;7096:281;;:::o;7383:129::-;7417:6;7444:20;;:::i;:::-;7434:30;;7473:33;7501:4;7493:6;7473:33;:::i;:::-;7383:129;;;:::o;7518:308::-;7580:4;7670:18;7662:6;7659:30;7656:56;;;7692:18;;:::i;:::-;7656:56;7730:29;7752:6;7730:29;:::i;:::-;7722:37;;7814:4;7808;7804:15;7796:23;;7518:308;;;:::o;7832:154::-;7916:6;7911:3;7906;7893:30;7978:1;7969:6;7964:3;7960:16;7953:27;7832:154;;;:::o;7992:412::-;8070:5;8095:66;8111:49;8153:6;8111:49;:::i;:::-;8095:66;:::i;:::-;8086:75;;8184:6;8177:5;8170:21;8222:4;8215:5;8211:16;8260:3;8251:6;8246:3;8242:16;8239:25;8236:112;;;8267:79;;:::i;:::-;8236:112;8357:41;8391:6;8386:3;8381;8357:41;:::i;:::-;8076:328;7992:412;;;;;:::o;8424:340::-;8480:5;8529:3;8522:4;8514:6;8510:17;8506:27;8496:122;;8537:79;;:::i;:::-;8496:122;8654:6;8641:20;8679:79;8754:3;8746:6;8739:4;8731:6;8727:17;8679:79;:::i;:::-;8670:88;;8486:278;8424:340;;;;:::o;8770:834::-;8858:6;8866;8915:2;8903:9;8894:7;8890:23;8886:32;8883:119;;;8921:79;;:::i;:::-;8883:119;9069:1;9058:9;9054:17;9041:31;9099:18;9091:6;9088:30;9085:117;;;9121:79;;:::i;:::-;9085:117;9226:63;9281:7;9272:6;9261:9;9257:22;9226:63;:::i;:::-;9216:73;;9012:287;9366:2;9355:9;9351:18;9338:32;9397:18;9389:6;9386:30;9383:117;;;9419:79;;:::i;:::-;9383:117;9524:63;9579:7;9570:6;9559:9;9555:22;9524:63;:::i;:::-;9514:73;;9309:288;8770:834;;;;;:::o;9610:117::-;9719:1;9716;9709:12;9733:117;9842:1;9839;9832:12;9869:552;9926:8;9936:6;9986:3;9979:4;9971:6;9967:17;9963:27;9953:122;;9994:79;;:::i;:::-;9953:122;10107:6;10094:20;10084:30;;10137:18;10129:6;10126:30;10123:117;;;10159:79;;:::i;:::-;10123:117;10273:4;10265:6;10261:17;10249:29;;10327:3;10319:4;10311:6;10307:17;10297:8;10293:32;10290:41;10287:128;;;10334:79;;:::i;:::-;10287:128;9869:552;;;;;:::o;10427:672::-;10506:6;10514;10522;10571:2;10559:9;10550:7;10546:23;10542:32;10539:119;;;10577:79;;:::i;:::-;10539:119;10697:1;10722:53;10767:7;10758:6;10747:9;10743:22;10722:53;:::i;:::-;10712:63;;10668:117;10852:2;10841:9;10837:18;10824:32;10883:18;10875:6;10872:30;10869:117;;;10905:79;;:::i;:::-;10869:117;11018:64;11074:7;11065:6;11054:9;11050:22;11018:64;:::i;:::-;11000:82;;;;10795:297;10427:672;;;;;:::o;11105:474::-;11173:6;11181;11230:2;11218:9;11209:7;11205:23;11201:32;11198:119;;;11236:79;;:::i;:::-;11198:119;11356:1;11381:53;11426:7;11417:6;11406:9;11402:22;11381:53;:::i;:::-;11371:63;;11327:117;11483:2;11509:53;11554:7;11545:6;11534:9;11530:22;11509:53;:::i;:::-;11499:63;;11454:118;11105:474;;;;;:::o;11585:77::-;11622:7;11651:5;11640:16;;11585:77;;;:::o;11668:122::-;11741:24;11759:5;11741:24;:::i;:::-;11734:5;11731:35;11721:63;;11780:1;11777;11770:12;11721:63;11668:122;:::o;11796:139::-;11842:5;11880:6;11867:20;11858:29;;11896:33;11923:5;11896:33;:::i;:::-;11796:139;;;;:::o;11941:765::-;12027:6;12035;12043;12051;12100:3;12088:9;12079:7;12075:23;12071:33;12068:120;;;12107:79;;:::i;:::-;12068:120;12227:1;12252:53;12297:7;12288:6;12277:9;12273:22;12252:53;:::i;:::-;12242:63;;12198:117;12354:2;12380:53;12425:7;12416:6;12405:9;12401:22;12380:53;:::i;:::-;12370:63;;12325:118;12482:2;12508:53;12553:7;12544:6;12533:9;12529:22;12508:53;:::i;:::-;12498:63;;12453:118;12610:2;12636:53;12681:7;12672:6;12661:9;12657:22;12636:53;:::i;:::-;12626:63;;12581:118;11941:765;;;;;;;:::o;12712:182::-;12852:34;12848:1;12840:6;12836:14;12829:58;12712:182;:::o;12900:366::-;13042:3;13063:67;13127:2;13122:3;13063:67;:::i;:::-;13056:74;;13139:93;13228:3;13139:93;:::i;:::-;13257:2;13252:3;13248:12;13241:19;;12900:366;;;:::o;13272:419::-;13438:4;13476:2;13465:9;13461:18;13453:26;;13525:9;13519:4;13515:20;13511:1;13500:9;13496:17;13489:47;13553:131;13679:4;13553:131;:::i;:::-;13545:139;;13272:419;;;:::o;13697:180::-;13745:77;13742:1;13735:88;13842:4;13839:1;13832:15;13866:4;13863:1;13856:15;13883:320;13927:6;13964:1;13958:4;13954:12;13944:22;;14011:1;14005:4;14001:12;14032:18;14022:81;;14088:4;14080:6;14076:17;14066:27;;14022:81;14150:2;14142:6;14139:14;14119:18;14116:38;14113:84;;;14169:18;;:::i;:::-;14113:84;13934:269;13883:320;;;:::o;14209:235::-;14349:34;14345:1;14337:6;14333:14;14326:58;14418:18;14413:2;14405:6;14401:15;14394:43;14209:235;:::o;14450:366::-;14592:3;14613:67;14677:2;14672:3;14613:67;:::i;:::-;14606:74;;14689:93;14778:3;14689:93;:::i;:::-;14807:2;14802:3;14798:12;14791:19;;14450:366;;;:::o;14822:419::-;14988:4;15026:2;15015:9;15011:18;15003:26;;15075:9;15069:4;15065:20;15061:1;15050:9;15046:17;15039:47;15103:131;15229:4;15103:131;:::i;:::-;15095:139;;14822:419;;;:::o;15247:170::-;15387:22;15383:1;15375:6;15371:14;15364:46;15247:170;:::o;15423:366::-;15565:3;15586:67;15650:2;15645:3;15586:67;:::i;:::-;15579:74;;15662:93;15751:3;15662:93;:::i;:::-;15780:2;15775:3;15771:12;15764:19;;15423:366;;;:::o;15795:419::-;15961:4;15999:2;15988:9;15984:18;15976:26;;16048:9;16042:4;16038:20;16034:1;16023:9;16019:17;16012:47;16076:131;16202:4;16076:131;:::i;:::-;16068:139;;15795:419;;;:::o;16220:181::-;16360:33;16356:1;16348:6;16344:14;16337:57;16220:181;:::o;16407:366::-;16549:3;16570:67;16634:2;16629:3;16570:67;:::i;:::-;16563:74;;16646:93;16735:3;16646:93;:::i;:::-;16764:2;16759:3;16755:12;16748:19;;16407:366;;;:::o;16779:419::-;16945:4;16983:2;16972:9;16968:18;16960:26;;17032:9;17026:4;17022:20;17018:1;17007:9;17003:17;16996:47;17060:131;17186:4;17060:131;:::i;:::-;17052:139;;16779:419;;;:::o;17204:166::-;17344:18;17340:1;17332:6;17328:14;17321:42;17204:166;:::o;17376:366::-;17518:3;17539:67;17603:2;17598:3;17539:67;:::i;:::-;17532:74;;17615:93;17704:3;17615:93;:::i;:::-;17733:2;17728:3;17724:12;17717:19;;17376:366;;;:::o;17748:419::-;17914:4;17952:2;17941:9;17937:18;17929:26;;18001:9;17995:4;17991:20;17987:1;17976:9;17972:17;17965:47;18029:131;18155:4;18029:131;:::i;:::-;18021:139;;17748:419;;;:::o;18173:181::-;18313:33;18309:1;18301:6;18297:14;18290:57;18173:181;:::o;18360:366::-;18502:3;18523:67;18587:2;18582:3;18523:67;:::i;:::-;18516:74;;18599:93;18688:3;18599:93;:::i;:::-;18717:2;18712:3;18708:12;18701:19;;18360:366;;;:::o;18732:419::-;18898:4;18936:2;18925:9;18921:18;18913:26;;18985:9;18979:4;18975:20;18971:1;18960:9;18956:17;18949:47;19013:131;19139:4;19013:131;:::i;:::-;19005:139;;18732:419;;;:::o;19157:223::-;19297:34;19293:1;19285:6;19281:14;19274:58;19366:6;19361:2;19353:6;19349:15;19342:31;19157:223;:::o;19386:366::-;19528:3;19549:67;19613:2;19608:3;19549:67;:::i;:::-;19542:74;;19625:93;19714:3;19625:93;:::i;:::-;19743:2;19738:3;19734:12;19727:19;;19386:366;;;:::o;19758:419::-;19924:4;19962:2;19951:9;19947:18;19939:26;;20011:9;20005:4;20001:20;19997:1;19986:9;19982:17;19975:47;20039:131;20165:4;20039:131;:::i;:::-;20031:139;;19758:419;;;:::o;20183:221::-;20323:34;20319:1;20311:6;20307:14;20300:58;20392:4;20387:2;20379:6;20375:15;20368:29;20183:221;:::o;20410:366::-;20552:3;20573:67;20637:2;20632:3;20573:67;:::i;:::-;20566:74;;20649:93;20738:3;20649:93;:::i;:::-;20767:2;20762:3;20758:12;20751:19;;20410:366;;;:::o;20782:419::-;20948:4;20986:2;20975:9;20971:18;20963:26;;21035:9;21029:4;21025:20;21021:1;21010:9;21006:17;20999:47;21063:131;21189:4;21063:131;:::i;:::-;21055:139;;20782:419;;;:::o;21207:170::-;21347:22;21343:1;21335:6;21331:14;21324:46;21207:170;:::o;21383:366::-;21525:3;21546:67;21610:2;21605:3;21546:67;:::i;:::-;21539:74;;21622:93;21711:3;21622:93;:::i;:::-;21740:2;21735:3;21731:12;21724:19;;21383:366;;;:::o;21755:419::-;21921:4;21959:2;21948:9;21944:18;21936:26;;22008:9;22002:4;21998:20;21994:1;21983:9;21979:17;21972:47;22036:131;22162:4;22036:131;:::i;:::-;22028:139;;21755:419;;;:::o;22180:224::-;22320:34;22316:1;22308:6;22304:14;22297:58;22389:7;22384:2;22376:6;22372:15;22365:32;22180:224;:::o;22410:366::-;22552:3;22573:67;22637:2;22632:3;22573:67;:::i;:::-;22566:74;;22649:93;22738:3;22649:93;:::i;:::-;22767:2;22762:3;22758:12;22751:19;;22410:366;;;:::o;22782:419::-;22948:4;22986:2;22975:9;22971:18;22963:26;;23035:9;23029:4;23025:20;23021:1;23010:9;23006:17;22999:47;23063:131;23189:4;23063:131;:::i;:::-;23055:139;;22782:419;;;:::o;23207:222::-;23347:34;23343:1;23335:6;23331:14;23324:58;23416:5;23411:2;23403:6;23399:15;23392:30;23207:222;:::o;23435:366::-;23577:3;23598:67;23662:2;23657:3;23598:67;:::i;:::-;23591:74;;23674:93;23763:3;23674:93;:::i;:::-;23792:2;23787:3;23783:12;23776:19;;23435:366;;;:::o;23807:419::-;23973:4;24011:2;24000:9;23996:18;23988:26;;24060:9;24054:4;24050:20;24046:1;24035:9;24031:17;24024:47;24088:131;24214:4;24088:131;:::i;:::-;24080:139;;23807:419;;;:::o;24232:171::-;24372:23;24368:1;24360:6;24356:14;24349:47;24232:171;:::o;24409:366::-;24551:3;24572:67;24636:2;24631:3;24572:67;:::i;:::-;24565:74;;24648:93;24737:3;24648:93;:::i;:::-;24766:2;24761:3;24757:12;24750:19;;24409:366;;;:::o;24781:419::-;24947:4;24985:2;24974:9;24970:18;24962:26;;25034:9;25028:4;25024:20;25020:1;25009:9;25005:17;24998:47;25062:131;25188:4;25062:131;:::i;:::-;25054:139;;24781:419;;;:::o;25206:174::-;25346:26;25342:1;25334:6;25330:14;25323:50;25206:174;:::o;25386:366::-;25528:3;25549:67;25613:2;25608:3;25549:67;:::i;:::-;25542:74;;25625:93;25714:3;25625:93;:::i;:::-;25743:2;25738:3;25734:12;25727:19;;25386:366;;;:::o;25758:419::-;25924:4;25962:2;25951:9;25947:18;25939:26;;26011:9;26005:4;26001:20;25997:1;25986:9;25982:17;25975:47;26039:131;26165:4;26039:131;:::i;:::-;26031:139;;25758:419;;;:::o;26183:180::-;26323:32;26319:1;26311:6;26307:14;26300:56;26183:180;:::o;26369:366::-;26511:3;26532:67;26596:2;26591:3;26532:67;:::i;:::-;26525:74;;26608:93;26697:3;26608:93;:::i;:::-;26726:2;26721:3;26717:12;26710:19;;26369:366;;;:::o;26741:419::-;26907:4;26945:2;26934:9;26930:18;26922:26;;26994:9;26988:4;26984:20;26980:1;26969:9;26965:17;26958:47;27022:131;27148:4;27022:131;:::i;:::-;27014:139;;26741:419;;;:::o;27166:180::-;27214:77;27211:1;27204:88;27311:4;27308:1;27301:15;27335:4;27332:1;27325:15;27352:191;27392:4;27412:20;27430:1;27412:20;:::i;:::-;27407:25;;27446:20;27464:1;27446:20;:::i;:::-;27441:25;;27485:1;27482;27479:8;27476:34;;;27490:18;;:::i;:::-;27476:34;27535:1;27532;27528:9;27520:17;;27352:191;;;;:::o;27549:305::-;27589:3;27608:20;27626:1;27608:20;:::i;:::-;27603:25;;27642:20;27660:1;27642:20;:::i;:::-;27637:25;;27796:1;27728:66;27724:74;27721:1;27718:81;27715:107;;;27802:18;;:::i;:::-;27715:107;27846:1;27843;27839:9;27832:16;;27549:305;;;;:::o;27860:177::-;28000:29;27996:1;27988:6;27984:14;27977:53;27860:177;:::o;28043:366::-;28185:3;28206:67;28270:2;28265:3;28206:67;:::i;:::-;28199:74;;28282:93;28371:3;28282:93;:::i;:::-;28400:2;28395:3;28391:12;28384:19;;28043:366;;;:::o;28415:419::-;28581:4;28619:2;28608:9;28604:18;28596:26;;28668:9;28662:4;28658:20;28654:1;28643:9;28639:17;28632:47;28696:131;28822:4;28696:131;:::i;:::-;28688:139;;28415:419;;;:::o;28840:221::-;28980:34;28976:1;28968:6;28964:14;28957:58;29049:4;29044:2;29036:6;29032:15;29025:29;28840:221;:::o;29067:366::-;29209:3;29230:67;29294:2;29289:3;29230:67;:::i;:::-;29223:74;;29306:93;29395:3;29306:93;:::i;:::-;29424:2;29419:3;29415:12;29408:19;;29067:366;;;:::o;29439:419::-;29605:4;29643:2;29632:9;29628:18;29620:26;;29692:9;29686:4;29682:20;29678:1;29667:9;29663:17;29656:47;29720:131;29846:4;29720:131;:::i;:::-;29712:139;;29439:419;;;:::o;29864:221::-;30004:34;30000:1;29992:6;29988:14;29981:58;30073:4;30068:2;30060:6;30056:15;30049:29;29864:221;:::o;30091:366::-;30233:3;30254:67;30318:2;30313:3;30254:67;:::i;:::-;30247:74;;30330:93;30419:3;30330:93;:::i;:::-;30448:2;30443:3;30439:12;30432:19;;30091:366;;;:::o;30463:419::-;30629:4;30667:2;30656:9;30652:18;30644:26;;30716:9;30710:4;30706:20;30702:1;30691:9;30687:17;30680:47;30744:131;30870:4;30744:131;:::i;:::-;30736:139;;30463:419;;;:::o;30888:179::-;31028:31;31024:1;31016:6;31012:14;31005:55;30888:179;:::o;31073:366::-;31215:3;31236:67;31300:2;31295:3;31236:67;:::i;:::-;31229:74;;31312:93;31401:3;31312:93;:::i;:::-;31430:2;31425:3;31421:12;31414:19;;31073:366;;;:::o;31445:419::-;31611:4;31649:2;31638:9;31634:18;31626:26;;31698:9;31692:4;31688:20;31684:1;31673:9;31669:17;31662:47;31726:131;31852:4;31726:131;:::i;:::-;31718:139;;31445:419;;;:::o;31870:118::-;31957:24;31975:5;31957:24;:::i;:::-;31952:3;31945:37;31870:118;;:::o;31994:332::-;32115:4;32153:2;32142:9;32138:18;32130:26;;32166:71;32234:1;32223:9;32219:17;32210:6;32166:71;:::i;:::-;32247:72;32315:2;32304:9;32300:18;32291:6;32247:72;:::i;:::-;31994:332;;;;;:::o;32332:225::-;32472:34;32468:1;32460:6;32456:14;32449:58;32541:8;32536:2;32528:6;32524:15;32517:33;32332:225;:::o;32563:366::-;32705:3;32726:67;32790:2;32785:3;32726:67;:::i;:::-;32719:74;;32802:93;32891:3;32802:93;:::i;:::-;32920:2;32915:3;32911:12;32904:19;;32563:366;;;:::o;32935:419::-;33101:4;33139:2;33128:9;33124:18;33116:26;;33188:9;33182:4;33178:20;33174:1;33163:9;33159:17;33152:47;33216:131;33342:4;33216:131;:::i;:::-;33208:139;;32935:419;;;:::o;33360:220::-;33500:34;33496:1;33488:6;33484:14;33477:58;33569:3;33564:2;33556:6;33552:15;33545:28;33360:220;:::o;33586:366::-;33728:3;33749:67;33813:2;33808:3;33749:67;:::i;:::-;33742:74;;33825:93;33914:3;33825:93;:::i;:::-;33943:2;33938:3;33934:12;33927:19;;33586:366;;;:::o;33958:419::-;34124:4;34162:2;34151:9;34147:18;34139:26;;34211:9;34205:4;34201:20;34197:1;34186:9;34182:17;34175:47;34239:131;34365:4;34239:131;:::i;:::-;34231:139;;33958:419;;;:::o
Swarm Source
ipfs://c60633ef24171d021a50ef38e8cfe1cfed4a381f5aaaa8bbcc8a8d787a2d7ad6