diff --git a/contracts/dex/DEX.sol b/contracts/dex/DEX.sol index 5f347e6..0425bd8 100644 --- a/contracts/dex/DEX.sol +++ b/contracts/dex/DEX.sol @@ -10,74 +10,115 @@ import {IDEX} from "./IDEX.sol"; /// @dev This contracts will interact with dex pallet contract DEX is IDEX { /// @dev The DEX precompile address. - address internal constant PRECOMPILE = address(0x0000000000000000000000000000000000000405); + address internal constant PRECOMPILE = + address(0x0000000000000000000000000000000000000405); /// @inheritdoc IDEX - function getLiquidityPool(address tokenA, address tokenB) public view override returns (uint256, uint256) { + function getLiquidityPool( + address tokenA, + address tokenB + ) public view override returns (uint256, uint256) { require(tokenA != address(0), "DEX: tokenA is zero address"); require(tokenB != address(0), "DEX: tokenB is zero address"); - (bool success, bytes memory returnData) = - PRECOMPILE.staticcall(abi.encodeWithSignature("getLiquidityPool(address,address)", tokenA, tokenB)); + (bool success, bytes memory returnData) = PRECOMPILE.staticcall( + abi.encodeWithSignature( + "getLiquidityPool(address,address)", + tokenA, + tokenB + ) + ); assembly { - if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) } + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } } return abi.decode(returnData, (uint256, uint256)); } /// @inheritdoc IDEX - function getLiquidityTokenAddress(address tokenA, address tokenB) public view override returns (address) { + function getLiquidityTokenAddress( + address tokenA, + address tokenB + ) public view override returns (address) { require(tokenA != address(0), "DEX: tokenA is zero address"); require(tokenB != address(0), "DEX: tokenB is zero address"); - (bool success, bytes memory returnData) = - PRECOMPILE.staticcall(abi.encodeWithSignature("getLiquidityTokenAddress(address,address)", tokenA, tokenB)); + (bool success, bytes memory returnData) = PRECOMPILE.staticcall( + abi.encodeWithSignature( + "getLiquidityTokenAddress(address,address)", + tokenA, + tokenB + ) + ); assembly { - if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) } + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } } return abi.decode(returnData, (address)); } /// @inheritdoc IDEX - function getSwapTargetAmount(address[] memory path, uint256 supplyAmount) public view override returns (uint256) { + function getSwapTargetAmount( + address[] memory path, + uint256 supplyAmount + ) public view override returns (uint256) { for (uint256 i = 0; i < path.length; i++) { require(path[i] != address(0), "DEX: token is zero address"); } require(supplyAmount != 0, "DEX: supplyAmount is zero"); - (bool success, bytes memory returnData) = - PRECOMPILE.staticcall(abi.encodeWithSignature("getSwapTargetAmount(address[],uint256)", path, supplyAmount)); + (bool success, bytes memory returnData) = PRECOMPILE.staticcall( + abi.encodeWithSignature( + "getSwapTargetAmount(address[],uint256)", + path, + supplyAmount + ) + ); assembly { - if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) } + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } } return abi.decode(returnData, (uint256)); } /// @inheritdoc IDEX - function getSwapSupplyAmount(address[] memory path, uint256 targetAmount) public view override returns (uint256) { + function getSwapSupplyAmount( + address[] memory path, + uint256 targetAmount + ) public view override returns (uint256) { for (uint256 i = 0; i < path.length; i++) { require(path[i] != address(0), "DEX: token is zero address"); } require(targetAmount != 0, "DEX: targetAmount is zero"); - (bool success, bytes memory returnData) = - PRECOMPILE.staticcall(abi.encodeWithSignature("getSwapSupplyAmount(address[],uint256)", path, targetAmount)); + (bool success, bytes memory returnData) = PRECOMPILE.staticcall( + abi.encodeWithSignature( + "getSwapSupplyAmount(address[],uint256)", + path, + targetAmount + ) + ); assembly { - if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) } + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } } return abi.decode(returnData, (uint256)); } /// @inheritdoc IDEX - function swapWithExactSupply(address[] memory path, uint256 supplyAmount, uint256 minTargetAmount) - public - override - returns (bool) - { + function swapWithExactSupply( + address[] memory path, + uint256 supplyAmount, + uint256 minTargetAmount + ) public override returns (bool) { for (uint256 i = 0; i < path.length; i++) { require(path[i] != address(0), "DEX: token is zero address"); } @@ -93,19 +134,26 @@ contract DEX is IDEX { ) ); assembly { - if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) } + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } } - emit Swaped(msg.sender, path, supplyAmount, abi.decode(returnData, (uint256))); + emit Swaped( + msg.sender, + path, + supplyAmount, + abi.decode(returnData, (uint256)) + ); return true; } /// @inheritdoc IDEX - function swapWithExactTarget(address[] memory path, uint256 targetAmount, uint256 maxSupplyAmount) - public - override - returns (bool) - { + function swapWithExactTarget( + address[] memory path, + uint256 targetAmount, + uint256 maxSupplyAmount + ) public override returns (bool) { for (uint256 i = 0; i < path.length; i++) { require(path[i] != address(0), "DEX: token is zero address"); } @@ -121,10 +169,17 @@ contract DEX is IDEX { ) ); assembly { - if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) } + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } } - emit Swaped(msg.sender, path, abi.decode(returnData, (uint256)), targetAmount); + emit Swaped( + msg.sender, + path, + abi.decode(returnData, (uint256)), + targetAmount + ); return true; } @@ -153,7 +208,9 @@ contract DEX is IDEX { ) ); assembly { - if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) } + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } } emit AddedLiquidity(msg.sender, tokenA, tokenB, maxAmountA, maxAmountB); @@ -184,7 +241,9 @@ contract DEX is IDEX { ) ); assembly { - if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) } + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } } emit RemovedLiquidity(msg.sender, tokenA, tokenB, removeShare); diff --git a/contracts/dex/DEXV2.sol b/contracts/dex/DEXV2.sol index ed926a6..39b1575 100644 --- a/contracts/dex/DEXV2.sol +++ b/contracts/dex/DEXV2.sol @@ -2,7 +2,6 @@ pragma solidity ^0.8.0; -import {IDEX} from "./IDEX.sol"; import {DEX} from "./DEX.sol"; import {IBootstrap} from "./IBootstrap.sol"; @@ -12,76 +11,107 @@ import {IBootstrap} from "./IBootstrap.sol"; /// @dev This contracts will interact with dex pallet contract DEXV2 is DEX, IBootstrap { /// @inheritdoc IBootstrap - function getProvisionPool(address tokenA, address tokenB) public view override returns (uint256, uint256) { + function getProvisionPool( + address tokenA, + address tokenB + ) public view override returns (uint256, uint256) { require(tokenA != address(0), "DEX: tokenA is zero address"); require(tokenB != address(0), "DEX: tokenB is zero address"); - (bool success, bytes memory returnData) = - PRECOMPILE.staticcall(abi.encodeWithSignature("getProvisionPool(address,address)", tokenA, tokenB)); + (bool success, bytes memory returnData) = PRECOMPILE.staticcall( + abi.encodeWithSignature( + "getProvisionPool(address,address)", + tokenA, + tokenB + ) + ); assembly { - if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) } + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } } return abi.decode(returnData, (uint256, uint256)); } /// @inheritdoc IBootstrap - function getProvisionPoolOf(address who, address tokenA, address tokenB) - public - view - override - returns (uint256, uint256) - { + function getProvisionPoolOf( + address who, + address tokenA, + address tokenB + ) public view override returns (uint256, uint256) { require(tokenA != address(0), "DEX: tokenA is zero address"); require(tokenB != address(0), "DEX: tokenB is zero address"); (bool success, bytes memory returnData) = PRECOMPILE.staticcall( - abi.encodeWithSignature("getProvisionPoolOf(address, address,address)", who, tokenA, tokenB) + abi.encodeWithSignature( + "getProvisionPoolOf(address, address,address)", + who, + tokenA, + tokenB + ) ); assembly { - if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) } + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } } return abi.decode(returnData, (uint256, uint256)); } /// @inheritdoc IBootstrap - function getInitialShareExchangeRate(address tokenA, address tokenB) - public - view - override - returns (uint256, uint256) - { + function getInitialShareExchangeRate( + address tokenA, + address tokenB + ) public view override returns (uint256, uint256) { require(tokenA != address(0), "DEX: tokenA is zero address"); require(tokenB != address(0), "DEX: tokenB is zero address"); (bool success, bytes memory returnData) = PRECOMPILE.staticcall( - abi.encodeWithSignature("getInitialShareExchangeRate(address,address)", tokenA, tokenB) + abi.encodeWithSignature( + "getInitialShareExchangeRate(address,address)", + tokenA, + tokenB + ) ); assembly { - if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) } + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } } return abi.decode(returnData, (uint256, uint256)); } /// @inheritdoc IBootstrap - function addProvision(address tokenA, address tokenB, uint256 amountA, uint256 amountB) - public - override - returns (bool) - { + function addProvision( + address tokenA, + address tokenB, + uint256 amountA, + uint256 amountB + ) public override returns (bool) { require(tokenA != address(0), "DEX: tokenA is zero address"); require(tokenB != address(0), "DEX: tokenB is zero address"); - require(amountA != 0 || amountB != 0, "DEX: invalid contribution amount"); + require( + amountA != 0 || amountB != 0, + "DEX: invalid contribution amount" + ); (bool success, bytes memory returnData) = PRECOMPILE.call( abi.encodeWithSignature( - "addProvision(address,address,address,uint256,uint256)", msg.sender, tokenA, tokenB, amountA, amountB + "addProvision(address,address,address,uint256,uint256)", + msg.sender, + tokenA, + tokenB, + amountA, + amountB ) ); assembly { - if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) } + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } } emit AddProvision(msg.sender, tokenA, tokenB, amountA, amountB); @@ -89,15 +119,27 @@ contract DEXV2 is DEX, IBootstrap { } /// @inheritdoc IBootstrap - function claimDexShare(address who, address tokenA, address tokenB) public override returns (bool) { + function claimDexShare( + address who, + address tokenA, + address tokenB + ) public override returns (bool) { require(who != address(0), "DEX: who is zero address"); require(tokenA != address(0), "DEX: tokenA is zero address"); require(tokenB != address(0), "DEX: tokenB is zero address"); - (bool success, bytes memory returnData) = - PRECOMPILE.call(abi.encodeWithSignature("claimDexShare(address,address,address)", who, tokenA, tokenB)); + (bool success, bytes memory returnData) = PRECOMPILE.call( + abi.encodeWithSignature( + "claimDexShare(address,address,address)", + who, + tokenA, + tokenB + ) + ); assembly { - if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) } + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } } emit ClaimShare(who, tokenA, tokenB, abi.decode(returnData, (uint256))); @@ -105,15 +147,27 @@ contract DEXV2 is DEX, IBootstrap { } /// @inheritdoc IBootstrap - function refundProvision(address who, address tokenA, address tokenB) public override returns (bool) { + function refundProvision( + address who, + address tokenA, + address tokenB + ) public override returns (bool) { require(who != address(0), "DEX: who is zero address"); require(tokenA != address(0), "DEX: tokenA is zero address"); require(tokenB != address(0), "DEX: tokenB is zero address"); - (bool success, bytes memory returnData) = - PRECOMPILE.call(abi.encodeWithSignature("refundProvision(address,address,address)", who, tokenA, tokenB)); + (bool success, bytes memory returnData) = PRECOMPILE.call( + abi.encodeWithSignature( + "refundProvision(address,address,address)", + who, + tokenA, + tokenB + ) + ); assembly { - if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) } + if eq(success, 0) { + revert(add(returnData, 0x20), returndatasize()) + } } return true; diff --git a/contracts/dex/IBootstrap.sol b/contracts/dex/IBootstrap.sol index 5bd415c..1b75791 100644 --- a/contracts/dex/IBootstrap.sol +++ b/contracts/dex/IBootstrap.sol @@ -14,7 +14,11 @@ interface IBootstrap { /// @param amountA The amount of tokenA contribute to provision pool. /// @param amountB The amount of tokenB contribute to provision pool. event AddProvision( - address indexed sender, address indexed tokenA, address indexed tokenB, uint256 amountA, uint256 amountB + address indexed sender, + address indexed tokenA, + address indexed tokenB, + uint256 amountA, + uint256 amountB ); /// @notice Claim share event. @@ -22,26 +26,41 @@ interface IBootstrap { /// @param tokenA The ERC20 address of the tokenA. /// @param tokenB The ERC20 address of the tokenB. /// @param amount The amount of claimed share token. - event ClaimShare(address indexed who, address indexed tokenA, address indexed tokenB, uint256 amount); + event ClaimShare( + address indexed who, + address indexed tokenA, + address indexed tokenB, + uint256 amount + ); /// @notice Get total provision pool of the tokenA and tokenB. /// @param tokenA The ERC20 address of the tokenA. /// @param tokenB The ERC20 address of the tokenB. /// @return Returns (provision_a, provision_b). - function getProvisionPool(address tokenA, address tokenB) external view returns (uint256, uint256); + function getProvisionPool( + address tokenA, + address tokenB + ) external view returns (uint256, uint256); /// @notice Get who's provision of the tokenA and tokenB. /// @param who The contributor. /// @param tokenA The ERC20 address of the tokenA. /// @param tokenB The ERC20 address of the tokenB. /// @return Returns (provision_a, provision_b). - function getProvisionPoolOf(address who, address tokenA, address tokenB) external view returns (uint256, uint256); + function getProvisionPoolOf( + address who, + address tokenA, + address tokenB + ) external view returns (uint256, uint256); /// @notice Get the initial share exchange rate of the ended provision pool of tokenA and tokenB. 100% = 1**18 /// @param tokenA The ERC20 address of the tokenA. /// @param tokenB The ERC20 address of the tokenB. /// @return Returns (rateA, rateB). - function getInitialShareExchangeRate(address tokenA, address tokenB) external view returns (uint256, uint256); + function getInitialShareExchangeRate( + address tokenA, + address tokenB + ) external view returns (uint256, uint256); /// @notice Add provision to the bootstraping trading pair. /// @dev It'll emit an {AddProvision} event. @@ -50,7 +69,12 @@ interface IBootstrap { /// @param amountA The amount of tokenA contribute to liquidity pool. /// @param amountB The amount of tokenB contribute to liquidity pool. /// @return Returns a boolean value indicating whether the operation succeeded. - function addProvision(address tokenA, address tokenB, uint256 amountA, uint256 amountB) external returns (bool); + function addProvision( + address tokenA, + address tokenB, + uint256 amountA, + uint256 amountB + ) external returns (bool); /// @notice Claim share token of the ended bootstrap trading pair for `who`. /// @dev It'll emit an {ClaimShare} event. @@ -58,12 +82,20 @@ interface IBootstrap { /// @param tokenA The ERC20 address of the tokenA. /// @param tokenB The ERC20 address of the tokenB. /// @return Returns a boolean value indicating whether the operation succeeded. - function claimDexShare(address who, address tokenA, address tokenB) external returns (bool); + function claimDexShare( + address who, + address tokenA, + address tokenB + ) external returns (bool); /// @notice Refund the contribution token of the aborted bootstrap trading pair for `who`. /// @param who The contributor. /// @param tokenA The ERC20 address of the tokenA. /// @param tokenB The ERC20 address of the tokenB. /// @return Returns a boolean value indicating whether the operation succeeded. - function refundProvision(address who, address tokenA, address tokenB) external returns (bool); + function refundProvision( + address who, + address tokenA, + address tokenB + ) external returns (bool); } diff --git a/resources/bytecodes.json b/resources/bytecodes.json index 2adabb2..2ee574b 100644 --- a/resources/bytecodes.json +++ b/resources/bytecodes.json @@ -407,12 +407,12 @@ [ "DEX", "0x0000000000000000000000000000000000000803", - "0x608060405234801561001057600080fd5b50611a1a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063dbcd19a21161005b578063dbcd19a2146100fc578063e2dc85dc1461010f578063f4f31ede14610122578063ffd73c4a1461014a57600080fd5b80633d8d96201461008d5780634d60beb1146100b55780636fc4b4e5146100d657806391c98a2a146100e9575b600080fd5b6100a061009b3660046116cf565b610182565b60405190151581526020015b60405180910390f35b6100c86100c336600461171d565b610439565b6040519081526020016100ac565b6100a06100e43660046116cf565b610691565b6100a06100f7366004611762565b61092f565b6100c861010a36600461171d565b610c89565b6100a061011d366004611762565b610e72565b6101356101303660046117b3565b611171565b604080519283526020830191909152016100ac565b61015d6101583660046117b3565b611395565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b6000805b845181101561025557600073ffffffffffffffffffffffffffffffffffffffff168582815181106101b9576101b96117ec565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064015b60405180910390fd5b8061024d8161181b565b915050610186565b50826000036102c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4445583a20746172676574416d6f756e74206973207a65726f00000000000000604482015260640161023a565b60008061040573ffffffffffffffffffffffffffffffffffffffff16338787876040516024016102f394939291906118cb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9782ac810000000000000000000000000000000000000000000000000000000017905251610374919061190d565b6000604051808303816000865af19150503d80600081146103b1576040519150601f19603f3d011682016040523d82523d6000602084013e6103b6565b606091505b509092509050816103c8573d60208201fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7b1ccce9b5299ff0ae3d9adc0855268a4ad3527b2bcde01ccadde2fb878ecb8a8783806020019051810190610415919061193c565b8860405161042593929190611955565b60405180910390a250600195945050505050565b6000805b835181101561050757600073ffffffffffffffffffffffffffffffffffffffff16848281518110610470576104706117ec565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16036104f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f2061646472657373000000000000604482015260640161023a565b806104ff8161181b565b91505061043d565b5081600003610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4445583a20737570706c79416d6f756e74206973207a65726f00000000000000604482015260640161023a565b60008061040573ffffffffffffffffffffffffffffffffffffffff1685856040516024016105a192919061197a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4d60beb10000000000000000000000000000000000000000000000000000000017905251610622919061190d565b600060405180830381855afa9150503d806000811461065d576040519150601f19603f3d011682016040523d82523d6000602084013e610662565b606091505b50909250905081610674573d60208201fd5b80806020019051810190610688919061193c565b95945050505050565b6000805b845181101561075f57600073ffffffffffffffffffffffffffffffffffffffff168582815181106106c8576106c86117ec565b602002602001015173ffffffffffffffffffffffffffffffffffffffff160361074d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f2061646472657373000000000000604482015260640161023a565b806107578161181b565b915050610695565b50826000036107ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4445583a20737570706c79416d6f756e74206973207a65726f00000000000000604482015260640161023a565b60008061040573ffffffffffffffffffffffffffffffffffffffff16338787876040516024016107fd94939291906118cb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f579baa18000000000000000000000000000000000000000000000000000000001790525161087e919061190d565b6000604051808303816000865af19150503d80600081146108bb576040519150601f19603f3d011682016040523d82523d6000602084013e6108c0565b606091505b509092509050816108d2573d60208201fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7b1ccce9b5299ff0ae3d9adc0855268a4ad3527b2bcde01ccadde2fb878ecb8a878784806020019051810190610920919061193c565b60405161042593929190611955565b600073ffffffffffffffffffffffffffffffffffffffff86166109ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f20616464726573730000000000604482015260640161023a565b73ffffffffffffffffffffffffffffffffffffffff8516610a2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f20616464726573730000000000604482015260640161023a565b83600003610a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4445583a206d6178416d6f756e7441206973207a65726f000000000000000000604482015260640161023a565b82600003610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4445583a206d6178416d6f756e7442206973207a65726f000000000000000000604482015260640161023a565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8781166044830152861660648201526084810185905260a4810184905260c4810183905260009081906104059060e401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f67088d590000000000000000000000000000000000000000000000000000000017905251610bce919061190d565b6000604051808303816000865af19150503d8060008114610c0b576040519150601f19603f3d011682016040523d82523d6000602084013e610c10565b606091505b50909250905081610c22573d60208201fd5b604080518781526020810187905273ffffffffffffffffffffffffffffffffffffffff808a1692908b169133917f5b6f5f6550282279c4e72b95a8ba538bea92c64dec9e8c7c08a556d4457225c891015b60405180910390a4506001979650505050505050565b6000805b8351811015610d5757600073ffffffffffffffffffffffffffffffffffffffff16848281518110610cc057610cc06117ec565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610d45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f2061646472657373000000000000604482015260640161023a565b80610d4f8161181b565b915050610c8d565b5081600003610dc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4445583a20746172676574416d6f756e74206973207a65726f00000000000000604482015260640161023a565b60008061040573ffffffffffffffffffffffffffffffffffffffff168585604051602401610df192919061197a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fdbcd19a20000000000000000000000000000000000000000000000000000000017905251610622919061190d565b600073ffffffffffffffffffffffffffffffffffffffff8616610ef1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f20616464726573730000000000604482015260640161023a565b73ffffffffffffffffffffffffffffffffffffffff8516610f6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f20616464726573730000000000604482015260640161023a565b83600003610fd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4445583a2072656d6f76655368617265206973207a65726f0000000000000000604482015260640161023a565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8781166044830152861660648201526084810185905260a4810184905260c4810183905260009081906104059060e401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3531533200000000000000000000000000000000000000000000000000000000179052516110a7919061190d565b6000604051808303816000865af19150503d80600081146110e4576040519150601f19603f3d011682016040523d82523d6000602084013e6110e9565b606091505b509092509050816110fb573d60208201fd5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f038116623990e7d0fed04a27e35b5dc88000ea942b37360c5898ae750bfa5df689604051610c7391815260200190565b60008073ffffffffffffffffffffffffffffffffffffffff84166111f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f20616464726573730000000000604482015260640161023a565b73ffffffffffffffffffffffffffffffffffffffff831661126e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f20616464726573730000000000604482015260640161023a565b60405173ffffffffffffffffffffffffffffffffffffffff858116602483015284166044820152600090819061040590606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff4f31ede0000000000000000000000000000000000000000000000000000000017905251611322919061190d565b600060405180830381855afa9150503d806000811461135d576040519150601f19603f3d011682016040523d82523d6000602084013e611362565b606091505b50909250905081611374573d60208201fd5b80806020019051810190611388919061199c565b9350935050509250929050565b600073ffffffffffffffffffffffffffffffffffffffff8316611414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f20616464726573730000000000604482015260640161023a565b73ffffffffffffffffffffffffffffffffffffffff8216611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f20616464726573730000000000604482015260640161023a565b60405173ffffffffffffffffffffffffffffffffffffffff848116602483015283166044820152600090819061040590606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffd73c4a0000000000000000000000000000000000000000000000000000000017905251611545919061190d565b600060405180830381855afa9150503d8060008114611580576040519150601f19603f3d011682016040523d82523d6000602084013e611585565b606091505b50909250905081611597573d60208201fd5b8080602001905181019061068891906119c0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146115fc57600080fd5b50565b803561160a816115da565b919050565b600082601f83011261162057600080fd5b8135602067ffffffffffffffff8083111561163d5761163d6115ab565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108482111715611680576116806115ab565b60405293845285810183019383810192508785111561169e57600080fd5b83870191505b848210156116c4576116b5826115ff565b835291830191908301906116a4565b979650505050505050565b6000806000606084860312156116e457600080fd5b833567ffffffffffffffff8111156116fb57600080fd5b6117078682870161160f565b9660208601359650604090950135949350505050565b6000806040838503121561173057600080fd5b823567ffffffffffffffff81111561174757600080fd5b6117538582860161160f565b95602094909401359450505050565b600080600080600060a0868803121561177a57600080fd5b8535611785816115da565b94506020860135611795816115da565b94979496505050506040830135926060810135926080909101359150565b600080604083850312156117c657600080fd5b82356117d1816115da565b915060208301356117e1816115da565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611873577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600081518084526020808501945080840160005b838110156118c057815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010161188e565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff851681526080602082015260006118fa608083018661187a565b6040830194909452506060015292915050565b6000825160005b8181101561192e5760208186018101518583015201611914565b506000920191825250919050565b60006020828403121561194e57600080fd5b5051919050565b606081526000611968606083018661187a565b60208301949094525060400152919050565b60408152600061198d604083018561187a565b90508260208301529392505050565b600080604083850312156119af57600080fd5b505080516020909101519092909150565b6000602082840312156119d257600080fd5b81516119dd816115da565b939250505056fea2646970667358221220a9b9cc3e4cbe6cc14fe43347a866bcb13115b0bf4789cf2e67be30fe7975219264736f6c63430008120033" + "0x608060405234801561001057600080fd5b50611a1a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063dbcd19a21161005b578063dbcd19a2146100fc578063e2dc85dc1461010f578063f4f31ede14610122578063ffd73c4a1461014a57600080fd5b80633d8d96201461008d5780634d60beb1146100b55780636fc4b4e5146100d657806391c98a2a146100e9575b600080fd5b6100a061009b3660046116cf565b610182565b60405190151581526020015b60405180910390f35b6100c86100c336600461171d565b610439565b6040519081526020016100ac565b6100a06100e43660046116cf565b610691565b6100a06100f7366004611762565b61092f565b6100c861010a36600461171d565b610c89565b6100a061011d366004611762565b610e72565b6101356101303660046117b3565b611171565b604080519283526020830191909152016100ac565b61015d6101583660046117b3565b611395565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b6000805b845181101561025557600073ffffffffffffffffffffffffffffffffffffffff168582815181106101b9576101b96117ec565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064015b60405180910390fd5b8061024d8161181b565b915050610186565b50826000036102c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4445583a20746172676574416d6f756e74206973207a65726f00000000000000604482015260640161023a565b60008061040573ffffffffffffffffffffffffffffffffffffffff16338787876040516024016102f394939291906118cb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9782ac810000000000000000000000000000000000000000000000000000000017905251610374919061190d565b6000604051808303816000865af19150503d80600081146103b1576040519150601f19603f3d011682016040523d82523d6000602084013e6103b6565b606091505b509092509050816103c8573d60208201fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7b1ccce9b5299ff0ae3d9adc0855268a4ad3527b2bcde01ccadde2fb878ecb8a8783806020019051810190610415919061193c565b8860405161042593929190611955565b60405180910390a250600195945050505050565b6000805b835181101561050757600073ffffffffffffffffffffffffffffffffffffffff16848281518110610470576104706117ec565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16036104f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f2061646472657373000000000000604482015260640161023a565b806104ff8161181b565b91505061043d565b5081600003610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4445583a20737570706c79416d6f756e74206973207a65726f00000000000000604482015260640161023a565b60008061040573ffffffffffffffffffffffffffffffffffffffff1685856040516024016105a192919061197a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4d60beb10000000000000000000000000000000000000000000000000000000017905251610622919061190d565b600060405180830381855afa9150503d806000811461065d576040519150601f19603f3d011682016040523d82523d6000602084013e610662565b606091505b50909250905081610674573d60208201fd5b80806020019051810190610688919061193c565b95945050505050565b6000805b845181101561075f57600073ffffffffffffffffffffffffffffffffffffffff168582815181106106c8576106c86117ec565b602002602001015173ffffffffffffffffffffffffffffffffffffffff160361074d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f2061646472657373000000000000604482015260640161023a565b806107578161181b565b915050610695565b50826000036107ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4445583a20737570706c79416d6f756e74206973207a65726f00000000000000604482015260640161023a565b60008061040573ffffffffffffffffffffffffffffffffffffffff16338787876040516024016107fd94939291906118cb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f579baa18000000000000000000000000000000000000000000000000000000001790525161087e919061190d565b6000604051808303816000865af19150503d80600081146108bb576040519150601f19603f3d011682016040523d82523d6000602084013e6108c0565b606091505b509092509050816108d2573d60208201fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7b1ccce9b5299ff0ae3d9adc0855268a4ad3527b2bcde01ccadde2fb878ecb8a878784806020019051810190610920919061193c565b60405161042593929190611955565b600073ffffffffffffffffffffffffffffffffffffffff86166109ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f20616464726573730000000000604482015260640161023a565b73ffffffffffffffffffffffffffffffffffffffff8516610a2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f20616464726573730000000000604482015260640161023a565b83600003610a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4445583a206d6178416d6f756e7441206973207a65726f000000000000000000604482015260640161023a565b82600003610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4445583a206d6178416d6f756e7442206973207a65726f000000000000000000604482015260640161023a565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8781166044830152861660648201526084810185905260a4810184905260c4810183905260009081906104059060e401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f67088d590000000000000000000000000000000000000000000000000000000017905251610bce919061190d565b6000604051808303816000865af19150503d8060008114610c0b576040519150601f19603f3d011682016040523d82523d6000602084013e610c10565b606091505b50909250905081610c22573d60208201fd5b604080518781526020810187905273ffffffffffffffffffffffffffffffffffffffff808a1692908b169133917f5b6f5f6550282279c4e72b95a8ba538bea92c64dec9e8c7c08a556d4457225c891015b60405180910390a4506001979650505050505050565b6000805b8351811015610d5757600073ffffffffffffffffffffffffffffffffffffffff16848281518110610cc057610cc06117ec565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610d45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f2061646472657373000000000000604482015260640161023a565b80610d4f8161181b565b915050610c8d565b5081600003610dc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4445583a20746172676574416d6f756e74206973207a65726f00000000000000604482015260640161023a565b60008061040573ffffffffffffffffffffffffffffffffffffffff168585604051602401610df192919061197a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fdbcd19a20000000000000000000000000000000000000000000000000000000017905251610622919061190d565b600073ffffffffffffffffffffffffffffffffffffffff8616610ef1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f20616464726573730000000000604482015260640161023a565b73ffffffffffffffffffffffffffffffffffffffff8516610f6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f20616464726573730000000000604482015260640161023a565b83600003610fd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4445583a2072656d6f76655368617265206973207a65726f0000000000000000604482015260640161023a565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8781166044830152861660648201526084810185905260a4810184905260c4810183905260009081906104059060e401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3531533200000000000000000000000000000000000000000000000000000000179052516110a7919061190d565b6000604051808303816000865af19150503d80600081146110e4576040519150601f19603f3d011682016040523d82523d6000602084013e6110e9565b606091505b509092509050816110fb573d60208201fd5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f038116623990e7d0fed04a27e35b5dc88000ea942b37360c5898ae750bfa5df689604051610c7391815260200190565b60008073ffffffffffffffffffffffffffffffffffffffff84166111f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f20616464726573730000000000604482015260640161023a565b73ffffffffffffffffffffffffffffffffffffffff831661126e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f20616464726573730000000000604482015260640161023a565b60405173ffffffffffffffffffffffffffffffffffffffff858116602483015284166044820152600090819061040590606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff4f31ede0000000000000000000000000000000000000000000000000000000017905251611322919061190d565b600060405180830381855afa9150503d806000811461135d576040519150601f19603f3d011682016040523d82523d6000602084013e611362565b606091505b50909250905081611374573d60208201fd5b80806020019051810190611388919061199c565b9350935050509250929050565b600073ffffffffffffffffffffffffffffffffffffffff8316611414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f20616464726573730000000000604482015260640161023a565b73ffffffffffffffffffffffffffffffffffffffff8216611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f20616464726573730000000000604482015260640161023a565b60405173ffffffffffffffffffffffffffffffffffffffff848116602483015283166044820152600090819061040590606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffd73c4a0000000000000000000000000000000000000000000000000000000017905251611545919061190d565b600060405180830381855afa9150503d8060008114611580576040519150601f19603f3d011682016040523d82523d6000602084013e611585565b606091505b50909250905081611597573d60208201fd5b8080602001905181019061068891906119c0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146115fc57600080fd5b50565b803561160a816115da565b919050565b600082601f83011261162057600080fd5b8135602067ffffffffffffffff8083111561163d5761163d6115ab565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108482111715611680576116806115ab565b60405293845285810183019383810192508785111561169e57600080fd5b83870191505b848210156116c4576116b5826115ff565b835291830191908301906116a4565b979650505050505050565b6000806000606084860312156116e457600080fd5b833567ffffffffffffffff8111156116fb57600080fd5b6117078682870161160f565b9660208601359650604090950135949350505050565b6000806040838503121561173057600080fd5b823567ffffffffffffffff81111561174757600080fd5b6117538582860161160f565b95602094909401359450505050565b600080600080600060a0868803121561177a57600080fd5b8535611785816115da565b94506020860135611795816115da565b94979496505050506040830135926060810135926080909101359150565b600080604083850312156117c657600080fd5b82356117d1816115da565b915060208301356117e1816115da565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611873577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600081518084526020808501945080840160005b838110156118c057815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010161188e565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff851681526080602082015260006118fa608083018661187a565b6040830194909452506060015292915050565b6000825160005b8181101561192e5760208186018101518583015201611914565b506000920191825250919050565b60006020828403121561194e57600080fd5b5051919050565b606081526000611968606083018661187a565b60208301949094525060400152919050565b60408152600061198d604083018561187a565b90508260208301529392505050565b600080604083850312156119af57600080fd5b505080516020909101519092909150565b6000602082840312156119d257600080fd5b81516119dd816115da565b939250505056fea26469706673582212203b838f946d0923478dfb209677c4203d40d5aab19788aefaf7e7c0c5009602c864736f6c63430008120033" ], [ "DEXV2", "0x0000000000000000000000000000000000000803", - "0x608060405234801561001057600080fd5b5061247d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806392ea19911161008c578063e2dc85dc11610066578063e2dc85dc146101e5578063f1e908f8146101f8578063f4f31ede1461020b578063ffd73c4a1461021e57600080fd5b806392ea1991146101ac578063aa02e9d3146101bf578063dbcd19a2146101d257600080fd5b80635859df34116100c85780635859df34146101605780636fc4b4e5146101735780638ef239cf1461018657806391c98a2a1461019957600080fd5b8063165c7c9a146100ef5780633d8d96201461011c5780634d60beb11461013f575b600080fd5b6101026100fd366004611fd0565b610256565b604080519283526020830191909152015b60405180910390f35b61012f61012a3660046120da565b61042d565b6040519015158152602001610113565b61015261014d366004612128565b61068d565b604051908152602001610113565b61010261016e366004611fd0565b610893565b61012f6101813660046120da565b6109f2565b61010261019436600461216d565b610c3e565b61012f6101a73660046121b8565b610e19565b61012f6101ba366004612209565b6110ed565b61012f6101cd36600461216d565b611371565b6101526101e0366004612128565b61159a565b61012f6101f33660046121b8565b611731565b61012f61020636600461216d565b6119c4565b610102610219366004611fd0565b611c78565b61023161022c366004611fd0565b611dd7565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b60008073ffffffffffffffffffffffffffffffffffffffff84166102c15760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166103245760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260009081906104059060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f165c7c9a00000000000000000000000000000000000000000000000000000000179052516103ba919061224f565b600060405180830381855afa9150503d80600081146103f5576040519150601f19603f3d011682016040523d82523d6000602084013e6103fa565b606091505b5090925090508161040c573d60208201fd5b80806020019051810190610420919061227e565b9350935050509250929050565b6000805b84518110156104e157600073ffffffffffffffffffffffffffffffffffffffff16858281518110610464576104646122a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16036104cf5760405162461bcd60e51b815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064016102b8565b806104d9816122d1565b915050610431565b50826000036105325760405162461bcd60e51b815260206004820152601960248201527f4445583a20746172676574416d6f756e74206973207a65726f0000000000000060448201526064016102b8565b60008061040573ffffffffffffffffffffffffffffffffffffffff16338787876040516024016105659493929190612381565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9782ac8100000000000000000000000000000000000000000000000000000000179052516105c8919061224f565b6000604051808303816000865af19150503d8060008114610605576040519150601f19603f3d011682016040523d82523d6000602084013e61060a565b606091505b5090925090508161061c573d60208201fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7b1ccce9b5299ff0ae3d9adc0855268a4ad3527b2bcde01ccadde2fb878ecb8a878380602001905181019061066991906123c3565b88604051610679939291906123dc565b60405180910390a250600195945050505050565b6000805b835181101561074157600073ffffffffffffffffffffffffffffffffffffffff168482815181106106c4576106c46122a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff160361072f5760405162461bcd60e51b815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064016102b8565b80610739816122d1565b915050610691565b50816000036107925760405162461bcd60e51b815260206004820152601960248201527f4445583a20737570706c79416d6f756e74206973207a65726f0000000000000060448201526064016102b8565b60008061040573ffffffffffffffffffffffffffffffffffffffff1685856040516024016107c1929190612401565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4d60beb10000000000000000000000000000000000000000000000000000000017905251610824919061224f565b600060405180830381855afa9150503d806000811461085f576040519150601f19603f3d011682016040523d82523d6000602084013e610864565b606091505b50909250905081610876573d60208201fd5b8080602001905181019061088a91906123c3565b95945050505050565b60008073ffffffffffffffffffffffffffffffffffffffff84166108f95760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff831661095c5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260009081906104059060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5859df3400000000000000000000000000000000000000000000000000000000179052516103ba919061224f565b6000805b8451811015610aa657600073ffffffffffffffffffffffffffffffffffffffff16858281518110610a2957610a296122a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610a945760405162461bcd60e51b815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064016102b8565b80610a9e816122d1565b9150506109f6565b5082600003610af75760405162461bcd60e51b815260206004820152601960248201527f4445583a20737570706c79416d6f756e74206973207a65726f0000000000000060448201526064016102b8565b60008061040573ffffffffffffffffffffffffffffffffffffffff1633878787604051602401610b2a9493929190612381565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f579baa180000000000000000000000000000000000000000000000000000000017905251610b8d919061224f565b6000604051808303816000865af19150503d8060008114610bca576040519150601f19603f3d011682016040523d82523d6000602084013e610bcf565b606091505b50909250905081610be1573d60208201fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7b1ccce9b5299ff0ae3d9adc0855268a4ad3527b2bcde01ccadde2fb878ecb8a878784806020019051810190610c2f91906123c3565b604051610679939291906123dc565b60008073ffffffffffffffffffffffffffffffffffffffff8416610ca45760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8316610d075760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff868116602483015285811660448301528416606482015260009081906104059060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7d3d27f20000000000000000000000000000000000000000000000000000000017905251610da5919061224f565b600060405180830381855afa9150503d8060008114610de0576040519150601f19603f3d011682016040523d82523d6000602084013e610de5565b606091505b50909250905081610df7573d60208201fd5b80806020019051810190610e0b919061227e565b935093505050935093915050565b600073ffffffffffffffffffffffffffffffffffffffff8616610e7e5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8516610ee15760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b83600003610f315760405162461bcd60e51b815260206004820152601760248201527f4445583a206d6178416d6f756e7441206973207a65726f00000000000000000060448201526064016102b8565b82600003610f815760405162461bcd60e51b815260206004820152601760248201527f4445583a206d6178416d6f756e7442206973207a65726f00000000000000000060448201526064016102b8565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8781166044830152861660648201526084810185905260a4810184905260c4810183905260009081906104059060e40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f67088d590000000000000000000000000000000000000000000000000000000017905251611032919061224f565b6000604051808303816000865af19150503d806000811461106f576040519150601f19603f3d011682016040523d82523d6000602084013e611074565b606091505b50909250905081611086573d60208201fd5b604080518781526020810187905273ffffffffffffffffffffffffffffffffffffffff808a1692908b169133917f5b6f5f6550282279c4e72b95a8ba538bea92c64dec9e8c7c08a556d4457225c891015b60405180910390a4506001979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff85166111525760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff84166111b55760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b821515806111c257508115155b61120e5760405162461bcd60e51b815260206004820181905260248201527f4445583a20696e76616c696420636f6e747269627574696f6e20616d6f756e7460448201526064016102b8565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8681166044830152851660648201526084810184905260a4810183905260009081906104059060c40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97a2051600000000000000000000000000000000000000000000000000000000179052516112b8919061224f565b6000604051808303816000865af19150503d80600081146112f5576040519150601f19603f3d011682016040523d82523d6000602084013e6112fa565b606091505b5090925090508161130c573d60208201fd5b604080518681526020810186905273ffffffffffffffffffffffffffffffffffffffff80891692908a169133917f8d1357284615c1e124990863d94a78bee5ad0b610eda8b2e250d792224bfa520910160405180910390a45060019695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff84166113d65760405162461bcd60e51b815260206004820152601860248201527f4445583a2077686f206973207a65726f2061646472657373000000000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff83166114395760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff821661149c5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff858116602483015284811660448301528316606482015260009081906104059060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167faa02e9d3000000000000000000000000000000000000000000000000000000001790525161153a919061224f565b6000604051808303816000865af19150503d8060008114611577576040519150601f19603f3d011682016040523d82523d6000602084013e61157c565b606091505b5090925090508161158e573d60208201fd5b50600195945050505050565b6000805b835181101561164e57600073ffffffffffffffffffffffffffffffffffffffff168482815181106115d1576115d16122a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff160361163c5760405162461bcd60e51b815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064016102b8565b80611646816122d1565b91505061159e565b508160000361169f5760405162461bcd60e51b815260206004820152601960248201527f4445583a20746172676574416d6f756e74206973207a65726f0000000000000060448201526064016102b8565b60008061040573ffffffffffffffffffffffffffffffffffffffff1685856040516024016116ce929190612401565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fdbcd19a20000000000000000000000000000000000000000000000000000000017905251610824919061224f565b600073ffffffffffffffffffffffffffffffffffffffff86166117965760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff85166117f95760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b836000036118495760405162461bcd60e51b815260206004820152601860248201527f4445583a2072656d6f76655368617265206973207a65726f000000000000000060448201526064016102b8565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8781166044830152861660648201526084810185905260a4810184905260c4810183905260009081906104059060e40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3531533200000000000000000000000000000000000000000000000000000000179052516118fa919061224f565b6000604051808303816000865af19150503d8060008114611937576040519150601f19603f3d011682016040523d82523d6000602084013e61193c565b606091505b5090925090508161194e573d60208201fd5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f038116623990e7d0fed04a27e35b5dc88000ea942b37360c5898ae750bfa5df6896040516110d791815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8416611a295760405162461bcd60e51b815260206004820152601860248201527f4445583a2077686f206973207a65726f2061646472657373000000000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8316611a8c5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8216611aef5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff858116602483015284811660448301528316606482015260009081906104059060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff1e908f80000000000000000000000000000000000000000000000000000000017905251611b8d919061224f565b6000604051808303816000865af19150503d8060008114611bca576040519150601f19603f3d011682016040523d82523d6000602084013e611bcf565b606091505b50909250905081611be1573d60208201fd5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f0a871e96c44907fad6faf1446ccd03932216813ea3a548e12e72a217d7e8c96784806020019051810190611c5b91906123c3565b60405190815260200160405180910390a450600195945050505050565b60008073ffffffffffffffffffffffffffffffffffffffff8416611cde5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8316611d415760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260009081906104059060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff4f31ede00000000000000000000000000000000000000000000000000000000179052516103ba919061224f565b600073ffffffffffffffffffffffffffffffffffffffff8316611e3c5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8216611e9f5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528316604482015260009081906104059060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffd73c4a0000000000000000000000000000000000000000000000000000000017905251611f35919061224f565b600060405180830381855afa9150503d8060008114611f70576040519150601f19603f3d011682016040523d82523d6000602084013e611f75565b606091505b50909250905081611f87573d60208201fd5b8080602001905181019061088a9190612423565b73ffffffffffffffffffffffffffffffffffffffff81168114611fbd57600080fd5b50565b8035611fcb81611f9b565b919050565b60008060408385031215611fe357600080fd5b8235611fee81611f9b565b91506020830135611ffe81611f9b565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261204957600080fd5b8135602067ffffffffffffffff8083111561206657612066612009565b8260051b604051601f19603f8301168101818110848211171561208b5761208b612009565b6040529384528581018301938381019250878511156120a957600080fd5b83870191505b848210156120cf576120c082611fc0565b835291830191908301906120af565b979650505050505050565b6000806000606084860312156120ef57600080fd5b833567ffffffffffffffff81111561210657600080fd5b61211286828701612038565b9660208601359650604090950135949350505050565b6000806040838503121561213b57600080fd5b823567ffffffffffffffff81111561215257600080fd5b61215e85828601612038565b95602094909401359450505050565b60008060006060848603121561218257600080fd5b833561218d81611f9b565b9250602084013561219d81611f9b565b915060408401356121ad81611f9b565b809150509250925092565b600080600080600060a086880312156121d057600080fd5b85356121db81611f9b565b945060208601356121eb81611f9b565b94979496505050506040830135926060810135926080909101359150565b6000806000806080858703121561221f57600080fd5b843561222a81611f9b565b9350602085013561223a81611f9b565b93969395505050506040820135916060013590565b6000825160005b818110156122705760208186018101518583015201612256565b506000920191825250919050565b6000806040838503121561229157600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612329577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600081518084526020808501945080840160005b8381101561237657815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101612344565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff851681526080602082015260006123b06080830186612330565b6040830194909452506060015292915050565b6000602082840312156123d557600080fd5b5051919050565b6060815260006123ef6060830186612330565b60208301949094525060400152919050565b6040815260006124146040830185612330565b90508260208301529392505050565b60006020828403121561243557600080fd5b815161244081611f9b565b939250505056fea2646970667358221220c4caa2d2c812c87c1ae3d949c009784662857384465e88145e4cbe3e5ac1b68a64736f6c63430008120033" + "0x608060405234801561001057600080fd5b5061247d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806392ea19911161008c578063e2dc85dc11610066578063e2dc85dc146101e5578063f1e908f8146101f8578063f4f31ede1461020b578063ffd73c4a1461021e57600080fd5b806392ea1991146101ac578063aa02e9d3146101bf578063dbcd19a2146101d257600080fd5b80635859df34116100c85780635859df34146101605780636fc4b4e5146101735780638ef239cf1461018657806391c98a2a1461019957600080fd5b8063165c7c9a146100ef5780633d8d96201461011c5780634d60beb11461013f575b600080fd5b6101026100fd366004611fd0565b610256565b604080519283526020830191909152015b60405180910390f35b61012f61012a3660046120da565b61042d565b6040519015158152602001610113565b61015261014d366004612128565b61068d565b604051908152602001610113565b61010261016e366004611fd0565b610893565b61012f6101813660046120da565b6109f2565b61010261019436600461216d565b610c3e565b61012f6101a73660046121b8565b610e19565b61012f6101ba366004612209565b6110ed565b61012f6101cd36600461216d565b611371565b6101526101e0366004612128565b61159a565b61012f6101f33660046121b8565b611731565b61012f61020636600461216d565b6119c4565b610102610219366004611fd0565b611c78565b61023161022c366004611fd0565b611dd7565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b60008073ffffffffffffffffffffffffffffffffffffffff84166102c15760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166103245760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260009081906104059060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f165c7c9a00000000000000000000000000000000000000000000000000000000179052516103ba919061224f565b600060405180830381855afa9150503d80600081146103f5576040519150601f19603f3d011682016040523d82523d6000602084013e6103fa565b606091505b5090925090508161040c573d60208201fd5b80806020019051810190610420919061227e565b9350935050509250929050565b6000805b84518110156104e157600073ffffffffffffffffffffffffffffffffffffffff16858281518110610464576104646122a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16036104cf5760405162461bcd60e51b815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064016102b8565b806104d9816122d1565b915050610431565b50826000036105325760405162461bcd60e51b815260206004820152601960248201527f4445583a20746172676574416d6f756e74206973207a65726f0000000000000060448201526064016102b8565b60008061040573ffffffffffffffffffffffffffffffffffffffff16338787876040516024016105659493929190612381565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9782ac8100000000000000000000000000000000000000000000000000000000179052516105c8919061224f565b6000604051808303816000865af19150503d8060008114610605576040519150601f19603f3d011682016040523d82523d6000602084013e61060a565b606091505b5090925090508161061c573d60208201fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7b1ccce9b5299ff0ae3d9adc0855268a4ad3527b2bcde01ccadde2fb878ecb8a878380602001905181019061066991906123c3565b88604051610679939291906123dc565b60405180910390a250600195945050505050565b6000805b835181101561074157600073ffffffffffffffffffffffffffffffffffffffff168482815181106106c4576106c46122a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff160361072f5760405162461bcd60e51b815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064016102b8565b80610739816122d1565b915050610691565b50816000036107925760405162461bcd60e51b815260206004820152601960248201527f4445583a20737570706c79416d6f756e74206973207a65726f0000000000000060448201526064016102b8565b60008061040573ffffffffffffffffffffffffffffffffffffffff1685856040516024016107c1929190612401565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4d60beb10000000000000000000000000000000000000000000000000000000017905251610824919061224f565b600060405180830381855afa9150503d806000811461085f576040519150601f19603f3d011682016040523d82523d6000602084013e610864565b606091505b50909250905081610876573d60208201fd5b8080602001905181019061088a91906123c3565b95945050505050565b60008073ffffffffffffffffffffffffffffffffffffffff84166108f95760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff831661095c5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260009081906104059060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5859df3400000000000000000000000000000000000000000000000000000000179052516103ba919061224f565b6000805b8451811015610aa657600073ffffffffffffffffffffffffffffffffffffffff16858281518110610a2957610a296122a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610a945760405162461bcd60e51b815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064016102b8565b80610a9e816122d1565b9150506109f6565b5082600003610af75760405162461bcd60e51b815260206004820152601960248201527f4445583a20737570706c79416d6f756e74206973207a65726f0000000000000060448201526064016102b8565b60008061040573ffffffffffffffffffffffffffffffffffffffff1633878787604051602401610b2a9493929190612381565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f579baa180000000000000000000000000000000000000000000000000000000017905251610b8d919061224f565b6000604051808303816000865af19150503d8060008114610bca576040519150601f19603f3d011682016040523d82523d6000602084013e610bcf565b606091505b50909250905081610be1573d60208201fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7b1ccce9b5299ff0ae3d9adc0855268a4ad3527b2bcde01ccadde2fb878ecb8a878784806020019051810190610c2f91906123c3565b604051610679939291906123dc565b60008073ffffffffffffffffffffffffffffffffffffffff8416610ca45760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8316610d075760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff868116602483015285811660448301528416606482015260009081906104059060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7d3d27f20000000000000000000000000000000000000000000000000000000017905251610da5919061224f565b600060405180830381855afa9150503d8060008114610de0576040519150601f19603f3d011682016040523d82523d6000602084013e610de5565b606091505b50909250905081610df7573d60208201fd5b80806020019051810190610e0b919061227e565b935093505050935093915050565b600073ffffffffffffffffffffffffffffffffffffffff8616610e7e5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8516610ee15760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b83600003610f315760405162461bcd60e51b815260206004820152601760248201527f4445583a206d6178416d6f756e7441206973207a65726f00000000000000000060448201526064016102b8565b82600003610f815760405162461bcd60e51b815260206004820152601760248201527f4445583a206d6178416d6f756e7442206973207a65726f00000000000000000060448201526064016102b8565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8781166044830152861660648201526084810185905260a4810184905260c4810183905260009081906104059060e40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f67088d590000000000000000000000000000000000000000000000000000000017905251611032919061224f565b6000604051808303816000865af19150503d806000811461106f576040519150601f19603f3d011682016040523d82523d6000602084013e611074565b606091505b50909250905081611086573d60208201fd5b604080518781526020810187905273ffffffffffffffffffffffffffffffffffffffff808a1692908b169133917f5b6f5f6550282279c4e72b95a8ba538bea92c64dec9e8c7c08a556d4457225c891015b60405180910390a4506001979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff85166111525760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff84166111b55760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b821515806111c257508115155b61120e5760405162461bcd60e51b815260206004820181905260248201527f4445583a20696e76616c696420636f6e747269627574696f6e20616d6f756e7460448201526064016102b8565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8681166044830152851660648201526084810184905260a4810183905260009081906104059060c40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97a2051600000000000000000000000000000000000000000000000000000000179052516112b8919061224f565b6000604051808303816000865af19150503d80600081146112f5576040519150601f19603f3d011682016040523d82523d6000602084013e6112fa565b606091505b5090925090508161130c573d60208201fd5b604080518681526020810186905273ffffffffffffffffffffffffffffffffffffffff80891692908a169133917f8d1357284615c1e124990863d94a78bee5ad0b610eda8b2e250d792224bfa520910160405180910390a45060019695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff84166113d65760405162461bcd60e51b815260206004820152601860248201527f4445583a2077686f206973207a65726f2061646472657373000000000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff83166114395760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff821661149c5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff858116602483015284811660448301528316606482015260009081906104059060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167faa02e9d3000000000000000000000000000000000000000000000000000000001790525161153a919061224f565b6000604051808303816000865af19150503d8060008114611577576040519150601f19603f3d011682016040523d82523d6000602084013e61157c565b606091505b5090925090508161158e573d60208201fd5b50600195945050505050565b6000805b835181101561164e57600073ffffffffffffffffffffffffffffffffffffffff168482815181106115d1576115d16122a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff160361163c5760405162461bcd60e51b815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064016102b8565b80611646816122d1565b91505061159e565b508160000361169f5760405162461bcd60e51b815260206004820152601960248201527f4445583a20746172676574416d6f756e74206973207a65726f0000000000000060448201526064016102b8565b60008061040573ffffffffffffffffffffffffffffffffffffffff1685856040516024016116ce929190612401565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fdbcd19a20000000000000000000000000000000000000000000000000000000017905251610824919061224f565b600073ffffffffffffffffffffffffffffffffffffffff86166117965760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff85166117f95760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b836000036118495760405162461bcd60e51b815260206004820152601860248201527f4445583a2072656d6f76655368617265206973207a65726f000000000000000060448201526064016102b8565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8781166044830152861660648201526084810185905260a4810184905260c4810183905260009081906104059060e40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3531533200000000000000000000000000000000000000000000000000000000179052516118fa919061224f565b6000604051808303816000865af19150503d8060008114611937576040519150601f19603f3d011682016040523d82523d6000602084013e61193c565b606091505b5090925090508161194e573d60208201fd5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f038116623990e7d0fed04a27e35b5dc88000ea942b37360c5898ae750bfa5df6896040516110d791815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8416611a295760405162461bcd60e51b815260206004820152601860248201527f4445583a2077686f206973207a65726f2061646472657373000000000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8316611a8c5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8216611aef5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff858116602483015284811660448301528316606482015260009081906104059060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff1e908f80000000000000000000000000000000000000000000000000000000017905251611b8d919061224f565b6000604051808303816000865af19150503d8060008114611bca576040519150601f19603f3d011682016040523d82523d6000602084013e611bcf565b606091505b50909250905081611be1573d60208201fd5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f0a871e96c44907fad6faf1446ccd03932216813ea3a548e12e72a217d7e8c96784806020019051810190611c5b91906123c3565b60405190815260200160405180910390a450600195945050505050565b60008073ffffffffffffffffffffffffffffffffffffffff8416611cde5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8316611d415760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260009081906104059060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff4f31ede00000000000000000000000000000000000000000000000000000000179052516103ba919061224f565b600073ffffffffffffffffffffffffffffffffffffffff8316611e3c5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8216611e9f5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528316604482015260009081906104059060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffd73c4a0000000000000000000000000000000000000000000000000000000017905251611f35919061224f565b600060405180830381855afa9150503d8060008114611f70576040519150601f19603f3d011682016040523d82523d6000602084013e611f75565b606091505b50909250905081611f87573d60208201fd5b8080602001905181019061088a9190612423565b73ffffffffffffffffffffffffffffffffffffffff81168114611fbd57600080fd5b50565b8035611fcb81611f9b565b919050565b60008060408385031215611fe357600080fd5b8235611fee81611f9b565b91506020830135611ffe81611f9b565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261204957600080fd5b8135602067ffffffffffffffff8083111561206657612066612009565b8260051b604051601f19603f8301168101818110848211171561208b5761208b612009565b6040529384528581018301938381019250878511156120a957600080fd5b83870191505b848210156120cf576120c082611fc0565b835291830191908301906120af565b979650505050505050565b6000806000606084860312156120ef57600080fd5b833567ffffffffffffffff81111561210657600080fd5b61211286828701612038565b9660208601359650604090950135949350505050565b6000806040838503121561213b57600080fd5b823567ffffffffffffffff81111561215257600080fd5b61215e85828601612038565b95602094909401359450505050565b60008060006060848603121561218257600080fd5b833561218d81611f9b565b9250602084013561219d81611f9b565b915060408401356121ad81611f9b565b809150509250925092565b600080600080600060a086880312156121d057600080fd5b85356121db81611f9b565b945060208601356121eb81611f9b565b94979496505050506040830135926060810135926080909101359150565b6000806000806080858703121561221f57600080fd5b843561222a81611f9b565b9350602085013561223a81611f9b565b93969395505050506040820135916060013590565b6000825160005b818110156122705760208186018101518583015201612256565b506000920191825250919050565b6000806040838503121561229157600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612329577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600081518084526020808501945080840160005b8381101561237657815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101612344565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff851681526080602082015260006123b06080830186612330565b6040830194909452506060015292915050565b6000602082840312156123d557600080fd5b5051919050565b6060815260006123ef6060830186612330565b60208301949094525060400152919050565b6040815260006124146040830185612330565b90508260208301529392505050565b60006020828403121561243557600080fd5b815161244081611f9b565b939250505056fea26469706673582212203a665fb0856439456476aeba24e2d041bfb5953ec8a6c04c8f28fe60ca743df864736f6c63430008120033" ], [ "STABLE_ASSET", diff --git a/resources/deployedBytecodes.json b/resources/deployedBytecodes.json index e3beec7..142cab2 100644 --- a/resources/deployedBytecodes.json +++ b/resources/deployedBytecodes.json @@ -407,12 +407,12 @@ [ "DEX", "0x0000000000000000000000000000000000000803", - "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063dbcd19a21161005b578063dbcd19a2146100fc578063e2dc85dc1461010f578063f4f31ede14610122578063ffd73c4a1461014a57600080fd5b80633d8d96201461008d5780634d60beb1146100b55780636fc4b4e5146100d657806391c98a2a146100e9575b600080fd5b6100a061009b3660046116cf565b610182565b60405190151581526020015b60405180910390f35b6100c86100c336600461171d565b610439565b6040519081526020016100ac565b6100a06100e43660046116cf565b610691565b6100a06100f7366004611762565b61092f565b6100c861010a36600461171d565b610c89565b6100a061011d366004611762565b610e72565b6101356101303660046117b3565b611171565b604080519283526020830191909152016100ac565b61015d6101583660046117b3565b611395565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b6000805b845181101561025557600073ffffffffffffffffffffffffffffffffffffffff168582815181106101b9576101b96117ec565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064015b60405180910390fd5b8061024d8161181b565b915050610186565b50826000036102c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4445583a20746172676574416d6f756e74206973207a65726f00000000000000604482015260640161023a565b60008061040573ffffffffffffffffffffffffffffffffffffffff16338787876040516024016102f394939291906118cb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9782ac810000000000000000000000000000000000000000000000000000000017905251610374919061190d565b6000604051808303816000865af19150503d80600081146103b1576040519150601f19603f3d011682016040523d82523d6000602084013e6103b6565b606091505b509092509050816103c8573d60208201fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7b1ccce9b5299ff0ae3d9adc0855268a4ad3527b2bcde01ccadde2fb878ecb8a8783806020019051810190610415919061193c565b8860405161042593929190611955565b60405180910390a250600195945050505050565b6000805b835181101561050757600073ffffffffffffffffffffffffffffffffffffffff16848281518110610470576104706117ec565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16036104f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f2061646472657373000000000000604482015260640161023a565b806104ff8161181b565b91505061043d565b5081600003610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4445583a20737570706c79416d6f756e74206973207a65726f00000000000000604482015260640161023a565b60008061040573ffffffffffffffffffffffffffffffffffffffff1685856040516024016105a192919061197a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4d60beb10000000000000000000000000000000000000000000000000000000017905251610622919061190d565b600060405180830381855afa9150503d806000811461065d576040519150601f19603f3d011682016040523d82523d6000602084013e610662565b606091505b50909250905081610674573d60208201fd5b80806020019051810190610688919061193c565b95945050505050565b6000805b845181101561075f57600073ffffffffffffffffffffffffffffffffffffffff168582815181106106c8576106c86117ec565b602002602001015173ffffffffffffffffffffffffffffffffffffffff160361074d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f2061646472657373000000000000604482015260640161023a565b806107578161181b565b915050610695565b50826000036107ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4445583a20737570706c79416d6f756e74206973207a65726f00000000000000604482015260640161023a565b60008061040573ffffffffffffffffffffffffffffffffffffffff16338787876040516024016107fd94939291906118cb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f579baa18000000000000000000000000000000000000000000000000000000001790525161087e919061190d565b6000604051808303816000865af19150503d80600081146108bb576040519150601f19603f3d011682016040523d82523d6000602084013e6108c0565b606091505b509092509050816108d2573d60208201fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7b1ccce9b5299ff0ae3d9adc0855268a4ad3527b2bcde01ccadde2fb878ecb8a878784806020019051810190610920919061193c565b60405161042593929190611955565b600073ffffffffffffffffffffffffffffffffffffffff86166109ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f20616464726573730000000000604482015260640161023a565b73ffffffffffffffffffffffffffffffffffffffff8516610a2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f20616464726573730000000000604482015260640161023a565b83600003610a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4445583a206d6178416d6f756e7441206973207a65726f000000000000000000604482015260640161023a565b82600003610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4445583a206d6178416d6f756e7442206973207a65726f000000000000000000604482015260640161023a565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8781166044830152861660648201526084810185905260a4810184905260c4810183905260009081906104059060e401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f67088d590000000000000000000000000000000000000000000000000000000017905251610bce919061190d565b6000604051808303816000865af19150503d8060008114610c0b576040519150601f19603f3d011682016040523d82523d6000602084013e610c10565b606091505b50909250905081610c22573d60208201fd5b604080518781526020810187905273ffffffffffffffffffffffffffffffffffffffff808a1692908b169133917f5b6f5f6550282279c4e72b95a8ba538bea92c64dec9e8c7c08a556d4457225c891015b60405180910390a4506001979650505050505050565b6000805b8351811015610d5757600073ffffffffffffffffffffffffffffffffffffffff16848281518110610cc057610cc06117ec565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610d45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f2061646472657373000000000000604482015260640161023a565b80610d4f8161181b565b915050610c8d565b5081600003610dc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4445583a20746172676574416d6f756e74206973207a65726f00000000000000604482015260640161023a565b60008061040573ffffffffffffffffffffffffffffffffffffffff168585604051602401610df192919061197a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fdbcd19a20000000000000000000000000000000000000000000000000000000017905251610622919061190d565b600073ffffffffffffffffffffffffffffffffffffffff8616610ef1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f20616464726573730000000000604482015260640161023a565b73ffffffffffffffffffffffffffffffffffffffff8516610f6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f20616464726573730000000000604482015260640161023a565b83600003610fd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4445583a2072656d6f76655368617265206973207a65726f0000000000000000604482015260640161023a565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8781166044830152861660648201526084810185905260a4810184905260c4810183905260009081906104059060e401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3531533200000000000000000000000000000000000000000000000000000000179052516110a7919061190d565b6000604051808303816000865af19150503d80600081146110e4576040519150601f19603f3d011682016040523d82523d6000602084013e6110e9565b606091505b509092509050816110fb573d60208201fd5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f038116623990e7d0fed04a27e35b5dc88000ea942b37360c5898ae750bfa5df689604051610c7391815260200190565b60008073ffffffffffffffffffffffffffffffffffffffff84166111f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f20616464726573730000000000604482015260640161023a565b73ffffffffffffffffffffffffffffffffffffffff831661126e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f20616464726573730000000000604482015260640161023a565b60405173ffffffffffffffffffffffffffffffffffffffff858116602483015284166044820152600090819061040590606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff4f31ede0000000000000000000000000000000000000000000000000000000017905251611322919061190d565b600060405180830381855afa9150503d806000811461135d576040519150601f19603f3d011682016040523d82523d6000602084013e611362565b606091505b50909250905081611374573d60208201fd5b80806020019051810190611388919061199c565b9350935050509250929050565b600073ffffffffffffffffffffffffffffffffffffffff8316611414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f20616464726573730000000000604482015260640161023a565b73ffffffffffffffffffffffffffffffffffffffff8216611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f20616464726573730000000000604482015260640161023a565b60405173ffffffffffffffffffffffffffffffffffffffff848116602483015283166044820152600090819061040590606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffd73c4a0000000000000000000000000000000000000000000000000000000017905251611545919061190d565b600060405180830381855afa9150503d8060008114611580576040519150601f19603f3d011682016040523d82523d6000602084013e611585565b606091505b50909250905081611597573d60208201fd5b8080602001905181019061068891906119c0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146115fc57600080fd5b50565b803561160a816115da565b919050565b600082601f83011261162057600080fd5b8135602067ffffffffffffffff8083111561163d5761163d6115ab565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108482111715611680576116806115ab565b60405293845285810183019383810192508785111561169e57600080fd5b83870191505b848210156116c4576116b5826115ff565b835291830191908301906116a4565b979650505050505050565b6000806000606084860312156116e457600080fd5b833567ffffffffffffffff8111156116fb57600080fd5b6117078682870161160f565b9660208601359650604090950135949350505050565b6000806040838503121561173057600080fd5b823567ffffffffffffffff81111561174757600080fd5b6117538582860161160f565b95602094909401359450505050565b600080600080600060a0868803121561177a57600080fd5b8535611785816115da565b94506020860135611795816115da565b94979496505050506040830135926060810135926080909101359150565b600080604083850312156117c657600080fd5b82356117d1816115da565b915060208301356117e1816115da565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611873577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600081518084526020808501945080840160005b838110156118c057815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010161188e565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff851681526080602082015260006118fa608083018661187a565b6040830194909452506060015292915050565b6000825160005b8181101561192e5760208186018101518583015201611914565b506000920191825250919050565b60006020828403121561194e57600080fd5b5051919050565b606081526000611968606083018661187a565b60208301949094525060400152919050565b60408152600061198d604083018561187a565b90508260208301529392505050565b600080604083850312156119af57600080fd5b505080516020909101519092909150565b6000602082840312156119d257600080fd5b81516119dd816115da565b939250505056fea2646970667358221220a9b9cc3e4cbe6cc14fe43347a866bcb13115b0bf4789cf2e67be30fe7975219264736f6c63430008120033" + "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063dbcd19a21161005b578063dbcd19a2146100fc578063e2dc85dc1461010f578063f4f31ede14610122578063ffd73c4a1461014a57600080fd5b80633d8d96201461008d5780634d60beb1146100b55780636fc4b4e5146100d657806391c98a2a146100e9575b600080fd5b6100a061009b3660046116cf565b610182565b60405190151581526020015b60405180910390f35b6100c86100c336600461171d565b610439565b6040519081526020016100ac565b6100a06100e43660046116cf565b610691565b6100a06100f7366004611762565b61092f565b6100c861010a36600461171d565b610c89565b6100a061011d366004611762565b610e72565b6101356101303660046117b3565b611171565b604080519283526020830191909152016100ac565b61015d6101583660046117b3565b611395565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b6000805b845181101561025557600073ffffffffffffffffffffffffffffffffffffffff168582815181106101b9576101b96117ec565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064015b60405180910390fd5b8061024d8161181b565b915050610186565b50826000036102c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4445583a20746172676574416d6f756e74206973207a65726f00000000000000604482015260640161023a565b60008061040573ffffffffffffffffffffffffffffffffffffffff16338787876040516024016102f394939291906118cb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9782ac810000000000000000000000000000000000000000000000000000000017905251610374919061190d565b6000604051808303816000865af19150503d80600081146103b1576040519150601f19603f3d011682016040523d82523d6000602084013e6103b6565b606091505b509092509050816103c8573d60208201fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7b1ccce9b5299ff0ae3d9adc0855268a4ad3527b2bcde01ccadde2fb878ecb8a8783806020019051810190610415919061193c565b8860405161042593929190611955565b60405180910390a250600195945050505050565b6000805b835181101561050757600073ffffffffffffffffffffffffffffffffffffffff16848281518110610470576104706117ec565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16036104f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f2061646472657373000000000000604482015260640161023a565b806104ff8161181b565b91505061043d565b5081600003610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4445583a20737570706c79416d6f756e74206973207a65726f00000000000000604482015260640161023a565b60008061040573ffffffffffffffffffffffffffffffffffffffff1685856040516024016105a192919061197a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4d60beb10000000000000000000000000000000000000000000000000000000017905251610622919061190d565b600060405180830381855afa9150503d806000811461065d576040519150601f19603f3d011682016040523d82523d6000602084013e610662565b606091505b50909250905081610674573d60208201fd5b80806020019051810190610688919061193c565b95945050505050565b6000805b845181101561075f57600073ffffffffffffffffffffffffffffffffffffffff168582815181106106c8576106c86117ec565b602002602001015173ffffffffffffffffffffffffffffffffffffffff160361074d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f2061646472657373000000000000604482015260640161023a565b806107578161181b565b915050610695565b50826000036107ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4445583a20737570706c79416d6f756e74206973207a65726f00000000000000604482015260640161023a565b60008061040573ffffffffffffffffffffffffffffffffffffffff16338787876040516024016107fd94939291906118cb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f579baa18000000000000000000000000000000000000000000000000000000001790525161087e919061190d565b6000604051808303816000865af19150503d80600081146108bb576040519150601f19603f3d011682016040523d82523d6000602084013e6108c0565b606091505b509092509050816108d2573d60208201fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7b1ccce9b5299ff0ae3d9adc0855268a4ad3527b2bcde01ccadde2fb878ecb8a878784806020019051810190610920919061193c565b60405161042593929190611955565b600073ffffffffffffffffffffffffffffffffffffffff86166109ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f20616464726573730000000000604482015260640161023a565b73ffffffffffffffffffffffffffffffffffffffff8516610a2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f20616464726573730000000000604482015260640161023a565b83600003610a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4445583a206d6178416d6f756e7441206973207a65726f000000000000000000604482015260640161023a565b82600003610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4445583a206d6178416d6f756e7442206973207a65726f000000000000000000604482015260640161023a565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8781166044830152861660648201526084810185905260a4810184905260c4810183905260009081906104059060e401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f67088d590000000000000000000000000000000000000000000000000000000017905251610bce919061190d565b6000604051808303816000865af19150503d8060008114610c0b576040519150601f19603f3d011682016040523d82523d6000602084013e610c10565b606091505b50909250905081610c22573d60208201fd5b604080518781526020810187905273ffffffffffffffffffffffffffffffffffffffff808a1692908b169133917f5b6f5f6550282279c4e72b95a8ba538bea92c64dec9e8c7c08a556d4457225c891015b60405180910390a4506001979650505050505050565b6000805b8351811015610d5757600073ffffffffffffffffffffffffffffffffffffffff16848281518110610cc057610cc06117ec565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610d45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f2061646472657373000000000000604482015260640161023a565b80610d4f8161181b565b915050610c8d565b5081600003610dc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4445583a20746172676574416d6f756e74206973207a65726f00000000000000604482015260640161023a565b60008061040573ffffffffffffffffffffffffffffffffffffffff168585604051602401610df192919061197a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fdbcd19a20000000000000000000000000000000000000000000000000000000017905251610622919061190d565b600073ffffffffffffffffffffffffffffffffffffffff8616610ef1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f20616464726573730000000000604482015260640161023a565b73ffffffffffffffffffffffffffffffffffffffff8516610f6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f20616464726573730000000000604482015260640161023a565b83600003610fd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4445583a2072656d6f76655368617265206973207a65726f0000000000000000604482015260640161023a565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8781166044830152861660648201526084810185905260a4810184905260c4810183905260009081906104059060e401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3531533200000000000000000000000000000000000000000000000000000000179052516110a7919061190d565b6000604051808303816000865af19150503d80600081146110e4576040519150601f19603f3d011682016040523d82523d6000602084013e6110e9565b606091505b509092509050816110fb573d60208201fd5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f038116623990e7d0fed04a27e35b5dc88000ea942b37360c5898ae750bfa5df689604051610c7391815260200190565b60008073ffffffffffffffffffffffffffffffffffffffff84166111f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f20616464726573730000000000604482015260640161023a565b73ffffffffffffffffffffffffffffffffffffffff831661126e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f20616464726573730000000000604482015260640161023a565b60405173ffffffffffffffffffffffffffffffffffffffff858116602483015284166044820152600090819061040590606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff4f31ede0000000000000000000000000000000000000000000000000000000017905251611322919061190d565b600060405180830381855afa9150503d806000811461135d576040519150601f19603f3d011682016040523d82523d6000602084013e611362565b606091505b50909250905081611374573d60208201fd5b80806020019051810190611388919061199c565b9350935050509250929050565b600073ffffffffffffffffffffffffffffffffffffffff8316611414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f20616464726573730000000000604482015260640161023a565b73ffffffffffffffffffffffffffffffffffffffff8216611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f20616464726573730000000000604482015260640161023a565b60405173ffffffffffffffffffffffffffffffffffffffff848116602483015283166044820152600090819061040590606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffd73c4a0000000000000000000000000000000000000000000000000000000017905251611545919061190d565b600060405180830381855afa9150503d8060008114611580576040519150601f19603f3d011682016040523d82523d6000602084013e611585565b606091505b50909250905081611597573d60208201fd5b8080602001905181019061068891906119c0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146115fc57600080fd5b50565b803561160a816115da565b919050565b600082601f83011261162057600080fd5b8135602067ffffffffffffffff8083111561163d5761163d6115ab565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108482111715611680576116806115ab565b60405293845285810183019383810192508785111561169e57600080fd5b83870191505b848210156116c4576116b5826115ff565b835291830191908301906116a4565b979650505050505050565b6000806000606084860312156116e457600080fd5b833567ffffffffffffffff8111156116fb57600080fd5b6117078682870161160f565b9660208601359650604090950135949350505050565b6000806040838503121561173057600080fd5b823567ffffffffffffffff81111561174757600080fd5b6117538582860161160f565b95602094909401359450505050565b600080600080600060a0868803121561177a57600080fd5b8535611785816115da565b94506020860135611795816115da565b94979496505050506040830135926060810135926080909101359150565b600080604083850312156117c657600080fd5b82356117d1816115da565b915060208301356117e1816115da565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611873577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600081518084526020808501945080840160005b838110156118c057815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010161188e565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff851681526080602082015260006118fa608083018661187a565b6040830194909452506060015292915050565b6000825160005b8181101561192e5760208186018101518583015201611914565b506000920191825250919050565b60006020828403121561194e57600080fd5b5051919050565b606081526000611968606083018661187a565b60208301949094525060400152919050565b60408152600061198d604083018561187a565b90508260208301529392505050565b600080604083850312156119af57600080fd5b505080516020909101519092909150565b6000602082840312156119d257600080fd5b81516119dd816115da565b939250505056fea26469706673582212203b838f946d0923478dfb209677c4203d40d5aab19788aefaf7e7c0c5009602c864736f6c63430008120033" ], [ "DEXV2", "0x0000000000000000000000000000000000000803", - "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806392ea19911161008c578063e2dc85dc11610066578063e2dc85dc146101e5578063f1e908f8146101f8578063f4f31ede1461020b578063ffd73c4a1461021e57600080fd5b806392ea1991146101ac578063aa02e9d3146101bf578063dbcd19a2146101d257600080fd5b80635859df34116100c85780635859df34146101605780636fc4b4e5146101735780638ef239cf1461018657806391c98a2a1461019957600080fd5b8063165c7c9a146100ef5780633d8d96201461011c5780634d60beb11461013f575b600080fd5b6101026100fd366004611fd0565b610256565b604080519283526020830191909152015b60405180910390f35b61012f61012a3660046120da565b61042d565b6040519015158152602001610113565b61015261014d366004612128565b61068d565b604051908152602001610113565b61010261016e366004611fd0565b610893565b61012f6101813660046120da565b6109f2565b61010261019436600461216d565b610c3e565b61012f6101a73660046121b8565b610e19565b61012f6101ba366004612209565b6110ed565b61012f6101cd36600461216d565b611371565b6101526101e0366004612128565b61159a565b61012f6101f33660046121b8565b611731565b61012f61020636600461216d565b6119c4565b610102610219366004611fd0565b611c78565b61023161022c366004611fd0565b611dd7565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b60008073ffffffffffffffffffffffffffffffffffffffff84166102c15760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166103245760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260009081906104059060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f165c7c9a00000000000000000000000000000000000000000000000000000000179052516103ba919061224f565b600060405180830381855afa9150503d80600081146103f5576040519150601f19603f3d011682016040523d82523d6000602084013e6103fa565b606091505b5090925090508161040c573d60208201fd5b80806020019051810190610420919061227e565b9350935050509250929050565b6000805b84518110156104e157600073ffffffffffffffffffffffffffffffffffffffff16858281518110610464576104646122a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16036104cf5760405162461bcd60e51b815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064016102b8565b806104d9816122d1565b915050610431565b50826000036105325760405162461bcd60e51b815260206004820152601960248201527f4445583a20746172676574416d6f756e74206973207a65726f0000000000000060448201526064016102b8565b60008061040573ffffffffffffffffffffffffffffffffffffffff16338787876040516024016105659493929190612381565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9782ac8100000000000000000000000000000000000000000000000000000000179052516105c8919061224f565b6000604051808303816000865af19150503d8060008114610605576040519150601f19603f3d011682016040523d82523d6000602084013e61060a565b606091505b5090925090508161061c573d60208201fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7b1ccce9b5299ff0ae3d9adc0855268a4ad3527b2bcde01ccadde2fb878ecb8a878380602001905181019061066991906123c3565b88604051610679939291906123dc565b60405180910390a250600195945050505050565b6000805b835181101561074157600073ffffffffffffffffffffffffffffffffffffffff168482815181106106c4576106c46122a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff160361072f5760405162461bcd60e51b815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064016102b8565b80610739816122d1565b915050610691565b50816000036107925760405162461bcd60e51b815260206004820152601960248201527f4445583a20737570706c79416d6f756e74206973207a65726f0000000000000060448201526064016102b8565b60008061040573ffffffffffffffffffffffffffffffffffffffff1685856040516024016107c1929190612401565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4d60beb10000000000000000000000000000000000000000000000000000000017905251610824919061224f565b600060405180830381855afa9150503d806000811461085f576040519150601f19603f3d011682016040523d82523d6000602084013e610864565b606091505b50909250905081610876573d60208201fd5b8080602001905181019061088a91906123c3565b95945050505050565b60008073ffffffffffffffffffffffffffffffffffffffff84166108f95760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff831661095c5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260009081906104059060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5859df3400000000000000000000000000000000000000000000000000000000179052516103ba919061224f565b6000805b8451811015610aa657600073ffffffffffffffffffffffffffffffffffffffff16858281518110610a2957610a296122a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610a945760405162461bcd60e51b815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064016102b8565b80610a9e816122d1565b9150506109f6565b5082600003610af75760405162461bcd60e51b815260206004820152601960248201527f4445583a20737570706c79416d6f756e74206973207a65726f0000000000000060448201526064016102b8565b60008061040573ffffffffffffffffffffffffffffffffffffffff1633878787604051602401610b2a9493929190612381565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f579baa180000000000000000000000000000000000000000000000000000000017905251610b8d919061224f565b6000604051808303816000865af19150503d8060008114610bca576040519150601f19603f3d011682016040523d82523d6000602084013e610bcf565b606091505b50909250905081610be1573d60208201fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7b1ccce9b5299ff0ae3d9adc0855268a4ad3527b2bcde01ccadde2fb878ecb8a878784806020019051810190610c2f91906123c3565b604051610679939291906123dc565b60008073ffffffffffffffffffffffffffffffffffffffff8416610ca45760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8316610d075760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff868116602483015285811660448301528416606482015260009081906104059060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7d3d27f20000000000000000000000000000000000000000000000000000000017905251610da5919061224f565b600060405180830381855afa9150503d8060008114610de0576040519150601f19603f3d011682016040523d82523d6000602084013e610de5565b606091505b50909250905081610df7573d60208201fd5b80806020019051810190610e0b919061227e565b935093505050935093915050565b600073ffffffffffffffffffffffffffffffffffffffff8616610e7e5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8516610ee15760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b83600003610f315760405162461bcd60e51b815260206004820152601760248201527f4445583a206d6178416d6f756e7441206973207a65726f00000000000000000060448201526064016102b8565b82600003610f815760405162461bcd60e51b815260206004820152601760248201527f4445583a206d6178416d6f756e7442206973207a65726f00000000000000000060448201526064016102b8565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8781166044830152861660648201526084810185905260a4810184905260c4810183905260009081906104059060e40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f67088d590000000000000000000000000000000000000000000000000000000017905251611032919061224f565b6000604051808303816000865af19150503d806000811461106f576040519150601f19603f3d011682016040523d82523d6000602084013e611074565b606091505b50909250905081611086573d60208201fd5b604080518781526020810187905273ffffffffffffffffffffffffffffffffffffffff808a1692908b169133917f5b6f5f6550282279c4e72b95a8ba538bea92c64dec9e8c7c08a556d4457225c891015b60405180910390a4506001979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff85166111525760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff84166111b55760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b821515806111c257508115155b61120e5760405162461bcd60e51b815260206004820181905260248201527f4445583a20696e76616c696420636f6e747269627574696f6e20616d6f756e7460448201526064016102b8565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8681166044830152851660648201526084810184905260a4810183905260009081906104059060c40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97a2051600000000000000000000000000000000000000000000000000000000179052516112b8919061224f565b6000604051808303816000865af19150503d80600081146112f5576040519150601f19603f3d011682016040523d82523d6000602084013e6112fa565b606091505b5090925090508161130c573d60208201fd5b604080518681526020810186905273ffffffffffffffffffffffffffffffffffffffff80891692908a169133917f8d1357284615c1e124990863d94a78bee5ad0b610eda8b2e250d792224bfa520910160405180910390a45060019695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff84166113d65760405162461bcd60e51b815260206004820152601860248201527f4445583a2077686f206973207a65726f2061646472657373000000000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff83166114395760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff821661149c5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff858116602483015284811660448301528316606482015260009081906104059060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167faa02e9d3000000000000000000000000000000000000000000000000000000001790525161153a919061224f565b6000604051808303816000865af19150503d8060008114611577576040519150601f19603f3d011682016040523d82523d6000602084013e61157c565b606091505b5090925090508161158e573d60208201fd5b50600195945050505050565b6000805b835181101561164e57600073ffffffffffffffffffffffffffffffffffffffff168482815181106115d1576115d16122a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff160361163c5760405162461bcd60e51b815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064016102b8565b80611646816122d1565b91505061159e565b508160000361169f5760405162461bcd60e51b815260206004820152601960248201527f4445583a20746172676574416d6f756e74206973207a65726f0000000000000060448201526064016102b8565b60008061040573ffffffffffffffffffffffffffffffffffffffff1685856040516024016116ce929190612401565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fdbcd19a20000000000000000000000000000000000000000000000000000000017905251610824919061224f565b600073ffffffffffffffffffffffffffffffffffffffff86166117965760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff85166117f95760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b836000036118495760405162461bcd60e51b815260206004820152601860248201527f4445583a2072656d6f76655368617265206973207a65726f000000000000000060448201526064016102b8565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8781166044830152861660648201526084810185905260a4810184905260c4810183905260009081906104059060e40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3531533200000000000000000000000000000000000000000000000000000000179052516118fa919061224f565b6000604051808303816000865af19150503d8060008114611937576040519150601f19603f3d011682016040523d82523d6000602084013e61193c565b606091505b5090925090508161194e573d60208201fd5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f038116623990e7d0fed04a27e35b5dc88000ea942b37360c5898ae750bfa5df6896040516110d791815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8416611a295760405162461bcd60e51b815260206004820152601860248201527f4445583a2077686f206973207a65726f2061646472657373000000000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8316611a8c5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8216611aef5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff858116602483015284811660448301528316606482015260009081906104059060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff1e908f80000000000000000000000000000000000000000000000000000000017905251611b8d919061224f565b6000604051808303816000865af19150503d8060008114611bca576040519150601f19603f3d011682016040523d82523d6000602084013e611bcf565b606091505b50909250905081611be1573d60208201fd5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f0a871e96c44907fad6faf1446ccd03932216813ea3a548e12e72a217d7e8c96784806020019051810190611c5b91906123c3565b60405190815260200160405180910390a450600195945050505050565b60008073ffffffffffffffffffffffffffffffffffffffff8416611cde5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8316611d415760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260009081906104059060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff4f31ede00000000000000000000000000000000000000000000000000000000179052516103ba919061224f565b600073ffffffffffffffffffffffffffffffffffffffff8316611e3c5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8216611e9f5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528316604482015260009081906104059060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffd73c4a0000000000000000000000000000000000000000000000000000000017905251611f35919061224f565b600060405180830381855afa9150503d8060008114611f70576040519150601f19603f3d011682016040523d82523d6000602084013e611f75565b606091505b50909250905081611f87573d60208201fd5b8080602001905181019061088a9190612423565b73ffffffffffffffffffffffffffffffffffffffff81168114611fbd57600080fd5b50565b8035611fcb81611f9b565b919050565b60008060408385031215611fe357600080fd5b8235611fee81611f9b565b91506020830135611ffe81611f9b565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261204957600080fd5b8135602067ffffffffffffffff8083111561206657612066612009565b8260051b604051601f19603f8301168101818110848211171561208b5761208b612009565b6040529384528581018301938381019250878511156120a957600080fd5b83870191505b848210156120cf576120c082611fc0565b835291830191908301906120af565b979650505050505050565b6000806000606084860312156120ef57600080fd5b833567ffffffffffffffff81111561210657600080fd5b61211286828701612038565b9660208601359650604090950135949350505050565b6000806040838503121561213b57600080fd5b823567ffffffffffffffff81111561215257600080fd5b61215e85828601612038565b95602094909401359450505050565b60008060006060848603121561218257600080fd5b833561218d81611f9b565b9250602084013561219d81611f9b565b915060408401356121ad81611f9b565b809150509250925092565b600080600080600060a086880312156121d057600080fd5b85356121db81611f9b565b945060208601356121eb81611f9b565b94979496505050506040830135926060810135926080909101359150565b6000806000806080858703121561221f57600080fd5b843561222a81611f9b565b9350602085013561223a81611f9b565b93969395505050506040820135916060013590565b6000825160005b818110156122705760208186018101518583015201612256565b506000920191825250919050565b6000806040838503121561229157600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612329577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600081518084526020808501945080840160005b8381101561237657815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101612344565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff851681526080602082015260006123b06080830186612330565b6040830194909452506060015292915050565b6000602082840312156123d557600080fd5b5051919050565b6060815260006123ef6060830186612330565b60208301949094525060400152919050565b6040815260006124146040830185612330565b90508260208301529392505050565b60006020828403121561243557600080fd5b815161244081611f9b565b939250505056fea2646970667358221220c4caa2d2c812c87c1ae3d949c009784662857384465e88145e4cbe3e5ac1b68a64736f6c63430008120033" + "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806392ea19911161008c578063e2dc85dc11610066578063e2dc85dc146101e5578063f1e908f8146101f8578063f4f31ede1461020b578063ffd73c4a1461021e57600080fd5b806392ea1991146101ac578063aa02e9d3146101bf578063dbcd19a2146101d257600080fd5b80635859df34116100c85780635859df34146101605780636fc4b4e5146101735780638ef239cf1461018657806391c98a2a1461019957600080fd5b8063165c7c9a146100ef5780633d8d96201461011c5780634d60beb11461013f575b600080fd5b6101026100fd366004611fd0565b610256565b604080519283526020830191909152015b60405180910390f35b61012f61012a3660046120da565b61042d565b6040519015158152602001610113565b61015261014d366004612128565b61068d565b604051908152602001610113565b61010261016e366004611fd0565b610893565b61012f6101813660046120da565b6109f2565b61010261019436600461216d565b610c3e565b61012f6101a73660046121b8565b610e19565b61012f6101ba366004612209565b6110ed565b61012f6101cd36600461216d565b611371565b6101526101e0366004612128565b61159a565b61012f6101f33660046121b8565b611731565b61012f61020636600461216d565b6119c4565b610102610219366004611fd0565b611c78565b61023161022c366004611fd0565b611dd7565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b60008073ffffffffffffffffffffffffffffffffffffffff84166102c15760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166103245760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260009081906104059060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f165c7c9a00000000000000000000000000000000000000000000000000000000179052516103ba919061224f565b600060405180830381855afa9150503d80600081146103f5576040519150601f19603f3d011682016040523d82523d6000602084013e6103fa565b606091505b5090925090508161040c573d60208201fd5b80806020019051810190610420919061227e565b9350935050509250929050565b6000805b84518110156104e157600073ffffffffffffffffffffffffffffffffffffffff16858281518110610464576104646122a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16036104cf5760405162461bcd60e51b815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064016102b8565b806104d9816122d1565b915050610431565b50826000036105325760405162461bcd60e51b815260206004820152601960248201527f4445583a20746172676574416d6f756e74206973207a65726f0000000000000060448201526064016102b8565b60008061040573ffffffffffffffffffffffffffffffffffffffff16338787876040516024016105659493929190612381565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9782ac8100000000000000000000000000000000000000000000000000000000179052516105c8919061224f565b6000604051808303816000865af19150503d8060008114610605576040519150601f19603f3d011682016040523d82523d6000602084013e61060a565b606091505b5090925090508161061c573d60208201fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7b1ccce9b5299ff0ae3d9adc0855268a4ad3527b2bcde01ccadde2fb878ecb8a878380602001905181019061066991906123c3565b88604051610679939291906123dc565b60405180910390a250600195945050505050565b6000805b835181101561074157600073ffffffffffffffffffffffffffffffffffffffff168482815181106106c4576106c46122a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff160361072f5760405162461bcd60e51b815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064016102b8565b80610739816122d1565b915050610691565b50816000036107925760405162461bcd60e51b815260206004820152601960248201527f4445583a20737570706c79416d6f756e74206973207a65726f0000000000000060448201526064016102b8565b60008061040573ffffffffffffffffffffffffffffffffffffffff1685856040516024016107c1929190612401565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4d60beb10000000000000000000000000000000000000000000000000000000017905251610824919061224f565b600060405180830381855afa9150503d806000811461085f576040519150601f19603f3d011682016040523d82523d6000602084013e610864565b606091505b50909250905081610876573d60208201fd5b8080602001905181019061088a91906123c3565b95945050505050565b60008073ffffffffffffffffffffffffffffffffffffffff84166108f95760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff831661095c5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260009081906104059060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5859df3400000000000000000000000000000000000000000000000000000000179052516103ba919061224f565b6000805b8451811015610aa657600073ffffffffffffffffffffffffffffffffffffffff16858281518110610a2957610a296122a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610a945760405162461bcd60e51b815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064016102b8565b80610a9e816122d1565b9150506109f6565b5082600003610af75760405162461bcd60e51b815260206004820152601960248201527f4445583a20737570706c79416d6f756e74206973207a65726f0000000000000060448201526064016102b8565b60008061040573ffffffffffffffffffffffffffffffffffffffff1633878787604051602401610b2a9493929190612381565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f579baa180000000000000000000000000000000000000000000000000000000017905251610b8d919061224f565b6000604051808303816000865af19150503d8060008114610bca576040519150601f19603f3d011682016040523d82523d6000602084013e610bcf565b606091505b50909250905081610be1573d60208201fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7b1ccce9b5299ff0ae3d9adc0855268a4ad3527b2bcde01ccadde2fb878ecb8a878784806020019051810190610c2f91906123c3565b604051610679939291906123dc565b60008073ffffffffffffffffffffffffffffffffffffffff8416610ca45760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8316610d075760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff868116602483015285811660448301528416606482015260009081906104059060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7d3d27f20000000000000000000000000000000000000000000000000000000017905251610da5919061224f565b600060405180830381855afa9150503d8060008114610de0576040519150601f19603f3d011682016040523d82523d6000602084013e610de5565b606091505b50909250905081610df7573d60208201fd5b80806020019051810190610e0b919061227e565b935093505050935093915050565b600073ffffffffffffffffffffffffffffffffffffffff8616610e7e5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8516610ee15760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b83600003610f315760405162461bcd60e51b815260206004820152601760248201527f4445583a206d6178416d6f756e7441206973207a65726f00000000000000000060448201526064016102b8565b82600003610f815760405162461bcd60e51b815260206004820152601760248201527f4445583a206d6178416d6f756e7442206973207a65726f00000000000000000060448201526064016102b8565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8781166044830152861660648201526084810185905260a4810184905260c4810183905260009081906104059060e40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f67088d590000000000000000000000000000000000000000000000000000000017905251611032919061224f565b6000604051808303816000865af19150503d806000811461106f576040519150601f19603f3d011682016040523d82523d6000602084013e611074565b606091505b50909250905081611086573d60208201fd5b604080518781526020810187905273ffffffffffffffffffffffffffffffffffffffff808a1692908b169133917f5b6f5f6550282279c4e72b95a8ba538bea92c64dec9e8c7c08a556d4457225c891015b60405180910390a4506001979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff85166111525760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff84166111b55760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b821515806111c257508115155b61120e5760405162461bcd60e51b815260206004820181905260248201527f4445583a20696e76616c696420636f6e747269627574696f6e20616d6f756e7460448201526064016102b8565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8681166044830152851660648201526084810184905260a4810183905260009081906104059060c40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97a2051600000000000000000000000000000000000000000000000000000000179052516112b8919061224f565b6000604051808303816000865af19150503d80600081146112f5576040519150601f19603f3d011682016040523d82523d6000602084013e6112fa565b606091505b5090925090508161130c573d60208201fd5b604080518681526020810186905273ffffffffffffffffffffffffffffffffffffffff80891692908a169133917f8d1357284615c1e124990863d94a78bee5ad0b610eda8b2e250d792224bfa520910160405180910390a45060019695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff84166113d65760405162461bcd60e51b815260206004820152601860248201527f4445583a2077686f206973207a65726f2061646472657373000000000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff83166114395760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff821661149c5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff858116602483015284811660448301528316606482015260009081906104059060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167faa02e9d3000000000000000000000000000000000000000000000000000000001790525161153a919061224f565b6000604051808303816000865af19150503d8060008114611577576040519150601f19603f3d011682016040523d82523d6000602084013e61157c565b606091505b5090925090508161158e573d60208201fd5b50600195945050505050565b6000805b835181101561164e57600073ffffffffffffffffffffffffffffffffffffffff168482815181106115d1576115d16122a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff160361163c5760405162461bcd60e51b815260206004820152601a60248201527f4445583a20746f6b656e206973207a65726f206164647265737300000000000060448201526064016102b8565b80611646816122d1565b91505061159e565b508160000361169f5760405162461bcd60e51b815260206004820152601960248201527f4445583a20746172676574416d6f756e74206973207a65726f0000000000000060448201526064016102b8565b60008061040573ffffffffffffffffffffffffffffffffffffffff1685856040516024016116ce929190612401565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fdbcd19a20000000000000000000000000000000000000000000000000000000017905251610824919061224f565b600073ffffffffffffffffffffffffffffffffffffffff86166117965760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff85166117f95760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b836000036118495760405162461bcd60e51b815260206004820152601860248201527f4445583a2072656d6f76655368617265206973207a65726f000000000000000060448201526064016102b8565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8781166044830152861660648201526084810185905260a4810184905260c4810183905260009081906104059060e40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3531533200000000000000000000000000000000000000000000000000000000179052516118fa919061224f565b6000604051808303816000865af19150503d8060008114611937576040519150601f19603f3d011682016040523d82523d6000602084013e61193c565b606091505b5090925090508161194e573d60208201fd5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f038116623990e7d0fed04a27e35b5dc88000ea942b37360c5898ae750bfa5df6896040516110d791815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8416611a295760405162461bcd60e51b815260206004820152601860248201527f4445583a2077686f206973207a65726f2061646472657373000000000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8316611a8c5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8216611aef5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff858116602483015284811660448301528316606482015260009081906104059060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff1e908f80000000000000000000000000000000000000000000000000000000017905251611b8d919061224f565b6000604051808303816000865af19150503d8060008114611bca576040519150601f19603f3d011682016040523d82523d6000602084013e611bcf565b606091505b50909250905081611be1573d60208201fd5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f0a871e96c44907fad6faf1446ccd03932216813ea3a548e12e72a217d7e8c96784806020019051810190611c5b91906123c3565b60405190815260200160405180910390a450600195945050505050565b60008073ffffffffffffffffffffffffffffffffffffffff8416611cde5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8316611d415760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260009081906104059060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff4f31ede00000000000000000000000000000000000000000000000000000000179052516103ba919061224f565b600073ffffffffffffffffffffffffffffffffffffffff8316611e3c5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e41206973207a65726f2061646472657373000000000060448201526064016102b8565b73ffffffffffffffffffffffffffffffffffffffff8216611e9f5760405162461bcd60e51b815260206004820152601b60248201527f4445583a20746f6b656e42206973207a65726f2061646472657373000000000060448201526064016102b8565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528316604482015260009081906104059060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffd73c4a0000000000000000000000000000000000000000000000000000000017905251611f35919061224f565b600060405180830381855afa9150503d8060008114611f70576040519150601f19603f3d011682016040523d82523d6000602084013e611f75565b606091505b50909250905081611f87573d60208201fd5b8080602001905181019061088a9190612423565b73ffffffffffffffffffffffffffffffffffffffff81168114611fbd57600080fd5b50565b8035611fcb81611f9b565b919050565b60008060408385031215611fe357600080fd5b8235611fee81611f9b565b91506020830135611ffe81611f9b565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261204957600080fd5b8135602067ffffffffffffffff8083111561206657612066612009565b8260051b604051601f19603f8301168101818110848211171561208b5761208b612009565b6040529384528581018301938381019250878511156120a957600080fd5b83870191505b848210156120cf576120c082611fc0565b835291830191908301906120af565b979650505050505050565b6000806000606084860312156120ef57600080fd5b833567ffffffffffffffff81111561210657600080fd5b61211286828701612038565b9660208601359650604090950135949350505050565b6000806040838503121561213b57600080fd5b823567ffffffffffffffff81111561215257600080fd5b61215e85828601612038565b95602094909401359450505050565b60008060006060848603121561218257600080fd5b833561218d81611f9b565b9250602084013561219d81611f9b565b915060408401356121ad81611f9b565b809150509250925092565b600080600080600060a086880312156121d057600080fd5b85356121db81611f9b565b945060208601356121eb81611f9b565b94979496505050506040830135926060810135926080909101359150565b6000806000806080858703121561221f57600080fd5b843561222a81611f9b565b9350602085013561223a81611f9b565b93969395505050506040820135916060013590565b6000825160005b818110156122705760208186018101518583015201612256565b506000920191825250919050565b6000806040838503121561229157600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612329577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600081518084526020808501945080840160005b8381101561237657815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101612344565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff851681526080602082015260006123b06080830186612330565b6040830194909452506060015292915050565b6000602082840312156123d557600080fd5b5051919050565b6060815260006123ef6060830186612330565b60208301949094525060400152919050565b6040815260006124146040830185612330565b90508260208301529392505050565b60006020828403121561243557600080fd5b815161244081611f9b565b939250505056fea26469706673582212203a665fb0856439456476aeba24e2d041bfb5953ec8a6c04c8f28fe60ca743df864736f6c63430008120033" ], [ "STABLE_ASSET",