Token Allbridge

 

Overview ERC-20

Price
$0.20 @ 0.348325 FTM (+0.35%)
Fully Diluted Market Cap
Total Supply:
209,067.92493 ABR

Holders:
189 addresses

Transfers:
-

Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

Allbridge is a decentralized and expanding token bridge with on-chain consensus. It's a simple, modern and reliable way to transfer assets between blockchains.


Update? Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WrappedToken

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 3 of 3: WrappedToken.sol
// SPDX-License-Identifier: Apache 2
pragma solidity ^0.8.0;

import "IERC20.sol";
import "Context.sol";

contract WrappedToken is Context, IERC20 {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _symbol;
    string private _name;
    uint8 private _decimals;

    bytes4 private _source;
    bytes32 private _sourceAddress;
    bool public initialized;
    address public mintBurnAuthority;

    modifier onlyMintBurnAuthority() {
        require(mintBurnAuthority == _msgSender(), "ERC20: !authority");
        _;
    }

    function initialize(bytes4 source_, bytes32 sourceAddress_, uint8 decimals_, string calldata symbol_, string calldata name_) external {
        require(!initialized, "Already initialized");
        // Set local fields
        _source = source_;
        _sourceAddress = sourceAddress_;
        mintBurnAuthority = msg.sender;
        initialized = true;

        _symbol = symbol_;
        _decimals = decimals_;
        _name = name_;
    }

    function source() external view returns (bytes4) {
        return _source;
    }

    function sourceAddress() external view returns (bytes32) {
        return _sourceAddress;
    }

    // Taken from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol
    // Licensed under MIT

    /**
     * @dev Returns the name of the token.
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is
     * called.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[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) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        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 `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        require(_allowances[sender][_msgSender()] >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - 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) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + 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) public returns (bool) {
        require(_allowances[_msgSender()][spender] >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - 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(_balances[sender] >= amount, "ERC20: transfer amount exceeds balance");

        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function mint(address account, uint256 amount) external onlyMintBurnAuthority {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply + amount;
        _balances[account] = _balances[account] + amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function burn(address account, uint256 amount)  external onlyMintBurnAuthority {
        require(account != address(0), "ERC20: burn from the zero address");
        require(_balances[account] >= amount, "ERC20: burn amount exceeds balance");

        _balances[account] = _balances[account] - amount;
        _totalSupply = _totalSupply - amount;
        emit Transfer(account, address(0), amount);
    }

    function changeAuthority(address newAuthority) external onlyMintBurnAuthority {
        require(newAuthority != address(0), "ERC20: zero address authority");
        mintBurnAuthority = newAuthority;
    }

    /**
     * @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 amount) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Sets {decimals} to a value other than the default one of 18.
     *
     * WARNING: This function should only be called from the constructor. Most
     * applications that interact with token contracts will not expect
     * {decimals} to ever change, and may work incorrectly if it does.
     */
    function _setupDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }
}

File 1 of 3: Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

File 2 of 3: IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

Contract Security Audit

Contract ABI

[{"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"}],"name":"Transfer","type":"event"},{"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":"amount","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":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAuthority","type":"address"}],"name":"changeAuthority","outputs":[],"stateMutability":"nonpayable","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":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"source_","type":"bytes4"},{"internalType":"bytes32","name":"sourceAddress_","type":"bytes32"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"string","name":"name_","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintBurnAuthority","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"source","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sourceAddress","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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"}]

