Source Code
Overview
GLMR Balance
GLMR Value
$0.00Latest 25 from a total of 815 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Remove Liquidity... | 839239 | 1379 days ago | IN | 0 GLMR | 0.02739129 | ||||
| Swap Exact ETH F... | 686187 | 1401 days ago | IN | 0.124 GLMR | 0.03593922 | ||||
| Swap Exact ETH F... | 686175 | 1401 days ago | IN | 0.118 GLMR | 0.02166537 | ||||
| Swap Exact ETH F... | 686135 | 1401 days ago | IN | 0.2 GLMR | 0.01964552 | ||||
| Swap Exact ETH F... | 686115 | 1401 days ago | IN | 0.2 GLMR | 0.01964552 | ||||
| Swap Exact ETH F... | 686108 | 1401 days ago | IN | 0.2 GLMR | 0.01964552 | ||||
| Swap Exact ETH F... | 686096 | 1401 days ago | IN | 0.2 GLMR | 0.01964552 | ||||
| Swap Exact ETH F... | 686087 | 1401 days ago | IN | 0.0985 GLMR | 0.03590857 | ||||
| Swap Exact ETH F... | 686078 | 1401 days ago | IN | 0.1 GLMR | 0.01964552 | ||||
| Swap Exact ETH F... | 686070 | 1401 days ago | IN | 0.112 GLMR | 0.02166537 | ||||
| Swap Exact ETH F... | 686064 | 1401 days ago | IN | 0.1 GLMR | 0.02166537 | ||||
| Swap Exact ETH F... | 686056 | 1401 days ago | IN | 0.1 GLMR | 0.01964552 | ||||
| Swap Exact ETH F... | 686040 | 1401 days ago | IN | 0.1 GLMR | 0.03392058 | ||||
| Swap Exact ETH F... | 686036 | 1401 days ago | IN | 0.1 GLMR | 0.01964552 | ||||
| Add Liquidity | 686035 | 1401 days ago | IN | 0 GLMR | 0.02125176 | ||||
| Swap Exact ETH F... | 686026 | 1401 days ago | IN | 0.1 GLMR | 0.01964552 | ||||
| Swap Exact ETH F... | 686018 | 1401 days ago | IN | 0.05 GLMR | 0.03594043 | ||||
| Swap Exact ETH F... | 686004 | 1401 days ago | IN | 0.1 GLMR | 0.02166537 | ||||
| Swap Exact ETH F... | 685991 | 1401 days ago | IN | 0.1 GLMR | 0.02166537 | ||||
| Remove Liquidity... | 685976 | 1401 days ago | IN | 0 GLMR | 0.02740906 | ||||
| Swap Exact ETH F... | 685968 | 1401 days ago | IN | 0.01 GLMR | 0.01964552 | ||||
| Swap Exact ETH F... | 685943 | 1401 days ago | IN | 0.11 GLMR | 0.02166537 | ||||
| Remove Liquidity... | 685924 | 1401 days ago | IN | 0 GLMR | 0.02938475 | ||||
| Swap Exact ETH F... | 685902 | 1401 days ago | IN | 0.01 GLMR | 0.02166537 | ||||
| Add Liquidity ET... | 685807 | 1401 days ago | IN | 2.23146353 GLMR | 0.02028447 |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 839239 | 1379 days ago | 0.43539418 GLMR | ||||
| 839239 | 1379 days ago | 0.43539418 GLMR | ||||
| 686187 | 1401 days ago | 0.124 GLMR | ||||
| 686175 | 1401 days ago | 0.118 GLMR | ||||
| 686135 | 1401 days ago | 0.2 GLMR | ||||
| 686115 | 1401 days ago | 0.2 GLMR | ||||
| 686108 | 1401 days ago | 0.2 GLMR | ||||
| 686096 | 1401 days ago | 0.2 GLMR | ||||
| 686087 | 1401 days ago | 0.0985 GLMR | ||||
| 686078 | 1401 days ago | 0.1 GLMR | ||||
| 686070 | 1401 days ago | 0.112 GLMR | ||||
| 686064 | 1401 days ago | 0.1 GLMR | ||||
| 686056 | 1401 days ago | 0.1 GLMR | ||||
| 686040 | 1401 days ago | 0.1 GLMR | ||||
| 686036 | 1401 days ago | 0.1 GLMR | ||||
| 686026 | 1401 days ago | 0.1 GLMR | ||||
| 686018 | 1401 days ago | 0.05 GLMR | ||||
| 686004 | 1401 days ago | 0.1 GLMR | ||||
| 685991 | 1401 days ago | 0.1 GLMR | ||||
| 685976 | 1401 days ago | 0.50355814 GLMR | ||||
| 685976 | 1401 days ago | 0.50355814 GLMR | ||||
| 685968 | 1401 days ago | 0.01 GLMR | ||||
| 685943 | 1401 days ago | 0.11 GLMR | ||||
| 685924 | 1401 days ago | 1.39414828 GLMR | ||||
| 685924 | 1401 days ago | 1.39414828 GLMR |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DexRouter
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity)
/**
*Submitted for verification at moonbeam.moonscan.io on 2022-01-18
*/
pragma solidity =0.6.6;
interface IDexFactory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function feeToRate() external view returns (uint256);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
function setFeeToRate(uint256) external;
function sortTokens(address tokenA, address tokenB) external pure returns (address token0, address token1);
function pairFor(address tokenA, address tokenB) external view returns (address pair);
function getReserves(address tokenA, address tokenB) external view returns (uint256 reserveA, uint256 reserveB);
function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external pure returns (uint256 amountB);
function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) external view returns (uint256 amountOut);
function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) external view returns (uint256 amountIn);
function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts);
function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts);
}
interface IDexPair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function price(address token, uint256 baseDecimal) external view returns (uint256);
function initialize(address, address) external;
}
interface IDexRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function swapMining() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external view returns (uint256 amountB);
function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) external view returns (uint256 amountOut);
function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) external view returns (uint256 amountIn);
function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts);
function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts);
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
interface ISwapMining {
function swap(address account, address input, address output, uint256 amount) external returns (bool);
}
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () internal {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)
library SafeMath {
uint256 constant WAD = 10 ** 18;
uint256 constant RAY = 10 ** 27;
function wad() public pure returns (uint256) {
return WAD;
}
function ray() public pure returns (uint256) {
return RAY;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
function min(uint256 a, uint256 b) internal pure returns (uint256) {
return a <= b ? a : b;
}
function max(uint256 a, uint256 b) internal pure returns (uint256) {
return a >= b ? a : b;
}
function sqrt(uint256 a) internal pure returns (uint256 b) {
if (a > 3) {
b = a;
uint256 x = a / 2 + 1;
while (x < b) {
b = x;
x = (a / x + x) / 2;
}
} else if (a != 0) {
b = 1;
}
}
function wmul(uint256 a, uint256 b) internal pure returns (uint256) {
return mul(a, b) / WAD;
}
function wmulRound(uint256 a, uint256 b) internal pure returns (uint256) {
return add(mul(a, b), WAD / 2) / WAD;
}
function rmul(uint256 a, uint256 b) internal pure returns (uint256) {
return mul(a, b) / RAY;
}
function rmulRound(uint256 a, uint256 b) internal pure returns (uint256) {
return add(mul(a, b), RAY / 2) / RAY;
}
function wdiv(uint256 a, uint256 b) internal pure returns (uint256) {
return div(mul(a, WAD), b);
}
function wdivRound(uint256 a, uint256 b) internal pure returns (uint256) {
return add(mul(a, WAD), b / 2) / b;
}
function rdiv(uint256 a, uint256 b) internal pure returns (uint256) {
return div(mul(a, RAY), b);
}
function rdivRound(uint256 a, uint256 b) internal pure returns (uint256) {
return add(mul(a, RAY), b / 2) / b;
}
function wpow(uint256 x, uint256 n) internal pure returns (uint256) {
uint256 result = WAD;
while (n > 0) {
if (n % 2 != 0) {
result = wmul(result, x);
}
x = wmul(x, x);
n /= 2;
}
return result;
}
function rpow(uint256 x, uint256 n) internal pure returns (uint256) {
uint256 result = RAY;
while (n > 0) {
if (n % 2 != 0) {
result = rmul(result, x);
}
x = rmul(x, x);
n /= 2;
}
return result;
}
}
// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
function safeApprove(address token, address to, uint value) internal {
// bytes4(keccak256(bytes('approve(address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
}
function safeTransfer(address token, address to, uint value) internal {
// bytes4(keccak256(bytes('transfer(address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
}
function safeTransferFrom(address token, address from, address to, uint value) internal {
// bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
}
function safeTransferETH(address to, uint value) internal {
(bool success,) = to.call{value : value}(new bytes(0));
require(success, 'TransferHelper: ETH_TRANSFER_FAILED');
}
}
interface IERC20 {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
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 (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
}
interface IWETH {
function deposit() external payable;
function transfer(address to, uint value) external returns (bool);
function withdraw(uint) external;
}
contract DexRouter is IDexRouter, Ownable {
using SafeMath for uint256;
address public immutable override factory;
address public immutable override WETH;
address public override swapMining;
modifier ensure(uint deadline) {
require(deadline >= block.timestamp, 'DexRouter: EXPIRED');
_;
}
constructor(address _factory, address _WETH) public {
factory = _factory;
WETH = _WETH;
}
receive() external payable {
assert(msg.sender == WETH);
}
function pairFor(address tokenA, address tokenB) public view returns (address pair){
pair = IDexFactory(factory).pairFor(tokenA, tokenB);
}
function setSwapMining(address _swapMininng) public onlyOwner {
swapMining = _swapMininng;
}
// **** ADD LIQUIDITY ****
function _addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin
) internal virtual returns (uint amountA, uint amountB) {
// create the pair if it doesn't exist yet
if (IDexFactory(factory).getPair(tokenA, tokenB) == address(0)) {
IDexFactory(factory).createPair(tokenA, tokenB);
}
(uint reserveA, uint reserveB) = IDexFactory(factory).getReserves(tokenA, tokenB);
if (reserveA == 0 && reserveB == 0) {
(amountA, amountB) = (amountADesired, amountBDesired);
} else {
uint amountBOptimal = IDexFactory(factory).quote(amountADesired, reserveA, reserveB);
if (amountBOptimal <= amountBDesired) {
require(amountBOptimal >= amountBMin, 'DexRouter: INSUFFICIENT_B_AMOUNT');
(amountA, amountB) = (amountADesired, amountBOptimal);
} else {
uint amountAOptimal = IDexFactory(factory).quote(amountBDesired, reserveB, reserveA);
assert(amountAOptimal <= amountADesired);
require(amountAOptimal >= amountAMin, 'DexRouter: INSUFFICIENT_A_AMOUNT');
(amountA, amountB) = (amountAOptimal, amountBDesired);
}
}
}
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {
(amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);
address pair = pairFor(tokenA, tokenB);
TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);
TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);
liquidity = IDexPair(pair).mint(to);
}
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {
(amountToken, amountETH) = _addLiquidity(
token,
WETH,
amountTokenDesired,
msg.value,
amountTokenMin,
amountETHMin
);
address pair = pairFor(token, WETH);
TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);
IWETH(WETH).deposit{value : amountETH}();
assert(IWETH(WETH).transfer(pair, amountETH));
liquidity = IDexPair(pair).mint(to);
// refund dust eth, if any
if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);
}
// **** REMOVE LIQUIDITY ****
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {
address pair = pairFor(tokenA, tokenB);
IDexPair(pair).transferFrom(msg.sender, pair, liquidity);
// send liquidity to pair
(uint amount0, uint amount1) = IDexPair(pair).burn(to);
(address token0,) = IDexFactory(factory).sortTokens(tokenA, tokenB);
(amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);
require(amountA >= amountAMin, 'DexRouter: INSUFFICIENT_A_AMOUNT');
require(amountB >= amountBMin, 'DexRouter: INSUFFICIENT_B_AMOUNT');
}
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {
(amountToken, amountETH) = removeLiquidity(
token,
WETH,
liquidity,
amountTokenMin,
amountETHMin,
address(this),
deadline
);
TransferHelper.safeTransfer(token, to, amountToken);
IWETH(WETH).withdraw(amountETH);
TransferHelper.safeTransferETH(to, amountETH);
}
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external virtual override returns (uint amountA, uint amountB) {
address pair = pairFor(tokenA, tokenB);
uint value = approveMax ? uint(- 1) : liquidity;
IDexPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
(amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);
}
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external virtual override returns (uint amountToken, uint amountETH) {
address pair = pairFor(token, WETH);
uint value = approveMax ? uint(- 1) : liquidity;
IDexPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
(amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);
}
// **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) public virtual override ensure(deadline) returns (uint amountETH) {
(, amountETH) = removeLiquidity(
token,
WETH,
liquidity,
amountTokenMin,
amountETHMin,
address(this),
deadline
);
TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));
IWETH(WETH).withdraw(amountETH);
TransferHelper.safeTransferETH(to, amountETH);
}
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external virtual override returns (uint amountETH) {
address pair = pairFor(token, WETH);
uint value = approveMax ? uint(- 1) : liquidity;
IDexPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(
token, liquidity, amountTokenMin, amountETHMin, to, deadline
);
}
// **** SWAP ****
// requires the initial amount to have already been sent to the first pair
function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {
for (uint i; i < path.length - 1; i++) {
(address input, address output) = (path[i], path[i + 1]);
(address token0,) = IDexFactory(factory).sortTokens(input, output);
uint amountOut = amounts[i + 1];
if (swapMining != address(0)) {
ISwapMining(swapMining).swap(msg.sender, input, output, amountOut);
}
(uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));
address to = i < path.length - 2 ? pairFor(output, path[i + 2]) : _to;
IDexPair(pairFor(input, output)).swap(amount0Out, amount1Out, to, new bytes(0));
}
}
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external virtual override ensure(deadline) returns (uint[] memory amounts) {
amounts = IDexFactory(factory).getAmountsOut(amountIn, path);
require(amounts[amounts.length - 1] >= amountOutMin, 'DexRouter: INSUFFICIENT_OUTPUT_AMOUNT');
TransferHelper.safeTransferFrom(
path[0], msg.sender, pairFor(path[0], path[1]), amounts[0]
);
_swap(amounts, path, to);
}
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external virtual override ensure(deadline) returns (uint[] memory amounts) {
amounts = IDexFactory(factory).getAmountsIn(amountOut, path);
require(amounts[0] <= amountInMax, 'DexRouter: EXCESSIVE_INPUT_AMOUNT');
TransferHelper.safeTransferFrom(
path[0], msg.sender, pairFor(path[0], path[1]), amounts[0]
);
_swap(amounts, path, to);
}
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
virtual
override
payable
ensure(deadline)
returns (uint[] memory amounts)
{
require(path[0] == WETH, 'DexRouter: INVALID_PATH');
amounts = IDexFactory(factory).getAmountsOut(msg.value, path);
require(amounts[amounts.length - 1] >= amountOutMin, 'DexRouter: INSUFFICIENT_OUTPUT_AMOUNT');
IWETH(WETH).deposit{value : amounts[0]}();
assert(IWETH(WETH).transfer(pairFor(path[0], path[1]), amounts[0]));
_swap(amounts, path, to);
}
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
virtual
override
ensure(deadline)
returns (uint[] memory amounts)
{
require(path[path.length - 1] == WETH, 'DexRouter: INVALID_PATH');
amounts = IDexFactory(factory).getAmountsIn(amountOut, path);
require(amounts[0] <= amountInMax, 'DexRouter: EXCESSIVE_INPUT_AMOUNT');
TransferHelper.safeTransferFrom(
path[0], msg.sender, pairFor(path[0], path[1]), amounts[0]
);
_swap(amounts, path, address(this));
IWETH(WETH).withdraw(amounts[amounts.length - 1]);
TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);
}
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
virtual
override
ensure(deadline)
returns (uint[] memory amounts)
{
require(path[path.length - 1] == WETH, 'DexRouter: INVALID_PATH');
amounts = IDexFactory(factory).getAmountsOut(amountIn, path);
require(amounts[amounts.length - 1] >= amountOutMin, 'DexRouter: INSUFFICIENT_OUTPUT_AMOUNT');
TransferHelper.safeTransferFrom(
path[0], msg.sender, pairFor(path[0], path[1]), amounts[0]
);
_swap(amounts, path, address(this));
IWETH(WETH).withdraw(amounts[amounts.length - 1]);
TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);
}
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
virtual
override
payable
ensure(deadline)
returns (uint[] memory amounts)
{
require(path[0] == WETH, 'DexRouter: INVALID_PATH');
amounts = IDexFactory(factory).getAmountsIn(amountOut, path);
require(amounts[0] <= msg.value, 'DexRouter: EXCESSIVE_INPUT_AMOUNT');
IWETH(WETH).deposit{value : amounts[0]}();
assert(IWETH(WETH).transfer(pairFor(path[0], path[1]), amounts[0]));
_swap(amounts, path, to);
// refund dust eth, if any
if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);
}
// **** SWAP (supporting fee-on-transfer tokens) ****
// requires the initial amount to have already been sent to the first pair
function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {
for (uint i; i < path.length - 1; i++) {
(address input, address output) = (path[i], path[i + 1]);
(address token0,) = IDexFactory(factory).sortTokens(input, output);
IDexPair pair = IDexPair(pairFor(input, output));
uint amountInput;
uint amountOutput;
{// scope to avoid stack too deep errors
(uint reserve0, uint reserve1,) = pair.getReserves();
(uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);
amountOutput = IDexFactory(factory).getAmountOut(amountInput, reserveInput, reserveOutput);
}
if (swapMining != address(0)) {
ISwapMining(swapMining).swap(msg.sender, input, output, amountOutput);
}
(uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));
address to = i < path.length - 2 ? pairFor(output, path[i + 2]) : _to;
pair.swap(amount0Out, amount1Out, to, new bytes(0));
}
}
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external virtual override ensure(deadline) {
TransferHelper.safeTransferFrom(
path[0], msg.sender, pairFor(path[0], path[1]), amountIn
);
uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);
_swapSupportingFeeOnTransferTokens(path, to);
require(
IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
'DexRouter: INSUFFICIENT_OUTPUT_AMOUNT'
);
}
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
)
external
virtual
override
payable
ensure(deadline)
{
require(path[0] == WETH, 'DexRouter: INVALID_PATH');
uint amountIn = msg.value;
IWETH(WETH).deposit{value : amountIn}();
assert(IWETH(WETH).transfer(pairFor(path[0], path[1]), amountIn));
uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);
_swapSupportingFeeOnTransferTokens(path, to);
require(
IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
'DexRouter: INSUFFICIENT_OUTPUT_AMOUNT'
);
}
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
)
external
virtual
override
ensure(deadline)
{
require(path[path.length - 1] == WETH, 'DexRouter: INVALID_PATH');
TransferHelper.safeTransferFrom(
path[0], msg.sender, pairFor(path[0], path[1]), amountIn
);
_swapSupportingFeeOnTransferTokens(path, address(this));
uint amountOut = IERC20(WETH).balanceOf(address(this));
require(amountOut >= amountOutMin, 'DexRouter: INSUFFICIENT_OUTPUT_AMOUNT');
IWETH(WETH).withdraw(amountOut);
TransferHelper.safeTransferETH(to, amountOut);
}
// **** LIBRARY FUNCTIONS ****
function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) public view override returns (uint256 amountB) {
return IDexFactory(factory).quote(amountA, reserveA, reserveB);
}
function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) public view override returns (uint256 amountOut){
return IDexFactory(factory).getAmountOut(amountIn, reserveIn, reserveOut);
}
function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) public view override returns (uint256 amountIn){
return IDexFactory(factory).getAmountIn(amountOut, reserveIn, reserveOut);
}
function getAmountsOut(uint256 amountIn, address[] memory path) public view override returns (uint256[] memory amounts){
return IDexFactory(factory).getAmountsOut(amountIn, path);
}
function getAmountsIn(uint256 amountOut, address[] memory path) public view override returns (uint256[] memory amounts){
return IDexFactory(factory).getAmountsIn(amountOut, path);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"pairFor","outputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETHSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_swapMininng","type":"address"}],"name":"setSwapMining","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapETHForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapMining","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c06040523480156200001157600080fd5b50604051620050e7380380620050e7833981810160405260408110156200003757600080fd5b5080516020909101516000620000556001600160e01b03620000be16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606092831b8116608052911b1660a052620000c2565b3390565b60805160601c60a05160601c614f10620001d7600039806101e15280610e465280610e81528061100d528061130e52806118c05280611bae5280612012528061210c52806121c2528061229052806124db528061256352806129a95280612a8d5280612b3c5280612c085280612c9d5280612d1152806132eb5280613651528061368652806136ba528061372e52806138ce5280613b155280613b9d525080610f1752806110c352806113ff52806116945280611976528061234c52806126835280612768528061292e52806129cf528061309f52806132395280613285528061398952806140ef52806144515280614625528061494052806149ee5280614a955280614b315280614c3c5250614f106000f3fe6080604052600436106101d15760003560e01c80638803dbee116100f7578063baa2abde11610095578063e8e3370011610064578063e8e3370014610c7c578063f2fde38b14610cfc578063f305d71914610d2f578063fb3bdb4114610d755761020a565b8063baa2abde14610ae2578063c45a015514610b3f578063d06ca61f14610b54578063ded9382a14610c095761020a565b8063ad5c4648116100d1578063ad5c4648146109c0578063ad615dec146109d5578063af2979eb14610a0b578063b6f9de9514610a5e5761020a565b80638803dbee146108da5780638da5cb5b1461097057806396ed28f9146109855761020a565b80634e5eda111161016f578063715018a61161013e578063715018a614610775578063791ac9471461078a5780637ff36ab51461082057806385f8c259146108a45761020a565b80634e5eda11146106085780634f887183146106395780635b0d59841461066c5780635c11d795146106df5761020a565b80631f00ca74116101ab5780631f00ca74146103a95780632195995c1461045e57806338ed1739146104dc5780634a25d94a146105725761020a565b806302751cec1461020f578063054d50d41461027b57806318cbafe5146102c35761020a565b3661020a57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461020857fe5b005b600080fd5b34801561021b57600080fd5b50610262600480360360c081101561023257600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610df9565b6040805192835260208301919091528051918290030190f35b34801561028757600080fd5b506102b16004803603606081101561029e57600080fd5b5080359060208101359060400135610f13565b60408051918252519081900360200190f35b3480156102cf57600080fd5b50610359600480360360a08110156102e657600080fd5b813591602081013591810190606081016040820135600160201b81111561030c57600080fd5b82018360208201111561031e57600080fd5b803590602001918460208302840111600160201b8311171561033f57600080fd5b91935091506001600160a01b038135169060200135610fbd565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561039557818101518382015260200161037d565b505050509050019250505060405180910390f35b3480156103b557600080fd5b50610359600480360360408110156103cc57600080fd5b81359190810190604081016020820135600160201b8111156103ed57600080fd5b8201836020820111156103ff57600080fd5b803590602001918460208302840111600160201b8311171561042057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506113cd945050505050565b34801561046a57600080fd5b50610262600480360361016081101561048257600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611548565b3480156104e857600080fd5b50610359600480360360a08110156104ff57600080fd5b813591602081013591810190606081016040820135600160201b81111561052557600080fd5b82018360208201111561053757600080fd5b803590602001918460208302840111600160201b8311171561055857600080fd5b91935091506001600160a01b038135169060200135611621565b34801561057e57600080fd5b50610359600480360360a081101561059557600080fd5b813591602081013591810190606081016040820135600160201b8111156105bb57600080fd5b8201836020820111156105cd57600080fd5b803590602001918460208302840111600160201b831117156105ee57600080fd5b91935091506001600160a01b038135169060200135611870565b34801561061457600080fd5b5061061d611b00565b604080516001600160a01b039092168252519081900360200190f35b34801561064557600080fd5b506102086004803603602081101561065c57600080fd5b50356001600160a01b0316611b0f565b34801561067857600080fd5b506102b1600480360361014081101561069057600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611ba5565b3480156106eb57600080fd5b50610208600480360360a081101561070257600080fd5b813591602081013591810190606081016040820135600160201b81111561072857600080fd5b82018360208201111561073a57600080fd5b803590602001918460208302840111600160201b8311171561075b57600080fd5b91935091506001600160a01b038135169060200135611c92565b34801561078157600080fd5b50610208611f06565b34801561079657600080fd5b50610208600480360360a08110156107ad57600080fd5b813591602081013591810190606081016040820135600160201b8111156107d357600080fd5b8201836020820111156107e557600080fd5b803590602001918460208302840111600160201b8311171561080657600080fd5b91935091506001600160a01b038135169060200135611fc4565b6103596004803603608081101561083657600080fd5b81359190810190604081016020820135600160201b81111561085757600080fd5b82018360208201111561086957600080fd5b803590602001918460208302840111600160201b8311171561088a57600080fd5b91935091506001600160a01b038135169060200135612248565b3480156108b057600080fd5b506102b1600480360360608110156108c757600080fd5b508035906020810135906040013561267f565b3480156108e657600080fd5b50610359600480360360a08110156108fd57600080fd5b813591602081013591810190606081016040820135600160201b81111561092357600080fd5b82018360208201111561093557600080fd5b803590602001918460208302840111600160201b8311171561095657600080fd5b91935091506001600160a01b0381351690602001356126f5565b34801561097c57600080fd5b5061061d6128f2565b34801561099157600080fd5b5061061d600480360360408110156109a857600080fd5b506001600160a01b0381358116916020013516612901565b3480156109cc57600080fd5b5061061d6129a7565b3480156109e157600080fd5b506102b1600480360360608110156109f857600080fd5b50803590602081013590604001356129cb565b348015610a1757600080fd5b506102b1600480360360c0811015610a2e57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612a41565b61020860048036036080811015610a7457600080fd5b81359190810190604081016020820135600160201b811115610a9557600080fd5b820183602082011115610aa757600080fd5b803590602001918460208302840111600160201b83111715610ac857600080fd5b91935091506001600160a01b038135169060200135612bc2565b348015610aee57600080fd5b50610262600480360360e0811015610b0557600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612f2d565b348015610b4b57600080fd5b5061061d613237565b348015610b6057600080fd5b5061035960048036036040811015610b7757600080fd5b81359190810190604081016020820135600160201b811115610b9857600080fd5b820183602082011115610baa57600080fd5b803590602001918460208302840111600160201b83111715610bcb57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061325b945050505050565b348015610c1557600080fd5b506102626004803603610140811015610c2d57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356132e0565b348015610c8857600080fd5b50610cde6004803603610100811015610ca057600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e001356133d3565b60408051938452602084019290925282820152519081900360600190f35b348015610d0857600080fd5b5061020860048036036020811015610d1f57600080fd5b50356001600160a01b03166134ee565b610cde600480360360c0811015610d4557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135613602565b61035960048036036080811015610d8b57600080fd5b81359190810190604081016020820135600160201b811115610dac57600080fd5b820183602082011115610dbe57600080fd5b803590602001918460208302840111600160201b83111715610ddf57600080fd5b91935091506001600160a01b038135169060200135613886565b6000808242811015610e40576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b610e6f897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612f2d565b9093509150610e7f898685613ceb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610ee557600080fd5b505af1158015610ef9573d6000803e3d6000fd5b50505050610f078583613e55565b50965096945050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663054d50d48585856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015610f8957600080fd5b505afa158015610f9d573d6000803e3d6000fd5b505050506040513d6020811015610fb357600080fd5b5051949350505050565b60608142811015611003576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686600019810181811061103d57fe5b905060200201356001600160a01b03166001600160a01b031614611096576040805162461bcd60e51b81526020600482015260176024820152600080516020614e53833981519152604482015290519081900360640190fd5b6040805163d06ca61f60e01b8152600481018a815260248201928352604482018890526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263d06ca61f928c928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b15801561113157600080fd5b505afa158015611145573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561116e57600080fd5b8101908080516040519392919084600160201b82111561118d57600080fd5b9083019060208201858111156111a257600080fd5b82518660208202830111600160201b821117156111be57600080fd5b82525081516020918201928201910280838360005b838110156111eb5781810151838201526020016111d3565b505050509050016040525050509150868260018451038151811061120b57fe5b602002602001015110156112505760405162461bcd60e51b8152600401808060200182810382526025815260200180614de86025913960400191505060405180910390fd5b6112cd8686600081811061126057fe5b905060200201356001600160a01b0316336112b38989600081811061128157fe5b905060200201356001600160a01b03168a8a600181811061129e57fe5b905060200201356001600160a01b0316612901565b856000815181106112c057fe5b6020026020010151613f4d565b61130c828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506140aa915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d8360018551038151811061134b57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561138957600080fd5b505af115801561139d573d6000803e3d6000fd5b505050506113c284836001855103815181106113b557fe5b6020026020010151613e55565b509695505050505050565b604080516307c0329d60e21b815260048101848152602482019283528351604483015283516060936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693631f00ca7493889388939192606401906020808601910280838360005b8381101561145557818101518382015260200161143d565b50505050905001935050505060006040518083038186803b15801561147957600080fd5b505afa15801561148d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156114b657600080fd5b8101908080516040519392919084600160201b8211156114d557600080fd5b9083019060208201858111156114ea57600080fd5b82518660208202830111600160201b8211171561150657600080fd5b82525081516020918201928201910280838360005b8381101561153357818101518382015260200161151b565b50505050905001604052505050905092915050565b60008060006115578e8e612901565b9050600087611566578c61156a565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156115e057600080fd5b505af11580156115f4573d6000803e3d6000fd5b505050506116078f8f8f8f8f8f8f612f2d565b809450819550505050509b509b9950505050505050505050565b60608142811015611667576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b6040805163d06ca61f60e01b8152600481018a815260248201928352604482018890526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263d06ca61f928c928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b15801561170257600080fd5b505afa158015611716573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561173f57600080fd5b8101908080516040519392919084600160201b82111561175e57600080fd5b90830190602082018581111561177357600080fd5b82518660208202830111600160201b8211171561178f57600080fd5b82525081516020918201928201910280838360005b838110156117bc5781810151838201526020016117a4565b50505050905001604052505050915086826001845103815181106117dc57fe5b602002602001015110156118215760405162461bcd60e51b8152600401808060200182810382526025815260200180614de86025913960400191505060405180910390fd5b6118318686600081811061126057fe5b6113c2828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506140aa915050565b606081428110156118b6576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868660001981018181106118f057fe5b905060200201356001600160a01b03166001600160a01b031614611949576040805162461bcd60e51b81526020600482015260176024820152600080516020614e53833981519152604482015290519081900360640190fd5b604080516307c0329d60e21b8152600481018a815260248201928352604482018890526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692631f00ca74928c928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b1580156119e457600080fd5b505afa1580156119f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611a2157600080fd5b8101908080516040519392919084600160201b821115611a4057600080fd5b908301906020820185811115611a5557600080fd5b82518660208202830111600160201b82111715611a7157600080fd5b82525081516020918201928201910280838360005b83811015611a9e578181015183820152602001611a86565b5050505090500160405250505091508682600081518110611abb57fe5b602002602001015111156112505760405162461bcd60e51b8152600401808060200182810382526021815260200180614e736021913960400191505060405180910390fd5b6001546001600160a01b031681565b611b17614408565b6001600160a01b0316611b286128f2565b6001600160a01b031614611b83576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080611bd28c7f0000000000000000000000000000000000000000000000000000000000000000612901565b9050600086611be1578b611be5565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015611c5b57600080fd5b505af1158015611c6f573d6000803e3d6000fd5b50505050611c818d8d8d8d8d8d612a41565b9d9c50505050505050505050505050565b8042811015611cd6576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b611d2a85856000818110611ce657fe5b905060200201356001600160a01b031633611d2488886000818110611d0757fe5b905060200201356001600160a01b03168989600181811061129e57fe5b8a613f4d565b600085856000198101818110611d3c57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611da157600080fd5b505afa158015611db5573d6000803e3d6000fd5b505050506040513d6020811015611dcb57600080fd5b50516040805160208881028281018201909352888252929350611e0d92909189918991829185019084908082843760009201919091525088925061440c915050565b86611ebf8288886000198101818110611e2257fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611e8757600080fd5b505afa158015611e9b573d6000803e3d6000fd5b505050506040513d6020811015611eb157600080fd5b50519063ffffffff6148c616565b1015611efc5760405162461bcd60e51b8152600401808060200182810382526025815260200180614de86025913960400191505060405180910390fd5b5050505050505050565b611f0e614408565b6001600160a01b0316611f1f6128f2565b6001600160a01b031614611f7a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b8042811015612008576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585600019810181811061204257fe5b905060200201356001600160a01b03166001600160a01b03161461209b576040805162461bcd60e51b81526020600482015260176024820152600080516020614e53833981519152604482015290519081900360640190fd5b6120ab85856000818110611ce657fe5b6120e985858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061440c915050565b604080516370a0823160e01b815230600482015290516000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b15801561215357600080fd5b505afa158015612167573d6000803e3d6000fd5b505050506040513d602081101561217d57600080fd5b50519050868110156121c05760405162461bcd60e51b8152600401808060200182810382526025815260200180614de86025913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561222657600080fd5b505af115801561223a573d6000803e3d6000fd5b50505050611efc8482613e55565b6060814281101561228e576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316868660008181106122c557fe5b905060200201356001600160a01b03166001600160a01b03161461231e576040805162461bcd60e51b81526020600482015260176024820152600080516020614e53833981519152604482015290519081900360640190fd5b6040805163d06ca61f60e01b8152346004820181815260248301938452604483018990526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169363d06ca61f938b928b929091606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b1580156123ba57600080fd5b505afa1580156123ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156123f757600080fd5b8101908080516040519392919084600160201b82111561241657600080fd5b90830190602082018581111561242b57600080fd5b82518660208202830111600160201b8211171561244757600080fd5b82525081516020918201928201910280838360005b8381101561247457818101518382015260200161245c565b505050509050016040525050509150868260018451038151811061249457fe5b602002602001015110156124d95760405162461bcd60e51b8152600401808060200182810382526025815260200180614de86025913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061251557fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561254857600080fd5b505af115801561255c573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6125a088886000818110611d0757fe5b846000815181106125ad57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561260457600080fd5b505af1158015612618573d6000803e3d6000fd5b505050506040513d602081101561262e57600080fd5b505161263657fe5b612675828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506140aa915050565b5095945050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166385f8c2598585856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015610f8957600080fd5b6060814281101561273b576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b604080516307c0329d60e21b8152600481018a815260248201928352604482018890526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692631f00ca74928c928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b1580156127d657600080fd5b505afa1580156127ea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561281357600080fd5b8101908080516040519392919084600160201b82111561283257600080fd5b90830190602082018581111561284757600080fd5b82518660208202830111600160201b8211171561286357600080fd5b82525081516020918201928201910280838360005b83811015612890578181015183820152602001612878565b50505050905001604052505050915086826000815181106128ad57fe5b602002602001015111156118215760405162461bcd60e51b8152600401808060200182810382526021815260200180614e736021913960400191505060405180910390fd5b6000546001600160a01b031690565b604080516396ed28f960e01b81526001600160a01b038481166004830152838116602483015291516000927f000000000000000000000000000000000000000000000000000000000000000016916396ed28f9916044808301926020929190829003018186803b15801561297457600080fd5b505afa158015612988573d6000803e3d6000fd5b505050506040513d602081101561299e57600080fd5b50519392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad615dec8585856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015610f8957600080fd5b60008142811015612a87576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b612ab6887f00000000000000000000000000000000000000000000000000000000000000008989893089612f2d565b604080516370a0823160e01b81523060048201529051919450612b3a92508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015612b0957600080fd5b505afa158015612b1d573d6000803e3d6000fd5b505050506040513d6020811015612b3357600080fd5b5051613ceb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612ba057600080fd5b505af1158015612bb4573d6000803e3d6000fd5b505050506113c28483613e55565b8042811015612c06576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685856000818110612c3d57fe5b905060200201356001600160a01b03166001600160a01b031614612c96576040805162461bcd60e51b81526020600482015260176024820152600080516020614e53833981519152604482015290519081900360640190fd5b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612cf657600080fd5b505af1158015612d0a573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb612d4e88886000818110611d0757fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612d9e57600080fd5b505af1158015612db2573d6000803e3d6000fd5b505050506040513d6020811015612dc857600080fd5b5051612dd057fe5b600086866000198101818110612de257fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612e4757600080fd5b505afa158015612e5b573d6000803e3d6000fd5b505050506040513d6020811015612e7157600080fd5b50516040805160208981028281018201909352898252929350612eb39290918a918a91829185019084908082843760009201919091525089925061440c915050565b87611ebf8289896000198101818110612ec857fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611e8757600080fd5b6000808242811015612f74576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b6000612f808b8b612901565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612fdb57600080fd5b505af1158015612fef573d6000803e3d6000fd5b505050506040513d602081101561300557600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561305257600080fd5b505af1158015613066573d6000803e3d6000fd5b505050506040513d604081101561307c57600080fd5b8101908080519060200190929190805190602001909291905050509150915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663544caa568f8f6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b0316815260200192505050604080518083038186803b15801561312c57600080fd5b505afa158015613140573d6000803e3d6000fd5b505050506040513d604081101561315657600080fd5b505190506001600160a01b038e811690821614613174578183613177565b82825b90975095508a8710156131d1576040805162461bcd60e51b815260206004820181905260248201527f446578526f757465723a20494e53554646494349454e545f415f414d4f554e54604482015290519081900360640190fd5b89861015613226576040805162461bcd60e51b815260206004820181905260248201527f446578526f757465723a20494e53554646494349454e545f425f414d4f554e54604482015290519081900360640190fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6040805163d06ca61f60e01b815260048101848152602482019283528351604483015283516060937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169363d06ca61f9388938893919260640190602080860191028083836000831561145557818101518382015260200161143d565b600080600061330f8d7f0000000000000000000000000000000000000000000000000000000000000000612901565b905060008761331e578c613322565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561339857600080fd5b505af11580156133ac573d6000803e3d6000fd5b505050506133be8e8e8e8e8e8e610df9565b909f909e509c50505050505050505050505050565b6000806000834281101561341c576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b61342a8c8c8c8c8c8c61490f565b9094509250600061343b8d8d612901565b90506134498d338388613f4d565b6134558c338387613f4d565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156134ad57600080fd5b505af11580156134c1573d6000803e3d6000fd5b505050506040513d60208110156134d757600080fd5b5051949d939c50939a509198505050505050505050565b6134f6614408565b6001600160a01b03166135076128f2565b6001600160a01b031614613562576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166135a75760405162461bcd60e51b8152600401808060200182810382526026815260200180614e0d6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000834281101561364b576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b6136798a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c61490f565b909450925060006136aa8b7f0000000000000000000000000000000000000000000000000000000000000000612901565b90506136b88b338388613f4d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561371357600080fd5b505af1158015613727573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156137ac57600080fd5b505af11580156137c0573d6000803e3d6000fd5b505050506040513d60208110156137d657600080fd5b50516137de57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561383657600080fd5b505af115801561384a573d6000803e3d6000fd5b505050506040513d602081101561386057600080fd5b50519250348410156138785761387833853403613e55565b505096509650969350505050565b606081428110156138cc576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168686600081811061390357fe5b905060200201356001600160a01b03166001600160a01b03161461395c576040805162461bcd60e51b81526020600482015260176024820152600080516020614e53833981519152604482015290519081900360640190fd5b604080516307c0329d60e21b81526004810189815260248201928352604482018890526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692631f00ca74928b928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b1580156139f757600080fd5b505afa158015613a0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613a3457600080fd5b8101908080516040519392919084600160201b821115613a5357600080fd5b908301906020820185811115613a6857600080fd5b82518660208202830111600160201b82111715613a8457600080fd5b82525081516020918201928201910280838360005b83811015613ab1578181015183820152602001613a99565b5050505090500160405250505091503482600081518110613ace57fe5b60200260200101511115613b135760405162461bcd60e51b8152600401808060200182810382526021815260200180614e736021913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db083600081518110613b4f57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015613b8257600080fd5b505af1158015613b96573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb613bda88886000818110611d0757fe5b84600081518110613be757fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613c3e57600080fd5b505af1158015613c52573d6000803e3d6000fd5b505050506040513d6020811015613c6857600080fd5b5051613c7057fe5b613caf828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506140aa915050565b81600081518110613cbc57fe5b6020026020010151341115612675576126753383600081518110613cdc57fe5b60200260200101513403613e55565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310613d685780518252601f199092019160209182019101613d49565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613dca576040519150601f19603f3d011682016040523d82523d6000602084013e613dcf565b606091505b5091509150818015613dfd575080511580613dfd5750808060200190516020811015613dfa57600080fd5b50515b613e4e576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613ea15780518252601f199092019160209182019101613e82565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613f03576040519150601f19603f3d011682016040523d82523d6000602084013e613f08565b606091505b5050905080613f485760405162461bcd60e51b8152600401808060200182810382526023815260200180614e946023913960400191505060405180910390fd5b505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b60208310613fd25780518252601f199092019160209182019101613fb3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614034576040519150601f19603f3d011682016040523d82523d6000602084013e614039565b606091505b5091509150818015614067575080511580614067575080806020019051602081101561406457600080fd5b50515b6140a25760405162461bcd60e51b8152600401808060200182810382526024815260200180614eb76024913960400191505060405180910390fd5b505050505050565b60005b6001835103811015614402576000808483815181106140c857fe5b60200260200101518584600101815181106140df57fe5b60200260200101519150915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663544caa5684846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b0316815260200192505050604080518083038186803b15801561417c57600080fd5b505afa158015614190573d6000803e3d6000fd5b505050506040513d60408110156141a657600080fd5b505187519091506000908890600187019081106141bf57fe5b60209081029190910101516001549091506001600160a01b03161561426f576001546040805163152cf14360e31b81523360048201526001600160a01b0387811660248301528681166044830152606482018590529151919092169163a9678a189160848083019260209291908290030181600087803b15801561424257600080fd5b505af1158015614256573d6000803e3d6000fd5b505050506040513d602081101561426c57600080fd5b50505b600080836001600160a01b0316866001600160a01b03161461429357826000614297565b6000835b91509150600060028a510388106142ae57886142ce565b6142ce868b8a600201815181106142c157fe5b6020026020010151612901565b90506142da8787612901565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015614317576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614388578181015183820152602001614370565b50505050905090810190601f1680156143b55780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156143d757600080fd5b505af11580156143eb573d6000803e3d6000fd5b5050600190990198506140ad975050505050505050565b50505050565b3390565b60005b6001835103811015613f485760008084838151811061442a57fe5b602002602001015185846001018151811061444157fe5b60200260200101519150915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663544caa5684846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b0316815260200192505050604080518083038186803b1580156144de57600080fd5b505afa1580156144f2573d6000803e3d6000fd5b505050506040513d604081101561450857600080fd5b5051905060006145188484612901565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561455957600080fd5b505afa15801561456d573d6000803e3d6000fd5b505050506040513d606081101561458357600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a8116908916146145c05782846145c3565b83835b91509150614621828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611e8757600080fd5b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663054d50d48784846040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b15801561469757600080fd5b505afa1580156146ab573d6000803e3d6000fd5b505050506040513d60208110156146c157600080fd5b50516001549095506001600160a01b031615935061476e92505050576001546040805163152cf14360e31b81523360048201526001600160a01b0389811660248301528881166044830152606482018590529151919092169163a9678a189160848083019260209291908290030181600087803b15801561474157600080fd5b505af1158015614755573d6000803e3d6000fd5b505050506040513d602081101561476b57600080fd5b50505b600080856001600160a01b0316886001600160a01b03161461479257826000614796565b6000835b91509150600060028c51038a106147ad578a6147c0565b6147c0888d8c600201815181106142c157fe5b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b8381101561484a578181015183820152602001614832565b50505050905090810190601f1680156148775780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561489957600080fd5b505af11580156148ad573d6000803e3d6000fd5b50506001909b019a5061440f9950505050505050505050565b600061490883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614d50565b9392505050565b6040805163e6a4390560e01b81526001600160a01b03888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b15801561498957600080fd5b505afa15801561499d573d6000803e3d6000fd5b505050506040513d60208110156149b357600080fd5b50516001600160a01b03161415614a6657604080516364e329cb60e11b81526001600160a01b038a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b158015614a3957600080fd5b505af1158015614a4d573d6000803e3d6000fd5b505050506040513d6020811015614a6357600080fd5b50505b6040805163354aedbd60e21b81526001600160a01b038a811660048301528981166024830152825160009384937f00000000000000000000000000000000000000000000000000000000000000009093169263d52bb6f49260448083019392829003018186803b158015614ad957600080fd5b505afa158015614aed573d6000803e3d6000fd5b505050506040513d6040811015614b0357600080fd5b508051602090910151909250905081158015614b1d575080155b15614b2d57879350869250614d43565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad615dec8a85856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015614ba357600080fd5b505afa158015614bb7573d6000803e3d6000fd5b505050506040513d6020811015614bcd57600080fd5b50519050878111614c385785811015614c2d576040805162461bcd60e51b815260206004820181905260248201527f446578526f757465723a20494e53554646494349454e545f425f414d4f554e54604482015290519081900360640190fd5b889450925082614d41565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad615dec8a85876040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015614cae57600080fd5b505afa158015614cc2573d6000803e3d6000fd5b505050506040513d6020811015614cd857600080fd5b5051905089811115614ce657fe5b87811015614d3b576040805162461bcd60e51b815260206004820181905260248201527f446578526f757465723a20494e53554646494349454e545f415f414d4f554e54604482015290519081900360640190fd5b94508793505b505b5050965096945050505050565b60008184841115614ddf5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614da4578181015183820152602001614d8c565b50505050905090810190601f168015614dd15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe446578526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373446578526f757465723a20455850495245440000000000000000000000000000446578526f757465723a20494e56414c49445f50415448000000000000000000446578526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c45445472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a2646970667358221220329bc08e6481b2b9619fdd75805899b7bad1cc16a28c2964ad44270d580aa6dc64736f6c63430006060033000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad2000000000000000000000000acc15dc74880c9944775448304b263d191c6077f
Deployed Bytecode
0x6080604052600436106101d15760003560e01c80638803dbee116100f7578063baa2abde11610095578063e8e3370011610064578063e8e3370014610c7c578063f2fde38b14610cfc578063f305d71914610d2f578063fb3bdb4114610d755761020a565b8063baa2abde14610ae2578063c45a015514610b3f578063d06ca61f14610b54578063ded9382a14610c095761020a565b8063ad5c4648116100d1578063ad5c4648146109c0578063ad615dec146109d5578063af2979eb14610a0b578063b6f9de9514610a5e5761020a565b80638803dbee146108da5780638da5cb5b1461097057806396ed28f9146109855761020a565b80634e5eda111161016f578063715018a61161013e578063715018a614610775578063791ac9471461078a5780637ff36ab51461082057806385f8c259146108a45761020a565b80634e5eda11146106085780634f887183146106395780635b0d59841461066c5780635c11d795146106df5761020a565b80631f00ca74116101ab5780631f00ca74146103a95780632195995c1461045e57806338ed1739146104dc5780634a25d94a146105725761020a565b806302751cec1461020f578063054d50d41461027b57806318cbafe5146102c35761020a565b3661020a57336001600160a01b037f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f161461020857fe5b005b600080fd5b34801561021b57600080fd5b50610262600480360360c081101561023257600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610df9565b6040805192835260208301919091528051918290030190f35b34801561028757600080fd5b506102b16004803603606081101561029e57600080fd5b5080359060208101359060400135610f13565b60408051918252519081900360200190f35b3480156102cf57600080fd5b50610359600480360360a08110156102e657600080fd5b813591602081013591810190606081016040820135600160201b81111561030c57600080fd5b82018360208201111561031e57600080fd5b803590602001918460208302840111600160201b8311171561033f57600080fd5b91935091506001600160a01b038135169060200135610fbd565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561039557818101518382015260200161037d565b505050509050019250505060405180910390f35b3480156103b557600080fd5b50610359600480360360408110156103cc57600080fd5b81359190810190604081016020820135600160201b8111156103ed57600080fd5b8201836020820111156103ff57600080fd5b803590602001918460208302840111600160201b8311171561042057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506113cd945050505050565b34801561046a57600080fd5b50610262600480360361016081101561048257600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611548565b3480156104e857600080fd5b50610359600480360360a08110156104ff57600080fd5b813591602081013591810190606081016040820135600160201b81111561052557600080fd5b82018360208201111561053757600080fd5b803590602001918460208302840111600160201b8311171561055857600080fd5b91935091506001600160a01b038135169060200135611621565b34801561057e57600080fd5b50610359600480360360a081101561059557600080fd5b813591602081013591810190606081016040820135600160201b8111156105bb57600080fd5b8201836020820111156105cd57600080fd5b803590602001918460208302840111600160201b831117156105ee57600080fd5b91935091506001600160a01b038135169060200135611870565b34801561061457600080fd5b5061061d611b00565b604080516001600160a01b039092168252519081900360200190f35b34801561064557600080fd5b506102086004803603602081101561065c57600080fd5b50356001600160a01b0316611b0f565b34801561067857600080fd5b506102b1600480360361014081101561069057600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611ba5565b3480156106eb57600080fd5b50610208600480360360a081101561070257600080fd5b813591602081013591810190606081016040820135600160201b81111561072857600080fd5b82018360208201111561073a57600080fd5b803590602001918460208302840111600160201b8311171561075b57600080fd5b91935091506001600160a01b038135169060200135611c92565b34801561078157600080fd5b50610208611f06565b34801561079657600080fd5b50610208600480360360a08110156107ad57600080fd5b813591602081013591810190606081016040820135600160201b8111156107d357600080fd5b8201836020820111156107e557600080fd5b803590602001918460208302840111600160201b8311171561080657600080fd5b91935091506001600160a01b038135169060200135611fc4565b6103596004803603608081101561083657600080fd5b81359190810190604081016020820135600160201b81111561085757600080fd5b82018360208201111561086957600080fd5b803590602001918460208302840111600160201b8311171561088a57600080fd5b91935091506001600160a01b038135169060200135612248565b3480156108b057600080fd5b506102b1600480360360608110156108c757600080fd5b508035906020810135906040013561267f565b3480156108e657600080fd5b50610359600480360360a08110156108fd57600080fd5b813591602081013591810190606081016040820135600160201b81111561092357600080fd5b82018360208201111561093557600080fd5b803590602001918460208302840111600160201b8311171561095657600080fd5b91935091506001600160a01b0381351690602001356126f5565b34801561097c57600080fd5b5061061d6128f2565b34801561099157600080fd5b5061061d600480360360408110156109a857600080fd5b506001600160a01b0381358116916020013516612901565b3480156109cc57600080fd5b5061061d6129a7565b3480156109e157600080fd5b506102b1600480360360608110156109f857600080fd5b50803590602081013590604001356129cb565b348015610a1757600080fd5b506102b1600480360360c0811015610a2e57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612a41565b61020860048036036080811015610a7457600080fd5b81359190810190604081016020820135600160201b811115610a9557600080fd5b820183602082011115610aa757600080fd5b803590602001918460208302840111600160201b83111715610ac857600080fd5b91935091506001600160a01b038135169060200135612bc2565b348015610aee57600080fd5b50610262600480360360e0811015610b0557600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612f2d565b348015610b4b57600080fd5b5061061d613237565b348015610b6057600080fd5b5061035960048036036040811015610b7757600080fd5b81359190810190604081016020820135600160201b811115610b9857600080fd5b820183602082011115610baa57600080fd5b803590602001918460208302840111600160201b83111715610bcb57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061325b945050505050565b348015610c1557600080fd5b506102626004803603610140811015610c2d57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356132e0565b348015610c8857600080fd5b50610cde6004803603610100811015610ca057600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e001356133d3565b60408051938452602084019290925282820152519081900360600190f35b348015610d0857600080fd5b5061020860048036036020811015610d1f57600080fd5b50356001600160a01b03166134ee565b610cde600480360360c0811015610d4557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135613602565b61035960048036036080811015610d8b57600080fd5b81359190810190604081016020820135600160201b811115610dac57600080fd5b820183602082011115610dbe57600080fd5b803590602001918460208302840111600160201b83111715610ddf57600080fd5b91935091506001600160a01b038135169060200135613886565b6000808242811015610e40576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b610e6f897f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f8a8a8a308a612f2d565b9093509150610e7f898685613ceb565b7f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610ee557600080fd5b505af1158015610ef9573d6000803e3d6000fd5b50505050610f078583613e55565b50965096945050505050565b60007f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad26001600160a01b031663054d50d48585856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015610f8957600080fd5b505afa158015610f9d573d6000803e3d6000fd5b505050506040513d6020811015610fb357600080fd5b5051949350505050565b60608142811015611003576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f168686600019810181811061103d57fe5b905060200201356001600160a01b03166001600160a01b031614611096576040805162461bcd60e51b81526020600482015260176024820152600080516020614e53833981519152604482015290519081900360640190fd5b6040805163d06ca61f60e01b8152600481018a815260248201928352604482018890526001600160a01b037f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad2169263d06ca61f928c928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b15801561113157600080fd5b505afa158015611145573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561116e57600080fd5b8101908080516040519392919084600160201b82111561118d57600080fd5b9083019060208201858111156111a257600080fd5b82518660208202830111600160201b821117156111be57600080fd5b82525081516020918201928201910280838360005b838110156111eb5781810151838201526020016111d3565b505050509050016040525050509150868260018451038151811061120b57fe5b602002602001015110156112505760405162461bcd60e51b8152600401808060200182810382526025815260200180614de86025913960400191505060405180910390fd5b6112cd8686600081811061126057fe5b905060200201356001600160a01b0316336112b38989600081811061128157fe5b905060200201356001600160a01b03168a8a600181811061129e57fe5b905060200201356001600160a01b0316612901565b856000815181106112c057fe5b6020026020010151613f4d565b61130c828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506140aa915050565b7f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b0316632e1a7d4d8360018551038151811061134b57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561138957600080fd5b505af115801561139d573d6000803e3d6000fd5b505050506113c284836001855103815181106113b557fe5b6020026020010151613e55565b509695505050505050565b604080516307c0329d60e21b815260048101848152602482019283528351604483015283516060936001600160a01b037f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad21693631f00ca7493889388939192606401906020808601910280838360005b8381101561145557818101518382015260200161143d565b50505050905001935050505060006040518083038186803b15801561147957600080fd5b505afa15801561148d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156114b657600080fd5b8101908080516040519392919084600160201b8211156114d557600080fd5b9083019060208201858111156114ea57600080fd5b82518660208202830111600160201b8211171561150657600080fd5b82525081516020918201928201910280838360005b8381101561153357818101518382015260200161151b565b50505050905001604052505050905092915050565b60008060006115578e8e612901565b9050600087611566578c61156a565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156115e057600080fd5b505af11580156115f4573d6000803e3d6000fd5b505050506116078f8f8f8f8f8f8f612f2d565b809450819550505050509b509b9950505050505050505050565b60608142811015611667576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b6040805163d06ca61f60e01b8152600481018a815260248201928352604482018890526001600160a01b037f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad2169263d06ca61f928c928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b15801561170257600080fd5b505afa158015611716573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561173f57600080fd5b8101908080516040519392919084600160201b82111561175e57600080fd5b90830190602082018581111561177357600080fd5b82518660208202830111600160201b8211171561178f57600080fd5b82525081516020918201928201910280838360005b838110156117bc5781810151838201526020016117a4565b50505050905001604052505050915086826001845103815181106117dc57fe5b602002602001015110156118215760405162461bcd60e51b8152600401808060200182810382526025815260200180614de86025913960400191505060405180910390fd5b6118318686600081811061126057fe5b6113c2828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506140aa915050565b606081428110156118b6576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f16868660001981018181106118f057fe5b905060200201356001600160a01b03166001600160a01b031614611949576040805162461bcd60e51b81526020600482015260176024820152600080516020614e53833981519152604482015290519081900360640190fd5b604080516307c0329d60e21b8152600481018a815260248201928352604482018890526001600160a01b037f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad21692631f00ca74928c928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b1580156119e457600080fd5b505afa1580156119f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611a2157600080fd5b8101908080516040519392919084600160201b821115611a4057600080fd5b908301906020820185811115611a5557600080fd5b82518660208202830111600160201b82111715611a7157600080fd5b82525081516020918201928201910280838360005b83811015611a9e578181015183820152602001611a86565b5050505090500160405250505091508682600081518110611abb57fe5b602002602001015111156112505760405162461bcd60e51b8152600401808060200182810382526021815260200180614e736021913960400191505060405180910390fd5b6001546001600160a01b031681565b611b17614408565b6001600160a01b0316611b286128f2565b6001600160a01b031614611b83576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080611bd28c7f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f612901565b9050600086611be1578b611be5565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015611c5b57600080fd5b505af1158015611c6f573d6000803e3d6000fd5b50505050611c818d8d8d8d8d8d612a41565b9d9c50505050505050505050505050565b8042811015611cd6576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b611d2a85856000818110611ce657fe5b905060200201356001600160a01b031633611d2488886000818110611d0757fe5b905060200201356001600160a01b03168989600181811061129e57fe5b8a613f4d565b600085856000198101818110611d3c57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611da157600080fd5b505afa158015611db5573d6000803e3d6000fd5b505050506040513d6020811015611dcb57600080fd5b50516040805160208881028281018201909352888252929350611e0d92909189918991829185019084908082843760009201919091525088925061440c915050565b86611ebf8288886000198101818110611e2257fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611e8757600080fd5b505afa158015611e9b573d6000803e3d6000fd5b505050506040513d6020811015611eb157600080fd5b50519063ffffffff6148c616565b1015611efc5760405162461bcd60e51b8152600401808060200182810382526025815260200180614de86025913960400191505060405180910390fd5b5050505050505050565b611f0e614408565b6001600160a01b0316611f1f6128f2565b6001600160a01b031614611f7a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b8042811015612008576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f168585600019810181811061204257fe5b905060200201356001600160a01b03166001600160a01b03161461209b576040805162461bcd60e51b81526020600482015260176024820152600080516020614e53833981519152604482015290519081900360640190fd5b6120ab85856000818110611ce657fe5b6120e985858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061440c915050565b604080516370a0823160e01b815230600482015290516000916001600160a01b037f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f16916370a0823191602480820192602092909190829003018186803b15801561215357600080fd5b505afa158015612167573d6000803e3d6000fd5b505050506040513d602081101561217d57600080fd5b50519050868110156121c05760405162461bcd60e51b8152600401808060200182810382526025815260200180614de86025913960400191505060405180910390fd5b7f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561222657600080fd5b505af115801561223a573d6000803e3d6000fd5b50505050611efc8482613e55565b6060814281101561228e576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b7f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b0316868660008181106122c557fe5b905060200201356001600160a01b03166001600160a01b03161461231e576040805162461bcd60e51b81526020600482015260176024820152600080516020614e53833981519152604482015290519081900360640190fd5b6040805163d06ca61f60e01b8152346004820181815260248301938452604483018990526001600160a01b037f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad2169363d06ca61f938b928b929091606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b1580156123ba57600080fd5b505afa1580156123ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156123f757600080fd5b8101908080516040519392919084600160201b82111561241657600080fd5b90830190602082018581111561242b57600080fd5b82518660208202830111600160201b8211171561244757600080fd5b82525081516020918201928201910280838360005b8381101561247457818101518382015260200161245c565b505050509050016040525050509150868260018451038151811061249457fe5b602002602001015110156124d95760405162461bcd60e51b8152600401808060200182810382526025815260200180614de86025913960400191505060405180910390fd5b7f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b031663d0e30db08360008151811061251557fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561254857600080fd5b505af115801561255c573d6000803e3d6000fd5b50505050507f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b031663a9059cbb6125a088886000818110611d0757fe5b846000815181106125ad57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561260457600080fd5b505af1158015612618573d6000803e3d6000fd5b505050506040513d602081101561262e57600080fd5b505161263657fe5b612675828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506140aa915050565b5095945050505050565b60007f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad26001600160a01b03166385f8c2598585856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015610f8957600080fd5b6060814281101561273b576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b604080516307c0329d60e21b8152600481018a815260248201928352604482018890526001600160a01b037f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad21692631f00ca74928c928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b1580156127d657600080fd5b505afa1580156127ea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561281357600080fd5b8101908080516040519392919084600160201b82111561283257600080fd5b90830190602082018581111561284757600080fd5b82518660208202830111600160201b8211171561286357600080fd5b82525081516020918201928201910280838360005b83811015612890578181015183820152602001612878565b50505050905001604052505050915086826000815181106128ad57fe5b602002602001015111156118215760405162461bcd60e51b8152600401808060200182810382526021815260200180614e736021913960400191505060405180910390fd5b6000546001600160a01b031690565b604080516396ed28f960e01b81526001600160a01b038481166004830152838116602483015291516000927f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad216916396ed28f9916044808301926020929190829003018186803b15801561297457600080fd5b505afa158015612988573d6000803e3d6000fd5b505050506040513d602081101561299e57600080fd5b50519392505050565b7f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f81565b60007f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad26001600160a01b031663ad615dec8585856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015610f8957600080fd5b60008142811015612a87576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b612ab6887f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f8989893089612f2d565b604080516370a0823160e01b81523060048201529051919450612b3a92508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015612b0957600080fd5b505afa158015612b1d573d6000803e3d6000fd5b505050506040513d6020811015612b3357600080fd5b5051613ceb565b7f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612ba057600080fd5b505af1158015612bb4573d6000803e3d6000fd5b505050506113c28483613e55565b8042811015612c06576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b7f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b031685856000818110612c3d57fe5b905060200201356001600160a01b03166001600160a01b031614612c96576040805162461bcd60e51b81526020600482015260176024820152600080516020614e53833981519152604482015290519081900360640190fd5b60003490507f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612cf657600080fd5b505af1158015612d0a573d6000803e3d6000fd5b50505050507f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b031663a9059cbb612d4e88886000818110611d0757fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612d9e57600080fd5b505af1158015612db2573d6000803e3d6000fd5b505050506040513d6020811015612dc857600080fd5b5051612dd057fe5b600086866000198101818110612de257fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612e4757600080fd5b505afa158015612e5b573d6000803e3d6000fd5b505050506040513d6020811015612e7157600080fd5b50516040805160208981028281018201909352898252929350612eb39290918a918a91829185019084908082843760009201919091525089925061440c915050565b87611ebf8289896000198101818110612ec857fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611e8757600080fd5b6000808242811015612f74576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b6000612f808b8b612901565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612fdb57600080fd5b505af1158015612fef573d6000803e3d6000fd5b505050506040513d602081101561300557600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561305257600080fd5b505af1158015613066573d6000803e3d6000fd5b505050506040513d604081101561307c57600080fd5b8101908080519060200190929190805190602001909291905050509150915060007f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad26001600160a01b031663544caa568f8f6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b0316815260200192505050604080518083038186803b15801561312c57600080fd5b505afa158015613140573d6000803e3d6000fd5b505050506040513d604081101561315657600080fd5b505190506001600160a01b038e811690821614613174578183613177565b82825b90975095508a8710156131d1576040805162461bcd60e51b815260206004820181905260248201527f446578526f757465723a20494e53554646494349454e545f415f414d4f554e54604482015290519081900360640190fd5b89861015613226576040805162461bcd60e51b815260206004820181905260248201527f446578526f757465723a20494e53554646494349454e545f425f414d4f554e54604482015290519081900360640190fd5b505050505097509795505050505050565b7f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad281565b6040805163d06ca61f60e01b815260048101848152602482019283528351604483015283516060937f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad26001600160a01b03169363d06ca61f9388938893919260640190602080860191028083836000831561145557818101518382015260200161143d565b600080600061330f8d7f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f612901565b905060008761331e578c613322565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561339857600080fd5b505af11580156133ac573d6000803e3d6000fd5b505050506133be8e8e8e8e8e8e610df9565b909f909e509c50505050505050505050505050565b6000806000834281101561341c576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b61342a8c8c8c8c8c8c61490f565b9094509250600061343b8d8d612901565b90506134498d338388613f4d565b6134558c338387613f4d565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156134ad57600080fd5b505af11580156134c1573d6000803e3d6000fd5b505050506040513d60208110156134d757600080fd5b5051949d939c50939a509198505050505050505050565b6134f6614408565b6001600160a01b03166135076128f2565b6001600160a01b031614613562576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166135a75760405162461bcd60e51b8152600401808060200182810382526026815260200180614e0d6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000834281101561364b576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b6136798a7f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f8b348c8c61490f565b909450925060006136aa8b7f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f612901565b90506136b88b338388613f4d565b7f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561371357600080fd5b505af1158015613727573d6000803e3d6000fd5b50505050507f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156137ac57600080fd5b505af11580156137c0573d6000803e3d6000fd5b505050506040513d60208110156137d657600080fd5b50516137de57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561383657600080fd5b505af115801561384a573d6000803e3d6000fd5b505050506040513d602081101561386057600080fd5b50519250348410156138785761387833853403613e55565b505096509650969350505050565b606081428110156138cc576040805162461bcd60e51b81526020600482015260126024820152600080516020614e33833981519152604482015290519081900360640190fd5b7f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b03168686600081811061390357fe5b905060200201356001600160a01b03166001600160a01b03161461395c576040805162461bcd60e51b81526020600482015260176024820152600080516020614e53833981519152604482015290519081900360640190fd5b604080516307c0329d60e21b81526004810189815260248201928352604482018890526001600160a01b037f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad21692631f00ca74928b928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b1580156139f757600080fd5b505afa158015613a0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613a3457600080fd5b8101908080516040519392919084600160201b821115613a5357600080fd5b908301906020820185811115613a6857600080fd5b82518660208202830111600160201b82111715613a8457600080fd5b82525081516020918201928201910280838360005b83811015613ab1578181015183820152602001613a99565b5050505090500160405250505091503482600081518110613ace57fe5b60200260200101511115613b135760405162461bcd60e51b8152600401808060200182810382526021815260200180614e736021913960400191505060405180910390fd5b7f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b031663d0e30db083600081518110613b4f57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015613b8257600080fd5b505af1158015613b96573d6000803e3d6000fd5b50505050507f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b031663a9059cbb613bda88886000818110611d0757fe5b84600081518110613be757fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613c3e57600080fd5b505af1158015613c52573d6000803e3d6000fd5b505050506040513d6020811015613c6857600080fd5b5051613c7057fe5b613caf828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506140aa915050565b81600081518110613cbc57fe5b6020026020010151341115612675576126753383600081518110613cdc57fe5b60200260200101513403613e55565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310613d685780518252601f199092019160209182019101613d49565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613dca576040519150601f19603f3d011682016040523d82523d6000602084013e613dcf565b606091505b5091509150818015613dfd575080511580613dfd5750808060200190516020811015613dfa57600080fd5b50515b613e4e576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613ea15780518252601f199092019160209182019101613e82565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613f03576040519150601f19603f3d011682016040523d82523d6000602084013e613f08565b606091505b5050905080613f485760405162461bcd60e51b8152600401808060200182810382526023815260200180614e946023913960400191505060405180910390fd5b505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b60208310613fd25780518252601f199092019160209182019101613fb3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614034576040519150601f19603f3d011682016040523d82523d6000602084013e614039565b606091505b5091509150818015614067575080511580614067575080806020019051602081101561406457600080fd5b50515b6140a25760405162461bcd60e51b8152600401808060200182810382526024815260200180614eb76024913960400191505060405180910390fd5b505050505050565b60005b6001835103811015614402576000808483815181106140c857fe5b60200260200101518584600101815181106140df57fe5b60200260200101519150915060007f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad26001600160a01b031663544caa5684846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b0316815260200192505050604080518083038186803b15801561417c57600080fd5b505afa158015614190573d6000803e3d6000fd5b505050506040513d60408110156141a657600080fd5b505187519091506000908890600187019081106141bf57fe5b60209081029190910101516001549091506001600160a01b03161561426f576001546040805163152cf14360e31b81523360048201526001600160a01b0387811660248301528681166044830152606482018590529151919092169163a9678a189160848083019260209291908290030181600087803b15801561424257600080fd5b505af1158015614256573d6000803e3d6000fd5b505050506040513d602081101561426c57600080fd5b50505b600080836001600160a01b0316866001600160a01b03161461429357826000614297565b6000835b91509150600060028a510388106142ae57886142ce565b6142ce868b8a600201815181106142c157fe5b6020026020010151612901565b90506142da8787612901565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015614317576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614388578181015183820152602001614370565b50505050905090810190601f1680156143b55780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156143d757600080fd5b505af11580156143eb573d6000803e3d6000fd5b5050600190990198506140ad975050505050505050565b50505050565b3390565b60005b6001835103811015613f485760008084838151811061442a57fe5b602002602001015185846001018151811061444157fe5b60200260200101519150915060007f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad26001600160a01b031663544caa5684846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b0316815260200192505050604080518083038186803b1580156144de57600080fd5b505afa1580156144f2573d6000803e3d6000fd5b505050506040513d604081101561450857600080fd5b5051905060006145188484612901565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561455957600080fd5b505afa15801561456d573d6000803e3d6000fd5b505050506040513d606081101561458357600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a8116908916146145c05782846145c3565b83835b91509150614621828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611e8757600080fd5b95507f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad26001600160a01b031663054d50d48784846040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b15801561469757600080fd5b505afa1580156146ab573d6000803e3d6000fd5b505050506040513d60208110156146c157600080fd5b50516001549095506001600160a01b031615935061476e92505050576001546040805163152cf14360e31b81523360048201526001600160a01b0389811660248301528881166044830152606482018590529151919092169163a9678a189160848083019260209291908290030181600087803b15801561474157600080fd5b505af1158015614755573d6000803e3d6000fd5b505050506040513d602081101561476b57600080fd5b50505b600080856001600160a01b0316886001600160a01b03161461479257826000614796565b6000835b91509150600060028c51038a106147ad578a6147c0565b6147c0888d8c600201815181106142c157fe5b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b8381101561484a578181015183820152602001614832565b50505050905090810190601f1680156148775780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561489957600080fd5b505af11580156148ad573d6000803e3d6000fd5b50506001909b019a5061440f9950505050505050505050565b600061490883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614d50565b9392505050565b6040805163e6a4390560e01b81526001600160a01b03888116600483015287811660248301529151600092839283927f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad29092169163e6a4390591604480820192602092909190829003018186803b15801561498957600080fd5b505afa15801561499d573d6000803e3d6000fd5b505050506040513d60208110156149b357600080fd5b50516001600160a01b03161415614a6657604080516364e329cb60e11b81526001600160a01b038a81166004830152898116602483015291517f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad29092169163c9c65396916044808201926020929091908290030181600087803b158015614a3957600080fd5b505af1158015614a4d573d6000803e3d6000fd5b505050506040513d6020811015614a6357600080fd5b50505b6040805163354aedbd60e21b81526001600160a01b038a811660048301528981166024830152825160009384937f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad29093169263d52bb6f49260448083019392829003018186803b158015614ad957600080fd5b505afa158015614aed573d6000803e3d6000fd5b505050506040513d6040811015614b0357600080fd5b508051602090910151909250905081158015614b1d575080155b15614b2d57879350869250614d43565b60007f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad26001600160a01b031663ad615dec8a85856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015614ba357600080fd5b505afa158015614bb7573d6000803e3d6000fd5b505050506040513d6020811015614bcd57600080fd5b50519050878111614c385785811015614c2d576040805162461bcd60e51b815260206004820181905260248201527f446578526f757465723a20494e53554646494349454e545f425f414d4f554e54604482015290519081900360640190fd5b889450925082614d41565b60007f000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad26001600160a01b031663ad615dec8a85876040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015614cae57600080fd5b505afa158015614cc2573d6000803e3d6000fd5b505050506040513d6020811015614cd857600080fd5b5051905089811115614ce657fe5b87811015614d3b576040805162461bcd60e51b815260206004820181905260248201527f446578526f757465723a20494e53554646494349454e545f415f414d4f554e54604482015290519081900360640190fd5b94508793505b505b5050965096945050505050565b60008184841115614ddf5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614da4578181015183820152602001614d8c565b50505050905090810190601f168015614dd15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe446578526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373446578526f757465723a20455850495245440000000000000000000000000000446578526f757465723a20494e56414c49445f50415448000000000000000000446578526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c45445472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a2646970667358221220329bc08e6481b2b9619fdd75805899b7bad1cc16a28c2964ad44270d580aa6dc64736f6c63430006060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad2000000000000000000000000acc15dc74880c9944775448304b263d191c6077f
-----Decoded View---------------
Arg [0] : _factory (address): 0xBDFDb67C285bbAF19D360ba17E9D0Ed75D97AaD2
Arg [1] : _WETH (address): 0xAcc15dC74880C9944775448304B263D191c6077F
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000bdfdb67c285bbaf19d360ba17e9d0ed75d97aad2
Arg [1] : 000000000000000000000000acc15dc74880c9944775448304b263d191c6077f
Deployed Bytecode Sourcemap
18245:18113:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18758:10;-1:-1:-1;;;;;18772:4:0;18758:18;;18751:26;;;;18245:18113;;12:1:-1;9;2:12;23013:673:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23013:673:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;23013:673:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;35504:219;;5:9:-1;2:2;;;27:1;24;17:12;2:2;35504:219:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;35504:219:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;29961:787;;5:9:-1;2:2;;;27:1;24;17:12;2:2;29961:787:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;29961:787:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;29961:787:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;29961:787:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;29961:787:0;;-1:-1:-1;29961:787:0;-1:-1:-1;;;;;;29961:787:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;29961:787:0;;;;;;;;;;;;;;;;;36160:195;;5:9:-1;2:2;;;27:1;24;17:12;2:2;36160:195:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;36160:195:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;36160:195:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;36160:195:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;36160:195:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;36160:195:0;;-1:-1:-1;36160:195:0;;-1:-1:-1;;;;;36160:195:0:i;23694:646::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23694:646:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;23694:646:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;27373:591::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27373:591:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;27373:591:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;27373:591:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;27373:591:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;27373:591:0;;-1:-1:-1;27373:591:0;-1:-1:-1;;;;;;27373:591:0;;;;;;;;:::i;29188:765::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;29188:765:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;29188:765:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;29188:765:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;29188:765:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;29188:765:0;;-1:-1:-1;29188:765:0;-1:-1:-1;;;;;;29188:765:0;;;;;;;;:::i;18422:34::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18422:34:0;;;:::i;:::-;;;;-1:-1:-1;;;;;18422:34:0;;;;;;;;;;;;;;18954:106;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18954:106:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18954:106:0;-1:-1:-1;;;;;18954:106:0;;:::i;25773:687::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25773:687:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;25773:687:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;32976:682::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32976:682:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;32976:682:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;32976:682:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;32976:682:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;32976:682:0;;-1:-1:-1;32976:682:0;-1:-1:-1;;;;;;32976:682:0;;;;;;;;:::i;10827:148::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10827:148:0;;;:::i;34467:789::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34467:789:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;34467:789:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;34467:789:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;34467:789:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;34467:789:0;;-1:-1:-1;34467:789:0;-1:-1:-1;;;;;;34467:789:0;;;;;;;;:::i;28549:631::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;28549:631:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;28549:631:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;28549:631:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;28549:631:0;;-1:-1:-1;28549:631:0;-1:-1:-1;;;;;;28549:631:0;;;;;;;;:::i;35731:218::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;35731:218:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;35731:218:0;;;;;;;;;;;;:::i;27972:569::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27972:569:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;27972:569:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;27972:569:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;27972:569:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;27972:569:0;;-1:-1:-1;27972:569:0;-1:-1:-1;;;;;;27972:569:0;;;;;;;;:::i;10176:87::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10176:87:0;;;:::i;18793:153::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18793:153:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;18793:153:0;;;;;;;;;;:::i;18377:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18377:38:0;;;:::i;35300:196::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;35300:196:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;35300:196:0;;;;;;;;;;;;:::i;25065:700::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25065:700:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;25065:700:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;33666:793::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;33666:793:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;33666:793:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;33666:793:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;33666:793:0;;-1:-1:-1;33666:793:0;-1:-1:-1;;;;;;33666:793:0;;;;;;;;:::i;22177:828::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22177:828:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;22177:828:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18329:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18329:41:0;;;:::i;35957:195::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;35957:195:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;35957:195:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;35957:195:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;35957:195:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;35957:195:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;35957:195:0;;-1:-1:-1;35957:195:0;;-1:-1:-1;;;;;35957:195:0:i;24348:638::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24348:638:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;24348:638:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20477:706::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20477:706:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;20477:706:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;11130:244;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11130:244:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11130:244:0;-1:-1:-1;;;;;11130:244:0;;:::i;21191:943::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;21191:943:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;30756:744::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;30756:744:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;30756:744:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;30756:744:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;30756:744:0;;-1:-1:-1;30756:744:0;-1:-1:-1;;;;;;30756:744:0;;;;;;;;:::i;23013:673::-;23250:16;23268:14;23231:8;18527:15;18515:8;:27;;18507:58;;;;;-1:-1:-1;;;18507:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18507:58:0;;;;;;;;;;;;;;;23322:196:::1;23352:5;23372:4;23391:9;23415:14;23444:12;23479:4;23499:8;23322:15;:196::i;:::-;23295:223:::0;;-1:-1:-1;23295:223:0;-1:-1:-1;23529:51:0::1;23557:5:::0;23564:2;23295:223;23529:27:::1;:51::i;:::-;23597:4;-1:-1:-1::0;;;;;23591:20:0::1;;23612:9;23591:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;23591:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;23591:31:0;;;;23633:45;23664:2;23668:9;23633:30;:45::i;:::-;23013:673:::0;;;;;;;;;;:::o;35504:219::-;35613:17;35661:7;-1:-1:-1;;;;;35649:33:0;;35683:8;35693:9;35704:10;35649:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;35649:66:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35649:66:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;35649:66:0;;35504:219;-1:-1:-1;;;;35504:219:0:o;29961:787::-;30155:21;30131:8;18527:15;18515:8;:27;;18507:58;;;;;-1:-1:-1;;;18507:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18507:58:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;30227:4:0::1;30202:29;:4:::0;;-1:-1:-1;;30207:15:0;;30202:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;30202:21:0::1;-1:-1:-1::0;;;;;30202:29:0::1;;30194:65;;;::::0;;-1:-1:-1;;;30194:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;30194:65:0;;;;;;;;;;;;;::::1;;30280:50;::::0;;-1:-1:-1;;;30280:50:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;-1:-1:-1;;;;;30292:7:0::1;30280:34;::::0;::::1;::::0;30315:8;;30325:4;;;;30280:50;;30325:4;30280:50:::1;::::0;::::1;::::0;30325:4;30280:50;1:33:-1::1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;30280:50:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;30280:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;30280:50:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;30280:50:0;80:15:-1::0;;::::1;-1:-1:::0;;76:31:::1;65:43:::0;::::1;120:4;113:20:::0;15:2:::1;7:11:::0;::::1;4:2;;;31:1;28::::0;21:12:::1;4:2;30280:50:0;;;;;;;;;;;;;-1:-1:-1::0;;;14:3:::1;11:20;8:2;;;44:1;41::::0;34:12:::1;8:2;62:21:::0;;::::1;::::0;123:4:::1;114:14:::0;::::1;138:31:::0;;::::1;135:2;;;182:1;179::::0;172:12:::1;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1:::0;;;247:12:::1;244:29;233:116;230:2;;;362:1;359::::0;352:12:::1;230:2;373:25:::0;;-1:-1;30280:50:0;;421:4:-1::1;412:14:::0;;::::1;::::0;30280:50:0;::::1;::::0;::::1;::::0;412:14:-1;30280:50:0;23:1:-1::1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;30280:50:0;;;;;;;;::::0;::::1;;30270:60;;30380:12;30349:7;30374:1;30357:7;:14;:18;30349:27;;;;;;;;;;;;;;:43;;30341:93;;;;-1:-1:-1::0;;;30341:93:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30445:115;30491:4;;30496:1;30491:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;30491:7:0::1;30500:10;30512:25;30520:4;;30525:1;30520:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;30520:7:0::1;30529:4;;30534:1;30529:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;30529:7:0::1;30512;:25::i;:::-;30539:7;30547:1;30539:10;;;;;;;;;;;;;;30445:31;:115::i;:::-;30571:35;30577:7;30586:4;;30571:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;30600:4:0::1;::::0;-1:-1:-1;30571:5:0::1;::::0;-1:-1:-1;;30571:35:0:i:1;:::-;30623:4;-1:-1:-1::0;;;;;30617:20:0::1;;30638:7;30663:1;30646:7;:14;:18;30638:27;;;;;;;;;;;;;;30617:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;30617:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;30617:49:0;;;;30677:63;30708:2;30712:7;30737:1;30720:7;:14;:18;30712:27;;;;;;;;;;;;;;30677:30;:63::i;:::-;29961:787:::0;;;;;;;;;:::o;36160:195::-;36297:50;;;-1:-1:-1;;;36297:50:0;;;;;;;;;;;;;;;;;;;;;;36254:24;;-1:-1:-1;;;;;36309:7:0;36297:33;;;;36331:9;;36342:4;;36297:50;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;36297:50:0;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;36297:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36297:50:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;36297:50:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;15:2;7:11;;4:2;;;31:1;28;21:12;4:2;36297:50:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;36297:50:0;;421:4:-1;412:14;;;;36297:50:0;;;;;412:14:-1;36297:50:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;36297:50:0;;;;;;;;;;;36290:57;;36160:195;;;;:::o;23694:646::-;24000:12;24014;24039;24054:23;24062:6;24070;24054:7;:23::i;:::-;24039:38;;24088:10;24101;:34;;24126:9;24101:34;;;-1:-1:-1;;24101:34:0;24146:74;;;-1:-1:-1;;;24146:74:0;;24168:10;24146:74;;;;24188:4;24146:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24088:47;;-1:-1:-1;;;;;;24146:21:0;;;;;:74;;;;;-1:-1:-1;;24146:74:0;;;;;;;;-1:-1:-1;24146:21:0;:74;;;2:2:-1;;;;27:1;24;17:12;2:2;24146:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24146:74:0;;;;24252:80;24268:6;24276;24284:9;24295:10;24307;24319:2;24323:8;24252:15;:80::i;:::-;24231:101;;;;;;;;23694:646;;;;;;;;;;;;;;;;:::o;27373:591::-;27597:21;27578:8;18527:15;18515:8;:27;;18507:58;;;;;-1:-1:-1;;;18507:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18507:58:0;;;;;;;;;;;;;;;27641:50:::1;::::0;;-1:-1:-1;;;27641:50:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27653:7:0::1;27641:34;::::0;::::1;::::0;27676:8;;27686:4;;;;27641:50;;27686:4;27641:50:::1;::::0;::::1;::::0;27686:4;27641:50;1:33:-1::1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;27641:50:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;27641:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;27641:50:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;27641:50:0;80:15:-1::0;;::::1;-1:-1:::0;;76:31:::1;65:43:::0;::::1;120:4;113:20:::0;15:2:::1;7:11:::0;::::1;4:2;;;31:1;28::::0;21:12:::1;4:2;27641:50:0;;;;;;;;;;;;;-1:-1:-1::0;;;14:3:::1;11:20;8:2;;;44:1;41::::0;34:12:::1;8:2;62:21:::0;;::::1;::::0;123:4:::1;114:14:::0;::::1;138:31:::0;;::::1;135:2;;;182:1;179::::0;172:12:::1;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1:::0;;;247:12:::1;244:29;233:116;230:2;;;362:1;359::::0;352:12:::1;230:2;373:25:::0;;-1:-1;27641:50:0;;421:4:-1::1;412:14:::0;;::::1;::::0;27641:50:0;::::1;::::0;::::1;::::0;412:14:-1;27641:50:0;23:1:-1::1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;27641:50:0;;;;;;;;::::0;::::1;;27631:60;;27741:12;27710:7;27735:1;27718:7;:14;:18;27710:27;;;;;;;;;;;;;;:43;;27702:93;;;;-1:-1:-1::0;;;27702:93:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27806:115;27852:4;;27857:1;27852:7;;;;;;27806:115;27932:24;27938:7;27947:4;;27932:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;27953:2:0;;-1:-1:-1;27932:5:0::1;::::0;-1:-1:-1;;27932:24:0:i:1;29188:765::-:0;29382:21;29358:8;18527:15;18515:8;:27;;18507:58;;;;;-1:-1:-1;;;18507:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18507:58:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;29454:4:0::1;29429:29;:4:::0;;-1:-1:-1;;29434:15:0;;29429:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;29429:21:0::1;-1:-1:-1::0;;;;;29429:29:0::1;;29421:65;;;::::0;;-1:-1:-1;;;29421:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;29421:65:0;;;;;;;;;;;;;::::1;;29507:50;::::0;;-1:-1:-1;;;29507:50:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;-1:-1:-1;;;;;29519:7:0::1;29507:33;::::0;::::1;::::0;29541:9;;29552:4;;;;29507:50;;29552:4;29507:50:::1;::::0;::::1;::::0;29552:4;29507:50;1:33:-1::1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;29507:50:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;29507:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;29507:50:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;29507:50:0;80:15:-1::0;;::::1;-1:-1:::0;;76:31:::1;65:43:::0;::::1;120:4;113:20:::0;15:2:::1;7:11:::0;::::1;4:2;;;31:1;28::::0;21:12:::1;4:2;29507:50:0;;;;;;;;;;;;;-1:-1:-1::0;;;14:3:::1;11:20;8:2;;;44:1;41::::0;34:12:::1;8:2;62:21:::0;;::::1;::::0;123:4:::1;114:14:::0;::::1;138:31:::0;;::::1;135:2;;;182:1;179::::0;172:12:::1;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1:::0;;;247:12:::1;244:29;233:116;230:2;;;362:1;359::::0;352:12:::1;230:2;373:25:::0;;-1:-1;29507:50:0;;421:4:-1::1;412:14:::0;;::::1;::::0;29507:50:0;::::1;::::0;::::1;::::0;412:14:-1;29507:50:0;23:1:-1::1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;29507:50:0;;;;;;;;::::0;::::1;;29497:60;;29590:11;29576:7;29584:1;29576:10;;;;;;;;;;;;;;:25;;29568:71;;;;-1:-1:-1::0;;;29568:71:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18422:34:::0;;;-1:-1:-1;;;;;18422:34:0;;:::o;18954:106::-;10407:12;:10;:12::i;:::-;-1:-1:-1;;;;;10396:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10396:23:0;;10388:68;;;;;-1:-1:-1;;;10388:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19027:10:::1;:25:::0;;-1:-1:-1;;;;;;19027:25:0::1;-1:-1:-1::0;;;;;19027:25:0;;;::::1;::::0;;;::::1;::::0;;18954:106::o;25773:687::-;26091:14;26118:12;26133:20;26141:5;26148:4;26133:7;:20::i;:::-;26118:35;;26164:10;26177;:34;;26202:9;26177:34;;;-1:-1:-1;;26177:34:0;26222:74;;;-1:-1:-1;;;26222:74:0;;26244:10;26222:74;;;;26264:4;26222:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26164:47;;-1:-1:-1;;;;;;26222:21:0;;;;;:74;;;;;-1:-1:-1;;26222:74:0;;;;;;;;-1:-1:-1;26222:21:0;:74;;;2:2:-1;;;;27:1;24;17:12;2:2;26222:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26222:74:0;;;;26319:133;26381:5;26388:9;26399:14;26415:12;26429:2;26433:8;26319:47;:133::i;:::-;26307:145;25773:687;-1:-1:-1;;;;;;;;;;;;;25773:687:0:o;32976:682::-;33210:8;18527:15;18515:8;:27;;18507:58;;;;;-1:-1:-1;;;18507:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18507:58:0;;;;;;;;;;;;;;;33231:113:::1;33277:4;;33282:1;33277:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;33277:7:0::1;33286:10;33298:25;33306:4;;33311:1;33306:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;33306:7:0::1;33315:4;;33320:1;33315:7;;;;;;33298:25;33325:8;33231:31;:113::i;:::-;33355:18;33383:4:::0;;-1:-1:-1;;33388:15:0;;33383:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;33383:21:0::1;-1:-1:-1::0;;;;;33376:39:0::1;;33416:2;33376:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;33376:43:0::1;-1:-1:-1::0;;;;;33376:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;33376:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;33376:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;33376:43:0;33430:44:::1;::::0;;33376:43:::1;33430:44:::0;;::::1;::::0;;;;;;;;;;;33376:43;;-1:-1:-1;33430:44:0::1;::::0;;;33465:4;;;;;;33430:44;::::1;::::0;33465:4;;33430:44;33465:4;33430:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;33471:2:0;;-1:-1:-1;33430:34:0::1;::::0;-1:-1:-1;;33430:44:0:i:1;:::-;33573:12:::0;33507:62:::1;33555:13:::0;33514:4;;-1:-1:-1;;33519:15:0;;33514:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;33514:21:0::1;-1:-1:-1::0;;;;;33507:39:0::1;;33547:2;33507:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;33507:43:0::1;-1:-1:-1::0;;;;;33507:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;33507:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;33507:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;33507:43:0;;:62:::1;:47;:62;:::i;:::-;:78;;33485:165;;;;-1:-1:-1::0;;;33485:165:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18576:1;32976:682:::0;;;;;;;:::o;10827:148::-;10407:12;:10;:12::i;:::-;-1:-1:-1;;;;;10396:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10396:23:0;;10388:68;;;;;-1:-1:-1;;;10388:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10934:1:::1;10918:6:::0;;10897:40:::1;::::0;-1:-1:-1;;;;;10918:6:0;;::::1;::::0;10897:40:::1;::::0;10934:1;;10897:40:::1;10965:1;10948:19:::0;;-1:-1:-1;;;;;;10948:19:0::1;::::0;;10827:148::o;34467:789::-;34718:8;18527:15;18515:8;:27;;18507:58;;;;;-1:-1:-1;;;18507:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18507:58:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;34777:4:0::1;34752:29;:4:::0;;-1:-1:-1;;34757:15:0;;34752:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;34752:21:0::1;-1:-1:-1::0;;;;;34752:29:0::1;;34744:65;;;::::0;;-1:-1:-1;;;34744:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;34744:65:0;;;;;;;;;;;;;::::1;;34820:113;34866:4;;34871:1;34866:7;;;;;;34820:113;34944:55;34979:4;;34944:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;34993:4:0::1;::::0;-1:-1:-1;34944:34:0::1;::::0;-1:-1:-1;;34944:55:0:i:1;:::-;35027:37;::::0;;-1:-1:-1;;;35027:37:0;;35058:4:::1;35027:37;::::0;::::1;::::0;;;35010:14:::1;::::0;-1:-1:-1;;;;;35034:4:0::1;35027:22;::::0;::::1;::::0;:37;;;;;::::1;::::0;;;;;;;;;:22;:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;35027:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;35027:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;35027:37:0;;-1:-1:-1;35083:25:0;;::::1;;35075:75;;;;-1:-1:-1::0;;;35075:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35167:4;-1:-1:-1::0;;;;;35161:20:0::1;;35182:9;35161:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;35161:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;35161:31:0;;;;35203:45;35234:2;35238:9;35203:30;:45::i;28549:631::-:0;28741:21;28717:8;18527:15;18515:8;:27;;18507:58;;;;;-1:-1:-1;;;18507:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18507:58:0;;;;;;;;;;;;;;;28799:4:::1;-1:-1:-1::0;;;;;28788:15:0::1;:4;;28793:1;28788:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;28788:7:0::1;-1:-1:-1::0;;;;;28788:15:0::1;;28780:51;;;::::0;;-1:-1:-1;;;28780:51:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;28780:51:0;;;;;;;;;;;;;::::1;;28852;::::0;;-1:-1:-1;;;28852:51:0;;28887:9:::1;28852:51;::::0;::::1;::::0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28864:7:0::1;28852:34;::::0;::::1;::::0;28898:4;;;;28852:51;;;;28898:4;28852:51:::1;::::0;::::1;::::0;28898:4;28852:51;1:33:-1::1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;28852:51:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;28852:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;28852:51:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;28852:51:0;80:15:-1::0;;::::1;-1:-1:::0;;76:31:::1;65:43:::0;::::1;120:4;113:20:::0;15:2:::1;7:11:::0;::::1;4:2;;;31:1;28::::0;21:12:::1;4:2;28852:51:0;;;;;;;;;;;;;-1:-1:-1::0;;;14:3:::1;11:20;8:2;;;44:1;41::::0;34:12:::1;8:2;62:21:::0;;::::1;::::0;123:4:::1;114:14:::0;::::1;138:31:::0;;::::1;135:2;;;182:1;179::::0;172:12:::1;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1:::0;;;247:12:::1;244:29;233:116;230:2;;;362:1;359::::0;352:12:::1;230:2;373:25:::0;;-1:-1;28852:51:0;;421:4:-1::1;412:14:::0;;::::1;::::0;28852:51:0;::::1;::::0;::::1;::::0;412:14:-1;28852:51:0;23:1:-1::1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;28852:51:0;;;;;;;;::::0;::::1;;28842:61;;28953:12;28922:7;28947:1;28930:7;:14;:18;28922:27;;;;;;;;;;;;;;:43;;28914:93;;;;-1:-1:-1::0;;;28914:93:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29024:4;-1:-1:-1::0;;;;;29018:19:0::1;;29046:7;29054:1;29046:10;;;;;;;;;;;;;;29018:41;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;29018:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;29018:41:0;;;;;29083:4;-1:-1:-1::0;;;;;29077:20:0::1;;29098:25;29106:4;;29111:1;29106:7;;;;;;29098:25;29125:7;29133:1;29125:10;;;;;;;;;;;;;;29077:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;29077:59:0::1;-1:-1:-1::0;;;;;29077:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;29077:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;29077:59:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;29077:59:0;29070:67:::1;;;;29148:24;29154:7;29163:4;;29148:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;29169:2:0;;-1:-1:-1;29148:5:0::1;::::0;-1:-1:-1;;29148:24:0:i:1;:::-;28549:631:::0;;;;;;;;:::o;35731:218::-;35840:16;35887:7;-1:-1:-1;;;;;35875:32:0;;35908:9;35919;35930:10;35875:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;27972:569:0;28196:21;28177:8;18527:15;18515:8;:27;;18507:58;;;;;-1:-1:-1;;;18507:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18507:58:0;;;;;;;;;;;;;;;28240:50:::1;::::0;;-1:-1:-1;;;28240:50:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28252:7:0::1;28240:33;::::0;::::1;::::0;28274:9;;28285:4;;;;28240:50;;28285:4;28240:50:::1;::::0;::::1;::::0;28285:4;28240:50;1:33:-1::1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;28240:50:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;28240:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;28240:50:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;28240:50:0;80:15:-1::0;;::::1;-1:-1:::0;;76:31:::1;65:43:::0;::::1;120:4;113:20:::0;15:2:::1;7:11:::0;::::1;4:2;;;31:1;28::::0;21:12:::1;4:2;28240:50:0;;;;;;;;;;;;;-1:-1:-1::0;;;14:3:::1;11:20;8:2;;;44:1;41::::0;34:12:::1;8:2;62:21:::0;;::::1;::::0;123:4:::1;114:14:::0;::::1;138:31:::0;;::::1;135:2;;;182:1;179::::0;172:12:::1;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1:::0;;;247:12:::1;244:29;233:116;230:2;;;362:1;359::::0;352:12:::1;230:2;373:25:::0;;-1:-1;28240:50:0;;421:4:-1::1;412:14:::0;;::::1;::::0;28240:50:0;::::1;::::0;::::1;::::0;412:14:-1;28240:50:0;23:1:-1::1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;28240:50:0;;;;;;;;::::0;::::1;;28230:60;;28323:11;28309:7;28317:1;28309:10;;;;;;;;;;;;;;:25;;28301:71;;;;-1:-1:-1::0;;;28301:71:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10176:87:::0;10222:7;10249:6;-1:-1:-1;;;;;10249:6:0;10176:87;:::o;18793:153::-;18894:44;;;-1:-1:-1;;;18894:44:0;;-1:-1:-1;;;;;18894:44:0;;;;;;;;;;;;;;;;18863:12;;18906:7;18894:28;;;;:44;;;;;;;;;;;;;;:28;:44;;;2:2:-1;;;;27:1;24;17:12;2:2;18894:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18894:44:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18894:44:0;;18793:153;-1:-1:-1;;;18793:153:0:o;18377:38::-;;;:::o;35300:196::-;35398:15;35445:7;-1:-1:-1;;;;;35433:26:0;;35460:7;35469:8;35479;35433:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;25065:700:0;25331:14;25312:8;18527:15;18515:8;:27;;18507:58;;;;;-1:-1:-1;;;18507:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18507:58:0;;;;;;;;;;;;;;;25374:196:::1;25404:5;25424:4;25443:9;25467:14;25496:12;25531:4;25551:8;25374:15;:196::i;:::-;25620:38;::::0;;-1:-1:-1;;;25620:38:0;;25652:4:::1;25620:38;::::0;::::1;::::0;;;25358:212;;-1:-1:-1;25581:78:0::1;::::0;-1:-1:-1;25609:5:0;;25616:2;;-1:-1:-1;;;;;25620:23:0;::::1;::::0;::::1;::::0;:38;;;;;::::1;::::0;;;;;;;;;:23;:38;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;25620:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;25620:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;25620:38:0;25581:27:::1;:78::i;:::-;25676:4;-1:-1:-1::0;;;;;25670:20:0::1;;25691:9;25670:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;25670:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;25670:31:0;;;;25712:45;25743:2;25747:9;25712:30;:45::i;33666:793::-:0;33906:8;18527:15;18515:8;:27;;18507:58;;;;;-1:-1:-1;;;18507:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18507:58:0;;;;;;;;;;;;;;;33951:4:::1;-1:-1:-1::0;;;;;33940:15:0::1;:4;;33945:1;33940:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;33940:7:0::1;-1:-1:-1::0;;;;;33940:15:0::1;;33932:51;;;::::0;;-1:-1:-1;;;33932:51:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;33932:51:0;;;;;;;;;;;;;::::1;;33994:13;34010:9;33994:25;;34036:4;-1:-1:-1::0;;;;;34030:19:0::1;;34058:8;34030:39;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;34030:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;34030:39:0;;;;;34093:4;-1:-1:-1::0;;;;;34087:20:0::1;;34108:25;34116:4;;34121:1;34116:7;;;;;;34108:25;34135:8;34087:57;;;;;;;;;;;;;-1:-1:-1::0;;;;;34087:57:0::1;-1:-1:-1::0;;;;;34087:57:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;34087:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;34087:57:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;34087:57:0;34080:65:::1;;;;34156:18;34184:4:::0;;-1:-1:-1;;34189:15:0;;34184:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;34184:21:0::1;-1:-1:-1::0;;;;;34177:39:0::1;;34217:2;34177:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;34177:43:0::1;-1:-1:-1::0;;;;;34177:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;34177:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;34177:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;34177:43:0;34231:44:::1;::::0;;34177:43:::1;34231:44:::0;;::::1;::::0;;;;;;;;;;;34177:43;;-1:-1:-1;34231:44:0::1;::::0;;;34266:4;;;;;;34231:44;::::1;::::0;34266:4;;34231:44;34266:4;34231:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;34272:2:0;;-1:-1:-1;34231:34:0::1;::::0;-1:-1:-1;;34231:44:0:i:1;:::-;34374:12:::0;34308:62:::1;34356:13:::0;34315:4;;-1:-1:-1;;34320:15:0;;34315:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;34315:21:0::1;-1:-1:-1::0;;;;;34308:39:0::1;;34348:2;34308:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;34308:43:0::1;-1:-1:-1::0;;;;;34308:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;22177:828:0::0;22431:12;22445;22412:8;18527:15;18515:8;:27;;18507:58;;;;;-1:-1:-1;;;18507:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18507:58:0;;;;;;;;;;;;;;;22470:12:::1;22485:23;22493:6;22501;22485:7;:23::i;:::-;22519:56;::::0;;-1:-1:-1;;;22519:56:0;;22547:10:::1;22519:56;::::0;::::1;::::0;-1:-1:-1;;;;;22519:27:0;::::1;:56:::0;;;;;;;;;;;;;;22470:38;;-1:-1:-1;22519:27:0;;::::1;::::0;:56;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;22519:27:0;:56;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;22519:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;22519:56:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;22652:23:0::1;::::0;;-1:-1:-1;;;22652:23:0;;-1:-1:-1;;;;;22652:23:0;;::::1;;::::0;::::1;::::0;;;22622:12:::1;::::0;;;22652:19;;::::1;::::0;::::1;::::0;:23;;;;;;;;;;;22622:12;22652:19;:23;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;22652:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;22652:23:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;22652:23:0;;;;;;;;;;;;;;;;;;;;;;;;;22621:54;;;;22687:14;22718:7;-1:-1:-1::0;;;;;22706:31:0::1;;22738:6;22746;22706:47;;;;;;;;;;;;;-1:-1:-1::0;;;;;22706:47:0::1;-1:-1:-1::0;;;;;22706:47:0::1;;;;;;-1:-1:-1::0;;;;;22706:47:0::1;-1:-1:-1::0;;;;;22706:47:0::1;;;;;;;;;;::::0;::::1;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;22706:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;22706:47:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;22706:47:0;;-1:-1:-1;;;;;;22785:16:0;;::::1;::::0;;::::1;;:58;;22826:7;22835;22785:58;;;22805:7;22814;22785:58;22764:79:::0;;-1:-1:-1;22764:79:0;-1:-1:-1;22862:21:0;;::::1;;22854:66;;;::::0;;-1:-1:-1;;;22854:66:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;22950:10;22939:7;:21;;22931:66;;;::::0;;-1:-1:-1;;;22931:66:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;18576:1;;;;22177:828:::0;;;;;;;;;;;:::o;18329:41::-;;;:::o;35957:195::-;36094:50;;;-1:-1:-1;;;36094:50:0;;;;;;;;;;;;;;;;;;;;;;36051:24;;36106:7;-1:-1:-1;;;;;36094:34:0;;;;:50;;;;;;;;;;;;;;;;;;-1:-1:-1;27:10;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;24348:638:0;24637:16;24655:14;24682:12;24697:20;24705:5;24712:4;24697:7;:20::i;:::-;24682:35;;24728:10;24741;:34;;24766:9;24741:34;;;-1:-1:-1;;24741:34:0;24786:74;;;-1:-1:-1;;;24786:74:0;;24808:10;24786:74;;;;24828:4;24786:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24728:47;;-1:-1:-1;;;;;;24786:21:0;;;;;:74;;;;;-1:-1:-1;;24786:74:0;;;;;;;;-1:-1:-1;24786:21:0;:74;;;2:2:-1;;;;27:1;24;17:12;2:2;24786:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24786:74:0;;;;24898:80;24917:5;24924:9;24935:14;24951:12;24965:2;24969:8;24898:18;:80::i;:::-;24871:107;;;;-1:-1:-1;24348:638:0;-1:-1:-1;;;;;;;;;;;;;24348:638:0:o;20477:706::-;20765:12;20779;20793:14;20746:8;18527:15;18515:8;:27;;18507:58;;;;;-1:-1:-1;;;18507:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18507:58:0;;;;;;;;;;;;;;;20841:85:::1;20855:6;20863;20871:14;20887;20903:10;20915;20841:13;:85::i;:::-;20820:106:::0;;-1:-1:-1;20820:106:0;-1:-1:-1;20937:12:0::1;20952:23;20960:6:::0;20968;20952:7:::1;:23::i;:::-;20937:38;;20986:66;21018:6;21026:10;21038:4;21044:7;20986:31;:66::i;:::-;21063;21095:6;21103:10;21115:4;21121:7;21063:31;:66::i;:::-;21161:4;-1:-1:-1::0;;;;;21152:19:0::1;;21172:2;21152:23;;;;;;;;;;;;;-1:-1:-1::0;;;;;21152:23:0::1;-1:-1:-1::0;;;;;21152:23:0::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;21152:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;21152:23:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;21152:23:0;20477:706;;;;-1:-1:-1;21152:23:0;;-1:-1:-1;20477:706:0;;-1:-1:-1;;;;;;;;;20477:706:0:o;11130:244::-;10407:12;:10;:12::i;:::-;-1:-1:-1;;;;;10396:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10396:23:0;;10388:68;;;;;-1:-1:-1;;;10388:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11219:22:0;::::1;11211:73;;;;-1:-1:-1::0;;;11211:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11321:6;::::0;;11300:38:::1;::::0;-1:-1:-1;;;;;11300:38:0;;::::1;::::0;11321:6;::::1;::::0;11300:38:::1;::::0;::::1;11349:6;:17:::0;;-1:-1:-1;;;;;;11349:17:0::1;-1:-1:-1::0;;;;;11349:17:0;;;::::1;::::0;;;::::1;::::0;;11130:244::o;21191:943::-;21444:16;21462:14;21478;21425:8;18527:15;18515:8;:27;;18507:58;;;;;-1:-1:-1;;;18507:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18507:58:0;;;;;;;;;;;;;;;21532:176:::1;21560:5;21580:4;21599:18;21632:9;21656:14;21685:12;21532:13;:176::i;:::-;21505:203:::0;;-1:-1:-1;21505:203:0;-1:-1:-1;21719:12:0::1;21734:20;21742:5:::0;21749:4:::1;21734:7;:20::i;:::-;21719:35;;21765:69;21797:5;21804:10;21816:4;21822:11;21765:31;:69::i;:::-;21851:4;-1:-1:-1::0;;;;;21845:19:0::1;;21873:9;21845:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;21845:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;21845:40:0;;;;;21909:4;-1:-1:-1::0;;;;;21903:20:0::1;;21924:4;21930:9;21903:37;;;;;;;;;;;;;-1:-1:-1::0;;;;;21903:37:0::1;-1:-1:-1::0;;;;;21903:37:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;21903:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;21903:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;21903:37:0;21896:45:::1;;;;21973:4;-1:-1:-1::0;;;;;21964:19:0::1;;21984:2;21964:23;;;;;;;;;;;;;-1:-1:-1::0;;;;;21964:23:0::1;-1:-1:-1::0;;;;;21964:23:0::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;21964:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;21964:23:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;21964:23:0;;-1:-1:-1;22038:9:0::1;:21:::0;-1:-1:-1;22034:92:0::1;;;22061:65;22092:10;22116:9;22104;:21;22061:30;:65::i;:::-;18576:1;21191:943:::0;;;;;;;;;;;:::o;30756:744::-;30945:21;30921:8;18527:15;18515:8;:27;;18507:58;;;;;-1:-1:-1;;;18507:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18507:58:0;;;;;;;;;;;;;;;31003:4:::1;-1:-1:-1::0;;;;;30992:15:0::1;:4;;30997:1;30992:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;30992:7:0::1;-1:-1:-1::0;;;;;30992:15:0::1;;30984:51;;;::::0;;-1:-1:-1;;;30984:51:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;30984:51:0;;;;;;;;;;;;;::::1;;31056:50;::::0;;-1:-1:-1;;;31056:50:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;-1:-1:-1;;;;;31068:7:0::1;31056:33;::::0;::::1;::::0;31090:9;;31101:4;;;;31056:50;;31101:4;31056:50:::1;::::0;::::1;::::0;31101:4;31056:50;1:33:-1::1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;31056:50:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;31056:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;31056:50:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;31056:50:0;80:15:-1::0;;::::1;-1:-1:::0;;76:31:::1;65:43:::0;::::1;120:4;113:20:::0;15:2:::1;7:11:::0;::::1;4:2;;;31:1;28::::0;21:12:::1;4:2;31056:50:0;;;;;;;;;;;;;-1:-1:-1::0;;;14:3:::1;11:20;8:2;;;44:1;41::::0;34:12:::1;8:2;62:21:::0;;::::1;::::0;123:4:::1;114:14:::0;::::1;138:31:::0;;::::1;135:2;;;182:1;179::::0;172:12:::1;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1:::0;;;247:12:::1;244:29;233:116;230:2;;;362:1;359::::0;352:12:::1;230:2;373:25:::0;;-1:-1;31056:50:0;;421:4:-1::1;412:14:::0;;::::1;::::0;31056:50:0;::::1;::::0;::::1;::::0;412:14:-1;31056:50:0;23:1:-1::1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;31056:50:0;;;;;;;;::::0;::::1;;31046:60;;31139:9;31125:7;31133:1;31125:10;;;;;;;;;;;;;;:23;;31117:69;;;;-1:-1:-1::0;;;31117:69:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31203:4;-1:-1:-1::0;;;;;31197:19:0::1;;31225:7;31233:1;31225:10;;;;;;;;;;;;;;31197:41;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;31197:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;31197:41:0;;;;;31262:4;-1:-1:-1::0;;;;;31256:20:0::1;;31277:25;31285:4;;31290:1;31285:7;;;;;;31277:25;31304:7;31312:1;31304:10;;;;;;;;;;;;;;31256:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;31256:59:0::1;-1:-1:-1::0;;;;;31256:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;31256:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;31256:59:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;31256:59:0;31249:67:::1;;;;31327:24;31333:7;31342:4;;31327:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;31348:2:0;;-1:-1:-1;31327:5:0::1;::::0;-1:-1:-1;;31327:24:0:i:1;:::-;31414:7;31422:1;31414:10;;;;;;;;;;;;;;31402:9;:22;31398:94;;;31426:66;31457:10;31481:7;31489:1;31481:10;;;;;;;;;;;;;;31469:9;:22;31426:30;:66::i;16271:361::-:0;16466:45;;;-1:-1:-1;;;;;16466:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;16466:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;16455:57:0;;;;16420:12;;16434:17;;16455:10;;;;16466:45;16455:57;;;25:18:-1;16455:57:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;16455:57:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;16419:93:0;;;;16531:7;:57;;;;-1:-1:-1;16543:11:0;;:16;;:44;;;16574:4;16563:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16563:24:0;16543:44;16523:101;;;;;-1:-1:-1;;;16523:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16271:361;;;;;:::o;17050:197::-;17160:12;;;17120;17160;;;;;;;;;-1:-1:-1;;;;;17137:7:0;;;17153:5;;17137:36;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;17137:36:0;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;17119:54:0;;;17192:7;17184:55;;;;-1:-1:-1;;;17184:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17050:197;;;:::o;16640:402::-;16865:51;;;-1:-1:-1;;;;;16865:51:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;16865:51:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;16854:63:0;;;;16819:12;;16833:17;;16854:10;;;;16865:51;16854:63;;;25:18:-1;16854:63:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;16854:63:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;16818:99:0;;;;16936:7;:57;;;;-1:-1:-1;16948:11:0;;:16;;:44;;;16979:4;16968:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16968:24:0;16948:44;16928:106;;;;-1:-1:-1;;;16928:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16640:402;;;;;;:::o;26571:794::-;26678:6;26673:685;26704:1;26690:4;:11;:15;26686:1;:19;26673:685;;;26728:13;26743:14;26762:4;26767:1;26762:7;;;;;;;;;;;;;;26771:4;26776:1;26780;26776:5;26771:11;;;;;;;;;;;;;;26727:56;;;;26799:14;26830:7;-1:-1:-1;;;;;26818:31:0;;26850:5;26857:6;26818:46;;;;;;;;;;;;;-1:-1:-1;;;;;26818:46:0;-1:-1:-1;;;;;26818:46:0;;;;;;-1:-1:-1;;;;;26818:46:0;-1:-1:-1;;;;;26818:46:0;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26818:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26818:46:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26818:46:0;26896:14;;26818:46;;-1:-1:-1;26879:14:0;;26896:7;;26908:1;26904:5;;;26896:14;;;;;;;;;;;;;;;;26929:10;;26896:14;;-1:-1:-1;;;;;;26929:10:0;:24;26925:131;;26986:10;;26974:66;;;-1:-1:-1;;;26974:66:0;;27003:10;26974:66;;;;-1:-1:-1;;;;;26974:66:0;;;;;;;;;;;;;;;;;;;;;;26986:10;;;;;26974:28;;:66;;;;;;;;;;;;;;26986:10;;26974:66;;;2:2:-1;;;;27:1;24;17:12;2:2;26974:66:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26974:66:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;26925:131:0;27071:15;27088;27116:6;-1:-1:-1;;;;;27107:15:0;:5;-1:-1:-1;;;;;27107:15:0;;:61;;27149:9;27165:1;27107:61;;;27131:1;27135:9;27107:61;27070:98;;;;27183:10;27214:1;27200:4;:11;:15;27196:1;:19;:56;;27249:3;27196:56;;;27218:28;27226:6;27234:4;27239:1;27243;27239:5;27234:11;;;;;;;;;;;;;;27218:7;:28::i;:::-;27183:69;;27276:22;27284:5;27291:6;27276:7;:22::i;:::-;-1:-1:-1;;;;;27267:37:0;;27305:10;27317;27329:2;27343:1;27333:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;27333:12:0;87:42:-1;143:17;;-1:-1;27333:12:0;;27267:79;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27267:79:0;-1:-1:-1;;;;;27267:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27267:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27267:79:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;26707:3:0;;;;;-1:-1:-1;26673:685:0;;-1:-1:-1;;;;;;;;26673:685:0;;;26571:794;;;:::o;9314:106::-;9402:10;9314:106;:::o;31647:1321::-;31760:6;31755:1206;31786:1;31772:4;:11;:15;31768:1;:19;31755:1206;;;31810:13;31825:14;31844:4;31849:1;31844:7;;;;;;;;;;;;;;31853:4;31858:1;31862;31858:5;31853:11;;;;;;;;;;;;;;31809:56;;;;31881:14;31912:7;-1:-1:-1;;;;;31900:31:0;;31932:5;31939:6;31900:46;;;;;;;;;;;;;-1:-1:-1;;;;;31900:46:0;-1:-1:-1;;;;;31900:46:0;;;;;;-1:-1:-1;;;;;31900:46:0;-1:-1:-1;;;;;31900:46:0;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;31900:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31900:46:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;31900:46:0;;-1:-1:-1;31961:13:0;31986:22;31994:5;32001:6;31986:7;:22::i;:::-;31961:48;;32024:16;32055:17;32146:13;32161;32179:4;-1:-1:-1;;;;;32179:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32179:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32179:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;32179:18:0;;;;;;;32145:52;;;;;-1:-1:-1;32145:52:0;;-1:-1:-1;32217:17:0;;-1:-1:-1;;;;;32258:15:0;;;;;;;:61;;32300:8;32310;32258:61;;;32277:8;32287;32258:61;32216:103;;;;32352:56;32395:12;32359:5;-1:-1:-1;;;;;32352:23:0;;32384:4;32352:38;;;;;;;;;;;;;-1:-1:-1;;;;;32352:38:0;-1:-1:-1;;;;;32352:38:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;32352:56:0;32338:70;;32454:7;-1:-1:-1;;;;;32442:33:0;;32476:11;32489:12;32503:13;32442:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32442:75:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32442:75:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;32442:75:0;32551:10;;32442:75;;-1:-1:-1;;;;;;32551:10:0;:24;;-1:-1:-1;32547:134:0;;-1:-1:-1;;;32547:134:0;32608:10;;32596:69;;;-1:-1:-1;;;32596:69:0;;32625:10;32596:69;;;;-1:-1:-1;;;;;32596:69:0;;;;;;;;;;;;;;;;;;;;;;32608:10;;;;;32596:28;;:69;;;;;;;;;;;;;;32608:10;;32596:69;;;2:2:-1;;;;27:1;24;17:12;2:2;32596:69:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32596:69:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;32547:134:0;32696:15;32713;32741:6;-1:-1:-1;;;;;32732:15:0;:5;-1:-1:-1;;;;;32732:15:0;;:67;;32777:12;32796:1;32732:67;;;32756:1;32760:12;32732:67;32695:104;;;;32814:10;32845:1;32831:4;:11;:15;32827:1;:19;:56;;32880:3;32827:56;;;32849:28;32857:6;32865:4;32870:1;32874;32870:5;32865:11;;;;;;;32849:28;32936:12;;;32946:1;32936:12;;;;;;;;;;-1:-1:-1;;;32898:51:0;;;;;;;;;;;;;;-1:-1:-1;;;;;32898:51:0;;;;;;;;;;;;;;;;;;;;;;32814:69;;-1:-1:-1;32898:9:0;;;;;;32908:10;;32920;;32814:69;;32936:12;;32898:51;;;;;;;;32936:12;;32898:51;;;;32936:12;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;32898:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32898:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;31789:3:0;;;;;-1:-1:-1;31755:1206:0;;-1:-1:-1;;;;;;;;;;31755:1206:0;11942:136;12000:7;12027:43;12031:1;12034;12027:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;12020:50;11942:136;-1:-1:-1;;;11942:136:0:o;19100:1369::-;19413:44;;;-1:-1:-1;;;19413:44:0;;-1:-1:-1;;;;;19413:44:0;;;;;;;;;;;;;;;;19318:12;;;;;;19425:7;19413:28;;;;;;:44;;;;;;;;;;;;;;;:28;:44;;;2:2:-1;;;;27:1;24;17:12;2:2;19413:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19413:44:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19413:44:0;-1:-1:-1;;;;;19413:58:0;;19409:138;;;19488:47;;;-1:-1:-1;;;19488:47:0;;-1:-1:-1;;;;;19488:47:0;;;;;;;;;;;;;;;;19500:7;19488:31;;;;;;:47;;;;;;;;;;;;;;;-1:-1:-1;19488:31:0;:47;;;2:2:-1;;;;27:1;24;17:12;2:2;19488:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19488:47:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;19409:138:0;19590:48;;;-1:-1:-1;;;19590:48:0;;-1:-1:-1;;;;;19590:48:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;19602:7:0;19590:32;;;;;;:48;;;;;;;;;;;:32;:48;;;2:2:-1;;;;27:1;24;17:12;2:2;19590:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19590:48:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19590:48:0;;;;;;;;;-1:-1:-1;19590:48:0;-1:-1:-1;19653:13:0;;:30;;;;-1:-1:-1;19670:13:0;;19653:30;19649:813;;;19722:14;;-1:-1:-1;19738:14:0;;-1:-1:-1;19649:813:0;;;19786:19;19820:7;-1:-1:-1;;;;;19808:26:0;;19835:14;19851:8;19861;19808:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19808:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19808:62:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19808:62:0;;-1:-1:-1;19889:32:0;;;19885:566;;19968:10;19950:14;:28;;19942:73;;;;;-1:-1:-1;;;19942:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20056:14;;-1:-1:-1;20072:14:0;-1:-1:-1;20072:14:0;19885:566;;;20128:19;20162:7;-1:-1:-1;;;;;20150:26:0;;20177:14;20193:8;20203;20150:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20150:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20150:62:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20150:62:0;;-1:-1:-1;20238:32:0;;;;20231:40;;;;20316:10;20298:14;:28;;20290:73;;;;;-1:-1:-1;;;20290:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20404:14;-1:-1:-1;20420:14:0;;-1:-1:-1;19885:566:0;19649:813;;19100:1369;;;;;;;;;;;:::o;12086:192::-;12172:7;12208:12;12200:6;;;;12192:29;;;;-1:-1:-1;;;12192:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12192:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12244:5:0;;;12086:192::o
Swarm Source
ipfs://329bc08e6481b2b9619fdd75805899b7bad1cc16a28c2964ad44270d580aa6dc
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in GLMR
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.