Source Code
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
Cross-Chain Transactions
Loading...
Loading
Contract Name:
FrontHelper
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/**
*Submitted for verification at fraxscan.com on 2024-11-15
*/
// Sources flattened with hardhat v2.22.6 https://hardhat.org
// SPDX-License-Identifier: UNLICENSED
// File contracts/utils/FrontHelper.sol
// Original license: SPDX_License_Identifier: UNLICENSED
// Copyright (c) Eywa.Fi, 2021-2023 - all rights reserved
pragma solidity 0.8.17;
interface IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
}
interface IERC20Permit {
function PERMIT_TYPEHASH() external view returns (bytes32);
function DOMAIN_SEPARATOR() external view returns (bytes32);
}
interface ISynthesis {
function getRepresentation(address _rtoken) external view returns (address);
}
interface IPancakePair {
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves()
external
view
returns (
uint112 reserve0,
uint112 reserve1,
uint32 blockTimestampLast
);
function factory() external view returns (address);
}
contract FrontHelper {
struct TokenInfo {
string name;
string symbol;
uint8 decimals;
uint256 totalSupply;
uint256 balance;
bool permit;
}
struct LpInfo {
address lp;
address token0;
address token1;
}
struct PoolInfo {
address token0;
address token1;
uint112 reserve0;
uint112 reserve1;
}
struct PoolsInfo {
TokenInfo token0;
TokenInfo token1;
TokenInfo pair;
PoolInfo pool;
}
struct Call {
address target;
bytes callData;
}
function aggregate(Call[] memory calls) public returns (uint256 blockNumber, bytes[] memory returnData) {
blockNumber = block.number;
returnData = new bytes[](calls.length);
for (uint256 i = 0; i < calls.length; i++) {
(bool success, bytes memory ret) = calls[i].target.call(calls[i].callData);
require(success);
returnData[i] = ret;
}
}
function balances(address target, address[] calldata tokens) external view returns (uint256[] memory) {
uint256 numberOfTokens = tokens.length;
uint256[] memory _balances = new uint256[](numberOfTokens);
for (uint256 i = 0; i < numberOfTokens; i++) {
_balances[i] = IERC20(tokens[i]).balanceOf(target);
}
return _balances;
}
function tokenInfo(address target, IERC20 token) public view returns (TokenInfo memory) {
bool permit;
(permit, ) = address(token).staticcall(abi.encodeWithSelector(IERC20Permit.PERMIT_TYPEHASH.selector));
if(!permit) {
(permit, ) = address(token).staticcall(abi.encodeWithSelector(IERC20Permit.DOMAIN_SEPARATOR.selector));
}
return
TokenInfo({
name: token.name(),
symbol: token.symbol(),
decimals: token.decimals(),
totalSupply: token.totalSupply(),
balance: token.balanceOf(target),
permit: permit
});
}
function tokenInfoWithoutPermit(address target, IERC20 token) public view returns (TokenInfo memory) {
return
TokenInfo({
name: token.name(),
symbol: token.symbol(),
decimals: token.decimals(),
totalSupply: token.totalSupply(),
balance: token.balanceOf(target),
permit: false
});
}
function tokensInfo(address target, address[] calldata tokens) external view returns (TokenInfo[] memory) {
uint256 numberOfTokens = tokens.length;
TokenInfo[] memory _tokensInfo = new TokenInfo[](numberOfTokens);
for (uint256 i = 0; i < numberOfTokens; i++) {
_tokensInfo[i] = tokenInfo(target, IERC20(tokens[i]));
}
return _tokensInfo;
}
function lpTokensInfo(address[] calldata _pairs) external view returns (LpInfo[] memory) {
uint256 numberOfPairs = _pairs.length;
LpInfo[] memory lpInfo = new LpInfo[](numberOfPairs);
for (uint256 i = 0; i < numberOfPairs; i++) {
if (isContract(_pairs[i])) {
(bool success, ) = _pairs[i].staticcall(abi.encodeWithSelector(IPancakePair.factory.selector));
if (success) {
lpInfo[i] = LpInfo({
lp: _pairs[i],
token0: IPancakePair(_pairs[i]).token0(),
token1: IPancakePair(_pairs[i]).token1()
});
}
}
}
return lpInfo;
}
function lpPairExistance(address[] calldata _pairs) external view returns (address[] memory) {
uint256 numberOfPairs = _pairs.length;
address[] memory existPair = new address[](numberOfPairs);
for (uint256 i = 0; i < numberOfPairs; i++) {
if (isContract(_pairs[i])) {
(bool success, ) = _pairs[i].staticcall(abi.encodeWithSelector(IPancakePair.factory.selector));
if (success) {
existPair[i] = _pairs[i];
}
}
}
return existPair;
}
function poolsInfo(address target, address[] memory pairAddress) public view returns (PoolsInfo[] memory) {
PoolsInfo[] memory pools = new PoolsInfo[](pairAddress.length);
for (uint256 i = 0; i < pairAddress.length; i++) {
require(isContract(pairAddress[i]), "non contract call");
(bool success, ) = pairAddress[i].staticcall(abi.encodeWithSelector(IPancakePair.factory.selector));
require(success, "failed to identify the origin of the pool");
IPancakePair pancakePair = IPancakePair(pairAddress[i]);
(uint112 reserve0, uint112 reserve1, ) = pancakePair.getReserves();
address token0Address = pancakePair.token0();
address token1Address = pancakePair.token1();
pools[i].pair = tokenInfoWithoutPermit(target, IERC20(pairAddress[i]));
pools[i].token0 = tokenInfoWithoutPermit(target, IERC20(token0Address));
pools[i].token1 = tokenInfoWithoutPermit(target, IERC20(token1Address));
pools[i].pool = PoolInfo({
token0: token0Address,
token1: token1Address,
reserve0: reserve0,
reserve1: reserve1
});
}
return pools;
}
function poolInfo(address target, address pairAddress)
public
view
returns (
TokenInfo memory token0,
TokenInfo memory token1,
TokenInfo memory pair,
PoolInfo memory pool
)
{
require(isContract(pairAddress), "non contract call");
(bool success, ) = pairAddress.staticcall(abi.encodeWithSelector(IPancakePair.factory.selector));
require(success, "failed to identify the origin of the pool");
IPancakePair pancakePair = IPancakePair(pairAddress);
(uint112 reserve0, uint112 reserve1, ) = pancakePair.getReserves();
address token0Address = pancakePair.token0();
address token1Address = pancakePair.token1();
pair = tokenInfo(target, IERC20(pairAddress));
token0 = tokenInfo(target, IERC20(token0Address));
token1 = tokenInfo(target, IERC20(token1Address));
pool = PoolInfo({ token0: token0Address, token1: token1Address, reserve0: reserve0, reserve1: reserve1 });
}
function isContract(address _addr) private view returns (bool) {
uint32 size;
assembly {
size := extcodesize(_addr)
}
return (size > 0);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"internalType":"struct FrontHelper.Call[]","name":"calls","type":"tuple[]"}],"name":"aggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes[]","name":"returnData","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"balances","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_pairs","type":"address[]"}],"name":"lpPairExistance","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_pairs","type":"address[]"}],"name":"lpTokensInfo","outputs":[{"components":[{"internalType":"address","name":"lp","type":"address"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"internalType":"struct FrontHelper.LpInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"pairAddress","type":"address"}],"name":"poolInfo","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"bool","name":"permit","type":"bool"}],"internalType":"struct FrontHelper.TokenInfo","name":"token0","type":"tuple"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"bool","name":"permit","type":"bool"}],"internalType":"struct FrontHelper.TokenInfo","name":"token1","type":"tuple"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"bool","name":"permit","type":"bool"}],"internalType":"struct FrontHelper.TokenInfo","name":"pair","type":"tuple"},{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint112","name":"reserve0","type":"uint112"},{"internalType":"uint112","name":"reserve1","type":"uint112"}],"internalType":"struct FrontHelper.PoolInfo","name":"pool","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address[]","name":"pairAddress","type":"address[]"}],"name":"poolsInfo","outputs":[{"components":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"bool","name":"permit","type":"bool"}],"internalType":"struct FrontHelper.TokenInfo","name":"token0","type":"tuple"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"bool","name":"permit","type":"bool"}],"internalType":"struct FrontHelper.TokenInfo","name":"token1","type":"tuple"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"bool","name":"permit","type":"bool"}],"internalType":"struct FrontHelper.TokenInfo","name":"pair","type":"tuple"},{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint112","name":"reserve0","type":"uint112"},{"internalType":"uint112","name":"reserve1","type":"uint112"}],"internalType":"struct FrontHelper.PoolInfo","name":"pool","type":"tuple"}],"internalType":"struct FrontHelper.PoolsInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"tokenInfo","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"bool","name":"permit","type":"bool"}],"internalType":"struct FrontHelper.TokenInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"tokenInfoWithoutPermit","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"bool","name":"permit","type":"bool"}],"internalType":"struct FrontHelper.TokenInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"tokensInfo","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"bool","name":"permit","type":"bool"}],"internalType":"struct FrontHelper.TokenInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b50612032806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806393b2cfd81161006657806393b2cfd81461012257806399c516f714610142578063a6de462814610162578063d3e5ca8714610175578063e1b7cebd1461019557600080fd5b806304726bd814610098578063252dba42146100c157806350e284fd146100e257806358f594a814610102575b600080fd5b6100ab6100a63660046116b1565b6101b8565b6040516100b891906116f2565b60405180910390f35b6100d46100cf36600461180f565b610372565b6040516100b892919061199a565b6100f56100f0366004611a04565b6104b1565b6040516100b89190611ac0565b610115610110366004611b22565b61057a565b6040516100b89190611c10565b6101356101303660046116b1565b61097e565b6040516100b89190611cc6565b610155610150366004611d2e565b610c5e565b6040516100b89190611d67565b610155610170366004611d2e565b610e96565b610188610183366004611a04565b6111e2565b6040516100b89190611d81565b6101a86101a3366004611d2e565b6112f8565b6040516100b89493929190611db9565b6060816000816001600160401b038111156101d5576101d561173f565b6040519080825280602002602001820160405280156101fe578160200160208202803683370190505b50905060005b828110156103695761024286868381811061022157610221611e0b565b90506020020160208101906102369190611e21565b3b63ffffffff16151590565b1561035757600086868381811061025b5761025b611e0b565b90506020020160208101906102709190611e21565b60408051600481526024810182526020810180516001600160e01b031663c45a015560e01b17905290516001600160a01b0392909216916102b19190611e3e565b600060405180830381855afa9150503d80600081146102ec576040519150601f19603f3d011682016040523d82523d6000602084013e6102f1565b606091505b5050905080156103555786868381811061030d5761030d611e0b565b90506020020160208101906103229190611e21565b83838151811061033457610334611e0b565b60200260200101906001600160a01b031690816001600160a01b0316815250505b505b8061036181611e5a565b915050610204565b50949350505050565b805143906060906001600160401b038111156103905761039061173f565b6040519080825280602002602001820160405280156103c357816020015b60608152602001906001900390816103ae5790505b50905060005b83518110156104ab576000808583815181106103e7576103e7611e0b565b6020026020010151600001516001600160a01b031686848151811061040e5761040e611e0b565b6020026020010151602001516040516104279190611e3e565b6000604051808303816000865af19150503d8060008114610464576040519150601f19603f3d011682016040523d82523d6000602084013e610469565b606091505b50915091508161047857600080fd5b8084848151811061048b5761048b611e0b565b6020026020010181905250505080806104a390611e5a565b9150506103c9565b50915091565b6060816000816001600160401b038111156104ce576104ce61173f565b60405190808252806020026020018201604052801561050757816020015b6104f46115d4565b8152602001906001900390816104ec5790505b50905060005b82811015610570576105408787878481811061052b5761052b611e0b565b90506020020160208101906101709190611e21565b82828151811061055257610552611e0b565b6020026020010181905250808061056890611e5a565b91505061050d565b5095945050505050565b6060600082516001600160401b038111156105975761059761173f565b6040519080825280602002602001820160405280156105d057816020015b6105bd61160f565b8152602001906001900390816105b55790505b50905060005b8351811015610976576106098482815181106105f4576105f4611e0b565b602002602001015163ffffffff903b16151590565b61064e5760405162461bcd60e51b81526020600482015260116024820152701b9bdb8818dbdb9d1c9858dd0818d85b1b607a1b60448201526064015b60405180910390fd5b600084828151811061066257610662611e0b565b602090810291909101810151604080516004815260248101825292830180516001600160e01b031663c45a015560e01b179052516001600160a01b03909116916106ab91611e3e565b600060405180830381855afa9150503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b505090508061070c5760405162461bcd60e51b815260040161064590611e81565b600085838151811061072057610720611e0b565b60200260200101519050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561076b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078f9190611ee6565b50915091506000836001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f89190611f36565b90506000846001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085e9190611f36565b90506108838b8b898151811061087657610876611e0b565b6020026020010151610c5e565b88888151811061089557610895611e0b565b6020026020010151604001819052506108ae8b83610c5e565b8888815181106108c0576108c0611e0b565b6020908102919091010151526108d68b82610c5e565b8888815181106108e8576108e8611e0b565b6020026020010151602001819052506040518060800160405280836001600160a01b03168152602001826001600160a01b03168152602001856001600160701b03168152602001846001600160701b031681525088888151811061094e5761094e611e0b565b602002602001015160600181905250505050505050808061096e90611e5a565b9150506105d6565b509392505050565b6060816000816001600160401b0381111561099b5761099b61173f565b6040519080825280602002602001820160405280156109e657816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816109b95790505b50905060005b8281101561036957610a0986868381811061022157610221611e0b565b15610c4c576000868683818110610a2257610a22611e0b565b9050602002016020810190610a379190611e21565b60408051600481526024810182526020810180516001600160e01b031663c45a015560e01b17905290516001600160a01b039290921691610a789190611e3e565b600060405180830381855afa9150503d8060008114610ab3576040519150601f19603f3d011682016040523d82523d6000602084013e610ab8565b606091505b505090508015610c4a576040518060600160405280888885818110610adf57610adf611e0b565b9050602002016020810190610af49190611e21565b6001600160a01b03168152602001888885818110610b1457610b14611e0b565b9050602002016020810190610b299190611e21565b6001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8a9190611f36565b6001600160a01b03168152602001888885818110610baa57610baa611e0b565b9050602002016020810190610bbf9190611e21565b6001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c209190611f36565b6001600160a01b0316815250838381518110610c3e57610c3e611e0b565b60200260200101819052505b505b80610c5681611e5a565b9150506109ec565b610c666115d4565b6040518060c00160405280836001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610caf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cd79190810190611f53565b8152602001836001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610d1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d429190810190611f53565b8152602001836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da99190611fc0565b60ff168152602001836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610def573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e139190611fe3565b81526040516370a0823160e01b81526001600160a01b0386811660048301526020909201918516906370a0823190602401602060405180830381865afa158015610e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e859190611fe3565b815260006020909101529392505050565b610e9e6115d4565b60408051600481526024810182526020810180516001600160e01b03166330adf81f60e01b17905290516000916001600160a01b03851691610ee09190611e3e565b600060405180830381855afa9150503d8060008114610f1b576040519150601f19603f3d011682016040523d82523d6000602084013e610f20565b606091505b50508091505080610faf5760408051600481526024810182526020810180516001600160e01b0316633644e51560e01b17905290516001600160a01b03851691610f6991611e3e565b600060405180830381855afa9150503d8060008114610fa4576040519150601f19603f3d011682016040523d82523d6000602084013e610fa9565b606091505b50909150505b6040518060c00160405280846001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ff8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110209190810190611f53565b8152602001846001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015611063573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261108b9190810190611f53565b8152602001846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f29190611fc0565b60ff168152602001846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115c9190611fe3565b81526040516370a0823160e01b81526001600160a01b0387811660048301526020909201918616906370a0823190602401602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611fe3565b815260200182151581525091505092915050565b6060816000816001600160401b038111156111ff576111ff61173f565b604051908082528060200260200182016040528015611228578160200160208202803683370190505b50905060005b828110156105705785858281811061124857611248611e0b565b905060200201602081019061125d9190611e21565b6040516370a0823160e01b81526001600160a01b03898116600483015291909116906370a0823190602401602060405180830381865afa1580156112a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c99190611fe3565b8282815181106112db576112db611e0b565b6020908102919091010152806112f081611e5a565b91505061122e565b6113006115d4565b6113086115d4565b6113106115d4565b604080516080810182526000808252602082018190529181018290526060810191909152843b63ffffffff1661137c5760405162461bcd60e51b81526020600482015260116024820152701b9bdb8818dbdb9d1c9858dd0818d85b1b607a1b6044820152606401610645565b60408051600481526024810182526020810180516001600160e01b031663c45a015560e01b17905290516000916001600160a01b038816916113be9190611e3e565b600060405180830381855afa9150503d80600081146113f9576040519150601f19603f3d011682016040523d82523d6000602084013e6113fe565b606091505b505090508061141f5760405162461bcd60e51b815260040161064590611e81565b6000869050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611465573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114899190611ee6565b50915091506000836001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f29190611f36565b90506000846001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115589190611f36565b90506115648c8c610e96565b97506115708c83610e96565b995061157c8c82610e96565b98506040518060800160405280836001600160a01b03168152602001826001600160a01b03168152602001856001600160701b03168152602001846001600160701b0316815250965050505050505092959194509250565b6040518060c001604052806060815260200160608152602001600060ff16815260200160008152602001600081526020016000151581525090565b60405180608001604052806116226115d4565b815260200161162f6115d4565b815260200161163c6115d4565b81526040805160808101825260008082526020828101829052928201819052606082015291015290565b60008083601f84011261167857600080fd5b5081356001600160401b0381111561168f57600080fd5b6020830191508360208260051b85010111156116aa57600080fd5b9250929050565b600080602083850312156116c457600080fd5b82356001600160401b038111156116da57600080fd5b6116e685828601611666565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156117335783516001600160a01b03168352928401929184019160010161170e565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156117775761177761173f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156117a5576117a561173f565b604052919050565b60006001600160401b038211156117c6576117c661173f565b5060051b60200190565b6001600160a01b03811681146117e557600080fd5b50565b60006001600160401b038211156118015761180161173f565b50601f01601f191660200190565b6000602080838503121561182257600080fd5b82356001600160401b038082111561183957600080fd5b818501915085601f83011261184d57600080fd5b813561186061185b826117ad565b61177d565b81815260059190911b8301840190848101908883111561187f57600080fd5b8585015b8381101561193d5780358581111561189b5760008081fd5b86016040818c03601f19018113156118b35760008081fd5b6118bb611755565b898301356118c8816117d0565b815282820135888111156118dc5760008081fd5b8084019350508c603f8401126118f25760008081fd5b8983013561190261185b826117e8565b8181528e848387010111156119175760008081fd5b818486018d83013760009181018c0191909152818b015285525050918601918601611883565b5098975050505050505050565b60005b8381101561196557818101518382015260200161194d565b50506000910152565b6000815180845261198681602086016020860161194a565b601f01601f19169290920160200192915050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b828110156119f657605f198887030184526119e486835161196e565b955092840192908401906001016119c8565b509398975050505050505050565b600080600060408486031215611a1957600080fd5b8335611a24816117d0565b925060208401356001600160401b03811115611a3f57600080fd5b611a4b86828701611666565b9497909650939450505050565b6000815160c08452611a6d60c085018261196e565b905060208301518482036020860152611a86828261196e565b91505060ff6040840151166040850152606083015160608501526080830151608085015260a0830151151560a08501528091505092915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611b1557603f19888603018452611b03858351611a58565b94509285019290850190600101611ae7565b5092979650505050505050565b60008060408385031215611b3557600080fd5b8235611b40816117d0565b91506020838101356001600160401b03811115611b5c57600080fd5b8401601f81018613611b6d57600080fd5b8035611b7b61185b826117ad565b81815260059190911b82018301908381019088831115611b9a57600080fd5b928401925b82841015611bc1578335611bb2816117d0565b82529284019290840190611b9f565b80955050505050509250929050565b80516001600160a01b039081168352602080830151909116908301526040808201516001600160701b039081169184019190915260609182015116910152565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015611cb857603f19898403018552815160e08151818652611c5d82870182611a58565b915050888201518582038a870152611c758282611a58565b9150508782015185820389870152611c8d8282611a58565b9150506060808301519250611ca481870184611bd0565b509588019593505090860190600101611c37565b509098975050505050505050565b602080825282518282018190526000919060409081850190868401855b82811015611d2157815180516001600160a01b0390811686528782015181168887015290860151168585015260609093019290850190600101611ce3565b5091979650505050505050565b60008060408385031215611d4157600080fd5b8235611d4c816117d0565b91506020830135611d5c816117d0565b809150509250929050565b602081526000611d7a6020830184611a58565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101561173357835183529284019291840191600101611d9d565b60e081526000611dcc60e0830187611a58565b8281036020840152611dde8187611a58565b90508281036040840152611df28186611a58565b915050611e026060830184611bd0565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611e3357600080fd5b8135611d7a816117d0565b60008251611e5081846020870161194a565b9190910192915050565b600060018201611e7a57634e487b7160e01b600052601160045260246000fd5b5060010190565b60208082526029908201527f6661696c656420746f206964656e7469667920746865206f726967696e206f66604082015268081d1a19481c1bdbdb60ba1b606082015260800190565b80516001600160701b0381168114611ee157600080fd5b919050565b600080600060608486031215611efb57600080fd5b611f0484611eca565b9250611f1260208501611eca565b9150604084015163ffffffff81168114611f2b57600080fd5b809150509250925092565b600060208284031215611f4857600080fd5b8151611d7a816117d0565b600060208284031215611f6557600080fd5b81516001600160401b03811115611f7b57600080fd5b8201601f81018413611f8c57600080fd5b8051611f9a61185b826117e8565b818152856020838501011115611faf57600080fd5b611e0282602083016020860161194a565b600060208284031215611fd257600080fd5b815160ff81168114611d7a57600080fd5b600060208284031215611ff557600080fd5b505191905056fea2646970667358221220a290764e496d1ef53fb0d2df445e93333f43167ffc7e38d419eb851ba21b796164736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100935760003560e01c806393b2cfd81161006657806393b2cfd81461012257806399c516f714610142578063a6de462814610162578063d3e5ca8714610175578063e1b7cebd1461019557600080fd5b806304726bd814610098578063252dba42146100c157806350e284fd146100e257806358f594a814610102575b600080fd5b6100ab6100a63660046116b1565b6101b8565b6040516100b891906116f2565b60405180910390f35b6100d46100cf36600461180f565b610372565b6040516100b892919061199a565b6100f56100f0366004611a04565b6104b1565b6040516100b89190611ac0565b610115610110366004611b22565b61057a565b6040516100b89190611c10565b6101356101303660046116b1565b61097e565b6040516100b89190611cc6565b610155610150366004611d2e565b610c5e565b6040516100b89190611d67565b610155610170366004611d2e565b610e96565b610188610183366004611a04565b6111e2565b6040516100b89190611d81565b6101a86101a3366004611d2e565b6112f8565b6040516100b89493929190611db9565b6060816000816001600160401b038111156101d5576101d561173f565b6040519080825280602002602001820160405280156101fe578160200160208202803683370190505b50905060005b828110156103695761024286868381811061022157610221611e0b565b90506020020160208101906102369190611e21565b3b63ffffffff16151590565b1561035757600086868381811061025b5761025b611e0b565b90506020020160208101906102709190611e21565b60408051600481526024810182526020810180516001600160e01b031663c45a015560e01b17905290516001600160a01b0392909216916102b19190611e3e565b600060405180830381855afa9150503d80600081146102ec576040519150601f19603f3d011682016040523d82523d6000602084013e6102f1565b606091505b5050905080156103555786868381811061030d5761030d611e0b565b90506020020160208101906103229190611e21565b83838151811061033457610334611e0b565b60200260200101906001600160a01b031690816001600160a01b0316815250505b505b8061036181611e5a565b915050610204565b50949350505050565b805143906060906001600160401b038111156103905761039061173f565b6040519080825280602002602001820160405280156103c357816020015b60608152602001906001900390816103ae5790505b50905060005b83518110156104ab576000808583815181106103e7576103e7611e0b565b6020026020010151600001516001600160a01b031686848151811061040e5761040e611e0b565b6020026020010151602001516040516104279190611e3e565b6000604051808303816000865af19150503d8060008114610464576040519150601f19603f3d011682016040523d82523d6000602084013e610469565b606091505b50915091508161047857600080fd5b8084848151811061048b5761048b611e0b565b6020026020010181905250505080806104a390611e5a565b9150506103c9565b50915091565b6060816000816001600160401b038111156104ce576104ce61173f565b60405190808252806020026020018201604052801561050757816020015b6104f46115d4565b8152602001906001900390816104ec5790505b50905060005b82811015610570576105408787878481811061052b5761052b611e0b565b90506020020160208101906101709190611e21565b82828151811061055257610552611e0b565b6020026020010181905250808061056890611e5a565b91505061050d565b5095945050505050565b6060600082516001600160401b038111156105975761059761173f565b6040519080825280602002602001820160405280156105d057816020015b6105bd61160f565b8152602001906001900390816105b55790505b50905060005b8351811015610976576106098482815181106105f4576105f4611e0b565b602002602001015163ffffffff903b16151590565b61064e5760405162461bcd60e51b81526020600482015260116024820152701b9bdb8818dbdb9d1c9858dd0818d85b1b607a1b60448201526064015b60405180910390fd5b600084828151811061066257610662611e0b565b602090810291909101810151604080516004815260248101825292830180516001600160e01b031663c45a015560e01b179052516001600160a01b03909116916106ab91611e3e565b600060405180830381855afa9150503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b505090508061070c5760405162461bcd60e51b815260040161064590611e81565b600085838151811061072057610720611e0b565b60200260200101519050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561076b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078f9190611ee6565b50915091506000836001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f89190611f36565b90506000846001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085e9190611f36565b90506108838b8b898151811061087657610876611e0b565b6020026020010151610c5e565b88888151811061089557610895611e0b565b6020026020010151604001819052506108ae8b83610c5e565b8888815181106108c0576108c0611e0b565b6020908102919091010151526108d68b82610c5e565b8888815181106108e8576108e8611e0b565b6020026020010151602001819052506040518060800160405280836001600160a01b03168152602001826001600160a01b03168152602001856001600160701b03168152602001846001600160701b031681525088888151811061094e5761094e611e0b565b602002602001015160600181905250505050505050808061096e90611e5a565b9150506105d6565b509392505050565b6060816000816001600160401b0381111561099b5761099b61173f565b6040519080825280602002602001820160405280156109e657816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816109b95790505b50905060005b8281101561036957610a0986868381811061022157610221611e0b565b15610c4c576000868683818110610a2257610a22611e0b565b9050602002016020810190610a379190611e21565b60408051600481526024810182526020810180516001600160e01b031663c45a015560e01b17905290516001600160a01b039290921691610a789190611e3e565b600060405180830381855afa9150503d8060008114610ab3576040519150601f19603f3d011682016040523d82523d6000602084013e610ab8565b606091505b505090508015610c4a576040518060600160405280888885818110610adf57610adf611e0b565b9050602002016020810190610af49190611e21565b6001600160a01b03168152602001888885818110610b1457610b14611e0b565b9050602002016020810190610b299190611e21565b6001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8a9190611f36565b6001600160a01b03168152602001888885818110610baa57610baa611e0b565b9050602002016020810190610bbf9190611e21565b6001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c209190611f36565b6001600160a01b0316815250838381518110610c3e57610c3e611e0b565b60200260200101819052505b505b80610c5681611e5a565b9150506109ec565b610c666115d4565b6040518060c00160405280836001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610caf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cd79190810190611f53565b8152602001836001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610d1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d429190810190611f53565b8152602001836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da99190611fc0565b60ff168152602001836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610def573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e139190611fe3565b81526040516370a0823160e01b81526001600160a01b0386811660048301526020909201918516906370a0823190602401602060405180830381865afa158015610e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e859190611fe3565b815260006020909101529392505050565b610e9e6115d4565b60408051600481526024810182526020810180516001600160e01b03166330adf81f60e01b17905290516000916001600160a01b03851691610ee09190611e3e565b600060405180830381855afa9150503d8060008114610f1b576040519150601f19603f3d011682016040523d82523d6000602084013e610f20565b606091505b50508091505080610faf5760408051600481526024810182526020810180516001600160e01b0316633644e51560e01b17905290516001600160a01b03851691610f6991611e3e565b600060405180830381855afa9150503d8060008114610fa4576040519150601f19603f3d011682016040523d82523d6000602084013e610fa9565b606091505b50909150505b6040518060c00160405280846001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ff8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110209190810190611f53565b8152602001846001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015611063573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261108b9190810190611f53565b8152602001846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f29190611fc0565b60ff168152602001846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115c9190611fe3565b81526040516370a0823160e01b81526001600160a01b0387811660048301526020909201918616906370a0823190602401602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611fe3565b815260200182151581525091505092915050565b6060816000816001600160401b038111156111ff576111ff61173f565b604051908082528060200260200182016040528015611228578160200160208202803683370190505b50905060005b828110156105705785858281811061124857611248611e0b565b905060200201602081019061125d9190611e21565b6040516370a0823160e01b81526001600160a01b03898116600483015291909116906370a0823190602401602060405180830381865afa1580156112a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c99190611fe3565b8282815181106112db576112db611e0b565b6020908102919091010152806112f081611e5a565b91505061122e565b6113006115d4565b6113086115d4565b6113106115d4565b604080516080810182526000808252602082018190529181018290526060810191909152843b63ffffffff1661137c5760405162461bcd60e51b81526020600482015260116024820152701b9bdb8818dbdb9d1c9858dd0818d85b1b607a1b6044820152606401610645565b60408051600481526024810182526020810180516001600160e01b031663c45a015560e01b17905290516000916001600160a01b038816916113be9190611e3e565b600060405180830381855afa9150503d80600081146113f9576040519150601f19603f3d011682016040523d82523d6000602084013e6113fe565b606091505b505090508061141f5760405162461bcd60e51b815260040161064590611e81565b6000869050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611465573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114899190611ee6565b50915091506000836001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f29190611f36565b90506000846001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115589190611f36565b90506115648c8c610e96565b97506115708c83610e96565b995061157c8c82610e96565b98506040518060800160405280836001600160a01b03168152602001826001600160a01b03168152602001856001600160701b03168152602001846001600160701b0316815250965050505050505092959194509250565b6040518060c001604052806060815260200160608152602001600060ff16815260200160008152602001600081526020016000151581525090565b60405180608001604052806116226115d4565b815260200161162f6115d4565b815260200161163c6115d4565b81526040805160808101825260008082526020828101829052928201819052606082015291015290565b60008083601f84011261167857600080fd5b5081356001600160401b0381111561168f57600080fd5b6020830191508360208260051b85010111156116aa57600080fd5b9250929050565b600080602083850312156116c457600080fd5b82356001600160401b038111156116da57600080fd5b6116e685828601611666565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156117335783516001600160a01b03168352928401929184019160010161170e565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156117775761177761173f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156117a5576117a561173f565b604052919050565b60006001600160401b038211156117c6576117c661173f565b5060051b60200190565b6001600160a01b03811681146117e557600080fd5b50565b60006001600160401b038211156118015761180161173f565b50601f01601f191660200190565b6000602080838503121561182257600080fd5b82356001600160401b038082111561183957600080fd5b818501915085601f83011261184d57600080fd5b813561186061185b826117ad565b61177d565b81815260059190911b8301840190848101908883111561187f57600080fd5b8585015b8381101561193d5780358581111561189b5760008081fd5b86016040818c03601f19018113156118b35760008081fd5b6118bb611755565b898301356118c8816117d0565b815282820135888111156118dc5760008081fd5b8084019350508c603f8401126118f25760008081fd5b8983013561190261185b826117e8565b8181528e848387010111156119175760008081fd5b818486018d83013760009181018c0191909152818b015285525050918601918601611883565b5098975050505050505050565b60005b8381101561196557818101518382015260200161194d565b50506000910152565b6000815180845261198681602086016020860161194a565b601f01601f19169290920160200192915050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b828110156119f657605f198887030184526119e486835161196e565b955092840192908401906001016119c8565b509398975050505050505050565b600080600060408486031215611a1957600080fd5b8335611a24816117d0565b925060208401356001600160401b03811115611a3f57600080fd5b611a4b86828701611666565b9497909650939450505050565b6000815160c08452611a6d60c085018261196e565b905060208301518482036020860152611a86828261196e565b91505060ff6040840151166040850152606083015160608501526080830151608085015260a0830151151560a08501528091505092915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611b1557603f19888603018452611b03858351611a58565b94509285019290850190600101611ae7565b5092979650505050505050565b60008060408385031215611b3557600080fd5b8235611b40816117d0565b91506020838101356001600160401b03811115611b5c57600080fd5b8401601f81018613611b6d57600080fd5b8035611b7b61185b826117ad565b81815260059190911b82018301908381019088831115611b9a57600080fd5b928401925b82841015611bc1578335611bb2816117d0565b82529284019290840190611b9f565b80955050505050509250929050565b80516001600160a01b039081168352602080830151909116908301526040808201516001600160701b039081169184019190915260609182015116910152565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015611cb857603f19898403018552815160e08151818652611c5d82870182611a58565b915050888201518582038a870152611c758282611a58565b9150508782015185820389870152611c8d8282611a58565b9150506060808301519250611ca481870184611bd0565b509588019593505090860190600101611c37565b509098975050505050505050565b602080825282518282018190526000919060409081850190868401855b82811015611d2157815180516001600160a01b0390811686528782015181168887015290860151168585015260609093019290850190600101611ce3565b5091979650505050505050565b60008060408385031215611d4157600080fd5b8235611d4c816117d0565b91506020830135611d5c816117d0565b809150509250929050565b602081526000611d7a6020830184611a58565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101561173357835183529284019291840191600101611d9d565b60e081526000611dcc60e0830187611a58565b8281036020840152611dde8187611a58565b90508281036040840152611df28186611a58565b915050611e026060830184611bd0565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611e3357600080fd5b8135611d7a816117d0565b60008251611e5081846020870161194a565b9190910192915050565b600060018201611e7a57634e487b7160e01b600052601160045260246000fd5b5060010190565b60208082526029908201527f6661696c656420746f206964656e7469667920746865206f726967696e206f66604082015268081d1a19481c1bdbdb60ba1b606082015260800190565b80516001600160701b0381168114611ee157600080fd5b919050565b600080600060608486031215611efb57600080fd5b611f0484611eca565b9250611f1260208501611eca565b9150604084015163ffffffff81168114611f2b57600080fd5b809150509250925092565b600060208284031215611f4857600080fd5b8151611d7a816117d0565b600060208284031215611f6557600080fd5b81516001600160401b03811115611f7b57600080fd5b8201601f81018413611f8c57600080fd5b8051611f9a61185b826117e8565b818152856020838501011115611faf57600080fd5b611e0282602083016020860161194a565b600060208284031215611fd257600080fd5b815160ff81168114611d7a57600080fd5b600060208284031215611ff557600080fd5b505191905056fea2646970667358221220a290764e496d1ef53fb0d2df445e93333f43167ffc7e38d419eb851ba21b796164736f6c63430008110033
Deployed Bytecode Sourcemap
1315:6979:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5138:580;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1976:417;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;3955:406::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5726:1290::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4369:761::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3514:433::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2800:706::-;;;;;;:::i;:::-;;:::i;2401:391::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7024:1067::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;5138:580::-;5213:16;5266:6;5242:21;5266:6;-1:-1:-1;;;;;5319:28:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5319:28:0;;5290:57;;5363:9;5358:324;5382:13;5378:1;:17;5358:324;;;5421:21;5432:6;;5439:1;5432:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8227:18;8274:8;;;;;8099:192;5421:21;5417:254;;;5464:12;5482:6;;5489:1;5482:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;5503:53;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5503:53:0;-1:-1:-1;;;5503:53:0;;;5482:75;;-1:-1:-1;;;;;5482:20:0;;;;;:75;;5503:53;5482:75;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5463:94;;;5580:7;5576:80;;;5627:6;;5634:1;5627:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;5612;5622:1;5612:12;;;;;;;;:::i;:::-;;;;;;:24;-1:-1:-1;;;;;5612:24:0;;;-1:-1:-1;;;;;5612:24:0;;;;;5576:80;5444:227;5417:254;5397:3;;;;:::i;:::-;;;;5358:324;;;-1:-1:-1;5701:9:0;5138:580;-1:-1:-1;;;;5138:580:0:o;1976:417::-;2153:12;;2105;;2053:25;;-1:-1:-1;;;;;2141:25:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2128:38;;2182:9;2177:209;2201:5;:12;2197:1;:16;2177:209;;;2236:12;2250:16;2270:5;2276:1;2270:8;;;;;;;;:::i;:::-;;;;;;;:15;;;-1:-1:-1;;;;;2270:20:0;2291:5;2297:1;2291:8;;;;;;;;:::i;:::-;;;;;;;:17;;;2270:39;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2235:74;;;;2332:7;2324:16;;;;;;2371:3;2355:10;2366:1;2355:13;;;;;;;;:::i;:::-;;;;;;:19;;;;2220:166;;2215:3;;;;;:::i;:::-;;;;2177:209;;;;1976:417;;;:::o;3955:406::-;4041:18;4097:6;4072:22;4097:6;-1:-1:-1;;;;;4154:31:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4121:64;;4203:9;4198:125;4222:14;4218:1;:18;4198:125;;;4275:36;4285:6;4300;;4307:1;4300:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;4275:36::-;4258:11;4270:1;4258:14;;;;;;;;:::i;:::-;;;;;;:53;;;;4238:3;;;;;:::i;:::-;;;;4198:125;;;-1:-1:-1;4342:11:0;3955:406;-1:-1:-1;;;;;3955:406:0:o;5726:1290::-;5812:18;5843:24;5886:11;:18;-1:-1:-1;;;;;5870:35:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;5843:62;;5923:9;5918:1066;5942:11;:18;5938:1;:22;5918:1066;;;5990:26;6001:11;6013:1;6001:14;;;;;;;;:::i;:::-;;;;;;;8274:8;8227:18;;8274:8;;;;8099:192;5990:26;5982:56;;;;-1:-1:-1;;;5982:56:0;;16115:2:1;5982:56:0;;;16097:21:1;16154:2;16134:18;;;16127:30;-1:-1:-1;;;16173:18:1;;;16166:47;16230:18;;5982:56:0;;;;;;;;;6054:12;6072:11;6084:1;6072:14;;;;;;;;:::i;:::-;;;;;;;;;;;;6098:53;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6098:53:0;-1:-1:-1;;;6098:53:0;;;6072:80;-1:-1:-1;;;;;6072:25:0;;;;:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6053:99;;;6175:7;6167:61;;;;-1:-1:-1;;;6167:61:0;;;;;;;:::i;:::-;6243:24;6283:11;6295:1;6283:14;;;;;;;;:::i;:::-;;;;;;;6243:55;;6316:16;6334;6356:11;-1:-1:-1;;;;;6356:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6315:66;;;;;6398:21;6422:11;-1:-1:-1;;;;;6422:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6398:44;;6457:21;6481:11;-1:-1:-1;;;;;6481:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6457:44;;6534:54;6557:6;6572:11;6584:1;6572:14;;;;;;;;:::i;:::-;;;;;;;6534:22;:54::i;:::-;6518:5;6524:1;6518:8;;;;;;;;:::i;:::-;;;;;;;:13;;:70;;;;6621:53;6644:6;6659:13;6621:22;:53::i;:::-;6603:5;6609:1;6603:8;;;;;;;;:::i;:::-;;;;;;;;;;;:71;6707:53;6730:6;6745:13;6707:22;:53::i;:::-;6689:5;6695:1;6689:8;;;;;;;;:::i;:::-;;;;;;;:15;;:71;;;;6793:179;;;;;;;;6829:13;-1:-1:-1;;;;;6793:179:0;;;;;6869:13;-1:-1:-1;;;;;6793:179:0;;;;;6911:8;-1:-1:-1;;;;;6793:179:0;;;;;6948:8;-1:-1:-1;;;;;6793:179:0;;;;6777:5;6783:1;6777:8;;;;;;;;:::i;:::-;;;;;;;:13;;:195;;;;5967:1017;;;;;;5962:3;;;;;:::i;:::-;;;;5918:1066;;;-1:-1:-1;7003:5:0;5726:1290;-1:-1:-1;;;5726:1290:0:o;4369:761::-;4441:15;4493:6;4469:21;4493:6;-1:-1:-1;;;;;4542:27:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;4542:27:0;;-1:-1:-1;;4542:27:0;;;;;;;;;;;;4517:52;;4585:9;4580:517;4604:13;4600:1;:17;4580:517;;;4643:21;4654:6;;4661:1;4654:9;;;;;;;:::i;4643:21::-;4639:447;;;4686:12;4704:6;;4711:1;4704:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4725:53;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4725:53:0;-1:-1:-1;;;4725:53:0;;;4704:75;;-1:-1:-1;;;;;4704:20:0;;;;;:75;;4725:53;4704:75;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4685:94;;;4802:7;4798:273;;;4846:205;;;;;;;;4884:6;;4891:1;4884:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4846:205:0;;;;;4941:6;;4948:1;4941:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4928:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4846:205:0;;;;;5008:6;;5015:1;5008:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4995:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4846:205:0;;;;4834:6;4841:1;4834:9;;;;;;;;:::i;:::-;;;;;;:217;;;;4798:273;4666:420;4639:447;4619:3;;;;:::i;:::-;;;;4580:517;;3514:433;3597:16;;:::i;:::-;3656:283;;;;;;;;3691:5;-1:-1:-1;;;;;3691:10:0;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3691:12:0;;;;;;;;;;;;:::i;:::-;3656:283;;;;3730:5;-1:-1:-1;;;;;3730:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3730:14:0;;;;;;;;;;;;:::i;:::-;3656:283;;;;3773:5;-1:-1:-1;;;;;3773:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3656:283;;;;;;3821:5;-1:-1:-1;;;;;3821:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3656:283;;3868:23;;-1:-1:-1;;;3868:23:0;;-1:-1:-1;;;;;18857:32:1;;;3868:23:0;;;18839:51:1;3656:283:0;;;;;3868:15;;;;;18812:18:1;;3868:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3656:283;;3918:5;3656:283;;;;;3636:303;3514:433;-1:-1:-1;;;3514:433:0:o;2800:706::-;2870:16;;:::i;:::-;2960:61;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2960:61:0;-1:-1:-1;;;2960:61:0;;;2934:88;;2899:11;;-1:-1:-1;;;;;2934:25:0;;;:88;;2960:61;2934:88;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2921:101;;;;;3037:6;3033:141;;3099:62;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3099:62:0;-1:-1:-1;;;3099:62:0;;;3073:89;;-1:-1:-1;;;;;3073:25:0;;;:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3060:102:0;;-1:-1:-1;;3033:141:0;3214:284;;;;;;;;3249:5;-1:-1:-1;;;;;3249:10:0;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3249:12:0;;;;;;;;;;;;:::i;:::-;3214:284;;;;3288:5;-1:-1:-1;;;;;3288:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3288:14:0;;;;;;;;;;;;:::i;:::-;3214:284;;;;3331:5;-1:-1:-1;;;;;3331:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3214:284;;;;;;3379:5;-1:-1:-1;;;;;3379:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3214:284;;3426:23;;-1:-1:-1;;;3426:23:0;;-1:-1:-1;;;;;18857:32:1;;;3426:23:0;;;18839:51:1;3214:284:0;;;;;3426:15;;;;;18812:18:1;;3426:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3214:284;;;;3476:6;3214:284;;;;;3194:304;;;2800:706;;;;:::o;2401:391::-;2485:16;2539:6;2514:22;2539:6;-1:-1:-1;;;;;2592:29:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2592:29:0;;2563:58;;2639:9;2634:122;2658:14;2654:1;:18;2634:122;;;2716:6;;2723:1;2716:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2709:35;;-1:-1:-1;;;2709:35:0;;-1:-1:-1;;;;;18857:32:1;;;2709:35:0;;;18839:51:1;2709:27:0;;;;;;;18812:18:1;;2709:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2694:9;2704:1;2694:12;;;;;;;;:::i;:::-;;;;;;;;;;:50;2674:3;;;;:::i;:::-;;;;2634:122;;7024:1067;7141:23;;:::i;:::-;7179;;:::i;:::-;7217:21;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8227:18:0;;8274:8;;7301:53;;;;-1:-1:-1;;;7301:53:0;;16115:2:1;7301:53:0;;;16097:21:1;16154:2;16134:18;;;16127:30;-1:-1:-1;;;16173:18:1;;;16166:47;16230:18;;7301:53:0;15913:341:1;7301:53:0;7407;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7407:53:0;-1:-1:-1;;;7407:53:0;;;7384:77;;7366:12;;-1:-1:-1;;;;;7384:22:0;;;:77;;7407:53;7384:77;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7365:96;;;7480:7;7472:61;;;;-1:-1:-1;;;7472:61:0;;;;;;;:::i;:::-;7546:24;7586:11;7546:52;;7612:16;7630;7652:11;-1:-1:-1;;;;;7652:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7611:66;;;;;7690:21;7714:11;-1:-1:-1;;;;;7714:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7690:44;;7745:21;7769:11;-1:-1:-1;;;;;7769:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7745:44;;7809:38;7819:6;7834:11;7809:9;:38::i;:::-;7802:45;;7867:40;7877:6;7892:13;7867:9;:40::i;:::-;7858:49;;7927:40;7937:6;7952:13;7927:9;:40::i;:::-;7918:49;;7985:98;;;;;;;;8004:13;-1:-1:-1;;;;;7985:98:0;;;;;8027:13;-1:-1:-1;;;;;7985:98:0;;;;;8052:8;-1:-1:-1;;;;;7985:98:0;;;;;8072:8;-1:-1:-1;;;;;7985:98:0;;;;7978:105;;7290:801;;;;;;7024:1067;;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;-1:-1:-1;;;;;214:30:1;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:437::-;472:6;480;533:2;521:9;512:7;508:23;504:32;501:52;;;549:1;546;539:12;501:52;589:9;576:23;-1:-1:-1;;;;;614:6:1;611:30;608:50;;;654:1;651;644:12;608:50;693:70;755:7;746:6;735:9;731:22;693:70;:::i;:::-;782:8;;667:96;;-1:-1:-1;386:437:1;-1:-1:-1;;;;386:437:1:o;828:658::-;999:2;1051:21;;;1121:13;;1024:18;;;1143:22;;;970:4;;999:2;1222:15;;;;1196:2;1181:18;;;970:4;1265:195;1279:6;1276:1;1273:13;1265:195;;;1344:13;;-1:-1:-1;;;;;1340:39:1;1328:52;;1435:15;;;;1400:12;;;;1376:1;1294:9;1265:195;;;-1:-1:-1;1477:3:1;;828:658;-1:-1:-1;;;;;;828:658:1:o;1491:127::-;1552:10;1547:3;1543:20;1540:1;1533:31;1583:4;1580:1;1573:15;1607:4;1604:1;1597:15;1623:257;1695:4;1689:11;;;1727:17;;-1:-1:-1;;;;;1759:34:1;;1795:22;;;1756:62;1753:88;;;1821:18;;:::i;:::-;1857:4;1850:24;1623:257;:::o;1885:275::-;1956:2;1950:9;2021:2;2002:13;;-1:-1:-1;;1998:27:1;1986:40;;-1:-1:-1;;;;;2041:34:1;;2077:22;;;2038:62;2035:88;;;2103:18;;:::i;:::-;2139:2;2132:22;1885:275;;-1:-1:-1;1885:275:1:o;2165:187::-;2229:4;-1:-1:-1;;;;;2254:6:1;2251:30;2248:56;;;2284:18;;:::i;:::-;-1:-1:-1;2329:1:1;2325:14;2341:4;2321:25;;2165:187::o;2357:131::-;-1:-1:-1;;;;;2432:31:1;;2422:42;;2412:70;;2478:1;2475;2468:12;2412:70;2357:131;:::o;2493:186::-;2541:4;-1:-1:-1;;;;;2566:6:1;2563:30;2560:56;;;2596:18;;:::i;:::-;-1:-1:-1;2662:2:1;2641:15;-1:-1:-1;;2637:29:1;2668:4;2633:40;;2493:186::o;2684:2291::-;2789:6;2820:2;2863;2851:9;2842:7;2838:23;2834:32;2831:52;;;2879:1;2876;2869:12;2831:52;2919:9;2906:23;-1:-1:-1;;;;;2989:2:1;2981:6;2978:14;2975:34;;;3005:1;3002;2995:12;2975:34;3043:6;3032:9;3028:22;3018:32;;3088:7;3081:4;3077:2;3073:13;3069:27;3059:55;;3110:1;3107;3100:12;3059:55;3146:2;3133:16;3169:64;3185:47;3229:2;3185:47;:::i;:::-;3169:64;:::i;:::-;3267:15;;;3349:1;3345:10;;;;3337:19;;3333:28;;;3298:12;;;;3373:19;;;3370:39;;;3405:1;3402;3395:12;3370:39;3437:2;3433;3429:11;3449:1496;3465:6;3460:3;3457:15;3449:1496;;;3551:3;3538:17;3587:2;3574:11;3571:19;3568:109;;;3631:1;3660:2;3656;3649:14;3568:109;3700:20;;3743:4;3771:16;;;-1:-1:-1;;3767:30:1;3763:39;-1:-1:-1;3760:129:1;;;3843:1;3872:2;3868;3861:14;3760:129;3915:22;;:::i;:::-;3986:2;3982;3978:11;3965:25;4003:33;4028:7;4003:33;:::i;:::-;4049:22;;4113:11;;;4100:25;4141:16;;;4138:106;;;4198:1;4227:2;4223;4216:14;4138:106;4276:8;4272:2;4268:17;4257:28;;;4326:7;4321:2;4316:3;4312:12;4308:26;4298:127;;4377:1;4407:3;4402;4395:16;4298:127;4471:2;4466:3;4462:12;4449:26;4501:49;4517:32;4545:3;4517:32;:::i;4501:49::-;4577:3;4570:5;4563:18;4624:7;4619:2;4613:3;4608;4604:13;4600:22;4597:35;4594:128;;;4674:1;4704:3;4699;4692:16;4594:128;4778:3;4773:2;4768:3;4764:12;4759:2;4752:5;4748:14;4735:47;4828:1;4806:15;;;4802:24;;4795:35;;;;4850:14;;;4843:29;4885:18;;-1:-1:-1;;4923:12:1;;;;3482;;3449:1496;;;-1:-1:-1;4964:5:1;2684:2291;-1:-1:-1;;;;;;;;2684:2291:1:o;4980:250::-;5065:1;5075:113;5089:6;5086:1;5083:13;5075:113;;;5165:11;;;5159:18;5146:11;;;5139:39;5111:2;5104:10;5075:113;;;-1:-1:-1;;5222:1:1;5204:16;;5197:27;4980:250::o;5235:270::-;5276:3;5314:5;5308:12;5341:6;5336:3;5329:19;5357:76;5426:6;5419:4;5414:3;5410:14;5403:4;5396:5;5392:16;5357:76;:::i;:::-;5487:2;5466:15;-1:-1:-1;;5462:29:1;5453:39;;;;5494:4;5449:50;;5235:270;-1:-1:-1;;5235:270:1:o;5510:871::-;5698:4;5746:2;5735:9;5731:18;5776:6;5765:9;5758:25;5802:2;5840;5835;5824:9;5820:18;5813:30;5863:6;5898;5892:13;5929:6;5921;5914:22;5967:2;5956:9;5952:18;5945:25;;6029:2;6019:6;6016:1;6012:14;6001:9;5997:30;5993:39;5979:53;;6067:2;6059:6;6055:15;6088:1;6098:254;6112:6;6109:1;6106:13;6098:254;;;6205:2;6201:7;6189:9;6181:6;6177:22;6173:36;6168:3;6161:49;6233:39;6265:6;6256;6250:13;6233:39;:::i;:::-;6223:49;-1:-1:-1;6330:12:1;;;;6295:15;;;;6134:1;6127:9;6098:254;;;-1:-1:-1;6369:6:1;;5510:871;-1:-1:-1;;;;;;;;5510:871:1:o;6386:572::-;6481:6;6489;6497;6550:2;6538:9;6529:7;6525:23;6521:32;6518:52;;;6566:1;6563;6556:12;6518:52;6605:9;6592:23;6624:31;6649:5;6624:31;:::i;:::-;6674:5;-1:-1:-1;6730:2:1;6715:18;;6702:32;-1:-1:-1;;;;;6746:30:1;;6743:50;;;6789:1;6786;6779:12;6743:50;6828:70;6890:7;6881:6;6870:9;6866:22;6828:70;:::i;:::-;6386:572;;6917:8;;-1:-1:-1;6802:96:1;;-1:-1:-1;;;;6386:572:1:o;6963:636::-;7015:3;7059:5;7053:12;7086:4;7081:3;7074:17;7112:46;7152:4;7147:3;7143:14;7129:12;7112:46;:::i;:::-;7100:58;;7206:4;7199:5;7195:16;7189:23;7254:3;7248:4;7244:14;7237:4;7232:3;7228:14;7221:38;7282;7315:4;7299:14;7282:38;:::i;:::-;7268:52;;;7381:4;7373;7366:5;7362:16;7356:23;7352:34;7345:4;7340:3;7336:14;7329:58;7436:4;7429:5;7425:16;7419:23;7412:4;7407:3;7403:14;7396:47;7492:4;7485:5;7481:16;7475:23;7468:4;7463:3;7459:14;7452:47;7562:4;7555:5;7551:16;7545:23;7538:31;7531:39;7524:4;7519:3;7515:14;7508:63;7587:6;7580:13;;;6963:636;;;;:::o;7604:843::-;7796:4;7825:2;7865;7854:9;7850:18;7895:2;7884:9;7877:21;7918:6;7953;7947:13;7984:6;7976;7969:22;8022:2;8011:9;8007:18;8000:25;;8084:2;8074:6;8071:1;8067:14;8056:9;8052:30;8048:39;8034:53;;8122:2;8114:6;8110:15;8143:1;8153:265;8167:6;8164:1;8161:13;8153:265;;;8260:2;8256:7;8244:9;8236:6;8232:22;8228:36;8223:3;8216:49;8288:50;8331:6;8322;8316:13;8288:50;:::i;:::-;8278:60;-1:-1:-1;8396:12:1;;;;8361:15;;;;8189:1;8182:9;8153:265;;;-1:-1:-1;8435:6:1;;7604:843;-1:-1:-1;;;;;;;7604:843:1:o;8452:1111::-;8545:6;8553;8606:2;8594:9;8585:7;8581:23;8577:32;8574:52;;;8622:1;8619;8612:12;8574:52;8661:9;8648:23;8680:31;8705:5;8680:31;:::i;:::-;8730:5;-1:-1:-1;8754:2:1;8792:18;;;8779:32;-1:-1:-1;;;;;8823:30:1;;8820:50;;;8866:1;8863;8856:12;8820:50;8889:22;;8942:4;8934:13;;8930:27;-1:-1:-1;8920:55:1;;8971:1;8968;8961:12;8920:55;9007:2;8994:16;9030:64;9046:47;9090:2;9046:47;:::i;9030:64::-;9128:15;;;9210:1;9206:10;;;;9198:19;;9194:28;;;9159:12;;;;9234:19;;;9231:39;;;9266:1;9263;9256:12;9231:39;9290:11;;;;9310:223;9326:6;9321:3;9318:15;9310:223;;;9408:3;9395:17;9425:33;9450:7;9425:33;:::i;:::-;9471:20;;9343:12;;;;9511;;;;9310:223;;;9552:5;9542:15;;;;;;;8452:1111;;;;;:::o;9568:425::-;9684:12;;-1:-1:-1;;;;;9680:21:1;;;9668:34;;9755:4;9744:16;;;9738:23;9734:32;;;9718:14;;;9711:56;9813:4;9802:16;;;9796:23;-1:-1:-1;;;;;9900:21:1;;;9884:14;;;9877:45;;;;9975:4;9964:16;;;9958:23;9954:32;9938:14;;9931:56;9568:425::o;9998:1571::-;10192:4;10221:2;10261;10250:9;10246:18;10291:2;10280:9;10273:21;10314:6;10349;10343:13;10380:6;10372;10365:22;10406:2;10396:12;;10439:2;10428:9;10424:18;10417:25;;10501:2;10491:6;10488:1;10484:14;10473:9;10469:30;10465:39;10539:2;10531:6;10527:15;10560:1;10570:970;10584:6;10581:1;10578:13;10570:970;;;10677:2;10673:7;10661:9;10653:6;10649:22;10645:36;10640:3;10633:49;10711:6;10705:13;10741:4;10784:2;10778:9;10815:2;10807:6;10800:18;10845:58;10899:2;10891:6;10887:15;10873:12;10845:58;:::i;:::-;10831:72;;;10952:2;10948;10944:11;10938:18;11005:6;10997;10993:19;10988:2;10980:6;10976:15;10969:44;11040:51;11084:6;11068:14;11040:51;:::i;:::-;11026:65;;;11140:2;11136;11132:11;11126:18;11193:6;11185;11181:19;11176:2;11168:6;11164:15;11157:44;11228:51;11272:6;11256:14;11228:51;:::i;:::-;11214:65;;;11302:4;11355:2;11351;11347:11;11341:18;11319:40;;11372:59;11427:2;11419:6;11415:15;11399:14;11372:59;:::i;:::-;-1:-1:-1;11518:12:1;;;;11454:6;-1:-1:-1;;11483:15:1;;;;10606:1;10599:9;10570:970;;;-1:-1:-1;11557:6:1;;9998:1571;-1:-1:-1;;;;;;;;9998:1571:1:o;11574:906::-;11789:2;11841:21;;;11911:13;;11814:18;;;11933:22;;;11760:4;;11789:2;11974;;11992:18;;;;12033:15;;;11760:4;12076:378;12090:6;12087:1;12084:13;12076:378;;;12149:13;;12233:9;;-1:-1:-1;;;;;12229:18:1;;;12217:31;;12292:11;;;12286:18;12282:27;;12268:12;;;12261:49;12354:11;;;12348:18;12344:27;12330:12;;;12323:49;12401:4;12392:14;;;;12429:15;;;;12202:1;12105:9;12076:378;;;-1:-1:-1;12471:3:1;;11574:906;-1:-1:-1;;;;;;;11574:906:1:o;12485:401::-;12566:6;12574;12627:2;12615:9;12606:7;12602:23;12598:32;12595:52;;;12643:1;12640;12633:12;12595:52;12682:9;12669:23;12701:31;12726:5;12701:31;:::i;:::-;12751:5;-1:-1:-1;12808:2:1;12793:18;;12780:32;12821:33;12780:32;12821:33;:::i;:::-;12873:7;12863:17;;;12485:401;;;;;:::o;12891:260::-;13070:2;13059:9;13052:21;13033:4;13090:55;13141:2;13130:9;13126:18;13118:6;13090:55;:::i;:::-;13082:63;12891:260;-1:-1:-1;;;12891:260:1:o;13156:632::-;13327:2;13379:21;;;13449:13;;13352:18;;;13471:22;;;13298:4;;13327:2;13550:15;;;;13524:2;13509:18;;;13298:4;13593:169;13607:6;13604:1;13601:13;13593:169;;;13668:13;;13656:26;;13737:15;;;;13702:12;;;;13629:1;13622:9;13593:169;;14186:809;14599:3;14588:9;14581:22;14562:4;14626:56;14677:3;14666:9;14662:19;14654:6;14626:56;:::i;:::-;14730:9;14722:6;14718:22;14713:2;14702:9;14698:18;14691:50;14764:43;14800:6;14792;14764:43;:::i;:::-;14750:57;;14855:9;14847:6;14843:22;14838:2;14827:9;14823:18;14816:50;14883:43;14919:6;14911;14883:43;:::i;:::-;14875:51;;;14935:54;14985:2;14974:9;14970:18;14962:6;14935:54;:::i;:::-;14186:809;;;;;;;:::o;15000:127::-;15061:10;15056:3;15052:20;15049:1;15042:31;15092:4;15089:1;15082:15;15116:4;15113:1;15106:15;15132:247;15191:6;15244:2;15232:9;15223:7;15219:23;15215:32;15212:52;;;15260:1;15257;15250:12;15212:52;15299:9;15286:23;15318:31;15343:5;15318:31;:::i;15384:287::-;15513:3;15551:6;15545:13;15567:66;15626:6;15621:3;15614:4;15606:6;15602:17;15567:66;:::i;:::-;15649:16;;;;;15384:287;-1:-1:-1;;15384:287:1:o;15676:232::-;15715:3;15736:17;;;15733:140;;15795:10;15790:3;15786:20;15783:1;15776:31;15830:4;15827:1;15820:15;15858:4;15855:1;15848:15;15733:140;-1:-1:-1;15900:1:1;15889:13;;15676:232::o;16259:405::-;16461:2;16443:21;;;16500:2;16480:18;;;16473:30;16539:34;16534:2;16519:18;;16512:62;-1:-1:-1;;;16605:2:1;16590:18;;16583:39;16654:3;16639:19;;16259:405::o;16669:188::-;16748:13;;-1:-1:-1;;;;;16790:42:1;;16780:53;;16770:81;;16847:1;16844;16837:12;16770:81;16669:188;;;:::o;16862:450::-;16949:6;16957;16965;17018:2;17006:9;16997:7;16993:23;16989:32;16986:52;;;17034:1;17031;17024:12;16986:52;17057:40;17087:9;17057:40;:::i;:::-;17047:50;;17116:49;17161:2;17150:9;17146:18;17116:49;:::i;:::-;17106:59;;17208:2;17197:9;17193:18;17187:25;17252:10;17245:5;17241:22;17234:5;17231:33;17221:61;;17278:1;17275;17268:12;17221:61;17301:5;17291:15;;;16862:450;;;;;:::o;17317:251::-;17387:6;17440:2;17428:9;17419:7;17415:23;17411:32;17408:52;;;17456:1;17453;17446:12;17408:52;17488:9;17482:16;17507:31;17532:5;17507:31;:::i;17573:648::-;17653:6;17706:2;17694:9;17685:7;17681:23;17677:32;17674:52;;;17722:1;17719;17712:12;17674:52;17755:9;17749:16;-1:-1:-1;;;;;17780:6:1;17777:30;17774:50;;;17820:1;17817;17810:12;17774:50;17843:22;;17896:4;17888:13;;17884:27;-1:-1:-1;17874:55:1;;17925:1;17922;17915:12;17874:55;17954:2;17948:9;17979:48;17995:31;18023:2;17995:31;:::i;17979:48::-;18050:2;18043:5;18036:17;18090:7;18085:2;18080;18076;18072:11;18068:20;18065:33;18062:53;;;18111:1;18108;18101:12;18062:53;18124:67;18188:2;18183;18176:5;18172:14;18167:2;18163;18159:11;18124:67;:::i;18226:273::-;18294:6;18347:2;18335:9;18326:7;18322:23;18318:32;18315:52;;;18363:1;18360;18353:12;18315:52;18395:9;18389:16;18445:4;18438:5;18434:16;18427:5;18424:27;18414:55;;18465:1;18462;18455:12;18504:184;18574:6;18627:2;18615:9;18606:7;18602:23;18598:32;18595:52;;;18643:1;18640;18633:12;18595:52;-1:-1:-1;18666:16:1;;18504:184;-1:-1:-1;18504:184:1:o
Swarm Source
ipfs://a290764e496d1ef53fb0d2df445e93333f43167ffc7e38d419eb851ba21b7961
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in FRAX
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.