608060405234801561001057600080fd5b506123a6806100206000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806340c10f19116100ad578063a457c2d711610071578063a457c2d71461030c578063a9059cbb1461033c578063b0fa84441461036c578063dd62ed3e1461038a578063e41e7c1f146103ba57610121565b806340c10f191461026857806367e828bf1461028457806370a08231146102a257806395d89b41146102d25780639dc29fac146102f057610121565b806318160ddd116100f457806318160ddd146101ae57806323b872dd146101cc5780632e7baaa3146101fc578063313ce5671461021a578063395093511461023857610121565b806306fdde0314610126578063095ea7b314610144578063116877cc14610174578063158ef93e14610190575b600080fd5b61012e6103d6565b60405161013b9190611b95565b60405180910390f35b61015e600480360381019061015991906117e3565b610468565b60405161016b9190611b44565b60405180910390f35b61018e6004803603810190610189919061172f565b610486565b005b6101986105d1565b6040516101a59190611b44565b60405180910390f35b6101b66105e4565b6040516101c39190611d57565b60405180910390f35b6101e660048036038101906101e19190611794565b6105ee565b6040516101f39190611b44565b60405180910390f35b61020461076c565b6040516102119190611b29565b60405180910390f35b610222610792565b60405161022f9190611d72565b60405180910390f35b610252600480360381019061024d91906117e3565b6107a9565b60405161025f9190611b44565b60405180910390f35b610282600480360381019061027d91906117e3565b610855565b005b61028c610a66565b6040516102999190611b7a565b60405180910390f35b6102bc60048036038101906102b7919061172f565b610a7d565b6040516102c99190611d57565b60405180910390f35b6102da610ac5565b6040516102e79190611b95565b60405180910390f35b61030a600480360381019061030591906117e3565b610b57565b005b610326600480360381019061032191906117e3565b610de9565b6040516103339190611b44565b60405180910390f35b610356600480360381019061035191906117e3565b610f5b565b6040516103639190611b44565b60405180910390f35b610374610f79565b6040516103819190611b5f565b60405180910390f35b6103a4600480360381019061039f9190611758565b610f83565b6040516103b19190611d57565b60405180910390f35b6103d460048036038101906103cf919061181f565b61100a565b005b6060600480546103e590611ef1565b80601f016020809104026020016040519081016040528092919081815260200182805461041190611ef1565b801561045e5780601f106104335761010080835404028352916020019161045e565b820191906000526020600020905b81548152906001019060200180831161044157829003601f168201915b5050505050905090565b600061047c610475611123565b848461112b565b6001905092915050565b61048e611123565b73ffffffffffffffffffffffffffffffffffffffff16600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461051d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051490611c57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561058d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058490611c37565b60405180910390fd5b80600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760009054906101000a900460ff1681565b6000600254905090565b60006105fb8484846112f6565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610645611123565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156106c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b890611c77565b60405180910390fd5b610761846106cd611123565b84600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610717611123565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461075c9190611dff565b61112b565b600190509392505050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900460ff16905090565b600061084b6107b6611123565b8484600160006107c4611123565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108469190611da9565b61112b565b6001905092915050565b61085d611123565b73ffffffffffffffffffffffffffffffffffffffff16600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e390611c57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561095c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095390611d37565b60405180910390fd5b8060025461096a9190611da9565b600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109ba9190611da9565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a5a9190611d57565b60405180910390a35050565b6000600560019054906101000a900460e01b905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060038054610ad490611ef1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0090611ef1565b8015610b4d5780601f10610b2257610100808354040283529160200191610b4d565b820191906000526020600020905b815481529060010190602001808311610b3057829003601f168201915b5050505050905090565b610b5f611123565b73ffffffffffffffffffffffffffffffffffffffff16600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be590611c57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590611c97565b60405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd690611bd7565b60405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d299190611dff565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600254610d799190611dff565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ddd9190611d57565b60405180910390a35050565b60008160016000610df8611123565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea890611d17565b60405180910390fd5b610f51610ebc611123565b848460016000610eca611123565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4c9190611dff565b61112b565b6001905092915050565b6000610f6f610f68611123565b84846112f6565b6001905092915050565b6000600654905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600760009054906101000a900460ff161561105a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105190611cf7565b60405180910390fd5b86600560016101000a81548163ffffffff021916908360e01c02179055508560068190555033600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760006101000a81548160ff0219169083151502179055508383600391906110ec9291906115d9565b5084600560006101000a81548160ff021916908360ff1602179055508181600491906111199291906115d9565b5050505050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561119b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119290611cd7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120290611bf7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112e99190611d57565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d90611cb7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd90611bb7565b60405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144e90611c17565b60405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114a19190611dff565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461152d9190611da9565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115cc9190611d57565b60405180910390a3505050565b8280546115e590611ef1565b90600052602060002090601f016020900481019282611607576000855561164e565b82601f1061162057803560ff191683800117855561164e565b8280016001018555821561164e579182015b8281111561164d578235825591602001919060010190611632565b5b50905061165b919061165f565b5090565b5b80821115611678576000816000905550600101611660565b5090565b60008135905061168b816122fd565b92915050565b6000813590506116a081612314565b92915050565b6000813590506116b58161232b565b92915050565b60008083601f8401126116cd57600080fd5b8235905067ffffffffffffffff8111156116e657600080fd5b6020830191508360018202830111156116fe57600080fd5b9250929050565b60008135905061171481612342565b92915050565b60008135905061172981612359565b92915050565b60006020828403121561174157600080fd5b600061174f8482850161167c565b91505092915050565b6000806040838503121561176b57600080fd5b60006117798582860161167c565b925050602061178a8582860161167c565b9150509250929050565b6000806000606084860312156117a957600080fd5b60006117b78682870161167c565b93505060206117c88682870161167c565b92505060406117d986828701611705565b9150509250925092565b600080604083850312156117f657600080fd5b60006118048582860161167c565b925050602061181585828601611705565b9150509250929050565b600080600080600080600060a0888a03121561183a57600080fd5b60006118488a828b016116a6565b97505060206118598a828b01611691565b965050604061186a8a828b0161171a565b955050606088013567ffffffffffffffff81111561188757600080fd5b6118938a828b016116bb565b9450945050608088013567ffffffffffffffff8111156118b257600080fd5b6118be8a828b016116bb565b925092505092959891949750929550565b6118d881611e33565b82525050565b6118e781611e45565b82525050565b6118f681611e51565b82525050565b61190581611e5b565b82525050565b600061191682611d8d565b6119208185611d98565b9350611930818560208601611ebe565b61193981611f81565b840191505092915050565b6000611951602383611d98565b915061195c82611f92565b604082019050919050565b6000611974602283611d98565b915061197f82611fe1565b604082019050919050565b6000611997602283611d98565b91506119a282612030565b604082019050919050565b60006119ba602683611d98565b91506119c58261207f565b604082019050919050565b60006119dd601d83611d98565b91506119e8826120ce565b602082019050919050565b6000611a00601183611d98565b9150611a0b826120f7565b602082019050919050565b6000611a23602883611d98565b9150611a2e82612120565b604082019050919050565b6000611a46602183611d98565b9150611a518261216f565b604082019050919050565b6000611a69602583611d98565b9150611a74826121be565b604082019050919050565b6000611a8c602483611d98565b9150611a978261220d565b604082019050919050565b6000611aaf601383611d98565b9150611aba8261225c565b602082019050919050565b6000611ad2602583611d98565b9150611add82612285565b604082019050919050565b6000611af5601f83611d98565b9150611b00826122d4565b602082019050919050565b611b1481611ea7565b82525050565b611b2381611eb1565b82525050565b6000602082019050611b3e60008301846118cf565b92915050565b6000602082019050611b5960008301846118de565b92915050565b6000602082019050611b7460008301846118ed565b92915050565b6000602082019050611b8f60008301846118fc565b92915050565b60006020820190508181036000830152611baf818461190b565b905092915050565b60006020820190508181036000830152611bd081611944565b9050919050565b60006020820190508181036000830152611bf081611967565b9050919050565b60006020820190508181036000830152611c108161198a565b9050919050565b60006020820190508181036000830152611c30816119ad565b9050919050565b60006020820190508181036000830152611c50816119d0565b9050919050565b60006020820190508181036000830152611c70816119f3565b9050919050565b60006020820190508181036000830152611c9081611a16565b9050919050565b60006020820190508181036000830152611cb081611a39565b9050919050565b60006020820190508181036000830152611cd081611a5c565b9050919050565b60006020820190508181036000830152611cf081611a7f565b9050919050565b60006020820190508181036000830152611d1081611aa2565b9050919050565b60006020820190508181036000830152611d3081611ac5565b9050919050565b60006020820190508181036000830152611d5081611ae8565b9050919050565b6000602082019050611d6c6000830184611b0b565b92915050565b6000602082019050611d876000830184611b1a565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611db482611ea7565b9150611dbf83611ea7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611df457611df3611f23565b5b828201905092915050565b6000611e0a82611ea7565b9150611e1583611ea7565b925082821015611e2857611e27611f23565b5b828203905092915050565b6000611e3e82611e87565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611edc578082015181840152602081019050611ec1565b83811115611eeb576000848401525b50505050565b60006002820490506001821680611f0957607f821691505b60208210811415611f1d57611f1c611f52565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207a65726f206164647265737320617574686f72697479000000600082015250565b7f45524332303a2021617574686f72697479000000000000000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416c726561647920696e697469616c697a656400000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61230681611e33565b811461231157600080fd5b50565b61231d81611e51565b811461232857600080fd5b50565b61233481611e5b565b811461233f57600080fd5b50565b61234b81611ea7565b811461235657600080fd5b50565b61236281611eb1565b811461236d57600080fd5b5056fea2646970667358221220caf64a583e7d4c544fa25bd7331b25eaef2ca8b0201fcb12072206a4435776d164736f6c63430008040033

