@gearbox-protocol/sdk 0.0.108 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/lib/apy/convexAPY.d.ts +9 -5
- package/lib/apy/convexAPY.js +35 -75
- package/lib/apy/curveAPY.d.ts +4 -0
- package/lib/apy/curveAPY.js +94 -0
- package/lib/apy/index.d.ts +6 -0
- package/lib/apy/index.js +20 -0
- package/lib/apy/lidoAPY.d.ts +1 -1
- package/lib/apy/lidoAPY.js +10 -10
- package/lib/apy/yearnAPY.d.ts +4 -0
- package/lib/apy/yearnAPY.js +90 -0
- package/lib/contracts/adapters.js +1 -1
- package/lib/contracts/contracts.d.ts +5 -5
- package/lib/contracts/contracts.js +66 -71
- package/lib/contracts/contractsRegister.js +3 -2
- package/lib/contracts/protocols.js +6 -6
- package/lib/core/constants.d.ts +3 -2
- package/lib/core/constants.js +6 -5
- package/lib/core/creditAccount.d.ts +4 -3
- package/lib/core/creditAccount.js +19 -12
- package/lib/core/creditManager.d.ts +3 -1
- package/lib/core/creditManager.js +28 -12
- package/lib/core/creditSession.d.ts +1 -1
- package/lib/core/creditSession.js +1 -1
- package/lib/core/errors.d.ts +1 -1
- package/lib/core/eventOrTx.d.ts +2 -2
- package/lib/core/eventOrTx.js +1 -1
- package/lib/core/events.d.ts +1 -1
- package/lib/core/events.js +32 -31
- package/lib/core/history.d.ts +2 -2
- package/lib/core/pool.js +5 -5
- package/lib/core/strategy.d.ts +5 -3
- package/lib/core/strategy.js +6 -4
- package/lib/core/tokenDistributor.js +1 -1
- package/lib/core/transactions.js +22 -22
- package/lib/index.d.ts +30 -30
- package/lib/index.js +38 -37
- package/lib/oracles/oracles.d.ts +5 -6
- package/lib/oracles/priceFeeds.d.ts +1 -1
- package/lib/oracles/priceFeeds.js +292 -194
- package/lib/pathfinder/contracts.js +4 -4
- package/lib/pathfinder/curveLP.d.ts +2 -2
- package/lib/pathfinder/curveLP.js +4 -4
- package/lib/pathfinder/path.d.ts +3 -3
- package/lib/pathfinder/path.js +7 -7
- package/lib/pathfinder/tradeTypes.d.ts +2 -2
- package/lib/pathfinder/yVault.d.ts +3 -3
- package/lib/pathfinder/yVault.js +5 -5
- package/lib/strategies/convex.js +13 -13
- package/lib/strategies/creditFacade.js +6 -6
- package/lib/strategies/curve.js +17 -19
- package/lib/strategies/lido.d.ts +1 -1
- package/lib/strategies/lido.js +3 -3
- package/lib/strategies/uniswapV2.js +3 -3
- package/lib/strategies/uniswapV3.js +6 -6
- package/lib/strategies/yearn.js +11 -7
- package/lib/tokens/connectors.js +1 -1
- package/lib/tokens/convex.d.ts +5 -2
- package/lib/tokens/convex.js +92 -66
- package/lib/tokens/curveLP.d.ts +2 -1
- package/lib/tokens/curveLP.js +41 -37
- package/lib/tokens/gear.d.ts +1 -1
- package/lib/tokens/gear.js +6 -6
- package/lib/tokens/normal.d.ts +1 -0
- package/lib/tokens/normal.js +181 -177
- package/lib/tokens/token.d.ts +10 -5
- package/lib/tokens/token.js +74 -65
- package/lib/tokens/tokenData.d.ts +1 -1
- package/lib/tokens/tokenData.js +6 -7
- package/lib/tokens/yearn.d.ts +2 -1
- package/lib/tokens/yearn.js +30 -26
- package/lib/utils/extracter.d.ts +11 -0
- package/lib/utils/extracter.js +19 -0
- package/lib/utils/formatter.js +19 -12
- package/lib/utils/mappers.d.ts +3 -3
- package/lib/utils/mappers.js +1 -1
- package/lib/utils/multicall.js +2 -2
- package/lib/utils/network.js +3 -3
- package/lib/utils/price.d.ts +8 -0
- package/lib/utils/price.js +26 -0
- package/lib/utils/repeater.js +6 -6
- package/package.json +30 -23
- package/.eslintignore +0 -5
- package/.eslintrc.js +0 -52
- package/.husky/pre-push +0 -4
- package/.idea/gearbox-sdk.iml +0 -12
- package/.idea/modules.xml +0 -8
- package/.idea/vcs.xml +0 -6
- package/.prettierrc +0 -10
- package/lib/core/price.d.ts +0 -2
- package/lib/core/price.js +0 -14
- package/lib/types/@chainlink/contracts/src/v0.6/index.d.ts +0 -2
- package/lib/types/@chainlink/contracts/src/v0.6/index.js +0 -2
- package/lib/types/@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.d.ts +0 -146
- package/lib/types/@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.js +0 -2
- package/lib/types/@chainlink/contracts/src/v0.6/interfaces/index.d.ts +0 -1
- package/lib/types/@chainlink/contracts/src/v0.6/interfaces/index.js +0 -2
- package/lib/types/contracts/integrations/lido/IstETH.d.ts +0 -154
- package/lib/types/contracts/integrations/lido/IstETH.js +0 -2
- package/lib/types/contracts/interfaces/ICreditFacade.sol/ICreditFacadeBalanceChecker.d.ts +0 -50
- package/lib/types/contracts/interfaces/ICreditFacade.sol/ICreditFacadeBalanceChecker.js +0 -2
- package/lib/types/contracts/pathfinder/Balances.sol/BalanceOps.d.ts +0 -27
- package/lib/types/contracts/pathfinder/Balances.sol/BalanceOps.js +0 -2
- package/lib/types/contracts/pathfinder/Balances.sol/index.d.ts +0 -1
- package/lib/types/contracts/pathfinder/Balances.sol/index.js +0 -2
- package/lib/types/contracts/pathfinder/NormalTokenPathFinder.sol/PathFinder.d.ts +0 -269
- package/lib/types/contracts/pathfinder/NormalTokenPathFinder.sol/PathFinder.js +0 -2
- package/lib/types/contracts/pathfinder/NormalTokenPathFinder.sol/index.d.ts +0 -1
- package/lib/types/contracts/pathfinder/NormalTokenPathFinder.sol/index.js +0 -2
- package/lib/types/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/VirtualBalanceWrapper.d.ts +0 -58
- package/lib/types/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/VirtualBalanceWrapper.js +0 -2
- package/lib/types/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/UniswapV2PathFinderAdapterTest.d.ts +0 -528
- package/lib/types/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/UniswapV2PathFinderAdapterTest.js +0 -2
- package/lib/types/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/UniswapV3PathFinderAdapterTest.d.ts +0 -528
- package/lib/types/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/UniswapV3PathFinderAdapterTest.js +0 -2
- package/lib/types/factories/@chainlink/contracts/src/v0.6/index.d.ts +0 -1
- package/lib/types/factories/@chainlink/contracts/src/v0.6/index.js +0 -30
- package/lib/types/factories/@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface__factory.d.ts +0 -22
- package/lib/types/factories/@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface__factory.js +0 -133
- package/lib/types/factories/@chainlink/contracts/src/v0.6/interfaces/index.d.ts +0 -1
- package/lib/types/factories/@chainlink/contracts/src/v0.6/interfaces/index.js +0 -8
- package/lib/types/factories/contracts/integrations/lido/IstETH__factory.d.ts +0 -35
- package/lib/types/factories/contracts/integrations/lido/IstETH__factory.js +0 -224
- package/lib/types/factories/contracts/interfaces/ICreditFacade.sol/ICreditFacadeBalanceChecker__factory.d.ts +0 -18
- package/lib/types/factories/contracts/interfaces/ICreditFacade.sol/ICreditFacadeBalanceChecker__factory.js +0 -40
- package/lib/types/factories/contracts/pathfinder/Balances.sol/BalanceOps__factory.d.ts +0 -28
- package/lib/types/factories/contracts/pathfinder/Balances.sol/BalanceOps__factory.js +0 -76
- package/lib/types/factories/contracts/pathfinder/Balances.sol/index.d.ts +0 -1
- package/lib/types/factories/contracts/pathfinder/Balances.sol/index.js +0 -8
- package/lib/types/factories/contracts/pathfinder/NormalTokenPathFinder.sol/PathFinder__factory.d.ts +0 -144
- package/lib/types/factories/contracts/pathfinder/NormalTokenPathFinder.sol/PathFinder__factory.js +0 -522
- package/lib/types/factories/contracts/pathfinder/NormalTokenPathFinder.sol/index.d.ts +0 -1
- package/lib/types/factories/contracts/pathfinder/NormalTokenPathFinder.sol/index.js +0 -8
- package/lib/types/factories/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/VirtualBalanceWrapper__factory.d.ts +0 -34
- package/lib/types/factories/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/VirtualBalanceWrapper__factory.js +0 -110
- package/lib/types/factories/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/UniswapV2PathFinderAdapterTest__factory.d.ts +0 -65
- package/lib/types/factories/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/UniswapV2PathFinderAdapterTest__factory.js +0 -775
- package/lib/types/factories/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/UniswapV3PathFinderAdapterTest__factory.d.ts +0 -65
- package/lib/types/factories/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/UniswapV3PathFinderAdapterTest__factory.js +0 -775
- package/lib/types/hardhat.d.ts +0 -2715
- package/src/abi/adapters/YearnV2.sol/YearnAdapter.dbg.json +0 -4
- package/src/abi/adapters/YearnV2.sol/YearnAdapter.json +0 -455
- package/src/abi/core/ACL.sol/ACL.dbg.json +0 -4
- package/src/abi/core/ACL.sol/ACL.json +0 -262
- package/src/abi/core/ACLTrait.sol/ACLTrait.dbg.json +0 -4
- package/src/abi/core/ACLTrait.sol/ACLTrait.json +0 -64
- package/src/abi/core/AccountMining.sol/AccountMining.dbg.json +0 -4
- package/src/abi/core/AccountMining.sol/AccountMining.json +0 -150
- package/src/abi/core/AddressProvider.sol/AddressProvider.dbg.json +0 -4
- package/src/abi/core/AddressProvider.sol/AddressProvider.json +0 -496
- package/src/abi/core/ContractsRegister.sol/ContractsRegister.dbg.json +0 -4
- package/src/abi/core/ContractsRegister.sol/ContractsRegister.json +0 -255
- package/src/abi/credit/LeverageActions.sol/LeveragedActions.dbg.json +0 -4
- package/src/abi/credit/LeverageActions.sol/LeveragedActions.json +0 -514
- package/src/abi/deployer/AdaptersDeployer.sol/AdaptersDeployer.dbg.json +0 -4
- package/src/abi/deployer/AdaptersDeployer.sol/AdaptersDeployer.json +0 -160
- package/src/abi/deployer/GenesisDeployer.sol/GenesisDeployer.dbg.json +0 -4
- package/src/abi/deployer/GenesisDeployer.sol/GenesisDeployer.json +0 -189
- package/src/abi/deployer/PoolDeployer.sol/PoolDeployer.dbg.json +0 -4
- package/src/abi/deployer/PoolDeployer.sol/PoolDeployer.json +0 -215
- package/src/abi/fuzzing/FuzzHarness.sol/FuzzHarness.dbg.json +0 -4
- package/src/abi/fuzzing/FuzzHarness.sol/FuzzHarness.json +0 -50
- package/src/abi/integrations/yearn/IYVault.sol/IYVault.dbg.json +0 -4
- package/src/abi/integrations/yearn/IYVault.sol/IYVault.json +0 -400
- package/src/abi/interfaces/IGearToken.sol/IGearToken.dbg.json +0 -4
- package/src/abi/interfaces/IGearToken.sol/IGearToken.json +0 -331
- package/src/abi/interfaces/IMerkleDistributor.sol/IMerkleDistributor.dbg.json +0 -4
- package/src/abi/interfaces/IMerkleDistributor.sol/IMerkleDistributor.json +0 -98
- package/src/abi/mocks/core/ACLTraitTest.sol/ACLTraitTest.dbg.json +0 -4
- package/src/abi/mocks/core/ACLTraitTest.sol/ACLTraitTest.json +0 -96
- package/src/abi/mocks/credit/ExecutorMock.sol/ExecutorMock.dbg.json +0 -4
- package/src/abi/mocks/credit/ExecutorMock.sol/ExecutorMock.json +0 -61
- package/src/abi/mocks/integrations/CurveMock.sol/CurveMock.dbg.json +0 -4
- package/src/abi/mocks/integrations/CurveMock.sol/CurveMock.json +0 -168
- package/src/abi/mocks/integrations/YearnMock.sol/YearnMock.dbg.json +0 -4
- package/src/abi/mocks/integrations/YearnMock.sol/YearnMock.json +0 -556
- package/src/abi/mocks/oracles/ChainlinkPriceFeedMock.sol/ChainlinkPriceFeedMock.dbg.json +0 -4
- package/src/abi/mocks/oracles/ChainlinkPriceFeedMock.sol/ChainlinkPriceFeedMock.json +0 -151
- package/src/abi/mocks/pool/CreditManagerMockForPoolTest.sol/CreditManagerMockForPoolTest.dbg.json +0 -4
- package/src/abi/mocks/pool/CreditManagerMockForPoolTest.sol/CreditManagerMockForPoolTest.json +0 -89
- package/src/abi/mocks/tokens/ERC20Blocking.sol/ERC20BlockingMock.dbg.json +0 -4
- package/src/abi/mocks/tokens/ERC20Blocking.sol/ERC20BlockingMock.json +0 -387
- package/src/abi/mocks/tokens/ERC20Fee.sol/TokenFeeMock.dbg.json +0 -4
- package/src/abi/mocks/tokens/ERC20Fee.sol/TokenFeeMock.json +0 -385
- package/src/abi/oracles/YearnPriceFeed.sol/YearnPriceFeed.dbg.json +0 -4
- package/src/abi/oracles/YearnPriceFeed.sol/YearnPriceFeed.json +0 -321
- package/src/abi/support/PathFinder.sol/PathFinder.dbg.json +0 -4
- package/src/abi/support/PathFinder.sol/PathFinder.json +0 -189
- package/src/abi/tokens/GearNFT.sol/GearBeta.dbg.json +0 -4
- package/src/abi/tokens/GearNFT.sol/GearBeta.json +0 -485
- package/src/abi/tokens/TokenDistributor.sol/TokenDistributor.dbg.json +0 -4
- package/src/abi/tokens/TokenDistributor.sol/TokenDistributor.json +0 -439
- package/src/abi/tokens/Vesting.sol/StepVesting.dbg.json +0 -4
- package/src/abi/tokens/Vesting.sol/StepVesting.json +0 -254
- package/src/apy/convexAPY.ts +0 -250
- package/src/apy/lidoAPY.ts +0 -89
- package/src/config.ts +0 -2
- package/src/contracts/adapters.ts +0 -18
- package/src/contracts/contracts.ts +0 -438
- package/src/contracts/contractsRegister.ts +0 -67
- package/src/contracts/protocols.ts +0 -40
- package/src/core/constants.ts +0 -51
- package/src/core/creditAccount.ts +0 -152
- package/src/core/creditManager.ts +0 -282
- package/src/core/creditOperation.ts +0 -9
- package/src/core/creditSession.ts +0 -87
- package/src/core/errors.ts +0 -70
- package/src/core/eventOrTx.ts +0 -97
- package/src/core/events.ts +0 -1259
- package/src/core/history.ts +0 -55
- package/src/core/multicall.ts +0 -6
- package/src/core/operations.ts +0 -41
- package/src/core/pool.ts +0 -81
- package/src/core/price.ts +0 -13
- package/src/core/strategy.ts +0 -134
- package/src/core/tokenDistributor.ts +0 -14
- package/src/core/transactions.ts +0 -492
- package/src/index.ts +0 -64
- package/src/oracles/oracles.ts +0 -48
- package/src/oracles/priceFeeds.ts +0 -546
- package/src/pathfinder/contracts.ts +0 -19
- package/src/pathfinder/convexLP.ts +0 -37
- package/src/pathfinder/curveLP.ts +0 -75
- package/src/pathfinder/path.ts +0 -174
- package/src/pathfinder/priority.ts +0 -14
- package/src/pathfinder/trade.ts +0 -90
- package/src/pathfinder/tradeTypes.ts +0 -105
- package/src/pathfinder/yVault.ts +0 -90
- package/src/payload/creditAccount.ts +0 -7
- package/src/payload/creditManager.ts +0 -24
- package/src/payload/creditSession.ts +0 -24
- package/src/payload/graphPayload.ts +0 -10
- package/src/payload/pool.ts +0 -3
- package/src/payload/token.ts +0 -5
- package/src/strategies/convex.ts +0 -408
- package/src/strategies/creditFacade.ts +0 -119
- package/src/strategies/curve.ts +0 -470
- package/src/strategies/lido.ts +0 -84
- package/src/strategies/uniswapV2.ts +0 -109
- package/src/strategies/uniswapV3.ts +0 -127
- package/src/strategies/yearn.ts +0 -208
- package/src/tokens/connectors.ts +0 -8
- package/src/tokens/convex.ts +0 -335
- package/src/tokens/curveLP.ts +0 -188
- package/src/tokens/gear.ts +0 -58
- package/src/tokens/normal.ts +0 -809
- package/src/tokens/token.ts +0 -238
- package/src/tokens/tokenData.ts +0 -87
- package/src/tokens/tokenType.ts +0 -12
- package/src/tokens/yearn.ts +0 -143
- package/src/types/@chainlink/contracts/index.ts +0 -5
- package/src/types/@chainlink/contracts/src/index.ts +0 -5
- package/src/types/@chainlink/contracts/src/v0.8/index.ts +0 -5
- package/src/types/@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.ts +0 -228
- package/src/types/@chainlink/contracts/src/v0.8/interfaces/index.ts +0 -4
- package/src/types/@chainlink/index.ts +0 -5
- package/src/types/@openzeppelin/contracts/access/Ownable.ts +0 -175
- package/src/types/@openzeppelin/contracts/access/index.ts +0 -4
- package/src/types/@openzeppelin/contracts/index.ts +0 -11
- package/src/types/@openzeppelin/contracts/security/Pausable.ts +0 -111
- package/src/types/@openzeppelin/contracts/security/index.ts +0 -4
- package/src/types/@openzeppelin/contracts/token/ERC20/ERC20.ts +0 -444
- package/src/types/@openzeppelin/contracts/token/ERC20/IERC20.ts +0 -322
- package/src/types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts +0 -364
- package/src/types/@openzeppelin/contracts/token/ERC20/extensions/index.ts +0 -4
- package/src/types/@openzeppelin/contracts/token/ERC20/index.ts +0 -7
- package/src/types/@openzeppelin/contracts/token/ERC721/ERC721.ts +0 -578
- package/src/types/@openzeppelin/contracts/token/ERC721/IERC721.ts +0 -527
- package/src/types/@openzeppelin/contracts/token/ERC721/IERC721Receiver.ts +0 -120
- package/src/types/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.ts +0 -581
- package/src/types/@openzeppelin/contracts/token/ERC721/extensions/index.ts +0 -4
- package/src/types/@openzeppelin/contracts/token/ERC721/index.ts +0 -8
- package/src/types/@openzeppelin/contracts/token/index.ts +0 -7
- package/src/types/@openzeppelin/contracts/utils/index.ts +0 -5
- package/src/types/@openzeppelin/contracts/utils/introspection/ERC165.ts +0 -102
- package/src/types/@openzeppelin/contracts/utils/introspection/IERC165.ts +0 -102
- package/src/types/@openzeppelin/contracts/utils/introspection/index.ts +0 -5
- package/src/types/@openzeppelin/index.ts +0 -5
- package/src/types/common.ts +0 -44
- package/src/types/contracts/adapters/AbstractAdapter.ts +0 -174
- package/src/types/contracts/adapters/UniversalAdapter.ts +0 -258
- package/src/types/contracts/adapters/convex/ConvexV1_BaseRewardPool.sol/ConvexV1BaseRewardPoolAdapter.ts +0 -1079
- package/src/types/contracts/adapters/convex/ConvexV1_BaseRewardPool.sol/index.ts +0 -4
- package/src/types/contracts/adapters/convex/ConvexV1_Booster.sol/ConvexV1BoosterAdapter.ts +0 -676
- package/src/types/contracts/adapters/convex/ConvexV1_Booster.sol/index.ts +0 -4
- package/src/types/contracts/adapters/convex/ConvexV1_ClaimZap.sol/ConvexV1ClaimZapAdapter.ts +0 -290
- package/src/types/contracts/adapters/convex/ConvexV1_ClaimZap.sol/index.ts +0 -4
- package/src/types/contracts/adapters/convex/ConvexV1_StakedPositionToken.sol/ConvexStakedPositionToken.ts +0 -393
- package/src/types/contracts/adapters/convex/ConvexV1_StakedPositionToken.sol/index.ts +0 -4
- package/src/types/contracts/adapters/convex/index.ts +0 -11
- package/src/types/contracts/adapters/curve/CurveV1_2.sol/CurveV1Adapter2Assets.ts +0 -1679
- package/src/types/contracts/adapters/curve/CurveV1_2.sol/index.ts +0 -4
- package/src/types/contracts/adapters/curve/CurveV1_3.sol/CurveV1Adapter3Assets.ts +0 -1685
- package/src/types/contracts/adapters/curve/CurveV1_3.sol/index.ts +0 -4
- package/src/types/contracts/adapters/curve/CurveV1_4.sol/CurveV1Adapter4Assets.ts +0 -1694
- package/src/types/contracts/adapters/curve/CurveV1_4.sol/index.ts +0 -4
- package/src/types/contracts/adapters/curve/CurveV1_Base.sol/CurveV1AdapterBase.ts +0 -1394
- package/src/types/contracts/adapters/curve/CurveV1_Base.sol/index.ts +0 -4
- package/src/types/contracts/adapters/curve/CurveV1_DepositZap.sol/CurveV1AdapterDeposit.ts +0 -1394
- package/src/types/contracts/adapters/curve/CurveV1_DepositZap.sol/index.ts +0 -4
- package/src/types/contracts/adapters/curve/CurveV1_stETH.sol/CurveV1AdapterStETH.ts +0 -1679
- package/src/types/contracts/adapters/curve/CurveV1_stETH.sol/index.ts +0 -4
- package/src/types/contracts/adapters/curve/CurveV1_stETHGateway.sol/CurveV1StETHPoolGateway.ts +0 -1232
- package/src/types/contracts/adapters/curve/CurveV1_stETHGateway.sol/index.ts +0 -4
- package/src/types/contracts/adapters/curve/index.ts +0 -17
- package/src/types/contracts/adapters/index.ts +0 -15
- package/src/types/contracts/adapters/lido/LidoV1.sol/LidoV1Adapter.ts +0 -689
- package/src/types/contracts/adapters/lido/LidoV1.sol/index.ts +0 -4
- package/src/types/contracts/adapters/lido/LidoV1_WETHGateway.sol/LidoV1Gateway.ts +0 -400
- package/src/types/contracts/adapters/lido/LidoV1_WETHGateway.sol/index.ts +0 -4
- package/src/types/contracts/adapters/lido/index.ts +0 -7
- package/src/types/contracts/adapters/uniswap/UniswapV2.sol/UniswapV2Adapter.ts +0 -1575
- package/src/types/contracts/adapters/uniswap/UniswapV2.sol/index.ts +0 -4
- package/src/types/contracts/adapters/uniswap/UniswapV3.sol/UniswapV3Adapter.ts +0 -532
- package/src/types/contracts/adapters/uniswap/UniswapV3.sol/index.ts +0 -4
- package/src/types/contracts/adapters/uniswap/index.ts +0 -7
- package/src/types/contracts/adapters/yearn/YearnV2.sol/YearnV2Adapter.ts +0 -744
- package/src/types/contracts/adapters/yearn/YearnV2.sol/index.ts +0 -4
- package/src/types/contracts/adapters/yearn/index.ts +0 -5
- package/src/types/contracts/core/ACL.ts +0 -564
- package/src/types/contracts/core/ACLTrait.ts +0 -170
- package/src/types/contracts/core/AccountFactory.ts +0 -680
- package/src/types/contracts/core/AddressProvider.ts +0 -706
- package/src/types/contracts/core/ContractsRegister.ts +0 -456
- package/src/types/contracts/core/DataCompressor.ts +0 -625
- package/src/types/contracts/core/WETHGateway.ts +0 -263
- package/src/types/contracts/core/index.ts +0 -10
- package/src/types/contracts/credit/CreditAccount.ts +0 -406
- package/src/types/contracts/credit/CreditConfigurator.ts +0 -1297
- package/src/types/contracts/credit/CreditFacade.ts +0 -1654
- package/src/types/contracts/credit/CreditManager.ts +0 -1834
- package/src/types/contracts/credit/index.ts +0 -7
- package/src/types/contracts/factories/CreditManagerFactory.ts +0 -539
- package/src/types/contracts/factories/GenesisFactory.ts +0 -274
- package/src/types/contracts/factories/PoolFactory.ts +0 -350
- package/src/types/contracts/factories/index.ts +0 -6
- package/src/types/contracts/index.ts +0 -29
- package/src/types/contracts/integrations/convex/IBaseRewardPool.ts +0 -856
- package/src/types/contracts/integrations/convex/IBooster.ts +0 -407
- package/src/types/contracts/integrations/convex/IClaimZap.ts +0 -183
- package/src/types/contracts/integrations/convex/IConvexToken.ts +0 -407
- package/src/types/contracts/integrations/convex/IRewards.sol/IBasicRewards.ts +0 -225
- package/src/types/contracts/integrations/convex/IRewards.sol/IRewards.ts +0 -395
- package/src/types/contracts/integrations/convex/IRewards.sol/index.ts +0 -5
- package/src/types/contracts/integrations/convex/Interfaces.sol/ICrvDeposit.ts +0 -128
- package/src/types/contracts/integrations/convex/Interfaces.sol/ICurveGauge.ts +0 -242
- package/src/types/contracts/integrations/convex/Interfaces.sol/ICurveVoteEscrow.ts +0 -227
- package/src/types/contracts/integrations/convex/Interfaces.sol/IDeposit.ts +0 -371
- package/src/types/contracts/integrations/convex/Interfaces.sol/IFeeDistro.ts +0 -104
- package/src/types/contracts/integrations/convex/Interfaces.sol/IMinter.ts +0 -95
- package/src/types/contracts/integrations/convex/Interfaces.sol/IPools.ts +0 -290
- package/src/types/contracts/integrations/convex/Interfaces.sol/IRegistry.ts +0 -189
- package/src/types/contracts/integrations/convex/Interfaces.sol/IRewardFactory.ts +0 -310
- package/src/types/contracts/integrations/convex/Interfaces.sol/IRewards.ts +0 -395
- package/src/types/contracts/integrations/convex/Interfaces.sol/IStaker.ts +0 -652
- package/src/types/contracts/integrations/convex/Interfaces.sol/IStash.ts +0 -209
- package/src/types/contracts/integrations/convex/Interfaces.sol/IStashFactory.ts +0 -120
- package/src/types/contracts/integrations/convex/Interfaces.sol/ITokenFactory.ts +0 -104
- package/src/types/contracts/integrations/convex/Interfaces.sol/ITokenMinter.ts +0 -143
- package/src/types/contracts/integrations/convex/Interfaces.sol/IVestedEscrow.ts +0 -107
- package/src/types/contracts/integrations/convex/Interfaces.sol/IVoting.ts +0 -220
- package/src/types/contracts/integrations/convex/Interfaces.sol/IWalletChecker.ts +0 -84
- package/src/types/contracts/integrations/convex/Interfaces.sol/index.ts +0 -21
- package/src/types/contracts/integrations/convex/index.ts +0 -11
- package/src/types/contracts/integrations/curve/ICRVToken.ts +0 -422
- package/src/types/contracts/integrations/curve/ICurvePool.ts +0 -894
- package/src/types/contracts/integrations/curve/ICurvePoolStETH.ts +0 -772
- package/src/types/contracts/integrations/curve/ICurvePool_2.sol/ICurvePool2Assets.ts +0 -1179
- package/src/types/contracts/integrations/curve/ICurvePool_2.sol/index.ts +0 -4
- package/src/types/contracts/integrations/curve/ICurvePool_3.sol/ICurvePool3Assets.ts +0 -1185
- package/src/types/contracts/integrations/curve/ICurvePool_3.sol/index.ts +0 -4
- package/src/types/contracts/integrations/curve/ICurvePool_4.sol/ICurvePool4Assets.ts +0 -1194
- package/src/types/contracts/integrations/curve/ICurvePool_4.sol/index.ts +0 -4
- package/src/types/contracts/integrations/curve/ICurveRegistry.ts +0 -148
- package/src/types/contracts/integrations/curve/index.ts +0 -13
- package/src/types/contracts/integrations/index.ts +0 -13
- package/src/types/contracts/integrations/lido/ILidoOracle.ts +0 -115
- package/src/types/contracts/integrations/lido/IstETH.sol/IstETH.ts +0 -534
- package/src/types/contracts/integrations/lido/IstETH.sol/IstETHGetters.ts +0 -507
- package/src/types/contracts/integrations/lido/IstETH.sol/index.ts +0 -5
- package/src/types/contracts/integrations/lido/index.ts +0 -6
- package/src/types/contracts/integrations/uniswap/IQuoter.ts +0 -263
- package/src/types/contracts/integrations/uniswap/IUniswapV2Router01.ts +0 -1128
- package/src/types/contracts/integrations/uniswap/IUniswapV2Router02.ts +0 -1446
- package/src/types/contracts/integrations/uniswap/IUniswapV3.sol/ISwapRouter.ts +0 -318
- package/src/types/contracts/integrations/uniswap/IUniswapV3.sol/index.ts +0 -4
- package/src/types/contracts/integrations/uniswap/IUniswapV3SwapCallback.ts +0 -117
- package/src/types/contracts/integrations/uniswap/index.ts +0 -9
- package/src/types/contracts/integrations/yearn/IYVault.ts +0 -640
- package/src/types/contracts/integrations/yearn/index.ts +0 -4
- package/src/types/contracts/interfaces/IACL.sol/IACL.ts +0 -261
- package/src/types/contracts/interfaces/IACL.sol/IACLEvents.ts +0 -135
- package/src/types/contracts/interfaces/IACL.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/IAccountFactory.sol/IAccountFactory.ts +0 -396
- package/src/types/contracts/interfaces/IAccountFactory.sol/IAccountFactoryEvents.ts +0 -158
- package/src/types/contracts/interfaces/IAccountFactory.sol/IAccountFactoryGetters.ts +0 -198
- package/src/types/contracts/interfaces/IAccountFactory.sol/index.ts +0 -6
- package/src/types/contracts/interfaces/IAddressProvider.sol/IAddressProvider.ts +0 -290
- package/src/types/contracts/interfaces/IAddressProvider.sol/IAddressProviderEvents.ts +0 -79
- package/src/types/contracts/interfaces/IAddressProvider.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/IContractsRegister.sol/IContractsRegister.ts +0 -305
- package/src/types/contracts/interfaces/IContractsRegister.sol/IContractsRegisterEvents.ts +0 -89
- package/src/types/contracts/interfaces/IContractsRegister.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/ICreditAccount.sol/ICrediAccountExceptions.ts +0 -55
- package/src/types/contracts/interfaces/ICreditAccount.sol/ICreditAccount.ts +0 -406
- package/src/types/contracts/interfaces/ICreditAccount.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/ICreditConfigurator.sol/ICreditConfigurator.ts +0 -666
- package/src/types/contracts/interfaces/ICreditConfigurator.sol/ICreditConfiguratorEvents.ts +0 -384
- package/src/types/contracts/interfaces/ICreditConfigurator.sol/ICreditConfiguratorExceptions.ts +0 -56
- package/src/types/contracts/interfaces/ICreditConfigurator.sol/index.ts +0 -6
- package/src/types/contracts/interfaces/ICreditFacade.sol/ICreditFacade.ts +0 -1236
- package/src/types/contracts/interfaces/ICreditFacade.sol/ICreditFacadeEvents.ts +0 -358
- package/src/types/contracts/interfaces/ICreditFacade.sol/ICreditFacadeExceptions.ts +0 -55
- package/src/types/contracts/interfaces/ICreditFacade.sol/ICreditFacadeExtended.ts +0 -143
- package/src/types/contracts/interfaces/ICreditFacade.sol/index.ts +0 -7
- package/src/types/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2.ts +0 -1534
- package/src/types/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2Events.ts +0 -98
- package/src/types/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2Exceptions.ts +0 -55
- package/src/types/contracts/interfaces/ICreditManagerV2.sol/index.ts +0 -6
- package/src/types/contracts/interfaces/IDataCompressor.sol/IDataCompressor.ts +0 -516
- package/src/types/contracts/interfaces/IDataCompressor.sol/IDataCompressorExceptions.ts +0 -55
- package/src/types/contracts/interfaces/IDataCompressor.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/IDegenNFT.sol/IDegenNFT.ts +0 -209
- package/src/types/contracts/interfaces/IDegenNFT.sol/IDegenNFTExceptions.ts +0 -55
- package/src/types/contracts/interfaces/IDegenNFT.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/IGearToken.ts +0 -560
- package/src/types/contracts/interfaces/IInterestRateModel.ts +0 -123
- package/src/types/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeed.ts +0 -379
- package/src/types/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeedEvents.ts +0 -80
- package/src/types/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeedExceptions.ts +0 -55
- package/src/types/contracts/interfaces/ILPPriceFeed.sol/index.ts +0 -6
- package/src/types/contracts/interfaces/IMerkleDistributor.ts +0 -200
- package/src/types/contracts/interfaces/IPhantomERC20.ts +0 -381
- package/src/types/contracts/interfaces/IPoolService.sol/IPoolService.ts +0 -901
- package/src/types/contracts/interfaces/IPoolService.sol/IPoolServiceEvents.ts +0 -277
- package/src/types/contracts/interfaces/IPoolService.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/IPriceFeedAddress.ts +0 -177
- package/src/types/contracts/interfaces/IPriceFeedType.ts +0 -108
- package/src/types/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2.ts +0 -387
- package/src/types/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Events.ts +0 -79
- package/src/types/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Exceptions.ts +0 -55
- package/src/types/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Ext.ts +0 -429
- package/src/types/contracts/interfaces/IPriceOracle.sol/index.ts +0 -7
- package/src/types/contracts/interfaces/IVersion.ts +0 -81
- package/src/types/contracts/interfaces/IWETHGateway.ts +0 -201
- package/src/types/contracts/interfaces/V1/ICreditFilter.ts +0 -1288
- package/src/types/contracts/interfaces/V1/ICreditManager.ts +0 -1194
- package/src/types/contracts/interfaces/V1/IPriceOracle.sol/IPriceOracleV2.ts +0 -220
- package/src/types/contracts/interfaces/V1/IPriceOracle.sol/index.ts +0 -4
- package/src/types/contracts/interfaces/V1/index.ts +0 -7
- package/src/types/contracts/interfaces/adapters/IAdapter.sol/IAdapter.ts +0 -174
- package/src/types/contracts/interfaces/adapters/IAdapter.sol/IAdapterExceptions.ts +0 -55
- package/src/types/contracts/interfaces/adapters/IAdapter.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/adapters/IUniversalAdapter.sol/IUniversalAdapter.ts +0 -258
- package/src/types/contracts/interfaces/adapters/IUniversalAdapter.sol/IUniversalAdapterExceptions.ts +0 -55
- package/src/types/contracts/interfaces/adapters/IUniversalAdapter.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/IConvexV1BaseRewardPoolAdapter.ts +0 -1088
- package/src/types/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/IConvexV1BaseRewardPoolAdapterErrors.ts +0 -56
- package/src/types/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/adapters/convex/IConvexV1BoosterAdapter.ts +0 -553
- package/src/types/contracts/interfaces/adapters/convex/index.ts +0 -6
- package/src/types/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/ICurveV1Adapter.ts +0 -1397
- package/src/types/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/ICurveV1AdapterExceptions.ts +0 -55
- package/src/types/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/adapters/curve/index.ts +0 -5
- package/src/types/contracts/interfaces/adapters/index.ts +0 -15
- package/src/types/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1Adapter.ts +0 -486
- package/src/types/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1AdapterEvents.ts +0 -69
- package/src/types/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1AdapterExceptions.ts +0 -55
- package/src/types/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/index.ts +0 -6
- package/src/types/contracts/interfaces/adapters/lido/index.ts +0 -5
- package/src/types/contracts/interfaces/adapters/uniswap/IUniswapV2Adapter.ts +0 -1595
- package/src/types/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/IUniswapV3Adapter.ts +0 -532
- package/src/types/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/IUniswapV3AdapterExceptions.ts +0 -55
- package/src/types/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/adapters/uniswap/index.ts +0 -6
- package/src/types/contracts/interfaces/external/IWETH.ts +0 -159
- package/src/types/contracts/interfaces/external/index.ts +0 -4
- package/src/types/contracts/interfaces/index.ts +0 -43
- package/src/types/contracts/libraries/Errors.ts +0 -894
- package/src/types/contracts/libraries/index.ts +0 -4
- package/src/types/contracts/oracles/LPPriceFeed.ts +0 -451
- package/src/types/contracts/oracles/PriceFeedChecker.ts +0 -55
- package/src/types/contracts/oracles/PriceOracle.ts +0 -535
- package/src/types/contracts/oracles/ZeroPriceFeed.ts +0 -244
- package/src/types/contracts/oracles/curve/AbstractCurveLPPriceFeed.ts +0 -485
- package/src/types/contracts/oracles/curve/CurveLP2PriceFeed.ts +0 -519
- package/src/types/contracts/oracles/curve/CurveLP3PriceFeed.ts +0 -536
- package/src/types/contracts/oracles/curve/CurveLP4PriceFeed.ts +0 -553
- package/src/types/contracts/oracles/curve/index.ts +0 -7
- package/src/types/contracts/oracles/index.ts +0 -11
- package/src/types/contracts/oracles/yearn/YearnPriceFeed.ts +0 -499
- package/src/types/contracts/oracles/yearn/index.ts +0 -4
- package/src/types/contracts/pathfinder/ConvexPathFinder.ts +0 -211
- package/src/types/contracts/pathfinder/CurveLPPathFinder.ts +0 -335
- package/src/types/contracts/pathfinder/CurvePathFinder.ts +0 -514
- package/src/types/contracts/pathfinder/ISwapper.ts +0 -208
- package/src/types/contracts/pathfinder/NormalTokenPathFinder.ts +0 -526
- package/src/types/contracts/pathfinder/SwapPathFinder.ts +0 -424
- package/src/types/contracts/pathfinder/UniswapV2PathFinder.ts +0 -422
- package/src/types/contracts/pathfinder/UniswapV3PathFinder.ts +0 -559
- package/src/types/contracts/pathfinder/YearnPathFinder.ts +0 -200
- package/src/types/contracts/pathfinder/data/Balances.sol/BalanceOps.ts +0 -55
- package/src/types/contracts/pathfinder/data/Balances.sol/index.ts +0 -4
- package/src/types/contracts/pathfinder/data/index.ts +0 -5
- package/src/types/contracts/pathfinder/index.ts +0 -14
- package/src/types/contracts/pool/LinearInterestRateModel.ts +0 -276
- package/src/types/contracts/pool/PoolService.ts +0 -1314
- package/src/types/contracts/pool/index.ts +0 -5
- package/src/types/contracts/support/ContractUpgrader.ts +0 -284
- package/src/types/contracts/support/MerkleDistributor.ts +0 -200
- package/src/types/contracts/support/MultiCall.sol/Multicall2.ts +0 -451
- package/src/types/contracts/support/MultiCall.sol/index.ts +0 -4
- package/src/types/contracts/support/PauseMulticall.ts +0 -286
- package/src/types/contracts/support/index.ts +0 -8
- package/src/types/contracts/test/Playground.t.sol/PlaygroundTest.ts +0 -425
- package/src/types/contracts/test/Playground.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/AbstractAdapter.t.sol/AbstractAdapterTest.ts +0 -1196
- package/src/types/contracts/test/adapters/AbstractAdapter.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/AdapterTestHelper.ts +0 -814
- package/src/types/contracts/test/adapters/ConvexAdapterHelper.ts +0 -1351
- package/src/types/contracts/test/adapters/ConvexV1_BaseRewardPool.t.sol/ConvexV1AdapterBasePoolTest.ts +0 -1701
- package/src/types/contracts/test/adapters/ConvexV1_BaseRewardPool.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/ConvexV1_Booster.t.sol/ConvexV1AdapterBoosterTest.ts +0 -1583
- package/src/types/contracts/test/adapters/ConvexV1_Booster.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/ConvexV1_ClaimZap.t.sol/ConvexV1ClaimZapAdapterTest.ts +0 -1551
- package/src/types/contracts/test/adapters/ConvexV1_ClaimZap.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/CurveV1AdapterBaseMetapoolTest.t.sol/CurveV1AdapterBaseMetaPoolTest.ts +0 -1021
- package/src/types/contracts/test/adapters/CurveV1AdapterBaseMetapoolTest.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/CurveV1AdapterBaseTest.t.sol/CurveV1AdapterBaseTest.ts +0 -1325
- package/src/types/contracts/test/adapters/CurveV1AdapterBaseTest.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/CurveV1AdapterHelper.ts +0 -814
- package/src/types/contracts/test/adapters/CurveV1Adapter_2AssetsTest.t.sol/CurveV1Adapter2AssetsTest.ts +0 -1080
- package/src/types/contracts/test/adapters/CurveV1Adapter_2AssetsTest.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/CurveV1Adapter_3AssetsTest.t.sol/CurveV1Adapter3AssetsTest.ts +0 -1080
- package/src/types/contracts/test/adapters/CurveV1Adapter_3AssetsTest.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/CurveV1Adapter_4AssetsTest.t.sol/CurveV1Adapter4AssetsTest.ts +0 -1110
- package/src/types/contracts/test/adapters/CurveV1Adapter_4AssetsTest.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/CurveV1StETHTest.t.sol/CurveV1StEthAdapterTest.ts +0 -1100
- package/src/types/contracts/test/adapters/CurveV1StETHTest.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/LidoV1Adapter.t.sol/LidoV1AdapterTest.ts +0 -1146
- package/src/types/contracts/test/adapters/LidoV1Adapter.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/UniswapV2Adapter.t.sol/UniswapV2AdapterTest.ts +0 -1210
- package/src/types/contracts/test/adapters/UniswapV2Adapter.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/UniswapV3Adapter.t.sol/UniswapV3AdapterTest.ts +0 -1124
- package/src/types/contracts/test/adapters/UniswapV3Adapter.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/YearnV2Adapter.t.sol/YearnV2AdapterTest.ts +0 -1408
- package/src/types/contracts/test/adapters/YearnV2Adapter.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/index.ts +0 -34
- package/src/types/contracts/test/core/ACL.t.sol/ACLTest.ts +0 -659
- package/src/types/contracts/test/core/ACL.t.sol/index.ts +0 -4
- package/src/types/contracts/test/core/AddressProvider.t.sol/AddressProviderTest.ts +0 -783
- package/src/types/contracts/test/core/AddressProvider.t.sol/index.ts +0 -4
- package/src/types/contracts/test/core/index.ts +0 -7
- package/src/types/contracts/test/credit/CreditConfigurator.t.sol/CreditConfiguratorTest.ts +0 -1958
- package/src/types/contracts/test/credit/CreditConfigurator.t.sol/index.ts +0 -4
- package/src/types/contracts/test/credit/CreditFacade.t.sol/CreditFacadeTest.ts +0 -2860
- package/src/types/contracts/test/credit/CreditFacade.t.sol/index.ts +0 -4
- package/src/types/contracts/test/credit/CreditManager.t.sol/CreditManagerTest.ts +0 -2480
- package/src/types/contracts/test/credit/CreditManager.t.sol/index.ts +0 -4
- package/src/types/contracts/test/credit/index.ts +0 -9
- package/src/types/contracts/test/index.ts +0 -31
- package/src/types/contracts/test/lib/cheatCodes.sol/CheatCodes.ts +0 -926
- package/src/types/contracts/test/lib/cheatCodes.sol/index.ts +0 -4
- package/src/types/contracts/test/lib/constants.sol/Roles.ts +0 -375
- package/src/types/contracts/test/lib/constants.sol/index.ts +0 -4
- package/src/types/contracts/test/lib/index.ts +0 -9
- package/src/types/contracts/test/lib/test.sol/DSTest.ts +0 -375
- package/src/types/contracts/test/lib/test.sol/index.ts +0 -4
- package/src/types/contracts/test/mainnet/MainnetTokens.sol/MainnetTokensTestSuite.ts +0 -346
- package/src/types/contracts/test/mainnet/MainnetTokens.sol/index.ts +0 -4
- package/src/types/contracts/test/mainnet/TotalValueCalculator.ts +0 -104
- package/src/types/contracts/test/mainnet/index.ts +0 -6
- package/src/types/contracts/test/mocks/adapters/AdapterMock.ts +0 -458
- package/src/types/contracts/test/mocks/adapters/TargetContractMock.ts +0 -81
- package/src/types/contracts/test/mocks/adapters/index.ts +0 -5
- package/src/types/contracts/test/mocks/core/ACLTraitTest.ts +0 -238
- package/src/types/contracts/test/mocks/core/AddressProviderACLMock.ts +0 -186
- package/src/types/contracts/test/mocks/core/index.ts +0 -5
- package/src/types/contracts/test/mocks/credit/CreditManagerInternal.ts +0 -2197
- package/src/types/contracts/test/mocks/credit/index.ts +0 -4
- package/src/types/contracts/test/mocks/dao/TreasuryMock.ts +0 -69
- package/src/types/contracts/test/mocks/dao/index.ts +0 -4
- package/src/types/contracts/test/mocks/index.ts +0 -21
- package/src/types/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/BaseRewardPoolMock.ts +0 -1069
- package/src/types/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/IBaseRewardPoolMockEvents.ts +0 -140
- package/src/types/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/index.ts +0 -5
- package/src/types/contracts/test/mocks/integrations/ConvexBoosterMock.sol/BoosterMock.ts +0 -1002
- package/src/types/contracts/test/mocks/integrations/ConvexBoosterMock.sol/IBoosterMockEvents.ts +0 -122
- package/src/types/contracts/test/mocks/integrations/ConvexBoosterMock.sol/index.ts +0 -5
- package/src/types/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/ClaimZapMock.ts +0 -209
- package/src/types/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/IBasicRewards.ts +0 -225
- package/src/types/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/index.ts +0 -5
- package/src/types/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/ExtraRewardPoolMock.ts +0 -731
- package/src/types/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/IExtraRewardPoolMockEvents.ts +0 -141
- package/src/types/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/VirtualBalanceWrapper.ts +0 -203
- package/src/types/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/index.ts +0 -6
- package/src/types/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/TokenRewardContractMock.ts +0 -425
- package/src/types/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/index.ts +0 -4
- package/src/types/contracts/test/mocks/integrations/CurveV1MetapoolMock.ts +0 -1101
- package/src/types/contracts/test/mocks/integrations/CurveV1Mock.ts +0 -1124
- package/src/types/contracts/test/mocks/integrations/CurveV1Mock_2Assets.ts +0 -1409
- package/src/types/contracts/test/mocks/integrations/CurveV1Mock_3Assets.ts +0 -1415
- package/src/types/contracts/test/mocks/integrations/CurveV1Mock_4Assets.ts +0 -1424
- package/src/types/contracts/test/mocks/integrations/CurveV1StETHMock.ts +0 -880
- package/src/types/contracts/test/mocks/integrations/LidoMock.sol/ILidoMockEvents.ts +0 -82
- package/src/types/contracts/test/mocks/integrations/LidoMock.sol/LidoMock.ts +0 -747
- package/src/types/contracts/test/mocks/integrations/LidoMock.sol/index.ts +0 -5
- package/src/types/contracts/test/mocks/integrations/UniswapV2Mock.ts +0 -1553
- package/src/types/contracts/test/mocks/integrations/UniswapV3Mock.ts +0 -953
- package/src/types/contracts/test/mocks/integrations/YearnV2Mock.ts +0 -898
- package/src/types/contracts/test/mocks/integrations/index.ts +0 -24
- package/src/types/contracts/test/mocks/libraries/PercentageMathTest.ts +0 -143
- package/src/types/contracts/test/mocks/libraries/WadRayMathTest.ts +0 -315
- package/src/types/contracts/test/mocks/libraries/index.ts +0 -5
- package/src/types/contracts/test/mocks/oracles/LPPriceFeedMock.ts +0 -486
- package/src/types/contracts/test/mocks/oracles/PriceFeedMock.ts +0 -368
- package/src/types/contracts/test/mocks/oracles/index.ts +0 -5
- package/src/types/contracts/test/mocks/pool/CreditManagerMockForPoolTest.ts +0 -285
- package/src/types/contracts/test/mocks/pool/PoolServiceMock.ts +0 -1401
- package/src/types/contracts/test/mocks/pool/TestPoolService.ts +0 -1439
- package/src/types/contracts/test/mocks/pool/index.ts +0 -6
- package/src/types/contracts/test/mocks/token/CERC20Mock.ts +0 -635
- package/src/types/contracts/test/mocks/token/ERC20ApproveRestricted.sol/ERC20ApproveRestrictedFalse.ts +0 -544
- package/src/types/contracts/test/mocks/token/ERC20ApproveRestricted.sol/ERC20ApproveRestrictedRevert.ts +0 -544
- package/src/types/contracts/test/mocks/token/ERC20ApproveRestricted.sol/index.ts +0 -5
- package/src/types/contracts/test/mocks/token/ERC20Blocking.sol/ERC20BlockingMock.ts +0 -620
- package/src/types/contracts/test/mocks/token/ERC20Blocking.sol/index.ts +0 -4
- package/src/types/contracts/test/mocks/token/ERC20Fee.sol/TokenFeeMock.ts +0 -595
- package/src/types/contracts/test/mocks/token/ERC20Fee.sol/index.ts +0 -4
- package/src/types/contracts/test/mocks/token/ERC20Mock.ts +0 -695
- package/src/types/contracts/test/mocks/token/ERC20NonCompliant.sol/NonCompliantERC20.ts +0 -105
- package/src/types/contracts/test/mocks/token/ERC20NonCompliant.sol/index.ts +0 -4
- package/src/types/contracts/test/mocks/token/ERC721ReceiverMock.sol/ERC721ReceiverMock.ts +0 -118
- package/src/types/contracts/test/mocks/token/ERC721ReceiverMock.sol/IERC721Receiver.ts +0 -120
- package/src/types/contracts/test/mocks/token/ERC721ReceiverMock.sol/index.ts +0 -5
- package/src/types/contracts/test/mocks/token/StETHMock.ts +0 -618
- package/src/types/contracts/test/mocks/token/WETHMock.ts +0 -488
- package/src/types/contracts/test/mocks/token/index.ts +0 -17
- package/src/types/contracts/test/oracles/CurveLPPriceFeed.t.sol/CurveLPPriceFeedTest.ts +0 -749
- package/src/types/contracts/test/oracles/CurveLPPriceFeed.t.sol/index.ts +0 -4
- package/src/types/contracts/test/oracles/LPPriceFeed.t.sol/LPPriceFeedTest.ts +0 -617
- package/src/types/contracts/test/oracles/LPPriceFeed.t.sol/index.ts +0 -4
- package/src/types/contracts/test/oracles/PriceOracle.t.sol/PriceOracleTest.ts +0 -758
- package/src/types/contracts/test/oracles/PriceOracle.t.sol/index.ts +0 -4
- package/src/types/contracts/test/oracles/YearnPriceFeed.t.sol/YearnFeedTest.ts +0 -595
- package/src/types/contracts/test/oracles/YearnPriceFeed.t.sol/index.ts +0 -4
- package/src/types/contracts/test/oracles/ZeroPriceFeed.t.sol/ZeroFeedTest.ts +0 -503
- package/src/types/contracts/test/oracles/ZeroPriceFeed.t.sol/index.ts +0 -4
- package/src/types/contracts/test/oracles/index.ts +0 -13
- package/src/types/contracts/test/pathfinder/CurveLPPathFinder.t.sol/CurveLPPathFinderTest.ts +0 -897
- package/src/types/contracts/test/pathfinder/CurveLPPathFinder.t.sol/index.ts +0 -4
- package/src/types/contracts/test/pathfinder/CurvePathFinder.t.sol/CurvePathFinderTest.ts +0 -1058
- package/src/types/contracts/test/pathfinder/CurvePathFinder.t.sol/index.ts +0 -4
- package/src/types/contracts/test/pathfinder/NormalTokenPathFinder.t.sol/NormalTokenPathFinderTest.ts +0 -1243
- package/src/types/contracts/test/pathfinder/NormalTokenPathFinder.t.sol/index.ts +0 -4
- package/src/types/contracts/test/pathfinder/PathFinderTestHelper.ts +0 -815
- package/src/types/contracts/test/pathfinder/SwapPathFinder.t.sol/SwapPathFinderTest.ts +0 -1328
- package/src/types/contracts/test/pathfinder/SwapPathFinder.t.sol/index.ts +0 -4
- package/src/types/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/UniswapV2PathFinderTest.ts +0 -1108
- package/src/types/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/index.ts +0 -4
- package/src/types/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/UniswapV3PathFinderTest.ts +0 -1142
- package/src/types/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/index.ts +0 -4
- package/src/types/contracts/test/pathfinder/YearnPathFinder.t.sol/YearnPathFinderTest.ts +0 -927
- package/src/types/contracts/test/pathfinder/YearnPathFinder.t.sol/index.ts +0 -4
- package/src/types/contracts/test/pathfinder/index.ts +0 -18
- package/src/types/contracts/test/pool/PoolService.t.sol/PoolServiceTest.ts +0 -1671
- package/src/types/contracts/test/pool/PoolService.t.sol/index.ts +0 -4
- package/src/types/contracts/test/pool/index.ts +0 -5
- package/src/types/contracts/test/sigp/AttackingContractNonPayable.sol/AttackContractNonPayable.ts +0 -81
- package/src/types/contracts/test/sigp/AttackingContractNonPayable.sol/index.ts +0 -4
- package/src/types/contracts/test/sigp/DummyMulticallTarget.ts +0 -175
- package/src/types/contracts/test/sigp/FlashLoanAttacker2.ts +0 -240
- package/src/types/contracts/test/sigp/Interfaces.sol/ICrvDeposit.ts +0 -128
- package/src/types/contracts/test/sigp/Interfaces.sol/ICurveGauge.ts +0 -242
- package/src/types/contracts/test/sigp/Interfaces.sol/ICurveVoteEscrow.ts +0 -227
- package/src/types/contracts/test/sigp/Interfaces.sol/IDeposit.ts +0 -371
- package/src/types/contracts/test/sigp/Interfaces.sol/IFeeDistro.ts +0 -104
- package/src/types/contracts/test/sigp/Interfaces.sol/IMinter.ts +0 -95
- package/src/types/contracts/test/sigp/Interfaces.sol/IPools.ts +0 -290
- package/src/types/contracts/test/sigp/Interfaces.sol/IRegistry.ts +0 -189
- package/src/types/contracts/test/sigp/Interfaces.sol/IRewardFactory.ts +0 -310
- package/src/types/contracts/test/sigp/Interfaces.sol/IRewards.ts +0 -395
- package/src/types/contracts/test/sigp/Interfaces.sol/IStaker.ts +0 -652
- package/src/types/contracts/test/sigp/Interfaces.sol/IStash.ts +0 -209
- package/src/types/contracts/test/sigp/Interfaces.sol/IStashFactory.ts +0 -120
- package/src/types/contracts/test/sigp/Interfaces.sol/ITokenFactory.ts +0 -104
- package/src/types/contracts/test/sigp/Interfaces.sol/ITokenMinter.ts +0 -143
- package/src/types/contracts/test/sigp/Interfaces.sol/IVestedEscrow.ts +0 -107
- package/src/types/contracts/test/sigp/Interfaces.sol/IVoting.ts +0 -220
- package/src/types/contracts/test/sigp/Interfaces.sol/IWalletChecker.ts +0 -84
- package/src/types/contracts/test/sigp/Interfaces.sol/index.ts +0 -21
- package/src/types/contracts/test/sigp/NewConvexBaseRewardPoolMock.sol/NewBaseRewardPoolMock.ts +0 -1069
- package/src/types/contracts/test/sigp/NewConvexBaseRewardPoolMock.sol/index.ts +0 -4
- package/src/types/contracts/test/sigp/NewConvexBoosterMock.sol/NewBoosterMock.ts +0 -1002
- package/src/types/contracts/test/sigp/NewConvexBoosterMock.sol/index.ts +0 -4
- package/src/types/contracts/test/sigp/NewCreditConfigurator.ts +0 -1262
- package/src/types/contracts/test/sigp/UniswapHelper.sol/UniswapV3AdapterTestHelper.ts +0 -326
- package/src/types/contracts/test/sigp/UniswapHelper.sol/index.ts +0 -4
- package/src/types/contracts/test/sigp/index.ts +0 -20
- package/src/types/contracts/test/sigp/interfaces/ILockedCvx.ts +0 -832
- package/src/types/contracts/test/sigp/interfaces/index.ts +0 -4
- package/src/types/contracts/test/sigp/stETHMock.sol/StETHMockERC20.ts +0 -725
- package/src/types/contracts/test/sigp/stETHMock.sol/index.ts +0 -4
- package/src/types/contracts/test/suites/BalanceHelper.ts +0 -375
- package/src/types/contracts/test/suites/BaseCreditTestSuite.ts +0 -649
- package/src/types/contracts/test/suites/CreditFacadeHelper.ts +0 -472
- package/src/types/contracts/test/suites/CreditFacadeTestSuite.ts +0 -821
- package/src/types/contracts/test/suites/CreditManagerTestSuite.ts +0 -748
- package/src/types/contracts/test/suites/PoolServiceTestSuite.ts +0 -209
- package/src/types/contracts/test/suites/TokensTestSuite.ts +0 -980
- package/src/types/contracts/test/suites/index.ts +0 -10
- package/src/types/contracts/test/support/PauseMulticall.t.sol/PauseMulticallTest.ts +0 -551
- package/src/types/contracts/test/support/PauseMulticall.t.sol/index.ts +0 -4
- package/src/types/contracts/test/support/index.ts +0 -5
- package/src/types/contracts/test/tokens/DegenNFT.t.sol/DegenNFTTest.ts +0 -970
- package/src/types/contracts/test/tokens/DegenNFT.t.sol/index.ts +0 -4
- package/src/types/contracts/test/tokens/index.ts +0 -5
- package/src/types/contracts/tokens/DegenNFT.ts +0 -967
- package/src/types/contracts/tokens/DieselToken.ts +0 -618
- package/src/types/contracts/tokens/GearToken.ts +0 -994
- package/src/types/contracts/tokens/PhantomERC20.ts +0 -379
- package/src/types/contracts/tokens/index.ts +0 -7
- package/src/types/factories/@chainlink/contracts/index.ts +0 -4
- package/src/types/factories/@chainlink/contracts/src/index.ts +0 -4
- package/src/types/factories/@chainlink/contracts/src/v0.8/index.ts +0 -4
- package/src/types/factories/@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface__factory.ts +0 -141
- package/src/types/factories/@chainlink/contracts/src/v0.8/interfaces/index.ts +0 -4
- package/src/types/factories/@chainlink/index.ts +0 -4
- package/src/types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +0 -78
- package/src/types/factories/@openzeppelin/contracts/access/index.ts +0 -4
- package/src/types/factories/@openzeppelin/contracts/index.ts +0 -7
- package/src/types/factories/@openzeppelin/contracts/security/Pausable__factory.ts +0 -65
- package/src/types/factories/@openzeppelin/contracts/security/index.ts +0 -4
- package/src/types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts +0 -349
- package/src/types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +0 -206
- package/src/types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts +0 -248
- package/src/types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +0 -4
- package/src/types/factories/@openzeppelin/contracts/token/ERC20/index.ts +0 -6
- package/src/types/factories/@openzeppelin/contracts/token/ERC721/ERC721__factory.ts +0 -409
- package/src/types/factories/@openzeppelin/contracts/token/ERC721/IERC721Receiver__factory.ts +0 -60
- package/src/types/factories/@openzeppelin/contracts/token/ERC721/IERC721__factory.ts +0 -311
- package/src/types/factories/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata__factory.ts +0 -356
- package/src/types/factories/@openzeppelin/contracts/token/ERC721/extensions/index.ts +0 -4
- package/src/types/factories/@openzeppelin/contracts/token/ERC721/index.ts +0 -7
- package/src/types/factories/@openzeppelin/contracts/token/index.ts +0 -5
- package/src/types/factories/@openzeppelin/contracts/utils/index.ts +0 -4
- package/src/types/factories/@openzeppelin/contracts/utils/introspection/ERC165__factory.ts +0 -42
- package/src/types/factories/@openzeppelin/contracts/utils/introspection/IERC165__factory.ts +0 -45
- package/src/types/factories/@openzeppelin/contracts/utils/introspection/index.ts +0 -5
- package/src/types/factories/@openzeppelin/index.ts +0 -4
- package/src/types/factories/contracts/adapters/AbstractAdapter__factory.ts +0 -107
- package/src/types/factories/contracts/adapters/UniversalAdapter__factory.ts +0 -230
- package/src/types/factories/contracts/adapters/convex/ConvexV1_BaseRewardPool.sol/ConvexV1BaseRewardPoolAdapter__factory.ts +0 -806
- package/src/types/factories/contracts/adapters/convex/ConvexV1_BaseRewardPool.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/convex/ConvexV1_Booster.sol/ConvexV1BoosterAdapter__factory.ts +0 -533
- package/src/types/factories/contracts/adapters/convex/ConvexV1_Booster.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/convex/ConvexV1_ClaimZap.sol/ConvexV1ClaimZapAdapter__factory.ts +0 -254
- package/src/types/factories/contracts/adapters/convex/ConvexV1_ClaimZap.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/convex/ConvexV1_StakedPositionToken.sol/ConvexStakedPositionToken__factory.ts +0 -338
- package/src/types/factories/contracts/adapters/convex/ConvexV1_StakedPositionToken.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/convex/index.ts +0 -7
- package/src/types/factories/contracts/adapters/curve/CurveV1_2.sol/CurveV1Adapter2Assets__factory.ts +0 -1137
- package/src/types/factories/contracts/adapters/curve/CurveV1_2.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/curve/CurveV1_3.sol/CurveV1Adapter3Assets__factory.ts +0 -1137
- package/src/types/factories/contracts/adapters/curve/CurveV1_3.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/curve/CurveV1_4.sol/CurveV1Adapter4Assets__factory.ts +0 -1137
- package/src/types/factories/contracts/adapters/curve/CurveV1_4.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/curve/CurveV1_Base.sol/CurveV1AdapterBase__factory.ts +0 -1003
- package/src/types/factories/contracts/adapters/curve/CurveV1_Base.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/curve/CurveV1_DepositZap.sol/CurveV1AdapterDeposit__factory.ts +0 -998
- package/src/types/factories/contracts/adapters/curve/CurveV1_DepositZap.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/curve/CurveV1_stETH.sol/CurveV1AdapterStETH__factory.ts +0 -1124
- package/src/types/factories/contracts/adapters/curve/CurveV1_stETH.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/curve/CurveV1_stETHGateway.sol/CurveV1StETHPoolGateway__factory.ts +0 -855
- package/src/types/factories/contracts/adapters/curve/CurveV1_stETHGateway.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/curve/index.ts +0 -10
- package/src/types/factories/contracts/adapters/index.ts +0 -10
- package/src/types/factories/contracts/adapters/lido/LidoV1.sol/LidoV1Adapter__factory.ts +0 -558
- package/src/types/factories/contracts/adapters/lido/LidoV1.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/lido/LidoV1_WETHGateway.sol/LidoV1Gateway__factory.ts +0 -336
- package/src/types/factories/contracts/adapters/lido/LidoV1_WETHGateway.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/lido/index.ts +0 -5
- package/src/types/factories/contracts/adapters/uniswap/UniswapV2.sol/UniswapV2Adapter__factory.ts +0 -1152
- package/src/types/factories/contracts/adapters/uniswap/UniswapV2.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/uniswap/UniswapV3.sol/UniswapV3Adapter__factory.ts +0 -473
- package/src/types/factories/contracts/adapters/uniswap/UniswapV3.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/uniswap/index.ts +0 -5
- package/src/types/factories/contracts/adapters/yearn/YearnV2.sol/YearnV2Adapter__factory.ts +0 -556
- package/src/types/factories/contracts/adapters/yearn/YearnV2.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/yearn/index.ts +0 -4
- package/src/types/factories/contracts/core/ACLTrait__factory.ts +0 -107
- package/src/types/factories/contracts/core/ACL__factory.ts +0 -320
- package/src/types/factories/contracts/core/AccountFactory__factory.ts +0 -479
- package/src/types/factories/contracts/core/AddressProvider__factory.ts +0 -404
- package/src/types/factories/contracts/core/ContractsRegister__factory.ts +0 -357
- package/src/types/factories/contracts/core/DataCompressor__factory.ts +0 -910
- package/src/types/factories/contracts/core/WETHGateway__factory.ts +0 -191
- package/src/types/factories/contracts/core/index.ts +0 -10
- package/src/types/factories/contracts/credit/CreditAccount__factory.ts +0 -263
- package/src/types/factories/contracts/credit/CreditConfigurator__factory.ts +0 -931
- package/src/types/factories/contracts/credit/CreditFacade__factory.ts +0 -1254
- package/src/types/factories/contracts/credit/CreditManager__factory.ts +0 -1180
- package/src/types/factories/contracts/credit/index.ts +0 -7
- package/src/types/factories/contracts/factories/CreditManagerFactory__factory.ts +0 -392
- package/src/types/factories/contracts/factories/GenesisFactory__factory.ts +0 -202
- package/src/types/factories/contracts/factories/PoolFactory__factory.ts +0 -248
- package/src/types/factories/contracts/factories/index.ts +0 -6
- package/src/types/factories/contracts/index.ts +0 -16
- package/src/types/factories/contracts/integrations/convex/IBaseRewardPool__factory.ts +0 -541
- package/src/types/factories/contracts/integrations/convex/IBooster__factory.ts +0 -277
- package/src/types/factories/contracts/integrations/convex/IClaimZap__factory.ts +0 -105
- package/src/types/factories/contracts/integrations/convex/IConvexToken__factory.ts +0 -274
- package/src/types/factories/contracts/integrations/convex/IRewards.sol/IBasicRewards__factory.ts +0 -93
- package/src/types/factories/contracts/integrations/convex/IRewards.sol/IRewards__factory.ts +0 -190
- package/src/types/factories/contracts/integrations/convex/IRewards.sol/index.ts +0 -5
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/ICrvDeposit__factory.ts +0 -57
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/ICurveGauge__factory.ts +0 -123
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/ICurveVoteEscrow__factory.ts +0 -90
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IDeposit__factory.ts +0 -230
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IFeeDistro__factory.ts +0 -46
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IMinter__factory.ts +0 -39
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IPools__factory.ts +0 -189
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IRegistry__factory.ts +0 -114
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IRewardFactory__factory.ts +0 -164
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IRewards__factory.ts +0 -190
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IStaker__factory.ts +0 -324
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IStashFactory__factory.ts +0 -60
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IStash__factory.ts +0 -95
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/ITokenFactory__factory.ts +0 -45
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/ITokenMinter__factory.ts +0 -62
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IVestedEscrow__factory.ts +0 -50
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IVoting__factory.ts +0 -131
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IWalletChecker__factory.ts +0 -45
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/index.ts +0 -21
- package/src/types/factories/contracts/integrations/convex/index.ts +0 -9
- package/src/types/factories/contracts/integrations/curve/ICRVToken__factory.ts +0 -270
- package/src/types/factories/contracts/integrations/curve/ICurvePoolStETH__factory.ts +0 -478
- package/src/types/factories/contracts/integrations/curve/ICurvePool_2.sol/ICurvePool2Assets__factory.ts +0 -717
- package/src/types/factories/contracts/integrations/curve/ICurvePool_2.sol/index.ts +0 -4
- package/src/types/factories/contracts/integrations/curve/ICurvePool_3.sol/ICurvePool3Assets__factory.ts +0 -717
- package/src/types/factories/contracts/integrations/curve/ICurvePool_3.sol/index.ts +0 -4
- package/src/types/factories/contracts/integrations/curve/ICurvePool_4.sol/ICurvePool4Assets__factory.ts +0 -717
- package/src/types/factories/contracts/integrations/curve/ICurvePool_4.sol/index.ts +0 -4
- package/src/types/factories/contracts/integrations/curve/ICurvePool__factory.ts +0 -571
- package/src/types/factories/contracts/integrations/curve/ICurveRegistry__factory.ts +0 -83
- package/src/types/factories/contracts/integrations/curve/index.ts +0 -10
- package/src/types/factories/contracts/integrations/index.ts +0 -8
- package/src/types/factories/contracts/integrations/lido/ILidoOracle__factory.ts +0 -49
- package/src/types/factories/contracts/integrations/lido/IstETH.sol/IstETHGetters__factory.ts +0 -344
- package/src/types/factories/contracts/integrations/lido/IstETH.sol/IstETH__factory.ts +0 -360
- package/src/types/factories/contracts/integrations/lido/IstETH.sol/index.ts +0 -5
- package/src/types/factories/contracts/integrations/lido/index.ts +0 -5
- package/src/types/factories/contracts/integrations/uniswap/IQuoter__factory.ts +0 -152
- package/src/types/factories/contracts/integrations/uniswap/IUniswapV2Router01__factory.ts +0 -775
- package/src/types/factories/contracts/integrations/uniswap/IUniswapV2Router02__factory.ts +0 -977
- package/src/types/factories/contracts/integrations/uniswap/IUniswapV3.sol/ISwapRouter__factory.ts +0 -240
- package/src/types/factories/contracts/integrations/uniswap/IUniswapV3.sol/index.ts +0 -4
- package/src/types/factories/contracts/integrations/uniswap/IUniswapV3SwapCallback__factory.ts +0 -53
- package/src/types/factories/contracts/integrations/uniswap/index.ts +0 -8
- package/src/types/factories/contracts/integrations/yearn/IYVault__factory.ts +0 -415
- package/src/types/factories/contracts/integrations/yearn/index.ts +0 -4
- package/src/types/factories/contracts/interfaces/IACL.sol/IACLEvents__factory.ts +0 -78
- package/src/types/factories/contracts/interfaces/IACL.sol/IACL__factory.ts +0 -145
- package/src/types/factories/contracts/interfaces/IACL.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/IAccountFactory.sol/IAccountFactoryEvents__factory.ts +0 -107
- package/src/types/factories/contracts/interfaces/IAccountFactory.sol/IAccountFactoryGetters__factory.ts +0 -120
- package/src/types/factories/contracts/interfaces/IAccountFactory.sol/IAccountFactory__factory.ts +0 -243
- package/src/types/factories/contracts/interfaces/IAccountFactory.sol/index.ts +0 -6
- package/src/types/factories/contracts/interfaces/IAddressProvider.sol/IAddressProviderEvents__factory.ts +0 -49
- package/src/types/factories/contracts/interfaces/IAddressProvider.sol/IAddressProvider__factory.ts +0 -175
- package/src/types/factories/contracts/interfaces/IAddressProvider.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/IContractsRegister.sol/IContractsRegisterEvents__factory.ts +0 -56
- package/src/types/factories/contracts/interfaces/IContractsRegister.sol/IContractsRegister__factory.ts +0 -193
- package/src/types/factories/contracts/interfaces/IContractsRegister.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/ICreditAccount.sol/ICrediAccountExceptions__factory.ts +0 -40
- package/src/types/factories/contracts/interfaces/ICreditAccount.sol/ICreditAccount__factory.ts +0 -227
- package/src/types/factories/contracts/interfaces/ICreditAccount.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/ICreditConfigurator.sol/ICreditConfiguratorEvents__factory.ts +0 -293
- package/src/types/factories/contracts/interfaces/ICreditConfigurator.sol/ICreditConfiguratorExceptions__factory.ts +0 -90
- package/src/types/factories/contracts/interfaces/ICreditConfigurator.sol/ICreditConfigurator__factory.ts +0 -495
- package/src/types/factories/contracts/interfaces/ICreditConfigurator.sol/index.ts +0 -6
- package/src/types/factories/contracts/interfaces/ICreditFacade.sol/ICreditFacadeEvents__factory.ts +0 -302
- package/src/types/factories/contracts/interfaces/ICreditFacade.sol/ICreditFacadeExceptions__factory.ts +0 -176
- package/src/types/factories/contracts/interfaces/ICreditFacade.sol/ICreditFacadeExtended__factory.ts +0 -61
- package/src/types/factories/contracts/interfaces/ICreditFacade.sol/ICreditFacade__factory.ts +0 -972
- package/src/types/factories/contracts/interfaces/ICreditFacade.sol/index.ts +0 -7
- package/src/types/factories/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2Events__factory.ts +0 -62
- package/src/types/factories/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2Exceptions__factory.ts +0 -95
- package/src/types/factories/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2__factory.ts +0 -928
- package/src/types/factories/contracts/interfaces/ICreditManagerV2.sol/index.ts +0 -6
- package/src/types/factories/contracts/interfaces/IDataCompressor.sol/IDataCompressorExceptions__factory.ts +0 -40
- package/src/types/factories/contracts/interfaces/IDataCompressor.sol/IDataCompressor__factory.ts +0 -790
- package/src/types/factories/contracts/interfaces/IDataCompressor.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/IDegenNFT.sol/IDegenNFTExceptions__factory.ts +0 -46
- package/src/types/factories/contracts/interfaces/IDegenNFT.sol/IDegenNFT__factory.ts +0 -134
- package/src/types/factories/contracts/interfaces/IDegenNFT.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/IGearToken__factory.ts +0 -346
- package/src/types/factories/contracts/interfaces/IInterestRateModel__factory.ts +0 -63
- package/src/types/factories/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeedEvents__factory.ts +0 -45
- package/src/types/factories/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeedExceptions__factory.ts +0 -40
- package/src/types/factories/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeed__factory.ts +0 -244
- package/src/types/factories/contracts/interfaces/ILPPriceFeed.sol/index.ts +0 -6
- package/src/types/factories/contracts/interfaces/IMerkleDistributor__factory.ts +0 -124
- package/src/types/factories/contracts/interfaces/IPhantomERC20__factory.ts +0 -261
- package/src/types/factories/contracts/interfaces/IPoolService.sol/IPoolServiceEvents__factory.ts +0 -222
- package/src/types/factories/contracts/interfaces/IPoolService.sol/IPoolService__factory.ts +0 -581
- package/src/types/factories/contracts/interfaces/IPoolService.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/IPriceFeedAddress__factory.ts +0 -104
- package/src/types/factories/contracts/interfaces/IPriceFeedType__factory.ts +0 -52
- package/src/types/factories/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Events__factory.ts +0 -49
- package/src/types/factories/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Exceptions__factory.ts +0 -45
- package/src/types/factories/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Ext__factory.ts +0 -274
- package/src/types/factories/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2__factory.ts +0 -256
- package/src/types/factories/contracts/interfaces/IPriceOracle.sol/index.ts +0 -7
- package/src/types/factories/contracts/interfaces/IVersion__factory.ts +0 -39
- package/src/types/factories/contracts/interfaces/IWETHGateway__factory.ts +0 -90
- package/src/types/factories/contracts/interfaces/V1/ICreditFilter__factory.ts +0 -704
- package/src/types/factories/contracts/interfaces/V1/ICreditManager__factory.ts +0 -773
- package/src/types/factories/contracts/interfaces/V1/IPriceOracle.sol/IPriceOracleV2__factory.ts +0 -116
- package/src/types/factories/contracts/interfaces/V1/IPriceOracle.sol/index.ts +0 -4
- package/src/types/factories/contracts/interfaces/V1/index.ts +0 -6
- package/src/types/factories/contracts/interfaces/adapters/IAdapter.sol/IAdapterExceptions__factory.ts +0 -37
- package/src/types/factories/contracts/interfaces/adapters/IAdapter.sol/IAdapter__factory.ts +0 -102
- package/src/types/factories/contracts/interfaces/adapters/IAdapter.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/adapters/IUniversalAdapter.sol/IUniversalAdapterExceptions__factory.ts +0 -46
- package/src/types/factories/contracts/interfaces/adapters/IUniversalAdapter.sol/IUniversalAdapter__factory.ts +0 -173
- package/src/types/factories/contracts/interfaces/adapters/IUniversalAdapter.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/IConvexV1BaseRewardPoolAdapterErrors__factory.ts +0 -43
- package/src/types/factories/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/IConvexV1BaseRewardPoolAdapter__factory.ts +0 -723
- package/src/types/factories/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/adapters/convex/IConvexV1BoosterAdapter__factory.ts +0 -377
- package/src/types/factories/contracts/interfaces/adapters/convex/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/ICurveV1AdapterExceptions__factory.ts +0 -35
- package/src/types/factories/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/ICurveV1Adapter__factory.ts +0 -900
- package/src/types/factories/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/adapters/curve/index.ts +0 -4
- package/src/types/factories/contracts/interfaces/adapters/index.ts +0 -9
- package/src/types/factories/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1AdapterEvents__factory.ts +0 -43
- package/src/types/factories/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1AdapterExceptions__factory.ts +0 -35
- package/src/types/factories/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1Adapter__factory.ts +0 -324
- package/src/types/factories/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/index.ts +0 -6
- package/src/types/factories/contracts/interfaces/adapters/lido/index.ts +0 -4
- package/src/types/factories/contracts/interfaces/adapters/uniswap/IUniswapV2Adapter__factory.ts +0 -1082
- package/src/types/factories/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/IUniswapV3AdapterExceptions__factory.ts +0 -35
- package/src/types/factories/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/IUniswapV3Adapter__factory.ts +0 -408
- package/src/types/factories/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/adapters/uniswap/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/external/IWETH__factory.ts +0 -67
- package/src/types/factories/contracts/interfaces/external/index.ts +0 -4
- package/src/types/factories/contracts/interfaces/index.ts +0 -27
- package/src/types/factories/contracts/libraries/Errors__factory.ts +0 -488
- package/src/types/factories/contracts/libraries/index.ts +0 -4
- package/src/types/factories/contracts/oracles/LPPriceFeed__factory.ts +0 -350
- package/src/types/factories/contracts/oracles/PriceFeedChecker__factory.ts +0 -77
- package/src/types/factories/contracts/oracles/PriceOracle__factory.ts +0 -458
- package/src/types/factories/contracts/oracles/ZeroPriceFeed__factory.ts +0 -204
- package/src/types/factories/contracts/oracles/curve/AbstractCurveLPPriceFeed__factory.ts +0 -380
- package/src/types/factories/contracts/oracles/curve/CurveLP2PriceFeed__factory.ts +0 -493
- package/src/types/factories/contracts/oracles/curve/CurveLP3PriceFeed__factory.ts +0 -515
- package/src/types/factories/contracts/oracles/curve/CurveLP4PriceFeed__factory.ts +0 -537
- package/src/types/factories/contracts/oracles/curve/index.ts +0 -7
- package/src/types/factories/contracts/oracles/index.ts +0 -9
- package/src/types/factories/contracts/oracles/yearn/YearnPriceFeed__factory.ts +0 -462
- package/src/types/factories/contracts/oracles/yearn/index.ts +0 -4
- package/src/types/factories/contracts/pathfinder/ConvexPathFinder__factory.ts +0 -224
- package/src/types/factories/contracts/pathfinder/CurveLPPathFinder__factory.ts +0 -323
- package/src/types/factories/contracts/pathfinder/CurvePathFinder__factory.ts +0 -443
- package/src/types/factories/contracts/pathfinder/ISwapper__factory.ts +0 -226
- package/src/types/factories/contracts/pathfinder/NormalTokenPathFinder__factory.ts +0 -623
- package/src/types/factories/contracts/pathfinder/SwapPathFinder__factory.ts +0 -443
- package/src/types/factories/contracts/pathfinder/UniswapV2PathFinder__factory.ts +0 -395
- package/src/types/factories/contracts/pathfinder/UniswapV3PathFinder__factory.ts +0 -516
- package/src/types/factories/contracts/pathfinder/YearnPathFinder__factory.ts +0 -181
- package/src/types/factories/contracts/pathfinder/data/Balances.sol/BalanceOps__factory.ts +0 -73
- package/src/types/factories/contracts/pathfinder/data/Balances.sol/index.ts +0 -4
- package/src/types/factories/contracts/pathfinder/data/index.ts +0 -4
- package/src/types/factories/contracts/pathfinder/index.ts +0 -13
- package/src/types/factories/contracts/pool/LinearInterestRateModel__factory.ts +0 -249
- package/src/types/factories/contracts/pool/PoolService__factory.ts +0 -917
- package/src/types/factories/contracts/pool/index.ts +0 -5
- package/src/types/factories/contracts/support/ContractUpgrader__factory.ts +0 -130
- package/src/types/factories/contracts/support/MerkleDistributor__factory.ts +0 -191
- package/src/types/factories/contracts/support/MultiCall.sol/Multicall2__factory.ts +0 -373
- package/src/types/factories/contracts/support/MultiCall.sol/index.ts +0 -4
- package/src/types/factories/contracts/support/PauseMulticall__factory.ts +0 -206
- package/src/types/factories/contracts/support/index.ts +0 -7
- package/src/types/factories/contracts/test/Playground.t.sol/PlaygroundTest__factory.ts +0 -370
- package/src/types/factories/contracts/test/Playground.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/AbstractAdapter.t.sol/AbstractAdapterTest__factory.ts +0 -966
- package/src/types/factories/contracts/test/adapters/AbstractAdapter.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/AdapterTestHelper__factory.ts +0 -740
- package/src/types/factories/contracts/test/adapters/ConvexAdapterHelper__factory.ts +0 -1190
- package/src/types/factories/contracts/test/adapters/ConvexV1_BaseRewardPool.t.sol/ConvexV1AdapterBasePoolTest__factory.ts +0 -1280
- package/src/types/factories/contracts/test/adapters/ConvexV1_BaseRewardPool.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/ConvexV1_Booster.t.sol/ConvexV1AdapterBoosterTest__factory.ts +0 -1250
- package/src/types/factories/contracts/test/adapters/ConvexV1_Booster.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/ConvexV1_ClaimZap.t.sol/ConvexV1ClaimZapAdapterTest__factory.ts +0 -1245
- package/src/types/factories/contracts/test/adapters/ConvexV1_ClaimZap.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/CurveV1AdapterBaseMetapoolTest.t.sol/CurveV1AdapterBaseMetaPoolTest__factory.ts +0 -819
- package/src/types/factories/contracts/test/adapters/CurveV1AdapterBaseMetapoolTest.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/CurveV1AdapterBaseTest.t.sol/CurveV1AdapterBaseTest__factory.ts +0 -899
- package/src/types/factories/contracts/test/adapters/CurveV1AdapterBaseTest.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/CurveV1AdapterHelper__factory.ts +0 -749
- package/src/types/factories/contracts/test/adapters/CurveV1Adapter_2AssetsTest.t.sol/CurveV1Adapter2AssetsTest__factory.ts +0 -831
- package/src/types/factories/contracts/test/adapters/CurveV1Adapter_2AssetsTest.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/CurveV1Adapter_3AssetsTest.t.sol/CurveV1Adapter3AssetsTest__factory.ts +0 -831
- package/src/types/factories/contracts/test/adapters/CurveV1Adapter_3AssetsTest.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/CurveV1Adapter_4AssetsTest.t.sol/CurveV1Adapter4AssetsTest__factory.ts +0 -838
- package/src/types/factories/contracts/test/adapters/CurveV1Adapter_4AssetsTest.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/CurveV1StETHTest.t.sol/CurveV1StEthAdapterTest__factory.ts +0 -850
- package/src/types/factories/contracts/test/adapters/CurveV1StETHTest.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/LidoV1Adapter.t.sol/LidoV1AdapterTest__factory.ts +0 -884
- package/src/types/factories/contracts/test/adapters/LidoV1Adapter.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/UniswapV2Adapter.t.sol/UniswapV2AdapterTest__factory.ts +0 -913
- package/src/types/factories/contracts/test/adapters/UniswapV2Adapter.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/UniswapV3Adapter.t.sol/UniswapV3AdapterTest__factory.ts +0 -846
- package/src/types/factories/contracts/test/adapters/UniswapV3Adapter.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/YearnV2Adapter.t.sol/YearnV2AdapterTest__factory.ts +0 -918
- package/src/types/factories/contracts/test/adapters/YearnV2Adapter.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/index.ts +0 -20
- package/src/types/factories/contracts/test/core/ACL.t.sol/ACLTest__factory.ts +0 -457
- package/src/types/factories/contracts/test/core/ACL.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/core/AddressProvider.t.sol/AddressProviderTest__factory.ts +0 -466
- package/src/types/factories/contracts/test/core/AddressProvider.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/core/index.ts +0 -5
- package/src/types/factories/contracts/test/credit/CreditConfigurator.t.sol/CreditConfiguratorTest__factory.ts +0 -1048
- package/src/types/factories/contracts/test/credit/CreditConfigurator.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/credit/CreditFacade.t.sol/CreditFacadeTest__factory.ts +0 -1368
- package/src/types/factories/contracts/test/credit/CreditFacade.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/credit/CreditManager.t.sol/CreditManagerTest__factory.ts +0 -1003
- package/src/types/factories/contracts/test/credit/CreditManager.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/credit/index.ts +0 -6
- package/src/types/factories/contracts/test/index.ts +0 -17
- package/src/types/factories/contracts/test/lib/cheatCodes.sol/CheatCodes__factory.ts +0 -472
- package/src/types/factories/contracts/test/lib/cheatCodes.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/lib/constants.sol/Roles__factory.ts +0 -358
- package/src/types/factories/contracts/test/lib/constants.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/lib/index.ts +0 -6
- package/src/types/factories/contracts/test/lib/test.sol/DSTest__factory.ts +0 -353
- package/src/types/factories/contracts/test/lib/test.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/mainnet/MainnetTokens.sol/MainnetTokensTestSuite__factory.ts +0 -237
- package/src/types/factories/contracts/test/mainnet/MainnetTokens.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/mainnet/TotalValueCalculator__factory.ts +0 -95
- package/src/types/factories/contracts/test/mainnet/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/adapters/AdapterMock__factory.ts +0 -373
- package/src/types/factories/contracts/test/mocks/adapters/TargetContractMock__factory.ts +0 -84
- package/src/types/factories/contracts/test/mocks/adapters/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/core/ACLTraitTest__factory.ts +0 -185
- package/src/types/factories/contracts/test/mocks/core/AddressProviderACLMock__factory.ts +0 -153
- package/src/types/factories/contracts/test/mocks/core/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/credit/CreditManagerInternal__factory.ts +0 -1395
- package/src/types/factories/contracts/test/mocks/credit/index.ts +0 -4
- package/src/types/factories/contracts/test/mocks/dao/TreasuryMock__factory.ts +0 -79
- package/src/types/factories/contracts/test/mocks/dao/index.ts +0 -4
- package/src/types/factories/contracts/test/mocks/index.ts +0 -12
- package/src/types/factories/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/BaseRewardPoolMock__factory.ts +0 -763
- package/src/types/factories/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/IBaseRewardPoolMockEvents__factory.ts +0 -105
- package/src/types/factories/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/integrations/ConvexBoosterMock.sol/BoosterMock__factory.ts +0 -776
- package/src/types/factories/contracts/test/mocks/integrations/ConvexBoosterMock.sol/IBoosterMockEvents__factory.ts +0 -94
- package/src/types/factories/contracts/test/mocks/integrations/ConvexBoosterMock.sol/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/ClaimZapMock__factory.ts +0 -187
- package/src/types/factories/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/IBasicRewards__factory.ts +0 -93
- package/src/types/factories/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/ExtraRewardPoolMock__factory.ts +0 -558
- package/src/types/factories/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/IExtraRewardPoolMockEvents__factory.ts +0 -105
- package/src/types/factories/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/VirtualBalanceWrapper__factory.ts +0 -186
- package/src/types/factories/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/index.ts +0 -6
- package/src/types/factories/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/TokenRewardContractMock__factory.ts +0 -345
- package/src/types/factories/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/mocks/integrations/CurveV1MetapoolMock__factory.ts +0 -747
- package/src/types/factories/contracts/test/mocks/integrations/CurveV1Mock_2Assets__factory.ts +0 -902
- package/src/types/factories/contracts/test/mocks/integrations/CurveV1Mock_3Assets__factory.ts +0 -902
- package/src/types/factories/contracts/test/mocks/integrations/CurveV1Mock_4Assets__factory.ts +0 -902
- package/src/types/factories/contracts/test/mocks/integrations/CurveV1Mock__factory.ts +0 -756
- package/src/types/factories/contracts/test/mocks/integrations/CurveV1StETHMock__factory.ts +0 -594
- package/src/types/factories/contracts/test/mocks/integrations/LidoMock.sol/ILidoMockEvents__factory.ts +0 -51
- package/src/types/factories/contracts/test/mocks/integrations/LidoMock.sol/LidoMock__factory.ts +0 -525
- package/src/types/factories/contracts/test/mocks/integrations/LidoMock.sol/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/integrations/UniswapV2Mock__factory.ts +0 -1060
- package/src/types/factories/contracts/test/mocks/integrations/UniswapV3Mock__factory.ts +0 -776
- package/src/types/factories/contracts/test/mocks/integrations/YearnV2Mock__factory.ts +0 -609
- package/src/types/factories/contracts/test/mocks/integrations/index.ts +0 -18
- package/src/types/factories/contracts/test/mocks/libraries/PercentageMathTest__factory.ts +0 -110
- package/src/types/factories/contracts/test/mocks/libraries/WadRayMathTest__factory.ts +0 -248
- package/src/types/factories/contracts/test/mocks/libraries/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/oracles/LPPriceFeedMock__factory.ts +0 -449
- package/src/types/factories/contracts/test/mocks/oracles/PriceFeedMock__factory.ts +0 -297
- package/src/types/factories/contracts/test/mocks/oracles/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/pool/CreditManagerMockForPoolTest__factory.ts +0 -194
- package/src/types/factories/contracts/test/mocks/pool/PoolServiceMock__factory.ts +0 -899
- package/src/types/factories/contracts/test/mocks/pool/TestPoolService__factory.ts +0 -976
- package/src/types/factories/contracts/test/mocks/pool/index.ts +0 -6
- package/src/types/factories/contracts/test/mocks/token/CERC20Mock__factory.ts +0 -486
- package/src/types/factories/contracts/test/mocks/token/ERC20ApproveRestricted.sol/ERC20ApproveRestrictedFalse__factory.ts +0 -395
- package/src/types/factories/contracts/test/mocks/token/ERC20ApproveRestricted.sol/ERC20ApproveRestrictedRevert__factory.ts +0 -395
- package/src/types/factories/contracts/test/mocks/token/ERC20ApproveRestricted.sol/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/token/ERC20Blocking.sol/ERC20BlockingMock__factory.ts +0 -446
- package/src/types/factories/contracts/test/mocks/token/ERC20Blocking.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/mocks/token/ERC20Fee.sol/TokenFeeMock__factory.ts +0 -454
- package/src/types/factories/contracts/test/mocks/token/ERC20Fee.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/mocks/token/ERC20Mock__factory.ts +0 -526
- package/src/types/factories/contracts/test/mocks/token/ERC20NonCompliant.sol/NonCompliantERC20__factory.ts +0 -86
- package/src/types/factories/contracts/test/mocks/token/ERC20NonCompliant.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/mocks/token/ERC721ReceiverMock.sol/ERC721ReceiverMock__factory.ts +0 -96
- package/src/types/factories/contracts/test/mocks/token/ERC721ReceiverMock.sol/IERC721Receiver__factory.ts +0 -60
- package/src/types/factories/contracts/test/mocks/token/ERC721ReceiverMock.sol/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/token/StETHMock__factory.ts +0 -441
- package/src/types/factories/contracts/test/mocks/token/WETHMock__factory.ts +0 -364
- package/src/types/factories/contracts/test/mocks/token/index.ts +0 -12
- package/src/types/factories/contracts/test/oracles/CurveLPPriceFeed.t.sol/CurveLPPriceFeedTest__factory.ts +0 -543
- package/src/types/factories/contracts/test/oracles/CurveLPPriceFeed.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/oracles/LPPriceFeed.t.sol/LPPriceFeedTest__factory.ts +0 -480
- package/src/types/factories/contracts/test/oracles/LPPriceFeed.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/oracles/PriceOracle.t.sol/PriceOracleTest__factory.ts +0 -511
- package/src/types/factories/contracts/test/oracles/PriceOracle.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/oracles/YearnPriceFeed.t.sol/YearnFeedTest__factory.ts +0 -474
- package/src/types/factories/contracts/test/oracles/YearnPriceFeed.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/oracles/ZeroPriceFeed.t.sol/ZeroFeedTest__factory.ts +0 -422
- package/src/types/factories/contracts/test/oracles/ZeroPriceFeed.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/oracles/index.ts +0 -8
- package/src/types/factories/contracts/test/pathfinder/CurveLPPathFinder.t.sol/CurveLPPathFinderTest__factory.ts +0 -673
- package/src/types/factories/contracts/test/pathfinder/CurveLPPathFinder.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/pathfinder/CurvePathFinder.t.sol/CurvePathFinderTest__factory.ts +0 -750
- package/src/types/factories/contracts/test/pathfinder/CurvePathFinder.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/pathfinder/NormalTokenPathFinder.t.sol/NormalTokenPathFinderTest__factory.ts +0 -839
- package/src/types/factories/contracts/test/pathfinder/NormalTokenPathFinder.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/pathfinder/PathFinderTestHelper__factory.ts +0 -652
- package/src/types/factories/contracts/test/pathfinder/SwapPathFinder.t.sol/SwapPathFinderTest__factory.ts +0 -912
- package/src/types/factories/contracts/test/pathfinder/SwapPathFinder.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/UniswapV2PathFinderTest__factory.ts +0 -806
- package/src/types/factories/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/UniswapV3PathFinderTest__factory.ts +0 -826
- package/src/types/factories/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/pathfinder/YearnPathFinder.t.sol/YearnPathFinderTest__factory.ts +0 -676
- package/src/types/factories/contracts/test/pathfinder/YearnPathFinder.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/pathfinder/index.ts +0 -11
- package/src/types/factories/contracts/test/pool/PoolService.t.sol/PoolServiceTest__factory.ts +0 -804
- package/src/types/factories/contracts/test/pool/PoolService.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/pool/index.ts +0 -4
- package/src/types/factories/contracts/test/sigp/AttackingContractNonPayable.sol/AttackContractNonPayable__factory.ts +0 -88
- package/src/types/factories/contracts/test/sigp/AttackingContractNonPayable.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/sigp/DummyMulticallTarget__factory.ts +0 -131
- package/src/types/factories/contracts/test/sigp/FlashLoanAttacker2__factory.ts +0 -164
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/ICrvDeposit__factory.ts +0 -57
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/ICurveGauge__factory.ts +0 -123
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/ICurveVoteEscrow__factory.ts +0 -90
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IDeposit__factory.ts +0 -230
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IFeeDistro__factory.ts +0 -46
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IMinter__factory.ts +0 -39
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IPools__factory.ts +0 -189
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IRegistry__factory.ts +0 -114
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IRewardFactory__factory.ts +0 -164
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IRewards__factory.ts +0 -190
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IStaker__factory.ts +0 -324
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IStashFactory__factory.ts +0 -60
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IStash__factory.ts +0 -95
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/ITokenFactory__factory.ts +0 -45
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/ITokenMinter__factory.ts +0 -62
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IVestedEscrow__factory.ts +0 -50
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IVoting__factory.ts +0 -131
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IWalletChecker__factory.ts +0 -45
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/index.ts +0 -21
- package/src/types/factories/contracts/test/sigp/NewConvexBaseRewardPoolMock.sol/NewBaseRewardPoolMock__factory.ts +0 -767
- package/src/types/factories/contracts/test/sigp/NewConvexBaseRewardPoolMock.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/sigp/NewConvexBoosterMock.sol/NewBoosterMock__factory.ts +0 -776
- package/src/types/factories/contracts/test/sigp/NewConvexBoosterMock.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/sigp/NewCreditConfigurator__factory.ts +0 -922
- package/src/types/factories/contracts/test/sigp/UniswapHelper.sol/UniswapV3AdapterTestHelper__factory.ts +0 -244
- package/src/types/factories/contracts/test/sigp/UniswapHelper.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/sigp/index.ts +0 -13
- package/src/types/factories/contracts/test/sigp/interfaces/ILockedCvx__factory.ts +0 -442
- package/src/types/factories/contracts/test/sigp/interfaces/index.ts +0 -4
- package/src/types/factories/contracts/test/sigp/stETHMock.sol/StETHMockERC20__factory.ts +0 -482
- package/src/types/factories/contracts/test/sigp/stETHMock.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/suites/BalanceHelper__factory.ts +0 -356
- package/src/types/factories/contracts/test/suites/BaseCreditTestSuite__factory.ts +0 -589
- package/src/types/factories/contracts/test/suites/CreditFacadeHelper__factory.ts +0 -421
- package/src/types/factories/contracts/test/suites/CreditFacadeTestSuite__factory.ts +0 -685
- package/src/types/factories/contracts/test/suites/CreditManagerTestSuite__factory.ts +0 -677
- package/src/types/factories/contracts/test/suites/PoolServiceTestSuite__factory.ts +0 -186
- package/src/types/factories/contracts/test/suites/TokensTestSuite__factory.ts +0 -744
- package/src/types/factories/contracts/test/suites/index.ts +0 -10
- package/src/types/factories/contracts/test/support/PauseMulticall.t.sol/PauseMulticallTest__factory.ts +0 -398
- package/src/types/factories/contracts/test/support/PauseMulticall.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/support/index.ts +0 -4
- package/src/types/factories/contracts/test/tokens/DegenNFT.t.sol/DegenNFTTest__factory.ts +0 -560
- package/src/types/factories/contracts/test/tokens/DegenNFT.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/tokens/index.ts +0 -4
- package/src/types/factories/contracts/tokens/DegenNFT__factory.ts +0 -699
- package/src/types/factories/contracts/tokens/DieselToken__factory.ts +0 -464
- package/src/types/factories/contracts/tokens/GearToken__factory.ts +0 -719
- package/src/types/factories/contracts/tokens/PhantomERC20__factory.ts +0 -261
- package/src/types/factories/contracts/tokens/index.ts +0 -7
- package/src/types/factories/index.ts +0 -6
- package/src/types/hardhat.d.ts +0 -2715
- package/src/types/index.ts +0 -562
- package/src/utils/errors.ts +0 -11
- package/src/utils/formatter.ts +0 -146
- package/src/utils/loading.ts +0 -17
- package/src/utils/mappers.ts +0 -32
- package/src/utils/math.ts +0 -42
- package/src/utils/multicall.ts +0 -80
- package/src/utils/network.ts +0 -28
- package/src/utils/repeater.ts +0 -18
- package/src/utils/types.ts +0 -7
- package/src/utils/validate.ts +0 -8
- package/tsconfig.json +0 -62
|
@@ -1,398 +0,0 @@
|
|
|
1
|
-
/* Autogenerated file. Do not edit manually. */
|
|
2
|
-
/* tslint:disable */
|
|
3
|
-
/* eslint-disable */
|
|
4
|
-
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
|
|
5
|
-
import type { Provider, TransactionRequest } from "@ethersproject/providers";
|
|
6
|
-
import type {
|
|
7
|
-
PauseMulticallTest,
|
|
8
|
-
PauseMulticallTestInterface,
|
|
9
|
-
} from "../../../../../contracts/test/support/PauseMulticall.t.sol/PauseMulticallTest";
|
|
10
|
-
|
|
11
|
-
const _abi = [
|
|
12
|
-
{
|
|
13
|
-
anonymous: false,
|
|
14
|
-
inputs: [
|
|
15
|
-
{
|
|
16
|
-
indexed: false,
|
|
17
|
-
internalType: "string",
|
|
18
|
-
name: "",
|
|
19
|
-
type: "string",
|
|
20
|
-
},
|
|
21
|
-
],
|
|
22
|
-
name: "log",
|
|
23
|
-
type: "event",
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
anonymous: false,
|
|
27
|
-
inputs: [
|
|
28
|
-
{
|
|
29
|
-
indexed: false,
|
|
30
|
-
internalType: "address",
|
|
31
|
-
name: "",
|
|
32
|
-
type: "address",
|
|
33
|
-
},
|
|
34
|
-
],
|
|
35
|
-
name: "log_address",
|
|
36
|
-
type: "event",
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
anonymous: false,
|
|
40
|
-
inputs: [
|
|
41
|
-
{
|
|
42
|
-
indexed: false,
|
|
43
|
-
internalType: "bytes",
|
|
44
|
-
name: "",
|
|
45
|
-
type: "bytes",
|
|
46
|
-
},
|
|
47
|
-
],
|
|
48
|
-
name: "log_bytes",
|
|
49
|
-
type: "event",
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
anonymous: false,
|
|
53
|
-
inputs: [
|
|
54
|
-
{
|
|
55
|
-
indexed: false,
|
|
56
|
-
internalType: "bytes32",
|
|
57
|
-
name: "",
|
|
58
|
-
type: "bytes32",
|
|
59
|
-
},
|
|
60
|
-
],
|
|
61
|
-
name: "log_bytes32",
|
|
62
|
-
type: "event",
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
anonymous: false,
|
|
66
|
-
inputs: [
|
|
67
|
-
{
|
|
68
|
-
indexed: false,
|
|
69
|
-
internalType: "int256",
|
|
70
|
-
name: "",
|
|
71
|
-
type: "int256",
|
|
72
|
-
},
|
|
73
|
-
],
|
|
74
|
-
name: "log_int",
|
|
75
|
-
type: "event",
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
anonymous: false,
|
|
79
|
-
inputs: [
|
|
80
|
-
{
|
|
81
|
-
indexed: false,
|
|
82
|
-
internalType: "string",
|
|
83
|
-
name: "key",
|
|
84
|
-
type: "string",
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
indexed: false,
|
|
88
|
-
internalType: "address",
|
|
89
|
-
name: "val",
|
|
90
|
-
type: "address",
|
|
91
|
-
},
|
|
92
|
-
],
|
|
93
|
-
name: "log_named_address",
|
|
94
|
-
type: "event",
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
anonymous: false,
|
|
98
|
-
inputs: [
|
|
99
|
-
{
|
|
100
|
-
indexed: false,
|
|
101
|
-
internalType: "string",
|
|
102
|
-
name: "key",
|
|
103
|
-
type: "string",
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
indexed: false,
|
|
107
|
-
internalType: "bytes",
|
|
108
|
-
name: "val",
|
|
109
|
-
type: "bytes",
|
|
110
|
-
},
|
|
111
|
-
],
|
|
112
|
-
name: "log_named_bytes",
|
|
113
|
-
type: "event",
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
anonymous: false,
|
|
117
|
-
inputs: [
|
|
118
|
-
{
|
|
119
|
-
indexed: false,
|
|
120
|
-
internalType: "string",
|
|
121
|
-
name: "key",
|
|
122
|
-
type: "string",
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
indexed: false,
|
|
126
|
-
internalType: "bytes32",
|
|
127
|
-
name: "val",
|
|
128
|
-
type: "bytes32",
|
|
129
|
-
},
|
|
130
|
-
],
|
|
131
|
-
name: "log_named_bytes32",
|
|
132
|
-
type: "event",
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
anonymous: false,
|
|
136
|
-
inputs: [
|
|
137
|
-
{
|
|
138
|
-
indexed: false,
|
|
139
|
-
internalType: "string",
|
|
140
|
-
name: "key",
|
|
141
|
-
type: "string",
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
indexed: false,
|
|
145
|
-
internalType: "int256",
|
|
146
|
-
name: "val",
|
|
147
|
-
type: "int256",
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
indexed: false,
|
|
151
|
-
internalType: "uint256",
|
|
152
|
-
name: "decimals",
|
|
153
|
-
type: "uint256",
|
|
154
|
-
},
|
|
155
|
-
],
|
|
156
|
-
name: "log_named_decimal_int",
|
|
157
|
-
type: "event",
|
|
158
|
-
},
|
|
159
|
-
{
|
|
160
|
-
anonymous: false,
|
|
161
|
-
inputs: [
|
|
162
|
-
{
|
|
163
|
-
indexed: false,
|
|
164
|
-
internalType: "string",
|
|
165
|
-
name: "key",
|
|
166
|
-
type: "string",
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
indexed: false,
|
|
170
|
-
internalType: "uint256",
|
|
171
|
-
name: "val",
|
|
172
|
-
type: "uint256",
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
indexed: false,
|
|
176
|
-
internalType: "uint256",
|
|
177
|
-
name: "decimals",
|
|
178
|
-
type: "uint256",
|
|
179
|
-
},
|
|
180
|
-
],
|
|
181
|
-
name: "log_named_decimal_uint",
|
|
182
|
-
type: "event",
|
|
183
|
-
},
|
|
184
|
-
{
|
|
185
|
-
anonymous: false,
|
|
186
|
-
inputs: [
|
|
187
|
-
{
|
|
188
|
-
indexed: false,
|
|
189
|
-
internalType: "string",
|
|
190
|
-
name: "key",
|
|
191
|
-
type: "string",
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
indexed: false,
|
|
195
|
-
internalType: "int256",
|
|
196
|
-
name: "val",
|
|
197
|
-
type: "int256",
|
|
198
|
-
},
|
|
199
|
-
],
|
|
200
|
-
name: "log_named_int",
|
|
201
|
-
type: "event",
|
|
202
|
-
},
|
|
203
|
-
{
|
|
204
|
-
anonymous: false,
|
|
205
|
-
inputs: [
|
|
206
|
-
{
|
|
207
|
-
indexed: false,
|
|
208
|
-
internalType: "string",
|
|
209
|
-
name: "key",
|
|
210
|
-
type: "string",
|
|
211
|
-
},
|
|
212
|
-
{
|
|
213
|
-
indexed: false,
|
|
214
|
-
internalType: "string",
|
|
215
|
-
name: "val",
|
|
216
|
-
type: "string",
|
|
217
|
-
},
|
|
218
|
-
],
|
|
219
|
-
name: "log_named_string",
|
|
220
|
-
type: "event",
|
|
221
|
-
},
|
|
222
|
-
{
|
|
223
|
-
anonymous: false,
|
|
224
|
-
inputs: [
|
|
225
|
-
{
|
|
226
|
-
indexed: false,
|
|
227
|
-
internalType: "string",
|
|
228
|
-
name: "key",
|
|
229
|
-
type: "string",
|
|
230
|
-
},
|
|
231
|
-
{
|
|
232
|
-
indexed: false,
|
|
233
|
-
internalType: "uint256",
|
|
234
|
-
name: "val",
|
|
235
|
-
type: "uint256",
|
|
236
|
-
},
|
|
237
|
-
],
|
|
238
|
-
name: "log_named_uint",
|
|
239
|
-
type: "event",
|
|
240
|
-
},
|
|
241
|
-
{
|
|
242
|
-
anonymous: false,
|
|
243
|
-
inputs: [
|
|
244
|
-
{
|
|
245
|
-
indexed: false,
|
|
246
|
-
internalType: "string",
|
|
247
|
-
name: "",
|
|
248
|
-
type: "string",
|
|
249
|
-
},
|
|
250
|
-
],
|
|
251
|
-
name: "log_string",
|
|
252
|
-
type: "event",
|
|
253
|
-
},
|
|
254
|
-
{
|
|
255
|
-
anonymous: false,
|
|
256
|
-
inputs: [
|
|
257
|
-
{
|
|
258
|
-
indexed: false,
|
|
259
|
-
internalType: "uint256",
|
|
260
|
-
name: "",
|
|
261
|
-
type: "uint256",
|
|
262
|
-
},
|
|
263
|
-
],
|
|
264
|
-
name: "log_uint",
|
|
265
|
-
type: "event",
|
|
266
|
-
},
|
|
267
|
-
{
|
|
268
|
-
anonymous: false,
|
|
269
|
-
inputs: [
|
|
270
|
-
{
|
|
271
|
-
indexed: false,
|
|
272
|
-
internalType: "bytes",
|
|
273
|
-
name: "",
|
|
274
|
-
type: "bytes",
|
|
275
|
-
},
|
|
276
|
-
],
|
|
277
|
-
name: "logs",
|
|
278
|
-
type: "event",
|
|
279
|
-
},
|
|
280
|
-
{
|
|
281
|
-
inputs: [],
|
|
282
|
-
name: "IS_TEST",
|
|
283
|
-
outputs: [
|
|
284
|
-
{
|
|
285
|
-
internalType: "bool",
|
|
286
|
-
name: "",
|
|
287
|
-
type: "bool",
|
|
288
|
-
},
|
|
289
|
-
],
|
|
290
|
-
stateMutability: "view",
|
|
291
|
-
type: "function",
|
|
292
|
-
},
|
|
293
|
-
{
|
|
294
|
-
inputs: [],
|
|
295
|
-
name: "failed",
|
|
296
|
-
outputs: [
|
|
297
|
-
{
|
|
298
|
-
internalType: "bool",
|
|
299
|
-
name: "",
|
|
300
|
-
type: "bool",
|
|
301
|
-
},
|
|
302
|
-
],
|
|
303
|
-
stateMutability: "nonpayable",
|
|
304
|
-
type: "function",
|
|
305
|
-
},
|
|
306
|
-
{
|
|
307
|
-
inputs: [],
|
|
308
|
-
name: "setUp",
|
|
309
|
-
outputs: [],
|
|
310
|
-
stateMutability: "nonpayable",
|
|
311
|
-
type: "function",
|
|
312
|
-
},
|
|
313
|
-
{
|
|
314
|
-
inputs: [],
|
|
315
|
-
name: "test_PM_01_constructor_sets_correct_values",
|
|
316
|
-
outputs: [],
|
|
317
|
-
stateMutability: "nonpayable",
|
|
318
|
-
type: "function",
|
|
319
|
-
},
|
|
320
|
-
{
|
|
321
|
-
inputs: [],
|
|
322
|
-
name: "test_PM_02_pauseAllCreditManagers_works_correctly",
|
|
323
|
-
outputs: [],
|
|
324
|
-
stateMutability: "nonpayable",
|
|
325
|
-
type: "function",
|
|
326
|
-
},
|
|
327
|
-
{
|
|
328
|
-
inputs: [],
|
|
329
|
-
name: "test_PM_03_pauseAllPools_works_correctly",
|
|
330
|
-
outputs: [],
|
|
331
|
-
stateMutability: "nonpayable",
|
|
332
|
-
type: "function",
|
|
333
|
-
},
|
|
334
|
-
{
|
|
335
|
-
inputs: [],
|
|
336
|
-
name: "test_PM_04_pauseAllContracts_works_correctly",
|
|
337
|
-
outputs: [],
|
|
338
|
-
stateMutability: "nonpayable",
|
|
339
|
-
type: "function",
|
|
340
|
-
},
|
|
341
|
-
{
|
|
342
|
-
inputs: [],
|
|
343
|
-
name: "test_PM_05_functions_revert_when_caller_not_pausable_admin",
|
|
344
|
-
outputs: [],
|
|
345
|
-
stateMutability: "nonpayable",
|
|
346
|
-
type: "function",
|
|
347
|
-
},
|
|
348
|
-
];
|
|
349
|
-
|
|
350
|
-
const _bytecode =
|
|
351
|
-
"0x60806040526000805461ff01600160b01b031916757109709ecfa91a80626ff3989d68f67f5b1dd12d000117905534801561003957600080fd5b5062032a39806200004b6000396000f3fe60806040523480156200001157600080fd5b5060043610620000935760003560e01c80636e2eef9c11620000625780636e2eef9c14620000c2578063ba414fa614620000cc578063fa7626d414620000ea578063fb864ce514620000f857600080fd5b80630a9254e41462000098578063212902bf14620000a45780635ee50de714620000ae57806368f8382414620000b8575b600080fd5b620000a262000102565b005b620000a262000d1e565b620000a262000feb565b620000a262001228565b620000a262001773565b620000d662001ab1565b604051901515815260200160405180910390f35b600054620000d69060ff1681565b620000a262001c1b565b6040516200011090620022a9565b604051809103906000f0801580156200012d573d6000803e3d6000fd5b50600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691821790556040516001906000906200018690620022b7565b6200019493929190620022f0565b604051809103906000f080158015620001b1573d6000803e3d6000fd5b50600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169182179055604080517f2954018c0000000000000000000000000000000000000000000000000000000081529051632954018c916004808201926020929091908290030181865afa1580156200024b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027191906200237e565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600154604080517f6b70b04c00000000000000000000000000000000000000000000000000000000815290519190921691636b70b04c9160048083019260209291908290030181865afa1580156200030e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033491906200237e565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600154604080517fc12c21c00000000000000000000000000000000000000000000000000000000081529051919092169163c12c21c09160048083019260209291908290030181865afa158015620003d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f791906200237e565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169182178155604080517f6f307dc30000000000000000000000000000000000000000000000000000000081529051636f307dc3928281019260209291908290030181865afa1580156200048d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b391906200237e565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600154604080517f62eb33e3000000000000000000000000000000000000000000000000000000008152905191909216916362eb33e39160048083019260209291908290030181865afa15801562000550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200057691906200237e565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600354600854604051918316921690620005d190620022c6565b73ffffffffffffffffffffffffffffffffffffffff928316815291166020820152604001604051809103906000f08015801562000612573d6000803e3d6000fd5b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790556000546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c86004820152620100009091049091169063ca669fa790602401600060405180830381600087803b158015620006c657600080fd5b505af1158015620006db573d6000803e3d6000fd5b50506009546007546040517fd914cd4b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063d914cd4b9150602401600060405180830381600087803b1580156200074f57600080fd5b505af115801562000764573d6000803e3d6000fd5b505060075460405173ffffffffffffffffffffffffffffffffffffffff9091169250620007929150620022d4565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f080158015620007cc573d6000803e3d6000fd5b50600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790556000546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c86004820152620100009091049091169063ca669fa790602401600060405180830381600087803b1580156200088057600080fd5b505af115801562000895573d6000803e3d6000fd5b50506009546005546040517fe26b2f6300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063e26b2f639150602401600060405180830381600087803b1580156200090957600080fd5b505af11580156200091e573d6000803e3d6000fd5b505060035460405173ffffffffffffffffffffffffffffffffffffffff90911692506200094c9150620022e2565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f08015801562000986573d6000803e3d6000fd5b50600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790556000546040517f06447d560000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015262010000909104909116906306447d5690602401600060405180830381600087803b15801562000a3a57600080fd5b505af115801562000a4f573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de2873596040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ac1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ae791906200237e565b600a546040517f4910832f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152911690634910832f90602401600060405180830381600087803b15801562000b5457600080fd5b505af115801562000b69573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de2873596040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000bdb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c0191906200237e565b6040517f4910832f00000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb92266600482015273ffffffffffffffffffffffffffffffffffffffff9190911690634910832f90602401600060405180830381600087803b15801562000c7f57600080fd5b505af115801562000c94573d6000803e3d6000fd5b50505050600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000d0357600080fd5b505af115801562000d18573d6000803e3d6000fd5b50505050565b6000546040517fca669fa700000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb9226660048201526201000090910473ffffffffffffffffffffffffffffffffffffffff169063ca669fa790602401600060405180830381600087803b15801562000da357600080fd5b505af115801562000db8573d6000803e3d6000fd5b50505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663488bf5b46040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000e2757600080fd5b505af115801562000e3c573d6000803e3d6000fd5b5050505062000f14600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000eb2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ed89190620023a5565b6040518060400160405280601181526020017f506f6f6c2031206e6f742070617573656400000000000000000000000000000081525062001e22565b600754604080517f5c975abb000000000000000000000000000000000000000000000000000000008152905162000fe99273ffffffffffffffffffffffffffffffffffffffff1691635c975abb9160048083019260209291908290030181865afa15801562000f87573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fad9190620023a5565b6040518060400160405280601181526020017f506f6f6c2032206e6f742070617573656400000000000000000000000000000081525062001e22565b565b600a54604080517fde2873590000000000000000000000000000000000000000000000000000000081529051620011549273ffffffffffffffffffffffffffffffffffffffff169163de2873599160048083019260209291908290030181865afa1580156200105e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200108491906200237e565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de2873596040518163ffffffff1660e01b8152600401602060405180830381865afa158015620010f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200111891906200237e565b6040518060400160405280601381526020017f41434c2073657420696e636f72726563746c790000000000000000000000000081525062001e70565b600a54604080517f62eb33e3000000000000000000000000000000000000000000000000000000008152905162000fe99273ffffffffffffffffffffffffffffffffffffffff16916362eb33e39160048083019260209291908290030181865afa158015620011c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011ed91906200237e565b6009546040805160608101909152602180825273ffffffffffffffffffffffffffffffffffffffff90921691620329e3602083013962001e70565b6000546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd794b1e70000000000000000000000000000000000000000000000000000000060048201526201000090910473ffffffffffffffffffffffffffffffffffffffff169063c31eb0e090602401600060405180830381600087803b158015620012b957600080fd5b505af1158015620012ce573d6000803e3d6000fd5b50506000546040517fca669fa70000000000000000000000000000000000000000000000000000000081527390f79bf6eb2c4f870365e785982e1f101e93b90660048201526201000090910473ffffffffffffffffffffffffffffffffffffffff16925063ca669fa79150602401600060405180830381600087803b1580156200135757600080fd5b505af11580156200136c573d6000803e3d6000fd5b50505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f0744366040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620013db57600080fd5b505af1158015620013f0573d6000803e3d6000fd5b50506000546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd794b1e70000000000000000000000000000000000000000000000000000000060048201526201000090910473ffffffffffffffffffffffffffffffffffffffff16925063c31eb0e09150602401600060405180830381600087803b1580156200148557600080fd5b505af11580156200149a573d6000803e3d6000fd5b50506000546040517fca669fa70000000000000000000000000000000000000000000000000000000081527390f79bf6eb2c4f870365e785982e1f101e93b90660048201526201000090910473ffffffffffffffffffffffffffffffffffffffff16925063ca669fa79150602401600060405180830381600087803b1580156200152357600080fd5b505af115801562001538573d6000803e3d6000fd5b50505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663488bf5b46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620015a757600080fd5b505af1158015620015bc573d6000803e3d6000fd5b50506000546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd794b1e70000000000000000000000000000000000000000000000000000000060048201526201000090910473ffffffffffffffffffffffffffffffffffffffff16925063c31eb0e09150602401600060405180830381600087803b1580156200165157600080fd5b505af115801562001666573d6000803e3d6000fd5b50506000546040517fca669fa70000000000000000000000000000000000000000000000000000000081527390f79bf6eb2c4f870365e785982e1f101e93b90660048201526201000090910473ffffffffffffffffffffffffffffffffffffffff16925063ca669fa79150602401600060405180830381600087803b158015620016ef57600080fd5b505af115801562001704573d6000803e3d6000fd5b50505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637c205cc46040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000d0357600080fd5b6000546040517fca669fa700000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb9226660048201526201000090910473ffffffffffffffffffffffffffffffffffffffff169063ca669fa790602401600060405180830381600087803b158015620017f857600080fd5b505af11580156200180d573d6000803e3d6000fd5b50505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637c205cc46040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200187c57600080fd5b505af115801562001891573d6000803e3d6000fd5b5050505062001969600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001907573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200192d9190620023a5565b6040518060400160405280601b81526020017f437265646974206d616e616765722031206e6f7420706175736564000000000081525062001e22565b600554604080517f5c975abb000000000000000000000000000000000000000000000000000000008152905162001a3e9273ffffffffffffffffffffffffffffffffffffffff1691635c975abb9160048083019260209291908290030181865afa158015620019dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a029190620023a5565b6040518060400160405280601b81526020017f437265646974206d616e616765722032206e6f7420706175736564000000000081525062001e22565b600654604080517f5c975abb000000000000000000000000000000000000000000000000000000008152905162000f149273ffffffffffffffffffffffffffffffffffffffff1691635c975abb9160048083019260209291908290030181865afa15801562000eb2573d6000803e3d6000fd5b60008054610100900460ff161562001ad25750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562001c165760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162001b7a917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620023f8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262001bb49162002442565b6000604051808303816000865af19150503d806000811462001bf3576040519150601f19603f3d011682016040523d82523d6000602084013e62001bf8565b606091505b509150508080602001905181019062001c129190620023a5565b9150505b919050565b6000546040517fca669fa700000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb9226660048201526201000090910473ffffffffffffffffffffffffffffffffffffffff169063ca669fa790602401600060405180830381600087803b15801562001ca057600080fd5b505af115801562001cb5573d6000803e3d6000fd5b50505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f0744366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001d2457600080fd5b505af115801562001d39573d6000803e3d6000fd5b5050505062001daf600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001907573d6000803e3d6000fd5b600554604080517f5c975abb000000000000000000000000000000000000000000000000000000008152905162000fe99273ffffffffffffffffffffffffffffffffffffffff1691635c975abb9160048083019260209291908290030181865afa158015620019dc573d6000803e3d6000fd5b8162001e6c577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162001e59919062002460565b60405180910390a162001e6c8262001eee565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161462001ee9577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162001ed5919062002460565b60405180910390a162001ee9838362001f69565b505050565b8062001f66577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001f549060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162001f6662002126565b50565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462001e6c577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620020239060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f2020457870656374656400000000000000000000000000000000000000000000606082015273ffffffffffffffffffffffffffffffffffffffff8316602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a160408051818152600a818301527f2020202041637475616c00000000000000000000000000000000000000000000606082015273ffffffffffffffffffffffffffffffffffffffff8416602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a162001e6c5b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200227b5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052620021f89291602001620023f8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052620022329162002442565b6000604051808303816000865af19150503d806000811462002271576040519150601f19603f3d011682016040523d82523d6000602084013e62002276565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b617a5180620024e883390190565b620213148062009f3983390190565b6110a7806202b24d83390190565b6158e8806202c2f483390190565b610e078062031bdc83390190565b73ffffffffffffffffffffffffffffffffffffffff8416815260608101600b841062002345577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8360208301528215156040830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811462001f6657600080fd5b6000602082840312156200239157600080fd5b81516200239e816200235b565b9392505050565b600060208284031215620023b857600080fd5b815180151581146200239e57600080fd5b60005b83811015620023e6578181015183820152602001620023cc565b8381111562000d185750506000910152565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162002434816004850160208701620023c9565b919091016004019392505050565b6000825162002456818460208701620023c9565b9190910192915050565b60408152600560408201527f4572726f7200000000000000000000000000000000000000000000000000000060608201526080602082015260008251806080840152620024b58160a0850160208701620023c9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160a0019291505056fe60806040526000805461ff01600160b01b031916757109709ecfa91a80626ff3989d68f67f5b1dd12d00011790553480156200003a57600080fd5b506040805161018081019091526000908060c081018060018152604080518082018252600381526244414960e81b6020828101919091528301526012908201526305f5e100606082015260800160018152602001600081525081526020016040518060c001604052806002600a811115620000b957620000b962000b78565b815260408051808201825260048152635553444360e01b6020828101919091528301526006908201526305f5e100606082015260800160018152602001600081525081526020016040518060c001604052806003600a81111562000121576200012162000b78565b815260408051808201825260048152630ae8aa8960e31b602082810191909152830152601290820152644a817c8000606082015260800160028152602001600081525081526020016040518060c001604052806004600a8111156200018a576200018a62000b78565b815260408051808201825260048152634c494e4b60e01b6020828101919091528301526012908201526359682f00606082015260800160018152602001600081525081526020016040518060c001604052806005600a811115620001f257620001f262000b78565b815260408051808201825260048152631554d11560e21b602082810191909152830152601290820152633b023380606082015260800160018152602001600081525081526020016040518060c001604052806006600a8111156200025a576200025a62000b78565b815260408051808201825260058152640e6e88aa8960db1b602082810191909152830152601290820152644cd588640060608201526080016003815260200160009052905260408051610140810190915290915060009080608081018060078152602001604051806040016040528060048152602001636344414960e01b8152508152602001601260ff1681526020016305f5e100815260200160048081111562000309576200030962000b78565b8152602001600181525081526020016040518060c001604052806008600a81111562000339576200033962000b78565b81526040805180820182526005815264635553444360d81b6020828101919091528301526006908201526305f5e100606082015260800160048152602001600281525081526020016040518060c001604052806009600a811115620003a257620003a262000b78565b8152604080518082018252600581526418d554d11560da1b602082810191909152830152601290820152633b023380606082015260800160048152602001600581525081526020016040518060c00160405280600a808111156200040a576200040a62000b78565b81526040805180820182526005815264634c494e4b60d81b6020828101919091528301526012908201526359682f00606082015260800160048152602001600490529052905060005b600681101562000496576200048183826006811062000476576200047662000b8e565b6020020151620004db565b806200048d8162000ba4565b91505062000453565b5060005b6004811015620004d257620004bd82826004811062000476576200047662000b8e565b80620004c98162000ba4565b9150506200049a565b50505062000d14565b6000600282608001516004811115620004f857620004f862000b78565b14156200054e576040516200050d9062000a8c565b604051809103906000f0801580156200052a573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b03831617905590506200071e565b60038260800151600481111562000569576200056962000b78565b1415620005a4576040516200057e9062000a9a565b604051809103906000f0801580156200059b573d6000803e3d6000fd5b5090506200071e565b600182608001516004811115620005bf57620005bf62000b78565b1415620005f157816020015182602001518360400151604051620005e39062000aa8565b6200057e9392919062000c1e565b6004826080015160048111156200060c576200060c62000b78565b1415620006be576000600260008460a00151600a81111562000632576200063262000b78565b600a81111562000646576200064662000b78565b815260200190815260200160002060009054906101000a90046001600160a01b0316905082602001518360200151846040015183604051620006889062000ab6565b62000697949392919062000c5b565b604051809103906000f080158015620006b4573d6000803e3d6000fd5b509150506200071e565b60405162461bcd60e51b815260206004820152602b60248201527f74657374546f6b656e53756974653a204372656174696e6720756e6b6e6f776e60448201526a20746f6b656e207479706560a81b606482015260840160405180910390fd5b60005460208301516040516318caf8e360e31b8152620100009092046001600160a01b03169163c657c718916200075b9185919060040162000ca9565b600060405180830381600087803b1580156200077657600080fd5b505af11580156200078b573d6000803e3d6000fd5b50505050600082606001516008604051620007a69062000ac4565b91825260ff166020820152604001604051809103906000f080158015620007d1573d6000803e3d6000fd5b50905081600260008560000151600a811115620007f257620007f262000b78565b600a81111562000806576200080662000b78565b815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508260600151600560008560000151600a8111156200085a576200085a62000b78565b600a8111156200086e576200086e62000b78565b8152602080820192909252604090810160009081209390935585516001600160a01b03861684526008909252909120805460ff1916600183600a811115620008ba57620008ba62000b78565b02179055508260800151600360008560000151600a811115620008e157620008e162000b78565b600a811115620008f557620008f562000b78565b81526020810191909152604001600020805460ff1916600183600481111562000922576200092262000b78565b0217905550604080518082019091526001600160a01b0380841682528281166020808401918252600780546001810182556000918252945160029095027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810180549686166001600160a01b031997881617905592517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689909301805493909416929094169190911790915584015184519091600491600a811115620009eb57620009eb62000b78565b600a811115620009ff57620009ff62000b78565b8152602001908152602001600020908051906020019062000a2292919062000ad2565b5080600660008560000151600a81111562000a415762000a4162000b78565b600a81111562000a555762000a5562000b78565b815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050565b610ab1806200285183390190565b611224806200330283390190565b611758806200452683390190565b6117098062005c7e83390190565b6106ca806200738783390190565b82805462000ae09062000cd7565b90600052602060002090601f01602090048101928262000b04576000855562000b4f565b82601f1062000b1f57805160ff191683800117855562000b4f565b8280016001018555821562000b4f579182015b8281111562000b4f57825182559160200191906001019062000b32565b5062000b5d92915062000b61565b5090565b5b8082111562000b5d576000815560010162000b62565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060001982141562000bc757634e487b7160e01b600052601160045260246000fd5b5060010190565b6000815180845260005b8181101562000bf65760208185018101518683018201520162000bd8565b8181111562000c09576000602083870101525b50601f01601f19169290920160200192915050565b60608152600062000c33606083018662000bce565b828103602084015262000c47818662000bce565b91505060ff83166040830152949350505050565b60808152600062000c70608083018762000bce565b828103602084015262000c84818762000bce565b60ff95909516604084015250506001600160a01b039190911660609091015292915050565b6001600160a01b038316815260406020820181905260009062000ccf9083018462000bce565b949350505050565b600181811c9082168062000cec57607f821691505b6020821081141562000d0e57634e487b7160e01b600052602260045260246000fd5b50919050565b611b2d8062000d246000396000f3fe6080604052600436106101635760003560e01c80638eb86e8b116100c0578063c6c3bbe611610074578063d051a62211610059578063d051a62214610490578063eebab8ef146104b0578063fa7626d4146104d057600080fd5b8063c6c3bbe614610433578063c74912d21461045357600080fd5b80639b140a85116100a55780639b140a85146103e6578063b36ba20814610406578063ba414fa61461040e57600080fd5b80638eb86e8b1461038357806398cdaadf146103a357600080fd5b80636a72bde71161011757806388327863116100fc578063883278631461030857806388f776a2146103365780638a3177a31461035657600080fd5b80636a72bde7146102c45780636ca42ae3146102e657600080fd5b8063440864fa11610148578063440864fa146102025780634b57b0be1461022f57806367b426451461028157600080fd5b806304bc3b1c1461016f57806310c7f0b9146101b557600080fd5b3661016a57005b600080fd5b34801561017b57600080fd5b5061019f61018a3660046116f6565b60086020526000908152604090205460ff1681565b6040516101ac9190611742565b60405180910390f35b3480156101c157600080fd5b506101d56101d036600461175c565b6104ea565b6040805173ffffffffffffffffffffffffffffffffffffffff9384168152929091166020830152016101ac565b34801561020e57600080fd5b5061022261021d366004611784565b610530565b6040516101ac91906117cb565b34801561023b57600080fd5b5060015461025c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ac565b34801561028d57600080fd5b5061025c61029c366004611784565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156102d057600080fd5b506102e46102df36600461181c565b6105ca565b005b3480156102f257600080fd5b506102fb610730565b6040516101ac919061186b565b34801561031457600080fd5b506103286103233660046118d4565b6107b5565b6040519081526020016101ac565b34801561034257600080fd5b506102e461035136600461190b565b610888565b34801561036257600080fd5b50610328610371366004611784565b60056020526000908152604090205481565b34801561038f57600080fd5b506102e461039e366004611954565b6108b9565b3480156103af57600080fd5b5061025c6103be366004611784565b60066020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156103f257600080fd5b506102e4610401366004611993565b610a73565b6102e4610b22565b34801561041a57600080fd5b50610423610ba0565b60405190151581526020016101ac565b34801561043f57600080fd5b506102e461044e3660046119b3565b610d00565b34801561045f57600080fd5b5061048361046e366004611784565b60036020526000908152604090205460ff1681565b6040516101ac91906119d3565b34801561049c57600080fd5b506103286104ab36600461190b565b610daf565b3480156104bc57600080fd5b506102e46104cb366004611954565b610e8b565b3480156104dc57600080fd5b506000546104239060ff1681565b600781815481106104fa57600080fd5b60009182526020909120600290910201805460019091015473ffffffffffffffffffffffffffffffffffffffff91821692501682565b60046020526000908152604090208054610549906119e7565b80601f0160208091040260200160405190810160405280929190818152602001828054610575906119e7565b80156105c25780601f10610597576101008083540402835291602001916105c2565b820191906000526020600020905b8154815290600101906020018083116105a557829003601f168201915b505050505081565b6000546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152620100009092049091169063ca669fa790602401600060405180830381600087803b15801561063e57600080fd5b505af1158015610652573d6000803e3d6000fd5b505050506002600085600a81111561066c5761066c611713565b600a81111561067d5761067d611713565b8152602081019190915260409081016000205490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490529091169063095ea7b3906044016020604051808303816000875af1158015610705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107299190611a3b565b5050505050565b60606007805480602002602001604051908101604052809291908181526020016000905b828210156107ac5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff908116835260019182015416828401529083529092019101610754565b50505050905090565b60006002600084600a8111156107cd576107cd611713565b600a8111156107de576107de611713565b8152602081019190915260409081016000205490517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152909116906370a0823190602401602060405180830381865afa15801561085d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108819190611a5d565b9392505050565b6108b48383837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6105ca565b505050565b60016003600085600a8111156108d1576108d1611713565b600a8111156108e2576108e2611713565b815260208101919091526040016000205460ff16600481111561090757610907611713565b14610999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f74657374546f6b656e53756974653a20547279696e6720746f206275726e206160448201527f206e6f6e2d6e6f726d616c20746f6b656e00000000000000000000000000000060648201526084015b60405180910390fd5b6002600084600a8111156109af576109af611713565b600a8111156109c0576109c0611713565b8152602081019190915260409081016000205490517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905290911690639dc29fac906044015b6020604051808303816000875af1158015610a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6d9190611a3b565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604081205460ff169081600a811115610aaf57610aaf611713565b1415610b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4e6f20746f6b656e2077697468207375636820616464726573730000000000006044820152606401610990565b610a6d818484610888565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b8c57600080fd5b505af1158015610729573d6000803e3d6000fd5b60008054610100900460ff1615610bc05750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610cfb5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610c65917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611a76565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c9d91611abe565b6000604051808303816000865af19150503d8060008114610cda576040519150601f19603f3d011682016040523d82523d6000602084013e610cdf565b606091505b5091505080806020019051810190610cf79190611a3b565b9150505b919050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604081205460ff169081600a811115610d3c57610d3c611713565b1415610da4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4e6f20746f6b656e2077697468207375636820616464726573730000000000006044820152606401610990565b610a6d818484610e8b565b60006002600085600a811115610dc757610dc7611713565b600a811115610dd857610dd8611713565b8152602081019190915260409081016000205490517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301529091169063dd62ed3e90604401602060405180830381865afa158015610e5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e839190611a5d565b949350505050565b60026003600085600a811115610ea357610ea3611713565b600a811115610eb457610eb4611713565b815260208101919091526040016000205460ff166004811115610ed957610ed9611713565b1415610ff6576000546040517fc88a5e6d000000000000000000000000000000000000000000000000000000008152306004820152602481018390526201000090910473ffffffffffffffffffffffffffffffffffffffff169063c88a5e6d90604401600060405180830381600087803b158015610f5657600080fd5b505af1158015610f6a573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b505050505061163c565b600380600085600a81111561100d5761100d611713565b600a81111561101e5761101e611713565b815260208101919091526040016000205460ff16600481111561104357611043611713565b14156111aa576000546040517fc88a5e6d000000000000000000000000000000000000000000000000000000008152306004820152602481018390526201000090910473ffffffffffffffffffffffffffffffffffffffff169063c88a5e6d90604401600060405180830381600087803b1580156110c057600080fd5b505af11580156110d4573d6000803e3d6000fd5b505050506002600084600a8111156110ee576110ee611713565b600a8111156110ff576110ff611713565b8152602081019190915260409081016000205490517fa1903eab00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9091169063a1903eab90839060240160206040518083038185885af115801561117f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111a49190611a5d565b5061163c565b60046003600085600a8111156111c2576111c2611713565b600a8111156111d3576111d3611713565b815260208101919091526040016000205460ff1660048111156111f8576111f8611713565b141561148f5760006002600085600a81111561121657611216611713565b600a81111561122757611227611713565b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c49190611ada565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600860205260409020549091506112fb9060ff163084610e8b565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b36002600087600a81111561132d5761132d611713565b600a81111561133e5761133e611713565b81526020810191909152604090810160002054905160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018590526044016020604051808303816000875af11580156113c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e69190611a3b565b506002600085600a8111156113fd576113fd611713565b600a81111561140e5761140e611713565b8152602081019190915260409081016000205490517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810184905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b158015610fd857600080fd5b60016003600085600a8111156114a7576114a7611713565b600a8111156114b8576114b8611713565b815260208101919091526040016000205460ff1660048111156114dd576114dd611713565b14156115b4576002600084600a8111156114f9576114f9611713565b600a81111561150a5761150a611713565b8152602081019190915260409081016000205490517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f19906044016020604051808303816000875af1158015611590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a49190611a3b565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f74657374546f6b656e53756974653a20547279696e6720746f207472616e736660448201527f657220756e6b6e6f776e20746f6b656e000000000000000000000000000000006064820152608401610990565b6002600084600a81111561165257611652611713565b600a81111561166357611663611713565b8152602081019190915260409081016000205490517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490529091169063a9059cbb90604401610a2a565b73ffffffffffffffffffffffffffffffffffffffff811681146116f357600080fd5b50565b60006020828403121561170857600080fd5b8135610881816116d1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600b831061175657611756611713565b91905290565b60006020828403121561176e57600080fd5b5035919050565b8035600b8110610cfb57600080fd5b60006020828403121561179657600080fd5b61088182611775565b60005b838110156117ba5781810151838201526020016117a2565b83811115610a6d5750506000910152565b60208152600082518060208401526117ea81604085016020870161179f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561183257600080fd5b61183b85611775565b9350602085013561184b816116d1565b9250604085013561185b816116d1565b9396929550929360600135925050565b602080825282518282018190526000919060409081850190868401855b828110156118c7578151805173ffffffffffffffffffffffffffffffffffffffff90811686529087015116868501529284019290850190600101611888565b5091979650505050505050565b600080604083850312156118e757600080fd5b6118f083611775565b91506020830135611900816116d1565b809150509250929050565b60008060006060848603121561192057600080fd5b61192984611775565b92506020840135611939816116d1565b91506040840135611949816116d1565b809150509250925092565b60008060006060848603121561196957600080fd5b61197284611775565b92506020840135611982816116d1565b929592945050506040919091013590565b6000806000606084860312156119a857600080fd5b8335611929816116d1565b6000806000606084860312156119c857600080fd5b8335611972816116d1565b602081016005831061175657611756611713565b600181811c908216806119fb57607f821691505b60208210811415611a35577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215611a4d57600080fd5b8151801515811461088157600080fd5b600060208284031215611a6f57600080fd5b5051919050565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251611ab081600485016020870161179f565b919091016004019392505050565b60008251611ad081846020870161179f565b9190910192915050565b600060208284031215611aec57600080fd5b8151610881816116d156fea264697066735822122010fe735ed069aca27931edce4ba2ff14ec7886bf21b0eea685a884f9200fb49e64736f6c634300080a003360c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b5061014e565b82805461008690610113565b90600052602060002090601f0160209004810192826100a857600085556100ee565b82601f106100c157805160ff19168380011785556100ee565b828001600101855582156100ee579182015b828111156100ee5782518255916020019190600101906100d3565b506100fa9291506100fe565b5090565b5b808211156100fa57600081556001016100ff565b600181811c9082168061012757607f821691505b6020821081141561014857634e487b7160e01b600052602260045260246000fd5b50919050565b6109548061015d6000396000f3fe6080604052600436106100cb5760003560e01c806340c10f1911610074578063a9059cbb1161004e578063a9059cbb14610225578063d0e30db014610245578063dd62ed3e1461024d57600080fd5b806340c10f19146101c357806370a08231146101e357806395d89b411461021057600080fd5b806323b872dd116100a557806323b872dd146101575780632e1a7d4d14610177578063313ce5671461019757600080fd5b806306fdde03146100df578063095ea7b31461010a57806318160ddd1461013a57600080fd5b366100da576100d8610285565b005b600080fd5b3480156100eb57600080fd5b506100f46102e0565b6040516101019190610703565b60405180910390f35b34801561011657600080fd5b5061012a61012536600461079f565b61036e565b6040519015158152602001610101565b34801561014657600080fd5b50475b604051908152602001610101565b34801561016357600080fd5b5061012a6101723660046107c9565b6103e7565b34801561018357600080fd5b506100d8610192366004610805565b6105fe565b3480156101a357600080fd5b506002546101b19060ff1681565b60405160ff9091168152602001610101565b3480156101cf57600080fd5b506100d86101de36600461079f565b6106a4565b3480156101ef57600080fd5b506101496101fe36600461081e565b60036020526000908152604090205481565b34801561021c57600080fd5b506100f46106e2565b34801561023157600080fd5b5061012a61024036600461079f565b6106ef565b6100d8610285565b34801561025957600080fd5b50610149610268366004610839565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102a490849061089b565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102ed906108b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610319906108b3565b80156103665780601f1061033b57610100808354040283529160200191610366565b820191906000526020600020905b81548152906001019060200180831161034957829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103d69086815260200190565b60405180910390a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561041957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061048f575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105175773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156104d157600080fd5b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915281208054849290610511908490610907565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061054c908490610907565b909155505073ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805484929061058690849061089b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105ec91815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561061a57600080fd5b3360009081526003602052604081208054839290610639908490610907565b9091555050604051339082156108fc029083906000818181858888f1935050505015801561066b573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080548392906106d990849061089b565b90915550505050565b600180546102ed906108b3565b60006106fc3384846103e7565b9392505050565b600060208083528351808285015260005b8181101561073057858101830151858201604001528201610714565b81811115610742576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461079a57600080fd5b919050565b600080604083850312156107b257600080fd5b6107bb83610776565b946020939093013593505050565b6000806000606084860312156107de57600080fd5b6107e784610776565b92506107f560208501610776565b9150604084013590509250925092565b60006020828403121561081757600080fd5b5035919050565b60006020828403121561083057600080fd5b6106fc82610776565b6000806040838503121561084c57600080fd5b61085583610776565b915061086360208401610776565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156108ae576108ae61086c565b500190565b600181811c908216806108c757607f821691505b60208210811415610901577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000828210156109195761091961086c565b50039056fea26469706673582212206ec943fa4e3b70d8fca6c25b6aa26fa18e8f8952ce3bc4d5afcb443bf3097c0564736f6c634300080a003360806040526000600255600060035534801561001a57600080fd5b506111fa8061002a6000396000f3fe60806040526004361061016e5760003560e01c80637a28fb88116100cb578063bdd17e1c1161007f578063dd62ed3e11610059578063dd62ed3e146103ee578063ee7a7c0414610441578063f5eb42dc1461046157600080fd5b8063bdd17e1c146103ad578063cdb9a21c146103c3578063d5002f2e146103d957600080fd5b8063a1903eab116100b0578063a1903eab1461035a578063a457c2d71461036d578063a9059cbb1461038d57600080fd5b80637a28fb88146102f457806395d89b411461031457600080fd5b806323b872dd1161012257806337cfdaca1161010757806337cfdaca1461020d57806339509351146102b457806370a08231146102d457600080fd5b806323b872dd14610278578063313ce5671461029857600080fd5b806318160ddd1161015357806318160ddd1461020d578063192084511461023057806322301f6e1461025057600080fd5b806306fdde0314610185578063095ea7b3146101dd57600080fd5b366101805761017d6000610481565b50005b600080fd5b34801561019157600080fd5b5060408051808201909152601781527f4c6971756964207374616b656420457468657220322e3000000000000000000060208201525b6040516101d49190610f63565b60405180910390f35b3480156101e957600080fd5b506101fd6101f8366004610fff565b610545565b60405190151581526020016101d4565b34801561021957600080fd5b5061022261055b565b6040519081526020016101d4565b34801561023c57600080fd5b5061022261024b366004611029565b61056b565b34801561025c57600080fd5b5061027661026b366004611042565b600391909155600255565b005b34801561028457600080fd5b506101fd610293366004611064565b6105ab565b3480156102a457600080fd5b50604051601281526020016101d4565b3480156102c057600080fd5b506101fd6102cf366004610fff565b610696565b3480156102e057600080fd5b506102226102ef3660046110a0565b6106d9565b34801561030057600080fd5b5061022261030f366004611029565b61070e565b34801561032057600080fd5b5060408051808201909152600581527f737445544800000000000000000000000000000000000000000000000000000060208201526101c7565b6102226103683660046110a0565b61073a565b34801561037957600080fd5b506101fd610388366004610fff565b610745565b34801561039957600080fd5b506101fd6103a8366004610fff565b6107f9565b3480156103b957600080fd5b5061022260035481565b3480156103cf57600080fd5b5061022260025481565b3480156103e557600080fd5b50610222610806565b3480156103fa57600080fd5b506102226104093660046110bb565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b34801561044d57600080fd5b5061027661045c366004610fff565b610811565b34801561046d57600080fd5b5061022261047c3660046110a0565b61081f565b60003334806104f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006104fc8261056b565b9050806105065750805b8160036000828254610518919061111d565b909155506105289050838261084a565b61053383838761093b565b61053d8382610992565b949350505050565b60006105523384846109ea565b50600192915050565b600061056660035490565b905090565b60008061057760035490565b9050806105875750600092915050565b6105a48161059e61059760025490565b8690610b52565b90610b5e565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602090815260408083203384529091528120548281101561066c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f5452414e534645525f414d4f554e545f455843454544535f414c4c4f57414e4360448201527f450000000000000000000000000000000000000000000000000000000000000060648201526084016104e8565b610677858585610b6a565b61068b85336106868487610bef565b6109ea565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105529185906106869086610bfb565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260408120546107089061070e565b92915050565b60008061071a60025490565b90508061072a5750600092915050565b6105a48161059e61059760035490565b600061070882610481565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156107e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4445435245415345445f414c4c4f57414e43455f42454c4f575f5a45524f000060448201526064016104e8565b6107ef33856106868487610bef565b5060019392505050565b6000610552338484610b6a565b600061056660025490565b61081b8282610c07565b5050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260208190526040812054610708565b73ffffffffffffffffffffffffffffffffffffffff82166108c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d494e545f544f5f5448455f5a45524f5f41444452455353000000000000000060448201526064016104e8565b80600260008282546108d9919061111d565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461090e9082610bfb565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526020819052604090209190915550565b6040805183815273ffffffffffffffffffffffffffffffffffffffff83811660208301528516917fed8dd430b1e4bba98e943dc5b157cf7b54d9e12916d6c474ff5733a95001d03b910160405180910390a2505050565b73ffffffffffffffffffffffffffffffffffffffff821660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6109d58461070e565b60405190815260200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8316610a67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f415050524f56455f46524f4d5f5a45524f5f414444524553530000000000000060448201526064016104e8565b73ffffffffffffffffffffffffffffffffffffffff8216610ae4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f415050524f56455f544f5f5a45524f5f4144445245535300000000000000000060448201526064016104e8565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006105a48284611135565b60006105a48284611172565b6000610b758261056b565b9050610b82848483610d64565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610be191815260200190565b60405180910390a350505050565b60006105a482846111ad565b60006105a4828461111d565b73ffffffffffffffffffffffffffffffffffffffff8216610c84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4255524e5f46524f4d5f5448455f5a45524f5f4144445245535300000000000060448201526064016104e8565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205480821115610d14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4255524e5f414d4f554e545f455843454544535f42414c414e4345000000000060448201526064016104e8565b8160026000828254610d2691906111ad565b90915550610d3690508183610bef565b73ffffffffffffffffffffffffffffffffffffffff9093166000908152602081905260409020929092555050565b73ffffffffffffffffffffffffffffffffffffffff8316610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f5452414e534645525f46524f4d5f5448455f5a45524f5f41444452455353000060448201526064016104e8565b73ffffffffffffffffffffffffffffffffffffffff8216610e5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f5452414e534645525f544f5f5448455f5a45524f5f414444524553530000000060448201526064016104e8565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205480821115610eee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5452414e534645525f414d4f554e545f455843454544535f42414c414e43450060448201526064016104e8565b610ef88183610bef565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152602081905260408082209390935590851681522054610f349083610bfb565b73ffffffffffffffffffffffffffffffffffffffff909316600090815260208190526040902092909255505050565b600060208083528351808285015260005b81811015610f9057858101830151858201604001528201610f74565b81811115610fa2576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ffa57600080fd5b919050565b6000806040838503121561101257600080fd5b61101b83610fd6565b946020939093013593505050565b60006020828403121561103b57600080fd5b5035919050565b6000806040838503121561105557600080fd5b50508035926020909101359150565b60008060006060848603121561107957600080fd5b61108284610fd6565b925061109060208501610fd6565b9150604084013590509250925092565b6000602082840312156110b257600080fd5b6105a482610fd6565b600080604083850312156110ce57600080fd5b6110d783610fd6565b91506110e560208401610fd6565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611130576111306110ee565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561116d5761116d6110ee565b500290565b6000826111a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000828210156111bf576111bf6110ee565b50039056fea2646970667358221220a5b4f31162ba2b8b3424cef84b31ef91d05a825243602b5fdf758ffb49b8246364736f6c634300080a003360a06040523480156200001157600080fd5b506040516200175838038062001758833981016040819052620000349162000269565b8251839083906200004d906003906020850190620000f6565b50805162000063906004906020840190620000f6565b505050620000806200007a620000a060201b60201c565b620000a4565b60ff166080525050600680546001600160a01b031916331790556200032b565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200010490620002ee565b90600052602060002090601f01602090048101928262000128576000855562000173565b82601f106200014357805160ff191683800117855562000173565b8280016001018555821562000173579182015b828111156200017357825182559160200191906001019062000156565b506200018192915062000185565b5090565b5b8082111562000181576000815560010162000186565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001c457600080fd5b81516001600160401b0380821115620001e157620001e16200019c565b604051601f8301601f19908116603f011681019082821181831017156200020c576200020c6200019c565b816040528381526020925086838588010111156200022957600080fd5b600091505b838210156200024d57858201830151818301840152908201906200022e565b838211156200025f5760008385830101525b9695505050505050565b6000806000606084860312156200027f57600080fd5b83516001600160401b03808211156200029757600080fd5b620002a587838801620001b2565b94506020860151915080821115620002bc57600080fd5b50620002cb86828701620001b2565b925050604084015160ff81168114620002e357600080fd5b809150509250925092565b600181811c908216806200030357607f821691505b602082108114156200032557634e487b7160e01b600052602260045260246000fd5b50919050565b60805161141162000347600039600061025f01526114116000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806370a08231116100cd5780639dc29fac11610081578063a9059cbb11610066578063a9059cbb1461034c578063dd62ed3e1461035f578063f2fde38b146103a557600080fd5b80639dc29fac14610326578063a457c2d71461033957600080fd5b806379cc6790116100b257806379cc6790146102ed5780638da5cb5b1461030057806395d89b411461031e57600080fd5b806370a08231146102af578063715018a6146102e557600080fd5b806318160ddd11610124578063313ce56711610109578063313ce56714610258578063395093511461028957806340c10f191461029c57600080fd5b806318160ddd1461023357806323b872dd1461024557600080fd5b806306fdde03146101565780630754617214610174578063095ea7b3146101b95780631652e9fc146101dc575b600080fd5b61015e6103b8565b60405161016b91906111d2565b60405180910390f35b6006546101949073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016b565b6101cc6101c736600461126e565b61044a565b604051901515815260200161016b565b6102316101ea366004611298565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b005b6002545b60405190815260200161016b565b6101cc6102533660046112ba565b610460565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161016b565b6101cc61029736600461126e565b61054b565b6101cc6102aa36600461126e565b610594565b6102376102bd366004611298565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102316106a3565b6101cc6102fb36600461126e565b610730565b60055473ffffffffffffffffffffffffffffffffffffffff16610194565b61015e6107be565b6101cc61033436600461126e565b6107cd565b6101cc61034736600461126e565b6107d9565b6101cc61035a36600461126e565b6108b1565b61023761036d3660046112f6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6102316103b3366004611298565b6108be565b6060600380546103c790611329565b80601f01602080910402602001604051908101604052809291908181526020018280546103f390611329565b80156104405780601f1061041557610100808354040283529160200191610440565b820191906000526020600020905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b60006104573384846109ee565b50600192915050565b600061046d848484610ba2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482811015610533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61054085338584036109ee565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161045791859061058f9086906113ac565b6109ee565b60065460009073ffffffffffffffffffffffffffffffffffffffff163314610618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d696e7465722063616c6c73206f6e6c79000000000000000000000000000000604482015260640161052a565b60065473ffffffffffffffffffffffffffffffffffffffff163314610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d696e7465722063616c6c73206f6e6c79000000000000000000000000000000604482015260640161052a565b6104578383610e56565b60055473ffffffffffffffffffffffffffffffffffffffff163314610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052a565b61072e6000610f76565b565b60065460009073ffffffffffffffffffffffffffffffffffffffff1633146107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d696e7465722063616c6c73206f6e6c79000000000000000000000000000000604482015260640161052a565b6104578383610fed565b6060600480546103c790611329565b60006104578383610fed565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120548281101561089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161052a565b6108a733858584036109ee565b5060019392505050565b6000610457338484610ba2565b60055473ffffffffffffffffffffffffffffffffffffffff16331461093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052a565b73ffffffffffffffffffffffffffffffffffffffff81166109e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161052a565b6109eb81610f76565b50565b73ffffffffffffffffffffffffffffffffffffffff8316610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8216610b33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8216610ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610d9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610de29084906113ac565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e4891815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610ed3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161052a565b8060026000828254610ee591906113ac565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610f1f9084906113ac565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff8216611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015611146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906111829084906113c4565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610b95565b600060208083528351808285015260005b818110156111ff578581018301518582016040015282016111e3565b81811115611211576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461126957600080fd5b919050565b6000806040838503121561128157600080fd5b61128a83611245565b946020939093013593505050565b6000602082840312156112aa57600080fd5b6112b382611245565b9392505050565b6000806000606084860312156112cf57600080fd5b6112d884611245565b92506112e660208501611245565b9150604084013590509250925092565b6000806040838503121561130957600080fd5b61131283611245565b915061132060208401611245565b90509250929050565b600181811c9082168061133d57607f821691505b60208210811415611377577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156113bf576113bf61137d565b500190565b6000828210156113d6576113d661137d565b50039056fea2646970667358221220fd9684963a1e0e9d3eb55681a6f85f5c76804530c79f10cf8d0cfbd35511577164736f6c634300080a003360c06040523480156200001157600080fd5b506040516200170938038062001709833981016040819052620000349162000266565b8351849084906200004d906003906020850190620000f3565b50805162000063906004906020840190620000f3565b505050620000806200007a6200009d60201b60201c565b620000a1565b60ff9091166080526001600160a01b031660a05250620003479050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b82805462000101906200030a565b90600052602060002090601f01602090048101928262000125576000855562000170565b82601f106200014057805160ff191683800117855562000170565b8280016001018555821562000170579182015b828111156200017057825182559160200191906001019062000153565b506200017e92915062000182565b5090565b5b808211156200017e576000815560010162000183565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001c157600080fd5b81516001600160401b0380821115620001de57620001de62000199565b604051601f8301601f19908116603f0116810190828211818310171562000209576200020962000199565b816040528381526020925086838588010111156200022657600080fd5b600091505b838210156200024a57858201830151818301840152908201906200022b565b838211156200025c5760008385830101525b9695505050505050565b600080600080608085870312156200027d57600080fd5b84516001600160401b03808211156200029557600080fd5b620002a388838901620001af565b95506020870151915080821115620002ba57600080fd5b50620002c987828801620001af565b935050604085015160ff81168114620002e157600080fd5b60608601519092506001600160a01b0381168114620002ff57600080fd5b939692955090935050565b600181811c908216806200031f57607f821691505b602082108114156200034157634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05161138e6200037b600039600081816101f70152818161041f0152610600015260006101a2015261138e6000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80636f307dc3116100b257806395d89b4111610081578063a9059cbb11610066578063a9059cbb146102b5578063dd62ed3e146102c8578063f2fde38b1461030e57600080fd5b806395d89b411461029a578063a457c2d7146102a257600080fd5b80636f307dc3146101f257806370a082311461023e578063715018a6146102745780638da5cb5b1461027c57600080fd5b806323b872dd116100ee57806323b872dd14610188578063313ce5671461019b57806339509351146101cc57806340c10f19146101df57600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd146101615780631e9a695014610173575b600080fd5b610128610321565b604051610135919061112d565b60405180910390f35b61015161014c3660046111c9565b6103b3565b6040519015158152602001610135565b6002545b604051908152602001610135565b6101866101813660046111c9565b6103c9565b005b6101516101963660046111f3565b610491565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610135565b6101516101da3660046111c9565b61057c565b6101866101ed3660046111c9565b6105c5565b6102197f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b61016561024c36600461122f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610186610691565b60055473ffffffffffffffffffffffffffffffffffffffff16610219565b61012861071e565b6101516102b03660046111c9565b61072d565b6101516102c33660046111c9565b610805565b6101656102d6366004611251565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61018661031c36600461122f565b610812565b60606003805461033090611284565b80601f016020809104026020016040519081016040528092919081815260200182805461035c90611284565b80156103a95780601f1061037e576101008083540402835291602001916103a9565b820191906000526020600020905b81548152906001019060200180831161038c57829003601f168201915b5050505050905090565b60006103c0338484610942565b50600192915050565b6103d33382610af5565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015610468573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048c91906112d8565b505050565b600061049e848484610ce2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482811015610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6105718533858403610942565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103c09185906105c0908690611329565b610942565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303816000875af115801561065e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068291906112d8565b5061068d8282610f96565b5050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161055b565b61071c60006110b6565b565b60606004805461033090611284565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156107ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161055b565b6107fb3385858403610942565b5060019392505050565b60006103c0338484610ce2565b60055473ffffffffffffffffffffffffffffffffffffffff163314610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161055b565b73ffffffffffffffffffffffffffffffffffffffff8116610936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161055b565b61093f816110b6565b50565b73ffffffffffffffffffffffffffffffffffffffff83166109e4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff8216610a87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8216610b98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c8a908490611341565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff8216610e28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610ede576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610f22908490611329565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f8891815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161055b565b80600260008282546110259190611329565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260408120805483929061105f908490611329565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b8181101561115a5785810183015185820160400152820161113e565b8181111561116c576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146111c457600080fd5b919050565b600080604083850312156111dc57600080fd5b6111e5836111a0565b946020939093013593505050565b60008060006060848603121561120857600080fd5b611211846111a0565b925061121f602085016111a0565b9150604084013590509250925092565b60006020828403121561124157600080fd5b61124a826111a0565b9392505050565b6000806040838503121561126457600080fd5b61126d836111a0565b915061127b602084016111a0565b90509250929050565b600181811c9082168061129857607f821691505b602082108114156112d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000602082840312156112ea57600080fd5b8151801515811461124a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561133c5761133c6112fa565b500190565b600082821015611353576113536112fa565b50039056fea26469706673582212203a6db30cd3c097921df4156794aa7973eb848711deeb2cffd7c54a9df1fdb0a564736f6c634300080a003360a060405234801561001057600080fd5b506040516106ca3803806106ca83398101604081905261002f9161006c565b60009190915560ff166080526001805460506001600160501b031991821681179092556004805490911690911790554260028190556003556100a2565b6000806040838503121561007f57600080fd5b82519150602083015160ff8116811461009757600080fd5b809150509250929050565b60805161060e6100bc600039600060d3015261060e6000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80639a6fc8f511610081578063d62ada111161005b578063d62ada11146102dc578063f7a30806146102f4578063feaf968c1461030757600080fd5b80639a6fc8f5146101cd578063bd18ad531461023a578063cd653afc1461024d57600080fd5b806354fd4d50116100b257806354fd4d501461012d57806367e8d83d1461013c5780637284e4161461018e57600080fd5b8063313ce567146100ce5780633fd0875f1461010c575b600080fd5b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020015b60405180910390f35b6004546a0100000000000000000000900460ff166040516101039190610441565b60405160018152602001610103565b61018c61014a366004610482565b600480549115156c01000000000000000000000000027fffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff909216919091179055565b005b604080518082018252600c81527f7072696365206f7261636c6500000000000000000000000000000000000000006020820152905161010391906104ab565b6102036101db36600461053d565b60015460005460025460035460045469ffffffffffffffffffff948516941691939590929450565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610103565b61018c610248366004610558565b61030f565b61018c61025b366004610579565b6001805469ffffffffffffffffffff9586167fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090911617905560029290925560035560048054919092167fffffffffffffffffffffffffffffffffffffffff00ff00000000000000000000909116176b020000000000000000000000179055565b6102e461035f565b6040519015158152602001610103565b61018c6103023660046105bf565b600055565b610203610385565b600480548291907fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff166b01000000000000000000000083600281111561035757610357610412565b021790555050565b600454600090610380906b010000000000000000000000900460ff166103d6565b905090565b60008060008060006004600c9054906101000a900460ff16156103a757600080fd5b505060015460005460025460035460045469ffffffffffffffffffff9485169893975091955093509190911690565b600060028260028111156103ec576103ec610412565b14156103f757600080fd5b600182600281111561040b5761040b610412565b1492915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016006831061047c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561049457600080fd5b813580151581146104a457600080fd5b9392505050565b600060208083528351808285015260005b818110156104d8578581018301518582016040015282016104bc565b818111156104ea576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803569ffffffffffffffffffff8116811461053857600080fd5b919050565b60006020828403121561054f57600080fd5b6104a48261051e565b60006020828403121561056a57600080fd5b8135600381106104a457600080fd5b6000806000806080858703121561058f57600080fd5b6105988561051e565b935060208501359250604085013591506105b46060860161051e565b905092959194509250565b6000602082840312156105d157600080fd5b503591905056fea264697066735822122014874f7a973b86501c4c1a8be32490fe902c8f088ee234d25f9b2497e19f9e5264736f6c634300080a003360806040526000805461ff01600160b01b031916757109709ecfa91a80626ff3989d68f67f5b1dd12d00011790553480156200003a57600080fd5b5060405162021314380380620213148339810160408190526200005d91620017f0565b82826040516200006d9062001790565b604051809103906000f0801580156200008a573d6000803e3d6000fd5b5050600180546001600160a01b0319166001600160a01b038416908117909155604080516325abd85f60e11b81529051634b57b0be916004808201926020929091908290030181865afa158015620000e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200010c91906200184b565b73c4375b7de8af5a38a93548eb8453a498222c4ff26040516200012f906200179e565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000163573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b039290921691821790556040805163de28735960e01b8152905163de287359916004808201926020929091908290030181865afa158015620001bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e591906200184b565b604051634910832f60e01b8152600080516020620212f483398151915260048201526001600160a01b039190911690634910832f90602401600060405180830381600087803b1580156200023857600080fd5b505af11580156200024d573d6000803e3d6000fd5b50505050600360009054906101000a90046001600160a01b03166001600160a01b031663de2873596040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cb91906200184b565b60035460405163f2fde38b60e01b81526001600160a01b03918216600482015291169063f2fde38b90602401600060405180830381600087803b1580156200031257600080fd5b505af115801562000327573d6000803e3d6000fd5b505060035460015460408051636ca42ae360e01b815290516001600160a01b039384169550638874ff1f94509190921691636ca42ae39160048083019260009291908290030181865afa15801562000383573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620003ad9190810190620018e6565b6040518263ffffffff1660e01b8152600401620003cb9190620019d7565b600060405180830381600087803b158015620003e657600080fd5b505af1158015620003fb573d6000803e3d6000fd5b50505050600360009054906101000a90046001600160a01b03166001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000453573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047991906200184b565b600280546001600160a01b0319166001600160a01b039290921691821790556040805163120d150d60e31b81529051639068a868916004808201926020929091908290030181865afa158015620004d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fa91906200184b565b600480546001600160a01b0319166001600160a01b0392831617815560025460408051631f94a27560e31b81529051919093169263fca513a892818101926020929091908290030181865afa15801562000558573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200057e91906200184b565b600880546001600160a01b0319166001600160a01b0392831617905560025460408051630873769560e01b81529051919092169163087376959160048083019260209291908290030181865afa158015620005dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200060391906200184b565b600780546001600160a01b0319166001600160a01b039283161790556002546040805163c513c9bb60e01b81529051919092169163c513c9bb9160048083019260209291908290030181865afa15801562000662573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200068891906200184b565b600680546001600160a01b0319166001600160a01b039283161790556001546040516367b4264560e01b81529116906367b4264590620006cd90849060040162001a6e565b602060405180830381865afa158015620006eb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200071191906200184b565b600980546001600160a01b0319166001600160a01b0392831617905560035460408051630a55006360e21b815290519190921691632954018c9160048083019260209291908290030181865afa15801562000770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200079691906200184b565b6009546040516001600160a01b0390911690620007b390620017ad565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620007e7573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b039283169081179091556001549091169063eebab8ef908390620008206200113e565b6200082d90600a62001a9a565b6040518463ffffffff1660e01b81526004016200084d9392919062001abc565b600060405180830381600087803b1580156200086857600080fd5b505af11580156200087d573d6000803e3d6000fd5b505060065460055460405163d914cd4b60e01b81526001600160a01b0391821660048201529116925063d914cd4b9150602401600060405180830381600087803b158015620008cb57600080fd5b505af1158015620008e0573d6000803e3d6000fd5b505050505050806200093d576005546040516001600160a01b03909116906200090990620017bb565b6001600160a01b039091168152602001604051809103906000f08015801562000936573d6000803e3d6000fd5b5062000989565b6005546040516001600160a01b03909116906200095a90620017c9565b6001600160a01b039091168152602001604051809103906000f08015801562000987573d6000803e3d6000fd5b505b600b80546001600160a01b03929092166001600160a01b03199283168117909155600d80549092163317909155604051634fafc35760e11b8152600080516020620212f48339815191526004820152639f5f86ae90602401600060405180830381600087803b158015620009fc57600080fd5b505af115801562000a11573d6000803e3d6000fd5b50506000546040516303223eab60e11b8152600080516020620212f48339815191526004820152620100009091046001600160a01b031692506306447d569150602401600060405180830381600087803b15801562000a6f57600080fd5b505af115801562000a84573d6000803e3d6000fd5b5050600b54600d5460408051632630c12f60e01b815290516001600160a01b0393841695506311ca4fc2945092909116918491632630c12f9160048083019260209291908290030181865afa15801562000ae2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b0891906200184b565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381600087803b15801562000b5157600080fd5b505af115801562000b66573d6000803e3d6000fd5b5050600b546001600160a01b0316915063944ac59f90506103e860c862000b926101f461271062001ae6565b606462000ba360c861271062001ae6565b60405160e087901b6001600160e01b031916815261ffff95861660048201529385166024850152918416604484015283166064830152909116608482015260a401600060405180830381600087803b15801562000bff57600080fd5b505af115801562000c14573d6000803e3d6000fd5b50505050600062000c2c6001620011fd60201b60201c565b905060005b815181101562000dbd5760095482516001600160a01b039091169083908390811062000c615762000c6162001b0c565b6020026020010151600001516001600160a01b03161462000da857600082828151811062000c935762000c9362001b0c565b602090810291909101015151600b5460405163d48bfca760e01b81526001600160a01b03808416600483015292935091169063d48bfca790602401600060405180830381600087803b15801562000ce957600080fd5b505af115801562000cfe573d6000803e3d6000fd5b5050600b5485516001600160a01b03909116925063a70bc5429150839086908690811062000d305762000d3062001b0c565b6020026020010151602001516040518363ffffffff1660e01b815260040162000d729291906001600160a01b0392909216825261ffff16602082015260400190565b600060405180830381600087803b15801562000d8d57600080fd5b505af115801562000da2573d6000803e3d6000fd5b50505050505b8062000db48162001b22565b91505062000c31565b50600060029054906101000a90046001600160a01b03166001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000e0f57600080fd5b505af115801562000e24573d6000803e3d6000fd5b5050505062000ef1600b60009054906101000a90046001600160a01b03166001600160a01b031663f9aa028a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000e80573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ea691906200184b565b60408051808201909152601781527f436f6e666967757261746f72207761736e2774207365740000000000000000006020820152600080516020620212f483398151915290620014e7565b600654600b5460405163e26b2f6360e01b81526001600160a01b03918216600482015291169063e26b2f6390602401600060405180830381600087803b15801562000f3b57600080fd5b505af115801562000f50573d6000803e3d6000fd5b5050600154600b5460405163447bbb5160e11b81526001600160a01b0392831694506388f776a2935062000fa292889273f39fd6e51aad88f6f4ce6ab8827279cfffb922669291169060040162001b40565b600060405180830381600087803b15801562000fbd57600080fd5b505af115801562000fd2573d6000803e3d6000fd5b5050600154600b5460405163447bbb5160e11b81526001600160a01b0392831694506388f776a2935062001024928892733c44cdddb6a900fa2b585dd299e03d12fa4293bc9291169060040162001b40565b600060405180830381600087803b1580156200103f57600080fd5b505af115801562001054573d6000803e3d6000fd5b505060025460405163f2fde38b60e01b8152600080516020620212f483398151915260048201526001600160a01b03909116925063f2fde38b9150602401600060405180830381600087803b158015620010ad57600080fd5b505af1158015620010c2573d6000803e3d6000fd5b505060075460405163f2fde38b60e01b8152600080516020620212f483398151915260048201526001600160a01b03909116925063f2fde38b9150602401600060405180830381600087803b1580156200111b57600080fd5b505af115801562001130573d6000803e3d6000fd5b505050505050505062001c47565b600180546040516367b4264560e01b81526000926001600160a01b03909216916367b426459162001173919060040162001a6e565b602060405180830381865afa15801562001191573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011b791906200184b565b6009546001600160a01b03908116911614620011e757620011e2670de0b6b3a764000060c862001a9a565b905090565b620011e2670de0b6b3a7640000614e2062001a9a565b6040805160c08101825260026080820190815261232860a08301528152815180830183526005815261226060208281019190915282015281518083018352606092600092919082019080600387600a8111156200125e576200125e62001a35565b146200126c5760036200126f565b60015b600a81111562001283576200128362001a35565b815261206c6020918201529082526040805180820190915260048152611c84818301529101529050612454600a60008582811115620012c657620012c662001a35565b600a811115620012da57620012da62001a35565b815260208101919091526040908101600020805461ffff9390931661ffff19909316929092179091558051600480825260a0820190925281816020015b60408051808201909152600080825260208201528152602001906001900390816200131757905050925060005b81811015620014df5782816004811062001362576200136262001b0c565b602002015160200151600a600085846004811062001384576200138462001b0c565b602002015151600a8111156200139e576200139e62001a35565b600a811115620013b257620013b262001a35565b815260208101919091526040908101600020805461ffff191661ffff9390931692909217909155805180820190915260015481906001600160a01b03166367b4264586856004811062001409576200140962001b0c565b6020020151516040516001600160e01b031960e084901b16815262001432919060040162001a6e565b602060405180830381865afa15801562001450573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147691906200184b565b6001600160a01b0316815260200184836004811062001499576200149962001b0c565b60200201516020015161ffff16815250848281518110620014be57620014be62001b0c565b60200260200101819052508080620014d69062001b22565b91505062001344565b505050919050565b816001600160a01b0316836001600160a01b03161462001546577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162001532919062001ba5565b60405180910390a16200154683836200154b565b505050565b806001600160a01b0316826001600160a01b03161462001679577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620015d39060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a160408051818152600a81830152690808115e1c1958dd195960b21b60608201526001600160a01b03831660208201529051600080516020620212d48339815191529181900360800190a160408051818152600a8183015269080808081058dd1d585b60b21b60608201526001600160a01b03841660208201529051600080516020620212d48339815191529181900360800190a1620016796200167d565b5050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200177f5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200171a929160200162001bf6565b60408051601f1981840301815290829052620017369162001c29565b6000604051808303816000865af19150503d806000811462001775576040519150601f19603f3d011682016040523d82523d6000602084013e6200177a565b606091505b505050505b6000805461ff001916610100179055565b6105e680620035d683390190565b620111058062003bbc83390190565b6110a78062014cc183390190565b6158e88062015d6883390190565b615c84806201b65083390190565b6001600160a01b0381168114620017ed57600080fd5b50565b6000806000606084860312156200180657600080fd5b83516200181381620017d7565b6020850151909350600b81106200182957600080fd5b604085015190925080151581146200184057600080fd5b809150509250925092565b6000602082840312156200185e57600080fd5b81516200186b81620017d7565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620018ad57620018ad62001872565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620018de57620018de62001872565b604052919050565b60006020808385031215620018fa57600080fd5b82516001600160401b03808211156200191257600080fd5b818501915085601f8301126200192757600080fd5b8151818111156200193c576200193c62001872565b6200194c848260051b01620018b3565b818152848101925060069190911b8301840190878211156200196d57600080fd5b928401925b81841015620019cc57604084890312156200198d5760008081fd5b6200199762001888565b8451620019a481620017d7565b815284860151620019b581620017d7565b818701528352604093909301929184019162001972565b979650505050505050565b602080825282518282018190526000919060409081850190868401855b8281101562001a2857815180516001600160a01b0390811686529087015116868501529284019290850190600101620019f4565b5091979650505050505050565b634e487b7160e01b600052602160045260246000fd5b600b811062001a6a57634e487b7160e01b600052602160045260246000fd5b9052565b6020810162001a7e828462001a4b565b92915050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161562001ab75762001ab762001a84565b500290565b6060810162001acc828662001a4b565b6001600160a01b0393909316602082015260400152919050565b600061ffff8381169083168181101562001b045762001b0462001a84565b039392505050565b634e487b7160e01b600052603260045260246000fd5b600060001982141562001b395762001b3962001a84565b5060010190565b6060810162001b50828662001a4b565b6001600160a01b03938416602083015291909216604090920191909152919050565b60005b8381101562001b8f57818101518382015260200162001b75565b8381111562001b9f576000848401525b50505050565b60408152600560408201526422b93937b960d91b6060820152608060208201526000825180608084015262001be28160a085016020870162001b72565b601f01601f19169190910160a00192915050565b6001600160e01b031983168152815160009062001c1b81600485016020870162001b72565b919091016004019392505050565b6000825162001c3d81846020870162001b72565b9190910192915050565b61197f8062001c576000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80636b70b04c116100b2578063ba414fa611610081578063d46b933011610066578063d46b933014610350578063de28735914610370578063fa7626d41461039057600080fd5b8063ba414fa614610318578063c12c21c01461033057600080fd5b80636b70b04c146102b05780636f307dc3146102d05780637d6bc094146102f05780639dd55b451461030357600080fd5b8063406c8e2f116101095780635e813a8b116100ee5780635e813a8b1461025a5780635f7c9bd01461027a57806362eb33e31461029057600080fd5b8063406c8e2f146101fc5780635aba4b241461021c57600080fd5b80630c75f8061461013b5780630e42bc5d146101775780632630c12f146101975780632954018c146101dc575b600080fd5b61015f610149366004610f08565b600a6020526000908152604090205461ffff1681565b60405161ffff90911681526020015b60405180910390f35b61018a610185366004610f08565b61039d565b60405161016e9190610f30565b6008546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016e565b6002546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6001546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6102246106c6565b6040805194855260208501939093529183015273ffffffffffffffffffffffffffffffffffffffff16606082015260800161016e565b6004546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6102826106e5565b60405190815260200161016e565b6006546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6009546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6102246102fe366004610f99565b6107cd565b610316610311366004610fd7565b610c2f565b005b610320610d9b565b604051901515815260200161016e565b600b546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6003546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6007546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6000546103209060ff1681565b6040805160c08101825260026080820190815261232860a08301528152815180830183526005815261226060208281019190915282015281518083018352606092600092919082019080600387600a8111156103fb576103fb611003565b1461040757600361040a565b60015b600a81111561041b5761041b611003565b815261206c6020918201529082526040805180820190915260048152611c84818301529101529050612454600a6000858281111561045b5761045b611003565b600a81111561046c5761046c611003565b815260208101919091526040908101600020805461ffff939093167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909316929092179091558051600480825260a0820190925281816020015b60408051808201909152600080825260208201528152602001906001900390816104c657905050925060005b818110156106be5782816004811061050c5761050c611032565b602002015160200151600a600085846004811061052b5761052b611032565b602002015151600a81111561054257610542611003565b600a81111561055357610553611003565b81526020810191909152604090810160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff93909316929092179091558051808201909152600154819073ffffffffffffffffffffffffffffffffffffffff166367b426458685600481106105d1576105d1611032565b6020020151516040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526106109190600401611061565b602060405180830381865afa15801561062d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065191906110a2565b73ffffffffffffffffffffffffffffffffffffffff16815260200184836004811061067e5761067e611032565b60200201516020015161ffff168152508482815181106106a0576106a0611032565b602002602001018190525080806106b6906110ee565b9150506104f2565b505050919050565b6000806000806106d76102fe6106e5565b935093509350935090919293565b600180546040517f67b4264500000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff909216916367b426459161073e9190600401611061565b602060405180830381865afa15801561075b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077f91906110a2565b60095473ffffffffffffffffffffffffffffffffffffffff9081169116146107b9576107b4670de0b6b3a764000060c8611127565b905090565b6107b4670de0b6b3a7640000614e20611127565b600080546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015282918291829162010000900473ffffffffffffffffffffffffffffffffffffffff169063ca669fa790602401600060405180830381600087803b15801561085757600080fd5b505af115801561086b573d6000803e3d6000fd5b5050600b5460095473ffffffffffffffffffffffffffffffffffffffff918216935063a70bc5429250166101f46108a560c8612710611164565b6108af9190611164565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015261ffff166024820152604401600060405180830381600087803b15801561091e57600080fd5b505af1158015610932573d6000803e3d6000fd5b50506005546040517f96df5dc00000000000000000000000000000000000000000000000000000000081526b033b2e3c9fd0803ce800000060048201819052899850965073ffffffffffffffffffffffffffffffffffffffff90911692506396df5dc09150602401600060405180830381600087803b1580156109b457600080fd5b505af11580156109c8573d6000803e3d6000fd5b5050600054600d546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526201000090920416925063ca669fa79150602401600060405180830381600087803b158015610a4157600080fd5b505af1158015610a55573d6000803e3d6000fd5b5050600b546040517f8fe3f93f0000000000000000000000000000000000000000000000000000000081526004810188905273f39fd6e51aad88f6f4ce6ab8827279cfffb92266602482015273ffffffffffffffffffffffffffffffffffffffff9091169250638fe3f93f91506044016020604051808303816000875af1158015610ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0891906110a2565b60005490915062010000900473ffffffffffffffffffffffffffffffffffffffff16631f7b4f30610b3a436001611187565b6040518263ffffffff1660e01b8152600401610b5891815260200190565b600060405180830381600087803b158015610b7257600080fd5b505af1158015610b86573d6000803e3d6000fd5b50505050600a83600c610b999190611127565b610ba3919061119f565b6005546040517f96df5dc00000000000000000000000000000000000000000000000000000000081526004810183905291935073ffffffffffffffffffffffffffffffffffffffff16906396df5dc090602401600060405180830381600087803b158015610c1057600080fd5b505af1158015610c24573d6000803e3d6000fd5b505050509193509193565b6000816008604051610c4090610efb565b91825260ff166020820152604001604051809103906000f080158015610c6a573d6000803e3d6000fd5b506000546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015291925062010000900473ffffffffffffffffffffffffffffffffffffffff169063ca669fa790602401600060405180830381600087803b158015610cf157600080fd5b505af1158015610d05573d6000803e3d6000fd5b50506008546040517fe8a97a3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301528581166024830152909116925063e8a97a3e9150604401600060405180830381600087803b158015610d7e57600080fd5b505af1158015610d92573d6000803e3d6000fd5b50505050505050565b60008054610100900460ff1615610dbb5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610ef65760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610e60917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611215565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610e9891611251565b6000604051808303816000865af19150503d8060008114610ed5576040519150601f19603f3d011682016040523d82523d6000602084013e610eda565b606091505b5091505080806020019051810190610ef2919061125d565b9150505b919050565b6106ca8061128083390190565b600060208284031215610f1a57600080fd5b8135600b8110610f2957600080fd5b9392505050565b602080825282518282018190526000919060409081850190868401855b82811015610f8c578151805173ffffffffffffffffffffffffffffffffffffffff16855286015161ffff16868501529284019290850190600101610f4d565b5091979650505050505050565b600060208284031215610fab57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610fd457600080fd5b50565b60008060408385031215610fea57600080fd5b8235610ff581610fb2565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60208101600b831061109c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000602082840312156110b457600080fd5b8151610f2981610fb2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611120576111206110bf565b5060010190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561115f5761115f6110bf565b500290565b600061ffff8381169083168181101561117f5761117f6110bf565b039392505050565b6000821982111561119a5761119a6110bf565b500190565b6000826111d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000815160005b818110156111fb57602081850181015186830152016111e1565b8181111561120a576000828601525b509290920192915050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061124960048301846111da565b949350505050565b6000610f2982846111da565b60006020828403121561126f57600080fd5b81518015158114610f2957600080fdfe60a060405234801561001057600080fd5b506040516106ca3803806106ca83398101604081905261002f9161006c565b60009190915560ff166080526001805460506001600160501b031991821681179092556004805490911690911790554260028190556003556100a2565b6000806040838503121561007f57600080fd5b82519150602083015160ff8116811461009757600080fd5b809150509250929050565b60805161060e6100bc600039600060d3015261060e6000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80639a6fc8f511610081578063d62ada111161005b578063d62ada11146102dc578063f7a30806146102f4578063feaf968c1461030757600080fd5b80639a6fc8f5146101cd578063bd18ad531461023a578063cd653afc1461024d57600080fd5b806354fd4d50116100b257806354fd4d501461012d57806367e8d83d1461013c5780637284e4161461018e57600080fd5b8063313ce567146100ce5780633fd0875f1461010c575b600080fd5b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020015b60405180910390f35b6004546a0100000000000000000000900460ff166040516101039190610441565b60405160018152602001610103565b61018c61014a366004610482565b600480549115156c01000000000000000000000000027fffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff909216919091179055565b005b604080518082018252600c81527f7072696365206f7261636c6500000000000000000000000000000000000000006020820152905161010391906104ab565b6102036101db36600461053d565b60015460005460025460035460045469ffffffffffffffffffff948516941691939590929450565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610103565b61018c610248366004610558565b61030f565b61018c61025b366004610579565b6001805469ffffffffffffffffffff9586167fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090911617905560029290925560035560048054919092167fffffffffffffffffffffffffffffffffffffffff00ff00000000000000000000909116176b020000000000000000000000179055565b6102e461035f565b6040519015158152602001610103565b61018c6103023660046105bf565b600055565b610203610385565b600480548291907fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff166b01000000000000000000000083600281111561035757610357610412565b021790555050565b600454600090610380906b010000000000000000000000900460ff166103d6565b905090565b60008060008060006004600c9054906101000a900460ff16156103a757600080fd5b505060015460005460025460035460045469ffffffffffffffffffff9485169893975091955093509190911690565b600060028260028111156103ec576103ec610412565b14156103f757600080fd5b600182600281111561040b5761040b610412565b1492915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016006831061047c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561049457600080fd5b813580151581146104a457600080fd5b9392505050565b600060208083528351808285015260005b818110156104d8578581018301518582016040015282016104bc565b818111156104ea576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803569ffffffffffffffffffff8116811461053857600080fd5b919050565b60006020828403121561054f57600080fd5b6104a48261051e565b60006020828403121561056a57600080fd5b8135600381106104a457600080fd5b6000806000806080858703121561058f57600080fd5b6105988561051e565b935060208501359250604085013591506105b46060860161051e565b905092959194509250565b6000602082840312156105d157600080fd5b503591905056fea264697066735822122014874f7a973b86501c4c1a8be32490fe902c8f088ee234d25f9b2497e19f9e5264736f6c634300080a0033a2646970667358221220db8bf1b20c3ed39fd8eb2d77267ba8a606c43060a1321f93c24a8edb8117a9fb64736f6c634300080a003360806040526000805461ff01600160b01b031916757109709ecfa91a80626ff3989d68f67f5b1dd12d000117905534801561003957600080fd5b50600054604080516318caf8e360e31b815273f39fd6e51aad88f6f4ce6ab8827279cfffb9226660048083019190915260248201929092526044810191909152632aa9a2a960e11b6064820152620100009091046001600160a01b03169063c657c71890608401600060405180830381600087803b1580156100ba57600080fd5b505af11580156100ce573d6000803e3d6000fd5b5050600054604080516318caf8e360e31b81527390f79bf6eb2c4f870365e785982e1f101e93b90660048201526024810191909152600660448201526511949251539160d21b6064820152620100009091046001600160a01b0316925063c657c7189150608401600060405180830381600087803b15801561014f57600080fd5b505af1158015610163573d6000803e3d6000fd5b5050600054604080516318caf8e360e31b8152733c44cdddb6a900fa2b585dd299e03d12fa4293bc60048201526024810191909152600a6044820152692624a8aaa4a220aa27a960b11b6064820152620100009091046001600160a01b0316925063c657c7189150608401600060405180830381600087803b1580156101e857600080fd5b505af11580156101fc573d6000803e3d6000fd5b5050600054604080516318caf8e360e31b815273c4375b7de8af5a38a93548eb8453a498222c4ff260048201526024810191909152600c60448201526b44554d425f4144445245535360a01b6064820152620100009091046001600160a01b0316925063c657c7189150608401600060405180830381600087803b15801561028357600080fd5b505af1158015610297573d6000803e3d6000fd5b5050600054604080516318caf8e360e31b8152739965507d1a55bcc2695c58ba16fb37d819b0a4dc60048201526024810191909152600760448201526620a220a82a22a960c91b6064820152620100009091046001600160a01b0316925063c657c7189150608401600060405180830381600087803b15801561031957600080fd5b505af115801561032d573d6000803e3d6000fd5b505050506102a6806103406000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101bf5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610129917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101ff565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526101619161023b565b6000604051808303816000865af19150503d806000811461019e576040519150601f19603f3d011682016040523d82523d6000602084013e6101a3565b606091505b50915050808060200190518101906101bb919061024e565b9150505b919050565b6000815160005b818110156101e557602081850181015186830152016101cb565b818111156101f4576000828601525b509290920192915050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061023360048301846101c4565b949350505050565b600061024782846101c4565b9392505050565b60006020828403121561026057600080fd5b8151801515811461024757600080fdfea2646970667358221220293f55a0ef7b60c31a89dbc50e3339c80a8fdb1f9567614b200e97598226671f64736f6c634300080a003360806040523480156200001157600080fd5b506040516201110538038062011105833981016040819052620000349162000811565b6200003f3362000734565b6040516200004d9062000784565b604051809103906000f0801580156200006a573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b039283169081179091556040516310dc138160e31b81529184166004830152906386e09c0890602401600060405180830381600087803b158015620000c457600080fd5b505af1158015620000d9573d6000803e3d6000fd5b50506001546040516301ed651160e41b81526001600160a01b0385811660048301529091169250631ed651109150602401600060405180830381600087803b1580156200012557600080fd5b505af11580156200013a573d6000803e3d6000fd5b505050506040516200014c9062000792565b604051809103906000f08015801562000169573d6000803e3d6000fd5b50600280546001600160a01b0319166001600160a01b039283169081179091556001546040516376aad60560e01b81526004810192909252909116906376aad60590602401600060405180830381600087803b158015620001c957600080fd5b505af1158015620001de573d6000803e3d6000fd5b5050600154604051600093506001600160a01b0390911691506200020290620007a0565b6001600160a01b039091168152602001604051809103906000f0801580156200022f573d6000803e3d6000fd5b5060015460405163338f12b960e21b81526001600160a01b03808416600483015292935091169063ce3c4ae490602401600060405180830381600087803b1580156200027a57600080fd5b505af11580156200028f573d6000803e3d6000fd5b5050600154604051600093506001600160a01b039091169150620002b390620007ae565b6001600160a01b039091168152602001604051809103906000f080158015620002e0573d6000803e3d6000fd5b5060015460405163c5120b3960e01b81526001600160a01b03808416600483015292935091169063c5120b3990602401600060405180830381600087803b1580156200032b57600080fd5b505af115801562000340573d6000803e3d6000fd5b5050600154604051606093506001600160a01b03909116915082906200036690620007bc565b6200037392919062000849565b604051809103906000f08015801562000390573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392831690811790915560015460405163530e784f60e01b815260048101929092529091169063530e784f90602401600060405180830381600087803b158015620003f057600080fd5b505af115801562000405573d6000803e3d6000fd5b5050600154604051600093506001600160a01b0390911691506200042990620007ca565b6001600160a01b039091168152602001604051809103906000f08015801562000456573d6000803e3d6000fd5b506001546040516356ee0d3b60e11b81526001600160a01b03808416600483015292935091169063addc1a7690602401600060405180830381600087803b158015620004a157600080fd5b505af1158015620004b6573d6000803e3d6000fd5b5050600154604051600093506001600160a01b039091169150620004da90620007d8565b6001600160a01b039091168152602001604051809103906000f08015801562000507573d6000803e3d6000fd5b506001546040516321da583760e01b81526001600160a01b0380841660048301529293509116906321da583790602401600060405180830381600087803b1580156200055257600080fd5b505af115801562000567573d6000803e3d6000fd5b505050506000306040516200057c90620007e6565b6001600160a01b039091168152602001604051809103906000f080158015620005a9573d6000803e3d6000fd5b50600154604051631795d5b360e31b81526001600160a01b03808416600483015292935091169063bcaead9890602401600060405180830381600087803b158015620005f457600080fd5b505af115801562000609573d6000803e3d6000fd5b505060405163f2fde38b60e01b81523360048201526001600160a01b038416925063f2fde38b9150602401600060405180830381600087803b1580156200064f57600080fd5b505af115801562000664573d6000803e3d6000fd5b505060015460405163f2fde38b60e01b81523360048201526001600160a01b03909116925063f2fde38b9150602401600060405180830381600087803b158015620006ae57600080fd5b505af1158015620006c3573d6000803e3d6000fd5b505060025460405163f2fde38b60e01b81523360048201526001600160a01b03909116925063f2fde38b9150602401600060405180830381600087803b1580156200070d57600080fd5b505af115801562000722573d6000803e3d6000fd5b505050505050505050505050620008b2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610fcd80620010dd83390190565b61098c80620020aa83390190565b610f508062002a3683390190565b614da6806200398683390190565b611b45806200872c83390190565b612ced806200a27183390190565b611627806200cf5e83390190565b612b80806200e58583390190565b80516001600160a01b03811681146200080c57600080fd5b919050565b600080604083850312156200082557600080fd5b6200083083620007f4565b91506200084060208401620007f4565b90509250929050565b6001600160a01b0383811682526040602080840182905284518483018190526000938683019290916060870190865b81811015620008a3578551805186168452840151851684840152948301949186019160010162000878565b50909998505050505050505050565b61081b80620008c26000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638874ff1f1161005b5780638874ff1f146100f55780638da5cb5b14610108578063de28735914610126578063f2fde38b1461014657600080fd5b80632630c12f146100825780632954018c146100cb578063715018a6146100eb575b600080fd5b6003546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6001546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b6100f3610159565b005b6100f3610103366004610658565b6101eb565b60005473ffffffffffffffffffffffffffffffffffffffff166100a2565b6002546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b6100f3610154366004610734565b6103e3565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6101e96000610513565b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461026c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101d6565b60005b815181101561035c57600354825173ffffffffffffffffffffffffffffffffffffffff9091169063e8a97a3e908490849081106102ae576102ae610756565b6020026020010151600001518484815181106102cc576102cc610756565b6020026020010151602001516040518363ffffffff1660e01b815260040161031792919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b600060405180830381600087803b15801561033157600080fd5b505af1158015610345573d6000803e3d6000fd5b50505050808061035490610785565b91505061026f565b506002546040517ff2fde38b00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091169063f2fde38b90602401600060405180830381600087803b1580156103c857600080fd5b505af11580156103dc573d6000803e3d6000fd5b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101d6565b73ffffffffffffffffffffffffffffffffffffffff8116610507576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101d6565b61051081610513565b50565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156105da576105da610588565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561062757610627610588565b604052919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461065357600080fd5b919050565b6000602080838503121561066b57600080fd5b823567ffffffffffffffff8082111561068357600080fd5b818501915085601f83011261069757600080fd5b8135818111156106a9576106a9610588565b6106b7848260051b016105e0565b818152848101925060069190911b8301840190878211156106d757600080fd5b928401925b8184101561072957604084890312156106f55760008081fd5b6106fd6105b7565b6107068561062f565b815261071386860161062f565b81870152835260409390930192918401916106dc565b979650505050505050565b60006020828403121561074657600080fd5b61074f8261062f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156107de577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212205ee75e57bb635aa49a1758f4ab0b04182a73115bff08f420c56a8ddb433c029364736f6c634300080a0033608060405234801561001057600080fd5b5061001a3361005f565b60405130906f20a2222922a9a9afa82927ab24a222a960811b907fb37614c7d254ea8d16eb81fa11dddaeb266aa8ba4917980859c7740aff30c69190600090a36100af565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610f0f806100be6000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806377532ed9116100e3578063bcaead981161008c578063ce3c4ae411610066578063ce3c4ae414610308578063f2fde38b1461031b578063fca513a81461032e57600080fd5b8063bcaead98146102da578063c5120b39146102ed578063c513c9bb1461030057600080fd5b80639068a868116100bd5780639068a868146102b7578063addc1a76146102bf578063affd9243146102d257600080fd5b806377532ed91461027e57806386e09c08146102865780638da5cb5b1461029957600080fd5b80634c252f9111610145578063699f200f1161011f578063699f200f1461022d578063715018a61461026357806376aad6051461026b57600080fd5b80634c252f91146101fc578063530e784f1461020457806354fd4d501461021757600080fd5b80631ed65110116101765780631ed65110146101cc57806321da5837146101e157806326c74fc3146101f457600080fd5b8063060678c21461019257806308737695146101c4575b600080fd5b61019a610336565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61019a610366565b6101df6101da366004610e10565b610391565b005b6101df6101ef366004610e10565b610444565b61019a6104ef565b61019a61051a565b6101df610212366004610e10565b610545565b61021f600281565b6040519081526020016101bb565b61019a61023b366004610e4d565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101df6105f0565b6101df610279366004610e10565b61067d565b61019a610728565b6101df610294366004610e10565b610753565b60005473ffffffffffffffffffffffffffffffffffffffff1661019a565b61019a6107fe565b6101df6102cd366004610e10565b610829565b61019a6108d4565b6101df6102e8366004610e10565b6108ff565b6101df6102fb366004610e10565b6109aa565b61019a610a55565b6101df610316366004610e10565b610a80565b6101df610329366004610e10565b610b2b565b61019a610c58565b60006103617f444154415f434f4d50524553534f520000000000000000000000000000000000610c7f565b905090565b60006103617f41434c0000000000000000000000000000000000000000000000000000000000610c7f565b60005473ffffffffffffffffffffffffffffffffffffffff163314610417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6104417f54524541535552595f434f4e545241435400000000000000000000000000000082610d1d565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b6104417f574554485f47415445574159000000000000000000000000000000000000000082610d1d565b60006103617f54524541535552595f434f4e5452414354000000000000000000000000000000610c7f565b60006103617f574554485f544f4b454e00000000000000000000000000000000000000000000610c7f565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b6104417f50524943455f4f5241434c45000000000000000000000000000000000000000082610d1d565b60005473ffffffffffffffffffffffffffffffffffffffff163314610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b61067b6000610d9b565b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b6104417f41434c000000000000000000000000000000000000000000000000000000000082610d1d565b60006103617f574554485f474154455741590000000000000000000000000000000000000000610c7f565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b6104417f574554485f544f4b454e0000000000000000000000000000000000000000000082610d1d565b60006103617f4143434f554e545f464143544f52590000000000000000000000000000000000610c7f565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b6104417f4143434f554e545f464143544f5259000000000000000000000000000000000082610d1d565b60006103617f474541525f544f4b454e00000000000000000000000000000000000000000000610c7f565b60005473ffffffffffffffffffffffffffffffffffffffff163314610980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b6104417f474541525f544f4b454e0000000000000000000000000000000000000000000082610d1d565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b6104417f444154415f434f4d50524553534f52000000000000000000000000000000000082610d1d565b60006103617f434f4e5452414354535f52454749535445520000000000000000000000000000610c7f565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b6104417f434f4e5452414354535f5245474953544552000000000000000000000000000082610d1d565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b73ffffffffffffffffffffffffffffffffffffffff8116610c4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161040e565b61044181610d9b565b60006103617f50524943455f4f5241434c4500000000000000000000000000000000000000005b6000818152600160209081526040808320548151808301909252600382527f41503100000000000000000000000000000000000000000000000000000000009282019290925273ffffffffffffffffffffffffffffffffffffffff9091169081610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040e9190610e66565b5092915050565b60008281526001602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091559051909184917fb37614c7d254ea8d16eb81fa11dddaeb266aa8ba4917980859c7740aff30c6919190a35050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610e2257600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610e4657600080fd5b9392505050565b600060208284031215610e5f57600080fd5b5035919050565b600060208083528351808285015260005b81811015610e9357858101830151858201604001528201610e77565b81811115610ea5576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201604001939250505056fea264697066735822122083c228af017c6f5cf8c395cdf7a53276ff56fdd4f4313c39f680ab73bd75417364736f6c634300080a0033608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61090e8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c8063732818191161008c578063adce758d11610066578063adce758d14610215578063ba306df114610228578063d4eb5db01461023b578063f2fde38b1461027457600080fd5b806373281819146101b7578063819ad68e146101da5780638da5cb5b146101ed57600080fd5b806354fd4d50116100bd57806354fd4d501461016a5780635f259aba14610180578063715018a6146101af57600080fd5b806335914829146100e45780633a41ec641461011c5780634910832f14610155575b600080fd5b6101076100f236600461089b565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61010761012a36600461089b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b61016861016336600461089b565b610287565b005b610172600181565b604051908152602001610113565b61010761018e36600461089b565b60005473ffffffffffffffffffffffffffffffffffffffff91821691161490565b610168610387565b6101076101c536600461089b565b60026020526000908152604090205460ff1681565b6101686101e836600461089b565b610414565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61016861022336600461089b565b61050c565b61016861023636600461089b565b610601565b61010761024936600461089b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205460ff1690565b61016861028236600461089b565b6106f6565b60005473ffffffffffffffffffffffffffffffffffffffff16331461030d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909217909155517fae26b1cfe9454ba87274a4e8330b6654684362d0f3d7bbd17f7449a1d38387c69190a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610304565b6104126000610826565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610304565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517fd400da6c0c0a894dacc0981730b88af0545d00272ee8fff1437bf560ff245fc49190a250565b60005473ffffffffffffffffffffffffffffffffffffffff16331461058d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610304565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f1998397e7203f7baca9d6f41b9e4da6e768daac5caad4234fb9bf5869d2715459190a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610304565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f28b01395b7e25d20552a0c8dc8ecd3b1d4abc986f14dad7885fd45b6fd73c8d99190a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610304565b73ffffffffffffffffffffffffffffffffffffffff811661081a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610304565b61082381610826565b50565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156108ad57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146108d157600080fd5b939250505056fea26469706673582212204712efbfe997070def77285a5b8753bc882b62da2133ce1937ad26cd2b48e49864736f6c634300080a003360a060405234801561001057600080fd5b50604051610f50380380610f5083398101604081905261002f916100d7565b6000805460ff19169055806001600160a01b03811661006157604051635919af9760e11b815260040160405180910390fd5b806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa15801561009f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100c391906100d7565b6001600160a01b0316608052506101079050565b6000602082840312156100e957600080fd5b81516001600160a01b038116811461010057600080fd5b9392505050565b608051610e1261013e600039600081816101e2015281816102b20152818161040f0152818161057801526108510152610e126000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638456cb5911610097578063b4ac686011610066578063b4ac686014610217578063c29277cd1461021f578063d914cd4b14610227578063e26b2f631461023a57600080fd5b80638456cb59146101cd57806394144856146101d5578063a50cf2c8146101dd578063ac4afa381461020457600080fd5b80635b16ebb7116100d35780635b16ebb7146101575780635c975abb1461018a578063673a2a1f146101955780636fbc6f6b146101aa57600080fd5b80631e16e4fc146100fa5780633f4ba83a1461013757806354fd4d5014610141575b600080fd5b61010d610108366004610c97565b61024d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61013f610284565b005b610149600181565b60405190815260200161012e565b61017a610165366004610cb0565b60026020526000908152604090205460ff1681565b604051901515815260200161012e565b60005460ff1661017a565b61019d610372565b60405161012e9190610ced565b61017a6101b8366004610cb0565b60046020526000908152604090205460ff1681565b61013f6103e1565b61019d6104cd565b61010d7f000000000000000000000000000000000000000000000000000000000000000081565b61010d610212366004610c97565b61053a565b600154610149565b600354610149565b61013f610235366004610cb0565b61054a565b61013f610248366004610cb0565b610823565b6003818154811061025d57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa15801561030e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103329190610d47565b610368576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610370610af6565b565b606060018054806020026020016040519081016040528092919081815260200182805480156103d757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116103ac575b5050505050905090565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa15801561046b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048f9190610d47565b6104c5576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610370610bd7565b606060038054806020026020016040519081016040528092919081815260200182805480156103d75760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116103ac575050505050905090565b6001818154811061025d57600080fd5b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa1580156105d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f89190610d47565b61062e576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051808201909152600281527f5a30000000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff82166106b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b09190610d69565b60405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff8116600090815260026020908152604091829020548251808401909352600383527f43523100000000000000000000000000000000000000000000000000000000009183019190915260ff1615610753576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b09190610d69565b506001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909417909355915190917ff816b5143086c89d103a0683286be86c2b741e83ebfa75135aae606e2f5c6e5391a250565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa1580156108ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d19190610d47565b610907576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051808201909152600281527f5a30000000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8216610989576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b09190610d69565b5073ffffffffffffffffffffffffffffffffffffffff8116600090815260046020908152604091829020548251808401909352600383527f43523200000000000000000000000000000000000000000000000000000000009183019190915260ff1615610a23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b09190610d69565b506003805460018082019092557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909417909355915190917f58ad3cfc4b6552a53c8c4128ae9b080e14b4378a159280643a62c6f709cee24f91a250565b60005460ff16610b62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016106b0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60005460ff1615610c44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016106b0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610bad3390565b600060208284031215610ca957600080fd5b5035919050565b600060208284031215610cc257600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610ce657600080fd5b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015610d3b57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610d09565b50909695505050505050565b600060208284031215610d5957600080fd5b81518015158114610ce657600080fd5b600060208083528351808285015260005b81811015610d9657858101830151858201604001528201610d7a565b81811115610da8576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201604001939250505056fea26469706673582212208f2d91c863db9ab1494a9c5db20e3fddc4b6c779ea3c3621737c105c60d9440a64736f6c634300080a003360e06040523480156200001157600080fd5b5060405162004da638038062004da6833981016040819052620000349162000160565b6001600160a01b0381166200005c57604051635919af9760e11b815260040160405180910390fd5b6001600160a01b03811660808190526040805163c513c9bb60e01b8152905163c513c9bb916004808201926020929091908290030181865afa158015620000a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cd919062000160565b6001600160a01b031660a0816001600160a01b0316815250506080516001600160a01b0316634c252f916040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000127573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014d919062000160565b6001600160a01b031660c0525062000192565b6000602082840312156200017357600080fd5b81516001600160a01b03811681146200018b57600080fd5b9392505050565b60805160a05160c051614b896200021d6000396000818161018801528181611c4f0152612c5a0152600081816101ed015281816115e201528181611f5f0152818161213f0152818161223f0152818161243801528181612604015281816126bc01528181612788015281816129a501528181613c410152613d000152600061013c0152614b896000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806354fd4d5011610081578063a80deda31161005b578063a80deda31461020f578063ae093f3f1461022f578063fc9914cb1461024f57600080fd5b806354fd4d50146101bd578063663b8fdb146101d35780637a0c7b21146101e857600080fd5b80632954018c116100b25780632954018c146101375780634b2f336d146101835780634c472fc9146101aa57600080fd5b80630dbd616d146100d957806313d21cdf146101025780631bcd8fc014610122575b600080fd5b6100ec6100e73660046140fc565b610272565b6040516100f9919061430b565b60405180910390f35b61011561011036600461431e565b6114d4565b6040516100f99190614444565b61012a611f59565b6040516100f99190614453565b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f9565b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b61015e6101b83660046140fc565b6121f5565b6101c5600281565b6040519081526020016100f9565b6101db612432565b6040516100f991906146ea565b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b61022261021d36600461431e565b6126b5565b6040516100f9919061476a565b61024261023d36600461431e565b612a75565b6040516100f991906147dd565b61026261025d3660046140fc565b613bf7565b60405190151581526020016100f9565b61035f604051806102400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001606081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600060ff168152602001600081525090565b600080600080600061037088613cf4565b509450945094509450945060008560ff1660011461041d576040517fe958b70400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015284169063e958b70490602401602060405180830381865afa1580156103f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041891906147f0565b6104ad565b6040517fe958b70400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015286169063e958b70490602401602060405180830381865afa158015610489573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ad91906147f0565b60ff8716610200890181905273ffffffffffffffffffffffffffffffffffffffff808b1660208b01528b811660608b015282168952909150600114156109e9578473ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c91906147f0565b73ffffffffffffffffffffffffffffffffffffffff90811660808901526040517fc7de38a600000000000000000000000000000000000000000000000000000000815282821660048201529085169063c7de38a690602401602060405180830381865afa1580156105d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f5919061480d565b60c08801526040517fdfd5946500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015285169063dfd5946590602401602060405180830381865afa158015610666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068a919061480d565b60e08801526040517f3ce0735500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015260006024830152861690633ce0735590604401602060405180830381865afa92505050801561073c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526107399181019061480d565b60015b6107455761074c565b6101408801525b6040517f3ce0735500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015260016024830152861690633ce0735590604401602060405180830381865afa9250505080156107f9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526107f69181019061480d565b60015b61080257610809565b6101608801525b60c08701516040517f996329f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820192909252600060448201529086169063996329f89060640160a060405180830381865afa9250505080156108c4575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108c191810190614826565b60015b6108cd576108da565b505015156101808a015250505b8073ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610925573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610949919061480d565b6101a08801526040517f3192195c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152851690633192195c90602401602060405180830381865afa1580156109bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109df919061480d565b60a0880152610c26565b8273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5891906147f0565b73ffffffffffffffffffffffffffffffffffffffff90811660808901526040517fc7de38a600000000000000000000000000000000000000000000000000000000815282821660048201529083169063c7de38a6906024016040805180830381865afa158015610acc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af09190614866565b5060c08801526040517fdfd5946500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063dfd5946590602401602060405180830381865afa158015610b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b86919061480d565b60e08801526040517f3192195c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152841690633192195c906024016040805180830381865afa158015610bf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1a9190614866565b60a08901526101a08801525b60008660ff16600114610ca7578373ffffffffffffffffffffffffffffffffffffffff166316f0115b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca291906147f0565b610d16565b8573ffffffffffffffffffffffffffffffffffffffff1663570a7af26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1691906147f0565b90508073ffffffffffffffffffffffffffffffffffffffff166345d31f9d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d87919061480d565b6101008901526000600160ff891614610e0e578473ffffffffffffffffffffffffffffffffffffffff1663458936f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e09919061480d565b610e7d565b8573ffffffffffffffffffffffffffffffffffffffff166320a05ff76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7d919061480d565b90508760ff16600114610f1f576040517f8991b2f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152861690638991b2f190602401602060405180830381865afa158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a919061480d565b610faf565b6040517fb451cecc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015287169063b451cecc90602401602060405180830381865afa158015610f8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610faf919061480d565b6102208a01528067ffffffffffffffff811115610fce57610fce61488a565b60405190808252806020026020018201604052801561103e57816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610fec5790505b506101208a015260005b818110156113d657604080516080810182526000808252602082018190529181018290526060810191909152600180831b9060ff8c1614156111c5576040517faf0a650200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018590528a169063af0a650290604401608060405180830381865afa1580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b91906148b9565b5050602084015273ffffffffffffffffffffffffffffffffffffffff9081168084526040517ff9eaee0d0000000000000000000000000000000000000000000000000000000081526004810191909152908a169063f9eaee0d90602401602060405180830381865afa158015611195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b9919061490d565b15156040830152611388565b6040517f172c48c70000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff89169063172c48c7906024016040805180830381865afa15801561122f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112539190614928565b5073ffffffffffffffffffffffffffffffffffffffff9081168084526040517f70a082310000000000000000000000000000000000000000000000000000000081529188166004830152906370a0823190602401602060405180830381865afa1580156112c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e8919061480d565b602083015281516040517ff9eaee0d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529088169063f9eaee0d90602401602060405180830381865afa15801561135c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611380919061490d565b151560408301525b6102208c015181161561139c57600161139f565b60005b151560608301526101208c01518051839190859081106113c1576113c161495e565b60209081029190910101525050600101611048565b508273ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611422573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611446919061480d565b896101c00181815250508273ffffffffffffffffffffffffffffffffffffffff16633dc54b406040518163ffffffff1660e01b8152600401602060405180830381865afa15801561149b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bf919061480d565b6101e08a015250969998505050505050505050565b61159b604051806102000160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff1681525090565b6040517f5b16ebb700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015283917f000000000000000000000000000000000000000000000000000000000000000090911690635b16ebb790602401602060405180830381865afa15801561162b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164f919061490d565b611685576040517fd384b23800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316808352604080517ffe14112d000000000000000000000000000000000000000000000000000000008152905185929163fe14112d9160048083019260209291908290030181865afa1580156116f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611719919061480d565b8360c00181815250508073ffffffffffffffffffffffffffffffffffffffff1663ef8d96036040518163ffffffff1660e01b8152600401602060405180830381865afa15801561176d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611791919061480d565b8360e00181815250508073ffffffffffffffffffffffffffffffffffffffff1663743753596040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611809919061480d565b8360a00181815250508073ffffffffffffffffffffffffffffffffffffffff16634c19386c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561185d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611881919061480d565b836101000181815250508073ffffffffffffffffffffffffffffffffffffffff1663788c6bfe6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fa919061480d565b836101600181815250508073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561194f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611973919061480d565b8360800181815250508073ffffffffffffffffffffffffffffffffffffffff166345d31f9d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119eb919061480d565b836101400181815250508073ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6491906147f0565b836040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166336dda7d56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0a91906147f0565b836060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663788c6bfe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb0919061480d565b836101600181815250508073ffffffffffffffffffffffffffffffffffffffff1663e941fa786040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c29919061480d565b61018084015260408084015173ffffffffffffffffffffffffffffffffffffffff9081167f000000000000000000000000000000000000000000000000000000000000000082161460208087019190915282517f609ae31700000000000000000000000000000000000000000000000000000000815292519184169263609ae31792600480830193928290030181865afa158015611ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cef919061480d565b836101c00181815250508073ffffffffffffffffffffffffffffffffffffffff1663dbcb313b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d68919061480d565b836101a00181815250506000836060015173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de7919061480d565b6040517f5427c9380000000000000000000000000000000000000000000000000000000081526004810182905290915060009073ffffffffffffffffffffffffffffffffffffffff841690635427c93890602401602060405180830381865afa158015611e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7c919061480d565b90508015611ec7576101808501518190611eb890611e9c906127106149bc565b876101000151886101400151611eb291906149d3565b90613fd0565b611ec29190614a3f565b611ece565b8461014001515b856101200181815250508273ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f47919061480d565b60ff166101e086015250505050919050565b606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b4ac68606040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fec919061480d565b90508067ffffffffffffffff8111156120075761200761488a565b6040519080825280602002602001820160405280156120ff57816020015b6120ec604051806102000160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff1681525090565b8152602001906001900390816120255790505b50915060005b818110156121f0576040517fac4afa38000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ac4afa3890602401602060405180830381865afa15801561219b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bf91906147f0565b90506121ca816114d4565b8483815181106121dc576121dc61495e565b602090810291909101015250600101612105565b505090565b6040517f6fbc6f6b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015260009184917f00000000000000000000000000000000000000000000000000000000000000001690636fbc6f6b90602401602060405180830381865afa158015612286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122aa919061490d565b6122e0576040517f2cf3d0de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060006122ee87613cf4565b5050935093505092508260ff16600114612397576040517ffdd5764500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015282169063fdd5764590602401602060405180830381865afa15801561236e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239291906147f0565b612427565b6040517ffdd5764500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015283169063fdd5764590602401602060405180830381865afa158015612403573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242791906147f0565b979650505050505050565b606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c29277cd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c5919061480d565b90508067ffffffffffffffff8111156124e0576124e061488a565b6040519080825280602002602001820160405280156125c457816020015b60408051610260810182526000808252602080830182905292820181905260608083018290526080830182905260a0830182905260c0830182905260e0830182905261010083018290526101208301819052610140830181905261016083015261018082018190526101a082018190526101c082018190526101e082018190526102008201819052610220820181905261024082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816124fe5790505b50915060005b818110156121f0576040517f1e16e4fc000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690631e16e4fc90602401602060405180830381865afa158015612660573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268491906147f0565b905061268f81612a75565b8483815181106126a1576126a161495e565b6020908102919091010152506001016125ca565b60606000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c29277cd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612725573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612749919061480d565b905060005b81811015612829576040517f1e16e4fc000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690631e16e4fc90602401602060405180830381865afa1580156127e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280891906147f0565b90506128148187613bf7565b15612820578360010193505b5060010161274e565b508167ffffffffffffffff8111156128435761284361488a565b60405190808252806020026020018201604052801561296157816020015b61294e604051806102400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001606081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600060ff168152602001600081525090565b8152602001906001900390816128615790505b5092506000915060005b81811015612a6d576040517f1e16e4fc000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690631e16e4fc90602401602060405180830381865afa158015612a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2591906147f0565b9050612a318187613bf7565b15612a6457612a408187610272565b858581518110612a5257612a5261495e565b60209081029190910101526001909301925b5060010161296b565b505050919050565b604080516102608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201819052610140820181905261016082015261018081018290526101a081018290526101c081018290526101e08101829052610200810182905261022081018290526102408101829052908080808080612b1b88613cf4565b73ffffffffffffffffffffffffffffffffffffffff8e168d5260ff86166101808e01819052959b50939950919750955093509150600114612bca578273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc591906147f0565b612c39565b8473ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3991906147f0565b73ffffffffffffffffffffffffffffffffffffffff908116602089018190527f00000000000000000000000000000000000000000000000000000000000000009091161460408801526000600160ff881614612d03578373ffffffffffffffffffffffffffffffffffffffff1663570a7af26040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cfe91906147f0565b612d72565b8573ffffffffffffffffffffffffffffffffffffffff1663570a7af26040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7291906147f0565b6040517f2e97ca2100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b8116600483015291925090821690632e97ca2190602401602060405180830381865afa158015612de2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e06919061490d565b15156060890152604080517f45d31f9d000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff8316916345d31f9d9160048083019260209291908290030181865afa158015612e78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9c919061480d565b8860800181815250508073ffffffffffffffffffffffffffffffffffffffff1663743753596040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ef0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f14919061480d565b610100890152600160ff88161415613017578573ffffffffffffffffffffffffffffffffffffffff16639b2cb5d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f95919061480d565b8860a00181815250508573ffffffffffffffffffffffffffffffffffffffff16635f48f3936040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300d919061480d565b60c08901526130a5565b8273ffffffffffffffffffffffffffffffffffffffff1663860aefcf6040518163ffffffff1660e01b81526004016040805180830381865afa158015613061573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130859190614a73565b6fffffffffffffffffffffffffffffffff90811660c08b01521660a08901525b60008760ff16600114613126578473ffffffffffffffffffffffffffffffffffffffff1663458936f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613121919061480d565b613195565b8573ffffffffffffffffffffffffffffffffffffffff166320a05ff76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613171573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613195919061480d565b90508067ffffffffffffffff8111156131b0576131b061488a565b6040519080825280602002602001820160405280156131d9578160200160208202803683370190505b506101208a01528067ffffffffffffffff8111156131f9576131f961488a565b604051908082528060200260200182016040528015613222578160200160208202803683370190505b506101608a015260005b818110156134c4578860ff16600114156133b4576040517f5e5f2e260000000000000000000000000000000000000000000000000000000081526004810182905260009073ffffffffffffffffffffffffffffffffffffffff891690635e5f2e2690602401602060405180830381865afa1580156132ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d291906147f0565b9050808b610120015183815181106132ec576132ec61495e565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040517f78327438000000000000000000000000000000000000000000000000000000008152828216600482015290891690637832743890602401602060405180830381865afa158015613367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061338b919061480d565b8b610160015183815181106133a2576133a261495e565b602002602001018181525050506134bc565b6040517f172c48c70000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff87169063172c48c7906024016040805180830381865afa15801561341e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134429190614928565b8061ffff1690508b610120015183815181106134605761346061495e565b602002602001018c6101600151848151811061347e5761347e61495e565b60200260200101828152508273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050505b60010161322c565b5060008860ff16600114613546578373ffffffffffffffffffffffffffffffffffffffff166350e036ff6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561351d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613541919061480d565b6135b5565b8673ffffffffffffffffffffffffffffffffffffffff166350e036ff6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b5919061480d565b90508067ffffffffffffffff8111156135d0576135d061488a565b60405190808252806020026020018201604052801561361557816020015b60408051808201909152600080825260208201528152602001906001900390816135ee5790505b506101408b015260005b818110156139015760408051808201909152600080825260208201528a60ff166001146136da576040517f5094cb4f0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff871690635094cb4f90602401602060405180830381865afa1580156136b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d591906147f0565b613769565b6040517f5094cb4f0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff8a1690635094cb4f90602401602060405180830381865afa158015613745573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376991906147f0565b73ffffffffffffffffffffffffffffffffffffffff168152600160ff8c16146138245780516040517ffdd5764500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529089169063fdd5764590602401602060405180830381865afa1580156137fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381f91906147f0565b6138b7565b80516040517ffdd5764500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152908a169063fdd5764590602401602060405180830381865afa158015613893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138b791906147f0565b73ffffffffffffffffffffffffffffffffffffffff1660208201526101408c01518051829190849081106138ed576138ed61495e565b60209081029190910101525060010161361f565b508860ff166001141561398f578773ffffffffffffffffffffffffffffffffffffffff1663b2c53a6c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061397d919061480d565b60e08b015260ff6102408b0152613be9565b73ffffffffffffffffffffffffffffffffffffffff85166101a08b01819052604080517f9408b63f0000000000000000000000000000000000000000000000000000000081529051639408b63f916004808201926020929091908290030181865afa158015613a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2691906147f0565b8a6101e0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa158015613aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613acd9190614aa6565b5015156102008c015250604080517f9fd12b77000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff881691639fd12b779160048083019260209291908290030181865afa158015613b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b66919061480d565b8a6102200181815250508573ffffffffffffffffffffffffffffffffffffffff16638345f26e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bdf9190614af7565b60ff166102408b01525b505050505050505050919050565b6040517f6fbc6f6b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015260009184917f00000000000000000000000000000000000000000000000000000000000000001690636fbc6f6b90602401602060405180830381865afa158015613c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cac919061490d565b613ce2576040517f2cf3d0de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613cec8484614023565b949350505050565b600080600080600080867f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636fbc6f6b826040518263ffffffff1660e01b8152600401613d73919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015613d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613db4919061490d565b613dea576040517f2cf3d0de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8773ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e59919061480d565b96508660ff1660011415613ee0578795508573ffffffffffffffffffffffffffffffffffffffff1663f93f515b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ed991906147f0565b9450613fc6565b8793508373ffffffffffffffffffffffffffffffffffffffff16632f7a18816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f5291906147f0565b92508373ffffffffffffffffffffffffffffffffffffffff1663f9aa028a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fc391906147f0565b91505b5091939550919395565b6000821580613fdd575081155b15613fea5750600061401d565b612710613ff8600282614b1a565b61ffff1661400684866149d3565b6140109190614b3b565b61401a9190614a3f565b90505b92915050565b6040517f055ee9b500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152600091829185169063055ee9b590602401602060405180830381865afa158015614094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140b891906147f0565b73ffffffffffffffffffffffffffffffffffffffff1614159392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146140f957600080fd5b50565b6000806040838503121561410f57600080fd5b823561411a816140d7565b9150602083013561412a816140d7565b809150509250929050565b600081518084526020808501945080840160005b8381101561419f578151805173ffffffffffffffffffffffffffffffffffffffff168852838101518489015260408082015115159089015260609081015115159088015260809096019590820190600101614149565b509495945050505050565b805173ffffffffffffffffffffffffffffffffffffffff168252600061024060208301516141f0602086018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151614204604086018215159052565b50606083015161422c606086018273ffffffffffffffffffffffffffffffffffffffff169052565b506080830151614254608086018273ffffffffffffffffffffffffffffffffffffffff169052565b5060a083015160a085015260c083015160c085015260e083015160e085015261010080840151818601525061012080840151828287015261429783870182614135565b92505050610140808401518186015250610160808401518186015250610180808401516142c78287018215159052565b50506101a083810151908501526101c080840151908501526101e080840151908501526102008084015160ff16908501526102209283015192909301919091525090565b60208152600061401a60208301846141aa565b60006020828403121561433057600080fd5b813561433b816140d7565b9392505050565b805173ffffffffffffffffffffffffffffffffffffffff168252602081015161436f602084018215159052565b506040810151614397604084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060608101516143bf606084018273ffffffffffffffffffffffffffffffffffffffff169052565b506080818101519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012080820151908301526101408082015190830152610160808201519083015261018080820151908301526101a080820151908301526101c080820151908301526101e09081015160ff16910152565b610200810161401d8284614342565b6020808252825182820181905260009190848201906040850190845b8181101561449657614482838551614342565b92840192610200929092019160010161446f565b50909695505050505050565b600081518084526020808501945080840160005b8381101561419f57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016144b6565b600081518084526020808501945080840160005b8381101561419f578151805173ffffffffffffffffffffffffffffffffffffffff9081168952908401511683880152604090960195908201906001016144fc565b600081518084526020808501945080840160005b8381101561419f57815187529582019590820190600101614551565b805173ffffffffffffffffffffffffffffffffffffffff168252600061026060208301516145b3602086018273ffffffffffffffffffffffffffffffffffffffff169052565b5060408301516145c7604086018215159052565b5060608301516145db606086018215159052565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e0850152610100808401518186015250610120808401518282870152614628838701826144a2565b92505050610140808401518583038287015261464483826144e8565b925050506101608084015185830382870152614660838261453d565b92505050610180808401516146798287018260ff169052565b50506101a08381015173ffffffffffffffffffffffffffffffffffffffff908116918601919091526101c0808501511515908601526101e080850151909116908501526102008084015115159085015261022080840151908501526102409283015160ff1692909301919091525090565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561475d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261474b85835161456d565b94509285019290850190600101614711565b5092979650505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561475d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526147cb8583516141aa565b94509285019290850190600101614791565b60208152600061401a602083018461456d565b60006020828403121561480257600080fd5b815161433b816140d7565b60006020828403121561481f57600080fd5b5051919050565b600080600080600060a0868803121561483e57600080fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b6000806040838503121561487957600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156148cf57600080fd5b84516148da816140d7565b60208601516040870151606090970151919890975090945092505050565b8051801515811461490857600080fd5b919050565b60006020828403121561491f57600080fd5b61401a826148f8565b6000806040838503121561493b57600080fd5b8251614946816140d7565b602084015190925061ffff8116811461412a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156149ce576149ce61498d565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a0b57614a0b61498d565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614a4e57614a4e614a10565b500490565b80516fffffffffffffffffffffffffffffffff8116811461490857600080fd5b60008060408385031215614a8657600080fd5b614a8f83614a53565b9150614a9d60208401614a53565b90509250929050565b600080600060608486031215614abb57600080fd5b614ac484614a53565b9250614ad2602085016148f8565b9150604084015164ffffffffff81168114614aec57600080fd5b809150509250925092565b600060208284031215614b0957600080fd5b815160ff8116811461433b57600080fd5b600061ffff80841680614b2f57614b2f614a10565b92169190910492915050565b60008219821115614b4e57614b4e61498d565b50019056fea2646970667358221220d15108d0bec9cc6f3903875dd8412869a3da1b36661bdc780e2e2f0ae3136d2464736f6c634300080a003360a06040523480156200001157600080fd5b5060405162001b4538038062001b45833981016040819052620000349162000608565b6000805460ff19169055816001600160a01b0381166200006757604051635919af9760e11b815260040160405180910390fd5b806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cc91906200070a565b6001600160a01b031660805250805160005b818110156200014257620001398382815181106200010057620001006200072f565b6020026020010151600001518483815181106200012157620001216200072f565b6020026020010151602001516200014c60201b60201c565b600101620000de565b5050505062000822565b6001600160a01b03821615806200016a57506001600160a01b038116155b156200018957604051635919af9760e11b815260040160405180910390fd5b620001a8826001600160a01b0316620004ba60201b620006751760201c565b620001d65760405163df4c572d60e01b81526001600160a01b03831660048201526024015b60405180910390fd5b620001f5816001600160a01b0316620004ba60201b620006751760201c565b6200021f5760405163df4c572d60e01b81526001600160a01b0382166004820152602401620001cd565b806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200027c575060408051601f3d908101601f19168201909252620002799181019062000745565b60015b6200029a576040516367a7cd4360e01b815260040160405180910390fd5b8060ff16600814620002bf576040516367a7cd4360e01b815260040160405180910390fd5b506000816001600160a01b031663d62ada116040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200031f575060408051601f3d908101601f191682019092526200031c918101906200076a565b60015b6200032a576200032d565b90505b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200038c575060408051601f3d908101601f19168201909252620003899181019062000745565b60015b620003aa5760405163528ca31d60e01b815260040160405180910390fd5b60128160ff161115620003d05760405163528ca31d60e01b815260040160405180910390fd5b9050826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa9250505080156200042f575060408051601f3d908101601f191682019092526200042c91810190620007a6565b60015b6200044d576040516367a7cd4360e01b815260040160405180910390fd5b8662000461576200046185858484620004c0565b5050505050620004748484848462000526565b826001600160a01b0316846001600160a01b03167fe263805b03657ab13064915d0723c5ce14981547e7cba5283f66b9e5d81f6e6e60405160405180910390a350505050565b3b151590565b60008313620004e2576040516356e05d2b60e01b815260040160405180910390fd5b836001600160501b0316816001600160501b0316108062000501575081155b15620005205760405163b1cf675560e01b815260040160405180910390fd5b50505050565b6001600160a01b03831682156200053e57600160a11b175b6200055460ff60a21b60a284901b1682620007fb565b6001600160a01b0390951660009081526001602052604090209490945550505050565b80516001600160a01b03811681146200058f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620005cf57620005cf62000594565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000600576200060062000594565b604052919050565b60008060408084860312156200061d57600080fd5b620006288462000577565b602085810151919450906001600160401b03808211156200064857600080fd5b818701915087601f8301126200065d57600080fd5b81518181111562000672576200067262000594565b62000682848260051b01620005d5565b818152848101925060069190911b830184019089821115620006a357600080fd5b928401925b81841015620006fa5785848b031215620006c25760008081fd5b620006cc620005aa565b620006d78562000577565b8152620006e686860162000577565b8187015283529285019291840191620006a8565b8096505050505050509250929050565b6000602082840312156200071d57600080fd5b620007288262000577565b9392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156200075857600080fd5b815160ff811681146200072857600080fd5b6000602082840312156200077d57600080fd5b815180151581146200072857600080fd5b80516001600160501b03811681146200058f57600080fd5b600080600080600060a08688031215620007bf57600080fd5b620007ca866200078e565b9450602086015193506040860151925060608601519150620007ef608087016200078e565b90509295509295909350565b600082198211156200081d57634e487b7160e01b600052601160045260246000fd5b500190565b6080516112f262000853600039600081816101b201528181610280015281816103e201526104ff01526112f26000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80638456cb591161008c578063b66102df11610066578063b66102df146101d4578063e8a97a3e146101e7578063f190e5fa146101fa578063f9a650301461023f57600080fd5b80638456cb591461016d5780639dcb511a14610175578063a50cf2c8146101ad57600080fd5b80635c975abb116100bd5780635c975abb1461011c5780635cecbd0e146101325780637afb01041461015a57600080fd5b80633f4ba83a146100e457806341976e09146100ee57806354fd4d5014610114575b600080fd5b6100ec610252565b005b6101016100fc366004610f28565b610340565b6040519081526020015b60405180910390f35b610101600281565b60005460ff16604051901515815260200161010b565b610145610140366004610f4a565b610352565b6040805192835260208301919091520161010b565b610101610168366004610f90565b610376565b6100ec6103b4565b610188610183366004610f28565b6104a0565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010b565b6101887f000000000000000000000000000000000000000000000000000000000000000081565b6101016101e2366004610fbc565b6104b4565b6100ec6101f5366004610ff8565b6104d1565b61020d610208366004610f28565b6105c3565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845291151560208401529082015260600161010b565b61010161024d366004610f90565b61064d565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa1580156102dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103009190611022565b610336576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61033e61067b565b565b600061034b82610761565b5092915050565b60008061035f868661064d565b915061036b848461064d565b905094509492505050565b600080600061038484610761565b90925090508161039582600a611193565b61039f908761119f565b6103a991906111dc565b925050505b92915050565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa15801561043e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104629190611022565b610498576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61033e610819565b60006104ab826105c3565b50909392505050565b60006104c96104c3858561064d565b83610376565b949350505050565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f9190611022565b6105b5576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105bf82826108d9565b5050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600160205260408120548190819080610624576040517f4bb8ad8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b947402000000000000000000000000000000000000000086161515945060a286901c9350915050565b600080600061065b84610761565b909250905061066b81600a611193565b61039f838761119f565b3b151590565b60005460ff166106ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b600080600080610770856105c3565b8095508193508294505050506000806000808573ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156107cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f19190611231565b9450945050935093508461080b5761080b84848484610dd9565b829750505050505050915091565b60005460ff1615610886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016106e3565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586107373390565b73ffffffffffffffffffffffffffffffffffffffff82161580610910575073ffffffffffffffffffffffffffffffffffffffff8116155b15610947576040517fb2335f2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82163b6109ad576040517fdf4c572d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016106e3565b73ffffffffffffffffffffffffffffffffffffffff81163b610a13576040517fdf4c572d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016106e3565b8073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a98575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610a9591810190611281565b60015b610ace576040517f67a7cd4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060ff16600814610b0b576040517f67a7cd4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060008173ffffffffffffffffffffffffffffffffffffffff1663d62ada116040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b93575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610b9091810190611022565b60015b610b9c57610b9f565b90505b60008373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610c26575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610c2391810190611281565b60015b610c5c576040517f528ca31d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60128160ff161115610c9a576040517f528ca31d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b90508273ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa925050508015610d21575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610d1e91810190611231565b60015b610d57576040517f67a7cd4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b86610d6857610d6885858484610dd9565b5050505050610d7984848484610e74565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fe263805b03657ab13064915d0723c5ce14981547e7cba5283f66b9e5d81f6e6e60405160405180910390a350505050565b60008313610e13576040517f56e05d2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8369ffffffffffffffffffff168169ffffffffffffffffffff161080610e37575081155b15610e6e576040517fb1cf675500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b73ffffffffffffffffffffffffffffffffffffffff83168215610ea95774020000000000000000000000000000000000000000175b610ecf7503fc000000000000000000000000000000000000000060a284901b16826112a4565b73ffffffffffffffffffffffffffffffffffffffff90951660009081526001602052604090209490945550505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f2357600080fd5b919050565b600060208284031215610f3a57600080fd5b610f4382610eff565b9392505050565b60008060008060808587031215610f6057600080fd5b84359350610f7060208601610eff565b925060408501359150610f8560608601610eff565b905092959194509250565b60008060408385031215610fa357600080fd5b82359150610fb360208401610eff565b90509250929050565b600080600060608486031215610fd157600080fd5b83359250610fe160208501610eff565b9150610fef60408501610eff565b90509250925092565b6000806040838503121561100b57600080fd5b61101483610eff565b9150610fb360208401610eff565b60006020828403121561103457600080fd5b81518015158114610f4357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b808511156110cc57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156110b2576110b2611044565b808516156110bf57918102915b93841c9390800290611078565b509250929050565b6000826110e3575060016103ae565b816110f0575060006103ae565b816001811461110657600281146111105761112c565b60019150506103ae565b60ff84111561112157611121611044565b50506001821b6103ae565b5060208310610133831016604e8410600b841016171561114f575081810a6103ae565b6111598383611073565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561118b5761118b611044565b029392505050565b6000610f4383836110d4565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156111d7576111d7611044565b500290565b600082611212577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b805169ffffffffffffffffffff81168114610f2357600080fd5b600080600080600060a0868803121561124957600080fd5b61125286611217565b945060208601519350604086015192506060860151915061127560808701611217565b90509295509295909350565b60006020828403121561129357600080fd5b815160ff81168114610f4357600080fd5b600082198211156112b7576112b7611044565b50019056fea2646970667358221220e7485a2cb5750973f539ca59d2211008b42bb92b6c49605a53f5d9c88c330fb164736f6c634300080a003360e06040523480156200001157600080fd5b5060405162002ced38038062002ced8339810160408190526200003491620004bb565b6000805460ff19169055806001600160a01b0381166200006757604051635919af9760e11b815260040160405180910390fd5b806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cc9190620004bb565b6001600160a01b039081166080526001805560408051808201909152600281526105a360f41b602082015291508216620001245760405162461bcd60e51b81526004016200011b9190620004ed565b60405180910390fd5b50806001600160a01b031663c513c9bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000164573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018a9190620004bb565b6001600160a01b031660c052604051620001a490620004ad565b604051809103906000f080158015620001c1573d6000803e3d6000fd5b506001600160a01b031660a08190526040805163204a7f0760e21b81529051638129fc1c9160048082019260009290919082900301818387803b1580156200020857600080fd5b505af11580156200021d573d6000803e3d6000fd5b50505050620002316200028a60201b60201c565b50600454600380546001600160a01b039092166001600160a01b03199283161790556000805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b8054909116905562000545565b6000620002a460a0516200038c60201b6200119b1760201c565b9050806001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620002e257600080fd5b505af1158015620002f7573d6000803e3d6000fd5b5050600480546001600160a01b03908116600090815260026020908152604090912080546001600160a01b03199081169388169384179091558354169091179091556200035492506005915083906200043b811b6200127d17901c565b506040516001600160a01b038216907f9f69b6c10f6810213e055b0ba6bc0a4e2603f73c221aad77ea35da819cda7dc390600090a250565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f09150506001600160a01b038116620004365760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064016200011b565b919050565b600062000452836001600160a01b0384166200045b565b90505b92915050565b6000818152600183016020526040812054620004a45750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000455565b50600062000455565b610e788062001e7583390190565b600060208284031215620004ce57600080fd5b81516001600160a01b0381168114620004e657600080fd5b9392505050565b600060208083528351808285015260005b818110156200051c57858101830151858201604001528201620004fe565b818111156200052f576000604083870101525b50601f01601f1916929092016040019392505050565b60805160a05160c0516118cf620005a66000396000818161026a015281816103680152610b7001526000818161020201526110650152600081816102c4015281816105b80152818161099601528181610a840152610e7401526118cf6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806388f64c54116100cd578063b193976311610081578063d82ecc4811610066578063d82ecc4814610309578063e3ba9ace1461031c578063f23953ab1461032f57600080fd5b8063b1939763146102f9578063b60e85181461030157600080fd5b80638f7dcfa3116100b25780638f7dcfa31461029f578063a50cf2c8146102bf578063a904aab6146102e657600080fd5b806388f64c541461026557806389b77b3e1461028c57600080fd5b806354fd4d50116101245780635da33c5b116101095780635da33c5b146101fd578063765e0159146102245780638456cb591461025d57600080fd5b806354fd4d50146101d05780635c975abb146101e657600080fd5b806313d8c8401461015657806321d18456146101a05780632932472f146101b35780633f4ba83a146101c8575b600080fd5b6004546101769073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101766101ae366004611651565b610337565b6101c66101c1366004611697565b61058a565b005b6101c6610968565b6101d8600181565b604051908152602001610197565b60005460ff165b6040519015158152602001610197565b6101767f000000000000000000000000000000000000000000000000000000000000000081565b6101766102323660046116da565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600260205260409020541690565b6101c6610a56565b6101767f000000000000000000000000000000000000000000000000000000000000000081565b6101c661029a3660046116da565b610b42565b6003546101769073ffffffffffffffffffffffffffffffffffffffff1681565b6101767f000000000000000000000000000000000000000000000000000000000000000081565b6101c66102f4366004611697565b610e46565b6101d8610fb8565b6101d8611033565b6101ed6103173660046116da565b611044565b61017661032a3660046116f5565b611051565b6101c661105e565b6040517f6fbc6f6b0000000000000000000000000000000000000000000000000000000081523360048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636fbc6f6b90602401602060405180830381865afa1580156103c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e8919061170e565b6040518060400160405280600281526020017f43500000000000000000000000000000000000000000000000000000000000008152509061045f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104569190611730565b60405180910390fd5b506104686112a6565b6003805473ffffffffffffffffffffffffffffffffffffffff8082166000818152600260205260409081902080549093167fffffffffffffffffffffffff0000000000000000000000000000000000000000948516179094558154909216905590517fc75b5a710000000000000000000000000000000000000000000000000000000081523360048201526024810185905260448101849052819063c75b5a7190606401600060405180830381600087803b15801561052657600080fd5b505af115801561053a573d6000803e3d6000fd5b505060405133925073ffffffffffffffffffffffffffffffffffffffff841691507ff3ede7039176503a8ad1fe7cfaa29475a9dbe0cdcaf04ecf9a5c10570c47b10390600090a390505b92915050565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015610614573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610638919061170e565b61066e576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106766112a6565b60035473ffffffffffffffffffffffffffffffffffffffff838116911614156106fa576003805473ffffffffffffffffffffffffffffffffffffffff808216600090815260026020526040902080549091167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092558154169055610865565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260026020908152604091829020548251808401909352600383527f4146330000000000000000000000000000000000000000000000000000000000918301919091529091848116911614610798576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104569190611730565b5060045473ffffffffffffffffffffffffffffffffffffffff838116911614156107fd57600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85161790555b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805488861684529183208054929095167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790945591905281541690555b6040517fc75b5a7100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152600060248301819052604483015283169063c75b5a7190606401600060405180830381600087803b1580156108dc57600080fd5b505af11580156108f0573d6000803e3d6000fd5b505050506109088260056112dd90919063ffffffff16565b508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f25e267469ba2ae82515be7b3d45df60bf8308343f0809e8cf7319058e2255ce660405160405180910390a3505050565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa1580156109f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a16919061170e565b610a4c576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a546112ff565b565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa158015610ae0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b04919061170e565b610b3a576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a546113e0565b6040517f6fbc6f6b0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636fbc6f6b90602401602060405180830381865afa158015610bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf0919061170e565b6040518060400160405280600281526020017f435000000000000000000000000000000000000000000000000000000000000081525090610c5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104569190611730565b50610c6a6005826114a0565b6040518060400160405280600381526020017f414634000000000000000000000000000000000000000000000000000000000081525090610cd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104569190611730565b50438173ffffffffffffffffffffffffffffffffffffffff16633dc54b406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4991906117a3565b14156040518060400160405280600381526020017f414631000000000000000000000000000000000000000000000000000000000081525090610db9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104569190611730565b506004805473ffffffffffffffffffffffffffffffffffffffff90811660009081526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169487169485179091558454168317909355915190917fced6ab9afc868b3a088366f6631ae20752993b5cce5d5f0534ea5a59fcc57d5691a250565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015610ed0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef4919061170e565b610f2a576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f19a1603900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015282811660248301528416906319a1603990604401600060405180830381600087803b158015610f9b57600080fd5b505af1158015610faf573d6000803e3d6000fd5b50505050505050565b600354600090819073ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff81161561102d5773ffffffffffffffffffffffffffffffffffffffff9081166000908152600260205260409020541681611025816117eb565b925050610fd7565b50919050565b600061103f60056114cf565b905090565b60006105846005836114a0565b60006105846005836114d9565b60006110897f000000000000000000000000000000000000000000000000000000000000000061119b565b90508073ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156110d357600080fd5b505af11580156110e7573d6000803e3d6000fd5b50506004805473ffffffffffffffffffffffffffffffffffffffff908116600090815260026020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811692871692831790915582541617905550611156905060058261127d565b5060405173ffffffffffffffffffffffffffffffffffffffff8216907f9f69b6c10f6810213e055b0ba6bc0a4e2603f73c221aad77ea35da819cda7dc390600090a250565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c6564000000000000000000006044820152606401610456565b919050565b600061129f8373ffffffffffffffffffffffffffffffffffffffff84166114e5565b9392505050565b60035473ffffffffffffffffffffffffffffffffffffffff90811660009081526002602052604090205416610a5457610a5461105e565b600061129f8373ffffffffffffffffffffffffffffffffffffffff8416611534565b60005460ff1661136b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610456565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60005460ff161561144d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610456565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113b63390565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600183016020526040812054151561129f565b6000610584825490565b600061129f8383611627565b600081815260018301602052604081205461152c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610584565b506000610584565b6000818152600183016020526040812054801561161d576000611558600183611824565b855490915060009061156c90600190611824565b90508181146115d157600086600001828154811061158c5761158c61183b565b90600052602060002001549050808760000184815481106115af576115af61183b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806115e2576115e261186a565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610584565b6000915050610584565b600082600001828154811061163e5761163e61183b565b9060005260206000200154905092915050565b6000806040838503121561166457600080fd5b50508035926020909101359150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461127857600080fd5b6000806000606084860312156116ac57600080fd5b6116b584611673565b92506116c360208501611673565b91506116d160408501611673565b90509250925092565b6000602082840312156116ec57600080fd5b61129f82611673565b60006020828403121561170757600080fd5b5035919050565b60006020828403121561172057600080fd5b8151801515811461129f57600080fd5b600060208083528351808285015260005b8181101561175d57858101830151858201604001528201611741565b8181111561176f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156117b557600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561181d5761181d6117bc565b5060010190565b600082821015611836576118366117bc565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220f1e9c81b8c3af2491c907ee66cf24e1bb76111b821db02df8f98dbb48b5ab5fa64736f6c634300080a0033608060405234801561001057600080fd5b50610e58806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806354fd4d5011610081578063c45a01551161005b578063c45a0155146101a4578063c75b5a71146101ca578063d1660f99146101dd57600080fd5b806354fd4d501461014f5780638129fc1c14610157578063c12c21c01461015f57600080fd5b80631afbb7a4116100b25780631afbb7a41461011d5780631cff79cd146101265780633dc54b401461014657600080fd5b806316128211146100d957806317d11a15146100ee57806319a160391461010a575b600080fd5b6100ec6100e7366004610b42565b6101f0565b005b6100f760035481565b6040519081526020015b60405180910390f35b6100ec610118366004610b8d565b61024c565b6100f760025481565b610139610134366004610bef565b6102c9565b6040516101019190610d49565b6100f760045481565b6100f7600181565b6100ec610344565b60015461017f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610101565b60005461017f9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b6100ec6101d8366004610d5c565b610494565b6100ec6101eb366004610d8f565b61053d565b60015473ffffffffffffffffffffffffffffffffffffffff163314610241576040517f1f51116700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600291909155600355565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff1633146102a3576040517fb126b84800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102c573ffffffffffffffffffffffffffffffffffffffff83168260006105b4565b5050565b60015460609073ffffffffffffffffffffffffffffffffffffffff16331461031d576040517f1f51116700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61033d73ffffffffffffffffffffffffffffffffffffffff8416836107b4565b9392505050565b600054610100900460ff1661035f5760005460ff1615610363565b303b155b6103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600054610100900460ff1615801561043357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16336201000002179055801561049157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff1633146104eb576040517fb126b84800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff949094169390931790925560025560035543600455565b60015473ffffffffffffffffffffffffffffffffffffffff16331461058e576040517f1f51116700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105af73ffffffffffffffffffffffffffffffffffffffff841683836107f6565b505050565b80158061065457506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561062e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106529190610dcb565b155b6106e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016103eb565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526105af9084907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261084c565b606061033d83836040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250610958565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526105af9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610732565b60006108ae826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166109589092919063ffffffff16565b8051909150156105af57808060200190518101906108cc9190610de4565b6105af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016103eb565b6060610967848460008561096f565b949350505050565b606082471015610a01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103eb565b843b610a69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103eb565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610a929190610e06565b60006040518083038185875af1925050503d8060008114610acf576040519150601f19603f3d011682016040523d82523d6000602084013e610ad4565b606091505b5091509150610ae4828286610aef565b979650505050505050565b60608315610afe57508161033d565b825115610b0e5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103eb9190610d49565b60008060408385031215610b5557600080fd5b50508035926020909101359150565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b8857600080fd5b919050565b60008060408385031215610ba057600080fd5b610ba983610b64565b9150610bb760208401610b64565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610c0257600080fd5b610c0b83610b64565b9150602083013567ffffffffffffffff80821115610c2857600080fd5b818501915085601f830112610c3c57600080fd5b813581811115610c4e57610c4e610bc0565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610c9457610c94610bc0565b81604052828152886020848701011115610cad57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610cea578181015183820152602001610cd2565b83811115610cf9576000848401525b50505050565b60008151808452610d17816020860160208601610ccf565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061033d6020830184610cff565b600080600060608486031215610d7157600080fd5b610d7a84610b64565b95602085013595506040909401359392505050565b600080600060608486031215610da457600080fd5b610dad84610b64565b9250610dbb60208501610b64565b9150604084013590509250925092565b600060208284031215610ddd57600080fd5b5051919050565b600060208284031215610df657600080fd5b8151801515811461033d57600080fd5b60008251610e18818460208701610ccf565b919091019291505056fea2646970667358221220448e7046078cd668c09328d857e534e2aab6cdc0e691d3d4f2c8baae8e084b1364736f6c634300080a003360c06040523480156200001157600080fd5b506040516200162738038062001627833981016040819052620000349162000177565b60408051808201909152600281526105a360f41b60208201526001600160a01b038216620000805760405162461bcd60e51b8152600401620000779190620001a9565b60405180910390fd5b50806001600160a01b0316634c252f916040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e6919062000177565b6001600160a01b03166080816001600160a01b031681525050806001600160a01b031663c513c9bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200013e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000164919062000177565b6001600160a01b031660a0525062000201565b6000602082840312156200018a57600080fd5b81516001600160a01b0381168114620001a257600080fd5b9392505050565b600060208083528351808285015260005b81811015620001d857858101830151858201604001528201620001ba565b81811115620001eb576000604083870101525b50601f01601f1916929092016040019392505050565b60805160a0516113c2620002656000396000818161021f0152818161036401526106d501526000818160af0152818161012a015281816104420152818161056e015281816107b301528181610aa601528181610b890152610c6701526113c26000f3fe60806040526004361061005e5760003560e01c80635869dba8116100435780635869dba814610199578063deecfbc9146101bb578063e79a4089146101ce57600080fd5b80634f0e0ef31461011857806354fd4d501461017657600080fd5b366101135760408051808201909152600381527f574732000000000000000000000000000000000000000000000000000000000060208201523373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010791906111ed565b60405180910390fd5b50005b600080fd5b34801561012457600080fd5b5061014c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018257600080fd5b5061018b600181565b60405190815260200161016d565b3480156101a557600080fd5b506101b96101b4366004611263565b6101ee565b005b6101b96101c936600461128f565b61031d565b3480156101da57600080fd5b506101b96101e93660046112e1565b61068e565b6040517f6fbc6f6b0000000000000000000000000000000000000000000000000000000081523360048201819052907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636fbc6f6b90602401602060405180830381865afa15801561027b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029f9190611318565b6040518060400160405280600281526020017f43500000000000000000000000000000000000000000000000000000000000008152509061030d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010791906111ed565b506103188383610a77565b505050565b6040517f5b16ebb700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808516600483015284917f000000000000000000000000000000000000000000000000000000000000000090911690635b16ebb790602401602060405180830381865afa1580156103ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d19190611318565b6040518060400160405280600281526020017f52500000000000000000000000000000000000000000000000000000000000008152509061043f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010791906111ed565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e6919061133a565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f57473100000000000000000000000000000000000000000000000000000000008152509061056b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010791906111ed565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156105d457600080fd5b505af11580156105e8573d6000803e3d6000fd5b50505050506105f78434610b3c565b6040517f9aa5d46200000000000000000000000000000000000000000000000000000000815234600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015261ffff84166044830152851690639aa5d46290606401600060405180830381600087803b15801561067057600080fd5b505af1158015610684573d6000803e3d6000fd5b5050505050505050565b6040517f5b16ebb700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808516600483015284917f000000000000000000000000000000000000000000000000000000000000000090911690635b16ebb790602401602060405180830381865afa15801561071e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107429190611318565b6040518060400160405280600281526020017f5250000000000000000000000000000000000000000000000000000000000000815250906107b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010791906111ed565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610833573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610857919061133a565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f5747310000000000000000000000000000000000000000000000000000000000815250906108dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010791906111ed565b506109703330858773ffffffffffffffffffffffffffffffffffffffff166336dda7d56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561092e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610952919061133a565b73ffffffffffffffffffffffffffffffffffffffff16929190610cd4565b6040517f05fe138b0000000000000000000000000000000000000000000000000000000081526004810184905230602482015260009073ffffffffffffffffffffffffffffffffffffffff8616906305fe138b906044016020604051808303816000875af11580156109e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0a9190611357565b9050610a168382610a77565b8273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f6de63bb986f2779478e384365c03cc2e62f06b453856acca87d5a519ce02664960405160405180910390a35050505050565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610aff57600080fd5b505af1158015610b13573d6000803e3d6000fd5b50610b389250505073ffffffffffffffffffffffffffffffffffffffff831682610d6f565b5050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015282917f00000000000000000000000000000000000000000000000000000000000000009091169063dd62ed3e90604401602060405180830381865afa158015610bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf69190611357565b1015610b38576040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610cb0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103189190611318565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610d69908590610ec9565b50505050565b80471015610dd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610107565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610e33576040519150601f19603f3d011682016040523d82523d6000602084013e610e38565b606091505b5050905080610318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610107565b6000610f2b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610fd59092919063ffffffff16565b8051909150156103185780806020019051810190610f499190611318565b610318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610107565b6060610fe48484600085610fee565b90505b9392505050565b606082471015611080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610107565b843b6110e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610107565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516111119190611370565b60006040518083038185875af1925050503d806000811461114e576040519150601f19603f3d011682016040523d82523d6000602084013e611153565b606091505b509150915061116382828661116e565b979650505050505050565b6060831561117d575081610fe7565b82511561118d5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010791906111ed565b60005b838110156111dc5781810151838201526020016111c4565b83811115610d695750506000910152565b602081526000825180602084015261120c8160408501602087016111c1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461126057600080fd5b50565b6000806040838503121561127657600080fd5b82356112818161123e565b946020939093013593505050565b6000806000606084860312156112a457600080fd5b83356112af8161123e565b925060208401356112bf8161123e565b9150604084013561ffff811681146112d657600080fd5b809150509250925092565b6000806000606084860312156112f657600080fd5b83356113018161123e565b92506020840135915060408401356112d68161123e565b60006020828403121561132a57600080fd5b81518015158114610fe757600080fd5b60006020828403121561134c57600080fd5b8151610fe78161123e565b60006020828403121561136957600080fd5b5051919050565b600082516113828184602087016111c1565b919091019291505056fea264697066735822122017fd7fc76e4a1efcf24b78a3417fad7ab9576f0a23aa756ddb211c5e2227aa9564736f6c634300080a003360806040523480156200001157600080fd5b5060405162002b8038038062002b80833981016040819052620000349162000122565b6001600160a01b0381166200008f5760405162461bcd60e51b815260206004820152601b60248201527f5a65726f2061646472657373206973206e6f7420616c6c6f7765640000000000604482015260640160405180910390fd5b6001600160a01b03811660008181526001602052604080822080546001600160601b0319166b204fce5e3e2502611000000090811790915590517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620000f99190815260200190565b60405180910390a350600680546001600160a81b031916336101000260ff191617905562000154565b6000602082840312156200013557600080fd5b81516001600160a01b03811681146200014d57600080fd5b9392505050565b612a1c80620001646000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806370a08231116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e14610503578063e7a324dc14610555578063f1127ed81461057c578063f2fde38b146105ee57600080fd5b8063b4b5ea57146104ca578063c3cda520146104dd578063d505accf146104f057600080fd5b806395d89b41116100d357806395d89b411461045b5780639742ca4614610497578063a9059cbb146104aa578063b0660c3d146104bd57600080fd5b806370a08231146103c7578063782d6fe11461040b5780637ecebe001461043b57600080fd5b806330adf81f11610166578063481c6a7511610140578063481c6a751461031e578063587cde1e146103435780635c19a95c146103795780636fcfff451461038c57600080fd5b806330adf81f14610298578063313ce567146102bf578063349dc329146102d957600080fd5b806320606b701161019757806320606b70146102545780632185810b1461027b57806323b872dd1461028557600080fd5b806306fdde03146101be578063095ea7b31461021057806318160ddd14610233575b600080fd5b6101fa6040518060400160405280600781526020017f47656172626f780000000000000000000000000000000000000000000000000081525081565b60405161020791906124a3565b60405180910390f35b61022361021e36600461253f565b610601565b6040519015158152602001610207565b6102466b204fce5e3e2502611000000081565b604051908152602001610207565b6102467f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61028361070d565b005b610223610293366004612569565b6107ee565b6102467f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6102c7601281565b60405160ff9091168152602001610207565b6007546102f99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610207565b6006546102f990610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6102f96103513660046125a5565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6102836103873660046125a5565b61098a565b6103b261039a3660046125a5565b60046020526000908152604090205463ffffffff1681565b60405163ffffffff9091168152602001610207565b6102466103d53660046125a5565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020546bffffffffffffffffffffffff1690565b61041e61041936600461253f565b610997565b6040516bffffffffffffffffffffffff9091168152602001610207565b6102466104493660046125a5565b60056020526000908152604090205481565b6101fa6040518060400160405280600481526020017f474541520000000000000000000000000000000000000000000000000000000081525081565b6102836104a53660046125a5565b610cae565b6102236104b836600461253f565b610e20565b6006546102239060ff1681565b61041e6104d83660046125a5565b610e5c565b6102836104eb3660046125d1565b610efa565b6102836104fe366004612629565b611310565b610246610511366004612693565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152602081815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b6102467fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6105c561058a3660046126c6565b600360209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b6040805163ffffffff90931683526bffffffffffffffffffffffff909116602083015201610207565b6102836105fc3660046125a5565b61187a565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561063f57506bffffffffffffffffffffffff610664565b6106618360405180606001604052806025815260200161285260259139611a15565b90505b3360008181526020818152604080832073ffffffffffffffffffffffffffffffffffffffff89168085529083529281902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff871690811790915590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a360019150505b92915050565b600654610100900473ffffffffffffffffffffffffffffffffffffffff163314610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f476561723a3a63616c6c6572206973206e6f7420746865206d616e616765720060448201526064015b60405180910390fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f795b0e16c8da9807b0a215f3749bd6dbcc49fc0472183f4e446abb7dcbd9d00790600090a1565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081815260408083203380855290835281842054825160608101909352602580845291936bffffffffffffffffffffffff909116928592610856928892919061285290830139611a15565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156108a257506bffffffffffffffffffffffff82811614155b156109725760006108cc83836040518060600160405280603d8152602001612974603d9139611a67565b73ffffffffffffffffffffffffffffffffffffffff898116600081815260208181526040808320948a168084529482529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff87169081179091559151918252939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b61097d878783611ad5565b5060019695505050505050565b6109943382611e9c565b50565b6000438210610a28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f476561723a3a6765745072696f72566f7465733a206e6f74207965742064657460448201527f65726d696e656400000000000000000000000000000000000000000000000000606482015260840161078f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205463ffffffff1680610a63576000915050610707565b73ffffffffffffffffffffffffffffffffffffffff841660009081526003602052604081208491610a95600185612735565b63ffffffff90811682526020820192909252604001600020541611610b1b5773ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812090610ae5600184612735565b63ffffffff16815260208101919091526040016000205464010000000090046bffffffffffffffffffffffff1691506107079050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020908152604080832083805290915290205463ffffffff16831015610b63576000915050610707565b600080610b71600184612735565b90505b8163ffffffff168163ffffffff161115610c565760006002610b968484612735565b610ba0919061275a565b610baa9083612735565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260036020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff1691810191909152919250871415610c2a576020015194506107079350505050565b805163ffffffff16871115610c4157819350610c4f565b610c4c600183612735565b92505b5050610b74565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260036020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b600654610100900473ffffffffffffffffffffffffffffffffffffffff163314610d34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f476561723a3a63616c6c6572206973206e6f7420746865206d616e6167657200604482015260640161078f565b73ffffffffffffffffffffffffffffffffffffffff8116610db1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5a65726f2061646472657373206973206e6f7420616c6c6f7765640000000000604482015260640161078f565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f2f834d1c8c4b956018fff5faca4d99868ae635487424d9c265c257ccbc698c6a90600090a250565b600080610e45836040518060600160405280602681526020016128a760269139611a15565b9050610e52338583611ad5565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604081205463ffffffff1680610e94576000610ef3565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812090610ec5600184612735565b63ffffffff16815260208101919091526040016000205464010000000090046bffffffffffffffffffffffff165b9392505050565b604080518082018252600781527f47656172626f780000000000000000000000000000000000000000000000000060209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f028ef9f797075f74ac647c65fde04fb0f128c2d59fd40f45732269917642fd4681840152466060820152306080808301919091528351808303909101815260a0820184528051908301207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c083015273ffffffffffffffffffffffffffffffffffffffff8a1660e08301526101008201899052610120808301899052845180840390910181526101408301909452835193909201929092207f19010000000000000000000000000000000000000000000000000000000000006101608401526101628301829052610182830181905290916000906101a201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa1580156110d8573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166111a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f476561723a3a64656c656761746542795369673a20696e76616c69642073696760448201527f6e61747572650000000000000000000000000000000000000000000000000000606482015260840161078f565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604081208054916111d7836127a4565b919050558914611269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f476561723a3a64656c656761746542795369673a20696e76616c6964206e6f6e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161078f565b874211156112f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f476561723a3a64656c656761746542795369673a207369676e6174757265206560448201527f7870697265640000000000000000000000000000000000000000000000000000606482015260840161078f565b611303818b611e9c565b505050505b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86141561134d57506bffffffffffffffffffffffff611372565b61136f8660405180606001604052806024815260200161291c60249139611a15565b90505b604080518082018252600781527f47656172626f780000000000000000000000000000000000000000000000000060209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f028ef9f797075f74ac647c65fde04fb0f128c2d59fd40f45732269917642fd4681840152466060820152306080808301919091528351808303909101815260a0909101835280519082012073ffffffffffffffffffffffffffffffffffffffff8b166000908152600590925291812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918c918c918c919086611472836127a4565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e001604051602081830303815290604052805190602001209050600082826040516020016115199291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff8b169284019290925260608301899052608083018890529092509060019060a0016020604051602081039080840390855afa1580156115a2573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f476561723a3a7065726d69743a20696e76616c6964207369676e617475726500604482015260640161078f565b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146116df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f476561723a3a7065726d69743a20756e617574686f72697a6564000000000000604482015260640161078f565b88421115611749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f476561723a3a7065726d69743a207369676e6174757265206578706972656400604482015260640161078f565b846000808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258760405161186491906bffffffffffffffffffffffff91909116815260200190565b60405180910390a3505050505050505050505050565b600654610100900473ffffffffffffffffffffffffffffffffffffffff163314611900576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f476561723a3a63616c6c6572206973206e6f7420746865206d616e6167657200604482015260640161078f565b73ffffffffffffffffffffffffffffffffffffffff811661197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5a65726f2061646472657373206973206e6f7420616c6c6f7765640000000000604482015260640161078f565b60065460405173ffffffffffffffffffffffffffffffffffffffff80841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6000816c010000000000000000000000008410611a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f91906124a3565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611ac2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f91906124a3565b50611acd83856127dd565b949350505050565b60065460ff1680611b025750600654610100900473ffffffffffffffffffffffffffffffffffffffff1633145b80611b24575060075473ffffffffffffffffffffffffffffffffffffffff1633145b611b8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f476561723a3a7472616e73666572732061726520666f7262696464656e000000604482015260640161078f565b73ffffffffffffffffffffffffffffffffffffffff8316611c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f476561723a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260448201527f616e736665722066726f6d20746865207a65726f206164647265737300000000606482015260840161078f565b73ffffffffffffffffffffffffffffffffffffffff8216611cd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f476561723a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260448201527f616e7366657220746f20746865207a65726f2061646472657373000000000000606482015260840161078f565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020908152604091829020548251606081019093526036808452611d2d936bffffffffffffffffffffffff90921692859291906129b190830139611a67565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff968716179055928616825290829020548251606081019093526030808452611dbf949190911692859290919061287790830139611f50565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff968716179055905193851684529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a373ffffffffffffffffffffffffffffffffffffffff808416600090815260026020526040808220548584168352912054611e9792918216911683611fc1565b505050565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260026020818152604080842080546001845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611f4a828483611fc1565b50505050565b600080611f5d8486612802565b9050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff1610158390611fb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f91906124a3565b50949350505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561200b57506000816bffffffffffffffffffffffff16115b15611e975773ffffffffffffffffffffffffffffffffffffffff8316156120fd5773ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604081205463ffffffff1690816120655760006120c4565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260036020526040812090612096600185612735565b63ffffffff16815260208101919091526040016000205464010000000090046bffffffffffffffffffffffff165b905060006120eb82856040518060600160405280602881526020016128cd60289139611a67565b90506120f9868484846121e2565b5050505b73ffffffffffffffffffffffffffffffffffffffff821615611e975773ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081205463ffffffff1690816121525760006121b1565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812090612183600185612735565b63ffffffff16815260208101919091526040016000205464010000000090046bffffffffffffffffffffffff165b905060006121d882856040518060600160405280602781526020016128f560279139611f50565b9050611308858484845b60006122064360405180606001604052806034815260200161294060349139612465565b905060008463ffffffff1611801561226d575073ffffffffffffffffffffffffffffffffffffffff8516600090815260036020526040812063ffffffff831691612251600188612735565b63ffffffff908116825260208201929092526040016000205416145b156123035773ffffffffffffffffffffffffffffffffffffffff8516600090815260036020526040812083916122a4600188612735565b63ffffffff168152602081019190915260400160002080546bffffffffffffffffffffffff92909216640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9092169190911790556123fe565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000908152600382528681208b8616825290915294909420925183549451909116640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009094169116179190911790556123a5846001612832565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff929092169190911790555b604080516bffffffffffffffffffffffff80861682528416602082015273ffffffffffffffffffffffffffffffffffffffff8716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b6000816401000000008410611a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f91905b600060208083528351808285015260005b818110156124d0578581018301518582016040015282016124b4565b818111156124e2576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461253a57600080fd5b919050565b6000806040838503121561255257600080fd5b61255b83612516565b946020939093013593505050565b60008060006060848603121561257e57600080fd5b61258784612516565b925061259560208501612516565b9150604084013590509250925092565b6000602082840312156125b757600080fd5b610ef382612516565b803560ff8116811461253a57600080fd5b60008060008060008060c087890312156125ea57600080fd5b6125f387612516565b9550602087013594506040870135935061260f606088016125c0565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561264457600080fd5b61264d88612516565b965061265b60208901612516565b95506040880135945060608801359350612677608089016125c0565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156126a657600080fd5b6126af83612516565b91506126bd60208401612516565b90509250929050565b600080604083850312156126d957600080fd5b6126e283612516565b9150602083013563ffffffff811681146126fb57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600063ffffffff8381169083168181101561275257612752612706565b039392505050565b600063ffffffff80841680612798577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156127d6576127d6612706565b5060010190565b60006bffffffffffffffffffffffff8381169083168181101561275257612752612706565b60006bffffffffffffffffffffffff80831681851680830382111561282957612829612706565b01949350505050565b600063ffffffff8083168185168083038211156128295761282961270656fe476561723a3a617070726f76653a20616d6f756e7420657863656564732039362062697473476561723a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773476561723a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473476561723a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773476561723a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773476561723a3a7065726d69743a20616d6f756e7420657863656564732039362062697473476561723a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473476561723a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365476561723a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365a26469706673582212201b84fd7789a35c022f692420863210a30e82d2405659f5a28275d433fa53467f64736f6c634300080a003360806040526016805460ff1916905534801561001a57600080fd5b506040516110a73803806110a7833981016040819052610039916100b6565b600080546001600160a01b038085166001600160a01b0319928316179092556003805492841692909116919091179055610080600a6b033b2e3c9fd0803ce80000006100e9565b60075550506b033b2e3c9fd0803ce800000060155561010b565b80516001600160a01b03811681146100b157600080fd5b919050565b600080604083850312156100c957600080fd5b6100d28361009a565b91506100e06020840161009a565b90509250929050565b60008261010657634e487b7160e01b600052601260045260246000fd5b500490565b610f8d8061011a6000396000f3fe608060405234801561001057600080fd5b50600436106102e95760003560e01c806367c99d5811610191578063c5f956af116100e3578063dbcb313b11610097578063f11a648711610071578063f11a648714610320578063f3fdb15a146105f1578063fe14112d1461061157600080fd5b8063dbcb313b146105d6578063e941fa78146105df578063ef8d9603146105e857600080fd5b8063cb3905e1116100c8578063cb3905e1146105c4578063cf33d95514610320578063d0efe753146105cd57600080fd5b8063c5f956af14610588578063ca9505e4146105a857600080fd5b80639aa5d46211610145578063b6ac642a1161011f578063b6ac642a14610567578063bb04b19314610567578063bf28068b1461057557600080fd5b80639aa5d46214610544578063a4e8273e14610557578063b3554a0a1461055e57600080fd5b8063788c6bfe11610176578063788c6bfe146104ef5780638456cb591461050157806396df5dc01461053157600080fd5b806367c99d58146104de57806374375359146104e757600080fd5b806336dda7d51161024a5780634d778ad1116101fe57806354fd4d50116101d857806354fd4d50146104c05780635c975abb146104c8578063609ae317146104d557600080fd5b80634d778ad114610491578063532fe502146104a45780635427c938146104ad57600080fd5b80633f4ba83a1161022f5780633f4ba83a1461045257806345d31f9d1461047f5780634c19386c1461048857600080fd5b806336dda7d51461040f5780633e163df01461042f57600080fd5b80632495a599116102a157806329f3d3b61161028657806329f3d3b6146103b35780632a3354c9146103bc5780632e97ca21146103dc57600080fd5b80632495a599146103735780632954018c1461039357600080fd5b8063078c4781116102d2578063078c4781146103205780630fce70fb146103335780631e16e4fc1461033b57600080fd5b8063030dbb04146102ee57806305fe138b1461030a575b600080fd5b6102f760105481565b6040519081526020015b60405180910390f35b6102f7610318366004610ce8565b600092915050565b61033161032e366004610d14565b50565b005b6015546102f7565b61034e610349366004610d2f565b610618565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610301565b60035461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b60005461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b6102f760095481565b600a5461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b6103ff6103ea366004610d14565b60066020526000908152604090205460ff1681565b6040519015158152602001610301565b60055461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b6103ff61043d366004610d14565b60146020526000908152604090205460ff1681565b610331601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6102f760075481565b6102f760015481565b6102f761049f366004610d2f565b61064f565b6102f760115481565b6102f76104bb366004610d2f565b61066d565b6102f7600181565b6016546103ff9060ff1681565b6102f760085481565b6102f7600d5481565b6102f7610685565b6b033b2e3c9fd0803ce80000006102f7565b610331601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b61033161053f366004610d2f565b601555565b610331610552366004610d48565b505050565b60016102f7565b6102f7600e5481565b61033161032e366004610d2f565b610331610583366004610ce8565b61071d565b60135461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b6103316105b6366004610d7d565b600b92909255600c55600d55565b6102f7600c5481565b6102f7600b5481565b6102f760155481565b6102f7600f5481565b6102f760025481565b60125461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b60006102f7565b6004818154811061062857600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6000610667826b033b2e3c9fd0803ce800000061077a565b92915050565b6000610667826b033b2e3c9fd0803ce80000006108e9565b6003546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190610da9565b905090565b6009829055600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117909155600354610776911682846109fe565b5050565b60408051808201909152600281527f4d330000000000000000000000000000000000000000000000000000000000006020820152600090826107f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e99190610df2565b60405180910390fd5b506000610800600284610e72565b90506b033b2e3c9fd0803ce8000000610839827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ead565b6108439190610e72565b8411156040518060400160405280600281526020017f4d31000000000000000000000000000000000000000000000000000000000000815250906108b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e99190610df2565b5082816108cd6b033b2e3c9fd0803ce800000087610ec4565b6108d79190610f01565b6108e19190610e72565b949350505050565b60008215806108f6575081155b1561090357506000610667565b8161091b60026b033b2e3c9fd0803ce8000000610e72565b610945907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ead565b61094f9190610e72565b8311156040518060400160405280600281526020017f4d31000000000000000000000000000000000000000000000000000000000000815250906109c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e99190610df2565b506b033b2e3c9fd0803ce80000006109d9600282610e72565b6109e38486610ec4565b6109ed9190610f01565b6109f79190610e72565b9392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261055292869291600091610ac9918516908490610b73565b8051909150156105525780806020019051810190610ae79190610f19565b610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107e9565b60606108e1848460008585843b610be6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107e9565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610c0f9190610f3b565b60006040518083038185875af1925050503d8060008114610c4c576040519150601f19603f3d011682016040523d82523d6000602084013e610c51565b606091505b5091509150610c61828286610c6c565b979650505050505050565b60608315610c7b5750816109f7565b825115610c8b5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e99190610df2565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ce357600080fd5b919050565b60008060408385031215610cfb57600080fd5b82359150610d0b60208401610cbf565b90509250929050565b600060208284031215610d2657600080fd5b6109f782610cbf565b600060208284031215610d4157600080fd5b5035919050565b600080600060608486031215610d5d57600080fd5b83359250610d6d60208501610cbf565b9150604084013590509250925092565b600080600060608486031215610d9257600080fd5b505081359360208301359350604090920135919050565b600060208284031215610dbb57600080fd5b5051919050565b60005b83811015610ddd578181015183820152602001610dc5565b83811115610dec576000848401525b50505050565b6020815260008251806020840152610e11816040850160208701610dc2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082610ea8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015610ebf57610ebf610e43565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610efc57610efc610e43565b500290565b60008219821115610f1457610f14610e43565b500190565b600060208284031215610f2b57600080fd5b815180151581146109f757600080fd5b60008251610f4d818460208701610dc2565b919091019291505056fea26469706673582212204edb887d94928b3914f60ab48df0182da9eb30ddbb7021b164cc728b60a655d564736f6c634300080a00336101606040526000805462ff00001916620c00001790553480156200002357600080fd5b50604051620058e8380380620058e8833981016040819052620000469162000537565b806001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000085573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ab919062000537565b6000805460ff191690556001600160a01b038116620000dd57604051635919af9760e11b815260040160405180910390fd5b806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200011c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000142919062000537565b6001600160a01b03166080816001600160a01b031681525050506000816001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c3919062000537565b6001600160a01b03831661010081905260e081905260408051632495a59960e01b81529051929350600092632495a599916004808201926020929091908290030181865afa1580156200021a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000240919062000537565b6001600160a01b03811660c05290506200025a8162000472565b816001600160a01b0316634c252f916040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000537565b6001600160a01b0316610120816001600160a01b031681525050816001600160a01b03166377532ed96040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000318573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033e919062000537565b6001600160a01b0316610140816001600160a01b031681525050816001600160a01b031663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000397573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bd919062000537565b6001600001600a6101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316639068a8686040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044b919062000537565b6001600160a01b031660a0525050600380546001600160a01b031916331790555062000588565b6001600160a01b03811660009081526006602052604090205415620004aa57604051632e5a5c7760e01b815260040160405180910390fd5b61010060055410620004cf57604051631cbbe18560e01b815260040160405180910390fd5b600580546001600160a01b0383166000818152600660209081526040808320600190951b948590558483526004909152812091909155825491929062000515836200055e565b91905055505050565b6001600160a01b03811681146200053457600080fd5b50565b6000602082840312156200054a57600080fd5b815162000557816200051e565b9392505050565b60006000198214156200058157634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c05160e051610100516101205161014051615248620006a0600039600081816107e20152818161371001526137c501526000818161052f01526136780152600081816103d301528181610e5701528181610ebb015281816124ff0152818161265a01528181612aa101528181612b8c01528181612c4e01528181612d0d0152613b8f015260006105a401526000818161062701528181610d2201528181610db301528181610e0001528181610e3601528181610f3f0152818161203a01528181612b6b015281816130ee015281816134dc015281816135a90152613fe601526000818161081c01528181610fe101526124c20152600081816107a80152818161118401526122cb01526152486000f3fe608060405234801561001057600080fd5b50600436106103415760003560e01c8063830aa745116101bd578063a70bc542116100f9578063e75538c7116100a2578063f9aa028a1161007c578063f9aa028a1461089d578063fdd57645146108bd578063fe47cde7146108f3578063ff6875431461091357600080fd5b8063e75538c714610864578063e958b70414610877578063f67c5bd01461088a57600080fd5b8063db7ceb80116100d3578063db7ceb8014610817578063dc2b21c11461083e578063e1998cf91461085157600080fd5b8063a70bc542146107ca578063c5e10eef146107dd578063d48bfca71461080457600080fd5b806394cf073a116101665780639f5f86ae116101405780639f5f86ae146107745780639fd12b7714610787578063a366f49614610790578063a50cf2c8146107a357600080fd5b806394cf073a146106f557806395373018146107085780639af1d35a1461071b57600080fd5b80638991b2f1116101975780638991b2f1146106af5780638fe3f93f146106cf578063944ac59f146106e257600080fd5b8063830aa7451461066f5780638345f26e146106825780638456cb59146106a757600080fd5b8063458936f51161028c578063570a7af2116102355780636ce4074a1161020f5780636ce4074a146105ef5780636e98e5e41461060f5780636f307dc314610622578063783274381461064957600080fd5b8063570a7af21461059f5780635c975abb146105c6578063654a9eda146105dc57600080fd5b80635063524a116102665780635063524a1461055157806351e3f1601461058457806354fd4d501461059757600080fd5b8063458936f51461050e57806346fb371d146105175780634f0e0ef31461052a57600080fd5b80632630c12f116102ee5780633192195c116102c85780633192195c146104be5780633e8297ca146104e65780633f4ba83a1461050657600080fd5b80632630c12f1461045857806329df0b93146104845780632f7a18811461049757600080fd5b806316f0115b1161031f57806316f0115b146103ce578063172c48c7146103f55780632362a2d81461043757600080fd5b8063055ee9b5146103465780630d8f9cee146103a657806311ca4fc2146103bb575b600080fd5b61037c610354366004614a87565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6103b96103b4366004614aa4565b610949565b005b6103b96103c9366004614aa4565b610a76565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b610408610403366004614add565b610b4e565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835261ffff90911660208301520161039d565b61044a610445366004614b13565b610b66565b60405190815260200161039d565b6001546a0100000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1661037c565b6103b9610492366004614a87565b6110be565b60005461037c906301000000900473ffffffffffffffffffffffffffffffffffffffff1681565b6104d16104cc366004614a87565b611122565b6040805192835260208301919091520161039d565b61044a6104f4366004614a87565b60096020526000908152604090205481565b6103b9611156565b61044a60055481565b6103b9610525366004614b95565b611244565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b61056461055f366004614be6565b61149b565b60408051948552602085019390935291830152606082015260800161039d565b6103b9610592366004614aa4565b611602565b61044a600281565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b60005460ff16604051901515815260200161039d565b6103b96105ea366004614c21565b611703565b6106026105fd366004614d40565b611bbb565b60405161039d9190614e5b565b6103b961061d366004614aa4565b611e8e565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b61065c610657366004614a87565b612036565b60405161ffff909116815260200161039d565b6103b961067d366004614b95565b61210f565b6000546106959062010000900460ff1681565b60405160ff909116815260200161039d565b6103b961229d565b61044a6106bd366004614a87565b60086020526000908152604090205481565b61037c6106dd366004614e6e565b612389565b6103b96106f0366004614ea5565b612718565b61044a610703366004614f0a565b612845565b6103b9610716366004614a87565b612e5a565b6001546040805161ffff808416825262010000840481166020830152640100000000840481169282019290925266010000000000008304821660608201526801000000000000000090920416608082015260a00161039d565b6103b9610782366004614a87565b612f85565b61044a60075481565b6103b961079e366004614add565b613045565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b6103b96107d8366004614f4c565b61309b565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b6103b9610812366004614a87565b613221565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b6103b961084c366004614f81565b61327b565b6103b961085f366004614aa4565b613306565b610408610872366004614add565b6134c9565b61037c610885366004614a87565b613541565b61044a610898366004614a87565b6135a5565b60035461037c9073ffffffffffffffffffffffffffffffffffffffff1681565b61037c6108cb366004614a87565b600b6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b600c5461037c9073ffffffffffffffffffffffffffffffffffffffff1681565b61037c610921366004614a87565b600a6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff1615801561099b57506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b156109d2576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1615610a14576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610a4a828261362e565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b60035473ffffffffffffffffffffffffffffffffffffffff163314610ac7576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff9384166301000000027fffffffffffffffffff0000000000000000000000000000000000000000ffffff90911617905560018054919092166a0100000000000000000000027fffff0000000000000000000000000000000000000000ffffffffffffffffffff909116179055565b600080610b5d6001841b6134c9565b91509150915091565b6000805460ff1615610bd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b600054610100900460ff1615610c1b576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff163314610ca0576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cab89613541565b90506000806000806000610cbe86611122565b9094509050610ccf8c8e868461149b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152939b5093985090955093506000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8f9190614fa4565b9050610d9b8887614fec565b610da6906001614fec565b811115610de657610de1877f00000000000000000000000000000000000000000000000000000000000000008d60018c8b870303038d61366e565b610e30565b610e3073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168d8960018a8d01869003016138c0565b610e7e877f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089600061366e565b6040517fca9505e40000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ca9505e490606401600060405180830381600087803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b50505050505050506001841115610f6757610f67837f00000000000000000000000000000000000000000000000000000000000000008d87600061366e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040902054861916610f9c8489888461395b565b6040517f89b77b3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527f000000000000000000000000000000000000000000000000000000000000000016906389b77b3e90602401600060405180830381600087803b15801561102557600080fd5b505af1158015611039573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff909c16600090815260026020526040812080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550929a9950505050505050505050565b6000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314611116576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61111f81613a35565b50565b60008060008061113185613aa6565b91955092509050816111438286615004565b61114d9190615041565b92505050915091565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa1580156111e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611204919061507c565b61123a576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611242613c24565b565b60005460ff16156112b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff16156112f3576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100178155338152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff9081169084161480159061137457506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b80156113985750600c5473ffffffffffffffffffffffffffffffffffffffff163314155b806113b7575073ffffffffffffffffffffffffffffffffffffffff8316155b156113ee576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113f7826135a5565b61142d576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061143885613541565b9050611448838583856000613d05565b61146c5761145b83858360006001613d05565b5061146a838583856001613d05565b505b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b6001546000908190819081906127109061ffff166114b98888615099565b6114c39190615004565b6114cd9190615041565b6114d79086614fec565b935060018760028111156114ed576114ed6150b0565b1415611587576001546000906127109061151390640100000000900461ffff168b615004565b61151d9190615041565b6001549091506127109061153b9062010000900461ffff168b615004565b6115459190615041565b61154f9086614fec565b94508481111561156657600185820303935061156a565b8094505b85811061157b578585039250611581565b84860391505b506115f7565b600287600281111561159b5761159b6150b0565b14156115f157600154600090612710906115c59068010000000000000000900461ffff168b615004565b6115cf9190615041565b6001549091506127109061153b906601000000000000900461ffff168b615004565b84840391505b945094509450949050565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff1615801561165457506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b1561168b576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff16156116cd576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610a4a8282613ea6565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff1615801561175557506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b1561178c576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff16156117ce576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790556118048584613ea6565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600091908616906370a0823190602401602060405180830381865afa158015611874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118989190614fa4565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918616906370a0823190602401602060405180830381865afa15801561190a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192e9190614fa4565b60015490915060009081906a0100000000000000000000900473ffffffffffffffffffffffffffffffffffffffff16635cecbd0e61196c8689615099565b8a6119778988615099565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935273ffffffffffffffffffffffffffffffffffffffff918216602484015260448301528a1660648201526084016040805180830381865afa1580156119f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1791906150df565b9150915060018411611a2d57611a2d898961362e565b611a3687612036565b611a449061ffff1682615004565b9050611a4f88612036565b611a5d9061ffff1683615004565b9150818110611a7857611a6f89613a35565b5050505061146c565b73ffffffffffffffffffffffffffffffffffffffff891660009081526009602052604081205483611ab56b033b2e3c9fd0803ce800000085615004565b611abf9190615041565b611ad5906b033b2e3c9fd0803ce8000000615099565b611adf9190614fec565b60015490915061271090611b0a906b033b2e3c9fd0803ce80000009062010000900461ffff16615004565b611b149190615041565b8111611b555773ffffffffffffffffffffffffffffffffffffffff8a166000908152600960205260409020819055611b4b8a613a35565b505050505061146c565b611b5e8a613f56565b50505073ffffffffffffffffffffffffffffffffffffffff871660009081526009602052604090206001905550505050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b6060611bc960005460ff1690565b15611c30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff1615611c72576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100178155338152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff908116908416141580611ce7575073ffffffffffffffffffffffffffffffffffffffff8316155b15611d3d57600c5473ffffffffffffffffffffffffffffffffffffffff163314611d3d576040517f5d2e3a7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d4885613541565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167faed1eb34af6acd8c1e3911fb2ebb875a66324b03957886bd002227b17f52ab0360405160405180910390a36040517f1cff79cd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690631cff79cd90611df89087908790600401615103565b6000604051808303816000875af1158015611e17573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611e5d9190810190615132565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905595945050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314611edf576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615611f4f5773ffffffffffffffffffffffffffffffffffffffff8281166000908152600a6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790555b73ffffffffffffffffffffffffffffffffffffffff811615611fbf5773ffffffffffffffffffffffffffffffffffffffff8181166000908152600b6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169184169190911790555b73ffffffffffffffffffffffffffffffffffffffff811673cccccccccccccccccccccccccccccccccccccccc141561203257600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790555b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120ba5750506001547e01000000000000000000000000000000000000000000000000000000000000900461ffff1690565b60006120c5836135a5565b9050806120fe576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612107816134c9565b949350505050565b60005460ff161561217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff16156121be576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff163314612243576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61224d8383613ea6565b61226f73ffffffffffffffffffffffffffffffffffffffff83168585846138c0565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa158015612327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234b919061507c565b612381576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112426142d4565b6000805460ff16156123f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff1615612439576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff1633146124be576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166321d18456857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612568573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258c9190614fa4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925260248201526044016020604051808303816000875af11580156125e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260b91906151a0565b6040517fbf28068b0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff80831660248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063bf28068b90604401600060405180830381600087803b1580156126a057600080fd5b505af11580156126b4573d6000803e3d6000fd5b505050506126c28382614394565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081206001905580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690559392505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314612769576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805461ffff92831668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff9484166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff96851664010000000002969096167fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff97851662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090931694909816939093171794909416949094179190911716919091179055565b6000805460ff16156128b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff16156128f5576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff16331461297a576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600061298887613aa6565b925092509250846129a25761299d8684615099565b6129ac565b6129ac8684614fec565b935060008515612b045769021e19e0c9bab24000008510612a15576129d583603689901c615004565b6129e3603686901c84615004565b6129ed9190614fec565b603686901c6129fc8585615004565b612a069190615004565b612a109190615041565b612a52565b612a1f8388615004565b612a298584615004565b612a339190614fec565b85612a3e8585615004565b612a489190615004565b612a529190615041565b6040517fbf28068b0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff8a811660248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063bf28068b90604401600060405180830381600087803b158015612ae757600080fd5b505af1158015612afb573d6000803e3d6000fd5b50505050612d9f565b60008484612b128583615004565b612b1c9190615041565b612b269190615099565b60015490915060009061271090612b419061ffff1684615004565b612b4b9190615041565b905073ffffffffffffffffffffffffffffffffffffffff8a1663d1660f997f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084612bb6878f614fec565b612bc09190614fec565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b158015612c3457600080fd5b505af1158015612c48573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca9505e4838b612c949190614fec565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260048101919091526024810184905260006044820152606401600060405180830381600087803b158015612cf357600080fd5b505af1158015612d07573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9a9190614fa4565b925050505b6040517f16128211000000000000000000000000000000000000000000000000000000008152600481018690526024810182905273ffffffffffffffffffffffffffffffffffffffff891690631612821190604401600060405180830381600087803b158015612e0e57600080fd5b505af1158015612e22573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055509498975050505050505050565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff16158015612eac57506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b15612ee3576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1615612f25576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055612f5a81613f56565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b60035473ffffffffffffffffffffffffffffffffffffffff163314612fd6576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ff62005acebe9b616aefb5f248b48f5e89f28437b27d1eebc0b2d911209f297af90600090a250565b60035473ffffffffffffffffffffffffffffffffffffffff163314613096576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600755565b60035473ffffffffffffffffffffffffffffffffffffffff1633146130ec576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613193576001805461ffff83167e01000000000000000000000000000000000000000000000000000000000000027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790555050565b600061319e836135a5565b9050806131d7576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff1675ffff000000000000000000000000000000000000000060a084901b161790555050565b60035473ffffffffffffffffffffffffffffffffffffffff163314613272576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61111f81614467565b60035473ffffffffffffffffffffffffffffffffffffffff1633146132cc576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805460ff90921662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b60005460ff1615613373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff16156133b5576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff16331461343a576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061344583613541565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055905061349c8282614394565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b60008082600114156135275750506001547f0000000000000000000000000000000000000000000000000000000000000000927e0100000000000000000000000000000000000000000000000000000000000090910461ffff169150565b50506000908152600460205260409020549060a082901c90565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526002602052604090205416806135a0576040517fb5ba4c4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146136255773ffffffffffffffffffffffffffffffffffffffff8216600090815260066020526040902054613628565b60015b92915050565b6000613639826135a5565b73ffffffffffffffffffffffffffffffffffffffff909316600090815260086020526040902080549319939093169092555050565b8080156136c657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15613828576040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526044820184905286169063d1660f9990606401600060405180830381600087803b15801561376357600080fd5b505af1158015613777573d6000803e3d6000fd5b50506040517f5869dba800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690527f0000000000000000000000000000000000000000000000000000000000000000169250635869dba89150604401600060405180830381600087803b15801561380b57600080fd5b505af115801561381f573d6000803e3d6000fd5b505050506138b9565b6040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301526044820184905286169063d1660f9990606401600060405180830381600087803b1580156138a057600080fd5b505af11580156138b4573d6000803e3d6000fd5b505050505b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261395590859061455b565b50505050565b60025b8181116138b95781811615613a2d576000613978826134c9565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918316906370a0823190602401602060405180830381865afa1580156139eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a0f9190614fa4565b90506002811115613a2a57613a2a878388600185038961366e565b50505b60011b61395e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081205490613a6582614667565b60005490915062010000900460ff16811115613aa1576000613a86836146a7565b613a91906001614fec565b905061395584848460008561470b565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1a9190614fa4565b92508373ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8b9190614fa4565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c1c9190614fa4565b929491935050565b60005460ff16613c90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610bd0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152604480830186905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291517f1cff79cd000000000000000000000000000000000000000000000000000000008152600092861691631cff79cd91613dc6918a91600401615103565b6000604051808303816000875af1925050508015613e2457506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613e219190810190615132565b60015b613e2d57613e61565b80511580613e50575080806020019051810190613e4a919061507c565b15156001145b15613e5f576001915050613e9d565b505b8115613e99576040517f76e3e29c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060005b95945050505050565b6000613eb1826135a5565b9050801580613ec35750600754811615155b15613efa576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020548116613aa15773ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020805482179055505050565b60015473ffffffffffffffffffffffffffffffffffffffff8281166000908152600860205260408120546a010000000000000000000090930490911691908080613f9f86611122565b6040517ff9a650300000000000000000000000000000000000000000000000000000000081526127108202600482015273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166024830152919350908716915063f9a6503090604401602060405180830381865afa15801561403a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061405e9190614fa4565b9250614069846146a7565b6001019150506000806000805b848110156142a157801561408f5760018186031b614092565b60015b935086841615614299576000806140a8866134c9565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e811660048301529294509092506000918416906370a0823190602401602060405180830381865afa15801561411d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141419190614fa4565b9050600181111561428c576040517ff9a650300000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff848116602483015261ffff841691908d169063f9a6503090604401602060405180830381865afa1580156141c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ea9190614fa4565b6141f49190615004565b6141fe9087614fec565b95508886106142875760006142128b614667565b60005490915062010000900460ff16811115614249576142448d8c836001891561423e57898e0361470b565b8d61470b565b614278565b85156142785773ffffffffffffffffffffffffffffffffffffffff8d1660009081526008602052604090208b90555b50505050505050505050505050565b614295565b98861898600194505b5050505b600101614076565b506040517f532e7bb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005460ff1615614341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613cdb3390565b73ffffffffffffffffffffffffffffffffffffffff821615806143dd575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600260205260409020541615155b15614414576040517f9e59609e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260066020526040902054156144c4576040517f2e5a5c7700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61010060055410614501576040517f1cbbe18500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005805473ffffffffffffffffffffffffffffffffffffffff83166000818152600660209081526040808320600190951b9485905584835260049091528120919091558254919290614552836151bd565b91905055505050565b60006145bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166148799092919063ffffffff16565b805190915015613aa157808060200190518101906145db919061507c565b613aa1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610bd0565b60008060005b6101008110156146a0576001811b91508382161561468c578260010192505b838210614698576146a0565b60010161466d565b5050919050565b600081600114156146ba57506000919050565b61010060015b60016146cc8284614fec565b901c92506001831b848116158015906146e75750600185851c145b156146f257506146a0565b84811061470157839250614705565b8391505b506146c0565b815b81811015614846576001811b8581161561483d57600061472c826134c9565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301529192506000918316906370a0823190602401602060405180830381865afa15801561479f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147c39190614fa4565b90506001811161483a57600054978318977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9097019660ff6201000090910416871161483a5750505073ffffffffffffffffffffffffffffffffffffffff86166000908152600860205260409020859055506138b9565b50505b5060010161470d565b506040517f53275fcb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606148888484600085614892565b90505b9392505050565b606082471015614924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610bd0565b843b61498c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bd0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516149b591906151f6565b60006040518083038185875af1925050503d80600081146149f2576040519150601f19603f3d011682016040523d82523d6000602084013e6149f7565b606091505b5091509150614a07828286614a12565b979650505050505050565b60608315614a2157508161488b565b825115614a315782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd09190614e5b565b73ffffffffffffffffffffffffffffffffffffffff8116811461111f57600080fd5b600060208284031215614a9957600080fd5b813561488b81614a65565b60008060408385031215614ab757600080fd5b8235614ac281614a65565b91506020830135614ad281614a65565b809150509250929050565b600060208284031215614aef57600080fd5b5035919050565b8035600381106135a057600080fd5b801515811461111f57600080fd5b600080600080600080600060e0888a031215614b2e57600080fd5b8735614b3981614a65565b9650614b4760208901614af6565b9550604088013594506060880135614b5e81614a65565b93506080880135614b6e81614a65565b925060a0880135915060c0880135614b8581614b05565b8091505092959891949750929550565b60008060008060808587031215614bab57600080fd5b8435614bb681614a65565b93506020850135614bc681614a65565b92506040850135614bd681614a65565b9396929550929360600135925050565b60008060008060808587031215614bfc57600080fd5b84359350614c0c60208601614af6565b93969395505050506040820135916060013590565b600080600080600060a08688031215614c3957600080fd5b8535614c4481614a65565b94506020860135614c5481614a65565b93506040860135614c6481614a65565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614cf257614cf2614c7c565b604052919050565b600067ffffffffffffffff821115614d1457614d14614c7c565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600080600060608486031215614d5557600080fd5b8335614d6081614a65565b92506020840135614d7081614a65565b9150604084013567ffffffffffffffff811115614d8c57600080fd5b8401601f81018613614d9d57600080fd5b8035614db0614dab82614cfa565b614cab565b818152876020838501011115614dc557600080fd5b816020840160208301376000602083830101528093505050509250925092565b60005b83811015614e00578181015183820152602001614de8565b838111156139555750506000910152565b60008151808452614e29816020860160208601614de5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061488b6020830184614e11565b60008060408385031215614e8157600080fd5b823591506020830135614ad281614a65565b803561ffff811681146135a057600080fd5b600080600080600060a08688031215614ebd57600080fd5b614ec686614e93565b9450614ed460208701614e93565b9350614ee260408701614e93565b9250614ef060608701614e93565b9150614efe60808701614e93565b90509295509295909350565b600080600060608486031215614f1f57600080fd5b8335614f2a81614a65565b9250602084013591506040840135614f4181614b05565b809150509250925092565b60008060408385031215614f5f57600080fd5b8235614f6a81614a65565b9150614f7860208401614e93565b90509250929050565b600060208284031215614f9357600080fd5b813560ff8116811461488b57600080fd5b600060208284031215614fb657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614fff57614fff614fbd565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561503c5761503c614fbd565b500290565b600082615077577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561508e57600080fd5b815161488b81614b05565b6000828210156150ab576150ab614fbd565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600080604083850312156150f257600080fd5b505080516020909101519092909150565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006148886040830184614e11565b60006020828403121561514457600080fd5b815167ffffffffffffffff81111561515b57600080fd5b8201601f8101841361516c57600080fd5b805161517a614dab82614cfa565b81815285602083850101111561518f57600080fd5b613e9d826020830160208601614de5565b6000602082840312156151b257600080fd5b815161488b81614a65565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156151ef576151ef614fbd565b5060010190565b60008251615208818460208701614de5565b919091019291505056fea26469706673582212209d39bb9d4972b515acdad1ffb757acd15e103ca6ee762f88a6382b36243734ba64736f6c634300080a00336101606040526000805462ff00001916620c00001790553480156200002357600080fd5b5060405162005c8438038062005c8483398101604081905262000046916200053a565b80806001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000086573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ac91906200053a565b6000805460ff191690556001600160a01b038116620000de57604051635919af9760e11b815260040160405180910390fd5b806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200011d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014391906200053a565b6001600160a01b03166080816001600160a01b031681525050506000816001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c491906200053a565b6001600160a01b03831661010081905260e081905260408051632495a59960e01b81529051929350600092632495a599916004808201926020929091908290030181865afa1580156200021b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024191906200053a565b6001600160a01b03811660c05290506200025b8162000475565b816001600160a01b0316634c252f916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c091906200053a565b6001600160a01b0316610120816001600160a01b031681525050816001600160a01b03166377532ed96040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000319573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033f91906200053a565b6001600160a01b0316610140816001600160a01b031681525050816001600160a01b031663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000398573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003be91906200053a565b6001600001600a6101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316639068a8686040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000426573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044c91906200053a565b6001600160a01b031660a0525050600380546001600160a01b03191633179055506200058b9050565b6001600160a01b03811660009081526006602052604090205415620004ad57604051632e5a5c7760e01b815260040160405180910390fd5b61010060055410620004d257604051631cbbe18560e01b815260040160405180910390fd5b600580546001600160a01b0383166000818152600660209081526040808320600190951b9485905584835260049091528120919091558254919290620005188362000561565b91905055505050565b6001600160a01b03811681146200053757600080fd5b50565b6000602082840312156200054d57600080fd5b81516200055a8162000521565b9392505050565b60006000198214156200058457634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c05160e0516101005161012051610140516155e1620006a3600039600081816109040152818161397e0152613a330152600081816105e001526138e601526000818161043e01528181610fda0152818161103e01528181612680015281816127db01528181612c2201528181612d0d01528181612dcf01528181612e8e0152613df6015260006106470152600081816106ca01528181610ea501528181610f3601528181610f8301528181610fb9015281816110c2015281816121bb01528181612cec015281816132800152818161374b01528181613818015261424d01526000818161095301528181611164015261264301526000818161084b01528181611307015261244c01526155e16000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c8063830aa745116101e9578063b5b12cd71161010f578063e1998cf9116100ad578063f9aa028a1161007c578063f9aa028a146109d4578063fdd57645146109f4578063fe47cde714610a2a578063ff68754314610a4a57600080fd5b8063e1998cf914610988578063e75538c71461099b578063e958b704146109ae578063f67c5bd0146109c157600080fd5b8063ced342b5116100e9578063ced342b514610926578063d48bfca71461093b578063db7ceb801461094e578063dc2b21c11461097557600080fd5b8063b5b12cd714610893578063b7ac50c6146108c1578063c5e10eef146108ff57600080fd5b80639537301811610187578063a366f49611610156578063a366f49614610833578063a50cf2c814610846578063a64bec9e1461086d578063a70bc5421461088057600080fd5b806395373018146107ab5780639af1d35a146107be5780639f5f86ae146108175780639fd12b771461082a57600080fd5b80638991b2f1116101c35780638991b2f1146107525780638fe3f93f14610772578063944ac59f1461078557806394cf073a1461079857600080fd5b8063830aa745146107125780638345f26e146107255780638456cb591461074a57600080fd5b80633f4ba83a116102ce57806355aabafd1161026c5780636ce4074a1161023b5780636ce4074a146106925780636e98e5e4146106b25780636f307dc3146106c557806378327438146106ec57600080fd5b806355aabafd14610630578063570a7af2146106425780635c975abb14610669578063654a9eda1461067f57600080fd5b80634f0e0ef3116102a85780634f0e0ef3146105db5780635063524a1461060257806351e3f1601461061557806354fd4d501461062857600080fd5b80633f4ba83a146105b7578063458936f5146105bf57806346fb371d146105c857600080fd5b806322995f5d1161033b57806329df0b931161031557806329df0b93146105355780632f7a1881146105485780633192195c1461056f5780633e8297ca1461059757600080fd5b806322995f5d146104d55780632362a2d8146104e85780632630c12f1461050957600080fd5b806311ca4fc21161037757806311ca4fc21461042657806316f0115b14610439578063172c48c7146104605780631b0c8234146104a257600080fd5b8063055ee9b51461039e5780630d8f9cee146103fe5780630d92632d14610413575b600080fd5b6103d46103ac366004614cee565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61041161040c366004614d0b565b610a80565b005b610411610421366004614d52565b610bad565b610411610434366004614d0b565b610bc1565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b61047361046e366004614dba565b610c99565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835261ffff9091166020830152016103f5565b6104b56104b0366004614de2565b610cb1565b6040805194855260208501939093529183015260608201526080016103f5565b6104116104e3366004614e1d565b610cd7565b6104fb6104f6366004614e6e565b610ce9565b6040519081526020016103f5565b6001546a0100000000000000000000900473ffffffffffffffffffffffffffffffffffffffff166103d4565b610411610543366004614cee565b611241565b6000546103d4906301000000900473ffffffffffffffffffffffffffffffffffffffff1681565b61058261057d366004614cee565b6112a5565b604080519283526020830191909152016103f5565b6104fb6105a5366004614cee565b60096020526000908152604090205481565b6104116112d9565b6104fb60055481565b6104116105d6366004614ef0565b6113c7565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b6104b5610610366004614de2565b61161e565b610411610623366004614d0b565b611783565b6104fb600281565b6104fb61063e366004614dba565b5490565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60005460ff1660405190151581526020016103f5565b61041161068d366004614f31565b611884565b6106a56106a0366004615050565b611d3c565b6040516103f5919061516b565b6104116106c0366004614d0b565b61200f565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b6106ff6106fa366004614cee565b6121b7565b60405161ffff90911681526020016103f5565b610411610720366004614ef0565b612290565b6000546107389062010000900460ff1681565b60405160ff90911681526020016103f5565b61041161241e565b6104fb610760366004614cee565b60086020526000908152604090205481565b6103d461078036600461517e565b61250a565b6104116107933660046151b5565b612899565b6104fb6107a636600461521a565b6129c6565b6104116107b9366004614cee565b612fdb565b6001546040805161ffff808416825262010000840481166020830152640100000000840481169282019290925266010000000000008304821660608201526801000000000000000090920416608082015260a0016103f5565b610411610825366004614cee565b613106565b6104fb60075481565b610411610841366004614dba565b6131c6565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b6104fb61087b366004614dba565b61321c565b61041161088e36600461525c565b61322d565b6108a66108a1366004614cee565b6133b3565b604080519384526020840192909252908201526060016103f5565b6104116108cf36600461525c565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260096020526040902061ffff9091169055565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b61092e6133ce565b6040516103f59190615291565b610411610949366004614cee565b613490565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b6104116109833660046152eb565b6134ea565b610411610996366004614d0b565b613575565b6104736109a9366004614dba565b613738565b6103d46109bc366004614cee565b6137b0565b6104fb6109cf366004614cee565b613814565b6003546103d49073ffffffffffffffffffffffffffffffffffffffff1681565b6103d4610a02366004614cee565b600b6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b600c546103d49073ffffffffffffffffffffffffffffffffffffffff1681565b6103d4610a58366004614cee565b600a6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff16158015610ad257506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b15610b09576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1615610b4b576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610b81828261389c565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b610bba85858585856138dc565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610c12576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff9384166301000000027fffffffffffffffffff0000000000000000000000000000000000000000ffffff90911617905560018054919092166a0100000000000000000000027fffff0000000000000000000000000000000000000000ffffffffffffffffffff909116179055565b600080610ca86001841b613738565b91509150915091565b600080600080610cc38888888861161e565b93509350935093505b945094509450949050565b610ce384848484613b2d565b50505050565b6000805460ff1615610d5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b600054610100900460ff1615610d9e576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff163314610e23576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e2e896137b0565b90506000806000806000610e41866112a5565b9094509050610e528c8e868461161e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152939b5093985090955093506000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f12919061530e565b9050610f1e8887615356565b610f29906001615356565b811115610f6957610f64877f00000000000000000000000000000000000000000000000000000000000000008d60018c8b870303038d6138dc565b610fb3565b610fb373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168d8960018a8d0186900301613c07565b611001877f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008960006138dc565b6040517fca9505e40000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ca9505e490606401600060405180830381600087803b15801561109757600080fd5b505af11580156110ab573d6000803e3d6000fd5b505050505050505060018411156110ea576110ea837f00000000000000000000000000000000000000000000000000000000000000008d8760006138dc565b73ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604090205486191661111f84898884613b2d565b6040517f89b77b3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527f000000000000000000000000000000000000000000000000000000000000000016906389b77b3e90602401600060405180830381600087803b1580156111a857600080fd5b505af11580156111bc573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff909c16600090815260026020526040812080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550929a9950505050505050505050565b6000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314611299576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112a281613c9c565b50565b6000806000806112b485613d0d565b91955092509050816112c6828661536e565b6112d091906153ab565b92505050915091565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906153e6565b6113bd576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113c5613e8b565b565b60005460ff1615611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff1615611476576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100178155338152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff908116908416148015906114f757506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b801561151b5750600c5473ffffffffffffffffffffffffffffffffffffffff163314155b8061153a575073ffffffffffffffffffffffffffffffffffffffff8316155b15611571576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61157a82613814565b6115b0576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115bb856137b0565b90506115cb838583856000613f6c565b6115ef576115de83858360006001613f6c565b506115ed838583856001613f6c565b505b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b6001546000908190819081906127109061ffff1661163c8888615403565b611646919061536e565b61165091906153ab565b61165a9086615356565b935060018760028111156116705761167061541a565b141561170a576001546000906127109061169690640100000000900461ffff168b61536e565b6116a091906153ab565b600154909150612710906116be9062010000900461ffff168b61536e565b6116c891906153ab565b6116d29086615356565b9450848111156116e95760018582030393506116ed565b8094505b8581106116fe578585039250611704565b84860391505b50610ccc565b600287600281111561171e5761171e61541a565b141561177457600154600090612710906117489068010000000000000000900461ffff168b61536e565b61175291906153ab565b600154909150612710906116be906601000000000000900461ffff168b61536e565b92979196505091860393509150565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff161580156117d557506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b1561180c576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff161561184e576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610b81828261410d565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff161580156118d657506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b1561190d576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff161561194f576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055611985858461410d565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600091908616906370a0823190602401602060405180830381865afa1580156119f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a19919061530e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918616906370a0823190602401602060405180830381865afa158015611a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aaf919061530e565b60015490915060009081906a0100000000000000000000900473ffffffffffffffffffffffffffffffffffffffff16635cecbd0e611aed8689615403565b8a611af88988615403565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935273ffffffffffffffffffffffffffffffffffffffff918216602484015260448301528a1660648201526084016040805180830381865afa158015611b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b989190615449565b9150915060018411611bae57611bae898961389c565b611bb7876121b7565b611bc59061ffff168261536e565b9050611bd0886121b7565b611bde9061ffff168361536e565b9150818110611bf957611bf089613c9c565b505050506115ef565b73ffffffffffffffffffffffffffffffffffffffff891660009081526009602052604081205483611c366b033b2e3c9fd0803ce80000008561536e565b611c4091906153ab565b611c56906b033b2e3c9fd0803ce8000000615403565b611c609190615356565b60015490915061271090611c8b906b033b2e3c9fd0803ce80000009062010000900461ffff1661536e565b611c9591906153ab565b8111611cd65773ffffffffffffffffffffffffffffffffffffffff8a166000908152600960205260409020819055611ccc8a613c9c565b50505050506115ef565b611cdf8a6141bd565b50505073ffffffffffffffffffffffffffffffffffffffff871660009081526009602052604090206001905550505050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b6060611d4a60005460ff1690565b15611db1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff1615611df3576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100178155338152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff908116908416141580611e68575073ffffffffffffffffffffffffffffffffffffffff8316155b15611ebe57600c5473ffffffffffffffffffffffffffffffffffffffff163314611ebe576040517f5d2e3a7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611ec9856137b0565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167faed1eb34af6acd8c1e3911fb2ebb875a66324b03957886bd002227b17f52ab0360405160405180910390a36040517f1cff79cd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690631cff79cd90611f79908790879060040161546d565b6000604051808303816000875af1158015611f98573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611fde919081019061549c565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905595945050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314612060576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216156120d05773ffffffffffffffffffffffffffffffffffffffff8281166000908152600a6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790555b73ffffffffffffffffffffffffffffffffffffffff8116156121405773ffffffffffffffffffffffffffffffffffffffff8181166000908152600b6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169184169190911790555b73ffffffffffffffffffffffffffffffffffffffff811673cccccccccccccccccccccccccccccccccccccccc14156121b357600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790555b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561223b5750506001547e01000000000000000000000000000000000000000000000000000000000000900461ffff1690565b600061224683613814565b90508061227f576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61228881613738565b949350505050565b60005460ff16156122fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff161561233f576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff1633146123c4576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123ce838361410d565b6123f073ffffffffffffffffffffffffffffffffffffffff8316858584613c07565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa1580156124a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124cc91906153e6565b612502576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113c561453b565b6000805460ff1615612578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff16156125ba576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff16331461263f576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166321d18456857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270d919061530e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925260248201526044016020604051808303816000875af1158015612768573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278c919061550a565b6040517fbf28068b0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff80831660248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063bf28068b90604401600060405180830381600087803b15801561282157600080fd5b505af1158015612835573d6000803e3d6000fd5b5050505061284383826145fb565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081206001905580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690559392505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633146128ea576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805461ffff92831668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff9484166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff96851664010000000002969096167fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff97851662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090931694909816939093171794909416949094179190911716919091179055565b6000805460ff1615612a34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff1615612a76576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff163314612afb576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000612b0987613d0d565b92509250925084612b2357612b1e8684615403565b612b2d565b612b2d8684615356565b935060008515612c855769021e19e0c9bab24000008510612b9657612b5683603689901c61536e565b612b64603686901c8461536e565b612b6e9190615356565b603686901c612b7d858561536e565b612b87919061536e565b612b9191906153ab565b612bd3565b612ba0838861536e565b612baa858461536e565b612bb49190615356565b85612bbf858561536e565b612bc9919061536e565b612bd391906153ab565b6040517fbf28068b0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff8a811660248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063bf28068b90604401600060405180830381600087803b158015612c6857600080fd5b505af1158015612c7c573d6000803e3d6000fd5b50505050612f20565b60008484612c93858361536e565b612c9d91906153ab565b612ca79190615403565b60015490915060009061271090612cc29061ffff168461536e565b612ccc91906153ab565b905073ffffffffffffffffffffffffffffffffffffffff8a1663d1660f997f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084612d37878f615356565b612d419190615356565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b158015612db557600080fd5b505af1158015612dc9573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca9505e4838b612e159190615356565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260048101919091526024810184905260006044820152606401600060405180830381600087803b158015612e7457600080fd5b505af1158015612e88573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ef7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1b919061530e565b925050505b6040517f16128211000000000000000000000000000000000000000000000000000000008152600481018690526024810182905273ffffffffffffffffffffffffffffffffffffffff891690631612821190604401600060405180830381600087803b158015612f8f57600080fd5b505af1158015612fa3573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055509498975050505050505050565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff1615801561302d57506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b15613064576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff16156130a6576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790556130db816141bd565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b60035473ffffffffffffffffffffffffffffffffffffffff163314613157576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ff62005acebe9b616aefb5f248b48f5e89f28437b27d1eebc0b2d911209f297af90600090a250565b60035473ffffffffffffffffffffffffffffffffffffffff163314613217576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600755565b6000613227826146ce565b92915050565b60035473ffffffffffffffffffffffffffffffffffffffff16331461327e576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613325576001805461ffff83167e01000000000000000000000000000000000000000000000000000000000000027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790555050565b600061333083613814565b905080613369576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff1675ffff000000000000000000000000000000000000000060a084901b161790555050565b60008060006133c184613d0d565b9250925092509193909250565b6005546060908067ffffffffffffffff8111156133ed576133ed614f8c565b604051908082528060200260200182016040528015613416578160200160208202803683370190505b50915060005b8181101561348b5761342d81610c99565b5083828151811061344057613440615527565b602002602001018173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050808061348390615556565b91505061341c565b505090565b60035473ffffffffffffffffffffffffffffffffffffffff1633146134e1576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112a281614739565b60035473ffffffffffffffffffffffffffffffffffffffff16331461353b576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805460ff90921662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b60005460ff16156135e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff1615613624576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff1633146136a9576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006136b4836137b0565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055905061370b82826145fb565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b60008082600114156137965750506001547f0000000000000000000000000000000000000000000000000000000000000000927e0100000000000000000000000000000000000000000000000000000000000090910461ffff169150565b50506000908152600460205260409020549060a082901c90565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260026020526040902054168061380f576040517fb5ba4c4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146138945773ffffffffffffffffffffffffffffffffffffffff8216600090815260066020526040902054613227565b600192915050565b60006138a782613814565b73ffffffffffffffffffffffffffffffffffffffff909316600090815260086020526040902080549319939093169092555050565b80801561393457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15613a96576040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526044820184905286169063d1660f9990606401600060405180830381600087803b1580156139d157600080fd5b505af11580156139e5573d6000803e3d6000fd5b50506040517f5869dba800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690527f0000000000000000000000000000000000000000000000000000000000000000169250635869dba89150604401600060405180830381600087803b158015613a7957600080fd5b505af1158015613a8d573d6000803e3d6000fd5b50505050610bba565b6040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301526044820184905286169063d1660f9990606401600060405180830381600087803b158015613b0e57600080fd5b505af1158015613b22573d6000803e3d6000fd5b505050505050505050565b60025b818111610bba5781811615613bff576000613b4a82613738565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918316906370a0823190602401602060405180830381865afa158015613bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613be1919061530e565b90506002811115613bfc57613bfc87838860018503896138dc565b50505b60011b613b30565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610ce390859061482d565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081205490613ccc82614939565b60005490915062010000900460ff16811115613d08576000613ced836146ce565b613cf8906001615356565b9050610ce3848484600085614972565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d81919061530e565b92508373ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b8152600401602060405180830381865afa158015613dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df2919061530e565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e83919061530e565b929491935050565b60005460ff16613ef7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610d53565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152604480830186905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291517f1cff79cd000000000000000000000000000000000000000000000000000000008152600092861691631cff79cd9161402d918a9160040161546d565b6000604051808303816000875af192505050801561408b57506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052614088919081019061549c565b60015b614094576140c8565b805115806140b75750808060200190518101906140b191906153e6565b15156001145b156140c6576001915050614104565b505b8115614100576040517f76e3e29c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060005b95945050505050565b600061411882613814565b905080158061412a5750600754811615155b15614161576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020548116613d085773ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020805482179055505050565b60015473ffffffffffffffffffffffffffffffffffffffff8281166000908152600860205260408120546a010000000000000000000090930490911691908080614206866112a5565b6040517ff9a650300000000000000000000000000000000000000000000000000000000081526127108202600482015273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166024830152919350908716915063f9a6503090604401602060405180830381865afa1580156142a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c5919061530e565b92506142d0846146ce565b6001019150506000806000805b848110156145085780156142f65760018186031b6142f9565b60015b9350868416156145005760008061430f86613738565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e811660048301529294509092506000918416906370a0823190602401602060405180830381865afa158015614384573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143a8919061530e565b905060018111156144f3576040517ff9a650300000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff848116602483015261ffff841691908d169063f9a6503090604401602060405180830381865afa15801561442d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614451919061530e565b61445b919061536e565b6144659087615356565b95508886106144ee5760006144798b614939565b60005490915062010000900460ff168111156144b0576144ab8d8c83600189156144a557898e03614972565b8d614972565b6144df565b85156144df5773ffffffffffffffffffffffffffffffffffffffff8d1660009081526008602052604090208b90555b50505050505050505050505050565b6144fc565b98861898600194505b5050505b6001016142dd565b506040517f532e7bb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005460ff16156145a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613f423390565b73ffffffffffffffffffffffffffffffffffffffff82161580614644575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600260205260409020541615155b1561467b576040517f9e59609e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b600081600114156146e157506000919050565b61010060015b60016146f38284615356565b901c92506001831b8481161580159061470e5750600185851c145b156147195750614732565b8481106147285783925061472c565b8391505b506146e7565b5050919050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526006602052604090205415614796576040517f2e5a5c7700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610100600554106147d3576040517f1cbbe18500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005805473ffffffffffffffffffffffffffffffffffffffff83166000818152600660209081526040808320600190951b948590558483526004909152812091909155825491929061482483615556565b91905055505050565b600061488f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16614ae09092919063ffffffff16565b805190915015613d0857808060200190518101906148ad91906153e6565b613d08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610d53565b60008060005b610100811015614732576001811b91508382161561495e578260010192505b83821061496a57614732565b60010161493f565b815b81811015614aad576001811b85811615614aa457600061499382613738565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301529192506000918316906370a0823190602401602060405180830381865afa158015614a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a2a919061530e565b905060018111614aa157600054978318977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9097019660ff62010000909104168711614aa15750505073ffffffffffffffffffffffffffffffffffffffff8616600090815260086020526040902085905550610bba565b50505b50600101614974565b506040517f53275fcb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060614aef8484600085614af9565b90505b9392505050565b606082471015614b8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610d53565b843b614bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d53565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051614c1c919061558f565b60006040518083038185875af1925050503d8060008114614c59576040519150601f19603f3d011682016040523d82523d6000602084013e614c5e565b606091505b5091509150614c6e828286614c79565b979650505050505050565b60608315614c88575081614af2565b825115614c985782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d53919061516b565b73ffffffffffffffffffffffffffffffffffffffff811681146112a257600080fd5b600060208284031215614d0057600080fd5b8135614af281614ccc565b60008060408385031215614d1e57600080fd5b8235614d2981614ccc565b91506020830135614d3981614ccc565b809150509250929050565b80151581146112a257600080fd5b600080600080600060a08688031215614d6a57600080fd5b8535614d7581614ccc565b94506020860135614d8581614ccc565b93506040860135614d9581614ccc565b9250606086013591506080860135614dac81614d44565b809150509295509295909350565b600060208284031215614dcc57600080fd5b5035919050565b80356003811061380f57600080fd5b60008060008060808587031215614df857600080fd5b84359350614e0860208601614dd3565b93969395505050506040820135916060013590565b60008060008060808587031215614e3357600080fd5b8435614e3e81614ccc565b93506020850135614e4e81614ccc565b92506040850135614e5e81614d44565b9396929550929360600135925050565b600080600080600080600060e0888a031215614e8957600080fd5b8735614e9481614ccc565b9650614ea260208901614dd3565b9550604088013594506060880135614eb981614ccc565b93506080880135614ec981614ccc565b925060a0880135915060c0880135614ee081614d44565b8091505092959891949750929550565b60008060008060808587031215614f0657600080fd5b8435614f1181614ccc565b93506020850135614f2181614ccc565b92506040850135614e5e81614ccc565b600080600080600060a08688031215614f4957600080fd5b8535614f5481614ccc565b94506020860135614f6481614ccc565b93506040860135614f7481614ccc565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561500257615002614f8c565b604052919050565b600067ffffffffffffffff82111561502457615024614f8c565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60008060006060848603121561506557600080fd5b833561507081614ccc565b9250602084013561508081614ccc565b9150604084013567ffffffffffffffff81111561509c57600080fd5b8401601f810186136150ad57600080fd5b80356150c06150bb8261500a565b614fbb565b8181528760208385010111156150d557600080fd5b816020840160208301376000602083830101528093505050509250925092565b60005b838110156151105781810151838201526020016150f8565b83811115610ce35750506000910152565b600081518084526151398160208601602086016150f5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000614af26020830184615121565b6000806040838503121561519157600080fd5b823591506020830135614d3981614ccc565b803561ffff8116811461380f57600080fd5b600080600080600060a086880312156151cd57600080fd5b6151d6866151a3565b94506151e4602087016151a3565b93506151f2604087016151a3565b9250615200606087016151a3565b915061520e608087016151a3565b90509295509295909350565b60008060006060848603121561522f57600080fd5b833561523a81614ccc565b925060208401359150604084013561525181614d44565b809150509250925092565b6000806040838503121561526f57600080fd5b823561527a81614ccc565b9150615288602084016151a3565b90509250929050565b6020808252825182820181905260009190848201906040850190845b818110156152df57835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016152ad565b50909695505050505050565b6000602082840312156152fd57600080fd5b813560ff81168114614af257600080fd5b60006020828403121561532057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561536957615369615327565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153a6576153a6615327565b500290565b6000826153e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000602082840312156153f857600080fd5b8151614af281614d44565b60008282101561541557615415615327565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000806040838503121561545c57600080fd5b505080516020909101519092909150565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000614aef6040830184615121565b6000602082840312156154ae57600080fd5b815167ffffffffffffffff8111156154c557600080fd5b8201601f810184136154d657600080fd5b80516154e46150bb8261500a565b8181528560208385010111156154f957600080fd5b6141048260208301602086016150f5565b60006020828403121561551c57600080fd5b8151614af281614ccc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561558857615588615327565b5060010190565b600082516155a18184602087016150f5565b919091019291505056fea26469706673582212209a61b2b1203f2f5e63c5e3bdfef5184c4cbbb88b745f884592632c989b91297064736f6c634300080a00339c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c860806040526016805460ff1916905534801561001a57600080fd5b506040516110a73803806110a7833981016040819052610039916100b6565b600080546001600160a01b038085166001600160a01b0319928316179092556003805492841692909116919091179055610080600a6b033b2e3c9fd0803ce80000006100e9565b60075550506b033b2e3c9fd0803ce800000060155561010b565b80516001600160a01b03811681146100b157600080fd5b919050565b600080604083850312156100c957600080fd5b6100d28361009a565b91506100e06020840161009a565b90509250929050565b60008261010657634e487b7160e01b600052601260045260246000fd5b500490565b610f8d8061011a6000396000f3fe608060405234801561001057600080fd5b50600436106102e95760003560e01c806367c99d5811610191578063c5f956af116100e3578063dbcb313b11610097578063f11a648711610071578063f11a648714610320578063f3fdb15a146105f1578063fe14112d1461061157600080fd5b8063dbcb313b146105d6578063e941fa78146105df578063ef8d9603146105e857600080fd5b8063cb3905e1116100c8578063cb3905e1146105c4578063cf33d95514610320578063d0efe753146105cd57600080fd5b8063c5f956af14610588578063ca9505e4146105a857600080fd5b80639aa5d46211610145578063b6ac642a1161011f578063b6ac642a14610567578063bb04b19314610567578063bf28068b1461057557600080fd5b80639aa5d46214610544578063a4e8273e14610557578063b3554a0a1461055e57600080fd5b8063788c6bfe11610176578063788c6bfe146104ef5780638456cb591461050157806396df5dc01461053157600080fd5b806367c99d58146104de57806374375359146104e757600080fd5b806336dda7d51161024a5780634d778ad1116101fe57806354fd4d50116101d857806354fd4d50146104c05780635c975abb146104c8578063609ae317146104d557600080fd5b80634d778ad114610491578063532fe502146104a45780635427c938146104ad57600080fd5b80633f4ba83a1161022f5780633f4ba83a1461045257806345d31f9d1461047f5780634c19386c1461048857600080fd5b806336dda7d51461040f5780633e163df01461042f57600080fd5b80632495a599116102a157806329f3d3b61161028657806329f3d3b6146103b35780632a3354c9146103bc5780632e97ca21146103dc57600080fd5b80632495a599146103735780632954018c1461039357600080fd5b8063078c4781116102d2578063078c4781146103205780630fce70fb146103335780631e16e4fc1461033b57600080fd5b8063030dbb04146102ee57806305fe138b1461030a575b600080fd5b6102f760105481565b6040519081526020015b60405180910390f35b6102f7610318366004610ce8565b600092915050565b61033161032e366004610d14565b50565b005b6015546102f7565b61034e610349366004610d2f565b610618565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610301565b60035461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b60005461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b6102f760095481565b600a5461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b6103ff6103ea366004610d14565b60066020526000908152604090205460ff1681565b6040519015158152602001610301565b60055461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b6103ff61043d366004610d14565b60146020526000908152604090205460ff1681565b610331601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6102f760075481565b6102f760015481565b6102f761049f366004610d2f565b61064f565b6102f760115481565b6102f76104bb366004610d2f565b61066d565b6102f7600181565b6016546103ff9060ff1681565b6102f760085481565b6102f7600d5481565b6102f7610685565b6b033b2e3c9fd0803ce80000006102f7565b610331601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b61033161053f366004610d2f565b601555565b610331610552366004610d48565b505050565b60016102f7565b6102f7600e5481565b61033161032e366004610d2f565b610331610583366004610ce8565b61071d565b60135461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b6103316105b6366004610d7d565b600b92909255600c55600d55565b6102f7600c5481565b6102f7600b5481565b6102f760155481565b6102f7600f5481565b6102f760025481565b60125461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b60006102f7565b6004818154811061062857600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6000610667826b033b2e3c9fd0803ce800000061077a565b92915050565b6000610667826b033b2e3c9fd0803ce80000006108e9565b6003546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190610da9565b905090565b6009829055600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117909155600354610776911682846109fe565b5050565b60408051808201909152600281527f4d330000000000000000000000000000000000000000000000000000000000006020820152600090826107f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e99190610df2565b60405180910390fd5b506000610800600284610e72565b90506b033b2e3c9fd0803ce8000000610839827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ead565b6108439190610e72565b8411156040518060400160405280600281526020017f4d31000000000000000000000000000000000000000000000000000000000000815250906108b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e99190610df2565b5082816108cd6b033b2e3c9fd0803ce800000087610ec4565b6108d79190610f01565b6108e19190610e72565b949350505050565b60008215806108f6575081155b1561090357506000610667565b8161091b60026b033b2e3c9fd0803ce8000000610e72565b610945907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ead565b61094f9190610e72565b8311156040518060400160405280600281526020017f4d31000000000000000000000000000000000000000000000000000000000000815250906109c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e99190610df2565b506b033b2e3c9fd0803ce80000006109d9600282610e72565b6109e38486610ec4565b6109ed9190610f01565b6109f79190610e72565b9392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261055292869291600091610ac9918516908490610b73565b8051909150156105525780806020019051810190610ae79190610f19565b610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107e9565b60606108e1848460008585843b610be6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107e9565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610c0f9190610f3b565b60006040518083038185875af1925050503d8060008114610c4c576040519150601f19603f3d011682016040523d82523d6000602084013e610c51565b606091505b5091509150610c61828286610c6c565b979650505050505050565b60608315610c7b5750816109f7565b825115610c8b5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e99190610df2565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ce357600080fd5b919050565b60008060408385031215610cfb57600080fd5b82359150610d0b60208401610cbf565b90509250929050565b600060208284031215610d2657600080fd5b6109f782610cbf565b600060208284031215610d4157600080fd5b5035919050565b600080600060608486031215610d5d57600080fd5b83359250610d6d60208501610cbf565b9150604084013590509250925092565b600080600060608486031215610d9257600080fd5b505081359360208301359350604090920135919050565b600060208284031215610dbb57600080fd5b5051919050565b60005b83811015610ddd578181015183820152602001610dc5565b83811115610dec576000848401525b50505050565b6020815260008251806020840152610e11816040850160208701610dc2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082610ea8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015610ebf57610ebf610e43565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610efc57610efc610e43565b500290565b60008219821115610f1457610f14610e43565b500190565b600060208284031215610f2b57600080fd5b815180151581146109f757600080fd5b60008251610f4d818460208701610dc2565b919091019291505056fea26469706673582212204edb887d94928b3914f60ab48df0182da9eb30ddbb7021b164cc728b60a655d564736f6c634300080a00336101606040526000805462ff00001916620c00001790553480156200002357600080fd5b50604051620058e8380380620058e8833981016040819052620000469162000537565b806001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000085573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ab919062000537565b6000805460ff191690556001600160a01b038116620000dd57604051635919af9760e11b815260040160405180910390fd5b806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200011c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000142919062000537565b6001600160a01b03166080816001600160a01b031681525050506000816001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c3919062000537565b6001600160a01b03831661010081905260e081905260408051632495a59960e01b81529051929350600092632495a599916004808201926020929091908290030181865afa1580156200021a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000240919062000537565b6001600160a01b03811660c05290506200025a8162000472565b816001600160a01b0316634c252f916040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000537565b6001600160a01b0316610120816001600160a01b031681525050816001600160a01b03166377532ed96040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000318573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033e919062000537565b6001600160a01b0316610140816001600160a01b031681525050816001600160a01b031663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000397573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bd919062000537565b6001600001600a6101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316639068a8686040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044b919062000537565b6001600160a01b031660a0525050600380546001600160a01b031916331790555062000588565b6001600160a01b03811660009081526006602052604090205415620004aa57604051632e5a5c7760e01b815260040160405180910390fd5b61010060055410620004cf57604051631cbbe18560e01b815260040160405180910390fd5b600580546001600160a01b0383166000818152600660209081526040808320600190951b948590558483526004909152812091909155825491929062000515836200055e565b91905055505050565b6001600160a01b03811681146200053457600080fd5b50565b6000602082840312156200054a57600080fd5b815162000557816200051e565b9392505050565b60006000198214156200058157634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c05160e051610100516101205161014051615248620006a0600039600081816107e20152818161371001526137c501526000818161052f01526136780152600081816103d301528181610e5701528181610ebb015281816124ff0152818161265a01528181612aa101528181612b8c01528181612c4e01528181612d0d0152613b8f015260006105a401526000818161062701528181610d2201528181610db301528181610e0001528181610e3601528181610f3f0152818161203a01528181612b6b015281816130ee015281816134dc015281816135a90152613fe601526000818161081c01528181610fe101526124c20152600081816107a80152818161118401526122cb01526152486000f3fe608060405234801561001057600080fd5b50600436106103415760003560e01c8063830aa745116101bd578063a70bc542116100f9578063e75538c7116100a2578063f9aa028a1161007c578063f9aa028a1461089d578063fdd57645146108bd578063fe47cde7146108f3578063ff6875431461091357600080fd5b8063e75538c714610864578063e958b70414610877578063f67c5bd01461088a57600080fd5b8063db7ceb80116100d3578063db7ceb8014610817578063dc2b21c11461083e578063e1998cf91461085157600080fd5b8063a70bc542146107ca578063c5e10eef146107dd578063d48bfca71461080457600080fd5b806394cf073a116101665780639f5f86ae116101405780639f5f86ae146107745780639fd12b7714610787578063a366f49614610790578063a50cf2c8146107a357600080fd5b806394cf073a146106f557806395373018146107085780639af1d35a1461071b57600080fd5b80638991b2f1116101975780638991b2f1146106af5780638fe3f93f146106cf578063944ac59f146106e257600080fd5b8063830aa7451461066f5780638345f26e146106825780638456cb59146106a757600080fd5b8063458936f51161028c578063570a7af2116102355780636ce4074a1161020f5780636ce4074a146105ef5780636e98e5e41461060f5780636f307dc314610622578063783274381461064957600080fd5b8063570a7af21461059f5780635c975abb146105c6578063654a9eda146105dc57600080fd5b80635063524a116102665780635063524a1461055157806351e3f1601461058457806354fd4d501461059757600080fd5b8063458936f51461050e57806346fb371d146105175780634f0e0ef31461052a57600080fd5b80632630c12f116102ee5780633192195c116102c85780633192195c146104be5780633e8297ca146104e65780633f4ba83a1461050657600080fd5b80632630c12f1461045857806329df0b93146104845780632f7a18811461049757600080fd5b806316f0115b1161031f57806316f0115b146103ce578063172c48c7146103f55780632362a2d81461043757600080fd5b8063055ee9b5146103465780630d8f9cee146103a657806311ca4fc2146103bb575b600080fd5b61037c610354366004614a87565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6103b96103b4366004614aa4565b610949565b005b6103b96103c9366004614aa4565b610a76565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b610408610403366004614add565b610b4e565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835261ffff90911660208301520161039d565b61044a610445366004614b13565b610b66565b60405190815260200161039d565b6001546a0100000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1661037c565b6103b9610492366004614a87565b6110be565b60005461037c906301000000900473ffffffffffffffffffffffffffffffffffffffff1681565b6104d16104cc366004614a87565b611122565b6040805192835260208301919091520161039d565b61044a6104f4366004614a87565b60096020526000908152604090205481565b6103b9611156565b61044a60055481565b6103b9610525366004614b95565b611244565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b61056461055f366004614be6565b61149b565b60408051948552602085019390935291830152606082015260800161039d565b6103b9610592366004614aa4565b611602565b61044a600281565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b60005460ff16604051901515815260200161039d565b6103b96105ea366004614c21565b611703565b6106026105fd366004614d40565b611bbb565b60405161039d9190614e5b565b6103b961061d366004614aa4565b611e8e565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b61065c610657366004614a87565b612036565b60405161ffff909116815260200161039d565b6103b961067d366004614b95565b61210f565b6000546106959062010000900460ff1681565b60405160ff909116815260200161039d565b6103b961229d565b61044a6106bd366004614a87565b60086020526000908152604090205481565b61037c6106dd366004614e6e565b612389565b6103b96106f0366004614ea5565b612718565b61044a610703366004614f0a565b612845565b6103b9610716366004614a87565b612e5a565b6001546040805161ffff808416825262010000840481166020830152640100000000840481169282019290925266010000000000008304821660608201526801000000000000000090920416608082015260a00161039d565b6103b9610782366004614a87565b612f85565b61044a60075481565b6103b961079e366004614add565b613045565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b6103b96107d8366004614f4c565b61309b565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b6103b9610812366004614a87565b613221565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b6103b961084c366004614f81565b61327b565b6103b961085f366004614aa4565b613306565b610408610872366004614add565b6134c9565b61037c610885366004614a87565b613541565b61044a610898366004614a87565b6135a5565b60035461037c9073ffffffffffffffffffffffffffffffffffffffff1681565b61037c6108cb366004614a87565b600b6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b600c5461037c9073ffffffffffffffffffffffffffffffffffffffff1681565b61037c610921366004614a87565b600a6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff1615801561099b57506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b156109d2576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1615610a14576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610a4a828261362e565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b60035473ffffffffffffffffffffffffffffffffffffffff163314610ac7576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff9384166301000000027fffffffffffffffffff0000000000000000000000000000000000000000ffffff90911617905560018054919092166a0100000000000000000000027fffff0000000000000000000000000000000000000000ffffffffffffffffffff909116179055565b600080610b5d6001841b6134c9565b91509150915091565b6000805460ff1615610bd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b600054610100900460ff1615610c1b576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff163314610ca0576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cab89613541565b90506000806000806000610cbe86611122565b9094509050610ccf8c8e868461149b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152939b5093985090955093506000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8f9190614fa4565b9050610d9b8887614fec565b610da6906001614fec565b811115610de657610de1877f00000000000000000000000000000000000000000000000000000000000000008d60018c8b870303038d61366e565b610e30565b610e3073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168d8960018a8d01869003016138c0565b610e7e877f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089600061366e565b6040517fca9505e40000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ca9505e490606401600060405180830381600087803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b50505050505050506001841115610f6757610f67837f00000000000000000000000000000000000000000000000000000000000000008d87600061366e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040902054861916610f9c8489888461395b565b6040517f89b77b3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527f000000000000000000000000000000000000000000000000000000000000000016906389b77b3e90602401600060405180830381600087803b15801561102557600080fd5b505af1158015611039573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff909c16600090815260026020526040812080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550929a9950505050505050505050565b6000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314611116576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61111f81613a35565b50565b60008060008061113185613aa6565b91955092509050816111438286615004565b61114d9190615041565b92505050915091565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa1580156111e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611204919061507c565b61123a576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611242613c24565b565b60005460ff16156112b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff16156112f3576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100178155338152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff9081169084161480159061137457506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b80156113985750600c5473ffffffffffffffffffffffffffffffffffffffff163314155b806113b7575073ffffffffffffffffffffffffffffffffffffffff8316155b156113ee576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113f7826135a5565b61142d576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061143885613541565b9050611448838583856000613d05565b61146c5761145b83858360006001613d05565b5061146a838583856001613d05565b505b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b6001546000908190819081906127109061ffff166114b98888615099565b6114c39190615004565b6114cd9190615041565b6114d79086614fec565b935060018760028111156114ed576114ed6150b0565b1415611587576001546000906127109061151390640100000000900461ffff168b615004565b61151d9190615041565b6001549091506127109061153b9062010000900461ffff168b615004565b6115459190615041565b61154f9086614fec565b94508481111561156657600185820303935061156a565b8094505b85811061157b578585039250611581565b84860391505b506115f7565b600287600281111561159b5761159b6150b0565b14156115f157600154600090612710906115c59068010000000000000000900461ffff168b615004565b6115cf9190615041565b6001549091506127109061153b906601000000000000900461ffff168b615004565b84840391505b945094509450949050565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff1615801561165457506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b1561168b576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff16156116cd576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610a4a8282613ea6565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff1615801561175557506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b1561178c576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff16156117ce576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790556118048584613ea6565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600091908616906370a0823190602401602060405180830381865afa158015611874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118989190614fa4565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918616906370a0823190602401602060405180830381865afa15801561190a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192e9190614fa4565b60015490915060009081906a0100000000000000000000900473ffffffffffffffffffffffffffffffffffffffff16635cecbd0e61196c8689615099565b8a6119778988615099565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935273ffffffffffffffffffffffffffffffffffffffff918216602484015260448301528a1660648201526084016040805180830381865afa1580156119f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1791906150df565b9150915060018411611a2d57611a2d898961362e565b611a3687612036565b611a449061ffff1682615004565b9050611a4f88612036565b611a5d9061ffff1683615004565b9150818110611a7857611a6f89613a35565b5050505061146c565b73ffffffffffffffffffffffffffffffffffffffff891660009081526009602052604081205483611ab56b033b2e3c9fd0803ce800000085615004565b611abf9190615041565b611ad5906b033b2e3c9fd0803ce8000000615099565b611adf9190614fec565b60015490915061271090611b0a906b033b2e3c9fd0803ce80000009062010000900461ffff16615004565b611b149190615041565b8111611b555773ffffffffffffffffffffffffffffffffffffffff8a166000908152600960205260409020819055611b4b8a613a35565b505050505061146c565b611b5e8a613f56565b50505073ffffffffffffffffffffffffffffffffffffffff871660009081526009602052604090206001905550505050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b6060611bc960005460ff1690565b15611c30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff1615611c72576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100178155338152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff908116908416141580611ce7575073ffffffffffffffffffffffffffffffffffffffff8316155b15611d3d57600c5473ffffffffffffffffffffffffffffffffffffffff163314611d3d576040517f5d2e3a7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d4885613541565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167faed1eb34af6acd8c1e3911fb2ebb875a66324b03957886bd002227b17f52ab0360405160405180910390a36040517f1cff79cd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690631cff79cd90611df89087908790600401615103565b6000604051808303816000875af1158015611e17573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611e5d9190810190615132565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905595945050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314611edf576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615611f4f5773ffffffffffffffffffffffffffffffffffffffff8281166000908152600a6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790555b73ffffffffffffffffffffffffffffffffffffffff811615611fbf5773ffffffffffffffffffffffffffffffffffffffff8181166000908152600b6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169184169190911790555b73ffffffffffffffffffffffffffffffffffffffff811673cccccccccccccccccccccccccccccccccccccccc141561203257600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790555b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120ba5750506001547e01000000000000000000000000000000000000000000000000000000000000900461ffff1690565b60006120c5836135a5565b9050806120fe576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612107816134c9565b949350505050565b60005460ff161561217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff16156121be576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff163314612243576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61224d8383613ea6565b61226f73ffffffffffffffffffffffffffffffffffffffff83168585846138c0565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa158015612327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234b919061507c565b612381576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112426142d4565b6000805460ff16156123f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff1615612439576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff1633146124be576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166321d18456857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612568573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258c9190614fa4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925260248201526044016020604051808303816000875af11580156125e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260b91906151a0565b6040517fbf28068b0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff80831660248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063bf28068b90604401600060405180830381600087803b1580156126a057600080fd5b505af11580156126b4573d6000803e3d6000fd5b505050506126c28382614394565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081206001905580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690559392505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314612769576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805461ffff92831668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff9484166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff96851664010000000002969096167fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff97851662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090931694909816939093171794909416949094179190911716919091179055565b6000805460ff16156128b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff16156128f5576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff16331461297a576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600061298887613aa6565b925092509250846129a25761299d8684615099565b6129ac565b6129ac8684614fec565b935060008515612b045769021e19e0c9bab24000008510612a15576129d583603689901c615004565b6129e3603686901c84615004565b6129ed9190614fec565b603686901c6129fc8585615004565b612a069190615004565b612a109190615041565b612a52565b612a1f8388615004565b612a298584615004565b612a339190614fec565b85612a3e8585615004565b612a489190615004565b612a529190615041565b6040517fbf28068b0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff8a811660248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063bf28068b90604401600060405180830381600087803b158015612ae757600080fd5b505af1158015612afb573d6000803e3d6000fd5b50505050612d9f565b60008484612b128583615004565b612b1c9190615041565b612b269190615099565b60015490915060009061271090612b419061ffff1684615004565b612b4b9190615041565b905073ffffffffffffffffffffffffffffffffffffffff8a1663d1660f997f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084612bb6878f614fec565b612bc09190614fec565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b158015612c3457600080fd5b505af1158015612c48573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca9505e4838b612c949190614fec565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260048101919091526024810184905260006044820152606401600060405180830381600087803b158015612cf357600080fd5b505af1158015612d07573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9a9190614fa4565b925050505b6040517f16128211000000000000000000000000000000000000000000000000000000008152600481018690526024810182905273ffffffffffffffffffffffffffffffffffffffff891690631612821190604401600060405180830381600087803b158015612e0e57600080fd5b505af1158015612e22573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055509498975050505050505050565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff16158015612eac57506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b15612ee3576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1615612f25576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055612f5a81613f56565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b60035473ffffffffffffffffffffffffffffffffffffffff163314612fd6576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ff62005acebe9b616aefb5f248b48f5e89f28437b27d1eebc0b2d911209f297af90600090a250565b60035473ffffffffffffffffffffffffffffffffffffffff163314613096576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600755565b60035473ffffffffffffffffffffffffffffffffffffffff1633146130ec576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613193576001805461ffff83167e01000000000000000000000000000000000000000000000000000000000000027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790555050565b600061319e836135a5565b9050806131d7576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff1675ffff000000000000000000000000000000000000000060a084901b161790555050565b60035473ffffffffffffffffffffffffffffffffffffffff163314613272576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61111f81614467565b60035473ffffffffffffffffffffffffffffffffffffffff1633146132cc576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805460ff90921662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b60005460ff1615613373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff16156133b5576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff16331461343a576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061344583613541565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055905061349c8282614394565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b60008082600114156135275750506001547f0000000000000000000000000000000000000000000000000000000000000000927e0100000000000000000000000000000000000000000000000000000000000090910461ffff169150565b50506000908152600460205260409020549060a082901c90565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526002602052604090205416806135a0576040517fb5ba4c4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146136255773ffffffffffffffffffffffffffffffffffffffff8216600090815260066020526040902054613628565b60015b92915050565b6000613639826135a5565b73ffffffffffffffffffffffffffffffffffffffff909316600090815260086020526040902080549319939093169092555050565b8080156136c657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15613828576040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526044820184905286169063d1660f9990606401600060405180830381600087803b15801561376357600080fd5b505af1158015613777573d6000803e3d6000fd5b50506040517f5869dba800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690527f0000000000000000000000000000000000000000000000000000000000000000169250635869dba89150604401600060405180830381600087803b15801561380b57600080fd5b505af115801561381f573d6000803e3d6000fd5b505050506138b9565b6040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301526044820184905286169063d1660f9990606401600060405180830381600087803b1580156138a057600080fd5b505af11580156138b4573d6000803e3d6000fd5b505050505b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261395590859061455b565b50505050565b60025b8181116138b95781811615613a2d576000613978826134c9565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918316906370a0823190602401602060405180830381865afa1580156139eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a0f9190614fa4565b90506002811115613a2a57613a2a878388600185038961366e565b50505b60011b61395e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081205490613a6582614667565b60005490915062010000900460ff16811115613aa1576000613a86836146a7565b613a91906001614fec565b905061395584848460008561470b565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1a9190614fa4565b92508373ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8b9190614fa4565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c1c9190614fa4565b929491935050565b60005460ff16613c90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610bd0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152604480830186905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291517f1cff79cd000000000000000000000000000000000000000000000000000000008152600092861691631cff79cd91613dc6918a91600401615103565b6000604051808303816000875af1925050508015613e2457506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613e219190810190615132565b60015b613e2d57613e61565b80511580613e50575080806020019051810190613e4a919061507c565b15156001145b15613e5f576001915050613e9d565b505b8115613e99576040517f76e3e29c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060005b95945050505050565b6000613eb1826135a5565b9050801580613ec35750600754811615155b15613efa576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020548116613aa15773ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020805482179055505050565b60015473ffffffffffffffffffffffffffffffffffffffff8281166000908152600860205260408120546a010000000000000000000090930490911691908080613f9f86611122565b6040517ff9a650300000000000000000000000000000000000000000000000000000000081526127108202600482015273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166024830152919350908716915063f9a6503090604401602060405180830381865afa15801561403a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061405e9190614fa4565b9250614069846146a7565b6001019150506000806000805b848110156142a157801561408f5760018186031b614092565b60015b935086841615614299576000806140a8866134c9565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e811660048301529294509092506000918416906370a0823190602401602060405180830381865afa15801561411d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141419190614fa4565b9050600181111561428c576040517ff9a650300000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff848116602483015261ffff841691908d169063f9a6503090604401602060405180830381865afa1580156141c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ea9190614fa4565b6141f49190615004565b6141fe9087614fec565b95508886106142875760006142128b614667565b60005490915062010000900460ff16811115614249576142448d8c836001891561423e57898e0361470b565b8d61470b565b614278565b85156142785773ffffffffffffffffffffffffffffffffffffffff8d1660009081526008602052604090208b90555b50505050505050505050505050565b614295565b98861898600194505b5050505b600101614076565b506040517f532e7bb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005460ff1615614341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613cdb3390565b73ffffffffffffffffffffffffffffffffffffffff821615806143dd575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600260205260409020541615155b15614414576040517f9e59609e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260066020526040902054156144c4576040517f2e5a5c7700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61010060055410614501576040517f1cbbe18500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005805473ffffffffffffffffffffffffffffffffffffffff83166000818152600660209081526040808320600190951b9485905584835260049091528120919091558254919290614552836151bd565b91905055505050565b60006145bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166148799092919063ffffffff16565b805190915015613aa157808060200190518101906145db919061507c565b613aa1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610bd0565b60008060005b6101008110156146a0576001811b91508382161561468c578260010192505b838210614698576146a0565b60010161466d565b5050919050565b600081600114156146ba57506000919050565b61010060015b60016146cc8284614fec565b901c92506001831b848116158015906146e75750600185851c145b156146f257506146a0565b84811061470157839250614705565b8391505b506146c0565b815b81811015614846576001811b8581161561483d57600061472c826134c9565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301529192506000918316906370a0823190602401602060405180830381865afa15801561479f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147c39190614fa4565b90506001811161483a57600054978318977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9097019660ff6201000090910416871161483a5750505073ffffffffffffffffffffffffffffffffffffffff86166000908152600860205260409020859055506138b9565b50505b5060010161470d565b506040517f53275fcb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606148888484600085614892565b90505b9392505050565b606082471015614924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610bd0565b843b61498c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bd0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516149b591906151f6565b60006040518083038185875af1925050503d80600081146149f2576040519150601f19603f3d011682016040523d82523d6000602084013e6149f7565b606091505b5091509150614a07828286614a12565b979650505050505050565b60608315614a2157508161488b565b825115614a315782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd09190614e5b565b73ffffffffffffffffffffffffffffffffffffffff8116811461111f57600080fd5b600060208284031215614a9957600080fd5b813561488b81614a65565b60008060408385031215614ab757600080fd5b8235614ac281614a65565b91506020830135614ad281614a65565b809150509250929050565b600060208284031215614aef57600080fd5b5035919050565b8035600381106135a057600080fd5b801515811461111f57600080fd5b600080600080600080600060e0888a031215614b2e57600080fd5b8735614b3981614a65565b9650614b4760208901614af6565b9550604088013594506060880135614b5e81614a65565b93506080880135614b6e81614a65565b925060a0880135915060c0880135614b8581614b05565b8091505092959891949750929550565b60008060008060808587031215614bab57600080fd5b8435614bb681614a65565b93506020850135614bc681614a65565b92506040850135614bd681614a65565b9396929550929360600135925050565b60008060008060808587031215614bfc57600080fd5b84359350614c0c60208601614af6565b93969395505050506040820135916060013590565b600080600080600060a08688031215614c3957600080fd5b8535614c4481614a65565b94506020860135614c5481614a65565b93506040860135614c6481614a65565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614cf257614cf2614c7c565b604052919050565b600067ffffffffffffffff821115614d1457614d14614c7c565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600080600060608486031215614d5557600080fd5b8335614d6081614a65565b92506020840135614d7081614a65565b9150604084013567ffffffffffffffff811115614d8c57600080fd5b8401601f81018613614d9d57600080fd5b8035614db0614dab82614cfa565b614cab565b818152876020838501011115614dc557600080fd5b816020840160208301376000602083830101528093505050509250925092565b60005b83811015614e00578181015183820152602001614de8565b838111156139555750506000910152565b60008151808452614e29816020860160208601614de5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061488b6020830184614e11565b60008060408385031215614e8157600080fd5b823591506020830135614ad281614a65565b803561ffff811681146135a057600080fd5b600080600080600060a08688031215614ebd57600080fd5b614ec686614e93565b9450614ed460208701614e93565b9350614ee260408701614e93565b9250614ef060608701614e93565b9150614efe60808701614e93565b90509295509295909350565b600080600060608486031215614f1f57600080fd5b8335614f2a81614a65565b9250602084013591506040840135614f4181614b05565b809150509250925092565b60008060408385031215614f5f57600080fd5b8235614f6a81614a65565b9150614f7860208401614e93565b90509250929050565b600060208284031215614f9357600080fd5b813560ff8116811461488b57600080fd5b600060208284031215614fb657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614fff57614fff614fbd565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561503c5761503c614fbd565b500290565b600082615077577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561508e57600080fd5b815161488b81614b05565b6000828210156150ab576150ab614fbd565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600080604083850312156150f257600080fd5b505080516020909101519092909150565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006148886040830184614e11565b60006020828403121561514457600080fd5b815167ffffffffffffffff81111561515b57600080fd5b8201601f8101841361516c57600080fd5b805161517a614dab82614cfa565b81815285602083850101111561518f57600080fd5b613e9d826020830160208601614de5565b6000602082840312156151b257600080fd5b815161488b81614a65565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156151ef576151ef614fbd565b5060010190565b60008251615208818460208701614de5565b919091019291505056fea26469706673582212209d39bb9d4972b515acdad1ffb757acd15e103ca6ee762f88a6382b36243734ba64736f6c634300080a003360e060405234801561001057600080fd5b50604051610e07380380610e0783398101604081905261002f916101d3565b6000805460ff19169055806001600160a01b03811661006157604051635919af9760e11b815260040160405180910390fd5b806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa15801561009f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100c391906101d3565b6001600160a01b03166080816001600160a01b031681525050506000819050806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa158015610120573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014491906101d3565b6001600160a01b031660a0816001600160a01b031681525050806001600160a01b031663c513c9bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561019b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bf91906101d3565b6001600160a01b031660c052506102039050565b6000602082840312156101e557600080fd5b81516001600160a01b03811681146101fc57600080fd5b9392505050565b60805160a05160c051610b9e6102696000396000818160da0152818161035e015281816104fb015261064d015260008181610165015281816102a301528181610440015261059201526000818161013e015281816101b501526106e40152610b9e6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80636f074436116100765780638456cb591161005b5780638456cb5914610131578063a50cf2c814610139578063de2873591461016057600080fd5b80636f074436146101215780637c205cc41461012957600080fd5b80633f4ba83a146100a8578063488bf5b4146100b25780635c975abb146100ba57806362eb33e3146100d5575b600080fd5b6100b0610187565b005b6100b0610275565b60005460ff1660405190151581526020015b60405180910390f35b6100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100cc565b6100b0610412565b6100b0610564565b6100b06106b6565b6100fc7f000000000000000000000000000000000000000000000000000000000000000081565b6100fc7f000000000000000000000000000000000000000000000000000000000000000081565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa158015610211573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023591906109d5565b61026b576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102736107a2565b565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa1580156102ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032391906109d5565b610359576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102737f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663673a2a1f6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156103c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261040d9190810190610a56565b610888565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa15801561049c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c091906109d5565b6104f6576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102737f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663941448566040518163ffffffff1660e01b8152600401600060405180830381865afa1580156103c7573d6000803e3d6000fd5b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa1580156105ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061291906109d5565b610648576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104f67f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663673a2a1f6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156103c7573d6000803e3d6000fd5b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa158015610740573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076491906109d5565b61079a576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610273610915565b60005460ff16610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b805160005b81811015610910578281815181106108a7576108a7610b39565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108f657600080fd5b505af1925050508015610907575060015b5060010161088d565b505050565b60005460ff1615610982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161080a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861085e3390565b6000602082840312156109e757600080fd5b815180151581146109f757600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b805173ffffffffffffffffffffffffffffffffffffffff81168114610a5157600080fd5b919050565b60006020808385031215610a6957600080fd5b825167ffffffffffffffff80821115610a8157600080fd5b818501915085601f830112610a9557600080fd5b815181811115610aa757610aa76109fe565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610aea57610aea6109fe565b604052918252848201925083810185019188831115610b0857600080fd5b938501935b82851015610b2d57610b1e85610a2d565b84529385019392850192610b0d565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220447f0f77525e705c0a5e6b52ca0e24e5cc01de5da45af8d70c2ebe6c0db8851364736f6c634300080a0033436f6e74726163747352656769737465722073657420696e636f72726563746c79a2646970667358221220786bbdb1798a270d75cf09193c4c055e6f04691ac4727d5e11e25d8fa8f0c0ec64736f6c634300080a0033";
|
|
352
|
-
|
|
353
|
-
type PauseMulticallTestConstructorParams =
|
|
354
|
-
| [signer?: Signer]
|
|
355
|
-
| ConstructorParameters<typeof ContractFactory>;
|
|
356
|
-
|
|
357
|
-
const isSuperArgs = (
|
|
358
|
-
xs: PauseMulticallTestConstructorParams
|
|
359
|
-
): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
|
|
360
|
-
|
|
361
|
-
export class PauseMulticallTest__factory extends ContractFactory {
|
|
362
|
-
constructor(...args: PauseMulticallTestConstructorParams) {
|
|
363
|
-
if (isSuperArgs(args)) {
|
|
364
|
-
super(...args);
|
|
365
|
-
} else {
|
|
366
|
-
super(_abi, _bytecode, args[0]);
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
override deploy(
|
|
371
|
-
overrides?: Overrides & { from?: string | Promise<string> }
|
|
372
|
-
): Promise<PauseMulticallTest> {
|
|
373
|
-
return super.deploy(overrides || {}) as Promise<PauseMulticallTest>;
|
|
374
|
-
}
|
|
375
|
-
override getDeployTransaction(
|
|
376
|
-
overrides?: Overrides & { from?: string | Promise<string> }
|
|
377
|
-
): TransactionRequest {
|
|
378
|
-
return super.getDeployTransaction(overrides || {});
|
|
379
|
-
}
|
|
380
|
-
override attach(address: string): PauseMulticallTest {
|
|
381
|
-
return super.attach(address) as PauseMulticallTest;
|
|
382
|
-
}
|
|
383
|
-
override connect(signer: Signer): PauseMulticallTest__factory {
|
|
384
|
-
return super.connect(signer) as PauseMulticallTest__factory;
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
static readonly bytecode = _bytecode;
|
|
388
|
-
static readonly abi = _abi;
|
|
389
|
-
static createInterface(): PauseMulticallTestInterface {
|
|
390
|
-
return new utils.Interface(_abi) as PauseMulticallTestInterface;
|
|
391
|
-
}
|
|
392
|
-
static connect(
|
|
393
|
-
address: string,
|
|
394
|
-
signerOrProvider: Signer | Provider
|
|
395
|
-
): PauseMulticallTest {
|
|
396
|
-
return new Contract(address, _abi, signerOrProvider) as PauseMulticallTest;
|
|
397
|
-
}
|
|
398
|
-
}
|