From 623735630c6822b06608beb0b7af8e1e9a107242 Mon Sep 17 00:00:00 2001 From: cgewecke Date: Mon, 22 Nov 2021 12:34:09 -0800 Subject: [PATCH 1/3] Update Perp artifacts to v0.14.0 (commit 6e55fb6). Update owedPnl and pendingFunding getters for new interfaces --- .../external/perp-v2/IAccountBalance.sol | 4 +- .../protocol/modules/PerpV2LeverageModule.sol | 18 +- external/abi/perp/PerpV2AccountBalance.json | 117 +++++------ external/abi/perp/PerpV2BaseToken.json | 4 +- external/abi/perp/PerpV2ClearingHouse.json | 74 ++++++- .../abi/perp/PerpV2ClearingHouseConfig.json | 4 +- external/abi/perp/PerpV2Exchange.json | 186 ++++++------------ external/abi/perp/PerpV2InsuranceFund.json | 4 +- external/abi/perp/PerpV2MarketRegistry.json | 4 +- external/abi/perp/PerpV2OrderBook.json | 54 ++++- external/abi/perp/PerpV2QuoteToken.json | 4 +- external/abi/perp/PerpV2Vault.json | 30 ++- external/abi/perp/PerpV2VirtualToken.json | 4 +- utils/common/perpV2Utils.ts | 2 +- utils/fixtures/perpV2Fixture.ts | 11 +- 15 files changed, 275 insertions(+), 245 deletions(-) diff --git a/contracts/interfaces/external/perp-v2/IAccountBalance.sol b/contracts/interfaces/external/perp-v2/IAccountBalance.sol index 1f4aa3ff8..c2db0f302 100644 --- a/contracts/interfaces/external/perp-v2/IAccountBalance.sol +++ b/contracts/interfaces/external/perp-v2/IAccountBalance.sol @@ -24,10 +24,10 @@ interface IAccountBalance { function hasOrder(address trader) external view returns (bool); function getMarginRequirementForLiquidation(address trader) external view returns (int256); function getTotalDebtValue(address trader) external view returns (uint256); - function getOwedAndUnrealizedPnl(address trader) external view returns (int256, int256); + function getPnlAndPendingFee(address trader) external view returns (int256,int256,uint256); function getBase(address trader, address baseToken) external view returns (int256); function getQuote(address trader, address baseToken) external view returns (int256); - function getNetQuoteBalance(address trader) external view returns (int256); + function getNetQuoteBalanceAndPendingFee(address trader) external view returns (int256, uint256); function getPositionSize(address trader, address baseToken) external view returns (int256); function getPositionValue(address trader, address baseToken) external view returns (int256); function getTotalAbsPositionValue(address trader) external view returns (uint256); diff --git a/contracts/protocol/modules/PerpV2LeverageModule.sol b/contracts/protocol/modules/PerpV2LeverageModule.sol index 9bf6e47b9..824d282d6 100644 --- a/contracts/protocol/modules/PerpV2LeverageModule.sol +++ b/contracts/protocol/modules/PerpV2LeverageModule.sol @@ -53,7 +53,7 @@ import "hardhat/console.sol"; * represented as a positive equity external position whose value is the net Perp account value denominated in the collateral token * deposited into the Perp Protocol. This module only allows Perp positions to be collateralized by one asset, USDC, set on deployment of * this contract (see collateralToken) however it can take positions simultaneuosly in multiple base assets. - * + * * Upon issuance and redemption positions are not EXACTLY replicated like for other position types since a trade is necessary to enter/exit * the position on behalf of the issuer/redeemer. Any cost of entering/exiting the position (slippage) is carried by the issuer/redeemer. * Any pending funding costs or PnL is carried by the current token holders. To be used safely this module MUST issue using the @@ -520,7 +520,7 @@ contract PerpV2LeverageModule is ModuleBase, ReentrancyGuard, Ownable, IModuleIs uint256 _setTokenQuantity, IERC20 _component, bool _isEquity - ) + ) external override onlyModule(_setToken) @@ -665,7 +665,8 @@ contract PerpV2LeverageModule is ModuleBase, ReentrancyGuard, Ownable, IModuleIs * + pending funding payments (10**18) */ function getAccountInfo(ISetToken _setToken) public view returns (AccountInfo memory accountInfo) { - (int256 owedRealizedPnl, ) = perpAccountBalance.getOwedAndUnrealizedPnl(address(_setToken)); + (int256 owedRealizedPnl,, ) = perpAccountBalance.getPnlAndPendingFee(address(_setToken)); + (int256 netQuoteBalance, ) = perpAccountBalance.getNetQuoteBalanceAndPendingFee(address(_setToken)); // NOTE: pendingFundingPayments are represented as in the Perp system as "funding owed" // e.g a positive number is a debt which gets subtracted from owedRealizedPnl on settlement. @@ -674,7 +675,7 @@ contract PerpV2LeverageModule is ModuleBase, ReentrancyGuard, Ownable, IModuleIs collateralBalance: _getCollateralBalance(_setToken), owedRealizedPnl: owedRealizedPnl, pendingFundingPayments: perpExchange.getAllPendingFundingPayment(address(_setToken)).mul(-1), - netQuoteBalance: perpAccountBalance.getNetQuoteBalance(address(_setToken)) + netQuoteBalance: netQuoteBalance }); } @@ -989,7 +990,7 @@ contract PerpV2LeverageModule is ModuleBase, ReentrancyGuard, Ownable, IModuleIs } /** - * @dev Construct the ActionInfo struct for trading. This method takes POSITION UNIT amounts and passes to + * @dev Construct the ActionInfo struct for trading. This method takes POSITION UNIT amounts and passes to * _createAndValidateActionInfoNotional to create the struct. If the _baseTokenQuantity is zero then revert. * * @param _setToken Instance of the SetToken @@ -1115,9 +1116,10 @@ contract PerpV2LeverageModule is ModuleBase, ReentrancyGuard, Ownable, IModuleIs // account leverage = vAssets / (vAssets - vDebt + collateral) // vAsset value is postive when long, negative when short // vQuote balance is negative when long, positive when short + (int256 netQuoteBalance, ) = perpAccountBalance.getNetQuoteBalanceAndPendingFee(address(_setToken)); int256 currentAccountLeverage = totalPositionAbsoluteValue.preciseDiv( totalPositionNetValue - .add(perpAccountBalance.getNetQuoteBalance(address(_setToken))) + .add(netQuoteBalance) .add(_getCollateralBalance(_setToken)) ); @@ -1188,7 +1190,7 @@ contract PerpV2LeverageModule is ModuleBase, ReentrancyGuard, Ownable, IModuleIs view returns (int256) { - (int256 owedRealizedPnl, ) = perpAccountBalance.getOwedAndUnrealizedPnl(address(_setToken)); + (int256 owedRealizedPnl,,) = perpAccountBalance.getPnlAndPendingFee(address(_setToken)); int256 pendingFundingPayments = perpExchange.getAllPendingFundingPayment(address(_setToken)); // We subtract funding here since a positive value from Perp means funding is owed and the issuer should not pay @@ -1267,7 +1269,7 @@ contract PerpV2LeverageModule is ModuleBase, ReentrancyGuard, Ownable, IModuleIs } return (equityAdjustments, debtAdjustments); - } + } /** * @dev Converts a UniswapV3 sqrtPriceX96 value to a priceX96 value. This method is borrowed from diff --git a/external/abi/perp/PerpV2AccountBalance.json b/external/abi/perp/PerpV2AccountBalance.json index 87dbf3ab3..536fcd6e8 100644 --- a/external/abi/perp/PerpV2AccountBalance.json +++ b/external/abi/perp/PerpV2AccountBalance.json @@ -98,39 +98,6 @@ "name": "VaultChanged", "type": "event" }, - { - "inputs": [ - { - "internalType": "address", - "name": "trader", - "type": "address" - }, - { - "internalType": "address", - "name": "baseToken", - "type": "address" - }, - { - "internalType": "int256", - "name": "base", - "type": "int256" - }, - { - "internalType": "int256", - "name": "quote", - "type": "int256" - }, - { - "internalType": "int256", - "name": "owedRealizedPnl", - "type": "int256" - } - ], - "name": "addBalance", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -161,16 +128,6 @@ "name": "baseToken", "type": "address" }, - { - "internalType": "int256", - "name": "base", - "type": "int256" - }, - { - "internalType": "int256", - "name": "quote", - "type": "int256" - }, { "internalType": "int256", "name": "deltaTakerBase", @@ -180,11 +137,6 @@ "internalType": "int256", "name": "deltaTakerQuote", "type": "int256" - }, - { - "internalType": "int256", - "name": "owedRealizedPnl", - "type": "int256" } ], "name": "addTakerBalances", @@ -240,16 +192,6 @@ "outputs": [ { "components": [ - { - "internalType": "int256", - "name": "baseBalance", - "type": "int256" - }, - { - "internalType": "int256", - "name": "quoteBalance", - "type": "int256" - }, { "internalType": "int256", "name": "takerBaseBalance", @@ -383,12 +325,17 @@ "type": "address" } ], - "name": "getNetQuoteBalance", + "name": "getNetQuoteBalanceAndPendingFee", "outputs": [ { "internalType": "int256", - "name": "", + "name": "netQuoteBalance", "type": "int256" + }, + { + "internalType": "uint256", + "name": "pendingFee", + "type": "uint256" } ], "stateMutability": "view", @@ -415,7 +362,7 @@ "type": "address" } ], - "name": "getOwedAndUnrealizedPnl", + "name": "getPnlAndPendingFee", "outputs": [ { "internalType": "int256", @@ -426,6 +373,11 @@ "internalType": "int256", "name": "", "type": "int256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" } ], "stateMutability": "view", @@ -468,7 +420,7 @@ "type": "address" } ], - "name": "getTakerPositionSize", + "name": "getTakerOpenNotional", "outputs": [ { "internalType": "int256", @@ -492,7 +444,7 @@ "type": "address" } ], - "name": "getTakerQuote", + "name": "getTakerPositionSize", "outputs": [ { "internalType": "int256", @@ -541,6 +493,30 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "trader", + "type": "address" + }, + { + "internalType": "address", + "name": "baseToken", + "type": "address" + } + ], + "name": "getTotalOpenNotional", + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -730,22 +706,17 @@ }, { "internalType": "int256", - "name": "base", - "type": "int256" - }, - { - "internalType": "int256", - "name": "quote", + "name": "deltaTakerBase", "type": "int256" }, { "internalType": "int256", - "name": "deltaTakerBase", + "name": "deltaTakerQuote", "type": "int256" }, { "internalType": "int256", - "name": "deltaTakerQuote", + "name": "realizedPnl", "type": "int256" }, { @@ -832,8 +803,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612de5806100206000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c8063abdeb60411610125578063cb3c7b8e116100ad578063f807cd221161007c578063f807cd2214610470578063fa51ba8514610478578063fa8e30af1461048b578063fc7372141461049e578063fd6ceee5146104b15761021c565b8063cb3c7b8e14610417578063e7ec1a8514610437578063f0c797971461044a578063f75c266d1461045d5761021c565b8063b3bd6e12116100f4578063b3bd6e12146103c0578063bc5920ba146103d3578063beb56a75146103db578063c575ff79146103ee578063c5bba90f146103f65761021c565b8063abdeb60414610372578063af74e73614610385578063b248c4ef146103a5578063b2e27148146103ad5761021c565b806368f12e12116101a85780637a5b45a0116101775780637a5b45a0146103345780638227bc3e146103475780638d928af81461035a5780638da5cb5b14610362578063aa2a82941461036a5761021c565b806368f12e12146102f15780636c8381f8146103045780636ccdc82e14610319578063715018a61461032c5761021c565b80633f935107116101ef5780633f93510714610285578063449323d814610298578063485cc955146102ab5780636332fef6146102be5780636817031b146102de5761021c565b806313af403514610221578063293a5077146102365780632e4586c31461025f5780633772470214610272575b600080fd5b61023461022f366004612715565b6104c4565b005b610249610244366004612715565b61061f565b6040516102569190612af5565b60405180910390f35b61023461026d366004612785565b610774565b610234610280366004612876565b6107e6565b61024961029336600461274d565b610853565b6102346102a6366004612715565b61089f565b6102346102b936600461274d565b610974565b6102d16102cc36600461274d565b610b5b565b6040516102569190612c8d565b6102346102ec366004612715565b610bc6565b6102496102ff36600461274d565b610c9b565b61030c610d5b565b60405161025691906129ef565b610249610327366004612715565b610d6a565b610234610e33565b61024961034236600461274d565b610ee6565b610249610355366004612715565b610f14565b61030c61105c565b61030c61106b565b61030c61107a565b61024961038036600461274d565b611089565b610398610393366004612715565b6110b7565b6040516102569190612a9d565b61030c61112d565b6102496103bb36600461274d565b61113c565b6102496103ce36600461274d565b611172565b61023461119d565b6102346103e93660046127c5565b61129b565b61030c6112e9565b610409610404366004612715565b6112f8565b604051610256929190612afe565b61042a610425366004612715565b6113a6565b6040516102569190612aea565b610234610445366004612815565b61143a565b610234610458366004612785565b6114bb565b61024961046b366004612715565b611500565b61030c61159d565b610234610486366004612815565b6115ac565b61023461049936600461274d565b611613565b6102346104ac36600461274d565b611657565b6102496104bf366004612715565b611920565b6104cc61197d565b6001600160a01b03166104dd61106b565b6001600160a01b031614610521576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610565576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156105b1576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b03828116911614156105fd576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152609f602052604081205481908190815b81811015610742576001600160a01b0386166000908152609f6020526040812080548390811061066a57fe5b60009182526020808320909101546001600160a01b038a8116845260a080845260408086209290931680865291845282852083519182018452805480835260018201549583019590955260028101549382019390935260038301546060820152600490920154608083015293509190811315610709576107046106ff6106f76106f286611981565b611a84565b845190611ad0565b611b80565b61070c565b60005b90506107188682611b8e565b9550610731826020015188611b8e90919063ffffffff16565b9650506001909201915061063e9050565b506000808412156107535783610756565b60005b905061076a6107658285611b8e565b611bf3565b9695505050505050565b609b546001600160a01b031661078861197d565b6001600160a01b0316146107b75760405162461bcd60e51b81526004016107ae90612c2e565b60405180910390fd5b6001600160a01b03928316600090815260a0602090815260408083209490951682529290925291902060040155565b609b546001600160a01b03166107fa61197d565b6001600160a01b0316148061082957506067546001600160a01b031661081e61197d565b6001600160a01b0316145b6108455760405162461bcd60e51b81526004016107ae90612c0a565b61084f8282611c1b565b5050565b6000806108608484610c9b565b905080610871576000915050610899565b600061087c84611981565b90506108946106ff61088d83611a84565b8490611ad0565b925050505b92915050565b6108a761197d565b6001600160a01b03166108b861106b565b6001600160a01b0316146108fc576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61090e816001600160a01b0316611c9d565b61092a5760405162461bcd60e51b81526004016107ae90612b90565b606780546001600160a01b0319166001600160a01b0383169081179091556040517fd0654f5900f9e7e4e605a19334306e6a2786bbf960ac0484a4c12feb6428fe2f90600090a250565b600054610100900460ff168061098d575061098d611ca3565b8061099b575060005460ff16155b6109d65760405162461bcd60e51b815260040180806020018281038252602e815260200180612d0f602e913960400191505060405180910390fd5b600054610100900460ff16158015610a01576000805460ff1961ff0019909116610100171660011790555b610a13836001600160a01b0316611c9d565b610a2f5760405162461bcd60e51b81526004016107ae90612b0c565b610a41826001600160a01b0316611c9d565b610a5d5760405162461bcd60e51b81526004016107ae90612b4f565b6000826001600160a01b031663b248c4ef6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9857600080fd5b505afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190612731565b9050610ae4816001600160a01b0316611c9d565b610b005760405162461bcd60e51b81526004016107ae90612be9565b610b08611cb4565b609a80546001600160a01b038087166001600160a01b031992831617909255609b8054868416908316179055609c80549390921692169190911790558015610b56576000805461ff00191690555b505050565b610b636126e6565b506001600160a01b03918216600090815260a0602081815260408084209490951683529283529083902083519182018452805482526001810154928201929092526002820154928101929092526003810154606083015260040154608082015290565b610bce61197d565b6001600160a01b0316610bdf61106b565b6001600160a01b031614610c23576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610c35816001600160a01b0316611c9d565b610c515760405162461bcd60e51b81526004016107ae90612c6d565b609d80546001600160a01b0319166001600160a01b0383169081179091556040517fa49691f0dd6477ccef49962612a236d252e3a31c3be8b61fa6abeff3e74a757290600090a250565b600080610d38610cab8585611172565b609c5460405163bf0b1abb60e01b8152610d32916001600160a01b03169063bf0b1abb90610ce2908a908a90600190600401612a1d565b60206040518083038186803b158015610cfa57600080fd5b505afa158015610d0e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f29190612992565b90611b8e565b9050600a610d4582611bf3565b10610d505780610d53565b60005b949350505050565b6034546001600160a01b031690565b6001600160a01b0381166000908152609f6020908152604080832080548251818502810185019093528083528493830182828015610dd157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610db3575b505050505090506000808251905060005b81811015610e29576000848281518110610df857fe5b602002602001015190506000610e116107658984610853565b9050610e1d8582611d5e565b94505050600101610de2565b5090949350505050565b610e3b61197d565b6001600160a01b0316610e4c61106b565b6001600160a01b031614610e90576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b6001600160a01b03918216600090815260a06020908152604080832093909416825291909152206001015490565b6001600160a01b0381166000908152609f60205260408120548190815b81811015610f93576001600160a01b0385166000908152609f60205260408120805483908110610f5d57fe5b6000918252602090912001546001600160a01b03169050610f88610f818783610ee6565b8590611b8e565b935050600101610f31565b50609c546001600160a01b038581166000908152609f60205260408082209051632196f33360e21b81529193929092169163865bcccc91610fd8918991600401612a41565b60206040518083038186803b158015610ff057600080fd5b505afa158015611004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110289190612992565b90506000611038610f8183611a84565b9050600a61104582611bf3565b10611050578061076a565b50600095945050505050565b609d546001600160a01b031690565b6033546001600160a01b031690565b609a546001600160a01b031690565b6001600160a01b03918216600090815260a06020908152604080832093909416825291909152206003015490565b6001600160a01b0381166000908152609f602090815260409182902080548351818402810184019094528084526060939283018282801561112157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611103575b50505050509050919050565b609c546001600160a01b031690565b6001600160a01b03808316600090815260a060209081526040808320938516835292905290812060020154600a610d4582611bf3565b6001600160a01b03918216600090815260a06020908152604080832093909416825291909152205490565b6034546001600160a01b03166111e2576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b6111ea61197d565b6034546001600160a01b03908116911614611235576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6067546001600160a01b03166112af61197d565b6001600160a01b0316146112d55760405162461bcd60e51b81526004016107ae90612b2e565b6112e28585858585611db8565b5050505050565b6067546001600160a01b031690565b6001600160a01b0381166000908152609f602052604081205481908190815b81811015611372576001600160a01b0386166000908152609f6020526040812080548390811061134357fe5b6000918252602090912001546001600160a01b03169050611367610f818883610853565b935050600101611317565b50600061138283610d3288610f14565b6001600160a01b03969096166000908152609e602052604090205496945050505050565b609c546001600160a01b038281166000908152609f60205260408082209051634dffaee560e01b815291939290921691634dffaee5916113ea918691600401612a41565b60206040518083038186803b15801561140257600080fd5b505afa158015611416573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610899919061294f565b609b546001600160a01b031661144e61197d565b6001600160a01b0316148061147d57506067546001600160a01b031661147261197d565b6001600160a01b0316145b6114995760405162461bcd60e51b81526004016107ae90612c0a565b6114a68787878785611db8565b6114b287878585611e11565b50505050505050565b609b546001600160a01b03166114cf61197d565b6001600160a01b0316146114f55760405162461bcd60e51b81526004016107ae90612c2e565b610b56838383611eb5565b60006108996106f2609a60009054906101000a90046001600160a01b03166001600160a01b031663a85494026040518163ffffffff1660e01b815260040160206040518083038186803b15801561155657600080fd5b505afa15801561156a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158e919061296f565b61159785610d6a565b90611f12565b609b546001600160a01b031690565b6067546001600160a01b03166115c061197d565b6001600160a01b0316146115e65760405162461bcd60e51b81526004016107ae90612b2e565b6115f38787878785611db8565b6115ff87878585611e11565b6116098787611f27565b6114b28787611fdb565b6067546001600160a01b031661162761197d565b6001600160a01b03161461164d5760405162461bcd60e51b81526004016107ae90612b2e565b61084f8282611fdb565b6067546001600160a01b031661166b61197d565b6001600160a01b0316146116915760405162461bcd60e51b81526004016107ae90612b2e565b6001600160a01b0382166000908152609f60209081526040808320805482518185028101850190935280835291929091908301828280156116fb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116dd575b5050505050905080516000141561175057506001600160a01b038281166000908152609f602090815260408220805460018101825590835291200180546001600160a01b03191691831691909117905561084f565b61175a8383611172565b1580156117eb5750609c546040516321b499f560e11b81526001600160a01b039091169063436933ea906117949086908690600401612a03565b60006040518083038186803b1580156117ac57600080fd5b505afa1580156117c0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117e891908101906128a1565b51155b15610b565760005b815181101561183857826001600160a01b031682828151811061181257fe5b60200260200101516001600160a01b0316141561183057505061084f565b6001016117f3565b50609a60009054906101000a90046001600160a01b03166001600160a01b0316632c47ccba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561188757600080fd5b505afa15801561189b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bf91906129ce565b60ff168151106118e15760405162461bcd60e51b81526004016107ae90612b70565b506001600160a01b039182166000908152609f602090815260408220805460018101825590835291200180546001600160a01b03191691909216179055565b609d546000906001600160a01b031661193761197d565b6001600160a01b03161461195d5760405162461bcd60e51b81526004016107ae90612c4e565b506001600160a01b03166000908152609e60205260408120805491905590565b3390565b6000816001600160a01b03166312080647609a60009054906101000a90046001600160a01b03166001600160a01b0316633e742e3b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e057600080fd5b505afa1580156119f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1891906129aa565b6040518263ffffffff1660e01b8152600401611a349190612cc7565b60206040518083038186803b158015611a4c57600080fd5b505afa158015611a60573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108999190612992565b60006001600160ff1b03821115611acc5760405162461bcd60e51b8152600401808060200182810382526028815260200180612d646028913960400191505060405180910390fd5b5090565b600082611adf57506000610899565b82600019148015611af35750600160ff1b82145b15611b2f5760405162461bcd60e51b8152600401808060200182810382526027815260200180612d3d6027913960400191505060405180910390fd5b82820282848281611b3c57fe5b0514611b795760405162461bcd60e51b8152600401808060200182810382526027815260200180612d3d6027913960400191505060405180910390fd5b9392505050565b670de0b6b3a7640000900590565b6000828201818312801590611ba35750838112155b80611bb85750600083128015611bb857508381125b611b795760405162461bcd60e51b8152600401808060200182810382526021815260200180612cee6021913960400191505060405180910390fd5b6000808213611c1257611c0d611c088361231e565b61234a565b610899565b6108998261234a565b801561084f576001600160a01b0382166000908152609e6020526040902054611c449082611b8e565b6001600160a01b0383166000818152609e6020526040908190209290925590517febf4e69d81451d269fc4d9551b06d58bea2ed426d2c528919ce45f6070946efb90611c91908490612af5565b60405180910390a25050565b3b151590565b6000611cae30611c9d565b15905090565b600054610100900460ff1680611ccd5750611ccd611ca3565b80611cdb575060005460ff16155b611d165760405162461bcd60e51b815260040180806020018281038252602e815260200180612d0f602e913960400191505060405180910390fd5b600054610100900460ff16158015611d41576000805460ff1961ff0019909116610100171660011790555b611d496123a1565b8015611d5b576000805461ff00191690555b50565b600082820183811015611b79576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260a0602090815260408083209388168352929052208054611de99085611b8e565b81556001810154611dfa9084611b8e565b6001820155611e098683611c1b565b505050505050565b6001600160a01b03808516600090815260a0602090815260408083209387168352929052206002810154611e459084611b8e565b60028201556003810154611e599083611b8e565b8160030181905550836001600160a01b0316856001600160a01b03167f58311dac85a269dfcb2c361ba74457d04ec2d4f89db2dbe9295d0e04cf7b8e228585604051611ea6929190612afe565b60405180910390a35050505050565b6001600160a01b03808416600090815260a0602090815260408083209386168352929052206001810154611ee990836124a2565b60018201556003810154611efd90836124a2565b6003820155611f0c8483611c1b565b50505050565b6000611b79838362ffffff16620f4240612507565b611f318282610c9b565b158015611fc25750609c546040516321b499f560e11b81526001600160a01b039091169063436933ea90611f6b9085908590600401612a03565b60006040518083038186803b158015611f8357600080fd5b505afa158015611f97573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fbf91908101906128a1565b51155b1561084f5761084f8282611fd68585610ee6565b611eb5565b6001600160a01b03808316600090815260a060208181526040808420948616845293815291839020835191820184528054808352600182015493830193909352600281015493820193909352600383015460608201526004909201546080830152600a9061204890611bf3565b1015806120625750600a61205f8260200151611bf3565b10155b1561206d575061084f565b609c5460405163bf0b1abb60e01b81526000916001600160a01b03169063bf0b1abb906120a39087908790600190600401612a1d565b60206040518083038186803b1580156120bb57600080fd5b505afa1580156120cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f39190612992565b9050801561210257505061084f565b609c5460405163bf0b1abb60e01b81526000916001600160a01b03169063bf0b1abb9061213790889088908690600401612a1d565b60206040518083038186803b15801561214f57600080fd5b505afa158015612163573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121879190612992565b905080156121975750505061084f565b6001600160a01b03808616600081815260a0602090815260408083209489168352938152838220828155600181018390556002810183905560038101839055600401829055918152609f90915290812054905b818110156114b2576001600160a01b038781166000908152609f602052604090208054918816918390811061221b57fe5b6000918252602090912001546001600160a01b03161415612316576001820381146122ce576001600160a01b0387166000908152609f602052604090208054600019840190811061226857fe5b60009182526020808320909101546001600160a01b038a81168452609f909252604090922080549190921691908390811061229f57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6001600160a01b0387166000908152609f602052604090208054806122ef57fe5b600082815260209020810160001990810180546001600160a01b03191690550190556114b2565b6001016121ea565b6000600160ff1b82136123435760405162461bcd60e51b81526004016107ae90612bb2565b5060000390565b600080821215611acc576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b600054610100900460ff16806123ba57506123ba611ca3565b806123c8575060005460ff16155b6124035760405162461bcd60e51b815260040180806020018281038252602e815260200180612d0f602e913960400191505060405180910390fd5b600054610100900460ff1615801561242e576000805460ff1961ff0019909116610100171660011790555b6124366125b6565b600061244061197d565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015611d5b576000805461ff001916905550565b60008183038183128015906124b75750838113155b806124cc57506000831280156124cc57508381135b611b795760405162461bcd60e51b8152600401808060200182810382526024815260200180612d8c6024913960400191505060405180910390fd5b600080806000198587098686029250828110908390030390508061253d576000841161253257600080fd5b508290049050611b79565b80841161254957600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600054610100900460ff16806125cf57506125cf611ca3565b806125dd575060005460ff16155b6126185760405162461bcd60e51b815260040180806020018281038252602e815260200180612d0f602e913960400191505060405180910390fd5b600054610100900460ff16158015612643576000805460ff1961ff0019909116610100171660011790555b611d49600054610100900460ff168061265f575061265f611ca3565b8061266d575060005460ff16155b6126a85760405162461bcd60e51b815260040180806020018281038252602e815260200180612d0f602e913960400191505060405180910390fd5b600054610100900460ff16158015611d49576000805460ff1961ff0019909116610100171660011790558015611d5b576000805461ff001916905550565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b600060208284031215612726578081fd5b8135611b7981612cd8565b600060208284031215612742578081fd5b8151611b7981612cd8565b6000806040838503121561275f578081fd5b823561276a81612cd8565b9150602083013561277a81612cd8565b809150509250929050565b600080600060608486031215612799578081fd5b83356127a481612cd8565b925060208401356127b481612cd8565b929592945050506040919091013590565b600080600080600060a086880312156127dc578081fd5b85356127e781612cd8565b945060208601356127f781612cd8565b94979496505050506040830135926060810135926080909101359150565b600080600080600080600060e0888a03121561282f578182fd5b873561283a81612cd8565b9650602088013561284a81612cd8565b96999698505050506040850135946060810135946080820135945060a0820135935060c0909101359150565b60008060408385031215612888578182fd5b823561289381612cd8565b946020939093013593505050565b600060208083850312156128b3578182fd5b825167ffffffffffffffff808211156128ca578384fd5b818501915085601f8301126128dd578384fd5b8151818111156128e957fe5b8381026040518582820101818110858211171561290257fe5b604052828152858101935084860182860187018a1015612920578788fd5b8795505b83861015612942578051855260019590950194938601938601612924565b5098975050505050505050565b600060208284031215612960578081fd5b81518015158114611b79578182fd5b600060208284031215612980578081fd5b815162ffffff81168114611b79578182fd5b6000602082840312156129a3578081fd5b5051919050565b6000602082840312156129bb578081fd5b815163ffffffff81168114611b79578182fd5b6000602082840312156129df578081fd5b815160ff81168114611b79578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b60006040820160018060a01b03808616845260206040818601528286548085526060870191508786528286209450855b81811015612a8f578554851683526001958601959284019201612a71565b509098975050505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612ade5783516001600160a01b031683529284019291840191600101612ab9565b50909695505050505050565b901515815260200190565b90815260200190565b918252602082015260400190565b60208082526008908201526741425f4348434e4360c01b604082015260600190565b6020808252600790820152660869088be9e86960cb1b604082015260600190565b60208082526007908201526641425f45584e4360c81b604082015260600190565b60208082526006908201526541425f4d4e4560d01b604082015260600190565b6020808252600890820152674348445f43484e4360c01b604082015260600190565b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f7700000000604082015260600190565b60208082526007908201526641425f4f424e4360c81b604082015260600190565b6020808252600a908201526908284be9ebe8ab0f886960b31b604082015260600190565b60208082526006908201526508284be9e8ab60d31b604082015260600190565b60208082526005908201526420a12fa7ab60d91b604082015260600190565b60208082526006908201526541425f564e4360d01b604082015260600190565b600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b63ffffffff91909116815260200190565b6001600160a01b0381168114611d5b57600080fdfe5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a264697066735822122093f8823a79c093729925fca38424683d0ff622bcda97961c0ecdb4ee743fe25764736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061021c5760003560e01c8063abdeb60411610125578063cb3c7b8e116100ad578063f807cd221161007c578063f807cd2214610470578063fa51ba8514610478578063fa8e30af1461048b578063fc7372141461049e578063fd6ceee5146104b15761021c565b8063cb3c7b8e14610417578063e7ec1a8514610437578063f0c797971461044a578063f75c266d1461045d5761021c565b8063b3bd6e12116100f4578063b3bd6e12146103c0578063bc5920ba146103d3578063beb56a75146103db578063c575ff79146103ee578063c5bba90f146103f65761021c565b8063abdeb60414610372578063af74e73614610385578063b248c4ef146103a5578063b2e27148146103ad5761021c565b806368f12e12116101a85780637a5b45a0116101775780637a5b45a0146103345780638227bc3e146103475780638d928af81461035a5780638da5cb5b14610362578063aa2a82941461036a5761021c565b806368f12e12146102f15780636c8381f8146103045780636ccdc82e14610319578063715018a61461032c5761021c565b80633f935107116101ef5780633f93510714610285578063449323d814610298578063485cc955146102ab5780636332fef6146102be5780636817031b146102de5761021c565b806313af403514610221578063293a5077146102365780632e4586c31461025f5780633772470214610272575b600080fd5b61023461022f366004612715565b6104c4565b005b610249610244366004612715565b61061f565b6040516102569190612af5565b60405180910390f35b61023461026d366004612785565b610774565b610234610280366004612876565b6107e6565b61024961029336600461274d565b610853565b6102346102a6366004612715565b61089f565b6102346102b936600461274d565b610974565b6102d16102cc36600461274d565b610b5b565b6040516102569190612c8d565b6102346102ec366004612715565b610bc6565b6102496102ff36600461274d565b610c9b565b61030c610d5b565b60405161025691906129ef565b610249610327366004612715565b610d6a565b610234610e33565b61024961034236600461274d565b610ee6565b610249610355366004612715565b610f14565b61030c61105c565b61030c61106b565b61030c61107a565b61024961038036600461274d565b611089565b610398610393366004612715565b6110b7565b6040516102569190612a9d565b61030c61112d565b6102496103bb36600461274d565b61113c565b6102496103ce36600461274d565b611172565b61023461119d565b6102346103e93660046127c5565b61129b565b61030c6112e9565b610409610404366004612715565b6112f8565b604051610256929190612afe565b61042a610425366004612715565b6113a6565b6040516102569190612aea565b610234610445366004612815565b61143a565b610234610458366004612785565b6114bb565b61024961046b366004612715565b611500565b61030c61159d565b610234610486366004612815565b6115ac565b61023461049936600461274d565b611613565b6102346104ac36600461274d565b611657565b6102496104bf366004612715565b611920565b6104cc61197d565b6001600160a01b03166104dd61106b565b6001600160a01b031614610521576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610565576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156105b1576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b03828116911614156105fd576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152609f602052604081205481908190815b81811015610742576001600160a01b0386166000908152609f6020526040812080548390811061066a57fe5b60009182526020808320909101546001600160a01b038a8116845260a080845260408086209290931680865291845282852083519182018452805480835260018201549583019590955260028101549382019390935260038301546060820152600490920154608083015293509190811315610709576107046106ff6106f76106f286611981565b611a84565b845190611ad0565b611b80565b61070c565b60005b90506107188682611b8e565b9550610731826020015188611b8e90919063ffffffff16565b9650506001909201915061063e9050565b506000808412156107535783610756565b60005b905061076a6107658285611b8e565b611bf3565b9695505050505050565b609b546001600160a01b031661078861197d565b6001600160a01b0316146107b75760405162461bcd60e51b81526004016107ae90612c2e565b60405180910390fd5b6001600160a01b03928316600090815260a0602090815260408083209490951682529290925291902060040155565b609b546001600160a01b03166107fa61197d565b6001600160a01b0316148061082957506067546001600160a01b031661081e61197d565b6001600160a01b0316145b6108455760405162461bcd60e51b81526004016107ae90612c0a565b61084f8282611c1b565b5050565b6000806108608484610c9b565b905080610871576000915050610899565b600061087c84611981565b90506108946106ff61088d83611a84565b8490611ad0565b925050505b92915050565b6108a761197d565b6001600160a01b03166108b861106b565b6001600160a01b0316146108fc576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61090e816001600160a01b0316611c9d565b61092a5760405162461bcd60e51b81526004016107ae90612b90565b606780546001600160a01b0319166001600160a01b0383169081179091556040517fd0654f5900f9e7e4e605a19334306e6a2786bbf960ac0484a4c12feb6428fe2f90600090a250565b600054610100900460ff168061098d575061098d611ca3565b8061099b575060005460ff16155b6109d65760405162461bcd60e51b815260040180806020018281038252602e815260200180612d0f602e913960400191505060405180910390fd5b600054610100900460ff16158015610a01576000805460ff1961ff0019909116610100171660011790555b610a13836001600160a01b0316611c9d565b610a2f5760405162461bcd60e51b81526004016107ae90612b0c565b610a41826001600160a01b0316611c9d565b610a5d5760405162461bcd60e51b81526004016107ae90612b4f565b6000826001600160a01b031663b248c4ef6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9857600080fd5b505afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190612731565b9050610ae4816001600160a01b0316611c9d565b610b005760405162461bcd60e51b81526004016107ae90612be9565b610b08611cb4565b609a80546001600160a01b038087166001600160a01b031992831617909255609b8054868416908316179055609c80549390921692169190911790558015610b56576000805461ff00191690555b505050565b610b636126e6565b506001600160a01b03918216600090815260a0602081815260408084209490951683529283529083902083519182018452805482526001810154928201929092526002820154928101929092526003810154606083015260040154608082015290565b610bce61197d565b6001600160a01b0316610bdf61106b565b6001600160a01b031614610c23576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610c35816001600160a01b0316611c9d565b610c515760405162461bcd60e51b81526004016107ae90612c6d565b609d80546001600160a01b0319166001600160a01b0383169081179091556040517fa49691f0dd6477ccef49962612a236d252e3a31c3be8b61fa6abeff3e74a757290600090a250565b600080610d38610cab8585611172565b609c5460405163bf0b1abb60e01b8152610d32916001600160a01b03169063bf0b1abb90610ce2908a908a90600190600401612a1d565b60206040518083038186803b158015610cfa57600080fd5b505afa158015610d0e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f29190612992565b90611b8e565b9050600a610d4582611bf3565b10610d505780610d53565b60005b949350505050565b6034546001600160a01b031690565b6001600160a01b0381166000908152609f6020908152604080832080548251818502810185019093528083528493830182828015610dd157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610db3575b505050505090506000808251905060005b81811015610e29576000848281518110610df857fe5b602002602001015190506000610e116107658984610853565b9050610e1d8582611d5e565b94505050600101610de2565b5090949350505050565b610e3b61197d565b6001600160a01b0316610e4c61106b565b6001600160a01b031614610e90576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b6001600160a01b03918216600090815260a06020908152604080832093909416825291909152206001015490565b6001600160a01b0381166000908152609f60205260408120548190815b81811015610f93576001600160a01b0385166000908152609f60205260408120805483908110610f5d57fe5b6000918252602090912001546001600160a01b03169050610f88610f818783610ee6565b8590611b8e565b935050600101610f31565b50609c546001600160a01b038581166000908152609f60205260408082209051632196f33360e21b81529193929092169163865bcccc91610fd8918991600401612a41565b60206040518083038186803b158015610ff057600080fd5b505afa158015611004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110289190612992565b90506000611038610f8183611a84565b9050600a61104582611bf3565b10611050578061076a565b50600095945050505050565b609d546001600160a01b031690565b6033546001600160a01b031690565b609a546001600160a01b031690565b6001600160a01b03918216600090815260a06020908152604080832093909416825291909152206003015490565b6001600160a01b0381166000908152609f602090815260409182902080548351818402810184019094528084526060939283018282801561112157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611103575b50505050509050919050565b609c546001600160a01b031690565b6001600160a01b03808316600090815260a060209081526040808320938516835292905290812060020154600a610d4582611bf3565b6001600160a01b03918216600090815260a06020908152604080832093909416825291909152205490565b6034546001600160a01b03166111e2576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b6111ea61197d565b6034546001600160a01b03908116911614611235576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6067546001600160a01b03166112af61197d565b6001600160a01b0316146112d55760405162461bcd60e51b81526004016107ae90612b2e565b6112e28585858585611db8565b5050505050565b6067546001600160a01b031690565b6001600160a01b0381166000908152609f602052604081205481908190815b81811015611372576001600160a01b0386166000908152609f6020526040812080548390811061134357fe5b6000918252602090912001546001600160a01b03169050611367610f818883610853565b935050600101611317565b50600061138283610d3288610f14565b6001600160a01b03969096166000908152609e602052604090205496945050505050565b609c546001600160a01b038281166000908152609f60205260408082209051634dffaee560e01b815291939290921691634dffaee5916113ea918691600401612a41565b60206040518083038186803b15801561140257600080fd5b505afa158015611416573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610899919061294f565b609b546001600160a01b031661144e61197d565b6001600160a01b0316148061147d57506067546001600160a01b031661147261197d565b6001600160a01b0316145b6114995760405162461bcd60e51b81526004016107ae90612c0a565b6114a68787878785611db8565b6114b287878585611e11565b50505050505050565b609b546001600160a01b03166114cf61197d565b6001600160a01b0316146114f55760405162461bcd60e51b81526004016107ae90612c2e565b610b56838383611eb5565b60006108996106f2609a60009054906101000a90046001600160a01b03166001600160a01b031663a85494026040518163ffffffff1660e01b815260040160206040518083038186803b15801561155657600080fd5b505afa15801561156a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158e919061296f565b61159785610d6a565b90611f12565b609b546001600160a01b031690565b6067546001600160a01b03166115c061197d565b6001600160a01b0316146115e65760405162461bcd60e51b81526004016107ae90612b2e565b6115f38787878785611db8565b6115ff87878585611e11565b6116098787611f27565b6114b28787611fdb565b6067546001600160a01b031661162761197d565b6001600160a01b03161461164d5760405162461bcd60e51b81526004016107ae90612b2e565b61084f8282611fdb565b6067546001600160a01b031661166b61197d565b6001600160a01b0316146116915760405162461bcd60e51b81526004016107ae90612b2e565b6001600160a01b0382166000908152609f60209081526040808320805482518185028101850190935280835291929091908301828280156116fb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116dd575b5050505050905080516000141561175057506001600160a01b038281166000908152609f602090815260408220805460018101825590835291200180546001600160a01b03191691831691909117905561084f565b61175a8383611172565b1580156117eb5750609c546040516321b499f560e11b81526001600160a01b039091169063436933ea906117949086908690600401612a03565b60006040518083038186803b1580156117ac57600080fd5b505afa1580156117c0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117e891908101906128a1565b51155b15610b565760005b815181101561183857826001600160a01b031682828151811061181257fe5b60200260200101516001600160a01b0316141561183057505061084f565b6001016117f3565b50609a60009054906101000a90046001600160a01b03166001600160a01b0316632c47ccba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561188757600080fd5b505afa15801561189b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bf91906129ce565b60ff168151106118e15760405162461bcd60e51b81526004016107ae90612b70565b506001600160a01b039182166000908152609f602090815260408220805460018101825590835291200180546001600160a01b03191691909216179055565b609d546000906001600160a01b031661193761197d565b6001600160a01b03161461195d5760405162461bcd60e51b81526004016107ae90612c4e565b506001600160a01b03166000908152609e60205260408120805491905590565b3390565b6000816001600160a01b03166312080647609a60009054906101000a90046001600160a01b03166001600160a01b0316633e742e3b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e057600080fd5b505afa1580156119f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1891906129aa565b6040518263ffffffff1660e01b8152600401611a349190612cc7565b60206040518083038186803b158015611a4c57600080fd5b505afa158015611a60573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108999190612992565b60006001600160ff1b03821115611acc5760405162461bcd60e51b8152600401808060200182810382526028815260200180612d646028913960400191505060405180910390fd5b5090565b600082611adf57506000610899565b82600019148015611af35750600160ff1b82145b15611b2f5760405162461bcd60e51b8152600401808060200182810382526027815260200180612d3d6027913960400191505060405180910390fd5b82820282848281611b3c57fe5b0514611b795760405162461bcd60e51b8152600401808060200182810382526027815260200180612d3d6027913960400191505060405180910390fd5b9392505050565b670de0b6b3a7640000900590565b6000828201818312801590611ba35750838112155b80611bb85750600083128015611bb857508381125b611b795760405162461bcd60e51b8152600401808060200182810382526021815260200180612cee6021913960400191505060405180910390fd5b6000808213611c1257611c0d611c088361231e565b61234a565b610899565b6108998261234a565b801561084f576001600160a01b0382166000908152609e6020526040902054611c449082611b8e565b6001600160a01b0383166000818152609e6020526040908190209290925590517febf4e69d81451d269fc4d9551b06d58bea2ed426d2c528919ce45f6070946efb90611c91908490612af5565b60405180910390a25050565b3b151590565b6000611cae30611c9d565b15905090565b600054610100900460ff1680611ccd5750611ccd611ca3565b80611cdb575060005460ff16155b611d165760405162461bcd60e51b815260040180806020018281038252602e815260200180612d0f602e913960400191505060405180910390fd5b600054610100900460ff16158015611d41576000805460ff1961ff0019909116610100171660011790555b611d496123a1565b8015611d5b576000805461ff00191690555b50565b600082820183811015611b79576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260a0602090815260408083209388168352929052208054611de99085611b8e565b81556001810154611dfa9084611b8e565b6001820155611e098683611c1b565b505050505050565b6001600160a01b03808516600090815260a0602090815260408083209387168352929052206002810154611e459084611b8e565b60028201556003810154611e599083611b8e565b8160030181905550836001600160a01b0316856001600160a01b03167f58311dac85a269dfcb2c361ba74457d04ec2d4f89db2dbe9295d0e04cf7b8e228585604051611ea6929190612afe565b60405180910390a35050505050565b6001600160a01b03808416600090815260a0602090815260408083209386168352929052206001810154611ee990836124a2565b60018201556003810154611efd90836124a2565b6003820155611f0c8483611c1b565b50505050565b6000611b79838362ffffff16620f4240612507565b611f318282610c9b565b158015611fc25750609c546040516321b499f560e11b81526001600160a01b039091169063436933ea90611f6b9085908590600401612a03565b60006040518083038186803b158015611f8357600080fd5b505afa158015611f97573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fbf91908101906128a1565b51155b1561084f5761084f8282611fd68585610ee6565b611eb5565b6001600160a01b03808316600090815260a060208181526040808420948616845293815291839020835191820184528054808352600182015493830193909352600281015493820193909352600383015460608201526004909201546080830152600a9061204890611bf3565b1015806120625750600a61205f8260200151611bf3565b10155b1561206d575061084f565b609c5460405163bf0b1abb60e01b81526000916001600160a01b03169063bf0b1abb906120a39087908790600190600401612a1d565b60206040518083038186803b1580156120bb57600080fd5b505afa1580156120cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f39190612992565b9050801561210257505061084f565b609c5460405163bf0b1abb60e01b81526000916001600160a01b03169063bf0b1abb9061213790889088908690600401612a1d565b60206040518083038186803b15801561214f57600080fd5b505afa158015612163573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121879190612992565b905080156121975750505061084f565b6001600160a01b03808616600081815260a0602090815260408083209489168352938152838220828155600181018390556002810183905560038101839055600401829055918152609f90915290812054905b818110156114b2576001600160a01b038781166000908152609f602052604090208054918816918390811061221b57fe5b6000918252602090912001546001600160a01b03161415612316576001820381146122ce576001600160a01b0387166000908152609f602052604090208054600019840190811061226857fe5b60009182526020808320909101546001600160a01b038a81168452609f909252604090922080549190921691908390811061229f57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6001600160a01b0387166000908152609f602052604090208054806122ef57fe5b600082815260209020810160001990810180546001600160a01b03191690550190556114b2565b6001016121ea565b6000600160ff1b82136123435760405162461bcd60e51b81526004016107ae90612bb2565b5060000390565b600080821215611acc576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b600054610100900460ff16806123ba57506123ba611ca3565b806123c8575060005460ff16155b6124035760405162461bcd60e51b815260040180806020018281038252602e815260200180612d0f602e913960400191505060405180910390fd5b600054610100900460ff1615801561242e576000805460ff1961ff0019909116610100171660011790555b6124366125b6565b600061244061197d565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015611d5b576000805461ff001916905550565b60008183038183128015906124b75750838113155b806124cc57506000831280156124cc57508381135b611b795760405162461bcd60e51b8152600401808060200182810382526024815260200180612d8c6024913960400191505060405180910390fd5b600080806000198587098686029250828110908390030390508061253d576000841161253257600080fd5b508290049050611b79565b80841161254957600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600054610100900460ff16806125cf57506125cf611ca3565b806125dd575060005460ff16155b6126185760405162461bcd60e51b815260040180806020018281038252602e815260200180612d0f602e913960400191505060405180910390fd5b600054610100900460ff16158015612643576000805460ff1961ff0019909116610100171660011790555b611d49600054610100900460ff168061265f575061265f611ca3565b8061266d575060005460ff16155b6126a85760405162461bcd60e51b815260040180806020018281038252602e815260200180612d0f602e913960400191505060405180910390fd5b600054610100900460ff16158015611d49576000805460ff1961ff0019909116610100171660011790558015611d5b576000805461ff001916905550565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b600060208284031215612726578081fd5b8135611b7981612cd8565b600060208284031215612742578081fd5b8151611b7981612cd8565b6000806040838503121561275f578081fd5b823561276a81612cd8565b9150602083013561277a81612cd8565b809150509250929050565b600080600060608486031215612799578081fd5b83356127a481612cd8565b925060208401356127b481612cd8565b929592945050506040919091013590565b600080600080600060a086880312156127dc578081fd5b85356127e781612cd8565b945060208601356127f781612cd8565b94979496505050506040830135926060810135926080909101359150565b600080600080600080600060e0888a03121561282f578182fd5b873561283a81612cd8565b9650602088013561284a81612cd8565b96999698505050506040850135946060810135946080820135945060a0820135935060c0909101359150565b60008060408385031215612888578182fd5b823561289381612cd8565b946020939093013593505050565b600060208083850312156128b3578182fd5b825167ffffffffffffffff808211156128ca578384fd5b818501915085601f8301126128dd578384fd5b8151818111156128e957fe5b8381026040518582820101818110858211171561290257fe5b604052828152858101935084860182860187018a1015612920578788fd5b8795505b83861015612942578051855260019590950194938601938601612924565b5098975050505050505050565b600060208284031215612960578081fd5b81518015158114611b79578182fd5b600060208284031215612980578081fd5b815162ffffff81168114611b79578182fd5b6000602082840312156129a3578081fd5b5051919050565b6000602082840312156129bb578081fd5b815163ffffffff81168114611b79578182fd5b6000602082840312156129df578081fd5b815160ff81168114611b79578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b60006040820160018060a01b03808616845260206040818601528286548085526060870191508786528286209450855b81811015612a8f578554851683526001958601959284019201612a71565b509098975050505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612ade5783516001600160a01b031683529284019291840191600101612ab9565b50909695505050505050565b901515815260200190565b90815260200190565b918252602082015260400190565b60208082526008908201526741425f4348434e4360c01b604082015260600190565b6020808252600790820152660869088be9e86960cb1b604082015260600190565b60208082526007908201526641425f45584e4360c81b604082015260600190565b60208082526006908201526541425f4d4e4560d01b604082015260600190565b6020808252600890820152674348445f43484e4360c01b604082015260600190565b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f7700000000604082015260600190565b60208082526007908201526641425f4f424e4360c81b604082015260600190565b6020808252600a908201526908284be9ebe8ab0f886960b31b604082015260600190565b60208082526006908201526508284be9e8ab60d31b604082015260600190565b60208082526005908201526420a12fa7ab60d91b604082015260600190565b60208082526006908201526541425f564e4360d01b604082015260600190565b600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b63ffffffff91909116815260200190565b6001600160a01b0381168114611d5b57600080fdfe5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a264697066735822122093f8823a79c093729925fca38424683d0ff622bcda97961c0ecdb4ee743fe25764736f6c63430007060033", + "bytecode": "0x608060405234801561001057600080fd5b50612c53806100206000396000f3fe608060405234801561001057600080fd5b50600436106101ac5760003560e01c806313af4035146101b1578063293a5077146101c65780632e4586c3146101ef57806337724702146102025780633f93510714610215578063449323d814610228578063485cc9551461023b5780634c294e5f1461024e5780636332fef61461026f5780636817031b1461028f57806368f12e12146102a25780636c8381f8146102b55780636ccdc82e146102ca578063715018a6146102dd5780637a5b45a0146102e557806389f92177146102f85780638d928af81461030b5780638da5cb5b14610313578063aa2a82941461031b578063af74e73614610323578063b248c4ef14610343578063b2e271481461034b578063b39456901461035e578063b3bd6e1214610371578063bba85bcf14610384578063bc5920ba146103a6578063c575ff79146103ae578063cb3c7b8e146103b6578063d50d01b7146103d6578063ea45a8f9146103e9578063f0c79797146103fc578063f75c266d1461040f578063f807cd2214610422578063fa8e30af1461042a578063fc7372141461043d578063fd6ceee514610450575b600080fd5b6101c46101bf366004612580565b610463565b005b6101d96101d4366004612580565b6105be565b6040516101e6919061296e565b60405180910390f35b6101c46101fd3660046125f0565b6106bf565b6101c46102103660046126cd565b610731565b6101d96102233660046125b8565b61079e565b6101c4610236366004612580565b6107e0565b6101c46102493660046125b8565b610887565b61026161025c366004612580565b610a6e565b6040516101e692919061298d565b61028261027d3660046125b8565b610bb2565b6040516101e69190612b1b565b6101c461029d366004612580565b610c09565b6101d96102b03660046125b8565b610cde565b6102bd610e6e565b6040516101e69190612868565b6101d96102d8366004612580565b610e7d565b6101c4610f46565b6101d96102f33660046125b8565b610fe7565b6101c4610306366004612675565b6110b5565b6102bd6111ec565b6102bd6111fb565b6102bd61120a565b610336610331366004612580565b611219565b6040516101e69190612916565b6102bd61128f565b6101d96103593660046125b8565b61129e565b6101d961036c3660046125b8565b6112e6565b6101d961037f3660046125b8565b611392565b610397610392366004612580565b611456565b6040516101e693929190612977565b6101c4611520565b6102bd61160c565b6103c96103c4366004612580565b61161b565b6040516101e69190612963565b6101d96103e43660046125b8565b6116af565b6101c46103f7366004612630565b6116dd565b6101c461040a3660046125f0565b61174e565b6101d961041d366004612580565b611793565b6102bd611830565b6101c46104383660046125b8565b61183f565b6101c461044b3660046125b8565b611851565b6101d961045e366004612580565b6119aa565b61046b611a07565b6001600160a01b031661047c6111fb565b6001600160a01b0316146104c0576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610504576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b0382811691161415610550576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b038281169116141561059c576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152609f602052604081205481908190815b8181101561068d576001600160a01b0386166000908152609f6020526040812080548390811061060957fe5b60009182526020822001546001600160a01b031691506106298883611392565b905060008082121561065c5761065961064961064485611a0b565b611b0e565b8390670de0b6b3a7640000611b5a565b90505b6106668682611c00565b955061067c6106758a85610fe7565b8890611c00565b965050600190920191506105dd9050565b5060008084121561069e57836106a1565b60005b90506106b56106b08285611c00565b611c65565b9695505050505050565b609b546001600160a01b03166106d3611a07565b6001600160a01b0316146107025760405162461bcd60e51b81526004016106f990612a9a565b60405180910390fd5b6001600160a01b03928316600090815260a0602090815260408083209490951682529290925291902060020155565b609b546001600160a01b0316610745611a07565b6001600160a01b0316148061077457506067546001600160a01b0316610769611a07565b6001600160a01b0316145b6107905760405162461bcd60e51b81526004016106f990612a76565b61079a8282611c8e565b5050565b6000806107ab8484610cde565b9050806107bc5760009150506107da565b60006107c784611a0b565b90506107d561064982611b0e565b925050505b92915050565b6107e8611a07565b6001600160a01b03166107f96111fb565b6001600160a01b03161461083d576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b606780546001600160a01b0319166001600160a01b0383169081179091556040517fd0654f5900f9e7e4e605a19334306e6a2786bbf960ac0484a4c12feb6428fe2f90600090a250565b600054610100900460ff16806108a057506108a0611d10565b806108ae575060005460ff16155b6108e95760405162461bcd60e51b815260040180806020018281038252602e815260200180612b84602e913960400191505060405180910390fd5b600054610100900460ff16158015610914576000805460ff1961ff0019909116610100171660011790555b610926836001600160a01b0316611d21565b6109425760405162461bcd60e51b81526004016106f99061299b565b610954826001600160a01b0316611d21565b6109705760405162461bcd60e51b81526004016106f9906129de565b6000826001600160a01b031663b248c4ef6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ab57600080fd5b505afa1580156109bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e3919061259c565b90506109f7816001600160a01b0316611d21565b610a135760405162461bcd60e51b81526004016106f990612a55565b610a1b611d27565b609a80546001600160a01b038087166001600160a01b031992831617909255609b8054868416908316179055609c80549390921692169190911790558015610a69576000805461ff00191690555b505050565b6001600160a01b0381166000908152609f602052604081205481908190815b81811015610b06576001600160a01b0386166000908152609f60205260408120805483908110610ab957fe5b60009182526020808320909101546001600160a01b038a8116845260a08352604080852091909216808552925290912060010154909150610afb908590611c00565b935050600101610a8d565b50609c546001600160a01b038681166000908152609f6020526040808220905163d0581a9360e01b81529193929092169163d0581a9391610b4b918a916004016128ba565b604080518083038186803b158015610b6257600080fd5b505afa158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a91906127c5565b94509050610ba88382611c00565b9450505050915091565b610bba61255f565b506001600160a01b03918216600090815260a060209081526040808320939094168252918252829020825160608101845281548152600182015492810192909252600201549181019190915290565b610c11611a07565b6001600160a01b0316610c226111fb565b6001600160a01b031614610c66576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610c78816001600160a01b0316611d21565b610c945760405162461bcd60e51b81526004016106f990612ad9565b609d80546001600160a01b0319166001600160a01b0383169081179091556040517fa49691f0dd6477ccef49962612a236d252e3a31c3be8b61fa6abeff3e74a757290600090a250565b609c54604051635d8a541d60e01b815260009182916001600160a01b0390911690635d8a541d90610d189087908790600190600401612896565b604080518083038186803b158015610d2f57600080fd5b505afa158015610d43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6791906127c5565b50609c54604051637c2b7c5360e01b81529192506000916001600160a01b0390911690637c2b7c5390610da39088908890600190600401612896565b60206040518083038186803b158015610dbb57600080fd5b505afa158015610dcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df3919061280b565b90506000610e12610e0383611b0e565b610e0c85611b0e565b90611dd1565b6001600160a01b03808816600090815260a060209081526040808320938a16835292905290812054919250610e478383611c00565b9050600a610e5482611c65565b10610e5f5780610e62565b60005b98975050505050505050565b6034546001600160a01b031690565b6001600160a01b0381166000908152609f6020908152604080832080548251818502810185019093528083528493830182828015610ee457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ec6575b505050505090506000808251905060005b81811015610f3c576000848281518110610f0b57fe5b602002602001015190506000610f246106b0898461079e565b9050610f308582611e36565b94505050600101610ef5565b5090949350505050565b610f4e611a07565b6001600160a01b0316610f5f6111fb565b6001600160a01b031614610fa3576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b031690600080516020612bb2833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b609c54604051637c2b7c5360e01b815260009182916001600160a01b0390911690637c2b7c539061102090879087908690600401612896565b60206040518083038186803b15801561103857600080fd5b505afa15801561104c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611070919061280b565b90506110ad61107e82611b0e565b6001600160a01b03808716600090815260a0602090815260408083209389168352929052206001015490611dd1565b949350505050565b6110bd611e8e565b6110c78682611c8e565b6110d386868686611eca565b6110dd868661129e565b15801561116e5750609c546040516321b499f560e11b81526001600160a01b039091169063436933ea90611117908990899060040161287c565b60006040518083038186803b15801561112f57600080fd5b505afa158015611143573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261116b91908101906126f8565b51155b156111cf576001600160a01b03808716600090815260a060209081526040808320938916835292905220600101546111a581611c65565b6111ae84611c65565b11156111cc5760405162461bcd60e51b81526004016106f990612af9565b91505b6111da868684611f18565b6111e48686611f5b565b505050505050565b609d546001600160a01b031690565b6033546001600160a01b031690565b609a546001600160a01b031690565b6001600160a01b0381166000908152609f602090815260409182902080548351818402810184019094528084526060939283018282801561128357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611265575b50505050509050919050565b609c546001600160a01b031690565b6001600160a01b03808316600090815260a060209081526040808320938516835292905290812054600a6112d182611c65565b106112dc57806110ad565b5060009392505050565b609c54604051635d8a541d60e01b815260009182916001600160a01b0390911690635d8a541d9061131f90879087908690600401612896565b604080518083038186803b15801561133657600080fd5b505afa15801561134a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136e91906127c5565b509050600061137d8585610fe7565b90506107d58161138c84611b0e565b90611c00565b609c54604051637c2b7c5360e01b815260009182916001600160a01b0390911690637c2b7c53906113cc9087908790600190600401612896565b60206040518083038186803b1580156113e457600080fd5b505afa1580156113f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141c919061280b565b90506110ad61142a82611b0e565b6001600160a01b03808716600090815260a0602090815260408083209389168352929052205490611dd1565b6001600160a01b0381166000908152609f6020526040812054819081908190815b818110156114d9576001600160a01b0387166000908152609f602052604081208054839081106114a357fe5b6000918252602090912001546001600160a01b031690506114ce6114c7898361079e565b8590611c00565b935050600101611477565b506000806114e688610a6e565b909250905060006114f78584611c00565b6001600160a01b03999099166000908152609e6020526040902054999197509095505050505050565b6034546001600160a01b0316611565576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b61156d611a07565b6034546001600160a01b039081169116146115b8576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b039283169290911690600080516020612bb283398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6067546001600160a01b031690565b609c546001600160a01b038281166000908152609f60205260408082209051634dffaee560e01b815291939290921691634dffaee59161165f9186916004016128ba565b60206040518083038186803b15801561167757600080fd5b505afa15801561168b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107da91906127a5565b6001600160a01b03918216600090815260a06020908152604080832093909416825291909152206001015490565b609b546001600160a01b03166116f1611a07565b6001600160a01b0316148061172057506067546001600160a01b0316611715611a07565b6001600160a01b0316145b61173c5760405162461bcd60e51b81526004016106f990612a76565b61174884848484611eca565b50505050565b609b546001600160a01b0316611762611a07565b6001600160a01b0316146117885760405162461bcd60e51b81526004016106f990612a9a565b610a69838383611f18565b60006107da610644609a60009054906101000a90046001600160a01b03166001600160a01b031663a85494026040518163ffffffff1660e01b815260040160206040518083038186803b1580156117e957600080fd5b505afa1580156117fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182191906127e8565b61182a85610e7d565b90612199565b609b546001600160a01b031690565b611847611e8e565b61079a8282611f5b565b611859611e8e565b6001600160a01b0382166000908152609f6020908152604091829020805483518184028101840190945280845290926118d492909184918301828280156118c957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116118ab575b5050505050836121ae565b156118df575061079a565b8054600181018255600082815260209081902090910180546001600160a01b0319166001600160a01b0385811691909117909155609a5460408051631623e65d60e11b815290519190921692632c47ccba9260048082019391829003018186803b15801561194c57600080fd5b505afa158015611960573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119849190612847565b60ff1681805490501115610a695760405162461bcd60e51b81526004016106f9906129ff565b609d546000906001600160a01b03166119c1611a07565b6001600160a01b0316146119e75760405162461bcd60e51b81526004016106f990612aba565b506001600160a01b03166000908152609e60205260408120805491905590565b3390565b6000816001600160a01b03166312080647609a60009054906101000a90046001600160a01b03166001600160a01b0316633e742e3b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a6a57600080fd5b505afa158015611a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa29190612823565b6040518263ffffffff1660e01b8152600401611abe9190612b3c565b60206040518083038186803b158015611ad657600080fd5b505afa158015611aea573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107da919061280b565b60006001600160ff1b03821115611b565760405162461bcd60e51b8152600401808060200182810382526028815260200180612bd26028913960400191505060405180910390fd5b5090565b60008060008512611b6b5784611b74565b611b74856121fa565b90506000808512611b855784611b8e565b611b8e856121fa565b905060008087128015611ba15750600086135b80611bb75750600087138015611bb75750600086125b611bc2576000611bc5565b60015b90506000611bd4848488612226565b905081611be957611be481611b0e565b611bf2565b611bf2816122d5565b9450505050505b9392505050565b6000828201818312801590611c155750838112155b80611c2a5750600083128015611c2a57508381125b611bf95760405162461bcd60e51b8152600401808060200182810382526021815260200180612b636021913960400191505060405180910390fd5b600080821215611c8557611c80611c7b836121fa565b6122e9565b6107da565b6107da826122e9565b801561079a576001600160a01b0382166000908152609e6020526040902054611cb79082611c00565b6001600160a01b0383166000818152609e6020526040908190209290925590517febf4e69d81451d269fc4d9551b06d58bea2ed426d2c528919ce45f6070946efb90611d0490849061296e565b60405180910390a25050565b6000611d1b30611d21565b15905090565b3b151590565b600054610100900460ff1680611d405750611d40611d10565b80611d4e575060005460ff16155b611d895760405162461bcd60e51b815260040180806020018281038252602e815260200180612b84602e913960400191505060405180910390fd5b600054610100900460ff16158015611db4576000805460ff1961ff0019909116610100171660011790555b611dbc612340565b8015611dce576000805461ff00191690555b50565b6000818303818312801590611de65750838113155b80611dfb5750600083128015611dfb57508381135b611bf95760405162461bcd60e51b8152600401808060200182810382526024815260200180612bfa6024913960400191505060405180910390fd5b600082820183811015611bf9576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b6067546001600160a01b0316611ea2611a07565b6001600160a01b031614611ec85760405162461bcd60e51b81526004016106f9906129bd565b565b6001600160a01b03808516600090815260a0602090815260408083209387168352929052208054611efb9084611c00565b81556001810154611f0c9083611c00565b60019091015550505050565b6001600160a01b03808416600090815260a0602090815260408083209386168352929052206001810154611f4c9083611dd1565b60018201556117488483611c8e565b6001600160a01b03808316600090815260a0602090815260408083209385168352928152908290208251606081018452815480825260018301549382019390935260029091015492810192909252600a90611fb590611c65565b101580611fcf5750600a611fcc8260200151611c65565b10155b15611fda575061079a565b609c546040516321b499f560e11b81526000916001600160a01b03169063436933ea9061200d908790879060040161287c565b60006040518083038186803b15801561202557600080fd5b505afa158015612039573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261206191908101906126f8565b51111561206e575061079a565b6001600160a01b03808416600081815260a060209081526040808320948716835293815283822082815560018101839055600201829055918152609f909152908120805490915b818110156111e457846001600160a01b03168382815481106120d357fe5b6000918252602090912001546001600160a01b03161415612191576001820381146121605782600183038154811061210757fe5b9060005260206000200160009054906101000a90046001600160a01b031683828154811061213157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8280548061216a57fe5b600082815260209020810160001990810180546001600160a01b03191690550190556111e4565b6001016120b5565b6000611bf9838362ffffff16620f4240612226565b6000805b83518110156112dc57826001600160a01b03168482815181106121d157fe5b60200260200101516001600160a01b031614156121f25760019150506107da565b6001016121b2565b6000600160ff1b821361221f5760405162461bcd60e51b81526004016106f990612a1f565b5060000390565b600080806000198587098686029250828110908390030390508061225c576000841161225157600080fd5b508290049050611bf9565b80841161226857600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60006122e082611b0e565b60000392915050565b600080821215611b56576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b600054610100900460ff16806123595750612359611d10565b80612367575060005460ff16155b6123a25760405162461bcd60e51b815260040180806020018281038252602e815260200180612b84602e913960400191505060405180910390fd5b600054610100900460ff161580156123cd576000805460ff1961ff0019909116610100171660011790555b6123d561242f565b60006123df611a07565b603380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020612bb2833981519152908290a3508015611dce576000805461ff001916905550565b600054610100900460ff16806124485750612448611d10565b80612456575060005460ff16155b6124915760405162461bcd60e51b815260040180806020018281038252602e815260200180612b84602e913960400191505060405180910390fd5b600054610100900460ff161580156124bc576000805460ff1961ff0019909116610100171660011790555b611dbc600054610100900460ff16806124d857506124d8611d10565b806124e6575060005460ff16155b6125215760405162461bcd60e51b815260040180806020018281038252602e815260200180612b84602e913960400191505060405180910390fd5b600054610100900460ff16158015611dbc576000805460ff1961ff0019909116610100171660011790558015611dce576000805461ff001916905550565b60405180606001604052806000815260200160008152602001600081525090565b600060208284031215612591578081fd5b8135611bf981612b4d565b6000602082840312156125ad578081fd5b8151611bf981612b4d565b600080604083850312156125ca578081fd5b82356125d581612b4d565b915060208301356125e581612b4d565b809150509250929050565b600080600060608486031215612604578081fd5b833561260f81612b4d565b9250602084013561261f81612b4d565b929592945050506040919091013590565b60008060008060808587031215612645578081fd5b843561265081612b4d565b9350602085013561266081612b4d565b93969395505050506040820135916060013590565b60008060008060008060c0878903121561268d578182fd5b863561269881612b4d565b955060208701356126a881612b4d565b95989597505050506040840135936060810135936080820135935060a0909101359150565b600080604083850312156126df578182fd5b82356126ea81612b4d565b946020939093013593505050565b6000602080838503121561270a578182fd5b82516001600160401b0380821115612720578384fd5b818501915085601f830112612733578384fd5b81518181111561273f57fe5b8381026040518582820101818110858211171561275857fe5b604052828152858101935084860182860187018a1015612776578788fd5b8795505b8386101561279857805185526001959095019493860193860161277a565b5098975050505050505050565b6000602082840312156127b6578081fd5b81518015158114611bf9578182fd5b600080604083850312156127d7578182fd5b505080516020909101519092909150565b6000602082840312156127f9578081fd5b815162ffffff81168114611bf9578182fd5b60006020828403121561281c578081fd5b5051919050565b600060208284031215612834578081fd5b815163ffffffff81168114611bf9578182fd5b600060208284031215612858578081fd5b815160ff81168114611bf9578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b60006040820160018060a01b03808616845260206040818601528286548085526060870191508786528286209450855b818110156129085785548516835260019586019592840192016128ea565b509098975050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156129575783516001600160a01b031683529284019291840191600101612932565b50909695505050505050565b901515815260200190565b90815260200190565b9283526020830191909152604082015260600190565b918252602082015260400190565b60208082526008908201526741425f4348434e4360c01b604082015260600190565b6020808252600790820152660869088be9e86960cb1b604082015260600190565b60208082526007908201526641425f45584e4360c81b604082015260600190565b60208082526006908201526541425f4d4e4560d01b604082015260600190565b6020808252601c908201527b506572704d6174683a20696e76657273696f6e206f766572666c6f7760201b604082015260600190565b60208082526007908201526641425f4f424e4360c81b604082015260600190565b6020808252600a908201526908284be9ebe8ab0f886960b31b604082015260600190565b60208082526006908201526508284be9e8ab60d31b604082015260600190565b60208082526005908201526420a12fa7ab60d91b604082015260600190565b60208082526006908201526541425f564e4360d01b604082015260600190565b60208082526008908201526720a12fa4a8a120a960c11b604082015260600190565b81518152602080830151908201526040918201519181019190915260600190565b63ffffffff91909116815260200190565b6001600160a01b0381168114611dce57600080fdfe5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65648be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e053616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220319f543f5a72ad52a72cfbdc996de62fcd092a6573a9b704b82f76675dba471664736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ac5760003560e01c806313af4035146101b1578063293a5077146101c65780632e4586c3146101ef57806337724702146102025780633f93510714610215578063449323d814610228578063485cc9551461023b5780634c294e5f1461024e5780636332fef61461026f5780636817031b1461028f57806368f12e12146102a25780636c8381f8146102b55780636ccdc82e146102ca578063715018a6146102dd5780637a5b45a0146102e557806389f92177146102f85780638d928af81461030b5780638da5cb5b14610313578063aa2a82941461031b578063af74e73614610323578063b248c4ef14610343578063b2e271481461034b578063b39456901461035e578063b3bd6e1214610371578063bba85bcf14610384578063bc5920ba146103a6578063c575ff79146103ae578063cb3c7b8e146103b6578063d50d01b7146103d6578063ea45a8f9146103e9578063f0c79797146103fc578063f75c266d1461040f578063f807cd2214610422578063fa8e30af1461042a578063fc7372141461043d578063fd6ceee514610450575b600080fd5b6101c46101bf366004612580565b610463565b005b6101d96101d4366004612580565b6105be565b6040516101e6919061296e565b60405180910390f35b6101c46101fd3660046125f0565b6106bf565b6101c46102103660046126cd565b610731565b6101d96102233660046125b8565b61079e565b6101c4610236366004612580565b6107e0565b6101c46102493660046125b8565b610887565b61026161025c366004612580565b610a6e565b6040516101e692919061298d565b61028261027d3660046125b8565b610bb2565b6040516101e69190612b1b565b6101c461029d366004612580565b610c09565b6101d96102b03660046125b8565b610cde565b6102bd610e6e565b6040516101e69190612868565b6101d96102d8366004612580565b610e7d565b6101c4610f46565b6101d96102f33660046125b8565b610fe7565b6101c4610306366004612675565b6110b5565b6102bd6111ec565b6102bd6111fb565b6102bd61120a565b610336610331366004612580565b611219565b6040516101e69190612916565b6102bd61128f565b6101d96103593660046125b8565b61129e565b6101d961036c3660046125b8565b6112e6565b6101d961037f3660046125b8565b611392565b610397610392366004612580565b611456565b6040516101e693929190612977565b6101c4611520565b6102bd61160c565b6103c96103c4366004612580565b61161b565b6040516101e69190612963565b6101d96103e43660046125b8565b6116af565b6101c46103f7366004612630565b6116dd565b6101c461040a3660046125f0565b61174e565b6101d961041d366004612580565b611793565b6102bd611830565b6101c46104383660046125b8565b61183f565b6101c461044b3660046125b8565b611851565b6101d961045e366004612580565b6119aa565b61046b611a07565b6001600160a01b031661047c6111fb565b6001600160a01b0316146104c0576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610504576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b0382811691161415610550576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b038281169116141561059c576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152609f602052604081205481908190815b8181101561068d576001600160a01b0386166000908152609f6020526040812080548390811061060957fe5b60009182526020822001546001600160a01b031691506106298883611392565b905060008082121561065c5761065961064961064485611a0b565b611b0e565b8390670de0b6b3a7640000611b5a565b90505b6106668682611c00565b955061067c6106758a85610fe7565b8890611c00565b965050600190920191506105dd9050565b5060008084121561069e57836106a1565b60005b90506106b56106b08285611c00565b611c65565b9695505050505050565b609b546001600160a01b03166106d3611a07565b6001600160a01b0316146107025760405162461bcd60e51b81526004016106f990612a9a565b60405180910390fd5b6001600160a01b03928316600090815260a0602090815260408083209490951682529290925291902060020155565b609b546001600160a01b0316610745611a07565b6001600160a01b0316148061077457506067546001600160a01b0316610769611a07565b6001600160a01b0316145b6107905760405162461bcd60e51b81526004016106f990612a76565b61079a8282611c8e565b5050565b6000806107ab8484610cde565b9050806107bc5760009150506107da565b60006107c784611a0b565b90506107d561064982611b0e565b925050505b92915050565b6107e8611a07565b6001600160a01b03166107f96111fb565b6001600160a01b03161461083d576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b606780546001600160a01b0319166001600160a01b0383169081179091556040517fd0654f5900f9e7e4e605a19334306e6a2786bbf960ac0484a4c12feb6428fe2f90600090a250565b600054610100900460ff16806108a057506108a0611d10565b806108ae575060005460ff16155b6108e95760405162461bcd60e51b815260040180806020018281038252602e815260200180612b84602e913960400191505060405180910390fd5b600054610100900460ff16158015610914576000805460ff1961ff0019909116610100171660011790555b610926836001600160a01b0316611d21565b6109425760405162461bcd60e51b81526004016106f99061299b565b610954826001600160a01b0316611d21565b6109705760405162461bcd60e51b81526004016106f9906129de565b6000826001600160a01b031663b248c4ef6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ab57600080fd5b505afa1580156109bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e3919061259c565b90506109f7816001600160a01b0316611d21565b610a135760405162461bcd60e51b81526004016106f990612a55565b610a1b611d27565b609a80546001600160a01b038087166001600160a01b031992831617909255609b8054868416908316179055609c80549390921692169190911790558015610a69576000805461ff00191690555b505050565b6001600160a01b0381166000908152609f602052604081205481908190815b81811015610b06576001600160a01b0386166000908152609f60205260408120805483908110610ab957fe5b60009182526020808320909101546001600160a01b038a8116845260a08352604080852091909216808552925290912060010154909150610afb908590611c00565b935050600101610a8d565b50609c546001600160a01b038681166000908152609f6020526040808220905163d0581a9360e01b81529193929092169163d0581a9391610b4b918a916004016128ba565b604080518083038186803b158015610b6257600080fd5b505afa158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a91906127c5565b94509050610ba88382611c00565b9450505050915091565b610bba61255f565b506001600160a01b03918216600090815260a060209081526040808320939094168252918252829020825160608101845281548152600182015492810192909252600201549181019190915290565b610c11611a07565b6001600160a01b0316610c226111fb565b6001600160a01b031614610c66576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610c78816001600160a01b0316611d21565b610c945760405162461bcd60e51b81526004016106f990612ad9565b609d80546001600160a01b0319166001600160a01b0383169081179091556040517fa49691f0dd6477ccef49962612a236d252e3a31c3be8b61fa6abeff3e74a757290600090a250565b609c54604051635d8a541d60e01b815260009182916001600160a01b0390911690635d8a541d90610d189087908790600190600401612896565b604080518083038186803b158015610d2f57600080fd5b505afa158015610d43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6791906127c5565b50609c54604051637c2b7c5360e01b81529192506000916001600160a01b0390911690637c2b7c5390610da39088908890600190600401612896565b60206040518083038186803b158015610dbb57600080fd5b505afa158015610dcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df3919061280b565b90506000610e12610e0383611b0e565b610e0c85611b0e565b90611dd1565b6001600160a01b03808816600090815260a060209081526040808320938a16835292905290812054919250610e478383611c00565b9050600a610e5482611c65565b10610e5f5780610e62565b60005b98975050505050505050565b6034546001600160a01b031690565b6001600160a01b0381166000908152609f6020908152604080832080548251818502810185019093528083528493830182828015610ee457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ec6575b505050505090506000808251905060005b81811015610f3c576000848281518110610f0b57fe5b602002602001015190506000610f246106b0898461079e565b9050610f308582611e36565b94505050600101610ef5565b5090949350505050565b610f4e611a07565b6001600160a01b0316610f5f6111fb565b6001600160a01b031614610fa3576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b031690600080516020612bb2833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b609c54604051637c2b7c5360e01b815260009182916001600160a01b0390911690637c2b7c539061102090879087908690600401612896565b60206040518083038186803b15801561103857600080fd5b505afa15801561104c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611070919061280b565b90506110ad61107e82611b0e565b6001600160a01b03808716600090815260a0602090815260408083209389168352929052206001015490611dd1565b949350505050565b6110bd611e8e565b6110c78682611c8e565b6110d386868686611eca565b6110dd868661129e565b15801561116e5750609c546040516321b499f560e11b81526001600160a01b039091169063436933ea90611117908990899060040161287c565b60006040518083038186803b15801561112f57600080fd5b505afa158015611143573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261116b91908101906126f8565b51155b156111cf576001600160a01b03808716600090815260a060209081526040808320938916835292905220600101546111a581611c65565b6111ae84611c65565b11156111cc5760405162461bcd60e51b81526004016106f990612af9565b91505b6111da868684611f18565b6111e48686611f5b565b505050505050565b609d546001600160a01b031690565b6033546001600160a01b031690565b609a546001600160a01b031690565b6001600160a01b0381166000908152609f602090815260409182902080548351818402810184019094528084526060939283018282801561128357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611265575b50505050509050919050565b609c546001600160a01b031690565b6001600160a01b03808316600090815260a060209081526040808320938516835292905290812054600a6112d182611c65565b106112dc57806110ad565b5060009392505050565b609c54604051635d8a541d60e01b815260009182916001600160a01b0390911690635d8a541d9061131f90879087908690600401612896565b604080518083038186803b15801561133657600080fd5b505afa15801561134a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136e91906127c5565b509050600061137d8585610fe7565b90506107d58161138c84611b0e565b90611c00565b609c54604051637c2b7c5360e01b815260009182916001600160a01b0390911690637c2b7c53906113cc9087908790600190600401612896565b60206040518083038186803b1580156113e457600080fd5b505afa1580156113f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141c919061280b565b90506110ad61142a82611b0e565b6001600160a01b03808716600090815260a0602090815260408083209389168352929052205490611dd1565b6001600160a01b0381166000908152609f6020526040812054819081908190815b818110156114d9576001600160a01b0387166000908152609f602052604081208054839081106114a357fe5b6000918252602090912001546001600160a01b031690506114ce6114c7898361079e565b8590611c00565b935050600101611477565b506000806114e688610a6e565b909250905060006114f78584611c00565b6001600160a01b03999099166000908152609e6020526040902054999197509095505050505050565b6034546001600160a01b0316611565576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b61156d611a07565b6034546001600160a01b039081169116146115b8576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b039283169290911690600080516020612bb283398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6067546001600160a01b031690565b609c546001600160a01b038281166000908152609f60205260408082209051634dffaee560e01b815291939290921691634dffaee59161165f9186916004016128ba565b60206040518083038186803b15801561167757600080fd5b505afa15801561168b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107da91906127a5565b6001600160a01b03918216600090815260a06020908152604080832093909416825291909152206001015490565b609b546001600160a01b03166116f1611a07565b6001600160a01b0316148061172057506067546001600160a01b0316611715611a07565b6001600160a01b0316145b61173c5760405162461bcd60e51b81526004016106f990612a76565b61174884848484611eca565b50505050565b609b546001600160a01b0316611762611a07565b6001600160a01b0316146117885760405162461bcd60e51b81526004016106f990612a9a565b610a69838383611f18565b60006107da610644609a60009054906101000a90046001600160a01b03166001600160a01b031663a85494026040518163ffffffff1660e01b815260040160206040518083038186803b1580156117e957600080fd5b505afa1580156117fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182191906127e8565b61182a85610e7d565b90612199565b609b546001600160a01b031690565b611847611e8e565b61079a8282611f5b565b611859611e8e565b6001600160a01b0382166000908152609f6020908152604091829020805483518184028101840190945280845290926118d492909184918301828280156118c957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116118ab575b5050505050836121ae565b156118df575061079a565b8054600181018255600082815260209081902090910180546001600160a01b0319166001600160a01b0385811691909117909155609a5460408051631623e65d60e11b815290519190921692632c47ccba9260048082019391829003018186803b15801561194c57600080fd5b505afa158015611960573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119849190612847565b60ff1681805490501115610a695760405162461bcd60e51b81526004016106f9906129ff565b609d546000906001600160a01b03166119c1611a07565b6001600160a01b0316146119e75760405162461bcd60e51b81526004016106f990612aba565b506001600160a01b03166000908152609e60205260408120805491905590565b3390565b6000816001600160a01b03166312080647609a60009054906101000a90046001600160a01b03166001600160a01b0316633e742e3b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a6a57600080fd5b505afa158015611a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa29190612823565b6040518263ffffffff1660e01b8152600401611abe9190612b3c565b60206040518083038186803b158015611ad657600080fd5b505afa158015611aea573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107da919061280b565b60006001600160ff1b03821115611b565760405162461bcd60e51b8152600401808060200182810382526028815260200180612bd26028913960400191505060405180910390fd5b5090565b60008060008512611b6b5784611b74565b611b74856121fa565b90506000808512611b855784611b8e565b611b8e856121fa565b905060008087128015611ba15750600086135b80611bb75750600087138015611bb75750600086125b611bc2576000611bc5565b60015b90506000611bd4848488612226565b905081611be957611be481611b0e565b611bf2565b611bf2816122d5565b9450505050505b9392505050565b6000828201818312801590611c155750838112155b80611c2a5750600083128015611c2a57508381125b611bf95760405162461bcd60e51b8152600401808060200182810382526021815260200180612b636021913960400191505060405180910390fd5b600080821215611c8557611c80611c7b836121fa565b6122e9565b6107da565b6107da826122e9565b801561079a576001600160a01b0382166000908152609e6020526040902054611cb79082611c00565b6001600160a01b0383166000818152609e6020526040908190209290925590517febf4e69d81451d269fc4d9551b06d58bea2ed426d2c528919ce45f6070946efb90611d0490849061296e565b60405180910390a25050565b6000611d1b30611d21565b15905090565b3b151590565b600054610100900460ff1680611d405750611d40611d10565b80611d4e575060005460ff16155b611d895760405162461bcd60e51b815260040180806020018281038252602e815260200180612b84602e913960400191505060405180910390fd5b600054610100900460ff16158015611db4576000805460ff1961ff0019909116610100171660011790555b611dbc612340565b8015611dce576000805461ff00191690555b50565b6000818303818312801590611de65750838113155b80611dfb5750600083128015611dfb57508381135b611bf95760405162461bcd60e51b8152600401808060200182810382526024815260200180612bfa6024913960400191505060405180910390fd5b600082820183811015611bf9576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b6067546001600160a01b0316611ea2611a07565b6001600160a01b031614611ec85760405162461bcd60e51b81526004016106f9906129bd565b565b6001600160a01b03808516600090815260a0602090815260408083209387168352929052208054611efb9084611c00565b81556001810154611f0c9083611c00565b60019091015550505050565b6001600160a01b03808416600090815260a0602090815260408083209386168352929052206001810154611f4c9083611dd1565b60018201556117488483611c8e565b6001600160a01b03808316600090815260a0602090815260408083209385168352928152908290208251606081018452815480825260018301549382019390935260029091015492810192909252600a90611fb590611c65565b101580611fcf5750600a611fcc8260200151611c65565b10155b15611fda575061079a565b609c546040516321b499f560e11b81526000916001600160a01b03169063436933ea9061200d908790879060040161287c565b60006040518083038186803b15801561202557600080fd5b505afa158015612039573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261206191908101906126f8565b51111561206e575061079a565b6001600160a01b03808416600081815260a060209081526040808320948716835293815283822082815560018101839055600201829055918152609f909152908120805490915b818110156111e457846001600160a01b03168382815481106120d357fe5b6000918252602090912001546001600160a01b03161415612191576001820381146121605782600183038154811061210757fe5b9060005260206000200160009054906101000a90046001600160a01b031683828154811061213157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8280548061216a57fe5b600082815260209020810160001990810180546001600160a01b03191690550190556111e4565b6001016120b5565b6000611bf9838362ffffff16620f4240612226565b6000805b83518110156112dc57826001600160a01b03168482815181106121d157fe5b60200260200101516001600160a01b031614156121f25760019150506107da565b6001016121b2565b6000600160ff1b821361221f5760405162461bcd60e51b81526004016106f990612a1f565b5060000390565b600080806000198587098686029250828110908390030390508061225c576000841161225157600080fd5b508290049050611bf9565b80841161226857600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60006122e082611b0e565b60000392915050565b600080821215611b56576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b600054610100900460ff16806123595750612359611d10565b80612367575060005460ff16155b6123a25760405162461bcd60e51b815260040180806020018281038252602e815260200180612b84602e913960400191505060405180910390fd5b600054610100900460ff161580156123cd576000805460ff1961ff0019909116610100171660011790555b6123d561242f565b60006123df611a07565b603380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020612bb2833981519152908290a3508015611dce576000805461ff001916905550565b600054610100900460ff16806124485750612448611d10565b80612456575060005460ff16155b6124915760405162461bcd60e51b815260040180806020018281038252602e815260200180612b84602e913960400191505060405180910390fd5b600054610100900460ff161580156124bc576000805460ff1961ff0019909116610100171660011790555b611dbc600054610100900460ff16806124d857506124d8611d10565b806124e6575060005460ff16155b6125215760405162461bcd60e51b815260040180806020018281038252602e815260200180612b84602e913960400191505060405180910390fd5b600054610100900460ff16158015611dbc576000805460ff1961ff0019909116610100171660011790558015611dce576000805461ff001916905550565b60405180606001604052806000815260200160008152602001600081525090565b600060208284031215612591578081fd5b8135611bf981612b4d565b6000602082840312156125ad578081fd5b8151611bf981612b4d565b600080604083850312156125ca578081fd5b82356125d581612b4d565b915060208301356125e581612b4d565b809150509250929050565b600080600060608486031215612604578081fd5b833561260f81612b4d565b9250602084013561261f81612b4d565b929592945050506040919091013590565b60008060008060808587031215612645578081fd5b843561265081612b4d565b9350602085013561266081612b4d565b93969395505050506040820135916060013590565b60008060008060008060c0878903121561268d578182fd5b863561269881612b4d565b955060208701356126a881612b4d565b95989597505050506040840135936060810135936080820135935060a0909101359150565b600080604083850312156126df578182fd5b82356126ea81612b4d565b946020939093013593505050565b6000602080838503121561270a578182fd5b82516001600160401b0380821115612720578384fd5b818501915085601f830112612733578384fd5b81518181111561273f57fe5b8381026040518582820101818110858211171561275857fe5b604052828152858101935084860182860187018a1015612776578788fd5b8795505b8386101561279857805185526001959095019493860193860161277a565b5098975050505050505050565b6000602082840312156127b6578081fd5b81518015158114611bf9578182fd5b600080604083850312156127d7578182fd5b505080516020909101519092909150565b6000602082840312156127f9578081fd5b815162ffffff81168114611bf9578182fd5b60006020828403121561281c578081fd5b5051919050565b600060208284031215612834578081fd5b815163ffffffff81168114611bf9578182fd5b600060208284031215612858578081fd5b815160ff81168114611bf9578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b60006040820160018060a01b03808616845260206040818601528286548085526060870191508786528286209450855b818110156129085785548516835260019586019592840192016128ea565b509098975050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156129575783516001600160a01b031683529284019291840191600101612932565b50909695505050505050565b901515815260200190565b90815260200190565b9283526020830191909152604082015260600190565b918252602082015260400190565b60208082526008908201526741425f4348434e4360c01b604082015260600190565b6020808252600790820152660869088be9e86960cb1b604082015260600190565b60208082526007908201526641425f45584e4360c81b604082015260600190565b60208082526006908201526541425f4d4e4560d01b604082015260600190565b6020808252601c908201527b506572704d6174683a20696e76657273696f6e206f766572666c6f7760201b604082015260600190565b60208082526007908201526641425f4f424e4360c81b604082015260600190565b6020808252600a908201526908284be9ebe8ab0f886960b31b604082015260600190565b60208082526006908201526508284be9e8ab60d31b604082015260600190565b60208082526005908201526420a12fa7ab60d91b604082015260600190565b60208082526006908201526541425f564e4360d01b604082015260600190565b60208082526008908201526720a12fa4a8a120a960c11b604082015260600190565b81518152602080830151908201526040918201519181019190915260600190565b63ffffffff91909116815260200190565b6001600160a01b0381168114611dce57600080fdfe5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65648be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e053616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220319f543f5a72ad52a72cfbdc996de62fcd092a6573a9b704b82f76675dba471664736f6c63430007060033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/external/abi/perp/PerpV2BaseToken.json b/external/abi/perp/PerpV2BaseToken.json index aceac6065..5138c433b 100644 --- a/external/abi/perp/PerpV2BaseToken.json +++ b/external/abi/perp/PerpV2BaseToken.json @@ -485,8 +485,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50611c48806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063a457c2d71161007c578063a457c2d7146104dc578063a9059cbb14610508578063bc5920ba14610534578063dd62ed3e1461053c578063f52e308e1461056a578063f80f5dd5146105905761014d565b806370a0823114610470578063715018a61461049657806378c8cda71461049e5780638da5cb5b146104c457806395d89b41146104cc5780639e87a5cd146104d45761014d565b806313af40351161011557806313af40351461039e57806318160ddd146103c457806323b872dd146103cc578063313ce5671461040257806339509351146104205780636c8381f81461044c5761014d565b806306fdde0314610152578063077f224a146101cf578063095ea7b31461030957806309fd821214610349578063120806471461036f575b600080fd5b61015a6105b6565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610307600480360360608110156101e557600080fd5b81019060208101813564010000000081111561020057600080fd5b82018360208201111561021257600080fd5b8035906020019184600183028401116401000000008311171561023457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561028757600080fd5b82018360208201111561029957600080fd5b803590602001918460018302840111640100000000831117156102bb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b0316915061064c9050565b005b6103356004803603604081101561031f57600080fd5b506001600160a01b0381351690602001356107de565b604080519115158252519081900360200190f35b6103356004803603602081101561035f57600080fd5b50356001600160a01b03166107fc565b61038c6004803603602081101561038557600080fd5b503561081a565b60408051918252519081900360200190f35b610307600480360360208110156103b457600080fd5b50356001600160a01b03166108a9565b61038c610a04565b610335600480360360608110156103e257600080fd5b506001600160a01b03813581169160208101359091169060400135610a0a565b61040a610a91565b6040805160ff9092168252519081900360200190f35b6103356004803603604081101561043657600080fd5b506001600160a01b038135169060200135610a9a565b610454610ae8565b604080516001600160a01b039092168252519081900360200190f35b61038c6004803603602081101561048657600080fd5b50356001600160a01b0316610af7565b610307610b12565b610307600480360360208110156104b457600080fd5b50356001600160a01b0316610bc5565b610454610cbe565b61015a610ccd565b610454610d2e565b610335600480360360408110156104f257600080fd5b506001600160a01b038135169060200135610d42565b6103356004803603604081101561051e57600080fd5b506001600160a01b038135169060200135610daa565b610307610dbe565b61038c6004803603604081101561055257600080fd5b506001600160a01b0381358116916020013516610ebc565b6103076004803603602081101561058057600080fd5b50356001600160a01b0316610ee7565b610307600480360360208110156105a657600080fd5b50356001600160a01b0316610f53565b606a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106425780601f1061061757610100808354040283529160200191610642565b820191906000526020600020905b81548152906001019060200180831161062557829003601f168201915b5050505050905090565b600054610100900460ff1680610665575061066561100b565b80610673575060005460ff16155b6106ae5760405162461bcd60e51b815260040180806020018281038252602e815260200180611b2e602e913960400191505060405180910390fd5b600054610100900460ff161580156106d9576000805460ff1961ff0019909116610100171660011790555b6106e3848461101c565b6000826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561071e57600080fd5b505afa158015610732573d6000803e3d6000fd5b505050506040513d602081101561074857600080fd5b50519050610754610a91565b60ff168160ff161115610798576040805162461bcd60e51b8152602060048201526007602482015266109517d254119160ca1b604482015290519081900360640190fd5b60cc8054610100600160a81b0319166101006001600160a01b038616021760ff191660ff9290921691909117905580156107d8576000805461ff00191690555b50505050565b60006107f26107eb6110d2565b84846110d6565b5060015b92915050565b6001600160a01b031660009081526099602052604090205460ff1690565b60006107f660cc60019054906101000a90046001600160a01b03166001600160a01b031663e7572230846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561087857600080fd5b505afa15801561088c573d6000803e3d6000fd5b505050506040513d60208110156108a257600080fd5b50516111c2565b6108b16110d2565b6001600160a01b03166108c2610cbe565b6001600160a01b031614610906576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661094a576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b0382811691161415610996576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b03828116911614156109e2576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b60695490565b6000610a178484846111ee565b610a8784610a236110d2565b610a8285604051806060016040528060288152602001611b7d602891396001600160a01b038a16600090815260686020526040812090610a616110d2565b6001600160a01b03168152602081019190915260400160002054919061134b565b6110d6565b5060019392505050565b606c5460ff1690565b60006107f2610aa76110d2565b84610a828560686000610ab86110d2565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906113e2565b6034546001600160a01b031690565b6001600160a01b031660009081526067602052604090205490565b610b1a6110d2565b6001600160a01b0316610b2b610cbe565b6001600160a01b031614610b6f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b610bcd6110d2565b6001600160a01b0316610bde610cbe565b6001600160a01b031614610c22576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610c2b81610af7565b15610c66576040805162461bcd60e51b81526020600482015260066024820152652b2a2fa1272d60d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19169055815192835290517fde8cf212af7ce38b2840785a2768d97ff2dbf3c21b516961cec0061e134c2a1e9281900390910190a150565b6033546001600160a01b031690565b606b8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106425780601f1061061757610100808354040283529160200191610642565b60cc5461010090046001600160a01b031690565b60006107f2610d4f6110d2565b84610a8285604051806060016040528060258152602001611bee6025913960686000610d796110d2565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061134b565b60006107f2610db76110d2565b84846111ee565b6034546001600160a01b0316610e03576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610e0b6110d2565b6034546001600160a01b03908116911614610e56576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6001600160a01b03918216600090815260686020908152604080832093909416825291909152205490565b610eef6110d2565b6001600160a01b0316610f00610cbe565b6001600160a01b031614610f44576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610f5081600019611443565b50565b610f5b6110d2565b6001600160a01b0316610f6c610cbe565b6001600160a01b031614610fb0576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19166001179055815192835290517f4790a4adb426ca2345bb5108f6e454eae852a7bf687544cd66a7270dff3a41d69281900390910190a150565b600061101630611535565b15905090565b600054610100900460ff1680611035575061103561100b565b80611043575060005460ff16155b61107e5760405162461bcd60e51b815260040180806020018281038252602e815260200180611b2e602e913960400191505060405180910390fd5b600054610100900460ff161580156110a9576000805460ff1961ff0019909116610100171660011790555b6110b161153b565b6110bb838361163c565b80156110cd576000805461ff00191690555b505050565b3390565b6001600160a01b03831661111b5760405162461bcd60e51b8152600401808060200182810382526024815260200180611bca6024913960400191505060405180910390fd5b6001600160a01b0382166111605760405162461bcd60e51b8152600401808060200182810382526022815260200180611ae66022913960400191505060405180910390fd5b6001600160a01b03808416600081815260686020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60cc546000906107f6906111e49060ff166111db610a91565b60ff16906116db565b8390600a0a611738565b6001600160a01b0383166112335760405162461bcd60e51b8152600401808060200182810382526025815260200180611ba56025913960400191505060405180910390fd5b6001600160a01b0382166112785760405162461bcd60e51b8152600401808060200182810382526023815260200180611ac36023913960400191505060405180910390fd5b611283838383611791565b6112c081604051806060016040528060268152602001611b08602691396001600160a01b038616600090815260676020526040902054919061134b565b6001600160a01b0380851660009081526067602052604080822093909355908416815220546112ef90826113e2565b6001600160a01b0380841660008181526067602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156113da5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561139f578181015183820152602001611387565b50505050905090810190601f1680156113cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561143c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661149e576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6114aa60008383611791565b6069546114b790826113e2565b6069556001600160a01b0382166000908152606760205260409020546114dd90826113e2565b6001600160a01b03831660008181526067602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b3b151590565b600054610100900460ff1680611554575061155461100b565b80611562575060005460ff16155b61159d5760405162461bcd60e51b815260040180806020018281038252602e815260200180611b2e602e913960400191505060405180910390fd5b600054610100900460ff161580156115c8576000805460ff1961ff0019909116610100171660011790555b6115d0611800565b60006115da6110d2565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610f50576000805461ff001916905550565b600054610100900460ff1680611655575061165561100b565b80611663575060005460ff16155b61169e5760405162461bcd60e51b815260040180806020018281038252602e815260200180611b2e602e913960400191505060405180910390fd5b600054610100900460ff161580156116c9576000805460ff1961ff0019909116610100171660011790555b6116d16118a9565b6110bb8383611949565b600082821115611732576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611747575060006107f6565b8282028284828161175457fe5b041461143c5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b5c6021913960400191505060405180910390fd5b61179c8383836110cd565b6001600160a01b038316156110cd576001600160a01b03831660009081526099602052604090205460ff166110cd576040805162461bcd60e51b815260206004820152600560248201526456545f4e5760d81b604482015290519081900360640190fd5b600054610100900460ff1680611819575061181961100b565b80611827575060005460ff16155b6118625760405162461bcd60e51b815260040180806020018281038252602e815260200180611b2e602e913960400191505060405180910390fd5b600054610100900460ff1615801561188d576000805460ff1961ff0019909116610100171660011790555b6118956118a9565b8015610f50576000805461ff001916905550565b600054610100900460ff16806118c257506118c261100b565b806118d0575060005460ff16155b61190b5760405162461bcd60e51b815260040180806020018281038252602e815260200180611b2e602e913960400191505060405180910390fd5b600054610100900460ff16158015611895576000805460ff1961ff0019909116610100171660011790558015610f50576000805461ff001916905550565b600054610100900460ff1680611962575061196261100b565b80611970575060005460ff16155b6119ab5760405162461bcd60e51b815260040180806020018281038252602e815260200180611b2e602e913960400191505060405180910390fd5b600054610100900460ff161580156119d6576000805460ff1961ff0019909116610100171660011790555b82516119e990606a906020860190611a21565b5081516119fd90606b906020850190611a21565b50606c805460ff1916601217905580156110cd576000805461ff0019169055505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282611a575760008555611a9d565b82601f10611a7057805160ff1916838001178555611a9d565b82800160010185558215611a9d579182015b82811115611a9d578251825591602001919060010190611a82565b50611aa9929150611aad565b5090565b5b80821115611aa95760008155600101611aae56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f4181fb291bc18e39dbdd969c6290f495922862ab04610debd8661dd4b93921864736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063a457c2d71161007c578063a457c2d7146104dc578063a9059cbb14610508578063bc5920ba14610534578063dd62ed3e1461053c578063f52e308e1461056a578063f80f5dd5146105905761014d565b806370a0823114610470578063715018a61461049657806378c8cda71461049e5780638da5cb5b146104c457806395d89b41146104cc5780639e87a5cd146104d45761014d565b806313af40351161011557806313af40351461039e57806318160ddd146103c457806323b872dd146103cc578063313ce5671461040257806339509351146104205780636c8381f81461044c5761014d565b806306fdde0314610152578063077f224a146101cf578063095ea7b31461030957806309fd821214610349578063120806471461036f575b600080fd5b61015a6105b6565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610307600480360360608110156101e557600080fd5b81019060208101813564010000000081111561020057600080fd5b82018360208201111561021257600080fd5b8035906020019184600183028401116401000000008311171561023457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561028757600080fd5b82018360208201111561029957600080fd5b803590602001918460018302840111640100000000831117156102bb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b0316915061064c9050565b005b6103356004803603604081101561031f57600080fd5b506001600160a01b0381351690602001356107de565b604080519115158252519081900360200190f35b6103356004803603602081101561035f57600080fd5b50356001600160a01b03166107fc565b61038c6004803603602081101561038557600080fd5b503561081a565b60408051918252519081900360200190f35b610307600480360360208110156103b457600080fd5b50356001600160a01b03166108a9565b61038c610a04565b610335600480360360608110156103e257600080fd5b506001600160a01b03813581169160208101359091169060400135610a0a565b61040a610a91565b6040805160ff9092168252519081900360200190f35b6103356004803603604081101561043657600080fd5b506001600160a01b038135169060200135610a9a565b610454610ae8565b604080516001600160a01b039092168252519081900360200190f35b61038c6004803603602081101561048657600080fd5b50356001600160a01b0316610af7565b610307610b12565b610307600480360360208110156104b457600080fd5b50356001600160a01b0316610bc5565b610454610cbe565b61015a610ccd565b610454610d2e565b610335600480360360408110156104f257600080fd5b506001600160a01b038135169060200135610d42565b6103356004803603604081101561051e57600080fd5b506001600160a01b038135169060200135610daa565b610307610dbe565b61038c6004803603604081101561055257600080fd5b506001600160a01b0381358116916020013516610ebc565b6103076004803603602081101561058057600080fd5b50356001600160a01b0316610ee7565b610307600480360360208110156105a657600080fd5b50356001600160a01b0316610f53565b606a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106425780601f1061061757610100808354040283529160200191610642565b820191906000526020600020905b81548152906001019060200180831161062557829003601f168201915b5050505050905090565b600054610100900460ff1680610665575061066561100b565b80610673575060005460ff16155b6106ae5760405162461bcd60e51b815260040180806020018281038252602e815260200180611b2e602e913960400191505060405180910390fd5b600054610100900460ff161580156106d9576000805460ff1961ff0019909116610100171660011790555b6106e3848461101c565b6000826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561071e57600080fd5b505afa158015610732573d6000803e3d6000fd5b505050506040513d602081101561074857600080fd5b50519050610754610a91565b60ff168160ff161115610798576040805162461bcd60e51b8152602060048201526007602482015266109517d254119160ca1b604482015290519081900360640190fd5b60cc8054610100600160a81b0319166101006001600160a01b038616021760ff191660ff9290921691909117905580156107d8576000805461ff00191690555b50505050565b60006107f26107eb6110d2565b84846110d6565b5060015b92915050565b6001600160a01b031660009081526099602052604090205460ff1690565b60006107f660cc60019054906101000a90046001600160a01b03166001600160a01b031663e7572230846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561087857600080fd5b505afa15801561088c573d6000803e3d6000fd5b505050506040513d60208110156108a257600080fd5b50516111c2565b6108b16110d2565b6001600160a01b03166108c2610cbe565b6001600160a01b031614610906576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661094a576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b0382811691161415610996576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b03828116911614156109e2576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b60695490565b6000610a178484846111ee565b610a8784610a236110d2565b610a8285604051806060016040528060288152602001611b7d602891396001600160a01b038a16600090815260686020526040812090610a616110d2565b6001600160a01b03168152602081019190915260400160002054919061134b565b6110d6565b5060019392505050565b606c5460ff1690565b60006107f2610aa76110d2565b84610a828560686000610ab86110d2565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906113e2565b6034546001600160a01b031690565b6001600160a01b031660009081526067602052604090205490565b610b1a6110d2565b6001600160a01b0316610b2b610cbe565b6001600160a01b031614610b6f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b610bcd6110d2565b6001600160a01b0316610bde610cbe565b6001600160a01b031614610c22576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610c2b81610af7565b15610c66576040805162461bcd60e51b81526020600482015260066024820152652b2a2fa1272d60d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19169055815192835290517fde8cf212af7ce38b2840785a2768d97ff2dbf3c21b516961cec0061e134c2a1e9281900390910190a150565b6033546001600160a01b031690565b606b8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106425780601f1061061757610100808354040283529160200191610642565b60cc5461010090046001600160a01b031690565b60006107f2610d4f6110d2565b84610a8285604051806060016040528060258152602001611bee6025913960686000610d796110d2565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061134b565b60006107f2610db76110d2565b84846111ee565b6034546001600160a01b0316610e03576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610e0b6110d2565b6034546001600160a01b03908116911614610e56576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6001600160a01b03918216600090815260686020908152604080832093909416825291909152205490565b610eef6110d2565b6001600160a01b0316610f00610cbe565b6001600160a01b031614610f44576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610f5081600019611443565b50565b610f5b6110d2565b6001600160a01b0316610f6c610cbe565b6001600160a01b031614610fb0576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19166001179055815192835290517f4790a4adb426ca2345bb5108f6e454eae852a7bf687544cd66a7270dff3a41d69281900390910190a150565b600061101630611535565b15905090565b600054610100900460ff1680611035575061103561100b565b80611043575060005460ff16155b61107e5760405162461bcd60e51b815260040180806020018281038252602e815260200180611b2e602e913960400191505060405180910390fd5b600054610100900460ff161580156110a9576000805460ff1961ff0019909116610100171660011790555b6110b161153b565b6110bb838361163c565b80156110cd576000805461ff00191690555b505050565b3390565b6001600160a01b03831661111b5760405162461bcd60e51b8152600401808060200182810382526024815260200180611bca6024913960400191505060405180910390fd5b6001600160a01b0382166111605760405162461bcd60e51b8152600401808060200182810382526022815260200180611ae66022913960400191505060405180910390fd5b6001600160a01b03808416600081815260686020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60cc546000906107f6906111e49060ff166111db610a91565b60ff16906116db565b8390600a0a611738565b6001600160a01b0383166112335760405162461bcd60e51b8152600401808060200182810382526025815260200180611ba56025913960400191505060405180910390fd5b6001600160a01b0382166112785760405162461bcd60e51b8152600401808060200182810382526023815260200180611ac36023913960400191505060405180910390fd5b611283838383611791565b6112c081604051806060016040528060268152602001611b08602691396001600160a01b038616600090815260676020526040902054919061134b565b6001600160a01b0380851660009081526067602052604080822093909355908416815220546112ef90826113e2565b6001600160a01b0380841660008181526067602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156113da5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561139f578181015183820152602001611387565b50505050905090810190601f1680156113cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561143c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661149e576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6114aa60008383611791565b6069546114b790826113e2565b6069556001600160a01b0382166000908152606760205260409020546114dd90826113e2565b6001600160a01b03831660008181526067602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b3b151590565b600054610100900460ff1680611554575061155461100b565b80611562575060005460ff16155b61159d5760405162461bcd60e51b815260040180806020018281038252602e815260200180611b2e602e913960400191505060405180910390fd5b600054610100900460ff161580156115c8576000805460ff1961ff0019909116610100171660011790555b6115d0611800565b60006115da6110d2565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610f50576000805461ff001916905550565b600054610100900460ff1680611655575061165561100b565b80611663575060005460ff16155b61169e5760405162461bcd60e51b815260040180806020018281038252602e815260200180611b2e602e913960400191505060405180910390fd5b600054610100900460ff161580156116c9576000805460ff1961ff0019909116610100171660011790555b6116d16118a9565b6110bb8383611949565b600082821115611732576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611747575060006107f6565b8282028284828161175457fe5b041461143c5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b5c6021913960400191505060405180910390fd5b61179c8383836110cd565b6001600160a01b038316156110cd576001600160a01b03831660009081526099602052604090205460ff166110cd576040805162461bcd60e51b815260206004820152600560248201526456545f4e5760d81b604482015290519081900360640190fd5b600054610100900460ff1680611819575061181961100b565b80611827575060005460ff16155b6118625760405162461bcd60e51b815260040180806020018281038252602e815260200180611b2e602e913960400191505060405180910390fd5b600054610100900460ff1615801561188d576000805460ff1961ff0019909116610100171660011790555b6118956118a9565b8015610f50576000805461ff001916905550565b600054610100900460ff16806118c257506118c261100b565b806118d0575060005460ff16155b61190b5760405162461bcd60e51b815260040180806020018281038252602e815260200180611b2e602e913960400191505060405180910390fd5b600054610100900460ff16158015611895576000805460ff1961ff0019909116610100171660011790558015610f50576000805461ff001916905550565b600054610100900460ff1680611962575061196261100b565b80611970575060005460ff16155b6119ab5760405162461bcd60e51b815260040180806020018281038252602e815260200180611b2e602e913960400191505060405180910390fd5b600054610100900460ff161580156119d6576000805460ff1961ff0019909116610100171660011790555b82516119e990606a906020860190611a21565b5081516119fd90606b906020850190611a21565b50606c805460ff1916601217905580156110cd576000805461ff0019169055505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282611a575760008555611a9d565b82601f10611a7057805160ff1916838001178555611a9d565b82800160010185558215611a9d579182015b82811115611a9d578251825591602001919060010190611a82565b50611aa9929150611aad565b5090565b5b80821115611aa95760008155600101611aae56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f4181fb291bc18e39dbdd969c6290f495922862ab04610debd8661dd4b93921864736f6c63430007060033", + "bytecode": "0x608060405234801561001057600080fd5b50611bf8806100206000396000f3fe608060405234801561001057600080fd5b506004361061011d5760003560e01c806306fdde0314610122578063077f224a1461019f578063095ea7b3146102d557806309fd821214610315578063120806471461033b57806313af40351461036a57806318160ddd1461039057806323b872dd14610398578063313ce567146103ce57806339509351146103ec5780636c8381f81461041857806370a082311461043c578063715018a61461046257806378c8cda71461046a5780638da5cb5b1461049057806395d89b41146104985780639e87a5cd146104a0578063a457c2d7146104a8578063a9059cbb146104d4578063bc5920ba14610500578063dd62ed3e14610508578063f52e308e14610536578063f80f5dd51461055c575b600080fd5b61012a610582565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561016457818101518382015260200161014c565b50505050905090810190601f1680156101915780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d3600480360360608110156101b557600080fd5b810190602081018135600160201b8111156101cf57600080fd5b8201836020820111156101e157600080fd5b803590602001918460018302840111600160201b8311171561020257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561025457600080fd5b82018360208201111561026657600080fd5b803590602001918460018302840111600160201b8311171561028757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b031691506106189050565b005b610301600480360360408110156102eb57600080fd5b506001600160a01b0381351690602001356107aa565b604080519115158252519081900360200190f35b6103016004803603602081101561032b57600080fd5b50356001600160a01b03166107c8565b6103586004803603602081101561035157600080fd5b50356107e6565b60408051918252519081900360200190f35b6102d36004803603602081101561038057600080fd5b50356001600160a01b0316610875565b6103586109d0565b610301600480360360608110156103ae57600080fd5b506001600160a01b038135811691602081013590911690604001356109d6565b6103d6610a5d565b6040805160ff9092168252519081900360200190f35b6103016004803603604081101561040257600080fd5b506001600160a01b038135169060200135610a66565b610420610ab4565b604080516001600160a01b039092168252519081900360200190f35b6103586004803603602081101561045257600080fd5b50356001600160a01b0316610ac3565b6102d3610ade565b6102d36004803603602081101561048057600080fd5b50356001600160a01b0316610b7f565b610420610c78565b61012a610c87565b610420610ce8565b610301600480360360408110156104be57600080fd5b506001600160a01b038135169060200135610cfc565b610301600480360360408110156104ea57600080fd5b506001600160a01b038135169060200135610d64565b6102d3610d78565b6103586004803603604081101561051e57600080fd5b506001600160a01b0381358116916020013516610e64565b6102d36004803603602081101561054c57600080fd5b50356001600160a01b0316610e8f565b6102d36004803603602081101561057257600080fd5b50356001600160a01b0316610efb565b606a8054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561060e5780601f106105e35761010080835404028352916020019161060e565b820191906000526020600020905b8154815290600101906020018083116105f157829003601f168201915b5050505050905090565b600054610100900460ff16806106315750610631610fb3565b8061063f575060005460ff16155b61067a5760405162461bcd60e51b815260040180806020018281038252602e815260200180611a9e602e913960400191505060405180910390fd5b600054610100900460ff161580156106a5576000805460ff1961ff0019909116610100171660011790555b6106af8484610fc4565b6000826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156106ea57600080fd5b505afa1580156106fe573d6000803e3d6000fd5b505050506040513d602081101561071457600080fd5b50519050610720610a5d565b60ff168160ff161115610764576040805162461bcd60e51b8152602060048201526007602482015266109517d254119160ca1b604482015290519081900360640190fd5b60cc8054610100600160a81b0319166101006001600160a01b038616021760ff191660ff9290921691909117905580156107a4576000805461ff00191690555b50505050565b60006107be6107b761107a565b848461107e565b5060015b92915050565b6001600160a01b031660009081526099602052604090205460ff1690565b60006107c260cc60019054906101000a90046001600160a01b03166001600160a01b031663e7572230846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561084457600080fd5b505afa158015610858573d6000803e3d6000fd5b505050506040513d602081101561086e57600080fd5b505161116a565b61087d61107a565b6001600160a01b031661088e610c78565b6001600160a01b0316146108d2576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610916576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b0382811691161415610962576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b03828116911614156109ae576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b60695490565b60006109e3848484611196565b610a53846109ef61107a565b610a4e85604051806060016040528060288152602001611aed602891396001600160a01b038a16600090815260686020526040812090610a2d61107a565b6001600160a01b0316815260208101919091526040016000205491906112e1565b61107e565b5060019392505050565b606c5460ff1690565b60006107be610a7361107a565b84610a4e8560686000610a8461107a565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611378565b6034546001600160a01b031690565b6001600160a01b031660009081526067602052604090205490565b610ae661107a565b6001600160a01b0316610af7610c78565b6001600160a01b031614610b3b576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b031690600080516020611b15833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b610b8761107a565b6001600160a01b0316610b98610c78565b6001600160a01b031614610bdc576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610be581610ac3565b15610c20576040805162461bcd60e51b81526020600482015260066024820152652b2a2fa1272d60d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19169055815192835290517fde8cf212af7ce38b2840785a2768d97ff2dbf3c21b516961cec0061e134c2a1e9281900390910190a150565b6033546001600160a01b031690565b606b8054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561060e5780601f106105e35761010080835404028352916020019161060e565b60cc5461010090046001600160a01b031690565b60006107be610d0961107a565b84610a4e85604051806060016040528060258152602001611b9e6025913960686000610d3361107a565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906112e1565b60006107be610d7161107a565b8484611196565b6034546001600160a01b0316610dbd576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610dc561107a565b6034546001600160a01b03908116911614610e10576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b039283169290911690600080516020611b1583398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6001600160a01b03918216600090815260686020908152604080832093909416825291909152205490565b610e9761107a565b6001600160a01b0316610ea8610c78565b6001600160a01b031614610eec576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610ef8816000196113d7565b50565b610f0361107a565b6001600160a01b0316610f14610c78565b6001600160a01b031614610f58576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19166001179055815192835290517f4790a4adb426ca2345bb5108f6e454eae852a7bf687544cd66a7270dff3a41d69281900390910190a150565b6000610fbe306114b7565b15905090565b600054610100900460ff1680610fdd5750610fdd610fb3565b80610feb575060005460ff16155b6110265760405162461bcd60e51b815260040180806020018281038252602e815260200180611a9e602e913960400191505060405180910390fd5b600054610100900460ff16158015611051576000805460ff1961ff0019909116610100171660011790555b6110596114bd565b61106383836115ac565b8015611075576000805461ff00191690555b505050565b3390565b6001600160a01b0383166110c35760405162461bcd60e51b8152600401808060200182810382526024815260200180611b7a6024913960400191505060405180910390fd5b6001600160a01b0382166111085760405162461bcd60e51b8152600401808060200182810382526022815260200180611a566022913960400191505060405180910390fd5b6001600160a01b03808416600081815260686020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60cc546000906107c29061118c9060ff16611183610a5d565b60ff169061164b565b8390600a0a6116a8565b6001600160a01b0383166111db5760405162461bcd60e51b8152600401808060200182810382526025815260200180611b556025913960400191505060405180910390fd5b6001600160a01b0382166112205760405162461bcd60e51b8152600401808060200182810382526023815260200180611a336023913960400191505060405180910390fd5b61122b838383611701565b61126881604051806060016040528060268152602001611a78602691396001600160a01b03861660009081526067602052604090205491906112e1565b6001600160a01b0380851660009081526067602052604080822093909355908416815220546112979082611378565b6001600160a01b038084166000818152606760209081526040918290209490945580518581529051919392871692600080516020611b3583398151915292918290030190a3505050565b600081848411156113705760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561133557818101518382015260200161131d565b50505050905090810190601f1680156113625780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156113d0576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b9392505050565b6001600160a01b038216611432576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61143e60008383611701565b60695461144b9082611378565b6069556001600160a01b0382166000908152606760205260409020546114719082611378565b6001600160a01b0383166000818152606760209081526040808320949094558351858152935192939192600080516020611b358339815191529281900390910190a35050565b3b151590565b600054610100900460ff16806114d657506114d6610fb3565b806114e4575060005460ff16155b61151f5760405162461bcd60e51b815260040180806020018281038252602e815260200180611a9e602e913960400191505060405180910390fd5b600054610100900460ff1615801561154a576000805460ff1961ff0019909116610100171660011790555b611552611770565b600061155c61107a565b603380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020611b15833981519152908290a3508015610ef8576000805461ff001916905550565b600054610100900460ff16806115c557506115c5610fb3565b806115d3575060005460ff16155b61160e5760405162461bcd60e51b815260040180806020018281038252602e815260200180611a9e602e913960400191505060405180910390fd5b600054610100900460ff16158015611639576000805460ff1961ff0019909116610100171660011790555b611641611819565b61106383836118b9565b6000828211156116a2576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000826116b7575060006107c2565b828202828482816116c457fe5b04146113d05760405162461bcd60e51b8152600401808060200182810382526021815260200180611acc6021913960400191505060405180910390fd5b61170c838383611075565b6001600160a01b03831615611075576001600160a01b03831660009081526099602052604090205460ff16611075576040805162461bcd60e51b815260206004820152600560248201526456545f4e5760d81b604482015290519081900360640190fd5b600054610100900460ff16806117895750611789610fb3565b80611797575060005460ff16155b6117d25760405162461bcd60e51b815260040180806020018281038252602e815260200180611a9e602e913960400191505060405180910390fd5b600054610100900460ff161580156117fd576000805460ff1961ff0019909116610100171660011790555b611805611819565b8015610ef8576000805461ff001916905550565b600054610100900460ff16806118325750611832610fb3565b80611840575060005460ff16155b61187b5760405162461bcd60e51b815260040180806020018281038252602e815260200180611a9e602e913960400191505060405180910390fd5b600054610100900460ff16158015611805576000805460ff1961ff0019909116610100171660011790558015610ef8576000805461ff001916905550565b600054610100900460ff16806118d257506118d2610fb3565b806118e0575060005460ff16155b61191b5760405162461bcd60e51b815260040180806020018281038252602e815260200180611a9e602e913960400191505060405180910390fd5b600054610100900460ff16158015611946576000805460ff1961ff0019909116610100171660011790555b825161195990606a906020860190611991565b50815161196d90606b906020850190611991565b50606c805460ff191660121790558015611075576000805461ff0019169055505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826119c75760008555611a0d565b82601f106119e057805160ff1916838001178555611a0d565b82800160010185558215611a0d579182015b82811115611a0d5782518255916020019190600101906119f2565b50611a19929150611a1d565b5090565b5b80821115611a195760008155600101611a1e56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122050846ee68f18177cdbbe2ceb48d3327c3b91aca31ce10f3782f4fb5aa4ff930764736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061011d5760003560e01c806306fdde0314610122578063077f224a1461019f578063095ea7b3146102d557806309fd821214610315578063120806471461033b57806313af40351461036a57806318160ddd1461039057806323b872dd14610398578063313ce567146103ce57806339509351146103ec5780636c8381f81461041857806370a082311461043c578063715018a61461046257806378c8cda71461046a5780638da5cb5b1461049057806395d89b41146104985780639e87a5cd146104a0578063a457c2d7146104a8578063a9059cbb146104d4578063bc5920ba14610500578063dd62ed3e14610508578063f52e308e14610536578063f80f5dd51461055c575b600080fd5b61012a610582565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561016457818101518382015260200161014c565b50505050905090810190601f1680156101915780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d3600480360360608110156101b557600080fd5b810190602081018135600160201b8111156101cf57600080fd5b8201836020820111156101e157600080fd5b803590602001918460018302840111600160201b8311171561020257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561025457600080fd5b82018360208201111561026657600080fd5b803590602001918460018302840111600160201b8311171561028757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b031691506106189050565b005b610301600480360360408110156102eb57600080fd5b506001600160a01b0381351690602001356107aa565b604080519115158252519081900360200190f35b6103016004803603602081101561032b57600080fd5b50356001600160a01b03166107c8565b6103586004803603602081101561035157600080fd5b50356107e6565b60408051918252519081900360200190f35b6102d36004803603602081101561038057600080fd5b50356001600160a01b0316610875565b6103586109d0565b610301600480360360608110156103ae57600080fd5b506001600160a01b038135811691602081013590911690604001356109d6565b6103d6610a5d565b6040805160ff9092168252519081900360200190f35b6103016004803603604081101561040257600080fd5b506001600160a01b038135169060200135610a66565b610420610ab4565b604080516001600160a01b039092168252519081900360200190f35b6103586004803603602081101561045257600080fd5b50356001600160a01b0316610ac3565b6102d3610ade565b6102d36004803603602081101561048057600080fd5b50356001600160a01b0316610b7f565b610420610c78565b61012a610c87565b610420610ce8565b610301600480360360408110156104be57600080fd5b506001600160a01b038135169060200135610cfc565b610301600480360360408110156104ea57600080fd5b506001600160a01b038135169060200135610d64565b6102d3610d78565b6103586004803603604081101561051e57600080fd5b506001600160a01b0381358116916020013516610e64565b6102d36004803603602081101561054c57600080fd5b50356001600160a01b0316610e8f565b6102d36004803603602081101561057257600080fd5b50356001600160a01b0316610efb565b606a8054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561060e5780601f106105e35761010080835404028352916020019161060e565b820191906000526020600020905b8154815290600101906020018083116105f157829003601f168201915b5050505050905090565b600054610100900460ff16806106315750610631610fb3565b8061063f575060005460ff16155b61067a5760405162461bcd60e51b815260040180806020018281038252602e815260200180611a9e602e913960400191505060405180910390fd5b600054610100900460ff161580156106a5576000805460ff1961ff0019909116610100171660011790555b6106af8484610fc4565b6000826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156106ea57600080fd5b505afa1580156106fe573d6000803e3d6000fd5b505050506040513d602081101561071457600080fd5b50519050610720610a5d565b60ff168160ff161115610764576040805162461bcd60e51b8152602060048201526007602482015266109517d254119160ca1b604482015290519081900360640190fd5b60cc8054610100600160a81b0319166101006001600160a01b038616021760ff191660ff9290921691909117905580156107a4576000805461ff00191690555b50505050565b60006107be6107b761107a565b848461107e565b5060015b92915050565b6001600160a01b031660009081526099602052604090205460ff1690565b60006107c260cc60019054906101000a90046001600160a01b03166001600160a01b031663e7572230846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561084457600080fd5b505afa158015610858573d6000803e3d6000fd5b505050506040513d602081101561086e57600080fd5b505161116a565b61087d61107a565b6001600160a01b031661088e610c78565b6001600160a01b0316146108d2576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610916576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b0382811691161415610962576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b03828116911614156109ae576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b60695490565b60006109e3848484611196565b610a53846109ef61107a565b610a4e85604051806060016040528060288152602001611aed602891396001600160a01b038a16600090815260686020526040812090610a2d61107a565b6001600160a01b0316815260208101919091526040016000205491906112e1565b61107e565b5060019392505050565b606c5460ff1690565b60006107be610a7361107a565b84610a4e8560686000610a8461107a565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611378565b6034546001600160a01b031690565b6001600160a01b031660009081526067602052604090205490565b610ae661107a565b6001600160a01b0316610af7610c78565b6001600160a01b031614610b3b576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b031690600080516020611b15833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b610b8761107a565b6001600160a01b0316610b98610c78565b6001600160a01b031614610bdc576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610be581610ac3565b15610c20576040805162461bcd60e51b81526020600482015260066024820152652b2a2fa1272d60d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19169055815192835290517fde8cf212af7ce38b2840785a2768d97ff2dbf3c21b516961cec0061e134c2a1e9281900390910190a150565b6033546001600160a01b031690565b606b8054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561060e5780601f106105e35761010080835404028352916020019161060e565b60cc5461010090046001600160a01b031690565b60006107be610d0961107a565b84610a4e85604051806060016040528060258152602001611b9e6025913960686000610d3361107a565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906112e1565b60006107be610d7161107a565b8484611196565b6034546001600160a01b0316610dbd576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610dc561107a565b6034546001600160a01b03908116911614610e10576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b039283169290911690600080516020611b1583398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6001600160a01b03918216600090815260686020908152604080832093909416825291909152205490565b610e9761107a565b6001600160a01b0316610ea8610c78565b6001600160a01b031614610eec576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610ef8816000196113d7565b50565b610f0361107a565b6001600160a01b0316610f14610c78565b6001600160a01b031614610f58576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19166001179055815192835290517f4790a4adb426ca2345bb5108f6e454eae852a7bf687544cd66a7270dff3a41d69281900390910190a150565b6000610fbe306114b7565b15905090565b600054610100900460ff1680610fdd5750610fdd610fb3565b80610feb575060005460ff16155b6110265760405162461bcd60e51b815260040180806020018281038252602e815260200180611a9e602e913960400191505060405180910390fd5b600054610100900460ff16158015611051576000805460ff1961ff0019909116610100171660011790555b6110596114bd565b61106383836115ac565b8015611075576000805461ff00191690555b505050565b3390565b6001600160a01b0383166110c35760405162461bcd60e51b8152600401808060200182810382526024815260200180611b7a6024913960400191505060405180910390fd5b6001600160a01b0382166111085760405162461bcd60e51b8152600401808060200182810382526022815260200180611a566022913960400191505060405180910390fd5b6001600160a01b03808416600081815260686020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60cc546000906107c29061118c9060ff16611183610a5d565b60ff169061164b565b8390600a0a6116a8565b6001600160a01b0383166111db5760405162461bcd60e51b8152600401808060200182810382526025815260200180611b556025913960400191505060405180910390fd5b6001600160a01b0382166112205760405162461bcd60e51b8152600401808060200182810382526023815260200180611a336023913960400191505060405180910390fd5b61122b838383611701565b61126881604051806060016040528060268152602001611a78602691396001600160a01b03861660009081526067602052604090205491906112e1565b6001600160a01b0380851660009081526067602052604080822093909355908416815220546112979082611378565b6001600160a01b038084166000818152606760209081526040918290209490945580518581529051919392871692600080516020611b3583398151915292918290030190a3505050565b600081848411156113705760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561133557818101518382015260200161131d565b50505050905090810190601f1680156113625780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156113d0576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b9392505050565b6001600160a01b038216611432576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61143e60008383611701565b60695461144b9082611378565b6069556001600160a01b0382166000908152606760205260409020546114719082611378565b6001600160a01b0383166000818152606760209081526040808320949094558351858152935192939192600080516020611b358339815191529281900390910190a35050565b3b151590565b600054610100900460ff16806114d657506114d6610fb3565b806114e4575060005460ff16155b61151f5760405162461bcd60e51b815260040180806020018281038252602e815260200180611a9e602e913960400191505060405180910390fd5b600054610100900460ff1615801561154a576000805460ff1961ff0019909116610100171660011790555b611552611770565b600061155c61107a565b603380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020611b15833981519152908290a3508015610ef8576000805461ff001916905550565b600054610100900460ff16806115c557506115c5610fb3565b806115d3575060005460ff16155b61160e5760405162461bcd60e51b815260040180806020018281038252602e815260200180611a9e602e913960400191505060405180910390fd5b600054610100900460ff16158015611639576000805460ff1961ff0019909116610100171660011790555b611641611819565b61106383836118b9565b6000828211156116a2576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000826116b7575060006107c2565b828202828482816116c457fe5b04146113d05760405162461bcd60e51b8152600401808060200182810382526021815260200180611acc6021913960400191505060405180910390fd5b61170c838383611075565b6001600160a01b03831615611075576001600160a01b03831660009081526099602052604090205460ff16611075576040805162461bcd60e51b815260206004820152600560248201526456545f4e5760d81b604482015290519081900360640190fd5b600054610100900460ff16806117895750611789610fb3565b80611797575060005460ff16155b6117d25760405162461bcd60e51b815260040180806020018281038252602e815260200180611a9e602e913960400191505060405180910390fd5b600054610100900460ff161580156117fd576000805460ff1961ff0019909116610100171660011790555b611805611819565b8015610ef8576000805461ff001916905550565b600054610100900460ff16806118325750611832610fb3565b80611840575060005460ff16155b61187b5760405162461bcd60e51b815260040180806020018281038252602e815260200180611a9e602e913960400191505060405180910390fd5b600054610100900460ff16158015611805576000805460ff1961ff0019909116610100171660011790558015610ef8576000805461ff001916905550565b600054610100900460ff16806118d257506118d2610fb3565b806118e0575060005460ff16155b61191b5760405162461bcd60e51b815260040180806020018281038252602e815260200180611a9e602e913960400191505060405180910390fd5b600054610100900460ff16158015611946576000805460ff1961ff0019909116610100171660011790555b825161195990606a906020860190611991565b50815161196d90606b906020850190611991565b50606c805460ff191660121790558015611075576000805461ff0019169055505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826119c75760008555611a0d565b82601f106119e057805160ff1916838001178555611a0d565b82800160010185558215611a0d579182015b82811115611a0d5782518255916020019190600101906119f2565b50611a19929150611a1d565b5090565b5b80821115611a195760008155600101611a1e56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122050846ee68f18177cdbbe2ceb48d3327c3b91aca31ce10f3782f4fb5aa4ff930764736f6c63430007060033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/external/abi/perp/PerpV2ClearingHouse.json b/external/abi/perp/PerpV2ClearingHouse.json index f7f6ccda2..5b1618fa0 100644 --- a/external/abi/perp/PerpV2ClearingHouse.json +++ b/external/abi/perp/PerpV2ClearingHouse.json @@ -121,6 +121,61 @@ "name": "Paused", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trader", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "baseToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "int256", + "name": "exchangedPositionSize", + "type": "int256" + }, + { + "indexed": false, + "internalType": "int256", + "name": "exchangedPositionNotional", + "type": "int256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "int256", + "name": "openNotional", + "type": "int256" + }, + { + "indexed": false, + "internalType": "int256", + "name": "realizedPnl", + "type": "int256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "sqrtPriceAfter", + "type": "uint256" + } + ], + "name": "PositionChanged", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -257,7 +312,7 @@ }, { "internalType": "bool", - "name": "useTakerPosition", + "name": "useTakerBalance", "type": "bool" }, { @@ -812,6 +867,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "trader", + "type": "address" + } + ], + "name": "settleAllFundingAndPendingFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -886,8 +954,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50614fd9806100206000396000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c80638da5cb5b11610104578063cc2a9a5b116100a2578063d348799711610071578063d34879971461038e578063da742228146103a1578063f807cd22146103b4578063fa461e33146103bc576101d9565b8063cc2a9a5b14610340578063cc3606dc14610353578063cde109b614610366578063ce1b815f14610386576101d9565b8063b248c4ef116100de578063b248c4ef146102fd578063b6b1b6c314610305578063bc5920ba14610318578063c35eb28c14610320576101d9565b80638da5cb5b146102e5578063aa2a8294146102ed578063b081983b146102f5576101d9565b80635c975abb1161017c57806380a983321161014b57806380a98332146102af5780638456cb59146102c257806386b9d81f146102ca5780638d928af8146102dd576101d9565b80635c975abb1461028f5780636896fabf146102975780636c8381f81461029f578063715018a6146102a7576101d9565b8063486ff0cd116101b8578063486ff0cd146102255780634a64d67d1461023a578063572b6c051461024f5780635ae809511461026f576101d9565b8062aa9a89146101de57806313af4035146102085780633f4ba83a1461021d575b600080fd5b6101f16101ec36600461437d565b6103cf565b6040516101ff929190614dcb565b60405180910390f35b61021b610216366004613ff3565b6106e9565b005b61021b610844565b61022d6108ab565b6040516101ff9190614867565b6102426108cb565b6040516101ff91906146d4565b61026261025d366004613ff3565b6108db565b6040516101ff919061480a565b61028261027d366004613ff3565b6108f2565b6040516101ff919061485e565b610262610ac7565b610242610ad0565b610242610ae0565b61021b610aef565b61021b6102bd3660046140e4565b610ba2565b61021b610c85565b61021b6102d836600461402b565b610cea565b610242611186565b610242611196565b6102426111a5565b6102426111b5565b6102426111c5565b6101f1610313366004614497565b6111d5565b61021b6114ab565b61033361032e3660046142f4565b6115a9565b6040516101ff9190614cae565b61021b61034e366004614063565b611d1e565b61021b61036136600461402b565b612123565b61037961037436600461453c565b612259565b6040516101ff9190614d2e565b610242612697565b61021b61039c3660046142a3565b6126a6565b61021b6103af366004613ff3565b61292a565b6102426129f5565b61021b6103ca3660046142a3565b612a05565b6000806103da610ac7565b1561041f576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415610465576040805162461bcd60e51b815260206004820152601f6024820152600080516020614e7a833981519152604482015290519081900360640190fd5b6002600155606083013580610478612c13565b111561049f5760405162461bcd60e51b815260040161049690614ada565b60405180910390fd5b60006104a9612c17565b610134549091506000906001600160a01b0316631e81ac33836104cf60208a018a613ff3565b6040518363ffffffff1660e01b81526004016104ec9291906146e8565b6040805180830381600087803b15801561050557600080fd5b505af1158015610519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053d919061438e565b905060006105a86040518060800160405280856001600160a01b031681526020018960000160208101906105719190613ff3565b6001600160a01b031681526020018960200160208101906105929190613ff3565b6001600160a01b03168152602001849052612c26565b90506000808260400151126105be5760006105c1565b60015b905060008260a001516105d8578860400135610662565b6101325460408051633a14199b60e11b81529051610662926001600160a01b0316916374283336916004808301926020929190829003018186803b15801561061f57600080fd5b505afa158015610633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106579190614675565b60408b013590612d56565b905061069f6040518060a0016040528084151581526020018415158152602001856020015181526020018560000151815260200183815250612d74565b60405160808a0135907f09a07769667a46c2b89124a4d731c76fb5203061073aec16319ba9c6a79a324890600090a250508051602090910151600180559097909650945050505050565b6106f1612c17565b6001600160a01b0316610702611196565b6001600160a01b031614610746576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661078a576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6065546001600160a01b03828116911614156107d6576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6066546001600160a01b0382811691161415610822576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b606680546001600160a01b0319166001600160a01b0392909216919091179055565b61084c612c17565b6001600160a01b031661085d611196565b6001600160a01b0316146108a1576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6108a9612e4a565b565b6040805180820190915260058152640322e302e360dc1b60208201525b90565b610130546001600160a01b031690565b60fd546001600160a01b038281169116145b919050565b610134546040516380f57f1160e01b815260009182916001600160a01b03909116906380f57f11906109289086906004016146d4565b60206040518083038186803b15801561094057600080fd5b505afa158015610954573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109789190614268565b6101365460405163c5bba90f60e01b815291925060009182916001600160a01b03169063c5bba90f906109af9088906004016146d4565b604080518083038186803b1580156109c657600080fd5b505afa1580156109da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fe9190614280565b6101335460405163f8b2cb4f60e01b8152929450909250600091610a9d916001600160a01b03169063f8b2cb4f90610a3a908a906004016146d4565b60206040518083038186803b158015610a5257600080fd5b505afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190614268565b61013154600160a01b900460ff16612eea565b9050610abd82610ab7610ab08688612f00565b8490612f65565b90612f65565b9695505050505050565b60995460ff1690565b610136546001600160a01b031690565b6066546001600160a01b031690565b610af7612c17565b6001600160a01b0316610b08611196565b6001600160a01b031614610b4c576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606580546001600160a01b0319908116909155606680549091169055565b610baa610ac7565b15610bef576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415610c35576040805162461bcd60e51b815260206004820152601f6024820152600080516020614e7a833981519152604482015290519081900360640190fd5b6002600181905550610c7b8484848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612fca92505050565b5050600180555050565b610c8d612c17565b6001600160a01b0316610c9e611196565b6001600160a01b031614610ce2576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6108a96132b2565b610cf2610ac7565b15610d37576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415610d7d576040805162461bcd60e51b815260206004820152601f6024820152600080516020614e7a833981519152604482015290519081900360640190fd5b60026001556101365460405163659e3dc760e11b81526001600160a01b039091169063cb3c7b8e90610db39085906004016146d4565b60206040518083038186803b158015610dcb57600080fd5b505afa158015610ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e039190614230565b15610e205760405162461bcd60e51b815260040161049690614c24565b6101365460405163f75c266d60e01b81526001600160a01b039091169063f75c266d90610e519085906004016146d4565b60206040518083038186803b158015610e6957600080fd5b505afa158015610e7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea19190614268565b610eaa836108f2565b12610ec75760405162461bcd60e51b8152600401610496906148dc565b61013454604051631e81ac3360e01b81526000916001600160a01b031690631e81ac3390610efb90869086906004016146e8565b6040805180830381600087803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4c919061438e565b90506000610f956040518060800160405280866001600160a01b03168152602001856001600160a01b0316815260200160006001600160a01b0316815260200184815250612c26565b9050600061103661013260009054906101000a90046001600160a01b03166001600160a01b031663fedf924b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610feb57600080fd5b505afa158015610fff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110239190614675565b6110308460600151613335565b90612d56565b610136549091506001600160a01b03166337724702866110558461335d565b6040518363ffffffff1660e01b81526004016110729291906147d3565b600060405180830381600087803b15801561108c57600080fd5b505af11580156110a0573d6000803e3d6000fd5b5050505060006110ae612c17565b610136549091506001600160a01b03166337724702826110cd85613371565b6040518363ffffffff1660e01b81526004016110ea9291906147d3565b600060405180830381600087803b15801561110457600080fd5b505af1158015611118573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167fd9aced30440caca81570436bc942f816cfd95a3f08f700a2aeb6334c7cb5b49761115e8660600151613335565b865160405161117292919088908890614dd9565b60405180910390a350506001805550505050565b610133546001600160a01b031690565b6065546001600160a01b031690565b610132546001600160a01b031690565b610131546001600160a01b031690565b610135546001600160a01b031690565b6000806111e0610ac7565b15611225576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6002600154141561126b576040805162461bcd60e51b815260206004820152601f6024820152600080516020614e7a833981519152604482015290519081900360640190fd5b600260015560a08301518061127e612c13565b111561129c5760405162461bcd60e51b815260040161049690614ada565b60006112a6612c17565b610136548651604051633f1cdc8560e21b81529293506001600160a01b039091169163fc737214916112dd918591906004016146e8565b600060405180830381600087803b1580156112f757600080fd5b505af115801561130b573d6000803e3d6000fd5b5050610134548751604051631e81ac3360e01b8152600094506001600160a01b039092169250631e81ac33916113459186916004016146e8565b6040805180830381600087803b15801561135e57600080fd5b505af1158015611372573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611396919061438e565b9050600061141b604051806101200160405280856001600160a01b0316815260200189600001516001600160a01b03168152602001896020015115158152602001896040015115158152602001600015158152602001896060015181526020018960c001516001600160a01b03168152602001600015158152602001848152506133bd565b90506114646040518060a0016040528089602001511515815260200189604001511515815260200183602001518152602001836000015181526020018960800151815250612d74565b60e08701516040517f09a07769667a46c2b89124a4d731c76fb5203061073aec16319ba9c6a79a324890600090a28051602090910151600180559097909650945050505050565b6066546001600160a01b03166114f0576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b6114f8612c17565b6066546001600160a01b03908116911614611543576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6066546065546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360668054606580546001600160a01b03199081166001600160a01b03841617909155169055565b6115b1613f12565b6115b9610ac7565b156115fe576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415611644576040805162461bcd60e51b815260206004820152601f6024820152600080516020614e7a833981519152604482015290519081900360640190fd5b600260015561010082013580611658612c13565b11156116765760405162461bcd60e51b815260040161049690614ada565b6000611680612c17565b610136549091506001600160a01b031663fc737214826116a36020880188613ff3565b6040518363ffffffff1660e01b81526004016116c09291906146e8565b600060405180830381600087803b1580156116da57600080fd5b505af11580156116ee573d6000803e3d6000fd5b505061013454600092506001600160a01b03169050631e81ac33836117166020890189613ff3565b6040518363ffffffff1660e01b81526004016117339291906146e8565b6040805180830381600087803b15801561174c57600080fd5b505af1158015611760573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611784919061438e565b610135546040805160e081019091526001600160a01b0385811682529293506000929091169063e8ab2fb3906020808201906117c2908b018b613ff3565b6001600160a01b0316815260200189602001358152602001896040013581526020018960600160208101906117f7919061424c565b60020b815260200161180f60a08b0160808c0161424c565b60020b8152602001858152506040518263ffffffff1660e01b81526004016118379190614c44565b60a060405180830381600087803b15801561185157600080fd5b505af1158015611865573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611889919061430c565b90508560a001358160000151101580156118ab57508560c00135816020015110155b6118c75760405162461bcd60e51b815260040161049690614be4565b6118d8610100870160e08801614214565b15611b7e57805160208201519015159015158082141561190a5760405162461bcd60e51b815260040161049690614b9e565b610136546000906001600160a01b0316636332fef68761192d60208d018d613ff3565b6040518363ffffffff1660e01b815260040161194a9291906146e8565b60a06040518083038186803b15801561196257600080fd5b505afa158015611976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199a91906143d6565b90506000808415611a0c5785516119b090613371565b836040015112156119d35760405162461bcd60e51b815260040161049690614b3b565b85516119de9061335d565b9150611a0583604001516119ff84866060015161353090919063ffffffff16565b906135d9565b9050611a6d565b611a198660200151613371565b83606001511215611a3c5760405162461bcd60e51b815260040161049690614b5c565b611a49866020015161335d565b9050611a6a83606001516119ff83866040015161353090919063ffffffff16565b91505b610135546080870151604051632c30105d60e21b81526001600160a01b039092169163b0c0417491611aa59186908690600401614815565b600060405180830381600087803b158015611abf57600080fd5b505af1158015611ad3573d6000803e3d6000fd5b5050610136546001600160a01b0316915063e7ec1a85905089611af960208f018f613ff3565b8951611b049061335d565b611b118b6020015161335d565b8787611b208e60400151613371565b6040518863ffffffff1660e01b8152600401611b429796959493929190614795565b600060405180830381600087803b158015611b5c57600080fd5b505af1158015611b70573d6000803e3d6000fd5b505050505050505050611c16565b610136546001600160a01b031663beb56a7584611b9e60208a018a613ff3565b8451611ba99061335d565b611bb6866020015161335d565b611bc38760400151613371565b6040518663ffffffff1660e01b8152600401611be3959493929190614764565b600060405180830381600087803b158015611bfd57600080fd5b505af1158015611c11573d6000803e3d6000fd5b505050505b611c1f83613691565b610130546001600160a01b0316611c396020880188613ff3565b6001600160a01b039081169085167fcb47d8bf351d355bdd5497973533eada41777b4509f2585a62ae246336ebaa94611c7860808b0160608c0161424c565b611c8860a08c0160808d0161424c565b8651611c9390613371565b611ca08860200151613371565b611cb689606001516001600160801b0316613704565b8960400151604051611ccd9695949392919061482b565b60405180910390a4604051806080016040528082600001518152602001826020015181526020018260400151815260200182606001516001600160801b031681525094505050505060018055919050565b600054610100900460ff1680611d375750611d37613747565b80611d45575060005460ff16155b611d805760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff16158015611dab576000805460ff1961ff0019909116610100171660011790555b611dbd866001600160a01b0316613758565b611dd95760405162461bcd60e51b815260040161049690614af9565b611deb856001600160a01b0316613758565b611e075760405162461bcd60e51b8152600401610496906149c1565b846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611e4057600080fd5b505afa158015611e54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e789190614691565b60ff16601214611e9a5760405162461bcd60e51b8152600401610496906148ba565b611eac846001600160a01b0316613758565b611ec85760405162461bcd60e51b81526004016104969061495d565b611eda876001600160a01b0316613758565b611ef65760405162461bcd60e51b815260040161049690614a02565b611f08826001600160a01b0316613758565b611f245760405162461bcd60e51b81526004016104969061493c565b611f36836001600160a01b0316613758565b611f525760405162461bcd60e51b815260040161049690614a23565b6000836001600160a01b031663b248c4ef6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8d57600080fd5b505afa158015611fa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc5919061400f565b9050611fd9816001600160a01b0316613758565b611ff55760405162461bcd60e51b815260040161049690614a7a565b611ffd61375e565b612005613807565b61013280546001600160a01b03199081166001600160a01b038b811691909117909255610133805482168a84161790819055610130805483168a85161790556101318054831689851617905561013480548316888516179055610135805483168585161790556101368054909216868416179091556040805163313ce56760e01b81529051919092169163313ce567916004808301926020929190829003018186803b1580156120b457600080fd5b505afa1580156120c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ec9190614691565b61013160146101000a81548160ff021916908360ff16021790555050801561211a576000805461ff00191690555b50505050505050565b61212b610ac7565b15612170576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600260015414156121b6576040805162461bcd60e51b815260206004820152601f6024820152600080516020614e7a833981519152604482015290519081900360640190fd5b6002600155610135546040516321b499f560e11b81526000916001600160a01b03169063436933ea906121ef90869086906004016146e8565b60006040518083038186803b15801561220757600080fd5b505afa15801561221b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122439190810190614173565b9050612250838383612fca565b50506001805550565b612261613f3a565b612269610ac7565b156122ae576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600260015414156122f4576040805162461bcd60e51b815260206004820152601f6024820152600080516020614e7a833981519152604482015290519081900360640190fd5b600260015560c082013580612307612c13565b11156123255760405162461bcd60e51b815260040161049690614ada565b600061232f612c17565b610134549091506001600160a01b0316631e81ac33826123526020880188613ff3565b6040518363ffffffff1660e01b815260040161236f9291906146e8565b6040805180830381600087803b15801561238857600080fd5b505af115801561239c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c0919061438e565b50610135546040805160a081019091526001600160a01b0383811682526000921690635b778b9d906020808201906123fa908a018a613ff3565b6001600160a01b0316815260200188602001602081019061241b919061424c565b60020b815260200161243360608a0160408b0161424c565b60020b815260200161244b60808a0160608b01614659565b6001600160801b03168152506040518263ffffffff1660e01b81526004016124739190614cd9565b60a060405180830381600087803b15801561248d57600080fd5b505af11580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c591906143d6565b610136549091506001600160a01b031663fa51ba85836124e86020890189613ff3565b84516124f390613371565b6125008660200151613371565b866060015187608001516125178960400151613371565b6040518863ffffffff1660e01b81526004016125399796959493929190614795565b600060405180830381600087803b15801561255357600080fd5b505af1158015612567573d6000803e3d6000fd5b50505050846080013581600001511015801561258b57508460a00135816020015110155b6125a75760405162461bcd60e51b815260040161049690614be4565b610130546001600160a01b03166125c16020870187613ff3565b6001600160a01b039081169084167fcb47d8bf351d355bdd5497973533eada41777b4509f2585a62ae246336ebaa9461260060408a0160208b0161424c565b61261060608b0160408c0161424c565b865161261b9061335d565b612628886020015161335d565b61264c8d606001602081019061263e9190614659565b6001600160801b03166138a4565b89604001516040516126639695949392919061482b565b60405180910390a4604080516060810182528251815260208084015190820152918101519082015260018055949350505050565b60fd546001600160a01b031690565b610135546001600160a01b031633146126d15760405162461bcd60e51b815260040161049690614a9b565b60006126df8284018461443f565b9050841561280257600081602001516001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561272657600080fd5b505afa15801561273a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275e919061400f565b602083015160405163a9059cbb60e01b81529192506001600160a01b0383169163a9059cbb91612792918a906004016147d3565b602060405180830381600087803b1580156127ac57600080fd5b505af11580156127c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e49190614230565b6128005760405162461bcd60e51b815260040161049690614abb565b505b831561292357600081602001516001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561284757600080fd5b505afa15801561285b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287f919061400f565b602083015160405163a9059cbb60e01b81529192506001600160a01b0383169163a9059cbb916128b39189906004016147d3565b602060405180830381600087803b1580156128cd57600080fd5b505af11580156128e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129059190614230565b6129215760405162461bcd60e51b815260040161049690614abb565b505b5050505050565b612932612c17565b6001600160a01b0316612943611196565b6001600160a01b031614612987576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b612999816001600160a01b0316613758565b6129b55760405162461bcd60e51b815260040161049690614a23565b6129be816138b8565b6040516001600160a01b038216907f871264f4293af7d2865ae7eae628b228f4991c57cb45b39c99f0b774ebe2901890600090a250565b610134546001600160a01b031690565b610134546001600160a01b03163314612a305760405162461bcd60e51b8152600401610496906148fc565b6000841380612a3f5750600083135b612a5b5760405162461bcd60e51b8152600401610496906149e2565b6000612a698284018461454d565b6040810151909150600080808813612af257826001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015612ab457600080fd5b505afa158015612ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aec919061400f565b87612b65565b826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015612b2b57600080fd5b505afa158015612b3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b63919061400f565b885b91509150816001600160a01b031663a9059cbb8560400151836040518363ffffffff1660e01b8152600401612b9b9291906147d3565b602060405180830381600087803b158015612bb557600080fd5b505af1158015612bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bed9190614230565b612c095760405162461bcd60e51b815260040161049690614abb565b5050505050505050565b4290565b6000612c2161390c565b905090565b612c2e613f5b565b610136548251602084015160405163165c4e2960e31b81526000936001600160a01b03169263b2e2714892612c65926004016146e8565b60206040518083038186803b158015612c7d57600080fd5b505afa158015612c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb59190614268565b905080612cd45760405162461bcd60e51b815260040161049690614c04565b604080516101208101825284516001600160a01b03908116825260208087015190911690820152600083139181018290526060810182905260016080820152612d4e9060a08101612d2485613335565b81526040808801516001600160a01b031660208301526001908201526060808801519101526133bd565b949350505050565b6000612d6b838362ffffff16620f424061393c565b90505b92915050565b6080810151612d8257612e47565b805115612ded57806020015115612dc057806080015181604001511015612dbb5760405162461bcd60e51b815260040161049690614b7d565b612de8565b806080015181606001511115612de85760405162461bcd60e51b81526004016104969061491b565b612e47565b806020015115612e1f57806080015181606001511015612de85760405162461bcd60e51b815260040161049690614b1a565b806080015181604001511115612e475760405162461bcd60e51b81526004016104969061497e565b50565b612e52610ac7565b612e9a576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6099805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612ecd612c17565b604080516001600160a01b039092168252519081900360200190a1565b6000612d6b8360ff601285900316600a0a613530565b6000818303818312801590612f155750838113155b80612f2a5750600083128015612f2a57508381135b612d6b5760405162461bcd60e51b8152600401808060200182810382526024815260200180614f806024913960400191505060405180910390fd5b6000828201818312801590612f7a5750838112155b80612f8f5750600083128015612f8f57508381125b612d6b5760405162461bcd60e51b8152600401808060200182810382526021815260200180614ec16021913960400191505060405180910390fd5b600061305c8461013260009054906101000a90046001600160a01b03166001600160a01b031663a85494026040518163ffffffff1660e01b815260040160206040518083038186803b15801561301f57600080fd5b505afa158015613033573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130579190614675565b6139ec565b12806130ef57506101365460405163f75c266d60e01b81526001600160a01b039091169063f75c266d906130949086906004016146d4565b60206040518083038186803b1580156130ac57600080fd5b505afa1580156130c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e49190614268565b6130ed846108f2565b125b61310b5760405162461bcd60e51b815260040161049690614bc3565b61013454604051631e81ac3360e01b81526001600160a01b0390911690631e81ac339061313e90869086906004016146e8565b6040805180830381600087803b15801561315757600080fd5b505af115801561316b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061318f919061438e565b506101355460405163398dbcfd60e01b81526000916001600160a01b03169063398dbcfd906131c690879087908790600401614702565b60a060405180830381600087803b1580156131e057600080fd5b505af11580156131f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321891906143d6565b6101365481519192506001600160a01b03169063fa51ba85908690869061323e90613371565b61324b8660200151613371565b866060015187608001516132628960400151613371565b6040518863ffffffff1660e01b81526004016132849796959493929190614795565b600060405180830381600087803b15801561329e57600080fd5b505af1158015612c09573d6000803e3d6000fd5b6132ba610ac7565b156132ff576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6099805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612ecd612c17565b60008082136133545761334f61334a83613a70565b613a9c565b612d6e565b612d6e82613a9c565b600061336882613371565b60000392915050565b60006001600160ff1b038211156133b95760405162461bcd60e51b8152600401808060200182810382526028815260200180614f586028913960400191505060405180910390fd5b5090565b6133c5613f5b565b6101345460408051610100818101835285516001600160a01b0390811683526020808801518216908401528684015115158385015260608088015115159084015260808088015115159084015260a0808801519084015260c0808801518216908401529086015160e083015291516348fa72d560e01b815260009392909216916348fa72d59161345791600401614d4f565b60c060405180830381600087803b15801561347157600080fd5b505af1158015613485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134a991906145d7565b90508260e001516134bf5782516134bf90613691565b610136548351602085015160405163fa8e30af60e01b81526001600160a01b039093169263fa8e30af926134f79290916004016146e8565b600060405180830381600087803b15801561351157600080fd5b505af1158015613525573d6000803e3d6000fd5b509295945050505050565b60008261353f57506000612d6e565b826000191480156135535750600160ff1b82145b1561358f5760405162461bcd60e51b8152600401808060200182810382526027815260200180614f316027913960400191505060405180910390fd5b8282028284828161359c57fe5b0514612d6b5760405162461bcd60e51b8152600401808060200182810382526027815260200180614f316027913960400191505060405180910390fd5b60008161362d576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b816000191480156136415750600160ff1b83145b1561367d5760405162461bcd60e51b8152600401808060200182810382526021815260200180614f106021913960400191505060405180910390fd5b600082848161368857fe5b05949350505050565b60006136e68261013260009054906101000a90046001600160a01b03166001600160a01b031663543ce73a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561301f57600080fd5b1215612e475760405162461bcd60e51b81526004016104969061499f565b80600f81900b81146108ed5760405162461bcd60e51b8152600401808060200182810382526027815260200180614e9a6027913960400191505060405180910390fd5b600061375230613758565b15905090565b3b151590565b600054610100900460ff16806137775750613777613747565b80613785575060005460ff16155b6137c05760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff161580156137eb576000805460ff1961ff0019909116610100171660011790555b6137f3613af3565b8015612e47576000805461ff001916905550565b600054610100900460ff16806138205750613820613747565b8061382e575060005460ff16155b6138695760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff16158015613894576000805460ff1961ff0019909116610100171660011790555b61389c613b98565b6137f3613c99565b6000613368826001600160801b0316613704565b60fd80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fa4388ecc389b1390354ae0c65a856c0d7dd4fb648419f5d3ac0b99e38f46fd119181900360200190a150565b6000601436108015906139235750613923336108db565b15613937575060131936013560601c6108c8565b503390565b6000808060001985870986860292508281109083900303905080613972576000841161396757600080fd5b5082900490506139e5565b80841161397e57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b61013354604051633ffd130360e01b81526000916001600160a01b031690633ffd130390613a2090869086906004016147ec565b60206040518083038186803b158015613a3857600080fd5b505afa158015613a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6b9190614268565b6000600160ff1b8213613a955760405162461bcd60e51b815260040161049690614a43565b5060000390565b6000808212156133b9576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b600054610100900460ff1680613b0c5750613b0c613747565b80613b1a575060005460ff16155b613b555760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff16158015613b80576000805460ff1961ff0019909116610100171660011790555b600180558015612e47576000805461ff001916905550565b600054610100900460ff1680613bb15750613bb1613747565b80613bbf575060005460ff16155b613bfa5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff16158015613c25576000805460ff1961ff0019909116610100171660011790555b613c2d613d36565b6000613c37612c17565b606580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015612e47576000805461ff001916905550565b600054610100900460ff1680613cb25750613cb2613747565b80613cc0575060005460ff16155b613cfb5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff16158015613d26576000805460ff1961ff0019909116610100171660011790555b613d2e613dc7565b6137f3613e67565b600054610100900460ff1680613d4f5750613d4f613747565b80613d5d575060005460ff16155b613d985760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff16158015613dc3576000805460ff1961ff0019909116610100171660011790555b6137f35b600054610100900460ff1680613de05750613de0613747565b80613dee575060005460ff16155b613e295760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff161580156137f3576000805460ff1961ff0019909116610100171660011790558015612e47576000805461ff001916905550565b600054610100900460ff1680613e805750613e80613747565b80613e8e575060005460ff16155b613ec95760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff16158015613ef4576000805460ff1961ff0019909116610100171660011790555b6099805460ff191690558015612e47576000805461ff001916905550565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b6040518060c0016040528060008152602001600081526020016000815260200160008152602001600060020b81526020016000151581525090565b80356108ed81614e21565b80356108ed81614e36565b60008083601f840112613fbd578182fd5b50813567ffffffffffffffff811115613fd4578182fd5b602083019150836020828501011115613fec57600080fd5b9250929050565b600060208284031215614004578081fd5b8135612d6b81614e21565b600060208284031215614020578081fd5b8151612d6b81614e21565b6000806040838503121561403d578081fd5b823561404881614e21565b9150602083013561405881614e21565b809150509250929050565b60008060008060008060c0878903121561407b578182fd5b863561408681614e21565b9550602087013561409681614e21565b945060408701356140a681614e21565b935060608701356140b681614e21565b925060808701356140c681614e21565b915060a08701356140d681614e21565b809150509295509295509295565b600080600080606085870312156140f9578182fd5b843561410481614e21565b9350602085013561411481614e21565b9250604085013567ffffffffffffffff80821115614130578384fd5b818701915087601f830112614143578384fd5b813581811115614151578485fd5b8860208083028501011115614164578485fd5b95989497505060200194505050565b60006020808385031215614185578182fd5b825167ffffffffffffffff8082111561419c578384fd5b818501915085601f8301126141af578384fd5b8151818111156141bb57fe5b83810291506141cb848301614dfd565b8181528481019084860184860187018a10156141e5578788fd5b8795505b838610156142075780518352600195909501949186019186016141e9565b5098975050505050505050565b600060208284031215614225578081fd5b8135612d6b81614e36565b600060208284031215614241578081fd5b8151612d6b81614e36565b60006020828403121561425d578081fd5b8135612d6b81614e44565b600060208284031215614279578081fd5b5051919050565b60008060408385031215614292578182fd5b505080516020909101519092909150565b600080600080606085870312156142b8578182fd5b8435935060208501359250604085013567ffffffffffffffff8111156142dc578283fd5b6142e887828801613fac565b95989497509550505050565b60006101208284031215614306578081fd5b50919050565b600060a0828403121561431d578081fd5b60405160a0810181811067ffffffffffffffff8211171561433a57fe5b8060405250825181526020830151602082015260408301516040820152606083015161436581614e53565b60608201526080928301519281019290925250919050565b600060a08284031215614306578081fd5b60006040828403121561439f578081fd5b6040516040810181811067ffffffffffffffff821117156143bc57fe5b604052825181526020928301519281019290925250919050565b600060a082840312156143e7578081fd5b60405160a0810181811067ffffffffffffffff8211171561440457fe5b806040525082518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b600060408284031215614450578081fd5b6040516040810181811067ffffffffffffffff8211171561446d57fe5b604052823561447b81614e21565b8152602083013561448b81614e21565b60208201529392505050565b60006101008083850312156144aa578182fd5b6040519081019067ffffffffffffffff821181831017156144c757fe5b816040526144d484613f96565b81526144e260208501613fa1565b60208201526144f360408501613fa1565b6040820152606084013560608201526080840135608082015260a084013560a082015261452260c08501613f96565b60c082015260e084013560e0820152809250505092915050565b600060e08284031215614306578081fd5b600060a0828403121561455e578081fd5b60405160a0810181811067ffffffffffffffff8211171561457b57fe5b604052823561458981614e21565b8152602083013561459981614e21565b602082015260408301356145ac81614e21565b604082015260608301356145bf81614e68565b60608201526080928301359281019290925250919050565b600060c082840312156145e8578081fd5b60405160c0810181811067ffffffffffffffff8211171561460557fe5b806040525082518152602083015160208201526040830151604082015260608301516060820152608083015161463a81614e44565b608082015260a083015161464d81614e36565b60a08201529392505050565b60006020828403121561466a578081fd5b8135612d6b81614e53565b600060208284031215614686578081fd5b8151612d6b81614e68565b6000602082840312156146a2578081fd5b815160ff81168114612d6b578182fd5b15159052565b80518252602090810151910152565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0384811682528316602080830191909152606060408301819052835190830181905260009184810191608085019190845b818110156147565784518452938201939282019260010161473a565b509198975050505050505050565b6001600160a01b03958616815293909416602084015260408301919091526060820152608081019190915260a00190565b6001600160a01b03978816815295909616602086015260408501939093526060840191909152608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392909216825262ffffff16602082015260400190565b901515815260200190565b9283526020830191909152604082015260600190565b600296870b81529490950b602085015260408401929092526060830152600f0b608082015260a081019190915260c00190565b90815260200190565b6000602080835283518082850152825b8181101561489357858101830151858201604001528201614877565b818111156148a45783604083870101525b50601f01601f1916929092016040019392505050565b60208082526008908201526708690bea2889c62760c31b604082015260600190565b60208082526006908201526521a42fa2a0ab60d11b604082015260600190565b60208082526005908201526443485f4f4560d81b604082015260600190565b60208082526007908201526643485f544d525360c81b604082015260600190565b60208082526007908201526643485f41424e4360c81b604082015260600190565b60208082526007908201526643485f55414e4360c81b604082015260600190565b60208082526007908201526610d217d513549360ca1b604082015260600190565b60208082526008908201526743485f4e4546434960c01b604082015260600190565b60208082526007908201526643485f51414e4360c81b604082015260600190565b60208082526006908201526543485f46305360d01b604082015260600190565b60208082526007908201526643485f43434e4360c81b604082015260600190565b60208082526006908201526543485f414e4360d01b604082015260600190565b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f7700000000604082015260600190565b60208082526007908201526643485f4f424e4360c81b604082015260600190565b60208082526006908201526521a42fa727a160d11b604082015260600190565b60208082526005908201526421a42faa2360d91b604082015260600190565b60208082526005908201526443485f544560d81b604082015260600190565b60208082526007908201526643485f56414e4360c81b604082015260600190565b60208082526007908201526610d217d513149360ca1b604082015260600190565b60208082526007908201526643485f54424e4560c81b604082015260600190565b60208082526007908201526643485f54514e4560c81b604082015260600190565b60208082526007908201526643485f544c525360c81b604082015260600190565b6020808252600b908201526a043485f43414c57524654560ac1b604082015260600190565b60208082526007908201526643485f4e45584f60c81b604082015260600190565b60208082526006908201526543485f50534360d01b604082015260600190565b60208082526006908201526521a42fa829ad60d11b604082015260600190565b60208082526006908201526543485f4e454f60d01b604082015260600190565b60006101008201905060018060a01b03808451168352806020850151166020840152506040830151604083015260608301516060830152608083015160020b608083015260a083015160020b60a083015260c0830151614ca760c08401826146b8565b5092915050565b8151815260208083015190820152604080830151908201526060918201519181019190915260800190565b600060a08201905060018060a01b0380845116835280602085015116602084015250604083015160020b6040830152606083015160020b60608301526001600160801b03608084015116608083015292915050565b81518152602080830151908201526040918201519181019190915260600190565b81516001600160a01b03908116825260208084015190911690820152604080830151151590820152606080830151151590820152608080830151610120830191614d9b908401826146b2565b5060a083015160a083015260c0830151614db860c08401826146c7565b5060e0830151614ca760e08401826146b8565b918252602082015260400190565b938452602084019290925260408301526001600160a01b0316606082015260800190565b60405181810167ffffffffffffffff81118282101715614e1957fe5b604052919050565b6001600160a01b0381168114612e4757600080fd5b8015158114612e4757600080fd5b8060020b8114612e4757600080fd5b6001600160801b0381168114612e4757600080fd5b62ffffff81168114612e4757600080fdfe5265656e7472616e637947756172643a207265656e7472616e742063616c6c0053616665436173743a2076616c756520646f65736e27742066697420696e2031323820626974735369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206469766973696f6e206f766572666c6f775369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220df197990a1e5f9f717957cd5051d5b02a1898458164f338e8432a5e2f580550564736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101d95760003560e01c80638da5cb5b11610104578063cc2a9a5b116100a2578063d348799711610071578063d34879971461038e578063da742228146103a1578063f807cd22146103b4578063fa461e33146103bc576101d9565b8063cc2a9a5b14610340578063cc3606dc14610353578063cde109b614610366578063ce1b815f14610386576101d9565b8063b248c4ef116100de578063b248c4ef146102fd578063b6b1b6c314610305578063bc5920ba14610318578063c35eb28c14610320576101d9565b80638da5cb5b146102e5578063aa2a8294146102ed578063b081983b146102f5576101d9565b80635c975abb1161017c57806380a983321161014b57806380a98332146102af5780638456cb59146102c257806386b9d81f146102ca5780638d928af8146102dd576101d9565b80635c975abb1461028f5780636896fabf146102975780636c8381f81461029f578063715018a6146102a7576101d9565b8063486ff0cd116101b8578063486ff0cd146102255780634a64d67d1461023a578063572b6c051461024f5780635ae809511461026f576101d9565b8062aa9a89146101de57806313af4035146102085780633f4ba83a1461021d575b600080fd5b6101f16101ec36600461437d565b6103cf565b6040516101ff929190614dcb565b60405180910390f35b61021b610216366004613ff3565b6106e9565b005b61021b610844565b61022d6108ab565b6040516101ff9190614867565b6102426108cb565b6040516101ff91906146d4565b61026261025d366004613ff3565b6108db565b6040516101ff919061480a565b61028261027d366004613ff3565b6108f2565b6040516101ff919061485e565b610262610ac7565b610242610ad0565b610242610ae0565b61021b610aef565b61021b6102bd3660046140e4565b610ba2565b61021b610c85565b61021b6102d836600461402b565b610cea565b610242611186565b610242611196565b6102426111a5565b6102426111b5565b6102426111c5565b6101f1610313366004614497565b6111d5565b61021b6114ab565b61033361032e3660046142f4565b6115a9565b6040516101ff9190614cae565b61021b61034e366004614063565b611d1e565b61021b61036136600461402b565b612123565b61037961037436600461453c565b612259565b6040516101ff9190614d2e565b610242612697565b61021b61039c3660046142a3565b6126a6565b61021b6103af366004613ff3565b61292a565b6102426129f5565b61021b6103ca3660046142a3565b612a05565b6000806103da610ac7565b1561041f576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415610465576040805162461bcd60e51b815260206004820152601f6024820152600080516020614e7a833981519152604482015290519081900360640190fd5b6002600155606083013580610478612c13565b111561049f5760405162461bcd60e51b815260040161049690614ada565b60405180910390fd5b60006104a9612c17565b610134549091506000906001600160a01b0316631e81ac33836104cf60208a018a613ff3565b6040518363ffffffff1660e01b81526004016104ec9291906146e8565b6040805180830381600087803b15801561050557600080fd5b505af1158015610519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053d919061438e565b905060006105a86040518060800160405280856001600160a01b031681526020018960000160208101906105719190613ff3565b6001600160a01b031681526020018960200160208101906105929190613ff3565b6001600160a01b03168152602001849052612c26565b90506000808260400151126105be5760006105c1565b60015b905060008260a001516105d8578860400135610662565b6101325460408051633a14199b60e11b81529051610662926001600160a01b0316916374283336916004808301926020929190829003018186803b15801561061f57600080fd5b505afa158015610633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106579190614675565b60408b013590612d56565b905061069f6040518060a0016040528084151581526020018415158152602001856020015181526020018560000151815260200183815250612d74565b60405160808a0135907f09a07769667a46c2b89124a4d731c76fb5203061073aec16319ba9c6a79a324890600090a250508051602090910151600180559097909650945050505050565b6106f1612c17565b6001600160a01b0316610702611196565b6001600160a01b031614610746576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661078a576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6065546001600160a01b03828116911614156107d6576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6066546001600160a01b0382811691161415610822576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b606680546001600160a01b0319166001600160a01b0392909216919091179055565b61084c612c17565b6001600160a01b031661085d611196565b6001600160a01b0316146108a1576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6108a9612e4a565b565b6040805180820190915260058152640322e302e360dc1b60208201525b90565b610130546001600160a01b031690565b60fd546001600160a01b038281169116145b919050565b610134546040516380f57f1160e01b815260009182916001600160a01b03909116906380f57f11906109289086906004016146d4565b60206040518083038186803b15801561094057600080fd5b505afa158015610954573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109789190614268565b6101365460405163c5bba90f60e01b815291925060009182916001600160a01b03169063c5bba90f906109af9088906004016146d4565b604080518083038186803b1580156109c657600080fd5b505afa1580156109da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fe9190614280565b6101335460405163f8b2cb4f60e01b8152929450909250600091610a9d916001600160a01b03169063f8b2cb4f90610a3a908a906004016146d4565b60206040518083038186803b158015610a5257600080fd5b505afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190614268565b61013154600160a01b900460ff16612eea565b9050610abd82610ab7610ab08688612f00565b8490612f65565b90612f65565b9695505050505050565b60995460ff1690565b610136546001600160a01b031690565b6066546001600160a01b031690565b610af7612c17565b6001600160a01b0316610b08611196565b6001600160a01b031614610b4c576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606580546001600160a01b0319908116909155606680549091169055565b610baa610ac7565b15610bef576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415610c35576040805162461bcd60e51b815260206004820152601f6024820152600080516020614e7a833981519152604482015290519081900360640190fd5b6002600181905550610c7b8484848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612fca92505050565b5050600180555050565b610c8d612c17565b6001600160a01b0316610c9e611196565b6001600160a01b031614610ce2576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6108a96132b2565b610cf2610ac7565b15610d37576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415610d7d576040805162461bcd60e51b815260206004820152601f6024820152600080516020614e7a833981519152604482015290519081900360640190fd5b60026001556101365460405163659e3dc760e11b81526001600160a01b039091169063cb3c7b8e90610db39085906004016146d4565b60206040518083038186803b158015610dcb57600080fd5b505afa158015610ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e039190614230565b15610e205760405162461bcd60e51b815260040161049690614c24565b6101365460405163f75c266d60e01b81526001600160a01b039091169063f75c266d90610e519085906004016146d4565b60206040518083038186803b158015610e6957600080fd5b505afa158015610e7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea19190614268565b610eaa836108f2565b12610ec75760405162461bcd60e51b8152600401610496906148dc565b61013454604051631e81ac3360e01b81526000916001600160a01b031690631e81ac3390610efb90869086906004016146e8565b6040805180830381600087803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4c919061438e565b90506000610f956040518060800160405280866001600160a01b03168152602001856001600160a01b0316815260200160006001600160a01b0316815260200184815250612c26565b9050600061103661013260009054906101000a90046001600160a01b03166001600160a01b031663fedf924b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610feb57600080fd5b505afa158015610fff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110239190614675565b6110308460600151613335565b90612d56565b610136549091506001600160a01b03166337724702866110558461335d565b6040518363ffffffff1660e01b81526004016110729291906147d3565b600060405180830381600087803b15801561108c57600080fd5b505af11580156110a0573d6000803e3d6000fd5b5050505060006110ae612c17565b610136549091506001600160a01b03166337724702826110cd85613371565b6040518363ffffffff1660e01b81526004016110ea9291906147d3565b600060405180830381600087803b15801561110457600080fd5b505af1158015611118573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167fd9aced30440caca81570436bc942f816cfd95a3f08f700a2aeb6334c7cb5b49761115e8660600151613335565b865160405161117292919088908890614dd9565b60405180910390a350506001805550505050565b610133546001600160a01b031690565b6065546001600160a01b031690565b610132546001600160a01b031690565b610131546001600160a01b031690565b610135546001600160a01b031690565b6000806111e0610ac7565b15611225576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6002600154141561126b576040805162461bcd60e51b815260206004820152601f6024820152600080516020614e7a833981519152604482015290519081900360640190fd5b600260015560a08301518061127e612c13565b111561129c5760405162461bcd60e51b815260040161049690614ada565b60006112a6612c17565b610136548651604051633f1cdc8560e21b81529293506001600160a01b039091169163fc737214916112dd918591906004016146e8565b600060405180830381600087803b1580156112f757600080fd5b505af115801561130b573d6000803e3d6000fd5b5050610134548751604051631e81ac3360e01b8152600094506001600160a01b039092169250631e81ac33916113459186916004016146e8565b6040805180830381600087803b15801561135e57600080fd5b505af1158015611372573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611396919061438e565b9050600061141b604051806101200160405280856001600160a01b0316815260200189600001516001600160a01b03168152602001896020015115158152602001896040015115158152602001600015158152602001896060015181526020018960c001516001600160a01b03168152602001600015158152602001848152506133bd565b90506114646040518060a0016040528089602001511515815260200189604001511515815260200183602001518152602001836000015181526020018960800151815250612d74565b60e08701516040517f09a07769667a46c2b89124a4d731c76fb5203061073aec16319ba9c6a79a324890600090a28051602090910151600180559097909650945050505050565b6066546001600160a01b03166114f0576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b6114f8612c17565b6066546001600160a01b03908116911614611543576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6066546065546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360668054606580546001600160a01b03199081166001600160a01b03841617909155169055565b6115b1613f12565b6115b9610ac7565b156115fe576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415611644576040805162461bcd60e51b815260206004820152601f6024820152600080516020614e7a833981519152604482015290519081900360640190fd5b600260015561010082013580611658612c13565b11156116765760405162461bcd60e51b815260040161049690614ada565b6000611680612c17565b610136549091506001600160a01b031663fc737214826116a36020880188613ff3565b6040518363ffffffff1660e01b81526004016116c09291906146e8565b600060405180830381600087803b1580156116da57600080fd5b505af11580156116ee573d6000803e3d6000fd5b505061013454600092506001600160a01b03169050631e81ac33836117166020890189613ff3565b6040518363ffffffff1660e01b81526004016117339291906146e8565b6040805180830381600087803b15801561174c57600080fd5b505af1158015611760573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611784919061438e565b610135546040805160e081019091526001600160a01b0385811682529293506000929091169063e8ab2fb3906020808201906117c2908b018b613ff3565b6001600160a01b0316815260200189602001358152602001896040013581526020018960600160208101906117f7919061424c565b60020b815260200161180f60a08b0160808c0161424c565b60020b8152602001858152506040518263ffffffff1660e01b81526004016118379190614c44565b60a060405180830381600087803b15801561185157600080fd5b505af1158015611865573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611889919061430c565b90508560a001358160000151101580156118ab57508560c00135816020015110155b6118c75760405162461bcd60e51b815260040161049690614be4565b6118d8610100870160e08801614214565b15611b7e57805160208201519015159015158082141561190a5760405162461bcd60e51b815260040161049690614b9e565b610136546000906001600160a01b0316636332fef68761192d60208d018d613ff3565b6040518363ffffffff1660e01b815260040161194a9291906146e8565b60a06040518083038186803b15801561196257600080fd5b505afa158015611976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199a91906143d6565b90506000808415611a0c5785516119b090613371565b836040015112156119d35760405162461bcd60e51b815260040161049690614b3b565b85516119de9061335d565b9150611a0583604001516119ff84866060015161353090919063ffffffff16565b906135d9565b9050611a6d565b611a198660200151613371565b83606001511215611a3c5760405162461bcd60e51b815260040161049690614b5c565b611a49866020015161335d565b9050611a6a83606001516119ff83866040015161353090919063ffffffff16565b91505b610135546080870151604051632c30105d60e21b81526001600160a01b039092169163b0c0417491611aa59186908690600401614815565b600060405180830381600087803b158015611abf57600080fd5b505af1158015611ad3573d6000803e3d6000fd5b5050610136546001600160a01b0316915063e7ec1a85905089611af960208f018f613ff3565b8951611b049061335d565b611b118b6020015161335d565b8787611b208e60400151613371565b6040518863ffffffff1660e01b8152600401611b429796959493929190614795565b600060405180830381600087803b158015611b5c57600080fd5b505af1158015611b70573d6000803e3d6000fd5b505050505050505050611c16565b610136546001600160a01b031663beb56a7584611b9e60208a018a613ff3565b8451611ba99061335d565b611bb6866020015161335d565b611bc38760400151613371565b6040518663ffffffff1660e01b8152600401611be3959493929190614764565b600060405180830381600087803b158015611bfd57600080fd5b505af1158015611c11573d6000803e3d6000fd5b505050505b611c1f83613691565b610130546001600160a01b0316611c396020880188613ff3565b6001600160a01b039081169085167fcb47d8bf351d355bdd5497973533eada41777b4509f2585a62ae246336ebaa94611c7860808b0160608c0161424c565b611c8860a08c0160808d0161424c565b8651611c9390613371565b611ca08860200151613371565b611cb689606001516001600160801b0316613704565b8960400151604051611ccd9695949392919061482b565b60405180910390a4604051806080016040528082600001518152602001826020015181526020018260400151815260200182606001516001600160801b031681525094505050505060018055919050565b600054610100900460ff1680611d375750611d37613747565b80611d45575060005460ff16155b611d805760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff16158015611dab576000805460ff1961ff0019909116610100171660011790555b611dbd866001600160a01b0316613758565b611dd95760405162461bcd60e51b815260040161049690614af9565b611deb856001600160a01b0316613758565b611e075760405162461bcd60e51b8152600401610496906149c1565b846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611e4057600080fd5b505afa158015611e54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e789190614691565b60ff16601214611e9a5760405162461bcd60e51b8152600401610496906148ba565b611eac846001600160a01b0316613758565b611ec85760405162461bcd60e51b81526004016104969061495d565b611eda876001600160a01b0316613758565b611ef65760405162461bcd60e51b815260040161049690614a02565b611f08826001600160a01b0316613758565b611f245760405162461bcd60e51b81526004016104969061493c565b611f36836001600160a01b0316613758565b611f525760405162461bcd60e51b815260040161049690614a23565b6000836001600160a01b031663b248c4ef6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8d57600080fd5b505afa158015611fa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc5919061400f565b9050611fd9816001600160a01b0316613758565b611ff55760405162461bcd60e51b815260040161049690614a7a565b611ffd61375e565b612005613807565b61013280546001600160a01b03199081166001600160a01b038b811691909117909255610133805482168a84161790819055610130805483168a85161790556101318054831689851617905561013480548316888516179055610135805483168585161790556101368054909216868416179091556040805163313ce56760e01b81529051919092169163313ce567916004808301926020929190829003018186803b1580156120b457600080fd5b505afa1580156120c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ec9190614691565b61013160146101000a81548160ff021916908360ff16021790555050801561211a576000805461ff00191690555b50505050505050565b61212b610ac7565b15612170576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600260015414156121b6576040805162461bcd60e51b815260206004820152601f6024820152600080516020614e7a833981519152604482015290519081900360640190fd5b6002600155610135546040516321b499f560e11b81526000916001600160a01b03169063436933ea906121ef90869086906004016146e8565b60006040518083038186803b15801561220757600080fd5b505afa15801561221b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122439190810190614173565b9050612250838383612fca565b50506001805550565b612261613f3a565b612269610ac7565b156122ae576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600260015414156122f4576040805162461bcd60e51b815260206004820152601f6024820152600080516020614e7a833981519152604482015290519081900360640190fd5b600260015560c082013580612307612c13565b11156123255760405162461bcd60e51b815260040161049690614ada565b600061232f612c17565b610134549091506001600160a01b0316631e81ac33826123526020880188613ff3565b6040518363ffffffff1660e01b815260040161236f9291906146e8565b6040805180830381600087803b15801561238857600080fd5b505af115801561239c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c0919061438e565b50610135546040805160a081019091526001600160a01b0383811682526000921690635b778b9d906020808201906123fa908a018a613ff3565b6001600160a01b0316815260200188602001602081019061241b919061424c565b60020b815260200161243360608a0160408b0161424c565b60020b815260200161244b60808a0160608b01614659565b6001600160801b03168152506040518263ffffffff1660e01b81526004016124739190614cd9565b60a060405180830381600087803b15801561248d57600080fd5b505af11580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c591906143d6565b610136549091506001600160a01b031663fa51ba85836124e86020890189613ff3565b84516124f390613371565b6125008660200151613371565b866060015187608001516125178960400151613371565b6040518863ffffffff1660e01b81526004016125399796959493929190614795565b600060405180830381600087803b15801561255357600080fd5b505af1158015612567573d6000803e3d6000fd5b50505050846080013581600001511015801561258b57508460a00135816020015110155b6125a75760405162461bcd60e51b815260040161049690614be4565b610130546001600160a01b03166125c16020870187613ff3565b6001600160a01b039081169084167fcb47d8bf351d355bdd5497973533eada41777b4509f2585a62ae246336ebaa9461260060408a0160208b0161424c565b61261060608b0160408c0161424c565b865161261b9061335d565b612628886020015161335d565b61264c8d606001602081019061263e9190614659565b6001600160801b03166138a4565b89604001516040516126639695949392919061482b565b60405180910390a4604080516060810182528251815260208084015190820152918101519082015260018055949350505050565b60fd546001600160a01b031690565b610135546001600160a01b031633146126d15760405162461bcd60e51b815260040161049690614a9b565b60006126df8284018461443f565b9050841561280257600081602001516001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561272657600080fd5b505afa15801561273a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275e919061400f565b602083015160405163a9059cbb60e01b81529192506001600160a01b0383169163a9059cbb91612792918a906004016147d3565b602060405180830381600087803b1580156127ac57600080fd5b505af11580156127c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e49190614230565b6128005760405162461bcd60e51b815260040161049690614abb565b505b831561292357600081602001516001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561284757600080fd5b505afa15801561285b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287f919061400f565b602083015160405163a9059cbb60e01b81529192506001600160a01b0383169163a9059cbb916128b39189906004016147d3565b602060405180830381600087803b1580156128cd57600080fd5b505af11580156128e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129059190614230565b6129215760405162461bcd60e51b815260040161049690614abb565b505b5050505050565b612932612c17565b6001600160a01b0316612943611196565b6001600160a01b031614612987576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b612999816001600160a01b0316613758565b6129b55760405162461bcd60e51b815260040161049690614a23565b6129be816138b8565b6040516001600160a01b038216907f871264f4293af7d2865ae7eae628b228f4991c57cb45b39c99f0b774ebe2901890600090a250565b610134546001600160a01b031690565b610134546001600160a01b03163314612a305760405162461bcd60e51b8152600401610496906148fc565b6000841380612a3f5750600083135b612a5b5760405162461bcd60e51b8152600401610496906149e2565b6000612a698284018461454d565b6040810151909150600080808813612af257826001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015612ab457600080fd5b505afa158015612ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aec919061400f565b87612b65565b826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015612b2b57600080fd5b505afa158015612b3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b63919061400f565b885b91509150816001600160a01b031663a9059cbb8560400151836040518363ffffffff1660e01b8152600401612b9b9291906147d3565b602060405180830381600087803b158015612bb557600080fd5b505af1158015612bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bed9190614230565b612c095760405162461bcd60e51b815260040161049690614abb565b5050505050505050565b4290565b6000612c2161390c565b905090565b612c2e613f5b565b610136548251602084015160405163165c4e2960e31b81526000936001600160a01b03169263b2e2714892612c65926004016146e8565b60206040518083038186803b158015612c7d57600080fd5b505afa158015612c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb59190614268565b905080612cd45760405162461bcd60e51b815260040161049690614c04565b604080516101208101825284516001600160a01b03908116825260208087015190911690820152600083139181018290526060810182905260016080820152612d4e9060a08101612d2485613335565b81526040808801516001600160a01b031660208301526001908201526060808801519101526133bd565b949350505050565b6000612d6b838362ffffff16620f424061393c565b90505b92915050565b6080810151612d8257612e47565b805115612ded57806020015115612dc057806080015181604001511015612dbb5760405162461bcd60e51b815260040161049690614b7d565b612de8565b806080015181606001511115612de85760405162461bcd60e51b81526004016104969061491b565b612e47565b806020015115612e1f57806080015181606001511015612de85760405162461bcd60e51b815260040161049690614b1a565b806080015181604001511115612e475760405162461bcd60e51b81526004016104969061497e565b50565b612e52610ac7565b612e9a576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6099805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612ecd612c17565b604080516001600160a01b039092168252519081900360200190a1565b6000612d6b8360ff601285900316600a0a613530565b6000818303818312801590612f155750838113155b80612f2a5750600083128015612f2a57508381135b612d6b5760405162461bcd60e51b8152600401808060200182810382526024815260200180614f806024913960400191505060405180910390fd5b6000828201818312801590612f7a5750838112155b80612f8f5750600083128015612f8f57508381125b612d6b5760405162461bcd60e51b8152600401808060200182810382526021815260200180614ec16021913960400191505060405180910390fd5b600061305c8461013260009054906101000a90046001600160a01b03166001600160a01b031663a85494026040518163ffffffff1660e01b815260040160206040518083038186803b15801561301f57600080fd5b505afa158015613033573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130579190614675565b6139ec565b12806130ef57506101365460405163f75c266d60e01b81526001600160a01b039091169063f75c266d906130949086906004016146d4565b60206040518083038186803b1580156130ac57600080fd5b505afa1580156130c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e49190614268565b6130ed846108f2565b125b61310b5760405162461bcd60e51b815260040161049690614bc3565b61013454604051631e81ac3360e01b81526001600160a01b0390911690631e81ac339061313e90869086906004016146e8565b6040805180830381600087803b15801561315757600080fd5b505af115801561316b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061318f919061438e565b506101355460405163398dbcfd60e01b81526000916001600160a01b03169063398dbcfd906131c690879087908790600401614702565b60a060405180830381600087803b1580156131e057600080fd5b505af11580156131f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321891906143d6565b6101365481519192506001600160a01b03169063fa51ba85908690869061323e90613371565b61324b8660200151613371565b866060015187608001516132628960400151613371565b6040518863ffffffff1660e01b81526004016132849796959493929190614795565b600060405180830381600087803b15801561329e57600080fd5b505af1158015612c09573d6000803e3d6000fd5b6132ba610ac7565b156132ff576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6099805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612ecd612c17565b60008082136133545761334f61334a83613a70565b613a9c565b612d6e565b612d6e82613a9c565b600061336882613371565b60000392915050565b60006001600160ff1b038211156133b95760405162461bcd60e51b8152600401808060200182810382526028815260200180614f586028913960400191505060405180910390fd5b5090565b6133c5613f5b565b6101345460408051610100818101835285516001600160a01b0390811683526020808801518216908401528684015115158385015260608088015115159084015260808088015115159084015260a0808801519084015260c0808801518216908401529086015160e083015291516348fa72d560e01b815260009392909216916348fa72d59161345791600401614d4f565b60c060405180830381600087803b15801561347157600080fd5b505af1158015613485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134a991906145d7565b90508260e001516134bf5782516134bf90613691565b610136548351602085015160405163fa8e30af60e01b81526001600160a01b039093169263fa8e30af926134f79290916004016146e8565b600060405180830381600087803b15801561351157600080fd5b505af1158015613525573d6000803e3d6000fd5b509295945050505050565b60008261353f57506000612d6e565b826000191480156135535750600160ff1b82145b1561358f5760405162461bcd60e51b8152600401808060200182810382526027815260200180614f316027913960400191505060405180910390fd5b8282028284828161359c57fe5b0514612d6b5760405162461bcd60e51b8152600401808060200182810382526027815260200180614f316027913960400191505060405180910390fd5b60008161362d576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b816000191480156136415750600160ff1b83145b1561367d5760405162461bcd60e51b8152600401808060200182810382526021815260200180614f106021913960400191505060405180910390fd5b600082848161368857fe5b05949350505050565b60006136e68261013260009054906101000a90046001600160a01b03166001600160a01b031663543ce73a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561301f57600080fd5b1215612e475760405162461bcd60e51b81526004016104969061499f565b80600f81900b81146108ed5760405162461bcd60e51b8152600401808060200182810382526027815260200180614e9a6027913960400191505060405180910390fd5b600061375230613758565b15905090565b3b151590565b600054610100900460ff16806137775750613777613747565b80613785575060005460ff16155b6137c05760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff161580156137eb576000805460ff1961ff0019909116610100171660011790555b6137f3613af3565b8015612e47576000805461ff001916905550565b600054610100900460ff16806138205750613820613747565b8061382e575060005460ff16155b6138695760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff16158015613894576000805460ff1961ff0019909116610100171660011790555b61389c613b98565b6137f3613c99565b6000613368826001600160801b0316613704565b60fd80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fa4388ecc389b1390354ae0c65a856c0d7dd4fb648419f5d3ac0b99e38f46fd119181900360200190a150565b6000601436108015906139235750613923336108db565b15613937575060131936013560601c6108c8565b503390565b6000808060001985870986860292508281109083900303905080613972576000841161396757600080fd5b5082900490506139e5565b80841161397e57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b61013354604051633ffd130360e01b81526000916001600160a01b031690633ffd130390613a2090869086906004016147ec565b60206040518083038186803b158015613a3857600080fd5b505afa158015613a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6b9190614268565b6000600160ff1b8213613a955760405162461bcd60e51b815260040161049690614a43565b5060000390565b6000808212156133b9576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b600054610100900460ff1680613b0c5750613b0c613747565b80613b1a575060005460ff16155b613b555760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff16158015613b80576000805460ff1961ff0019909116610100171660011790555b600180558015612e47576000805461ff001916905550565b600054610100900460ff1680613bb15750613bb1613747565b80613bbf575060005460ff16155b613bfa5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff16158015613c25576000805460ff1961ff0019909116610100171660011790555b613c2d613d36565b6000613c37612c17565b606580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015612e47576000805461ff001916905550565b600054610100900460ff1680613cb25750613cb2613747565b80613cc0575060005460ff16155b613cfb5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff16158015613d26576000805460ff1961ff0019909116610100171660011790555b613d2e613dc7565b6137f3613e67565b600054610100900460ff1680613d4f5750613d4f613747565b80613d5d575060005460ff16155b613d985760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff16158015613dc3576000805460ff1961ff0019909116610100171660011790555b6137f35b600054610100900460ff1680613de05750613de0613747565b80613dee575060005460ff16155b613e295760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff161580156137f3576000805460ff1961ff0019909116610100171660011790558015612e47576000805461ff001916905550565b600054610100900460ff1680613e805750613e80613747565b80613e8e575060005460ff16155b613ec95760405162461bcd60e51b815260040180806020018281038252602e815260200180614ee2602e913960400191505060405180910390fd5b600054610100900460ff16158015613ef4576000805460ff1961ff0019909116610100171660011790555b6099805460ff191690558015612e47576000805461ff001916905550565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b6040518060c0016040528060008152602001600081526020016000815260200160008152602001600060020b81526020016000151581525090565b80356108ed81614e21565b80356108ed81614e36565b60008083601f840112613fbd578182fd5b50813567ffffffffffffffff811115613fd4578182fd5b602083019150836020828501011115613fec57600080fd5b9250929050565b600060208284031215614004578081fd5b8135612d6b81614e21565b600060208284031215614020578081fd5b8151612d6b81614e21565b6000806040838503121561403d578081fd5b823561404881614e21565b9150602083013561405881614e21565b809150509250929050565b60008060008060008060c0878903121561407b578182fd5b863561408681614e21565b9550602087013561409681614e21565b945060408701356140a681614e21565b935060608701356140b681614e21565b925060808701356140c681614e21565b915060a08701356140d681614e21565b809150509295509295509295565b600080600080606085870312156140f9578182fd5b843561410481614e21565b9350602085013561411481614e21565b9250604085013567ffffffffffffffff80821115614130578384fd5b818701915087601f830112614143578384fd5b813581811115614151578485fd5b8860208083028501011115614164578485fd5b95989497505060200194505050565b60006020808385031215614185578182fd5b825167ffffffffffffffff8082111561419c578384fd5b818501915085601f8301126141af578384fd5b8151818111156141bb57fe5b83810291506141cb848301614dfd565b8181528481019084860184860187018a10156141e5578788fd5b8795505b838610156142075780518352600195909501949186019186016141e9565b5098975050505050505050565b600060208284031215614225578081fd5b8135612d6b81614e36565b600060208284031215614241578081fd5b8151612d6b81614e36565b60006020828403121561425d578081fd5b8135612d6b81614e44565b600060208284031215614279578081fd5b5051919050565b60008060408385031215614292578182fd5b505080516020909101519092909150565b600080600080606085870312156142b8578182fd5b8435935060208501359250604085013567ffffffffffffffff8111156142dc578283fd5b6142e887828801613fac565b95989497509550505050565b60006101208284031215614306578081fd5b50919050565b600060a0828403121561431d578081fd5b60405160a0810181811067ffffffffffffffff8211171561433a57fe5b8060405250825181526020830151602082015260408301516040820152606083015161436581614e53565b60608201526080928301519281019290925250919050565b600060a08284031215614306578081fd5b60006040828403121561439f578081fd5b6040516040810181811067ffffffffffffffff821117156143bc57fe5b604052825181526020928301519281019290925250919050565b600060a082840312156143e7578081fd5b60405160a0810181811067ffffffffffffffff8211171561440457fe5b806040525082518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b600060408284031215614450578081fd5b6040516040810181811067ffffffffffffffff8211171561446d57fe5b604052823561447b81614e21565b8152602083013561448b81614e21565b60208201529392505050565b60006101008083850312156144aa578182fd5b6040519081019067ffffffffffffffff821181831017156144c757fe5b816040526144d484613f96565b81526144e260208501613fa1565b60208201526144f360408501613fa1565b6040820152606084013560608201526080840135608082015260a084013560a082015261452260c08501613f96565b60c082015260e084013560e0820152809250505092915050565b600060e08284031215614306578081fd5b600060a0828403121561455e578081fd5b60405160a0810181811067ffffffffffffffff8211171561457b57fe5b604052823561458981614e21565b8152602083013561459981614e21565b602082015260408301356145ac81614e21565b604082015260608301356145bf81614e68565b60608201526080928301359281019290925250919050565b600060c082840312156145e8578081fd5b60405160c0810181811067ffffffffffffffff8211171561460557fe5b806040525082518152602083015160208201526040830151604082015260608301516060820152608083015161463a81614e44565b608082015260a083015161464d81614e36565b60a08201529392505050565b60006020828403121561466a578081fd5b8135612d6b81614e53565b600060208284031215614686578081fd5b8151612d6b81614e68565b6000602082840312156146a2578081fd5b815160ff81168114612d6b578182fd5b15159052565b80518252602090810151910152565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0384811682528316602080830191909152606060408301819052835190830181905260009184810191608085019190845b818110156147565784518452938201939282019260010161473a565b509198975050505050505050565b6001600160a01b03958616815293909416602084015260408301919091526060820152608081019190915260a00190565b6001600160a01b03978816815295909616602086015260408501939093526060840191909152608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392909216825262ffffff16602082015260400190565b901515815260200190565b9283526020830191909152604082015260600190565b600296870b81529490950b602085015260408401929092526060830152600f0b608082015260a081019190915260c00190565b90815260200190565b6000602080835283518082850152825b8181101561489357858101830151858201604001528201614877565b818111156148a45783604083870101525b50601f01601f1916929092016040019392505050565b60208082526008908201526708690bea2889c62760c31b604082015260600190565b60208082526006908201526521a42fa2a0ab60d11b604082015260600190565b60208082526005908201526443485f4f4560d81b604082015260600190565b60208082526007908201526643485f544d525360c81b604082015260600190565b60208082526007908201526643485f41424e4360c81b604082015260600190565b60208082526007908201526643485f55414e4360c81b604082015260600190565b60208082526007908201526610d217d513549360ca1b604082015260600190565b60208082526008908201526743485f4e4546434960c01b604082015260600190565b60208082526007908201526643485f51414e4360c81b604082015260600190565b60208082526006908201526543485f46305360d01b604082015260600190565b60208082526007908201526643485f43434e4360c81b604082015260600190565b60208082526006908201526543485f414e4360d01b604082015260600190565b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f7700000000604082015260600190565b60208082526007908201526643485f4f424e4360c81b604082015260600190565b60208082526006908201526521a42fa727a160d11b604082015260600190565b60208082526005908201526421a42faa2360d91b604082015260600190565b60208082526005908201526443485f544560d81b604082015260600190565b60208082526007908201526643485f56414e4360c81b604082015260600190565b60208082526007908201526610d217d513149360ca1b604082015260600190565b60208082526007908201526643485f54424e4560c81b604082015260600190565b60208082526007908201526643485f54514e4560c81b604082015260600190565b60208082526007908201526643485f544c525360c81b604082015260600190565b6020808252600b908201526a043485f43414c57524654560ac1b604082015260600190565b60208082526007908201526643485f4e45584f60c81b604082015260600190565b60208082526006908201526543485f50534360d01b604082015260600190565b60208082526006908201526521a42fa829ad60d11b604082015260600190565b60208082526006908201526543485f4e454f60d01b604082015260600190565b60006101008201905060018060a01b03808451168352806020850151166020840152506040830151604083015260608301516060830152608083015160020b608083015260a083015160020b60a083015260c0830151614ca760c08401826146b8565b5092915050565b8151815260208083015190820152604080830151908201526060918201519181019190915260800190565b600060a08201905060018060a01b0380845116835280602085015116602084015250604083015160020b6040830152606083015160020b60608301526001600160801b03608084015116608083015292915050565b81518152602080830151908201526040918201519181019190915260600190565b81516001600160a01b03908116825260208084015190911690820152604080830151151590820152606080830151151590820152608080830151610120830191614d9b908401826146b2565b5060a083015160a083015260c0830151614db860c08401826146c7565b5060e0830151614ca760e08401826146b8565b918252602082015260400190565b938452602084019290925260408301526001600160a01b0316606082015260800190565b60405181810167ffffffffffffffff81118282101715614e1957fe5b604052919050565b6001600160a01b0381168114612e4757600080fd5b8015158114612e4757600080fd5b8060020b8114612e4757600080fd5b6001600160801b0381168114612e4757600080fd5b62ffffff81168114612e4757600080fdfe5265656e7472616e637947756172643a207265656e7472616e742063616c6c0053616665436173743a2076616c756520646f65736e27742066697420696e2031323820626974735369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206469766973696f6e206f766572666c6f775369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220df197990a1e5f9f717957cd5051d5b02a1898458164f338e8432a5e2f580550564736f6c63430007060033", + "bytecode": "0x608060405234801561001057600080fd5b5061598080620000216000396000f3fe608060405234801561001057600080fd5b50600436106101745760003560e01c8062aa9a891461017957806313af4035146101a35780633f4ba83a146101b8578063486ff0cd146101c05780634a64d67d146101d5578063572b6c05146101ea5780635ae809511461020a5780635c975abb1461022a5780636896fabf146102325780636c8381f81461023a578063715018a61461024257806380a983321461024a5780638456cb591461025d57806386b9d81f146102655780638d928af8146102785780638da5cb5b14610280578063aa2a829414610288578063b081983b14610290578063b248c4ef14610298578063b6b1b6c3146102a0578063bc5920ba146102b3578063c35eb28c146102bb578063cc2a9a5b146102db578063cc3606dc146102ee578063cde109b614610301578063ce1b815f14610321578063d348799714610329578063da7422281461033c578063f807cd221461034f578063fa461e3314610357578063fbfbd1691461036a575b600080fd5b61018c610187366004614b61565b61037d565b60405161019a9291906156d6565b60405180910390f35b6101b66101b136600461475d565b610686565b005b6101b66107e1565b6101c8610848565b60405161019a9190615153565b6101dd610868565b60405161019a9190614f89565b6101fd6101f836600461475d565b610878565b60405161019a91906150ce565b61021d61021836600461475d565b61088f565b60405161019a91906150d9565b6101fd610a76565b6101dd610a7f565b6101dd610a8f565b6101b6610a9e565b6101b661025836600461484e565b610b3f565b6101b6610c22565b6101b6610273366004614795565b610c87565b6101dd611108565b6101dd611118565b6101dd611127565b6101dd611137565b6101dd611147565b61018c6102ae366004614cf7565b611157565b6101b661141c565b6102ce6102c9366004614ae5565b611508565b60405161019a919061559d565b6101b66102e93660046147cd565b611dbe565b6101b66102fc366004614795565b6121c3565b61031461030f366004614d9b565b6122f9565b60405161019a9190615658565b6101dd612826565b6101b6610337366004614a68565b612835565b6101b661034a36600461475d565b612ab9565b6101dd612b84565b6101b6610365366004614a68565b612b94565b6101b661037836600461475d565b612db9565b600080610388610a76565b156103cd576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415610413576040805162461bcd60e51b815260206004820152601f60248201526000805160206157a1833981519152604482015290519081900360640190fd5b60026001556060830135806104266131e3565b111561044d5760405162461bcd60e51b8152600401610444906153c5565b60405180910390fd5b60006104576131e7565b610134549091506001600160a01b0316631e81ac338261047a602089018961475d565b6040518363ffffffff1660e01b8152600401610497929190614f9d565b6040805180830381600087803b1580156104b057600080fd5b505af11580156104c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e89190614b72565b50600061054c6040518060600160405280846001600160a01b0316815260200188600001602081019061051b919061475d565b6001600160a01b0316815260200188602001602081019061053c919061475d565b6001600160a01b031690526131f6565b9050600080826040015112610562576000610565565b60015b9050600082610120015161057d578760400135610607565b6101325460408051633a14199b60e11b81529051610607926001600160a01b0316916374283336916004808301926020929190829003018186803b1580156105c457600080fd5b505afa1580156105d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fc9190614f4c565b60408a01359061331c565b90506106446040518060a001604052808415158152602001841515815260200185602001518152602001856000015181526020018381525061333a565b60808801351561066c5760405160808901359060008051602061582983398151915290600090a25b505080516020909101516001805590969095509350505050565b61068e6131e7565b6001600160a01b031661069f611118565b6001600160a01b0316146106e3576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610727576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6065546001600160a01b0382811691161415610773576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6066546001600160a01b03828116911614156107bf576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b606680546001600160a01b0319166001600160a01b0392909216919091179055565b6107e96131e7565b6001600160a01b03166107fa611118565b6001600160a01b03161461083e576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610846613410565b565b6040805180820190915260058152640322e302e360dc1b60208201525b90565b610130546001600160a01b031690565b60fd546001600160a01b038281169116145b919050565b610134546040516380f57f1160e01b815260009182916001600160a01b03909116906380f57f11906108c5908690600401614f89565b60206040518083038186803b1580156108dd57600080fd5b505afa1580156108f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109159190614a50565b6101365460405163bba85bcf60e01b8152919250600091829182916001600160a01b039091169063bba85bcf90610950908990600401614f89565b60606040518083038186803b15801561096857600080fd5b505afa15801561097c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a09190614ab8565b6101335460405163f8b2cb4f60e01b81529396509194509250600091610a41916001600160a01b03169063f8b2cb4f906109de908b90600401614f89565b60206040518083038186803b1580156109f657600080fd5b505afa158015610a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2e9190614a50565b61013154600160a01b900460ff166134b0565b9050610a6b610a4f836134c6565b610a658581610a5e898b613512565b8690613577565b90613577565b979650505050505050565b60995460ff1690565b610136546001600160a01b031690565b6066546001600160a01b031690565b610aa66131e7565b6001600160a01b0316610ab7611118565b6001600160a01b031614610afb576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6065546040516000916001600160a01b031690600080516020615898833981519152908390a3606580546001600160a01b0319908116909155606680549091169055565b610b47610a76565b15610b8c576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415610bd2576040805162461bcd60e51b815260206004820152601f60248201526000805160206157a1833981519152604482015290519081900360640190fd5b6002600181905550610c1884848484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135dc92505050565b5050600180555050565b610c2a6131e7565b6001600160a01b0316610c3b611118565b6001600160a01b031614610c7f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610846613837565b610c8f610a76565b15610cd4576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415610d1a576040805162461bcd60e51b815260206004820152601f60248201526000805160206157a1833981519152604482015290519081900360640190fd5b60026001556101365460405163659e3dc760e11b81526001600160a01b039091169063cb3c7b8e90610d50908590600401614f89565b60206040518083038186803b158015610d6857600080fd5b505afa158015610d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da09190614a18565b15610dbd5760405162461bcd60e51b81526004016104449061550f565b6101365460405163f75c266d60e01b81526001600160a01b039091169063f75c266d90610dee908590600401614f89565b60206040518083038186803b158015610e0657600080fd5b505afa158015610e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3e9190614a50565b610e478361088f565b12610e645760405162461bcd60e51b8152600401610444906151c8565b61013454604051631e81ac3360e01b81526001600160a01b0390911690631e81ac3390610e979085908590600401614f9d565b6040805180830381600087803b158015610eb057600080fd5b505af1158015610ec4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee89190614b72565b50604080516060810182526001600160a01b038085168252831660208201526000918101829052610f18906131f6565b90506000610fb961013260009054906101000a90046001600160a01b03166001600160a01b031663fedf924b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f6e57600080fd5b505afa158015610f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa69190614f4c565b610fb384606001516138ba565b9061331c565b610136549091506001600160a01b0316633772470285610fd8846138e3565b6040518363ffffffff1660e01b8152600401610ff5929190615078565b600060405180830381600087803b15801561100f57600080fd5b505af1158015611023573d6000803e3d6000fd5b5050505060006110316131e7565b610136549091506001600160a01b0316633772470282611050856134c6565b6040518363ffffffff1660e01b815260040161106d929190615078565b600060405180830381600087803b15801561108757600080fd5b505af115801561109b573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167fd9aced30440caca81570436bc942f816cfd95a3f08f700a2aeb6334c7cb5b4976110e186606001516138ba565b86516040516110f5929190889088906156e4565b60405180910390a3505060018055505050565b610133546001600160a01b031690565b6065546001600160a01b031690565b610132546001600160a01b031690565b610131546001600160a01b031690565b610135546001600160a01b031690565b600080611162610a76565b156111a7576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600260015414156111ed576040805162461bcd60e51b815260206004820152601f60248201526000805160206157a1833981519152604482015290519081900360640190fd5b600260015560a0830151806112006131e3565b111561121e5760405162461bcd60e51b8152600401610444906153c5565b60006112286131e7565b610136548651604051633f1cdc8560e21b81529293506001600160a01b039091169163fc7372149161125f91859190600401614f9d565b600060405180830381600087803b15801561127957600080fd5b505af115801561128d573d6000803e3d6000fd5b5050610134548751604051631e81ac3360e01b81526001600160a01b039092169350631e81ac3392506112c591859190600401614f9d565b6040805180830381600087803b1580156112de57600080fd5b505af11580156112f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113169190614b72565b506000611394604051806101000160405280846001600160a01b0316815260200188600001516001600160a01b03168152602001886020015115158152602001886040015115158152602001600015158152602001886060015181526020018860c001516001600160a01b03168152602001600015158152506138f7565b90506113dd6040518060a001604052808860200151151581526020018860400151151581526020018360200151815260200183600001518152602001886080015181525061333a565b60e0860151156114045760e086015160405160008051602061582983398151915290600090a25b80516020909101516001805590969095509350505050565b6066546001600160a01b0316611461576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b6114696131e7565b6066546001600160a01b039081169116146114b4576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6066546065546040516001600160a01b03928316929091169060008051602061589883398151915290600090a360668054606580546001600160a01b03199081166001600160a01b03841617909155169055565b61151061463f565b611518610a76565b1561155d576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600260015414156115a3576040805162461bcd60e51b815260206004820152601f60248201526000805160206157a1833981519152604482015290519081900360640190fd5b6002600155610100820135806115b76131e3565b11156115d55760405162461bcd60e51b8152600401610444906153c5565b60006115df6131e7565b610136549091506001600160a01b031663fc73721482611602602088018861475d565b6040518363ffffffff1660e01b815260040161161f929190614f9d565b600060405180830381600087803b15801561163957600080fd5b505af115801561164d573d6000803e3d6000fd5b505061013454600092506001600160a01b03169050631e81ac3383611675602089018961475d565b6040518363ffffffff1660e01b8152600401611692929190614f9d565b6040805180830381600087803b1580156116ab57600080fd5b505af11580156116bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e39190614b72565b610135546040805160e081019091526001600160a01b0385811682529293506000929091169063e8ab2fb390602080820190611721908b018b61475d565b6001600160a01b0316815260200189602001358152602001896040013581526020018960600160208101906117569190614a34565b60020b815260200161176e60a08b0160808c01614a34565b60020b8152602001858152506040518263ffffffff1660e01b8152600401611796919061552f565b608060405180830381600087803b1580156117b057600080fd5b505af11580156117c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e89190614afd565b90508560a0013581600001511015801561180a57508560c00135816020015110155b6118265760405162461bcd60e51b8152600401610444906154cf565b611837610100870160e088016149fc565b15611c5357805160208201519015159015158114156118685760405162461bcd60e51b815260040161044490615489565b610136546000906001600160a01b0316636332fef68661188b60208c018c61475d565b6040518363ffffffff1660e01b81526004016118a8929190614f9d565b60606040518083038186803b1580156118c057600080fd5b505afa1580156118d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f89190614bb9565b9050600080831561195e57845161190e906134c6565b8351121561192e5760405162461bcd60e51b815260040161044490615426565b8451611939906138e3565b83516020850151919350611957916119519085613ac3565b90613b6c565b90506119b6565b61196b85602001516134c6565b8360200151121561198e5760405162461bcd60e51b815260040161044490615447565b61199b85602001516138e3565b602084015184519192506119b3916119519084613ac3565b91505b610135546001600160a01b031663b0c04174611a04896119d960208f018f61475d565b8e60600160208101906119ec9190614a34565b8f60800160208101906119ff9190614a34565b613c24565b84846040518463ffffffff1660e01b8152600401611a24939291906150e2565b600060405180830381600087803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b5050610136546001600160a01b0316915063ea45a8f9905088611a7860208e018e61475d565b85856040518563ffffffff1660e01b8152600401611a999493929190615019565b600060405180830381600087803b158015611ab357600080fd5b505af1158015611ac7573d6000803e3d6000fd5b505061013654600092506001600160a01b0316905063d50d01b789611aef60208f018f61475d565b6040518363ffffffff1660e01b8152600401611b0c929190614f9d565b60206040518083038186803b158015611b2457600080fd5b505afa158015611b38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5c9190614a50565b610134549091506000906001600160a01b03166399e4a771611b8160208f018f61475d565b60006040518363ffffffff1660e01b8152600401611ba0929190615091565b60206040518083038186803b158015611bb857600080fd5b505afa158015611bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf09190614779565b6001600160a01b03169050611c0860208d018d61475d565b6001600160a01b0316896001600160a01b03166000805160206157c18339815191528686600087600088604051611c449695949392919061512b565b60405180910390a35050505050505b6101365460408201516001600160a01b03909116906337724702908590611c79906134c6565b6040518363ffffffff1660e01b8152600401611c96929190615078565b600060405180830381600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b50505050611cd183613c80565b610130546001600160a01b0316611ceb602088018861475d565b6001600160a01b039081169085166000805160206158df833981519152611d1860808b0160608c01614a34565b611d2860a08c0160808d01614a34565b8651611d33906134c6565b611d4088602001516134c6565b611d5689606001516001600160801b0316613cf3565b8960400151604051611d6d969594939291906150f8565b60405180910390a4604051806080016040528082600001518152602001826020015181526020018260400151815260200182606001516001600160801b031681525094505050505060018055919050565b600054610100900460ff1680611dd75750611dd7613d36565b80611de5575060005460ff16155b611e205760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff16158015611e4b576000805460ff1961ff0019909116610100171660011790555b611e5d866001600160a01b0316613d47565b611e795760405162461bcd60e51b8152600401610444906153e4565b611e8b856001600160a01b0316613d47565b611ea75760405162461bcd60e51b8152600401610444906152ad565b846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611ee057600080fd5b505afa158015611ef4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f189190614f68565b60ff16601214611f3a5760405162461bcd60e51b8152600401610444906151a6565b611f4c846001600160a01b0316613d47565b611f685760405162461bcd60e51b815260040161044490615249565b611f7a876001600160a01b0316613d47565b611f965760405162461bcd60e51b8152600401610444906152ee565b611fa8826001600160a01b0316613d47565b611fc45760405162461bcd60e51b815260040161044490615228565b611fd6836001600160a01b0316613d47565b611ff25760405162461bcd60e51b81526004016104449061530f565b6000836001600160a01b031663b248c4ef6040518163ffffffff1660e01b815260040160206040518083038186803b15801561202d57600080fd5b505afa158015612041573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120659190614779565b9050612079816001600160a01b0316613d47565b6120955760405162461bcd60e51b815260040161044490615365565b61209d613d4d565b6120a5613df6565b61013280546001600160a01b03199081166001600160a01b038b811691909117909255610133805482168a84161790819055610130805483168a85161790556101318054831689851617905561013480548316888516179055610135805483168585161790556101368054909216868416179091556040805163313ce56760e01b81529051919092169163313ce567916004808301926020929190829003018186803b15801561215457600080fd5b505afa158015612168573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218c9190614f68565b61013160146101000a81548160ff021916908360ff1602179055505080156121ba576000805461ff00191690555b50505050505050565b6121cb610a76565b15612210576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415612256576040805162461bcd60e51b815260206004820152601f60248201526000805160206157a1833981519152604482015290519081900360640190fd5b6002600155610135546040516321b499f560e11b81526000916001600160a01b03169063436933ea9061228f9086908690600401614f9d565b60006040518083038186803b1580156122a757600080fd5b505afa1580156122bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122e39190810190614979565b90506122f08383836135dc565b50506001805550565b612301614667565b612309610a76565b1561234e576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415612394576040805162461bcd60e51b815260206004820152601f60248201526000805160206157a1833981519152604482015290519081900360640190fd5b600260015560c0820135806123a76131e3565b11156123c55760405162461bcd60e51b8152600401610444906153c5565b60006123cf6131e7565b610134549091506001600160a01b0316631e81ac33826123f2602088018861475d565b6040518363ffffffff1660e01b815260040161240f929190614f9d565b6040805180830381600087803b15801561242857600080fd5b505af115801561243c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124609190614b72565b50610135546040805160a081019091526001600160a01b0383811682526000921690635b778b9d9060208082019061249a908a018a61475d565b6001600160a01b031681526020018860200160208101906124bb9190614a34565b60020b81526020016124d360608a0160408b01614a34565b60020b81526020016124eb60808a0160608b01614f30565b6001600160801b03168152506040518263ffffffff1660e01b81526004016125139190615601565b60a060405180830381600087803b15801561252d57600080fd5b505af1158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614dac565b905060006125808361257a602089018961475d565b84613e93565b905085608001358260000151101580156125a257508560a00135826020015110155b6125be5760405162461bcd60e51b8152600401610444906154cf565b610130546001600160a01b03166125d8602088018861475d565b6001600160a01b039081169085166000805160206158df83398151915261260560408b0160208c01614a34565b61261560608c0160408d01614a34565b8751612620906138e3565b61262d89602001516138e3565b6126518e60600160208101906126439190614f30565b6001600160801b0316613fe4565b8a60400151604051612668969594939291906150f8565b60405180910390a4610136546000906001600160a01b031663d50d01b78561269360208b018b61475d565b6040518363ffffffff1660e01b81526004016126b0929190614f9d565b60206040518083038186803b1580156126c857600080fd5b505afa1580156126dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127009190614a50565b610134549091506000906001600160a01b03166399e4a77161272560208b018b61475d565b60006040518363ffffffff1660e01b8152600401612744929190615091565b60206040518083038186803b15801561275c57600080fd5b505afa158015612770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127949190614779565b6001600160a01b031690506127ac602089018961475d565b6001600160a01b0316856001600160a01b03166000805160206157c18339815191528660600151876080015160008789886040516127ef9695949392919061512b565b60405180910390a3505060408051606081018252835181526020808501519082015292810151908301525060018055949350505050565b60fd546001600160a01b031690565b610135546001600160a01b031633146128605760405162461bcd60e51b815260040161044490615386565b600061286e82840184614ca0565b9050841561299157600081602001516001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156128b557600080fd5b505afa1580156128c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ed9190614779565b602083015160405163a9059cbb60e01b81529192506001600160a01b0383169163a9059cbb91612921918a90600401615078565b602060405180830381600087803b15801561293b57600080fd5b505af115801561294f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129739190614a18565b61298f5760405162461bcd60e51b8152600401610444906153a6565b505b8315612ab257600081602001516001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156129d657600080fd5b505afa1580156129ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0e9190614779565b602083015160405163a9059cbb60e01b81529192506001600160a01b0383169163a9059cbb91612a42918990600401615078565b602060405180830381600087803b158015612a5c57600080fd5b505af1158015612a70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a949190614a18565b612ab05760405162461bcd60e51b8152600401610444906153a6565b505b5050505050565b612ac16131e7565b6001600160a01b0316612ad2611118565b6001600160a01b031614612b16576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b612b28816001600160a01b0316613d47565b612b445760405162461bcd60e51b81526004016104449061530f565b612b4d81613ff8565b6040516001600160a01b038216907f871264f4293af7d2865ae7eae628b228f4991c57cb45b39c99f0b774ebe2901890600090a250565b610134546001600160a01b031690565b610134546001600160a01b03163314612bbf5760405162461bcd60e51b8152600401610444906151e8565b600084138015612bcf5750600083125b80612be55750600084128015612be55750600083135b612c015760405162461bcd60e51b8152600401610444906152ce565b6000612c0f82840184614e14565b6040810151909150600080808813612c9857826001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015612c5a57600080fd5b505afa158015612c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c929190614779565b87612d0b565b826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015612cd157600080fd5b505afa158015612ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d099190614779565b885b91509150816001600160a01b031663a9059cbb8560400151836040518363ffffffff1660e01b8152600401612d41929190615078565b602060405180830381600087803b158015612d5b57600080fd5b505af1158015612d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d939190614a18565b612daf5760405162461bcd60e51b8152600401610444906153a6565b5050505050505050565b610136546040516357ba739b60e11b81526000916001600160a01b03169063af74e73690612deb908590600401614f89565b60006040518083038186803b158015612e0357600080fd5b505afa158015612e17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e3f91908101906148dc565b805190915060005b818110156131dd576101355483516000916001600160a01b03169063436933ea908790879086908110612e7657fe5b60200260200101516040518363ffffffff1660e01b8152600401612e9b929190614f9d565b60006040518083038186803b158015612eb357600080fd5b505afa158015612ec7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612eef9190810190614979565b805190915060005b81811015613135576101355483516000916001600160a01b03169063acf7182790869085908110612f2457fe5b60200260200101516040518263ffffffff1660e01b8152600401612f4891906150d9565b6101206040518083038186803b158015612f6157600080fd5b505afa158015612f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f999190614c0d565b9050600061013560009054906101000a90046001600160a01b03166001600160a01b0316635b778b9d6040518060a001604052808c6001600160a01b031681526020018b8a81518110612fe857fe5b60200260200101516001600160a01b03168152602001856020015160020b8152602001856040015160020b815260200160006001600160801b03168152506040518263ffffffff1660e01b81526004016130429190615601565b60a060405180830381600087803b15801561305c57600080fd5b505af1158015613070573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130949190614dac565b90506130b4898988815181106130a657fe5b602002602001015183613e93565b506101305488516001600160a01b03909116908990889081106130d357fe5b60200260200101516001600160a01b03168a6001600160a01b03166000805160206158df8339815191528560200151866040015160008060008960400151604051613123969594939291906150f8565b60405180910390a45050600101612ef7565b506101345485516001600160a01b0390911690631e81ac3390889088908790811061315c57fe5b60200260200101516040518363ffffffff1660e01b8152600401613181929190614f9d565b6040805180830381600087803b15801561319a57600080fd5b505af11580156131ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d29190614b72565b505050600101612e47565b50505050565b4290565b60006131f161404c565b905090565b6131fe614688565b610136548251602084015160405163165c4e2960e31b81526000936001600160a01b03169263b2e271489261323592600401614f9d565b60206040518083038186803b15801561324d57600080fd5b505afa158015613261573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132859190614a50565b9050806132a45760405162461bcd60e51b8152600401610444906154ef565b604080516101008101825284516001600160a01b039081168252602080870151909116908201526000831391810182905260608101829052600160808201526133149060a081016132f4856138ba565b81526040808801516001600160a01b0316602083015260019101526138f7565b949350505050565b6000613331838362ffffff16620f424061407c565b90505b92915050565b60808101516133485761340d565b8051156133b357806020015115613386578060800151816040015110156133815760405162461bcd60e51b815260040161044490615468565b6133ae565b8060800151816060015111156133ae5760405162461bcd60e51b815260040161044490615207565b61340d565b8060200151156133e5578060800151816060015110156133ae5760405162461bcd60e51b815260040161044490615405565b80608001518160400151111561340d5760405162461bcd60e51b81526004016104449061526a565b50565b613418610a76565b613460576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6099805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6134936131e7565b604080516001600160a01b039092168252519081900360200190a1565b60006133318360ff601285900316600a0a613ac3565b60006001600160ff1b0382111561350e5760405162461bcd60e51b81526004018080602001828103825260288152602001806158ff6028913960400191505060405180910390fd5b5090565b60008183038183128015906135275750838113155b8061353c575060008312801561353c57508381135b6133315760405162461bcd60e51b81526004018080602001828103825260248152602001806159276024913960400191505060405180910390fd5b600082820181831280159061358c5750838112155b806135a157506000831280156135a157508381125b6133315760405162461bcd60e51b81526004018080602001828103825260218152602001806158086021913960400191505060405180910390fd5b600061366e8461013260009054906101000a90046001600160a01b03166001600160a01b031663a85494026040518163ffffffff1660e01b815260040160206040518083038186803b15801561363157600080fd5b505afa158015613645573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136699190614f4c565b61412b565b128061370157506101365460405163f75c266d60e01b81526001600160a01b039091169063f75c266d906136a6908690600401614f89565b60206040518083038186803b1580156136be57600080fd5b505afa1580156136d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136f69190614a50565b6136ff8461088f565b125b61371d5760405162461bcd60e51b8152600401610444906154ae565b61013454604051631e81ac3360e01b81526001600160a01b0390911690631e81ac33906137509086908690600401614f9d565b6040805180830381600087803b15801561376957600080fd5b505af115801561377d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137a19190614b72565b506101355460405163398dbcfd60e01b81526000916001600160a01b03169063398dbcfd906137d890879087908790600401614fb7565b60a060405180830381600087803b1580156137f257600080fd5b505af1158015613806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061382a9190614dac565b9050612ab2848483613e93565b61383f610a76565b15613884576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6099805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586134936131e7565b6000808212156138da576138d56138d0836141af565b6141db565b613334565b613334826141db565b60006138ee826134c6565b60000392915050565b6138ff614688565b610134546040805160e08101825284516001600160a01b0390811682526020808701518216908301528583015115158284015260608087015115159083015260808087015115159083015260a0808701519083015260c08087015182169083015291516310c5328760e21b81526000939290921691634314ca1c9161398691600401615679565b61014060405180830381600087803b1580156139a157600080fd5b505af11580156139b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d99190614e9d565b90508260e001516139ef5782516139ef90613c80565b82602001516001600160a01b031683600001516001600160a01b03166000805160206157c18339815191528360400151846060015185608001518660a001518760c001518860e00151604051613a4a9695949392919061512b565b60405180910390a3610136548351602085015160405163fa8e30af60e01b81526001600160a01b039093169263fa8e30af92613a8a929091600401614f9d565b600060405180830381600087803b158015613aa457600080fd5b505af1158015613ab8573d6000803e3d6000fd5b509295945050505050565b600082613ad257506000613334565b82600019148015613ae65750600160ff1b82145b15613b225760405162461bcd60e51b81526004018080602001828103825260278152602001806158b86027913960400191505060405180910390fd5b82820282848281613b2f57fe5b05146133315760405162461bcd60e51b81526004018080602001828103825260278152602001806158b86027913960400191505060405180910390fd5b600081613bc0576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b81600019148015613bd45750600160ff1b83145b15613c105760405162461bcd60e51b81526004018080602001828103825260218152602001806158776021913960400191505060405180910390fd5b6000828481613c1b57fe5b05949350505050565b604080516001600160601b0319606096871b81166020808401919091529590961b9095166034860152600292830b60e890811b60488701529190920b901b604b8401528051602e818503018152604e9093019052815191012090565b6000613cd58261013260009054906101000a90046001600160a01b03166001600160a01b031663543ce73a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561363157600080fd5b121561340d5760405162461bcd60e51b81526004016104449061528b565b80600f81900b811461088a5760405162461bcd60e51b81526004018080602001828103825260278152602001806157e16027913960400191505060405180910390fd5b6000613d4130613d47565b15905090565b3b151590565b600054610100900460ff1680613d665750613d66613d36565b80613d74575060005460ff16155b613daf5760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff16158015613dda576000805460ff1961ff0019909116610100171660011790555b613de2614232565b801561340d576000805461ff001916905550565b600054610100900460ff1680613e0f5750613e0f613d36565b80613e1d575060005460ff16155b613e585760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff16158015613e83576000805460ff1961ff0019909116610100171660011790555b613e8b6142d7565b613de26143c6565b6000808260600151600014613f52576101345460408051608080820183526001600160a01b03898116835288811660208401526060808901518486015291880151918301919091529151631393a46960e01b81529190921691631393a46991613eff91906004016155c8565b60206040518083038186803b158015613f1757600080fd5b505afa158015613f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4f9190614a50565b90505b610136546060840151608085015160408601516001600160a01b03909316926389f9217792899289928790613f86906134c6565b6040518763ffffffff1660e01b8152600401613fa796959493929190615042565b600060405180830381600087803b158015613fc157600080fd5b505af1158015613fd5573d6000803e3d6000fd5b509293505050505b9392505050565b60006138ee826001600160801b0316613cf3565b60fd80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fa4388ecc389b1390354ae0c65a856c0d7dd4fb648419f5d3ac0b99e38f46fd119181900360200190a150565b600060143610801590614063575061406333610878565b15614077575060131936013560601c610865565b503390565b60008080600019858709868602925082811090839003039050806140b257600084116140a757600080fd5b508290049050613fdd565b8084116140be57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b61013354604051633ffd130360e01b81526000916001600160a01b031690633ffd13039061415f90869086906004016150b0565b60206040518083038186803b15801561417757600080fd5b505afa15801561418b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133319190614a50565b6000600160ff1b82136141d45760405162461bcd60e51b81526004016104449061532f565b5060000390565b60008082121561350e576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b600054610100900460ff168061424b575061424b613d36565b80614259575060005460ff16155b6142945760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff161580156142bf576000805460ff1961ff0019909116610100171660011790555b60018055801561340d576000805461ff001916905550565b600054610100900460ff16806142f057506142f0613d36565b806142fe575060005460ff16155b6143395760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff16158015614364576000805460ff1961ff0019909116610100171660011790555b61436c614463565b60006143766131e7565b606580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020615898833981519152908290a350801561340d576000805461ff001916905550565b600054610100900460ff16806143df57506143df613d36565b806143ed575060005460ff16155b6144285760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff16158015614453576000805460ff1961ff0019909116610100171660011790555b61445b6144f4565b613de2614594565b600054610100900460ff168061447c575061447c613d36565b8061448a575060005460ff16155b6144c55760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff161580156144f0576000805460ff1961ff0019909116610100171660011790555b613de25b600054610100900460ff168061450d575061450d613d36565b8061451b575060005460ff16155b6145565760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff16158015613de2576000805460ff1961ff001990911661010017166001179055801561340d576000805461ff001916905550565b600054610100900460ff16806145ad57506145ad613d36565b806145bb575060005460ff16155b6145f65760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff16158015614621576000805460ff1961ff0019909116610100171660011790555b6099805460ff19169055801561340d576000805461ff001916905550565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b6040518061014001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060020b81526020016000151581525090565b803561088a81615748565b803561088a8161575d565b805161088a8161575d565b60008083601f840112614712578182fd5b5081356001600160401b03811115614728578182fd5b60208301915083602082850101111561474057600080fd5b9250929050565b805161088a8161576b565b805161088a8161577a565b60006020828403121561476e578081fd5b813561333181615748565b60006020828403121561478a578081fd5b815161333181615748565b600080604083850312156147a7578081fd5b82356147b281615748565b915060208301356147c281615748565b809150509250929050565b60008060008060008060c087890312156147e5578182fd5b86356147f081615748565b9550602087013561480081615748565b9450604087013561481081615748565b9350606087013561482081615748565b9250608087013561483081615748565b915060a087013561484081615748565b809150509295509295509295565b60008060008060608587031215614863578182fd5b843561486e81615748565b9350602085013561487e81615748565b925060408501356001600160401b0380821115614899578384fd5b818701915087601f8301126148ac578384fd5b8135818111156148ba578485fd5b88602080830285010111156148cd578485fd5b95989497505060200194505050565b600060208083850312156148ee578182fd5b82516001600160401b03811115614903578283fd5b8301601f81018513614913578283fd5b80516149266149218261572b565b615708565b8181528381019083850185840285018601891015614942578687fd5b8694505b8385101561496d57805161495981615748565b835260019490940193918501918501614946565b50979650505050505050565b6000602080838503121561498b578182fd5b82516001600160401b038111156149a0578283fd5b8301601f810185136149b0578283fd5b80516149be6149218261572b565b81815283810190838501858402850186018910156149da578687fd5b8694505b8385101561496d5780518352600194909401939185019185016149de565b600060208284031215614a0d578081fd5b81356133318161575d565b600060208284031215614a29578081fd5b81516133318161575d565b600060208284031215614a45578081fd5b81356133318161576b565b600060208284031215614a61578081fd5b5051919050565b60008060008060608587031215614a7d578182fd5b843593506020850135925060408501356001600160401b03811115614aa0578283fd5b614aac87828801614701565b95989497509550505050565b600080600060608486031215614acc578081fd5b8351925060208401519150604084015190509250925092565b60006101208284031215614af7578081fd5b50919050565b600060808284031215614b0e578081fd5b604051608081016001600160401b0381118282101715614b2a57fe5b80604052508251815260208301516020820152604083015160408201526060830151614b558161577a565b60608201529392505050565b600060a08284031215614af7578081fd5b600060408284031215614b83578081fd5b604080519081016001600160401b0381118282101715614b9f57fe5b604052825181526020928301519281019290925250919050565b600060608284031215614bca578081fd5b604051606081016001600160401b0381118282101715614be657fe5b80604052508251815260208301516020820152604083015160408201528091505092915050565b6000610120808385031215614c20578182fd5b614c2981615708565b9050614c3483614752565b8152614c4260208401614747565b6020820152614c5360408401614747565b6040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b600060408284031215614cb1578081fd5b604080519081016001600160401b0381118282101715614ccd57fe5b6040528235614cdb81615748565b81526020830135614ceb81615748565b60208201529392505050565b6000610100808385031215614d0a578182fd5b604051908101906001600160401b0382118183101715614d2657fe5b81604052614d33846146e0565b8152614d41602085016146eb565b6020820152614d52604085016146eb565b6040820152606084013560608201526080840135608082015260a084013560a0820152614d8160c085016146e0565b60c082015260e084013560e0820152809250505092915050565b600060e08284031215614af7578081fd5b600060a08284031215614dbd578081fd5b60405160a081016001600160401b0381118282101715614dd957fe5b806040525082518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b600060a08284031215614e25578081fd5b60405160a081016001600160401b0381118282101715614e4157fe5b6040528235614e4f81615748565b81526020830135614e5f81615748565b60208201526040830135614e7281615748565b60408201526060830135614e858161578f565b60608201526080928301359281019290925250919050565b6000610140808385031215614eb0578182fd5b614eb981615708565b9050825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100614f13818501614747565b90820152610120614f258482016146f6565b908201529392505050565b600060208284031215614f41578081fd5b81356133318161577a565b600060208284031215614f5d578081fd5b81516133318161578f565b600060208284031215614f79578081fd5b815160ff81168114613331578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0384811682528316602080830191909152606060408301819052835190830181905260009184810191608085019190845b8181101561500b57845184529382019392820192600101614fef565b509198975050505050505050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b03968716815294909516602085015260408401929092526060830152608082015260a081019190915260c00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392909216825263ffffffff16602082015260400190565b6001600160a01b0392909216825262ffffff16602082015260400190565b901515815260200190565b90815260200190565b9283526020830191909152604082015260600190565b600296870b81529490950b602085015260408401929092526060830152600f0b608082015260a081019190915260c00190565b958652602086019490945260408501929092526060840152608083015260a082015260c00190565b6000602080835283518082850152825b8181101561517f57858101830151858201604001528201615163565b818111156151905783604083870101525b50601f01601f1916929092016040019392505050565b60208082526008908201526708690bea2889c62760c31b604082015260600190565b60208082526006908201526521a42fa2a0ab60d11b604082015260600190565b60208082526005908201526443485f4f4560d81b604082015260600190565b60208082526007908201526643485f544d525360c81b604082015260600190565b60208082526007908201526643485f41424e4360c81b604082015260600190565b60208082526007908201526643485f55414e4360c81b604082015260600190565b60208082526007908201526610d217d513549360ca1b604082015260600190565b60208082526008908201526743485f4e4546434960c01b604082015260600190565b60208082526007908201526643485f51414e4360c81b604082015260600190565b60208082526006908201526543485f46305360d01b604082015260600190565b60208082526007908201526643485f43434e4360c81b604082015260600190565b60208082526006908201526543485f414e4360d01b604082015260600190565b6020808252601c908201527b506572704d6174683a20696e76657273696f6e206f766572666c6f7760201b604082015260600190565b60208082526007908201526643485f4f424e4360c81b604082015260600190565b60208082526006908201526521a42fa727a160d11b604082015260600190565b60208082526005908201526421a42faa2360d91b604082015260600190565b60208082526005908201526443485f544560d81b604082015260600190565b60208082526007908201526643485f56414e4360c81b604082015260600190565b60208082526007908201526610d217d513149360ca1b604082015260600190565b60208082526007908201526643485f54424e4560c81b604082015260600190565b60208082526007908201526643485f54514e4560c81b604082015260600190565b60208082526007908201526643485f544c525360c81b604082015260600190565b6020808252600b908201526a043485f43414c57524654560ac1b604082015260600190565b60208082526007908201526643485f4e45584f60c81b604082015260600190565b60208082526006908201526543485f50534360d01b604082015260600190565b60208082526006908201526521a42fa829ad60d11b604082015260600190565b60208082526006908201526543485f4e454f60d01b604082015260600190565b60006101008201905060018060a01b03808451168352806020850151166020840152506040830151604083015260608301516060830152608083015160020b608083015260a083015160020b60a083015260c0830151805160c0840152602081015160e08401525092915050565b8151815260208083015190820152604080830151908201526060918201519181019190915260800190565b81516001600160a01b03908116825260208084015190911690820152604080830151908201526060918201519181019190915260800190565b81516001600160a01b03908116825260208084015190911690820152604080830151600290810b9183019190915260608084015190910b908201526080918201516001600160801b03169181019190915260a00190565b81518152602080830151908201526040918201519181019190915260600190565b81516001600160a01b03908116825260208084015182169083015260408084015115159083015260608084015115159083015260808084015115159083015260a0838101519083015260c092830151169181019190915260e00190565b918252602082015260400190565b938452602084019290925260408301526001600160a01b0316606082015260800190565b6040518181016001600160401b038111828210171561572357fe5b604052919050565b60006001600160401b0382111561573e57fe5b5060209081020190565b6001600160a01b038116811461340d57600080fd5b801515811461340d57600080fd5b8060020b811461340d57600080fd5b6001600160801b038116811461340d57600080fd5b62ffffff8116811461340d57600080fdfe5265656e7472616e637947756172643a207265656e7472616e742063616c6c00968bc4f738eae0486dc6736c4b427dbafa4acfdf6eaf223337791ddeb3a5624753616665436173743a2076616c756520646f65736e27742066697420696e2031323820626974735369676e6564536166654d6174683a206164646974696f6e206f766572666c6f7709a07769667a46c2b89124a4d731c76fb5203061073aec16319ba9c6a79a3248496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206469766973696f6e206f766572666c6f778be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77cb47d8bf351d355bdd5497973533eada41777b4509f2585a62ae246336ebaa9453616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220aadaa274c4e7cd094f43136ff3a85aad9a2962c1cebb4b6ecd821bc14c0bee2164736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101745760003560e01c8062aa9a891461017957806313af4035146101a35780633f4ba83a146101b8578063486ff0cd146101c05780634a64d67d146101d5578063572b6c05146101ea5780635ae809511461020a5780635c975abb1461022a5780636896fabf146102325780636c8381f81461023a578063715018a61461024257806380a983321461024a5780638456cb591461025d57806386b9d81f146102655780638d928af8146102785780638da5cb5b14610280578063aa2a829414610288578063b081983b14610290578063b248c4ef14610298578063b6b1b6c3146102a0578063bc5920ba146102b3578063c35eb28c146102bb578063cc2a9a5b146102db578063cc3606dc146102ee578063cde109b614610301578063ce1b815f14610321578063d348799714610329578063da7422281461033c578063f807cd221461034f578063fa461e3314610357578063fbfbd1691461036a575b600080fd5b61018c610187366004614b61565b61037d565b60405161019a9291906156d6565b60405180910390f35b6101b66101b136600461475d565b610686565b005b6101b66107e1565b6101c8610848565b60405161019a9190615153565b6101dd610868565b60405161019a9190614f89565b6101fd6101f836600461475d565b610878565b60405161019a91906150ce565b61021d61021836600461475d565b61088f565b60405161019a91906150d9565b6101fd610a76565b6101dd610a7f565b6101dd610a8f565b6101b6610a9e565b6101b661025836600461484e565b610b3f565b6101b6610c22565b6101b6610273366004614795565b610c87565b6101dd611108565b6101dd611118565b6101dd611127565b6101dd611137565b6101dd611147565b61018c6102ae366004614cf7565b611157565b6101b661141c565b6102ce6102c9366004614ae5565b611508565b60405161019a919061559d565b6101b66102e93660046147cd565b611dbe565b6101b66102fc366004614795565b6121c3565b61031461030f366004614d9b565b6122f9565b60405161019a9190615658565b6101dd612826565b6101b6610337366004614a68565b612835565b6101b661034a36600461475d565b612ab9565b6101dd612b84565b6101b6610365366004614a68565b612b94565b6101b661037836600461475d565b612db9565b600080610388610a76565b156103cd576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415610413576040805162461bcd60e51b815260206004820152601f60248201526000805160206157a1833981519152604482015290519081900360640190fd5b60026001556060830135806104266131e3565b111561044d5760405162461bcd60e51b8152600401610444906153c5565b60405180910390fd5b60006104576131e7565b610134549091506001600160a01b0316631e81ac338261047a602089018961475d565b6040518363ffffffff1660e01b8152600401610497929190614f9d565b6040805180830381600087803b1580156104b057600080fd5b505af11580156104c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e89190614b72565b50600061054c6040518060600160405280846001600160a01b0316815260200188600001602081019061051b919061475d565b6001600160a01b0316815260200188602001602081019061053c919061475d565b6001600160a01b031690526131f6565b9050600080826040015112610562576000610565565b60015b9050600082610120015161057d578760400135610607565b6101325460408051633a14199b60e11b81529051610607926001600160a01b0316916374283336916004808301926020929190829003018186803b1580156105c457600080fd5b505afa1580156105d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fc9190614f4c565b60408a01359061331c565b90506106446040518060a001604052808415158152602001841515815260200185602001518152602001856000015181526020018381525061333a565b60808801351561066c5760405160808901359060008051602061582983398151915290600090a25b505080516020909101516001805590969095509350505050565b61068e6131e7565b6001600160a01b031661069f611118565b6001600160a01b0316146106e3576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610727576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6065546001600160a01b0382811691161415610773576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6066546001600160a01b03828116911614156107bf576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b606680546001600160a01b0319166001600160a01b0392909216919091179055565b6107e96131e7565b6001600160a01b03166107fa611118565b6001600160a01b03161461083e576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610846613410565b565b6040805180820190915260058152640322e302e360dc1b60208201525b90565b610130546001600160a01b031690565b60fd546001600160a01b038281169116145b919050565b610134546040516380f57f1160e01b815260009182916001600160a01b03909116906380f57f11906108c5908690600401614f89565b60206040518083038186803b1580156108dd57600080fd5b505afa1580156108f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109159190614a50565b6101365460405163bba85bcf60e01b8152919250600091829182916001600160a01b039091169063bba85bcf90610950908990600401614f89565b60606040518083038186803b15801561096857600080fd5b505afa15801561097c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a09190614ab8565b6101335460405163f8b2cb4f60e01b81529396509194509250600091610a41916001600160a01b03169063f8b2cb4f906109de908b90600401614f89565b60206040518083038186803b1580156109f657600080fd5b505afa158015610a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2e9190614a50565b61013154600160a01b900460ff166134b0565b9050610a6b610a4f836134c6565b610a658581610a5e898b613512565b8690613577565b90613577565b979650505050505050565b60995460ff1690565b610136546001600160a01b031690565b6066546001600160a01b031690565b610aa66131e7565b6001600160a01b0316610ab7611118565b6001600160a01b031614610afb576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6065546040516000916001600160a01b031690600080516020615898833981519152908390a3606580546001600160a01b0319908116909155606680549091169055565b610b47610a76565b15610b8c576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415610bd2576040805162461bcd60e51b815260206004820152601f60248201526000805160206157a1833981519152604482015290519081900360640190fd5b6002600181905550610c1884848484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135dc92505050565b5050600180555050565b610c2a6131e7565b6001600160a01b0316610c3b611118565b6001600160a01b031614610c7f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610846613837565b610c8f610a76565b15610cd4576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415610d1a576040805162461bcd60e51b815260206004820152601f60248201526000805160206157a1833981519152604482015290519081900360640190fd5b60026001556101365460405163659e3dc760e11b81526001600160a01b039091169063cb3c7b8e90610d50908590600401614f89565b60206040518083038186803b158015610d6857600080fd5b505afa158015610d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da09190614a18565b15610dbd5760405162461bcd60e51b81526004016104449061550f565b6101365460405163f75c266d60e01b81526001600160a01b039091169063f75c266d90610dee908590600401614f89565b60206040518083038186803b158015610e0657600080fd5b505afa158015610e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3e9190614a50565b610e478361088f565b12610e645760405162461bcd60e51b8152600401610444906151c8565b61013454604051631e81ac3360e01b81526001600160a01b0390911690631e81ac3390610e979085908590600401614f9d565b6040805180830381600087803b158015610eb057600080fd5b505af1158015610ec4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee89190614b72565b50604080516060810182526001600160a01b038085168252831660208201526000918101829052610f18906131f6565b90506000610fb961013260009054906101000a90046001600160a01b03166001600160a01b031663fedf924b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f6e57600080fd5b505afa158015610f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa69190614f4c565b610fb384606001516138ba565b9061331c565b610136549091506001600160a01b0316633772470285610fd8846138e3565b6040518363ffffffff1660e01b8152600401610ff5929190615078565b600060405180830381600087803b15801561100f57600080fd5b505af1158015611023573d6000803e3d6000fd5b5050505060006110316131e7565b610136549091506001600160a01b0316633772470282611050856134c6565b6040518363ffffffff1660e01b815260040161106d929190615078565b600060405180830381600087803b15801561108757600080fd5b505af115801561109b573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167fd9aced30440caca81570436bc942f816cfd95a3f08f700a2aeb6334c7cb5b4976110e186606001516138ba565b86516040516110f5929190889088906156e4565b60405180910390a3505060018055505050565b610133546001600160a01b031690565b6065546001600160a01b031690565b610132546001600160a01b031690565b610131546001600160a01b031690565b610135546001600160a01b031690565b600080611162610a76565b156111a7576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600260015414156111ed576040805162461bcd60e51b815260206004820152601f60248201526000805160206157a1833981519152604482015290519081900360640190fd5b600260015560a0830151806112006131e3565b111561121e5760405162461bcd60e51b8152600401610444906153c5565b60006112286131e7565b610136548651604051633f1cdc8560e21b81529293506001600160a01b039091169163fc7372149161125f91859190600401614f9d565b600060405180830381600087803b15801561127957600080fd5b505af115801561128d573d6000803e3d6000fd5b5050610134548751604051631e81ac3360e01b81526001600160a01b039092169350631e81ac3392506112c591859190600401614f9d565b6040805180830381600087803b1580156112de57600080fd5b505af11580156112f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113169190614b72565b506000611394604051806101000160405280846001600160a01b0316815260200188600001516001600160a01b03168152602001886020015115158152602001886040015115158152602001600015158152602001886060015181526020018860c001516001600160a01b03168152602001600015158152506138f7565b90506113dd6040518060a001604052808860200151151581526020018860400151151581526020018360200151815260200183600001518152602001886080015181525061333a565b60e0860151156114045760e086015160405160008051602061582983398151915290600090a25b80516020909101516001805590969095509350505050565b6066546001600160a01b0316611461576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b6114696131e7565b6066546001600160a01b039081169116146114b4576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6066546065546040516001600160a01b03928316929091169060008051602061589883398151915290600090a360668054606580546001600160a01b03199081166001600160a01b03841617909155169055565b61151061463f565b611518610a76565b1561155d576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600260015414156115a3576040805162461bcd60e51b815260206004820152601f60248201526000805160206157a1833981519152604482015290519081900360640190fd5b6002600155610100820135806115b76131e3565b11156115d55760405162461bcd60e51b8152600401610444906153c5565b60006115df6131e7565b610136549091506001600160a01b031663fc73721482611602602088018861475d565b6040518363ffffffff1660e01b815260040161161f929190614f9d565b600060405180830381600087803b15801561163957600080fd5b505af115801561164d573d6000803e3d6000fd5b505061013454600092506001600160a01b03169050631e81ac3383611675602089018961475d565b6040518363ffffffff1660e01b8152600401611692929190614f9d565b6040805180830381600087803b1580156116ab57600080fd5b505af11580156116bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e39190614b72565b610135546040805160e081019091526001600160a01b0385811682529293506000929091169063e8ab2fb390602080820190611721908b018b61475d565b6001600160a01b0316815260200189602001358152602001896040013581526020018960600160208101906117569190614a34565b60020b815260200161176e60a08b0160808c01614a34565b60020b8152602001858152506040518263ffffffff1660e01b8152600401611796919061552f565b608060405180830381600087803b1580156117b057600080fd5b505af11580156117c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e89190614afd565b90508560a0013581600001511015801561180a57508560c00135816020015110155b6118265760405162461bcd60e51b8152600401610444906154cf565b611837610100870160e088016149fc565b15611c5357805160208201519015159015158114156118685760405162461bcd60e51b815260040161044490615489565b610136546000906001600160a01b0316636332fef68661188b60208c018c61475d565b6040518363ffffffff1660e01b81526004016118a8929190614f9d565b60606040518083038186803b1580156118c057600080fd5b505afa1580156118d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f89190614bb9565b9050600080831561195e57845161190e906134c6565b8351121561192e5760405162461bcd60e51b815260040161044490615426565b8451611939906138e3565b83516020850151919350611957916119519085613ac3565b90613b6c565b90506119b6565b61196b85602001516134c6565b8360200151121561198e5760405162461bcd60e51b815260040161044490615447565b61199b85602001516138e3565b602084015184519192506119b3916119519084613ac3565b91505b610135546001600160a01b031663b0c04174611a04896119d960208f018f61475d565b8e60600160208101906119ec9190614a34565b8f60800160208101906119ff9190614a34565b613c24565b84846040518463ffffffff1660e01b8152600401611a24939291906150e2565b600060405180830381600087803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b5050610136546001600160a01b0316915063ea45a8f9905088611a7860208e018e61475d565b85856040518563ffffffff1660e01b8152600401611a999493929190615019565b600060405180830381600087803b158015611ab357600080fd5b505af1158015611ac7573d6000803e3d6000fd5b505061013654600092506001600160a01b0316905063d50d01b789611aef60208f018f61475d565b6040518363ffffffff1660e01b8152600401611b0c929190614f9d565b60206040518083038186803b158015611b2457600080fd5b505afa158015611b38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5c9190614a50565b610134549091506000906001600160a01b03166399e4a771611b8160208f018f61475d565b60006040518363ffffffff1660e01b8152600401611ba0929190615091565b60206040518083038186803b158015611bb857600080fd5b505afa158015611bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf09190614779565b6001600160a01b03169050611c0860208d018d61475d565b6001600160a01b0316896001600160a01b03166000805160206157c18339815191528686600087600088604051611c449695949392919061512b565b60405180910390a35050505050505b6101365460408201516001600160a01b03909116906337724702908590611c79906134c6565b6040518363ffffffff1660e01b8152600401611c96929190615078565b600060405180830381600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b50505050611cd183613c80565b610130546001600160a01b0316611ceb602088018861475d565b6001600160a01b039081169085166000805160206158df833981519152611d1860808b0160608c01614a34565b611d2860a08c0160808d01614a34565b8651611d33906134c6565b611d4088602001516134c6565b611d5689606001516001600160801b0316613cf3565b8960400151604051611d6d969594939291906150f8565b60405180910390a4604051806080016040528082600001518152602001826020015181526020018260400151815260200182606001516001600160801b031681525094505050505060018055919050565b600054610100900460ff1680611dd75750611dd7613d36565b80611de5575060005460ff16155b611e205760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff16158015611e4b576000805460ff1961ff0019909116610100171660011790555b611e5d866001600160a01b0316613d47565b611e795760405162461bcd60e51b8152600401610444906153e4565b611e8b856001600160a01b0316613d47565b611ea75760405162461bcd60e51b8152600401610444906152ad565b846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611ee057600080fd5b505afa158015611ef4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f189190614f68565b60ff16601214611f3a5760405162461bcd60e51b8152600401610444906151a6565b611f4c846001600160a01b0316613d47565b611f685760405162461bcd60e51b815260040161044490615249565b611f7a876001600160a01b0316613d47565b611f965760405162461bcd60e51b8152600401610444906152ee565b611fa8826001600160a01b0316613d47565b611fc45760405162461bcd60e51b815260040161044490615228565b611fd6836001600160a01b0316613d47565b611ff25760405162461bcd60e51b81526004016104449061530f565b6000836001600160a01b031663b248c4ef6040518163ffffffff1660e01b815260040160206040518083038186803b15801561202d57600080fd5b505afa158015612041573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120659190614779565b9050612079816001600160a01b0316613d47565b6120955760405162461bcd60e51b815260040161044490615365565b61209d613d4d565b6120a5613df6565b61013280546001600160a01b03199081166001600160a01b038b811691909117909255610133805482168a84161790819055610130805483168a85161790556101318054831689851617905561013480548316888516179055610135805483168585161790556101368054909216868416179091556040805163313ce56760e01b81529051919092169163313ce567916004808301926020929190829003018186803b15801561215457600080fd5b505afa158015612168573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218c9190614f68565b61013160146101000a81548160ff021916908360ff1602179055505080156121ba576000805461ff00191690555b50505050505050565b6121cb610a76565b15612210576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415612256576040805162461bcd60e51b815260206004820152601f60248201526000805160206157a1833981519152604482015290519081900360640190fd5b6002600155610135546040516321b499f560e11b81526000916001600160a01b03169063436933ea9061228f9086908690600401614f9d565b60006040518083038186803b1580156122a757600080fd5b505afa1580156122bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122e39190810190614979565b90506122f08383836135dc565b50506001805550565b612301614667565b612309610a76565b1561234e576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415612394576040805162461bcd60e51b815260206004820152601f60248201526000805160206157a1833981519152604482015290519081900360640190fd5b600260015560c0820135806123a76131e3565b11156123c55760405162461bcd60e51b8152600401610444906153c5565b60006123cf6131e7565b610134549091506001600160a01b0316631e81ac33826123f2602088018861475d565b6040518363ffffffff1660e01b815260040161240f929190614f9d565b6040805180830381600087803b15801561242857600080fd5b505af115801561243c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124609190614b72565b50610135546040805160a081019091526001600160a01b0383811682526000921690635b778b9d9060208082019061249a908a018a61475d565b6001600160a01b031681526020018860200160208101906124bb9190614a34565b60020b81526020016124d360608a0160408b01614a34565b60020b81526020016124eb60808a0160608b01614f30565b6001600160801b03168152506040518263ffffffff1660e01b81526004016125139190615601565b60a060405180830381600087803b15801561252d57600080fd5b505af1158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614dac565b905060006125808361257a602089018961475d565b84613e93565b905085608001358260000151101580156125a257508560a00135826020015110155b6125be5760405162461bcd60e51b8152600401610444906154cf565b610130546001600160a01b03166125d8602088018861475d565b6001600160a01b039081169085166000805160206158df83398151915261260560408b0160208c01614a34565b61261560608c0160408d01614a34565b8751612620906138e3565b61262d89602001516138e3565b6126518e60600160208101906126439190614f30565b6001600160801b0316613fe4565b8a60400151604051612668969594939291906150f8565b60405180910390a4610136546000906001600160a01b031663d50d01b78561269360208b018b61475d565b6040518363ffffffff1660e01b81526004016126b0929190614f9d565b60206040518083038186803b1580156126c857600080fd5b505afa1580156126dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127009190614a50565b610134549091506000906001600160a01b03166399e4a77161272560208b018b61475d565b60006040518363ffffffff1660e01b8152600401612744929190615091565b60206040518083038186803b15801561275c57600080fd5b505afa158015612770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127949190614779565b6001600160a01b031690506127ac602089018961475d565b6001600160a01b0316856001600160a01b03166000805160206157c18339815191528660600151876080015160008789886040516127ef9695949392919061512b565b60405180910390a3505060408051606081018252835181526020808501519082015292810151908301525060018055949350505050565b60fd546001600160a01b031690565b610135546001600160a01b031633146128605760405162461bcd60e51b815260040161044490615386565b600061286e82840184614ca0565b9050841561299157600081602001516001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156128b557600080fd5b505afa1580156128c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ed9190614779565b602083015160405163a9059cbb60e01b81529192506001600160a01b0383169163a9059cbb91612921918a90600401615078565b602060405180830381600087803b15801561293b57600080fd5b505af115801561294f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129739190614a18565b61298f5760405162461bcd60e51b8152600401610444906153a6565b505b8315612ab257600081602001516001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156129d657600080fd5b505afa1580156129ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0e9190614779565b602083015160405163a9059cbb60e01b81529192506001600160a01b0383169163a9059cbb91612a42918990600401615078565b602060405180830381600087803b158015612a5c57600080fd5b505af1158015612a70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a949190614a18565b612ab05760405162461bcd60e51b8152600401610444906153a6565b505b5050505050565b612ac16131e7565b6001600160a01b0316612ad2611118565b6001600160a01b031614612b16576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b612b28816001600160a01b0316613d47565b612b445760405162461bcd60e51b81526004016104449061530f565b612b4d81613ff8565b6040516001600160a01b038216907f871264f4293af7d2865ae7eae628b228f4991c57cb45b39c99f0b774ebe2901890600090a250565b610134546001600160a01b031690565b610134546001600160a01b03163314612bbf5760405162461bcd60e51b8152600401610444906151e8565b600084138015612bcf5750600083125b80612be55750600084128015612be55750600083135b612c015760405162461bcd60e51b8152600401610444906152ce565b6000612c0f82840184614e14565b6040810151909150600080808813612c9857826001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015612c5a57600080fd5b505afa158015612c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c929190614779565b87612d0b565b826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015612cd157600080fd5b505afa158015612ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d099190614779565b885b91509150816001600160a01b031663a9059cbb8560400151836040518363ffffffff1660e01b8152600401612d41929190615078565b602060405180830381600087803b158015612d5b57600080fd5b505af1158015612d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d939190614a18565b612daf5760405162461bcd60e51b8152600401610444906153a6565b5050505050505050565b610136546040516357ba739b60e11b81526000916001600160a01b03169063af74e73690612deb908590600401614f89565b60006040518083038186803b158015612e0357600080fd5b505afa158015612e17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e3f91908101906148dc565b805190915060005b818110156131dd576101355483516000916001600160a01b03169063436933ea908790879086908110612e7657fe5b60200260200101516040518363ffffffff1660e01b8152600401612e9b929190614f9d565b60006040518083038186803b158015612eb357600080fd5b505afa158015612ec7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612eef9190810190614979565b805190915060005b81811015613135576101355483516000916001600160a01b03169063acf7182790869085908110612f2457fe5b60200260200101516040518263ffffffff1660e01b8152600401612f4891906150d9565b6101206040518083038186803b158015612f6157600080fd5b505afa158015612f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f999190614c0d565b9050600061013560009054906101000a90046001600160a01b03166001600160a01b0316635b778b9d6040518060a001604052808c6001600160a01b031681526020018b8a81518110612fe857fe5b60200260200101516001600160a01b03168152602001856020015160020b8152602001856040015160020b815260200160006001600160801b03168152506040518263ffffffff1660e01b81526004016130429190615601565b60a060405180830381600087803b15801561305c57600080fd5b505af1158015613070573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130949190614dac565b90506130b4898988815181106130a657fe5b602002602001015183613e93565b506101305488516001600160a01b03909116908990889081106130d357fe5b60200260200101516001600160a01b03168a6001600160a01b03166000805160206158df8339815191528560200151866040015160008060008960400151604051613123969594939291906150f8565b60405180910390a45050600101612ef7565b506101345485516001600160a01b0390911690631e81ac3390889088908790811061315c57fe5b60200260200101516040518363ffffffff1660e01b8152600401613181929190614f9d565b6040805180830381600087803b15801561319a57600080fd5b505af11580156131ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d29190614b72565b505050600101612e47565b50505050565b4290565b60006131f161404c565b905090565b6131fe614688565b610136548251602084015160405163165c4e2960e31b81526000936001600160a01b03169263b2e271489261323592600401614f9d565b60206040518083038186803b15801561324d57600080fd5b505afa158015613261573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132859190614a50565b9050806132a45760405162461bcd60e51b8152600401610444906154ef565b604080516101008101825284516001600160a01b039081168252602080870151909116908201526000831391810182905260608101829052600160808201526133149060a081016132f4856138ba565b81526040808801516001600160a01b0316602083015260019101526138f7565b949350505050565b6000613331838362ffffff16620f424061407c565b90505b92915050565b60808101516133485761340d565b8051156133b357806020015115613386578060800151816040015110156133815760405162461bcd60e51b815260040161044490615468565b6133ae565b8060800151816060015111156133ae5760405162461bcd60e51b815260040161044490615207565b61340d565b8060200151156133e5578060800151816060015110156133ae5760405162461bcd60e51b815260040161044490615405565b80608001518160400151111561340d5760405162461bcd60e51b81526004016104449061526a565b50565b613418610a76565b613460576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6099805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6134936131e7565b604080516001600160a01b039092168252519081900360200190a1565b60006133318360ff601285900316600a0a613ac3565b60006001600160ff1b0382111561350e5760405162461bcd60e51b81526004018080602001828103825260288152602001806158ff6028913960400191505060405180910390fd5b5090565b60008183038183128015906135275750838113155b8061353c575060008312801561353c57508381135b6133315760405162461bcd60e51b81526004018080602001828103825260248152602001806159276024913960400191505060405180910390fd5b600082820181831280159061358c5750838112155b806135a157506000831280156135a157508381125b6133315760405162461bcd60e51b81526004018080602001828103825260218152602001806158086021913960400191505060405180910390fd5b600061366e8461013260009054906101000a90046001600160a01b03166001600160a01b031663a85494026040518163ffffffff1660e01b815260040160206040518083038186803b15801561363157600080fd5b505afa158015613645573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136699190614f4c565b61412b565b128061370157506101365460405163f75c266d60e01b81526001600160a01b039091169063f75c266d906136a6908690600401614f89565b60206040518083038186803b1580156136be57600080fd5b505afa1580156136d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136f69190614a50565b6136ff8461088f565b125b61371d5760405162461bcd60e51b8152600401610444906154ae565b61013454604051631e81ac3360e01b81526001600160a01b0390911690631e81ac33906137509086908690600401614f9d565b6040805180830381600087803b15801561376957600080fd5b505af115801561377d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137a19190614b72565b506101355460405163398dbcfd60e01b81526000916001600160a01b03169063398dbcfd906137d890879087908790600401614fb7565b60a060405180830381600087803b1580156137f257600080fd5b505af1158015613806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061382a9190614dac565b9050612ab2848483613e93565b61383f610a76565b15613884576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6099805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586134936131e7565b6000808212156138da576138d56138d0836141af565b6141db565b613334565b613334826141db565b60006138ee826134c6565b60000392915050565b6138ff614688565b610134546040805160e08101825284516001600160a01b0390811682526020808701518216908301528583015115158284015260608087015115159083015260808087015115159083015260a0808701519083015260c08087015182169083015291516310c5328760e21b81526000939290921691634314ca1c9161398691600401615679565b61014060405180830381600087803b1580156139a157600080fd5b505af11580156139b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d99190614e9d565b90508260e001516139ef5782516139ef90613c80565b82602001516001600160a01b031683600001516001600160a01b03166000805160206157c18339815191528360400151846060015185608001518660a001518760c001518860e00151604051613a4a9695949392919061512b565b60405180910390a3610136548351602085015160405163fa8e30af60e01b81526001600160a01b039093169263fa8e30af92613a8a929091600401614f9d565b600060405180830381600087803b158015613aa457600080fd5b505af1158015613ab8573d6000803e3d6000fd5b509295945050505050565b600082613ad257506000613334565b82600019148015613ae65750600160ff1b82145b15613b225760405162461bcd60e51b81526004018080602001828103825260278152602001806158b86027913960400191505060405180910390fd5b82820282848281613b2f57fe5b05146133315760405162461bcd60e51b81526004018080602001828103825260278152602001806158b86027913960400191505060405180910390fd5b600081613bc0576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b81600019148015613bd45750600160ff1b83145b15613c105760405162461bcd60e51b81526004018080602001828103825260218152602001806158776021913960400191505060405180910390fd5b6000828481613c1b57fe5b05949350505050565b604080516001600160601b0319606096871b81166020808401919091529590961b9095166034860152600292830b60e890811b60488701529190920b901b604b8401528051602e818503018152604e9093019052815191012090565b6000613cd58261013260009054906101000a90046001600160a01b03166001600160a01b031663543ce73a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561363157600080fd5b121561340d5760405162461bcd60e51b81526004016104449061528b565b80600f81900b811461088a5760405162461bcd60e51b81526004018080602001828103825260278152602001806157e16027913960400191505060405180910390fd5b6000613d4130613d47565b15905090565b3b151590565b600054610100900460ff1680613d665750613d66613d36565b80613d74575060005460ff16155b613daf5760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff16158015613dda576000805460ff1961ff0019909116610100171660011790555b613de2614232565b801561340d576000805461ff001916905550565b600054610100900460ff1680613e0f5750613e0f613d36565b80613e1d575060005460ff16155b613e585760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff16158015613e83576000805460ff1961ff0019909116610100171660011790555b613e8b6142d7565b613de26143c6565b6000808260600151600014613f52576101345460408051608080820183526001600160a01b03898116835288811660208401526060808901518486015291880151918301919091529151631393a46960e01b81529190921691631393a46991613eff91906004016155c8565b60206040518083038186803b158015613f1757600080fd5b505afa158015613f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4f9190614a50565b90505b610136546060840151608085015160408601516001600160a01b03909316926389f9217792899289928790613f86906134c6565b6040518763ffffffff1660e01b8152600401613fa796959493929190615042565b600060405180830381600087803b158015613fc157600080fd5b505af1158015613fd5573d6000803e3d6000fd5b509293505050505b9392505050565b60006138ee826001600160801b0316613cf3565b60fd80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fa4388ecc389b1390354ae0c65a856c0d7dd4fb648419f5d3ac0b99e38f46fd119181900360200190a150565b600060143610801590614063575061406333610878565b15614077575060131936013560601c610865565b503390565b60008080600019858709868602925082811090839003039050806140b257600084116140a757600080fd5b508290049050613fdd565b8084116140be57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b61013354604051633ffd130360e01b81526000916001600160a01b031690633ffd13039061415f90869086906004016150b0565b60206040518083038186803b15801561417757600080fd5b505afa15801561418b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133319190614a50565b6000600160ff1b82136141d45760405162461bcd60e51b81526004016104449061532f565b5060000390565b60008082121561350e576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b600054610100900460ff168061424b575061424b613d36565b80614259575060005460ff16155b6142945760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff161580156142bf576000805460ff1961ff0019909116610100171660011790555b60018055801561340d576000805461ff001916905550565b600054610100900460ff16806142f057506142f0613d36565b806142fe575060005460ff16155b6143395760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff16158015614364576000805460ff1961ff0019909116610100171660011790555b61436c614463565b60006143766131e7565b606580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020615898833981519152908290a350801561340d576000805461ff001916905550565b600054610100900460ff16806143df57506143df613d36565b806143ed575060005460ff16155b6144285760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff16158015614453576000805460ff1961ff0019909116610100171660011790555b61445b6144f4565b613de2614594565b600054610100900460ff168061447c575061447c613d36565b8061448a575060005460ff16155b6144c55760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff161580156144f0576000805460ff1961ff0019909116610100171660011790555b613de25b600054610100900460ff168061450d575061450d613d36565b8061451b575060005460ff16155b6145565760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff16158015613de2576000805460ff1961ff001990911661010017166001179055801561340d576000805461ff001916905550565b600054610100900460ff16806145ad57506145ad613d36565b806145bb575060005460ff16155b6145f65760405162461bcd60e51b815260040180806020018281038252602e815260200180615849602e913960400191505060405180910390fd5b600054610100900460ff16158015614621576000805460ff1961ff0019909116610100171660011790555b6099805460ff19169055801561340d576000805461ff001916905550565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b6040518061014001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060020b81526020016000151581525090565b803561088a81615748565b803561088a8161575d565b805161088a8161575d565b60008083601f840112614712578182fd5b5081356001600160401b03811115614728578182fd5b60208301915083602082850101111561474057600080fd5b9250929050565b805161088a8161576b565b805161088a8161577a565b60006020828403121561476e578081fd5b813561333181615748565b60006020828403121561478a578081fd5b815161333181615748565b600080604083850312156147a7578081fd5b82356147b281615748565b915060208301356147c281615748565b809150509250929050565b60008060008060008060c087890312156147e5578182fd5b86356147f081615748565b9550602087013561480081615748565b9450604087013561481081615748565b9350606087013561482081615748565b9250608087013561483081615748565b915060a087013561484081615748565b809150509295509295509295565b60008060008060608587031215614863578182fd5b843561486e81615748565b9350602085013561487e81615748565b925060408501356001600160401b0380821115614899578384fd5b818701915087601f8301126148ac578384fd5b8135818111156148ba578485fd5b88602080830285010111156148cd578485fd5b95989497505060200194505050565b600060208083850312156148ee578182fd5b82516001600160401b03811115614903578283fd5b8301601f81018513614913578283fd5b80516149266149218261572b565b615708565b8181528381019083850185840285018601891015614942578687fd5b8694505b8385101561496d57805161495981615748565b835260019490940193918501918501614946565b50979650505050505050565b6000602080838503121561498b578182fd5b82516001600160401b038111156149a0578283fd5b8301601f810185136149b0578283fd5b80516149be6149218261572b565b81815283810190838501858402850186018910156149da578687fd5b8694505b8385101561496d5780518352600194909401939185019185016149de565b600060208284031215614a0d578081fd5b81356133318161575d565b600060208284031215614a29578081fd5b81516133318161575d565b600060208284031215614a45578081fd5b81356133318161576b565b600060208284031215614a61578081fd5b5051919050565b60008060008060608587031215614a7d578182fd5b843593506020850135925060408501356001600160401b03811115614aa0578283fd5b614aac87828801614701565b95989497509550505050565b600080600060608486031215614acc578081fd5b8351925060208401519150604084015190509250925092565b60006101208284031215614af7578081fd5b50919050565b600060808284031215614b0e578081fd5b604051608081016001600160401b0381118282101715614b2a57fe5b80604052508251815260208301516020820152604083015160408201526060830151614b558161577a565b60608201529392505050565b600060a08284031215614af7578081fd5b600060408284031215614b83578081fd5b604080519081016001600160401b0381118282101715614b9f57fe5b604052825181526020928301519281019290925250919050565b600060608284031215614bca578081fd5b604051606081016001600160401b0381118282101715614be657fe5b80604052508251815260208301516020820152604083015160408201528091505092915050565b6000610120808385031215614c20578182fd5b614c2981615708565b9050614c3483614752565b8152614c4260208401614747565b6020820152614c5360408401614747565b6040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b600060408284031215614cb1578081fd5b604080519081016001600160401b0381118282101715614ccd57fe5b6040528235614cdb81615748565b81526020830135614ceb81615748565b60208201529392505050565b6000610100808385031215614d0a578182fd5b604051908101906001600160401b0382118183101715614d2657fe5b81604052614d33846146e0565b8152614d41602085016146eb565b6020820152614d52604085016146eb565b6040820152606084013560608201526080840135608082015260a084013560a0820152614d8160c085016146e0565b60c082015260e084013560e0820152809250505092915050565b600060e08284031215614af7578081fd5b600060a08284031215614dbd578081fd5b60405160a081016001600160401b0381118282101715614dd957fe5b806040525082518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b600060a08284031215614e25578081fd5b60405160a081016001600160401b0381118282101715614e4157fe5b6040528235614e4f81615748565b81526020830135614e5f81615748565b60208201526040830135614e7281615748565b60408201526060830135614e858161578f565b60608201526080928301359281019290925250919050565b6000610140808385031215614eb0578182fd5b614eb981615708565b9050825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100614f13818501614747565b90820152610120614f258482016146f6565b908201529392505050565b600060208284031215614f41578081fd5b81356133318161577a565b600060208284031215614f5d578081fd5b81516133318161578f565b600060208284031215614f79578081fd5b815160ff81168114613331578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0384811682528316602080830191909152606060408301819052835190830181905260009184810191608085019190845b8181101561500b57845184529382019392820192600101614fef565b509198975050505050505050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b03968716815294909516602085015260408401929092526060830152608082015260a081019190915260c00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392909216825263ffffffff16602082015260400190565b6001600160a01b0392909216825262ffffff16602082015260400190565b901515815260200190565b90815260200190565b9283526020830191909152604082015260600190565b600296870b81529490950b602085015260408401929092526060830152600f0b608082015260a081019190915260c00190565b958652602086019490945260408501929092526060840152608083015260a082015260c00190565b6000602080835283518082850152825b8181101561517f57858101830151858201604001528201615163565b818111156151905783604083870101525b50601f01601f1916929092016040019392505050565b60208082526008908201526708690bea2889c62760c31b604082015260600190565b60208082526006908201526521a42fa2a0ab60d11b604082015260600190565b60208082526005908201526443485f4f4560d81b604082015260600190565b60208082526007908201526643485f544d525360c81b604082015260600190565b60208082526007908201526643485f41424e4360c81b604082015260600190565b60208082526007908201526643485f55414e4360c81b604082015260600190565b60208082526007908201526610d217d513549360ca1b604082015260600190565b60208082526008908201526743485f4e4546434960c01b604082015260600190565b60208082526007908201526643485f51414e4360c81b604082015260600190565b60208082526006908201526543485f46305360d01b604082015260600190565b60208082526007908201526643485f43434e4360c81b604082015260600190565b60208082526006908201526543485f414e4360d01b604082015260600190565b6020808252601c908201527b506572704d6174683a20696e76657273696f6e206f766572666c6f7760201b604082015260600190565b60208082526007908201526643485f4f424e4360c81b604082015260600190565b60208082526006908201526521a42fa727a160d11b604082015260600190565b60208082526005908201526421a42faa2360d91b604082015260600190565b60208082526005908201526443485f544560d81b604082015260600190565b60208082526007908201526643485f56414e4360c81b604082015260600190565b60208082526007908201526610d217d513149360ca1b604082015260600190565b60208082526007908201526643485f54424e4560c81b604082015260600190565b60208082526007908201526643485f54514e4560c81b604082015260600190565b60208082526007908201526643485f544c525360c81b604082015260600190565b6020808252600b908201526a043485f43414c57524654560ac1b604082015260600190565b60208082526007908201526643485f4e45584f60c81b604082015260600190565b60208082526006908201526543485f50534360d01b604082015260600190565b60208082526006908201526521a42fa829ad60d11b604082015260600190565b60208082526006908201526543485f4e454f60d01b604082015260600190565b60006101008201905060018060a01b03808451168352806020850151166020840152506040830151604083015260608301516060830152608083015160020b608083015260a083015160020b60a083015260c0830151805160c0840152602081015160e08401525092915050565b8151815260208083015190820152604080830151908201526060918201519181019190915260800190565b81516001600160a01b03908116825260208084015190911690820152604080830151908201526060918201519181019190915260800190565b81516001600160a01b03908116825260208084015190911690820152604080830151600290810b9183019190915260608084015190910b908201526080918201516001600160801b03169181019190915260a00190565b81518152602080830151908201526040918201519181019190915260600190565b81516001600160a01b03908116825260208084015182169083015260408084015115159083015260608084015115159083015260808084015115159083015260a0838101519083015260c092830151169181019190915260e00190565b918252602082015260400190565b938452602084019290925260408301526001600160a01b0316606082015260800190565b6040518181016001600160401b038111828210171561572357fe5b604052919050565b60006001600160401b0382111561573e57fe5b5060209081020190565b6001600160a01b038116811461340d57600080fd5b801515811461340d57600080fd5b8060020b811461340d57600080fd5b6001600160801b038116811461340d57600080fd5b62ffffff8116811461340d57600080fdfe5265656e7472616e637947756172643a207265656e7472616e742063616c6c00968bc4f738eae0486dc6736c4b427dbafa4acfdf6eaf223337791ddeb3a5624753616665436173743a2076616c756520646f65736e27742066697420696e2031323820626974735369676e6564536166654d6174683a206164646974696f6e206f766572666c6f7709a07769667a46c2b89124a4d731c76fb5203061073aec16319ba9c6a79a3248496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206469766973696f6e206f766572666c6f778be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77cb47d8bf351d355bdd5497973533eada41777b4509f2585a62ae246336ebaa9453616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220aadaa274c4e7cd094f43136ff3a85aad9a2962c1cebb4b6ecd821bc14c0bee2164736f6c63430007060033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/external/abi/perp/PerpV2ClearingHouseConfig.json b/external/abi/perp/PerpV2ClearingHouseConfig.json index 8ab94b156..99e48ba30 100644 --- a/external/abi/perp/PerpV2ClearingHouseConfig.json +++ b/external/abi/perp/PerpV2ClearingHouseConfig.json @@ -343,8 +343,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610fb6806100206000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806374283336116100ad5780638da5cb5b116100715780638da5cb5b146102bf578063a8549402146102c7578063bc5920ba146102cf578063c846961e146102d7578063fedf924b146102f45761012c565b806374283336146102515780637bce35ae146102595780638129fc1c1461027b57806385eacc77146102835780638af3a60d1461029d5761012c565b8063543ce73a116100f4578063543ce73a146101dd5780636c8381f8146101fd5780636e1d2dd214610221578063715018a61461022957806373f62501146102315761012c565b8063050a0ba31461013157806313af4035146101555780631d27050f1461017b5780632c47ccba1461019e5780633e742e3b146101bc575b600080fd5b6101536004803603602081101561014757600080fd5b503562ffffff166102fc565b005b6101536004803603602081101561016b57600080fd5b50356001600160a01b03166103f9565b6101536004803603602081101561019157600080fd5b503563ffffffff16610554565b6101a661064d565b6040805160ff9092168252519081900360200190f35b6101c4610656565b6040805163ffffffff9092168252519081900360200190f35b6101e5610669565b6040805162ffffff9092168252519081900360200190f35b610205610679565b604080516001600160a01b039092168252519081900360200190f35b6101e5610688565b61015361069a565b6101536004803603602081101561024757600080fd5b503560ff1661074d565b6101e56107f2565b6101536004803603602081101561026f57600080fd5b503562ffffff16610804565b610153610946565b61028b610a68565b60408051918252519081900360200190f35b610153600480360360208110156102b357600080fd5b503562ffffff16610a6e565b610205610b23565b6101e5610b32565b610153610b45565b610153600480360360208110156102ed57600080fd5b5035610c43565b6101e5610cdb565b80620f42408162ffffff161115610343576040805162461bcd60e51b81526020600482015260066024820152654348435f524f60d01b604482015290519081900360640190fd5b61034b610ced565b6001600160a01b031661035c610b23565b6001600160a01b0316146103a0576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6067805462ffffff8416600160381b810262ffffff60381b199092169190911790915560408051918252517ff95b3e2798060899824a0bebdd89ff5df3d51c51c5d30f5184bd30d7a6b017089181900360200190a15050565b610401610ced565b6001600160a01b0316610412610b23565b6001600160a01b031614610456576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661049a576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156104e6576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b0382811691161415610532576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b61055c610ced565b6001600160a01b031661056d610b23565b6001600160a01b0316146105b1576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b63ffffffff81166105f3576040805162461bcd60e51b81526020600482015260076024820152664348435f49544960c81b604482015290519081900360640190fd5b6067805463ffffffff8316600160801b810263ffffffff60801b199092169190911790915560408051918252517f0bd5e02c0d6277fdf7c7c72fae10042c4c832b26ea94623a04b79a50a35a217e9181900360200190a150565b60675460ff1690565b606754600160801b900463ffffffff1690565b606754610100900462ffffff1690565b6034546001600160a01b031690565b606754600160681b900462ffffff1690565b6106a2610ced565b6001600160a01b03166106b3610b23565b6001600160a01b0316146106f7576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b610755610ced565b6001600160a01b0316610766610b23565b6001600160a01b0316146107aa576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6067805460ff831660ff19909116811790915560408051918252517fa7b4760b38e2a630f3073fcd5119972cbf81bd50e3761f86534a69661caf81109181900360200190a150565b606754600160501b900462ffffff1690565b80620f42408162ffffff16111561084b576040805162461bcd60e51b81526020600482015260066024820152654348435f524f60d01b604482015290519081900360640190fd5b610853610ced565b6001600160a01b0316610864610b23565b6001600160a01b0316146108a8576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b60008262ffffff16116108ed576040805162461bcd60e51b815260206004820152600860248201526721a421afa4a821a960c11b604482015290519081900360640190fd5b6067805462ffffff8416600160501b810262ffffff60501b199092169190911790915560408051918252517f4757c16c46bedf5171cc1e2c53c99225da1bff2c0a5cb51b0f852909dbae1ebd9181900360200190a15050565b600054610100900460ff168061095f575061095f610cf1565b8061096d575060005460ff16155b6109a85760405162461bcd60e51b815260040180806020018281038252602e815260200180610f53602e913960400191505060405180910390fd5b600054610100900460ff161580156109d3576000805460ff1961ff0019909116610100171660011790555b6109db610d02565b6067805460ff60ff199091161763ffffff001916630186a0001766ffffff00000000191665f424000000001762ffffff60381b19166861a8000000000000001762ffffff60501b1916613d0960541b1762ffffff60681b1916610c35606d1b1763ffffffff60801b191660e160821b1790556000196068558015610a65576000805461ff00191690555b50565b60685490565b610a76610ced565b6001600160a01b0316610a87610b23565b6001600160a01b031614610acb576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6067805462ffffff8316600160681b810262ffffff60681b199092169190911790915560408051918252517f0bcb070f78e3c4fec82334dff77e5369a878886b8be26c9f98daa534a8cf67789181900360200190a150565b6033546001600160a01b031690565b606754640100000000900462ffffff1690565b6034546001600160a01b0316610b8a576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610b92610ced565b6034546001600160a01b03908116911614610bdd576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b610c4b610ced565b6001600160a01b0316610c5c610b23565b6001600160a01b031614610ca0576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b60688190556040805182815290517fc6564be86420b541b7946583fdb54d45535a59a04e3b3525b536ccc547b4cd8f9181900360200190a150565b606754600160381b900462ffffff1690565b3390565b6000610cfc30610e03565b15905090565b600054610100900460ff1680610d1b5750610d1b610cf1565b80610d29575060005460ff16155b610d645760405162461bcd60e51b815260040180806020018281038252602e815260200180610f53602e913960400191505060405180910390fd5b600054610100900460ff16158015610d8f576000805460ff1961ff0019909116610100171660011790555b610d97610e09565b6000610da1610ced565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610a65576000805461ff001916905550565b3b151590565b600054610100900460ff1680610e225750610e22610cf1565b80610e30575060005460ff16155b610e6b5760405162461bcd60e51b815260040180806020018281038252602e815260200180610f53602e913960400191505060405180910390fd5b600054610100900460ff16158015610e96576000805460ff1961ff0019909116610100171660011790555b610e9e610eb2565b8015610a65576000805461ff001916905550565b600054610100900460ff1680610ecb5750610ecb610cf1565b80610ed9575060005460ff16155b610f145760405162461bcd60e51b815260040180806020018281038252602e815260200180610f53602e913960400191505060405180910390fd5b600054610100900460ff16158015610e9e576000805460ff1961ff0019909116610100171660011790558015610a65576000805461ff00191690555056fe496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564a2646970667358221220e43e8a4f286271a486da4df3d0d9f32bd143df276471d359767add9731a6e33964736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c806374283336116100ad5780638da5cb5b116100715780638da5cb5b146102bf578063a8549402146102c7578063bc5920ba146102cf578063c846961e146102d7578063fedf924b146102f45761012c565b806374283336146102515780637bce35ae146102595780638129fc1c1461027b57806385eacc77146102835780638af3a60d1461029d5761012c565b8063543ce73a116100f4578063543ce73a146101dd5780636c8381f8146101fd5780636e1d2dd214610221578063715018a61461022957806373f62501146102315761012c565b8063050a0ba31461013157806313af4035146101555780631d27050f1461017b5780632c47ccba1461019e5780633e742e3b146101bc575b600080fd5b6101536004803603602081101561014757600080fd5b503562ffffff166102fc565b005b6101536004803603602081101561016b57600080fd5b50356001600160a01b03166103f9565b6101536004803603602081101561019157600080fd5b503563ffffffff16610554565b6101a661064d565b6040805160ff9092168252519081900360200190f35b6101c4610656565b6040805163ffffffff9092168252519081900360200190f35b6101e5610669565b6040805162ffffff9092168252519081900360200190f35b610205610679565b604080516001600160a01b039092168252519081900360200190f35b6101e5610688565b61015361069a565b6101536004803603602081101561024757600080fd5b503560ff1661074d565b6101e56107f2565b6101536004803603602081101561026f57600080fd5b503562ffffff16610804565b610153610946565b61028b610a68565b60408051918252519081900360200190f35b610153600480360360208110156102b357600080fd5b503562ffffff16610a6e565b610205610b23565b6101e5610b32565b610153610b45565b610153600480360360208110156102ed57600080fd5b5035610c43565b6101e5610cdb565b80620f42408162ffffff161115610343576040805162461bcd60e51b81526020600482015260066024820152654348435f524f60d01b604482015290519081900360640190fd5b61034b610ced565b6001600160a01b031661035c610b23565b6001600160a01b0316146103a0576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6067805462ffffff8416600160381b810262ffffff60381b199092169190911790915560408051918252517ff95b3e2798060899824a0bebdd89ff5df3d51c51c5d30f5184bd30d7a6b017089181900360200190a15050565b610401610ced565b6001600160a01b0316610412610b23565b6001600160a01b031614610456576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661049a576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156104e6576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b0382811691161415610532576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b61055c610ced565b6001600160a01b031661056d610b23565b6001600160a01b0316146105b1576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b63ffffffff81166105f3576040805162461bcd60e51b81526020600482015260076024820152664348435f49544960c81b604482015290519081900360640190fd5b6067805463ffffffff8316600160801b810263ffffffff60801b199092169190911790915560408051918252517f0bd5e02c0d6277fdf7c7c72fae10042c4c832b26ea94623a04b79a50a35a217e9181900360200190a150565b60675460ff1690565b606754600160801b900463ffffffff1690565b606754610100900462ffffff1690565b6034546001600160a01b031690565b606754600160681b900462ffffff1690565b6106a2610ced565b6001600160a01b03166106b3610b23565b6001600160a01b0316146106f7576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b610755610ced565b6001600160a01b0316610766610b23565b6001600160a01b0316146107aa576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6067805460ff831660ff19909116811790915560408051918252517fa7b4760b38e2a630f3073fcd5119972cbf81bd50e3761f86534a69661caf81109181900360200190a150565b606754600160501b900462ffffff1690565b80620f42408162ffffff16111561084b576040805162461bcd60e51b81526020600482015260066024820152654348435f524f60d01b604482015290519081900360640190fd5b610853610ced565b6001600160a01b0316610864610b23565b6001600160a01b0316146108a8576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b60008262ffffff16116108ed576040805162461bcd60e51b815260206004820152600860248201526721a421afa4a821a960c11b604482015290519081900360640190fd5b6067805462ffffff8416600160501b810262ffffff60501b199092169190911790915560408051918252517f4757c16c46bedf5171cc1e2c53c99225da1bff2c0a5cb51b0f852909dbae1ebd9181900360200190a15050565b600054610100900460ff168061095f575061095f610cf1565b8061096d575060005460ff16155b6109a85760405162461bcd60e51b815260040180806020018281038252602e815260200180610f53602e913960400191505060405180910390fd5b600054610100900460ff161580156109d3576000805460ff1961ff0019909116610100171660011790555b6109db610d02565b6067805460ff60ff199091161763ffffff001916630186a0001766ffffff00000000191665f424000000001762ffffff60381b19166861a8000000000000001762ffffff60501b1916613d0960541b1762ffffff60681b1916610c35606d1b1763ffffffff60801b191660e160821b1790556000196068558015610a65576000805461ff00191690555b50565b60685490565b610a76610ced565b6001600160a01b0316610a87610b23565b6001600160a01b031614610acb576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6067805462ffffff8316600160681b810262ffffff60681b199092169190911790915560408051918252517f0bcb070f78e3c4fec82334dff77e5369a878886b8be26c9f98daa534a8cf67789181900360200190a150565b6033546001600160a01b031690565b606754640100000000900462ffffff1690565b6034546001600160a01b0316610b8a576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610b92610ced565b6034546001600160a01b03908116911614610bdd576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b610c4b610ced565b6001600160a01b0316610c5c610b23565b6001600160a01b031614610ca0576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b60688190556040805182815290517fc6564be86420b541b7946583fdb54d45535a59a04e3b3525b536ccc547b4cd8f9181900360200190a150565b606754600160381b900462ffffff1690565b3390565b6000610cfc30610e03565b15905090565b600054610100900460ff1680610d1b5750610d1b610cf1565b80610d29575060005460ff16155b610d645760405162461bcd60e51b815260040180806020018281038252602e815260200180610f53602e913960400191505060405180910390fd5b600054610100900460ff16158015610d8f576000805460ff1961ff0019909116610100171660011790555b610d97610e09565b6000610da1610ced565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610a65576000805461ff001916905550565b3b151590565b600054610100900460ff1680610e225750610e22610cf1565b80610e30575060005460ff16155b610e6b5760405162461bcd60e51b815260040180806020018281038252602e815260200180610f53602e913960400191505060405180910390fd5b600054610100900460ff16158015610e96576000805460ff1961ff0019909116610100171660011790555b610e9e610eb2565b8015610a65576000805461ff001916905550565b600054610100900460ff1680610ecb5750610ecb610cf1565b80610ed9575060005460ff16155b610f145760405162461bcd60e51b815260040180806020018281038252602e815260200180610f53602e913960400191505060405180910390fd5b600054610100900460ff16158015610e9e576000805460ff1961ff0019909116610100171660011790558015610a65576000805461ff00191690555056fe496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564a2646970667358221220e43e8a4f286271a486da4df3d0d9f32bd143df276471d359767add9731a6e33964736f6c63430007060033", + "bytecode": "0x608060405234801561001057600080fd5b50610f69806100206000396000f3fe608060405234801561001057600080fd5b50600436106100fc5760003560e01c8063050a0ba31461010157806313af4035146101255780631d27050f1461014b5780632c47ccba1461016e5780633e742e3b1461018c578063543ce73a146101ad5780636c8381f8146101cd5780636e1d2dd2146101f1578063715018a6146101f957806373f625011461020157806374283336146102215780637bce35ae146102295780638129fc1c1461024b57806385eacc77146102535780638af3a60d1461026d5780638da5cb5b1461028f578063a854940214610297578063bc5920ba1461029f578063c846961e146102a7578063fedf924b146102c4575b600080fd5b6101236004803603602081101561011757600080fd5b503562ffffff166102cc565b005b6101236004803603602081101561013b57600080fd5b50356001600160a01b03166103c9565b6101236004803603602081101561016157600080fd5b503563ffffffff16610524565b61017661061d565b6040805160ff9092168252519081900360200190f35b610194610626565b6040805163ffffffff9092168252519081900360200190f35b6101b5610639565b6040805162ffffff9092168252519081900360200190f35b6101d5610649565b604080516001600160a01b039092168252519081900360200190f35b6101b5610658565b61012361066a565b6101236004803603602081101561021757600080fd5b503560ff1661070b565b6101b56107b0565b6101236004803603602081101561023f57600080fd5b503562ffffff166107c2565b610123610904565b61025b610a20565b60408051918252519081900360200190f35b6101236004803603602081101561028357600080fd5b503562ffffff16610a26565b6101d5610adb565b6101b5610aea565b610123610afc565b610123600480360360208110156102bd57600080fd5b5035610be8565b6101b5610c80565b80620f42408162ffffff161115610313576040805162461bcd60e51b81526020600482015260066024820152654348435f524f60d01b604482015290519081900360640190fd5b61031b610c92565b6001600160a01b031661032c610adb565b6001600160a01b031614610370576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6067805462ffffff8416600160381b810262ffffff60381b199092169190911790915560408051918252517ff95b3e2798060899824a0bebdd89ff5df3d51c51c5d30f5184bd30d7a6b017089181900360200190a15050565b6103d1610c92565b6001600160a01b03166103e2610adb565b6001600160a01b031614610426576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661046a576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156104b6576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b0382811691161415610502576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b61052c610c92565b6001600160a01b031661053d610adb565b6001600160a01b031614610581576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b63ffffffff81166105c3576040805162461bcd60e51b81526020600482015260076024820152664348435f49544960c81b604482015290519081900360640190fd5b6067805463ffffffff8316600160801b810263ffffffff60801b199092169190911790915560408051918252517f0bd5e02c0d6277fdf7c7c72fae10042c4c832b26ea94623a04b79a50a35a217e9181900360200190a150565b60675460ff1690565b606754600160801b900463ffffffff1690565b606754610100900462ffffff1690565b6034546001600160a01b031690565b606754600160681b900462ffffff1690565b610672610c92565b6001600160a01b0316610683610adb565b6001600160a01b0316146106c7576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b031690600080516020610f14833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b610713610c92565b6001600160a01b0316610724610adb565b6001600160a01b031614610768576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6067805460ff831660ff19909116811790915560408051918252517fa7b4760b38e2a630f3073fcd5119972cbf81bd50e3761f86534a69661caf81109181900360200190a150565b606754600160501b900462ffffff1690565b80620f42408162ffffff161115610809576040805162461bcd60e51b81526020600482015260066024820152654348435f524f60d01b604482015290519081900360640190fd5b610811610c92565b6001600160a01b0316610822610adb565b6001600160a01b031614610866576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b60008262ffffff16116108ab576040805162461bcd60e51b815260206004820152600860248201526721a421afa4a821a960c11b604482015290519081900360640190fd5b6067805462ffffff8416600160501b810262ffffff60501b199092169190911790915560408051918252517f4757c16c46bedf5171cc1e2c53c99225da1bff2c0a5cb51b0f852909dbae1ebd9181900360200190a15050565b600054610100900460ff168061091d575061091d610c96565b8061092b575060005460ff16155b6109665760405162461bcd60e51b815260040180806020018281038252602e815260200180610ee6602e913960400191505060405180910390fd5b600054610100900460ff16158015610991576000805460ff1961ff0019909116610100171660011790555b610999610ca7565b6067805460ff60ff199091161763ffffff001916630186a0001762ffffff60201b1916613d0960221b1762ffffff60381b1916610c35603b1b1762ffffff60501b1916613d0960541b1762ffffff60681b1916610c35606d1b1763ffffffff60801b191660e160821b1790556000196068558015610a1d576000805461ff00191690555b50565b60685490565b610a2e610c92565b6001600160a01b0316610a3f610adb565b6001600160a01b031614610a83576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6067805462ffffff8316600160681b810262ffffff60681b199092169190911790915560408051918252517f0bcb070f78e3c4fec82334dff77e5369a878886b8be26c9f98daa534a8cf67789181900360200190a150565b6033546001600160a01b031690565b606754600160201b900462ffffff1690565b6034546001600160a01b0316610b41576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610b49610c92565b6034546001600160a01b03908116911614610b94576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b039283169290911690600080516020610f1483398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b610bf0610c92565b6001600160a01b0316610c01610adb565b6001600160a01b031614610c45576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b60688190556040805182815290517fc6564be86420b541b7946583fdb54d45535a59a04e3b3525b536ccc547b4cd8f9181900360200190a150565b606754600160381b900462ffffff1690565b3390565b6000610ca130610d96565b15905090565b600054610100900460ff1680610cc05750610cc0610c96565b80610cce575060005460ff16155b610d095760405162461bcd60e51b815260040180806020018281038252602e815260200180610ee6602e913960400191505060405180910390fd5b600054610100900460ff16158015610d34576000805460ff1961ff0019909116610100171660011790555b610d3c610d9c565b6000610d46610c92565b603380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020610f14833981519152908290a3508015610a1d576000805461ff001916905550565b3b151590565b600054610100900460ff1680610db55750610db5610c96565b80610dc3575060005460ff16155b610dfe5760405162461bcd60e51b815260040180806020018281038252602e815260200180610ee6602e913960400191505060405180910390fd5b600054610100900460ff16158015610e29576000805460ff1961ff0019909116610100171660011790555b610e31610e45565b8015610a1d576000805461ff001916905550565b600054610100900460ff1680610e5e5750610e5e610c96565b80610e6c575060005460ff16155b610ea75760405162461bcd60e51b815260040180806020018281038252602e815260200180610ee6602e913960400191505060405180910390fd5b600054610100900460ff16158015610e31576000805460ff1961ff0019909116610100171660011790558015610a1d576000805461ff00191690555056fe496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65648be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a26469706673582212203926e8c9c8c6d777975834b5c4accfbbb137cb9f59ceb88ab78f7dafe81b16a064736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100fc5760003560e01c8063050a0ba31461010157806313af4035146101255780631d27050f1461014b5780632c47ccba1461016e5780633e742e3b1461018c578063543ce73a146101ad5780636c8381f8146101cd5780636e1d2dd2146101f1578063715018a6146101f957806373f625011461020157806374283336146102215780637bce35ae146102295780638129fc1c1461024b57806385eacc77146102535780638af3a60d1461026d5780638da5cb5b1461028f578063a854940214610297578063bc5920ba1461029f578063c846961e146102a7578063fedf924b146102c4575b600080fd5b6101236004803603602081101561011757600080fd5b503562ffffff166102cc565b005b6101236004803603602081101561013b57600080fd5b50356001600160a01b03166103c9565b6101236004803603602081101561016157600080fd5b503563ffffffff16610524565b61017661061d565b6040805160ff9092168252519081900360200190f35b610194610626565b6040805163ffffffff9092168252519081900360200190f35b6101b5610639565b6040805162ffffff9092168252519081900360200190f35b6101d5610649565b604080516001600160a01b039092168252519081900360200190f35b6101b5610658565b61012361066a565b6101236004803603602081101561021757600080fd5b503560ff1661070b565b6101b56107b0565b6101236004803603602081101561023f57600080fd5b503562ffffff166107c2565b610123610904565b61025b610a20565b60408051918252519081900360200190f35b6101236004803603602081101561028357600080fd5b503562ffffff16610a26565b6101d5610adb565b6101b5610aea565b610123610afc565b610123600480360360208110156102bd57600080fd5b5035610be8565b6101b5610c80565b80620f42408162ffffff161115610313576040805162461bcd60e51b81526020600482015260066024820152654348435f524f60d01b604482015290519081900360640190fd5b61031b610c92565b6001600160a01b031661032c610adb565b6001600160a01b031614610370576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6067805462ffffff8416600160381b810262ffffff60381b199092169190911790915560408051918252517ff95b3e2798060899824a0bebdd89ff5df3d51c51c5d30f5184bd30d7a6b017089181900360200190a15050565b6103d1610c92565b6001600160a01b03166103e2610adb565b6001600160a01b031614610426576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661046a576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156104b6576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b0382811691161415610502576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b61052c610c92565b6001600160a01b031661053d610adb565b6001600160a01b031614610581576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b63ffffffff81166105c3576040805162461bcd60e51b81526020600482015260076024820152664348435f49544960c81b604482015290519081900360640190fd5b6067805463ffffffff8316600160801b810263ffffffff60801b199092169190911790915560408051918252517f0bd5e02c0d6277fdf7c7c72fae10042c4c832b26ea94623a04b79a50a35a217e9181900360200190a150565b60675460ff1690565b606754600160801b900463ffffffff1690565b606754610100900462ffffff1690565b6034546001600160a01b031690565b606754600160681b900462ffffff1690565b610672610c92565b6001600160a01b0316610683610adb565b6001600160a01b0316146106c7576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b031690600080516020610f14833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b610713610c92565b6001600160a01b0316610724610adb565b6001600160a01b031614610768576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6067805460ff831660ff19909116811790915560408051918252517fa7b4760b38e2a630f3073fcd5119972cbf81bd50e3761f86534a69661caf81109181900360200190a150565b606754600160501b900462ffffff1690565b80620f42408162ffffff161115610809576040805162461bcd60e51b81526020600482015260066024820152654348435f524f60d01b604482015290519081900360640190fd5b610811610c92565b6001600160a01b0316610822610adb565b6001600160a01b031614610866576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b60008262ffffff16116108ab576040805162461bcd60e51b815260206004820152600860248201526721a421afa4a821a960c11b604482015290519081900360640190fd5b6067805462ffffff8416600160501b810262ffffff60501b199092169190911790915560408051918252517f4757c16c46bedf5171cc1e2c53c99225da1bff2c0a5cb51b0f852909dbae1ebd9181900360200190a15050565b600054610100900460ff168061091d575061091d610c96565b8061092b575060005460ff16155b6109665760405162461bcd60e51b815260040180806020018281038252602e815260200180610ee6602e913960400191505060405180910390fd5b600054610100900460ff16158015610991576000805460ff1961ff0019909116610100171660011790555b610999610ca7565b6067805460ff60ff199091161763ffffff001916630186a0001762ffffff60201b1916613d0960221b1762ffffff60381b1916610c35603b1b1762ffffff60501b1916613d0960541b1762ffffff60681b1916610c35606d1b1763ffffffff60801b191660e160821b1790556000196068558015610a1d576000805461ff00191690555b50565b60685490565b610a2e610c92565b6001600160a01b0316610a3f610adb565b6001600160a01b031614610a83576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6067805462ffffff8316600160681b810262ffffff60681b199092169190911790915560408051918252517f0bcb070f78e3c4fec82334dff77e5369a878886b8be26c9f98daa534a8cf67789181900360200190a150565b6033546001600160a01b031690565b606754600160201b900462ffffff1690565b6034546001600160a01b0316610b41576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610b49610c92565b6034546001600160a01b03908116911614610b94576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b039283169290911690600080516020610f1483398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b610bf0610c92565b6001600160a01b0316610c01610adb565b6001600160a01b031614610c45576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b60688190556040805182815290517fc6564be86420b541b7946583fdb54d45535a59a04e3b3525b536ccc547b4cd8f9181900360200190a150565b606754600160381b900462ffffff1690565b3390565b6000610ca130610d96565b15905090565b600054610100900460ff1680610cc05750610cc0610c96565b80610cce575060005460ff16155b610d095760405162461bcd60e51b815260040180806020018281038252602e815260200180610ee6602e913960400191505060405180910390fd5b600054610100900460ff16158015610d34576000805460ff1961ff0019909116610100171660011790555b610d3c610d9c565b6000610d46610c92565b603380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020610f14833981519152908290a3508015610a1d576000805461ff001916905550565b3b151590565b600054610100900460ff1680610db55750610db5610c96565b80610dc3575060005460ff16155b610dfe5760405162461bcd60e51b815260040180806020018281038252602e815260200180610ee6602e913960400191505060405180910390fd5b600054610100900460ff16158015610e29576000805460ff1961ff0019909116610100171660011790555b610e31610e45565b8015610a1d576000805461ff001916905550565b600054610100900460ff1680610e5e5750610e5e610c96565b80610e6c575060005460ff16155b610ea75760405162461bcd60e51b815260040180806020018281038252602e815260200180610ee6602e913960400191505060405180910390fd5b600054610100900460ff16158015610e31576000805460ff1961ff0019909116610100171660011790558015610a1d576000805461ff00191690555056fe496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65648be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a26469706673582212203926e8c9c8c6d777975834b5c4accfbbb137cb9f59ceb88ab78f7dafe81b16a064736f6c63430007060033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/external/abi/perp/PerpV2Exchange.json b/external/abi/perp/PerpV2Exchange.json index 68a2649da..9a00a2087 100644 --- a/external/abi/perp/PerpV2Exchange.json +++ b/external/abi/perp/PerpV2Exchange.json @@ -117,61 +117,6 @@ "name": "OwnershipTransferred", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "trader", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "baseToken", - "type": "address" - }, - { - "indexed": false, - "internalType": "int256", - "name": "exchangedPositionSize", - "type": "int256" - }, - { - "indexed": false, - "internalType": "int256", - "name": "exchangedPositionNotional", - "type": "int256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "fee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "int256", - "name": "openNotional", - "type": "int256" - }, - { - "indexed": false, - "internalType": "int256", - "name": "realizedPnl", - "type": "int256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "sqrtPriceAfter", - "type": "uint256" - } - ], - "name": "PositionChanged", - "type": "event" - }, { "inputs": [], "name": "candidate", @@ -369,22 +314,39 @@ { "inputs": [ { - "internalType": "address", - "name": "baseToken", - "type": "address" - }, - { - "internalType": "uint32", - "name": "twapInterval", - "type": "uint32" + "components": [ + { + "internalType": "address", + "name": "trader", + "type": "address" + }, + { + "internalType": "address", + "name": "baseToken", + "type": "address" + }, + { + "internalType": "int256", + "name": "deltaAvailableBase", + "type": "int256" + }, + { + "internalType": "int256", + "name": "deltaAvailableQuote", + "type": "int256" + } + ], + "internalType": "struct IExchange.RealizePnlParams", + "name": "params", + "type": "tuple" } ], - "name": "getSqrtMarkTwapX96", + "name": "getPnlToBeRealized", "outputs": [ { - "internalType": "uint160", + "internalType": "int256", "name": "", - "type": "uint160" + "type": "int256" } ], "stateMutability": "view", @@ -394,21 +356,21 @@ "inputs": [ { "internalType": "address", - "name": "trader", + "name": "baseToken", "type": "address" }, { - "internalType": "address", - "name": "baseToken", - "type": "address" + "internalType": "uint32", + "name": "twapInterval", + "type": "uint32" } ], - "name": "getTakerOpenNotional", + "name": "getSqrtMarkTwapX96", "outputs": [ { - "internalType": "int256", + "internalType": "uint160", "name": "", - "type": "int256" + "type": "uint160" } ], "stateMutability": "view", @@ -433,30 +395,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "trader", - "type": "address" - }, - { - "internalType": "address", - "name": "baseToken", - "type": "address" - } - ], - "name": "getTotalOpenNotional", - "outputs": [ - { - "internalType": "int256", - "name": "", - "type": "int256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -562,19 +500,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "trader", - "type": "address" - } - ], - "name": "settleAllFunding", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -649,23 +574,6 @@ "internalType": "uint160", "name": "sqrtPriceLimitX96", "type": "uint160" - }, - { - "components": [ - { - "internalType": "int256", - "name": "twPremiumX96", - "type": "int256" - }, - { - "internalType": "int256", - "name": "twPremiumDivBySqrtPriceX96", - "type": "int256" - } - ], - "internalType": "struct Funding.Growth", - "name": "fundingGrowthGlobal", - "type": "tuple" } ], "internalType": "struct IExchange.SwapParams", @@ -697,6 +605,26 @@ "name": "exchangedPositionNotional", "type": "int256" }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "openNotional", + "type": "int256" + }, + { + "internalType": "int256", + "name": "realizedPnl", + "type": "int256" + }, + { + "internalType": "uint256", + "name": "sqrtPriceAfter", + "type": "uint256" + }, { "internalType": "int24", "name": "tick", @@ -747,8 +675,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50614c47806100206000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80638da5cb5b116100f9578063c66b8ed211610097578063eb9b912e11610071578063eb9b912e1461034e578063f8c8765e14610361578063f9cbb47114610374578063fa461e3314610396576101a9565b8063c66b8ed214610320578063cb379aa214610328578063d50d01b71461033b576101a9565b8063b248c4ef116100d3578063b248c4ef146102f5578063b3945690146102fd578063bc5920ba14610310578063c575ff7914610318576101a9565b80638da5cb5b146102d257806399e4a771146102da578063aa2a8294146102ed576101a9565b806348fa72d5116101665780636896fabf116101405780636896fabf1461029a5780636c8381f8146102a2578063715018a6146102aa57806380f57f11146102b2576101a9565b806348fa72d51461024757806350709710146102675780635eb8a4e614610287576101a9565b806313af4035146101ae578063158626f7146101c3578063199387cc146101e15780631e81ac33146101f457806329386b7b14610214578063449323d814610234575b600080fd5b6101c16101bc366004613df1565b6103a9565b005b6101cb610504565b6040516101d89190614423565b60405180910390f35b6101c16101ef366004613df1565b610513565b610207610202366004613e29565b6105f5565b6040516101d891906148a1565b610227610222366004613df1565b610959565b6040516101d891906149e5565b6101c1610242366004613df1565b61097d565b61025a61025536600461428a565b610a52565b6040516101d8919061499c565b61027a610275366004613df1565b611132565b6040516101d891906145de565b6101c1610295366004613ebc565b6111be565b6101cb61138c565b6101cb61139b565b6101c16113aa565b6102c56102c0366004613df1565b61145d565b6040516101d891906145ec565b6101cb61152f565b6101cb6102e8366004613ee9565b61153e565b6101cb6115d2565b6101cb6115e1565b6102c561030b366004613e29565b6115f0565b6101c161170b565b6101cb611809565b6101cb611818565b6102c5610336366004613e29565b611827565b6102c5610349366004613e29565b611967565b6101c161035c366004613df1565b6119ea565b6101c161036f366004613e61565b611aab565b610387610382366004613df1565b611c29565b6040516101d8939291906148af565b6101c16103a43660046140ce565b611ebb565b6103b161205b565b6001600160a01b03166103c261152f565b6001600160a01b031614610406576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661044a576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b0382811691161415610496576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b03828116911614156104e2576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b60d0546001600160a01b031690565b61051b61205b565b6001600160a01b031661052c61152f565b6001600160a01b031614610570576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661059f5760405162461bcd60e51b815260040161059690614702565b60405180910390fd5b60ce80546001600160a01b0319166001600160a01b0383161790556040517f2b28168781da733c8a034f84683b9c955f156de5e07e24920b1348f51445d3e6906105ea908390614423565b60405180910390a150565b6105fd613c65565b609a54604051631246dbf560e01b81526001600160a01b0390911690631246dbf59061062d908590600401614423565b60206040518083038186803b15801561064557600080fd5b505afa158015610659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067d9190614077565b6106995760405162461bcd60e51b81526004016105969061467c565b6000806106a584611c29565b60ce546040516331997f7b60e11b815293965091945092506000916001600160a01b0390911690636332fef6906106e29089908990600401614437565b60a06040518083038186803b1580156106fa57600080fd5b505afa15801561070e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107329190614149565b9050600061074b8787846000015185608001518961205f565b905080156108095760ce546001600160a01b031663377247028861076e84612105565b6040518363ffffffff1660e01b815260040161078b92919061457b565b600060405180830381600087803b1580156107a557600080fd5b505af11580156107b9573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f733330d4aad1a878654bf888817b79bc6478013399be29fa3b8845c81305249e8360405161080091906145ec565b60405180910390a35b6000610813612131565b6001600160a01b038816600090815260d3602052604090205490915081146108e7576001600160a01b038716600081815260d4602090815260408083208a518b84015160d390945293829020600182019390935592835590849055519091907f54e4482fe1d38392effe5d53f0e9e72f60221a75a10cea7abbb684bfb03519bf906108a190899089906149f5565b60405180910390a26108b288611132565b6001600160a01b038916600090815260d160205260409020805460029290920b62ffffff1662ffffff19909216919091179055505b60ce548651604051632e4586c360e01b81526001600160a01b0390921691632e4586c39161091b918c918c91600401614475565b600060405180830381600087803b15801561093557600080fd5b505af1158015610949573d6000803e3d6000fd5b5050505050505050505b92915050565b6001600160a01b038116600090815260d5602052604090205462ffffff165b919050565b61098561205b565b6001600160a01b031661099661152f565b6001600160a01b0316146109da576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6109ec816001600160a01b0316612135565b610a085760405162461bcd60e51b815260040161059690614741565b606780546001600160a01b0319166001600160a01b0383169081179091556040517fd0654f5900f9e7e4e605a19334306e6a2786bbf960ac0484a4c12feb6428fe2f90600090a250565b610a5a613c7f565b6067546001600160a01b0316610a6e61205b565b6001600160a01b031614610a945760405162461bcd60e51b81526004016105969061469d565b60ce548251602084015160405163165c4e2960e31b81526000936001600160a01b03169263b2e2714892610aca92600401614437565b60206040518083038186803b158015610ae257600080fd5b505afa158015610af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1a9190614093565b9050600080821290821580610b36575084604001511515821515145b15905060008060cf60009054906101000a90046001600160a01b03166001600160a01b031663742833366040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8a57600080fd5b505afa158015610b9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc291906143d3565b905086608001518015610bd457508415155b15610ca957610be6876020015161213b565b80610bff5750610bff8760200151858960a00151612153565b15610ca4576000610c0e612131565b88516001600160a01b03908116600090815260d660209081526040808320828e015190941683529290522054909150811415610c5c5760405162461bcd60e51b8152600401610596906146be565b87516001600160a01b03908116600090815260d660209081526040808320828d015190941683529290522081905560a0880151610c9990836121b1565b60a089015250600191505b610cd9565b8215610cd957610cbc876020015161213b565b15610cd95760405162461bcd60e51b81526004016105969061465a565b6000610ced88600001518960200151611967565b90506000610cfa896121c6565b90508860800151158015610d0b5750845b15610d3f57610d2289602001518260c00151612584565b15610d3f5760405162461bcd60e51b8152600401610596906146e0565b60ce54895160208b0151604084015160808501516001600160a01b039094169363e7ec1a8593929190610d8090610d759061262c565b606088015190612678565b8660400151610da0610d95896080015161262c565b60608a015190612678565b60006040518863ffffffff1660e01b8152600401610dc49796959493929190614499565b600060405180830381600087803b158015610dde57600080fd5b505af1158015610df2573d6000803e3d6000fd5b5050505060008515610ed957600085610e27578251610e2290670de0b6b3a7640000610e1d8c6126dd565b612705565b610e2e565b8462ffffff165b905060008b60400151610e4d57610e4884602001516127b4565b610e5a565b610e5a846020015161262c565b9050670de0b6b3a76400008211610ea6576000610e92670de0b6b3a7640000610e8c610e858661262c565b89906127c8565b90612871565b9050610e9e8282612929565b935050610ed6565b6000610ec6610eb48461262c565b610e8c84670de0b6b3a76400006127c8565b9050610ed28682612929565b9350505b50505b8015610f4b5760ce548a5160208c015160405163f0c7979760e01b81526001600160a01b039093169263f0c7979792610f189290918690600401614475565b600060405180830381600087803b158015610f3257600080fd5b505af1158015610f46573d6000803e3d6000fd5b505050505b60ce5460d05460a08401516001600160a01b03928316926337724702921690610f739061262c565b6040518363ffffffff1660e01b8152600401610f9092919061457b565b600060405180830381600087803b158015610faa57600080fd5b505af1158015610fbe573d6000803e3d6000fd5b505050506000610fd68b600001518c60200151611967565b609a5460208d015160405163bbe4f6db60e01b8152929350600092611067926001600160a01b03169163bbe4f6db916110129190600401614423565b60206040518083038186803b15801561102a57600080fd5b505afa15801561103e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110629190613e0d565b61298e565b6001600160a01b031690508b602001516001600160a01b03168c600001516001600160a01b03167f968bc4f738eae0486dc6736c4b427dbafa4acfdf6eaf223337791ddeb3a562478660400151876060015188608001518789886040516110d396959493929190614632565b60405180910390a36040518060c00160405280856000015181526020018560200151815260200185604001518152602001856060015181526020018560c0015160020b81526020018815158152509a5050505050505050505050919050565b609a5460405163bbe4f6db60e01b8152600091610953916001600160a01b039091169063bbe4f6db90611169908690600401614423565b60206040518083038186803b15801561118157600080fd5b505afa158015611195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b99190613e0d565b612a0e565b6111c661205b565b6001600160a01b03166111d761152f565b6001600160a01b03161461121b576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61122d826001600160a01b0316612135565b6112495760405162461bcd60e51b8152600401610596906147df565b609a54604051631246dbf560e01b81526001600160a01b0390911690631246dbf590611279908590600401614423565b60206040518083038186803b15801561129157600080fd5b505afa1580156112a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c99190614077565b6112e55760405162461bcd60e51b81526004016105969061467c565b6112fe6112f9620d89e8620d89e719612678565b612a8e565b62ffffff168162ffffff1611156113275760405162461bcd60e51b815260040161059690614763565b6001600160a01b038216600081815260d5602052604090819020805462ffffff191662ffffff8516179055517f998d553f208e581d188c66da9e7d19bac5ca64d002753791210c4271c8e955d0906113809084906149e5565b60405180910390a25050565b60ce546001600160a01b031690565b6034546001600160a01b031690565b6113b261205b565b6001600160a01b03166113c361152f565b6001600160a01b031614611407576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b60ce546040516357ba739b60e11b815260009182916001600160a01b039091169063af74e73690611492908690600401614423565b60006040518083038186803b1580156114aa57600080fd5b505afa1580156114be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114e69190810190613f16565b805190915060005b818110156115275761151d6115168685848151811061150957fe5b6020026020010151611827565b8590612929565b93506001016114ee565b505050919050565b6033546001600160a01b031690565b609a5460405163bbe4f6db60e01b81526000916115cb916001600160a01b039091169063bbe4f6db90611575908790600401614423565b60206040518083038186803b15801561158d57600080fd5b505afa1580156115a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c59190613e0d565b83612ad2565b9392505050565b60cf546001600160a01b031690565b60cd546001600160a01b031690565b60ce546040516303d2da2d60e51b81526000916115cb916001600160a01b0390911690637a5b45a0906116299087908790600401614437565b60206040518083038186803b15801561164157600080fd5b505afa158015611655573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116799190614093565b60cd5460405163bf0b1abb60e01b8152611705916001600160a01b03169063bf0b1abb906116b09089908990600090600401614451565b60206040518083038186803b1580156116c857600080fd5b505afa1580156116dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117009190614093565b61262c565b90612929565b6034546001600160a01b0316611750576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b61175861205b565b6034546001600160a01b039081169116146117a3576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6067546001600160a01b031690565b609a546001600160a01b031690565b60008061183383611c29565b505060ce546040516331997f7b60e11b81529192506000916001600160a01b0390911690636332fef69061186d9088908890600401614437565b60a06040518083038186803b15801561188557600080fd5b505afa158015611899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bd9190614149565b60cd546040516347b52fb760e01b81529192506000916001600160a01b03909116906347b52fb7906118f7908990899088906004016144d7565b60206040518083038186803b15801561190f57600080fd5b505afa158015611923573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119479190614093565b905061195d826000015183608001518584612c2b565b9695505050505050565b60ce54604051632af7ad8160e21b81526000916001600160a01b03169063abdeb6049061199a9086908690600401614437565b60206040518083038186803b1580156119b257600080fd5b505afa1580156119c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb9190614093565b60ce546040516357ba739b60e11b81526000916001600160a01b03169063af74e73690611a1b908590600401614423565b60006040518083038186803b158015611a3357600080fd5b505afa158015611a47573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a6f9190810190613f16565b805190915060005b81811015611aa557611a9c84848381518110611a8f57fe5b60200260200101516105f5565b50600101611a77565b50505050565b600054610100900460ff1680611ac45750611ac4612c5c565b80611ad2575060005460ff16155b611b0d5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ae7602e913960400191505060405180910390fd5b600054610100900460ff16158015611b38576000805460ff1961ff0019909116610100171660011790555b611b40612c6d565b611b4985612d17565b611b5b846001600160a01b0316612135565b611b775760405162461bcd60e51b815260040161059690614721565b611b89836001600160a01b0316612135565b611ba55760405162461bcd60e51b8152600401610596906147ff565b611bb7826001600160a01b0316612135565b611bd35760405162461bcd60e51b81526004016105969061485e565b60d080546001600160a01b038085166001600160a01b03199283161790925560cd805487841690831617905560cf8054928616929091169190911790558015611c22576000805461ff00191690555b5050505050565b611c31613c65565b6001600160a01b038216600090815260d260205260408120548190819015611d325760cf60009054906101000a90046001600160a01b03166001600160a01b0316633e742e3b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ca157600080fd5b505afa158015611cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd991906143ef565b6001600160a01b038616600090815260d2602052604081205491925090611d1190611d0c90611d06612131565b90612e0b565b612e68565b90508063ffffffff168263ffffffff1611611d2c5781611d2e565b805b9150505b6000611d4f611d41878461153e565b6001600160a01b0316612ead565b9050611d5a81612ec7565b604051631208064760e01b81529094506001600160a01b03871690631208064790611d89908590600401614a03565b60206040518083038186803b158015611da157600080fd5b505afa158015611db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd99190614093565b92506000611de5612131565b6001600160a01b038816600090815260d3602090815260408083205460d49092529091209192509081831480611e19575081155b15611e3d576040805180820190915281548152600182015460208201529750611eaf565b6000611e67611e4f6117008686612e0b565b611e6187611e5c8b612ee0565b612ef9565b906127c8565b8254909150611e769082612929565b8952611ea8611e9d82600160601b611e8f8e600061153e565b6001600160a01b0316613000565b600184015490612929565b60208a0152505b50505050509193909250565b6000611ec561205b565b90506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611f0257600080fd5b505afa158015611f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3a9190613e0d565b609a5460405163bbe4f6db60e01b81529192506001600160a01b03169063bbe4f6db90611f6b908490600401614423565b60206040518083038186803b158015611f8357600080fd5b505afa158015611f97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbb9190613e0d565b6001600160a01b0316826001600160a01b031614611feb5760405162461bcd60e51b815260040161059690614787565b60675460405163fa461e3360e01b81526001600160a01b039091169063fa461e33906120219089908990899089906004016145f5565b600060405180830381600087803b15801561203b57600080fd5b505af115801561204f573d6000803e3d6000fd5b50505050505050505050565b3390565b60cd54604051633fe1339b60e11b815260009182916001600160a01b0390911690637fc2673690612098908a908a9088906004016144d7565b602060405180830381600087803b1580156120b257600080fd5b505af11580156120c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ea9190614093565b90506120f885858584612c2b565b9150505b95945050505050565b6000600160ff1b821361212a5760405162461bcd60e51b8152600401610596906147a8565b5060000390565b4290565b3b151590565b60008061214783611132565b90506115cb8382612584565b6000806040518060a00160405280866001600160a01b0316815260200185151515815260200185151515815260200184815260200161219287876130a4565b6001600160a01b0316905290506120fc856121ac836130f7565b612584565b60006115cb838362ffffff16620f4240612705565b6121ce613cba565b609a54602083015160405163033e16f360e21b81526000926001600160a01b031691630cf85bcc916122039190600401614423565b60806040518083038186803b15801561221b57600080fd5b505afa15801561222f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225391906141b2565b9050600080612279856040015186606001518760a001518660200151876040015161329f565b60cd5460408051610100810182526020808b01516001600160a01b0390811683528b8401511515828401526001838501526060830186905260c0808d015182166080850152918a015162ffffff90811660a08501528a850151169183019190915260e0808c0151908301529151631477e1bf60e31b815294965092945060009391169163a3bf0df89161230f91906004016148ce565b606060405180830381600087803b15801561232957600080fd5b505af115801561233d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123619190614230565b9050600061245d6040518060e0016040528087600001516001600160a01b03168152602001606760009054906101000a90046001600160a01b03166001600160a01b031681526020018960400151151581526020018960600151151581526020018681526020018960c001516001600160a01b031681526020016040518060a001604052808b600001516001600160a01b031681526020018b602001516001600160a01b0316815260200189600001516001600160a01b03168152602001896040015162ffffff16815260200186602001518152506040516020016124469190614952565b6040516020818303038152906040528152506132f0565b905060008088604001511561249e5761248861248384600001518960400151600061353e565b6127b4565b9150612497836020015161262c565b90506124c5565b82516124a99061262c565b91506124c261248384602001518960400151600061353e565b90505b6020808a01516001600160a01b0316600090815260d2909152604090205461250e576124ef612131565b6020808b01516001600160a01b0316600090815260d290915260409020555b6040518060e00160405280612522846126dd565b815260200161254661254161253a886020015161262c565b8590612678565b6126dd565b81526020018381526020018281526020018560200151815260200185604001518152602001856000015160020b815250975050505050505050919050565b6001600160a01b038216600090815260d5602052604081205462ffffff16806125b1576000915050610953565b6001600160a01b038416600090815260d16020526040812054600290810b91906125ec906125e79084900b62ffffff8616612929565b613585565b905060006126066125e7600285900b62ffffff8716612678565b90508060020b8660020b128061262157508160020b8660020b135b979650505050505050565b60006001600160ff1b038211156126745760405162461bcd60e51b8152600401808060200182810382526028815260200180614bc66028913960400191505060405180910390fd5b5090565b600081830381831280159061268d5750838113155b806126a257506000831280156126a257508381135b6115cb5760405162461bcd60e51b8152600401808060200182810382526024815260200180614bee6024913960400191505060405180910390fd5b60008082136126fc576126f76126f283612105565b6135c8565b610953565b610953826135c8565b600080806000198587098686029250828110908390030390508061273b576000841161273057600080fd5b5082900490506115cb565b80841161274757600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60006127bf8261262c565b60000392915050565b6000826127d757506000610953565b826000191480156127eb5750600160ff1b82145b156128275760405162461bcd60e51b8152600401808060200182810382526027815260200180614b796027913960400191505060405180910390fd5b8282028284828161283457fe5b05146115cb5760405162461bcd60e51b8152600401808060200182810382526027815260200180614b796027913960400191505060405180910390fd5b6000816128c5576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b816000191480156128d95750600160ff1b83145b156129155760405162461bcd60e51b8152600401808060200182810382526021815260200180614b156021913960400191505060405180910390fd5b600082848161292057fe5b05949350505050565b600082820181831280159061293e5750838112155b80612953575060008312801561295357508381125b6115cb5760405162461bcd60e51b8152600401808060200182810382526021815260200180614a9d6021913960400191505060405180910390fd5b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156129c957600080fd5b505afa1580156129dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a019190614340565b5094979650505050505050565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015612a4957600080fd5b505afa158015612a5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a819190614340565b5093979650505050505050565b8062ffffff811681146109785760405162461bcd60e51b8152600401808060200182810382526043815260200180614b366043913960600191505060405180910390fd5b6000600a8263ffffffff161015612af357612aec8361298e565b9050610953565b6040805160028082526060820183526000926020830190803683370190505090508281600081518110612b2257fe5b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110612b4b57fe5b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd90612b8f908590600401614594565b60006040518083038186803b158015612ba757600080fd5b505afa158015612bbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612be39190810190613faf565b5090506120fc8463ffffffff1682600081518110612bfd57fe5b602002602001015183600181518110612c1257fe5b60200260200101510360060b81612c2557fe5b0561361f565b600080612c3d86856000015187613951565b9050612c5062015180610e8c8584612929565b9150505b949350505050565b6000612c6730612135565b15905090565b600054610100900460ff1680612c865750612c86612c5c565b80612c94575060005460ff16155b612ccf5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ae7602e913960400191505060405180910390fd5b600054610100900460ff16158015612cfa576000805460ff1961ff0019909116610100171660011790555b612d0261396b565b8015612d14576000805461ff00191690555b50565b600054610100900460ff1680612d305750612d30612c5c565b80612d3e575060005460ff16155b612d795760405162461bcd60e51b815260040180806020018281038252602e815260200180614ae7602e913960400191505060405180910390fd5b600054610100900460ff16158015612da4576000805460ff1961ff0019909116610100171660011790555b612dac613a6c565b612dbe826001600160a01b0316612135565b612dda5760405162461bcd60e51b81526004016105969061487f565b609a80546001600160a01b0319166001600160a01b0384161790558015612e07576000805461ff00191690555b5050565b600082821115612e62576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b8063ffffffff811681146109785760405162461bcd60e51b8152600401808060200182810382526026815260200180614ba06026913960400191505060405180910390fd5b60006109536001600160a01b03831680600160601b612705565b600061095382670de0b6b3a7640000600160601b612705565b600061095382600160601b670de0b6b3a7640000612705565b60008060cf60009054906101000a90046001600160a01b03166001600160a01b0316636e1d2dd26040518163ffffffff1660e01b815260040160206040518083038186803b158015612f4a57600080fd5b505afa158015612f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8291906143d3565b90506000612f9084836121b1565b9050600084861115612fcd57612fa68686612e0b565b9050818111612fbd57612fb88161262c565b612fc6565b612fc68261262c565b9350612ff7565b612fd78587612e0b565b9050818111612fee57612fe9816127b4565b61195d565b61195d826127b4565b50505092915050565b60008060008512613011578461301a565b61301a85612105565b9050600080851261302b5784613034565b61303485612105565b9050600080871280156130475750600086135b8061305d575060008713801561305d5750600086125b61306857600061306b565b60015b9050600061307a848488612705565b90508161308f5761308a8161262c565b613098565b613098816127b4565b98975050505050505050565b6001600160a01b038216600090815260d1602090815260408083205460d590925282205460029190910b9062ffffff1682846130e5576001828403036130ec565b8183016001015b905061195d8161361f565b609a54815160405163033e16f360e21b815260009283926001600160a01b0390911691630cf85bcc9161312c91600401614423565b60806040518083038186803b15801561314457600080fd5b505afa158015613158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317c91906141b2565b905060008160200151905060008260400151905060006131ab866020015187604001518860600151868661329f565b60cd5460408051610100810182528a516001600160a01b0390811682526020808d01511515818401526000838501819052606084018790526080808f015184169085015262ffffff808c1660a08601528a1660c08501528451808601865281815291820181905260e08401919091529251631477e1bf60e31b815294965091945091169163a3bf0df891613241916004016148ce565b606060405180830381600087803b15801561325b57600080fd5b505af115801561326f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132939190614230565b51979650505050505050565b6000806132af8787878787613b01565b9150866132c4576132bf8561262c565b6132cd565b6132cd8261262c565b9050856132e2576132dd81612105565b6132e4565b805b90509550959350505050565b6132f8613c65565b600082608001511161331c5760405162461bcd60e51b81526004016105969061481f565b600082606001516133395761333483608001516127b4565b613346565b613346836080015161262c565b905060008084600001516001600160a01b031663128acb0886602001518760400151868960a001516001600160a01b0316600014613388578960a001516133b2565b89604001516133ab5773fffd8963efd1fc6a506488495d951d5263988d256133b2565b6401000276a45b8a60c001516040518663ffffffff1660e01b81526004016133d79594939291906144fc565b6040805180830381600087803b1580156133f057600080fd5b505af1158015613404573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342891906140ab565b91509150600080613438846126dd565b613441846126dd565b9150915060008760400151151588606001511515146134605781613462565b825b90508760600151158015613481575060a08801516001600160a01b0316155b1561352257600a886080015182116134a75760808901516134a29083612e0b565b6134b7565b60808901516134b7908390612e0b565b106134d45760405162461bcd60e51b81526004016105969061483e565b87604001516134fb5760405180604001604052808960800151815260200183815250613515565b604051806040016040528084815260200189608001518152505b9650505050505050610978565b5060408051808201909152918252602082015295945050505050565b600081613569576135648461355b620f424062ffffff8716612e0b565b620f4240612705565b612c54565b612c5484620f42406135808162ffffff8816612e0b565b613b4a565b80600281900b81146109785760405162461bcd60e51b8152600401808060200182810382526029815260200180614abe6029913960400191505060405180910390fd5b600080821215612674576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b60008060008360020b12613636578260020b61363e565b8260020b6000035b9050620d89e881111561367c576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661369057600160801b6136a2565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156136d6576ffff97272373d413259a46990580e213a0260801c5b60048216156136f5576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613714576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613733576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613752576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613771576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613790576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156137b0576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156137d0576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156137f0576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613810576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613830576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613850576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613870576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613890576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156138b1576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156138d1576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156138f0576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561390d576b048a170391f7dc42444e8fa20260801c5b60008460020b131561392857806000198161392457fe5b0490505b64010000000081061561393c57600161393f565b60005b60ff16602082901c0192505050919050565b6000612c54846139618585612678565b600160601b613000565b600054610100900460ff16806139845750613984612c5c565b80613992575060005460ff16155b6139cd5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ae7602e913960400191505060405180910390fd5b600054610100900460ff161580156139f8576000805460ff1961ff0019909116610100171660011790555b613a00613a6c565b6000613a0a61205b565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015612d14576000805461ff001916905550565b600054610100900460ff1680613a855750613a85612c5c565b80613a93575060005460ff16155b613ace5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ae7602e913960400191505060405180910390fd5b600054610100900460ff16158015613af9576000805460ff1961ff0019909116610100171660011790555b612d02613b84565b60008515613b325784613b1f57613b1a8484600161353e565b613b2b565b613b2b8483600161353e565b90506120fc565b84613b3d578361195d565b61195d8483856001613c24565b6000613b57848484612705565b905060008280613b6357fe5b84860911156115cb576000198110613b7a57600080fd5b6001019392505050565b600054610100900460ff1680613b9d5750613b9d612c5c565b80613bab575060005460ff16155b613be65760405162461bcd60e51b815260040180806020018281038252602e815260200180614ae7602e913960400191505060405180910390fd5b600054610100900460ff16158015612d02576000805460ff1961ff0019909116610100171660011790558015612d14576000805461ff001916905550565b600080600083613c35578585613c38565b84865b909250905061262187613c53620f424062ffffff8616612e0b565b613580620f424062ffffff8616612e0b565b604051806040016040528060008152602001600081525090565b6040518060c0016040528060008152602001600081526020016000815260200160008152602001600060020b81526020016000151581525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060020b81525090565b803561097881614a56565b600082601f830112613d15578081fd5b81516020613d2a613d2583614a38565b614a14565b8281528181019085830183850287018401881015613d46578586fd5b855b85811015613d6d578151613d5b81614a56565b84529284019290840190600101613d48565b5090979650505050505050565b803561097881614a6b565b8051600281900b811461097857600080fd5b600060408284031215613da8578081fd5b6040516040810181811067ffffffffffffffff82111715613dc557fe5b604052823581526020928301359281019290925250919050565b805161ffff8116811461097857600080fd5b600060208284031215613e02578081fd5b81356115cb81614a56565b600060208284031215613e1e578081fd5b81516115cb81614a56565b60008060408385031215613e3b578081fd5b8235613e4681614a56565b91506020830135613e5681614a56565b809150509250929050565b60008060008060808587031215613e76578182fd5b8435613e8181614a56565b93506020850135613e9181614a56565b92506040850135613ea181614a56565b91506060850135613eb181614a56565b939692955090935050565b60008060408385031215613ece578182fd5b8235613ed981614a56565b91506020830135613e5681614a79565b60008060408385031215613efb578182fd5b8235613f0681614a56565b91506020830135613e5681614a8a565b60006020808385031215613f28578182fd5b825167ffffffffffffffff811115613f3e578283fd5b8301601f81018513613f4e578283fd5b8051613f5c613d2582614a38565b8181528381019083850185840285018601891015613f78578687fd5b8694505b83851015613fa3578051613f8f81614a56565b835260019490940193918501918501613f7c565b50979650505050505050565b60008060408385031215613fc1578182fd5b825167ffffffffffffffff80821115613fd8578384fd5b818501915085601f830112613feb578384fd5b81516020613ffb613d2583614a38565b82815281810190858301838502870184018b1015614017578889fd5b8896505b848710156140475780518060060b811461403357898afd5b83526001969096019591830191830161401b565b5091880151919650909350505080821115614060578283fd5b5061406d85828601613d05565b9150509250929050565b600060208284031215614088578081fd5b81516115cb81614a6b565b6000602082840312156140a4578081fd5b5051919050565b600080604083850312156140bd578182fd5b505080516020909101519092909150565b600080600080606085870312156140e3578182fd5b8435935060208501359250604085013567ffffffffffffffff80821115614108578384fd5b818701915087601f83011261411b578384fd5b813581811115614129578485fd5b88602082850101111561413a578485fd5b95989497505060200194505050565b600060a0828403121561415a578081fd5b60405160a0810181811067ffffffffffffffff8211171561417757fe5b806040525082518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b6000608082840312156141c3578081fd5b6040516080810181811067ffffffffffffffff821117156141e057fe5b60405282516141ee81614a56565b815260208301516141fe81614a79565b6020820152604083015161421181614a79565b6040820152606083015161422481614a79565b60608201529392505050565b600060608284031215614241578081fd5b6040516060810181811067ffffffffffffffff8211171561425e57fe5b60405261426a83613d85565b815260208301516020820152604083015160408201528091505092915050565b6000610120828403121561429c578081fd5b604051610100810181811067ffffffffffffffff821117156142ba57fe5b6040526142c683613cfa565b81526142d460208401613cfa565b60208201526142e560408401613d7a565b60408201526142f660608401613d7a565b606082015261430760808401613d7a565b608082015260a083013560a082015261432260c08401613cfa565b60c08201526143348460e08501613d97565b60e08201529392505050565b600080600080600080600060e0888a03121561435a578485fd5b875161436581614a56565b965061437360208901613d85565b955061438160408901613ddf565b945061438f60608901613ddf565b935061439d60808901613ddf565b925060a088015160ff811681146143b2578283fd5b60c08901519092506143c381614a6b565b8091505092959891949750929550565b6000602082840312156143e4578081fd5b81516115cb81614a79565b600060208284031215614400578081fd5b81516115cb81614a8a565b80518252602090810151910152565b62ffffff169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03978816815295909616602086015260408501939093526060840191909152608083015260a082015260c081019190915260e00190565b6001600160a01b0384811682528316602082015260808101612c54604083018461440b565b600060018060a01b038088168352602087151581850152866040850152818616606085015260a06080850152845191508160a0850152825b828110156145505785810182015185820160c001528101614534565b82811115614561578360c084870101525b5050601f01601f19169190910160c0019695505050505050565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156145d257835163ffffffff16835292840192918401916001016145b0565b50909695505050505050565b60029190910b815260200190565b90815260200190565b60008582528460208301526060604083015282606083015282846080840137818301608090810191909152601f909201601f191601019392505050565b958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60208082526008908201526745585f4f504c425360c01b604082015260600190565b60208082526007908201526645585f42544e4560c81b604082015260600190565b6020808252600790820152660869088be9e86960cb1b604082015260600190565b60208082526008908201526745585f414f504c4f60c01b604082015260600190565b60208082526008908201526745585f4f504c415360c01b604082015260600190565b6020808252600590820152640455f4142360dc1b604082015260600190565b602080825260069082015265455f4f424e4360d01b604082015260600190565b6020808252600890820152674348445f43484e4360c01b604082015260600190565b6020808252600a908201526922ac2fa6aa21a627a7a960b11b604082015260600190565b6020808252600790820152662aa1a12fa321ab60c91b604082015260600190565b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f7700000000604082015260600190565b60208082526006908201526545585f414e4360d01b604082015260600190565b602080825260069082015265455f43484e4360d01b604082015260600190565b60208082526005908201526455425f5a4960d81b604082015260600190565b60208082526006908201526555425f554f4160d01b604082015260600190565b602080825260079082015266455f4946414e4360c81b604082015260600190565b6020808252600890820152675543425f4d524e4360c01b604082015260600190565b60408101610953828461440b565b608081016148bd828661440b565b604082019390935260600152919050565b60006101208201905060018060a01b03808451168352602084015115156020840152604084015115156040840152606084015160608401528060808501511660808401525060a083015161492560a084018261441a565b5060c083015161493860c084018261441a565b5060e083015161494b60e084018261440b565b5092915050565b81516001600160a01b0390811682526020808401518216908301526040808401519091169082015260608083015162ffffff16908201526080918201519181019190915260a00190565b600060c08201905082518252602083015160208301526040830151604083015260608301516060830152608083015160020b608083015260a0830151151560a083015292915050565b62ffffff91909116815260200190565b918252602082015260400190565b63ffffffff91909116815260200190565b60405181810167ffffffffffffffff81118282101715614a3057fe5b604052919050565b600067ffffffffffffffff821115614a4c57fe5b5060209081020190565b6001600160a01b0381168114612d1457600080fd5b8015158114612d1457600080fd5b62ffffff81168114612d1457600080fd5b63ffffffff81168114612d1457600080fdfe5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e2032342062697473496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206469766973696f6e206f766572666c6f7753616665436173743a2076616c7565206d75737420626520706f736974697665206f722076616c756520646f65736e27742066697420696e20616e20323420626974735369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e203332206269747353616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220be3234a514fd0b9a7e7e6b8f99d80cd59e2390eca908e1006627a7e30d394a4464736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80638da5cb5b116100f9578063c66b8ed211610097578063eb9b912e11610071578063eb9b912e1461034e578063f8c8765e14610361578063f9cbb47114610374578063fa461e3314610396576101a9565b8063c66b8ed214610320578063cb379aa214610328578063d50d01b71461033b576101a9565b8063b248c4ef116100d3578063b248c4ef146102f5578063b3945690146102fd578063bc5920ba14610310578063c575ff7914610318576101a9565b80638da5cb5b146102d257806399e4a771146102da578063aa2a8294146102ed576101a9565b806348fa72d5116101665780636896fabf116101405780636896fabf1461029a5780636c8381f8146102a2578063715018a6146102aa57806380f57f11146102b2576101a9565b806348fa72d51461024757806350709710146102675780635eb8a4e614610287576101a9565b806313af4035146101ae578063158626f7146101c3578063199387cc146101e15780631e81ac33146101f457806329386b7b14610214578063449323d814610234575b600080fd5b6101c16101bc366004613df1565b6103a9565b005b6101cb610504565b6040516101d89190614423565b60405180910390f35b6101c16101ef366004613df1565b610513565b610207610202366004613e29565b6105f5565b6040516101d891906148a1565b610227610222366004613df1565b610959565b6040516101d891906149e5565b6101c1610242366004613df1565b61097d565b61025a61025536600461428a565b610a52565b6040516101d8919061499c565b61027a610275366004613df1565b611132565b6040516101d891906145de565b6101c1610295366004613ebc565b6111be565b6101cb61138c565b6101cb61139b565b6101c16113aa565b6102c56102c0366004613df1565b61145d565b6040516101d891906145ec565b6101cb61152f565b6101cb6102e8366004613ee9565b61153e565b6101cb6115d2565b6101cb6115e1565b6102c561030b366004613e29565b6115f0565b6101c161170b565b6101cb611809565b6101cb611818565b6102c5610336366004613e29565b611827565b6102c5610349366004613e29565b611967565b6101c161035c366004613df1565b6119ea565b6101c161036f366004613e61565b611aab565b610387610382366004613df1565b611c29565b6040516101d8939291906148af565b6101c16103a43660046140ce565b611ebb565b6103b161205b565b6001600160a01b03166103c261152f565b6001600160a01b031614610406576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661044a576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b0382811691161415610496576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b03828116911614156104e2576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b60d0546001600160a01b031690565b61051b61205b565b6001600160a01b031661052c61152f565b6001600160a01b031614610570576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661059f5760405162461bcd60e51b815260040161059690614702565b60405180910390fd5b60ce80546001600160a01b0319166001600160a01b0383161790556040517f2b28168781da733c8a034f84683b9c955f156de5e07e24920b1348f51445d3e6906105ea908390614423565b60405180910390a150565b6105fd613c65565b609a54604051631246dbf560e01b81526001600160a01b0390911690631246dbf59061062d908590600401614423565b60206040518083038186803b15801561064557600080fd5b505afa158015610659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067d9190614077565b6106995760405162461bcd60e51b81526004016105969061467c565b6000806106a584611c29565b60ce546040516331997f7b60e11b815293965091945092506000916001600160a01b0390911690636332fef6906106e29089908990600401614437565b60a06040518083038186803b1580156106fa57600080fd5b505afa15801561070e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107329190614149565b9050600061074b8787846000015185608001518961205f565b905080156108095760ce546001600160a01b031663377247028861076e84612105565b6040518363ffffffff1660e01b815260040161078b92919061457b565b600060405180830381600087803b1580156107a557600080fd5b505af11580156107b9573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f733330d4aad1a878654bf888817b79bc6478013399be29fa3b8845c81305249e8360405161080091906145ec565b60405180910390a35b6000610813612131565b6001600160a01b038816600090815260d3602052604090205490915081146108e7576001600160a01b038716600081815260d4602090815260408083208a518b84015160d390945293829020600182019390935592835590849055519091907f54e4482fe1d38392effe5d53f0e9e72f60221a75a10cea7abbb684bfb03519bf906108a190899089906149f5565b60405180910390a26108b288611132565b6001600160a01b038916600090815260d160205260409020805460029290920b62ffffff1662ffffff19909216919091179055505b60ce548651604051632e4586c360e01b81526001600160a01b0390921691632e4586c39161091b918c918c91600401614475565b600060405180830381600087803b15801561093557600080fd5b505af1158015610949573d6000803e3d6000fd5b5050505050505050505b92915050565b6001600160a01b038116600090815260d5602052604090205462ffffff165b919050565b61098561205b565b6001600160a01b031661099661152f565b6001600160a01b0316146109da576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6109ec816001600160a01b0316612135565b610a085760405162461bcd60e51b815260040161059690614741565b606780546001600160a01b0319166001600160a01b0383169081179091556040517fd0654f5900f9e7e4e605a19334306e6a2786bbf960ac0484a4c12feb6428fe2f90600090a250565b610a5a613c7f565b6067546001600160a01b0316610a6e61205b565b6001600160a01b031614610a945760405162461bcd60e51b81526004016105969061469d565b60ce548251602084015160405163165c4e2960e31b81526000936001600160a01b03169263b2e2714892610aca92600401614437565b60206040518083038186803b158015610ae257600080fd5b505afa158015610af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1a9190614093565b9050600080821290821580610b36575084604001511515821515145b15905060008060cf60009054906101000a90046001600160a01b03166001600160a01b031663742833366040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8a57600080fd5b505afa158015610b9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc291906143d3565b905086608001518015610bd457508415155b15610ca957610be6876020015161213b565b80610bff5750610bff8760200151858960a00151612153565b15610ca4576000610c0e612131565b88516001600160a01b03908116600090815260d660209081526040808320828e015190941683529290522054909150811415610c5c5760405162461bcd60e51b8152600401610596906146be565b87516001600160a01b03908116600090815260d660209081526040808320828d015190941683529290522081905560a0880151610c9990836121b1565b60a089015250600191505b610cd9565b8215610cd957610cbc876020015161213b565b15610cd95760405162461bcd60e51b81526004016105969061465a565b6000610ced88600001518960200151611967565b90506000610cfa896121c6565b90508860800151158015610d0b5750845b15610d3f57610d2289602001518260c00151612584565b15610d3f5760405162461bcd60e51b8152600401610596906146e0565b60ce54895160208b0151604084015160808501516001600160a01b039094169363e7ec1a8593929190610d8090610d759061262c565b606088015190612678565b8660400151610da0610d95896080015161262c565b60608a015190612678565b60006040518863ffffffff1660e01b8152600401610dc49796959493929190614499565b600060405180830381600087803b158015610dde57600080fd5b505af1158015610df2573d6000803e3d6000fd5b5050505060008515610ed957600085610e27578251610e2290670de0b6b3a7640000610e1d8c6126dd565b612705565b610e2e565b8462ffffff165b905060008b60400151610e4d57610e4884602001516127b4565b610e5a565b610e5a846020015161262c565b9050670de0b6b3a76400008211610ea6576000610e92670de0b6b3a7640000610e8c610e858661262c565b89906127c8565b90612871565b9050610e9e8282612929565b935050610ed6565b6000610ec6610eb48461262c565b610e8c84670de0b6b3a76400006127c8565b9050610ed28682612929565b9350505b50505b8015610f4b5760ce548a5160208c015160405163f0c7979760e01b81526001600160a01b039093169263f0c7979792610f189290918690600401614475565b600060405180830381600087803b158015610f3257600080fd5b505af1158015610f46573d6000803e3d6000fd5b505050505b60ce5460d05460a08401516001600160a01b03928316926337724702921690610f739061262c565b6040518363ffffffff1660e01b8152600401610f9092919061457b565b600060405180830381600087803b158015610faa57600080fd5b505af1158015610fbe573d6000803e3d6000fd5b505050506000610fd68b600001518c60200151611967565b609a5460208d015160405163bbe4f6db60e01b8152929350600092611067926001600160a01b03169163bbe4f6db916110129190600401614423565b60206040518083038186803b15801561102a57600080fd5b505afa15801561103e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110629190613e0d565b61298e565b6001600160a01b031690508b602001516001600160a01b03168c600001516001600160a01b03167f968bc4f738eae0486dc6736c4b427dbafa4acfdf6eaf223337791ddeb3a562478660400151876060015188608001518789886040516110d396959493929190614632565b60405180910390a36040518060c00160405280856000015181526020018560200151815260200185604001518152602001856060015181526020018560c0015160020b81526020018815158152509a5050505050505050505050919050565b609a5460405163bbe4f6db60e01b8152600091610953916001600160a01b039091169063bbe4f6db90611169908690600401614423565b60206040518083038186803b15801561118157600080fd5b505afa158015611195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b99190613e0d565b612a0e565b6111c661205b565b6001600160a01b03166111d761152f565b6001600160a01b03161461121b576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61122d826001600160a01b0316612135565b6112495760405162461bcd60e51b8152600401610596906147df565b609a54604051631246dbf560e01b81526001600160a01b0390911690631246dbf590611279908590600401614423565b60206040518083038186803b15801561129157600080fd5b505afa1580156112a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c99190614077565b6112e55760405162461bcd60e51b81526004016105969061467c565b6112fe6112f9620d89e8620d89e719612678565b612a8e565b62ffffff168162ffffff1611156113275760405162461bcd60e51b815260040161059690614763565b6001600160a01b038216600081815260d5602052604090819020805462ffffff191662ffffff8516179055517f998d553f208e581d188c66da9e7d19bac5ca64d002753791210c4271c8e955d0906113809084906149e5565b60405180910390a25050565b60ce546001600160a01b031690565b6034546001600160a01b031690565b6113b261205b565b6001600160a01b03166113c361152f565b6001600160a01b031614611407576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b60ce546040516357ba739b60e11b815260009182916001600160a01b039091169063af74e73690611492908690600401614423565b60006040518083038186803b1580156114aa57600080fd5b505afa1580156114be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114e69190810190613f16565b805190915060005b818110156115275761151d6115168685848151811061150957fe5b6020026020010151611827565b8590612929565b93506001016114ee565b505050919050565b6033546001600160a01b031690565b609a5460405163bbe4f6db60e01b81526000916115cb916001600160a01b039091169063bbe4f6db90611575908790600401614423565b60206040518083038186803b15801561158d57600080fd5b505afa1580156115a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c59190613e0d565b83612ad2565b9392505050565b60cf546001600160a01b031690565b60cd546001600160a01b031690565b60ce546040516303d2da2d60e51b81526000916115cb916001600160a01b0390911690637a5b45a0906116299087908790600401614437565b60206040518083038186803b15801561164157600080fd5b505afa158015611655573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116799190614093565b60cd5460405163bf0b1abb60e01b8152611705916001600160a01b03169063bf0b1abb906116b09089908990600090600401614451565b60206040518083038186803b1580156116c857600080fd5b505afa1580156116dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117009190614093565b61262c565b90612929565b6034546001600160a01b0316611750576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b61175861205b565b6034546001600160a01b039081169116146117a3576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6067546001600160a01b031690565b609a546001600160a01b031690565b60008061183383611c29565b505060ce546040516331997f7b60e11b81529192506000916001600160a01b0390911690636332fef69061186d9088908890600401614437565b60a06040518083038186803b15801561188557600080fd5b505afa158015611899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bd9190614149565b60cd546040516347b52fb760e01b81529192506000916001600160a01b03909116906347b52fb7906118f7908990899088906004016144d7565b60206040518083038186803b15801561190f57600080fd5b505afa158015611923573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119479190614093565b905061195d826000015183608001518584612c2b565b9695505050505050565b60ce54604051632af7ad8160e21b81526000916001600160a01b03169063abdeb6049061199a9086908690600401614437565b60206040518083038186803b1580156119b257600080fd5b505afa1580156119c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb9190614093565b60ce546040516357ba739b60e11b81526000916001600160a01b03169063af74e73690611a1b908590600401614423565b60006040518083038186803b158015611a3357600080fd5b505afa158015611a47573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a6f9190810190613f16565b805190915060005b81811015611aa557611a9c84848381518110611a8f57fe5b60200260200101516105f5565b50600101611a77565b50505050565b600054610100900460ff1680611ac45750611ac4612c5c565b80611ad2575060005460ff16155b611b0d5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ae7602e913960400191505060405180910390fd5b600054610100900460ff16158015611b38576000805460ff1961ff0019909116610100171660011790555b611b40612c6d565b611b4985612d17565b611b5b846001600160a01b0316612135565b611b775760405162461bcd60e51b815260040161059690614721565b611b89836001600160a01b0316612135565b611ba55760405162461bcd60e51b8152600401610596906147ff565b611bb7826001600160a01b0316612135565b611bd35760405162461bcd60e51b81526004016105969061485e565b60d080546001600160a01b038085166001600160a01b03199283161790925560cd805487841690831617905560cf8054928616929091169190911790558015611c22576000805461ff00191690555b5050505050565b611c31613c65565b6001600160a01b038216600090815260d260205260408120548190819015611d325760cf60009054906101000a90046001600160a01b03166001600160a01b0316633e742e3b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ca157600080fd5b505afa158015611cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd991906143ef565b6001600160a01b038616600090815260d2602052604081205491925090611d1190611d0c90611d06612131565b90612e0b565b612e68565b90508063ffffffff168263ffffffff1611611d2c5781611d2e565b805b9150505b6000611d4f611d41878461153e565b6001600160a01b0316612ead565b9050611d5a81612ec7565b604051631208064760e01b81529094506001600160a01b03871690631208064790611d89908590600401614a03565b60206040518083038186803b158015611da157600080fd5b505afa158015611db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd99190614093565b92506000611de5612131565b6001600160a01b038816600090815260d3602090815260408083205460d49092529091209192509081831480611e19575081155b15611e3d576040805180820190915281548152600182015460208201529750611eaf565b6000611e67611e4f6117008686612e0b565b611e6187611e5c8b612ee0565b612ef9565b906127c8565b8254909150611e769082612929565b8952611ea8611e9d82600160601b611e8f8e600061153e565b6001600160a01b0316613000565b600184015490612929565b60208a0152505b50505050509193909250565b6000611ec561205b565b90506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611f0257600080fd5b505afa158015611f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3a9190613e0d565b609a5460405163bbe4f6db60e01b81529192506001600160a01b03169063bbe4f6db90611f6b908490600401614423565b60206040518083038186803b158015611f8357600080fd5b505afa158015611f97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbb9190613e0d565b6001600160a01b0316826001600160a01b031614611feb5760405162461bcd60e51b815260040161059690614787565b60675460405163fa461e3360e01b81526001600160a01b039091169063fa461e33906120219089908990899089906004016145f5565b600060405180830381600087803b15801561203b57600080fd5b505af115801561204f573d6000803e3d6000fd5b50505050505050505050565b3390565b60cd54604051633fe1339b60e11b815260009182916001600160a01b0390911690637fc2673690612098908a908a9088906004016144d7565b602060405180830381600087803b1580156120b257600080fd5b505af11580156120c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ea9190614093565b90506120f885858584612c2b565b9150505b95945050505050565b6000600160ff1b821361212a5760405162461bcd60e51b8152600401610596906147a8565b5060000390565b4290565b3b151590565b60008061214783611132565b90506115cb8382612584565b6000806040518060a00160405280866001600160a01b0316815260200185151515815260200185151515815260200184815260200161219287876130a4565b6001600160a01b0316905290506120fc856121ac836130f7565b612584565b60006115cb838362ffffff16620f4240612705565b6121ce613cba565b609a54602083015160405163033e16f360e21b81526000926001600160a01b031691630cf85bcc916122039190600401614423565b60806040518083038186803b15801561221b57600080fd5b505afa15801561222f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225391906141b2565b9050600080612279856040015186606001518760a001518660200151876040015161329f565b60cd5460408051610100810182526020808b01516001600160a01b0390811683528b8401511515828401526001838501526060830186905260c0808d015182166080850152918a015162ffffff90811660a08501528a850151169183019190915260e0808c0151908301529151631477e1bf60e31b815294965092945060009391169163a3bf0df89161230f91906004016148ce565b606060405180830381600087803b15801561232957600080fd5b505af115801561233d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123619190614230565b9050600061245d6040518060e0016040528087600001516001600160a01b03168152602001606760009054906101000a90046001600160a01b03166001600160a01b031681526020018960400151151581526020018960600151151581526020018681526020018960c001516001600160a01b031681526020016040518060a001604052808b600001516001600160a01b031681526020018b602001516001600160a01b0316815260200189600001516001600160a01b03168152602001896040015162ffffff16815260200186602001518152506040516020016124469190614952565b6040516020818303038152906040528152506132f0565b905060008088604001511561249e5761248861248384600001518960400151600061353e565b6127b4565b9150612497836020015161262c565b90506124c5565b82516124a99061262c565b91506124c261248384602001518960400151600061353e565b90505b6020808a01516001600160a01b0316600090815260d2909152604090205461250e576124ef612131565b6020808b01516001600160a01b0316600090815260d290915260409020555b6040518060e00160405280612522846126dd565b815260200161254661254161253a886020015161262c565b8590612678565b6126dd565b81526020018381526020018281526020018560200151815260200185604001518152602001856000015160020b815250975050505050505050919050565b6001600160a01b038216600090815260d5602052604081205462ffffff16806125b1576000915050610953565b6001600160a01b038416600090815260d16020526040812054600290810b91906125ec906125e79084900b62ffffff8616612929565b613585565b905060006126066125e7600285900b62ffffff8716612678565b90508060020b8660020b128061262157508160020b8660020b135b979650505050505050565b60006001600160ff1b038211156126745760405162461bcd60e51b8152600401808060200182810382526028815260200180614bc66028913960400191505060405180910390fd5b5090565b600081830381831280159061268d5750838113155b806126a257506000831280156126a257508381135b6115cb5760405162461bcd60e51b8152600401808060200182810382526024815260200180614bee6024913960400191505060405180910390fd5b60008082136126fc576126f76126f283612105565b6135c8565b610953565b610953826135c8565b600080806000198587098686029250828110908390030390508061273b576000841161273057600080fd5b5082900490506115cb565b80841161274757600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60006127bf8261262c565b60000392915050565b6000826127d757506000610953565b826000191480156127eb5750600160ff1b82145b156128275760405162461bcd60e51b8152600401808060200182810382526027815260200180614b796027913960400191505060405180910390fd5b8282028284828161283457fe5b05146115cb5760405162461bcd60e51b8152600401808060200182810382526027815260200180614b796027913960400191505060405180910390fd5b6000816128c5576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b816000191480156128d95750600160ff1b83145b156129155760405162461bcd60e51b8152600401808060200182810382526021815260200180614b156021913960400191505060405180910390fd5b600082848161292057fe5b05949350505050565b600082820181831280159061293e5750838112155b80612953575060008312801561295357508381125b6115cb5760405162461bcd60e51b8152600401808060200182810382526021815260200180614a9d6021913960400191505060405180910390fd5b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156129c957600080fd5b505afa1580156129dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a019190614340565b5094979650505050505050565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015612a4957600080fd5b505afa158015612a5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a819190614340565b5093979650505050505050565b8062ffffff811681146109785760405162461bcd60e51b8152600401808060200182810382526043815260200180614b366043913960600191505060405180910390fd5b6000600a8263ffffffff161015612af357612aec8361298e565b9050610953565b6040805160028082526060820183526000926020830190803683370190505090508281600081518110612b2257fe5b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110612b4b57fe5b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd90612b8f908590600401614594565b60006040518083038186803b158015612ba757600080fd5b505afa158015612bbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612be39190810190613faf565b5090506120fc8463ffffffff1682600081518110612bfd57fe5b602002602001015183600181518110612c1257fe5b60200260200101510360060b81612c2557fe5b0561361f565b600080612c3d86856000015187613951565b9050612c5062015180610e8c8584612929565b9150505b949350505050565b6000612c6730612135565b15905090565b600054610100900460ff1680612c865750612c86612c5c565b80612c94575060005460ff16155b612ccf5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ae7602e913960400191505060405180910390fd5b600054610100900460ff16158015612cfa576000805460ff1961ff0019909116610100171660011790555b612d0261396b565b8015612d14576000805461ff00191690555b50565b600054610100900460ff1680612d305750612d30612c5c565b80612d3e575060005460ff16155b612d795760405162461bcd60e51b815260040180806020018281038252602e815260200180614ae7602e913960400191505060405180910390fd5b600054610100900460ff16158015612da4576000805460ff1961ff0019909116610100171660011790555b612dac613a6c565b612dbe826001600160a01b0316612135565b612dda5760405162461bcd60e51b81526004016105969061487f565b609a80546001600160a01b0319166001600160a01b0384161790558015612e07576000805461ff00191690555b5050565b600082821115612e62576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b8063ffffffff811681146109785760405162461bcd60e51b8152600401808060200182810382526026815260200180614ba06026913960400191505060405180910390fd5b60006109536001600160a01b03831680600160601b612705565b600061095382670de0b6b3a7640000600160601b612705565b600061095382600160601b670de0b6b3a7640000612705565b60008060cf60009054906101000a90046001600160a01b03166001600160a01b0316636e1d2dd26040518163ffffffff1660e01b815260040160206040518083038186803b158015612f4a57600080fd5b505afa158015612f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8291906143d3565b90506000612f9084836121b1565b9050600084861115612fcd57612fa68686612e0b565b9050818111612fbd57612fb88161262c565b612fc6565b612fc68261262c565b9350612ff7565b612fd78587612e0b565b9050818111612fee57612fe9816127b4565b61195d565b61195d826127b4565b50505092915050565b60008060008512613011578461301a565b61301a85612105565b9050600080851261302b5784613034565b61303485612105565b9050600080871280156130475750600086135b8061305d575060008713801561305d5750600086125b61306857600061306b565b60015b9050600061307a848488612705565b90508161308f5761308a8161262c565b613098565b613098816127b4565b98975050505050505050565b6001600160a01b038216600090815260d1602090815260408083205460d590925282205460029190910b9062ffffff1682846130e5576001828403036130ec565b8183016001015b905061195d8161361f565b609a54815160405163033e16f360e21b815260009283926001600160a01b0390911691630cf85bcc9161312c91600401614423565b60806040518083038186803b15801561314457600080fd5b505afa158015613158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317c91906141b2565b905060008160200151905060008260400151905060006131ab866020015187604001518860600151868661329f565b60cd5460408051610100810182528a516001600160a01b0390811682526020808d01511515818401526000838501819052606084018790526080808f015184169085015262ffffff808c1660a08601528a1660c08501528451808601865281815291820181905260e08401919091529251631477e1bf60e31b815294965091945091169163a3bf0df891613241916004016148ce565b606060405180830381600087803b15801561325b57600080fd5b505af115801561326f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132939190614230565b51979650505050505050565b6000806132af8787878787613b01565b9150866132c4576132bf8561262c565b6132cd565b6132cd8261262c565b9050856132e2576132dd81612105565b6132e4565b805b90509550959350505050565b6132f8613c65565b600082608001511161331c5760405162461bcd60e51b81526004016105969061481f565b600082606001516133395761333483608001516127b4565b613346565b613346836080015161262c565b905060008084600001516001600160a01b031663128acb0886602001518760400151868960a001516001600160a01b0316600014613388578960a001516133b2565b89604001516133ab5773fffd8963efd1fc6a506488495d951d5263988d256133b2565b6401000276a45b8a60c001516040518663ffffffff1660e01b81526004016133d79594939291906144fc565b6040805180830381600087803b1580156133f057600080fd5b505af1158015613404573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342891906140ab565b91509150600080613438846126dd565b613441846126dd565b9150915060008760400151151588606001511515146134605781613462565b825b90508760600151158015613481575060a08801516001600160a01b0316155b1561352257600a886080015182116134a75760808901516134a29083612e0b565b6134b7565b60808901516134b7908390612e0b565b106134d45760405162461bcd60e51b81526004016105969061483e565b87604001516134fb5760405180604001604052808960800151815260200183815250613515565b604051806040016040528084815260200189608001518152505b9650505050505050610978565b5060408051808201909152918252602082015295945050505050565b600081613569576135648461355b620f424062ffffff8716612e0b565b620f4240612705565b612c54565b612c5484620f42406135808162ffffff8816612e0b565b613b4a565b80600281900b81146109785760405162461bcd60e51b8152600401808060200182810382526029815260200180614abe6029913960400191505060405180910390fd5b600080821215612674576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b60008060008360020b12613636578260020b61363e565b8260020b6000035b9050620d89e881111561367c576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661369057600160801b6136a2565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156136d6576ffff97272373d413259a46990580e213a0260801c5b60048216156136f5576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613714576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613733576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613752576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613771576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613790576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156137b0576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156137d0576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156137f0576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613810576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613830576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613850576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613870576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613890576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156138b1576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156138d1576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156138f0576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561390d576b048a170391f7dc42444e8fa20260801c5b60008460020b131561392857806000198161392457fe5b0490505b64010000000081061561393c57600161393f565b60005b60ff16602082901c0192505050919050565b6000612c54846139618585612678565b600160601b613000565b600054610100900460ff16806139845750613984612c5c565b80613992575060005460ff16155b6139cd5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ae7602e913960400191505060405180910390fd5b600054610100900460ff161580156139f8576000805460ff1961ff0019909116610100171660011790555b613a00613a6c565b6000613a0a61205b565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015612d14576000805461ff001916905550565b600054610100900460ff1680613a855750613a85612c5c565b80613a93575060005460ff16155b613ace5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ae7602e913960400191505060405180910390fd5b600054610100900460ff16158015613af9576000805460ff1961ff0019909116610100171660011790555b612d02613b84565b60008515613b325784613b1f57613b1a8484600161353e565b613b2b565b613b2b8483600161353e565b90506120fc565b84613b3d578361195d565b61195d8483856001613c24565b6000613b57848484612705565b905060008280613b6357fe5b84860911156115cb576000198110613b7a57600080fd5b6001019392505050565b600054610100900460ff1680613b9d5750613b9d612c5c565b80613bab575060005460ff16155b613be65760405162461bcd60e51b815260040180806020018281038252602e815260200180614ae7602e913960400191505060405180910390fd5b600054610100900460ff16158015612d02576000805460ff1961ff0019909116610100171660011790558015612d14576000805461ff001916905550565b600080600083613c35578585613c38565b84865b909250905061262187613c53620f424062ffffff8616612e0b565b613580620f424062ffffff8616612e0b565b604051806040016040528060008152602001600081525090565b6040518060c0016040528060008152602001600081526020016000815260200160008152602001600060020b81526020016000151581525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060020b81525090565b803561097881614a56565b600082601f830112613d15578081fd5b81516020613d2a613d2583614a38565b614a14565b8281528181019085830183850287018401881015613d46578586fd5b855b85811015613d6d578151613d5b81614a56565b84529284019290840190600101613d48565b5090979650505050505050565b803561097881614a6b565b8051600281900b811461097857600080fd5b600060408284031215613da8578081fd5b6040516040810181811067ffffffffffffffff82111715613dc557fe5b604052823581526020928301359281019290925250919050565b805161ffff8116811461097857600080fd5b600060208284031215613e02578081fd5b81356115cb81614a56565b600060208284031215613e1e578081fd5b81516115cb81614a56565b60008060408385031215613e3b578081fd5b8235613e4681614a56565b91506020830135613e5681614a56565b809150509250929050565b60008060008060808587031215613e76578182fd5b8435613e8181614a56565b93506020850135613e9181614a56565b92506040850135613ea181614a56565b91506060850135613eb181614a56565b939692955090935050565b60008060408385031215613ece578182fd5b8235613ed981614a56565b91506020830135613e5681614a79565b60008060408385031215613efb578182fd5b8235613f0681614a56565b91506020830135613e5681614a8a565b60006020808385031215613f28578182fd5b825167ffffffffffffffff811115613f3e578283fd5b8301601f81018513613f4e578283fd5b8051613f5c613d2582614a38565b8181528381019083850185840285018601891015613f78578687fd5b8694505b83851015613fa3578051613f8f81614a56565b835260019490940193918501918501613f7c565b50979650505050505050565b60008060408385031215613fc1578182fd5b825167ffffffffffffffff80821115613fd8578384fd5b818501915085601f830112613feb578384fd5b81516020613ffb613d2583614a38565b82815281810190858301838502870184018b1015614017578889fd5b8896505b848710156140475780518060060b811461403357898afd5b83526001969096019591830191830161401b565b5091880151919650909350505080821115614060578283fd5b5061406d85828601613d05565b9150509250929050565b600060208284031215614088578081fd5b81516115cb81614a6b565b6000602082840312156140a4578081fd5b5051919050565b600080604083850312156140bd578182fd5b505080516020909101519092909150565b600080600080606085870312156140e3578182fd5b8435935060208501359250604085013567ffffffffffffffff80821115614108578384fd5b818701915087601f83011261411b578384fd5b813581811115614129578485fd5b88602082850101111561413a578485fd5b95989497505060200194505050565b600060a0828403121561415a578081fd5b60405160a0810181811067ffffffffffffffff8211171561417757fe5b806040525082518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b6000608082840312156141c3578081fd5b6040516080810181811067ffffffffffffffff821117156141e057fe5b60405282516141ee81614a56565b815260208301516141fe81614a79565b6020820152604083015161421181614a79565b6040820152606083015161422481614a79565b60608201529392505050565b600060608284031215614241578081fd5b6040516060810181811067ffffffffffffffff8211171561425e57fe5b60405261426a83613d85565b815260208301516020820152604083015160408201528091505092915050565b6000610120828403121561429c578081fd5b604051610100810181811067ffffffffffffffff821117156142ba57fe5b6040526142c683613cfa565b81526142d460208401613cfa565b60208201526142e560408401613d7a565b60408201526142f660608401613d7a565b606082015261430760808401613d7a565b608082015260a083013560a082015261432260c08401613cfa565b60c08201526143348460e08501613d97565b60e08201529392505050565b600080600080600080600060e0888a03121561435a578485fd5b875161436581614a56565b965061437360208901613d85565b955061438160408901613ddf565b945061438f60608901613ddf565b935061439d60808901613ddf565b925060a088015160ff811681146143b2578283fd5b60c08901519092506143c381614a6b565b8091505092959891949750929550565b6000602082840312156143e4578081fd5b81516115cb81614a79565b600060208284031215614400578081fd5b81516115cb81614a8a565b80518252602090810151910152565b62ffffff169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03978816815295909616602086015260408501939093526060840191909152608083015260a082015260c081019190915260e00190565b6001600160a01b0384811682528316602082015260808101612c54604083018461440b565b600060018060a01b038088168352602087151581850152866040850152818616606085015260a06080850152845191508160a0850152825b828110156145505785810182015185820160c001528101614534565b82811115614561578360c084870101525b5050601f01601f19169190910160c0019695505050505050565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156145d257835163ffffffff16835292840192918401916001016145b0565b50909695505050505050565b60029190910b815260200190565b90815260200190565b60008582528460208301526060604083015282606083015282846080840137818301608090810191909152601f909201601f191601019392505050565b958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60208082526008908201526745585f4f504c425360c01b604082015260600190565b60208082526007908201526645585f42544e4560c81b604082015260600190565b6020808252600790820152660869088be9e86960cb1b604082015260600190565b60208082526008908201526745585f414f504c4f60c01b604082015260600190565b60208082526008908201526745585f4f504c415360c01b604082015260600190565b6020808252600590820152640455f4142360dc1b604082015260600190565b602080825260069082015265455f4f424e4360d01b604082015260600190565b6020808252600890820152674348445f43484e4360c01b604082015260600190565b6020808252600a908201526922ac2fa6aa21a627a7a960b11b604082015260600190565b6020808252600790820152662aa1a12fa321ab60c91b604082015260600190565b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f7700000000604082015260600190565b60208082526006908201526545585f414e4360d01b604082015260600190565b602080825260069082015265455f43484e4360d01b604082015260600190565b60208082526005908201526455425f5a4960d81b604082015260600190565b60208082526006908201526555425f554f4160d01b604082015260600190565b602080825260079082015266455f4946414e4360c81b604082015260600190565b6020808252600890820152675543425f4d524e4360c01b604082015260600190565b60408101610953828461440b565b608081016148bd828661440b565b604082019390935260600152919050565b60006101208201905060018060a01b03808451168352602084015115156020840152604084015115156040840152606084015160608401528060808501511660808401525060a083015161492560a084018261441a565b5060c083015161493860c084018261441a565b5060e083015161494b60e084018261440b565b5092915050565b81516001600160a01b0390811682526020808401518216908301526040808401519091169082015260608083015162ffffff16908201526080918201519181019190915260a00190565b600060c08201905082518252602083015160208301526040830151604083015260608301516060830152608083015160020b608083015260a0830151151560a083015292915050565b62ffffff91909116815260200190565b918252602082015260400190565b63ffffffff91909116815260200190565b60405181810167ffffffffffffffff81118282101715614a3057fe5b604052919050565b600067ffffffffffffffff821115614a4c57fe5b5060209081020190565b6001600160a01b0381168114612d1457600080fd5b8015158114612d1457600080fd5b62ffffff81168114612d1457600080fd5b63ffffffff81168114612d1457600080fdfe5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e2032342062697473496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206469766973696f6e206f766572666c6f7753616665436173743a2076616c7565206d75737420626520706f736974697665206f722076616c756520646f65736e27742066697420696e20616e20323420626974735369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e203332206269747353616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220be3234a514fd0b9a7e7e6b8f99d80cd59e2390eca908e1006627a7e30d394a4464736f6c63430007060033", + "bytecode": "0x608060405234801561001057600080fd5b50614b21806100206000396000f3fe608060405234801561001057600080fd5b50600436106101335760003560e01c80631393a4691461013857806313af403514610161578063158626f714610176578063199387cc1461018b5780631e81ac331461019e57806329386b7b146101be5780634314ca1c146101de578063449323d8146101fe57806350709710146102115780635eb8a4e6146102315780636896fabf146102445780636c8381f81461024c578063715018a61461025457806380f57f111461025c5780638da5cb5b1461026f57806399e4a77114610277578063aa2a82941461028a578063b248c4ef14610292578063bc5920ba1461029a578063c575ff79146102a2578063c66b8ed2146102aa578063cb379aa2146102b2578063f8c8765e146102c5578063f9cbb471146102d8578063fa461e33146102fa575b600080fd5b61014b610146366004614113565b61030d565b60405161015891906144fa565b60405180910390f35b61017461016f366004613ced565b6104b6565b005b61017e610611565b604051610158919061436a565b610174610199366004613ced565b610620565b6101b16101ac366004613d25565b610702565b6040516101589190614723565b6101d16101cc366004613ced565b610ade565b60405161015891906148a1565b6101f16101ec3660046141d9565b610afe565b604051610158919061481e565b61017461020c366004613ced565b6111c5565b61022461021f366004613ced565b61126c565b60405161015891906144ec565b61017461023f366004613db8565b6112b1565b61017e61147f565b61017e61148e565b61017461149d565b61014b61026a366004613ced565b61153e565b61017e611610565b61017e610285366004613de5565b61161f565b61017e6116b3565b61017e6116c2565b6101746116d1565b61017e6117bd565b61017e6117cc565b61014b6102c0366004613d25565b6117db565b6101746102d3366004613d5d565b611992565b6102eb6102e6366004613ced565b611b10565b60405161015893929190614731565b610174610308366004613fc8565b611da1565b60ce548151602083015160405163165c4e2960e31b815260009384936001600160a01b039091169263b2e271489261034992919060040161437e565b60206040518083038186803b15801561036157600080fd5b505afa158015610375573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103999190613f8d565b9050600081156103b65760408401516000808412911214156103b9565b60005b60ce548551602087015160405163d50d01b760e01b81529394506000936001600160a01b039093169263d50d01b7926103f692909160040161437e565b60206040518083038186803b15801561040e57600080fd5b505afa158015610422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104469190613f8d565b9050816104545760006104ab565b6104ab6040518060c0016040528087600001516001600160a01b0316815260200187602001516001600160a01b03168152602001858152602001838152602001876040015181526020018760600151815250611f41565b93505050505b919050565b6104be611feb565b6001600160a01b03166104cf611610565b6001600160a01b031614610513576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610557576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156105a3576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b03828116911614156105ef576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b60d0546001600160a01b031690565b610628611feb565b6001600160a01b0316610639611610565b6001600160a01b03161461067d576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0381166106ac5760405162461bcd60e51b81526004016106a3906145e8565b60405180910390fd5b60ce80546001600160a01b0319166001600160a01b0383161790556040517f2b28168781da733c8a034f84683b9c955f156de5e07e24920b1348f51445d3e6906106f790839061436a565b60405180910390a150565b61070a613b8c565b609a54604051631246dbf560e01b81526001600160a01b0390911690631246dbf59061073a90859060040161436a565b60206040518083038186803b15801561075257600080fd5b505afa158015610766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078a9190613f71565b6107a65760405162461bcd60e51b81526004016106a390614562565b6000806107b284611b10565b60ce546040516359deb70960e11b815293965091945092506000916108d191889188916001600160a01b03169063b3bd6e12906107f5908590859060040161437e565b60206040518083038186803b15801561080d57600080fd5b505afa158015610821573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108459190613f8d565b60ce546040516331997f7b60e11b81526001600160a01b0390911690636332fef690610877908d908d9060040161437e565b60606040518083038186803b15801561088f57600080fd5b505afa1580156108a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c79190614042565b6040015188611fef565b9050801561098f5760ce546001600160a01b03166337724702876108f484612093565b6040518363ffffffff1660e01b8152600401610911929190614489565b600060405180830381600087803b15801561092b57600080fd5b505af115801561093f573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f733330d4aad1a878654bf888817b79bc6478013399be29fa3b8845c81305249e8360405161098691906144fa565b60405180910390a35b60006109996120bf565b6001600160a01b038716600090815260d360205260409020549091508114610a6d576001600160a01b038616600081815260d46020908152604080832089518a84015160d390945293829020600182019390935592835590849055519091907f54e4482fe1d38392effe5d53f0e9e72f60221a75a10cea7abbb684bfb03519bf90610a2790889088906148b1565b60405180910390a2610a388761126c565b6001600160a01b038816600090815260d160205260409020805460029290920b62ffffff1662ffffff19909216919091179055505b60ce548551604051632e4586c360e01b81526001600160a01b0390921691632e4586c391610aa1918b918b91600401614398565b600060405180830381600087803b158015610abb57600080fd5b505af1158015610acf573d6000803e3d6000fd5b50505050505050505b92915050565b6001600160a01b0316600090815260d5602052604090205462ffffff1690565b610b06613ba6565b610b0e6120c3565b60ce548251602084015160405163165c4e2960e31b81526000936001600160a01b03169263b2e2714892610b449260040161437e565b60206040518083038186803b158015610b5c57600080fd5b505afa158015610b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b949190613f8d565b905060008115610bb05760408401511515600083121415610bb3565b60005b905060008060cf60009054906101000a90046001600160a01b03166001600160a01b031663742833366040518163ffffffff1660e01b815260040160206040518083038186803b158015610c0657600080fd5b505afa158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3e919061430d565b905085608001518015610c5057508315155b15610d2857610c6286602001516120ff565b80610c7e5750610c7e8660200151600086128860a00151612117565b15610d23576000610c8d6120bf565b87516001600160a01b03908116600090815260d660209081526040808320828d015190941683529290522054909150811415610cdb5760405162461bcd60e51b81526004016106a3906145a4565b86516001600160a01b03908116600090815260d660209081526040808320828c015190941683529290522081905560a0870151610d189083612179565b60a088015250600191505b610d58565b8215610d5857610d3b86602001516120ff565b15610d585760405162461bcd60e51b81526004016106a390614540565b60ce548651602088015160405163d50d01b760e01b81526000936001600160a01b03169263d50d01b792610d8e9260040161437e565b60206040518083038186803b158015610da657600080fd5b505afa158015610dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dde9190613f8d565b90506000610deb8861218e565b90508760800151158015610dfc5750845b15610e3057610e1388602001518260c0015161256f565b15610e305760405162461bcd60e51b81526004016106a3906145c6565b60ce5460d05460a08301516001600160a01b03928316926337724702921690610e5890612616565b6040518363ffffffff1660e01b8152600401610e75929190614489565b600060405180830381600087803b158015610e8f57600080fd5b505af1158015610ea3573d6000803e3d6000fd5b5050505060ce60009054906101000a90046001600160a01b03166001600160a01b031663ea45a8f989600001518a602001518460400151610ef5610eea8760800151612616565b606088015190612662565b6040518563ffffffff1660e01b8152600401610f1494939291906143bc565b600060405180830381600087803b158015610f2e57600080fd5b505af1158015610f42573d6000803e3d6000fd5b5050505060008515610fa857610fa56040518060c001604052808b600001516001600160a01b031681526020018b602001516001600160a01b03168152602001898152602001858152602001846000015181526020018460200151815250611f41565b90505b801561101a5760ce54895160208b015160405163f0c7979760e01b81526001600160a01b039093169263f0c7979792610fe79290918690600401614398565b600060405180830381600087803b15801561100157600080fd5b505af1158015611015573d6000803e3d6000fd5b505050505b60ce54895160208b015160405163d50d01b760e01b81526000936001600160a01b03169263d50d01b7926110509260040161437e565b60206040518083038186803b15801561106857600080fd5b505afa15801561107c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a09190613f8d565b609a5460208c015160405163bbe4f6db60e01b8152929350600092611131926001600160a01b03169163bbe4f6db916110dc919060040161436a565b60206040518083038186803b1580156110f457600080fd5b505afa158015611108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112c9190613d09565b6126c7565b5050505050506001600160a01b0316905060405180610140016040528061115b866000015161275a565b815260200161116d866020015161275a565b81526020018560400151815260200185606001518152602001856080015181526020018381526020018481526020018281526020018560c0015160020b81526020018815158152509950505050505050505050919050565b6111cd611feb565b6001600160a01b03166111de611610565b6001600160a01b031614611222576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b606780546001600160a01b0319166001600160a01b0383169081179091556040517fd0654f5900f9e7e4e605a19334306e6a2786bbf960ac0484a4c12feb6428fe2f90600090a250565b609a5460405163bbe4f6db60e01b815260009182916112a3916001600160a01b03169063bbe4f6db906110dc90879060040161436a565b509398975050505050505050565b6112b9611feb565b6001600160a01b03166112ca611610565b6001600160a01b03161461130e576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b611320826001600160a01b0316612783565b61133c5760405162461bcd60e51b81526004016106a3906146a2565b609a54604051631246dbf560e01b81526001600160a01b0390911690631246dbf59061136c90859060040161436a565b60206040518083038186803b15801561138457600080fd5b505afa158015611398573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113bc9190613f71565b6113d85760405162461bcd60e51b81526004016106a390614562565b6113f16113ec620d89e8620d89e719612662565b612789565b62ffffff168162ffffff16111561141a5760405162461bcd60e51b81526004016106a390614627565b6001600160a01b038216600081815260d5602052604090819020805462ffffff191662ffffff8516179055517f998d553f208e581d188c66da9e7d19bac5ca64d002753791210c4271c8e955d0906114739084906148a1565b60405180910390a25050565b60ce546001600160a01b031690565b6034546001600160a01b031690565b6114a5611feb565b6001600160a01b03166114b6611610565b6001600160a01b0316146114fa576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b031690600080516020614a33833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b60ce546040516357ba739b60e11b815260009182916001600160a01b039091169063af74e7369061157390869060040161436a565b60006040518083038186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115c79190810190613e12565b805190915060005b81811015611608576115fe6115f7868584815181106115ea57fe5b60200260200101516117db565b85906127cd565b93506001016115cf565b505050919050565b6033546001600160a01b031690565b609a5460405163bbe4f6db60e01b81526000916116ac916001600160a01b039091169063bbe4f6db9061165690879060040161436a565b60206040518083038186803b15801561166e57600080fd5b505afa158015611682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a69190613d09565b83612832565b9392505050565b60cf546001600160a01b031690565b60cd546001600160a01b031690565b6034546001600160a01b0316611716576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b61171e611feb565b6034546001600160a01b03908116911614611769576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b039283169290911690600080516020614a3383398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6067546001600160a01b031690565b609a546001600160a01b031690565b6000806117e783611b10565b505060cd546040516347b52fb760e01b81529192506000916001600160a01b03909116906347b52fb790611823908890889087906004016143e5565b60206040518083038186803b15801561183b57600080fd5b505afa15801561184f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118739190613f8d565b60ce546040516359deb70960e11b8152919250611989916001600160a01b039091169063b3bd6e12906118ac908990899060040161437e565b60206040518083038186803b1580156118c457600080fd5b505afa1580156118d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fc9190613f8d565b60ce546040516331997f7b60e11b81526001600160a01b0390911690636332fef69061192e908a908a9060040161437e565b60606040518083038186803b15801561194657600080fd5b505afa15801561195a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197e9190614042565b604001518484612996565b95945050505050565b600054610100900460ff16806119ab57506119ab6129cb565b806119b9575060005460ff16155b6119f45760405162461bcd60e51b815260040180806020018281038252602e8152602001806149a1602e913960400191505060405180910390fd5b600054610100900460ff16158015611a1f576000805460ff1961ff0019909116610100171660011790555b611a276129dc565b611a3085612a86565b611a42846001600160a01b0316612783565b611a5e5760405162461bcd60e51b81526004016106a390614607565b611a70836001600160a01b0316612783565b611a8c5760405162461bcd60e51b81526004016106a3906146c2565b611a9e826001600160a01b0316612783565b611aba5760405162461bcd60e51b81526004016106a390614702565b60d080546001600160a01b038085166001600160a01b03199283161790925560cd805487841690831617905560cf8054928616929091169190911790558015611b09576000805461ff00191690555b5050505050565b611b18613b8c565b600080600080611b266120bf565b6001600160a01b038716600090815260d2602052604090205490915015611c1f5760cf60009054906101000a90046001600160a01b03166001600160a01b0316633e742e3b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9557600080fd5b505afa158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190614329565b6001600160a01b038716600090815260d2602052604081205491935090611bfe90611bf9908490612b4c565b612ba9565b90508063ffffffff168363ffffffff1611611c195782611c1b565b805b9250505b6000611c3c611c2e888561161f565b6001600160a01b0316612bee565b9050611c4781612c08565b604051631208064760e01b81529095506001600160a01b03881690631208064790611c769086906004016148bf565b60206040518083038186803b158015611c8e57600080fd5b505afa158015611ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc69190613f8d565b6001600160a01b038816600090815260d3602090815260408083205460d49092529091209195509083821480611cfa575081155b15611d1e576040805180820190915281548152600182015460208201529750611d95565b6000611d4d611d35611d308786612b4c565b612616565b611d4786611d428b612c21565b612c3a565b90612d44565b8254909150611d5c90826127cd565b8952611d8e611d8382600160601b611d758e600061161f565b6001600160a01b0316612ded565b6001840154906127cd565b60208a0152505b50505050509193909250565b6000611dab611feb565b90506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611de857600080fd5b505afa158015611dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e209190613d09565b609a5460405163bbe4f6db60e01b81529192506001600160a01b03169063bbe4f6db90611e5190849060040161436a565b60206040518083038186803b158015611e6957600080fd5b505afa158015611e7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea19190613d09565b6001600160a01b0316826001600160a01b031614611ed15760405162461bcd60e51b81526004016106a39061464b565b60675460405163fa461e3360e01b81526001600160a01b039091169063fa461e3390611f07908990899089908990600401614503565b600060405180830381600087803b158015611f2157600080fd5b505af1158015611f35573d6000803e3d6000fd5b50505050505050505050565b600080611f6f611f54846080015161275a565b670de0b6b3a7640000611f6a866040015161275a565b612e91565b90506000670de0b6b3a76400008211611fbe576000611fa4611f9084612616565b606087015190670de0b6b3a7640000612ded565b60a0860151909150611fb690826127cd565b9150506116ac565b60a0840151600090611fd990670de0b6b3a764000085612ded565b606086015190915061198990826127cd565b3390565b60cd54604051633fe1339b60e11b815260009182916001600160a01b0390911690637fc2673690612028908a908a9088906004016143e5565b602060405180830381600087803b15801561204257600080fd5b505af1158015612056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207a9190613f8d565b905061208885858584612996565b979650505050505050565b6000600160ff1b82136120b85760405162461bcd60e51b81526004016106a39061466c565b5060000390565b4290565b6067546001600160a01b03166120d7611feb565b6001600160a01b0316146120fd5760405162461bcd60e51b81526004016106a390614583565b565b60008061210b8361126c565b90506116ac838261256f565b60006121718461216c6040518060a00160405280886001600160a01b0316815260200187151515815260200187151515815260200186815260200161215c8989612f40565b6001600160a01b03169052612f93565b61256f565b949350505050565b60006116ac838362ffffff16620f4240612e91565b612196613bfe565b609a54602083015160405163033e16f360e21b81526000926001600160a01b031691630cf85bcc916121cb919060040161436a565b60806040518083038186803b1580156121e357600080fd5b505afa1580156121f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221b9190614096565b9050600080612241856040015186606001518760a001518660200151876040015161313b565b9150915060006122548660200151611b10565b50509050600060cd60009054906101000a90046001600160a01b03166001600160a01b031663a3bf0df86040518061010001604052808a602001516001600160a01b031681526020018a60400151151581526020016001151581526020018681526020018a60c001516001600160a01b03168152602001886020015162ffffff168152602001886040015162ffffff168152602001858152506040518263ffffffff1660e01b81526004016123099190614750565b606060405180830381600087803b15801561232357600080fd5b505af1158015612337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235b9190614180565b905060006124576040518060e0016040528088600001516001600160a01b03168152602001606760009054906101000a90046001600160a01b03166001600160a01b031681526020018a60400151151581526020018a60600151151581526020018781526020018a60c001516001600160a01b031681526020016040518060a001604052808c600001516001600160a01b031681526020018c602001516001600160a01b031681526020018a600001516001600160a01b031681526020018a6040015162ffffff168152602001866020015181525060405160200161244091906147d4565b60405160208183030381529060405281525061318c565b90506000808960400151156124985761248261247d84600001518a6040015160006133b6565b6133fd565b91506124918360200151612616565b90506124bf565b82516124a390612616565b91506124bc61247d84602001518a6040015160006133b6565b90505b6020808b01516001600160a01b0316600090815260d29091526040902054612508576124e96120bf565b6020808c01516001600160a01b0316600090815260d290915260409020555b6040518060e001604052808381526020016125306125298760200151612616565b8490612662565b81526020018381526020018281526020018560200151815260200185604001518152602001856000015160020b81525098505050505050505050919050565b6001600160a01b038216600090815260d5602052604081205462ffffff168061259c576000915050610ad8565b6001600160a01b038416600090815260d16020526040812054600290810b91906125d7906125d29084900b62ffffff86166127cd565b613411565b905060006125f16125d2600285900b62ffffff8716612662565b90508060020b8660020b128061208857508160020b8660020b13979650505050505050565b60006001600160ff1b0382111561265e5760405162461bcd60e51b8152600401808060200182810382526028815260200180614aa06028913960400191505060405180910390fd5b5090565b60008183038183128015906126775750838113155b8061268c575060008312801561268c57508381135b6116ac5760405162461bcd60e51b8152600401808060200182810382526024815260200180614ac86024913960400191505060405180910390fd5b6000806000806000806000876001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561270b57600080fd5b505afa15801561271f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612743919061427a565b959e949d50929b5090995097509550909350915050565b60008082121561277a5761277561277083612093565b613454565b610ad8565b610ad882613454565b3b151590565b8062ffffff811681146104b15760405162461bcd60e51b81526004018080602001828103825260438152602001806149f06043913960600191505060405180910390fd5b60008282018183128015906127e25750838112155b806127f757506000831280156127f757508381125b6116ac5760405162461bcd60e51b81526004018080602001828103825260218152602001806149576021913960400191505060405180910390fd5b6000600a8263ffffffff16101561285e57600061284e846126c7565b50949650610ad895505050505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061288d57fe5b602002602001019063ffffffff16908163ffffffff16815250506000816001815181106128b657fe5b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd906128fa9085906004016144a2565b60006040518083038186803b15801561291257600080fd5b505afa158015612926573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261294e9190810190613eaa565b5090506119898463ffffffff168260008151811061296857fe5b60200260200101518360018151811061297d57fe5b60200260200101510360060b8161299057fe5b056134ab565b6000806129a8868560000151876137d2565b90506129c1620151806129bb85846127cd565b906137ec565b9695505050505050565b60006129d630612783565b15905090565b600054610100900460ff16806129f557506129f56129cb565b80612a03575060005460ff16155b612a3e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806149a1602e913960400191505060405180910390fd5b600054610100900460ff16158015612a69576000805460ff1961ff0019909116610100171660011790555b612a716138a4565b8015612a83576000805461ff00191690555b50565b600054610100900460ff1680612a9f5750612a9f6129cb565b80612aad575060005460ff16155b612ae85760405162461bcd60e51b815260040180806020018281038252602e8152602001806149a1602e913960400191505060405180910390fd5b600054610100900460ff16158015612b13576000805460ff1961ff0019909116610100171660011790555b612b1b613993565b609a80546001600160a01b0319166001600160a01b0384161790558015612b48576000805461ff00191690555b5050565b600082821115612ba3576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b8063ffffffff811681146104b15760405162461bcd60e51b8152600401808060200182810382526026815260200180614a7a6026913960400191505060405180910390fd5b6000610ad86001600160a01b03831680600160601b612e91565b6000610ad882670de0b6b3a7640000600160601b612e91565b6000610ad882600160601b670de0b6b3a7640000612e91565b60008060cf60009054906101000a90046001600160a01b03166001600160a01b0316636e1d2dd26040518163ffffffff1660e01b815260040160206040518083038186803b158015612c8b57600080fd5b505afa158015612c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc3919061430d565b90506000612cd18483612179565b9050600084861115612d0e57612ce78686612b4c565b9050818111612cfe57612cf981612616565b612d07565b612d0782612616565b9350612d3b565b612d188587612b4c565b9050818111612d2f57612d2a816133fd565b612d38565b612d38826133fd565b93505b50505092915050565b600082612d5357506000610ad8565b82600019148015612d675750600160ff1b82145b15612da35760405162461bcd60e51b8152600401808060200182810382526027815260200180614a536027913960400191505060405180910390fd5b82820282848281612db057fe5b05146116ac5760405162461bcd60e51b8152600401808060200182810382526027815260200180614a536027913960400191505060405180910390fd5b60008060008512612dfe5784612e07565b612e0785612093565b90506000808512612e185784612e21565b612e2185612093565b905060008087128015612e345750600086135b80612e4a5750600087138015612e4a5750600086125b612e55576000612e58565b60015b90506000612e67848488612e91565b905081612e7c57612e7781612616565b612e85565b612e85816133fd565b98975050505050505050565b6000808060001985870986860292508281109083900303905080612ec75760008411612ebc57600080fd5b5082900490506116ac565b808411612ed357600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6001600160a01b038216600090815260d1602090815260408083205460d590925282205460029190910b9062ffffff168284612f8157600182840303612f88565b8183016001015b9050612d38816134ab565b609a54815160405163033e16f360e21b815260009283926001600160a01b0390911691630cf85bcc91612fc89160040161436a565b60806040518083038186803b158015612fe057600080fd5b505afa158015612ff4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130189190614096565b90506000816020015190506000826040015190506000613047866020015187604001518860600151868661313b565b60cd5460408051610100810182528a516001600160a01b0390811682526020808d01511515818401526000838501819052606084018790526080808f015184169085015262ffffff808c1660a08601528a1660c08501528451808601865281815291820181905260e08401919091529251631477e1bf60e31b815294965091945091169163a3bf0df8916130dd91600401614750565b606060405180830381600087803b1580156130f757600080fd5b505af115801561310b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312f9190614180565b51979650505050505050565b60008061314b8787878787613a28565b9150866131605761315b85612616565b613169565b61316982612616565b90508561317e5761317981612093565b613180565b805b90509550959350505050565b613194613b8c565b600082606001516131b1576131ac83608001516133fd565b6131be565b6131be8360800151612616565b905060008084600001516001600160a01b031663128acb0886602001518760400151868960a001516001600160a01b0316600014613200578960a0015161322a565b89604001516132235773fffd8963efd1fc6a506488495d951d5263988d2561322a565b6401000276a45b8a60c001516040518663ffffffff1660e01b815260040161324f95949392919061440a565b6040805180830381600087803b15801561326857600080fd5b505af115801561327c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a09190613fa5565b915091506000806132b08461275a565b6132b98461275a565b9150915060008760400151151588606001511515146132d857816132da565b825b905087606001511580156132f9575060a08801516001600160a01b0316155b1561339a57600a8860800151821161331f57608089015161331a9083612b4c565b61332f565b608089015161332f908390612b4c565b1061334c5760405162461bcd60e51b81526004016106a3906146e2565b8760400151613373576040518060400160405280896080015181526020018381525061338d565b604051806040016040528084815260200189608001518152505b96505050505050506104b1565b5060408051808201909152918252602082015295945050505050565b6000816133e1576133dc846133d3620f424062ffffff8716612b4c565b620f4240612e91565b612171565b61217184620f42406133f88162ffffff8816612b4c565b613a71565b600061340882612616565b60000392915050565b80600281900b81146104b15760405162461bcd60e51b81526004018080602001828103825260298152602001806149786029913960400191505060405180910390fd5b60008082121561265e576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b60008060008360020b126134c2578260020b6134ca565b8260020b6000035b9050620d89e8811115613508576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661351c57600160801b61352e565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b031690506002821615613558576ffff97272373d413259a46990580e213a0260801c5b6004821615613577576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613596576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156135b5576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156135d4576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156135f3576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613612576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613632576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613652576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613672576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613692576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156136b2576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156136d2576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156136f2576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613712576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613733576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613753576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613772576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561378f576b048a170391f7dc42444e8fa20260801c5b60008460020b13156137aa5780600019816137a657fe5b0490505b600160201b8106156137bd5760016137c0565b60005b60ff16602082901c0192505050919050565b6000612171846137e28585612662565b600160601b612ded565b600081613840576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b816000191480156138545750600160ff1b83145b156138905760405162461bcd60e51b81526004018080602001828103825260218152602001806149cf6021913960400191505060405180910390fd5b600082848161389b57fe5b05949350505050565b600054610100900460ff16806138bd57506138bd6129cb565b806138cb575060005460ff16155b6139065760405162461bcd60e51b815260040180806020018281038252602e8152602001806149a1602e913960400191505060405180910390fd5b600054610100900460ff16158015613931576000805460ff1961ff0019909116610100171660011790555b613939613993565b6000613943611feb565b603380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020614a33833981519152908290a3508015612a83576000805461ff001916905550565b600054610100900460ff16806139ac57506139ac6129cb565b806139ba575060005460ff16155b6139f55760405162461bcd60e51b815260040180806020018281038252602e8152602001806149a1602e913960400191505060405180910390fd5b600054610100900460ff16158015613a20576000805460ff1961ff0019909116610100171660011790555b612a71613aab565b60008515613a595784613a4657613a41848460016133b6565b613a52565b613a52848360016133b6565b9050611989565b84613a6457836129c1565b6129c18483856001613b4b565b6000613a7e848484612e91565b905060008280613a8a57fe5b84860911156116ac576000198110613aa157600080fd5b6001019392505050565b600054610100900460ff1680613ac45750613ac46129cb565b80613ad2575060005460ff16155b613b0d5760405162461bcd60e51b815260040180806020018281038252602e8152602001806149a1602e913960400191505060405180910390fd5b600054610100900460ff16158015612a71576000805460ff1961ff0019909116610100171660011790558015612a83576000805461ff001916905550565b600080600083613b5c578585613b5f565b84865b909250905061208887613b7a620f424062ffffff8616612b4c565b6133f8620f424062ffffff8616612b4c565b604051806040016040528060008152602001600081525090565b6040518061014001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060020b81526020016000151581525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060020b81525090565b80356104b181614910565b600082601f830112613c59578081fd5b81516020613c6e613c69836148f3565b6148d0565b8281528181019085830183850287018401881015613c8a578586fd5b855b85811015613cb1578151613c9f81614910565b84529284019290840190600101613c8c565b5090979650505050505050565b80356104b181614925565b8051600281900b81146104b157600080fd5b805161ffff811681146104b157600080fd5b600060208284031215613cfe578081fd5b81356116ac81614910565b600060208284031215613d1a578081fd5b81516116ac81614910565b60008060408385031215613d37578081fd5b8235613d4281614910565b91506020830135613d5281614910565b809150509250929050565b60008060008060808587031215613d72578182fd5b8435613d7d81614910565b93506020850135613d8d81614910565b92506040850135613d9d81614910565b91506060850135613dad81614910565b939692955090935050565b60008060408385031215613dca578182fd5b8235613dd581614910565b91506020830135613d5281614933565b60008060408385031215613df7578182fd5b8235613e0281614910565b91506020830135613d5281614944565b60006020808385031215613e24578182fd5b82516001600160401b03811115613e39578283fd5b8301601f81018513613e49578283fd5b8051613e57613c69826148f3565b8181528381019083850185840285018601891015613e73578687fd5b8694505b83851015613e9e578051613e8a81614910565b835260019490940193918501918501613e77565b50979650505050505050565b60008060408385031215613ebc578182fd5b82516001600160401b0380821115613ed2578384fd5b818501915085601f830112613ee5578384fd5b81516020613ef5613c69836148f3565b82815281810190858301838502870184018b1015613f11578889fd5b8896505b84871015613f415780518060060b8114613f2d57898afd5b835260019690960195918301918301613f15565b5091880151919650909350505080821115613f5a578283fd5b50613f6785828601613c49565b9150509250929050565b600060208284031215613f82578081fd5b81516116ac81614925565b600060208284031215613f9e578081fd5b5051919050565b60008060408385031215613fb7578182fd5b505080516020909101519092909150565b60008060008060608587031215613fdd578182fd5b843593506020850135925060408501356001600160401b0380821115614001578384fd5b818701915087601f830112614014578384fd5b813581811115614022578485fd5b886020828501011115614033578485fd5b95989497505060200194505050565b600060608284031215614053578081fd5b604051606081016001600160401b038111828210171561406f57fe5b80604052508251815260208301516020820152604083015160408201528091505092915050565b6000608082840312156140a7578081fd5b604051608081016001600160401b03811182821017156140c357fe5b60405282516140d181614910565b815260208301516140e181614933565b602082015260408301516140f481614933565b6040820152606083015161410781614933565b60608201529392505050565b600060808284031215614124578081fd5b604051608081016001600160401b038111828210171561414057fe5b604052823561414e81614910565b8152602083013561415e81614910565b6020820152604083810135908201526060928301359281019290925250919050565b600060608284031215614191578081fd5b604051606081016001600160401b03811182821017156141ad57fe5b6040526141b983613cc9565b815260208301516020820152604083015160408201528091505092915050565b600060e082840312156141ea578081fd5b60405160e081016001600160401b038111828210171561420657fe5b60405261421283613c3e565b815261422060208401613c3e565b602082015261423160408401613cbe565b604082015261424260608401613cbe565b606082015261425360808401613cbe565b608082015260a083013560a082015261426e60c08401613c3e565b60c08201529392505050565b600080600080600080600060e0888a031215614294578485fd5b875161429f81614910565b96506142ad60208901613cc9565b95506142bb60408901613cdb565b94506142c960608901613cdb565b93506142d760808901613cdb565b925060a088015160ff811681146142ec578283fd5b60c08901519092506142fd81614925565b8091505092959891949750929550565b60006020828403121561431e578081fd5b81516116ac81614933565b60006020828403121561433a578081fd5b81516116ac81614944565b15159052565b60020b9052565b80518252602090810151910152565b62ffffff169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b03848116825283166020820152608081016121716040830184614352565b600060018060a01b038088168352602087151581850152866040850152818616606085015260a06080850152845191508160a0850152825b8281101561445e5785810182015185820160c001528101614442565b8281111561446f578360c084870101525b5050601f01601f19169190910160c0019695505050505050565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156144e057835163ffffffff16835292840192918401916001016144be565b50909695505050505050565b60029190910b815260200190565b90815260200190565b60008582528460208301526060604083015282606083015282846080840137818301608090810191909152601f909201601f191601019392505050565b60208082526008908201526745585f4f504c425360c01b604082015260600190565b60208082526007908201526645585f42544e4560c81b604082015260600190565b6020808252600790820152660869088be9e86960cb1b604082015260600190565b60208082526008908201526745585f414f504c4f60c01b604082015260600190565b60208082526008908201526745585f4f504c415360c01b604082015260600190565b6020808252600590820152640455f4142360dc1b604082015260600190565b602080825260069082015265455f4f424e4360d01b604082015260600190565b6020808252600a908201526922ac2fa6aa21a627a7a960b11b604082015260600190565b6020808252600790820152662aa1a12fa321ab60c91b604082015260600190565b6020808252601c908201527b506572704d6174683a20696e76657273696f6e206f766572666c6f7760201b604082015260600190565b60208082526006908201526545585f414e4360d01b604082015260600190565b602080825260069082015265455f43484e4360d01b604082015260600190565b60208082526006908201526555425f554f4160d01b604082015260600190565b602080825260079082015266455f4946414e4360c81b604082015260600190565b60408101610ad88284614352565b6080810161473f8286614352565b604082019390935260600152919050565b60006101208201905060018060a01b03808451168352602084015115156020840152604084015115156040840152606084015160608401528060808501511660808401525060a08301516147a760a0840182614361565b5060c08301516147ba60c0840182614361565b5060e08301516147cd60e0840182614352565b5092915050565b81516001600160a01b0390811682526020808401518216908301526040808401519091169082015260608083015162ffffff16908201526080918201519181019190915260a00190565b600061014082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401516148848285018261434b565b50506101208084015161489982850182614345565b505092915050565b62ffffff91909116815260200190565b918252602082015260400190565b63ffffffff91909116815260200190565b6040518181016001600160401b03811182821017156148eb57fe5b604052919050565b60006001600160401b0382111561490657fe5b5060209081020190565b6001600160a01b0381168114612a8357600080fd5b8015158114612a8357600080fd5b62ffffff81168114612a8357600080fd5b63ffffffff81168114612a8357600080fdfe5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e2032342062697473496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206469766973696f6e206f766572666c6f7753616665436173743a2076616c7565206d75737420626520706f736974697665206f722076616c756520646f65736e27742066697420696e20616e20323420626974738be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e203332206269747353616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220c9d4b09d6c265ea2676384dd5f029b10c587d09e09ee8ae52911b06edda87f8a64736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101335760003560e01c80631393a4691461013857806313af403514610161578063158626f714610176578063199387cc1461018b5780631e81ac331461019e57806329386b7b146101be5780634314ca1c146101de578063449323d8146101fe57806350709710146102115780635eb8a4e6146102315780636896fabf146102445780636c8381f81461024c578063715018a61461025457806380f57f111461025c5780638da5cb5b1461026f57806399e4a77114610277578063aa2a82941461028a578063b248c4ef14610292578063bc5920ba1461029a578063c575ff79146102a2578063c66b8ed2146102aa578063cb379aa2146102b2578063f8c8765e146102c5578063f9cbb471146102d8578063fa461e33146102fa575b600080fd5b61014b610146366004614113565b61030d565b60405161015891906144fa565b60405180910390f35b61017461016f366004613ced565b6104b6565b005b61017e610611565b604051610158919061436a565b610174610199366004613ced565b610620565b6101b16101ac366004613d25565b610702565b6040516101589190614723565b6101d16101cc366004613ced565b610ade565b60405161015891906148a1565b6101f16101ec3660046141d9565b610afe565b604051610158919061481e565b61017461020c366004613ced565b6111c5565b61022461021f366004613ced565b61126c565b60405161015891906144ec565b61017461023f366004613db8565b6112b1565b61017e61147f565b61017e61148e565b61017461149d565b61014b61026a366004613ced565b61153e565b61017e611610565b61017e610285366004613de5565b61161f565b61017e6116b3565b61017e6116c2565b6101746116d1565b61017e6117bd565b61017e6117cc565b61014b6102c0366004613d25565b6117db565b6101746102d3366004613d5d565b611992565b6102eb6102e6366004613ced565b611b10565b60405161015893929190614731565b610174610308366004613fc8565b611da1565b60ce548151602083015160405163165c4e2960e31b815260009384936001600160a01b039091169263b2e271489261034992919060040161437e565b60206040518083038186803b15801561036157600080fd5b505afa158015610375573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103999190613f8d565b9050600081156103b65760408401516000808412911214156103b9565b60005b60ce548551602087015160405163d50d01b760e01b81529394506000936001600160a01b039093169263d50d01b7926103f692909160040161437e565b60206040518083038186803b15801561040e57600080fd5b505afa158015610422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104469190613f8d565b9050816104545760006104ab565b6104ab6040518060c0016040528087600001516001600160a01b0316815260200187602001516001600160a01b03168152602001858152602001838152602001876040015181526020018760600151815250611f41565b93505050505b919050565b6104be611feb565b6001600160a01b03166104cf611610565b6001600160a01b031614610513576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610557576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156105a3576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b03828116911614156105ef576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b60d0546001600160a01b031690565b610628611feb565b6001600160a01b0316610639611610565b6001600160a01b03161461067d576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0381166106ac5760405162461bcd60e51b81526004016106a3906145e8565b60405180910390fd5b60ce80546001600160a01b0319166001600160a01b0383161790556040517f2b28168781da733c8a034f84683b9c955f156de5e07e24920b1348f51445d3e6906106f790839061436a565b60405180910390a150565b61070a613b8c565b609a54604051631246dbf560e01b81526001600160a01b0390911690631246dbf59061073a90859060040161436a565b60206040518083038186803b15801561075257600080fd5b505afa158015610766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078a9190613f71565b6107a65760405162461bcd60e51b81526004016106a390614562565b6000806107b284611b10565b60ce546040516359deb70960e11b815293965091945092506000916108d191889188916001600160a01b03169063b3bd6e12906107f5908590859060040161437e565b60206040518083038186803b15801561080d57600080fd5b505afa158015610821573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108459190613f8d565b60ce546040516331997f7b60e11b81526001600160a01b0390911690636332fef690610877908d908d9060040161437e565b60606040518083038186803b15801561088f57600080fd5b505afa1580156108a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c79190614042565b6040015188611fef565b9050801561098f5760ce546001600160a01b03166337724702876108f484612093565b6040518363ffffffff1660e01b8152600401610911929190614489565b600060405180830381600087803b15801561092b57600080fd5b505af115801561093f573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f733330d4aad1a878654bf888817b79bc6478013399be29fa3b8845c81305249e8360405161098691906144fa565b60405180910390a35b60006109996120bf565b6001600160a01b038716600090815260d360205260409020549091508114610a6d576001600160a01b038616600081815260d46020908152604080832089518a84015160d390945293829020600182019390935592835590849055519091907f54e4482fe1d38392effe5d53f0e9e72f60221a75a10cea7abbb684bfb03519bf90610a2790889088906148b1565b60405180910390a2610a388761126c565b6001600160a01b038816600090815260d160205260409020805460029290920b62ffffff1662ffffff19909216919091179055505b60ce548551604051632e4586c360e01b81526001600160a01b0390921691632e4586c391610aa1918b918b91600401614398565b600060405180830381600087803b158015610abb57600080fd5b505af1158015610acf573d6000803e3d6000fd5b50505050505050505b92915050565b6001600160a01b0316600090815260d5602052604090205462ffffff1690565b610b06613ba6565b610b0e6120c3565b60ce548251602084015160405163165c4e2960e31b81526000936001600160a01b03169263b2e2714892610b449260040161437e565b60206040518083038186803b158015610b5c57600080fd5b505afa158015610b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b949190613f8d565b905060008115610bb05760408401511515600083121415610bb3565b60005b905060008060cf60009054906101000a90046001600160a01b03166001600160a01b031663742833366040518163ffffffff1660e01b815260040160206040518083038186803b158015610c0657600080fd5b505afa158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3e919061430d565b905085608001518015610c5057508315155b15610d2857610c6286602001516120ff565b80610c7e5750610c7e8660200151600086128860a00151612117565b15610d23576000610c8d6120bf565b87516001600160a01b03908116600090815260d660209081526040808320828d015190941683529290522054909150811415610cdb5760405162461bcd60e51b81526004016106a3906145a4565b86516001600160a01b03908116600090815260d660209081526040808320828c015190941683529290522081905560a0870151610d189083612179565b60a088015250600191505b610d58565b8215610d5857610d3b86602001516120ff565b15610d585760405162461bcd60e51b81526004016106a390614540565b60ce548651602088015160405163d50d01b760e01b81526000936001600160a01b03169263d50d01b792610d8e9260040161437e565b60206040518083038186803b158015610da657600080fd5b505afa158015610dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dde9190613f8d565b90506000610deb8861218e565b90508760800151158015610dfc5750845b15610e3057610e1388602001518260c0015161256f565b15610e305760405162461bcd60e51b81526004016106a3906145c6565b60ce5460d05460a08301516001600160a01b03928316926337724702921690610e5890612616565b6040518363ffffffff1660e01b8152600401610e75929190614489565b600060405180830381600087803b158015610e8f57600080fd5b505af1158015610ea3573d6000803e3d6000fd5b5050505060ce60009054906101000a90046001600160a01b03166001600160a01b031663ea45a8f989600001518a602001518460400151610ef5610eea8760800151612616565b606088015190612662565b6040518563ffffffff1660e01b8152600401610f1494939291906143bc565b600060405180830381600087803b158015610f2e57600080fd5b505af1158015610f42573d6000803e3d6000fd5b5050505060008515610fa857610fa56040518060c001604052808b600001516001600160a01b031681526020018b602001516001600160a01b03168152602001898152602001858152602001846000015181526020018460200151815250611f41565b90505b801561101a5760ce54895160208b015160405163f0c7979760e01b81526001600160a01b039093169263f0c7979792610fe79290918690600401614398565b600060405180830381600087803b15801561100157600080fd5b505af1158015611015573d6000803e3d6000fd5b505050505b60ce54895160208b015160405163d50d01b760e01b81526000936001600160a01b03169263d50d01b7926110509260040161437e565b60206040518083038186803b15801561106857600080fd5b505afa15801561107c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a09190613f8d565b609a5460208c015160405163bbe4f6db60e01b8152929350600092611131926001600160a01b03169163bbe4f6db916110dc919060040161436a565b60206040518083038186803b1580156110f457600080fd5b505afa158015611108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112c9190613d09565b6126c7565b5050505050506001600160a01b0316905060405180610140016040528061115b866000015161275a565b815260200161116d866020015161275a565b81526020018560400151815260200185606001518152602001856080015181526020018381526020018481526020018281526020018560c0015160020b81526020018815158152509950505050505050505050919050565b6111cd611feb565b6001600160a01b03166111de611610565b6001600160a01b031614611222576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b606780546001600160a01b0319166001600160a01b0383169081179091556040517fd0654f5900f9e7e4e605a19334306e6a2786bbf960ac0484a4c12feb6428fe2f90600090a250565b609a5460405163bbe4f6db60e01b815260009182916112a3916001600160a01b03169063bbe4f6db906110dc90879060040161436a565b509398975050505050505050565b6112b9611feb565b6001600160a01b03166112ca611610565b6001600160a01b03161461130e576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b611320826001600160a01b0316612783565b61133c5760405162461bcd60e51b81526004016106a3906146a2565b609a54604051631246dbf560e01b81526001600160a01b0390911690631246dbf59061136c90859060040161436a565b60206040518083038186803b15801561138457600080fd5b505afa158015611398573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113bc9190613f71565b6113d85760405162461bcd60e51b81526004016106a390614562565b6113f16113ec620d89e8620d89e719612662565b612789565b62ffffff168162ffffff16111561141a5760405162461bcd60e51b81526004016106a390614627565b6001600160a01b038216600081815260d5602052604090819020805462ffffff191662ffffff8516179055517f998d553f208e581d188c66da9e7d19bac5ca64d002753791210c4271c8e955d0906114739084906148a1565b60405180910390a25050565b60ce546001600160a01b031690565b6034546001600160a01b031690565b6114a5611feb565b6001600160a01b03166114b6611610565b6001600160a01b0316146114fa576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b031690600080516020614a33833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b60ce546040516357ba739b60e11b815260009182916001600160a01b039091169063af74e7369061157390869060040161436a565b60006040518083038186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115c79190810190613e12565b805190915060005b81811015611608576115fe6115f7868584815181106115ea57fe5b60200260200101516117db565b85906127cd565b93506001016115cf565b505050919050565b6033546001600160a01b031690565b609a5460405163bbe4f6db60e01b81526000916116ac916001600160a01b039091169063bbe4f6db9061165690879060040161436a565b60206040518083038186803b15801561166e57600080fd5b505afa158015611682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a69190613d09565b83612832565b9392505050565b60cf546001600160a01b031690565b60cd546001600160a01b031690565b6034546001600160a01b0316611716576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b61171e611feb565b6034546001600160a01b03908116911614611769576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b039283169290911690600080516020614a3383398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6067546001600160a01b031690565b609a546001600160a01b031690565b6000806117e783611b10565b505060cd546040516347b52fb760e01b81529192506000916001600160a01b03909116906347b52fb790611823908890889087906004016143e5565b60206040518083038186803b15801561183b57600080fd5b505afa15801561184f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118739190613f8d565b60ce546040516359deb70960e11b8152919250611989916001600160a01b039091169063b3bd6e12906118ac908990899060040161437e565b60206040518083038186803b1580156118c457600080fd5b505afa1580156118d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fc9190613f8d565b60ce546040516331997f7b60e11b81526001600160a01b0390911690636332fef69061192e908a908a9060040161437e565b60606040518083038186803b15801561194657600080fd5b505afa15801561195a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197e9190614042565b604001518484612996565b95945050505050565b600054610100900460ff16806119ab57506119ab6129cb565b806119b9575060005460ff16155b6119f45760405162461bcd60e51b815260040180806020018281038252602e8152602001806149a1602e913960400191505060405180910390fd5b600054610100900460ff16158015611a1f576000805460ff1961ff0019909116610100171660011790555b611a276129dc565b611a3085612a86565b611a42846001600160a01b0316612783565b611a5e5760405162461bcd60e51b81526004016106a390614607565b611a70836001600160a01b0316612783565b611a8c5760405162461bcd60e51b81526004016106a3906146c2565b611a9e826001600160a01b0316612783565b611aba5760405162461bcd60e51b81526004016106a390614702565b60d080546001600160a01b038085166001600160a01b03199283161790925560cd805487841690831617905560cf8054928616929091169190911790558015611b09576000805461ff00191690555b5050505050565b611b18613b8c565b600080600080611b266120bf565b6001600160a01b038716600090815260d2602052604090205490915015611c1f5760cf60009054906101000a90046001600160a01b03166001600160a01b0316633e742e3b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9557600080fd5b505afa158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190614329565b6001600160a01b038716600090815260d2602052604081205491935090611bfe90611bf9908490612b4c565b612ba9565b90508063ffffffff168363ffffffff1611611c195782611c1b565b805b9250505b6000611c3c611c2e888561161f565b6001600160a01b0316612bee565b9050611c4781612c08565b604051631208064760e01b81529095506001600160a01b03881690631208064790611c769086906004016148bf565b60206040518083038186803b158015611c8e57600080fd5b505afa158015611ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc69190613f8d565b6001600160a01b038816600090815260d3602090815260408083205460d49092529091209195509083821480611cfa575081155b15611d1e576040805180820190915281548152600182015460208201529750611d95565b6000611d4d611d35611d308786612b4c565b612616565b611d4786611d428b612c21565b612c3a565b90612d44565b8254909150611d5c90826127cd565b8952611d8e611d8382600160601b611d758e600061161f565b6001600160a01b0316612ded565b6001840154906127cd565b60208a0152505b50505050509193909250565b6000611dab611feb565b90506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611de857600080fd5b505afa158015611dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e209190613d09565b609a5460405163bbe4f6db60e01b81529192506001600160a01b03169063bbe4f6db90611e5190849060040161436a565b60206040518083038186803b158015611e6957600080fd5b505afa158015611e7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea19190613d09565b6001600160a01b0316826001600160a01b031614611ed15760405162461bcd60e51b81526004016106a39061464b565b60675460405163fa461e3360e01b81526001600160a01b039091169063fa461e3390611f07908990899089908990600401614503565b600060405180830381600087803b158015611f2157600080fd5b505af1158015611f35573d6000803e3d6000fd5b50505050505050505050565b600080611f6f611f54846080015161275a565b670de0b6b3a7640000611f6a866040015161275a565b612e91565b90506000670de0b6b3a76400008211611fbe576000611fa4611f9084612616565b606087015190670de0b6b3a7640000612ded565b60a0860151909150611fb690826127cd565b9150506116ac565b60a0840151600090611fd990670de0b6b3a764000085612ded565b606086015190915061198990826127cd565b3390565b60cd54604051633fe1339b60e11b815260009182916001600160a01b0390911690637fc2673690612028908a908a9088906004016143e5565b602060405180830381600087803b15801561204257600080fd5b505af1158015612056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207a9190613f8d565b905061208885858584612996565b979650505050505050565b6000600160ff1b82136120b85760405162461bcd60e51b81526004016106a39061466c565b5060000390565b4290565b6067546001600160a01b03166120d7611feb565b6001600160a01b0316146120fd5760405162461bcd60e51b81526004016106a390614583565b565b60008061210b8361126c565b90506116ac838261256f565b60006121718461216c6040518060a00160405280886001600160a01b0316815260200187151515815260200187151515815260200186815260200161215c8989612f40565b6001600160a01b03169052612f93565b61256f565b949350505050565b60006116ac838362ffffff16620f4240612e91565b612196613bfe565b609a54602083015160405163033e16f360e21b81526000926001600160a01b031691630cf85bcc916121cb919060040161436a565b60806040518083038186803b1580156121e357600080fd5b505afa1580156121f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221b9190614096565b9050600080612241856040015186606001518760a001518660200151876040015161313b565b9150915060006122548660200151611b10565b50509050600060cd60009054906101000a90046001600160a01b03166001600160a01b031663a3bf0df86040518061010001604052808a602001516001600160a01b031681526020018a60400151151581526020016001151581526020018681526020018a60c001516001600160a01b03168152602001886020015162ffffff168152602001886040015162ffffff168152602001858152506040518263ffffffff1660e01b81526004016123099190614750565b606060405180830381600087803b15801561232357600080fd5b505af1158015612337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235b9190614180565b905060006124576040518060e0016040528088600001516001600160a01b03168152602001606760009054906101000a90046001600160a01b03166001600160a01b031681526020018a60400151151581526020018a60600151151581526020018781526020018a60c001516001600160a01b031681526020016040518060a001604052808c600001516001600160a01b031681526020018c602001516001600160a01b031681526020018a600001516001600160a01b031681526020018a6040015162ffffff168152602001866020015181525060405160200161244091906147d4565b60405160208183030381529060405281525061318c565b90506000808960400151156124985761248261247d84600001518a6040015160006133b6565b6133fd565b91506124918360200151612616565b90506124bf565b82516124a390612616565b91506124bc61247d84602001518a6040015160006133b6565b90505b6020808b01516001600160a01b0316600090815260d29091526040902054612508576124e96120bf565b6020808c01516001600160a01b0316600090815260d290915260409020555b6040518060e001604052808381526020016125306125298760200151612616565b8490612662565b81526020018381526020018281526020018560200151815260200185604001518152602001856000015160020b81525098505050505050505050919050565b6001600160a01b038216600090815260d5602052604081205462ffffff168061259c576000915050610ad8565b6001600160a01b038416600090815260d16020526040812054600290810b91906125d7906125d29084900b62ffffff86166127cd565b613411565b905060006125f16125d2600285900b62ffffff8716612662565b90508060020b8660020b128061208857508160020b8660020b13979650505050505050565b60006001600160ff1b0382111561265e5760405162461bcd60e51b8152600401808060200182810382526028815260200180614aa06028913960400191505060405180910390fd5b5090565b60008183038183128015906126775750838113155b8061268c575060008312801561268c57508381135b6116ac5760405162461bcd60e51b8152600401808060200182810382526024815260200180614ac86024913960400191505060405180910390fd5b6000806000806000806000876001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561270b57600080fd5b505afa15801561271f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612743919061427a565b959e949d50929b5090995097509550909350915050565b60008082121561277a5761277561277083612093565b613454565b610ad8565b610ad882613454565b3b151590565b8062ffffff811681146104b15760405162461bcd60e51b81526004018080602001828103825260438152602001806149f06043913960600191505060405180910390fd5b60008282018183128015906127e25750838112155b806127f757506000831280156127f757508381125b6116ac5760405162461bcd60e51b81526004018080602001828103825260218152602001806149576021913960400191505060405180910390fd5b6000600a8263ffffffff16101561285e57600061284e846126c7565b50949650610ad895505050505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061288d57fe5b602002602001019063ffffffff16908163ffffffff16815250506000816001815181106128b657fe5b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd906128fa9085906004016144a2565b60006040518083038186803b15801561291257600080fd5b505afa158015612926573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261294e9190810190613eaa565b5090506119898463ffffffff168260008151811061296857fe5b60200260200101518360018151811061297d57fe5b60200260200101510360060b8161299057fe5b056134ab565b6000806129a8868560000151876137d2565b90506129c1620151806129bb85846127cd565b906137ec565b9695505050505050565b60006129d630612783565b15905090565b600054610100900460ff16806129f557506129f56129cb565b80612a03575060005460ff16155b612a3e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806149a1602e913960400191505060405180910390fd5b600054610100900460ff16158015612a69576000805460ff1961ff0019909116610100171660011790555b612a716138a4565b8015612a83576000805461ff00191690555b50565b600054610100900460ff1680612a9f5750612a9f6129cb565b80612aad575060005460ff16155b612ae85760405162461bcd60e51b815260040180806020018281038252602e8152602001806149a1602e913960400191505060405180910390fd5b600054610100900460ff16158015612b13576000805460ff1961ff0019909116610100171660011790555b612b1b613993565b609a80546001600160a01b0319166001600160a01b0384161790558015612b48576000805461ff00191690555b5050565b600082821115612ba3576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b8063ffffffff811681146104b15760405162461bcd60e51b8152600401808060200182810382526026815260200180614a7a6026913960400191505060405180910390fd5b6000610ad86001600160a01b03831680600160601b612e91565b6000610ad882670de0b6b3a7640000600160601b612e91565b6000610ad882600160601b670de0b6b3a7640000612e91565b60008060cf60009054906101000a90046001600160a01b03166001600160a01b0316636e1d2dd26040518163ffffffff1660e01b815260040160206040518083038186803b158015612c8b57600080fd5b505afa158015612c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc3919061430d565b90506000612cd18483612179565b9050600084861115612d0e57612ce78686612b4c565b9050818111612cfe57612cf981612616565b612d07565b612d0782612616565b9350612d3b565b612d188587612b4c565b9050818111612d2f57612d2a816133fd565b612d38565b612d38826133fd565b93505b50505092915050565b600082612d5357506000610ad8565b82600019148015612d675750600160ff1b82145b15612da35760405162461bcd60e51b8152600401808060200182810382526027815260200180614a536027913960400191505060405180910390fd5b82820282848281612db057fe5b05146116ac5760405162461bcd60e51b8152600401808060200182810382526027815260200180614a536027913960400191505060405180910390fd5b60008060008512612dfe5784612e07565b612e0785612093565b90506000808512612e185784612e21565b612e2185612093565b905060008087128015612e345750600086135b80612e4a5750600087138015612e4a5750600086125b612e55576000612e58565b60015b90506000612e67848488612e91565b905081612e7c57612e7781612616565b612e85565b612e85816133fd565b98975050505050505050565b6000808060001985870986860292508281109083900303905080612ec75760008411612ebc57600080fd5b5082900490506116ac565b808411612ed357600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6001600160a01b038216600090815260d1602090815260408083205460d590925282205460029190910b9062ffffff168284612f8157600182840303612f88565b8183016001015b9050612d38816134ab565b609a54815160405163033e16f360e21b815260009283926001600160a01b0390911691630cf85bcc91612fc89160040161436a565b60806040518083038186803b158015612fe057600080fd5b505afa158015612ff4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130189190614096565b90506000816020015190506000826040015190506000613047866020015187604001518860600151868661313b565b60cd5460408051610100810182528a516001600160a01b0390811682526020808d01511515818401526000838501819052606084018790526080808f015184169085015262ffffff808c1660a08601528a1660c08501528451808601865281815291820181905260e08401919091529251631477e1bf60e31b815294965091945091169163a3bf0df8916130dd91600401614750565b606060405180830381600087803b1580156130f757600080fd5b505af115801561310b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312f9190614180565b51979650505050505050565b60008061314b8787878787613a28565b9150866131605761315b85612616565b613169565b61316982612616565b90508561317e5761317981612093565b613180565b805b90509550959350505050565b613194613b8c565b600082606001516131b1576131ac83608001516133fd565b6131be565b6131be8360800151612616565b905060008084600001516001600160a01b031663128acb0886602001518760400151868960a001516001600160a01b0316600014613200578960a0015161322a565b89604001516132235773fffd8963efd1fc6a506488495d951d5263988d2561322a565b6401000276a45b8a60c001516040518663ffffffff1660e01b815260040161324f95949392919061440a565b6040805180830381600087803b15801561326857600080fd5b505af115801561327c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a09190613fa5565b915091506000806132b08461275a565b6132b98461275a565b9150915060008760400151151588606001511515146132d857816132da565b825b905087606001511580156132f9575060a08801516001600160a01b0316155b1561339a57600a8860800151821161331f57608089015161331a9083612b4c565b61332f565b608089015161332f908390612b4c565b1061334c5760405162461bcd60e51b81526004016106a3906146e2565b8760400151613373576040518060400160405280896080015181526020018381525061338d565b604051806040016040528084815260200189608001518152505b96505050505050506104b1565b5060408051808201909152918252602082015295945050505050565b6000816133e1576133dc846133d3620f424062ffffff8716612b4c565b620f4240612e91565b612171565b61217184620f42406133f88162ffffff8816612b4c565b613a71565b600061340882612616565b60000392915050565b80600281900b81146104b15760405162461bcd60e51b81526004018080602001828103825260298152602001806149786029913960400191505060405180910390fd5b60008082121561265e576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b60008060008360020b126134c2578260020b6134ca565b8260020b6000035b9050620d89e8811115613508576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661351c57600160801b61352e565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b031690506002821615613558576ffff97272373d413259a46990580e213a0260801c5b6004821615613577576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613596576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156135b5576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156135d4576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156135f3576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613612576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613632576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613652576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613672576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613692576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156136b2576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156136d2576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156136f2576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613712576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613733576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613753576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613772576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561378f576b048a170391f7dc42444e8fa20260801c5b60008460020b13156137aa5780600019816137a657fe5b0490505b600160201b8106156137bd5760016137c0565b60005b60ff16602082901c0192505050919050565b6000612171846137e28585612662565b600160601b612ded565b600081613840576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b816000191480156138545750600160ff1b83145b156138905760405162461bcd60e51b81526004018080602001828103825260218152602001806149cf6021913960400191505060405180910390fd5b600082848161389b57fe5b05949350505050565b600054610100900460ff16806138bd57506138bd6129cb565b806138cb575060005460ff16155b6139065760405162461bcd60e51b815260040180806020018281038252602e8152602001806149a1602e913960400191505060405180910390fd5b600054610100900460ff16158015613931576000805460ff1961ff0019909116610100171660011790555b613939613993565b6000613943611feb565b603380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020614a33833981519152908290a3508015612a83576000805461ff001916905550565b600054610100900460ff16806139ac57506139ac6129cb565b806139ba575060005460ff16155b6139f55760405162461bcd60e51b815260040180806020018281038252602e8152602001806149a1602e913960400191505060405180910390fd5b600054610100900460ff16158015613a20576000805460ff1961ff0019909116610100171660011790555b612a71613aab565b60008515613a595784613a4657613a41848460016133b6565b613a52565b613a52848360016133b6565b9050611989565b84613a6457836129c1565b6129c18483856001613b4b565b6000613a7e848484612e91565b905060008280613a8a57fe5b84860911156116ac576000198110613aa157600080fd5b6001019392505050565b600054610100900460ff1680613ac45750613ac46129cb565b80613ad2575060005460ff16155b613b0d5760405162461bcd60e51b815260040180806020018281038252602e8152602001806149a1602e913960400191505060405180910390fd5b600054610100900460ff16158015612a71576000805460ff1961ff0019909116610100171660011790558015612a83576000805461ff001916905550565b600080600083613b5c578585613b5f565b84865b909250905061208887613b7a620f424062ffffff8616612b4c565b6133f8620f424062ffffff8616612b4c565b604051806040016040528060008152602001600081525090565b6040518061014001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060020b81526020016000151581525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060020b81525090565b80356104b181614910565b600082601f830112613c59578081fd5b81516020613c6e613c69836148f3565b6148d0565b8281528181019085830183850287018401881015613c8a578586fd5b855b85811015613cb1578151613c9f81614910565b84529284019290840190600101613c8c565b5090979650505050505050565b80356104b181614925565b8051600281900b81146104b157600080fd5b805161ffff811681146104b157600080fd5b600060208284031215613cfe578081fd5b81356116ac81614910565b600060208284031215613d1a578081fd5b81516116ac81614910565b60008060408385031215613d37578081fd5b8235613d4281614910565b91506020830135613d5281614910565b809150509250929050565b60008060008060808587031215613d72578182fd5b8435613d7d81614910565b93506020850135613d8d81614910565b92506040850135613d9d81614910565b91506060850135613dad81614910565b939692955090935050565b60008060408385031215613dca578182fd5b8235613dd581614910565b91506020830135613d5281614933565b60008060408385031215613df7578182fd5b8235613e0281614910565b91506020830135613d5281614944565b60006020808385031215613e24578182fd5b82516001600160401b03811115613e39578283fd5b8301601f81018513613e49578283fd5b8051613e57613c69826148f3565b8181528381019083850185840285018601891015613e73578687fd5b8694505b83851015613e9e578051613e8a81614910565b835260019490940193918501918501613e77565b50979650505050505050565b60008060408385031215613ebc578182fd5b82516001600160401b0380821115613ed2578384fd5b818501915085601f830112613ee5578384fd5b81516020613ef5613c69836148f3565b82815281810190858301838502870184018b1015613f11578889fd5b8896505b84871015613f415780518060060b8114613f2d57898afd5b835260019690960195918301918301613f15565b5091880151919650909350505080821115613f5a578283fd5b50613f6785828601613c49565b9150509250929050565b600060208284031215613f82578081fd5b81516116ac81614925565b600060208284031215613f9e578081fd5b5051919050565b60008060408385031215613fb7578182fd5b505080516020909101519092909150565b60008060008060608587031215613fdd578182fd5b843593506020850135925060408501356001600160401b0380821115614001578384fd5b818701915087601f830112614014578384fd5b813581811115614022578485fd5b886020828501011115614033578485fd5b95989497505060200194505050565b600060608284031215614053578081fd5b604051606081016001600160401b038111828210171561406f57fe5b80604052508251815260208301516020820152604083015160408201528091505092915050565b6000608082840312156140a7578081fd5b604051608081016001600160401b03811182821017156140c357fe5b60405282516140d181614910565b815260208301516140e181614933565b602082015260408301516140f481614933565b6040820152606083015161410781614933565b60608201529392505050565b600060808284031215614124578081fd5b604051608081016001600160401b038111828210171561414057fe5b604052823561414e81614910565b8152602083013561415e81614910565b6020820152604083810135908201526060928301359281019290925250919050565b600060608284031215614191578081fd5b604051606081016001600160401b03811182821017156141ad57fe5b6040526141b983613cc9565b815260208301516020820152604083015160408201528091505092915050565b600060e082840312156141ea578081fd5b60405160e081016001600160401b038111828210171561420657fe5b60405261421283613c3e565b815261422060208401613c3e565b602082015261423160408401613cbe565b604082015261424260608401613cbe565b606082015261425360808401613cbe565b608082015260a083013560a082015261426e60c08401613c3e565b60c08201529392505050565b600080600080600080600060e0888a031215614294578485fd5b875161429f81614910565b96506142ad60208901613cc9565b95506142bb60408901613cdb565b94506142c960608901613cdb565b93506142d760808901613cdb565b925060a088015160ff811681146142ec578283fd5b60c08901519092506142fd81614925565b8091505092959891949750929550565b60006020828403121561431e578081fd5b81516116ac81614933565b60006020828403121561433a578081fd5b81516116ac81614944565b15159052565b60020b9052565b80518252602090810151910152565b62ffffff169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b03848116825283166020820152608081016121716040830184614352565b600060018060a01b038088168352602087151581850152866040850152818616606085015260a06080850152845191508160a0850152825b8281101561445e5785810182015185820160c001528101614442565b8281111561446f578360c084870101525b5050601f01601f19169190910160c0019695505050505050565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156144e057835163ffffffff16835292840192918401916001016144be565b50909695505050505050565b60029190910b815260200190565b90815260200190565b60008582528460208301526060604083015282606083015282846080840137818301608090810191909152601f909201601f191601019392505050565b60208082526008908201526745585f4f504c425360c01b604082015260600190565b60208082526007908201526645585f42544e4560c81b604082015260600190565b6020808252600790820152660869088be9e86960cb1b604082015260600190565b60208082526008908201526745585f414f504c4f60c01b604082015260600190565b60208082526008908201526745585f4f504c415360c01b604082015260600190565b6020808252600590820152640455f4142360dc1b604082015260600190565b602080825260069082015265455f4f424e4360d01b604082015260600190565b6020808252600a908201526922ac2fa6aa21a627a7a960b11b604082015260600190565b6020808252600790820152662aa1a12fa321ab60c91b604082015260600190565b6020808252601c908201527b506572704d6174683a20696e76657273696f6e206f766572666c6f7760201b604082015260600190565b60208082526006908201526545585f414e4360d01b604082015260600190565b602080825260069082015265455f43484e4360d01b604082015260600190565b60208082526006908201526555425f554f4160d01b604082015260600190565b602080825260079082015266455f4946414e4360c81b604082015260600190565b60408101610ad88284614352565b6080810161473f8286614352565b604082019390935260600152919050565b60006101208201905060018060a01b03808451168352602084015115156020840152604084015115156040840152606084015160608401528060808501511660808401525060a08301516147a760a0840182614361565b5060c08301516147ba60c0840182614361565b5060e08301516147cd60e0840182614352565b5092915050565b81516001600160a01b0390811682526020808401518216908301526040808401519091169082015260608083015162ffffff16908201526080918201519181019190915260a00190565b600061014082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401516148848285018261434b565b50506101208084015161489982850182614345565b505092915050565b62ffffff91909116815260200190565b918252602082015260400190565b63ffffffff91909116815260200190565b6040518181016001600160401b03811182821017156148eb57fe5b604052919050565b60006001600160401b0382111561490657fe5b5060209081020190565b6001600160a01b0381168114612a8357600080fd5b8015158114612a8357600080fd5b62ffffff81168114612a8357600080fd5b63ffffffff81168114612a8357600080fdfe5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e2032342062697473496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206469766973696f6e206f766572666c6f7753616665436173743a2076616c7565206d75737420626520706f736974697665206f722076616c756520646f65736e27742066697420696e20616e20323420626974738be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e203332206269747353616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220c9d4b09d6c265ea2676384dd5f029b10c587d09e09ee8ae52911b06edda87f8a64736f6c63430007060033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/external/abi/perp/PerpV2InsuranceFund.json b/external/abi/perp/PerpV2InsuranceFund.json index d6c53c660..9fb76dfc6 100644 --- a/external/abi/perp/PerpV2InsuranceFund.json +++ b/external/abi/perp/PerpV2InsuranceFund.json @@ -226,8 +226,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506114b6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063715018a61161008c578063bc5920ba11610066578063bc5920ba1461016c578063c4d66de814610174578063c5ebeaec1461019a578063c762d5f7146101b7576100cf565b8063715018a6146101545780638456cb591461015c5780638da5cb5b14610164576100cf565b806313af4035146100d45780631cb0c3e7146100fc57806321df0da7146101205780633f4ba83a146101285780635c975abb146101305780636c8381f81461014c575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b03166101dd565b005b610104610338565b604080516001600160a01b039092168252519081900360200190f35b610104610347565b6100fa610356565b6101386103bd565b604080519115158252519081900360200190f35b6101046103c6565b6100fa6103d5565b6100fa610488565b6101046104ed565b6100fa6104fc565b6100fa6004803603602081101561018a57600080fd5b50356001600160a01b03166105fa565b6100fa600480360360208110156101b057600080fd5b5035610714565b6100fa600480360360208110156101cd57600080fd5b50356001600160a01b0316610932565b6101e5610a2f565b6001600160a01b03166101f66104ed565b6001600160a01b03161461023a576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661027e576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6065546001600160a01b03828116911614156102ca576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6066546001600160a01b0382811691161415610316576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b606680546001600160a01b0319166001600160a01b0392909216919091179055565b60fe546001600160a01b031690565b60fd546001600160a01b031690565b61035e610a2f565b6001600160a01b031661036f6104ed565b6001600160a01b0316146103b3576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6103bb610a3e565b565b60995460ff1690565b6066546001600160a01b031690565b6103dd610a2f565b6001600160a01b03166103ee6104ed565b6001600160a01b031614610432576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606580546001600160a01b0319908116909155606680549091169055565b610490610a2f565b6001600160a01b03166104a16104ed565b6001600160a01b0316146104e5576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6103bb610ade565b6065546001600160a01b031690565b6066546001600160a01b0316610541576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610549610a2f565b6066546001600160a01b03908116911614610594576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6066546065546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360668054606580546001600160a01b03199081166001600160a01b03841617909155169055565b600054610100900460ff16806106135750610613610b61565b80610621575060005460ff16155b61065c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff16158015610687576000805460ff1961ff0019909116610100171660011790555b610699826001600160a01b0316610b72565b6106d3576040805162461bcd60e51b815260206004820152600660248201526549465f544e4360d01b604482015290519081900360640190fd5b6106db610b78565b6106e3610c22565b60fd80546001600160a01b0319166001600160a01b0384161790558015610710576000805461ff00191690555b5050565b6002600154141561076c576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001556107796103bd565b156107be576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60fe546001600160a01b03166107d2610a2f565b6001600160a01b031614610815576040805162461bcd60e51b815260206004820152600560248201526424a32fa7a160d91b604482015290519081900360640190fd5b60fd54604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561085f57600080fd5b505afa158015610873573d6000803e3d6000fd5b505050506040513d602081101561088957600080fd5b505110156108c7576040805162461bcd60e51b815260206004820152600660248201526524a32fa722a160d11b604482015290519081900360640190fd5b60fd5460fe546108e4916001600160a01b03908116911683610cbf565b60fe54604080516001600160a01b0390921682526020820183905280517fac59582e5396aca512fa873a2047e7f4c80f8f55d4a06cb34a78a0187f62719f9281900390910190a15060018055565b61093a610a2f565b6001600160a01b031661094b6104ed565b6001600160a01b03161461098f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6109a1816001600160a01b0316610b72565b6109db576040805162461bcd60e51b815260206004820152600660248201526549465f424e4360d01b604482015290519081900360640190fd5b60fe80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fa1cc029f3440726d0dd25b6385e24d209e5bf7817d6662d6e4bfdfbc621c1cf29181900360200190a150565b6000610a39610d16565b905090565b610a466103bd565b610a8e576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6099805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610ac1610a2f565b604080516001600160a01b039092168252519081900360200190a1565b610ae66103bd565b15610b2b576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6099805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610ac1610a2f565b6000610b6c30610b72565b15905090565b3b151590565b600054610100900460ff1680610b915750610b91610b61565b80610b9f575060005460ff16155b610bda5760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff16158015610c05576000805460ff1961ff0019909116610100171660011790555b610c0d610d1a565b8015610c1f576000805461ff00191690555b50565b600054610100900460ff1680610c3b5750610c3b610b61565b80610c49575060005460ff16155b610c845760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff16158015610caf576000805460ff1961ff0019909116610100171660011790555b610cb7610dbf565b610c0d610ec0565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610d11908490610f5d565b505050565b3390565b600054610100900460ff1680610d335750610d33610b61565b80610d41575060005460ff16155b610d7c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff16158015610da7576000805460ff1961ff0019909116610100171660011790555b600180558015610c1f576000805461ff001916905550565b600054610100900460ff1680610dd85750610dd8610b61565b80610de6575060005460ff16155b610e215760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff16158015610e4c576000805460ff1961ff0019909116610100171660011790555b610e5461100e565b6000610e5e610a2f565b606580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610c1f576000805461ff001916905550565b600054610100900460ff1680610ed95750610ed9610b61565b80610ee7575060005460ff16155b610f225760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff16158015610f4d576000805460ff1961ff0019909116610100171660011790555b610f5561109f565b610c0d61113f565b6000610fb2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111ea9092919063ffffffff16565b805190915015610d1157808060200190516020811015610fd157600080fd5b5051610d115760405162461bcd60e51b815260040180806020018281038252602a815260200180611457602a913960400191505060405180910390fd5b600054610100900460ff16806110275750611027610b61565b80611035575060005460ff16155b6110705760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff1615801561109b576000805460ff1961ff0019909116610100171660011790555b610c0d5b600054610100900460ff16806110b857506110b8610b61565b806110c6575060005460ff16155b6111015760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff16158015610c0d576000805460ff1961ff0019909116610100171660011790558015610c1f576000805461ff001916905550565b600054610100900460ff16806111585750611158610b61565b80611166575060005460ff16155b6111a15760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff161580156111cc576000805460ff1961ff0019909116610100171660011790555b6099805460ff191690558015610c1f576000805461ff001916905550565b60606111f98484600085611203565b90505b9392505050565b6060824710156112445760405162461bcd60e51b81526004018080602001828103825260268152602001806114036026913960400191505060405180910390fd5b61124d85610b72565b61129e576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106112dc5780518252601f1990920191602091820191016112bd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461133e576040519150601f19603f3d011682016040523d82523d6000602084013e611343565b606091505b509150915061135382828661135e565b979650505050505050565b6060831561136d5750816111fc565b82511561137d5782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113c75781810151838201526020016113af565b50505050905090810190601f1680156113f45780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212207e0da25701ed2f937dcbe99999fc61d8f3fccf8467c26e581e2288fb2804b83364736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063715018a61161008c578063bc5920ba11610066578063bc5920ba1461016c578063c4d66de814610174578063c5ebeaec1461019a578063c762d5f7146101b7576100cf565b8063715018a6146101545780638456cb591461015c5780638da5cb5b14610164576100cf565b806313af4035146100d45780631cb0c3e7146100fc57806321df0da7146101205780633f4ba83a146101285780635c975abb146101305780636c8381f81461014c575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b03166101dd565b005b610104610338565b604080516001600160a01b039092168252519081900360200190f35b610104610347565b6100fa610356565b6101386103bd565b604080519115158252519081900360200190f35b6101046103c6565b6100fa6103d5565b6100fa610488565b6101046104ed565b6100fa6104fc565b6100fa6004803603602081101561018a57600080fd5b50356001600160a01b03166105fa565b6100fa600480360360208110156101b057600080fd5b5035610714565b6100fa600480360360208110156101cd57600080fd5b50356001600160a01b0316610932565b6101e5610a2f565b6001600160a01b03166101f66104ed565b6001600160a01b03161461023a576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661027e576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6065546001600160a01b03828116911614156102ca576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6066546001600160a01b0382811691161415610316576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b606680546001600160a01b0319166001600160a01b0392909216919091179055565b60fe546001600160a01b031690565b60fd546001600160a01b031690565b61035e610a2f565b6001600160a01b031661036f6104ed565b6001600160a01b0316146103b3576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6103bb610a3e565b565b60995460ff1690565b6066546001600160a01b031690565b6103dd610a2f565b6001600160a01b03166103ee6104ed565b6001600160a01b031614610432576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606580546001600160a01b0319908116909155606680549091169055565b610490610a2f565b6001600160a01b03166104a16104ed565b6001600160a01b0316146104e5576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6103bb610ade565b6065546001600160a01b031690565b6066546001600160a01b0316610541576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610549610a2f565b6066546001600160a01b03908116911614610594576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6066546065546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360668054606580546001600160a01b03199081166001600160a01b03841617909155169055565b600054610100900460ff16806106135750610613610b61565b80610621575060005460ff16155b61065c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff16158015610687576000805460ff1961ff0019909116610100171660011790555b610699826001600160a01b0316610b72565b6106d3576040805162461bcd60e51b815260206004820152600660248201526549465f544e4360d01b604482015290519081900360640190fd5b6106db610b78565b6106e3610c22565b60fd80546001600160a01b0319166001600160a01b0384161790558015610710576000805461ff00191690555b5050565b6002600154141561076c576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001556107796103bd565b156107be576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60fe546001600160a01b03166107d2610a2f565b6001600160a01b031614610815576040805162461bcd60e51b815260206004820152600560248201526424a32fa7a160d91b604482015290519081900360640190fd5b60fd54604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561085f57600080fd5b505afa158015610873573d6000803e3d6000fd5b505050506040513d602081101561088957600080fd5b505110156108c7576040805162461bcd60e51b815260206004820152600660248201526524a32fa722a160d11b604482015290519081900360640190fd5b60fd5460fe546108e4916001600160a01b03908116911683610cbf565b60fe54604080516001600160a01b0390921682526020820183905280517fac59582e5396aca512fa873a2047e7f4c80f8f55d4a06cb34a78a0187f62719f9281900390910190a15060018055565b61093a610a2f565b6001600160a01b031661094b6104ed565b6001600160a01b03161461098f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6109a1816001600160a01b0316610b72565b6109db576040805162461bcd60e51b815260206004820152600660248201526549465f424e4360d01b604482015290519081900360640190fd5b60fe80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fa1cc029f3440726d0dd25b6385e24d209e5bf7817d6662d6e4bfdfbc621c1cf29181900360200190a150565b6000610a39610d16565b905090565b610a466103bd565b610a8e576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6099805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610ac1610a2f565b604080516001600160a01b039092168252519081900360200190a1565b610ae66103bd565b15610b2b576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6099805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610ac1610a2f565b6000610b6c30610b72565b15905090565b3b151590565b600054610100900460ff1680610b915750610b91610b61565b80610b9f575060005460ff16155b610bda5760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff16158015610c05576000805460ff1961ff0019909116610100171660011790555b610c0d610d1a565b8015610c1f576000805461ff00191690555b50565b600054610100900460ff1680610c3b5750610c3b610b61565b80610c49575060005460ff16155b610c845760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff16158015610caf576000805460ff1961ff0019909116610100171660011790555b610cb7610dbf565b610c0d610ec0565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610d11908490610f5d565b505050565b3390565b600054610100900460ff1680610d335750610d33610b61565b80610d41575060005460ff16155b610d7c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff16158015610da7576000805460ff1961ff0019909116610100171660011790555b600180558015610c1f576000805461ff001916905550565b600054610100900460ff1680610dd85750610dd8610b61565b80610de6575060005460ff16155b610e215760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff16158015610e4c576000805460ff1961ff0019909116610100171660011790555b610e5461100e565b6000610e5e610a2f565b606580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610c1f576000805461ff001916905550565b600054610100900460ff1680610ed95750610ed9610b61565b80610ee7575060005460ff16155b610f225760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff16158015610f4d576000805460ff1961ff0019909116610100171660011790555b610f5561109f565b610c0d61113f565b6000610fb2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111ea9092919063ffffffff16565b805190915015610d1157808060200190516020811015610fd157600080fd5b5051610d115760405162461bcd60e51b815260040180806020018281038252602a815260200180611457602a913960400191505060405180910390fd5b600054610100900460ff16806110275750611027610b61565b80611035575060005460ff16155b6110705760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff1615801561109b576000805460ff1961ff0019909116610100171660011790555b610c0d5b600054610100900460ff16806110b857506110b8610b61565b806110c6575060005460ff16155b6111015760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff16158015610c0d576000805460ff1961ff0019909116610100171660011790558015610c1f576000805461ff001916905550565b600054610100900460ff16806111585750611158610b61565b80611166575060005460ff16155b6111a15760405162461bcd60e51b815260040180806020018281038252602e815260200180611429602e913960400191505060405180910390fd5b600054610100900460ff161580156111cc576000805460ff1961ff0019909116610100171660011790555b6099805460ff191690558015610c1f576000805461ff001916905550565b60606111f98484600085611203565b90505b9392505050565b6060824710156112445760405162461bcd60e51b81526004018080602001828103825260268152602001806114036026913960400191505060405180910390fd5b61124d85610b72565b61129e576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106112dc5780518252601f1990920191602091820191016112bd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461133e576040519150601f19603f3d011682016040523d82523d6000602084013e611343565b606091505b509150915061135382828661135e565b979650505050505050565b6060831561136d5750816111fc565b82511561137d5782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113c75781810151838201526020016113af565b50505050905090810190601f1680156113f45780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212207e0da25701ed2f937dcbe99999fc61d8f3fccf8467c26e581e2288fb2804b83364736f6c63430007060033", + "bytecode": "0x608060405234801561001057600080fd5b50611480806100206000396000f3fe608060405234801561001057600080fd5b50600436106100af5760003560e01c806313af4035146100b45780631cb0c3e7146100dc57806321df0da7146101005780633f4ba83a146101085780635c975abb146101105780636c8381f81461012c578063715018a6146101345780638456cb591461013c5780638da5cb5b14610144578063bc5920ba1461014c578063c4d66de814610154578063c5ebeaec1461017a578063c762d5f714610197575b600080fd5b6100da600480360360208110156100ca57600080fd5b50356001600160a01b03166101bd565b005b6100e4610318565b604080516001600160a01b039092168252519081900360200190f35b6100e4610327565b6100da610336565b61011861039d565b604080519115158252519081900360200190f35b6100e46103a6565b6100da6103b5565b6100da610456565b6100e46104bb565b6100da6104ca565b6100da6004803603602081101561016a57600080fd5b50356001600160a01b03166105b6565b6100da6004803603602081101561019057600080fd5b50356106d0565b6100da600480360360208110156101ad57600080fd5b50356001600160a01b03166108ee565b6101c56109eb565b6001600160a01b03166101d66104bb565b6001600160a01b03161461021a576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661025e576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6065546001600160a01b03828116911614156102aa576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6066546001600160a01b03828116911614156102f6576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b606680546001600160a01b0319166001600160a01b0392909216919091179055565b60fe546001600160a01b031690565b60fd546001600160a01b031690565b61033e6109eb565b6001600160a01b031661034f6104bb565b6001600160a01b031614610393576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61039b6109fa565b565b60995460ff1690565b6066546001600160a01b031690565b6103bd6109eb565b6001600160a01b03166103ce6104bb565b6001600160a01b031614610412576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6065546040516000916001600160a01b031690600080516020611401833981519152908390a3606580546001600160a01b0319908116909155606680549091169055565b61045e6109eb565b6001600160a01b031661046f6104bb565b6001600160a01b0316146104b3576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61039b610a9a565b6065546001600160a01b031690565b6066546001600160a01b031661050f576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b6105176109eb565b6066546001600160a01b03908116911614610562576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6066546065546040516001600160a01b03928316929091169060008051602061140183398151915290600090a360668054606580546001600160a01b03199081166001600160a01b03841617909155169055565b600054610100900460ff16806105cf57506105cf610b1d565b806105dd575060005460ff16155b6106185760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015610643576000805460ff1961ff0019909116610100171660011790555b610655826001600160a01b0316610b2e565b61068f576040805162461bcd60e51b815260206004820152600660248201526549465f544e4360d01b604482015290519081900360640190fd5b610697610b34565b61069f610bde565b60fd80546001600160a01b0319166001600160a01b03841617905580156106cc576000805461ff00191690555b5050565b60026001541415610728576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260015561073561039d565b1561077a576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60fe546001600160a01b031661078e6109eb565b6001600160a01b0316146107d1576040805162461bcd60e51b815260206004820152600560248201526424a32fa7a160d91b604482015290519081900360640190fd5b60fd54604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561081b57600080fd5b505afa15801561082f573d6000803e3d6000fd5b505050506040513d602081101561084557600080fd5b50511015610883576040805162461bcd60e51b815260206004820152600660248201526524a32fa722a160d11b604482015290519081900360640190fd5b60fd5460fe546108a0916001600160a01b03908116911683610c7b565b60fe54604080516001600160a01b0390921682526020820183905280517fac59582e5396aca512fa873a2047e7f4c80f8f55d4a06cb34a78a0187f62719f9281900390910190a15060018055565b6108f66109eb565b6001600160a01b03166109076104bb565b6001600160a01b03161461094b576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61095d816001600160a01b0316610b2e565b610997576040805162461bcd60e51b815260206004820152600660248201526549465f424e4360d01b604482015290519081900360640190fd5b60fe80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fa1cc029f3440726d0dd25b6385e24d209e5bf7817d6662d6e4bfdfbc621c1cf29181900360200190a150565b60006109f5610cd2565b905090565b610a0261039d565b610a4a576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6099805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610a7d6109eb565b604080516001600160a01b039092168252519081900360200190a1565b610aa261039d565b15610ae7576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6099805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610a7d6109eb565b6000610b2830610b2e565b15905090565b3b151590565b600054610100900460ff1680610b4d5750610b4d610b1d565b80610b5b575060005460ff16155b610b965760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015610bc1576000805460ff1961ff0019909116610100171660011790555b610bc9610cd6565b8015610bdb576000805461ff00191690555b50565b600054610100900460ff1680610bf75750610bf7610b1d565b80610c05575060005460ff16155b610c405760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015610c6b576000805460ff1961ff0019909116610100171660011790555b610c73610d7b565b610bc9610e6a565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610ccd908490610f07565b505050565b3390565b600054610100900460ff1680610cef5750610cef610b1d565b80610cfd575060005460ff16155b610d385760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015610d63576000805460ff1961ff0019909116610100171660011790555b600180558015610bdb576000805461ff001916905550565b600054610100900460ff1680610d945750610d94610b1d565b80610da2575060005460ff16155b610ddd5760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015610e08576000805460ff1961ff0019909116610100171660011790555b610e10610fb8565b6000610e1a6109eb565b606580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020611401833981519152908290a3508015610bdb576000805461ff001916905550565b600054610100900460ff1680610e835750610e83610b1d565b80610e91575060005460ff16155b610ecc5760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015610ef7576000805460ff1961ff0019909116610100171660011790555b610eff611049565b610bc96110e9565b6000610f5c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111949092919063ffffffff16565b805190915015610ccd57808060200190516020811015610f7b57600080fd5b5051610ccd5760405162461bcd60e51b815260040180806020018281038252602a815260200180611421602a913960400191505060405180910390fd5b600054610100900460ff1680610fd15750610fd1610b1d565b80610fdf575060005460ff16155b61101a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015611045576000805460ff1961ff0019909116610100171660011790555b610bc95b600054610100900460ff16806110625750611062610b1d565b80611070575060005460ff16155b6110ab5760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015610bc9576000805460ff1961ff0019909116610100171660011790558015610bdb576000805461ff001916905550565b600054610100900460ff16806111025750611102610b1d565b80611110575060005460ff16155b61114b5760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015611176576000805460ff1961ff0019909116610100171660011790555b6099805460ff191690558015610bdb576000805461ff001916905550565b60606111a384846000856111ad565b90505b9392505050565b6060824710156111ee5760405162461bcd60e51b81526004018080602001828103825260268152602001806113ad6026913960400191505060405180910390fd5b6111f785610b2e565b611248576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106112865780518252601f199092019160209182019101611267565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146112e8576040519150601f19603f3d011682016040523d82523d6000602084013e6112ed565b606091505b50915091506112fd828286611308565b979650505050505050565b606083156113175750816111a6565b8251156113275782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611371578181015183820152602001611359565b50505050905090810190601f16801561139e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65648be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220090e20f4984d8651a0168889b801f0c03609cccb310f9374eebdb1eda77dcbfe64736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100af5760003560e01c806313af4035146100b45780631cb0c3e7146100dc57806321df0da7146101005780633f4ba83a146101085780635c975abb146101105780636c8381f81461012c578063715018a6146101345780638456cb591461013c5780638da5cb5b14610144578063bc5920ba1461014c578063c4d66de814610154578063c5ebeaec1461017a578063c762d5f714610197575b600080fd5b6100da600480360360208110156100ca57600080fd5b50356001600160a01b03166101bd565b005b6100e4610318565b604080516001600160a01b039092168252519081900360200190f35b6100e4610327565b6100da610336565b61011861039d565b604080519115158252519081900360200190f35b6100e46103a6565b6100da6103b5565b6100da610456565b6100e46104bb565b6100da6104ca565b6100da6004803603602081101561016a57600080fd5b50356001600160a01b03166105b6565b6100da6004803603602081101561019057600080fd5b50356106d0565b6100da600480360360208110156101ad57600080fd5b50356001600160a01b03166108ee565b6101c56109eb565b6001600160a01b03166101d66104bb565b6001600160a01b03161461021a576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661025e576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6065546001600160a01b03828116911614156102aa576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6066546001600160a01b03828116911614156102f6576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b606680546001600160a01b0319166001600160a01b0392909216919091179055565b60fe546001600160a01b031690565b60fd546001600160a01b031690565b61033e6109eb565b6001600160a01b031661034f6104bb565b6001600160a01b031614610393576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61039b6109fa565b565b60995460ff1690565b6066546001600160a01b031690565b6103bd6109eb565b6001600160a01b03166103ce6104bb565b6001600160a01b031614610412576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6065546040516000916001600160a01b031690600080516020611401833981519152908390a3606580546001600160a01b0319908116909155606680549091169055565b61045e6109eb565b6001600160a01b031661046f6104bb565b6001600160a01b0316146104b3576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61039b610a9a565b6065546001600160a01b031690565b6066546001600160a01b031661050f576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b6105176109eb565b6066546001600160a01b03908116911614610562576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6066546065546040516001600160a01b03928316929091169060008051602061140183398151915290600090a360668054606580546001600160a01b03199081166001600160a01b03841617909155169055565b600054610100900460ff16806105cf57506105cf610b1d565b806105dd575060005460ff16155b6106185760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015610643576000805460ff1961ff0019909116610100171660011790555b610655826001600160a01b0316610b2e565b61068f576040805162461bcd60e51b815260206004820152600660248201526549465f544e4360d01b604482015290519081900360640190fd5b610697610b34565b61069f610bde565b60fd80546001600160a01b0319166001600160a01b03841617905580156106cc576000805461ff00191690555b5050565b60026001541415610728576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260015561073561039d565b1561077a576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60fe546001600160a01b031661078e6109eb565b6001600160a01b0316146107d1576040805162461bcd60e51b815260206004820152600560248201526424a32fa7a160d91b604482015290519081900360640190fd5b60fd54604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561081b57600080fd5b505afa15801561082f573d6000803e3d6000fd5b505050506040513d602081101561084557600080fd5b50511015610883576040805162461bcd60e51b815260206004820152600660248201526524a32fa722a160d11b604482015290519081900360640190fd5b60fd5460fe546108a0916001600160a01b03908116911683610c7b565b60fe54604080516001600160a01b0390921682526020820183905280517fac59582e5396aca512fa873a2047e7f4c80f8f55d4a06cb34a78a0187f62719f9281900390910190a15060018055565b6108f66109eb565b6001600160a01b03166109076104bb565b6001600160a01b03161461094b576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61095d816001600160a01b0316610b2e565b610997576040805162461bcd60e51b815260206004820152600660248201526549465f424e4360d01b604482015290519081900360640190fd5b60fe80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fa1cc029f3440726d0dd25b6385e24d209e5bf7817d6662d6e4bfdfbc621c1cf29181900360200190a150565b60006109f5610cd2565b905090565b610a0261039d565b610a4a576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6099805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610a7d6109eb565b604080516001600160a01b039092168252519081900360200190a1565b610aa261039d565b15610ae7576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6099805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610a7d6109eb565b6000610b2830610b2e565b15905090565b3b151590565b600054610100900460ff1680610b4d5750610b4d610b1d565b80610b5b575060005460ff16155b610b965760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015610bc1576000805460ff1961ff0019909116610100171660011790555b610bc9610cd6565b8015610bdb576000805461ff00191690555b50565b600054610100900460ff1680610bf75750610bf7610b1d565b80610c05575060005460ff16155b610c405760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015610c6b576000805460ff1961ff0019909116610100171660011790555b610c73610d7b565b610bc9610e6a565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610ccd908490610f07565b505050565b3390565b600054610100900460ff1680610cef5750610cef610b1d565b80610cfd575060005460ff16155b610d385760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015610d63576000805460ff1961ff0019909116610100171660011790555b600180558015610bdb576000805461ff001916905550565b600054610100900460ff1680610d945750610d94610b1d565b80610da2575060005460ff16155b610ddd5760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015610e08576000805460ff1961ff0019909116610100171660011790555b610e10610fb8565b6000610e1a6109eb565b606580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020611401833981519152908290a3508015610bdb576000805461ff001916905550565b600054610100900460ff1680610e835750610e83610b1d565b80610e91575060005460ff16155b610ecc5760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015610ef7576000805460ff1961ff0019909116610100171660011790555b610eff611049565b610bc96110e9565b6000610f5c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111949092919063ffffffff16565b805190915015610ccd57808060200190516020811015610f7b57600080fd5b5051610ccd5760405162461bcd60e51b815260040180806020018281038252602a815260200180611421602a913960400191505060405180910390fd5b600054610100900460ff1680610fd15750610fd1610b1d565b80610fdf575060005460ff16155b61101a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015611045576000805460ff1961ff0019909116610100171660011790555b610bc95b600054610100900460ff16806110625750611062610b1d565b80611070575060005460ff16155b6110ab5760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015610bc9576000805460ff1961ff0019909116610100171660011790558015610bdb576000805461ff001916905550565b600054610100900460ff16806111025750611102610b1d565b80611110575060005460ff16155b61114b5760405162461bcd60e51b815260040180806020018281038252602e8152602001806113d3602e913960400191505060405180910390fd5b600054610100900460ff16158015611176576000805460ff1961ff0019909116610100171660011790555b6099805460ff191690558015610bdb576000805461ff001916905550565b60606111a384846000856111ad565b90505b9392505050565b6060824710156111ee5760405162461bcd60e51b81526004018080602001828103825260268152602001806113ad6026913960400191505060405180910390fd5b6111f785610b2e565b611248576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106112865780518252601f199092019160209182019101611267565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146112e8576040519150601f19603f3d011682016040523d82523d6000602084013e6112ed565b606091505b50915091506112fd828286611308565b979650505050505050565b606083156113175750816111a6565b8251156113275782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611371578181015183820152602001611359565b50505050905090810190601f16801561139e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65648be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220090e20f4984d8651a0168889b801f0c03609cccb310f9374eebdb1eda77dcbfe64736f6c63430007060033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/external/abi/perp/PerpV2MarketRegistry.json b/external/abi/perp/PerpV2MarketRegistry.json index 42487f616..aad880c8a 100644 --- a/external/abi/perp/PerpV2MarketRegistry.json +++ b/external/abi/perp/PerpV2MarketRegistry.json @@ -432,8 +432,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50611ce0806100206000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063831f72b4116100ad578063bc5920ba11610071578063bc5920ba14610256578063c575ff791461025e578063c7bf443414610266578063ece090c414610279578063edd0b5cb1461028e5761012c565b8063831f72b41461020d5780638da5cb5b14610220578063b081983b14610228578063bb235d1114610230578063bbe4f6db146102435761012c565b8063449323d8116100f4578063449323d8146101c2578063485cc955146101d55780634a64d67d146101e85780636c8381f8146101fd578063715018a6146102055761012c565b806308ff49ad146101315780630cf85bcc1461015a5780631246dbf51461017a57806313af40351461019a5780633feb4212146101af575b600080fd5b61014461013f3660046117dd565b6102a1565b6040516101519190611c3a565b60405180910390f35b61016d6101683660046117dd565b610307565b6040516101519190611bf9565b61018d6101883660046117dd565b6103b1565b60405161015191906119de565b6101ad6101a83660046117dd565b6103d4565b005b6101ad6101bd366004611854565b61052f565b6101ad6101d03660046117dd565b610655565b6101ad6101e336600461181c565b61072a565b6101f0610870565b6040516101519190611984565b6101f061087f565b6101ad61088e565b6101ad61021b36600461194c565b610941565b6101f06109f1565b6101f0610a00565b6101ad61023e366004611854565b610a0f565b6101f06102513660046117dd565b610b29565b6101ad610b84565b6101f0610c82565b6101f0610274366004611854565b610c91565b61028161129b565b6040516101519190611c4a565b61014461029c3660046117dd565b6112ab565b6001600160a01b038082166000908152609c602052604081205490918391166102e55760405162461bcd60e51b81526004016102dc90611b98565b60405180910390fd5b50506001600160a01b03166000908152609d602052604090205462ffffff1690565b61030f611774565b6001600160a01b038083166000908152609c60205260409020548391166103485760405162461bcd60e51b81526004016102dc90611b98565b5050604080516080810182526001600160a01b039283166000818152609c6020908152848220549095168352818152609e85528381205462ffffff90811686850152828252609f865284822054811684860152918152609d909452919092205416606082015290565b6001600160a01b038181166000908152609c60205260409020541615155b919050565b6103dc611308565b6001600160a01b03166103ed6109f1565b6001600160a01b031614610431576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610475576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156104c1576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b038281169116141561050d576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038083166000908152609c60205260409020548391166105685760405162461bcd60e51b81526004016102dc90611b98565b81620f42408162ffffff1611156105915760405162461bcd60e51b81526004016102dc90611a8f565b610599611308565b6001600160a01b03166105aa6109f1565b6001600160a01b0316146105ee576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0384166000908152609d602052604090819020805462ffffff191662ffffff8616179055517f0b4bf524b123dd9f9252f2f17e6f842313eb705045a2259faccd2530bae3ff5c90610647908590611c3a565b60405180910390a150505050565b61065d611308565b6001600160a01b031661066e6109f1565b6001600160a01b0316146106b2576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6106c4816001600160a01b031661130c565b6106e05760405162461bcd60e51b81526004016102dc90611b0f565b606780546001600160a01b0319166001600160a01b0383169081179091556040517fd0654f5900f9e7e4e605a19334306e6a2786bbf960ac0484a4c12feb6428fe2f90600090a250565b600054610100900460ff16806107435750610743611312565b80610751575060005460ff16155b61078c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611c7d602e913960400191505060405180910390fd5b600054610100900460ff161580156107b7576000805460ff1961ff0019909116610100171660011790555b6107bf611323565b6107d1836001600160a01b031661130c565b6107ed5760405162461bcd60e51b81526004016102dc90611a6e565b6107ff826001600160a01b031661130c565b61081b5760405162461bcd60e51b81526004016102dc90611a4d565b609a80546001600160a01b038086166001600160a01b031992831617909255609b805460ff60a01b199386169216919091179190911660ff60a01b179055801561086b576000805461ff00191690555b505050565b609b546001600160a01b031690565b6034546001600160a01b031690565b610896611308565b6001600160a01b03166108a76109f1565b6001600160a01b0316146108eb576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b610949611308565b6001600160a01b031661095a6109f1565b6001600160a01b03161461099e576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b609b805460ff60a01b1916600160a01b60ff8416021790556040517ff3d121ca0d4fa5acf57cf8a09acedf5326b6ca02f25764d2a05a4dba8e4a777e906109e6908390611c4a565b60405180910390a150565b6033546001600160a01b031690565b609a546001600160a01b031690565b6001600160a01b038083166000908152609c6020526040902054839116610a485760405162461bcd60e51b81526004016102dc90611b98565b81620f42408162ffffff161115610a715760405162461bcd60e51b81526004016102dc90611a8f565b610a79611308565b6001600160a01b0316610a8a6109f1565b6001600160a01b031614610ace576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0384166000908152609e602052604090819020805462ffffff191662ffffff8616179055517f8129297a1a8d252870739804c1d9cdbc86121230ce172c23ec11a940ccab01ef9061064790869086906119c0565b6001600160a01b038082166000908152609c60205260408120549091839116610b645760405162461bcd60e51b81526004016102dc90611b98565b50506001600160a01b039081166000908152609c60205260409020541690565b6034546001600160a01b0316610bc9576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610bd1611308565b6034546001600160a01b03908116911614610c1c576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6067546001600160a01b031690565b6000610c9b611308565b6001600160a01b0316610cac6109f1565b6001600160a01b031614610cf0576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038381166000908152609c60205260409020541615610d285760405162461bcd60e51b81526004016102dc90611ace565b826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610d6157600080fd5b505afa158015610d75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d999190611968565b60ff16601214610dbb5760405162461bcd60e51b81526004016102dc90611bb8565b6067546040516370a0823160e01b8152600019916001600160a01b03808716926370a0823192610def921690600401611984565b60206040518083038186803b158015610e0757600080fd5b505afa158015610e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3f9190611934565b14610e5c5760405162461bcd60e51b81526004016102dc90611a2b565b609b54604080516318160ddd60e01b81529051600019926001600160a01b0316916318160ddd916004808301926020929190829003018186803b158015610ea257600080fd5b505afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190611934565b14610ef75760405162461bcd60e51b81526004016102dc90611b53565b609b546001600160a01b0390811690841610610f255760405162461bcd60e51b81526004016102dc90611bda565b609a54609b54600091610f46916001600160a01b03918216911686866113cd565b90506001600160a01b038116610f6e5760405162461bcd60e51b81526004016102dc90611a0b565b610f778161146d565b6001600160a01b0316610f9c5760405162461bcd60e51b81526004016102dc90611aae565b6067546040516304fec10960e11b81526001600160a01b03868116926309fd821292610fce9290911690600401611984565b60206040518083038186803b158015610fe657600080fd5b505afa158015610ffa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101e9190611888565b61103a5760405162461bcd60e51b81526004016102dc90611b31565b6040516304fec10960e11b81526001600160a01b038516906309fd821290611066908490600401611984565b60206040518083038186803b15801561107e57600080fd5b505afa158015611092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b69190611888565b6110d25760405162461bcd60e51b81526004016102dc90611aed565b609b546067546040516304fec10960e11b81526001600160a01b03928316926309fd82129261110692911690600401611984565b60206040518083038186803b15801561111e57600080fd5b505afa158015611132573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111569190611888565b6111725760405162461bcd60e51b81526004016102dc90611b75565b609b546040516304fec10960e11b81526001600160a01b03909116906309fd8212906111a2908490600401611984565b60206040518083038186803b1580156111ba57600080fd5b505afa1580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f29190611888565b61120e5760405162461bcd60e51b81526004016102dc906119e9565b6001600160a01b038085166000818152609c6020908152604080832080549587166001600160a01b031990961686179055609f8252808320805462ffffff8a1662ffffff199182168117909255609e90935281842080549093168117909255519092917f8b17db32f8ec22477a8f9475d5b92052ef2ce8c6c73ad79be1eb297a8fdd2ff191a49392505050565b609b54600160a01b900460ff1690565b6001600160a01b038082166000908152609c602052604081205490918391166112e65760405162461bcd60e51b81526004016102dc90611b98565b50506001600160a01b03166000908152609e602052604090205462ffffff1690565b3390565b3b151590565b600061131d3061130c565b15905090565b600054610100900460ff168061133c575061133c611312565b8061134a575060005460ff16155b6113855760405162461bcd60e51b815260040180806020018281038252602e815260200180611c7d602e913960400191505060405180910390fd5b600054610100900460ff161580156113b0576000805460ff1961ff0019909116610100171660011790555b6113b86114ed565b80156113ca576000805461ff00191690555b50565b6000806113db8585856115ee565b80516020820151604051630b4c774160e11b81529293506001600160a01b03891692631698ee82926114139290918890600401611998565b60206040518083038186803b15801561142b57600080fd5b505afa15801561143f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114639190611800565b9695505050505050565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e091906118a2565b5094979650505050505050565b600054610100900460ff16806115065750611506611312565b80611514575060005460ff16155b61154f5760405162461bcd60e51b815260040180806020018281038252602e815260200180611c7d602e913960400191505060405180910390fd5b600054610100900460ff1615801561157a576000805460ff1961ff0019909116610100171660011790555b611582611644565b600061158c611308565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35080156113ca576000805461ff001916905550565b6115f661179b565b826001600160a01b0316846001600160a01b03161115611614579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b600054610100900460ff168061165d575061165d611312565b8061166b575060005460ff16155b6116a65760405162461bcd60e51b815260040180806020018281038252602e815260200180611c7d602e913960400191505060405180910390fd5b600054610100900460ff161580156116d1576000805460ff1961ff0019909116610100171660011790555b6113b8600054610100900460ff16806116ed57506116ed611312565b806116fb575060005460ff16155b6117365760405162461bcd60e51b815260040180806020018281038252602e815260200180611c7d602e913960400191505060405180910390fd5b600054610100900460ff161580156113b8576000805460ff1961ff00199091166101001716600117905580156113ca576000805461ff001916905550565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604080516060810182526000808252602082018190529181019190915290565b805180151581146103cf57600080fd5b805161ffff811681146103cf57600080fd5b6000602082840312156117ee578081fd5b81356117f981611c58565b9392505050565b600060208284031215611811578081fd5b81516117f981611c58565b6000806040838503121561182e578081fd5b823561183981611c58565b9150602083013561184981611c58565b809150509250929050565b60008060408385031215611866578182fd5b823561187181611c58565b9150602083013562ffffff81168114611849578182fd5b600060208284031215611899578081fd5b6117f9826117bb565b600080600080600080600060e0888a0312156118bc578283fd5b87516118c781611c58565b8097505060208801518060020b81146118de578384fd5b95506118ec604089016117cb565b94506118fa606089016117cb565b9350611908608089016117cb565b925060a088015161191881611c6d565b915061192660c089016117bb565b905092959891949750929550565b600060208284031215611945578081fd5b5051919050565b60006020828403121561195d578081fd5b81356117f981611c6d565b600060208284031215611979578081fd5b81516117f981611c6d565b6001600160a01b0391909116815260200190565b6001600160a01b03938416815291909216602082015262ffffff909116604082015260600190565b6001600160a01b0392909216825262ffffff16602082015260400190565b901515815260200190565b602080825260089082015267135497d4139455d360c21b604082015260600190565b60208082526006908201526504d525f4e45560d41b604082015260600190565b6020808252600890820152674d525f4348424e4560c01b604082015260600190565b6020808252600790820152664d525f51544e4360c81b604082015260600190565b6020808252600790820152664d525f55464e4360c81b604082015260600190565b6020808252600590820152644d525f524f60d81b604082015260600190565b6020808252600690820152654d525f504e4960d01b604082015260600190565b60208082526005908201526404d525f45560dc1b604082015260600190565b602080825260089082015267135497d4139095d360c21b604082015260600190565b6020808252600890820152674348445f43484e4360c01b604082015260600190565b602080825260089082015267135497d0d39095d360c21b604082015260600190565b6020808252600890820152674d525f5154534e4560c01b604082015260600190565b602080825260099082015268135497d0d2139455d360ba1b604082015260600190565b6020808252600690820152654d525f504e4560d01b604082015260600190565b60208082526008908201526709aa4be84889c62760c31b604082015260600190565b60208082526005908201526426a92fa4a160d91b604082015260600190565b81516001600160a01b0316815260208083015162ffffff90811691830191909152604080840151821690830152606092830151169181019190915260800190565b62ffffff91909116815260200190565b60ff91909116815260200190565b6001600160a01b03811681146113ca57600080fd5b60ff811681146113ca57600080fdfe496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564a264697066735822122036bfb105629e0802da0d16f6225302806562caff4e1ea45b12f50f7bb4262cfb64736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063831f72b4116100ad578063bc5920ba11610071578063bc5920ba14610256578063c575ff791461025e578063c7bf443414610266578063ece090c414610279578063edd0b5cb1461028e5761012c565b8063831f72b41461020d5780638da5cb5b14610220578063b081983b14610228578063bb235d1114610230578063bbe4f6db146102435761012c565b8063449323d8116100f4578063449323d8146101c2578063485cc955146101d55780634a64d67d146101e85780636c8381f8146101fd578063715018a6146102055761012c565b806308ff49ad146101315780630cf85bcc1461015a5780631246dbf51461017a57806313af40351461019a5780633feb4212146101af575b600080fd5b61014461013f3660046117dd565b6102a1565b6040516101519190611c3a565b60405180910390f35b61016d6101683660046117dd565b610307565b6040516101519190611bf9565b61018d6101883660046117dd565b6103b1565b60405161015191906119de565b6101ad6101a83660046117dd565b6103d4565b005b6101ad6101bd366004611854565b61052f565b6101ad6101d03660046117dd565b610655565b6101ad6101e336600461181c565b61072a565b6101f0610870565b6040516101519190611984565b6101f061087f565b6101ad61088e565b6101ad61021b36600461194c565b610941565b6101f06109f1565b6101f0610a00565b6101ad61023e366004611854565b610a0f565b6101f06102513660046117dd565b610b29565b6101ad610b84565b6101f0610c82565b6101f0610274366004611854565b610c91565b61028161129b565b6040516101519190611c4a565b61014461029c3660046117dd565b6112ab565b6001600160a01b038082166000908152609c602052604081205490918391166102e55760405162461bcd60e51b81526004016102dc90611b98565b60405180910390fd5b50506001600160a01b03166000908152609d602052604090205462ffffff1690565b61030f611774565b6001600160a01b038083166000908152609c60205260409020548391166103485760405162461bcd60e51b81526004016102dc90611b98565b5050604080516080810182526001600160a01b039283166000818152609c6020908152848220549095168352818152609e85528381205462ffffff90811686850152828252609f865284822054811684860152918152609d909452919092205416606082015290565b6001600160a01b038181166000908152609c60205260409020541615155b919050565b6103dc611308565b6001600160a01b03166103ed6109f1565b6001600160a01b031614610431576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610475576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156104c1576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b038281169116141561050d576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038083166000908152609c60205260409020548391166105685760405162461bcd60e51b81526004016102dc90611b98565b81620f42408162ffffff1611156105915760405162461bcd60e51b81526004016102dc90611a8f565b610599611308565b6001600160a01b03166105aa6109f1565b6001600160a01b0316146105ee576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0384166000908152609d602052604090819020805462ffffff191662ffffff8616179055517f0b4bf524b123dd9f9252f2f17e6f842313eb705045a2259faccd2530bae3ff5c90610647908590611c3a565b60405180910390a150505050565b61065d611308565b6001600160a01b031661066e6109f1565b6001600160a01b0316146106b2576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6106c4816001600160a01b031661130c565b6106e05760405162461bcd60e51b81526004016102dc90611b0f565b606780546001600160a01b0319166001600160a01b0383169081179091556040517fd0654f5900f9e7e4e605a19334306e6a2786bbf960ac0484a4c12feb6428fe2f90600090a250565b600054610100900460ff16806107435750610743611312565b80610751575060005460ff16155b61078c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611c7d602e913960400191505060405180910390fd5b600054610100900460ff161580156107b7576000805460ff1961ff0019909116610100171660011790555b6107bf611323565b6107d1836001600160a01b031661130c565b6107ed5760405162461bcd60e51b81526004016102dc90611a6e565b6107ff826001600160a01b031661130c565b61081b5760405162461bcd60e51b81526004016102dc90611a4d565b609a80546001600160a01b038086166001600160a01b031992831617909255609b805460ff60a01b199386169216919091179190911660ff60a01b179055801561086b576000805461ff00191690555b505050565b609b546001600160a01b031690565b6034546001600160a01b031690565b610896611308565b6001600160a01b03166108a76109f1565b6001600160a01b0316146108eb576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b610949611308565b6001600160a01b031661095a6109f1565b6001600160a01b03161461099e576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b609b805460ff60a01b1916600160a01b60ff8416021790556040517ff3d121ca0d4fa5acf57cf8a09acedf5326b6ca02f25764d2a05a4dba8e4a777e906109e6908390611c4a565b60405180910390a150565b6033546001600160a01b031690565b609a546001600160a01b031690565b6001600160a01b038083166000908152609c6020526040902054839116610a485760405162461bcd60e51b81526004016102dc90611b98565b81620f42408162ffffff161115610a715760405162461bcd60e51b81526004016102dc90611a8f565b610a79611308565b6001600160a01b0316610a8a6109f1565b6001600160a01b031614610ace576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0384166000908152609e602052604090819020805462ffffff191662ffffff8616179055517f8129297a1a8d252870739804c1d9cdbc86121230ce172c23ec11a940ccab01ef9061064790869086906119c0565b6001600160a01b038082166000908152609c60205260408120549091839116610b645760405162461bcd60e51b81526004016102dc90611b98565b50506001600160a01b039081166000908152609c60205260409020541690565b6034546001600160a01b0316610bc9576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610bd1611308565b6034546001600160a01b03908116911614610c1c576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6067546001600160a01b031690565b6000610c9b611308565b6001600160a01b0316610cac6109f1565b6001600160a01b031614610cf0576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038381166000908152609c60205260409020541615610d285760405162461bcd60e51b81526004016102dc90611ace565b826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610d6157600080fd5b505afa158015610d75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d999190611968565b60ff16601214610dbb5760405162461bcd60e51b81526004016102dc90611bb8565b6067546040516370a0823160e01b8152600019916001600160a01b03808716926370a0823192610def921690600401611984565b60206040518083038186803b158015610e0757600080fd5b505afa158015610e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3f9190611934565b14610e5c5760405162461bcd60e51b81526004016102dc90611a2b565b609b54604080516318160ddd60e01b81529051600019926001600160a01b0316916318160ddd916004808301926020929190829003018186803b158015610ea257600080fd5b505afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190611934565b14610ef75760405162461bcd60e51b81526004016102dc90611b53565b609b546001600160a01b0390811690841610610f255760405162461bcd60e51b81526004016102dc90611bda565b609a54609b54600091610f46916001600160a01b03918216911686866113cd565b90506001600160a01b038116610f6e5760405162461bcd60e51b81526004016102dc90611a0b565b610f778161146d565b6001600160a01b0316610f9c5760405162461bcd60e51b81526004016102dc90611aae565b6067546040516304fec10960e11b81526001600160a01b03868116926309fd821292610fce9290911690600401611984565b60206040518083038186803b158015610fe657600080fd5b505afa158015610ffa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101e9190611888565b61103a5760405162461bcd60e51b81526004016102dc90611b31565b6040516304fec10960e11b81526001600160a01b038516906309fd821290611066908490600401611984565b60206040518083038186803b15801561107e57600080fd5b505afa158015611092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b69190611888565b6110d25760405162461bcd60e51b81526004016102dc90611aed565b609b546067546040516304fec10960e11b81526001600160a01b03928316926309fd82129261110692911690600401611984565b60206040518083038186803b15801561111e57600080fd5b505afa158015611132573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111569190611888565b6111725760405162461bcd60e51b81526004016102dc90611b75565b609b546040516304fec10960e11b81526001600160a01b03909116906309fd8212906111a2908490600401611984565b60206040518083038186803b1580156111ba57600080fd5b505afa1580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f29190611888565b61120e5760405162461bcd60e51b81526004016102dc906119e9565b6001600160a01b038085166000818152609c6020908152604080832080549587166001600160a01b031990961686179055609f8252808320805462ffffff8a1662ffffff199182168117909255609e90935281842080549093168117909255519092917f8b17db32f8ec22477a8f9475d5b92052ef2ce8c6c73ad79be1eb297a8fdd2ff191a49392505050565b609b54600160a01b900460ff1690565b6001600160a01b038082166000908152609c602052604081205490918391166112e65760405162461bcd60e51b81526004016102dc90611b98565b50506001600160a01b03166000908152609e602052604090205462ffffff1690565b3390565b3b151590565b600061131d3061130c565b15905090565b600054610100900460ff168061133c575061133c611312565b8061134a575060005460ff16155b6113855760405162461bcd60e51b815260040180806020018281038252602e815260200180611c7d602e913960400191505060405180910390fd5b600054610100900460ff161580156113b0576000805460ff1961ff0019909116610100171660011790555b6113b86114ed565b80156113ca576000805461ff00191690555b50565b6000806113db8585856115ee565b80516020820151604051630b4c774160e11b81529293506001600160a01b03891692631698ee82926114139290918890600401611998565b60206040518083038186803b15801561142b57600080fd5b505afa15801561143f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114639190611800565b9695505050505050565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e091906118a2565b5094979650505050505050565b600054610100900460ff16806115065750611506611312565b80611514575060005460ff16155b61154f5760405162461bcd60e51b815260040180806020018281038252602e815260200180611c7d602e913960400191505060405180910390fd5b600054610100900460ff1615801561157a576000805460ff1961ff0019909116610100171660011790555b611582611644565b600061158c611308565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35080156113ca576000805461ff001916905550565b6115f661179b565b826001600160a01b0316846001600160a01b03161115611614579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b600054610100900460ff168061165d575061165d611312565b8061166b575060005460ff16155b6116a65760405162461bcd60e51b815260040180806020018281038252602e815260200180611c7d602e913960400191505060405180910390fd5b600054610100900460ff161580156116d1576000805460ff1961ff0019909116610100171660011790555b6113b8600054610100900460ff16806116ed57506116ed611312565b806116fb575060005460ff16155b6117365760405162461bcd60e51b815260040180806020018281038252602e815260200180611c7d602e913960400191505060405180910390fd5b600054610100900460ff161580156113b8576000805460ff1961ff00199091166101001716600117905580156113ca576000805461ff001916905550565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604080516060810182526000808252602082018190529181019190915290565b805180151581146103cf57600080fd5b805161ffff811681146103cf57600080fd5b6000602082840312156117ee578081fd5b81356117f981611c58565b9392505050565b600060208284031215611811578081fd5b81516117f981611c58565b6000806040838503121561182e578081fd5b823561183981611c58565b9150602083013561184981611c58565b809150509250929050565b60008060408385031215611866578182fd5b823561187181611c58565b9150602083013562ffffff81168114611849578182fd5b600060208284031215611899578081fd5b6117f9826117bb565b600080600080600080600060e0888a0312156118bc578283fd5b87516118c781611c58565b8097505060208801518060020b81146118de578384fd5b95506118ec604089016117cb565b94506118fa606089016117cb565b9350611908608089016117cb565b925060a088015161191881611c6d565b915061192660c089016117bb565b905092959891949750929550565b600060208284031215611945578081fd5b5051919050565b60006020828403121561195d578081fd5b81356117f981611c6d565b600060208284031215611979578081fd5b81516117f981611c6d565b6001600160a01b0391909116815260200190565b6001600160a01b03938416815291909216602082015262ffffff909116604082015260600190565b6001600160a01b0392909216825262ffffff16602082015260400190565b901515815260200190565b602080825260089082015267135497d4139455d360c21b604082015260600190565b60208082526006908201526504d525f4e45560d41b604082015260600190565b6020808252600890820152674d525f4348424e4560c01b604082015260600190565b6020808252600790820152664d525f51544e4360c81b604082015260600190565b6020808252600790820152664d525f55464e4360c81b604082015260600190565b6020808252600590820152644d525f524f60d81b604082015260600190565b6020808252600690820152654d525f504e4960d01b604082015260600190565b60208082526005908201526404d525f45560dc1b604082015260600190565b602080825260089082015267135497d4139095d360c21b604082015260600190565b6020808252600890820152674348445f43484e4360c01b604082015260600190565b602080825260089082015267135497d0d39095d360c21b604082015260600190565b6020808252600890820152674d525f5154534e4560c01b604082015260600190565b602080825260099082015268135497d0d2139455d360ba1b604082015260600190565b6020808252600690820152654d525f504e4560d01b604082015260600190565b60208082526008908201526709aa4be84889c62760c31b604082015260600190565b60208082526005908201526426a92fa4a160d91b604082015260600190565b81516001600160a01b0316815260208083015162ffffff90811691830191909152604080840151821690830152606092830151169181019190915260800190565b62ffffff91909116815260200190565b60ff91909116815260200190565b6001600160a01b03811681146113ca57600080fd5b60ff811681146113ca57600080fdfe496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564a264697066735822122036bfb105629e0802da0d16f6225302806562caff4e1ea45b12f50f7bb4262cfb64736f6c63430007060033", + "bytecode": "0x608060405234801561001057600080fd5b50611c6d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100fc5760003560e01c806308ff49ad146101015780630cf85bcc1461012a5780631246dbf51461014a57806313af40351461016a5780633feb42121461017f578063449323d814610192578063485cc955146101a55780634a64d67d146101b85780636c8381f8146101cd578063715018a6146101d5578063831f72b4146101dd5780638da5cb5b146101f0578063b081983b146101f8578063bb235d1114610200578063bbe4f6db14610213578063bc5920ba14610226578063c575ff791461022e578063c7bf443414610236578063ece090c414610249578063edd0b5cb1461025e575b600080fd5b61011461010f36600461176c565b610271565b6040516101219190611ba7565b60405180910390f35b61013d61013836600461176c565b6102d7565b6040516101219190611b66565b61015d61015836600461176c565b610381565b604051610121919061196d565b61017d61017836600461176c565b6103a4565b005b61017d61018d3660046117e3565b6104ff565b61017d6101a036600461176c565b610625565b61017d6101b33660046117ab565b6106cc565b6101c0610812565b6040516101219190611913565b6101c0610821565b61017d610830565b61017d6101eb3660046118db565b6108d1565b6101c0610981565b6101c0610990565b61017d61020e3660046117e3565b61099f565b6101c061022136600461176c565b610ab9565b61017d610b14565b6101c0610c00565b6101c06102443660046117e3565b610c0f565b610251611229565b6040516101219190611bb7565b61011461026c36600461176c565b611239565b6001600160a01b038082166000908152609c602052604081205490918391166102b55760405162461bcd60e51b81526004016102ac90611b05565b60405180910390fd5b50506001600160a01b03166000908152609d602052604090205462ffffff1690565b6102df611703565b6001600160a01b038083166000908152609c60205260409020548391166103185760405162461bcd60e51b81526004016102ac90611b05565b5050604080516080810182526001600160a01b039283166000818152609c6020908152848220549095168352818152609e85528381205462ffffff90811686850152828252609f865284822054811684860152918152609d909452919092205416606082015290565b6001600160a01b038181166000908152609c60205260409020541615155b919050565b6103ac611296565b6001600160a01b03166103bd610981565b6001600160a01b031614610401576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610445576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b0382811691161415610491576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b03828116911614156104dd576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038083166000908152609c60205260409020548391166105385760405162461bcd60e51b81526004016102ac90611b05565b81620f42408162ffffff1611156105615760405162461bcd60e51b81526004016102ac90611a1e565b610569611296565b6001600160a01b031661057a610981565b6001600160a01b0316146105be576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0384166000908152609d602052604090819020805462ffffff191662ffffff8616179055517f0b4bf524b123dd9f9252f2f17e6f842313eb705045a2259faccd2530bae3ff5c90610617908590611ba7565b60405180910390a150505050565b61062d611296565b6001600160a01b031661063e610981565b6001600160a01b031614610682576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b606780546001600160a01b0319166001600160a01b0383169081179091556040517fd0654f5900f9e7e4e605a19334306e6a2786bbf960ac0484a4c12feb6428fe2f90600090a250565b600054610100900460ff16806106e557506106e561129a565b806106f3575060005460ff16155b61072e5760405162461bcd60e51b815260040180806020018281038252602e815260200180611bea602e913960400191505060405180910390fd5b600054610100900460ff16158015610759576000805460ff1961ff0019909116610100171660011790555b6107616112ab565b610773836001600160a01b0316611355565b61078f5760405162461bcd60e51b81526004016102ac906119fd565b6107a1826001600160a01b0316611355565b6107bd5760405162461bcd60e51b81526004016102ac906119dc565b609a80546001600160a01b038086166001600160a01b031992831617909255609b805460ff60a01b199386169216919091179190911660ff60a01b179055801561080d576000805461ff00191690555b505050565b609b546001600160a01b031690565b6034546001600160a01b031690565b610838611296565b6001600160a01b0316610849610981565b6001600160a01b03161461088d576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b031690600080516020611c18833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b6108d9611296565b6001600160a01b03166108ea610981565b6001600160a01b03161461092e576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b609b805460ff60a01b1916600160a01b60ff8416021790556040517ff3d121ca0d4fa5acf57cf8a09acedf5326b6ca02f25764d2a05a4dba8e4a777e90610976908390611bb7565b60405180910390a150565b6033546001600160a01b031690565b609a546001600160a01b031690565b6001600160a01b038083166000908152609c60205260409020548391166109d85760405162461bcd60e51b81526004016102ac90611b05565b81620f42408162ffffff161115610a015760405162461bcd60e51b81526004016102ac90611a1e565b610a09611296565b6001600160a01b0316610a1a610981565b6001600160a01b031614610a5e576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0384166000908152609e602052604090819020805462ffffff191662ffffff8616179055517f8129297a1a8d252870739804c1d9cdbc86121230ce172c23ec11a940ccab01ef90610617908690869061194f565b6001600160a01b038082166000908152609c60205260408120549091839116610af45760405162461bcd60e51b81526004016102ac90611b05565b50506001600160a01b039081166000908152609c60205260409020541690565b6034546001600160a01b0316610b59576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610b61611296565b6034546001600160a01b03908116911614610bac576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b039283169290911690600080516020611c1883398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6067546001600160a01b031690565b6000610c19611296565b6001600160a01b0316610c2a610981565b6001600160a01b031614610c6e576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038381166000908152609c60205260409020541615610ca65760405162461bcd60e51b81526004016102ac90611a5d565b826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610cdf57600080fd5b505afa158015610cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1791906118f7565b60ff16601214610d395760405162461bcd60e51b81526004016102ac90611b25565b6067546040516370a0823160e01b8152600019916001600160a01b03808716926370a0823192610d6d921690600401611913565b60206040518083038186803b158015610d8557600080fd5b505afa158015610d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbd91906118c3565b14610dda5760405162461bcd60e51b81526004016102ac906119ba565b609b54604080516318160ddd60e01b81529051600019926001600160a01b0316916318160ddd916004808301926020929190829003018186803b158015610e2057600080fd5b505afa158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5891906118c3565b14610e755760405162461bcd60e51b81526004016102ac90611ac0565b609b546001600160a01b0390811690841610610ea35760405162461bcd60e51b81526004016102ac90611b47565b609a54609b54600091610ec4916001600160a01b039182169116868661135b565b90506001600160a01b038116610eec5760405162461bcd60e51b81526004016102ac9061199a565b6000610ef7826113fb565b5050505050506001600160a01b031690508060001415610f295760405162461bcd60e51b81526004016102ac90611a3d565b6067546040516304fec10960e11b81526001600160a01b03878116926309fd821292610f5b9290911690600401611913565b60206040518083038186803b158015610f7357600080fd5b505afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190611817565b610fc75760405162461bcd60e51b81526004016102ac90611a9e565b6040516304fec10960e11b81526001600160a01b038616906309fd821290610ff3908590600401611913565b60206040518083038186803b15801561100b57600080fd5b505afa15801561101f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110439190611817565b61105f5760405162461bcd60e51b81526004016102ac90611a7c565b609b546067546040516304fec10960e11b81526001600160a01b03928316926309fd82129261109392911690600401611913565b60206040518083038186803b1580156110ab57600080fd5b505afa1580156110bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e39190611817565b6110ff5760405162461bcd60e51b81526004016102ac90611ae2565b609b546040516304fec10960e11b81526001600160a01b03909116906309fd82129061112f908590600401611913565b60206040518083038186803b15801561114757600080fd5b505afa15801561115b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117f9190611817565b61119b5760405162461bcd60e51b81526004016102ac90611978565b6001600160a01b038086166000818152609c6020908152604080832080549588166001600160a01b031990961686179055609f8252808320805462ffffff8b1662ffffff199182168117909255609e90935281842080549093168117909255519092917f8b17db32f8ec22477a8f9475d5b92052ef2ce8c6c73ad79be1eb297a8fdd2ff191a4509392505050565b609b54600160a01b900460ff1690565b6001600160a01b038082166000908152609c602052604081205490918391166112745760405162461bcd60e51b81526004016102ac90611b05565b50506001600160a01b03166000908152609e602052604090205462ffffff1690565b3390565b60006112a530611355565b15905090565b600054610100900460ff16806112c457506112c461129a565b806112d2575060005460ff16155b61130d5760405162461bcd60e51b815260040180806020018281038252602e815260200180611bea602e913960400191505060405180910390fd5b600054610100900460ff16158015611338576000805460ff1961ff0019909116610100171660011790555b61134061148e565b8015611352576000805461ff00191690555b50565b3b151590565b60008061136985858561157d565b80516020820151604051630b4c774160e11b81529293506001600160a01b03891692631698ee82926113a19290918890600401611927565b60206040518083038186803b1580156113b957600080fd5b505afa1580156113cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f1919061178f565b9695505050505050565b6000806000806000806000876001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561143f57600080fd5b505afa158015611453573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114779190611831565b959e949d50929b5090995097509550909350915050565b600054610100900460ff16806114a757506114a761129a565b806114b5575060005460ff16155b6114f05760405162461bcd60e51b815260040180806020018281038252602e815260200180611bea602e913960400191505060405180910390fd5b600054610100900460ff1615801561151b576000805460ff1961ff0019909116610100171660011790555b6115236115d3565b600061152d611296565b603380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020611c18833981519152908290a3508015611352576000805461ff001916905550565b61158561172a565b826001600160a01b0316846001600160a01b031611156115a3579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b600054610100900460ff16806115ec57506115ec61129a565b806115fa575060005460ff16155b6116355760405162461bcd60e51b815260040180806020018281038252602e815260200180611bea602e913960400191505060405180910390fd5b600054610100900460ff16158015611660576000805460ff1961ff0019909116610100171660011790555b611340600054610100900460ff168061167c575061167c61129a565b8061168a575060005460ff16155b6116c55760405162461bcd60e51b815260040180806020018281038252602e815260200180611bea602e913960400191505060405180910390fd5b600054610100900460ff16158015611340576000805460ff1961ff0019909116610100171660011790558015611352576000805461ff001916905550565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604080516060810182526000808252602082018190529181019190915290565b8051801515811461039f57600080fd5b805161ffff8116811461039f57600080fd5b60006020828403121561177d578081fd5b813561178881611bc5565b9392505050565b6000602082840312156117a0578081fd5b815161178881611bc5565b600080604083850312156117bd578081fd5b82356117c881611bc5565b915060208301356117d881611bc5565b809150509250929050565b600080604083850312156117f5578182fd5b823561180081611bc5565b9150602083013562ffffff811681146117d8578182fd5b600060208284031215611828578081fd5b6117888261174a565b600080600080600080600060e0888a03121561184b578283fd5b875161185681611bc5565b8097505060208801518060020b811461186d578384fd5b955061187b6040890161175a565b94506118896060890161175a565b93506118976080890161175a565b925060a08801516118a781611bda565b91506118b560c0890161174a565b905092959891949750929550565b6000602082840312156118d4578081fd5b5051919050565b6000602082840312156118ec578081fd5b813561178881611bda565b600060208284031215611908578081fd5b815161178881611bda565b6001600160a01b0391909116815260200190565b6001600160a01b03938416815291909216602082015262ffffff909116604082015260600190565b6001600160a01b0392909216825262ffffff16602082015260400190565b901515815260200190565b602080825260089082015267135497d4139455d360c21b604082015260600190565b60208082526006908201526504d525f4e45560d41b604082015260600190565b6020808252600890820152674d525f4348424e4560c01b604082015260600190565b6020808252600790820152664d525f51544e4360c81b604082015260600190565b6020808252600790820152664d525f55464e4360c81b604082015260600190565b6020808252600590820152644d525f524f60d81b604082015260600190565b6020808252600690820152654d525f504e4960d01b604082015260600190565b60208082526005908201526404d525f45560dc1b604082015260600190565b602080825260089082015267135497d4139095d360c21b604082015260600190565b602080825260089082015267135497d0d39095d360c21b604082015260600190565b6020808252600890820152674d525f5154534e4560c01b604082015260600190565b602080825260099082015268135497d0d2139455d360ba1b604082015260600190565b6020808252600690820152654d525f504e4560d01b604082015260600190565b60208082526008908201526709aa4be84889c62760c31b604082015260600190565b60208082526005908201526426a92fa4a160d91b604082015260600190565b81516001600160a01b0316815260208083015162ffffff90811691830191909152604080840151821690830152606092830151169181019190915260800190565b62ffffff91909116815260200190565b60ff91909116815260200190565b6001600160a01b038116811461135257600080fd5b60ff8116811461135257600080fdfe496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65648be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220fb99bcc0aa6a1839bcc964559341b56085374f6efce7eb081c0ea1aa18195a9664736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100fc5760003560e01c806308ff49ad146101015780630cf85bcc1461012a5780631246dbf51461014a57806313af40351461016a5780633feb42121461017f578063449323d814610192578063485cc955146101a55780634a64d67d146101b85780636c8381f8146101cd578063715018a6146101d5578063831f72b4146101dd5780638da5cb5b146101f0578063b081983b146101f8578063bb235d1114610200578063bbe4f6db14610213578063bc5920ba14610226578063c575ff791461022e578063c7bf443414610236578063ece090c414610249578063edd0b5cb1461025e575b600080fd5b61011461010f36600461176c565b610271565b6040516101219190611ba7565b60405180910390f35b61013d61013836600461176c565b6102d7565b6040516101219190611b66565b61015d61015836600461176c565b610381565b604051610121919061196d565b61017d61017836600461176c565b6103a4565b005b61017d61018d3660046117e3565b6104ff565b61017d6101a036600461176c565b610625565b61017d6101b33660046117ab565b6106cc565b6101c0610812565b6040516101219190611913565b6101c0610821565b61017d610830565b61017d6101eb3660046118db565b6108d1565b6101c0610981565b6101c0610990565b61017d61020e3660046117e3565b61099f565b6101c061022136600461176c565b610ab9565b61017d610b14565b6101c0610c00565b6101c06102443660046117e3565b610c0f565b610251611229565b6040516101219190611bb7565b61011461026c36600461176c565b611239565b6001600160a01b038082166000908152609c602052604081205490918391166102b55760405162461bcd60e51b81526004016102ac90611b05565b60405180910390fd5b50506001600160a01b03166000908152609d602052604090205462ffffff1690565b6102df611703565b6001600160a01b038083166000908152609c60205260409020548391166103185760405162461bcd60e51b81526004016102ac90611b05565b5050604080516080810182526001600160a01b039283166000818152609c6020908152848220549095168352818152609e85528381205462ffffff90811686850152828252609f865284822054811684860152918152609d909452919092205416606082015290565b6001600160a01b038181166000908152609c60205260409020541615155b919050565b6103ac611296565b6001600160a01b03166103bd610981565b6001600160a01b031614610401576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610445576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b0382811691161415610491576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b03828116911614156104dd576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038083166000908152609c60205260409020548391166105385760405162461bcd60e51b81526004016102ac90611b05565b81620f42408162ffffff1611156105615760405162461bcd60e51b81526004016102ac90611a1e565b610569611296565b6001600160a01b031661057a610981565b6001600160a01b0316146105be576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0384166000908152609d602052604090819020805462ffffff191662ffffff8616179055517f0b4bf524b123dd9f9252f2f17e6f842313eb705045a2259faccd2530bae3ff5c90610617908590611ba7565b60405180910390a150505050565b61062d611296565b6001600160a01b031661063e610981565b6001600160a01b031614610682576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b606780546001600160a01b0319166001600160a01b0383169081179091556040517fd0654f5900f9e7e4e605a19334306e6a2786bbf960ac0484a4c12feb6428fe2f90600090a250565b600054610100900460ff16806106e557506106e561129a565b806106f3575060005460ff16155b61072e5760405162461bcd60e51b815260040180806020018281038252602e815260200180611bea602e913960400191505060405180910390fd5b600054610100900460ff16158015610759576000805460ff1961ff0019909116610100171660011790555b6107616112ab565b610773836001600160a01b0316611355565b61078f5760405162461bcd60e51b81526004016102ac906119fd565b6107a1826001600160a01b0316611355565b6107bd5760405162461bcd60e51b81526004016102ac906119dc565b609a80546001600160a01b038086166001600160a01b031992831617909255609b805460ff60a01b199386169216919091179190911660ff60a01b179055801561080d576000805461ff00191690555b505050565b609b546001600160a01b031690565b6034546001600160a01b031690565b610838611296565b6001600160a01b0316610849610981565b6001600160a01b03161461088d576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b031690600080516020611c18833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b6108d9611296565b6001600160a01b03166108ea610981565b6001600160a01b03161461092e576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b609b805460ff60a01b1916600160a01b60ff8416021790556040517ff3d121ca0d4fa5acf57cf8a09acedf5326b6ca02f25764d2a05a4dba8e4a777e90610976908390611bb7565b60405180910390a150565b6033546001600160a01b031690565b609a546001600160a01b031690565b6001600160a01b038083166000908152609c60205260409020548391166109d85760405162461bcd60e51b81526004016102ac90611b05565b81620f42408162ffffff161115610a015760405162461bcd60e51b81526004016102ac90611a1e565b610a09611296565b6001600160a01b0316610a1a610981565b6001600160a01b031614610a5e576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0384166000908152609e602052604090819020805462ffffff191662ffffff8616179055517f8129297a1a8d252870739804c1d9cdbc86121230ce172c23ec11a940ccab01ef90610617908690869061194f565b6001600160a01b038082166000908152609c60205260408120549091839116610af45760405162461bcd60e51b81526004016102ac90611b05565b50506001600160a01b039081166000908152609c60205260409020541690565b6034546001600160a01b0316610b59576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610b61611296565b6034546001600160a01b03908116911614610bac576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b039283169290911690600080516020611c1883398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6067546001600160a01b031690565b6000610c19611296565b6001600160a01b0316610c2a610981565b6001600160a01b031614610c6e576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038381166000908152609c60205260409020541615610ca65760405162461bcd60e51b81526004016102ac90611a5d565b826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610cdf57600080fd5b505afa158015610cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1791906118f7565b60ff16601214610d395760405162461bcd60e51b81526004016102ac90611b25565b6067546040516370a0823160e01b8152600019916001600160a01b03808716926370a0823192610d6d921690600401611913565b60206040518083038186803b158015610d8557600080fd5b505afa158015610d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbd91906118c3565b14610dda5760405162461bcd60e51b81526004016102ac906119ba565b609b54604080516318160ddd60e01b81529051600019926001600160a01b0316916318160ddd916004808301926020929190829003018186803b158015610e2057600080fd5b505afa158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5891906118c3565b14610e755760405162461bcd60e51b81526004016102ac90611ac0565b609b546001600160a01b0390811690841610610ea35760405162461bcd60e51b81526004016102ac90611b47565b609a54609b54600091610ec4916001600160a01b039182169116868661135b565b90506001600160a01b038116610eec5760405162461bcd60e51b81526004016102ac9061199a565b6000610ef7826113fb565b5050505050506001600160a01b031690508060001415610f295760405162461bcd60e51b81526004016102ac90611a3d565b6067546040516304fec10960e11b81526001600160a01b03878116926309fd821292610f5b9290911690600401611913565b60206040518083038186803b158015610f7357600080fd5b505afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190611817565b610fc75760405162461bcd60e51b81526004016102ac90611a9e565b6040516304fec10960e11b81526001600160a01b038616906309fd821290610ff3908590600401611913565b60206040518083038186803b15801561100b57600080fd5b505afa15801561101f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110439190611817565b61105f5760405162461bcd60e51b81526004016102ac90611a7c565b609b546067546040516304fec10960e11b81526001600160a01b03928316926309fd82129261109392911690600401611913565b60206040518083038186803b1580156110ab57600080fd5b505afa1580156110bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e39190611817565b6110ff5760405162461bcd60e51b81526004016102ac90611ae2565b609b546040516304fec10960e11b81526001600160a01b03909116906309fd82129061112f908590600401611913565b60206040518083038186803b15801561114757600080fd5b505afa15801561115b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117f9190611817565b61119b5760405162461bcd60e51b81526004016102ac90611978565b6001600160a01b038086166000818152609c6020908152604080832080549588166001600160a01b031990961686179055609f8252808320805462ffffff8b1662ffffff199182168117909255609e90935281842080549093168117909255519092917f8b17db32f8ec22477a8f9475d5b92052ef2ce8c6c73ad79be1eb297a8fdd2ff191a4509392505050565b609b54600160a01b900460ff1690565b6001600160a01b038082166000908152609c602052604081205490918391166112745760405162461bcd60e51b81526004016102ac90611b05565b50506001600160a01b03166000908152609e602052604090205462ffffff1690565b3390565b60006112a530611355565b15905090565b600054610100900460ff16806112c457506112c461129a565b806112d2575060005460ff16155b61130d5760405162461bcd60e51b815260040180806020018281038252602e815260200180611bea602e913960400191505060405180910390fd5b600054610100900460ff16158015611338576000805460ff1961ff0019909116610100171660011790555b61134061148e565b8015611352576000805461ff00191690555b50565b3b151590565b60008061136985858561157d565b80516020820151604051630b4c774160e11b81529293506001600160a01b03891692631698ee82926113a19290918890600401611927565b60206040518083038186803b1580156113b957600080fd5b505afa1580156113cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f1919061178f565b9695505050505050565b6000806000806000806000876001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561143f57600080fd5b505afa158015611453573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114779190611831565b959e949d50929b5090995097509550909350915050565b600054610100900460ff16806114a757506114a761129a565b806114b5575060005460ff16155b6114f05760405162461bcd60e51b815260040180806020018281038252602e815260200180611bea602e913960400191505060405180910390fd5b600054610100900460ff1615801561151b576000805460ff1961ff0019909116610100171660011790555b6115236115d3565b600061152d611296565b603380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020611c18833981519152908290a3508015611352576000805461ff001916905550565b61158561172a565b826001600160a01b0316846001600160a01b031611156115a3579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b600054610100900460ff16806115ec57506115ec61129a565b806115fa575060005460ff16155b6116355760405162461bcd60e51b815260040180806020018281038252602e815260200180611bea602e913960400191505060405180910390fd5b600054610100900460ff16158015611660576000805460ff1961ff0019909116610100171660011790555b611340600054610100900460ff168061167c575061167c61129a565b8061168a575060005460ff16155b6116c55760405162461bcd60e51b815260040180806020018281038252602e815260200180611bea602e913960400191505060405180910390fd5b600054610100900460ff16158015611340576000805460ff1961ff0019909116610100171660011790558015611352576000805461ff001916905550565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604080516060810182526000808252602082018190529181019190915290565b8051801515811461039f57600080fd5b805161ffff8116811461039f57600080fd5b60006020828403121561177d578081fd5b813561178881611bc5565b9392505050565b6000602082840312156117a0578081fd5b815161178881611bc5565b600080604083850312156117bd578081fd5b82356117c881611bc5565b915060208301356117d881611bc5565b809150509250929050565b600080604083850312156117f5578182fd5b823561180081611bc5565b9150602083013562ffffff811681146117d8578182fd5b600060208284031215611828578081fd5b6117888261174a565b600080600080600080600060e0888a03121561184b578283fd5b875161185681611bc5565b8097505060208801518060020b811461186d578384fd5b955061187b6040890161175a565b94506118896060890161175a565b93506118976080890161175a565b925060a08801516118a781611bda565b91506118b560c0890161174a565b905092959891949750929550565b6000602082840312156118d4578081fd5b5051919050565b6000602082840312156118ec578081fd5b813561178881611bda565b600060208284031215611908578081fd5b815161178881611bda565b6001600160a01b0391909116815260200190565b6001600160a01b03938416815291909216602082015262ffffff909116604082015260600190565b6001600160a01b0392909216825262ffffff16602082015260400190565b901515815260200190565b602080825260089082015267135497d4139455d360c21b604082015260600190565b60208082526006908201526504d525f4e45560d41b604082015260600190565b6020808252600890820152674d525f4348424e4560c01b604082015260600190565b6020808252600790820152664d525f51544e4360c81b604082015260600190565b6020808252600790820152664d525f55464e4360c81b604082015260600190565b6020808252600590820152644d525f524f60d81b604082015260600190565b6020808252600690820152654d525f504e4960d01b604082015260600190565b60208082526005908201526404d525f45560dc1b604082015260600190565b602080825260089082015267135497d4139095d360c21b604082015260600190565b602080825260089082015267135497d0d39095d360c21b604082015260600190565b6020808252600890820152674d525f5154534e4560c01b604082015260600190565b602080825260099082015268135497d0d2139455d360ba1b604082015260600190565b6020808252600690820152654d525f504e4560d01b604082015260600190565b60208082526008908201526709aa4be84889c62760c31b604082015260600190565b60208082526005908201526426a92fa4a160d91b604082015260600190565b81516001600160a01b0316815260208083015162ffffff90811691830191909152604080840151821690830152606092830151169181019190915260800190565b62ffffff91909116815260200190565b60ff91909116815260200190565b6001600160a01b038116811461135257600080fd5b60ff8116811461135257600080fdfe496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65648be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220fb99bcc0aa6a1839bcc964559341b56085374f6efce7eb081c0ea1aa18195a9664736f6c63430007060033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/external/abi/perp/PerpV2OrderBook.json b/external/abi/perp/PerpV2OrderBook.json index 927c4b64c..23e618c51 100644 --- a/external/abi/perp/PerpV2OrderBook.json +++ b/external/abi/perp/PerpV2OrderBook.json @@ -128,11 +128,6 @@ "internalType": "uint128", "name": "liquidity", "type": "uint128" - }, - { - "internalType": "bytes32", - "name": "orderId", - "type": "bytes32" } ], "internalType": "struct IOrderBook.AddLiquidityResponse", @@ -460,6 +455,35 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "trader", + "type": "address" + }, + { + "internalType": "address", + "name": "baseToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "fetchBase", + "type": "bool" + } + ], + "name": "getTotalOrderDebt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -473,11 +497,16 @@ "type": "address[]" } ], - "name": "getTotalQuoteAmountInPools", + "name": "getTotalQuoteBalanceAndPendingFee", "outputs": [ + { + "internalType": "int256", + "name": "totalQuoteAmountInPools", + "type": "int256" + }, { "internalType": "uint256", - "name": "", + "name": "totalPendingFee", "type": "uint256" } ], @@ -502,12 +531,17 @@ "type": "bool" } ], - "name": "getTotalTokenAmountInPool", + "name": "getTotalTokenAmountInPoolAndPendingFee", "outputs": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" + }, + { + "internalType": "uint256", + "name": "pendingFee", + "type": "uint256" } ], "stateMutability": "view", @@ -923,8 +957,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061632a80620000216000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80638da5cb5b116100f9578063c575ff7911610097578063e8ab2fb311610071578063e8ab2fb314610387578063eaad2354146103a7578063f807cd22146103ba578063ffa61327146103c2576101a9565b8063c575ff7914610364578063c66b8ed21461036c578063d348799714610374576101a9565b8063b0c04174116100d3578063b0c0417414610323578063bc5920ba14610336578063bf0b1abb1461033e578063c4d66de814610351576101a9565b80638da5cb5b146102db578063a3bf0df8146102e3578063acf7182714610303576101a9565b806359bfbc5a116101665780636c8381f8116101405780636c8381f814610298578063715018a6146102ad5780637fc26736146102b5578063865bcccc146102c8576101a9565b806359bfbc5a1461025f5780635b778b9d1461027257806367b1f5df14610285576101a9565b806313af4035146101ae578063398dbcfd146101c3578063436933ea146101ec578063449323d81461020c57806347b52fb71461021f5780634dffaee51461023f575b600080fd5b6101c16101bc366004615670565b6103d5565b005b6101d66101d13660046156e0565b610530565b6040516101e391906160f7565b60405180910390f35b6101ff6101fa3660046156a8565b6107ff565b6040516101e39190615dc2565b6101c161021a366004615670565b610879565b61023261022d3660046157e8565b61094e565b6040516101e39190615e53565b61025261024d36600461582f565b610b63565b6040516101e39190615e06565b61023261026d366004615670565b610be6565b6101d66102803660046159ae565b610c05565b6101c1610293366004615670565b610dd7565b6102a0610ea4565b6040516101e39190615cea565b6101c1610eb3565b6102326102c33660046157e8565b610f66565b6102326102d636600461582f565b6111b4565b6102a0611216565b6102f66102f13660046159bf565b611225565b6040516101e39190616131565b610316610311366004615882565b611827565b6040516101e3919061605a565b6101c161033136600461589a565b6118c2565b6101c1611954565b61023261034c366004615743565b611a52565b6101c161035f366004615670565b611a5f565b6102a0611b13565b6102a0611b22565b6101c1610382366004615c4e565b611b31565b61039a6103953660046158fd565b611cd1565b6040516101e39190616017565b6103166103b536600461578d565b6120d5565b6102a0612188565b6102326103d036600461578d565b612197565b6103dd612245565b6001600160a01b03166103ee611216565b6001600160a01b031614610432576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610476576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156104c2576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b038281169116141561050e576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b6105386153df565b6067546001600160a01b031661054c612245565b6001600160a01b03161461057b5760405162461bcd60e51b815260040161057290615e7c565b60405180910390fd5b609a5460405163bbe4f6db60e01b81526000916001600160a01b03169063bbe4f6db906105ac908890600401615cea565b60206040518083038186803b1580156105c457600080fd5b505afa1580156105d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fc919061568c565b90506106066153df565b60005b848110156107f257600060cf600088888581811061062357fe5b60209081029290920135835250818101929092526040908101600090812082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b968301879052600160981b909104810b810b810b948201859052600183015460608301528201546080820152600382015460a0820152600482015460c0820152600582015460e08201526006909101546101008201529350916106ce918c918c91612249565b9050808888858181106106dd57fe5b90506020020135146107015760405162461bcd60e51b815260040161057290615f97565b60006107746040518060e001604052808d6001600160a01b031681526020018c6001600160a01b03168152602001886001600160a01b03168152602001848152602001856020015160020b8152602001856040015160020b815260200185600001516001600160801b03168152506122aa565b805186519192506107859190612522565b85526020808201519086015161079a91612522565b6020860152604080820151908601516107b291612522565b6040860152606080820151908601516107ca9161257c565b6060860152608080820151908601516107e29161257c565b6080860152505050600101610609565b509150505b949350505050565b6001600160a01b03808316600090815260ce6020908152604080832093851683529281529082902080548351818402810184019094528084526060939283018282801561086b57602002820191906000526020600020905b815481526020019060010190808311610857575b505050505090505b92915050565b610881612245565b6001600160a01b0316610892611216565b6001600160a01b0316146108d6576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6108e8816001600160a01b03166125e1565b6109045760405162461bcd60e51b815260040161057290615f1d565b606780546001600160a01b0319166001600160a01b0383169081179091556040517fd0654f5900f9e7e4e605a19334306e6a2786bbf960ac0484a4c12feb6428fe2f90600090a250565b6001600160a01b03808416600090815260ce60209081526040808320938616835292815282822080548451818402810184019095528085529293849390928301828280156109bb57602002820191906000526020600020905b8154815260200190600101908083116109a7575b5050506001600160a01b03808816600090815260d06020526040808220609a54915163bbe4f6db60e01b815296975095919450909116915063bbe4f6db90610a07908990600401615cea565b60206040518083038186803b158015610a1f57600080fd5b505afa158015610a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a57919061568c565b905060005b8351811015610b5757600060cf6000868481518110610a7757fe5b6020908102919091018101518252818101929092526040908101600090812082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b968301879052600160981b909104810b810b810b948201859052600183015460608301528201546080820152600382015460a0820152600482015460c0820152600582015460e0820152600690910154610100820152935091610b3591610b23876125e7565b8b5160208d01518a9493929190612667565b9050610b4b610b44838361274b565b889061257c565b96505050600101610a5c565b505050505b9392505050565b6000805b82811015610bdb576001600160a01b038516600090815260ce6020526040812081868685818110610b9457fe5b9050602002016020810190610ba99190615670565b6001600160a01b031681526020810191909152604001600020541115610bd3576001915050610b5c565b600101610b67565b506000949350505050565b6001600160a01b038116600090815260d160205260409020545b919050565b610c0d6153df565b6067546001600160a01b0316610c21612245565b6001600160a01b031614610c475760405162461bcd60e51b815260040161057290615e7c565b609a546000906001600160a01b031663bbe4f6db610c6b6040860160208701615670565b6040518263ffffffff1660e01b8152600401610c879190615cea565b60206040518083038186803b158015610c9f57600080fd5b505afa158015610cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd7919061568c565b90506000610d20610ceb6020860186615670565b610cfb6040870160208801615670565b610d0b60608801604089016158c5565b610d1b6080890160608a016158c5565b612249565b6040805160e081019091529091506107f79080610d406020880188615670565b6001600160a01b03168152602001866020016020810190610d619190615670565b6001600160a01b03168152602001846001600160a01b03168152602001838152602001866040016020810190610d9791906158c5565b60020b8152602001610daf60808801606089016158c5565b60020b8152602001610dc760a0880160808901615a75565b6001600160801b031690526122aa565b610ddf612245565b6001600160a01b0316610df0611216565b6001600160a01b031614610e34576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610e5a5760405162461bcd60e51b815260040161057290615ebd565b60cd80546001600160a01b0319166001600160a01b0383169081179091556040517f39870277935708b88965de17b0c29d3c1ad93a200dce569fc56702229432973e90600090a250565b6034546001600160a01b031690565b610ebb612245565b6001600160a01b0316610ecc611216565b6001600160a01b031614610f10576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b6001600160a01b03808416600090815260ce6020908152604080832093861683529281528282208054845181840281018401909552808552929384939092830182828015610fd357602002820191906000526020600020905b815481526020019060010190808311610fbf575b5050506001600160a01b03808816600090815260d06020526040808220609a54915163bbe4f6db60e01b815296975095919450909116915063bbe4f6db9061101f908990600401615cea565b60206040518083038186803b15801561103757600080fd5b505afa15801561104b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106f919061568c565b835190915060005b818110156111a857600060cf600087848151811061109157fe5b6020908102919091018101518252810191909152604001600090812080549092506110e790600160801b8104600290810b91600160981b9004900b6110d5886125e7565b8c5160208e01518b9493929190612667565b604080516101208101825284546001600160801b0381168252600160801b8104600290810b810b810b6020840152600160981b909104810b810b810b9282019290925260018501546060820152908401546080820152600384015460a0820152600484015460c0820152600584015460e0820152600684015461010082015290915061117e90611177908361274b565b899061257c565b81516002840155602082015160038401556040909101516004909201919091559550600101611077565b50505050509392505050565b60008060005b8381101561120d5760008585838181106111d057fe5b90506020020160208101906111e59190615670565b905060006111f588836000612831565b90506112018482612522565b935050506001016111ba565b50949350505050565b6033546001600160a01b031690565b61122d61540e565b60cd546001600160a01b0316611241612245565b6001600160a01b0316146112675760405162461bcd60e51b815260040161057290615efd565b609a54825160405163bbe4f6db60e01b81526000926001600160a01b03169163bbe4f6db916112999190600401615cea565b60206040518083038186803b1580156112b157600080fd5b505afa1580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e9919061568c565b6060840151609a54855160405163033e16f360e21b81529394506000928312936001600160a01b0390921691630cf85bcc9161132791600401615cea565b60806040518083038186803b15801561133f57600080fd5b505afa158015611353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113779190615930565b60600151905060008060006113ba86896060015160d160008c600001516001600160a01b03166001600160a01b0316815260200190815260200160002054612b06565b905087608001516001600160a01b03166000146113db578760800151611405565b87602001516113fe5773fffd8963efd1fc6a506488495d951d5263988d25611405565b6401000276a45b6001600160a01b03166080890152600061141e87612bd8565b90505b60408201511580159061144e575088608001516001600160a01b031682602001516001600160a01b031614155b156117d65761145b615432565b6020808401516001600160a01b031682528351908b015161147f918a918590612c4b565b15156040830152600290810b810b60208301819052620d89e719910b12156114b057620d89e71960208201526114cf565b6020810151620d89e860029190910b13156114cf57620d89e860208201525b6114dc8160200151612d6d565b6001600160a01b03166060820152602080840151908b0151611579919061151f578b608001516001600160a01b031683606001516001600160a01b03161161153d565b8b608001516001600160a01b031683606001516001600160a01b0316105b61154b578260600151611551565b8b608001515b856080015186604001518e6020015161156e578e60a00151611574565b8e60c001515b61309f565b60c085015260a084015260808301526001600160a01b0316602084015286156115d7576115cd6115c26115bd8360c00151846080015161252290919063ffffffff16565b613291565b6040850151906132dd565b60408401526115f8565b6115f26115e78260a00151613291565b60408501519061257c565b60408401525b60808301516001600160801b03161561169a57896020015115611636576116308160a001518b60a0015162ffffff16620f4240613342565b60c08201525b60c0810151948501946000906116559062ffffff8916620f4240613342565b60c08301519581019590915060009061166e908361337c565b905061168c81600160801b87608001516001600160801b03166133d9565b606086018051909101905250505b80606001516001600160a01b031683602001516001600160a01b031614156117985780604001511561176e578960400151156117255789516001600160a01b0316600090815260d0602090815260409182902083820151835160608082018652880151815260e08f01805151828601525190930151938301939093529161172391839190613488565b505b60006117358983602001516134c7565b90508a60200151156117505761174d81600f0b613556565b90505b61175e846080015182613592565b6001600160801b03166080850152505b896020015161178157806020015161178a565b60018160200151035b600290810b900b83526117d0565b80600001516001600160a01b031683602001516001600160a01b0316146117d0576117c68360200151613648565b600290810b900b83525b50611421565b88604001511561180057606082015189516001600160a01b0316600090815260d160205260409020555b5060408051606081018252915160020b825260208201939093529182015295945050505050565b61182f61546e565b50600090815260cf602090815260409182902082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b94830194909452600160981b9004830b830b830b9381019390935260018101546060840152908101546080830152600381015460a0830152600481015460c0830152600581015460e08301526006015461010082015290565b6067546001600160a01b03166118d6612245565b6001600160a01b0316146118fc5760405162461bcd60e51b815260040161057290615e7c565b600083815260cf60205260409020600581015461192d9061192890859061192290613291565b9061257c565b613967565b8160050181905550611949611928836119228460060154613291565b600690910155505050565b6034546001600160a01b0316611999576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b6119a1612245565b6034546001600160a01b039081169116146119ec576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b60006107f7848484612831565b600054610100900460ff1680611a785750611a786139be565b80611a86575060005460ff16155b611ac15760405162461bcd60e51b815260040180806020018281038252602e815260200180616233602e913960400191505060405180910390fd5b600054610100900460ff16158015611aec576000805460ff1961ff0019909116610100171660011790555b611af46139cf565b611afd82613a79565b8015611b0f576000805461ff00191690555b5050565b6067546001600160a01b031690565b609a546001600160a01b031690565b6000611b3b612245565b90506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611b7857600080fd5b505afa158015611b8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb0919061568c565b609a5460405163bbe4f6db60e01b81529192506001600160a01b03169063bbe4f6db90611be1908490600401615cea565b60206040518083038186803b158015611bf957600080fd5b505afa158015611c0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c31919061568c565b6001600160a01b0316826001600160a01b031614611c615760405162461bcd60e51b815260040161057290615f3f565b60675460405163d348799760e01b81526001600160a01b039091169063d348799790611c97908990899089908990600401616155565b600060405180830381600087803b158015611cb157600080fd5b505af1158015611cc5573d6000803e3d6000fd5b50505050505050505050565b611cd96154c9565b6067546001600160a01b0316611ced612245565b6001600160a01b031614611d135760405162461bcd60e51b815260040161057290615e7c565b609a546000906001600160a01b031663bbe4f6db611d376040860160208701615670565b6040518263ffffffff1660e01b8152600401611d539190615cea565b60206040518083038186803b158015611d6b57600080fd5b505afa158015611d7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da3919061568c565b9050600060d181611dba6040870160208801615670565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050600060d06000866020016020810190611df69190615670565b6001600160a01b03166001600160a01b031681526020019081526020016000209050611e20615504565b6000611e3b85611e3660a08a0160808b016158c5565b613b6c565b90506000611e5386611e3660c08b0160a08c016158c5565b9050611f196040518060c00160405280886001600160a01b031681526020018a6080016020810190611e8591906158c5565b60020b8152602001611e9d60c08c0160a08d016158c5565b60020b81526020018a6040013581526020018a60600135815260200160405180604001604052808c6000016020810190611ed79190615670565b6001600160a01b031681526020018a6001600160a01b0316815250604051602001611f0291906160d4565b604051602081830303815290604052815250613bfa565b92506000611f26876125e7565b905082158015611f455750611f4587611e3660a08c0160808d016158c5565b15611f8a57611f8a611f5d60a08b0160808c016158c5565b6040805160608101825289815260c08d0135602082015260e08d0135918101919091528791908490613d64565b81158015611fa75750611fa787611e3660c08c0160a08d016158c5565b15611fbf57611fbf611f5d60c08b0160a08c016158c5565b5050506000806120926040518061014001604052808a6000016020810190611fe79190615670565b6001600160a01b031681526020018a60200160208101906120089190615670565b6001600160a01b0390811682528916602082015260400161202f60a08c0160808d016158c5565b60020b815260200161204760c08c0160a08d016158c5565b60020b815260208082018990526040878101516001600160801b03169083015286516060830152860151608082015260a00161208b368c90038c0160c08d01615915565b9052613da3565b6040805160a08101825286518152602080880151908201528082019290925294909401516001600160801b03166060850152608084015250909695505050505050565b6120dd61546e565b60cf60006120ed87878787612249565b8152602080820192909252604090810160002081516101208101835281546001600160801b0381168252600160801b8104600290810b810b810b95830195909552600160981b9004840b840b840b9281019290925260018101546060830152918201546080820152600382015460a0820152600482015460c0820152600582015460e082015260069091015461010082015295945050505050565b60cd546001600160a01b031690565b6000806107f28560cf60006121ae8a8a8a8a612249565b8152602080820192909252604090810160002081516101208101835281546001600160801b0381168252600160801b8104600290810b810b810b95830195909552600160981b9004840b840b840b9281019290925260018101546060830152918201546080820152600382015460a0820152600482015460c0820152600582015460e082015260069091015461010082015261409b565b3390565b604080516bffffffffffffffffffffffff19606096871b81166020808401919091529590961b9095166034860152600292830b60e890811b60488701529190920b901b604b8401528051602e818503018152604e9093019052815191012090565b6122b26153df565b606080830151600090815260cf602090815260409182902082516101208101845281546001600160801b038116808352600160801b8204600290810b810b810b95840195909552600160981b909104840b840b840b94820194909452600182015494810194909452908101546080840152600381015460a0840152600481015460c0840152600581015460e0840152600601546101008301526123675760405162461bcd60e51b815260040161057290615edd565b80600001516001600160801b03168360c001516001600160801b031611156123a15760405162461bcd60e51b815260040161057290615e5c565b60006124186040518060a0016040528086604001516001600160a01b0316815260200160cd60009054906101000a90046001600160a01b03166001600160a01b03168152602001866080015160020b81526020018660a0015160020b81526020018660c001516001600160801b0316815250614197565b90506000806000612428876142ed565b925092509250600061244d61243c84613291565b865161244790613291565b906132dd565b9050600061246a61245d84613291565b6124478860200151613291565b905061247e89604001518a60800151613b6c565b6124ad5760808901516020808b01516001600160a01b0316600090815260d0909152604090206124ad916144b6565b6124bf89604001518a60a00151613b6c565b6124ee5760a08901516020808b01516001600160a01b0316600090815260d0909152604090206124ee916144b6565b6040805160a08101825287518152602097880151978101979097528601949094526060850152505060808201529392505050565b600082820183811015610b5c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008282018183128015906125915750838112155b806125a657506000831280156125a657508381125b610b5c5760405162461bcd60e51b81526004018080602001828103825260218152602001806162126021913960400191505060405180910390fd5b3b151590565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561262257600080fd5b505afa158015612636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265a9190615b85565b5093979650505050505050565b61266f61552e565b600286810b810b60009081526020899052604080822088840b90930b82529020600180830154908201546126a161552e565b8a60020b8960020b12156126b7578288036126b9565b825b6020820152600060028b810b908b900b126126d6578289036126d8565b825b905060008660020154905060008660020154905060008e60020b8d60020b121561270457828b03612706565b825b905060008e60020b8e60020b1261271f57828c03612721565b825b6020870151909d03949094038552909903999099036040830152509b9a5050505050505050505050565b60008061275b8460400151612d6d565b9050600061277861276f8660200151612d6d565b865184906144da565b905060006127a961279a8760a0015187602001516132dd90919063ffffffff16565b6127a384613291565b90614543565b9050600061280c6127f86127e56127d18a608001518a600001516132dd90919063ffffffff16565b600160601b886001600160a01b03166145ec565b60c08a015160408a0151612447916132dd565b88516127a3906001600160801b0316613291565b9050612826600160601b612820848461257c565b90614690565b979650505050505050565b6001600160a01b03808416600090815260ce602090815260408083209386168352928152828220805484518184028101840190955280855292938493909283018282801561289e57602002820191906000526020600020905b81548152602001906001019080831161288a575b5050609a5460405163bbe4f6db60e01b815294955060009461293294506001600160a01b03909116925063bbe4f6db91506128dd908990600401615cea565b60206040518083038186803b1580156128f557600080fd5b505afa158015612909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292d919061568c565b614748565b8251909150600090815b81811015612af957600060cf600087848151811061295657fe5b6020908102919091018101518252818101929092526040908101600090812082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b968301879052600160981b909104810b810b810b9482019490945260018201546060820152928101546080840152600381015460a0840152600481015460c0840152600581015460e084015260060154610100830152909250908190612a0190612d6d565b90506000612a128460400151612d6d565b90508a8015612a325750806001600160a01b0316886001600160a01b0316105b15612a6b57612a64826001600160a01b0316896001600160a01b031611612a595782612a5b565b885b855183906144da565b9250612abe565b8a158015612a8a5750816001600160a01b0316886001600160a01b0316115b15612abe57612abb82826001600160a01b03168a6001600160a01b031610612ab25782612ab4565b895b86516147c8565b92505b50612acb90508582612522565b945088612aef576000612ade8b8461409b565b509050612aeb8682612522565b9550505b505060010161293c565b5090979650505050505050565b612b0e61554f565b600080856001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015612b4a57600080fd5b505afa158015612b5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b829190615b85565b5050505050915091506040518060a001604052808260020b8152602001836001600160a01b03168152602001868152602001858152602001612bc38861480b565b6001600160801b031690529695505050505050565b6000816001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c1357600080fd5b505afa158015612c27573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087391906158e1565b60008060008460020b8660020b81612c5f57fe5b05905060008660020b128015612c8657508460020b8660020b81612c7f57fe5b0760020b15155b15612c9057600019015b8315612cf957600080612ca28361487e565b9092509050600160ff82161b800160001901600081612cc18c86614890565b168015159650905085612cdb57888360ff16860302612cee565b88612ce58261490f565b840360ff168603025b965050505050612d63565b600080612d088360010161487e565b9092509050600019600160ff83161b0119600081612d268c86614890565b168015159650905085612d4657888360ff0360ff16866001010102612d5c565b8883612d51836149af565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612d84578260020b612d8c565b8260020b6000035b9050620d89e8811115612dca576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612dde57600160801b612df0565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612e24576ffff97272373d413259a46990580e213a0260801c5b6004821615612e43576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612e62576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612e81576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612ea0576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612ebf576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612ede576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612efe576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612f1e576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612f3e576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612f5e576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612f7e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612f9e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612fbe576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612fde576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612fff576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561301f576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561303e576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561305b576b048a170391f7dc42444e8fa20260801c5b60008460020b131561307657806000198161307257fe5b0490505b64010000000081061561308a57600161308d565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a1610158187128015906131245760006130d88989620f42400362ffffff16620f42406133d9565b9050826130f1576130ec8c8c8c6001614a99565b6130fe565b6130fe8b8d8c6001614b12565b955085811061310f578a965061311e565b61311b8c8b8386614bb2565b96505b5061316e565b8161313b576131368b8b8b6000614b12565b613148565b6131488a8c8b6000614a99565b935083886000031061315c5789955061316e565b61316b8b8a8a60000385614bfe565b95505b6001600160a01b038a81169087161482156131d15780801561318d5750815b6131a35761319e878d8c6001614b12565b6131a5565b855b95508080156131b2575081155b6131c8576131c3878d8c6000614a99565b6131ca565b845b945061321b565b8080156131db5750815b6131f1576131ec8c888c6001614a99565b6131f3565b855b9550808015613200575081155b613216576132118c888c6000614b12565b613218565b845b94505b8115801561322b57508860000385115b15613237578860000394505b81801561325657508a6001600160a01b0316876001600160a01b031614155b15613265578589039350613282565b61327f868962ffffff168a620f42400362ffffff16613342565b93505b50505095509550955095915050565b60006001600160ff1b038211156132d95760405162461bcd60e51b81526004018080602001828103825260288152602001806162a96028913960400191505060405180910390fd5b5090565b60008183038183128015906132f25750838113155b80613307575060008312801561330757508381135b610b5c5760405162461bcd60e51b81526004018080602001828103825260248152602001806162d16024913960400191505060405180910390fd5b600061334f8484846133d9565b90506000828061335b57fe5b8486091115610b5c57600019811061337257600080fd5b6001019392505050565b6000828211156133d3576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600080806000198587098686029250828110908390030390508061340f576000841161340457600080fd5b508290049050610b5c565b80841161341b57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600291820b820b600090815260209384526040908190208054835103815560018101805495840151959095039094559290910180549190920151039055565b60405163f30dba9360e01b81526000906001600160a01b0384169063f30dba93906134f6908590600401615e1f565b6101006040518083038186803b15801561350f57600080fd5b505afa158015613523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135479190615aad565b50949998505050505050505050565b60006f7fffffffffffffffffffffffffffffff1982600f0b1361358b5760405162461bcd60e51b815260040161057290615f60565b5060000390565b60008082600f0b12156135f757826001600160801b03168260000384039150816001600160801b0316106135f2576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b610873565b826001600160801b03168284019150816001600160801b03161015610873576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b03831610801590613684575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b6136b9576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061374d57607f810383901c9150613757565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461395857886001600160a01b031661393c82612d6d565b6001600160a01b031611156139515781613953565b805b61395a565b815b9998505050505050505050565b6000808212156132d9576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b60006139c9306125e1565b15905090565b600054610100900460ff16806139e857506139e86139be565b806139f6575060005460ff16155b613a315760405162461bcd60e51b815260040180806020018281038252602e815260200180616233602e913960400191505060405180910390fd5b600054610100900460ff16158015613a5c576000805460ff1961ff0019909116610100171660011790555b613a64614c4a565b8015613a76576000805461ff00191690555b50565b600054610100900460ff1680613a925750613a926139be565b80613aa0575060005460ff16155b613adb5760405162461bcd60e51b815260040180806020018281038252602e815260200180616233602e913960400191505060405180910390fd5b600054610100900460ff16158015613b06576000805460ff1961ff0019909116610100171660011790555b613b0e614d4b565b613b20826001600160a01b03166125e1565b613b3c5760405162461bcd60e51b815260040161057290615ff5565b609a80546001600160a01b0319166001600160a01b0384161790558015611b0f576000805461ff00191690555050565b60405163f30dba9360e01b81526000906001600160a01b0384169063f30dba9390613b9b908590600401615e1f565b6101006040518083038186803b158015613bb457600080fd5b505afa158015613bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bec9190615aad565b9a9950505050505050505050565b613c02615504565b600082606001511180613c19575060008260800151115b613c355760405162461bcd60e51b815260040161057290615e9d565b6000613c70613c478460000151614748565b613c548560200151612d6d565b613c618660400151612d6d565b86606001518760800151614de0565b90506000816001600160801b031611613c9b5760405162461bcd60e51b815260040161057290615fd6565b8251602084015160408086015160a08701519151633c8a7d8d60e01b815260009485946001600160a01b0390911693633c8a7d8d93613ce1933093928a91600401615cfe565b6040805180830381600087803b158015613cfa57600080fd5b505af1158015613d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d329190615c2b565b915091506040518060600160405280838152602001828152602001846001600160801b03168152509350505050919050565b8160020b8360020b13613d9d57600283810b810b6000908152602086815260409182902084518155908401516001820155908301519101555b50505050565b6000806000613dc48460000151856020015186606001518760800151612249565b600081815260cf602052604090208054919250906001600160801b0316613f785784516001600160a01b03908116600090815260ce60209081526040808320828a015185168452825291829020609a548351633b38243160e21b815293519194169263ece090c4926004808301939192829003018186803b158015613e4857600080fd5b505afa158015613e5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e809190615cc9565b60ff16818054905010613ea55760405162461bcd60e51b815260040161057290615fb6565b8054600181018255600082815260208082209092018590556060880151845460808a015162ffffff60801b19909116600160801b600293840b62ffffff90811682029290921762ffffff60981b1916600160981b93850b929092168302919091178088558b8601516001600160a01b0316855260d09095526040808520908c01519095613f5a94928104830b93900490910b90613f41906125e7565b6101208c01518051602090910151879493929190612667565b80516002860155602081015160038601556040015160048501555050505b602080860151604080516101208101825284546001600160801b0381168252600160801b8104600290810b810b810b95830195909552600160981b9004840b840b840b9181019190915260018401546060820152918301546080830152600383015460a0830152600483015460c0830152600583015460e08301526006830154610100830152600091829161400c9161409b565b60c0890151855492945090925061403891614033916001600160801b039182169116612522565b614ea2565b83546001600160801b0319166001600160801b03919091161783556001830181905560e0870151600584015461406d91612522565b6005840155610100870151600684015461408691612522565b60069093019290925591935090915050915091565b6001600160a01b03808316600090815260d0602090815260408083209185015185820151609a54925163bbe4f6db60e01b8152949586956141689461414592169063bbe4f6db906140f0908c90600401615cea565b60206040518083038186803b15801561410857600080fd5b505afa15801561411c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614140919061568c565b6125e7565b6001600160a01b038916600090815260d160205260409020548593929190614eea565b915061418c8460600151830385600001516001600160801b0316600160801b6133d9565b9250505b9250929050565b61419f61557d565b60008083600001516001600160a01b031663a34123a78560400151866060015187608001516040518463ffffffff1660e01b81526004016141e293929190615e2d565b6040805180830381600087803b1580156141fb57600080fd5b505af115801561420f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142339190615c2b565b9150915083600001516001600160a01b0316634f1eb3d88560200151866040015187606001516001600160801b03806040518663ffffffff1660e01b8152600401614282959493929190615d85565b6040805180830381600087803b15801561429b57600080fd5b505af11580156142af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142d39190615b57565b505060408051808201909152918252602082015292915050565b606080820151600090815260cf602090815260408083208286015182516101208101845282546001600160801b0381168252600160801b8104600290810b810b810b96830196909652600160981b9004850b850b850b93810193909352600182015495830195909552918201546080820152600382015460a0820152600482015460c0820152600582015460e0820152600682015461010082015291928392839291839161439b919061409b565b60c088015191965091506001600160801b03161561447a576005820154156143f857600582015460c087015183546143e092916001600160801b0390811691166133d9565b60058301549094506143f2908561337c565b60058301555b60068201541561443d57600682015460c0870151835461442592916001600160801b0390811691166133d9565b6006830154909350614437908461337c565b60068301555b60c0860151825461445e91614033916001600160801b03908116911661337c565b82546001600160801b0319166001600160801b03919091161782555b81546001600160801b03166144a5576144a0866000015187602001518860600151614f52565b6144ad565b600182018190555b50509193909250565b600290810b810b600090815260209290925260408220828155600181018390550155565b6000826001600160a01b0316846001600160a01b031611156144fa579192915b836001600160a01b0316614533606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b03166133d9565b8161453a57fe5b04949350505050565b60008261455257506000610873565b826000191480156145665750600160ff1b82145b156145a25760405162461bcd60e51b81526004018080602001828103825260278152602001806162826027913960400191505060405180910390fd5b828202828482816145af57fe5b0514610b5c5760405162461bcd60e51b81526004018080602001828103825260278152602001806162826027913960400191505060405180910390fd5b600080600085126145fd5784614606565b6146068561505b565b905060008085126146175784614620565b6146208561505b565b9050600080871280156146335750600086135b8061464957506000871380156146495750600086125b614654576000614657565b60015b905060006146668484886133d9565b90508161467b5761467681613291565b614684565b61468481615080565b98975050505050505050565b6000816146e4576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b816000191480156146f85750600160ff1b83145b156147345760405162461bcd60e51b81526004018080602001828103825260218152602001806162616021913960400191505060405180910390fd5b600082848161473f57fe5b05949350505050565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561478357600080fd5b505afa158015614797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147bb9190615b85565b5094979650505050505050565b6000826001600160a01b0316846001600160a01b031611156147e8579192915b6107f7826001600160801b03168585036001600160a01b0316600160601b6133d9565b6000816001600160a01b0316631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b15801561484657600080fd5b505afa15801561485a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108739190615a91565b60020b600881901d9161010090910790565b60405163299ce14b60e11b81526000906001600160a01b03841690635339c296906148bf908590600401615e11565b60206040518083038186803b1580156148d757600080fd5b505afa1580156148eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5c9190615c13565b600080821161491d57600080fd5b600160801b821061493057608091821c91015b68010000000000000000821061494857604091821c91015b640100000000821061495c57602091821c91015b62010000821061496e57601091821c91015b610100821061497f57600891821c91015b6010821061498f57600491821c91015b6004821061499f57600291821c91015b60028210610c0057600101919050565b60008082116149bd57600080fd5b5060ff6001600160801b038216156149d857607f19016149e0565b608082901c91505b67ffffffffffffffff8216156149f957603f1901614a01565b604082901c91505b63ffffffff821615614a1657601f1901614a1e565b602082901c91505b61ffff821615614a3157600f1901614a39565b601082901c91505b60ff821615614a4b5760071901614a53565b600882901c91505b600f821615614a655760031901614a6d565b600482901c91505b6003821615614a7f5760011901614a87565b600282901c91505b6001821615610c005760001901919050565b6000836001600160a01b0316856001600160a01b03161115614ab9579293925b81614ae657614ae1836001600160801b03168686036001600160a01b0316600160601b6133d9565b614b09565b614b09836001600160801b03168686036001600160a01b0316600160601b613342565b95945050505050565b6000836001600160a01b0316856001600160a01b03161115614b32579293925b600160601b600160e01b03606084901b166001600160a01b038686038116908716614b5c57600080fd5b83614b8c57866001600160a01b0316614b7f8383896001600160a01b03166133d9565b81614b8657fe5b04612826565b612826614ba38383896001600160a01b0316613342565b886001600160a01b0316615094565b600080856001600160a01b031611614bc957600080fd5b6000846001600160801b031611614bdf57600080fd5b81614bf157614ae1858585600161509f565b614b098585856001615180565b600080856001600160a01b031611614c1557600080fd5b6000846001600160801b031611614c2b57600080fd5b81614c3d57614ae18585856000615180565b614b09858585600061509f565b600054610100900460ff1680614c635750614c636139be565b80614c71575060005460ff16155b614cac5760405162461bcd60e51b815260040180806020018281038252602e815260200180616233602e913960400191505060405180910390fd5b600054610100900460ff16158015614cd7576000805460ff1961ff0019909116610100171660011790555b614cdf614d4b565b6000614ce9612245565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015613a76576000805461ff001916905550565b600054610100900460ff1680614d645750614d646139be565b80614d72575060005460ff16155b614dad5760405162461bcd60e51b815260040180806020018281038252602e815260200180616233602e913960400191505060405180910390fd5b600054610100900460ff16158015614dd8576000805460ff1961ff0019909116610100171660011790555b613a64615263565b6000836001600160a01b0316856001600160a01b03161115614e00579293925b846001600160a01b0316866001600160a01b031611614e2b57614e24858585615303565b9050614b09565b836001600160a01b0316866001600160a01b03161015614e8d576000614e52878686615303565b90506000614e61878986615366565b9050806001600160801b0316826001600160801b031610614e825780614e84565b815b92505050614b09565b614e98858584615366565b9695505050505050565b806001600160801b0381168114610c005760405162461bcd60e51b81526004018080602001828103825260278152602001806161eb6027913960400191505060405180910390fd5b600284810b80820b6000908152602088905260408082205487850b850b83529082205491939092849187900b1215614f2457828503614f26565b825b905060008760020b8760020b12614f3f57828603614f41565b825b919095030398975050505050505050565b6001600160a01b03808416600090815260ce602090815260408083209386168352929052908120805490915b818110156150535783838281548110614f9357fe5b9060005260206000200154141561504b57600182038114614fe157826001830381548110614fbd57fe5b9060005260206000200154838281548110614fd457fe5b6000918252602090912001555b82805480614feb57fe5b60008281526020808220830160001990810183905590920190925585825260cf90526040812080546001600160b01b0319168155600181018290556002810182905560038101829055600481018290556005810182905560060155615053565b600101614f7e565b505050505050565b6000600160ff1b821361358b5760405162461bcd60e51b815260040161057290615f60565b600061508b82613291565b60000392915050565b808204910615150190565b600081156151125760006001600160a01b038411156150d5576150d084600160601b876001600160801b03166133d9565b6150ed565b6001600160801b038516606085901b816150eb57fe5b045b905061510a6151056001600160a01b038816836153a3565b6153b3565b9150506107f7565b60006001600160a01b038411156151405761513b84600160601b876001600160801b0316613342565b615157565b615157606085901b6001600160801b038716615094565b905080866001600160a01b03161161516e57600080fd5b6001600160a01b0386160390506107f7565b60008261518e5750836107f7565b600160601b600160e01b03606085901b16821561521c576001600160a01b038616848102908582816151bc57fe5b0414156151ed578181018281106151eb576151e183896001600160a01b031683613342565b93505050506107f7565b505b6152138261520e878a6001600160a01b0316868161520757fe5b04906153a3565b615094565b925050506107f7565b6001600160a01b0386168481029085828161523357fe5b0414801561524057508082115b61524957600080fd5b8082036151e1615105846001600160a01b038b1684613342565b600054610100900460ff168061527c575061527c6139be565b8061528a575060005460ff16155b6152c55760405162461bcd60e51b815260040180806020018281038252602e815260200180616233602e913960400191505060405180910390fd5b600054610100900460ff16158015613a64576000805460ff1961ff0019909116610100171660011790558015613a76576000805461ff001916905550565b6000826001600160a01b0316846001600160a01b03161115615323579192915b6000615346856001600160a01b0316856001600160a01b0316600160601b6133d9565b9050614b0961536184838888036001600160a01b03166133d9565b6153c9565b6000826001600160a01b0316846001600160a01b03161115615386579192915b6107f761536183600160601b8787036001600160a01b03166133d9565b8082018281101561087357600080fd5b806001600160a01b0381168114610c0057600080fd5b806001600160801b0381168114610c0057600080fd5b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060600160405280600060020b815260200160008152602001600081525090565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b60405180610120016040528060006001600160801b03168152602001600060020b8152602001600060020b81526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160006001600160801b03168152602001600080191681525090565b6040518060600160405280600081526020016000815260200160006001600160801b031681525090565b60405180606001604052806000815260200160008152602001600081525090565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b604051806040016040528060008152602001600081525090565b8035610c0081616192565b60008083601f8401126155b3578182fd5b50813567ffffffffffffffff8111156155ca578182fd5b602083019150836020808302850101111561419057600080fd5b8035610c00816161a7565b8051610c00816161a7565b60006040828403121561560b578081fd5b6040516040810181811067ffffffffffffffff8211171561562857fe5b604052823581526020928301359281019290925250919050565b805161ffff81168114610c0057600080fd5b8035610c00816161d9565b805160ff81168114610c0057600080fd5b600060208284031215615681578081fd5b8135610b5c81616192565b60006020828403121561569d578081fd5b8151610b5c81616192565b600080604083850312156156ba578081fd5b82356156c581616192565b915060208301356156d581616192565b809150509250929050565b600080600080606085870312156156f5578182fd5b843561570081616192565b9350602085013561571081616192565b9250604085013567ffffffffffffffff81111561572b578283fd5b615737878288016155a2565b95989497509550505050565b600080600060608486031215615757578081fd5b833561576281616192565b9250602084013561577281616192565b91506040840135615782816161a7565b809150509250925092565b600080600080608085870312156157a2578182fd5b84356157ad81616192565b935060208501356157bd81616192565b925060408501356157cd816161b5565b915060608501356157dd816161b5565b939692955090935050565b6000806000608084860312156157fc578081fd5b833561580781616192565b9250602084013561581781616192565b915061582685604086016155fa565b90509250925092565b600080600060408486031215615843578081fd5b833561584e81616192565b9250602084013567ffffffffffffffff811115615869578182fd5b615875868287016155a2565b9497909650939450505050565b600060208284031215615893578081fd5b5035919050565b6000806000606084860312156158ae578081fd5b505081359360208301359350604090920135919050565b6000602082840312156158d6578081fd5b8135610b5c816161b5565b6000602082840312156158f2578081fd5b8151610b5c816161b5565b6000610100828403121561590f578081fd5b50919050565b600060408284031215615926578081fd5b610b5c83836155fa565b600060808284031215615941578081fd5b6040516080810181811067ffffffffffffffff8211171561595e57fe5b604052825161596c81616192565b8152602083015161597c816161d9565b6020820152604083015161598f816161d9565b604082015260608301516159a2816161d9565b60608201529392505050565b600060a0828403121561590f578081fd5b600061012082840312156159d1578081fd5b604051610100810181811067ffffffffffffffff821117156159ef57fe5b6040526159fb83615597565b8152615a09602084016155e4565b6020820152615a1a604084016155e4565b604082015260608301356060820152615a3560808401615597565b6080820152615a4660a08401615654565b60a0820152615a5760c08401615654565b60c0820152615a698460e085016155fa565b60e08201529392505050565b600060208284031215615a86578081fd5b8135610b5c816161c4565b600060208284031215615aa2578081fd5b8151610b5c816161c4565b600080600080600080600080610100898b031215615ac9578586fd5b8851615ad4816161c4565b80985050602089015180600f0b8114615aeb578687fd5b80975050604089015195506060890151945060808901518060060b8114615b10578485fd5b60a08a0151909450615b2181616192565b60c08a015190935063ffffffff81168114615b3a578283fd5b9150615b4860e08a016155ef565b90509295985092959890939650565b60008060408385031215615b69578182fd5b8251615b74816161c4565b60208401519092506156d5816161c4565b600080600080600080600060e0888a031215615b9f578081fd5b8751615baa81616192565b6020890151909750615bbb816161b5565b9550615bc960408901615642565b9450615bd760608901615642565b9350615be560808901615642565b9250615bf360a0890161565f565b915060c0880151615c03816161a7565b8091505092959891949750929550565b600060208284031215615c24578081fd5b5051919050565b60008060408385031215615c3d578182fd5b505080516020909101519092909150565b60008060008060608587031215615c63578182fd5b8435935060208501359250604085013567ffffffffffffffff80821115615c88578384fd5b818701915087601f830112615c9b578384fd5b813581811115615ca9578485fd5b886020828501011115615cba578485fd5b95989497505060200194505050565b600060208284031215615cda578081fd5b610b5c8261565f565b60020b9052565b6001600160a01b0391909116815260200190565b600060018060a01b038716825260208660020b818401528560020b60408401526001600160801b038516606084015260a0608084015283518060a0850152825b81811015615d5a5785810183015185820160c001528201615d3e565b81811115615d6b578360c083870101525b50601f01601f19169290920160c001979650505050505050565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015615dfa57835183529284019291840191600101615dde565b50909695505050505050565b901515815260200190565b60019190910b815260200190565b60029190910b815260200190565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b90815260200190565b60208082526006908201526513d097d3915360d21b604082015260600190565b6020808252600790820152660869088be9e86960cb1b604082015260600190565b60208082526006908201526555425f5a497360d01b604082015260600190565b60208082526006908201526504f425f4348360d41b604082015260600190565b6020808252600690820152654f425f4e454f60d01b604082015260600190565b60208082526006908201526509e84be9e8ab60d31b604082015260600190565b6020808252600890820152674348445f43484e4360c01b604082015260600190565b6020808252600790820152662aa1a12fa321ab60c91b604082015260600190565b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f7700000000604082015260600190565b6020808252600590820152644f425f494f60d81b604082015260600190565b6020808252600690820152654f425f4f4e4560d01b604082015260600190565b602080825260059082015264155097d69360da1b604082015260600190565b6020808252600890820152675543425f4d524e4360c01b604082015260600190565b600060a0820190508251825260208301516020830152604083015160408301526001600160801b0360608401511660608301526080830151608083015292915050565b6000610120820190506001600160801b038351168252602083015160020b6020830152604083015161608f6040840182615ce3565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525092915050565b81516001600160a01b039081168252602092830151169181019190915260400190565b600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b815160020b8152602080830151908201526040918201519181019190915260600190565b60008582528460208301526060604083015282606083015282846080840137818301608090810191909152601f909201601f191601019392505050565b6001600160a01b0381168114613a7657600080fd5b8015158114613a7657600080fd5b8060020b8114613a7657600080fd5b6001600160801b0381168114613a7657600080fd5b62ffffff81168114613a7657600080fdfe53616665436173743a2076616c756520646f65736e27742066697420696e2031323820626974735369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206469766973696f6e206f766572666c6f775369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a264697066735822122015338643f4f6ac22330b8b98e13457c40ef09024d037112c871a614c85e388ed64736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80638da5cb5b116100f9578063c575ff7911610097578063e8ab2fb311610071578063e8ab2fb314610387578063eaad2354146103a7578063f807cd22146103ba578063ffa61327146103c2576101a9565b8063c575ff7914610364578063c66b8ed21461036c578063d348799714610374576101a9565b8063b0c04174116100d3578063b0c0417414610323578063bc5920ba14610336578063bf0b1abb1461033e578063c4d66de814610351576101a9565b80638da5cb5b146102db578063a3bf0df8146102e3578063acf7182714610303576101a9565b806359bfbc5a116101665780636c8381f8116101405780636c8381f814610298578063715018a6146102ad5780637fc26736146102b5578063865bcccc146102c8576101a9565b806359bfbc5a1461025f5780635b778b9d1461027257806367b1f5df14610285576101a9565b806313af4035146101ae578063398dbcfd146101c3578063436933ea146101ec578063449323d81461020c57806347b52fb71461021f5780634dffaee51461023f575b600080fd5b6101c16101bc366004615670565b6103d5565b005b6101d66101d13660046156e0565b610530565b6040516101e391906160f7565b60405180910390f35b6101ff6101fa3660046156a8565b6107ff565b6040516101e39190615dc2565b6101c161021a366004615670565b610879565b61023261022d3660046157e8565b61094e565b6040516101e39190615e53565b61025261024d36600461582f565b610b63565b6040516101e39190615e06565b61023261026d366004615670565b610be6565b6101d66102803660046159ae565b610c05565b6101c1610293366004615670565b610dd7565b6102a0610ea4565b6040516101e39190615cea565b6101c1610eb3565b6102326102c33660046157e8565b610f66565b6102326102d636600461582f565b6111b4565b6102a0611216565b6102f66102f13660046159bf565b611225565b6040516101e39190616131565b610316610311366004615882565b611827565b6040516101e3919061605a565b6101c161033136600461589a565b6118c2565b6101c1611954565b61023261034c366004615743565b611a52565b6101c161035f366004615670565b611a5f565b6102a0611b13565b6102a0611b22565b6101c1610382366004615c4e565b611b31565b61039a6103953660046158fd565b611cd1565b6040516101e39190616017565b6103166103b536600461578d565b6120d5565b6102a0612188565b6102326103d036600461578d565b612197565b6103dd612245565b6001600160a01b03166103ee611216565b6001600160a01b031614610432576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610476576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156104c2576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b038281169116141561050e576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b6105386153df565b6067546001600160a01b031661054c612245565b6001600160a01b03161461057b5760405162461bcd60e51b815260040161057290615e7c565b60405180910390fd5b609a5460405163bbe4f6db60e01b81526000916001600160a01b03169063bbe4f6db906105ac908890600401615cea565b60206040518083038186803b1580156105c457600080fd5b505afa1580156105d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fc919061568c565b90506106066153df565b60005b848110156107f257600060cf600088888581811061062357fe5b60209081029290920135835250818101929092526040908101600090812082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b968301879052600160981b909104810b810b810b948201859052600183015460608301528201546080820152600382015460a0820152600482015460c0820152600582015460e08201526006909101546101008201529350916106ce918c918c91612249565b9050808888858181106106dd57fe5b90506020020135146107015760405162461bcd60e51b815260040161057290615f97565b60006107746040518060e001604052808d6001600160a01b031681526020018c6001600160a01b03168152602001886001600160a01b03168152602001848152602001856020015160020b8152602001856040015160020b815260200185600001516001600160801b03168152506122aa565b805186519192506107859190612522565b85526020808201519086015161079a91612522565b6020860152604080820151908601516107b291612522565b6040860152606080820151908601516107ca9161257c565b6060860152608080820151908601516107e29161257c565b6080860152505050600101610609565b509150505b949350505050565b6001600160a01b03808316600090815260ce6020908152604080832093851683529281529082902080548351818402810184019094528084526060939283018282801561086b57602002820191906000526020600020905b815481526020019060010190808311610857575b505050505090505b92915050565b610881612245565b6001600160a01b0316610892611216565b6001600160a01b0316146108d6576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6108e8816001600160a01b03166125e1565b6109045760405162461bcd60e51b815260040161057290615f1d565b606780546001600160a01b0319166001600160a01b0383169081179091556040517fd0654f5900f9e7e4e605a19334306e6a2786bbf960ac0484a4c12feb6428fe2f90600090a250565b6001600160a01b03808416600090815260ce60209081526040808320938616835292815282822080548451818402810184019095528085529293849390928301828280156109bb57602002820191906000526020600020905b8154815260200190600101908083116109a7575b5050506001600160a01b03808816600090815260d06020526040808220609a54915163bbe4f6db60e01b815296975095919450909116915063bbe4f6db90610a07908990600401615cea565b60206040518083038186803b158015610a1f57600080fd5b505afa158015610a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a57919061568c565b905060005b8351811015610b5757600060cf6000868481518110610a7757fe5b6020908102919091018101518252818101929092526040908101600090812082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b968301879052600160981b909104810b810b810b948201859052600183015460608301528201546080820152600382015460a0820152600482015460c0820152600582015460e0820152600690910154610100820152935091610b3591610b23876125e7565b8b5160208d01518a9493929190612667565b9050610b4b610b44838361274b565b889061257c565b96505050600101610a5c565b505050505b9392505050565b6000805b82811015610bdb576001600160a01b038516600090815260ce6020526040812081868685818110610b9457fe5b9050602002016020810190610ba99190615670565b6001600160a01b031681526020810191909152604001600020541115610bd3576001915050610b5c565b600101610b67565b506000949350505050565b6001600160a01b038116600090815260d160205260409020545b919050565b610c0d6153df565b6067546001600160a01b0316610c21612245565b6001600160a01b031614610c475760405162461bcd60e51b815260040161057290615e7c565b609a546000906001600160a01b031663bbe4f6db610c6b6040860160208701615670565b6040518263ffffffff1660e01b8152600401610c879190615cea565b60206040518083038186803b158015610c9f57600080fd5b505afa158015610cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd7919061568c565b90506000610d20610ceb6020860186615670565b610cfb6040870160208801615670565b610d0b60608801604089016158c5565b610d1b6080890160608a016158c5565b612249565b6040805160e081019091529091506107f79080610d406020880188615670565b6001600160a01b03168152602001866020016020810190610d619190615670565b6001600160a01b03168152602001846001600160a01b03168152602001838152602001866040016020810190610d9791906158c5565b60020b8152602001610daf60808801606089016158c5565b60020b8152602001610dc760a0880160808901615a75565b6001600160801b031690526122aa565b610ddf612245565b6001600160a01b0316610df0611216565b6001600160a01b031614610e34576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610e5a5760405162461bcd60e51b815260040161057290615ebd565b60cd80546001600160a01b0319166001600160a01b0383169081179091556040517f39870277935708b88965de17b0c29d3c1ad93a200dce569fc56702229432973e90600090a250565b6034546001600160a01b031690565b610ebb612245565b6001600160a01b0316610ecc611216565b6001600160a01b031614610f10576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b6001600160a01b03808416600090815260ce6020908152604080832093861683529281528282208054845181840281018401909552808552929384939092830182828015610fd357602002820191906000526020600020905b815481526020019060010190808311610fbf575b5050506001600160a01b03808816600090815260d06020526040808220609a54915163bbe4f6db60e01b815296975095919450909116915063bbe4f6db9061101f908990600401615cea565b60206040518083038186803b15801561103757600080fd5b505afa15801561104b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106f919061568c565b835190915060005b818110156111a857600060cf600087848151811061109157fe5b6020908102919091018101518252810191909152604001600090812080549092506110e790600160801b8104600290810b91600160981b9004900b6110d5886125e7565b8c5160208e01518b9493929190612667565b604080516101208101825284546001600160801b0381168252600160801b8104600290810b810b810b6020840152600160981b909104810b810b810b9282019290925260018501546060820152908401546080820152600384015460a0820152600484015460c0820152600584015460e0820152600684015461010082015290915061117e90611177908361274b565b899061257c565b81516002840155602082015160038401556040909101516004909201919091559550600101611077565b50505050509392505050565b60008060005b8381101561120d5760008585838181106111d057fe5b90506020020160208101906111e59190615670565b905060006111f588836000612831565b90506112018482612522565b935050506001016111ba565b50949350505050565b6033546001600160a01b031690565b61122d61540e565b60cd546001600160a01b0316611241612245565b6001600160a01b0316146112675760405162461bcd60e51b815260040161057290615efd565b609a54825160405163bbe4f6db60e01b81526000926001600160a01b03169163bbe4f6db916112999190600401615cea565b60206040518083038186803b1580156112b157600080fd5b505afa1580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e9919061568c565b6060840151609a54855160405163033e16f360e21b81529394506000928312936001600160a01b0390921691630cf85bcc9161132791600401615cea565b60806040518083038186803b15801561133f57600080fd5b505afa158015611353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113779190615930565b60600151905060008060006113ba86896060015160d160008c600001516001600160a01b03166001600160a01b0316815260200190815260200160002054612b06565b905087608001516001600160a01b03166000146113db578760800151611405565b87602001516113fe5773fffd8963efd1fc6a506488495d951d5263988d25611405565b6401000276a45b6001600160a01b03166080890152600061141e87612bd8565b90505b60408201511580159061144e575088608001516001600160a01b031682602001516001600160a01b031614155b156117d65761145b615432565b6020808401516001600160a01b031682528351908b015161147f918a918590612c4b565b15156040830152600290810b810b60208301819052620d89e719910b12156114b057620d89e71960208201526114cf565b6020810151620d89e860029190910b13156114cf57620d89e860208201525b6114dc8160200151612d6d565b6001600160a01b03166060820152602080840151908b0151611579919061151f578b608001516001600160a01b031683606001516001600160a01b03161161153d565b8b608001516001600160a01b031683606001516001600160a01b0316105b61154b578260600151611551565b8b608001515b856080015186604001518e6020015161156e578e60a00151611574565b8e60c001515b61309f565b60c085015260a084015260808301526001600160a01b0316602084015286156115d7576115cd6115c26115bd8360c00151846080015161252290919063ffffffff16565b613291565b6040850151906132dd565b60408401526115f8565b6115f26115e78260a00151613291565b60408501519061257c565b60408401525b60808301516001600160801b03161561169a57896020015115611636576116308160a001518b60a0015162ffffff16620f4240613342565b60c08201525b60c0810151948501946000906116559062ffffff8916620f4240613342565b60c08301519581019590915060009061166e908361337c565b905061168c81600160801b87608001516001600160801b03166133d9565b606086018051909101905250505b80606001516001600160a01b031683602001516001600160a01b031614156117985780604001511561176e578960400151156117255789516001600160a01b0316600090815260d0602090815260409182902083820151835160608082018652880151815260e08f01805151828601525190930151938301939093529161172391839190613488565b505b60006117358983602001516134c7565b90508a60200151156117505761174d81600f0b613556565b90505b61175e846080015182613592565b6001600160801b03166080850152505b896020015161178157806020015161178a565b60018160200151035b600290810b900b83526117d0565b80600001516001600160a01b031683602001516001600160a01b0316146117d0576117c68360200151613648565b600290810b900b83525b50611421565b88604001511561180057606082015189516001600160a01b0316600090815260d160205260409020555b5060408051606081018252915160020b825260208201939093529182015295945050505050565b61182f61546e565b50600090815260cf602090815260409182902082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b94830194909452600160981b9004830b830b830b9381019390935260018101546060840152908101546080830152600381015460a0830152600481015460c0830152600581015460e08301526006015461010082015290565b6067546001600160a01b03166118d6612245565b6001600160a01b0316146118fc5760405162461bcd60e51b815260040161057290615e7c565b600083815260cf60205260409020600581015461192d9061192890859061192290613291565b9061257c565b613967565b8160050181905550611949611928836119228460060154613291565b600690910155505050565b6034546001600160a01b0316611999576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b6119a1612245565b6034546001600160a01b039081169116146119ec576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b60006107f7848484612831565b600054610100900460ff1680611a785750611a786139be565b80611a86575060005460ff16155b611ac15760405162461bcd60e51b815260040180806020018281038252602e815260200180616233602e913960400191505060405180910390fd5b600054610100900460ff16158015611aec576000805460ff1961ff0019909116610100171660011790555b611af46139cf565b611afd82613a79565b8015611b0f576000805461ff00191690555b5050565b6067546001600160a01b031690565b609a546001600160a01b031690565b6000611b3b612245565b90506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611b7857600080fd5b505afa158015611b8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb0919061568c565b609a5460405163bbe4f6db60e01b81529192506001600160a01b03169063bbe4f6db90611be1908490600401615cea565b60206040518083038186803b158015611bf957600080fd5b505afa158015611c0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c31919061568c565b6001600160a01b0316826001600160a01b031614611c615760405162461bcd60e51b815260040161057290615f3f565b60675460405163d348799760e01b81526001600160a01b039091169063d348799790611c97908990899089908990600401616155565b600060405180830381600087803b158015611cb157600080fd5b505af1158015611cc5573d6000803e3d6000fd5b50505050505050505050565b611cd96154c9565b6067546001600160a01b0316611ced612245565b6001600160a01b031614611d135760405162461bcd60e51b815260040161057290615e7c565b609a546000906001600160a01b031663bbe4f6db611d376040860160208701615670565b6040518263ffffffff1660e01b8152600401611d539190615cea565b60206040518083038186803b158015611d6b57600080fd5b505afa158015611d7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da3919061568c565b9050600060d181611dba6040870160208801615670565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050600060d06000866020016020810190611df69190615670565b6001600160a01b03166001600160a01b031681526020019081526020016000209050611e20615504565b6000611e3b85611e3660a08a0160808b016158c5565b613b6c565b90506000611e5386611e3660c08b0160a08c016158c5565b9050611f196040518060c00160405280886001600160a01b031681526020018a6080016020810190611e8591906158c5565b60020b8152602001611e9d60c08c0160a08d016158c5565b60020b81526020018a6040013581526020018a60600135815260200160405180604001604052808c6000016020810190611ed79190615670565b6001600160a01b031681526020018a6001600160a01b0316815250604051602001611f0291906160d4565b604051602081830303815290604052815250613bfa565b92506000611f26876125e7565b905082158015611f455750611f4587611e3660a08c0160808d016158c5565b15611f8a57611f8a611f5d60a08b0160808c016158c5565b6040805160608101825289815260c08d0135602082015260e08d0135918101919091528791908490613d64565b81158015611fa75750611fa787611e3660c08c0160a08d016158c5565b15611fbf57611fbf611f5d60c08b0160a08c016158c5565b5050506000806120926040518061014001604052808a6000016020810190611fe79190615670565b6001600160a01b031681526020018a60200160208101906120089190615670565b6001600160a01b0390811682528916602082015260400161202f60a08c0160808d016158c5565b60020b815260200161204760c08c0160a08d016158c5565b60020b815260208082018990526040878101516001600160801b03169083015286516060830152860151608082015260a00161208b368c90038c0160c08d01615915565b9052613da3565b6040805160a08101825286518152602080880151908201528082019290925294909401516001600160801b03166060850152608084015250909695505050505050565b6120dd61546e565b60cf60006120ed87878787612249565b8152602080820192909252604090810160002081516101208101835281546001600160801b0381168252600160801b8104600290810b810b810b95830195909552600160981b9004840b840b840b9281019290925260018101546060830152918201546080820152600382015460a0820152600482015460c0820152600582015460e082015260069091015461010082015295945050505050565b60cd546001600160a01b031690565b6000806107f28560cf60006121ae8a8a8a8a612249565b8152602080820192909252604090810160002081516101208101835281546001600160801b0381168252600160801b8104600290810b810b810b95830195909552600160981b9004840b840b840b9281019290925260018101546060830152918201546080820152600382015460a0820152600482015460c0820152600582015460e082015260069091015461010082015261409b565b3390565b604080516bffffffffffffffffffffffff19606096871b81166020808401919091529590961b9095166034860152600292830b60e890811b60488701529190920b901b604b8401528051602e818503018152604e9093019052815191012090565b6122b26153df565b606080830151600090815260cf602090815260409182902082516101208101845281546001600160801b038116808352600160801b8204600290810b810b810b95840195909552600160981b909104840b840b840b94820194909452600182015494810194909452908101546080840152600381015460a0840152600481015460c0840152600581015460e0840152600601546101008301526123675760405162461bcd60e51b815260040161057290615edd565b80600001516001600160801b03168360c001516001600160801b031611156123a15760405162461bcd60e51b815260040161057290615e5c565b60006124186040518060a0016040528086604001516001600160a01b0316815260200160cd60009054906101000a90046001600160a01b03166001600160a01b03168152602001866080015160020b81526020018660a0015160020b81526020018660c001516001600160801b0316815250614197565b90506000806000612428876142ed565b925092509250600061244d61243c84613291565b865161244790613291565b906132dd565b9050600061246a61245d84613291565b6124478860200151613291565b905061247e89604001518a60800151613b6c565b6124ad5760808901516020808b01516001600160a01b0316600090815260d0909152604090206124ad916144b6565b6124bf89604001518a60a00151613b6c565b6124ee5760a08901516020808b01516001600160a01b0316600090815260d0909152604090206124ee916144b6565b6040805160a08101825287518152602097880151978101979097528601949094526060850152505060808201529392505050565b600082820183811015610b5c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008282018183128015906125915750838112155b806125a657506000831280156125a657508381125b610b5c5760405162461bcd60e51b81526004018080602001828103825260218152602001806162126021913960400191505060405180910390fd5b3b151590565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561262257600080fd5b505afa158015612636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265a9190615b85565b5093979650505050505050565b61266f61552e565b600286810b810b60009081526020899052604080822088840b90930b82529020600180830154908201546126a161552e565b8a60020b8960020b12156126b7578288036126b9565b825b6020820152600060028b810b908b900b126126d6578289036126d8565b825b905060008660020154905060008660020154905060008e60020b8d60020b121561270457828b03612706565b825b905060008e60020b8e60020b1261271f57828c03612721565b825b6020870151909d03949094038552909903999099036040830152509b9a5050505050505050505050565b60008061275b8460400151612d6d565b9050600061277861276f8660200151612d6d565b865184906144da565b905060006127a961279a8760a0015187602001516132dd90919063ffffffff16565b6127a384613291565b90614543565b9050600061280c6127f86127e56127d18a608001518a600001516132dd90919063ffffffff16565b600160601b886001600160a01b03166145ec565b60c08a015160408a0151612447916132dd565b88516127a3906001600160801b0316613291565b9050612826600160601b612820848461257c565b90614690565b979650505050505050565b6001600160a01b03808416600090815260ce602090815260408083209386168352928152828220805484518184028101840190955280855292938493909283018282801561289e57602002820191906000526020600020905b81548152602001906001019080831161288a575b5050609a5460405163bbe4f6db60e01b815294955060009461293294506001600160a01b03909116925063bbe4f6db91506128dd908990600401615cea565b60206040518083038186803b1580156128f557600080fd5b505afa158015612909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292d919061568c565b614748565b8251909150600090815b81811015612af957600060cf600087848151811061295657fe5b6020908102919091018101518252818101929092526040908101600090812082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b968301879052600160981b909104810b810b810b9482019490945260018201546060820152928101546080840152600381015460a0840152600481015460c0840152600581015460e084015260060154610100830152909250908190612a0190612d6d565b90506000612a128460400151612d6d565b90508a8015612a325750806001600160a01b0316886001600160a01b0316105b15612a6b57612a64826001600160a01b0316896001600160a01b031611612a595782612a5b565b885b855183906144da565b9250612abe565b8a158015612a8a5750816001600160a01b0316886001600160a01b0316115b15612abe57612abb82826001600160a01b03168a6001600160a01b031610612ab25782612ab4565b895b86516147c8565b92505b50612acb90508582612522565b945088612aef576000612ade8b8461409b565b509050612aeb8682612522565b9550505b505060010161293c565b5090979650505050505050565b612b0e61554f565b600080856001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015612b4a57600080fd5b505afa158015612b5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b829190615b85565b5050505050915091506040518060a001604052808260020b8152602001836001600160a01b03168152602001868152602001858152602001612bc38861480b565b6001600160801b031690529695505050505050565b6000816001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c1357600080fd5b505afa158015612c27573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087391906158e1565b60008060008460020b8660020b81612c5f57fe5b05905060008660020b128015612c8657508460020b8660020b81612c7f57fe5b0760020b15155b15612c9057600019015b8315612cf957600080612ca28361487e565b9092509050600160ff82161b800160001901600081612cc18c86614890565b168015159650905085612cdb57888360ff16860302612cee565b88612ce58261490f565b840360ff168603025b965050505050612d63565b600080612d088360010161487e565b9092509050600019600160ff83161b0119600081612d268c86614890565b168015159650905085612d4657888360ff0360ff16866001010102612d5c565b8883612d51836149af565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612d84578260020b612d8c565b8260020b6000035b9050620d89e8811115612dca576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612dde57600160801b612df0565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612e24576ffff97272373d413259a46990580e213a0260801c5b6004821615612e43576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612e62576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612e81576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612ea0576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612ebf576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612ede576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612efe576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612f1e576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612f3e576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612f5e576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612f7e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612f9e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612fbe576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612fde576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612fff576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561301f576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561303e576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561305b576b048a170391f7dc42444e8fa20260801c5b60008460020b131561307657806000198161307257fe5b0490505b64010000000081061561308a57600161308d565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a1610158187128015906131245760006130d88989620f42400362ffffff16620f42406133d9565b9050826130f1576130ec8c8c8c6001614a99565b6130fe565b6130fe8b8d8c6001614b12565b955085811061310f578a965061311e565b61311b8c8b8386614bb2565b96505b5061316e565b8161313b576131368b8b8b6000614b12565b613148565b6131488a8c8b6000614a99565b935083886000031061315c5789955061316e565b61316b8b8a8a60000385614bfe565b95505b6001600160a01b038a81169087161482156131d15780801561318d5750815b6131a35761319e878d8c6001614b12565b6131a5565b855b95508080156131b2575081155b6131c8576131c3878d8c6000614a99565b6131ca565b845b945061321b565b8080156131db5750815b6131f1576131ec8c888c6001614a99565b6131f3565b855b9550808015613200575081155b613216576132118c888c6000614b12565b613218565b845b94505b8115801561322b57508860000385115b15613237578860000394505b81801561325657508a6001600160a01b0316876001600160a01b031614155b15613265578589039350613282565b61327f868962ffffff168a620f42400362ffffff16613342565b93505b50505095509550955095915050565b60006001600160ff1b038211156132d95760405162461bcd60e51b81526004018080602001828103825260288152602001806162a96028913960400191505060405180910390fd5b5090565b60008183038183128015906132f25750838113155b80613307575060008312801561330757508381135b610b5c5760405162461bcd60e51b81526004018080602001828103825260248152602001806162d16024913960400191505060405180910390fd5b600061334f8484846133d9565b90506000828061335b57fe5b8486091115610b5c57600019811061337257600080fd5b6001019392505050565b6000828211156133d3576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600080806000198587098686029250828110908390030390508061340f576000841161340457600080fd5b508290049050610b5c565b80841161341b57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600291820b820b600090815260209384526040908190208054835103815560018101805495840151959095039094559290910180549190920151039055565b60405163f30dba9360e01b81526000906001600160a01b0384169063f30dba93906134f6908590600401615e1f565b6101006040518083038186803b15801561350f57600080fd5b505afa158015613523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135479190615aad565b50949998505050505050505050565b60006f7fffffffffffffffffffffffffffffff1982600f0b1361358b5760405162461bcd60e51b815260040161057290615f60565b5060000390565b60008082600f0b12156135f757826001600160801b03168260000384039150816001600160801b0316106135f2576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b610873565b826001600160801b03168284019150816001600160801b03161015610873576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b03831610801590613684575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b6136b9576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061374d57607f810383901c9150613757565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461395857886001600160a01b031661393c82612d6d565b6001600160a01b031611156139515781613953565b805b61395a565b815b9998505050505050505050565b6000808212156132d9576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b60006139c9306125e1565b15905090565b600054610100900460ff16806139e857506139e86139be565b806139f6575060005460ff16155b613a315760405162461bcd60e51b815260040180806020018281038252602e815260200180616233602e913960400191505060405180910390fd5b600054610100900460ff16158015613a5c576000805460ff1961ff0019909116610100171660011790555b613a64614c4a565b8015613a76576000805461ff00191690555b50565b600054610100900460ff1680613a925750613a926139be565b80613aa0575060005460ff16155b613adb5760405162461bcd60e51b815260040180806020018281038252602e815260200180616233602e913960400191505060405180910390fd5b600054610100900460ff16158015613b06576000805460ff1961ff0019909116610100171660011790555b613b0e614d4b565b613b20826001600160a01b03166125e1565b613b3c5760405162461bcd60e51b815260040161057290615ff5565b609a80546001600160a01b0319166001600160a01b0384161790558015611b0f576000805461ff00191690555050565b60405163f30dba9360e01b81526000906001600160a01b0384169063f30dba9390613b9b908590600401615e1f565b6101006040518083038186803b158015613bb457600080fd5b505afa158015613bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bec9190615aad565b9a9950505050505050505050565b613c02615504565b600082606001511180613c19575060008260800151115b613c355760405162461bcd60e51b815260040161057290615e9d565b6000613c70613c478460000151614748565b613c548560200151612d6d565b613c618660400151612d6d565b86606001518760800151614de0565b90506000816001600160801b031611613c9b5760405162461bcd60e51b815260040161057290615fd6565b8251602084015160408086015160a08701519151633c8a7d8d60e01b815260009485946001600160a01b0390911693633c8a7d8d93613ce1933093928a91600401615cfe565b6040805180830381600087803b158015613cfa57600080fd5b505af1158015613d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d329190615c2b565b915091506040518060600160405280838152602001828152602001846001600160801b03168152509350505050919050565b8160020b8360020b13613d9d57600283810b810b6000908152602086815260409182902084518155908401516001820155908301519101555b50505050565b6000806000613dc48460000151856020015186606001518760800151612249565b600081815260cf602052604090208054919250906001600160801b0316613f785784516001600160a01b03908116600090815260ce60209081526040808320828a015185168452825291829020609a548351633b38243160e21b815293519194169263ece090c4926004808301939192829003018186803b158015613e4857600080fd5b505afa158015613e5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e809190615cc9565b60ff16818054905010613ea55760405162461bcd60e51b815260040161057290615fb6565b8054600181018255600082815260208082209092018590556060880151845460808a015162ffffff60801b19909116600160801b600293840b62ffffff90811682029290921762ffffff60981b1916600160981b93850b929092168302919091178088558b8601516001600160a01b0316855260d09095526040808520908c01519095613f5a94928104830b93900490910b90613f41906125e7565b6101208c01518051602090910151879493929190612667565b80516002860155602081015160038601556040015160048501555050505b602080860151604080516101208101825284546001600160801b0381168252600160801b8104600290810b810b810b95830195909552600160981b9004840b840b840b9181019190915260018401546060820152918301546080830152600383015460a0830152600483015460c0830152600583015460e08301526006830154610100830152600091829161400c9161409b565b60c0890151855492945090925061403891614033916001600160801b039182169116612522565b614ea2565b83546001600160801b0319166001600160801b03919091161783556001830181905560e0870151600584015461406d91612522565b6005840155610100870151600684015461408691612522565b60069093019290925591935090915050915091565b6001600160a01b03808316600090815260d0602090815260408083209185015185820151609a54925163bbe4f6db60e01b8152949586956141689461414592169063bbe4f6db906140f0908c90600401615cea565b60206040518083038186803b15801561410857600080fd5b505afa15801561411c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614140919061568c565b6125e7565b6001600160a01b038916600090815260d160205260409020548593929190614eea565b915061418c8460600151830385600001516001600160801b0316600160801b6133d9565b9250505b9250929050565b61419f61557d565b60008083600001516001600160a01b031663a34123a78560400151866060015187608001516040518463ffffffff1660e01b81526004016141e293929190615e2d565b6040805180830381600087803b1580156141fb57600080fd5b505af115801561420f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142339190615c2b565b9150915083600001516001600160a01b0316634f1eb3d88560200151866040015187606001516001600160801b03806040518663ffffffff1660e01b8152600401614282959493929190615d85565b6040805180830381600087803b15801561429b57600080fd5b505af11580156142af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142d39190615b57565b505060408051808201909152918252602082015292915050565b606080820151600090815260cf602090815260408083208286015182516101208101845282546001600160801b0381168252600160801b8104600290810b810b810b96830196909652600160981b9004850b850b850b93810193909352600182015495830195909552918201546080820152600382015460a0820152600482015460c0820152600582015460e0820152600682015461010082015291928392839291839161439b919061409b565b60c088015191965091506001600160801b03161561447a576005820154156143f857600582015460c087015183546143e092916001600160801b0390811691166133d9565b60058301549094506143f2908561337c565b60058301555b60068201541561443d57600682015460c0870151835461442592916001600160801b0390811691166133d9565b6006830154909350614437908461337c565b60068301555b60c0860151825461445e91614033916001600160801b03908116911661337c565b82546001600160801b0319166001600160801b03919091161782555b81546001600160801b03166144a5576144a0866000015187602001518860600151614f52565b6144ad565b600182018190555b50509193909250565b600290810b810b600090815260209290925260408220828155600181018390550155565b6000826001600160a01b0316846001600160a01b031611156144fa579192915b836001600160a01b0316614533606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b03166133d9565b8161453a57fe5b04949350505050565b60008261455257506000610873565b826000191480156145665750600160ff1b82145b156145a25760405162461bcd60e51b81526004018080602001828103825260278152602001806162826027913960400191505060405180910390fd5b828202828482816145af57fe5b0514610b5c5760405162461bcd60e51b81526004018080602001828103825260278152602001806162826027913960400191505060405180910390fd5b600080600085126145fd5784614606565b6146068561505b565b905060008085126146175784614620565b6146208561505b565b9050600080871280156146335750600086135b8061464957506000871380156146495750600086125b614654576000614657565b60015b905060006146668484886133d9565b90508161467b5761467681613291565b614684565b61468481615080565b98975050505050505050565b6000816146e4576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b816000191480156146f85750600160ff1b83145b156147345760405162461bcd60e51b81526004018080602001828103825260218152602001806162616021913960400191505060405180910390fd5b600082848161473f57fe5b05949350505050565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561478357600080fd5b505afa158015614797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147bb9190615b85565b5094979650505050505050565b6000826001600160a01b0316846001600160a01b031611156147e8579192915b6107f7826001600160801b03168585036001600160a01b0316600160601b6133d9565b6000816001600160a01b0316631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b15801561484657600080fd5b505afa15801561485a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108739190615a91565b60020b600881901d9161010090910790565b60405163299ce14b60e11b81526000906001600160a01b03841690635339c296906148bf908590600401615e11565b60206040518083038186803b1580156148d757600080fd5b505afa1580156148eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5c9190615c13565b600080821161491d57600080fd5b600160801b821061493057608091821c91015b68010000000000000000821061494857604091821c91015b640100000000821061495c57602091821c91015b62010000821061496e57601091821c91015b610100821061497f57600891821c91015b6010821061498f57600491821c91015b6004821061499f57600291821c91015b60028210610c0057600101919050565b60008082116149bd57600080fd5b5060ff6001600160801b038216156149d857607f19016149e0565b608082901c91505b67ffffffffffffffff8216156149f957603f1901614a01565b604082901c91505b63ffffffff821615614a1657601f1901614a1e565b602082901c91505b61ffff821615614a3157600f1901614a39565b601082901c91505b60ff821615614a4b5760071901614a53565b600882901c91505b600f821615614a655760031901614a6d565b600482901c91505b6003821615614a7f5760011901614a87565b600282901c91505b6001821615610c005760001901919050565b6000836001600160a01b0316856001600160a01b03161115614ab9579293925b81614ae657614ae1836001600160801b03168686036001600160a01b0316600160601b6133d9565b614b09565b614b09836001600160801b03168686036001600160a01b0316600160601b613342565b95945050505050565b6000836001600160a01b0316856001600160a01b03161115614b32579293925b600160601b600160e01b03606084901b166001600160a01b038686038116908716614b5c57600080fd5b83614b8c57866001600160a01b0316614b7f8383896001600160a01b03166133d9565b81614b8657fe5b04612826565b612826614ba38383896001600160a01b0316613342565b886001600160a01b0316615094565b600080856001600160a01b031611614bc957600080fd5b6000846001600160801b031611614bdf57600080fd5b81614bf157614ae1858585600161509f565b614b098585856001615180565b600080856001600160a01b031611614c1557600080fd5b6000846001600160801b031611614c2b57600080fd5b81614c3d57614ae18585856000615180565b614b09858585600061509f565b600054610100900460ff1680614c635750614c636139be565b80614c71575060005460ff16155b614cac5760405162461bcd60e51b815260040180806020018281038252602e815260200180616233602e913960400191505060405180910390fd5b600054610100900460ff16158015614cd7576000805460ff1961ff0019909116610100171660011790555b614cdf614d4b565b6000614ce9612245565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015613a76576000805461ff001916905550565b600054610100900460ff1680614d645750614d646139be565b80614d72575060005460ff16155b614dad5760405162461bcd60e51b815260040180806020018281038252602e815260200180616233602e913960400191505060405180910390fd5b600054610100900460ff16158015614dd8576000805460ff1961ff0019909116610100171660011790555b613a64615263565b6000836001600160a01b0316856001600160a01b03161115614e00579293925b846001600160a01b0316866001600160a01b031611614e2b57614e24858585615303565b9050614b09565b836001600160a01b0316866001600160a01b03161015614e8d576000614e52878686615303565b90506000614e61878986615366565b9050806001600160801b0316826001600160801b031610614e825780614e84565b815b92505050614b09565b614e98858584615366565b9695505050505050565b806001600160801b0381168114610c005760405162461bcd60e51b81526004018080602001828103825260278152602001806161eb6027913960400191505060405180910390fd5b600284810b80820b6000908152602088905260408082205487850b850b83529082205491939092849187900b1215614f2457828503614f26565b825b905060008760020b8760020b12614f3f57828603614f41565b825b919095030398975050505050505050565b6001600160a01b03808416600090815260ce602090815260408083209386168352929052908120805490915b818110156150535783838281548110614f9357fe5b9060005260206000200154141561504b57600182038114614fe157826001830381548110614fbd57fe5b9060005260206000200154838281548110614fd457fe5b6000918252602090912001555b82805480614feb57fe5b60008281526020808220830160001990810183905590920190925585825260cf90526040812080546001600160b01b0319168155600181018290556002810182905560038101829055600481018290556005810182905560060155615053565b600101614f7e565b505050505050565b6000600160ff1b821361358b5760405162461bcd60e51b815260040161057290615f60565b600061508b82613291565b60000392915050565b808204910615150190565b600081156151125760006001600160a01b038411156150d5576150d084600160601b876001600160801b03166133d9565b6150ed565b6001600160801b038516606085901b816150eb57fe5b045b905061510a6151056001600160a01b038816836153a3565b6153b3565b9150506107f7565b60006001600160a01b038411156151405761513b84600160601b876001600160801b0316613342565b615157565b615157606085901b6001600160801b038716615094565b905080866001600160a01b03161161516e57600080fd5b6001600160a01b0386160390506107f7565b60008261518e5750836107f7565b600160601b600160e01b03606085901b16821561521c576001600160a01b038616848102908582816151bc57fe5b0414156151ed578181018281106151eb576151e183896001600160a01b031683613342565b93505050506107f7565b505b6152138261520e878a6001600160a01b0316868161520757fe5b04906153a3565b615094565b925050506107f7565b6001600160a01b0386168481029085828161523357fe5b0414801561524057508082115b61524957600080fd5b8082036151e1615105846001600160a01b038b1684613342565b600054610100900460ff168061527c575061527c6139be565b8061528a575060005460ff16155b6152c55760405162461bcd60e51b815260040180806020018281038252602e815260200180616233602e913960400191505060405180910390fd5b600054610100900460ff16158015613a64576000805460ff1961ff0019909116610100171660011790558015613a76576000805461ff001916905550565b6000826001600160a01b0316846001600160a01b03161115615323579192915b6000615346856001600160a01b0316856001600160a01b0316600160601b6133d9565b9050614b0961536184838888036001600160a01b03166133d9565b6153c9565b6000826001600160a01b0316846001600160a01b03161115615386579192915b6107f761536183600160601b8787036001600160a01b03166133d9565b8082018281101561087357600080fd5b806001600160a01b0381168114610c0057600080fd5b806001600160801b0381168114610c0057600080fd5b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060600160405280600060020b815260200160008152602001600081525090565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b60405180610120016040528060006001600160801b03168152602001600060020b8152602001600060020b81526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160006001600160801b03168152602001600080191681525090565b6040518060600160405280600081526020016000815260200160006001600160801b031681525090565b60405180606001604052806000815260200160008152602001600081525090565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b604051806040016040528060008152602001600081525090565b8035610c0081616192565b60008083601f8401126155b3578182fd5b50813567ffffffffffffffff8111156155ca578182fd5b602083019150836020808302850101111561419057600080fd5b8035610c00816161a7565b8051610c00816161a7565b60006040828403121561560b578081fd5b6040516040810181811067ffffffffffffffff8211171561562857fe5b604052823581526020928301359281019290925250919050565b805161ffff81168114610c0057600080fd5b8035610c00816161d9565b805160ff81168114610c0057600080fd5b600060208284031215615681578081fd5b8135610b5c81616192565b60006020828403121561569d578081fd5b8151610b5c81616192565b600080604083850312156156ba578081fd5b82356156c581616192565b915060208301356156d581616192565b809150509250929050565b600080600080606085870312156156f5578182fd5b843561570081616192565b9350602085013561571081616192565b9250604085013567ffffffffffffffff81111561572b578283fd5b615737878288016155a2565b95989497509550505050565b600080600060608486031215615757578081fd5b833561576281616192565b9250602084013561577281616192565b91506040840135615782816161a7565b809150509250925092565b600080600080608085870312156157a2578182fd5b84356157ad81616192565b935060208501356157bd81616192565b925060408501356157cd816161b5565b915060608501356157dd816161b5565b939692955090935050565b6000806000608084860312156157fc578081fd5b833561580781616192565b9250602084013561581781616192565b915061582685604086016155fa565b90509250925092565b600080600060408486031215615843578081fd5b833561584e81616192565b9250602084013567ffffffffffffffff811115615869578182fd5b615875868287016155a2565b9497909650939450505050565b600060208284031215615893578081fd5b5035919050565b6000806000606084860312156158ae578081fd5b505081359360208301359350604090920135919050565b6000602082840312156158d6578081fd5b8135610b5c816161b5565b6000602082840312156158f2578081fd5b8151610b5c816161b5565b6000610100828403121561590f578081fd5b50919050565b600060408284031215615926578081fd5b610b5c83836155fa565b600060808284031215615941578081fd5b6040516080810181811067ffffffffffffffff8211171561595e57fe5b604052825161596c81616192565b8152602083015161597c816161d9565b6020820152604083015161598f816161d9565b604082015260608301516159a2816161d9565b60608201529392505050565b600060a0828403121561590f578081fd5b600061012082840312156159d1578081fd5b604051610100810181811067ffffffffffffffff821117156159ef57fe5b6040526159fb83615597565b8152615a09602084016155e4565b6020820152615a1a604084016155e4565b604082015260608301356060820152615a3560808401615597565b6080820152615a4660a08401615654565b60a0820152615a5760c08401615654565b60c0820152615a698460e085016155fa565b60e08201529392505050565b600060208284031215615a86578081fd5b8135610b5c816161c4565b600060208284031215615aa2578081fd5b8151610b5c816161c4565b600080600080600080600080610100898b031215615ac9578586fd5b8851615ad4816161c4565b80985050602089015180600f0b8114615aeb578687fd5b80975050604089015195506060890151945060808901518060060b8114615b10578485fd5b60a08a0151909450615b2181616192565b60c08a015190935063ffffffff81168114615b3a578283fd5b9150615b4860e08a016155ef565b90509295985092959890939650565b60008060408385031215615b69578182fd5b8251615b74816161c4565b60208401519092506156d5816161c4565b600080600080600080600060e0888a031215615b9f578081fd5b8751615baa81616192565b6020890151909750615bbb816161b5565b9550615bc960408901615642565b9450615bd760608901615642565b9350615be560808901615642565b9250615bf360a0890161565f565b915060c0880151615c03816161a7565b8091505092959891949750929550565b600060208284031215615c24578081fd5b5051919050565b60008060408385031215615c3d578182fd5b505080516020909101519092909150565b60008060008060608587031215615c63578182fd5b8435935060208501359250604085013567ffffffffffffffff80821115615c88578384fd5b818701915087601f830112615c9b578384fd5b813581811115615ca9578485fd5b886020828501011115615cba578485fd5b95989497505060200194505050565b600060208284031215615cda578081fd5b610b5c8261565f565b60020b9052565b6001600160a01b0391909116815260200190565b600060018060a01b038716825260208660020b818401528560020b60408401526001600160801b038516606084015260a0608084015283518060a0850152825b81811015615d5a5785810183015185820160c001528201615d3e565b81811115615d6b578360c083870101525b50601f01601f19169290920160c001979650505050505050565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015615dfa57835183529284019291840191600101615dde565b50909695505050505050565b901515815260200190565b60019190910b815260200190565b60029190910b815260200190565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b90815260200190565b60208082526006908201526513d097d3915360d21b604082015260600190565b6020808252600790820152660869088be9e86960cb1b604082015260600190565b60208082526006908201526555425f5a497360d01b604082015260600190565b60208082526006908201526504f425f4348360d41b604082015260600190565b6020808252600690820152654f425f4e454f60d01b604082015260600190565b60208082526006908201526509e84be9e8ab60d31b604082015260600190565b6020808252600890820152674348445f43484e4360c01b604082015260600190565b6020808252600790820152662aa1a12fa321ab60c91b604082015260600190565b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f7700000000604082015260600190565b6020808252600590820152644f425f494f60d81b604082015260600190565b6020808252600690820152654f425f4f4e4560d01b604082015260600190565b602080825260059082015264155097d69360da1b604082015260600190565b6020808252600890820152675543425f4d524e4360c01b604082015260600190565b600060a0820190508251825260208301516020830152604083015160408301526001600160801b0360608401511660608301526080830151608083015292915050565b6000610120820190506001600160801b038351168252602083015160020b6020830152604083015161608f6040840182615ce3565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525092915050565b81516001600160a01b039081168252602092830151169181019190915260400190565b600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b815160020b8152602080830151908201526040918201519181019190915260600190565b60008582528460208301526060604083015282606083015282846080840137818301608090810191909152601f909201601f191601019392505050565b6001600160a01b0381168114613a7657600080fd5b8015158114613a7657600080fd5b8060020b8114613a7657600080fd5b6001600160801b0381168114613a7657600080fd5b62ffffff81168114613a7657600080fdfe53616665436173743a2076616c756520646f65736e27742066697420696e2031323820626974735369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206469766973696f6e206f766572666c6f775369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a264697066735822122015338643f4f6ac22330b8b98e13457c40ef09024d037112c871a614c85e388ed64736f6c63430007060033", + "bytecode": "0x608060405234801561001057600080fd5b50615fce80620000216000396000f3fe608060405234801561001057600080fd5b50600436106101545760003560e01c806313af403514610159578063398dbcfd1461016e578063436933ea14610197578063449323d8146101b757806347b52fb7146101ca5780634dffaee5146101ea57806359bfbc5a1461020a5780635b778b9d1461021d5780635d8a541d1461023057806367b1f5df146102515780636c8381f814610264578063715018a6146102795780637c2b7c53146102815780637fc26736146102945780638da5cb5b146102a7578063a3bf0df8146102af578063acf71827146102cf578063b0c04174146102ef578063bc5920ba14610302578063c4d66de81461030a578063c575ff791461031d578063c66b8ed214610325578063d0581a931461032d578063d348799714610340578063e8ab2fb314610353578063eaad235414610373578063f807cd2214610386578063ffa613271461038e575b600080fd5b61016c610167366004615401565b6103a1565b005b61018161017c366004615471565b6104fc565b60405161018e9190615d7b565b60405180910390f35b6101aa6101a5366004615439565b61075f565b60405161018e9190615b4d565b61016c6101c5366004615401565b6107d9565b6101dd6101d8366004615578565b610880565b60405161018e9190615bde565b6101fd6101f83660046155bf565b610aa1565b60405161018e9190615b91565b6101dd610218366004615401565b610b24565b61018161022b36600461573c565b610b43565b61024361023e3660046154d3565b610ce3565b60405161018e929190615be7565b61016c61025f366004615401565b610cfd565b61026c610da4565b60405161018e9190615a76565b61016c610db3565b6101dd61028f3660046154d3565b610e54565b6101dd6102a2366004615578565b610fc6565b61026c611221565b6102c26102bd36600461574d565b611230565b60405161018e9190615db5565b6102e26102dd366004615611565b61183b565b60405161018e9190615ce1565b61016c6102fd366004615629565b6118d6565b61016c611936565b61016c610318366004615401565b611a22565b61026c611ad6565b61026c611ae5565b61024361033b3660046155bf565b611af4565b61016c61034e3660046159db565b611b6b565b61036661036136600461568c565b611d0b565b60405161018e9190615cad565b6102e261038136600461551d565b6120d8565b61026c61218b565b6101dd61039c36600461551d565b61219a565b6103a9612248565b6001600160a01b03166103ba611221565b6001600160a01b0316146103fe576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610442576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b038281169116141561048e576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b03828116911614156104da576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b61050461517c565b61050c61224c565b609a5460405163bbe4f6db60e01b81526000916001600160a01b03169063bbe4f6db9061053d908890600401615a76565b60206040518083038186803b15801561055557600080fd5b505afa158015610569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058d919061541d565b905061059761517c565b60005b8481101561075257600060cf60008888858181106105b457fe5b60209081029290920135835250818101929092526040908101600090812082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b968301879052600160981b909104810b810b810b948201859052600183015460608301528201546080820152600382015460a0820152600482015460c0820152600582015460e082015260069091015461010082015293509161065f918c918c91612288565b905060006106d46040518060e001604052808d6001600160a01b031681526020018c6001600160a01b03168152602001886001600160a01b03168152602001848152602001856020015160020b8152602001856040015160020b815260200185600001516001600160801b03168152506122e4565b805186519192506106e5919061246c565b8552602080820151908601516106fa9161246c565b6020860152604080820151908601516107129161246c565b60408601526060808201519086015161072a916124c4565b606086015260808082015190860151610742916124c4565b608086015250505060010161059a565b509150505b949350505050565b6001600160a01b03808316600090815260ce602090815260408083209385168352928152908290208054835181840281018401909452808452606093928301828280156107cb57602002820191906000526020600020905b8154815260200190600101908083116107b7575b505050505090505b92915050565b6107e1612248565b6001600160a01b03166107f2611221565b6001600160a01b031614610836576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b606780546001600160a01b0319166001600160a01b0383169081179091556040517fd0654f5900f9e7e4e605a19334306e6a2786bbf960ac0484a4c12feb6428fe2f90600090a250565b6001600160a01b03808416600090815260ce60209081526040808320938616835292815282822080548451818402810184019095528085529293849390928301828280156108ed57602002820191906000526020600020905b8154815260200190600101908083116108d9575b5050506001600160a01b03808816600090815260d06020526040808220609a54915163bbe4f6db60e01b815296975095919450909116915063bbe4f6db90610939908990600401615a76565b60206040518083038186803b15801561095157600080fd5b505afa158015610965573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610989919061541d565b9050600061099682612529565b505050505091505060005b8451811015610a9457600060cf60008784815181106109bc57fe5b6020908102919091018101518252818101929092526040908101600090812082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b838801819052600160981b909204810b810b810b958301869052600184015460608401528301546080830152600383015460a0830152600483015460c0830152600583015460e08301526006909201546101008201528c51948d01519095509193610a72938a93909189916125bc565b9050610a88610a8183836126a0565b89906124c4565b975050506001016109a1565b50505050505b9392505050565b6000805b82811015610b19576001600160a01b038516600090815260ce6020526040812081868685818110610ad257fe5b9050602002016020810190610ae79190615401565b6001600160a01b031681526020810191909152604001600020541115610b11576001915050610a9a565b600101610aa5565b506000949350505050565b6001600160a01b038116600090815260d160205260409020545b919050565b610b4b61517c565b610b5361224c565b609a546000906001600160a01b031663bbe4f6db610b776040860160208701615401565b6040518263ffffffff1660e01b8152600401610b939190615a76565b60206040518083038186803b158015610bab57600080fd5b505afa158015610bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be3919061541d565b90506000610c2c610bf76020860186615401565b610c076040870160208801615401565b610c176060880160408901615654565b610c276080890160608a01615654565b612288565b6040805160e081019091529091506107579080610c4c6020880188615401565b6001600160a01b03168152602001866020016020810190610c6d9190615401565b6001600160a01b03168152602001846001600160a01b03168152602001838152602001866040016020810190610ca39190615654565b60020b8152602001610cbb6080880160608901615654565b60020b8152602001610cd360a0880160808901615802565b6001600160801b031690526122e4565b600080610cf1858585612786565b90969095509350505050565b610d05612248565b6001600160a01b0316610d16611221565b6001600160a01b031614610d5a576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b60cd80546001600160a01b0319166001600160a01b0383169081179091556040517f39870277935708b88965de17b0c29d3c1ad93a200dce569fc56702229432973e90600090a250565b6034546001600160a01b031690565b610dbb612248565b6001600160a01b0316610dcc611221565b6001600160a01b031614610e10576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b031690600080516020615f06833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b6001600160a01b03808416600090815260ce6020908152604080832093861683529281528282208054845181840281018401909552808552929384938493919291830182828015610ec457602002820191906000526020600020905b815481526020019060010190808311610eb0575b505083519394506000925050505b81811015610fba57600060cf6000858481518110610eec57fe5b6020908102919091018101518252818101929092526040908101600090812082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b96830196909652600160981b9004850b850b850b9381019390935260018101546060840152928301546080830152600383015460a0830152600483015460c0830152600583015460e0830152600690920154610100820152915087610f9c57816101000151610fa2565b8160e001515b9050610fae868261246c565b95505050600101610ed2565b50919695505050505050565b6001600160a01b03808416600090815260ce602090815260408083209386168352928152828220805484518184028101840190955280855292938493909283018282801561103357602002820191906000526020600020905b81548152602001906001019080831161101f575b5050506001600160a01b03808816600090815260d06020526040808220609a54915163bbe4f6db60e01b815296975095919450909116915063bbe4f6db9061107f908990600401615a76565b60206040518083038186803b15801561109757600080fd5b505afa1580156110ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cf919061541d565b835190915060006110df83612529565b505050505091505060005b8281101561121457600060cf600088848151811061110457fe5b602090810291909101810151825281810192909252604001600090812080548c51938d01519194509192611153928a92600160801b8204600290810b93600160981b909304900b9189916125bc565b604080516101208101825284546001600160801b0381168252600160801b8104600290810b810b810b6020840152600160981b909104810b810b810b9282019290925260018501546060820152908401546080820152600384015460a0820152600484015460c0820152600584015460e082015260068401546101008201529091506111ea906111e390836126a0565b8a906124c4565b815160028401556020820151600384015560409091015160049092019190915596506001016110ea565b5050505050509392505050565b6033546001600160a01b031690565b6112386151ab565b60cd546001600160a01b031661124c612248565b6001600160a01b03161461127b5760405162461bcd60e51b815260040161127290615c16565b60405180910390fd5b609a54825160405163bbe4f6db60e01b81526000926001600160a01b03169163bbe4f6db916112ad9190600401615a76565b60206040518083038186803b1580156112c557600080fd5b505afa1580156112d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fd919061541d565b6060840151609a54855160405163033e16f360e21b81529394506000928312936001600160a01b0390921691630cf85bcc9161133b91600401615a76565b60806040518083038186803b15801561135357600080fd5b505afa158015611367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138b91906156bf565b60600151905060008060006113ce86896060015160d160008c600001516001600160a01b03166001600160a01b0316815260200190815260200160002054612a62565b905087608001516001600160a01b03166000146113ef578760800151611419565b87602001516114125773fffd8963efd1fc6a506488495d951d5263988d25611419565b6401000276a45b6001600160a01b03166080890152600061143287612b38565b90505b604082015115801590611462575088608001516001600160a01b031682602001516001600160a01b031614155b156117ea5761146f6151cf565b6020808401516001600160a01b031682528351908b0151611493918a918590612bab565b15156040830152600290810b810b60208301819052620d89e719910b12156114c457620d89e71960208201526114e3565b6020810151620d89e860029190910b13156114e357620d89e860208201525b6114f08160200151612ccd565b6001600160a01b03166060820152602080840151908b015161158d9190611533578b608001516001600160a01b031683606001516001600160a01b031611611551565b8b608001516001600160a01b031683606001516001600160a01b0316105b61155f578260600151611565565b8b608001515b856080015186604001518e60200151611582578e60a00151611588565b8e60c001515b612ff4565b60c085015260a084015260808301526001600160a01b0316602084015286156115eb576115e16115d66115d18360c00151846080015161246c90919063ffffffff16565b6131e6565b604085015190613232565b604084015261160c565b6116066115fb8260a001516131e6565b6040850151906124c4565b60408401525b60808301516001600160801b0316156116ae5789602001511561164a576116448160a001518b60a0015162ffffff16620f4240613297565b60c08201525b60c0810151948501946000906116699062ffffff8916620f4240613297565b60c08301519581019590915060009061168290836132d1565b90506116a081600160801b87608001516001600160801b031661332e565b606086018051909101905250505b80606001516001600160a01b031683602001516001600160a01b031614156117ac57806040015115611782578960400151156117395789516001600160a01b0316600090815260d0602090815260409182902083820151835160608082018652880151815260e08f018051518286015251909301519383019390935291611737918391906133dd565b505b600061174989836020015161341c565b90508a60200151156117645761176181600f0b6134ab565b90505b6117728460800151826134de565b6001600160801b03166080850152505b896020015161179557806020015161179e565b60018160200151035b600290810b900b83526117e4565b80600001516001600160a01b031683602001516001600160a01b0316146117e4576117da8360200151613594565b600290810b900b83525b50611435565b88604001511561181457606082015189516001600160a01b0316600090815260d160205260409020555b5060408051606081018252915160020b825260208201939093529182015295945050505050565b61184361520b565b50600090815260cf602090815260409182902082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b94830194909452600160981b9004830b830b830b9381019390935260018101546060840152908101546080830152600381015460a0830152600481015460c0830152600581015460e08301526006015461010082015290565b6118de61224c565b600083815260cf60205260409020600581015461190f9061190a908590611904906131e6565b906124c4565b61387f565b816005018190555061192b61190a8361190484600601546131e6565b600690910155505050565b6034546001600160a01b031661197b576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b611983612248565b6034546001600160a01b039081169116146119ce576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b039283169290911690600080516020615f0683398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b600054610100900460ff1680611a3b5750611a3b6138d6565b80611a49575060005460ff16155b611a845760405162461bcd60e51b815260040180806020018281038252602e815260200180615eb7602e913960400191505060405180910390fd5b600054610100900460ff16158015611aaf576000805460ff1961ff0019909116610100171660011790555b611ab76138e7565b611ac082613991565b8015611ad2576000805461ff00191690555b5050565b6067546001600160a01b031690565b609a546001600160a01b031690565b60008060005b83811015611b62576000858583818110611b1057fe5b9050602002016020810190611b259190615401565b9050600080611b3689846000613a56565b9092509050611b4586836124c4565b9550611b51858261246c565b94505060019092019150611afa9050565b50935093915050565b6000611b75612248565b90506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611bb257600080fd5b505afa158015611bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bea919061541d565b609a5460405163bbe4f6db60e01b81529192506001600160a01b03169063bbe4f6db90611c1b908490600401615a76565b60206040518083038186803b158015611c3357600080fd5b505afa158015611c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6b919061541d565b6001600160a01b0316826001600160a01b031614611c9b5760405162461bcd60e51b815260040161127290615c36565b60675460405163d348799760e01b81526001600160a01b039091169063d348799790611cd1908990899089908990600401615dd9565b600060405180830381600087803b158015611ceb57600080fd5b505af1158015611cff573d6000803e3d6000fd5b50505050505050505050565b611d13615266565b611d1b61224c565b609a546000906001600160a01b031663bbe4f6db611d3f6040860160208701615401565b6040518263ffffffff1660e01b8152600401611d5b9190615a76565b60206040518083038186803b158015611d7357600080fd5b505afa158015611d87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dab919061541d565b9050600060d181611dc26040870160208801615401565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050600060d06000866020016020810190611dfe9190615401565b6001600160a01b03166001600160a01b031681526020019081526020016000209050611e28615297565b6000611e4385611e3e60a08a0160808b01615654565b613a9d565b90506000611e5b86611e3e60c08b0160a08c01615654565b9050611f216040518060c00160405280886001600160a01b031681526020018a6080016020810190611e8d9190615654565b60020b8152602001611ea560c08c0160a08d01615654565b60020b81526020018a6040013581526020018a60600135815260200160405180604001604052808c6000016020810190611edf9190615401565b6001600160a01b031681526020018a6001600160a01b0316815250604051602001611f0a9190615d58565b604051602081830303815290604052815250613b2b565b92506000611f2e87612529565b505050505091505082158015611f535750611f5387611e3e60a08c0160808d01615654565b15611f9857611f98611f6b60a08b0160808c01615654565b6040805160608101825289815260c08d0135602082015260e08d0135918101919091528791908490613c45565b81158015611fb55750611fb587611e3e60c08c0160a08d01615654565b15611fcd57611fcd611f6b60c08b0160a08c01615654565b50506040805161014081019091526000915061209c9080611ff160208b018b615401565b6001600160a01b031681526020018960200160208101906120129190615401565b6001600160a01b0390811682528816602082015260400161203960a08b0160808c01615654565b60020b815260200161205160c08b0160a08c01615654565b60020b815260208082018890526040868101516001600160801b03169083015285516060830152850151608082015260a001612095368b90038b0160c08c016156a4565b9052613c84565b6040805160808101825284518152602080860151908201528082019290925292909201516001600160801b031660608301525095945050505050565b6120e061520b565b60cf60006120f087878787612288565b8152602080820192909252604090810160002081516101208101835281546001600160801b0381168252600160801b8104600290810b810b810b95830195909552600160981b9004840b840b840b9281019290925260018101546060830152918201546080820152600382015460a0820152600482015460c0820152600582015460e082015260069091015461010082015295945050505050565b60cd546001600160a01b031690565b6000806107528560cf60006121b18a8a8a8a612288565b8152602080820192909252604090810160002081516101208101835281546001600160801b0381168252600160801b8104600290810b810b810b95830195909552600160981b9004840b840b840b9281019290925260018101546060830152918201546080820152600382015460a0820152600482015460c0820152600582015460e0820152600690910154610100820152613f8a565b3390565b6067546001600160a01b0316612260612248565b6001600160a01b0316146122865760405162461bcd60e51b815260040161127290615bf5565b565b604080516001600160601b0319606096871b81166020808401919091529590961b9095166034860152600292830b60e890811b60488701529190920b901b604b8401528051602e818503018152604e9093019052815191012090565b6122ec61517c565b60006123636040518060a0016040528085604001516001600160a01b0316815260200160cd60009054906101000a90046001600160a01b03166001600160a01b03168152602001856080015160020b81526020018560a0015160020b81526020018560c001516001600160801b031681525061403a565b9050600080600061237386614190565b9250925092506000612398612387846131e6565b8651612392906131e6565b90613232565b905060006123b56123a8846131e6565b61239288602001516131e6565b90506123c988604001518960800151613a9d565b6123f85760808801516020808a01516001600160a01b0316600090815260d0909152604090206123f891614359565b61240a88604001518960a00151613a9d565b6124395760a08801516020808a01516001600160a01b0316600090815260d09091526040902061243991614359565b6040805160a081018252875181526020978801519781019790975286019490945260608501525050608082015292915050565b600082820183811015610a9a576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b60008282018183128015906124d95750838112155b806124ee57506000831280156124ee57508381125b610a9a5760405162461bcd60e51b8152600401808060200182810382526021815260200180615e966021913960400191505060405180910390fd5b6000806000806000806000876001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561256d57600080fd5b505afa158015612581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a59190615912565b959e949d50929b5090995097509550909350915050565b6125c46152c1565b600286810b810b60009081526020899052604080822088840b90930b82529020600180830154908201546125f66152c1565b8a60020b8960020b121561260c5782880361260e565b825b6020820152600060028b810b908b900b1261262b5782890361262d565b825b905060008660020154905060008660020154905060008e60020b8d60020b121561265957828b0361265b565b825b905060008e60020b8e60020b1261267457828c03612676565b825b6020870151909d03949094038552909903999099036040830152509b9a5050505050505050505050565b6000806126b08460400151612ccd565b905060006126cd6126c48660200151612ccd565b8651849061437d565b905060006126fe6126ef8760a00151876020015161323290919063ffffffff16565b6126f8846131e6565b906143e6565b9050600061276161274d61273a6127268a608001518a6000015161323290919063ffffffff16565b600160601b886001600160a01b031661448f565b60c08a015160408a015161239291613232565b88516126f8906001600160801b03166131e6565b905061277b600160601b61277584846124c4565b90614533565b979650505050505050565b6001600160a01b03808416600090815260ce60209081526040808320938616835292815282822080548451818402810184019095528085529293849384939192918301828280156127f657602002820191906000526020600020905b8154815260200190600101908083116127e2575b5050609a5460405163bbe4f6db60e01b815294955060009461288a94506001600160a01b03909116925063bbe4f6db9150612835908a90600401615a76565b60206040518083038186803b15801561284d57600080fd5b505afa158015612861573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612885919061541d565b612529565b50508651949550600093505050505b81811015612a5657600060cf60008684815181106128b357fe5b6020908102919091018101518252818101929092526040908101600090812082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b968301879052600160981b909104810b810b810b9482019490945260018201546060820152928101546080840152600381015460a0840152600481015460c0840152600581015460e08401526006015461010083015290925090819061295e90612ccd565b9050600061296f8460400151612ccd565b90508a801561298f5750806001600160a01b0316876001600160a01b0316105b156129c8576129c1826001600160a01b0316886001600160a01b0316116129b657826129b8565b875b8551839061437d565b9250612a1b565b8a1580156129e75750816001600160a01b0316876001600160a01b0316115b15612a1b57612a1882826001600160a01b0316896001600160a01b031610612a0f5782612a11565b885b86516145eb565b92505b50612a289050888261246c565b975088612a4c576000612a3b8b84613f8a565b509050612a48888261246c565b9750505b5050600101612899565b50505050935093915050565b612a6a6152e2565b600080612a7686612529565b5050505050915091506000866001600160a01b0316631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b158015612aba57600080fd5b505afa158015612ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af2919061581e565b6040805160a08101825260029490940b84526001600160a01b0390941660208401529282019590955260608101939093526001600160801b031660808301525092915050565b6000816001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b7357600080fd5b505afa158015612b87573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d39190615670565b60008060008460020b8660020b81612bbf57fe5b05905060008660020b128015612be657508460020b8660020b81612bdf57fe5b0760020b15155b15612bf057600019015b8315612c5957600080612c028361462e565b9092509050600160ff82161b800160001901600081612c218c86614640565b168015159650905085612c3b57888360ff16860302612c4e565b88612c45826146bf565b840360ff168603025b965050505050612cc3565b600080612c688360010161462e565b9092509050600019600160ff83161b0119600081612c868c86614640565b168015159650905085612ca657888360ff0360ff16866001010102612cbc565b8883612cb183614759565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612ce4578260020b612cec565b8260020b6000035b9050620d89e8811115612d2a576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612d3e57600160801b612d50565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b031690506002821615612d7a576ffff97272373d413259a46990580e213a0260801c5b6004821615612d99576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612db8576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612dd7576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612df6576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612e15576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612e34576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612e54576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612e74576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612e94576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612eb4576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612ed4576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612ef4576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612f14576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612f34576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612f55576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612f75576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612f94576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612fb1576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612fcc578060001981612fc857fe5b0490505b600160201b810615612fdf576001612fe2565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a16101581871280159061307957600061302d8989620f42400362ffffff16620f424061332e565b905082613046576130418c8c8c6001614842565b613053565b6130538b8d8c60016148bb565b9550858110613064578a9650613073565b6130708c8b838661495b565b96505b506130c3565b816130905761308b8b8b8b60006148bb565b61309d565b61309d8a8c8b6000614842565b93508388600003106130b1578995506130c3565b6130c08b8a8a600003856149a7565b95505b6001600160a01b038a8116908716148215613126578080156130e25750815b6130f8576130f3878d8c60016148bb565b6130fa565b855b9550808015613107575081155b61311d57613118878d8c6000614842565b61311f565b845b9450613170565b8080156131305750815b613146576131418c888c6001614842565b613148565b855b9550808015613155575081155b61316b576131668c888c60006148bb565b61316d565b845b94505b8115801561318057508860000385115b1561318c578860000394505b8180156131ab57508a6001600160a01b0316876001600160a01b031614155b156131ba5785890393506131d7565b6131d4868962ffffff168a620f42400362ffffff16613297565b93505b50505095509550955095915050565b60006001600160ff1b0382111561322e5760405162461bcd60e51b8152600401808060200182810382526028815260200180615f4d6028913960400191505060405180910390fd5b5090565b60008183038183128015906132475750838113155b8061325c575060008312801561325c57508381135b610a9a5760405162461bcd60e51b8152600401808060200182810382526024815260200180615f756024913960400191505060405180910390fd5b60006132a484848461332e565b9050600082806132b057fe5b8486091115610a9a5760001981106132c757600080fd5b6001019392505050565b600082821115613328576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000808060001985870986860292508281109083900303905080613364576000841161335957600080fd5b508290049050610a9a565b80841161337057600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600291820b820b600090815260209384526040908190208054835103815560018101805495840151959095039094559290910180549190920151039055565b60405163f30dba9360e01b81526000906001600160a01b0384169063f30dba939061344b908590600401615baa565b6101006040518083038186803b15801561346457600080fd5b505afa158015613478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349c919061583a565b50949998505050505050505050565b600060016001607f1b031982600f0b136134d75760405162461bcd60e51b815260040161127290615c57565b5060000390565b60008082600f0b121561354357826001600160801b03168260000384039150816001600160801b03161061353e576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b6107d3565b826001600160801b03168284019150816001600160801b031610156107d3576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b038316108015906135d0575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613605576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b600160201b600160c01b03602083901b166001600160801b03811160071b81811c6001600160401b03811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061369757607f810383901c91506136a1565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c6001603f1b161760c19b909b1c6001603e1b169a909a1760c29990991c6001603d1b169890981760c39790971c6001603c1b169690961760c49590951c6001603b1b169490941760c59390931c6001603a1b169290921760c69190911c600160391b161760c79190911c600160381b161760c89190911c600160371b161760c99190911c600160361b161760ca9190911c600160351b161760cb9190911c600160341b161760cc9190911c600160331b161760cd9190911c600160321b1617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461387057886001600160a01b031661385482612ccd565b6001600160a01b03161115613869578161386b565b805b613872565b815b9998505050505050505050565b60008082121561322e576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b60006138e1306149f3565b15905090565b600054610100900460ff168061390057506139006138d6565b8061390e575060005460ff16155b6139495760405162461bcd60e51b815260040180806020018281038252602e815260200180615eb7602e913960400191505060405180910390fd5b600054610100900460ff16158015613974576000805460ff1961ff0019909116610100171660011790555b61397c6149f9565b801561398e576000805461ff00191690555b50565b600054610100900460ff16806139aa57506139aa6138d6565b806139b8575060005460ff16155b6139f35760405162461bcd60e51b815260040180806020018281038252602e815260200180615eb7602e913960400191505060405180910390fd5b600054610100900460ff16158015613a1e576000805460ff1961ff0019909116610100171660011790555b613a26614ae8565b609a80546001600160a01b0319166001600160a01b0384161790558015611ad2576000805461ff00191690555050565b600080600080613a67878787612786565b915091506000613a78888888610e54565b9050613a8f613a86826131e6565b612392856131e6565b989197509095505050505050565b60405163f30dba9360e01b81526000906001600160a01b0384169063f30dba9390613acc908590600401615baa565b6101006040518083038186803b158015613ae557600080fd5b505afa158015613af9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1d919061583a565b9a9950505050505050505050565b613b33615297565b6000613b428360000151612529565b50505050505090506000613b7982613b5d8660200151612ccd565b613b6a8760400151612ccd565b87606001518860800151614b7d565b8451602086015160408088015160a08901519151633c8a7d8d60e01b815294955060009485946001600160a01b031693633c8a7d8d93613bc193309390918a91600401615a8a565b6040805180830381600087803b158015613bda57600080fd5b505af1158015613bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c1291906159b8565b915091506040518060600160405280838152602001828152602001846001600160801b0316815250945050505050919050565b8160020b8360020b13613c7e57600283810b810b6000908152602086815260409182902084518155908401516001820155908301519101555b50505050565b600080613ca38360000151846020015185606001518660800151612288565b600081815260cf602052604090208054919250906001600160801b0316613e6a5783516001600160a01b03908116600090815260ce602090815260408083208289015185168452825291829020609a548351633b38243160e21b815293519194169263ece090c4926004808301939192829003018186803b158015613d2757600080fd5b505afa158015613d3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d5f9190615a55565b60ff16818054905010613d845760405162461bcd60e51b815260040161127290615c8d565b8054600181018255600082815260208120909101849055606086015183546080880151600290810b62ffffff908116600160981b0262ffffff60981b199490920b16600160801b0262ffffff60801b1990921691909117919091161783556040860151613df090612529565b5050506020808b01516001600160a01b0316600090815260d082526040812089546101208e015180519401519698509096509094613e4b9450869350600160801b8204600290810b93600160981b909304900b9188916125bc565b8051600287015560208101516003870155604001516004860155505050505b602080850151604080516101208101825284546001600160801b0381168252600160801b8104600290810b810b810b95830195909552600160981b9004840b840b840b9181019190915260018401546060820152918301546080830152600383015460a0830152600483015460c0830152600583015460e083015260068301546101008301526000918291613efe91613f8a565b60c08801518554929450909250613f2a91613f25916001600160801b03918216911661246c565b614c3f565b83546001600160801b0319166001600160801b03919091161783556001830181905560e08601516005840154613f5f9161246c565b60058401556101008601516006840154613f789161246c565b60069093019290925592505050919050565b609a5460405163bbe4f6db60e01b815260009182918291613fc5916001600160a01b039091169063bbe4f6db90612835908990600401615a76565b505050506001600160a01b038816600090815260d0602090815260408083208a8301518b83015160d1909452919093205494965091945061400a938593508690614c87565b925061402e8560600151840386600001516001600160801b0316600160801b61332e565b935050505b9250929050565b614042615310565b60008083600001516001600160a01b031663a34123a78560400151866060015187608001516040518463ffffffff1660e01b815260040161408593929190615bb8565b6040805180830381600087803b15801561409e57600080fd5b505af11580156140b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140d691906159b8565b9150915083600001516001600160a01b0316634f1eb3d88560200151866040015187606001516001600160801b03806040518663ffffffff1660e01b8152600401614125959493929190615b10565b6040805180830381600087803b15801561413e57600080fd5b505af1158015614152573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061417691906158e4565b505060408051808201909152918252602082015292915050565b606080820151600090815260cf602090815260408083208286015182516101208101845282546001600160801b0381168252600160801b8104600290810b810b810b96830196909652600160981b9004850b850b850b93810193909352600182015495830195909552918201546080820152600382015460a0820152600482015460c0820152600582015460e0820152600682015461010082015291928392839291839161423e9190613f8a565b60c088015191965091506001600160801b03161561431d5760058201541561429b57600582015460c0870151835461428392916001600160801b03908116911661332e565b600583015490945061429590856132d1565b60058301555b6006820154156142e057600682015460c087015183546142c892916001600160801b03908116911661332e565b60068301549093506142da90846132d1565b60068301555b60c0860151825461430191613f25916001600160801b0390811691166132d1565b82546001600160801b0319166001600160801b03919091161782555b81546001600160801b031661434857614343866000015187602001518860600151614cef565b614350565b600182018190555b50509193909250565b600290810b810b600090815260209290925260408220828155600181018390550155565b6000826001600160a01b0316846001600160a01b0316111561439d579192915b836001600160a01b03166143d6606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b031661332e565b816143dd57fe5b04949350505050565b6000826143f5575060006107d3565b826000191480156144095750600160ff1b82145b156144455760405162461bcd60e51b8152600401808060200182810382526027815260200180615f266027913960400191505060405180910390fd5b8282028284828161445257fe5b0514610a9a5760405162461bcd60e51b8152600401808060200182810382526027815260200180615f266027913960400191505060405180910390fd5b600080600085126144a057846144a9565b6144a985614df8565b905060008085126144ba57846144c3565b6144c385614df8565b9050600080871280156144d65750600086135b806144ec57506000871380156144ec5750600086125b6144f75760006144fa565b60015b9050600061450984848861332e565b90508161451e57614519816131e6565b614527565b61452781614e1d565b98975050505050505050565b600081614587576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b8160001914801561459b5750600160ff1b83145b156145d75760405162461bcd60e51b8152600401808060200182810382526021815260200180615ee56021913960400191505060405180910390fd5b60008284816145e257fe5b05949350505050565b6000826001600160a01b0316846001600160a01b0316111561460b579192915b610757826001600160801b03168585036001600160a01b0316600160601b61332e565b60020b600881901d9161010090910790565b60405163299ce14b60e11b81526000906001600160a01b03841690635339c2969061466f908590600401615b9c565b60206040518083038186803b15801561468757600080fd5b505afa15801561469b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9a91906159a0565b60008082116146cd57600080fd5b600160801b82106146e057608091821c91015b600160401b82106146f357604091821c91015b600160201b821061470657602091821c91015b62010000821061471857601091821c91015b610100821061472957600891821c91015b6010821061473957600491821c91015b6004821061474957600291821c91015b60028210610b3e57600101919050565b600080821161476757600080fd5b5060ff6001600160801b0382161561478257607f190161478a565b608082901c91505b6001600160401b038216156147a257603f19016147aa565b604082901c91505b63ffffffff8216156147bf57601f19016147c7565b602082901c91505b61ffff8216156147da57600f19016147e2565b601082901c91505b60ff8216156147f457600719016147fc565b600882901c91505b600f82161561480e5760031901614816565b600482901c91505b60038216156148285760011901614830565b600282901c91505b6001821615610b3e5760001901919050565b6000836001600160a01b0316856001600160a01b03161115614862579293925b8161488f5761488a836001600160801b03168686036001600160a01b0316600160601b61332e565b6148b2565b6148b2836001600160801b03168686036001600160a01b0316600160601b613297565b95945050505050565b6000836001600160a01b0316856001600160a01b031611156148db579293925b600160601b600160e01b03606084901b166001600160a01b03868603811690871661490557600080fd5b8361493557866001600160a01b03166149288383896001600160a01b031661332e565b8161492f57fe5b0461277b565b61277b61494c8383896001600160a01b0316613297565b886001600160a01b0316614e31565b600080856001600160a01b03161161497257600080fd5b6000846001600160801b03161161498857600080fd5b8161499a5761488a8585856001614e3c565b6148b28585856001614f1d565b600080856001600160a01b0316116149be57600080fd5b6000846001600160801b0316116149d457600080fd5b816149e65761488a8585856000614f1d565b6148b28585856000614e3c565b3b151590565b600054610100900460ff1680614a125750614a126138d6565b80614a20575060005460ff16155b614a5b5760405162461bcd60e51b815260040180806020018281038252602e815260200180615eb7602e913960400191505060405180910390fd5b600054610100900460ff16158015614a86576000805460ff1961ff0019909116610100171660011790555b614a8e614ae8565b6000614a98612248565b603380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020615f06833981519152908290a350801561398e576000805461ff001916905550565b600054610100900460ff1680614b015750614b016138d6565b80614b0f575060005460ff16155b614b4a5760405162461bcd60e51b815260040180806020018281038252602e815260200180615eb7602e913960400191505060405180910390fd5b600054610100900460ff16158015614b75576000805460ff1961ff0019909116610100171660011790555b61397c615000565b6000836001600160a01b0316856001600160a01b03161115614b9d579293925b846001600160a01b0316866001600160a01b031611614bc857614bc18585856150a0565b90506148b2565b836001600160a01b0316866001600160a01b03161015614c2a576000614bef8786866150a0565b90506000614bfe878986615103565b9050806001600160801b0316826001600160801b031610614c1f5780614c21565b815b925050506148b2565b614c35858584615103565b9695505050505050565b806001600160801b0381168114610b3e5760405162461bcd60e51b8152600401808060200182810382526027815260200180615e6f6027913960400191505060405180910390fd5b600284810b80820b6000908152602088905260408082205487850b850b83529082205491939092849187900b1215614cc157828503614cc3565b825b905060008760020b8760020b12614cdc57828603614cde565b825b919095030398975050505050505050565b6001600160a01b03808416600090815260ce602090815260408083209386168352929052908120805490915b81811015614df05783838281548110614d3057fe5b90600052602060002001541415614de857600182038114614d7e57826001830381548110614d5a57fe5b9060005260206000200154838281548110614d7157fe5b6000918252602090912001555b82805480614d8857fe5b60008281526020808220830160001990810183905590920190925585825260cf90526040812080546001600160b01b0319168155600181018290556002810182905560038101829055600481018290556005810182905560060155614df0565b600101614d1b565b505050505050565b6000600160ff1b82136134d75760405162461bcd60e51b815260040161127290615c57565b6000614e28826131e6565b60000392915050565b808204910615150190565b60008115614eaf5760006001600160a01b03841115614e7257614e6d84600160601b876001600160801b031661332e565b614e8a565b6001600160801b038516606085901b81614e8857fe5b045b9050614ea7614ea26001600160a01b03881683615140565b615150565b915050610757565b60006001600160a01b03841115614edd57614ed884600160601b876001600160801b0316613297565b614ef4565b614ef4606085901b6001600160801b038716614e31565b905080866001600160a01b031611614f0b57600080fd5b6001600160a01b038616039050610757565b600082614f2b575083610757565b600160601b600160e01b03606085901b168215614fb9576001600160a01b03861684810290858281614f5957fe5b041415614f8a57818101828110614f8857614f7e83896001600160a01b031683613297565b9350505050610757565b505b614fb082614fab878a6001600160a01b03168681614fa457fe5b0490615140565b614e31565b92505050610757565b6001600160a01b03861684810290858281614fd057fe5b04148015614fdd57508082115b614fe657600080fd5b808203614f7e614ea2846001600160a01b038b1684613297565b600054610100900460ff168061501957506150196138d6565b80615027575060005460ff16155b6150625760405162461bcd60e51b815260040180806020018281038252602e815260200180615eb7602e913960400191505060405180910390fd5b600054610100900460ff1615801561397c576000805460ff1961ff001990911661010017166001179055801561398e576000805461ff001916905550565b6000826001600160a01b0316846001600160a01b031611156150c0579192915b60006150e3856001600160a01b0316856001600160a01b0316600160601b61332e565b90506148b26150fe84838888036001600160a01b031661332e565b615166565b6000826001600160a01b0316846001600160a01b03161115615123579192915b6107576150fe83600160601b8787036001600160a01b031661332e565b808201828110156107d357600080fd5b806001600160a01b0381168114610b3e57600080fd5b806001600160801b0381168114610b3e57600080fd5b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060600160405280600060020b815260200160008152602001600081525090565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b60405180610120016040528060006001600160801b03168152602001600060020b8152602001600060020b81526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806080016040528060008152602001600081526020016000815260200160006001600160801b031681525090565b6040518060600160405280600081526020016000815260200160006001600160801b031681525090565b60405180606001604052806000815260200160008152602001600081525090565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b604051806040016040528060008152602001600081525090565b8035610b3e81615e16565b60008083601f840112615346578182fd5b5081356001600160401b0381111561535c578182fd5b602083019150836020808302850101111561403357600080fd5b8035610b3e81615e2b565b8051610b3e81615e2b565b60006040828403121561539d578081fd5b604080519081016001600160401b03811182821017156153b957fe5b604052823581526020928301359281019290925250919050565b805161ffff81168114610b3e57600080fd5b8035610b3e81615e5d565b805160ff81168114610b3e57600080fd5b600060208284031215615412578081fd5b8135610a9a81615e16565b60006020828403121561542e578081fd5b8151610a9a81615e16565b6000806040838503121561544b578081fd5b823561545681615e16565b9150602083013561546681615e16565b809150509250929050565b60008060008060608587031215615486578182fd5b843561549181615e16565b935060208501356154a181615e16565b925060408501356001600160401b038111156154bb578283fd5b6154c787828801615335565b95989497509550505050565b6000806000606084860312156154e7578081fd5b83356154f281615e16565b9250602084013561550281615e16565b9150604084013561551281615e2b565b809150509250925092565b60008060008060808587031215615532578182fd5b843561553d81615e16565b9350602085013561554d81615e16565b9250604085013561555d81615e39565b9150606085013561556d81615e39565b939692955090935050565b60008060006080848603121561558c578081fd5b833561559781615e16565b925060208401356155a781615e16565b91506155b6856040860161538c565b90509250925092565b6000806000604084860312156155d3578081fd5b83356155de81615e16565b925060208401356001600160401b038111156155f8578182fd5b61560486828701615335565b9497909650939450505050565b600060208284031215615622578081fd5b5035919050565b60008060006060848603121561563d578081fd5b505081359360208301359350604090920135919050565b600060208284031215615665578081fd5b8135610a9a81615e39565b600060208284031215615681578081fd5b8151610a9a81615e39565b6000610100828403121561569e578081fd5b50919050565b6000604082840312156156b5578081fd5b610a9a838361538c565b6000608082840312156156d0578081fd5b604051608081016001600160401b03811182821017156156ec57fe5b60405282516156fa81615e16565b8152602083015161570a81615e5d565b6020820152604083015161571d81615e5d565b6040820152606083015161573081615e5d565b60608201529392505050565b600060a0828403121561569e578081fd5b6000610120828403121561575f578081fd5b60405161010081016001600160401b038111828210171561577c57fe5b6040526157888361532a565b815261579660208401615376565b60208201526157a760408401615376565b6040820152606083013560608201526157c26080840161532a565b60808201526157d360a084016153e5565b60a08201526157e460c084016153e5565b60c08201526157f68460e0850161538c565b60e08201529392505050565b600060208284031215615813578081fd5b8135610a9a81615e48565b60006020828403121561582f578081fd5b8151610a9a81615e48565b600080600080600080600080610100898b031215615856578586fd5b885161586181615e48565b80985050602089015180600f0b8114615878578687fd5b80975050604089015195506060890151945060808901518060060b811461589d578485fd5b60a08a01519094506158ae81615e16565b60c08a015190935063ffffffff811681146158c7578283fd5b91506158d560e08a01615381565b90509295985092959890939650565b600080604083850312156158f6578182fd5b825161590181615e48565b602084015190925061546681615e48565b600080600080600080600060e0888a03121561592c578081fd5b875161593781615e16565b602089015190975061594881615e39565b9550615956604089016153d3565b9450615964606089016153d3565b9350615972608089016153d3565b925061598060a089016153f0565b915060c088015161599081615e2b565b8091505092959891949750929550565b6000602082840312156159b1578081fd5b5051919050565b600080604083850312156159ca578182fd5b505080516020909101519092909150565b600080600080606085870312156159f0578182fd5b843593506020850135925060408501356001600160401b0380821115615a14578384fd5b818701915087601f830112615a27578384fd5b813581811115615a35578485fd5b886020828501011115615a46578485fd5b95989497505060200194505050565b600060208284031215615a66578081fd5b610a9a826153f0565b60020b9052565b6001600160a01b0391909116815260200190565b600060018060a01b038716825260208660020b818401528560020b604084015260018060801b038516606084015260a0608084015283518060a0850152825b81811015615ae55785810183015185820160c001528201615ac9565b81811115615af6578360c083870101525b50601f01601f19169290920160c001979650505050505050565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015615b8557835183529284019291840191600101615b69565b50909695505050505050565b901515815260200190565b60019190910b815260200190565b60029190910b815260200190565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b90815260200190565b918252602082015260400190565b6020808252600790820152660869088be9e86960cb1b604082015260600190565b60208082526006908201526509e84be9e8ab60d31b604082015260600190565b6020808252600790820152662aa1a12fa321ab60c91b604082015260600190565b6020808252601c908201527b506572704d6174683a20696e76657273696f6e206f766572666c6f7760201b604082015260600190565b6020808252600690820152654f425f4f4e4560d01b604082015260600190565b8151815260208083015190820152604080830151908201526060918201516001600160801b03169181019190915260800190565b81516001600160801b0316815260208083015160020b90820152604080830151610120830191615d1390840182615a6f565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525092915050565b81516001600160a01b039081168252602092830151169181019190915260400190565b600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b815160020b8152602080830151908201526040918201519181019190915260600190565b60008582528460208301526060604083015282606083015282846080840137818301608090810191909152601f909201601f191601019392505050565b6001600160a01b038116811461398e57600080fd5b801515811461398e57600080fd5b8060020b811461398e57600080fd5b6001600160801b038116811461398e57600080fd5b62ffffff8116811461398e57600080fdfe53616665436173743a2076616c756520646f65736e27742066697420696e2031323820626974735369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206469766973696f6e206f766572666c6f778be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a264697066735822122052e7270ee17ba94e4c5c58aff237dfb88cb98503489e9c6ab07f56857bd8501f64736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101545760003560e01c806313af403514610159578063398dbcfd1461016e578063436933ea14610197578063449323d8146101b757806347b52fb7146101ca5780634dffaee5146101ea57806359bfbc5a1461020a5780635b778b9d1461021d5780635d8a541d1461023057806367b1f5df146102515780636c8381f814610264578063715018a6146102795780637c2b7c53146102815780637fc26736146102945780638da5cb5b146102a7578063a3bf0df8146102af578063acf71827146102cf578063b0c04174146102ef578063bc5920ba14610302578063c4d66de81461030a578063c575ff791461031d578063c66b8ed214610325578063d0581a931461032d578063d348799714610340578063e8ab2fb314610353578063eaad235414610373578063f807cd2214610386578063ffa613271461038e575b600080fd5b61016c610167366004615401565b6103a1565b005b61018161017c366004615471565b6104fc565b60405161018e9190615d7b565b60405180910390f35b6101aa6101a5366004615439565b61075f565b60405161018e9190615b4d565b61016c6101c5366004615401565b6107d9565b6101dd6101d8366004615578565b610880565b60405161018e9190615bde565b6101fd6101f83660046155bf565b610aa1565b60405161018e9190615b91565b6101dd610218366004615401565b610b24565b61018161022b36600461573c565b610b43565b61024361023e3660046154d3565b610ce3565b60405161018e929190615be7565b61016c61025f366004615401565b610cfd565b61026c610da4565b60405161018e9190615a76565b61016c610db3565b6101dd61028f3660046154d3565b610e54565b6101dd6102a2366004615578565b610fc6565b61026c611221565b6102c26102bd36600461574d565b611230565b60405161018e9190615db5565b6102e26102dd366004615611565b61183b565b60405161018e9190615ce1565b61016c6102fd366004615629565b6118d6565b61016c611936565b61016c610318366004615401565b611a22565b61026c611ad6565b61026c611ae5565b61024361033b3660046155bf565b611af4565b61016c61034e3660046159db565b611b6b565b61036661036136600461568c565b611d0b565b60405161018e9190615cad565b6102e261038136600461551d565b6120d8565b61026c61218b565b6101dd61039c36600461551d565b61219a565b6103a9612248565b6001600160a01b03166103ba611221565b6001600160a01b0316146103fe576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610442576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b038281169116141561048e576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b03828116911614156104da576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b61050461517c565b61050c61224c565b609a5460405163bbe4f6db60e01b81526000916001600160a01b03169063bbe4f6db9061053d908890600401615a76565b60206040518083038186803b15801561055557600080fd5b505afa158015610569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058d919061541d565b905061059761517c565b60005b8481101561075257600060cf60008888858181106105b457fe5b60209081029290920135835250818101929092526040908101600090812082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b968301879052600160981b909104810b810b810b948201859052600183015460608301528201546080820152600382015460a0820152600482015460c0820152600582015460e082015260069091015461010082015293509161065f918c918c91612288565b905060006106d46040518060e001604052808d6001600160a01b031681526020018c6001600160a01b03168152602001886001600160a01b03168152602001848152602001856020015160020b8152602001856040015160020b815260200185600001516001600160801b03168152506122e4565b805186519192506106e5919061246c565b8552602080820151908601516106fa9161246c565b6020860152604080820151908601516107129161246c565b60408601526060808201519086015161072a916124c4565b606086015260808082015190860151610742916124c4565b608086015250505060010161059a565b509150505b949350505050565b6001600160a01b03808316600090815260ce602090815260408083209385168352928152908290208054835181840281018401909452808452606093928301828280156107cb57602002820191906000526020600020905b8154815260200190600101908083116107b7575b505050505090505b92915050565b6107e1612248565b6001600160a01b03166107f2611221565b6001600160a01b031614610836576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b606780546001600160a01b0319166001600160a01b0383169081179091556040517fd0654f5900f9e7e4e605a19334306e6a2786bbf960ac0484a4c12feb6428fe2f90600090a250565b6001600160a01b03808416600090815260ce60209081526040808320938616835292815282822080548451818402810184019095528085529293849390928301828280156108ed57602002820191906000526020600020905b8154815260200190600101908083116108d9575b5050506001600160a01b03808816600090815260d06020526040808220609a54915163bbe4f6db60e01b815296975095919450909116915063bbe4f6db90610939908990600401615a76565b60206040518083038186803b15801561095157600080fd5b505afa158015610965573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610989919061541d565b9050600061099682612529565b505050505091505060005b8451811015610a9457600060cf60008784815181106109bc57fe5b6020908102919091018101518252818101929092526040908101600090812082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b838801819052600160981b909204810b810b810b958301869052600184015460608401528301546080830152600383015460a0830152600483015460c0830152600583015460e08301526006909201546101008201528c51948d01519095509193610a72938a93909189916125bc565b9050610a88610a8183836126a0565b89906124c4565b975050506001016109a1565b50505050505b9392505050565b6000805b82811015610b19576001600160a01b038516600090815260ce6020526040812081868685818110610ad257fe5b9050602002016020810190610ae79190615401565b6001600160a01b031681526020810191909152604001600020541115610b11576001915050610a9a565b600101610aa5565b506000949350505050565b6001600160a01b038116600090815260d160205260409020545b919050565b610b4b61517c565b610b5361224c565b609a546000906001600160a01b031663bbe4f6db610b776040860160208701615401565b6040518263ffffffff1660e01b8152600401610b939190615a76565b60206040518083038186803b158015610bab57600080fd5b505afa158015610bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be3919061541d565b90506000610c2c610bf76020860186615401565b610c076040870160208801615401565b610c176060880160408901615654565b610c276080890160608a01615654565b612288565b6040805160e081019091529091506107579080610c4c6020880188615401565b6001600160a01b03168152602001866020016020810190610c6d9190615401565b6001600160a01b03168152602001846001600160a01b03168152602001838152602001866040016020810190610ca39190615654565b60020b8152602001610cbb6080880160608901615654565b60020b8152602001610cd360a0880160808901615802565b6001600160801b031690526122e4565b600080610cf1858585612786565b90969095509350505050565b610d05612248565b6001600160a01b0316610d16611221565b6001600160a01b031614610d5a576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b60cd80546001600160a01b0319166001600160a01b0383169081179091556040517f39870277935708b88965de17b0c29d3c1ad93a200dce569fc56702229432973e90600090a250565b6034546001600160a01b031690565b610dbb612248565b6001600160a01b0316610dcc611221565b6001600160a01b031614610e10576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b031690600080516020615f06833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b6001600160a01b03808416600090815260ce6020908152604080832093861683529281528282208054845181840281018401909552808552929384938493919291830182828015610ec457602002820191906000526020600020905b815481526020019060010190808311610eb0575b505083519394506000925050505b81811015610fba57600060cf6000858481518110610eec57fe5b6020908102919091018101518252818101929092526040908101600090812082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b96830196909652600160981b9004850b850b850b9381019390935260018101546060840152928301546080830152600383015460a0830152600483015460c0830152600583015460e0830152600690920154610100820152915087610f9c57816101000151610fa2565b8160e001515b9050610fae868261246c565b95505050600101610ed2565b50919695505050505050565b6001600160a01b03808416600090815260ce602090815260408083209386168352928152828220805484518184028101840190955280855292938493909283018282801561103357602002820191906000526020600020905b81548152602001906001019080831161101f575b5050506001600160a01b03808816600090815260d06020526040808220609a54915163bbe4f6db60e01b815296975095919450909116915063bbe4f6db9061107f908990600401615a76565b60206040518083038186803b15801561109757600080fd5b505afa1580156110ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cf919061541d565b835190915060006110df83612529565b505050505091505060005b8281101561121457600060cf600088848151811061110457fe5b602090810291909101810151825281810192909252604001600090812080548c51938d01519194509192611153928a92600160801b8204600290810b93600160981b909304900b9189916125bc565b604080516101208101825284546001600160801b0381168252600160801b8104600290810b810b810b6020840152600160981b909104810b810b810b9282019290925260018501546060820152908401546080820152600384015460a0820152600484015460c0820152600584015460e082015260068401546101008201529091506111ea906111e390836126a0565b8a906124c4565b815160028401556020820151600384015560409091015160049092019190915596506001016110ea565b5050505050509392505050565b6033546001600160a01b031690565b6112386151ab565b60cd546001600160a01b031661124c612248565b6001600160a01b03161461127b5760405162461bcd60e51b815260040161127290615c16565b60405180910390fd5b609a54825160405163bbe4f6db60e01b81526000926001600160a01b03169163bbe4f6db916112ad9190600401615a76565b60206040518083038186803b1580156112c557600080fd5b505afa1580156112d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fd919061541d565b6060840151609a54855160405163033e16f360e21b81529394506000928312936001600160a01b0390921691630cf85bcc9161133b91600401615a76565b60806040518083038186803b15801561135357600080fd5b505afa158015611367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138b91906156bf565b60600151905060008060006113ce86896060015160d160008c600001516001600160a01b03166001600160a01b0316815260200190815260200160002054612a62565b905087608001516001600160a01b03166000146113ef578760800151611419565b87602001516114125773fffd8963efd1fc6a506488495d951d5263988d25611419565b6401000276a45b6001600160a01b03166080890152600061143287612b38565b90505b604082015115801590611462575088608001516001600160a01b031682602001516001600160a01b031614155b156117ea5761146f6151cf565b6020808401516001600160a01b031682528351908b0151611493918a918590612bab565b15156040830152600290810b810b60208301819052620d89e719910b12156114c457620d89e71960208201526114e3565b6020810151620d89e860029190910b13156114e357620d89e860208201525b6114f08160200151612ccd565b6001600160a01b03166060820152602080840151908b015161158d9190611533578b608001516001600160a01b031683606001516001600160a01b031611611551565b8b608001516001600160a01b031683606001516001600160a01b0316105b61155f578260600151611565565b8b608001515b856080015186604001518e60200151611582578e60a00151611588565b8e60c001515b612ff4565b60c085015260a084015260808301526001600160a01b0316602084015286156115eb576115e16115d66115d18360c00151846080015161246c90919063ffffffff16565b6131e6565b604085015190613232565b604084015261160c565b6116066115fb8260a001516131e6565b6040850151906124c4565b60408401525b60808301516001600160801b0316156116ae5789602001511561164a576116448160a001518b60a0015162ffffff16620f4240613297565b60c08201525b60c0810151948501946000906116699062ffffff8916620f4240613297565b60c08301519581019590915060009061168290836132d1565b90506116a081600160801b87608001516001600160801b031661332e565b606086018051909101905250505b80606001516001600160a01b031683602001516001600160a01b031614156117ac57806040015115611782578960400151156117395789516001600160a01b0316600090815260d0602090815260409182902083820151835160608082018652880151815260e08f018051518286015251909301519383019390935291611737918391906133dd565b505b600061174989836020015161341c565b90508a60200151156117645761176181600f0b6134ab565b90505b6117728460800151826134de565b6001600160801b03166080850152505b896020015161179557806020015161179e565b60018160200151035b600290810b900b83526117e4565b80600001516001600160a01b031683602001516001600160a01b0316146117e4576117da8360200151613594565b600290810b900b83525b50611435565b88604001511561181457606082015189516001600160a01b0316600090815260d160205260409020555b5060408051606081018252915160020b825260208201939093529182015295945050505050565b61184361520b565b50600090815260cf602090815260409182902082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b94830194909452600160981b9004830b830b830b9381019390935260018101546060840152908101546080830152600381015460a0830152600481015460c0830152600581015460e08301526006015461010082015290565b6118de61224c565b600083815260cf60205260409020600581015461190f9061190a908590611904906131e6565b906124c4565b61387f565b816005018190555061192b61190a8361190484600601546131e6565b600690910155505050565b6034546001600160a01b031661197b576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b611983612248565b6034546001600160a01b039081169116146119ce576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b039283169290911690600080516020615f0683398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b600054610100900460ff1680611a3b5750611a3b6138d6565b80611a49575060005460ff16155b611a845760405162461bcd60e51b815260040180806020018281038252602e815260200180615eb7602e913960400191505060405180910390fd5b600054610100900460ff16158015611aaf576000805460ff1961ff0019909116610100171660011790555b611ab76138e7565b611ac082613991565b8015611ad2576000805461ff00191690555b5050565b6067546001600160a01b031690565b609a546001600160a01b031690565b60008060005b83811015611b62576000858583818110611b1057fe5b9050602002016020810190611b259190615401565b9050600080611b3689846000613a56565b9092509050611b4586836124c4565b9550611b51858261246c565b94505060019092019150611afa9050565b50935093915050565b6000611b75612248565b90506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611bb257600080fd5b505afa158015611bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bea919061541d565b609a5460405163bbe4f6db60e01b81529192506001600160a01b03169063bbe4f6db90611c1b908490600401615a76565b60206040518083038186803b158015611c3357600080fd5b505afa158015611c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6b919061541d565b6001600160a01b0316826001600160a01b031614611c9b5760405162461bcd60e51b815260040161127290615c36565b60675460405163d348799760e01b81526001600160a01b039091169063d348799790611cd1908990899089908990600401615dd9565b600060405180830381600087803b158015611ceb57600080fd5b505af1158015611cff573d6000803e3d6000fd5b50505050505050505050565b611d13615266565b611d1b61224c565b609a546000906001600160a01b031663bbe4f6db611d3f6040860160208701615401565b6040518263ffffffff1660e01b8152600401611d5b9190615a76565b60206040518083038186803b158015611d7357600080fd5b505afa158015611d87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dab919061541d565b9050600060d181611dc26040870160208801615401565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050600060d06000866020016020810190611dfe9190615401565b6001600160a01b03166001600160a01b031681526020019081526020016000209050611e28615297565b6000611e4385611e3e60a08a0160808b01615654565b613a9d565b90506000611e5b86611e3e60c08b0160a08c01615654565b9050611f216040518060c00160405280886001600160a01b031681526020018a6080016020810190611e8d9190615654565b60020b8152602001611ea560c08c0160a08d01615654565b60020b81526020018a6040013581526020018a60600135815260200160405180604001604052808c6000016020810190611edf9190615401565b6001600160a01b031681526020018a6001600160a01b0316815250604051602001611f0a9190615d58565b604051602081830303815290604052815250613b2b565b92506000611f2e87612529565b505050505091505082158015611f535750611f5387611e3e60a08c0160808d01615654565b15611f9857611f98611f6b60a08b0160808c01615654565b6040805160608101825289815260c08d0135602082015260e08d0135918101919091528791908490613c45565b81158015611fb55750611fb587611e3e60c08c0160a08d01615654565b15611fcd57611fcd611f6b60c08b0160a08c01615654565b50506040805161014081019091526000915061209c9080611ff160208b018b615401565b6001600160a01b031681526020018960200160208101906120129190615401565b6001600160a01b0390811682528816602082015260400161203960a08b0160808c01615654565b60020b815260200161205160c08b0160a08c01615654565b60020b815260208082018890526040868101516001600160801b03169083015285516060830152850151608082015260a001612095368b90038b0160c08c016156a4565b9052613c84565b6040805160808101825284518152602080860151908201528082019290925292909201516001600160801b031660608301525095945050505050565b6120e061520b565b60cf60006120f087878787612288565b8152602080820192909252604090810160002081516101208101835281546001600160801b0381168252600160801b8104600290810b810b810b95830195909552600160981b9004840b840b840b9281019290925260018101546060830152918201546080820152600382015460a0820152600482015460c0820152600582015460e082015260069091015461010082015295945050505050565b60cd546001600160a01b031690565b6000806107528560cf60006121b18a8a8a8a612288565b8152602080820192909252604090810160002081516101208101835281546001600160801b0381168252600160801b8104600290810b810b810b95830195909552600160981b9004840b840b840b9281019290925260018101546060830152918201546080820152600382015460a0820152600482015460c0820152600582015460e0820152600690910154610100820152613f8a565b3390565b6067546001600160a01b0316612260612248565b6001600160a01b0316146122865760405162461bcd60e51b815260040161127290615bf5565b565b604080516001600160601b0319606096871b81166020808401919091529590961b9095166034860152600292830b60e890811b60488701529190920b901b604b8401528051602e818503018152604e9093019052815191012090565b6122ec61517c565b60006123636040518060a0016040528085604001516001600160a01b0316815260200160cd60009054906101000a90046001600160a01b03166001600160a01b03168152602001856080015160020b81526020018560a0015160020b81526020018560c001516001600160801b031681525061403a565b9050600080600061237386614190565b9250925092506000612398612387846131e6565b8651612392906131e6565b90613232565b905060006123b56123a8846131e6565b61239288602001516131e6565b90506123c988604001518960800151613a9d565b6123f85760808801516020808a01516001600160a01b0316600090815260d0909152604090206123f891614359565b61240a88604001518960a00151613a9d565b6124395760a08801516020808a01516001600160a01b0316600090815260d09091526040902061243991614359565b6040805160a081018252875181526020978801519781019790975286019490945260608501525050608082015292915050565b600082820183811015610a9a576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b60008282018183128015906124d95750838112155b806124ee57506000831280156124ee57508381125b610a9a5760405162461bcd60e51b8152600401808060200182810382526021815260200180615e966021913960400191505060405180910390fd5b6000806000806000806000876001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561256d57600080fd5b505afa158015612581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a59190615912565b959e949d50929b5090995097509550909350915050565b6125c46152c1565b600286810b810b60009081526020899052604080822088840b90930b82529020600180830154908201546125f66152c1565b8a60020b8960020b121561260c5782880361260e565b825b6020820152600060028b810b908b900b1261262b5782890361262d565b825b905060008660020154905060008660020154905060008e60020b8d60020b121561265957828b0361265b565b825b905060008e60020b8e60020b1261267457828c03612676565b825b6020870151909d03949094038552909903999099036040830152509b9a5050505050505050505050565b6000806126b08460400151612ccd565b905060006126cd6126c48660200151612ccd565b8651849061437d565b905060006126fe6126ef8760a00151876020015161323290919063ffffffff16565b6126f8846131e6565b906143e6565b9050600061276161274d61273a6127268a608001518a6000015161323290919063ffffffff16565b600160601b886001600160a01b031661448f565b60c08a015160408a015161239291613232565b88516126f8906001600160801b03166131e6565b905061277b600160601b61277584846124c4565b90614533565b979650505050505050565b6001600160a01b03808416600090815260ce60209081526040808320938616835292815282822080548451818402810184019095528085529293849384939192918301828280156127f657602002820191906000526020600020905b8154815260200190600101908083116127e2575b5050609a5460405163bbe4f6db60e01b815294955060009461288a94506001600160a01b03909116925063bbe4f6db9150612835908a90600401615a76565b60206040518083038186803b15801561284d57600080fd5b505afa158015612861573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612885919061541d565b612529565b50508651949550600093505050505b81811015612a5657600060cf60008684815181106128b357fe5b6020908102919091018101518252818101929092526040908101600090812082516101208101845281546001600160801b0381168252600160801b8104600290810b810b810b968301879052600160981b909104810b810b810b9482019490945260018201546060820152928101546080840152600381015460a0840152600481015460c0840152600581015460e08401526006015461010083015290925090819061295e90612ccd565b9050600061296f8460400151612ccd565b90508a801561298f5750806001600160a01b0316876001600160a01b0316105b156129c8576129c1826001600160a01b0316886001600160a01b0316116129b657826129b8565b875b8551839061437d565b9250612a1b565b8a1580156129e75750816001600160a01b0316876001600160a01b0316115b15612a1b57612a1882826001600160a01b0316896001600160a01b031610612a0f5782612a11565b885b86516145eb565b92505b50612a289050888261246c565b975088612a4c576000612a3b8b84613f8a565b509050612a48888261246c565b9750505b5050600101612899565b50505050935093915050565b612a6a6152e2565b600080612a7686612529565b5050505050915091506000866001600160a01b0316631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b158015612aba57600080fd5b505afa158015612ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af2919061581e565b6040805160a08101825260029490940b84526001600160a01b0390941660208401529282019590955260608101939093526001600160801b031660808301525092915050565b6000816001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b7357600080fd5b505afa158015612b87573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d39190615670565b60008060008460020b8660020b81612bbf57fe5b05905060008660020b128015612be657508460020b8660020b81612bdf57fe5b0760020b15155b15612bf057600019015b8315612c5957600080612c028361462e565b9092509050600160ff82161b800160001901600081612c218c86614640565b168015159650905085612c3b57888360ff16860302612c4e565b88612c45826146bf565b840360ff168603025b965050505050612cc3565b600080612c688360010161462e565b9092509050600019600160ff83161b0119600081612c868c86614640565b168015159650905085612ca657888360ff0360ff16866001010102612cbc565b8883612cb183614759565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612ce4578260020b612cec565b8260020b6000035b9050620d89e8811115612d2a576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612d3e57600160801b612d50565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b031690506002821615612d7a576ffff97272373d413259a46990580e213a0260801c5b6004821615612d99576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612db8576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612dd7576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612df6576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612e15576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612e34576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612e54576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612e74576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612e94576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612eb4576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612ed4576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612ef4576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612f14576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612f34576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612f55576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612f75576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612f94576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612fb1576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612fcc578060001981612fc857fe5b0490505b600160201b810615612fdf576001612fe2565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a16101581871280159061307957600061302d8989620f42400362ffffff16620f424061332e565b905082613046576130418c8c8c6001614842565b613053565b6130538b8d8c60016148bb565b9550858110613064578a9650613073565b6130708c8b838661495b565b96505b506130c3565b816130905761308b8b8b8b60006148bb565b61309d565b61309d8a8c8b6000614842565b93508388600003106130b1578995506130c3565b6130c08b8a8a600003856149a7565b95505b6001600160a01b038a8116908716148215613126578080156130e25750815b6130f8576130f3878d8c60016148bb565b6130fa565b855b9550808015613107575081155b61311d57613118878d8c6000614842565b61311f565b845b9450613170565b8080156131305750815b613146576131418c888c6001614842565b613148565b855b9550808015613155575081155b61316b576131668c888c60006148bb565b61316d565b845b94505b8115801561318057508860000385115b1561318c578860000394505b8180156131ab57508a6001600160a01b0316876001600160a01b031614155b156131ba5785890393506131d7565b6131d4868962ffffff168a620f42400362ffffff16613297565b93505b50505095509550955095915050565b60006001600160ff1b0382111561322e5760405162461bcd60e51b8152600401808060200182810382526028815260200180615f4d6028913960400191505060405180910390fd5b5090565b60008183038183128015906132475750838113155b8061325c575060008312801561325c57508381135b610a9a5760405162461bcd60e51b8152600401808060200182810382526024815260200180615f756024913960400191505060405180910390fd5b60006132a484848461332e565b9050600082806132b057fe5b8486091115610a9a5760001981106132c757600080fd5b6001019392505050565b600082821115613328576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000808060001985870986860292508281109083900303905080613364576000841161335957600080fd5b508290049050610a9a565b80841161337057600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600291820b820b600090815260209384526040908190208054835103815560018101805495840151959095039094559290910180549190920151039055565b60405163f30dba9360e01b81526000906001600160a01b0384169063f30dba939061344b908590600401615baa565b6101006040518083038186803b15801561346457600080fd5b505afa158015613478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349c919061583a565b50949998505050505050505050565b600060016001607f1b031982600f0b136134d75760405162461bcd60e51b815260040161127290615c57565b5060000390565b60008082600f0b121561354357826001600160801b03168260000384039150816001600160801b03161061353e576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b6107d3565b826001600160801b03168284019150816001600160801b031610156107d3576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b038316108015906135d0575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613605576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b600160201b600160c01b03602083901b166001600160801b03811160071b81811c6001600160401b03811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061369757607f810383901c91506136a1565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c6001603f1b161760c19b909b1c6001603e1b169a909a1760c29990991c6001603d1b169890981760c39790971c6001603c1b169690961760c49590951c6001603b1b169490941760c59390931c6001603a1b169290921760c69190911c600160391b161760c79190911c600160381b161760c89190911c600160371b161760c99190911c600160361b161760ca9190911c600160351b161760cb9190911c600160341b161760cc9190911c600160331b161760cd9190911c600160321b1617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461387057886001600160a01b031661385482612ccd565b6001600160a01b03161115613869578161386b565b805b613872565b815b9998505050505050505050565b60008082121561322e576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b60006138e1306149f3565b15905090565b600054610100900460ff168061390057506139006138d6565b8061390e575060005460ff16155b6139495760405162461bcd60e51b815260040180806020018281038252602e815260200180615eb7602e913960400191505060405180910390fd5b600054610100900460ff16158015613974576000805460ff1961ff0019909116610100171660011790555b61397c6149f9565b801561398e576000805461ff00191690555b50565b600054610100900460ff16806139aa57506139aa6138d6565b806139b8575060005460ff16155b6139f35760405162461bcd60e51b815260040180806020018281038252602e815260200180615eb7602e913960400191505060405180910390fd5b600054610100900460ff16158015613a1e576000805460ff1961ff0019909116610100171660011790555b613a26614ae8565b609a80546001600160a01b0319166001600160a01b0384161790558015611ad2576000805461ff00191690555050565b600080600080613a67878787612786565b915091506000613a78888888610e54565b9050613a8f613a86826131e6565b612392856131e6565b989197509095505050505050565b60405163f30dba9360e01b81526000906001600160a01b0384169063f30dba9390613acc908590600401615baa565b6101006040518083038186803b158015613ae557600080fd5b505afa158015613af9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1d919061583a565b9a9950505050505050505050565b613b33615297565b6000613b428360000151612529565b50505050505090506000613b7982613b5d8660200151612ccd565b613b6a8760400151612ccd565b87606001518860800151614b7d565b8451602086015160408088015160a08901519151633c8a7d8d60e01b815294955060009485946001600160a01b031693633c8a7d8d93613bc193309390918a91600401615a8a565b6040805180830381600087803b158015613bda57600080fd5b505af1158015613bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c1291906159b8565b915091506040518060600160405280838152602001828152602001846001600160801b0316815250945050505050919050565b8160020b8360020b13613c7e57600283810b810b6000908152602086815260409182902084518155908401516001820155908301519101555b50505050565b600080613ca38360000151846020015185606001518660800151612288565b600081815260cf602052604090208054919250906001600160801b0316613e6a5783516001600160a01b03908116600090815260ce602090815260408083208289015185168452825291829020609a548351633b38243160e21b815293519194169263ece090c4926004808301939192829003018186803b158015613d2757600080fd5b505afa158015613d3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d5f9190615a55565b60ff16818054905010613d845760405162461bcd60e51b815260040161127290615c8d565b8054600181018255600082815260208120909101849055606086015183546080880151600290810b62ffffff908116600160981b0262ffffff60981b199490920b16600160801b0262ffffff60801b1990921691909117919091161783556040860151613df090612529565b5050506020808b01516001600160a01b0316600090815260d082526040812089546101208e015180519401519698509096509094613e4b9450869350600160801b8204600290810b93600160981b909304900b9188916125bc565b8051600287015560208101516003870155604001516004860155505050505b602080850151604080516101208101825284546001600160801b0381168252600160801b8104600290810b810b810b95830195909552600160981b9004840b840b840b9181019190915260018401546060820152918301546080830152600383015460a0830152600483015460c0830152600583015460e083015260068301546101008301526000918291613efe91613f8a565b60c08801518554929450909250613f2a91613f25916001600160801b03918216911661246c565b614c3f565b83546001600160801b0319166001600160801b03919091161783556001830181905560e08601516005840154613f5f9161246c565b60058401556101008601516006840154613f789161246c565b60069093019290925592505050919050565b609a5460405163bbe4f6db60e01b815260009182918291613fc5916001600160a01b039091169063bbe4f6db90612835908990600401615a76565b505050506001600160a01b038816600090815260d0602090815260408083208a8301518b83015160d1909452919093205494965091945061400a938593508690614c87565b925061402e8560600151840386600001516001600160801b0316600160801b61332e565b935050505b9250929050565b614042615310565b60008083600001516001600160a01b031663a34123a78560400151866060015187608001516040518463ffffffff1660e01b815260040161408593929190615bb8565b6040805180830381600087803b15801561409e57600080fd5b505af11580156140b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140d691906159b8565b9150915083600001516001600160a01b0316634f1eb3d88560200151866040015187606001516001600160801b03806040518663ffffffff1660e01b8152600401614125959493929190615b10565b6040805180830381600087803b15801561413e57600080fd5b505af1158015614152573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061417691906158e4565b505060408051808201909152918252602082015292915050565b606080820151600090815260cf602090815260408083208286015182516101208101845282546001600160801b0381168252600160801b8104600290810b810b810b96830196909652600160981b9004850b850b850b93810193909352600182015495830195909552918201546080820152600382015460a0820152600482015460c0820152600582015460e0820152600682015461010082015291928392839291839161423e9190613f8a565b60c088015191965091506001600160801b03161561431d5760058201541561429b57600582015460c0870151835461428392916001600160801b03908116911661332e565b600583015490945061429590856132d1565b60058301555b6006820154156142e057600682015460c087015183546142c892916001600160801b03908116911661332e565b60068301549093506142da90846132d1565b60068301555b60c0860151825461430191613f25916001600160801b0390811691166132d1565b82546001600160801b0319166001600160801b03919091161782555b81546001600160801b031661434857614343866000015187602001518860600151614cef565b614350565b600182018190555b50509193909250565b600290810b810b600090815260209290925260408220828155600181018390550155565b6000826001600160a01b0316846001600160a01b0316111561439d579192915b836001600160a01b03166143d6606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b031661332e565b816143dd57fe5b04949350505050565b6000826143f5575060006107d3565b826000191480156144095750600160ff1b82145b156144455760405162461bcd60e51b8152600401808060200182810382526027815260200180615f266027913960400191505060405180910390fd5b8282028284828161445257fe5b0514610a9a5760405162461bcd60e51b8152600401808060200182810382526027815260200180615f266027913960400191505060405180910390fd5b600080600085126144a057846144a9565b6144a985614df8565b905060008085126144ba57846144c3565b6144c385614df8565b9050600080871280156144d65750600086135b806144ec57506000871380156144ec5750600086125b6144f75760006144fa565b60015b9050600061450984848861332e565b90508161451e57614519816131e6565b614527565b61452781614e1d565b98975050505050505050565b600081614587576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b8160001914801561459b5750600160ff1b83145b156145d75760405162461bcd60e51b8152600401808060200182810382526021815260200180615ee56021913960400191505060405180910390fd5b60008284816145e257fe5b05949350505050565b6000826001600160a01b0316846001600160a01b0316111561460b579192915b610757826001600160801b03168585036001600160a01b0316600160601b61332e565b60020b600881901d9161010090910790565b60405163299ce14b60e11b81526000906001600160a01b03841690635339c2969061466f908590600401615b9c565b60206040518083038186803b15801561468757600080fd5b505afa15801561469b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9a91906159a0565b60008082116146cd57600080fd5b600160801b82106146e057608091821c91015b600160401b82106146f357604091821c91015b600160201b821061470657602091821c91015b62010000821061471857601091821c91015b610100821061472957600891821c91015b6010821061473957600491821c91015b6004821061474957600291821c91015b60028210610b3e57600101919050565b600080821161476757600080fd5b5060ff6001600160801b0382161561478257607f190161478a565b608082901c91505b6001600160401b038216156147a257603f19016147aa565b604082901c91505b63ffffffff8216156147bf57601f19016147c7565b602082901c91505b61ffff8216156147da57600f19016147e2565b601082901c91505b60ff8216156147f457600719016147fc565b600882901c91505b600f82161561480e5760031901614816565b600482901c91505b60038216156148285760011901614830565b600282901c91505b6001821615610b3e5760001901919050565b6000836001600160a01b0316856001600160a01b03161115614862579293925b8161488f5761488a836001600160801b03168686036001600160a01b0316600160601b61332e565b6148b2565b6148b2836001600160801b03168686036001600160a01b0316600160601b613297565b95945050505050565b6000836001600160a01b0316856001600160a01b031611156148db579293925b600160601b600160e01b03606084901b166001600160a01b03868603811690871661490557600080fd5b8361493557866001600160a01b03166149288383896001600160a01b031661332e565b8161492f57fe5b0461277b565b61277b61494c8383896001600160a01b0316613297565b886001600160a01b0316614e31565b600080856001600160a01b03161161497257600080fd5b6000846001600160801b03161161498857600080fd5b8161499a5761488a8585856001614e3c565b6148b28585856001614f1d565b600080856001600160a01b0316116149be57600080fd5b6000846001600160801b0316116149d457600080fd5b816149e65761488a8585856000614f1d565b6148b28585856000614e3c565b3b151590565b600054610100900460ff1680614a125750614a126138d6565b80614a20575060005460ff16155b614a5b5760405162461bcd60e51b815260040180806020018281038252602e815260200180615eb7602e913960400191505060405180910390fd5b600054610100900460ff16158015614a86576000805460ff1961ff0019909116610100171660011790555b614a8e614ae8565b6000614a98612248565b603380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020615f06833981519152908290a350801561398e576000805461ff001916905550565b600054610100900460ff1680614b015750614b016138d6565b80614b0f575060005460ff16155b614b4a5760405162461bcd60e51b815260040180806020018281038252602e815260200180615eb7602e913960400191505060405180910390fd5b600054610100900460ff16158015614b75576000805460ff1961ff0019909116610100171660011790555b61397c615000565b6000836001600160a01b0316856001600160a01b03161115614b9d579293925b846001600160a01b0316866001600160a01b031611614bc857614bc18585856150a0565b90506148b2565b836001600160a01b0316866001600160a01b03161015614c2a576000614bef8786866150a0565b90506000614bfe878986615103565b9050806001600160801b0316826001600160801b031610614c1f5780614c21565b815b925050506148b2565b614c35858584615103565b9695505050505050565b806001600160801b0381168114610b3e5760405162461bcd60e51b8152600401808060200182810382526027815260200180615e6f6027913960400191505060405180910390fd5b600284810b80820b6000908152602088905260408082205487850b850b83529082205491939092849187900b1215614cc157828503614cc3565b825b905060008760020b8760020b12614cdc57828603614cde565b825b919095030398975050505050505050565b6001600160a01b03808416600090815260ce602090815260408083209386168352929052908120805490915b81811015614df05783838281548110614d3057fe5b90600052602060002001541415614de857600182038114614d7e57826001830381548110614d5a57fe5b9060005260206000200154838281548110614d7157fe5b6000918252602090912001555b82805480614d8857fe5b60008281526020808220830160001990810183905590920190925585825260cf90526040812080546001600160b01b0319168155600181018290556002810182905560038101829055600481018290556005810182905560060155614df0565b600101614d1b565b505050505050565b6000600160ff1b82136134d75760405162461bcd60e51b815260040161127290615c57565b6000614e28826131e6565b60000392915050565b808204910615150190565b60008115614eaf5760006001600160a01b03841115614e7257614e6d84600160601b876001600160801b031661332e565b614e8a565b6001600160801b038516606085901b81614e8857fe5b045b9050614ea7614ea26001600160a01b03881683615140565b615150565b915050610757565b60006001600160a01b03841115614edd57614ed884600160601b876001600160801b0316613297565b614ef4565b614ef4606085901b6001600160801b038716614e31565b905080866001600160a01b031611614f0b57600080fd5b6001600160a01b038616039050610757565b600082614f2b575083610757565b600160601b600160e01b03606085901b168215614fb9576001600160a01b03861684810290858281614f5957fe5b041415614f8a57818101828110614f8857614f7e83896001600160a01b031683613297565b9350505050610757565b505b614fb082614fab878a6001600160a01b03168681614fa457fe5b0490615140565b614e31565b92505050610757565b6001600160a01b03861684810290858281614fd057fe5b04148015614fdd57508082115b614fe657600080fd5b808203614f7e614ea2846001600160a01b038b1684613297565b600054610100900460ff168061501957506150196138d6565b80615027575060005460ff16155b6150625760405162461bcd60e51b815260040180806020018281038252602e815260200180615eb7602e913960400191505060405180910390fd5b600054610100900460ff1615801561397c576000805460ff1961ff001990911661010017166001179055801561398e576000805461ff001916905550565b6000826001600160a01b0316846001600160a01b031611156150c0579192915b60006150e3856001600160a01b0316856001600160a01b0316600160601b61332e565b90506148b26150fe84838888036001600160a01b031661332e565b615166565b6000826001600160a01b0316846001600160a01b03161115615123579192915b6107576150fe83600160601b8787036001600160a01b031661332e565b808201828110156107d357600080fd5b806001600160a01b0381168114610b3e57600080fd5b806001600160801b0381168114610b3e57600080fd5b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060600160405280600060020b815260200160008152602001600081525090565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b60405180610120016040528060006001600160801b03168152602001600060020b8152602001600060020b81526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806080016040528060008152602001600081526020016000815260200160006001600160801b031681525090565b6040518060600160405280600081526020016000815260200160006001600160801b031681525090565b60405180606001604052806000815260200160008152602001600081525090565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b604051806040016040528060008152602001600081525090565b8035610b3e81615e16565b60008083601f840112615346578182fd5b5081356001600160401b0381111561535c578182fd5b602083019150836020808302850101111561403357600080fd5b8035610b3e81615e2b565b8051610b3e81615e2b565b60006040828403121561539d578081fd5b604080519081016001600160401b03811182821017156153b957fe5b604052823581526020928301359281019290925250919050565b805161ffff81168114610b3e57600080fd5b8035610b3e81615e5d565b805160ff81168114610b3e57600080fd5b600060208284031215615412578081fd5b8135610a9a81615e16565b60006020828403121561542e578081fd5b8151610a9a81615e16565b6000806040838503121561544b578081fd5b823561545681615e16565b9150602083013561546681615e16565b809150509250929050565b60008060008060608587031215615486578182fd5b843561549181615e16565b935060208501356154a181615e16565b925060408501356001600160401b038111156154bb578283fd5b6154c787828801615335565b95989497509550505050565b6000806000606084860312156154e7578081fd5b83356154f281615e16565b9250602084013561550281615e16565b9150604084013561551281615e2b565b809150509250925092565b60008060008060808587031215615532578182fd5b843561553d81615e16565b9350602085013561554d81615e16565b9250604085013561555d81615e39565b9150606085013561556d81615e39565b939692955090935050565b60008060006080848603121561558c578081fd5b833561559781615e16565b925060208401356155a781615e16565b91506155b6856040860161538c565b90509250925092565b6000806000604084860312156155d3578081fd5b83356155de81615e16565b925060208401356001600160401b038111156155f8578182fd5b61560486828701615335565b9497909650939450505050565b600060208284031215615622578081fd5b5035919050565b60008060006060848603121561563d578081fd5b505081359360208301359350604090920135919050565b600060208284031215615665578081fd5b8135610a9a81615e39565b600060208284031215615681578081fd5b8151610a9a81615e39565b6000610100828403121561569e578081fd5b50919050565b6000604082840312156156b5578081fd5b610a9a838361538c565b6000608082840312156156d0578081fd5b604051608081016001600160401b03811182821017156156ec57fe5b60405282516156fa81615e16565b8152602083015161570a81615e5d565b6020820152604083015161571d81615e5d565b6040820152606083015161573081615e5d565b60608201529392505050565b600060a0828403121561569e578081fd5b6000610120828403121561575f578081fd5b60405161010081016001600160401b038111828210171561577c57fe5b6040526157888361532a565b815261579660208401615376565b60208201526157a760408401615376565b6040820152606083013560608201526157c26080840161532a565b60808201526157d360a084016153e5565b60a08201526157e460c084016153e5565b60c08201526157f68460e0850161538c565b60e08201529392505050565b600060208284031215615813578081fd5b8135610a9a81615e48565b60006020828403121561582f578081fd5b8151610a9a81615e48565b600080600080600080600080610100898b031215615856578586fd5b885161586181615e48565b80985050602089015180600f0b8114615878578687fd5b80975050604089015195506060890151945060808901518060060b811461589d578485fd5b60a08a01519094506158ae81615e16565b60c08a015190935063ffffffff811681146158c7578283fd5b91506158d560e08a01615381565b90509295985092959890939650565b600080604083850312156158f6578182fd5b825161590181615e48565b602084015190925061546681615e48565b600080600080600080600060e0888a03121561592c578081fd5b875161593781615e16565b602089015190975061594881615e39565b9550615956604089016153d3565b9450615964606089016153d3565b9350615972608089016153d3565b925061598060a089016153f0565b915060c088015161599081615e2b565b8091505092959891949750929550565b6000602082840312156159b1578081fd5b5051919050565b600080604083850312156159ca578182fd5b505080516020909101519092909150565b600080600080606085870312156159f0578182fd5b843593506020850135925060408501356001600160401b0380821115615a14578384fd5b818701915087601f830112615a27578384fd5b813581811115615a35578485fd5b886020828501011115615a46578485fd5b95989497505060200194505050565b600060208284031215615a66578081fd5b610a9a826153f0565b60020b9052565b6001600160a01b0391909116815260200190565b600060018060a01b038716825260208660020b818401528560020b604084015260018060801b038516606084015260a0608084015283518060a0850152825b81811015615ae55785810183015185820160c001528201615ac9565b81811115615af6578360c083870101525b50601f01601f19169290920160c001979650505050505050565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015615b8557835183529284019291840191600101615b69565b50909695505050505050565b901515815260200190565b60019190910b815260200190565b60029190910b815260200190565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b90815260200190565b918252602082015260400190565b6020808252600790820152660869088be9e86960cb1b604082015260600190565b60208082526006908201526509e84be9e8ab60d31b604082015260600190565b6020808252600790820152662aa1a12fa321ab60c91b604082015260600190565b6020808252601c908201527b506572704d6174683a20696e76657273696f6e206f766572666c6f7760201b604082015260600190565b6020808252600690820152654f425f4f4e4560d01b604082015260600190565b8151815260208083015190820152604080830151908201526060918201516001600160801b03169181019190915260800190565b81516001600160801b0316815260208083015160020b90820152604080830151610120830191615d1390840182615a6f565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525092915050565b81516001600160a01b039081168252602092830151169181019190915260400190565b600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b815160020b8152602080830151908201526040918201519181019190915260600190565b60008582528460208301526060604083015282606083015282846080840137818301608090810191909152601f909201601f191601019392505050565b6001600160a01b038116811461398e57600080fd5b801515811461398e57600080fd5b8060020b811461398e57600080fd5b6001600160801b038116811461398e57600080fd5b62ffffff8116811461398e57600080fdfe53616665436173743a2076616c756520646f65736e27742066697420696e2031323820626974735369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206469766973696f6e206f766572666c6f778be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a264697066735822122052e7270ee17ba94e4c5c58aff237dfb88cb98503489e9c6ab07f56857bd8501f64736f6c63430007060033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/external/abi/perp/PerpV2QuoteToken.json b/external/abi/perp/PerpV2QuoteToken.json index 7dce41daf..22fe78c0a 100644 --- a/external/abi/perp/PerpV2QuoteToken.json +++ b/external/abi/perp/PerpV2QuoteToken.json @@ -448,8 +448,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50611960806100206000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d714610496578063a9059cbb146104c2578063bc5920ba146104ee578063dd62ed3e146104f6578063f52e308e14610524578063f80f5dd51461054a57610137565b806370a0823114610432578063715018a61461045857806378c8cda7146104605780638da5cb5b1461048657806395d89b411461048e57610137565b806323b872dd116100ff57806323b872dd14610261578063313ce5671461029757806339509351146102b55780634cd88b76146102e15780636c8381f81461040e57610137565b806306fdde031461013c578063095ea7b3146101b957806309fd8212146101f957806313af40351461021f57806318160ddd14610247575b600080fd5b610144610570565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360408110156101cf57600080fd5b506001600160a01b038135169060200135610606565b604080519115158252519081900360200190f35b6101e56004803603602081101561020f57600080fd5b50356001600160a01b0316610623565b6102456004803603602081101561023557600080fd5b50356001600160a01b0316610641565b005b61024f61079c565b60408051918252519081900360200190f35b6101e56004803603606081101561027757600080fd5b506001600160a01b038135811691602081013590911690604001356107a2565b61029f610829565b6040805160ff9092168252519081900360200190f35b6101e5600480360360408110156102cb57600080fd5b506001600160a01b038135169060200135610832565b610245600480360360408110156102f757600080fd5b81019060208101813564010000000081111561031257600080fd5b82018360208201111561032457600080fd5b8035906020019184600183028401116401000000008311171561034657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561039957600080fd5b8201836020820111156103ab57600080fd5b803590602001918460018302840111640100000000831117156103cd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610880945050505050565b61041661092e565b604080516001600160a01b039092168252519081900360200190f35b61024f6004803603602081101561044857600080fd5b50356001600160a01b031661093d565b610245610958565b6102456004803603602081101561047657600080fd5b50356001600160a01b0316610a0b565b610416610b04565b610144610b13565b6101e5600480360360408110156104ac57600080fd5b506001600160a01b038135169060200135610b74565b6101e5600480360360408110156104d857600080fd5b506001600160a01b038135169060200135610bdc565b610245610bf0565b61024f6004803603604081101561050c57600080fd5b506001600160a01b0381358116916020013516610cee565b6102456004803603602081101561053a57600080fd5b50356001600160a01b0316610d19565b6102456004803603602081101561056057600080fd5b50356001600160a01b0316610d85565b606a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105fc5780601f106105d1576101008083540402835291602001916105fc565b820191906000526020600020905b8154815290600101906020018083116105df57829003601f168201915b5050505050905090565b600061061a610613610e3d565b8484610e41565b50600192915050565b6001600160a01b031660009081526099602052604090205460ff1690565b610649610e3d565b6001600160a01b031661065a610b04565b6001600160a01b03161461069e576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0381166106e2576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b038281169116141561072e576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b038281169116141561077a576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b60695490565b60006107af848484610f2d565b61081f846107bb610e3d565b61081a85604051806060016040528060288152602001611895602891396001600160a01b038a166000908152606860205260408120906107f9610e3d565b6001600160a01b03168152602081019190915260400160002054919061108a565b610e41565b5060019392505050565b606c5460ff1690565b600061061a61083f610e3d565b8461081a8560686000610850610e3d565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611121565b600054610100900460ff16806108995750610899611182565b806108a7575060005460ff16155b6108e25760405162461bcd60e51b815260040180806020018281038252602e815260200180611867602e913960400191505060405180910390fd5b600054610100900460ff1615801561090d576000805460ff1961ff0019909116610100171660011790555b6109178383611193565b8015610929576000805461ff00191690555b505050565b6034546001600160a01b031690565b6001600160a01b031660009081526067602052604090205490565b610960610e3d565b6001600160a01b0316610971610b04565b6001600160a01b0316146109b5576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b610a13610e3d565b6001600160a01b0316610a24610b04565b6001600160a01b031614610a68576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610a718161093d565b15610aac576040805162461bcd60e51b81526020600482015260066024820152652b2a2fa1272d60d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19169055815192835290517fde8cf212af7ce38b2840785a2768d97ff2dbf3c21b516961cec0061e134c2a1e9281900390910190a150565b6033546001600160a01b031690565b606b8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105fc5780601f106105d1576101008083540402835291602001916105fc565b600061061a610b81610e3d565b8461081a856040518060600160405280602581526020016119066025913960686000610bab610e3d565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061108a565b600061061a610be9610e3d565b8484610f2d565b6034546001600160a01b0316610c35576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610c3d610e3d565b6034546001600160a01b03908116911614610c88576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6001600160a01b03918216600090815260686020908152604080832093909416825291909152205490565b610d21610e3d565b6001600160a01b0316610d32610b04565b6001600160a01b031614610d76576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610d8281600019611232565b50565b610d8d610e3d565b6001600160a01b0316610d9e610b04565b6001600160a01b031614610de2576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19166001179055815192835290517f4790a4adb426ca2345bb5108f6e454eae852a7bf687544cd66a7270dff3a41d69281900390910190a150565b3390565b6001600160a01b038316610e865760405162461bcd60e51b81526004018080602001828103825260248152602001806118e26024913960400191505060405180910390fd5b6001600160a01b038216610ecb5760405162461bcd60e51b815260040180806020018281038252602281526020018061181f6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260686020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610f725760405162461bcd60e51b81526004018080602001828103825260258152602001806118bd6025913960400191505060405180910390fd5b6001600160a01b038216610fb75760405162461bcd60e51b81526004018080602001828103825260238152602001806117fc6023913960400191505060405180910390fd5b610fc2838383611324565b610fff81604051806060016040528060268152602001611841602691396001600160a01b038616600090815260676020526040902054919061108a565b6001600160a01b03808516600090815260676020526040808220939093559084168152205461102e9082611121565b6001600160a01b0380841660008181526067602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156111195760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110de5781810151838201526020016110c6565b50505050905090810190601f16801561110b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561117b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600061118d30611393565b15905090565b600054610100900460ff16806111ac57506111ac611182565b806111ba575060005460ff16155b6111f55760405162461bcd60e51b815260040180806020018281038252602e815260200180611867602e913960400191505060405180910390fd5b600054610100900460ff16158015611220576000805460ff1961ff0019909116610100171660011790555b611228611399565b610917838361149a565b6001600160a01b03821661128d576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61129960008383611324565b6069546112a69082611121565b6069556001600160a01b0382166000908152606760205260409020546112cc9082611121565b6001600160a01b03831660008181526067602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61132f838383610929565b6001600160a01b03831615610929576001600160a01b03831660009081526099602052604090205460ff16610929576040805162461bcd60e51b815260206004820152600560248201526456545f4e5760d81b604482015290519081900360640190fd5b3b151590565b600054610100900460ff16806113b257506113b2611182565b806113c0575060005460ff16155b6113fb5760405162461bcd60e51b815260040180806020018281038252602e815260200180611867602e913960400191505060405180910390fd5b600054610100900460ff16158015611426576000805460ff1961ff0019909116610100171660011790555b61142e611539565b6000611438610e3d565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610d82576000805461ff001916905550565b600054610100900460ff16806114b357506114b3611182565b806114c1575060005460ff16155b6114fc5760405162461bcd60e51b815260040180806020018281038252602e815260200180611867602e913960400191505060405180910390fd5b600054610100900460ff16158015611527576000805460ff1961ff0019909116610100171660011790555b61152f6115e2565b6109178383611682565b600054610100900460ff16806115525750611552611182565b80611560575060005460ff16155b61159b5760405162461bcd60e51b815260040180806020018281038252602e815260200180611867602e913960400191505060405180910390fd5b600054610100900460ff161580156115c6576000805460ff1961ff0019909116610100171660011790555b6115ce6115e2565b8015610d82576000805461ff001916905550565b600054610100900460ff16806115fb57506115fb611182565b80611609575060005460ff16155b6116445760405162461bcd60e51b815260040180806020018281038252602e815260200180611867602e913960400191505060405180910390fd5b600054610100900460ff161580156115ce576000805460ff1961ff0019909116610100171660011790558015610d82576000805461ff001916905550565b600054610100900460ff168061169b575061169b611182565b806116a9575060005460ff16155b6116e45760405162461bcd60e51b815260040180806020018281038252602e815260200180611867602e913960400191505060405180910390fd5b600054610100900460ff1615801561170f576000805460ff1961ff0019909116610100171660011790555b825161172290606a90602086019061175a565b50815161173690606b90602085019061175a565b50606c805460ff191660121790558015610929576000805461ff0019169055505050565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261179057600085556117d6565b82601f106117a957805160ff19168380011785556117d6565b828001600101855582156117d6579182015b828111156117d65782518255916020019190600101906117bb565b506117e29291506117e6565b5090565b5b808211156117e257600081556001016117e756fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b9634142a6495e7213a222135749645aa62374d050e38aed24b88c326c14307964736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d714610496578063a9059cbb146104c2578063bc5920ba146104ee578063dd62ed3e146104f6578063f52e308e14610524578063f80f5dd51461054a57610137565b806370a0823114610432578063715018a61461045857806378c8cda7146104605780638da5cb5b1461048657806395d89b411461048e57610137565b806323b872dd116100ff57806323b872dd14610261578063313ce5671461029757806339509351146102b55780634cd88b76146102e15780636c8381f81461040e57610137565b806306fdde031461013c578063095ea7b3146101b957806309fd8212146101f957806313af40351461021f57806318160ddd14610247575b600080fd5b610144610570565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360408110156101cf57600080fd5b506001600160a01b038135169060200135610606565b604080519115158252519081900360200190f35b6101e56004803603602081101561020f57600080fd5b50356001600160a01b0316610623565b6102456004803603602081101561023557600080fd5b50356001600160a01b0316610641565b005b61024f61079c565b60408051918252519081900360200190f35b6101e56004803603606081101561027757600080fd5b506001600160a01b038135811691602081013590911690604001356107a2565b61029f610829565b6040805160ff9092168252519081900360200190f35b6101e5600480360360408110156102cb57600080fd5b506001600160a01b038135169060200135610832565b610245600480360360408110156102f757600080fd5b81019060208101813564010000000081111561031257600080fd5b82018360208201111561032457600080fd5b8035906020019184600183028401116401000000008311171561034657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561039957600080fd5b8201836020820111156103ab57600080fd5b803590602001918460018302840111640100000000831117156103cd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610880945050505050565b61041661092e565b604080516001600160a01b039092168252519081900360200190f35b61024f6004803603602081101561044857600080fd5b50356001600160a01b031661093d565b610245610958565b6102456004803603602081101561047657600080fd5b50356001600160a01b0316610a0b565b610416610b04565b610144610b13565b6101e5600480360360408110156104ac57600080fd5b506001600160a01b038135169060200135610b74565b6101e5600480360360408110156104d857600080fd5b506001600160a01b038135169060200135610bdc565b610245610bf0565b61024f6004803603604081101561050c57600080fd5b506001600160a01b0381358116916020013516610cee565b6102456004803603602081101561053a57600080fd5b50356001600160a01b0316610d19565b6102456004803603602081101561056057600080fd5b50356001600160a01b0316610d85565b606a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105fc5780601f106105d1576101008083540402835291602001916105fc565b820191906000526020600020905b8154815290600101906020018083116105df57829003601f168201915b5050505050905090565b600061061a610613610e3d565b8484610e41565b50600192915050565b6001600160a01b031660009081526099602052604090205460ff1690565b610649610e3d565b6001600160a01b031661065a610b04565b6001600160a01b03161461069e576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0381166106e2576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b038281169116141561072e576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b038281169116141561077a576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b60695490565b60006107af848484610f2d565b61081f846107bb610e3d565b61081a85604051806060016040528060288152602001611895602891396001600160a01b038a166000908152606860205260408120906107f9610e3d565b6001600160a01b03168152602081019190915260400160002054919061108a565b610e41565b5060019392505050565b606c5460ff1690565b600061061a61083f610e3d565b8461081a8560686000610850610e3d565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611121565b600054610100900460ff16806108995750610899611182565b806108a7575060005460ff16155b6108e25760405162461bcd60e51b815260040180806020018281038252602e815260200180611867602e913960400191505060405180910390fd5b600054610100900460ff1615801561090d576000805460ff1961ff0019909116610100171660011790555b6109178383611193565b8015610929576000805461ff00191690555b505050565b6034546001600160a01b031690565b6001600160a01b031660009081526067602052604090205490565b610960610e3d565b6001600160a01b0316610971610b04565b6001600160a01b0316146109b5576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b610a13610e3d565b6001600160a01b0316610a24610b04565b6001600160a01b031614610a68576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610a718161093d565b15610aac576040805162461bcd60e51b81526020600482015260066024820152652b2a2fa1272d60d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19169055815192835290517fde8cf212af7ce38b2840785a2768d97ff2dbf3c21b516961cec0061e134c2a1e9281900390910190a150565b6033546001600160a01b031690565b606b8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105fc5780601f106105d1576101008083540402835291602001916105fc565b600061061a610b81610e3d565b8461081a856040518060600160405280602581526020016119066025913960686000610bab610e3d565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061108a565b600061061a610be9610e3d565b8484610f2d565b6034546001600160a01b0316610c35576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610c3d610e3d565b6034546001600160a01b03908116911614610c88576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6001600160a01b03918216600090815260686020908152604080832093909416825291909152205490565b610d21610e3d565b6001600160a01b0316610d32610b04565b6001600160a01b031614610d76576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610d8281600019611232565b50565b610d8d610e3d565b6001600160a01b0316610d9e610b04565b6001600160a01b031614610de2576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19166001179055815192835290517f4790a4adb426ca2345bb5108f6e454eae852a7bf687544cd66a7270dff3a41d69281900390910190a150565b3390565b6001600160a01b038316610e865760405162461bcd60e51b81526004018080602001828103825260248152602001806118e26024913960400191505060405180910390fd5b6001600160a01b038216610ecb5760405162461bcd60e51b815260040180806020018281038252602281526020018061181f6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260686020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610f725760405162461bcd60e51b81526004018080602001828103825260258152602001806118bd6025913960400191505060405180910390fd5b6001600160a01b038216610fb75760405162461bcd60e51b81526004018080602001828103825260238152602001806117fc6023913960400191505060405180910390fd5b610fc2838383611324565b610fff81604051806060016040528060268152602001611841602691396001600160a01b038616600090815260676020526040902054919061108a565b6001600160a01b03808516600090815260676020526040808220939093559084168152205461102e9082611121565b6001600160a01b0380841660008181526067602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156111195760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110de5781810151838201526020016110c6565b50505050905090810190601f16801561110b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561117b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600061118d30611393565b15905090565b600054610100900460ff16806111ac57506111ac611182565b806111ba575060005460ff16155b6111f55760405162461bcd60e51b815260040180806020018281038252602e815260200180611867602e913960400191505060405180910390fd5b600054610100900460ff16158015611220576000805460ff1961ff0019909116610100171660011790555b611228611399565b610917838361149a565b6001600160a01b03821661128d576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61129960008383611324565b6069546112a69082611121565b6069556001600160a01b0382166000908152606760205260409020546112cc9082611121565b6001600160a01b03831660008181526067602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61132f838383610929565b6001600160a01b03831615610929576001600160a01b03831660009081526099602052604090205460ff16610929576040805162461bcd60e51b815260206004820152600560248201526456545f4e5760d81b604482015290519081900360640190fd5b3b151590565b600054610100900460ff16806113b257506113b2611182565b806113c0575060005460ff16155b6113fb5760405162461bcd60e51b815260040180806020018281038252602e815260200180611867602e913960400191505060405180910390fd5b600054610100900460ff16158015611426576000805460ff1961ff0019909116610100171660011790555b61142e611539565b6000611438610e3d565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610d82576000805461ff001916905550565b600054610100900460ff16806114b357506114b3611182565b806114c1575060005460ff16155b6114fc5760405162461bcd60e51b815260040180806020018281038252602e815260200180611867602e913960400191505060405180910390fd5b600054610100900460ff16158015611527576000805460ff1961ff0019909116610100171660011790555b61152f6115e2565b6109178383611682565b600054610100900460ff16806115525750611552611182565b80611560575060005460ff16155b61159b5760405162461bcd60e51b815260040180806020018281038252602e815260200180611867602e913960400191505060405180910390fd5b600054610100900460ff161580156115c6576000805460ff1961ff0019909116610100171660011790555b6115ce6115e2565b8015610d82576000805461ff001916905550565b600054610100900460ff16806115fb57506115fb611182565b80611609575060005460ff16155b6116445760405162461bcd60e51b815260040180806020018281038252602e815260200180611867602e913960400191505060405180910390fd5b600054610100900460ff161580156115ce576000805460ff1961ff0019909116610100171660011790558015610d82576000805461ff001916905550565b600054610100900460ff168061169b575061169b611182565b806116a9575060005460ff16155b6116e45760405162461bcd60e51b815260040180806020018281038252602e815260200180611867602e913960400191505060405180910390fd5b600054610100900460ff1615801561170f576000805460ff1961ff0019909116610100171660011790555b825161172290606a90602086019061175a565b50815161173690606b90602085019061175a565b50606c805460ff191660121790558015610929576000805461ff0019169055505050565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261179057600085556117d6565b82601f106117a957805160ff19168380011785556117d6565b828001600101855582156117d6579182015b828111156117d65782518255916020019190600101906117bb565b506117e29291506117e6565b5090565b5b808211156117e257600081556001016117e756fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b9634142a6495e7213a222135749645aa62374d050e38aed24b88c326c14307964736f6c63430007060033", + "bytecode": "0x608060405234801561001057600080fd5b50611910806100206000396000f3fe608060405234801561001057600080fd5b50600436106101075760003560e01c806306fdde031461010c578063095ea7b31461018957806309fd8212146101c957806313af4035146101ef57806318160ddd1461021757806323b872dd14610231578063313ce5671461026757806339509351146102855780634cd88b76146102b15780636c8381f8146103da57806370a08231146103fe578063715018a61461042457806378c8cda71461042c5780638da5cb5b1461045257806395d89b411461045a578063a457c2d714610462578063a9059cbb1461048e578063bc5920ba146104ba578063dd62ed3e146104c2578063f52e308e146104f0578063f80f5dd514610516575b600080fd5b61011461053c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014e578181015183820152602001610136565b50505050905090810190601f16801561017b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b56004803603604081101561019f57600080fd5b506001600160a01b0381351690602001356105d2565b604080519115158252519081900360200190f35b6101b5600480360360208110156101df57600080fd5b50356001600160a01b03166105ef565b6102156004803603602081101561020557600080fd5b50356001600160a01b031661060d565b005b61021f610768565b60408051918252519081900360200190f35b6101b56004803603606081101561024757600080fd5b506001600160a01b0381358116916020810135909116906040013561076e565b61026f6107f5565b6040805160ff9092168252519081900360200190f35b6101b56004803603604081101561029b57600080fd5b506001600160a01b0381351690602001356107fe565b610215600480360360408110156102c757600080fd5b810190602081018135600160201b8111156102e157600080fd5b8201836020820111156102f357600080fd5b803590602001918460018302840111600160201b8311171561031457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561036657600080fd5b82018360208201111561037857600080fd5b803590602001918460018302840111600160201b8311171561039957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061084c945050505050565b6103e26108fa565b604080516001600160a01b039092168252519081900360200190f35b61021f6004803603602081101561041457600080fd5b50356001600160a01b0316610909565b610215610924565b6102156004803603602081101561044257600080fd5b50356001600160a01b03166109c5565b6103e2610abe565b610114610acd565b6101b56004803603604081101561047857600080fd5b506001600160a01b038135169060200135610b2e565b6101b5600480360360408110156104a457600080fd5b506001600160a01b038135169060200135610b96565b610215610baa565b61021f600480360360408110156104d857600080fd5b506001600160a01b0381358116916020013516610c96565b6102156004803603602081101561050657600080fd5b50356001600160a01b0316610cc1565b6102156004803603602081101561052c57600080fd5b50356001600160a01b0316610d2d565b606a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105c85780601f1061059d576101008083540402835291602001916105c8565b820191906000526020600020905b8154815290600101906020018083116105ab57829003601f168201915b5050505050905090565b60006105e66105df610de5565b8484610de9565b50600192915050565b6001600160a01b031660009081526099602052604090205460ff1690565b610615610de5565b6001600160a01b0316610626610abe565b6001600160a01b03161461066a576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0381166106ae576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156106fa576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b0382811691161415610746576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b60695490565b600061077b848484610ed5565b6107eb84610787610de5565b6107e685604051806060016040528060288152602001611805602891396001600160a01b038a166000908152606860205260408120906107c5610de5565b6001600160a01b031681526020810191909152604001600020549190611020565b610de9565b5060019392505050565b606c5460ff1690565b60006105e661080b610de5565b846107e6856068600061081c610de5565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906110b7565b600054610100900460ff16806108655750610865611116565b80610873575060005460ff16155b6108ae5760405162461bcd60e51b815260040180806020018281038252602e8152602001806117d7602e913960400191505060405180910390fd5b600054610100900460ff161580156108d9576000805460ff1961ff0019909116610100171660011790555b6108e38383611127565b80156108f5576000805461ff00191690555b505050565b6034546001600160a01b031690565b6001600160a01b031660009081526067602052604090205490565b61092c610de5565b6001600160a01b031661093d610abe565b6001600160a01b031614610981576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b03169060008051602061182d833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b6109cd610de5565b6001600160a01b03166109de610abe565b6001600160a01b031614610a22576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610a2b81610909565b15610a66576040805162461bcd60e51b81526020600482015260066024820152652b2a2fa1272d60d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19169055815192835290517fde8cf212af7ce38b2840785a2768d97ff2dbf3c21b516961cec0061e134c2a1e9281900390910190a150565b6033546001600160a01b031690565b606b8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105c85780601f1061059d576101008083540402835291602001916105c8565b60006105e6610b3b610de5565b846107e6856040518060600160405280602581526020016118b66025913960686000610b65610de5565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611020565b60006105e6610ba3610de5565b8484610ed5565b6034546001600160a01b0316610bef576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610bf7610de5565b6034546001600160a01b03908116911614610c42576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b03928316929091169060008051602061182d83398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6001600160a01b03918216600090815260686020908152604080832093909416825291909152205490565b610cc9610de5565b6001600160a01b0316610cda610abe565b6001600160a01b031614610d1e576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610d2a816000196111c6565b50565b610d35610de5565b6001600160a01b0316610d46610abe565b6001600160a01b031614610d8a576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19166001179055815192835290517f4790a4adb426ca2345bb5108f6e454eae852a7bf687544cd66a7270dff3a41d69281900390910190a150565b3390565b6001600160a01b038316610e2e5760405162461bcd60e51b81526004018080602001828103825260248152602001806118926024913960400191505060405180910390fd5b6001600160a01b038216610e735760405162461bcd60e51b815260040180806020018281038252602281526020018061178f6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260686020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610f1a5760405162461bcd60e51b815260040180806020018281038252602581526020018061186d6025913960400191505060405180910390fd5b6001600160a01b038216610f5f5760405162461bcd60e51b815260040180806020018281038252602381526020018061176c6023913960400191505060405180910390fd5b610f6a8383836112a6565b610fa7816040518060600160405280602681526020016117b1602691396001600160a01b0386166000908152606760205260409020549190611020565b6001600160a01b038085166000908152606760205260408082209390935590841681522054610fd690826110b7565b6001600160a01b03808416600081815260676020908152604091829020949094558051858152905191939287169260008051602061184d83398151915292918290030190a3505050565b600081848411156110af5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561107457818101518382015260200161105c565b50505050905090810190601f1680156110a15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561110f576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b9392505050565b600061112130611315565b15905090565b600054610100900460ff16806111405750611140611116565b8061114e575060005460ff16155b6111895760405162461bcd60e51b815260040180806020018281038252602e8152602001806117d7602e913960400191505060405180910390fd5b600054610100900460ff161580156111b4576000805460ff1961ff0019909116610100171660011790555b6111bc61131b565b6108e3838361140a565b6001600160a01b038216611221576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61122d600083836112a6565b60695461123a90826110b7565b6069556001600160a01b03821660009081526067602052604090205461126090826110b7565b6001600160a01b038316600081815260676020908152604080832094909455835185815293519293919260008051602061184d8339815191529281900390910190a35050565b6112b18383836108f5565b6001600160a01b038316156108f5576001600160a01b03831660009081526099602052604090205460ff166108f5576040805162461bcd60e51b815260206004820152600560248201526456545f4e5760d81b604482015290519081900360640190fd5b3b151590565b600054610100900460ff16806113345750611334611116565b80611342575060005460ff16155b61137d5760405162461bcd60e51b815260040180806020018281038252602e8152602001806117d7602e913960400191505060405180910390fd5b600054610100900460ff161580156113a8576000805460ff1961ff0019909116610100171660011790555b6113b06114a9565b60006113ba610de5565b603380546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602061182d833981519152908290a3508015610d2a576000805461ff001916905550565b600054610100900460ff16806114235750611423611116565b80611431575060005460ff16155b61146c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806117d7602e913960400191505060405180910390fd5b600054610100900460ff16158015611497576000805460ff1961ff0019909116610100171660011790555b61149f611552565b6108e383836115f2565b600054610100900460ff16806114c257506114c2611116565b806114d0575060005460ff16155b61150b5760405162461bcd60e51b815260040180806020018281038252602e8152602001806117d7602e913960400191505060405180910390fd5b600054610100900460ff16158015611536576000805460ff1961ff0019909116610100171660011790555b61153e611552565b8015610d2a576000805461ff001916905550565b600054610100900460ff168061156b575061156b611116565b80611579575060005460ff16155b6115b45760405162461bcd60e51b815260040180806020018281038252602e8152602001806117d7602e913960400191505060405180910390fd5b600054610100900460ff1615801561153e576000805460ff1961ff0019909116610100171660011790558015610d2a576000805461ff001916905550565b600054610100900460ff168061160b575061160b611116565b80611619575060005460ff16155b6116545760405162461bcd60e51b815260040180806020018281038252602e8152602001806117d7602e913960400191505060405180910390fd5b600054610100900460ff1615801561167f576000805460ff1961ff0019909116610100171660011790555b825161169290606a9060208601906116ca565b5081516116a690606b9060208501906116ca565b50606c805460ff1916601217905580156108f5576000805461ff0019169055505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826117005760008555611746565b82601f1061171957805160ff1916838001178555611746565b82800160010185558215611746579182015b8281111561174657825182559160200191906001019061172b565b50611752929150611756565b5090565b5b80821115611752576000815560010161175756fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220db774a94579be82e34d2c20f22285dad2be0c63342e3f1a43d866aaa8f39f14664736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101075760003560e01c806306fdde031461010c578063095ea7b31461018957806309fd8212146101c957806313af4035146101ef57806318160ddd1461021757806323b872dd14610231578063313ce5671461026757806339509351146102855780634cd88b76146102b15780636c8381f8146103da57806370a08231146103fe578063715018a61461042457806378c8cda71461042c5780638da5cb5b1461045257806395d89b411461045a578063a457c2d714610462578063a9059cbb1461048e578063bc5920ba146104ba578063dd62ed3e146104c2578063f52e308e146104f0578063f80f5dd514610516575b600080fd5b61011461053c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014e578181015183820152602001610136565b50505050905090810190601f16801561017b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b56004803603604081101561019f57600080fd5b506001600160a01b0381351690602001356105d2565b604080519115158252519081900360200190f35b6101b5600480360360208110156101df57600080fd5b50356001600160a01b03166105ef565b6102156004803603602081101561020557600080fd5b50356001600160a01b031661060d565b005b61021f610768565b60408051918252519081900360200190f35b6101b56004803603606081101561024757600080fd5b506001600160a01b0381358116916020810135909116906040013561076e565b61026f6107f5565b6040805160ff9092168252519081900360200190f35b6101b56004803603604081101561029b57600080fd5b506001600160a01b0381351690602001356107fe565b610215600480360360408110156102c757600080fd5b810190602081018135600160201b8111156102e157600080fd5b8201836020820111156102f357600080fd5b803590602001918460018302840111600160201b8311171561031457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561036657600080fd5b82018360208201111561037857600080fd5b803590602001918460018302840111600160201b8311171561039957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061084c945050505050565b6103e26108fa565b604080516001600160a01b039092168252519081900360200190f35b61021f6004803603602081101561041457600080fd5b50356001600160a01b0316610909565b610215610924565b6102156004803603602081101561044257600080fd5b50356001600160a01b03166109c5565b6103e2610abe565b610114610acd565b6101b56004803603604081101561047857600080fd5b506001600160a01b038135169060200135610b2e565b6101b5600480360360408110156104a457600080fd5b506001600160a01b038135169060200135610b96565b610215610baa565b61021f600480360360408110156104d857600080fd5b506001600160a01b0381358116916020013516610c96565b6102156004803603602081101561050657600080fd5b50356001600160a01b0316610cc1565b6102156004803603602081101561052c57600080fd5b50356001600160a01b0316610d2d565b606a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105c85780601f1061059d576101008083540402835291602001916105c8565b820191906000526020600020905b8154815290600101906020018083116105ab57829003601f168201915b5050505050905090565b60006105e66105df610de5565b8484610de9565b50600192915050565b6001600160a01b031660009081526099602052604090205460ff1690565b610615610de5565b6001600160a01b0316610626610abe565b6001600160a01b03161461066a576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0381166106ae576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156106fa576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b0382811691161415610746576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b60695490565b600061077b848484610ed5565b6107eb84610787610de5565b6107e685604051806060016040528060288152602001611805602891396001600160a01b038a166000908152606860205260408120906107c5610de5565b6001600160a01b031681526020810191909152604001600020549190611020565b610de9565b5060019392505050565b606c5460ff1690565b60006105e661080b610de5565b846107e6856068600061081c610de5565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906110b7565b600054610100900460ff16806108655750610865611116565b80610873575060005460ff16155b6108ae5760405162461bcd60e51b815260040180806020018281038252602e8152602001806117d7602e913960400191505060405180910390fd5b600054610100900460ff161580156108d9576000805460ff1961ff0019909116610100171660011790555b6108e38383611127565b80156108f5576000805461ff00191690555b505050565b6034546001600160a01b031690565b6001600160a01b031660009081526067602052604090205490565b61092c610de5565b6001600160a01b031661093d610abe565b6001600160a01b031614610981576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b03169060008051602061182d833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b6109cd610de5565b6001600160a01b03166109de610abe565b6001600160a01b031614610a22576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610a2b81610909565b15610a66576040805162461bcd60e51b81526020600482015260066024820152652b2a2fa1272d60d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19169055815192835290517fde8cf212af7ce38b2840785a2768d97ff2dbf3c21b516961cec0061e134c2a1e9281900390910190a150565b6033546001600160a01b031690565b606b8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105c85780601f1061059d576101008083540402835291602001916105c8565b60006105e6610b3b610de5565b846107e6856040518060600160405280602581526020016118b66025913960686000610b65610de5565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611020565b60006105e6610ba3610de5565b8484610ed5565b6034546001600160a01b0316610bef576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610bf7610de5565b6034546001600160a01b03908116911614610c42576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b03928316929091169060008051602061182d83398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6001600160a01b03918216600090815260686020908152604080832093909416825291909152205490565b610cc9610de5565b6001600160a01b0316610cda610abe565b6001600160a01b031614610d1e576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610d2a816000196111c6565b50565b610d35610de5565b6001600160a01b0316610d46610abe565b6001600160a01b031614610d8a576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19166001179055815192835290517f4790a4adb426ca2345bb5108f6e454eae852a7bf687544cd66a7270dff3a41d69281900390910190a150565b3390565b6001600160a01b038316610e2e5760405162461bcd60e51b81526004018080602001828103825260248152602001806118926024913960400191505060405180910390fd5b6001600160a01b038216610e735760405162461bcd60e51b815260040180806020018281038252602281526020018061178f6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260686020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610f1a5760405162461bcd60e51b815260040180806020018281038252602581526020018061186d6025913960400191505060405180910390fd5b6001600160a01b038216610f5f5760405162461bcd60e51b815260040180806020018281038252602381526020018061176c6023913960400191505060405180910390fd5b610f6a8383836112a6565b610fa7816040518060600160405280602681526020016117b1602691396001600160a01b0386166000908152606760205260409020549190611020565b6001600160a01b038085166000908152606760205260408082209390935590841681522054610fd690826110b7565b6001600160a01b03808416600081815260676020908152604091829020949094558051858152905191939287169260008051602061184d83398151915292918290030190a3505050565b600081848411156110af5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561107457818101518382015260200161105c565b50505050905090810190601f1680156110a15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561110f576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b9392505050565b600061112130611315565b15905090565b600054610100900460ff16806111405750611140611116565b8061114e575060005460ff16155b6111895760405162461bcd60e51b815260040180806020018281038252602e8152602001806117d7602e913960400191505060405180910390fd5b600054610100900460ff161580156111b4576000805460ff1961ff0019909116610100171660011790555b6111bc61131b565b6108e3838361140a565b6001600160a01b038216611221576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61122d600083836112a6565b60695461123a90826110b7565b6069556001600160a01b03821660009081526067602052604090205461126090826110b7565b6001600160a01b038316600081815260676020908152604080832094909455835185815293519293919260008051602061184d8339815191529281900390910190a35050565b6112b18383836108f5565b6001600160a01b038316156108f5576001600160a01b03831660009081526099602052604090205460ff166108f5576040805162461bcd60e51b815260206004820152600560248201526456545f4e5760d81b604482015290519081900360640190fd5b3b151590565b600054610100900460ff16806113345750611334611116565b80611342575060005460ff16155b61137d5760405162461bcd60e51b815260040180806020018281038252602e8152602001806117d7602e913960400191505060405180910390fd5b600054610100900460ff161580156113a8576000805460ff1961ff0019909116610100171660011790555b6113b06114a9565b60006113ba610de5565b603380546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602061182d833981519152908290a3508015610d2a576000805461ff001916905550565b600054610100900460ff16806114235750611423611116565b80611431575060005460ff16155b61146c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806117d7602e913960400191505060405180910390fd5b600054610100900460ff16158015611497576000805460ff1961ff0019909116610100171660011790555b61149f611552565b6108e383836115f2565b600054610100900460ff16806114c257506114c2611116565b806114d0575060005460ff16155b61150b5760405162461bcd60e51b815260040180806020018281038252602e8152602001806117d7602e913960400191505060405180910390fd5b600054610100900460ff16158015611536576000805460ff1961ff0019909116610100171660011790555b61153e611552565b8015610d2a576000805461ff001916905550565b600054610100900460ff168061156b575061156b611116565b80611579575060005460ff16155b6115b45760405162461bcd60e51b815260040180806020018281038252602e8152602001806117d7602e913960400191505060405180910390fd5b600054610100900460ff1615801561153e576000805460ff1961ff0019909116610100171660011790558015610d2a576000805461ff001916905550565b600054610100900460ff168061160b575061160b611116565b80611619575060005460ff16155b6116545760405162461bcd60e51b815260040180806020018281038252602e8152602001806117d7602e913960400191505060405180910390fd5b600054610100900460ff1615801561167f576000805460ff1961ff0019909116610100171660011790555b825161169290606a9060208601906116ca565b5081516116a690606b9060208501906116ca565b50606c805460ff1916601217905580156108f5576000805461ff0019169055505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826117005760008555611746565b82601f1061171957805160ff1916838001178555611746565b82800160010185558215611746579182015b8281111561174657825182559160200191906001019061172b565b50611752929150611756565b5090565b5b80821115611752576000815560010161175756fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220db774a94579be82e34d2c20f22285dad2be0c63342e3f1a43d866aaa8f39f14664736f6c63430007060033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/external/abi/perp/PerpV2Vault.json b/external/abi/perp/PerpV2Vault.json index 36af664b0..2d29715c3 100644 --- a/external/abi/perp/PerpV2Vault.json +++ b/external/abi/perp/PerpV2Vault.json @@ -187,6 +187,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "getClearingHouse", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getClearingHouseConfig", @@ -395,6 +408,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "clearingHouseArg", + "type": "address" + } + ], + "name": "setClearingHouse", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -467,8 +493,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061281f806100206000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80636c8381f8116100de578063c399944411610097578063f3fef3a311610071578063f3fef3a3146103b4578063f807cd22146103e0578063f8b2cb4f146103e8578063f8c8765e1461040e57610173565b8063c399944414610360578063ce1b815f14610386578063da7422281461038e57610173565b80636c8381f814610330578063715018a6146103385780638456cb59146103405780638da5cb5b14610348578063aa2a829414610350578063bc5920ba1461035857610173565b80633ffd1303116101305780633ffd13031461020c57806347e7ef241461023d578063486ff0cd14610269578063572b6c05146102e65780635c975abb146103205780636896fabf1461032857610173565b806312803c7d1461017857806313af40351461019c578063158626f7146101c4578063313ce567146101cc57806334ce998a146101ea5780633f4ba83a14610204575b600080fd5b61018061044c565b604080516001600160a01b039092168252519081900360200190f35b6101c2600480360360208110156101b257600080fd5b50356001600160a01b0316610462565b005b6101806105bd565b6101d46105cd565b6040805160ff9092168252519081900360200190f35b6101f26105d7565b60408051918252519081900360200190f35b6101c26105de565b6101f26004803603604081101561022257600080fd5b5080356001600160a01b0316906020013562ffffff16610645565b6101c26004803603604081101561025357600080fd5b506001600160a01b0381351690602001356107e5565b610271610bc5565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ab578181015183820152602001610293565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61030c600480360360208110156102fc57600080fd5b50356001600160a01b0316610be4565b604080519115158252519081900360200190f35b61030c610bf8565b610180610c01565b610180610c11565b6101c2610c20565b6101c2610cd3565b610180610d38565b610180610d47565b6101c2610d57565b6101f26004803603602081101561037657600080fd5b50356001600160a01b0316610e55565b610180610ef3565b6101c2600480360360208110156103a457600080fd5b50356001600160a01b0316610f02565b6101c2600480360360408110156103ca57600080fd5b506001600160a01b038135169060200135610fb6565b6101806113e0565b6101f2600480360360208110156103fe57600080fd5b50356001600160a01b03166113f0565b6101c26004803603608081101561042457600080fd5b506001600160a01b038135811691602081013582169160408201358116916060013516611423565b6101305461010090046001600160a01b03165b90565b61046a61174d565b6001600160a01b031661047b610d38565b6001600160a01b0316146104bf576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610503576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6065546001600160a01b038281169116141561054f576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6066546001600160a01b038281169116141561059b576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b606680546001600160a01b0319166001600160a01b0392909216919091179055565b610133546001600160a01b031690565b6101305460ff1690565b6101355490565b6105e661174d565b6001600160a01b03166105f7610d38565b6001600160a01b03161461063b576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61064361175c565b565b61013454604080516380f57f1160e01b81526001600160a01b0385811660048301529151600093849316916380f57f11916024808301926020929190829003018186803b15801561069557600080fd5b505afa1580156106a9573d6000803e3d6000fd5b505050506040513d60208110156106bf57600080fd5b5051610132546040805163c5bba90f60e01b81526001600160a01b03888116600483015282519495506000948594919091169263c5bba90f9260248082019391829003018186803b15801561071357600080fd5b505afa158015610727573d6000803e3d6000fd5b505050506040513d604081101561073d57600080fd5b50805160209091015161013054919350915060009061077c9061076d9060ff1661076786886117fc565b90611868565b610776896113f0565b9061187e565b6101305490915060009061079f9061079890859060ff16611868565b839061187e565b905060006107ad89896118e3565b610130549091506107d8906107c89060ff1661076784611973565b6107d285856119bf565b906117fc565b9998505050505050505050565b6107ed610bf8565b15610832576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6002600154141561088a576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001556101305482906001600160a01b0380831661010090920416146108e1576040805162461bcd60e51b81526020600482015260056024820152641597d3d4d560da1b604482015290519081900360640190fd5b60006108eb61174d565b905061090081856108fb86611973565b6119d5565b6000846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561094f57600080fd5b505afa158015610963573d6000803e3d6000fd5b505050506040513d602081101561097957600080fd5b5051905061098985833087611a38565b83610a0d82876001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156109db57600080fd5b505afa1580156109ef573d6000803e3d6000fd5b505050506040513d6020811015610a0557600080fd5b505190611a98565b14610a47576040805162461bcd60e51b8152602060048201526005602482015264565f49424160d81b604482015290519081900360640190fd5b61013154604080516385eacc7760e01b815290516000926001600160a01b0316916385eacc77916004808301926020929190829003018186803b158015610a8d57600080fd5b505afa158015610aa1573d6000803e3d6000fd5b505050506040513d6020811015610ab757600080fd5b5051604080516370a0823160e01b8152306004820152905191925082916001600160a01b038916916370a08231916024808301926020929190829003018186803b158015610b0457600080fd5b505afa158015610b18573d6000803e3d6000fd5b505050506040513d6020811015610b2e57600080fd5b50511115610b6e576040805162461bcd60e51b8152602060048201526008602482015267565f47545354424360c01b604482015290519081900360640190fd5b826001600160a01b0316866001600160a01b03167f8752a472e571a816aea92eec8dae9baf628e840f4929fbcc2d155e6233ff68a7876040518082815260200191505060405180910390a350506001805550505050565b6040805180820190915260058152640322e302e360dc1b602082015290565b60fd546001600160a01b0390811691161490565b60995460ff1690565b610132546001600160a01b031690565b6066546001600160a01b031690565b610c2861174d565b6001600160a01b0316610c39610d38565b6001600160a01b031614610c7d576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606580546001600160a01b0319908116909155606680549091169055565b610cdb61174d565b6001600160a01b0316610cec610d38565b6001600160a01b031614610d30576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610643611af5565b6065546001600160a01b031690565b610131546001600160a01b031690565b6066546001600160a01b0316610d9c576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610da461174d565b6066546001600160a01b03908116911614610def576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6066546065546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360668054606580546001600160a01b03199081166001600160a01b03841617909155169055565b6000610eed610ee8610ee18461013160009054906101000a90046001600160a01b03166001600160a01b031663543ce73a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb057600080fd5b505afa158015610ec4573d6000803e3d6000fd5b505050506040513d6020811015610eda57600080fd5b5051610645565b6000611b78565b611b88565b92915050565b60fd546001600160a01b031690565b610f0a61174d565b6001600160a01b0316610f1b610d38565b6001600160a01b031614610f5f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610f71816001600160a01b0316611bdf565b610faa576040805162461bcd60e51b8152602060048201526005602482015264565f414e4360d81b604482015290519081900360640190fd5b610fb381611be5565b50565b610fbe610bf8565b15611003576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6002600154141561105b576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001556101305482906001600160a01b0380831661010090920416146110b2576040805162461bcd60e51b81526020600482015260056024820152641597d3d4d560da1b604482015290519081900360640190fd5b60006110bc61174d565b61013454604080516375cdc89760e11b81526001600160a01b038085166004830152915193945091169163eb9b912e9160248082019260009290919082900301818387803b15801561110d57600080fd5b505af1158015611121573d6000803e3d6000fd5b5050610132546040805163fd6ceee560e01b81526001600160a01b03868116600483015291516000955091909216925063fd6ceee59160248082019260209290919082900301818787803b15801561117857600080fd5b505af115801561118c573d6000803e3d6000fd5b505050506040513d60208110156111a257600080fd5b50516101315460408051632a1e739d60e11b815290519293506000926111f69286926001600160a01b039091169163543ce73a91600480820192602092909190829003018186803b158015610eb057600080fd5b905061120185611973565b610130546112179061079890859060ff16611868565b1215611253576040805162461bcd60e51b8152602060048201526006602482015265565f4e45464360d01b604482015290519081900360640190fd5b6000866001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156112a257600080fd5b505afa1580156112b6573d6000803e3d6000fd5b505050506040513d60208110156112cc57600080fd5b505190508581101561134d57610133546040805163317afabb60e21b815283890360048201819052915191926001600160a01b03169163c5ebeaec9160248082019260009290919082900301818387803b15801561132957600080fd5b505af115801561133d573d6000803e3d6000fd5b5050610135805490930190925550505b6101305461137d90859089906108fb906113789061136f90899060ff16611868565b6107d28c611973565b611c39565b611388878588611c6e565b836001600160a01b0316876001600160a01b03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb886040518082815260200191505060405180910390a35050600180555050505050565b610134546001600160a01b031690565b6001600160a01b039081166000908152610136602090815260408083206101305461010090049094168352929052205490565b600054610100900460ff168061143c575061143c611cc5565b8061144a575060005460ff16155b6114855760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff161580156114b0576000805460ff1961ff0019909116610100171660011790555b6000856001600160a01b03166321df0da76040518163ffffffff1660e01b815260040160206040518083038186803b1580156114eb57600080fd5b505afa1580156114ff573d6000803e3d6000fd5b505050506040513d602081101561151557600080fd5b50516040805163313ce56760e01b815290519192506000916001600160a01b0384169163313ce567916004808301926020929190829003018186803b15801561155d57600080fd5b505afa158015611571573d6000803e3d6000fd5b505050506040513d602081101561158757600080fd5b50519050601260ff821611156115cd576040805162461bcd60e51b81526020600482015260066024820152651597d254d51160d21b604482015290519081900360640190fd5b6115df866001600160a01b0316611bdf565b61161a576040805162461bcd60e51b8152602060048201526007602482015266565f4348434e4360c81b604482015290519081900360640190fd5b61162c856001600160a01b0316611bdf565b611666576040805162461bcd60e51b8152602060048201526006602482015265565f41424e4360d01b604482015290519081900360640190fd5b611678846001600160a01b0316611bdf565b6116b1576040805162461bcd60e51b8152602060048201526005602482015264565f454e4360d81b604482015290519081900360640190fd5b6116b9611cd6565b6116c1611d7f565b610130805460ff191660ff9290921691909117610100600160a81b0319166101006001600160a01b039384160217905561013380546001600160a01b031990811688841617909155610131805482168784161790556101328054821686841617905561013480549091169184169190911790558015611746576000805461ff00191690555b5050505050565b6000611757611e1c565b905090565b611764610bf8565b6117ac576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6099805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6117df61174d565b604080516001600160a01b039092168252519081900360200190a1565b60008183038183128015906118115750838113155b80611826575060008312801561182657508381135b6118615760405162461bcd60e51b815260040180806020018281038252602481526020018061279c6024913960400191505060405180910390fd5b9392505050565b60006118618360ff601285900316600a0a611e4c565b60008282018183128015906118935750838112155b806118a857506000831280156118a857508381125b6118615760405162461bcd60e51b81526004018080602001828103825260218152602001806126de6021913960400191505060405180910390fd5b610132546040805163293a507760e01b81526001600160a01b03858116600483015291516000938493169163293a5077916024808301926020929190829003018186803b15801561193357600080fd5b505afa158015611947573d6000803e3d6000fd5b505050506040513d602081101561195d57600080fd5b5051905061196b8184611f04565b949350505050565b60006001600160ff1b038211156119bb5760405162461bcd60e51b81526004018080602001828103825260288152602001806127746028913960400191505060405180910390fd5b5090565b60008183126119ce5781611861565b5090919050565b6001600160a01b0380841660009081526101366020908152604080832093861683529290522054611a06908261187e565b6001600160a01b0393841660009081526101366020908152604080832095909616825293909352929091209190915550565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611a92908590611f19565b50505050565b600082821115611aef576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b611afd610bf8565b15611b42576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6099805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586117df61174d565b6000818312156119ce5781611861565b6000808212156119bb576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b3b151590565b60fd80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fa4388ecc389b1390354ae0c65a856c0d7dd4fb648419f5d3ac0b99e38f46fd119181900360200190a150565b6000600160ff1b8213611c675760405162461bcd60e51b8152600401611c5e906126a6565b60405180910390fd5b5060000390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611cc0908490611f19565b505050565b6000611cd030611bdf565b15905090565b600054610100900460ff1680611cef5750611cef611cc5565b80611cfd575060005460ff16155b611d385760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff16158015611d63576000805460ff1961ff0019909116610100171660011790555b611d6b611fca565b8015610fb3576000805461ff001916905550565b600054610100900460ff1680611d985750611d98611cc5565b80611da6575060005460ff16155b611de15760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff16158015611e0c576000805460ff1961ff0019909116610100171660011790555b611e1461206f565b611d6b612170565b600060143610801590611e335750611e3333610be4565b15611e47575060131936013560601c61045f565b503390565b600081611ea0576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b81600019148015611eb45750600160ff1b83145b15611ef05760405162461bcd60e51b81526004018080602001828103825260218152602001806127536021913960400191505060405180910390fd5b6000828481611efb57fe5b05949350505050565b6000611861838362ffffff16620f424061220d565b6000611f6e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166122bc9092919063ffffffff16565b805190915015611cc057808060200190516020811015611f8d57600080fd5b5051611cc05760405162461bcd60e51b815260040180806020018281038252602a8152602001806127c0602a913960400191505060405180910390fd5b600054610100900460ff1680611fe35750611fe3611cc5565b80611ff1575060005460ff16155b61202c5760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff16158015612057576000805460ff1961ff0019909116610100171660011790555b600180558015610fb3576000805461ff001916905550565b600054610100900460ff16806120885750612088611cc5565b80612096575060005460ff16155b6120d15760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff161580156120fc576000805460ff1961ff0019909116610100171660011790555b6121046122cb565b600061210e61174d565b606580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610fb3576000805461ff001916905550565b600054610100900460ff16806121895750612189611cc5565b80612197575060005460ff16155b6121d25760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff161580156121fd576000805460ff1961ff0019909116610100171660011790555b61220561235c565b611d6b6123fc565b6000808060001985870986860292508281109083900303905080612243576000841161223857600080fd5b508290049050611861565b80841161224f57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b606061196b84846000856124a7565b600054610100900460ff16806122e457506122e4611cc5565b806122f2575060005460ff16155b61232d5760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff16158015612358576000805460ff1961ff0019909116610100171660011790555b611d6b5b600054610100900460ff16806123755750612375611cc5565b80612383575060005460ff16155b6123be5760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff16158015611d6b576000805460ff1961ff0019909116610100171660011790558015610fb3576000805461ff001916905550565b600054610100900460ff16806124155750612415611cc5565b80612423575060005460ff16155b61245e5760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff16158015612489576000805460ff1961ff0019909116610100171660011790555b6099805460ff191690558015610fb3576000805461ff001916905550565b6060824710156124e85760405162461bcd60e51b81526004018080602001828103825260268152602001806126ff6026913960400191505060405180910390fd5b6124f185611bdf565b612542576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106125805780518252601f199092019160209182019101612561565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146125e2576040519150601f19603f3d011682016040523d82523d6000602084013e6125e7565b606091505b50915091506125f7828286612602565b979650505050505050565b60608315612611575081611861565b8251156126215782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561266b578181015183820152602001612653565b50505050905090810190601f1680156126985780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f770000000060408201526060019056fe5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206469766973696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212209cd268db44e6075960fb0ae6dffeaf1a2fd22bf76f544ce86773dabd450b96fd64736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101735760003560e01c80636c8381f8116100de578063c399944411610097578063f3fef3a311610071578063f3fef3a3146103b4578063f807cd22146103e0578063f8b2cb4f146103e8578063f8c8765e1461040e57610173565b8063c399944414610360578063ce1b815f14610386578063da7422281461038e57610173565b80636c8381f814610330578063715018a6146103385780638456cb59146103405780638da5cb5b14610348578063aa2a829414610350578063bc5920ba1461035857610173565b80633ffd1303116101305780633ffd13031461020c57806347e7ef241461023d578063486ff0cd14610269578063572b6c05146102e65780635c975abb146103205780636896fabf1461032857610173565b806312803c7d1461017857806313af40351461019c578063158626f7146101c4578063313ce567146101cc57806334ce998a146101ea5780633f4ba83a14610204575b600080fd5b61018061044c565b604080516001600160a01b039092168252519081900360200190f35b6101c2600480360360208110156101b257600080fd5b50356001600160a01b0316610462565b005b6101806105bd565b6101d46105cd565b6040805160ff9092168252519081900360200190f35b6101f26105d7565b60408051918252519081900360200190f35b6101c26105de565b6101f26004803603604081101561022257600080fd5b5080356001600160a01b0316906020013562ffffff16610645565b6101c26004803603604081101561025357600080fd5b506001600160a01b0381351690602001356107e5565b610271610bc5565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ab578181015183820152602001610293565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61030c600480360360208110156102fc57600080fd5b50356001600160a01b0316610be4565b604080519115158252519081900360200190f35b61030c610bf8565b610180610c01565b610180610c11565b6101c2610c20565b6101c2610cd3565b610180610d38565b610180610d47565b6101c2610d57565b6101f26004803603602081101561037657600080fd5b50356001600160a01b0316610e55565b610180610ef3565b6101c2600480360360208110156103a457600080fd5b50356001600160a01b0316610f02565b6101c2600480360360408110156103ca57600080fd5b506001600160a01b038135169060200135610fb6565b6101806113e0565b6101f2600480360360208110156103fe57600080fd5b50356001600160a01b03166113f0565b6101c26004803603608081101561042457600080fd5b506001600160a01b038135811691602081013582169160408201358116916060013516611423565b6101305461010090046001600160a01b03165b90565b61046a61174d565b6001600160a01b031661047b610d38565b6001600160a01b0316146104bf576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610503576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6065546001600160a01b038281169116141561054f576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6066546001600160a01b038281169116141561059b576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b606680546001600160a01b0319166001600160a01b0392909216919091179055565b610133546001600160a01b031690565b6101305460ff1690565b6101355490565b6105e661174d565b6001600160a01b03166105f7610d38565b6001600160a01b03161461063b576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61064361175c565b565b61013454604080516380f57f1160e01b81526001600160a01b0385811660048301529151600093849316916380f57f11916024808301926020929190829003018186803b15801561069557600080fd5b505afa1580156106a9573d6000803e3d6000fd5b505050506040513d60208110156106bf57600080fd5b5051610132546040805163c5bba90f60e01b81526001600160a01b03888116600483015282519495506000948594919091169263c5bba90f9260248082019391829003018186803b15801561071357600080fd5b505afa158015610727573d6000803e3d6000fd5b505050506040513d604081101561073d57600080fd5b50805160209091015161013054919350915060009061077c9061076d9060ff1661076786886117fc565b90611868565b610776896113f0565b9061187e565b6101305490915060009061079f9061079890859060ff16611868565b839061187e565b905060006107ad89896118e3565b610130549091506107d8906107c89060ff1661076784611973565b6107d285856119bf565b906117fc565b9998505050505050505050565b6107ed610bf8565b15610832576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6002600154141561088a576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001556101305482906001600160a01b0380831661010090920416146108e1576040805162461bcd60e51b81526020600482015260056024820152641597d3d4d560da1b604482015290519081900360640190fd5b60006108eb61174d565b905061090081856108fb86611973565b6119d5565b6000846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561094f57600080fd5b505afa158015610963573d6000803e3d6000fd5b505050506040513d602081101561097957600080fd5b5051905061098985833087611a38565b83610a0d82876001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156109db57600080fd5b505afa1580156109ef573d6000803e3d6000fd5b505050506040513d6020811015610a0557600080fd5b505190611a98565b14610a47576040805162461bcd60e51b8152602060048201526005602482015264565f49424160d81b604482015290519081900360640190fd5b61013154604080516385eacc7760e01b815290516000926001600160a01b0316916385eacc77916004808301926020929190829003018186803b158015610a8d57600080fd5b505afa158015610aa1573d6000803e3d6000fd5b505050506040513d6020811015610ab757600080fd5b5051604080516370a0823160e01b8152306004820152905191925082916001600160a01b038916916370a08231916024808301926020929190829003018186803b158015610b0457600080fd5b505afa158015610b18573d6000803e3d6000fd5b505050506040513d6020811015610b2e57600080fd5b50511115610b6e576040805162461bcd60e51b8152602060048201526008602482015267565f47545354424360c01b604482015290519081900360640190fd5b826001600160a01b0316866001600160a01b03167f8752a472e571a816aea92eec8dae9baf628e840f4929fbcc2d155e6233ff68a7876040518082815260200191505060405180910390a350506001805550505050565b6040805180820190915260058152640322e302e360dc1b602082015290565b60fd546001600160a01b0390811691161490565b60995460ff1690565b610132546001600160a01b031690565b6066546001600160a01b031690565b610c2861174d565b6001600160a01b0316610c39610d38565b6001600160a01b031614610c7d576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606580546001600160a01b0319908116909155606680549091169055565b610cdb61174d565b6001600160a01b0316610cec610d38565b6001600160a01b031614610d30576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610643611af5565b6065546001600160a01b031690565b610131546001600160a01b031690565b6066546001600160a01b0316610d9c576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610da461174d565b6066546001600160a01b03908116911614610def576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6066546065546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360668054606580546001600160a01b03199081166001600160a01b03841617909155169055565b6000610eed610ee8610ee18461013160009054906101000a90046001600160a01b03166001600160a01b031663543ce73a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb057600080fd5b505afa158015610ec4573d6000803e3d6000fd5b505050506040513d6020811015610eda57600080fd5b5051610645565b6000611b78565b611b88565b92915050565b60fd546001600160a01b031690565b610f0a61174d565b6001600160a01b0316610f1b610d38565b6001600160a01b031614610f5f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610f71816001600160a01b0316611bdf565b610faa576040805162461bcd60e51b8152602060048201526005602482015264565f414e4360d81b604482015290519081900360640190fd5b610fb381611be5565b50565b610fbe610bf8565b15611003576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6002600154141561105b576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001556101305482906001600160a01b0380831661010090920416146110b2576040805162461bcd60e51b81526020600482015260056024820152641597d3d4d560da1b604482015290519081900360640190fd5b60006110bc61174d565b61013454604080516375cdc89760e11b81526001600160a01b038085166004830152915193945091169163eb9b912e9160248082019260009290919082900301818387803b15801561110d57600080fd5b505af1158015611121573d6000803e3d6000fd5b5050610132546040805163fd6ceee560e01b81526001600160a01b03868116600483015291516000955091909216925063fd6ceee59160248082019260209290919082900301818787803b15801561117857600080fd5b505af115801561118c573d6000803e3d6000fd5b505050506040513d60208110156111a257600080fd5b50516101315460408051632a1e739d60e11b815290519293506000926111f69286926001600160a01b039091169163543ce73a91600480820192602092909190829003018186803b158015610eb057600080fd5b905061120185611973565b610130546112179061079890859060ff16611868565b1215611253576040805162461bcd60e51b8152602060048201526006602482015265565f4e45464360d01b604482015290519081900360640190fd5b6000866001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156112a257600080fd5b505afa1580156112b6573d6000803e3d6000fd5b505050506040513d60208110156112cc57600080fd5b505190508581101561134d57610133546040805163317afabb60e21b815283890360048201819052915191926001600160a01b03169163c5ebeaec9160248082019260009290919082900301818387803b15801561132957600080fd5b505af115801561133d573d6000803e3d6000fd5b5050610135805490930190925550505b6101305461137d90859089906108fb906113789061136f90899060ff16611868565b6107d28c611973565b611c39565b611388878588611c6e565b836001600160a01b0316876001600160a01b03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb886040518082815260200191505060405180910390a35050600180555050505050565b610134546001600160a01b031690565b6001600160a01b039081166000908152610136602090815260408083206101305461010090049094168352929052205490565b600054610100900460ff168061143c575061143c611cc5565b8061144a575060005460ff16155b6114855760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff161580156114b0576000805460ff1961ff0019909116610100171660011790555b6000856001600160a01b03166321df0da76040518163ffffffff1660e01b815260040160206040518083038186803b1580156114eb57600080fd5b505afa1580156114ff573d6000803e3d6000fd5b505050506040513d602081101561151557600080fd5b50516040805163313ce56760e01b815290519192506000916001600160a01b0384169163313ce567916004808301926020929190829003018186803b15801561155d57600080fd5b505afa158015611571573d6000803e3d6000fd5b505050506040513d602081101561158757600080fd5b50519050601260ff821611156115cd576040805162461bcd60e51b81526020600482015260066024820152651597d254d51160d21b604482015290519081900360640190fd5b6115df866001600160a01b0316611bdf565b61161a576040805162461bcd60e51b8152602060048201526007602482015266565f4348434e4360c81b604482015290519081900360640190fd5b61162c856001600160a01b0316611bdf565b611666576040805162461bcd60e51b8152602060048201526006602482015265565f41424e4360d01b604482015290519081900360640190fd5b611678846001600160a01b0316611bdf565b6116b1576040805162461bcd60e51b8152602060048201526005602482015264565f454e4360d81b604482015290519081900360640190fd5b6116b9611cd6565b6116c1611d7f565b610130805460ff191660ff9290921691909117610100600160a81b0319166101006001600160a01b039384160217905561013380546001600160a01b031990811688841617909155610131805482168784161790556101328054821686841617905561013480549091169184169190911790558015611746576000805461ff00191690555b5050505050565b6000611757611e1c565b905090565b611764610bf8565b6117ac576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6099805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6117df61174d565b604080516001600160a01b039092168252519081900360200190a1565b60008183038183128015906118115750838113155b80611826575060008312801561182657508381135b6118615760405162461bcd60e51b815260040180806020018281038252602481526020018061279c6024913960400191505060405180910390fd5b9392505050565b60006118618360ff601285900316600a0a611e4c565b60008282018183128015906118935750838112155b806118a857506000831280156118a857508381125b6118615760405162461bcd60e51b81526004018080602001828103825260218152602001806126de6021913960400191505060405180910390fd5b610132546040805163293a507760e01b81526001600160a01b03858116600483015291516000938493169163293a5077916024808301926020929190829003018186803b15801561193357600080fd5b505afa158015611947573d6000803e3d6000fd5b505050506040513d602081101561195d57600080fd5b5051905061196b8184611f04565b949350505050565b60006001600160ff1b038211156119bb5760405162461bcd60e51b81526004018080602001828103825260288152602001806127746028913960400191505060405180910390fd5b5090565b60008183126119ce5781611861565b5090919050565b6001600160a01b0380841660009081526101366020908152604080832093861683529290522054611a06908261187e565b6001600160a01b0393841660009081526101366020908152604080832095909616825293909352929091209190915550565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611a92908590611f19565b50505050565b600082821115611aef576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b611afd610bf8565b15611b42576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6099805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586117df61174d565b6000818312156119ce5781611861565b6000808212156119bb576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b3b151590565b60fd80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fa4388ecc389b1390354ae0c65a856c0d7dd4fb648419f5d3ac0b99e38f46fd119181900360200190a150565b6000600160ff1b8213611c675760405162461bcd60e51b8152600401611c5e906126a6565b60405180910390fd5b5060000390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611cc0908490611f19565b505050565b6000611cd030611bdf565b15905090565b600054610100900460ff1680611cef5750611cef611cc5565b80611cfd575060005460ff16155b611d385760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff16158015611d63576000805460ff1961ff0019909116610100171660011790555b611d6b611fca565b8015610fb3576000805461ff001916905550565b600054610100900460ff1680611d985750611d98611cc5565b80611da6575060005460ff16155b611de15760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff16158015611e0c576000805460ff1961ff0019909116610100171660011790555b611e1461206f565b611d6b612170565b600060143610801590611e335750611e3333610be4565b15611e47575060131936013560601c61045f565b503390565b600081611ea0576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b81600019148015611eb45750600160ff1b83145b15611ef05760405162461bcd60e51b81526004018080602001828103825260218152602001806127536021913960400191505060405180910390fd5b6000828481611efb57fe5b05949350505050565b6000611861838362ffffff16620f424061220d565b6000611f6e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166122bc9092919063ffffffff16565b805190915015611cc057808060200190516020811015611f8d57600080fd5b5051611cc05760405162461bcd60e51b815260040180806020018281038252602a8152602001806127c0602a913960400191505060405180910390fd5b600054610100900460ff1680611fe35750611fe3611cc5565b80611ff1575060005460ff16155b61202c5760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff16158015612057576000805460ff1961ff0019909116610100171660011790555b600180558015610fb3576000805461ff001916905550565b600054610100900460ff16806120885750612088611cc5565b80612096575060005460ff16155b6120d15760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff161580156120fc576000805460ff1961ff0019909116610100171660011790555b6121046122cb565b600061210e61174d565b606580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610fb3576000805461ff001916905550565b600054610100900460ff16806121895750612189611cc5565b80612197575060005460ff16155b6121d25760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff161580156121fd576000805460ff1961ff0019909116610100171660011790555b61220561235c565b611d6b6123fc565b6000808060001985870986860292508281109083900303905080612243576000841161223857600080fd5b508290049050611861565b80841161224f57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b606061196b84846000856124a7565b600054610100900460ff16806122e457506122e4611cc5565b806122f2575060005460ff16155b61232d5760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff16158015612358576000805460ff1961ff0019909116610100171660011790555b611d6b5b600054610100900460ff16806123755750612375611cc5565b80612383575060005460ff16155b6123be5760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff16158015611d6b576000805460ff1961ff0019909116610100171660011790558015610fb3576000805461ff001916905550565b600054610100900460ff16806124155750612415611cc5565b80612423575060005460ff16155b61245e5760405162461bcd60e51b815260040180806020018281038252602e815260200180612725602e913960400191505060405180910390fd5b600054610100900460ff16158015612489576000805460ff1961ff0019909116610100171660011790555b6099805460ff191690558015610fb3576000805461ff001916905550565b6060824710156124e85760405162461bcd60e51b81526004018080602001828103825260268152602001806126ff6026913960400191505060405180910390fd5b6124f185611bdf565b612542576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106125805780518252601f199092019160209182019101612561565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146125e2576040519150601f19603f3d011682016040523d82523d6000602084013e6125e7565b606091505b50915091506125f7828286612602565b979650505050505050565b60608315612611575081611861565b8251156126215782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561266b578181015183820152602001612653565b50505050905090810190601f1680156126985780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f770000000060408201526060019056fe5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206469766973696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212209cd268db44e6075960fb0ae6dffeaf1a2fd22bf76f544ce86773dabd450b96fd64736f6c63430007060033", + "bytecode": "0x608060405234801561001057600080fd5b506128fc806100206000396000f3fe608060405234801561001057600080fd5b50600436106101495760003560e01c806312803c7d1461014e57806313af403514610172578063158626f71461019a578063313ce567146101a257806334ce998a146101c05780633f4ba83a146101da5780633ffd1303146101e2578063449323d81461021357806347e7ef2414610239578063486ff0cd14610265578063572b6c05146102e25780635c975abb1461031c5780636896fabf146103245780636c8381f81461032c578063715018a6146103345780638456cb591461033c5780638da5cb5b14610344578063aa2a82941461034c578063bc5920ba14610354578063c39994441461035c578063c575ff7914610382578063ce1b815f1461038a578063da74222814610392578063f3fef3a3146103b8578063f807cd22146103e4578063f8b2cb4f146103ec578063f8c8765e14610412575b600080fd5b610156610450565b604080516001600160a01b039092168252519081900360200190f35b6101986004803603602081101561018857600080fd5b50356001600160a01b0316610466565b005b6101566105c1565b6101aa6105d1565b6040805160ff9092168252519081900360200190f35b6101c86105db565b60408051918252519081900360200190f35b6101986105e2565b6101c8600480360360408110156101f857600080fd5b5080356001600160a01b0316906020013562ffffff16610649565b6101986004803603602081101561022957600080fd5b50356001600160a01b0316610802565b6101986004803603604081101561024f57600080fd5b506001600160a01b0381351690602001356108cd565b61026d610c9b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102a757818101518382015260200161028f565b50505050905090810190601f1680156102d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610308600480360360208110156102f857600080fd5b50356001600160a01b0316610cba565b604080519115158252519081900360200190f35b610308610cce565b610156610cd7565b610156610ce7565b610198610cf6565b610198610d97565b610156610dfc565b610156610e0b565b610198610e1b565b6101c86004803603602081101561037257600080fd5b50356001600160a01b0316610f07565b610156610fa5565b610156610fb5565b610198600480360360208110156103a857600080fd5b50356001600160a01b0316610fc4565b610198600480360360408110156103ce57600080fd5b506001600160a01b038135169060200135611078565b610156611490565b6101c86004803603602081101561040257600080fd5b50356001600160a01b03166114a0565b6101986004803603608081101561042857600080fd5b506001600160a01b0381358116916020810135821691604082013581169160600135166114d3565b6101305461010090046001600160a01b03165b90565b61046e6117fd565b6001600160a01b031661047f610dfc565b6001600160a01b0316146104c3576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610507576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6065546001600160a01b0382811691161415610553576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6066546001600160a01b038281169116141561059f576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b606680546001600160a01b0319166001600160a01b0392909216919091179055565b610133546001600160a01b031690565b6101305460ff1690565b6101365490565b6105ea6117fd565b6001600160a01b03166105fb610dfc565b6001600160a01b03161461063f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61064761180c565b565b61013454604080516380f57f1160e01b81526001600160a01b0385811660048301529151600093849316916380f57f11916024808301926020929190829003018186803b15801561069957600080fd5b505afa1580156106ad573d6000803e3d6000fd5b505050506040513d60208110156106c357600080fd5b5051610132546040805163bba85bcf60e01b81526001600160a01b038881166004830152915193945060009384938493169163bba85bcf916024808301926060929190829003018186803b15801561071a57600080fd5b505afa15801561072e573d6000803e3d6000fd5b505050506040513d606081101561074457600080fd5b5080516020820151604090920151610130549195509193509091506000906107989061078f9060ff16610789610779866118ac565b610783898b6118f8565b90611964565b906119c9565b6107838a6114a0565b610130549091506000906107bb906107b490869060ff166119c9565b8390611964565b905060006107c98a8a6119df565b610130549091506107f4906107e49060ff16610789846118ac565b6107ee8585611a6f565b906118f8565b9a9950505050505050505050565b61080a6117fd565b6001600160a01b031661081b610dfc565b6001600160a01b03161461085f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610871816001600160a01b0316611a85565b6108aa576040805162461bcd60e51b8152602060048201526005602482015264565f414e4360d81b604482015290519081900360640190fd5b61013580546001600160a01b0319166001600160a01b0392909216919091179055565b6108d5610cce565b1561091a576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415610960576040805162461bcd60e51b815260206004820152601f602482015260008051602061277b833981519152604482015290519081900360640190fd5b60026001556101305482906001600160a01b0380831661010090920416146109b7576040805162461bcd60e51b81526020600482015260056024820152641597d3d4d560da1b604482015290519081900360640190fd5b60006109c16117fd565b90506109d681856109d1866118ac565b611a8b565b6000846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610a2557600080fd5b505afa158015610a39573d6000803e3d6000fd5b505050506040513d6020811015610a4f57600080fd5b50519050610a5f85833087611aee565b83610ae382876001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610ab157600080fd5b505afa158015610ac5573d6000803e3d6000fd5b505050506040513d6020811015610adb57600080fd5b505190611b4e565b14610b1d576040805162461bcd60e51b8152602060048201526005602482015264565f49424160d81b604482015290519081900360640190fd5b61013154604080516385eacc7760e01b815290516000926001600160a01b0316916385eacc77916004808301926020929190829003018186803b158015610b6357600080fd5b505afa158015610b77573d6000803e3d6000fd5b505050506040513d6020811015610b8d57600080fd5b5051604080516370a0823160e01b8152306004820152905191925082916001600160a01b038916916370a08231916024808301926020929190829003018186803b158015610bda57600080fd5b505afa158015610bee573d6000803e3d6000fd5b505050506040513d6020811015610c0457600080fd5b50511115610c44576040805162461bcd60e51b8152602060048201526008602482015267565f47545354424360c01b604482015290519081900360640190fd5b826001600160a01b0316866001600160a01b03167f8752a472e571a816aea92eec8dae9baf628e840f4929fbcc2d155e6233ff68a7876040518082815260200191505060405180910390a350506001805550505050565b6040805180820190915260058152640322e302e360dc1b602082015290565b60fd546001600160a01b0390811691161490565b60995460ff1690565b610132546001600160a01b031690565b6066546001600160a01b031690565b610cfe6117fd565b6001600160a01b0316610d0f610dfc565b6001600160a01b031614610d53576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6065546040516000916001600160a01b031690600080516020612831833981519152908390a3606580546001600160a01b0319908116909155606680549091169055565b610d9f6117fd565b6001600160a01b0316610db0610dfc565b6001600160a01b031614610df4576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610647611bab565b6065546001600160a01b031690565b610131546001600160a01b031690565b6066546001600160a01b0316610e60576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610e686117fd565b6066546001600160a01b03908116911614610eb3576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6066546065546040516001600160a01b03928316929091169060008051602061283183398151915290600090a360668054606580546001600160a01b03199081166001600160a01b03841617909155169055565b6000610f9f610f9a610f938461013160009054906101000a90046001600160a01b03166001600160a01b031663543ce73a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f6257600080fd5b505afa158015610f76573d6000803e3d6000fd5b505050506040513d6020811015610f8c57600080fd5b5051610649565b6000611c2e565b611c3e565b92915050565b610135546001600160a01b031690565b60fd546001600160a01b031690565b610fcc6117fd565b6001600160a01b0316610fdd610dfc565b6001600160a01b031614611021576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b611033816001600160a01b0316611a85565b61106c576040805162461bcd60e51b8152602060048201526005602482015264565f414e4360d81b604482015290519081900360640190fd5b61107581611c95565b50565b611080610cce565b156110c5576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6002600154141561110b576040805162461bcd60e51b815260206004820152601f602482015260008051602061277b833981519152604482015290519081900360640190fd5b60026001556101305482906001600160a01b038083166101009092041614611162576040805162461bcd60e51b81526020600482015260056024820152641597d3d4d560da1b604482015290519081900360640190fd5b600061116c6117fd565b610135546040805163fbfbd16960e01b81526001600160a01b038085166004830152915193945091169163fbfbd1699160248082019260009290919082900301818387803b1580156111bd57600080fd5b505af11580156111d1573d6000803e3d6000fd5b5050610132546040805163fd6ceee560e01b81526001600160a01b03868116600483015291516000955091909216925063fd6ceee59160248082019260209290919082900301818787803b15801561122857600080fd5b505af115801561123c573d6000803e3d6000fd5b505050506040513d602081101561125257600080fd5b50516101315460408051632a1e739d60e11b815290519293506000926112a69286926001600160a01b039091169163543ce73a91600480820192602092909190829003018186803b158015610f6257600080fd5b90506112b1856118ac565b610130546112c7906107b490859060ff166119c9565b1215611303576040805162461bcd60e51b8152602060048201526006602482015265565f4e45464360d01b604482015290519081900360640190fd5b6000866001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561135257600080fd5b505afa158015611366573d6000803e3d6000fd5b505050506040513d602081101561137c57600080fd5b50519050858110156113fd57610133546040805163317afabb60e21b815283890360048201819052915191926001600160a01b03169163c5ebeaec9160248082019260009290919082900301818387803b1580156113d957600080fd5b505af11580156113ed573d6000803e3d6000fd5b5050610136805490930190925550505b6101305461142d90859089906109d1906114289061141f90899060ff166119c9565b6107ee8c6118ac565b611ce9565b611438878588611d1e565b836001600160a01b0316876001600160a01b03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb886040518082815260200191505060405180910390a35050600180555050505050565b610134546001600160a01b031690565b6001600160a01b039081166000908152610137602090815260408083206101305461010090049094168352929052205490565b600054610100900460ff16806114ec57506114ec611d75565b806114fa575060005460ff16155b6115355760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff16158015611560576000805460ff1961ff0019909116610100171660011790555b6000856001600160a01b03166321df0da76040518163ffffffff1660e01b815260040160206040518083038186803b15801561159b57600080fd5b505afa1580156115af573d6000803e3d6000fd5b505050506040513d60208110156115c557600080fd5b50516040805163313ce56760e01b815290519192506000916001600160a01b0384169163313ce567916004808301926020929190829003018186803b15801561160d57600080fd5b505afa158015611621573d6000803e3d6000fd5b505050506040513d602081101561163757600080fd5b50519050601260ff8216111561167d576040805162461bcd60e51b81526020600482015260066024820152651597d254d51160d21b604482015290519081900360640190fd5b61168f866001600160a01b0316611a85565b6116ca576040805162461bcd60e51b8152602060048201526007602482015266565f4348434e4360c81b604482015290519081900360640190fd5b6116dc856001600160a01b0316611a85565b611716576040805162461bcd60e51b8152602060048201526006602482015265565f41424e4360d01b604482015290519081900360640190fd5b611728846001600160a01b0316611a85565b611761576040805162461bcd60e51b8152602060048201526005602482015264565f454e4360d81b604482015290519081900360640190fd5b611769611d86565b611771611e2f565b610130805460ff191660ff9290921691909117610100600160a81b0319166101006001600160a01b039384160217905561013380546001600160a01b0319908116888416179091556101318054821687841617905561013280548216868416179055610134805490911691841691909117905580156117f6576000805461ff00191690555b5050505050565b6000611807611ecc565b905090565b611814610cce565b61185c576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6099805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61188f6117fd565b604080516001600160a01b039092168252519081900360200190a1565b60006001600160ff1b038211156118f45760405162461bcd60e51b81526004018080602001828103825260288152602001806128516028913960400191505060405180910390fd5b5090565b600081830381831280159061190d5750838113155b80611922575060008312801561192257508381135b61195d5760405162461bcd60e51b81526004018080602001828103825260248152602001806128796024913960400191505060405180910390fd5b9392505050565b60008282018183128015906119795750838112155b8061198e575060008312801561198e57508381125b61195d5760405162461bcd60e51b815260040180806020018281038252602181526020018061279b6021913960400191505060405180910390fd5b600061195d8360ff601285900316600a0a611efc565b610132546040805163293a507760e01b81526001600160a01b03858116600483015291516000938493169163293a5077916024808301926020929190829003018186803b158015611a2f57600080fd5b505afa158015611a43573d6000803e3d6000fd5b505050506040513d6020811015611a5957600080fd5b50519050611a678184611fb4565b949350505050565b6000818312611a7e578161195d565b5090919050565b3b151590565b6001600160a01b0380841660009081526101376020908152604080832093861683529290522054611abc9082611964565b6001600160a01b0393841660009081526101376020908152604080832095909616825293909352929091209190915550565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611b48908590611fc9565b50505050565b600082821115611ba5576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b611bb3610cce565b15611bf8576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6099805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861188f6117fd565b600081831215611a7e578161195d565b6000808212156118f4576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b60fd80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fa4388ecc389b1390354ae0c65a856c0d7dd4fb648419f5d3ac0b99e38f46fd119181900360200190a150565b6000600160ff1b8213611d175760405162461bcd60e51b8152600401611d0e90612744565b60405180910390fd5b5060000390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611d70908490611fc9565b505050565b6000611d8030611a85565b15905090565b600054610100900460ff1680611d9f5750611d9f611d75565b80611dad575060005460ff16155b611de85760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff16158015611e13576000805460ff1961ff0019909116610100171660011790555b611e1b61207a565b8015611075576000805461ff001916905550565b600054610100900460ff1680611e485750611e48611d75565b80611e56575060005460ff16155b611e915760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff16158015611ebc576000805460ff1961ff0019909116610100171660011790555b611ec461211f565b611e1b61220e565b600060143610801590611ee35750611ee333610cba565b15611ef7575060131936013560601c610463565b503390565b600081611f50576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b81600019148015611f645750600160ff1b83145b15611fa05760405162461bcd60e51b81526004018080602001828103825260218152602001806128106021913960400191505060405180910390fd5b6000828481611fab57fe5b05949350505050565b600061195d838362ffffff16620f42406122ab565b600061201e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661235a9092919063ffffffff16565b805190915015611d705780806020019051602081101561203d57600080fd5b5051611d705760405162461bcd60e51b815260040180806020018281038252602a81526020018061289d602a913960400191505060405180910390fd5b600054610100900460ff16806120935750612093611d75565b806120a1575060005460ff16155b6120dc5760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff16158015612107576000805460ff1961ff0019909116610100171660011790555b600180558015611075576000805461ff001916905550565b600054610100900460ff16806121385750612138611d75565b80612146575060005460ff16155b6121815760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff161580156121ac576000805460ff1961ff0019909116610100171660011790555b6121b4612369565b60006121be6117fd565b606580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020612831833981519152908290a3508015611075576000805461ff001916905550565b600054610100900460ff16806122275750612227611d75565b80612235575060005460ff16155b6122705760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff1615801561229b576000805460ff1961ff0019909116610100171660011790555b6122a36123fa565b611e1b61249a565b60008080600019858709868602925082811090839003039050806122e157600084116122d657600080fd5b50829004905061195d565b8084116122ed57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6060611a678484600085612545565b600054610100900460ff16806123825750612382611d75565b80612390575060005460ff16155b6123cb5760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff161580156123f6576000805460ff1961ff0019909116610100171660011790555b611e1b5b600054610100900460ff16806124135750612413611d75565b80612421575060005460ff16155b61245c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff16158015611e1b576000805460ff1961ff0019909116610100171660011790558015611075576000805461ff001916905550565b600054610100900460ff16806124b357506124b3611d75565b806124c1575060005460ff16155b6124fc5760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff16158015612527576000805460ff1961ff0019909116610100171660011790555b6099805460ff191690558015611075576000805461ff001916905550565b6060824710156125865760405162461bcd60e51b81526004018080602001828103825260268152602001806127bc6026913960400191505060405180910390fd5b61258f85611a85565b6125e0576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b6020831061261e5780518252601f1990920191602091820191016125ff565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612680576040519150601f19603f3d011682016040523d82523d6000602084013e612685565b606091505b50915091506126958282866126a0565b979650505050505050565b606083156126af57508161195d565b8251156126bf5782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127095781810151838201526020016126f1565b50505050905090810190601f1680156127365780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6020808252601c908201527b506572704d6174683a20696e76657273696f6e206f766572666c6f7760201b60408201526060019056fe5265656e7472616e637947756172643a207265656e7472616e742063616c6c005369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206469766973696f6e206f766572666c6f778be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e053616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220951959ac6b4d6446714f822e0f832144fdfc99b9a9d632412e44cae62ec474bf64736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101495760003560e01c806312803c7d1461014e57806313af403514610172578063158626f71461019a578063313ce567146101a257806334ce998a146101c05780633f4ba83a146101da5780633ffd1303146101e2578063449323d81461021357806347e7ef2414610239578063486ff0cd14610265578063572b6c05146102e25780635c975abb1461031c5780636896fabf146103245780636c8381f81461032c578063715018a6146103345780638456cb591461033c5780638da5cb5b14610344578063aa2a82941461034c578063bc5920ba14610354578063c39994441461035c578063c575ff7914610382578063ce1b815f1461038a578063da74222814610392578063f3fef3a3146103b8578063f807cd22146103e4578063f8b2cb4f146103ec578063f8c8765e14610412575b600080fd5b610156610450565b604080516001600160a01b039092168252519081900360200190f35b6101986004803603602081101561018857600080fd5b50356001600160a01b0316610466565b005b6101566105c1565b6101aa6105d1565b6040805160ff9092168252519081900360200190f35b6101c86105db565b60408051918252519081900360200190f35b6101986105e2565b6101c8600480360360408110156101f857600080fd5b5080356001600160a01b0316906020013562ffffff16610649565b6101986004803603602081101561022957600080fd5b50356001600160a01b0316610802565b6101986004803603604081101561024f57600080fd5b506001600160a01b0381351690602001356108cd565b61026d610c9b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102a757818101518382015260200161028f565b50505050905090810190601f1680156102d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610308600480360360208110156102f857600080fd5b50356001600160a01b0316610cba565b604080519115158252519081900360200190f35b610308610cce565b610156610cd7565b610156610ce7565b610198610cf6565b610198610d97565b610156610dfc565b610156610e0b565b610198610e1b565b6101c86004803603602081101561037257600080fd5b50356001600160a01b0316610f07565b610156610fa5565b610156610fb5565b610198600480360360208110156103a857600080fd5b50356001600160a01b0316610fc4565b610198600480360360408110156103ce57600080fd5b506001600160a01b038135169060200135611078565b610156611490565b6101c86004803603602081101561040257600080fd5b50356001600160a01b03166114a0565b6101986004803603608081101561042857600080fd5b506001600160a01b0381358116916020810135821691604082013581169160600135166114d3565b6101305461010090046001600160a01b03165b90565b61046e6117fd565b6001600160a01b031661047f610dfc565b6001600160a01b0316146104c3576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610507576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6065546001600160a01b0382811691161415610553576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6066546001600160a01b038281169116141561059f576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b606680546001600160a01b0319166001600160a01b0392909216919091179055565b610133546001600160a01b031690565b6101305460ff1690565b6101365490565b6105ea6117fd565b6001600160a01b03166105fb610dfc565b6001600160a01b03161461063f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61064761180c565b565b61013454604080516380f57f1160e01b81526001600160a01b0385811660048301529151600093849316916380f57f11916024808301926020929190829003018186803b15801561069957600080fd5b505afa1580156106ad573d6000803e3d6000fd5b505050506040513d60208110156106c357600080fd5b5051610132546040805163bba85bcf60e01b81526001600160a01b038881166004830152915193945060009384938493169163bba85bcf916024808301926060929190829003018186803b15801561071a57600080fd5b505afa15801561072e573d6000803e3d6000fd5b505050506040513d606081101561074457600080fd5b5080516020820151604090920151610130549195509193509091506000906107989061078f9060ff16610789610779866118ac565b610783898b6118f8565b90611964565b906119c9565b6107838a6114a0565b610130549091506000906107bb906107b490869060ff166119c9565b8390611964565b905060006107c98a8a6119df565b610130549091506107f4906107e49060ff16610789846118ac565b6107ee8585611a6f565b906118f8565b9a9950505050505050505050565b61080a6117fd565b6001600160a01b031661081b610dfc565b6001600160a01b03161461085f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610871816001600160a01b0316611a85565b6108aa576040805162461bcd60e51b8152602060048201526005602482015264565f414e4360d81b604482015290519081900360640190fd5b61013580546001600160a01b0319166001600160a01b0392909216919091179055565b6108d5610cce565b1561091a576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026001541415610960576040805162461bcd60e51b815260206004820152601f602482015260008051602061277b833981519152604482015290519081900360640190fd5b60026001556101305482906001600160a01b0380831661010090920416146109b7576040805162461bcd60e51b81526020600482015260056024820152641597d3d4d560da1b604482015290519081900360640190fd5b60006109c16117fd565b90506109d681856109d1866118ac565b611a8b565b6000846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610a2557600080fd5b505afa158015610a39573d6000803e3d6000fd5b505050506040513d6020811015610a4f57600080fd5b50519050610a5f85833087611aee565b83610ae382876001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610ab157600080fd5b505afa158015610ac5573d6000803e3d6000fd5b505050506040513d6020811015610adb57600080fd5b505190611b4e565b14610b1d576040805162461bcd60e51b8152602060048201526005602482015264565f49424160d81b604482015290519081900360640190fd5b61013154604080516385eacc7760e01b815290516000926001600160a01b0316916385eacc77916004808301926020929190829003018186803b158015610b6357600080fd5b505afa158015610b77573d6000803e3d6000fd5b505050506040513d6020811015610b8d57600080fd5b5051604080516370a0823160e01b8152306004820152905191925082916001600160a01b038916916370a08231916024808301926020929190829003018186803b158015610bda57600080fd5b505afa158015610bee573d6000803e3d6000fd5b505050506040513d6020811015610c0457600080fd5b50511115610c44576040805162461bcd60e51b8152602060048201526008602482015267565f47545354424360c01b604482015290519081900360640190fd5b826001600160a01b0316866001600160a01b03167f8752a472e571a816aea92eec8dae9baf628e840f4929fbcc2d155e6233ff68a7876040518082815260200191505060405180910390a350506001805550505050565b6040805180820190915260058152640322e302e360dc1b602082015290565b60fd546001600160a01b0390811691161490565b60995460ff1690565b610132546001600160a01b031690565b6066546001600160a01b031690565b610cfe6117fd565b6001600160a01b0316610d0f610dfc565b6001600160a01b031614610d53576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6065546040516000916001600160a01b031690600080516020612831833981519152908390a3606580546001600160a01b0319908116909155606680549091169055565b610d9f6117fd565b6001600160a01b0316610db0610dfc565b6001600160a01b031614610df4576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610647611bab565b6065546001600160a01b031690565b610131546001600160a01b031690565b6066546001600160a01b0316610e60576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610e686117fd565b6066546001600160a01b03908116911614610eb3576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6066546065546040516001600160a01b03928316929091169060008051602061283183398151915290600090a360668054606580546001600160a01b03199081166001600160a01b03841617909155169055565b6000610f9f610f9a610f938461013160009054906101000a90046001600160a01b03166001600160a01b031663543ce73a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f6257600080fd5b505afa158015610f76573d6000803e3d6000fd5b505050506040513d6020811015610f8c57600080fd5b5051610649565b6000611c2e565b611c3e565b92915050565b610135546001600160a01b031690565b60fd546001600160a01b031690565b610fcc6117fd565b6001600160a01b0316610fdd610dfc565b6001600160a01b031614611021576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b611033816001600160a01b0316611a85565b61106c576040805162461bcd60e51b8152602060048201526005602482015264565f414e4360d81b604482015290519081900360640190fd5b61107581611c95565b50565b611080610cce565b156110c5576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6002600154141561110b576040805162461bcd60e51b815260206004820152601f602482015260008051602061277b833981519152604482015290519081900360640190fd5b60026001556101305482906001600160a01b038083166101009092041614611162576040805162461bcd60e51b81526020600482015260056024820152641597d3d4d560da1b604482015290519081900360640190fd5b600061116c6117fd565b610135546040805163fbfbd16960e01b81526001600160a01b038085166004830152915193945091169163fbfbd1699160248082019260009290919082900301818387803b1580156111bd57600080fd5b505af11580156111d1573d6000803e3d6000fd5b5050610132546040805163fd6ceee560e01b81526001600160a01b03868116600483015291516000955091909216925063fd6ceee59160248082019260209290919082900301818787803b15801561122857600080fd5b505af115801561123c573d6000803e3d6000fd5b505050506040513d602081101561125257600080fd5b50516101315460408051632a1e739d60e11b815290519293506000926112a69286926001600160a01b039091169163543ce73a91600480820192602092909190829003018186803b158015610f6257600080fd5b90506112b1856118ac565b610130546112c7906107b490859060ff166119c9565b1215611303576040805162461bcd60e51b8152602060048201526006602482015265565f4e45464360d01b604482015290519081900360640190fd5b6000866001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561135257600080fd5b505afa158015611366573d6000803e3d6000fd5b505050506040513d602081101561137c57600080fd5b50519050858110156113fd57610133546040805163317afabb60e21b815283890360048201819052915191926001600160a01b03169163c5ebeaec9160248082019260009290919082900301818387803b1580156113d957600080fd5b505af11580156113ed573d6000803e3d6000fd5b5050610136805490930190925550505b6101305461142d90859089906109d1906114289061141f90899060ff166119c9565b6107ee8c6118ac565b611ce9565b611438878588611d1e565b836001600160a01b0316876001600160a01b03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb886040518082815260200191505060405180910390a35050600180555050505050565b610134546001600160a01b031690565b6001600160a01b039081166000908152610137602090815260408083206101305461010090049094168352929052205490565b600054610100900460ff16806114ec57506114ec611d75565b806114fa575060005460ff16155b6115355760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff16158015611560576000805460ff1961ff0019909116610100171660011790555b6000856001600160a01b03166321df0da76040518163ffffffff1660e01b815260040160206040518083038186803b15801561159b57600080fd5b505afa1580156115af573d6000803e3d6000fd5b505050506040513d60208110156115c557600080fd5b50516040805163313ce56760e01b815290519192506000916001600160a01b0384169163313ce567916004808301926020929190829003018186803b15801561160d57600080fd5b505afa158015611621573d6000803e3d6000fd5b505050506040513d602081101561163757600080fd5b50519050601260ff8216111561167d576040805162461bcd60e51b81526020600482015260066024820152651597d254d51160d21b604482015290519081900360640190fd5b61168f866001600160a01b0316611a85565b6116ca576040805162461bcd60e51b8152602060048201526007602482015266565f4348434e4360c81b604482015290519081900360640190fd5b6116dc856001600160a01b0316611a85565b611716576040805162461bcd60e51b8152602060048201526006602482015265565f41424e4360d01b604482015290519081900360640190fd5b611728846001600160a01b0316611a85565b611761576040805162461bcd60e51b8152602060048201526005602482015264565f454e4360d81b604482015290519081900360640190fd5b611769611d86565b611771611e2f565b610130805460ff191660ff9290921691909117610100600160a81b0319166101006001600160a01b039384160217905561013380546001600160a01b0319908116888416179091556101318054821687841617905561013280548216868416179055610134805490911691841691909117905580156117f6576000805461ff00191690555b5050505050565b6000611807611ecc565b905090565b611814610cce565b61185c576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6099805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61188f6117fd565b604080516001600160a01b039092168252519081900360200190a1565b60006001600160ff1b038211156118f45760405162461bcd60e51b81526004018080602001828103825260288152602001806128516028913960400191505060405180910390fd5b5090565b600081830381831280159061190d5750838113155b80611922575060008312801561192257508381135b61195d5760405162461bcd60e51b81526004018080602001828103825260248152602001806128796024913960400191505060405180910390fd5b9392505050565b60008282018183128015906119795750838112155b8061198e575060008312801561198e57508381125b61195d5760405162461bcd60e51b815260040180806020018281038252602181526020018061279b6021913960400191505060405180910390fd5b600061195d8360ff601285900316600a0a611efc565b610132546040805163293a507760e01b81526001600160a01b03858116600483015291516000938493169163293a5077916024808301926020929190829003018186803b158015611a2f57600080fd5b505afa158015611a43573d6000803e3d6000fd5b505050506040513d6020811015611a5957600080fd5b50519050611a678184611fb4565b949350505050565b6000818312611a7e578161195d565b5090919050565b3b151590565b6001600160a01b0380841660009081526101376020908152604080832093861683529290522054611abc9082611964565b6001600160a01b0393841660009081526101376020908152604080832095909616825293909352929091209190915550565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611b48908590611fc9565b50505050565b600082821115611ba5576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b611bb3610cce565b15611bf8576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6099805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861188f6117fd565b600081831215611a7e578161195d565b6000808212156118f4576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b60fd80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fa4388ecc389b1390354ae0c65a856c0d7dd4fb648419f5d3ac0b99e38f46fd119181900360200190a150565b6000600160ff1b8213611d175760405162461bcd60e51b8152600401611d0e90612744565b60405180910390fd5b5060000390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611d70908490611fc9565b505050565b6000611d8030611a85565b15905090565b600054610100900460ff1680611d9f5750611d9f611d75565b80611dad575060005460ff16155b611de85760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff16158015611e13576000805460ff1961ff0019909116610100171660011790555b611e1b61207a565b8015611075576000805461ff001916905550565b600054610100900460ff1680611e485750611e48611d75565b80611e56575060005460ff16155b611e915760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff16158015611ebc576000805460ff1961ff0019909116610100171660011790555b611ec461211f565b611e1b61220e565b600060143610801590611ee35750611ee333610cba565b15611ef7575060131936013560601c610463565b503390565b600081611f50576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b81600019148015611f645750600160ff1b83145b15611fa05760405162461bcd60e51b81526004018080602001828103825260218152602001806128106021913960400191505060405180910390fd5b6000828481611fab57fe5b05949350505050565b600061195d838362ffffff16620f42406122ab565b600061201e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661235a9092919063ffffffff16565b805190915015611d705780806020019051602081101561203d57600080fd5b5051611d705760405162461bcd60e51b815260040180806020018281038252602a81526020018061289d602a913960400191505060405180910390fd5b600054610100900460ff16806120935750612093611d75565b806120a1575060005460ff16155b6120dc5760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff16158015612107576000805460ff1961ff0019909116610100171660011790555b600180558015611075576000805461ff001916905550565b600054610100900460ff16806121385750612138611d75565b80612146575060005460ff16155b6121815760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff161580156121ac576000805460ff1961ff0019909116610100171660011790555b6121b4612369565b60006121be6117fd565b606580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020612831833981519152908290a3508015611075576000805461ff001916905550565b600054610100900460ff16806122275750612227611d75565b80612235575060005460ff16155b6122705760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff1615801561229b576000805460ff1961ff0019909116610100171660011790555b6122a36123fa565b611e1b61249a565b60008080600019858709868602925082811090839003039050806122e157600084116122d657600080fd5b50829004905061195d565b8084116122ed57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6060611a678484600085612545565b600054610100900460ff16806123825750612382611d75565b80612390575060005460ff16155b6123cb5760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff161580156123f6576000805460ff1961ff0019909116610100171660011790555b611e1b5b600054610100900460ff16806124135750612413611d75565b80612421575060005460ff16155b61245c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff16158015611e1b576000805460ff1961ff0019909116610100171660011790558015611075576000805461ff001916905550565b600054610100900460ff16806124b357506124b3611d75565b806124c1575060005460ff16155b6124fc5760405162461bcd60e51b815260040180806020018281038252602e8152602001806127e2602e913960400191505060405180910390fd5b600054610100900460ff16158015612527576000805460ff1961ff0019909116610100171660011790555b6099805460ff191690558015611075576000805461ff001916905550565b6060824710156125865760405162461bcd60e51b81526004018080602001828103825260268152602001806127bc6026913960400191505060405180910390fd5b61258f85611a85565b6125e0576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b6020831061261e5780518252601f1990920191602091820191016125ff565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612680576040519150601f19603f3d011682016040523d82523d6000602084013e612685565b606091505b50915091506126958282866126a0565b979650505050505050565b606083156126af57508161195d565b8251156126bf5782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127095781810151838201526020016126f1565b50505050905090810190601f1680156127365780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6020808252601c908201527b506572704d6174683a20696e76657273696f6e206f766572666c6f7760201b60408201526060019056fe5265656e7472616e637947756172643a207265656e7472616e742063616c6c005369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645369676e6564536166654d6174683a206469766973696f6e206f766572666c6f778be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e053616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220951959ac6b4d6446714f822e0f832144fdfc99b9a9d632412e44cae62ec474bf64736f6c63430007060033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/external/abi/perp/PerpV2VirtualToken.json b/external/abi/perp/PerpV2VirtualToken.json index 0c2df906b..4e5ebedb8 100644 --- a/external/abi/perp/PerpV2VirtualToken.json +++ b/external/abi/perp/PerpV2VirtualToken.json @@ -430,8 +430,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50611239806100206000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063a9059cbb11610071578063a9059cbb1461038a578063bc5920ba146103b6578063dd62ed3e146103be578063f52e308e146103ec578063f80f5dd5146104125761012c565b8063715018a61461032057806378c8cda7146103285780638da5cb5b1461034e57806395d89b4114610356578063a457c2d71461035e5761012c565b806323b872dd116100f457806323b872dd14610256578063313ce5671461028c57806339509351146102aa5780636c8381f8146102d657806370a08231146102fa5761012c565b806306fdde0314610131578063095ea7b3146101ae57806309fd8212146101ee57806313af40351461021457806318160ddd1461023c575b600080fd5b610139610438565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360408110156101c457600080fd5b506001600160a01b0381351690602001356104ce565b604080519115158252519081900360200190f35b6101da6004803603602081101561020457600080fd5b50356001600160a01b03166104eb565b61023a6004803603602081101561022a57600080fd5b50356001600160a01b0316610509565b005b610244610664565b60408051918252519081900360200190f35b6101da6004803603606081101561026c57600080fd5b506001600160a01b0381358116916020810135909116906040013561066a565b6102946106f1565b6040805160ff9092168252519081900360200190f35b6101da600480360360408110156102c057600080fd5b506001600160a01b0381351690602001356106fa565b6102de610748565b604080516001600160a01b039092168252519081900360200190f35b6102446004803603602081101561031057600080fd5b50356001600160a01b0316610757565b61023a610772565b61023a6004803603602081101561033e57600080fd5b50356001600160a01b0316610825565b6102de61091e565b61013961092d565b6101da6004803603604081101561037457600080fd5b506001600160a01b03813516906020013561098e565b6101da600480360360408110156103a057600080fd5b506001600160a01b0381351690602001356109f6565b61023a610a0a565b610244600480360360408110156103d457600080fd5b506001600160a01b0381358116916020013516610b08565b61023a6004803603602081101561040257600080fd5b50356001600160a01b0316610b33565b61023a6004803603602081101561042857600080fd5b50356001600160a01b0316610b9f565b606a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104c45780601f10610499576101008083540402835291602001916104c4565b820191906000526020600020905b8154815290600101906020018083116104a757829003601f168201915b5050505050905090565b60006104e26104db610c57565b8484610c5b565b50600192915050565b6001600160a01b031660009081526099602052604090205460ff1690565b610511610c57565b6001600160a01b031661052261091e565b6001600160a01b031614610566576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0381166105aa576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156105f6576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b0382811691161415610642576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b60695490565b6000610677848484610d47565b6106e784610683610c57565b6106e28560405180606001604052806028815260200161116e602891396001600160a01b038a166000908152606860205260408120906106c1610c57565b6001600160a01b031681526020810191909152604001600020549190610ea4565b610c5b565b5060019392505050565b606c5460ff1690565b60006104e2610707610c57565b846106e28560686000610718610c57565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610f3b565b6034546001600160a01b031690565b6001600160a01b031660009081526067602052604090205490565b61077a610c57565b6001600160a01b031661078b61091e565b6001600160a01b0316146107cf576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b61082d610c57565b6001600160a01b031661083e61091e565b6001600160a01b031614610882576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61088b81610757565b156108c6576040805162461bcd60e51b81526020600482015260066024820152652b2a2fa1272d60d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19169055815192835290517fde8cf212af7ce38b2840785a2768d97ff2dbf3c21b516961cec0061e134c2a1e9281900390910190a150565b6033546001600160a01b031690565b606b8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104c45780601f10610499576101008083540402835291602001916104c4565b60006104e261099b610c57565b846106e2856040518060600160405280602581526020016111df60259139606860006109c5610c57565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610ea4565b60006104e2610a03610c57565b8484610d47565b6034546001600160a01b0316610a4f576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610a57610c57565b6034546001600160a01b03908116911614610aa2576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6001600160a01b03918216600090815260686020908152604080832093909416825291909152205490565b610b3b610c57565b6001600160a01b0316610b4c61091e565b6001600160a01b031614610b90576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610b9c81600019610f9c565b50565b610ba7610c57565b6001600160a01b0316610bb861091e565b6001600160a01b031614610bfc576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19166001179055815192835290517f4790a4adb426ca2345bb5108f6e454eae852a7bf687544cd66a7270dff3a41d69281900390910190a150565b3390565b6001600160a01b038316610ca05760405162461bcd60e51b81526004018080602001828103825260248152602001806111bb6024913960400191505060405180910390fd5b6001600160a01b038216610ce55760405162461bcd60e51b81526004018080602001828103825260228152602001806111266022913960400191505060405180910390fd5b6001600160a01b03808416600081815260686020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610d8c5760405162461bcd60e51b81526004018080602001828103825260258152602001806111966025913960400191505060405180910390fd5b6001600160a01b038216610dd15760405162461bcd60e51b81526004018080602001828103825260238152602001806111036023913960400191505060405180910390fd5b610ddc83838361108e565b610e1981604051806060016040528060268152602001611148602691396001600160a01b0386166000908152606760205260409020549190610ea4565b6001600160a01b038085166000908152606760205260408082209390935590841681522054610e489082610f3b565b6001600160a01b0380841660008181526067602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610f335760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ef8578181015183820152602001610ee0565b50505050905090810190601f168015610f255780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610f95576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610ff7576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6110036000838361108e565b6069546110109082610f3b565b6069556001600160a01b0382166000908152606760205260409020546110369082610f3b565b6001600160a01b03831660008181526067602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6110998383836110fd565b6001600160a01b038316156110fd576001600160a01b03831660009081526099602052604090205460ff166110fd576040805162461bcd60e51b815260206004820152600560248201526456545f4e5760d81b604482015290519081900360640190fd5b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b181fbbc2e410e405da8af2ae523d012eb102b5916f9e5a4bab6440bd0bcdb5a64736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063a9059cbb11610071578063a9059cbb1461038a578063bc5920ba146103b6578063dd62ed3e146103be578063f52e308e146103ec578063f80f5dd5146104125761012c565b8063715018a61461032057806378c8cda7146103285780638da5cb5b1461034e57806395d89b4114610356578063a457c2d71461035e5761012c565b806323b872dd116100f457806323b872dd14610256578063313ce5671461028c57806339509351146102aa5780636c8381f8146102d657806370a08231146102fa5761012c565b806306fdde0314610131578063095ea7b3146101ae57806309fd8212146101ee57806313af40351461021457806318160ddd1461023c575b600080fd5b610139610438565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360408110156101c457600080fd5b506001600160a01b0381351690602001356104ce565b604080519115158252519081900360200190f35b6101da6004803603602081101561020457600080fd5b50356001600160a01b03166104eb565b61023a6004803603602081101561022a57600080fd5b50356001600160a01b0316610509565b005b610244610664565b60408051918252519081900360200190f35b6101da6004803603606081101561026c57600080fd5b506001600160a01b0381358116916020810135909116906040013561066a565b6102946106f1565b6040805160ff9092168252519081900360200190f35b6101da600480360360408110156102c057600080fd5b506001600160a01b0381351690602001356106fa565b6102de610748565b604080516001600160a01b039092168252519081900360200190f35b6102446004803603602081101561031057600080fd5b50356001600160a01b0316610757565b61023a610772565b61023a6004803603602081101561033e57600080fd5b50356001600160a01b0316610825565b6102de61091e565b61013961092d565b6101da6004803603604081101561037457600080fd5b506001600160a01b03813516906020013561098e565b6101da600480360360408110156103a057600080fd5b506001600160a01b0381351690602001356109f6565b61023a610a0a565b610244600480360360408110156103d457600080fd5b506001600160a01b0381358116916020013516610b08565b61023a6004803603602081101561040257600080fd5b50356001600160a01b0316610b33565b61023a6004803603602081101561042857600080fd5b50356001600160a01b0316610b9f565b606a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104c45780601f10610499576101008083540402835291602001916104c4565b820191906000526020600020905b8154815290600101906020018083116104a757829003601f168201915b5050505050905090565b60006104e26104db610c57565b8484610c5b565b50600192915050565b6001600160a01b031660009081526099602052604090205460ff1690565b610511610c57565b6001600160a01b031661052261091e565b6001600160a01b031614610566576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0381166105aa576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156105f6576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b0382811691161415610642576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b60695490565b6000610677848484610d47565b6106e784610683610c57565b6106e28560405180606001604052806028815260200161116e602891396001600160a01b038a166000908152606860205260408120906106c1610c57565b6001600160a01b031681526020810191909152604001600020549190610ea4565b610c5b565b5060019392505050565b606c5460ff1690565b60006104e2610707610c57565b846106e28560686000610718610c57565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610f3b565b6034546001600160a01b031690565b6001600160a01b031660009081526067602052604090205490565b61077a610c57565b6001600160a01b031661078b61091e565b6001600160a01b0316146107cf576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b61082d610c57565b6001600160a01b031661083e61091e565b6001600160a01b031614610882576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61088b81610757565b156108c6576040805162461bcd60e51b81526020600482015260066024820152652b2a2fa1272d60d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19169055815192835290517fde8cf212af7ce38b2840785a2768d97ff2dbf3c21b516961cec0061e134c2a1e9281900390910190a150565b6033546001600160a01b031690565b606b8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104c45780601f10610499576101008083540402835291602001916104c4565b60006104e261099b610c57565b846106e2856040518060600160405280602581526020016111df60259139606860006109c5610c57565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610ea4565b60006104e2610a03610c57565b8484610d47565b6034546001600160a01b0316610a4f576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610a57610c57565b6034546001600160a01b03908116911614610aa2576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6001600160a01b03918216600090815260686020908152604080832093909416825291909152205490565b610b3b610c57565b6001600160a01b0316610b4c61091e565b6001600160a01b031614610b90576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610b9c81600019610f9c565b50565b610ba7610c57565b6001600160a01b0316610bb861091e565b6001600160a01b031614610bfc576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19166001179055815192835290517f4790a4adb426ca2345bb5108f6e454eae852a7bf687544cd66a7270dff3a41d69281900390910190a150565b3390565b6001600160a01b038316610ca05760405162461bcd60e51b81526004018080602001828103825260248152602001806111bb6024913960400191505060405180910390fd5b6001600160a01b038216610ce55760405162461bcd60e51b81526004018080602001828103825260228152602001806111266022913960400191505060405180910390fd5b6001600160a01b03808416600081815260686020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610d8c5760405162461bcd60e51b81526004018080602001828103825260258152602001806111966025913960400191505060405180910390fd5b6001600160a01b038216610dd15760405162461bcd60e51b81526004018080602001828103825260238152602001806111036023913960400191505060405180910390fd5b610ddc83838361108e565b610e1981604051806060016040528060268152602001611148602691396001600160a01b0386166000908152606760205260409020549190610ea4565b6001600160a01b038085166000908152606760205260408082209390935590841681522054610e489082610f3b565b6001600160a01b0380841660008181526067602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610f335760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ef8578181015183820152602001610ee0565b50505050905090810190601f168015610f255780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610f95576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610ff7576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6110036000838361108e565b6069546110109082610f3b565b6069556001600160a01b0382166000908152606760205260409020546110369082610f3b565b6001600160a01b03831660008181526067602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6110998383836110fd565b6001600160a01b038316156110fd576001600160a01b03831660009081526099602052604090205460ff166110fd576040805162461bcd60e51b815260206004820152600560248201526456545f4e5760d81b604482015290519081900360640190fd5b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b181fbbc2e410e405da8af2ae523d012eb102b5916f9e5a4bab6440bd0bcdb5a64736f6c63430007060033", + "bytecode": "0x608060405234801561001057600080fd5b506111ff806100206000396000f3fe608060405234801561001057600080fd5b50600436106100fc5760003560e01c806306fdde0314610101578063095ea7b31461017e57806309fd8212146101be57806313af4035146101e457806318160ddd1461020c57806323b872dd14610226578063313ce5671461025c578063395093511461027a5780636c8381f8146102a657806370a08231146102ca578063715018a6146102f057806378c8cda7146102f85780638da5cb5b1461031e57806395d89b4114610326578063a457c2d71461032e578063a9059cbb1461035a578063bc5920ba14610386578063dd62ed3e1461038e578063f52e308e146103bc578063f80f5dd5146103e2575b600080fd5b610109610408565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014357818101518382015260200161012b565b50505050905090810190601f1680156101705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101aa6004803603604081101561019457600080fd5b506001600160a01b03813516906020013561049e565b604080519115158252519081900360200190f35b6101aa600480360360208110156101d457600080fd5b50356001600160a01b03166104bb565b61020a600480360360208110156101fa57600080fd5b50356001600160a01b03166104d9565b005b610214610634565b60408051918252519081900360200190f35b6101aa6004803603606081101561023c57600080fd5b506001600160a01b0381358116916020810135909116906040013561063a565b6102646106c1565b6040805160ff9092168252519081900360200190f35b6101aa6004803603604081101561029057600080fd5b506001600160a01b0381351690602001356106ca565b6102ae610718565b604080516001600160a01b039092168252519081900360200190f35b610214600480360360208110156102e057600080fd5b50356001600160a01b0316610727565b61020a610742565b61020a6004803603602081101561030e57600080fd5b50356001600160a01b03166107e3565b6102ae6108dc565b6101096108eb565b6101aa6004803603604081101561034457600080fd5b506001600160a01b03813516906020013561094c565b6101aa6004803603604081101561037057600080fd5b506001600160a01b0381351690602001356109b4565b61020a6109c8565b610214600480360360408110156103a457600080fd5b506001600160a01b0381358116916020013516610ab4565b61020a600480360360208110156103d257600080fd5b50356001600160a01b0316610adf565b61020a600480360360208110156103f857600080fd5b50356001600160a01b0316610b4b565b606a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104945780601f1061046957610100808354040283529160200191610494565b820191906000526020600020905b81548152906001019060200180831161047757829003601f168201915b5050505050905090565b60006104b26104ab610c03565b8484610c07565b50600192915050565b6001600160a01b031660009081526099602052604090205460ff1690565b6104e1610c03565b6001600160a01b03166104f26108dc565b6001600160a01b031614610536576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661057a576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156105c6576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b0382811691161415610612576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b60695490565b6000610647848484610cf3565b6106b784610653610c03565b6106b2856040518060600160405280602881526020016110f4602891396001600160a01b038a16600090815260686020526040812090610691610c03565b6001600160a01b031681526020810191909152604001600020549190610e3e565b610c07565b5060019392505050565b606c5460ff1690565b60006104b26106d7610c03565b846106b285606860006106e8610c03565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610ed5565b6034546001600160a01b031690565b6001600160a01b031660009081526067602052604090205490565b61074a610c03565b6001600160a01b031661075b6108dc565b6001600160a01b03161461079f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b03169060008051602061111c833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b6107eb610c03565b6001600160a01b03166107fc6108dc565b6001600160a01b031614610840576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61084981610727565b15610884576040805162461bcd60e51b81526020600482015260066024820152652b2a2fa1272d60d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19169055815192835290517fde8cf212af7ce38b2840785a2768d97ff2dbf3c21b516961cec0061e134c2a1e9281900390910190a150565b6033546001600160a01b031690565b606b8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104945780601f1061046957610100808354040283529160200191610494565b60006104b2610959610c03565b846106b2856040518060600160405280602581526020016111a56025913960686000610983610c03565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610e3e565b60006104b26109c1610c03565b8484610cf3565b6034546001600160a01b0316610a0d576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610a15610c03565b6034546001600160a01b03908116911614610a60576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b03928316929091169060008051602061111c83398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6001600160a01b03918216600090815260686020908152604080832093909416825291909152205490565b610ae7610c03565b6001600160a01b0316610af86108dc565b6001600160a01b031614610b3c576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610b4881600019610f34565b50565b610b53610c03565b6001600160a01b0316610b646108dc565b6001600160a01b031614610ba8576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19166001179055815192835290517f4790a4adb426ca2345bb5108f6e454eae852a7bf687544cd66a7270dff3a41d69281900390910190a150565b3390565b6001600160a01b038316610c4c5760405162461bcd60e51b81526004018080602001828103825260248152602001806111816024913960400191505060405180910390fd5b6001600160a01b038216610c915760405162461bcd60e51b81526004018080602001828103825260228152602001806110ac6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260686020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610d385760405162461bcd60e51b815260040180806020018281038252602581526020018061115c6025913960400191505060405180910390fd5b6001600160a01b038216610d7d5760405162461bcd60e51b81526004018080602001828103825260238152602001806110896023913960400191505060405180910390fd5b610d88838383611014565b610dc5816040518060600160405280602681526020016110ce602691396001600160a01b0386166000908152606760205260409020549190610e3e565b6001600160a01b038085166000908152606760205260408082209390935590841681522054610df49082610ed5565b6001600160a01b03808416600081815260676020908152604091829020949094558051858152905191939287169260008051602061113c83398151915292918290030190a3505050565b60008184841115610ecd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e92578181015183820152602001610e7a565b50505050905090810190601f168015610ebf5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610f2d576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610f8f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610f9b60008383611014565b606954610fa89082610ed5565b6069556001600160a01b038216600090815260676020526040902054610fce9082610ed5565b6001600160a01b038316600081815260676020908152604080832094909455835185815293519293919260008051602061113c8339815191529281900390910190a35050565b61101f838383611083565b6001600160a01b03831615611083576001600160a01b03831660009081526099602052604090205460ff16611083576040805162461bcd60e51b815260206004820152600560248201526456545f4e5760d81b604482015290519081900360640190fd5b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203c3f84b47f63279f505cd0f747d51ad08a919299177fcd94b1ae924c152abd3f64736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100fc5760003560e01c806306fdde0314610101578063095ea7b31461017e57806309fd8212146101be57806313af4035146101e457806318160ddd1461020c57806323b872dd14610226578063313ce5671461025c578063395093511461027a5780636c8381f8146102a657806370a08231146102ca578063715018a6146102f057806378c8cda7146102f85780638da5cb5b1461031e57806395d89b4114610326578063a457c2d71461032e578063a9059cbb1461035a578063bc5920ba14610386578063dd62ed3e1461038e578063f52e308e146103bc578063f80f5dd5146103e2575b600080fd5b610109610408565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014357818101518382015260200161012b565b50505050905090810190601f1680156101705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101aa6004803603604081101561019457600080fd5b506001600160a01b03813516906020013561049e565b604080519115158252519081900360200190f35b6101aa600480360360208110156101d457600080fd5b50356001600160a01b03166104bb565b61020a600480360360208110156101fa57600080fd5b50356001600160a01b03166104d9565b005b610214610634565b60408051918252519081900360200190f35b6101aa6004803603606081101561023c57600080fd5b506001600160a01b0381358116916020810135909116906040013561063a565b6102646106c1565b6040805160ff9092168252519081900360200190f35b6101aa6004803603604081101561029057600080fd5b506001600160a01b0381351690602001356106ca565b6102ae610718565b604080516001600160a01b039092168252519081900360200190f35b610214600480360360208110156102e057600080fd5b50356001600160a01b0316610727565b61020a610742565b61020a6004803603602081101561030e57600080fd5b50356001600160a01b03166107e3565b6102ae6108dc565b6101096108eb565b6101aa6004803603604081101561034457600080fd5b506001600160a01b03813516906020013561094c565b6101aa6004803603604081101561037057600080fd5b506001600160a01b0381351690602001356109b4565b61020a6109c8565b610214600480360360408110156103a457600080fd5b506001600160a01b0381358116916020013516610ab4565b61020a600480360360208110156103d257600080fd5b50356001600160a01b0316610adf565b61020a600480360360208110156103f857600080fd5b50356001600160a01b0316610b4b565b606a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104945780601f1061046957610100808354040283529160200191610494565b820191906000526020600020905b81548152906001019060200180831161047757829003601f168201915b5050505050905090565b60006104b26104ab610c03565b8484610c07565b50600192915050565b6001600160a01b031660009081526099602052604090205460ff1690565b6104e1610c03565b6001600160a01b03166104f26108dc565b6001600160a01b031614610536576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661057a576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156105c6576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b0382811691161415610612576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b60695490565b6000610647848484610cf3565b6106b784610653610c03565b6106b2856040518060600160405280602881526020016110f4602891396001600160a01b038a16600090815260686020526040812090610691610c03565b6001600160a01b031681526020810191909152604001600020549190610e3e565b610c07565b5060019392505050565b606c5460ff1690565b60006104b26106d7610c03565b846106b285606860006106e8610c03565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610ed5565b6034546001600160a01b031690565b6001600160a01b031660009081526067602052604090205490565b61074a610c03565b6001600160a01b031661075b6108dc565b6001600160a01b03161461079f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b03169060008051602061111c833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b6107eb610c03565b6001600160a01b03166107fc6108dc565b6001600160a01b031614610840576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61084981610727565b15610884576040805162461bcd60e51b81526020600482015260066024820152652b2a2fa1272d60d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19169055815192835290517fde8cf212af7ce38b2840785a2768d97ff2dbf3c21b516961cec0061e134c2a1e9281900390910190a150565b6033546001600160a01b031690565b606b8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104945780601f1061046957610100808354040283529160200191610494565b60006104b2610959610c03565b846106b2856040518060600160405280602581526020016111a56025913960686000610983610c03565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610e3e565b60006104b26109c1610c03565b8484610cf3565b6034546001600160a01b0316610a0d576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610a15610c03565b6034546001600160a01b03908116911614610a60576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b03928316929091169060008051602061111c83398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6001600160a01b03918216600090815260686020908152604080832093909416825291909152205490565b610ae7610c03565b6001600160a01b0316610af86108dc565b6001600160a01b031614610b3c576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610b4881600019610f34565b50565b610b53610c03565b6001600160a01b0316610b646108dc565b6001600160a01b031614610ba8576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116600081815260996020908152604091829020805460ff19166001179055815192835290517f4790a4adb426ca2345bb5108f6e454eae852a7bf687544cd66a7270dff3a41d69281900390910190a150565b3390565b6001600160a01b038316610c4c5760405162461bcd60e51b81526004018080602001828103825260248152602001806111816024913960400191505060405180910390fd5b6001600160a01b038216610c915760405162461bcd60e51b81526004018080602001828103825260228152602001806110ac6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260686020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610d385760405162461bcd60e51b815260040180806020018281038252602581526020018061115c6025913960400191505060405180910390fd5b6001600160a01b038216610d7d5760405162461bcd60e51b81526004018080602001828103825260238152602001806110896023913960400191505060405180910390fd5b610d88838383611014565b610dc5816040518060600160405280602681526020016110ce602691396001600160a01b0386166000908152606760205260409020549190610e3e565b6001600160a01b038085166000908152606760205260408082209390935590841681522054610df49082610ed5565b6001600160a01b03808416600081815260676020908152604091829020949094558051858152905191939287169260008051602061113c83398151915292918290030190a3505050565b60008184841115610ecd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e92578181015183820152602001610e7a565b50505050905090810190601f168015610ebf5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610f2d576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610f8f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610f9b60008383611014565b606954610fa89082610ed5565b6069556001600160a01b038216600090815260676020526040902054610fce9082610ed5565b6001600160a01b038316600081815260676020908152604080832094909455835185815293519293919260008051602061113c8339815191529281900390910190a35050565b61101f838383611083565b6001600160a01b03831615611083576001600160a01b03831660009081526099602052604090205460ff16611083576040805162461bcd60e51b815260206004820152600560248201526456545f4e5760d81b604482015290519081900360640190fd5b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203c3f84b47f63279f505cd0f747d51ad08a919299177fcd94b1ae924c152abd3f64736f6c63430007060033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/utils/common/perpV2Utils.ts b/utils/common/perpV2Utils.ts index f25eff23d..dd9b3d577 100644 --- a/utils/common/perpV2Utils.ts +++ b/utils/common/perpV2Utils.ts @@ -73,7 +73,7 @@ export async function calculateUSDCTransferIn( const allPositionInfo = await module.getPositionNotionalInfo(setToken.address); const collateralBalance = (await module.getAccountInfo(setToken.address)).collateralBalance; - const netQuoteBalance = await fixture.accountBalance.getNetQuoteBalance(setToken.address); + const { netQuoteBalance } = await fixture.accountBalance.getNetQuoteBalanceAndPendingFee(setToken.address); for (const positionInfo of allPositionInfo) { const spotPrice = await fixture.getSpotPrice(positionInfo.baseToken); diff --git a/utils/fixtures/perpV2Fixture.ts b/utils/fixtures/perpV2Fixture.ts index 593292baf..333dbae5e 100644 --- a/utils/fixtures/perpV2Fixture.ts +++ b/utils/fixtures/perpV2Fixture.ts @@ -180,7 +180,7 @@ export class PerpV2Fixture { this.marketRegistry.address, this.orderBook.address, this.clearingHouseConfig.address, - this.insuranceFund.address, + this.insuranceFund.address ); this.exchange.setAccountBalance(this.accountBalance.address); @@ -237,9 +237,11 @@ export class PerpV2Fixture { this.vQuote.address, this.uniV3Factory.address, this.exchange.address, - this.accountBalance.address, + this.accountBalance.address ); + await this.vault.setClearingHouse(this.clearingHouse.address); + this.quoter = await this._deployer.external.deployPerpV2Quoter(); await this.quoter.initialize(this.marketRegistry.address); @@ -300,7 +302,7 @@ export class PerpV2Fixture { upperTick, minBase: 0, minQuote: 0, - useTakerPosition: false, + useTakerBalance: false, deadline: constants.MaxUint256, }); } @@ -329,7 +331,7 @@ export class PerpV2Fixture { upperTick, minBase: 0, minQuote: 0, - useTakerPosition: false, + useTakerBalance: false, deadline: constants.MaxUint256, }); } @@ -361,7 +363,6 @@ export class PerpV2Fixture { deltaBase: BigNumber; deltaQuote: BigNumber; }> { - const { deltaBase, deltaQuote, From 4f87d62b2896efee412f823a44b58ec6d806feeb Mon Sep 17 00:00:00 2001 From: cgewecke Date: Mon, 22 Nov 2021 13:06:33 -0800 Subject: [PATCH 2/3] Add integration test for withdraw dust and remove module --- .../perpV2LeverageSlippageIssuance.spec.ts | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/test/integration/perpV2LeverageSlippageIssuance.spec.ts b/test/integration/perpV2LeverageSlippageIssuance.spec.ts index 07309ce74..3c5bba1a9 100644 --- a/test/integration/perpV2LeverageSlippageIssuance.spec.ts +++ b/test/integration/perpV2LeverageSlippageIssuance.spec.ts @@ -935,10 +935,15 @@ describe("PerpV2LeverageSlippageIssuance", () => { }); // Total supply is 1 as we try to close out the Perp account - // Not working.... NEFC (this may be a bug fixed in v0.14.0-staging) - it.skip("should be possible to withdraw dust and remove the module", async () => { + it("should be possible to withdraw dust and remove the module", async () => { + // Redeem to `1` await subject(); + // Check precondition + const initialModules = await setToken.getModules(); + expect(initialModules.includes(perpLeverageModule.address)).eq(true); + + // Trade to `0` const { baseUnit: initialBaseUnit } = (await perpLeverageModule.getPositionUnitInfo(subjectSetToken))[0]; @@ -954,15 +959,26 @@ describe("PerpV2LeverageSlippageIssuance", () => { baseUnit: finalBaseUnit } = (await perpLeverageModule.getPositionUnitInfo(subjectSetToken))[0]; - expect(finalBaseUnit).eq(ZERO); - + // Withdraw remaining free collateral const freeCollateral = await perpSetup.vault.getFreeCollateral(subjectSetToken); + const freeCollateralPositionUnit = preciseDiv(freeCollateral, await setToken.totalSupply()); - // Throws V_NEFC - // baseUnit = 0 - // quoteUnit = -20 // freeCollateral = 9737806 - await perpLeverageModule.connect(owner.wallet).withdraw(subjectSetToken, freeCollateral); + await perpLeverageModule + .connect(owner.wallet) + .withdraw(subjectSetToken, freeCollateralPositionUnit); + + const { + collateralBalance: finalCollateralBalance + } = await perpLeverageModule.getAccountInfo(subjectSetToken); + + /// Remove module + await setToken.removeModule(perpLeverageModule.address); + const finalModules = await setToken.getModules(); + + expect(finalModules.includes(perpLeverageModule)).eq(false); + expect(finalBaseUnit).eq(ZERO); + expect(finalCollateralBalance).eq(ZERO); }); }); }); From 21d0a375f7803aaab23dbd7e2078361f41801c31 Mon Sep 17 00:00:00 2001 From: cgewecke Date: Mon, 22 Nov 2021 13:17:23 -0800 Subject: [PATCH 3/3] Fix test --- test/integration/perpV2LeverageSlippageIssuance.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration/perpV2LeverageSlippageIssuance.spec.ts b/test/integration/perpV2LeverageSlippageIssuance.spec.ts index 3c5bba1a9..45760b22f 100644 --- a/test/integration/perpV2LeverageSlippageIssuance.spec.ts +++ b/test/integration/perpV2LeverageSlippageIssuance.spec.ts @@ -976,7 +976,7 @@ describe("PerpV2LeverageSlippageIssuance", () => { await setToken.removeModule(perpLeverageModule.address); const finalModules = await setToken.getModules(); - expect(finalModules.includes(perpLeverageModule)).eq(false); + expect(finalModules.includes(perpLeverageModule.address)).eq(false); expect(finalBaseUnit).eq(ZERO); expect(finalCollateralBalance).eq(ZERO); });