Deployed ByteCode Sourcemap

106:9480:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1497:81;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3517:158;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8211:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;462:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2540:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4135:368;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;491:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2399:81;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4898:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7164:317;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1107:80;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2696:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1691:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7800:405;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5589:327;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3016:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1193:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3238:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;660:441;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1497:81;1534:13;1566:5;1559:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1497:81;:::o;3517:158::-;3592:4;3608:39;3617:12;:10;:12::i;:::-;3631:7;3640:6;3608:8;:39::i;:::-;3664:4;3657:11;;3517:158;;;;:::o;8211:205::-;602:12;:10;:12::i;:::-;581:33;;:17;;;;;;;;;;;:33;;;573:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;8331:1:::1;8307:26;;:12;:26;;;;8299:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8397:12;8377:17;;:32;;;;;;;;;;;;;;;;;;8211:205:::0;:::o;462:23::-;;;;;;;;;;;;;:::o;2540:98::-;2593:7;2619:12;;2612:19;;2540:98;:::o;4135:368::-;4233:4;4249:36;4259:6;4267:9;4278:6;4249:9;:36::i;:::-;4340:6;4303:11;:19;4315:6;4303:19;;;;;;;;;;;;;;;:33;4323:12;:10;:12::i;:::-;4303:33;;;;;;;;;;;;;;;;:43;;4295:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;4401:74;4410:6;4418:12;:10;:12::i;:::-;4468:6;4432:11;:19;4444:6;4432:19;;;;;;;;;;;;;;;:33;4452:12;:10;:12::i;:::-;4432:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;4401:8;:74::i;:::-;4492:4;4485:11;;4135:368;;;;;:::o;491:32::-;;;;;;;;;;;;;:::o;2399:81::-;2440:5;2464:9;;;;;;;;;;;2457:16;;2399:81;:::o;4898:204::-;4978:4;4994:80;5003:12;:10;:12::i;:::-;5017:7;5063:10;5026:11;:25;5038:12;:10;:12::i;:::-;5026:25;;;;;;;;;;;;;;;:34;5052:7;5026:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4994:8;:80::i;:::-;5091:4;5084:11;;4898:204;;;;:::o;7164:317::-;602:12;:10;:12::i;:::-;581:33;;:17;;;;;;;;;;;:33;;;573:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7279:1:::1;7260:21;;:7;:21;;;;7252:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7358:6;7343:12;;:21;;;;:::i;:::-;7328:12;:36;;;;7416:6;7395:9;:18:::0;7405:7:::1;7395:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;7374:9;:18:::0;7384:7:::1;7374:18;;;;;;;;;;;;;;;:48;;;;7458:7;7437:37;;7454:1;7437:37;;;7467:6;7437:37;;;;;;:::i;:::-;;;;;;;;7164:317:::0;;:::o;1107:80::-;1148:6;1173:7;;;;;;;;;;;1166:14;;1107:80;:::o;2696:117::-;2762:7;2788:9;:18;2798:7;2788:18;;;;;;;;;;;;;;;;2781:25;;2696:117;;;:::o;1691:85::-;1730:13;1762:7;1755:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1691:85;:::o;7800:405::-;602:12;:10;:12::i;:::-;581:33;;:17;;;;;;;;;;;:33;;;573:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7916:1:::1;7897:21;;:7;:21;;;;7889:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7996:6;7974:9;:18:::0;7984:7:::1;7974:18;;;;;;;;;;;;;;;;:28;;7966:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;8094:6;8073:9;:18:::0;8083:7:::1;8073:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;8052:9;:18:::0;8062:7:::1;8052:18;;;;;;;;;;;;;;;:48;;;;8140:6;8125:12;;:21;;;;:::i;:::-;8110:12;:36;;;;8187:1;8161:37;;8170:7;8161:37;;;8191:6;8161:37;;;;;;:::i;:::-;;;;;;;;7800:405:::0;;:::o;5589:327::-;5674:4;5736:15;5698:11;:25;5710:12;:10;:12::i;:::-;5698:25;;;;;;;;;;;;;;;:34;5724:7;5698:34;;;;;;;;;;;;;;;;:53;;5690:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;5803:85;5812:12;:10;:12::i;:::-;5826:7;5872:15;5835:11;:25;5847:12;:10;:12::i;:::-;5835:25;;;;;;;;;;;;;;;:34;5861:7;5835:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;5803:8;:85::i;:::-;5905:4;5898:11;;5589:327;;;;:::o;3016:164::-;3094:4;3110:42;3120:12;:10;:12::i;:::-;3134:9;3145:6;3110:9;:42::i;:::-;3169:4;3162:11;;3016:164;;;;:::o;1193:95::-;1241:7;1267:14;;1260:21;;1193:95;:::o;3238:141::-;3319:7;3345:11;:18;3357:5;3345:18;;;;;;;;;;;;;;;:27;3364:7;3345:27;;;;;;;;;;;;;;;;3338:34;;3238:141;;;;:::o;660:441::-;813:11;;;;;;;;;;;812:12;804:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;896:7;886;;:17;;;;;;;;;;;;;;;;;;930:14;913;:31;;;;974:10;954:17;;:30;;;;;;;;;;;;;;;;;;1008:4;994:11;;:18;;;;;;;;;;;;;;;;;;1033:7;;1023;:17;;;;;;;:::i;:::-;;1062:9;1050;;:21;;;;;;;;;;;;;;;;;;1089:5;;1081;:13;;;;;;;:::i;:::-;;660:441;;;;;;;:::o;586:96:0:-;639:7;665:10;658:17;;586:96;:::o;8841:332:2:-;8951:1;8934:19;;:5;:19;;;;8926:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9031:1;9012:21;;:7;:21;;;;9004:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9113:6;9083:11;:18;9095:5;9083:18;;;;;;;;;;;;;;;:27;9102:7;9083:27;;;;;;;;;;;;;;;:36;;;;9150:7;9134:32;;9143:5;9134:32;;;9159:6;9134:32;;;;;;:::i;:::-;;;;;;;;8841:332;;;:::o;6390:504::-;6505:1;6487:20;;:6;:20;;;;6479:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6588:1;6567:23;;:9;:23;;;;6559:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6669:6;6648:9;:17;6658:6;6648:17;;;;;;;;;;;;;;;;:27;;6640:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;6769:6;6749:9;:17;6759:6;6749:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;6729:9;:17;6739:6;6729:17;;;;;;;;;;;;;;;:46;;;;6831:6;6808:9;:20;6818:9;6808:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;6785:9;:20;6795:9;6785:20;;;;;;;;;;;;;;;:52;;;;6869:9;6852:35;;6861:6;6852:35;;;6880:6;6852:35;;;;;;:::i;:::-;;;;;;;;6390:504;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:139:3:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:137::-;342:5;380:6;367:20;358:29;;396:32;422:5;396:32;:::i;:::-;348:86;;;;:::o;454:352::-;512:8;522:6;572:3;565:4;557:6;553:17;549:27;539:2;;590:1;587;580:12;539:2;626:6;613:20;603:30;;656:18;648:6;645:30;642:2;;;688:1;685;678:12;642:2;725:4;717:6;713:17;701:29;;779:3;771:4;763:6;759:17;749:8;745:32;742:41;739:2;;;796:1;793;786:12;739:2;529:277;;;;;:::o;812:139::-;858:5;896:6;883:20;874:29;;912:33;939:5;912:33;:::i;:::-;864:87;;;;:::o;957:135::-;1001:5;1039:6;1026:20;1017:29;;1055:31;1080:5;1055:31;:::i;:::-;1007:85;;;;:::o;1098:262::-;1157:6;1206:2;1194:9;1185:7;1181:23;1177:32;1174:2;;;1222:1;1219;1212:12;1174:2;1265:1;1290:53;1335:7;1326:6;1315:9;1311:22;1290:53;:::i;:::-;1280:63;;1236:117;1164:196;;;;:::o;1366:407::-;1434:6;1442;1491:2;1479:9;1470:7;1466:23;1462:32;1459:2;;;1507:1;1504;1497:12;1459:2;1550:1;1575:53;1620:7;1611:6;1600:9;1596:22;1575:53;:::i;:::-;1565:63;;1521:117;1677:2;1703:53;1748:7;1739:6;1728:9;1724:22;1703:53;:::i;:::-;1693:63;;1648:118;1449:324;;;;;:::o;1779:552::-;1856:6;1864;1872;1921:2;1909:9;1900:7;1896:23;1892:32;1889:2;;;1937:1;1934;1927:12;1889:2;1980:1;2005:53;2050:7;2041:6;2030:9;2026:22;2005:53;:::i;:::-;1995:63;;1951:117;2107:2;2133:53;2178:7;2169:6;2158:9;2154:22;2133:53;:::i;:::-;2123:63;;2078:118;2235:2;2261:53;2306:7;2297:6;2286:9;2282:22;2261:53;:::i;:::-;2251:63;;2206:118;1879:452;;;;;:::o;2337:407::-;2405:6;2413;2462:2;2450:9;2441:7;2437:23;2433:32;2430:2;;;2478:1;2475;2468:12;2430:2;2521:1;2546:53;2591:7;2582:6;2571:9;2567:22;2546:53;:::i;:::-;2536:63;;2492:117;2648:2;2674:53;2719:7;2710:6;2699:9;2695:22;2674:53;:::i;:::-;2664:63;;2619:118;2420:324;;;;;:::o;2750:1104::-;2866:6;2874;2882;2890;2898;2906;2914;2963:3;2951:9;2942:7;2938:23;2934:33;2931:2;;;2980:1;2977;2970:12;2931:2;3023:1;3048:52;3092:7;3083:6;3072:9;3068:22;3048:52;:::i;:::-;3038:62;;2994:116;3149:2;3175:53;3220:7;3211:6;3200:9;3196:22;3175:53;:::i;:::-;3165:63;;3120:118;3277:2;3303:51;3346:7;3337:6;3326:9;3322:22;3303:51;:::i;:::-;3293:61;;3248:116;3431:2;3420:9;3416:18;3403:32;3462:18;3454:6;3451:30;3448:2;;;3494:1;3491;3484:12;3448:2;3530:65;3587:7;3578:6;3567:9;3563:22;3530:65;:::i;:::-;3512:83;;;;3374:231;3672:3;3661:9;3657:19;3644:33;3704:18;3696:6;3693:30;3690:2;;;3736:1;3733;3726:12;3690:2;3772:65;3829:7;3820:6;3809:9;3805:22;3772:65;:::i;:::-;3754:83;;;;3615:232;2921:933;;;;;;;;;;:::o;3860:118::-;3947:24;3965:5;3947:24;:::i;:::-;3942:3;3935:37;3925:53;;:::o;3984:109::-;4065:21;4080:5;4065:21;:::i;:::-;4060:3;4053:34;4043:50;;:::o;4099:118::-;4186:24;4204:5;4186:24;:::i;:::-;4181:3;4174:37;4164:53;;:::o;4223:115::-;4308:23;4325:5;4308:23;:::i;:::-;4303:3;4296:36;4286:52;;:::o;4344:364::-;4432:3;4460:39;4493:5;4460:39;:::i;:::-;4515:71;4579:6;4574:3;4515:71;:::i;:::-;4508:78;;4595:52;4640:6;4635:3;4628:4;4621:5;4617:16;4595:52;:::i;:::-;4672:29;4694:6;4672:29;:::i;:::-;4667:3;4663:39;4656:46;;4436:272;;;;;:::o;4714:366::-;4856:3;4877:67;4941:2;4936:3;4877:67;:::i;:::-;4870:74;;4953:93;5042:3;4953:93;:::i;:::-;5071:2;5066:3;5062:12;5055:19;;4860:220;;;:::o;5086:366::-;5228:3;5249:67;5313:2;5308:3;5249:67;:::i;:::-;5242:74;;5325:93;5414:3;5325:93;:::i;:::-;5443:2;5438:3;5434:12;5427:19;;5232:220;;;:::o;5458:366::-;5600:3;5621:67;5685:2;5680:3;5621:67;:::i;:::-;5614:74;;5697:93;5786:3;5697:93;:::i;:::-;5815:2;5810:3;5806:12;5799:19;;5604:220;;;:::o;5830:366::-;5972:3;5993:67;6057:2;6052:3;5993:67;:::i;:::-;5986:74;;6069:93;6158:3;6069:93;:::i;:::-;6187:2;6182:3;6178:12;6171:19;;5976:220;;;:::o;6202:366::-;6344:3;6365:67;6429:2;6424:3;6365:67;:::i;:::-;6358:74;;6441:93;6530:3;6441:93;:::i;:::-;6559:2;6554:3;6550:12;6543:19;;6348:220;;;:::o;6574:366::-;6716:3;6737:67;6801:2;6796:3;6737:67;:::i;:::-;6730:74;;6813:93;6902:3;6813:93;:::i;:::-;6931:2;6926:3;6922:12;6915:19;;6720:220;;;:::o;6946:366::-;7088:3;7109:67;7173:2;7168:3;7109:67;:::i;:::-;7102:74;;7185:93;7274:3;7185:93;:::i;:::-;7303:2;7298:3;7294:12;7287:19;;7092:220;;;:::o;7318:366::-;7460:3;7481:67;7545:2;7540:3;7481:67;:::i;:::-;7474:74;;7557:93;7646:3;7557:93;:::i;:::-;7675:2;7670:3;7666:12;7659:19;;7464:220;;;:::o;7690:366::-;7832:3;7853:67;7917:2;7912:3;7853:67;:::i;:::-;7846:74;;7929:93;8018:3;7929:93;:::i;:::-;8047:2;8042:3;8038:12;8031:19;;7836:220;;;:::o;8062:366::-;8204:3;8225:67;8289:2;8284:3;8225:67;:::i;:::-;8218:74;;8301:93;8390:3;8301:93;:::i;:::-;8419:2;8414:3;8410:12;8403:19;;8208:220;;;:::o;8434:366::-;8576:3;8597:67;8661:2;8656:3;8597:67;:::i;:::-;8590:74;;8673:93;8762:3;8673:93;:::i;:::-;8791:2;8786:3;8782:12;8775:19;;8580:220;;;:::o;8806:366::-;8948:3;8969:67;9033:2;9028:3;8969:67;:::i;:::-;8962:74;;9045:93;9134:3;9045:93;:::i;:::-;9163:2;9158:3;9154:12;9147:19;;8952:220;;;:::o;9178:366::-;9320:3;9341:67;9405:2;9400:3;9341:67;:::i;:::-;9334:74;;9417:93;9506:3;9417:93;:::i;:::-;9535:2;9530:3;9526:12;9519:19;;9324:220;;;:::o;9550:118::-;9637:24;9655:5;9637:24;:::i;:::-;9632:3;9625:37;9615:53;;:::o;9674:112::-;9757:22;9773:5;9757:22;:::i;:::-;9752:3;9745:35;9735:51;;:::o;9792:222::-;9885:4;9923:2;9912:9;9908:18;9900:26;;9936:71;10004:1;9993:9;9989:17;9980:6;9936:71;:::i;:::-;9890:124;;;;:::o;10020:210::-;10107:4;10145:2;10134:9;10130:18;10122:26;;10158:65;10220:1;10209:9;10205:17;10196:6;10158:65;:::i;:::-;10112:118;;;;:::o;10236:222::-;10329:4;10367:2;10356:9;10352:18;10344:26;;10380:71;10448:1;10437:9;10433:17;10424:6;10380:71;:::i;:::-;10334:124;;;;:::o;10464:218::-;10555:4;10593:2;10582:9;10578:18;10570:26;;10606:69;10672:1;10661:9;10657:17;10648:6;10606:69;:::i;:::-;10560:122;;;;:::o;10688:313::-;10801:4;10839:2;10828:9;10824:18;10816:26;;10888:9;10882:4;10878:20;10874:1;10863:9;10859:17;10852:47;10916:78;10989:4;10980:6;10916:78;:::i;:::-;10908:86;;10806:195;;;;:::o;11007:419::-;11173:4;11211:2;11200:9;11196:18;11188:26;;11260:9;11254:4;11250:20;11246:1;11235:9;11231:17;11224:47;11288:131;11414:4;11288:131;:::i;:::-;11280:139;;11178:248;;;:::o;11432:419::-;11598:4;11636:2;11625:9;11621:18;11613:26;;11685:9;11679:4;11675:20;11671:1;11660:9;11656:17;11649:47;11713:131;11839:4;11713:131;:::i;:::-;11705:139;;11603:248;;;:::o;11857:419::-;12023:4;12061:2;12050:9;12046:18;12038:26;;12110:9;12104:4;12100:20;12096:1;12085:9;12081:17;12074:47;12138:131;12264:4;12138:131;:::i;:::-;12130:139;;12028:248;;;:::o;12282:419::-;12448:4;12486:2;12475:9;12471:18;12463:26;;12535:9;12529:4;12525:20;12521:1;12510:9;12506:17;12499:47;12563:131;12689:4;12563:131;:::i;:::-;12555:139;;12453:248;;;:::o;12707:419::-;12873:4;12911:2;12900:9;12896:18;12888:26;;12960:9;12954:4;12950:20;12946:1;12935:9;12931:17;12924:47;12988:131;13114:4;12988:131;:::i;:::-;12980:139;;12878:248;;;:::o;13132:419::-;13298:4;13336:2;13325:9;13321:18;13313:26;;13385:9;13379:4;13375:20;13371:1;13360:9;13356:17;13349:47;13413:131;13539:4;13413:131;:::i;:::-;13405:139;;13303:248;;;:::o;13557:419::-;13723:4;13761:2;13750:9;13746:18;13738:26;;13810:9;13804:4;13800:20;13796:1;13785:9;13781:17;13774:47;13838:131;13964:4;13838:131;:::i;:::-;13830:139;;13728:248;;;:::o;13982:419::-;14148:4;14186:2;14175:9;14171:18;14163:26;;14235:9;14229:4;14225:20;14221:1;14210:9;14206:17;14199:47;14263:131;14389:4;14263:131;:::i;:::-;14255:139;;14153:248;;;:::o;14407:419::-;14573:4;14611:2;14600:9;14596:18;14588:26;;14660:9;14654:4;14650:20;14646:1;14635:9;14631:17;14624:47;14688:131;14814:4;14688:131;:::i;:::-;14680:139;;14578:248;;;:::o;14832:419::-;14998:4;15036:2;15025:9;15021:18;15013:26;;15085:9;15079:4;15075:20;15071:1;15060:9;15056:17;15049:47;15113:131;15239:4;15113:131;:::i;:::-;15105:139;;15003:248;;;:::o;15257:419::-;15423:4;15461:2;15450:9;15446:18;15438:26;;15510:9;15504:4;15500:20;15496:1;15485:9;15481:17;15474:47;15538:131;15664:4;15538:131;:::i;:::-;15530:139;;15428:248;;;:::o;15682:419::-;15848:4;15886:2;15875:9;15871:18;15863:26;;15935:9;15929:4;15925:20;15921:1;15910:9;15906:17;15899:47;15963:131;16089:4;15963:131;:::i;:::-;15955:139;;15853:248;;;:::o;16107:419::-;16273:4;16311:2;16300:9;16296:18;16288:26;;16360:9;16354:4;16350:20;16346:1;16335:9;16331:17;16324:47;16388:131;16514:4;16388:131;:::i;:::-;16380:139;;16278:248;;;:::o;16532:222::-;16625:4;16663:2;16652:9;16648:18;16640:26;;16676:71;16744:1;16733:9;16729:17;16720:6;16676:71;:::i;:::-;16630:124;;;;:::o;16760:214::-;16849:4;16887:2;16876:9;16872:18;16864:26;;16900:67;16964:1;16953:9;16949:17;16940:6;16900:67;:::i;:::-;16854:120;;;;:::o;16980:99::-;17032:6;17066:5;17060:12;17050:22;;17039:40;;;:::o;17085:169::-;17169:11;17203:6;17198:3;17191:19;17243:4;17238:3;17234:14;17219:29;;17181:73;;;;:::o;17260:305::-;17300:3;17319:20;17337:1;17319:20;:::i;:::-;17314:25;;17353:20;17371:1;17353:20;:::i;:::-;17348:25;;17507:1;17439:66;17435:74;17432:1;17429:81;17426:2;;;17513:18;;:::i;:::-;17426:2;17557:1;17554;17550:9;17543:16;;17304:261;;;;:::o;17571:191::-;17611:4;17631:20;17649:1;17631:20;:::i;:::-;17626:25;;17665:20;17683:1;17665:20;:::i;:::-;17660:25;;17704:1;17701;17698:8;17695:2;;;17709:18;;:::i;:::-;17695:2;17754:1;17751;17747:9;17739:17;;17616:146;;;;:::o;17768:96::-;17805:7;17834:24;17852:5;17834:24;:::i;:::-;17823:35;;17813:51;;;:::o;17870:90::-;17904:7;17947:5;17940:13;17933:21;17922:32;;17912:48;;;:::o;17966:77::-;18003:7;18032:5;18021:16;;18011:32;;;:::o;18049:149::-;18085:7;18125:66;18118:5;18114:78;18103:89;;18093:105;;;:::o;18204:126::-;18241:7;18281:42;18274:5;18270:54;18259:65;;18249:81;;;:::o;18336:77::-;18373:7;18402:5;18391:16;;18381:32;;;:::o;18419:86::-;18454:7;18494:4;18487:5;18483:16;18472:27;;18462:43;;;:::o;18511:307::-;18579:1;18589:113;18603:6;18600:1;18597:13;18589:113;;;18688:1;18683:3;18679:11;18673:18;18669:1;18664:3;18660:11;18653:39;18625:2;18622:1;18618:10;18613:15;;18589:113;;;18720:6;18717:1;18714:13;18711:2;;;18800:1;18791:6;18786:3;18782:16;18775:27;18711:2;18560:258;;;;:::o;18824:320::-;18868:6;18905:1;18899:4;18895:12;18885:22;;18952:1;18946:4;18942:12;18973:18;18963:2;;19029:4;19021:6;19017:17;19007:27;;18963:2;19091;19083:6;19080:14;19060:18;19057:38;19054:2;;;19110:18;;:::i;:::-;19054:2;18875:269;;;;:::o;19150:180::-;19198:77;19195:1;19188:88;19295:4;19292:1;19285:15;19319:4;19316:1;19309:15;19336:180;19384:77;19381:1;19374:88;19481:4;19478:1;19471:15;19505:4;19502:1;19495:15;19522:102;19563:6;19614:2;19610:7;19605:2;19598:5;19594:14;19590:28;19580:38;;19570:54;;;:::o;19630:222::-;19770:34;19766:1;19758:6;19754:14;19747:58;19839:5;19834:2;19826:6;19822:15;19815:30;19736:116;:::o;19858:221::-;19998:34;19994:1;19986:6;19982:14;19975:58;20067:4;20062:2;20054:6;20050:15;20043:29;19964:115;:::o;20085:221::-;20225:34;20221:1;20213:6;20209:14;20202:58;20294:4;20289:2;20281:6;20277:15;20270:29;20191:115;:::o;20312:225::-;20452:34;20448:1;20440:6;20436:14;20429:58;20521:8;20516:2;20508:6;20504:15;20497:33;20418:119;:::o;20543:179::-;20683:31;20679:1;20671:6;20667:14;20660:55;20649:73;:::o;20728:167::-;20868:19;20864:1;20856:6;20852:14;20845:43;20834:61;:::o;20901:227::-;21041:34;21037:1;21029:6;21025:14;21018:58;21110:10;21105:2;21097:6;21093:15;21086:35;21007:121;:::o;21134:220::-;21274:34;21270:1;21262:6;21258:14;21251:58;21343:3;21338:2;21330:6;21326:15;21319:28;21240:114;:::o;21360:224::-;21500:34;21496:1;21488:6;21484:14;21477:58;21569:7;21564:2;21556:6;21552:15;21545:32;21466:118;:::o;21590:223::-;21730:34;21726:1;21718:6;21714:14;21707:58;21799:6;21794:2;21786:6;21782:15;21775:31;21696:117;:::o;21819:169::-;21959:21;21955:1;21947:6;21943:14;21936:45;21925:63;:::o;21994:224::-;22134:34;22130:1;22122:6;22118:14;22111:58;22203:7;22198:2;22190:6;22186:15;22179:32;22100:118;:::o;22224:181::-;22364:33;22360:1;22352:6;22348:14;22341:57;22330:75;:::o;22411:122::-;22484:24;22502:5;22484:24;:::i;:::-;22477:5;22474:35;22464:2;;22523:1;22520;22513:12;22464:2;22454:79;:::o;22539:122::-;22612:24;22630:5;22612:24;:::i;:::-;22605:5;22602:35;22592:2;;22651:1;22648;22641:12;22592:2;22582:79;:::o;22667:120::-;22739:23;22756:5;22739:23;:::i;:::-;22732:5;22729:34;22719:2;;22777:1;22774;22767:12;22719:2;22709:78;:::o;22793:122::-;22866:24;22884:5;22866:24;:::i;:::-;22859:5;22856:35;22846:2;;22905:1;22902;22895:12;22846:2;22836:79;:::o;22921:118::-;22992:22;23008:5;22992:22;:::i;:::-;22985:5;22982:33;22972:2;;23029:1;23026;23019:12;22972:2;22962:77;:::o

Swarm Source

ipfs://caf64a583e7d4c544fa25bd7331b25eaef2ca8b0201fcb12072206a4435776d1
Loading