@gearbox-protocol/sdk 0.0.110 → 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 +1 -1
- package/lib/apy/convexAPY.js +7 -7
- package/lib/apy/curveAPY.js +4 -4
- package/lib/apy/index.d.ts +1 -1
- package/lib/apy/index.js +1 -1
- package/lib/apy/lidoAPY.js +7 -7
- package/lib/apy/yearnAPY.js +3 -3
- 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 +2 -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 +2 -2
- package/lib/core/creditManager.js +3 -3
- package/lib/core/creditSession.d.ts +1 -1
- package/lib/core/creditSession.js +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 +1 -1
- package/lib/core/tokenDistributor.js +1 -1
- package/lib/core/transactions.js +22 -22
- package/lib/index.d.ts +29 -29
- package/lib/index.js +37 -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 +13 -13
- 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 +7 -7
- package/lib/tokens/connectors.js +1 -1
- package/lib/tokens/convex.d.ts +2 -2
- package/lib/tokens/convex.js +50 -50
- package/lib/tokens/curveLP.d.ts +1 -1
- package/lib/tokens/curveLP.js +30 -30
- package/lib/tokens/gear.d.ts +1 -1
- package/lib/tokens/gear.js +6 -6
- package/lib/tokens/normal.js +176 -176
- package/lib/tokens/token.d.ts +3 -3
- package/lib/tokens/token.js +64 -64
- package/lib/tokens/tokenData.d.ts +1 -1
- package/lib/tokens/tokenData.js +4 -4
- package/lib/tokens/yearn.d.ts +1 -1
- package/lib/tokens/yearn.js +19 -19
- package/lib/utils/extracter.js +1 -1
- package/lib/utils/formatter.js +19 -12
- package/lib/utils/mappers.d.ts +1 -1
- package/lib/utils/mappers.js +1 -1
- package/lib/utils/multicall.js +2 -2
- package/lib/utils/network.js +3 -3
- 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/apy/convexAPY copy.d.ts +0 -6
- package/lib/apy/convexAPY copy.js +0 -201
- 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 -201
- package/src/apy/curveAPY.ts +0 -68
- package/src/apy/index.ts +0 -8
- package/src/apy/lidoAPY.ts +0 -89
- package/src/apy/yearnAPY.ts +0 -66
- 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 -68
- package/src/contracts/protocols.ts +0 -40
- package/src/core/constants.ts +0 -51
- package/src/core/creditAccount.ts +0 -160
- package/src/core/creditManager.ts +0 -309
- package/src/core/creditOperation.ts +0 -9
- package/src/core/creditSession.ts +0 -87
- package/src/core/errors.ts +0 -71
- 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/strategy.ts +0 -140
- 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 -414
- package/src/strategies/creditFacade.ts +0 -119
- package/src/strategies/curve.ts +0 -478
- package/src/strategies/lido.ts +0 -88
- package/src/strategies/uniswapV2.ts +0 -109
- package/src/strategies/uniswapV3.ts +0 -127
- package/src/strategies/yearn.ts +0 -219
- package/src/tokens/connectors.ts +0 -8
- package/src/tokens/convex.ts +0 -358
- package/src/tokens/curveLP.ts +0 -191
- package/src/tokens/gear.ts +0 -58
- package/src/tokens/normal.ts +0 -812
- package/src/tokens/token.ts +0 -256
- package/src/tokens/tokenData.ts +0 -85
- package/src/tokens/tokenType.ts +0 -12
- package/src/tokens/yearn.ts +0 -146
- 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/extracter.ts +0 -30
- 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/price.ts +0 -33
- 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,912 +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
|
-
SwapPathFinderTest,
|
|
8
|
-
SwapPathFinderTestInterface,
|
|
9
|
-
} from "../../../../../contracts/test/pathfinder/SwapPathFinder.t.sol/SwapPathFinderTest";
|
|
10
|
-
|
|
11
|
-
const _abi = [
|
|
12
|
-
{
|
|
13
|
-
inputs: [
|
|
14
|
-
{
|
|
15
|
-
internalType: "enum SwapOperation",
|
|
16
|
-
name: "",
|
|
17
|
-
type: "uint8",
|
|
18
|
-
},
|
|
19
|
-
],
|
|
20
|
-
name: "UnsupportedSwapOperation",
|
|
21
|
-
type: "error",
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
anonymous: false,
|
|
25
|
-
inputs: [
|
|
26
|
-
{
|
|
27
|
-
indexed: false,
|
|
28
|
-
internalType: "string",
|
|
29
|
-
name: "",
|
|
30
|
-
type: "string",
|
|
31
|
-
},
|
|
32
|
-
],
|
|
33
|
-
name: "log",
|
|
34
|
-
type: "event",
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
anonymous: false,
|
|
38
|
-
inputs: [
|
|
39
|
-
{
|
|
40
|
-
indexed: false,
|
|
41
|
-
internalType: "address",
|
|
42
|
-
name: "",
|
|
43
|
-
type: "address",
|
|
44
|
-
},
|
|
45
|
-
],
|
|
46
|
-
name: "log_address",
|
|
47
|
-
type: "event",
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
anonymous: false,
|
|
51
|
-
inputs: [
|
|
52
|
-
{
|
|
53
|
-
indexed: false,
|
|
54
|
-
internalType: "bytes",
|
|
55
|
-
name: "",
|
|
56
|
-
type: "bytes",
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
name: "log_bytes",
|
|
60
|
-
type: "event",
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
anonymous: false,
|
|
64
|
-
inputs: [
|
|
65
|
-
{
|
|
66
|
-
indexed: false,
|
|
67
|
-
internalType: "bytes32",
|
|
68
|
-
name: "",
|
|
69
|
-
type: "bytes32",
|
|
70
|
-
},
|
|
71
|
-
],
|
|
72
|
-
name: "log_bytes32",
|
|
73
|
-
type: "event",
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
anonymous: false,
|
|
77
|
-
inputs: [
|
|
78
|
-
{
|
|
79
|
-
indexed: false,
|
|
80
|
-
internalType: "int256",
|
|
81
|
-
name: "",
|
|
82
|
-
type: "int256",
|
|
83
|
-
},
|
|
84
|
-
],
|
|
85
|
-
name: "log_int",
|
|
86
|
-
type: "event",
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
anonymous: false,
|
|
90
|
-
inputs: [
|
|
91
|
-
{
|
|
92
|
-
indexed: false,
|
|
93
|
-
internalType: "string",
|
|
94
|
-
name: "key",
|
|
95
|
-
type: "string",
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
indexed: false,
|
|
99
|
-
internalType: "address",
|
|
100
|
-
name: "val",
|
|
101
|
-
type: "address",
|
|
102
|
-
},
|
|
103
|
-
],
|
|
104
|
-
name: "log_named_address",
|
|
105
|
-
type: "event",
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
anonymous: false,
|
|
109
|
-
inputs: [
|
|
110
|
-
{
|
|
111
|
-
indexed: false,
|
|
112
|
-
internalType: "string",
|
|
113
|
-
name: "key",
|
|
114
|
-
type: "string",
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
indexed: false,
|
|
118
|
-
internalType: "bytes",
|
|
119
|
-
name: "val",
|
|
120
|
-
type: "bytes",
|
|
121
|
-
},
|
|
122
|
-
],
|
|
123
|
-
name: "log_named_bytes",
|
|
124
|
-
type: "event",
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
anonymous: false,
|
|
128
|
-
inputs: [
|
|
129
|
-
{
|
|
130
|
-
indexed: false,
|
|
131
|
-
internalType: "string",
|
|
132
|
-
name: "key",
|
|
133
|
-
type: "string",
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
indexed: false,
|
|
137
|
-
internalType: "bytes32",
|
|
138
|
-
name: "val",
|
|
139
|
-
type: "bytes32",
|
|
140
|
-
},
|
|
141
|
-
],
|
|
142
|
-
name: "log_named_bytes32",
|
|
143
|
-
type: "event",
|
|
144
|
-
},
|
|
145
|
-
{
|
|
146
|
-
anonymous: false,
|
|
147
|
-
inputs: [
|
|
148
|
-
{
|
|
149
|
-
indexed: false,
|
|
150
|
-
internalType: "string",
|
|
151
|
-
name: "key",
|
|
152
|
-
type: "string",
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
indexed: false,
|
|
156
|
-
internalType: "int256",
|
|
157
|
-
name: "val",
|
|
158
|
-
type: "int256",
|
|
159
|
-
},
|
|
160
|
-
{
|
|
161
|
-
indexed: false,
|
|
162
|
-
internalType: "uint256",
|
|
163
|
-
name: "decimals",
|
|
164
|
-
type: "uint256",
|
|
165
|
-
},
|
|
166
|
-
],
|
|
167
|
-
name: "log_named_decimal_int",
|
|
168
|
-
type: "event",
|
|
169
|
-
},
|
|
170
|
-
{
|
|
171
|
-
anonymous: false,
|
|
172
|
-
inputs: [
|
|
173
|
-
{
|
|
174
|
-
indexed: false,
|
|
175
|
-
internalType: "string",
|
|
176
|
-
name: "key",
|
|
177
|
-
type: "string",
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
indexed: false,
|
|
181
|
-
internalType: "uint256",
|
|
182
|
-
name: "val",
|
|
183
|
-
type: "uint256",
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
indexed: false,
|
|
187
|
-
internalType: "uint256",
|
|
188
|
-
name: "decimals",
|
|
189
|
-
type: "uint256",
|
|
190
|
-
},
|
|
191
|
-
],
|
|
192
|
-
name: "log_named_decimal_uint",
|
|
193
|
-
type: "event",
|
|
194
|
-
},
|
|
195
|
-
{
|
|
196
|
-
anonymous: false,
|
|
197
|
-
inputs: [
|
|
198
|
-
{
|
|
199
|
-
indexed: false,
|
|
200
|
-
internalType: "string",
|
|
201
|
-
name: "key",
|
|
202
|
-
type: "string",
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
indexed: false,
|
|
206
|
-
internalType: "int256",
|
|
207
|
-
name: "val",
|
|
208
|
-
type: "int256",
|
|
209
|
-
},
|
|
210
|
-
],
|
|
211
|
-
name: "log_named_int",
|
|
212
|
-
type: "event",
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
anonymous: false,
|
|
216
|
-
inputs: [
|
|
217
|
-
{
|
|
218
|
-
indexed: false,
|
|
219
|
-
internalType: "string",
|
|
220
|
-
name: "key",
|
|
221
|
-
type: "string",
|
|
222
|
-
},
|
|
223
|
-
{
|
|
224
|
-
indexed: false,
|
|
225
|
-
internalType: "string",
|
|
226
|
-
name: "val",
|
|
227
|
-
type: "string",
|
|
228
|
-
},
|
|
229
|
-
],
|
|
230
|
-
name: "log_named_string",
|
|
231
|
-
type: "event",
|
|
232
|
-
},
|
|
233
|
-
{
|
|
234
|
-
anonymous: false,
|
|
235
|
-
inputs: [
|
|
236
|
-
{
|
|
237
|
-
indexed: false,
|
|
238
|
-
internalType: "string",
|
|
239
|
-
name: "key",
|
|
240
|
-
type: "string",
|
|
241
|
-
},
|
|
242
|
-
{
|
|
243
|
-
indexed: false,
|
|
244
|
-
internalType: "uint256",
|
|
245
|
-
name: "val",
|
|
246
|
-
type: "uint256",
|
|
247
|
-
},
|
|
248
|
-
],
|
|
249
|
-
name: "log_named_uint",
|
|
250
|
-
type: "event",
|
|
251
|
-
},
|
|
252
|
-
{
|
|
253
|
-
anonymous: false,
|
|
254
|
-
inputs: [
|
|
255
|
-
{
|
|
256
|
-
indexed: false,
|
|
257
|
-
internalType: "string",
|
|
258
|
-
name: "",
|
|
259
|
-
type: "string",
|
|
260
|
-
},
|
|
261
|
-
],
|
|
262
|
-
name: "log_string",
|
|
263
|
-
type: "event",
|
|
264
|
-
},
|
|
265
|
-
{
|
|
266
|
-
anonymous: false,
|
|
267
|
-
inputs: [
|
|
268
|
-
{
|
|
269
|
-
indexed: false,
|
|
270
|
-
internalType: "uint256",
|
|
271
|
-
name: "",
|
|
272
|
-
type: "uint256",
|
|
273
|
-
},
|
|
274
|
-
],
|
|
275
|
-
name: "log_uint",
|
|
276
|
-
type: "event",
|
|
277
|
-
},
|
|
278
|
-
{
|
|
279
|
-
anonymous: false,
|
|
280
|
-
inputs: [
|
|
281
|
-
{
|
|
282
|
-
indexed: false,
|
|
283
|
-
internalType: "bytes",
|
|
284
|
-
name: "",
|
|
285
|
-
type: "bytes",
|
|
286
|
-
},
|
|
287
|
-
],
|
|
288
|
-
name: "logs",
|
|
289
|
-
type: "event",
|
|
290
|
-
},
|
|
291
|
-
{
|
|
292
|
-
inputs: [],
|
|
293
|
-
name: "IS_TEST",
|
|
294
|
-
outputs: [
|
|
295
|
-
{
|
|
296
|
-
internalType: "bool",
|
|
297
|
-
name: "",
|
|
298
|
-
type: "bool",
|
|
299
|
-
},
|
|
300
|
-
],
|
|
301
|
-
stateMutability: "view",
|
|
302
|
-
type: "function",
|
|
303
|
-
},
|
|
304
|
-
{
|
|
305
|
-
inputs: [
|
|
306
|
-
{
|
|
307
|
-
internalType: "bool",
|
|
308
|
-
name: "withUnderlyings",
|
|
309
|
-
type: "bool",
|
|
310
|
-
},
|
|
311
|
-
],
|
|
312
|
-
name: "_setUpCurve",
|
|
313
|
-
outputs: [],
|
|
314
|
-
stateMutability: "nonpayable",
|
|
315
|
-
type: "function",
|
|
316
|
-
},
|
|
317
|
-
{
|
|
318
|
-
inputs: [],
|
|
319
|
-
name: "cft",
|
|
320
|
-
outputs: [
|
|
321
|
-
{
|
|
322
|
-
internalType: "contract CreditFacadeTestSuite",
|
|
323
|
-
name: "",
|
|
324
|
-
type: "address",
|
|
325
|
-
},
|
|
326
|
-
],
|
|
327
|
-
stateMutability: "view",
|
|
328
|
-
type: "function",
|
|
329
|
-
},
|
|
330
|
-
{
|
|
331
|
-
inputs: [],
|
|
332
|
-
name: "creditConfigurator",
|
|
333
|
-
outputs: [
|
|
334
|
-
{
|
|
335
|
-
internalType: "contract CreditConfigurator",
|
|
336
|
-
name: "",
|
|
337
|
-
type: "address",
|
|
338
|
-
},
|
|
339
|
-
],
|
|
340
|
-
stateMutability: "view",
|
|
341
|
-
type: "function",
|
|
342
|
-
},
|
|
343
|
-
{
|
|
344
|
-
inputs: [],
|
|
345
|
-
name: "creditFacade",
|
|
346
|
-
outputs: [
|
|
347
|
-
{
|
|
348
|
-
internalType: "contract CreditFacade",
|
|
349
|
-
name: "",
|
|
350
|
-
type: "address",
|
|
351
|
-
},
|
|
352
|
-
],
|
|
353
|
-
stateMutability: "view",
|
|
354
|
-
type: "function",
|
|
355
|
-
},
|
|
356
|
-
{
|
|
357
|
-
inputs: [],
|
|
358
|
-
name: "creditManager",
|
|
359
|
-
outputs: [
|
|
360
|
-
{
|
|
361
|
-
internalType: "contract ICreditManagerV2",
|
|
362
|
-
name: "",
|
|
363
|
-
type: "address",
|
|
364
|
-
},
|
|
365
|
-
],
|
|
366
|
-
stateMutability: "view",
|
|
367
|
-
type: "function",
|
|
368
|
-
},
|
|
369
|
-
{
|
|
370
|
-
inputs: [],
|
|
371
|
-
name: "curveAdapter",
|
|
372
|
-
outputs: [
|
|
373
|
-
{
|
|
374
|
-
internalType: "contract ICurveV1Adapter",
|
|
375
|
-
name: "",
|
|
376
|
-
type: "address",
|
|
377
|
-
},
|
|
378
|
-
],
|
|
379
|
-
stateMutability: "view",
|
|
380
|
-
type: "function",
|
|
381
|
-
},
|
|
382
|
-
{
|
|
383
|
-
inputs: [],
|
|
384
|
-
name: "curveLPPathFinder",
|
|
385
|
-
outputs: [
|
|
386
|
-
{
|
|
387
|
-
internalType: "contract CurveLPPathFinder",
|
|
388
|
-
name: "",
|
|
389
|
-
type: "address",
|
|
390
|
-
},
|
|
391
|
-
],
|
|
392
|
-
stateMutability: "view",
|
|
393
|
-
type: "function",
|
|
394
|
-
},
|
|
395
|
-
{
|
|
396
|
-
inputs: [],
|
|
397
|
-
name: "curveMetaAdapter",
|
|
398
|
-
outputs: [
|
|
399
|
-
{
|
|
400
|
-
internalType: "contract ICurveV1Adapter",
|
|
401
|
-
name: "",
|
|
402
|
-
type: "address",
|
|
403
|
-
},
|
|
404
|
-
],
|
|
405
|
-
stateMutability: "view",
|
|
406
|
-
type: "function",
|
|
407
|
-
},
|
|
408
|
-
{
|
|
409
|
-
inputs: [],
|
|
410
|
-
name: "curvePathFinder",
|
|
411
|
-
outputs: [
|
|
412
|
-
{
|
|
413
|
-
internalType: "contract CurvePathFinder",
|
|
414
|
-
name: "",
|
|
415
|
-
type: "address",
|
|
416
|
-
},
|
|
417
|
-
],
|
|
418
|
-
stateMutability: "view",
|
|
419
|
-
type: "function",
|
|
420
|
-
},
|
|
421
|
-
{
|
|
422
|
-
inputs: [],
|
|
423
|
-
name: "curveV1MetaMock",
|
|
424
|
-
outputs: [
|
|
425
|
-
{
|
|
426
|
-
internalType: "contract CurveV1MetapoolMock",
|
|
427
|
-
name: "",
|
|
428
|
-
type: "address",
|
|
429
|
-
},
|
|
430
|
-
],
|
|
431
|
-
stateMutability: "view",
|
|
432
|
-
type: "function",
|
|
433
|
-
},
|
|
434
|
-
{
|
|
435
|
-
inputs: [],
|
|
436
|
-
name: "curveV1Mock",
|
|
437
|
-
outputs: [
|
|
438
|
-
{
|
|
439
|
-
internalType: "contract CurveV1Mock",
|
|
440
|
-
name: "",
|
|
441
|
-
type: "address",
|
|
442
|
-
},
|
|
443
|
-
],
|
|
444
|
-
stateMutability: "view",
|
|
445
|
-
type: "function",
|
|
446
|
-
},
|
|
447
|
-
{
|
|
448
|
-
inputs: [],
|
|
449
|
-
name: "failed",
|
|
450
|
-
outputs: [
|
|
451
|
-
{
|
|
452
|
-
internalType: "bool",
|
|
453
|
-
name: "",
|
|
454
|
-
type: "bool",
|
|
455
|
-
},
|
|
456
|
-
],
|
|
457
|
-
stateMutability: "nonpayable",
|
|
458
|
-
type: "function",
|
|
459
|
-
},
|
|
460
|
-
{
|
|
461
|
-
inputs: [],
|
|
462
|
-
name: "setUp",
|
|
463
|
-
outputs: [],
|
|
464
|
-
stateMutability: "nonpayable",
|
|
465
|
-
type: "function",
|
|
466
|
-
},
|
|
467
|
-
{
|
|
468
|
-
inputs: [],
|
|
469
|
-
name: "test_NTP_01_constructor_correctly_sets_initial_values",
|
|
470
|
-
outputs: [],
|
|
471
|
-
stateMutability: "nonpayable",
|
|
472
|
-
type: "function",
|
|
473
|
-
},
|
|
474
|
-
{
|
|
475
|
-
inputs: [],
|
|
476
|
-
name: "test_NTP_02_getPathFinder_returns_correct_values",
|
|
477
|
-
outputs: [],
|
|
478
|
-
stateMutability: "nonpayable",
|
|
479
|
-
type: "function",
|
|
480
|
-
},
|
|
481
|
-
{
|
|
482
|
-
inputs: [
|
|
483
|
-
{
|
|
484
|
-
internalType: "bool",
|
|
485
|
-
name: "isAll",
|
|
486
|
-
type: "bool",
|
|
487
|
-
},
|
|
488
|
-
],
|
|
489
|
-
name: "test_NTP_03_findAllSwaps_found_a_pair_if_only_one_is_depdloyed",
|
|
490
|
-
outputs: [],
|
|
491
|
-
stateMutability: "nonpayable",
|
|
492
|
-
type: "function",
|
|
493
|
-
},
|
|
494
|
-
{
|
|
495
|
-
inputs: [
|
|
496
|
-
{
|
|
497
|
-
internalType: "uint256",
|
|
498
|
-
name: "amountIn",
|
|
499
|
-
type: "uint256",
|
|
500
|
-
},
|
|
501
|
-
{
|
|
502
|
-
internalType: "uint16",
|
|
503
|
-
name: "slippage",
|
|
504
|
-
type: "uint16",
|
|
505
|
-
},
|
|
506
|
-
{
|
|
507
|
-
internalType: "bool",
|
|
508
|
-
name: "isAll",
|
|
509
|
-
type: "bool",
|
|
510
|
-
},
|
|
511
|
-
{
|
|
512
|
-
internalType: "bool",
|
|
513
|
-
name: "externalSlippage",
|
|
514
|
-
type: "bool",
|
|
515
|
-
},
|
|
516
|
-
],
|
|
517
|
-
name: "test_NTP_04_findAllSwaps_found_quotes_INPUT",
|
|
518
|
-
outputs: [],
|
|
519
|
-
stateMutability: "nonpayable",
|
|
520
|
-
type: "function",
|
|
521
|
-
},
|
|
522
|
-
{
|
|
523
|
-
inputs: [
|
|
524
|
-
{
|
|
525
|
-
internalType: "uint256",
|
|
526
|
-
name: "amountOut",
|
|
527
|
-
type: "uint256",
|
|
528
|
-
},
|
|
529
|
-
{
|
|
530
|
-
internalType: "uint16",
|
|
531
|
-
name: "slippage",
|
|
532
|
-
type: "uint16",
|
|
533
|
-
},
|
|
534
|
-
{
|
|
535
|
-
internalType: "bool",
|
|
536
|
-
name: "externalSlippage",
|
|
537
|
-
type: "bool",
|
|
538
|
-
},
|
|
539
|
-
],
|
|
540
|
-
name: "test_NTP_05_findAllSwaps_found_quotes_OUTPUT",
|
|
541
|
-
outputs: [],
|
|
542
|
-
stateMutability: "nonpayable",
|
|
543
|
-
type: "function",
|
|
544
|
-
},
|
|
545
|
-
{
|
|
546
|
-
inputs: [
|
|
547
|
-
{
|
|
548
|
-
internalType: "uint256",
|
|
549
|
-
name: "amountIn",
|
|
550
|
-
type: "uint256",
|
|
551
|
-
},
|
|
552
|
-
{
|
|
553
|
-
internalType: "uint16",
|
|
554
|
-
name: "slippage",
|
|
555
|
-
type: "uint16",
|
|
556
|
-
},
|
|
557
|
-
{
|
|
558
|
-
internalType: "bool",
|
|
559
|
-
name: "isAll",
|
|
560
|
-
type: "bool",
|
|
561
|
-
},
|
|
562
|
-
{
|
|
563
|
-
internalType: "bool",
|
|
564
|
-
name: "externalSlippage",
|
|
565
|
-
type: "bool",
|
|
566
|
-
},
|
|
567
|
-
],
|
|
568
|
-
name: "test_NTP_06_findAllSwaps_found_connector_quotes_and_take_the_best_INPUT",
|
|
569
|
-
outputs: [],
|
|
570
|
-
stateMutability: "nonpayable",
|
|
571
|
-
type: "function",
|
|
572
|
-
},
|
|
573
|
-
{
|
|
574
|
-
inputs: [
|
|
575
|
-
{
|
|
576
|
-
internalType: "uint256",
|
|
577
|
-
name: "amountOut",
|
|
578
|
-
type: "uint256",
|
|
579
|
-
},
|
|
580
|
-
{
|
|
581
|
-
internalType: "uint16",
|
|
582
|
-
name: "slippage",
|
|
583
|
-
type: "uint16",
|
|
584
|
-
},
|
|
585
|
-
{
|
|
586
|
-
internalType: "bool",
|
|
587
|
-
name: "externalSlippage",
|
|
588
|
-
type: "bool",
|
|
589
|
-
},
|
|
590
|
-
],
|
|
591
|
-
name: "test_NTP_07_findAllSwaps_found_connector_quotes_and_take_the_best_OUTPUT",
|
|
592
|
-
outputs: [],
|
|
593
|
-
stateMutability: "nonpayable",
|
|
594
|
-
type: "function",
|
|
595
|
-
},
|
|
596
|
-
{
|
|
597
|
-
inputs: [
|
|
598
|
-
{
|
|
599
|
-
internalType: "uint256",
|
|
600
|
-
name: "amountIn",
|
|
601
|
-
type: "uint256",
|
|
602
|
-
},
|
|
603
|
-
{
|
|
604
|
-
internalType: "uint16",
|
|
605
|
-
name: "slippage",
|
|
606
|
-
type: "uint16",
|
|
607
|
-
},
|
|
608
|
-
{
|
|
609
|
-
internalType: "bool",
|
|
610
|
-
name: "isAll",
|
|
611
|
-
type: "bool",
|
|
612
|
-
},
|
|
613
|
-
{
|
|
614
|
-
internalType: "bool",
|
|
615
|
-
name: "externalSlippage",
|
|
616
|
-
type: "bool",
|
|
617
|
-
},
|
|
618
|
-
],
|
|
619
|
-
name: "test_NTP_08_getBestDirectPairSwap_found_the_best_swap_with_INPUT_GP_0",
|
|
620
|
-
outputs: [],
|
|
621
|
-
stateMutability: "nonpayable",
|
|
622
|
-
type: "function",
|
|
623
|
-
},
|
|
624
|
-
{
|
|
625
|
-
inputs: [
|
|
626
|
-
{
|
|
627
|
-
internalType: "uint256",
|
|
628
|
-
name: "amountIn",
|
|
629
|
-
type: "uint256",
|
|
630
|
-
},
|
|
631
|
-
{
|
|
632
|
-
internalType: "uint16",
|
|
633
|
-
name: "slippage",
|
|
634
|
-
type: "uint16",
|
|
635
|
-
},
|
|
636
|
-
{
|
|
637
|
-
internalType: "bool",
|
|
638
|
-
name: "isAll",
|
|
639
|
-
type: "bool",
|
|
640
|
-
},
|
|
641
|
-
{
|
|
642
|
-
internalType: "bool",
|
|
643
|
-
name: "externalSlippage",
|
|
644
|
-
type: "bool",
|
|
645
|
-
},
|
|
646
|
-
{
|
|
647
|
-
internalType: "uint8",
|
|
648
|
-
name: "whoWins",
|
|
649
|
-
type: "uint8",
|
|
650
|
-
},
|
|
651
|
-
],
|
|
652
|
-
name: "test_NTP_08_getBestDirectPairSwap_found_the_best_swap_with_INPUT_GP_non_zero",
|
|
653
|
-
outputs: [],
|
|
654
|
-
stateMutability: "nonpayable",
|
|
655
|
-
type: "function",
|
|
656
|
-
},
|
|
657
|
-
{
|
|
658
|
-
inputs: [
|
|
659
|
-
{
|
|
660
|
-
internalType: "uint256",
|
|
661
|
-
name: "amountOut",
|
|
662
|
-
type: "uint256",
|
|
663
|
-
},
|
|
664
|
-
{
|
|
665
|
-
internalType: "uint16",
|
|
666
|
-
name: "slippage",
|
|
667
|
-
type: "uint16",
|
|
668
|
-
},
|
|
669
|
-
{
|
|
670
|
-
internalType: "bool",
|
|
671
|
-
name: "isAll",
|
|
672
|
-
type: "bool",
|
|
673
|
-
},
|
|
674
|
-
{
|
|
675
|
-
internalType: "bool",
|
|
676
|
-
name: "externalSlippage",
|
|
677
|
-
type: "bool",
|
|
678
|
-
},
|
|
679
|
-
],
|
|
680
|
-
name: "test_NTP_09_getBestDirectPairSwap_found_the_best_swap_with_OUTPUT_GP_0",
|
|
681
|
-
outputs: [],
|
|
682
|
-
stateMutability: "nonpayable",
|
|
683
|
-
type: "function",
|
|
684
|
-
},
|
|
685
|
-
{
|
|
686
|
-
inputs: [
|
|
687
|
-
{
|
|
688
|
-
internalType: "uint256",
|
|
689
|
-
name: "amountOut",
|
|
690
|
-
type: "uint256",
|
|
691
|
-
},
|
|
692
|
-
{
|
|
693
|
-
internalType: "uint16",
|
|
694
|
-
name: "slippage",
|
|
695
|
-
type: "uint16",
|
|
696
|
-
},
|
|
697
|
-
{
|
|
698
|
-
internalType: "bool",
|
|
699
|
-
name: "externalSlippage",
|
|
700
|
-
type: "bool",
|
|
701
|
-
},
|
|
702
|
-
{
|
|
703
|
-
internalType: "uint8",
|
|
704
|
-
name: "whoWins",
|
|
705
|
-
type: "uint8",
|
|
706
|
-
},
|
|
707
|
-
],
|
|
708
|
-
name: "test_NTP_10_getBestDirectPairSwap_found_the_best_swap_with_OUTPUT_GP_non_zero",
|
|
709
|
-
outputs: [],
|
|
710
|
-
stateMutability: "nonpayable",
|
|
711
|
-
type: "function",
|
|
712
|
-
},
|
|
713
|
-
{
|
|
714
|
-
inputs: [
|
|
715
|
-
{
|
|
716
|
-
internalType: "address",
|
|
717
|
-
name: "",
|
|
718
|
-
type: "address",
|
|
719
|
-
},
|
|
720
|
-
],
|
|
721
|
-
name: "tokenMasksMap",
|
|
722
|
-
outputs: [
|
|
723
|
-
{
|
|
724
|
-
internalType: "uint256",
|
|
725
|
-
name: "",
|
|
726
|
-
type: "uint256",
|
|
727
|
-
},
|
|
728
|
-
],
|
|
729
|
-
stateMutability: "pure",
|
|
730
|
-
type: "function",
|
|
731
|
-
},
|
|
732
|
-
{
|
|
733
|
-
inputs: [],
|
|
734
|
-
name: "underlying",
|
|
735
|
-
outputs: [
|
|
736
|
-
{
|
|
737
|
-
internalType: "address",
|
|
738
|
-
name: "",
|
|
739
|
-
type: "address",
|
|
740
|
-
},
|
|
741
|
-
],
|
|
742
|
-
stateMutability: "view",
|
|
743
|
-
type: "function",
|
|
744
|
-
},
|
|
745
|
-
{
|
|
746
|
-
inputs: [],
|
|
747
|
-
name: "uniV2adapter",
|
|
748
|
-
outputs: [
|
|
749
|
-
{
|
|
750
|
-
internalType: "contract IUniswapV2Adapter",
|
|
751
|
-
name: "",
|
|
752
|
-
type: "address",
|
|
753
|
-
},
|
|
754
|
-
],
|
|
755
|
-
stateMutability: "view",
|
|
756
|
-
type: "function",
|
|
757
|
-
},
|
|
758
|
-
{
|
|
759
|
-
inputs: [],
|
|
760
|
-
name: "uniV2mock",
|
|
761
|
-
outputs: [
|
|
762
|
-
{
|
|
763
|
-
internalType: "contract UniswapV2Mock",
|
|
764
|
-
name: "",
|
|
765
|
-
type: "address",
|
|
766
|
-
},
|
|
767
|
-
],
|
|
768
|
-
stateMutability: "view",
|
|
769
|
-
type: "function",
|
|
770
|
-
},
|
|
771
|
-
{
|
|
772
|
-
inputs: [],
|
|
773
|
-
name: "uniV2pathFinder",
|
|
774
|
-
outputs: [
|
|
775
|
-
{
|
|
776
|
-
internalType: "contract UniswapV2PathFinder",
|
|
777
|
-
name: "",
|
|
778
|
-
type: "address",
|
|
779
|
-
},
|
|
780
|
-
],
|
|
781
|
-
stateMutability: "view",
|
|
782
|
-
type: "function",
|
|
783
|
-
},
|
|
784
|
-
{
|
|
785
|
-
inputs: [],
|
|
786
|
-
name: "uniV3adapter",
|
|
787
|
-
outputs: [
|
|
788
|
-
{
|
|
789
|
-
internalType: "contract IUniswapV3Adapter",
|
|
790
|
-
name: "",
|
|
791
|
-
type: "address",
|
|
792
|
-
},
|
|
793
|
-
],
|
|
794
|
-
stateMutability: "view",
|
|
795
|
-
type: "function",
|
|
796
|
-
},
|
|
797
|
-
{
|
|
798
|
-
inputs: [],
|
|
799
|
-
name: "uniV3mock",
|
|
800
|
-
outputs: [
|
|
801
|
-
{
|
|
802
|
-
internalType: "contract UniswapV3Mock",
|
|
803
|
-
name: "",
|
|
804
|
-
type: "address",
|
|
805
|
-
},
|
|
806
|
-
],
|
|
807
|
-
stateMutability: "view",
|
|
808
|
-
type: "function",
|
|
809
|
-
},
|
|
810
|
-
{
|
|
811
|
-
inputs: [],
|
|
812
|
-
name: "uniV3pathFinder",
|
|
813
|
-
outputs: [
|
|
814
|
-
{
|
|
815
|
-
internalType: "contract UniswapV3PathFinder",
|
|
816
|
-
name: "",
|
|
817
|
-
type: "address",
|
|
818
|
-
},
|
|
819
|
-
],
|
|
820
|
-
stateMutability: "view",
|
|
821
|
-
type: "function",
|
|
822
|
-
},
|
|
823
|
-
{
|
|
824
|
-
inputs: [],
|
|
825
|
-
name: "yearnAdapter",
|
|
826
|
-
outputs: [
|
|
827
|
-
{
|
|
828
|
-
internalType: "contract YearnV2Adapter",
|
|
829
|
-
name: "",
|
|
830
|
-
type: "address",
|
|
831
|
-
},
|
|
832
|
-
],
|
|
833
|
-
stateMutability: "view",
|
|
834
|
-
type: "function",
|
|
835
|
-
},
|
|
836
|
-
{
|
|
837
|
-
inputs: [],
|
|
838
|
-
name: "yearnMock",
|
|
839
|
-
outputs: [
|
|
840
|
-
{
|
|
841
|
-
internalType: "contract YearnV2Mock",
|
|
842
|
-
name: "",
|
|
843
|
-
type: "address",
|
|
844
|
-
},
|
|
845
|
-
],
|
|
846
|
-
stateMutability: "view",
|
|
847
|
-
type: "function",
|
|
848
|
-
},
|
|
849
|
-
{
|
|
850
|
-
inputs: [],
|
|
851
|
-
name: "yearnPathFinder",
|
|
852
|
-
outputs: [
|
|
853
|
-
{
|
|
854
|
-
internalType: "contract YearnPathFinder",
|
|
855
|
-
name: "",
|
|
856
|
-
type: "address",
|
|
857
|
-
},
|
|
858
|
-
],
|
|
859
|
-
stateMutability: "view",
|
|
860
|
-
type: "function",
|
|
861
|
-
},
|
|
862
|
-
];
|
|
863
|
-
|
|
864
|
-
const _bytecode =
|
|
865
|
-
"0x60806040526000805461ff01600160b01b031916757109709ecfa91a80626ff3989d68f67f5b1dd12d00011790553480156200003a57600080fd5b506202ac2a806200004c6000396000f3fe60806040523480156200001157600080fd5b50600436106200028d5760003560e01c80639b6a80a7116200015f578063df51443311620000cc578063f7a6a10a1162000097578063f9aa028a116200007a578063f9aa028a1462000655578063fa7626d41462000676578063fca2cea5146200068457600080fd5b8063f7a6a10a1462000627578063f986740c146200063e57600080fd5b8063df514433146200059e578063eeef8dd014620005bf578063f310c6da14620005e0578063f67c5bd0146200060157600080fd5b8063bb49900a116200012a578063cac283c8116200010d578063cac283c8146200053b578063ceab1386146200055c578063d8d7ca3c146200057d57600080fd5b8063bb49900a1462000503578063c12c21c0146200051a57600080fd5b80639b6a80a7146200048f5780639f2f4bed14620004b05780639f8ad9ec14620004c7578063ba414fa614620004e857600080fd5b80632b9d0d2811620001fe5780634b7b24a511620001c95780635d9bb10311620001ac5780635d9bb10314620004365780635ebb2361146200044d5780636f307dc3146200046e57600080fd5b80634b7b24a514620003f45780635a521cf8146200041557600080fd5b80632b9d0d28146200039b5780632f7a188114620003b25780633669eb9c14620003d35780633e1a8dd314620003ea57600080fd5b80631c9a755f116200025c57806322a1398c116200023f57806322a1398c146200034f578063287b94d7146200035957806329d351d8146200037a57600080fd5b80631c9a755f14620003175780632294bb0f146200033857600080fd5b80630a9254e414620002925780631398d247146200029e5780631497761e14620002b557806318486d631462000300575b600080fd5b6200029c620006a5565b005b6200029c620002af36600462007f7a565b6200078f565b600754620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6200029c6200031136600462007f7a565b62000b9c565b601254620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b6200029c6200034936600462007fe4565b62000fa9565b6200029c620014d3565b600b54620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b600854620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b6200029c620003ac3660046200803a565b62001766565b600254620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b6200029c620003e43660046200803a565b62002935565b6200029c62002e46565b600a54620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b600e54620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b6200029c620004473660046200805a565b62002f9f565b600c54620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b600554620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b601354620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b6200029c620004c13660046200809f565b6200326d565b600d54620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b620004f2620038a7565b6040519015158152602001620002f7565b6200029c620005143660046200805a565b62003a11565b600154620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b601454620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b601154620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b600954620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b600454620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b600f54620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b601554620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b62000618620006123660046200812d565b50600190565b604051908152602001620002f7565b6200029c6200063836600462007f7a565b62003e0e565b6200029c6200064f36600462007f7a565b62004079565b600354620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b600054620004f29060ff1681565b601054620002d69073ffffffffffffffffffffffffffffffffffffffff1681565b620006b1600162001766565b620006bb620042af565b620006c562004667565b600b54600f5460125460405173ffffffffffffffffffffffffffffffffffffffff938416939283169290911690620006fd9062007eb0565b73ffffffffffffffffffffffffffffffffffffffff938416815291831660208301529091166040820152606001604051809103906000f08015801562000747573d6000803e3d6000fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000546040517f4c63e56200000000000000000000000000000000000000000000000000000000815261271061ffff86161060048201526201000090910473ffffffffffffffffffffffffffffffffffffffff1690634c63e56290602401600060405180830381600087803b1580156200080857600080fd5b505af11580156200081d573d6000803e3d6000fd5b505060005462010000900473ffffffffffffffffffffffffffffffffffffffff169150634c63e5629050600a861180156200087057506200086d6b033b2e3c9fd0803ce80000006103e86200817c565b86105b6040518263ffffffff1660e01b815260040162000891911515815260200190565b600060405180830381600087803b158015620008ac57600080fd5b505af1158015620008c1573d6000803e3d6000fd5b50505050600061138890506000620008ed84620008e0576000620008e3565b60015b8787868662004a82565b60165490915060009073ffffffffffffffffffffffffffffffffffffffff166337c605f7836200091c62004f00565b6040518363ffffffff1660e01b81526004016200093b9291906200831e565b6000604051808303816000875af11580156200095b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052620009a391908101906200858b565b90506000620009b48860046200817c565b905062000a2882600081518110620009d057620009d06200865c565b6020026020010151620009ec8584600160006001600062004f48565b6040518060400160405280601681526020017f43555256452051554f544520494e434f52524543543a0000000000000000000081525062004fc2565b6103e86103e562000a3b8a60026200817c565b62000a4791906200817c565b62000a5391906200868b565b9050600062000a6b84604001518560600151620050e9565b905062000ada8360018151811062000a875762000a876200865c565b602002602001015162000a9e8685856000620051b1565b6040518060400160405280601781526020017f554e495f56322051554f544520494e434f52524543543a00000000000000000081525062004fc2565b620f424062000aea8682620086c7565b62ffffff16600a62000afe8c600f6200817c565b62000b0a91906200868b565b62000b1691906200817c565b62000b2291906200868b565b915062000b918360028151811062000b3e5762000b3e6200865c565b602002602001015162000b55868589600062005227565b6040518060400160405280601781526020017f554e495f56332051554f544520494e434f52524543543a00000000000000000081525062004fc2565b505050505050505050565b6000546040517f4c63e56200000000000000000000000000000000000000000000000000000000815261271061ffff86161060048201526201000090910473ffffffffffffffffffffffffffffffffffffffff1690634c63e56290602401600060405180830381600087803b15801562000c1557600080fd5b505af115801562000c2a573d6000803e3d6000fd5b505060005462010000900473ffffffffffffffffffffffffffffffffffffffff169150634c63e5629050600a8611801562000c7d575062000c7a6b033b2e3c9fd0803ce80000006103e86200817c565b86105b6040518263ffffffff1660e01b815260040162000c9e911515815260200190565b600060405180830381600087803b15801562000cb957600080fd5b505af115801562000cce573d6000803e3d6000fd5b506103e89250611388915060009050808062000cff8762000cf157600062000cf4565b60015b8a8a8989896200527d565b601654929550909350915060009073ffffffffffffffffffffffffffffffffffffffff166337c605f78562000d3362004f00565b6040518363ffffffff1660e01b815260040162000d529291906200831e565b6000604051808303816000875af115801562000d72573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262000dba91908101906200858b565b905060006103e86103e5818162000dd38f60026200817c565b62000ddf91906200817c565b62000deb91906200868b565b62000df89060026200817c565b62000e0491906200817c565b62000e1091906200868b565b9050600062000e29866040015186886060015162006122565b905062000e5c8360008151811062000e455762000e456200865c565b602002602001015162000a9e8885856000620051b1565b5060408086015160608088015183517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000093831b841660208201527fffffff000000000000000000000000000000000000000000000000000000000060e88d811b8216603484015289851b861660378401528c901b16604b820152911b909116604e820152815180820360420181526062909101909152620f424062000f028982620086c7565b62ffffff1662000f148e60026200817c565b62000f2091906200817c565b62000f2c91906200868b565b9150620f424062000f3e8882620086c7565b62ffffff1662000f508460026200817c565b62000f5c91906200817c565b62000f6891906200868b565b915062000f9b8360018151811062000f845762000f846200865c565b602002602001015162000b5588858560006200623e565b505050505050505050505050565b6000546040517f4c63e56200000000000000000000000000000000000000000000000000000000815261271061ffff86161060048201526201000090910473ffffffffffffffffffffffffffffffffffffffff1690634c63e56290602401600060405180830381600087803b1580156200102257600080fd5b505af115801562001037573d6000803e3d6000fd5b505060005462010000900473ffffffffffffffffffffffffffffffffffffffff169150634c63e56290506103e8861180156200108b5750620010886b033b2e3c9fd0803ce80000006103e86200817c565b86105b6040518263ffffffff1660e01b8152600401620010ac911515815260200190565b600060405180830381600087803b158015620010c757600080fd5b505af1158015620010dc573d6000803e3d6000fd5b50506000546040517f4c63e562000000000000000000000000000000000000000000000000000000008152600260ff86161060048201526201000090910473ffffffffffffffffffffffffffffffffffffffff169250634c63e5629150602401600060405180830381600087803b1580156200115757600080fd5b505af11580156200116c573d6000803e3d6000fd5b505050506000611388905060006200118960028787878662004a82565b600f54600e54604083810151606085015191517f4533066600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201529083166024820152908216604482015261300c60648201529293501690634533066690608401600060405180830381600087803b1580156200121d57600080fd5b505af115801562001232573d6000803e3d6000fd5b5050505060006103e56002886200124a91906200868b565b62001258906103e86200817c565b6200126491906200868b565b905060006200127784620f4240620086c7565b62ffffff16600f6200128b8a600a6200817c565b6200129791906200868b565b620012a690620f42406200817c565b620012b291906200868b565b9050600060ff861615620013145761300c6b033b2e3c9fd0803ce8000000620012dc8585620086ee565b620012e990600162008708565b620012f591906200817c565b6200130191906200868b565b6200130e90600162008708565b62001317565b60005b60165490915060009073ffffffffffffffffffffffffffffffffffffffff1663ebf9deac866200134662004f00565b856040518463ffffffff1660e01b8152600401620013679392919062008723565b6000604051808303816000875af115801562001387573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052620013cf91908101906200875d565b90507f2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c09693017556b033b2e3c9fd0803ce80000006200140d8461300c6200817c565b6200141991906200868b565b62001425908662008708565b60405190815260200160405180910390a16040518381527f2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c09693017559060200160405180910390a160ff8716620014a65760006200148886604001518760600151620050e9565b90506200149f8262000a9e88888561300c620051b1565b50620014c7565b8660ff1660011415620014c757620014c78162000b5587868a600062005227565b50505050505050505050565b6016546007546040517f8e8a085200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152620015ae929190911690638e8a085290602401602060405180830381865afa1580156200154d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200157391906200879e565b600b546040805160608101909152602580825273ffffffffffffffffffffffffffffffffffffffff909216916202abab602083013962006294565b601654600d546040517f8e8a085200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015262001689929190911690638e8a085290602401602060405180830381865afa15801562001628573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200164e91906200879e565b600f546040805160608101909152602580825273ffffffffffffffffffffffffffffffffffffffff909216916202ab86602083013962006294565b6016546010546040517f8e8a085200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015262001764929190911690638e8a085290602401602060405180830381865afa15801562001703573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200172991906200879e565b6012546040805160608101909152602580825273ffffffffffffffffffffffffffffffffffffffff909216916202abd0602083013962006294565b565b620017706200630d565b60085473ffffffffffffffffffffffffffffffffffffffff1662002932576006546040517f67b42645000000000000000000000000000000000000000000000000000000008152600091620019739173ffffffffffffffffffffffffffffffffffffffff909116906367b4264590620017ef90600790600401620087be565b602060405180830381865afa1580156200180d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200183391906200879e565b6006546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906367b42645906200188c90600890600401620087be565b602060405180830381865afa158015620018aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018d091906200879e565b6006546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906367b42645906200192990600990600401620087be565b602060405180830381865afa15801562001947573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200196d91906200879e565b62006122565b6006546040517f67b4264500000000000000000000000000000000000000000000000000000000815291925060009162001b0f9173ffffffffffffffffffffffffffffffffffffffff16906367b4264590620019d590600190600401620087be565b602060405180830381865afa158015620019f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a1991906200879e565b6006546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906367b426459062001a7290600290600401620087be565b602060405180830381865afa15801562001a90573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ab691906200879e565b6006546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906367b42645906200192990600590600401620087be565b60035490915073ffffffffffffffffffffffffffffffffffffffff1615158062001b37575082155b1562001b4257905060605b818160405162001b529062007ebe565b62001b5f929190620087db565b604051809103906000f08015801562001b7c573d6000803e3d6000fd5b50600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169182179055604080517ffc0c546a00000000000000000000000000000000000000000000000000000000815290516000929163fc0c546a9160048083019260209291908290030181865afa15801562001c19573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c3f91906200879e565b6000546040517fc657c71800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff62010000909104169063c657c7189062001cef90849060040173ffffffffffffffffffffffffffffffffffffffff9190911681526040602082018190526004908201527f3343525600000000000000000000000000000000000000000000000000000000606082015260800190565b600060405180830381600087803b15801562001d0a57600080fd5b505af115801562001d1f573d6000803e3d6000fd5b505060035473ffffffffffffffffffffffffffffffffffffffff16159150620025339050576000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001db4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001dda91906200879e565b60085460048054604080517f2630c12f000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9485169490921692632630c12f9282820192602092908290030181865afa15801562001e4f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e7591906200879e565b73ffffffffffffffffffffffffffffffffffffffff16639dcb511a8760008151811062001ea65762001ea66200865c565b60200260200101516040518263ffffffff1660e01b815260040162001ee7919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa15801562001f05573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f2b91906200879e565b60048054604080517f2630c12f000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921692632630c12f9282820192602092908290030181865afa15801562001f99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fbf91906200879e565b73ffffffffffffffffffffffffffffffffffffffff16639dcb511a8860018151811062001ff05762001ff06200865c565b60200260200101516040518263ffffffff1660e01b815260040162002031919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa1580156200204f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200207591906200879e565b60048054604080517f2630c12f000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921692632630c12f9282820192602092908290030181865afa158015620020e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200210991906200879e565b73ffffffffffffffffffffffffffffffffffffffff16639dcb511a896002815181106200213a576200213a6200865c565b60200260200101516040518263ffffffff1660e01b81526004016200217b919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa15801562002199573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021bf91906200879e565b604051620021cd9062007ecc565b73ffffffffffffffffffffffffffffffffffffffff95861681529385166020850152918416604084015283166060830152909116608082015260c060a082018190526011908201527f43757276654c503350726963654665656400000000000000000000000000000060e082015261010001604051809103906000f0801580156200225c573d6000803e3d6000fd5b506000546040517f06447d560000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015291925062010000900473ffffffffffffffffffffffffffffffffffffffff16906306447d5690602401600060405180830381600087803b158015620022e457600080fd5b505af1158015620022f9573d6000803e3d6000fd5b505060048054604080517f2630c12f000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169450632630c12f935080830192602092918290030181865afa1580156200236b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200239191906200879e565b6040517fe8a97a3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152919091169063e8a97a3e90604401600060405180830381600087803b1580156200240557600080fd5b505af11580156200241a573d6000803e3d6000fd5b50506003546040517f3e7c88d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152611e7860248301529091169250633e7c88d69150604401600060405180830381600087803b1580156200249457600080fd5b505af1158015620024a9573d6000803e3d6000fd5b50505050600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200251857600080fd5b505af11580156200252d573d6000803e3d6000fd5b50505050505b60015460085460405173ffffffffffffffffffffffffffffffffffffffff92831692909116908390600090620025699062007eda565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015620025bb573d6000803e3d6000fd5b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040516200260f9062007ee8565b604051809103906000f0801580156200262c573d6000803e3d6000fd5b50600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283169081179091556008546040517fd914cd4b000000000000000000000000000000000000000000000000000000008152921660048301529063d914cd4b90602401600060405180830381600087803b158015620026c657600080fd5b505af1158015620026db573d6000803e3d6000fd5b5050600054600754604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201526024810191909152600d60448201527f43555256455f414441505445520000000000000000000000000000000000000060648201526201000090920416925063c657c7189150608401600060405180830381600087803b1580156200278b57600080fd5b505af1158015620027a0573d6000803e3d6000fd5b5050600054600854604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201526024810191909152600a60448201527f43555256455f4d4f434b0000000000000000000000000000000000000000000060648201526201000090920416925063c657c7189150608401600060405180830381600087803b1580156200285057600080fd5b505af115801562002865573d6000803e3d6000fd5b5050600054600b54604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201526024810191909152601060448201527f43555256455f5041544846494e4445520000000000000000000000000000000060648201526201000090920416925063c657c7189150608401600060405180830381600087803b1580156200291557600080fd5b505af11580156200292a573d6000803e3d6000fd5b505050505050505b50565b6006546040517f67b4264500000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906367b42645906200298f90600290600401620087be565b602060405180830381865afa158015620029ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029d391906200879e565b6006546040517f67b4264500000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff909116906367b426459062002a3290600190600401620087be565b602060405180830381865afa15801562002a50573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a7691906200879e565b905060005b600381101562002e40578062002b33576011546040517f5911fb9a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301526b033b2e3c9fd0803ce8000000604483015290911690635911fb9a906064015b600060405180830381600087803b15801562002b1457600080fd5b505af115801562002b29573d6000803e3d6000fd5b5050505062002c80565b806001141562002bd657600e5473ffffffffffffffffffffffffffffffffffffffff16635911fb9a848462002b766b033b2e3c9fd0803ce800000060026200817c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff9384166004820152929091166024830152604482015260640162002af9565b806002141562002c80576008546040517f56ac350300000000000000000000000000000000000000000000000000000000815260006004820152600160248201526b033b2e3c9fd0803ce8000000604482015273ffffffffffffffffffffffffffffffffffffffff909116906356ac350390606401600060405180830381600087803b15801562002c6657600080fd5b505af115801562002c7b573d6000803e3d6000fd5b505050505b60006040518061010001604052808662002c9c57600062002c9f565b60015b600281111562002cb35762002cb3620081bc565b815273c4375b7de8af5a38a93548eb8453a498222c4ff2602082015273ffffffffffffffffffffffffffffffffffffffff86811660408301528516606082015260800162002cff606090565b8152670de0b6b3a7640000602082015261012c6040820152600060609091018190526016549192509073ffffffffffffffffffffffffffffffffffffffff166337c605f78362002d4e62004f00565b6040518363ffffffff1660e01b815260040162002d6d9291906200831e565b6000604051808303816000875af115801562002d8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262002dd591908101906200858b565b905062002e28815184600162002dec919062008708565b6040518060400160405280601881526020017f496e636f727265637420726573756c7473206c656e677468000000000000000081525062006437565b5050808062002e3790620087f0565b91505062002a7b565b50505050565b601654604080517f287b94d7000000000000000000000000000000000000000000000000000000008152905162002eb99273ffffffffffffffffffffffffffffffffffffffff169163287b94d79160048083019260209291908290030181865afa1580156200154d573d6000803e3d6000fd5b601654604080517feeef8dd0000000000000000000000000000000000000000000000000000000008152905162002f2c9273ffffffffffffffffffffffffffffffffffffffff169163eeef8dd09160048083019260209291908290030181865afa15801562001628573d6000803e3d6000fd5b601654604080517f1c9a755f0000000000000000000000000000000000000000000000000000000081529051620017649273ffffffffffffffffffffffffffffffffffffffff1691631c9a755f9160048083019260209291908290030181865afa15801562001703573d6000803e3d6000fd5b6000546040517f4c63e56200000000000000000000000000000000000000000000000000000000815261271061ffff85161060048201526201000090910473ffffffffffffffffffffffffffffffffffffffff1690634c63e56290602401600060405180830381600087803b1580156200301857600080fd5b505af11580156200302d573d6000803e3d6000fd5b505060005462010000900473ffffffffffffffffffffffffffffffffffffffff169150634c63e56290506103e8851180156200308157506200307e6b033b2e3c9fd0803ce80000006103e86200817c565b85105b6040518263ffffffff1660e01b8152600401620030a2911515815260200190565b600060405180830381600087803b158015620030bd57600080fd5b505af1158015620030d2573d6000803e3d6000fd5b50505050600061138890506000620030ef60028686868662004a82565b60165490915060009073ffffffffffffffffffffffffffffffffffffffff166337c605f7836200311e62004f00565b6040518363ffffffff1660e01b81526004016200313d9291906200831e565b6000604051808303816000875af11580156200315d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052620031a591908101906200858b565b905060006103e5620031b96002896200868b565b620031c7906103e86200817c565b620031d391906200868b565b90506000620031eb84604001518560600151620050e9565b9050620032078360008151811062000a875762000a876200865c565b6200321685620f4240620086c7565b62ffffff16600f6200322a8a600a6200817c565b6200323691906200868b565b6200324590620f42406200817c565b6200325191906200868b565b91506200292a8360018151811062000b3e5762000b3e6200865c565b6000546040517f4c63e56200000000000000000000000000000000000000000000000000000000815261271061ffff87161060048201526201000090910473ffffffffffffffffffffffffffffffffffffffff1690634c63e56290602401600060405180830381600087803b158015620032e657600080fd5b505af1158015620032fb573d6000803e3d6000fd5b505060005462010000900473ffffffffffffffffffffffffffffffffffffffff169150634c63e5629050600a871180156200334e57506200334b6b033b2e3c9fd0803ce80000006103e86200817c565b87105b6040518263ffffffff1660e01b81526004016200336f911515815260200190565b600060405180830381600087803b1580156200338a57600080fd5b505af11580156200339f573d6000803e3d6000fd5b50506000546040517f4c63e562000000000000000000000000000000000000000000000000000000008152600360ff86161060048201526201000090910473ffffffffffffffffffffffffffffffffffffffff169250634c63e5629150602401600060405180830381600087803b1580156200341a57600080fd5b505af11580156200342f573d6000803e3d6000fd5b505050506000611388905060006200345b856200344e57600062003451565b60015b8888878662004a82565b600b54600854604083810151606085015191517f4533066600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201529083166024820152908216604482015261300c60648201529293501690634533066690608401600060405180830381600087803b158015620034ef57600080fd5b505af115801562003504573d6000803e3d6000fd5b505050506000620035158262006484565b620035225760006200352f565b6200352f8860046200817c565b905060006103e86103e5620035468b60026200817c565b6200355291906200817c565b6200355e91906200868b565b90506000620f4240620035728682620086c7565b62ffffff16600a620035868d600f6200817c565b6200359291906200868b565b6200359e91906200817c565b620035aa91906200868b565b9050600060ff871615620036145761300c6b033b2e3c9fd0803ce80000008860ff16600114620035db5783620035dd565b845b620035e99087620086ee565b620035f591906200817c565b6200360191906200868b565b6200360e90600162008708565b62003617565b60005b905060008760ff166002146200362f5760006200366e565b816b033b2e3c9fd0803ce8000000620036498587620086ee565b6200365591906200817c565b6200366191906200868b565b6200366e90600162008708565b600f54600e5460408981015160608b015191517f4533066600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015290831660248201529082166044820152606481018490529293501690634533066690608401600060405180830381600087803b1580156200370157600080fd5b505af115801562003716573d6000803e3d6000fd5b50506016546000925073ffffffffffffffffffffffffffffffffffffffff16905063ebf9deac886200374762004f00565b866040518463ffffffff1660e01b8152600401620037689392919062008723565b6000604051808303816000875af115801562003788573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052620037d091908101906200875d565b905060ff891662003837576200383181620037f5898960016000600161300c62004f48565b6040518060400160405280601c81526020017f494e434f52524543542051554f5445205741532053454c45435445440000000081525062004fc2565b62003898565b8860ff1660011415620038775760006200385a88604001518960600151620050e9565b9050620038708262000a9e8a89856000620051b1565b5062003898565b8860ff16600214156200389857620038988162000b5589878c600062005227565b50505050505050505050505050565b60008054610100900460ff1615620038c85750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562003a0c5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162003970917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200882c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052620039aa9162008876565b6000604051808303816000865af19150503d8060008114620039e9576040519150601f19603f3d011682016040523d82523d6000602084013e620039ee565b606091505b509150508080602001905181019062003a08919062008894565b9150505b919050565b6000546040517f4c63e56200000000000000000000000000000000000000000000000000000000815261271061ffff85161060048201526201000090910473ffffffffffffffffffffffffffffffffffffffff1690634c63e56290602401600060405180830381600087803b15801562003a8a57600080fd5b505af115801562003a9f573d6000803e3d6000fd5b505060005462010000900473ffffffffffffffffffffffffffffffffffffffff169150634c63e56290506103e88511801562003af3575062003af06b033b2e3c9fd0803ce80000006103e86200817c565b85105b6040518263ffffffff1660e01b815260040162003b14911515815260200190565b600060405180830381600087803b15801562003b2f57600080fd5b505af115801562003b44573d6000803e3d6000fd5b506103e89250611388915060009050808062003b66600289898989896200527d565b925092509250600062003b83846040015184866060015162006122565b60608086015160408088015181517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000093851b841660208201527fffffff000000000000000000000000000000000000000000000000000000000060e88c811b8216603484015289871b861660378401528d901b16604b820152931b909116604e830152805180830360420181526062909201905290915060009060165490915060009073ffffffffffffffffffffffffffffffffffffffff166337c605f78762003c4c62004f00565b6040518363ffffffff1660e01b815260040162003c6b9291906200831e565b6000604051808303816000875af115801562003c8b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262003cd391908101906200858b565b905060006103e560026103e560028f62003cee91906200868b565b62003cfc906103e86200817c565b62003d0891906200868b565b62003d1491906200868b565b62003d22906103e86200817c565b62003d2e91906200868b565b905062003d618260008151811062003d4a5762003d4a6200865c565b602002602001015162000a9e8984886000620051b1565b62003d7562ffffff8916620f4240620086ee565b62003d8260028e6200868b565b62003d9190620f42406200817c565b62003d9d91906200868b565b905062003db362ffffff8a16620f4240620086ee565b62003dc06002836200868b565b62003dcf90620f42406200817c565b62003ddb91906200868b565b905062000f9b8260018151811062003df75762003df76200865c565b602002602001015162000b5589848760006200623e565b6000546040517f4c63e56200000000000000000000000000000000000000000000000000000000815261271061ffff86161060048201526201000090910473ffffffffffffffffffffffffffffffffffffffff1690634c63e56290602401600060405180830381600087803b15801562003e8757600080fd5b505af115801562003e9c573d6000803e3d6000fd5b505060005462010000900473ffffffffffffffffffffffffffffffffffffffff169150634c63e56290506103e88611801562003ef0575062003eed6b033b2e3c9fd0803ce80000006103e86200817c565b86105b6040518263ffffffff1660e01b815260040162003f11911515815260200190565b600060405180830381600087803b15801562003f2c57600080fd5b505af115801562003f41573d6000803e3d6000fd5b5050505060006113889050600062003f5e60028787868662004a82565b60165490915060009073ffffffffffffffffffffffffffffffffffffffff1663ebf9deac8362003f8d62004f00565b60006040518463ffffffff1660e01b815260040162003faf9392919062008723565b6000604051808303816000875af115801562003fcf573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526200401791908101906200875d565b905060006103e56200402b60028a6200868b565b62004039906103e86200817c565b6200404591906200868b565b905060006200405d84604001518560600151620050e9565b905062000b9183620040738685856000620051b1565b62006534565b6000546040517f4c63e56200000000000000000000000000000000000000000000000000000000815261271061ffff86161060048201526201000090910473ffffffffffffffffffffffffffffffffffffffff1690634c63e56290602401600060405180830381600087803b158015620040f257600080fd5b505af115801562004107573d6000803e3d6000fd5b505060005462010000900473ffffffffffffffffffffffffffffffffffffffff169150634c63e5629050600a861180156200415a5750620041576b033b2e3c9fd0803ce80000006103e86200817c565b86105b6040518263ffffffff1660e01b81526004016200417b911515815260200190565b600060405180830381600087803b1580156200419657600080fd5b505af1158015620041ab573d6000803e3d6000fd5b50505050600061138890506000620041ca84620008e0576000620008e3565b60165490915060009073ffffffffffffffffffffffffffffffffffffffff1663ebf9deac83620041f962004f00565b60006040518463ffffffff1660e01b81526004016200421b9392919062008723565b6000604051808303816000875af11580156200423b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526200428391908101906200875d565b90506000620042948860046200817c565b90506200292a82620037f58584600160006001600062004f48565b620042b96200630d565b604051620042c79062007ef6565b604051809103906000f080158015620042e4573d6000803e3d6000fd5b50600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283169081179091556001546040519216916200433d9062007f04565b73ffffffffffffffffffffffffffffffffffffffff928316815291166020820152604001604051809103906000f0801580156200437e573d6000803e3d6000fd5b50600d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055604051620043d29062007f12565b604051809103906000f080158015620043ef573d6000803e3d6000fd5b50600f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600054600d54604080517fc657c71800000000000000000000000000000000000000000000000000000000815291841660048301526024820152601260448201527f554e49535741505f56325f4144415054455200000000000000000000000000006064820152620100009091049091169063c657c71890608401600060405180830381600087803b158015620044c757600080fd5b505af1158015620044dc573d6000803e3d6000fd5b5050600054600e54604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201526024810191909152600f60448201527f554e49535741505f56325f4d4f434b000000000000000000000000000000000060648201526201000090920416925063c657c7189150608401600060405180830381600087803b1580156200458c57600080fd5b505af1158015620045a1573d6000803e3d6000fd5b5050600054600f54604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201526024810191909152601560448201527f554e49535741505f56325f5041544846494e444552000000000000000000000060648201526201000090920416925063c657c71891506084015b600060405180830381600087803b1580156200465257600080fd5b505af115801562002e40573d6000803e3d6000fd5b620046716200630d565b6040516200467f9062007f20565b604051809103906000f0801580156200469c573d6000803e3d6000fd5b50601180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316908117909155600154604051921691620046f59062007f2e565b73ffffffffffffffffffffffffffffffffffffffff928316815291166020820152604001604051809103906000f08015801562004736573d6000803e3d6000fd5b50601080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040516200478a9062007f3c565b604051809103906000f080158015620047a7573d6000803e3d6000fd5b50601280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283169081179091556011546040517fc67903ea00000000000000000000000000000000000000000000000000000000815292166004830181905260248301529063c67903ea90604401600060405180830381600087803b1580156200484857600080fd5b505af11580156200485d573d6000803e3d6000fd5b5050600054601054604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201526024810191909152601260448201527f554e49535741505f56335f41444150544552000000000000000000000000000060648201526201000090920416925063c657c7189150608401600060405180830381600087803b1580156200490d57600080fd5b505af115801562004922573d6000803e3d6000fd5b5050600054601154604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201526024810191909152600f60448201527f554e49535741505f56335f4d4f434b000000000000000000000000000000000060648201526201000090920416925063c657c7189150608401600060405180830381600087803b158015620049d257600080fd5b505af1158015620049e7573d6000803e3d6000fd5b5050600054601254604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201526024810191909152601560448201527f554e49535741505f56335f5041544846494e444552000000000000000000000060648201526201000090920416925063c657c718915060840162004637565b60408051610100810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c0810182905260e08101919091526006546040517f67b4264500000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906367b426459062004b1c90600290600401620087be565b602060405180830381865afa15801562004b3a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b6091906200879e565b6006546040517f67b4264500000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff909116906367b426459062004bbf90600190600401620087be565b602060405180830381865afa15801562004bdd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c0391906200879e565b60085490915073ffffffffffffffffffffffffffffffffffffffff166356ac35036001600062004c416b033b2e3c9fd0803ce800000060046200817c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600f93840b60048201529190920b60248201526044810191909152606401600060405180830381600087803b15801562004ca657600080fd5b505af115801562004cbb573d6000803e3d6000fd5b5050600e5473ffffffffffffffffffffffffffffffffffffffff169150635911fb9a9050838362004cfa6b033b2e3c9fd0803ce800000060026200817c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b15801562004d6f57600080fd5b505af115801562004d84573d6000803e3d6000fd5b505060115473ffffffffffffffffffffffffffffffffffffffff169150632ccbc99b9050838387600a62004dc66b033b2e3c9fd0803ce8000000600f6200817c565b62004dd291906200868b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff948516600482015293909216602484015262ffffff1660448301526064820152608401600060405180830381600087803b15801562004e5157600080fd5b505af115801562004e66573d6000803e3d6000fd5b5050505060405180610100016040528089600281111562004e8b5762004e8b620081bc565b815273c4375b7de8af5a38a93548eb8453a498222c4ff2602082015273ffffffffffffffffffffffffffffffffffffffff84811660408301528316606082015260800162004ed7606090565b81526020018881526020018761ffff168152602001861515815250925050505b95945050505050565b600754600d54601054601354600a5460609462004f439473ffffffffffffffffffffffffffffffffffffffff918216949082169390821692908216911662006554565b905090565b62004f866040805160c08101909152600060808201908152606060a08301528190815260200160008152602001600015158152602001600081525090565b604051806080016040528062004fa0898989898962006715565b8152602081018890526001604082015260600183905290509695505050505050565b62004ffd8260400151151584604001511515148260405160200162004fe89190620088b4565b60405160208183030381529060405262006a6c565b6040830151151560011480156200501a5750604082015115156001145b15620050e457620050568360200151836020015183604051602001620050419190620088f7565b60405160208183030381529060405262006437565b6200507783606001518360600151836040516020016200504191906200893a565b825151825151604051620050ac929190620050979085906020016200897d565b60405160208183030381529060405262006294565b82516020908101518351820151604051620050e493620050cf91869101620089e6565b60405160208183030381529060405262006ab6565b505050565b604080516002808252606080830184529260208301908036833701905050905082816000815181106200512057620051206200865c565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081816001815181106200517157620051716200865c565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505092915050565b620051ef6040805160c08101909152600060808201908152606060a08301528190815260200160008152602001600015158152602001600081525090565b60405180608001604052806200520787878762006b0c565b815260208101869052600160408201526060018390529050949350505050565b620052656040805160c08101909152600060808201908152606060a08301528190815260200160008152602001600015158152602001600081525090565b60405180608001604052806200520787878762006f38565b60408051610100810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c0810182905260e08101919091526006546040517f67b426450000000000000000000000000000000000000000000000000000000081526000918291829173ffffffffffffffffffffffffffffffffffffffff16906367b42645906200531b90600290600401620087be565b602060405180830381865afa15801562005339573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200535f91906200879e565b6006546040517f67b4264500000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906367b4264590620053b990600190600401620087be565b602060405180830381865afa158015620053d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620053fd91906200879e565b6006546040517f67b4264500000000000000000000000000000000000000000000000000000000815291945073ffffffffffffffffffffffffffffffffffffffff16906367b42645906200545790600390600401620087be565b602060405180830381865afa15801562005475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200549b91906200879e565b6006546040517f67b4264500000000000000000000000000000000000000000000000000000000815291935060009173ffffffffffffffffffffffffffffffffffffffff909116906367b4264590620054f9906004908101620087be565b602060405180830381865afa15801562005517573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200553d91906200879e565b600e546040517f5911fb9a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015280841660248301526b033b2e3c9fd0803ce80000006044830152929350911690635911fb9a90606401600060405180830381600087803b158015620055c757600080fd5b505af1158015620055dc573d6000803e3d6000fd5b5050600e5473ffffffffffffffffffffffffffffffffffffffff169150635911fb9a905083866200561b6b033b2e3c9fd0803ce800000060026200817c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b1580156200569057600080fd5b505af1158015620056a5573d6000803e3d6000fd5b5050600e5473ffffffffffffffffffffffffffffffffffffffff169150635911fb9a90508583620056e46b033b2e3c9fd0803ce800000060026200817c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b1580156200575957600080fd5b505af11580156200576e573d6000803e3d6000fd5b5050600e5473ffffffffffffffffffffffffffffffffffffffff169150635911fb9a90508385600a620057af6b033b2e3c9fd0803ce8000000600f6200817c565b620057bb91906200868b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b1580156200583057600080fd5b505af115801562005845573d6000803e3d6000fd5b5050600e5473ffffffffffffffffffffffffffffffffffffffff169150635911fb9a90508483600a620058866b033b2e3c9fd0803ce8000000600f6200817c565b6200589291906200868b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b1580156200590757600080fd5b505af11580156200591c573d6000803e3d6000fd5b50506011546040517f5911fb9a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285811660248301526b033b2e3c9fd0803ce800000060448301529091169250635911fb9a9150606401600060405180830381600087803b158015620059a857600080fd5b505af1158015620059bd573d6000803e3d6000fd5b505060115473ffffffffffffffffffffffffffffffffffffffff169150632ccbc99b90508386610bb8620059ff6b033b2e3c9fd0803ce800000060016200817c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff948516600482015293909216602484015262ffffff1660448301526064820152608401600060405180830381600087803b15801562005a7e57600080fd5b505af115801562005a93573d6000803e3d6000fd5b505060115473ffffffffffffffffffffffffffffffffffffffff169150632ccbc99b90508583610bb862005ad560026b033b2e3c9fd0803ce80000006200868b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff948516600482015293909216602484015262ffffff1660448301526064820152608401600060405180830381600087803b15801562005b5457600080fd5b505af115801562005b69573d6000803e3d6000fd5b505060115473ffffffffffffffffffffffffffffffffffffffff169150635911fb9a90508386600a62005baa6b033b2e3c9fd0803ce8000000600f6200817c565b62005bb691906200868b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b15801562005c2b57600080fd5b505af115801562005c40573d6000803e3d6000fd5b505060115473ffffffffffffffffffffffffffffffffffffffff169150635911fb9a90508583600a62005c816b033b2e3c9fd0803ce8000000600f6200817c565b62005c8d91906200868b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b15801562005d0257600080fd5b505af115801562005d17573d6000803e3d6000fd5b505060115473ffffffffffffffffffffffffffffffffffffffff169150632ccbc99b905083858a62005d576b033b2e3c9fd0803ce800000060026200817c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff948516600482015293909216602484015262ffffff1660448301526064820152608401600060405180830381600087803b15801562005dd657600080fd5b505af115801562005deb573d6000803e3d6000fd5b505060115473ffffffffffffffffffffffffffffffffffffffff169150632ccbc99b9050838589600a62005e2d6b033b2e3c9fd0803ce8000000600f6200817c565b62005e3991906200868b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff948516600482015293909216602484015262ffffff1660448301526064820152608401600060405180830381600087803b15801562005eb857600080fd5b505af115801562005ecd573d6000803e3d6000fd5b505060115473ffffffffffffffffffffffffffffffffffffffff169150632ccbc99b905084838962005f0d6b033b2e3c9fd0803ce800000060026200817c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff948516600482015293909216602484015262ffffff1660448301526064820152608401600060405180830381600087803b15801562005f8c57600080fd5b505af115801562005fa1573d6000803e3d6000fd5b505060115473ffffffffffffffffffffffffffffffffffffffff169150632ccbc99b905084838a60c862005fe36b033b2e3c9fd0803ce800000060c76200817c565b62005fef91906200868b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff948516600482015293909216602484015262ffffff1660448301526064820152608401600060405180830381600087803b1580156200606e57600080fd5b505af115801562006083573d6000803e3d6000fd5b505050506040518061010001604052808c6002811115620060a857620060a8620081bc565b815273c4375b7de8af5a38a93548eb8453a498222c4ff2602082015273ffffffffffffffffffffffffffffffffffffffff848116604083015283166060820152608001620060f78686620050e9565b81526020018b81526020018a61ffff1681526020018915158152509450505096509650969350505050565b6040805160038082526080820190925260609160208201838036833701905050905083816000815181106200615b576200615b6200865c565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508281600181518110620061ac57620061ac6200865c565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600281518110620061fd57620061fd6200865c565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250509392505050565b6200627c6040805160c08101909152600060808201908152606060a08301528190815260200160008152602001600015158152602001600081525090565b604051806080016040528062005207878787620074c4565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614620050e4577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620062f9919062008a9b565b60405180910390a1620050e48383620078a4565b60065473ffffffffffffffffffffffffffffffffffffffff166200176457604051620063399062007f4a565b604051809103906000f08015801562006356573d6000803e3d6000fd5b50600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216918217905563b36ba208620063b5670de0b6b3a764000060646200817c565b6040518263ffffffff1660e01b81526004016000604051808303818588803b158015620063e157600080fd5b505af1158015620063f6573d6000803e3d6000fd5b505060028054307fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117909255600180549091169091179055505050565b818314620050e4577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162006470919062008a9b565b60405180910390a1620050e48383620079e2565b600080825160028111156200649d576200649d620081bc565b1480620064bf5750600182516002811115620064bd57620064bd620081bc565b145b15620064cd57506001919050565b600282516002811115620064e557620064e5620081bc565b1415620064f457506000919050565b81516040517ffe7995cf0000000000000000000000000000000000000000000000000000000081526200652b919060040162008ae4565b60405180910390fd5b6200655082826040518060200160405280600081525062004fc2565b5050565b60408051600580825260c082019092526060916020820160a08036833701905050905085816000815181106200658e576200658e6200865c565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508481600181518110620065df57620065df6200865c565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083816002815181106200663057620066306200865c565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816003815181106200668157620066816200865c565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600481518110620066d257620066d26200865c565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505095945050505050565b6040805180820190915260008152606060208201526060600087516002811115620067445762006744620081bc565b14156200687d578262006778577f3df02124000000000000000000000000000000000000000000000000000000006200679a565b7fa6417ed6000000000000000000000000000000000000000000000000000000005b85858960e00151620067d95760c08a015161271090620067bb9082620086ee565b620067c7908b6200817c565b620067d391906200868b565b620067dc565b60005b604051600f93840b60248201529190920b60448201526064810191909152608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b600187516002811115620068955762006895620081bc565b1415620069f85782620068c9577f79bea66400000000000000000000000000000000000000000000000000000000620068eb565b7f1af4de83000000000000000000000000000000000000000000000000000000005b85858960e00151620069545760a08a01516200690b90612710906200817c565b60c08b01516200691e90612710620086ee565b620069368b6b033b2e3c9fd0803ce80000006200817c565b6200694291906200817c565b6200694e91906200868b565b62006957565b60005b604051600f93840b60248201529190920b60448201526064810191909152608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b80511562006a35576040805180820190915260075473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152905062004ef7565b86516040517ffe7995cf0000000000000000000000000000000000000000000000000000000081526200652b919060040162008ae4565b8162006550577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162006aa3919062008a9b565b60405180910390a1620065508262007ae2565b62006ac2838362007b5a565b620050e4577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162006af8919062008a9b565b60405180910390a1620050e4838362007c24565b604080518082019091526000815260606020820152606060008551600281111562006b3b5762006b3b620081bc565b141562006c49576338ed173960e01b8560a001518660e0015162006b8c5760c08701516127109062006b6e9082620086ee565b62006b7a90886200817c565b62006b8691906200868b565b62006b8f565b60005b8573c4375b7de8af5a38a93548eb8453a498222c4ff262006bb342610e1062008708565b60405160240162006bc995949392919062008af4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b60018551600281111562006c615762006c61620081bc565b141562006d975760e08501517fbdbeaa31000000000000000000000000000000000000000000000000000000009062006cf15760a086015162006ca890612710906200817c565b60c087015162006cbb90612710620086ee565b62006cd3876b033b2e3c9fd0803ce80000006200817c565b62006cdf91906200817c565b62006ceb91906200868b565b62006cf4565b60005b8462006d0342610e1062008708565b60405160240162006d179392919062008b3f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b60028551600281111562006daf5762006daf620081bc565b141562006ebd57638803dbee60e01b8560a001518660e0015162006e005760c087015162006de09061271062008708565b62006dee612710886200817c565b62006dfa91906200868b565b62006e03565b60005b8573c4375b7de8af5a38a93548eb8453a498222c4ff262006e2742610e1062008708565b60405160240162006e3d95949392919062008af4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b80511562006efa5760408051808201909152600d5473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152905062006f31565b84516040517ffe7995cf0000000000000000000000000000000000000000000000000000000081526200652b919060040162008ae4565b9392505050565b604080518082019091526000815260606020820152606060008551600281111562006f675762006f67620081bc565b141562007109576000604051806101000160405280876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff1681526020018562ffffff168152602001876020015173ffffffffffffffffffffffffffffffffffffffff16815260200142610e1062006ff7919062008708565b81526020018760a0015181526020018760e00151620070435760c088015161271090620070259082620086ee565b6200703190896200817c565b6200703d91906200868b565b62007046565b60005b815260006020909101526040519091507f414bf38900000000000000000000000000000000000000000000000000000000906200708890839060240162008b6a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529150505b600185516002811115620071215762007121620081bc565b1415620072cd5760008560e00151620071915760a08601516200714890612710906200817c565b60c08701516200715b90612710620086ee565b62007173876b033b2e3c9fd0803ce80000006200817c565b6200717f91906200817c565b6200718b91906200868b565b62007194565b60005b905060006040518060c00160405280886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020018662ffffff16815260200142610e10620071fe919062008708565b815260208082019490945260006040918201528051825173ffffffffffffffffffffffffffffffffffffffff908116602483015283860151811660448301528383015162ffffff16606483015260608401516084830152608084015160a483015260a09093015190921660c4808401919091528151808403909101815260e4909201905291820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc7fbf4de000000000000000000000000000000000000000000000000000000001790525090505b600285516002811115620072e557620072e5620081bc565b141562007487576000604051806101000160405280876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff1681526020018562ffffff168152602001876020015173ffffffffffffffffffffffffffffffffffffffff16815260200142610e1062007375919062008708565b81526020018760a0015181526020018760e00151620073c15760c0880151620073a19061271062008708565b620073af612710896200817c565b620073bb91906200868b565b620073c4565b60005b815260006020909101526040519091507fdb3e219800000000000000000000000000000000000000000000000000000000906200740690839060240162008b6a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529150505b80511562006efa576040805180820190915260105473ffffffffffffffffffffffffffffffffffffffff1681526020810191909152905062006f31565b6040805180820190915260008152606060208201526060600085516002811115620074f357620074f3620081bc565b1415620076475760006040518060a00160405280858152602001876020015173ffffffffffffffffffffffffffffffffffffffff16815260200142610e106200753d919062008708565b81526020018760a0015181526020018760e00151620075895760c0880151612710906200756b9082620086ee565b6200757790896200817c565b6200758391906200868b565b6200758c565b60005b90526040519091507fc04b8d590000000000000000000000000000000000000000000000000000000090620075c690839060240162008c47565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529150505b6001855160028111156200765f576200765f620081bc565b1415620077b95760008560e00151620076cf5760a08601516200768690612710906200817c565b60c08701516200769990612710620086ee565b620076b1876b033b2e3c9fd0803ce80000006200817c565b620076bd91906200817c565b620076c991906200868b565b620076d2565b60005b90506000604051806060016040528086815260200142610e10620076f7919062008708565b81526020018390526040519091507ff4f18d9000000000000000000000000000000000000000000000000000000000906200773790839060240162008c5c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152925050505b600285516002811115620077d157620077d1620081bc565b1415620074875760006040518060a00160405280858152602001876020015173ffffffffffffffffffffffffffffffffffffffff16815260200142610e106200781b919062008708565b81526020018760a0015181526020018760e00151620078675760c0880151620078479061271062008708565b62007855612710896200817c565b6200786191906200868b565b6200786a565b60005b90526040519091507ff28c049800000000000000000000000000000000000000000000000000000000906200740690839060240162008c47565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462006550577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200795e9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162007997919062008c9a565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f82604051620079d0919062008cfc565b60405180910390a16200655062007d2d565b80821462006550577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162007a709060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88160405162007aa9919062008d3a565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a882604051620079d0919062008d86565b8062002932577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162007b489060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200293262007d2d565b80518251600191141562007c1a5760005b835181101562007c135782818151811062007b8a5762007b8a6200865c565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191684828151811062007bcc5762007bcc6200865c565b01602001517fff00000000000000000000000000000000000000000000000000000000000000161462007bfe57600091505b8062007c0a81620087f0565b91505062007b6b565b5062007c1e565b5060005b92915050565b62007c30828262007b5a565b62006550577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162007cbb9060208082526023908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f65735d0000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf188160405162007cf4919062008dc4565b60405180910390a17fd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf1882604051620079d0919062008e16565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562007e825760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262007dff92916020016200882c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262007e399162008876565b6000604051808303816000865af19150503d806000811462007e78576040519150601f19603f3d011682016040523d82523d6000602084013e62007e7d565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b611a0d8062008e5583390190565b613960806200a86283390190565b611852806200e1c283390190565b615f8c806200fa1483390190565b61189380620159a083390190565b611a5c806201723383390190565b61251b8062018c8f83390190565b611a7f806201b1aa83390190565b611c0e806201cc2983390190565b61221a806201e83783390190565b6126e48062020a5183390190565b617a51806202313583390190565b803561ffff8116811462003a0c57600080fd5b80151581146200293257600080fd5b6000806000806080858703121562007f9157600080fd5b8435935062007fa36020860162007f58565b9250604085013562007fb58162007f6b565b9150606085013562007fc78162007f6b565b939692955090935050565b803560ff8116811462003a0c57600080fd5b6000806000806080858703121562007ffb57600080fd5b843593506200800d6020860162007f58565b925060408501356200801f8162007f6b565b91506200802f6060860162007fd2565b905092959194509250565b6000602082840312156200804d57600080fd5b813562006f318162007f6b565b6000806000606084860312156200807057600080fd5b83359250620080826020850162007f58565b91506040840135620080948162007f6b565b809150509250925092565b600080600080600060a08688031215620080b857600080fd5b85359450620080ca6020870162007f58565b93506040860135620080dc8162007f6b565b92506060860135620080ee8162007f6b565b9150620080fe6080870162007fd2565b90509295509295909350565b73ffffffffffffffffffffffffffffffffffffffff811681146200293257600080fd5b6000602082840312156200814057600080fd5b813562006f31816200810a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620081b757620081b76200814d565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110620081fe57620081fe620081bc565b9052565b600061010080840162008217858551620081eb565b60208481015173ffffffffffffffffffffffffffffffffffffffff9081168783015260408087015182169088015260608087015182169088015260808087015190880194909452835192839052610120870193820192600091905b80831015620082965784518216865294830194938301936001929092019162008272565b505050505060a083015160a085015260c083015160c085015260e0830151620082c360e086018215159052565b509392505050565b600081518084526020808501945080840160005b838110156200831357815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101620082df565b509495945050505050565b60408152600062008333604083018562008202565b828103602084015262004ef78185620082cb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156200839c576200839c62008347565b60405290565b6040805190810167ffffffffffffffff811182821017156200839c576200839c62008347565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562008412576200841262008347565b604052919050565b60005b83811015620084375781810151838201526020016200841d565b8381111562002e405750506000910152565b805162003a0c8162007f6b565b6000608082840312156200846957600080fd5b6200847362008376565b9050815167ffffffffffffffff808211156200848e57600080fd5b9083019060408286031215620084a357600080fd5b620084ad620083a2565b8251620084ba816200810a565b815260208381015183811115620084d057600080fd5b80850194505086601f850112620084e657600080fd5b835183811115620084fb57620084fb62008347565b6200852d827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601620083c8565b935080845287828287010111156200854457600080fd5b62008555818386018488016200841a565b50818101929092528352838101519083015250620085766040830162008449565b60408201526060820151606082015292915050565b600060208083850312156200859f57600080fd5b825167ffffffffffffffff80821115620085b857600080fd5b818501915085601f830112620085cd57600080fd5b815181811115620085e257620085e262008347565b8060051b620085f3858201620083c8565b91825283810185019185810190898411156200860e57600080fd5b86860192505b838310156200864f578251858111156200862e5760008081fd5b6200863e8b89838a010162008456565b835250918601919086019062008614565b9998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082620086c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600062ffffff83811690831681811015620086e657620086e66200814d565b039392505050565b6000828210156200870357620087036200814d565b500390565b600082198211156200871e576200871e6200814d565b500190565b60608152600062008738606083018662008202565b82810360208401526200874c8186620082cb565b915050826040830152949350505050565b6000602082840312156200877057600080fd5b815167ffffffffffffffff8111156200878857600080fd5b620087968482850162008456565b949350505050565b600060208284031215620087b157600080fd5b815162006f31816200810a565b60208101600b8310620087d557620087d5620081bc565b91905290565b604081526000620083336040830185620082cb565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156200882557620088256200814d565b5060010190565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251620088688160048501602087016200841a565b919091016004019392505050565b600082516200888a8184602087016200841a565b9190910192915050565b600060208284031215620088a757600080fd5b815162006f318162007f6b565b60008251620088c88184602087016200841a565b7f446966666572656e7420666f756e6420706172616d7300000000000000000000920191825250601601919050565b600082516200890b8184602087016200841a565b7f71312e616d6f756e7420213d2071322e616d6f756e7400000000000000000000920191825250601601919050565b600082516200894e8184602087016200841a565b7f71312e676173557361676520213d2071322e6761735573616765000000000000920191825250601a01919050565b60008251620089918184602087016200841a565b7f71312e6d756c746943616c6c2e74617267657420213d2071322e6d756c7469439201918252507f616c6c2e746172676574000000000000000000000000000000000000000000006020820152602a01919050565b60008251620089fa8184602087016200841a565b7f71312e6d756c746943616c6c2e63616c6c4461746120213d2071322e6d756c749201918252507f6943616c6c2e63616c6c446174610000000000000000000000000000000000006020820152602e01919050565b6000815180845262008a698160208601602086016200841a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60408152600560408201527f4572726f72000000000000000000000000000000000000000000000000000000606082015260806020820152600062006f31608083018462008a4f565b6020810162007c1e8284620081eb565b85815284602082015260a06040820152600062008b1560a0830186620082cb565b73ffffffffffffffffffffffffffffffffffffffff94909416606083015250608001529392505050565b83815260606020820152600062008b5a6060830185620082cb565b9050826040830152949350505050565b610100810162007c1e828473ffffffffffffffffffffffffffffffffffffffff80825116835280602083015116602084015262ffffff60408301511660408401528060608301511660608401526080820151608084015260a082015160a084015260c082015160c08401528060e08301511660e0840152505050565b6000815160a0845262008bfd60a085018262008a4f565b905073ffffffffffffffffffffffffffffffffffffffff60208401511660208501526040830151604085015260608301516060850152608083015160808501528091505092915050565b60208152600062006f31602083018462008be6565b60208152600082516060602084015262008c7a608084018262008a4f565b905060208401516040840152604084015160608401528091505092915050565b60408152600062008cd860408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905073ffffffffffffffffffffffffffffffffffffffff8316602083015292915050565b60408152600062008cd860408301600a81527f2020202041637475616c00000000000000000000000000000000000000000000602082015260400190565b60408152600062008d7860408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b60408152600062008d7860408301600a81527f2020202041637475616c00000000000000000000000000000000000000000000602082015260400190565b60408152600062008e0260408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b828103602084015262008796818562008a4f565b60408152600062008e0260408301600a81527f2020202041637475616c0000000000000000000000000000000000000000000060208201526040019056fe60806040523480156200001157600080fd5b5060405162001a0d38038062001a0d8339810160408190526200003491620000ef565b6200003f3362000082565b600180546001600160a01b039485166001600160a01b03199182161790915560028054938516938216939093179092556003805491909316911617905562000139565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000ea57600080fd5b919050565b6000806000606084860312156200010557600080fd5b6200011084620000d2565b92506200012060208501620000d2565b91506200013060408501620000d2565b90509250925092565b6118c480620001496000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80638da5cb5b11610076578063ebf9deac1161005b578063ebf9deac1461019e578063eeef8dd0146101be578063f2fde38b146101de57600080fd5b80638da5cb5b1461016d5780638e8a08521461018b57600080fd5b806337c605f7116100a757806337c605f71461012d57806354fd4d501461014d578063715018a61461016357600080fd5b80631c9a755f146100c3578063287b94d71461010d575b600080fd5b6003546100e39073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6001546100e39073ffffffffffffffffffffffffffffffffffffffff1681565b61014061013b3660046111c2565b6101f1565b604051610104919061130a565b610155600181565b604051908152602001610104565b61016b6104d0565b005b60005473ffffffffffffffffffffffffffffffffffffffff166100e3565b6100e361019936600461138a565b610562565b6101b16101ac3660046113ae565b61070c565b604051610104919061141b565b6002546100e39073ffffffffffffffffffffffffffffffffffffffff1681565b61016b6101ec36600461138a565b610873565b6040805160c081018252600060808201818152606060a08401819052908352602083018290529282018190528183015282516000908067ffffffffffffffff81111561023f5761023f610f44565b6040519080825280602002602001820160405280156102ad57816020015b61029a6040805160c08101909152600060808201908152606060a08301528190815260200160008152602001600015158152602001600081525090565b81526020019060019003908161025d5790505b50935060005b818110156104ba5760008682815181106102cf576102cf61142e565b6020026020010151905060006102e482610562565b905073ffffffffffffffffffffffffffffffffffffffff8116156104b0576040517f1bf64c4100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690631bf64c4190610356908c908690600401611518565b6000604051808303816000875af1158015610375573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103bb91908101906115f9565b955060008173ffffffffffffffffffffffffffffffffffffffff16636f33547d8b856040518363ffffffff1660e01b81526004016103fa929190611518565b6000604051808303816000875af1158015610419573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261045f91908101906115f9565b905061046e818b8960006109a3565b15610477578096505b8660400151156104ae57868887815181106104945761049461142e565b602002602001018190525085806104aa9061176c565b9650505b505b50506001016102b3565b506104c4846109bf565b93505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6105606000610aea565b565b600073ffffffffffffffffffffffffffffffffffffffff8216156107075760008273ffffffffffffffffffffffffffffffffffffffff1663ce30bbdb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f191906117a5565b905060018160108111156106075761060761145d565b14156106295760025473ffffffffffffffffffffffffffffffffffffffff1691505b600281601081111561063d5761063d61145d565b141561065f5760035473ffffffffffffffffffffffffffffffffffffffff1691505b60038160108111156106735761067361145d565b14806106905750600581601081111561068e5761068e61145d565b145b806106ac575060068160108111156106aa576106aa61145d565b145b806106c8575060078160108111156106c6576106c661145d565b145b806106e4575060088160108111156106e2576106e261145d565b145b156107055760015473ffffffffffffffffffffffffffffffffffffffff1691505b505b919050565b6107496040805160c08101909152600060808201908152606060a08301528190815260200160008152602001600015158152602001600081525090565b825160005b8181101561086a57600085828151811061076a5761076a61142e565b60200260200101519050600061077f82610562565b905073ffffffffffffffffffffffffffffffffffffffff8116156108605760006107a883610562565b73ffffffffffffffffffffffffffffffffffffffff16631bf64c418a856040518363ffffffff1660e01b81526004016107e2929190611518565b6000604051808303816000875af1158015610801573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261084791908101906115f9565b9050610855818a888a6109a3565b1561085e578095505b505b505060010161074e565b50509392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161054d565b73ffffffffffffffffffffffffffffffffffffffff8116610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161054d565b6109a081610aea565b50565b60006109b6858585866060015186610b5f565b95945050505050565b8051606090806109d0575090919050565b60005b8381815181106109e5576109e561142e565b60200260200101516040015115610a0e5760010181811415610a0957509192915050565b6109d3565b8067ffffffffffffffff811115610a2757610a27610f44565b604051908082528060200260200182016040528015610a9557816020015b610a826040805160c08101909152600060808201908152606060a08301528190815260200160008152602001600015158152602001600081525090565b815260200190600190039081610a455790505b50925060005b81811015610ae257848181518110610ab557610ab561142e565b6020026020010151848281518110610acf57610acf61142e565b6020908102919091010152600101610a9b565b505050919050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008560400151610b72575060006109b6565b8360400151610b83575060016109b6565b6000610be08688602001516b033b2e3c9fd0803ce8000000868b60600151610bab91906117c6565b610bb59190611803565b60208901516b033b2e3c9fd0803ce8000000610bd1898b6117c6565b610bdb9190611803565b610c79565b9050600086516002811115610bf757610bf761145d565b1480610c155750600186516002811115610c1357610c1361145d565b145b15610c215790506109b6565b600286516002811115610c3657610c3661145d565b1415610c44571590506109b6565b85516040517ffe7995cf00000000000000000000000000000000000000000000000000000000815261054d919060040161183e565b6000610cb96040518060400160405280600c81526020017f414141202d20616d6f756e740000000000000000000000000000000000000000815250610d6a565b610cc285610df9565b610ccb84610df9565b610cd483610df9565b610cdd82610df9565b610cef610cea858761184c565b610df9565b610cfc610cea838561184c565b610d0586610e8a565b610d2657610d138284611863565b610d1d8587611863565b101590506109b6565b838510158015610d365750818310155b15610d4f57610d45828461184c565b610d1d858761184c565b838510610d5d576001610d60565b60005b9695505050505050565b6109a081604051602401610d7e919061187b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052610f23565b6109a081604051602401610e0f91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff5b1bba900000000000000000000000000000000000000000000000000000000179052610f23565b60008082516002811115610ea057610ea061145d565b1480610ebe5750600182516002811115610ebc57610ebc61145d565b145b15610ecb57506001919050565b600282516002811115610ee057610ee061145d565b1415610eee57506000919050565b81516040517ffe7995cf00000000000000000000000000000000000000000000000000000000815261054d919060040161183e565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610f9757610f97610f44565b60405290565b6040516080810167ffffffffffffffff81118282101715610f9757610f97610f44565b6040805190810167ffffffffffffffff81118282101715610f9757610f97610f44565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561102a5761102a610f44565b604052919050565b80356003811061070757600080fd5b73ffffffffffffffffffffffffffffffffffffffff811681146109a057600080fd5b803561070781611041565b600082601f83011261107f57600080fd5b8135602067ffffffffffffffff82111561109b5761109b610f44565b8160051b6110aa828201610fe3565b92835284810182019282810190878511156110c457600080fd5b83870192505b848310156110ec5782356110dd81611041565b825291830191908301906110ca565b979650505050505050565b80151581146109a057600080fd5b8035610707816110f7565b6000610100828403121561112357600080fd5b61112b610f73565b905061113682611032565b815261114460208301611063565b602082015261115560408301611063565b604082015261116660608301611063565b6060820152608082013567ffffffffffffffff81111561118557600080fd5b6111918482850161106e565b60808301525060a082013560a082015260c082013560c08201526111b760e08301611105565b60e082015292915050565b600080604083850312156111d557600080fd5b823567ffffffffffffffff808211156111ed57600080fd5b6111f986838701611110565b9350602085013591508082111561120f57600080fd5b5061121c8582860161106e565b9150509250929050565b60005b83811015611241578181015183820152602001611229565b83811115611250576000848401525b50505050565b6000815180845261126e816020860160208601611226565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b80516080808452815173ffffffffffffffffffffffffffffffffffffffff169084015260200151604060a08401526000906112de60c0850182611256565b905060208301516020850152604083015115156040850152606083015160608501528091505092915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561137d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261136b8583516112a0565b94509285019290850190600101611331565b5092979650505050505050565b60006020828403121561139c57600080fd5b81356113a781611041565b9392505050565b6000806000606084860312156113c357600080fd5b833567ffffffffffffffff808211156113db57600080fd5b6113e787838801611110565b945060208601359150808211156113fd57600080fd5b5061140a8682870161106e565b925050604084013590509250925092565b6020815260006113a760208301846112a0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600381106114c3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600081518084526020808501945080840160005b8381101561150d57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016114db565b509495945050505050565b6040815261152a60408201845161148c565b6000602084015173ffffffffffffffffffffffffffffffffffffffff80821660608501528060408701511660808501525050606084015161158360a084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060808401516101008060c08501526115a06101408501836114c7565b915060a086015160e085015260c0860151818501525060e08501516115ca61012085018215159052565b5073ffffffffffffffffffffffffffffffffffffffff8416602084015290506113a7565b8051610707816110f7565b6000602080838503121561160c57600080fd5b825167ffffffffffffffff8082111561162457600080fd5b908401906080828703121561163857600080fd5b611640610f9d565b82518281111561164f57600080fd5b83016040818903121561166157600080fd5b611669610fc0565b815161167481611041565b8152818601518481111561168757600080fd5b80830192505088601f83011261169c57600080fd5b8151848111156116ae576116ae610f44565b6116de877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610fe3565b945080855289878285010111156116f457600080fd5b61170381888701898601611226565b508086018490528252508284015181850152611721604084016115ee565b6040820152606083015160608201528094505050505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561179e5761179e61173d565b5060010190565b6000602082840312156117b757600080fd5b8151601181106113a757600080fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156117fe576117fe61173d565b500290565b600082611839577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b602081016104ca828461148c565b60008282101561185e5761185e61173d565b500390565b600082198211156118765761187661173d565b500190565b6020815260006113a7602083018461125656fea26469706673582212204a44d119a95a7bbbbf2c6cd5403facba1ffe02ace142ee957c64cb512d488b0664736f6c634300080a003360806040523480156200001157600080fd5b5060405162003960380380620039608339810160408190526200003491620002a2565b8151829082906200004d90600290602085019062000133565b5080516200006390600390602084019062000133565b506000601260405162000076906200019d565b6060808252600790820152664352564d6f636b60c81b608082015260a0602082018190526015908201527f43525620666f72204375727665506f6f6c4d6f636b000000000000000000000060c082015260ff909116604082015260e001604051809103906000f080158015620000f0573d6000803e3d6000fd5b50600080546001600160a01b039092166001600160a01b03199283168117909155600180549092161790555050670de0b6b3a7640000600755506200030c915050565b8280548282559060005260206000209081019282156200018b579160200282015b828111156200018b57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000154565b5062000199929150620001ab565b5090565b611758806200220883390190565b5b80821115620001995760008155600101620001ac565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b0381168114620001f057600080fd5b919050565b600082601f8301126200020757600080fd5b815160206001600160401b0380831115620002265762000226620001c2565b8260051b604051601f19603f830116810181811084821117156200024e576200024e620001c2565b6040529384528581018301938381019250878511156200026d57600080fd5b83870191505b8482101562000297576200028782620001d8565b8352918301919083019062000273565b979650505050505050565b60008060408385031215620002b657600080fd5b82516001600160401b0380821115620002ce57600080fd5b620002dc86838701620001f5565b93506020850151915080821115620002f357600080fd5b506200030285828601620001f5565b9150509250929050565b611eec806200031c6000396000f3fe608060405234801561001057600080fd5b506004361061030a5760003560e01c806382c630661161019c578063bb7b8b80116100ee578063e2e7d26411610097578063f851a44011610071578063f851a44014610597578063fc0c546a1461059e578063fee3f7f91461036257600080fd5b8063e2e7d26414610576578063ecb586a514610584578063f446c1d01461036257600080fd5b8063d96c7fce116100c8578063d96c7fce14610369578063dd62ed3e14610568578063ddca3f431461036257600080fd5b8063bb7b8b801461053a578063c661065714610542578063cc2b27d71461055557600080fd5b80639fdaea0c11610150578063b739953e1161012a578063b739953e14610501578063b91434d114610514578063b9947eb01461052757600080fd5b80639fdaea0c146104db578063a6417ed6146104ee578063b4b577ad1461036257600080fd5b80638ea875f3116101815780638ea875f3146104bf57806395d89b411461033557806399bd2ba5146104c857600080fd5b806382c630661461048c57806385ca3c6f146104ac57600080fd5b80633df02124116102605780635e0d443f1161020957806371035418116101e3578063710354181461045457806376a2f0f0146103625780637b475b681461046757600080fd5b80635e0d443f1461042d57806363543f061461036257806370a082311461044057600080fd5b80634903b0d11161023a5780634903b0d1146104075780635409491a1461036257806356ac35031461041a57600080fd5b80633df02124146103e15780634469e30e146103695780634515cef3146103f457600080fd5b806318160ddd116102c257806323746eb81161029c57806323746eb814610393578063313ce567146103625780633883e119146103cb57600080fd5b806318160ddd146103625780631a4d01d21461037e5780632081066c1461036257600080fd5b806307211ef7116102f357806307211ef71461034f578063140522881461036257806314f059791461036957600080fd5b8063065a80d81461030f57806306fdde0314610335575b600080fd5b61032261031d36600461192d565b6105be565b6040519081526020015b60405180910390f35b6040805160208101825260008152905161032c9190611974565b61032261035d3660046119c5565b610677565b6000610322565b6103716106c7565b60405161032c9190611a01565b61039161038c366004611a32565b6106f2565b005b6103a66103a136600461192d565b6107e6565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161032c565b6103226103d9366004611a79565b600092915050565b6103916103ef366004611ab1565b610826565b610391610402366004611b88565b610950565b610322610415366004611bb3565b610b1c565b6103916104283660046119c5565b610b31565b61032261043b3660046119c5565b610b92565b61032261044e366004611bf0565b50600090565b610391610462366004611bb3565b600755565b610391610475366004611c0b565b600f9190910b600090815260066020526040902055565b6001546103a69073ffffffffffffffffffffffffffffffffffffffff1681565b6103716104ba366004611c35565b610bce565b61032260075481565b6103916104d6366004611c73565b610c04565b6103916104e9366004611c8f565b610c63565b6103916104fc366004611ab1565b610de6565b6103a661050f36600461192d565b6111a6565b6103916105223660046119c5565b6111be565b6103a6610535366004611bb3565b61121f565b600754610322565b6103a6610550366004611bb3565b611234565b610322610563366004611cac565b611249565b6103226103d9366004611cd8565b61032261044e366004611bb3565b610391610592366004611d02565b61127f565b60006103a6565b6000546103a69073ffffffffffffffffffffffffffffffffffffffff1681565b6000600282600f0b815481106105d6576105d6611d26565b6000918252602090912001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa15801561064d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106719190611d55565b92915050565b600f83810b60009081526005602090815260408083209386900b8352929052908120546b033b2e3c9fd0803ce8000000906106b3908490611d9d565b6106bd9190611dda565b90505b9392505050565b6106cf6118f8565b604051806060016040528060008152602001600081526020016000815250905090565b6000546040517f79cc67900000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff909116906379cc6790906044016020604051808303816000875af1158015610769573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078d9190611e15565b506107e133826002856fffffffffffffffffffffffffffffffff16815481106107b8576107b8611d26565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169190611402565b505050565b6000600282600f0b815481106107fe576107fe611d26565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1692915050565b6000610833858585610b92565b9050818110156108ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f437572766556314d6f636b3a20494e53554646494349454e545f4f555450555460448201527f5f414d4f554e540000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61091f3330856002896fffffffffffffffffffffffffffffffff16815481106108f5576108f5611d26565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169291906114d6565b61094933826002876fffffffffffffffffffffffffffffffff16815481106107b8576107b8611d26565b5050505050565b60005b6003811015610a7f57600083826003811061097057610970611d26565b60200201511115610a6d576002818154811061098e5761098e611d26565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff166323b872dd33308685600381106109c9576109c9611d26565b60200201516040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6b9190611e15565b505b80610a7781611e32565b915050610953565b506000546040517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f19906044015b6020604051808303816000875af1158015610af8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e19190611e15565b6000600282815481106105d6576105d6611d26565b600f83810b60009081526005602090815260408083209386900b835292905220819055610b6a6b033b2e3c9fd0803ce80000008261153a565b600f92830b60009081526005602090815260408083209690950b825294909452919092205550565b600f83810b60009081526004602090815260408083209386900b8352929052908120546b033b2e3c9fd0803ce8000000906106b3908490611d9d565b610bd66118f8565b6040805160608181019092529085906003908390839080828437600092019190915250919695505050505050565b6000546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052909116906340c10f1990604401610ad9565b60005b6003811015610d88576000838260038110610c8357610c83611d26565b60200201351115610d765760028181548110610ca157610ca1611d26565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33858460038110610cdb57610cdb611d26565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff9093166004840152602002013560248201526044016020604051808303816000875af1158015610d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d749190611e15565b505b80610d8081611e32565b915050610c66565b506000546040517f79cc67900000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906379cc679090604401610ad9565b60006002856fffffffffffffffffffffffffffffffff1681548110610e0d57610e0d611d26565b60009182526020822001546003805473ffffffffffffffffffffffffffffffffffffffff9092169350906fffffffffffffffffffffffffffffffff8816908110610e5957610e59611d26565b60009182526020822001546002805473ffffffffffffffffffffffffffffffffffffffff9092169350906fffffffffffffffffffffffffffffffff8816908110610ea557610ea5611d26565b60009182526020822001546003805473ffffffffffffffffffffffffffffffffffffffff9092169350906fffffffffffffffffffffffffffffffff8916908110610ef157610ef1611d26565b600091825260208220015473ffffffffffffffffffffffffffffffffffffffff169150610f1f898989610677565b905085811015610fb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f437572766556314d6f636b3a20494e53554646494349454e545f4f555450555460448201527f5f414d4f554e540000000000000000000000000000000000000000000000000060648201526084016108c1565b610fd373ffffffffffffffffffffffffffffffffffffffff851633308a6114d6565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301526024820189905285169063095ea7b3906044016020604051808303816000875af1158015611048573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106c9190611e15565b506040517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810188905273ffffffffffffffffffffffffffffffffffffffff8616906340c10f1990604401600060405180830381600087803b1580156110db57600080fd5b505af11580156110ef573d6000803e3d6000fd5b50506040517f1e9a69500000000000000000000000000000000000000000000000000000000081523060048201526024810184905273ffffffffffffffffffffffffffffffffffffffff86169250631e9a69509150604401600060405180830381600087803b15801561116157600080fd5b505af1158015611175573d6000803e3d6000fd5b5061119b9250505073ffffffffffffffffffffffffffffffffffffffff83163383611402565b505050505050505050565b6000600382600f0b815481106107fe576107fe611d26565b600f83810b60009081526004602090815260408083209386900b8352929052208190556111f76b033b2e3c9fd0803ce80000008261153a565b600f92830b60009081526004602090815260408083209690950b825294909452919092205550565b6000600382815481106107fe576107fe611d26565b6000600282815481106107fe576107fe611d26565b600f81900b6000908152600660205260408120546b033b2e3c9fd0803ce8000000906112759085611d9d565b6106c09190611dda565b60005b60038110156113a457600082826003811061129f5761129f611d26565b6020020151111561139257600281815481106112bd576112bd611d26565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338484600381106112f7576112f7611d26565b60200201516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af115801561136c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113909190611e15565b505b8061139c81611e32565b915050611282565b506000546040517f79cc67900000000000000000000000000000000000000000000000000000000081523360048201526024810184905273ffffffffffffffffffffffffffffffffffffffff909116906379cc679090604401610ad9565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107e19084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526116a0565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526115349085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611454565b50505050565b60408051808201909152600281527f4d330000000000000000000000000000000000000000000000000000000000006020820152600090826115a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c19190611974565b5060006115b7600284611dda565b90506b033b2e3c9fd0803ce80000006115f0827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611e6b565b6115fa9190611dda565b8411156040518060400160405280600281526020017f4d310000000000000000000000000000000000000000000000000000000000008152509061166b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c19190611974565b5082816116846b033b2e3c9fd0803ce800000087611d9d565b61168e9190611e82565b6116989190611dda565b949350505050565b6000611702826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166117ac9092919063ffffffff16565b8051909150156107e157808060200190518101906117209190611e15565b6107e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016108c1565b60606106bd848460008585843b61181f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108c1565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516118489190611e9a565b60006040518083038185875af1925050503d8060008114611885576040519150601f19603f3d011682016040523d82523d6000602084013e61188a565b606091505b509150915061189a8282866118a5565b979650505050505050565b606083156118b45750816106c0565b8251156118c45782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c19190611974565b60405180606001604052806003906020820280368337509192915050565b8035600f81900b811461192857600080fd5b919050565b60006020828403121561193f57600080fd5b6106c082611916565b60005b8381101561196357818101518382015260200161194b565b838111156115345750506000910152565b6020815260008251806020840152611993816040850160208701611948565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000606084860312156119da57600080fd5b6119e384611916565b92506119f160208501611916565b9150604084013590509250925092565b60608101818360005b6003811015611a29578151835260209283019290910190600101611a0a565b50505092915050565b600080600060608486031215611a4757600080fd5b833592506119f160208501611916565b806060810183101561067157600080fd5b8015158114611a7657600080fd5b50565b60008060808385031215611a8c57600080fd5b611a968484611a57565b91506060830135611aa681611a68565b809150509250929050565b60008060008060808587031215611ac757600080fd5b611ad085611916565b9350611ade60208601611916565b93969395505050506040820135916060013590565b600082601f830112611b0457600080fd5b6040516060810181811067ffffffffffffffff82111715611b4e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052806060840185811115611b6357600080fd5b845b81811015611b7d578035835260209283019201611b65565b509195945050505050565b60008060808385031215611b9b57600080fd5b611ba58484611af3565b946060939093013593505050565b600060208284031215611bc557600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461192857600080fd5b600060208284031215611c0257600080fd5b6106c082611bcc565b60008060408385031215611c1e57600080fd5b611c2783611916565b946020939093013593505050565b600080600060e08486031215611c4a57600080fd5b611c548585611a57565b9250611c638560608601611a57565b915060c084013590509250925092565b60008060408385031215611c8657600080fd5b611c2783611bcc565b60008060808385031215611ca257600080fd5b611ba58484611a57565b60008060408385031215611cbf57600080fd5b82359150611ccf60208401611916565b90509250929050565b60008060408385031215611ceb57600080fd5b611cf483611bcc565b9150611ccf60208401611bcc565b60008060808385031215611d1557600080fd5b82359150611ccf8460208501611af3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611d6757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611dd557611dd5611d6e565b500290565b600082611e10577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215611e2757600080fd5b81516106c081611a68565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611e6457611e64611d6e565b5060010190565b600082821015611e7d57611e7d611d6e565b500390565b60008219821115611e9557611e95611d6e565b500190565b60008251611eac818460208701611948565b919091019291505056fea2646970667358221220a76213374b33de2cb1c5d61e9c1133f6d8163c7b90c32a6142a6f4fd98fe430364736f6c634300080a003360a06040523480156200001157600080fd5b506040516200175838038062001758833981016040819052620000349162000269565b8251839083906200004d906003906020850190620000f6565b50805162000063906004906020840190620000f6565b505050620000806200007a620000a060201b60201c565b620000a4565b60ff166080525050600680546001600160a01b031916331790556200032b565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200010490620002ee565b90600052602060002090601f01602090048101928262000128576000855562000173565b82601f106200014357805160ff191683800117855562000173565b8280016001018555821562000173579182015b828111156200017357825182559160200191906001019062000156565b506200018192915062000185565b5090565b5b8082111562000181576000815560010162000186565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001c457600080fd5b81516001600160401b0380821115620001e157620001e16200019c565b604051601f8301601f19908116603f011681019082821181831017156200020c576200020c6200019c565b816040528381526020925086838588010111156200022957600080fd5b600091505b838210156200024d57858201830151818301840152908201906200022e565b838211156200025f5760008385830101525b9695505050505050565b6000806000606084860312156200027f57600080fd5b83516001600160401b03808211156200029757600080fd5b620002a587838801620001b2565b94506020860151915080821115620002bc57600080fd5b50620002cb86828701620001b2565b925050604084015160ff81168114620002e357600080fd5b809150509250925092565b600181811c908216806200030357607f821691505b602082108114156200032557634e487b7160e01b600052602260045260246000fd5b50919050565b60805161141162000347600039600061025f01526114116000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806370a08231116100cd5780639dc29fac11610081578063a9059cbb11610066578063a9059cbb1461034c578063dd62ed3e1461035f578063f2fde38b146103a557600080fd5b80639dc29fac14610326578063a457c2d71461033957600080fd5b806379cc6790116100b257806379cc6790146102ed5780638da5cb5b1461030057806395d89b411461031e57600080fd5b806370a08231146102af578063715018a6146102e557600080fd5b806318160ddd11610124578063313ce56711610109578063313ce56714610258578063395093511461028957806340c10f191461029c57600080fd5b806318160ddd1461023357806323b872dd1461024557600080fd5b806306fdde03146101565780630754617214610174578063095ea7b3146101b95780631652e9fc146101dc575b600080fd5b61015e6103b8565b60405161016b91906111d2565b60405180910390f35b6006546101949073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016b565b6101cc6101c736600461126e565b61044a565b604051901515815260200161016b565b6102316101ea366004611298565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b005b6002545b60405190815260200161016b565b6101cc6102533660046112ba565b610460565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161016b565b6101cc61029736600461126e565b61054b565b6101cc6102aa36600461126e565b610594565b6102376102bd366004611298565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102316106a3565b6101cc6102fb36600461126e565b610730565b60055473ffffffffffffffffffffffffffffffffffffffff16610194565b61015e6107be565b6101cc61033436600461126e565b6107cd565b6101cc61034736600461126e565b6107d9565b6101cc61035a36600461126e565b6108b1565b61023761036d3660046112f6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6102316103b3366004611298565b6108be565b6060600380546103c790611329565b80601f01602080910402602001604051908101604052809291908181526020018280546103f390611329565b80156104405780601f1061041557610100808354040283529160200191610440565b820191906000526020600020905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b60006104573384846109ee565b50600192915050565b600061046d848484610ba2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482811015610533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61054085338584036109ee565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161045791859061058f9086906113ac565b6109ee565b60065460009073ffffffffffffffffffffffffffffffffffffffff163314610618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d696e7465722063616c6c73206f6e6c79000000000000000000000000000000604482015260640161052a565b60065473ffffffffffffffffffffffffffffffffffffffff163314610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d696e7465722063616c6c73206f6e6c79000000000000000000000000000000604482015260640161052a565b6104578383610e56565b60055473ffffffffffffffffffffffffffffffffffffffff163314610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052a565b61072e6000610f76565b565b60065460009073ffffffffffffffffffffffffffffffffffffffff1633146107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d696e7465722063616c6c73206f6e6c79000000000000000000000000000000604482015260640161052a565b6104578383610fed565b6060600480546103c790611329565b60006104578383610fed565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120548281101561089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161052a565b6108a733858584036109ee565b5060019392505050565b6000610457338484610ba2565b60055473ffffffffffffffffffffffffffffffffffffffff16331461093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052a565b73ffffffffffffffffffffffffffffffffffffffff81166109e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161052a565b6109eb81610f76565b50565b73ffffffffffffffffffffffffffffffffffffffff8316610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8216610b33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8216610ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610d9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610de29084906113ac565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e4891815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610ed3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161052a565b8060026000828254610ee591906113ac565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610f1f9084906113ac565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff8216611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015611146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906111829084906113c4565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610b95565b600060208083528351808285015260005b818110156111ff578581018301518582016040015282016111e3565b81811115611211576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461126957600080fd5b919050565b6000806040838503121561128157600080fd5b61128a83611245565b946020939093013593505050565b6000602082840312156112aa57600080fd5b6112b382611245565b9392505050565b6000806000606084860312156112cf57600080fd5b6112d884611245565b92506112e660208501611245565b9150604084013590509250925092565b6000806040838503121561130957600080fd5b61131283611245565b915061132060208401611245565b90509250929050565b600181811c9082168061133d57607f821691505b60208210811415611377577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156113bf576113bf61137d565b500190565b6000828210156113d6576113d661137d565b50039056fea2646970667358221220fd9684963a1e0e9d3eb55681a6f85f5c76804530c79f10cf8d0cfbd35511577164736f6c634300080a00336101606040523480156200001257600080fd5b5060405162001852380380620018528339810160408190526200003591620003a3565b6000805460ff191690558585828260c882826001600160a01b0381166200006f57604051635919af9760e11b815260040160405180910390fd5b806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d49190620004de565b6001600160a01b0316608052508051620000f6906002906020840190620002ca565b505060a052506001600160a01b0382166200012457604051635919af9760e11b815260040160405180910390fd5b6001600160a01b03821660c0819052670de0b6b3a764000060e05260408051630176f71760e71b815290516000929163bb7b8b809160048083019260209291908290030181865afa1580156200017e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a4919062000503565b9050620001b1816200022a565b505050506001600160a01b0384161580620001d357506001600160a01b038316155b80620001e657506001600160a01b038216155b156200020557604051635919af9760e11b815260040160405180910390fd5b506001600160a01b039283166101005290821661012052166101405250620005d09050565b8062000249576040516309aadd6f60e41b815260040160405180910390fd5b60018190557f82e7ee47180a631312683eeb2a85ad264c9af490d54de5a75bbdb95b968c6de2816200027b8162000296565b6040805192835260208301919091520160405180910390a150565b60a05160009061271090620002ac908262000533565b620002b890846200054e565b620002c4919062000570565b92915050565b828054620002d89062000593565b90600052602060002090601f016020900481019282620002fc576000855562000347565b82601f106200031757805160ff191683800117855562000347565b8280016001018555821562000347579182015b82811115620003475782518255916020019190600101906200032a565b506200035592915062000359565b5090565b5b808211156200035557600081556001016200035a565b80516001600160a01b03811681146200038857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215620003bd57600080fd5b620003c88762000370565b95506020620003d981890162000370565b9550620003e96040890162000370565b9450620003f96060890162000370565b9350620004096080890162000370565b60a08901519093506001600160401b03808211156200042757600080fd5b818a0191508a601f8301126200043c57600080fd5b8151818111156200045157620004516200038d565b604051601f8201601f19908116603f011681019083821181831017156200047c576200047c6200038d565b816040528281528d868487010111156200049557600080fd5b600093505b82841015620004b957848401860151818501870152928501926200049a565b82841115620004cb5760008684830101525b8096505050505050509295509295509295565b600060208284031215620004f157600080fd5b620004fc8262000370565b9392505050565b6000602082840312156200051657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156200054957620005496200051d565b500190565b60008160001904831182151516156200056b576200056b6200051d565b500290565b6000826200058e57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c90821680620005a857607f821691505b60208210811415620005ca57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e0516101005161012051610140516111e86200066a6000396000818161023501526108c8015260008181610383015261080901526000818161033901526107620152600081816103120152610a250152600081816101b001526109890152600081816101760152610c170152600081816102eb015281816103db01528181610557015261068f01526111e86000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80639a6fc8f5116100cd578063b09ad8a011610081578063d62ada1111610066578063d62ada1114610376578063e5693f411461037e578063feaf968c146103a557600080fd5b8063b09ad8a01461035b578063bc489a651461036357600080fd5b8063a50cf2c8116100b2578063a50cf2c8146102e6578063a834559e1461030d578063ab0ca0e11461033457600080fd5b80639a6fc8f514610293578063a384d6ff146102dd57600080fd5b8063427cb6fe116101245780635c975abb116101095780635c975abb1461025f5780637284e416146102765780638456cb591461028b57600080fd5b8063427cb6fe1461023057806354fd4d501461025757600080fd5b8063313ce56711610155578063313ce567146101f75780633f4ba83a146102115780633fd0875f1461021b57600080fd5b806312b495a814610171578063218751b2146101ab575b600080fd5b6101987f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6101d27f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a2565b6101ff600881565b60405160ff90911681526020016101a2565b6102196103ad565b005b610223600381565b6040516101a29190610dd7565b6101d27f000000000000000000000000000000000000000000000000000000000000000081565b610198600181565b60005460ff165b60405190151581526020016101a2565b61027e61049b565b6040516101a29190610e18565b610219610529565b6102a66102a1366004610ea3565b610615565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a0016101a2565b61019860015481565b6101d27f000000000000000000000000000000000000000000000000000000000000000081565b6101987f000000000000000000000000000000000000000000000000000000000000000081565b6101d27f000000000000000000000000000000000000000000000000000000000000000081565b61019861064f565b610219610371366004610ec7565b610661565b610266600181565b6101d27f000000000000000000000000000000000000000000000000000000000000000081565b6102a6610751565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa158015610437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045b9190610ee0565b610491576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610499610a67565b565b600280546104a890610f02565b80601f01602080910402602001604051908101604052809291908181526020018280546104d490610f02565b80156105215780601f106104f657610100808354040283529160200191610521565b820191906000526020600020905b81548152906001019060200180831161050457829003601f168201915b505050505081565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa1580156105b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d79190610ee0565b61060d576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610499610b4d565b60008060008060006040517f24e46f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061065c600154610c0d565b905090565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa1580156106eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070f9190610ee0565b610745576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61074e81610c56565b50565b6000806000806000806000806000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156107cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ef9190610f56565b939d50919b509950975095506108078a8a8989610cd8565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108969190610f56565b9398509196509450925090506108ae85858484610cd8565b888412156108c6578499508398508297508196508095505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610931573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109559190610f56565b93985091965094509250905061096d85858484610cd8565b88841215610985578499508398508297508196508095505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb7b8b806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a169190610fae565b9050610a2181610d73565b90507f0000000000000000000000000000000000000000000000000000000000000000610a4e828c610ff6565b610a5891906110e1565b99505050505050509091929394565b60005460ff16610ad8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60005460ff1615610bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610acf565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b233390565b6000612710610c3c7f000000000000000000000000000000000000000000000000000000000000000082611149565b610c469084611161565b610c50919061119e565b92915050565b80610c8d576040517f9aadd6f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190557f82e7ee47180a631312683eeb2a85ad264c9af490d54de5a75bbdb95b968c6de281610cbd81610c0d565b6040805192835260208301919091520160405180910390a150565b60008313610d12576040517f56e05d2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8369ffffffffffffffffffff168169ffffffffffffffffffff161080610d36575081155b15610d6d576040517fb1cf675500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60015460009080831015610db3576040517fb416da7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610dbe82610c0d565b905080841115610dcf579392505050565b509192915050565b6020810160068310610e12577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600060208083528351808285015260005b81811015610e4557858101830151858201604001528201610e29565b81811115610e57576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b69ffffffffffffffffffff8116811461074e57600080fd5b600060208284031215610eb557600080fd5b8135610ec081610e8b565b9392505050565b600060208284031215610ed957600080fd5b5035919050565b600060208284031215610ef257600080fd5b81518015158114610ec057600080fd5b600181811c90821680610f1657607f821691505b60208210811415610f50577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600080600080600060a08688031215610f6e57600080fd5b8551610f7981610e8b565b809550506020860151935060408601519250606086015191506080860151610fa081610e8b565b809150509295509295909350565b600060208284031215610fc057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561103757611037610fc7565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561107257611072610fc7565b6000871292508782058712848416161561108e5761108e610fc7565b878505871281841616156110a4576110a4610fc7565b505050929093029392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826110f0576110f06110b2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561114457611144610fc7565b500590565b6000821982111561115c5761115c610fc7565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561119957611199610fc7565b500290565b6000826111ad576111ad6110b2565b50049056fea2646970667358221220226b667ed6fc6db7c8ec1377cc84dae524e2dc572320ead4a7092944a6b912de64736f6c634300080a00336102606040523480156200001257600080fd5b5060405162005f8c38038062005f8c833981016040819052620000359162000ba4565b83838383600384846001600160a01b03821615806200005b57506001600160a01b038116155b156200007a57604051635919af9760e11b815260040160405180910390fd5b6001600160a01b038216608081905260408051632f7a188160e01b81529051632f7a1881916004808201926020929091908290030181865afa158015620000c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000eb919062000c01565b6001600160a01b0390811660a05290811660c05260016000558416151590506200012857604051635919af9760e11b815260040160405180910390fd5b608051604051630f67c5bd60e41b81526001600160a01b0385811660048301529091169063f67c5bd090602401602060405180830381865afa15801562000173573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000199919062000c26565b620001c757604051634c607af960e11b81526001600160a01b03841660048201526024015b60405180910390fd5b6001600160a01b038084166101e081905261020052821661022052610240819052620001f460006200090a565b6001600160a01b031660e0526200020c60016200090a565b6001600160a01b0316610100526200022560026200090a565b6001600160a01b0316610120526200023e60036200090a565b6001600160a01b031661014052620002576000620009fd565b6001600160a01b031661016052620002706001620009fd565b6001600160a01b031661018052620002896002620009fd565b6001600160a01b03166101a052620002a26003620009fd565b6001600160a01b039081166101c05260e051161580620002cc5750610100516001600160a01b0316155b15620002eb57604051635919af9760e11b815260040160405180910390fd5b600281118015620003065750610120516001600160a01b0316155b156200032557604051635919af9760e11b815260040160405180910390fd5b600381118015620003405750610140516001600160a01b0316155b156200035f57604051635919af9760e11b815260040160405180910390fd5b60805160e051604051630f67c5bd60e41b81526001600160a01b03918216600482015291169063f67c5bd090602401602060405180830381865afa158015620003ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d2919062000c26565b620004005760e051604051634c607af960e11b81526001600160a01b039091166004820152602401620001be565b60805161010051604051630f67c5bd60e41b81526001600160a01b03918216600482015291169063f67c5bd090602401602060405180830381865afa1580156200044e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000474919062000c26565b620004a35761010051604051634c607af960e11b81526001600160a01b039091166004820152602401620001be565b60028111801562000525575060805161012051604051630f67c5bd60e41b81526001600160a01b03918216600482015291169063f67c5bd090602401602060405180830381865afa158015620004fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000523919062000c26565b155b15620005555761012051604051634c607af960e11b81526001600160a01b039091166004820152602401620001be565b600381118015620005d7575060805161014051604051630f67c5bd60e41b81526001600160a01b03918216600482015291169063f67c5bd090602401602060405180830381865afa158015620005af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d5919062000c26565b155b15620006075761014051604051634c607af960e11b81526001600160a01b039091166004820152602401620001be565b610160516001600160a01b03161580159062000694575060805161016051604051630f67c5bd60e41b81526001600160a01b03918216600482015291169063f67c5bd090602401602060405180830381865afa1580156200066c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000692919062000c26565b155b15620006c45761016051604051634c607af960e11b81526001600160a01b039091166004820152602401620001be565b610180516001600160a01b03161580159062000751575060805161018051604051630f67c5bd60e41b81526001600160a01b03918216600482015291169063f67c5bd090602401602060405180830381865afa15801562000729573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200074f919062000c26565b155b15620007815761018051604051634c607af960e11b81526001600160a01b039091166004820152602401620001be565b6101a0516001600160a01b0316158015906200080e57506080516101a051604051630f67c5bd60e41b81526001600160a01b03918216600482015291169063f67c5bd090602401602060405180830381865afa158015620007e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200080c919062000c26565b155b156200083e576101a051604051634c607af960e11b81526001600160a01b039091166004820152602401620001be565b6101c0516001600160a01b031615801590620008cb57506080516101c051604051630f67c5bd60e41b81526001600160a01b03918216600482015291169063f67c5bd090602401602060405180830381865afa158015620008a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008c9919062000c26565b155b15620008fb576101c051604051634c607af960e11b81526001600160a01b039091166004820152602401620001be565b50505050505050505062000c66565b60c05160405163c661065760e01b8152600481018390526000916001600160a01b03169063c661065790602401602060405180830381865afa92505050801562000973575060408051601f3d908101601f19168201909252620009709181019062000c01565b60015b6200097e5762000984565b92915050565b60c05160405163046e8dd760e31b8152600f84900b60048201526001600160a01b03909116906323746eb8906024015b602060405180830381865afa925050508015620009f0575060408051601f3d908101601f19168201909252620009ed9181019062000c01565b60015b6200097e57506000919050565b610220516000906001600160a01b03161562000a1e576200097e8262000ac0565b60c051604051630b9947eb60e41b8152600481018490526001600160a01b039091169063b9947eb090602401602060405180830381865afa92505050801562000a86575060408051601f3d908101601f1916820190925262000a839181019062000c01565b60015b6200097e5760c051604051635b9cca9f60e11b8152600f84900b60048201526001600160a01b039091169063b739953e90602401620009b4565b60008162000ad4576200097e600062000b17565b610220516001600160a01b031663c661065762000af360018562000c40565b6040518263ffffffff1660e01b8152600401620009b491815260200190565b919050565b600081600f0b6000141562000b2b575060e0515b81600f0b6001141562000b3e5750610100515b81600f0b6002141562000b515750610120515b81600f0b6003141562000b645750610140515b6001600160a01b03811662000b12576040516334769e6f60e21b815260040160405180910390fd5b80516001600160a01b038116811462000b1257600080fd5b6000806000806080858703121562000bbb57600080fd5b62000bc68562000b8c565b935062000bd66020860162000b8c565b925062000be66040860162000b8c565b915062000bf66060860162000b8c565b905092959194509250565b60006020828403121562000c1457600080fd5b62000c1f8262000b8c565b9392505050565b60006020828403121562000c3957600080fd5b5051919050565b60008282101562000c6157634e487b7160e01b600052601160045260246000fd5b500390565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516102205161024051614fa962000fe36000396000818161078301528181613708015281816138bf015281816139d901528181613e0f0152613f01015260006105de01526000818161067501528181611f680152818161239f0152818161278901528181612e6b01528181612f0901526131ed015260006108ad01526000818161059c015261288b0152600081816103d4015261285c015260008181610605015261282d0152600081816106af01526127fe015260008181610876015281816126630152818161363501528181613f6b01526146640152600081816104d7015281816126340152818161356501528181613e7901526145480152600081816107f3015281816126050152818161349501528181613d85015261442c015260008181610448015281816125d6015281816133c501528181613cb901526143100152600081816107350152818161091a015281816109e701528181610a7701528181610b6f01528181610bfe01528181610c9501528181610d2601528181611139015281816111b1015281816112ee0152818161144101528181611578015281816115c00152818161166d015281816116b5015281816117660152818161179b01528181611ac501528181611b4301528181611ccd01528181611d4501528181611dea01528181611fb20152818161206b015281816120a00152818161213b0152818161245e015281816124cb0152818161255c01528181612aa901528181612bc801528181612ca2015281816142e801528181614404015281816145200152818161463c01526147840152600081816104fe0152818161291401528181614055015261482b01526000818161075c01528181610ec9015281816118a601528181611ef4015281816122450152818161270101528181612aff01528181612b9901528181612cf801528181612da0015281816130630152818161311a01528181613215015281816132f8015281816133ed015281816134bd0152818161358d0152818161365d01528181613bf401528181613ce401528181613dad01528181613ea101528181613f93015281816140dd015281816141910152818161423b0152818161435e0152818161447a01528181614596015281816146b20152818161475501526148950152614fa96000f3fe608060405234801561001057600080fd5b50600436106103a45760003560e01c806379bea664116101e9578063cc2b27d71161010f578063e2e7d264116100ad578063f446c1d01161007c578063f446c1d014610898578063f851a440146108a0578063fc0c546a146108a8578063fee3f7f9146108cf57600080fd5b8063e2e7d26414610838578063ec026ca71461084b578063ecb586a51461085e578063ef14101e1461087157600080fd5b8063d21220a7116100e9578063d21220a7146107ee578063d96c7fce14610815578063dd62ed3e1461081d578063ddca3f431461083057600080fd5b8063cc2b27d7146107b3578063ce30bbdb146107c6578063cf023dd0146107db57600080fd5b8063b4b577ad11610187578063bd90df7011610156578063bd90df7014610730578063c12c21c014610757578063c21ee1621461077e578063c6610657146107a557600080fd5b8063b4b577ad146106ff578063b739953e14610707578063b9947eb01461071a578063bb7b8b801461072857600080fd5b80638ba51dfc116101c35780638ba51dfc146106aa57806395d89b41146106d15780639fdaea0c146106d9578063a6417ed6146106ec57600080fd5b806379bea6641461065d57806382c630661461067057806385ca3c6f1461069757600080fd5b806333d2ebf2116102ce57806357d788751161026c5780636e1d82711161023b5780636e1d82711461060057806370a082311461062757806376a2f0f01461063a57806378aa73a41461064257600080fd5b806357d78875146105975780635e0d443f146105be57806363543f06146105d157806364a89bca146105d957600080fd5b80634469e30e116102a85780634469e30e146105615780634515cef3146105695780634903b0d11461057c5780635409491a1461058f57600080fd5b806333d2ebf2146105285780633883e1191461053b5780633df021241461054e57600080fd5b806318160ddd1161034657806323746eb81161031557806323746eb8146104bf57806325be124e146104d25780632f7a1881146104f9578063313ce5671461052057600080fd5b806318160ddd146104875780631a4d01d21461048f5780631af4de83146104a45780632081066c146104b757600080fd5b806307211ef71161038257806307211ef7146104305780630dfe168114610443578063140522881461046a57806314f059791461047257600080fd5b8063065a80d8146103a957806306871163146103cf57806306fdde031461041b575b600080fd5b6103bc6103b736600461491d565b6108d7565b6040519081526020015b60405180910390f35b6103f67f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103c6565b610423610a73565b6040516103c691906149ae565b6103bc61043e3660046149c1565b610b2b565b6103f67f000000000000000000000000000000000000000000000000000000000000000081565b6103bc610bfa565b61047a610c8b565b6040516103c691906149fd565b6103bc610d22565b6104a261049d366004614a2e565b610d8f565b005b6104a26104b23660046149c1565b610e27565b6103bc611135565b6103f66104cd36600461491d565b6111a2565b6103f67f000000000000000000000000000000000000000000000000000000000000000081565b6103f67f000000000000000000000000000000000000000000000000000000000000000081565b6103bc6111ad565b6104a2610536366004614a53565b61121a565b6103bc610549366004614a8e565b6112ae565b6104a261055c366004614acb565b611366565b61047a611437565b6104a2610577366004614b0d565b6114aa565b6103bc61058a366004614b38565b611546565b6103bc6115bc565b6103f67f000000000000000000000000000000000000000000000000000000000000000081565b6103bc6105cc3660046149c1565b611629565b6103bc6116b1565b6103f67f000000000000000000000000000000000000000000000000000000000000000081565b6103f67f000000000000000000000000000000000000000000000000000000000000000081565b6103bc610635366004614b73565b61171e565b6103bc611797565b61064a600281565b60405161ffff90911681526020016103c6565b6104a261066b3660046149c1565b611804565b6103f67f000000000000000000000000000000000000000000000000000000000000000081565b61047a6106a5366004614b90565b611a80565b6103f67f000000000000000000000000000000000000000000000000000000000000000081565b610423611b3f565b6104a26106e7366004614b0d565b611bac565b6104a26106fa366004614acb565b611c3f565b6103bc611cc9565b6103f661071536600461491d565b611d36565b6103f6610715366004614b38565b6103bc611d41565b6103f67f000000000000000000000000000000000000000000000000000000000000000081565b6103f67f000000000000000000000000000000000000000000000000000000000000000081565b6103bc7f000000000000000000000000000000000000000000000000000000000000000081565b6103f66104cd366004614b38565b6103bc6107c1366004614bce565b611dae565b6107ce600681565b6040516103c69190614bfa565b6104a26107e9366004614a2e565b611e2e565b6103f67f000000000000000000000000000000000000000000000000000000000000000081565b61047a611fa8565b6103bc61082b366004614c3b565b61201b565b6103bc61209c565b6103bc610846366004614b38565b612109565b6104a2610859366004614a53565b61217f565b6104a261086c366004614c69565b6123e0565b6103f67f000000000000000000000000000000000000000000000000000000000000000081565b6103bc61245a565b6103f66124c7565b6103f67f000000000000000000000000000000000000000000000000000000000000000081565b6103bc612558565b6040517f4903b0d10000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff821660048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634903b0d1906024015b602060405180830381865afa9250505080156109b1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526109ae91810190614c8d565b60015b610a68576040517f065a80d8000000000000000000000000000000000000000000000000000000008152600f83900b60048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063065a80d8906024015b602060405180830381865afa158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190614c8d565b92915050565b919050565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ae0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610b269190810190614d67565b905090565b6040517f07211ef7000000000000000000000000000000000000000000000000000000008152600f84810b600483015283900b6024820152604481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906307211ef7906064015b602060405180830381865afa158015610bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf09190614c8d565b90505b9392505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663140522886040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b269190614c8d565b610c936148ed565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166314f059796040518163ffffffff1660e01b8152600401606060405180830381865afa158015610cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b269190614db8565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b60026000541415610e01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610e11836125c5565b9050610e1c816126d0565b505060016000555050565b60026000541415610e94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610df8565b600260009081556040517fe958b7040000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa158015610f25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f499190614e36565b90506000610f56856127ed565b90506000610f63856127ed565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529192506000918416906370a0823190602401602060405180830381865afa158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff99190614c8d565b90506001811115611127577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160006b033b2e3c9fd0803ce800000061103f8784614e53565b6110499190614eb7565b604051600f8a810b602483015289900b60448201526064810184905260848101829052909150611124908690869086907fa6417ed6000000000000000000000000000000000000000000000000000000009060a4015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526001806128f7565b50505b505060016000555050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632081066c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b6000610a68826125c5565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b60026000541415611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610df8565b60026000908155611297836125c5565b90506112a4838284612d6f565b5050600160005550565b6040517f3883e11900000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690633883e119906113259086908690600401614ef2565b602060405180830381865afa158015611342573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf39190614c8d565b600260005414156113d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610df8565b600260009081556113e3856125c5565b905060006113f0856125c5565b905061112782826000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060019350915061301a9050565b61143f6148ed565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634469e30e6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610cfe573d6000803e3d6000fd5b60026000541415611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610df8565b6002600090815561153d90600184358110916020860135821091604087013511906130e9565b50506001600055565b6040517f4903b0d1000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634903b0d19060240161095a565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635409491a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b6040517f5e0d443f000000000000000000000000000000000000000000000000000000008152600f84810b600483015283900b6024820152604481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635e0d443f90606401610baf565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166363543f066040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401610a27565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166376a2f0f06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b60026000541415611871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610df8565b600260009081556040517fe958b7040000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa158015611902573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119269190614e36565b90506000611933856125c5565b90506000611940856125c5565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529192506000918416906370a0823190602401602060405180830381865afa1580156119b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d69190614c8d565b90506001811115611127577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160006b033b2e3c9fd0803ce8000000611a1c8784614e53565b611a269190614eb7565b604051600f8a810b602483015289900b60448201526064810184905260848101829052909150611124908690869086907f3df02124000000000000000000000000000000000000000000000000000000009060a40161109f565b611a886148ed565b6040517f85ca3c6f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906385ca3c6f90611afe90879087908790600401614f0a565b606060405180830381865afa158015611b1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf09190614db8565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ae0573d6000803e3d6000fd5b60026000541415611c19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610df8565b6002600090815561153d90600184358110916020860135821091604087013511906132c7565b60026000541415611cac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610df8565b60026000908155611cbc856127ed565b905060006113f0856127ed565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b4b577ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b6000610a68826127ed565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb7b8b806040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b6040517fcc2b27d700000000000000000000000000000000000000000000000000000000815260048101839052600f82900b60248201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063cc2b27d790604401611325565b60026000541415611e9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610df8565b60026000908155611eab836125c5565b6040517fe958b70400000000000000000000000000000000000000000000000000000000815233600482015290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e958b70490602401602060405180830381865afa158015611f3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5f9190614e36565b9050611f9b81837f0000000000000000000000000000000000000000000000000000000000000000611f92888a89613704565b600160006128f7565b5050600160005550505050565b611fb06148ed565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d96c7fce6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610cfe573d6000803e3d6000fd5b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015282811660248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063dd62ed3e90604401611325565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b6040517fe2e7d264000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e2e7d26490602401610a27565b600260005414156121ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610df8565b600260009081556121fc836125c5565b6040517fe958b70400000000000000000000000000000000000000000000000000000000815233600482015290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e958b70490602401602060405180830381865afa15801561228c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b09190614e36565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301529192506000918416906370a0823190602401602060405180830381865afa158015612322573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123469190614c8d565b905060018111156123d4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160006b033b2e3c9fd0803ce800000061238c8684614e53565b6123969190614eb7565b90506123d183857f00000000000000000000000000000000000000000000000000000000000000006123c98a8787613704565b6001806128f7565b50505b50506001600055505050565b6002600054141561244d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610df8565b600260005561153d613bc3565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f446c1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015612534573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b269190614e36565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fee3f7f96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b600081600f0b600014156125f657507f00000000000000000000000000000000000000000000000000000000000000005b81600f0b6001141561262557507f00000000000000000000000000000000000000000000000000000000000000005b81600f0b6002141561265457507f00000000000000000000000000000000000000000000000000000000000000005b81600f0b6003141561268357507f00000000000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff8116610a6e576040517fd1da79bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fe958b7040000000000000000000000000000000000000000000000000000000081523360048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa15801561275d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127819190614e36565b90506127e8817f0000000000000000000000000000000000000000000000000000000000000000846000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508291506128f79050565b505050565b600081600f0b6000141561281e57507f00000000000000000000000000000000000000000000000000000000000000005b81600f0b6001141561284d57507f00000000000000000000000000000000000000000000000000000000000000005b81600f0b6002141561287c57507f00000000000000000000000000000000000000000000000000000000000000005b81600f0b6003141561268357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8116610a6e576040517fd1da79bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606000803373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614612a60576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301528916906370a0823190602401602060405180830381865afa1580156129a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c99190614c8d565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152919350908816906370a0823190602401602060405180830381865afa158015612a39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5d9190614c8d565b90505b8415612b5c576040517f46fb371d00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116602483015289811660448301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60648301527f000000000000000000000000000000000000000000000000000000000000000016906346fb371d90608401600060405180830381600087803b158015612b4357600080fd5b505af1158015612b57573d6000803e3d6000fd5b505050505b6040517f6ce4074a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636ce4074a90612bf29033907f0000000000000000000000000000000000000000000000000000000000000000908b90600401614f31565b6000604051808303816000875af1158015612c11573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612c579190810190614d67565b92508415612d55576040517f46fb371d00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116602483015289811660448301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60648301527f000000000000000000000000000000000000000000000000000000000000000016906346fb371d90608401600060405180830381600087803b158015612d3c57600080fd5b505af1158015612d50573d6000803e3d6000fd5b505050505b612d6389898985858961403d565b50509695505050505050565b6040517fe958b7040000000000000000000000000000000000000000000000000000000081523360048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa158015612dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e209190614e36565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301529192506000917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015612eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed69190614c8d565b90506001811115613013577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01613011827f0000000000000000000000000000000000000000000000000000000000000000867f1a4d01d200000000000000000000000000000000000000000000000000000000858a6b033b2e3c9fd0803ce8000000612f638b84614e53565b612f6d9190614eb7565b6040516024810193909352600f9190910b60448301526064820152608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600060016128f7565b505b5050505050565b6040517fe958b70400000000000000000000000000000000000000000000000000000000815233600482015260609060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e958b70490602401602060405180830381865afa1580156130aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ce9190614e36565b90506130de8188888888886128f7565b979650505050505050565b6040517fe958b7040000000000000000000000000000000000000000000000000000000081523360048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa158015613176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061319a9190614e36565b90506131a88585858561429f565b6040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f000000000000000000000000000000000000000000000000000000000000000016906351e3f16090604401600060405180830381600087803b15801561325957600080fd5b505af115801561326d573d6000803e3d6000fd5b505050506132b16000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061471592505050565b506132be8585858561429f565b61301381614813565b6040517fe958b7040000000000000000000000000000000000000000000000000000000081523360048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190614e36565b9050841561344a576040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f000000000000000000000000000000000000000000000000000000000000000016906351e3f16090604401600060405180830381600087803b15801561343157600080fd5b505af1158015613445573d6000803e3d6000fd5b505050505b831561351a576040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f000000000000000000000000000000000000000000000000000000000000000016906351e3f16090604401600060405180830381600087803b15801561350157600080fd5b505af1158015613515573d6000803e3d6000fd5b505050505b82156135ea576040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f000000000000000000000000000000000000000000000000000000000000000016906351e3f16090604401600060405180830381600087803b1580156135d157600080fd5b505af11580156135e5573d6000803e3d6000fd5b505050505b81156136ba576040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f000000000000000000000000000000000000000000000000000000000000000016906351e3f16090604401600060405180830381600087803b1580156136a157600080fd5b505af11580156136b5573d6000803e3d6000fd5b505050505b6136fa6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061471592505050565b5061301381614813565b60607f0000000000000000000000000000000000000000000000000000000000000000600214156138bd5783600f0b6000146137fa576040516000602482015260448101849052606481018390527f0b4c7e4d00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138b6565b6040516024810184905260006044820152606481018390527f0b4c7e4d00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091525b9050610bf3565b7f0000000000000000000000000000000000000000000000000000000000000000600314156139d75783600f0b60001461398e5783600f0b60011461394557604051600060248201819052604482015260648101849052608481018390527f4515cef3000000000000000000000000000000000000000000000000000000009060a401613778565b604051600060248201819052604482018590526064820152608481018390527f4515cef3000000000000000000000000000000000000000000000000000000009060a401613778565b604051602481018490526000604482018190526064820152608481018390527f4515cef3000000000000000000000000000000000000000000000000000000009060a401613838565b7f000000000000000000000000000000000000000000000000000000000000000060041415613b615783600f0b600014613b115783600f0b600114613ac15783600f0b600214613a71576040516000602482018190526044820181905260648201526084810184905260a481018390527f029b2f34000000000000000000000000000000000000000000000000000000009060c401613778565b6040516000602482018190526044820181905260648201859052608482015260a481018390527f029b2f34000000000000000000000000000000000000000000000000000000009060c401613778565b6040516000602482018190526044820185905260648201819052608482015260a481018390527f029b2f34000000000000000000000000000000000000000000000000000000009060c401613778565b6040516024810184905260006044820181905260648201819052608482015260a481018390527f029b2f34000000000000000000000000000000000000000000000000000000009060c401613838565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e636f7272656374206e436f696e73000000000000000000000000000000006044820152606401610df8565b6040517fe958b7040000000000000000000000000000000000000000000000000000000081523360048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa158015613c50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c749190614e36565b6040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906351e3f16090604401600060405180830381600087803b158015613d2a57600080fd5b505af1158015613d3e573d6000803e3d6000fd5b50506040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000001692506351e3f1609150604401600060405180830381600087803b158015613df357600080fd5b505af1158015613e07573d6000803e3d6000fd5b5050505060027f00000000000000000000000000000000000000000000000000000000000000001115613ff0576040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f000000000000000000000000000000000000000000000000000000000000000016906351e3f16090604401600060405180830381600087803b158015613ee557600080fd5b505af1158015613ef9573d6000803e3d6000fd5b5050505060037f00000000000000000000000000000000000000000000000000000000000000001115613ff0576040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f000000000000000000000000000000000000000000000000000000000000000016906351e3f16090604401600060405180830381600087803b158015613fd757600080fd5b505af1158015613feb573d6000803e3d6000fd5b505050505b6140306000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061471592505050565b5061403a81614813565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461413e576040517f654a9eda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301528681166024830152858116604483015260648201859052608482018490527f0000000000000000000000000000000000000000000000000000000000000000169063654a9eda9060a401600060405180830381600087803b15801561412157600080fd5b505af1158015614135573d6000803e3d6000fd5b50505050613011565b80156141ee576040517f0d8f9cee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015286811660248301527f00000000000000000000000000000000000000000000000000000000000000001690630d8f9cee90604401600060405180830381600087803b1580156141d557600080fd5b505af11580156141e9573d6000803e3d6000fd5b505050505b6040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015285811660248301527f000000000000000000000000000000000000000000000000000000000000000016906351e3f16090604401600060405180830381600087803b15801561427f57600080fd5b505af1158015614293573d6000803e3d6000fd5b50505050505050505050565b83156143bb576040517f46fb371d00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660248301527f0000000000000000000000000000000000000000000000000000000000000000811660448301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60648301527f000000000000000000000000000000000000000000000000000000000000000016906346fb371d90608401600060405180830381600087803b1580156143a257600080fd5b505af11580156143b6573d6000803e3d6000fd5b505050505b82156144d7576040517f46fb371d00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660248301527f0000000000000000000000000000000000000000000000000000000000000000811660448301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60648301527f000000000000000000000000000000000000000000000000000000000000000016906346fb371d90608401600060405180830381600087803b1580156144be57600080fd5b505af11580156144d2573d6000803e3d6000fd5b505050505b81156145f3576040517f46fb371d00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660248301527f0000000000000000000000000000000000000000000000000000000000000000811660448301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60648301527f000000000000000000000000000000000000000000000000000000000000000016906346fb371d90608401600060405180830381600087803b1580156145da57600080fd5b505af11580156145ee573d6000803e3d6000fd5b505050505b801561470f576040517f46fb371d00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660248301527f0000000000000000000000000000000000000000000000000000000000000000811660448301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60648301527f000000000000000000000000000000000000000000000000000000000000000016906346fb371d90608401600060405180830381600087803b1580156146f657600080fd5b505af115801561470a573d6000803e3d6000fd5b505050505b50505050565b6040517f6ce4074a00000000000000000000000000000000000000000000000000000000815260609073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636ce4074a906147ae9033907f0000000000000000000000000000000000000000000000000000000000000000908790600401614f31565b6000604051808303816000875af11580156147cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a689190810190614d67565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461403a576040517f9537301800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f00000000000000000000000000000000000000000000000000000000000000001690639537301890602401600060405180830381600087803b1580156148d957600080fd5b505af1158015613013573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b8035600f81900b8114610a6e57600080fd5b60006020828403121561492f57600080fd5b610bf38261490b565b60005b8381101561495357818101518382015260200161493b565b8381111561470f5750506000910152565b6000815180845261497c816020860160208601614938565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610bf36020830184614964565b6000806000606084860312156149d657600080fd5b6149df8461490b565b92506149ed6020850161490b565b9150604084013590509250925092565b60608101818360005b6003811015614a25578151835260209283019290910190600101614a06565b50505092915050565b600080600060608486031215614a4357600080fd5b833592506149ed6020850161490b565b60008060408385031215614a6657600080fd5b614a6f8361490b565b946020939093013593505050565b8060608101831015610a6857600080fd5b60008060808385031215614aa157600080fd5b614aab8484614a7d565b915060608301358015158114614ac057600080fd5b809150509250929050565b60008060008060808587031215614ae157600080fd5b614aea8561490b565b9350614af86020860161490b565b93969395505050506040820135916060013590565b60008060808385031215614b2057600080fd5b614b2a8484614a7d565b946060939093013593505050565b600060208284031215614b4a57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461403a57600080fd5b600060208284031215614b8557600080fd5b8135610bf381614b51565b600080600060e08486031215614ba557600080fd5b614baf8585614a7d565b9250614bbe8560608601614a7d565b915060c084013590509250925092565b60008060408385031215614be157600080fd5b82359150614bf16020840161490b565b90509250929050565b6020810160118310614c35577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008060408385031215614c4e57600080fd5b8235614c5981614b51565b91506020830135614ac081614b51565b60008060808385031215614c7c57600080fd5b82359150614bf18460208501614a7d565b600060208284031215614c9f57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115614cf057614cf0614ca6565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715614d3657614d36614ca6565b81604052809350858152868686011115614d4f57600080fd5b614d5d866020830187614938565b5050509392505050565b600060208284031215614d7957600080fd5b815167ffffffffffffffff811115614d9057600080fd5b8201601f81018413614da157600080fd5b614db084825160208401614cd5565b949350505050565b600060608284031215614dca57600080fd5b82601f830112614dd957600080fd5b6040516060810181811067ffffffffffffffff82111715614dfc57614dfc614ca6565b604052806060840185811115614e1157600080fd5b845b81811015614e2b578051835260209283019201614e13565b509195945050505050565b600060208284031215614e4857600080fd5b8151610bf381614b51565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614eb2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500290565b600082614eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60808101606084833791151560609190910152919050565b60e081016060858337606082016000815260608582375060c0919091019190915292915050565b600073ffffffffffffffffffffffffffffffffffffffff808616835280851660208401525060606040830152614f6a6060830184614964565b9594505050505056fea2646970667358221220efb951725986e76ee157ff0d00cd7b7a6a9b8a581784400c52be5c96516fe15064736f6c634300080a0033608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6118158061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80638da5cb5b11610076578063d7aa2e351161005b578063d7aa2e35146101b3578063d914cd4b146101f2578063f2fde38b1461020557600080fd5b80638da5cb5b1461015d578063c488f7fe1461018557600080fd5b80634dee073b116100a75780634dee073b146101015780636f33547d14610142578063715018a61461015557600080fd5b80631bf64c41146100c357806345330666146100ec575b600080fd5b6100d66100d1366004611345565b610218565b6040516100e3919061142e565b60405180910390f35b6100ff6100fa366004611500565b6103fa565b005b61012f61010f366004611551565b6001602090815260009283526040808420909152908252902054600f0b81565b604051600f9190910b81526020016100e3565b6100d6610150366004611345565b6104d7565b6100ff610514565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e3565b61012f610193366004611551565b6002602090815260009283526040808420909152908252902054600f0b81565b6101e46101c136600461158a565b600360209081526000938452604080852082529284528284209052825290205481565b6040519081526020016100e3565b6100ff6102003660046115d5565b6105a1565b6100ff6102133660046115d5565b61089e565b6102556040805160c08101909152600060808201908152606060a08301528190815260200160008152602001600015158152602001600081525090565b61025e836109ce565b156103f45760008273ffffffffffffffffffffffffffffffffffffffff1663bd90df706040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d491906115f2565b905060008060008060006102e88987610a67565b9450945094509450945082156103ed5760405180608001604052806103118b8b858a8a89610d8b565b8152602001828152602001600115158152602001600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c6040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c6060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481525096505b5050505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff93841660009081526003602090815260408083209587168084528683528184209590971683529381528382208390559384528281209481529390925290912055565b6103f46040805160c08101909152600060808201908152606060a08301528190815260200160008152602001600015158152602001600081525090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610477565b61059f6000611045565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610477565b60005b6004600f82900b121561075d576040517f23746eb8000000000000000000000000000000000000000000000000000000008152600f82900b600482015273ffffffffffffffffffffffffffffffffffffffff8316906323746eb890602401602060405180830381865afa9250505080156106da575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526106d7918101906115f2565b60015b6106e35761075d565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160208181526040808420959094168352939093522080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016929091016fffffffffffffffffffffffffffffffff8116929092179055610625565b5060005b6004600f82900b121561089a576040517fb739953e000000000000000000000000000000000000000000000000000000008152600f82900b600482015273ffffffffffffffffffffffffffffffffffffffff83169063b739953e90602401602060405180830381865afa925050508015610816575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610813918101906115f2565b60015b61081e575050565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260026020908152604080832094909316825292909252902080546fffffffffffffffffffffffffffffffff60018401167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116179055600101610761565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461091f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610477565b73ffffffffffffffffffffffffffffffffffffffff81166109c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610477565b6109cb81611045565b50565b600080825160028111156109e4576109e461160f565b1480610a025750600182516002811115610a0057610a0061160f565b145b15610a0f57506001919050565b600282516002811115610a2457610a2461160f565b1415610a3257506000919050565b81516040517ffe7995cf000000000000000000000000000000000000000000000000000000008152610477919060040161163e565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602081815260408084208782015190951684529390529181205490918291829182918291610ab691600f0b6116ae565b73ffffffffffffffffffffffffffffffffffffffff808816600090815260016020818152604080842060608e0151909516845293905291902054919650610aff91600f0b6116ae565b9350600085600f0b12158015610b195750600084600f0b12155b15610bf85760a08701516040517f5e0d443f000000000000000000000000000000000000000000000000000000008152600f87810b600483015286900b6024820152604481019190915273ffffffffffffffffffffffffffffffffffffffff871690635e0d443f90606401602060405180830381865afa925050508015610bdb575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610bd89181019061171f565b60015b610be457610d81565b8015610bf257600193508091505b50610d81565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526002602090815260408083208b82015190941683529290522054610c3e90600190600f0b6116ae565b73ffffffffffffffffffffffffffffffffffffffff808816600090815260026020908152604080832060608d015190941683529290522054909550610c8890600190600f0b6116ae565b9350600085600f0b12158015610ca25750600084600f0b12155b15610d815760a08701516040517f07211ef7000000000000000000000000000000000000000000000000000000008152600f87810b600483015286900b6024820152604481019190915273ffffffffffffffffffffffffffffffffffffffff8716906307211ef790606401602060405180830381865afa925050508015610d64575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610d619181019061171f565b60015b610d6d57610d81565b8015610d7f5760019350809150600192505b505b9295509295909350565b6040805180820190915260008152606060208201526060600188516002811115610db757610db761160f565b1415610eb75782610de8577f79bea66400000000000000000000000000000000000000000000000000000000610e0a565b7f1af4de83000000000000000000000000000000000000000000000000000000005b8585610e168b8a6110ba565b604051600f93840b60248201529190920b60448201526064810191909152608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b600088516002811115610ecc57610ecc61160f565b1415610fcc5782610efd577f3df0212400000000000000000000000000000000000000000000000000000000610f1f565b7fa6417ed6000000000000000000000000000000000000000000000000000000005b8585610f2b8b8a6110f2565b604051600f93840b60248201529190920b60448201526064810191909152608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b8051156110065760405180604001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018281525091505061103b565b87516040517ffe7995cf000000000000000000000000000000000000000000000000000000008152610477919060040161163e565b9695505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60a08201516000906110e1846110dc856b033b2e3c9fd0803ce8000000611738565b6110f2565b6110eb9190611775565b9392505050565b60008260e0015115611106575060006103f4565b60008351600281111561111b5761111b61160f565b148061113957506001835160028111156111375761113761160f565b145b1561116c5760c08301516127109061115190826117b0565b61115b9084611738565b6111659190611775565b90506103f4565b6002835160028111156111815761118161160f565b14156111a45760c0830151611198906127106117c7565b61115b61271084611738565b82516040517ffe7995cf000000000000000000000000000000000000000000000000000000008152610477919060040161163e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff8111828210171561122c5761122c6111d9565b60405290565b80356003811061124157600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff811681146109cb57600080fd5b803561124181611246565b600082601f83011261128457600080fd5b8135602067ffffffffffffffff808311156112a1576112a16111d9565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811084821117156112e4576112e46111d9565b60405293845285810183019383810192508785111561130257600080fd5b83870191505b8482101561132a57813561131b81611246565b83529183019190830190611308565b979650505050505050565b8035801515811461124157600080fd5b6000806040838503121561135857600080fd5b823567ffffffffffffffff8082111561137057600080fd5b90840190610100828703121561138557600080fd5b61138d611208565b61139683611232565b81526113a460208401611268565b60208201526113b560408401611268565b60408201526113c660608401611268565b60608201526080830135828111156113dd57600080fd5b6113e988828601611273565b60808301525060a083013560a082015260c083013560c082015261140f60e08401611335565b60e0820152935061142591505060208401611268565b90509250929050565b60006020808352835160808285015273ffffffffffffffffffffffffffffffffffffffff81511660a0850152818101519050604060c085015280518060e086015260005b8181101561148f5782810184015186820161010001528301611472565b818111156114a257600061010083880101525b50828601516040860152604086015192506114c1606086018415159052565b606095909501516080850152505050601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016016101000190565b6000806000806080858703121561151657600080fd5b843561152181611246565b9350602085013561153181611246565b9250604085013561154181611246565b9396929550929360600135925050565b6000806040838503121561156457600080fd5b823561156f81611246565b9150602083013561157f81611246565b809150509250929050565b60008060006060848603121561159f57600080fd5b83356115aa81611246565b925060208401356115ba81611246565b915060408401356115ca81611246565b809150509250925092565b6000602082840312156115e757600080fd5b81356110eb81611246565b60006020828403121561160457600080fd5b81516110eb81611246565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310611679577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600081600f0b83600f0b60008112817fffffffffffffffffffffffffffffffff80000000000000000000000000000000018312811516156116f1576116f161167f565b816f7fffffffffffffffffffffffffffffff0183138116156117155761171561167f565b5090039392505050565b60006020828403121561173157600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156117705761177061167f565b500290565b6000826117ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000828210156117c2576117c261167f565b500390565b600082198211156117da576117da61167f565b50019056fea2646970667358221220ed82995f9e9761ea7972d39ed0d8d0b378778cbba995315b16c90b49c74d2b7e64736f6c634300080a0033608060405234801561001057600080fd5b50611a3c806100206000396000f3fe6080604052600436106101a15760003560e01c806385f8c259116100e1578063baa2abde1161008a578063ded9382a11610064578063ded9382a14610424578063e8e3370014610451578063f305d7191461049a578063fb3bdb41146104b957600080fd5b8063baa2abde146103da578063c45a015514610382578063d06ca61f1461040457600080fd5b8063ad615dec116100bb578063ad615dec146101e9578063af2979eb1461039e578063b6f9de95146103c557600080fd5b806385f8c259146101e95780638803dbee14610362578063ad5c46481461038257600080fd5b806338ed17391161014e5780635b0d5984116101285780635b0d5984146102fb5780635c11d79514610326578063791ac947146103265780637ff36ab51461034957600080fd5b806338ed1739146102b95780634a25d94a146102175780635911fb9a146102d957600080fd5b80631f00ca741161017f5780631f00ca741461024b5780632195995c1461026b578063379b87ea1461029957600080fd5b806302751cec146101a6578063054d50d4146101e957806318cbafe514610217575b600080fd5b3480156101b257600080fd5b506101cf6101c13660046112b8565b600080965096945050505050565b604080519283526020830191909152015b60405180910390f35b3480156101f557600080fd5b50610209610204366004611310565b6104cc565b6040519081526020016101e0565b34801561022357600080fd5b5061023e610232366004611388565b60609695505050505050565b6040516101e091906113f8565b34801561025757600080fd5b5061023e61026636600461143c565b6104d6565b34801561027757600080fd5b506101cf6102863660046114aa565b6000809b509b9950505050505050505050565b3480156102a557600080fd5b506102096102b436600461154e565b610728565b3480156102c557600080fd5b5061023e6102d4366004611388565b6107c6565b3480156102e557600080fd5b506102f96102f4366004611581565b6109a6565b005b34801561030757600080fd5b506102096103163660046115bd565b60009a9950505050505050505050565b34801561033257600080fd5b506102f9610341366004611388565b505050505050565b61023e61035736600461164f565b606095945050505050565b34801561036e57600080fd5b5061023e61037d366004611388565b610a28565b34801561038e57600080fd5b50604051600081526020016101e0565b3480156103aa57600080fd5b506102096103b93660046112b8565b60009695505050505050565b6102f96103d336600461164f565b5050505050565b3480156103e657600080fd5b506101cf6103f53660046116b5565b60008097509795505050505050565b34801561041057600080fd5b5061023e61041f36600461143c565b610b7e565b34801561043057600080fd5b506101cf61043f3660046115bd565b6000809a509a98505050505050505050565b34801561045d57600080fd5b5061047f61046c36600461171f565b6000806000985098509895505050505050565b604080519384526020840192909252908201526060016101e0565b61047f6104a83660046112b8565b600080600096509650969350505050565b61023e6104c736600461164f565b610d65565b60005b9392505050565b60606002821015610548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e636f72726563742070617468206c656e677468000000000000000000000060448201526064015b60405180910390fd5b8167ffffffffffffffff81111561056157610561611793565b60405190808252806020026020018201604052801561058a578160200160208202803683370190505b509050838161059a6001856117f1565b815181106105aa576105aa611808565b602090810291909101015260006105c26001846117f1565b90505b801561072057600061062885856105dd6001866117f1565b8181106105ec576105ec611808565b90506020020160208101906106019190611837565b86868581811061061357610613611808565b90506020020160208101906102b49190611837565b905080610691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e69737761704d6f636b3a2052617465206973206e6f742073657475700000604482015260640161053f565b6103e5816b033b2e3c9fd0803ce80000008585815181106106b4576106b4611808565b60200260200101516106c69190611852565b6106d0919061188f565b6106dc906103e8611852565b6106e6919061188f565b836106f26001856117f1565b8151811061070257610702611808565b60209081029190910101525080610718816118ca565b9150506105c5565b509392505050565b73ffffffffffffffffffffffffffffffffffffffff80831660009081526020818152604080832093851683529290522054806107c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f546f6b656e2070616972206e6f7420666f756e64000000000000000000000000604482015260640161053f565b92915050565b60608142811015610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015260640161053f565b6000610840898888610b7e565b90506000816108506001896117f1565b8151811061086057610860611808565b60200260200101519050888110156108fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f556e69737761705632526f757465723a20494e53554646494349454e545f4f5560448201527f545055545f414d4f554e54000000000000000000000000000000000000000000606482015260840161053f565b61094633308c8b8b600081811061091357610913611808565b90506020020160208101906109289190611837565b73ffffffffffffffffffffffffffffffffffffffff16929190610d94565b61099986828a8a6109586001826117f1565b81811061096757610967611808565b905060200201602081019061097c9190611837565b73ffffffffffffffffffffffffffffffffffffffff169190610e76565b5098975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083209386168352929052208190556109ef6b033b2e3c9fd0803ce800000082610ed1565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526020818152604080832096909516825294909452919092205550565b60608142811015610a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015260640161053f565b6000610aa28988886104d6565b9050600081600081518110610ab957610ab9611808565b6020026020010151905088811115610b53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f556e69737761705632526f757465723a204558434553534956455f494e50555460448201527f5f414d4f554e5400000000000000000000000000000000000000000000000000606482015260840161053f565b610b6c3330838b8b600081811061091357610913611808565b610999868b8a8a6109586001826117f1565b60606002821015610beb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e636f72726563742070617468206c656e6774680000000000000000000000604482015260640161053f565b8167ffffffffffffffff811115610c0457610c04611793565b604051908082528060200260200182016040528015610c2d578160200160208202803683370190505b5090508381600081518110610c4457610c44611808565b602090810291909101015260015b82811015610720576000610c6c85856105dd6001866117f1565b905080610cd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e69737761704d6f636b3a2052617465206973206e6f742073657475700000604482015260640161053f565b6103e86103e56b033b2e3c9fd0803ce80000008386610cf56001886117f1565b81518110610d0557610d05611808565b6020026020010151610d179190611852565b610d21919061188f565b610d2b9190611852565b610d35919061188f565b838381518110610d4757610d47611808565b60209081029190910101525080610d5d816118ff565b915050610c52565b604080516001808252818301909252606091600091906020808301908036833701905050979650505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610e709085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611037565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610ecc9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610dee565b505050565b60408051808201909152600281527f4d33000000000000000000000000000000000000000000000000000000000000602082015260009082610f40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053f9190611964565b506000610f4e60028461188f565b90506b033b2e3c9fd0803ce8000000610f87827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6117f1565b610f91919061188f565b8411156040518060400160405280600281526020017f4d3100000000000000000000000000000000000000000000000000000000000081525090611002576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053f9190611964565b50828161101b6b033b2e3c9fd0803ce800000087611852565b61102591906119b5565b61102f919061188f565b949350505050565b6000611099826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166111439092919063ffffffff16565b805190915015610ecc57808060200190518101906110b791906119cd565b610ecc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161053f565b606061102f848460008585843b6111b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161053f565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516111df91906119ea565b60006040518083038185875af1925050503d806000811461121c576040519150601f19603f3d011682016040523d82523d6000602084013e611221565b606091505b509150915061123182828661123c565b979650505050505050565b6060831561124b5750816104cf565b82511561125b5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053f9190611964565b803573ffffffffffffffffffffffffffffffffffffffff811681146112b357600080fd5b919050565b60008060008060008060c087890312156112d157600080fd5b6112da8761128f565b95506020870135945060408701359350606087013592506112fd6080880161128f565b915060a087013590509295509295509295565b60008060006060848603121561132557600080fd5b505081359360208301359350604090920135919050565b60008083601f84011261134e57600080fd5b50813567ffffffffffffffff81111561136657600080fd5b6020830191508360208260051b850101111561138157600080fd5b9250929050565b60008060008060008060a087890312156113a157600080fd5b8635955060208701359450604087013567ffffffffffffffff8111156113c657600080fd5b6113d289828a0161133c565b90955093506113e590506060880161128f565b9150608087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b8181101561143057835183529284019291840191600101611414565b50909695505050505050565b60008060006040848603121561145157600080fd5b83359250602084013567ffffffffffffffff81111561146f57600080fd5b61147b8682870161133c565b9497909650939450505050565b801515811461149657600080fd5b50565b803560ff811681146112b357600080fd5b60008060008060008060008060008060006101608c8e0312156114cc57600080fd5b6114d58c61128f565b9a506114e360208d0161128f565b995060408c0135985060608c0135975060808c0135965061150660a08d0161128f565b955060c08c0135945060e08c013561151d81611488565b935061152c6101008d01611499565b92506101208c013591506101408c013590509295989b509295989b9093969950565b6000806040838503121561156157600080fd5b61156a8361128f565b91506115786020840161128f565b90509250929050565b60008060006060848603121561159657600080fd5b61159f8461128f565b92506115ad6020850161128f565b9150604084013590509250925092565b6000806000806000806000806000806101408b8d0312156115dd57600080fd5b6115e68b61128f565b995060208b0135985060408b0135975060608b0135965061160960808c0161128f565b955060a08b0135945060c08b013561162081611488565b935061162e60e08c01611499565b92506101008b013591506101208b013590509295989b9194979a5092959850565b60008060008060006080868803121561166757600080fd5b85359450602086013567ffffffffffffffff81111561168557600080fd5b6116918882890161133c565b90955093506116a490506040870161128f565b949793965091946060013592915050565b600080600080600080600060e0888a0312156116d057600080fd5b6116d98861128f565b96506116e76020890161128f565b955060408801359450606088013593506080880135925061170a60a0890161128f565b915060c0880135905092959891949750929550565b600080600080600080600080610100898b03121561173c57600080fd5b6117458961128f565b975061175360208a0161128f565b965060408901359550606089013594506080890135935060a0890135925061177d60c08a0161128f565b915060e089013590509295985092959890939650565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611803576118036117c2565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561184957600080fd5b6104cf8261128f565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561188a5761188a6117c2565b500290565b6000826118c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000816118d9576118d96117c2565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611931576119316117c2565b5060010190565b60005b8381101561195357818101518382015260200161193b565b83811115610e705750506000910152565b6020815260008251806020840152611983816040850160208701611938565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600082198211156119c8576119c86117c2565b500190565b6000602082840312156119df57600080fd5b81516104cf81611488565b600082516119fc818460208701611938565b919091019291505056fea2646970667358221220c83ba4b7a780d6bcd42d58ce63ee43d73cb764a70cd33e8cc91609b9554a872e64736f6c634300080a003360e06040523480156200001157600080fd5b506040516200251b3803806200251b833981016040819052620000349162000121565b81816001600160a01b03821615806200005457506001600160a01b038116155b156200007357604051635919af9760e11b815260040160405180910390fd5b6001600160a01b038216608081905260408051632f7a188160e01b81529051632f7a1881916004808201926020929091908290030181865afa158015620000be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e4919062000159565b6001600160a01b0390811660a0521660c05250506001600055506200017e565b80516001600160a01b03811681146200011c57600080fd5b919050565b600080604083850312156200013557600080fd5b620001408362000104565b9150620001506020840162000104565b90509250929050565b6000602082840312156200016c57600080fd5b620001778262000104565b9392505050565b60805160a05160c0516122da620002416000396000818161045e015281816106040152818161070101528181610aa401528181610c9c01528181610d6e015281816110dd01528181611186015281816113a8015281816114c701526115a10152600081816102b40152818161121301526116860152600081816104b20152818161084601528181610b8c01528181610e56015281816113fe01528181611498015281816115f70152818161170e015281816117c2015261186c01526122da6000f3fe6080604052600436106101cd5760003560e01c8063ad5c4648116100f7578063c12c21c011610095578063ded9382a11610064578063ded9382a1461052b578063e8e3370014610546578063f305d71914610581578063fb3bdb411461038557600080fd5b8063c12c21c0146104a0578063c45a0155146104d4578063ce30bbdb146104e9578063d06ca61f1461050b57600080fd5b8063b6f9de95116100d1578063b6f9de9514610423578063baa2abde14610431578063bd90df701461044c578063bdbeaa311461048057600080fd5b8063ad5c4648146103d3578063ad615dec146103e8578063af2979eb1461040857600080fd5b80634a25d94a1161016f578063791ac9471161013e578063791ac9471461033b5780637ff36ab51461038557806385f8c259146103935780638803dbee146103b357600080fd5b80634a25d94a1461023a5780635b0d59841461031b5780635c11d7951461033b57806378aa73a41461035d57600080fd5b80631f00ca74116101ab5780631f00ca74146102675780632195995c146102875780632f7a1881146102a257806338ed1739146102fb57600080fd5b806302751cec146101d2578063054d50d41461020c57806318cbafe51461023a575b600080fd5b3480156101de57600080fd5b506101f26101ed3660046118f6565b61058f565b604080519283526020830191909152015b60405180910390f35b34801561021857600080fd5b5061022c610227366004611954565b6105c4565b604051908152602001610203565b34801561024657600080fd5b5061025a6102553660046119cc565b61068d565b6040516102039190611a3f565b34801561027357600080fd5b5061025a610282366004611a83565b6106c1565b34801561029357600080fd5b506101f26101ed366004611af5565b3480156102ae57600080fd5b506102d67f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610203565b34801561030757600080fd5b5061025a6103163660046119cc565b61079d565b34801561032757600080fd5b5061022c610336366004611b9d565b6109fe565b34801561034757600080fd5b5061035b6103563660046119cc565b610a32565b005b34801561036957600080fd5b50610372600281565b60405161ffff9091168152602001610203565b61025a610255366004611c31565b34801561039f57600080fd5b5061022c6103ae366004611954565b610a64565b3480156103bf57600080fd5b5061025a6103ce3660046119cc565b610ae8565b3480156103df57600080fd5b506102d6610c98565b3480156103f457600080fd5b5061022c610403366004611954565b610d2e565b34801561041457600080fd5b5061022c6103363660046118f6565b61035b610356366004611c31565b34801561043d57600080fd5b506101f26101ed366004611c98565b34801561045857600080fd5b506102d67f000000000000000000000000000000000000000000000000000000000000000081565b34801561048c57600080fd5b5061025a61049b366004611d0a565b610db2565b3480156104ac57600080fd5b506102d67f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e057600080fd5b506102d66110d9565b3480156104f557600080fd5b506104fe600181565b6040516102039190611d5d565b34801561051757600080fd5b5061025a610526366004611a83565b611146565b34801561053757600080fd5b506101f26101ed366004611b9d565b34801561055257600080fd5b50610566610561366004611d9e565b6111bf565b60408051938452602084019290925290820152606001610203565b6105666105613660046118f6565b6000806040517f24e46f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f054d50d40000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063054d50d4906064015b602060405180830381865afa158015610661573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106859190611e1a565b949350505050565b60606040517f24e46f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1f00ca7400000000000000000000000000000000000000000000000000000000815260609073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690631f00ca749061073a90879087908790600401611e89565b600060405180830381865afa158015610757573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106859190810190611f2a565b606060026000541415610811576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556040517fe958b7040000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa1580156108a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c69190611fd0565b90506000868660008181106108dd576108dd611ff4565b90506020020160208101906108f29190612023565b90506000878761090360018261206f565b81811061091257610912611ff4565b90506020020160208101906109279190612023565b90506109d88383836338ed173960e01b8e8e8e8e8b8e60405160240161095296959493929190612086565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600160006111f6565b8060200190518101906109eb9190611f2a565b60016000559a9950505050505050505050565b60006040517f24e46f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f24e46f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f85f8c2590000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906385f8c25990606401610644565b606060026000541415610b57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610808565b600260009081556040517fe958b7040000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa158015610be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0c9190611fd0565b9050600086866000818110610c2357610c23611ff4565b9050602002016020810190610c389190612023565b905060008787610c4960018261206f565b818110610c5857610c58611ff4565b9050602002016020810190610c6d9190612023565b90506109d8838383638803dbee60e01b8e8e8e8e8b8e60405160240161095296959493929190612086565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d299190611fd0565b905090565b6040517fad615dec0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ad615dec90606401610644565b606060026000541415610e21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610808565b600260009081556040517fe958b7040000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed69190611fd0565b9050600085856000818110610eed57610eed611ff4565b9050602002016020810190610f029190612023565b905060008686610f1360018261206f565b818110610f2257610f22611ff4565b9050602002016020810190610f379190612023565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529192506000918416906370a0823190602401602060405180830381865afa158015610fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcd9190611e1a565b905060018111156110c7578080600190039150506110b18484846338ed173960e01b856b033b2e3c9fd0803ce80000008f8861100991906120d1565b611013919061210e565b8e8e8c8f60405160240161102c96959493929190612086565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526001806111f6565b8060200190518101906110c49190611f2a565b94505b50506001600055509095945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d05573d6000803e3d6000fd5b6040517fd06ca61f00000000000000000000000000000000000000000000000000000000815260609073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d06ca61f9061073a90879087908790600401611e89565b60008060006040517f24e46f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606000803373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461135f576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301528916906370a0823190602401602060405180830381865afa1580156112a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c89190611e1a565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152919350908816906370a0823190602401602060405180830381865afa158015611338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135c9190611e1a565b90505b841561145b576040517f46fb371d00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116602483015289811660448301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60648301527f000000000000000000000000000000000000000000000000000000000000000016906346fb371d90608401600060405180830381600087803b15801561144257600080fd5b505af1158015611456573d6000803e3d6000fd5b505050505b6040517f6ce4074a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636ce4074a906114f19033907f0000000000000000000000000000000000000000000000000000000000000000908b90600401612179565b6000604051808303816000875af1158015611510573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261155691908101906121f2565b92508415611654576040517f46fb371d00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116602483015289811660448301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60648301527f000000000000000000000000000000000000000000000000000000000000000016906346fb371d90608401600060405180830381600087803b15801561163b57600080fd5b505af115801561164f573d6000803e3d6000fd5b505050505b61166289898985858961166e565b50509695505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461176f576040517f654a9eda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301528681166024830152858116604483015260648201859052608482018490527f0000000000000000000000000000000000000000000000000000000000000000169063654a9eda9060a401600060405180830381600087803b15801561175257600080fd5b505af1158015611766573d6000803e3d6000fd5b505050506118c9565b801561181f576040517f0d8f9cee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015286811660248301527f00000000000000000000000000000000000000000000000000000000000000001690630d8f9cee90604401600060405180830381600087803b15801561180657600080fd5b505af115801561181a573d6000803e3d6000fd5b505050505b6040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015285811660248301527f000000000000000000000000000000000000000000000000000000000000000016906351e3f16090604401600060405180830381600087803b1580156118b057600080fd5b505af11580156118c4573d6000803e3d6000fd5b505050505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146118f357600080fd5b50565b60008060008060008060c0878903121561190f57600080fd5b863561191a816118d1565b9550602087013594506040870135935060608701359250608087013561193f816118d1565b8092505060a087013590509295509295509295565b60008060006060848603121561196957600080fd5b505081359360208301359350604090920135919050565b60008083601f84011261199257600080fd5b50813567ffffffffffffffff8111156119aa57600080fd5b6020830191508360208260051b85010111156119c557600080fd5b9250929050565b60008060008060008060a087890312156119e557600080fd5b8635955060208701359450604087013567ffffffffffffffff811115611a0a57600080fd5b611a1689828a01611980565b9095509350506060870135611a2a816118d1565b80925050608087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b81811015611a7757835183529284019291840191600101611a5b565b50909695505050505050565b600080600060408486031215611a9857600080fd5b83359250602084013567ffffffffffffffff811115611ab657600080fd5b611ac286828701611980565b9497909650939450505050565b80358015158114611adf57600080fd5b919050565b803560ff81168114611adf57600080fd5b60008060008060008060008060008060006101608c8e031215611b1757600080fd5b8b35611b22816118d1565b9a5060208c0135611b32816118d1565b995060408c0135985060608c0135975060808c0135965060a08c0135611b57816118d1565b955060c08c01359450611b6c60e08d01611acf565b9350611b7b6101008d01611ae4565b92506101208c013591506101408c013590509295989b509295989b9093969950565b6000806000806000806000806000806101408b8d031215611bbd57600080fd5b8a35611bc8816118d1565b995060208b0135985060408b0135975060608b0135965060808b0135611bed816118d1565b955060a08b01359450611c0260c08c01611acf565b9350611c1060e08c01611ae4565b92506101008b013591506101208b013590509295989b9194979a5092959850565b600080600080600060808688031215611c4957600080fd5b85359450602086013567ffffffffffffffff811115611c6757600080fd5b611c7388828901611980565b9095509350506040860135611c87816118d1565b949793965091946060013592915050565b600080600080600080600060e0888a031215611cb357600080fd5b8735611cbe816118d1565b96506020880135611cce816118d1565b955060408801359450606088013593506080880135925060a0880135611cf3816118d1565b8092505060c0880135905092959891949750929550565b60008060008060608587031215611d2057600080fd5b84359350602085013567ffffffffffffffff811115611d3e57600080fd5b611d4a87828801611980565b9598909750949560400135949350505050565b6020810160118310611d98577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600080600080600080600080610100898b031215611dbb57600080fd5b8835611dc6816118d1565b97506020890135611dd6816118d1565b965060408901359550606089013594506080890135935060a0890135925060c0890135611e02816118d1565b8092505060e089013590509295985092959890939650565b600060208284031215611e2c57600080fd5b5051919050565b8183526000602080850194508260005b85811015611e7e578135611e56816118d1565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101611e43565b509495945050505050565b838152604060208201526000611ea3604083018486611e33565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611f2257611f22611eac565b604052919050565b60006020808385031215611f3d57600080fd5b825167ffffffffffffffff80821115611f5557600080fd5b818501915085601f830112611f6957600080fd5b815181811115611f7b57611f7b611eac565b8060051b9150611f8c848301611edb565b8181529183018401918481019088841115611fa657600080fd5b938501935b83851015611fc457845182529385019390850190611fab565b98975050505050505050565b600060208284031215611fe257600080fd5b8151611fed816118d1565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561203557600080fd5b8135611fed816118d1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561208157612081612040565b500390565b86815285602082015260a0604082015260006120a660a083018688611e33565b73ffffffffffffffffffffffffffffffffffffffff9490941660608301525060800152949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561210957612109612040565b500290565b600082612144577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b8381101561216457818101518382015260200161214c565b83811115612173576000848401525b50505050565b600073ffffffffffffffffffffffffffffffffffffffff80861683528085166020840152506060604083015282518060608401526121be816080850160208701612149565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01691909101608001949350505050565b60006020828403121561220457600080fd5b815167ffffffffffffffff8082111561221c57600080fd5b818401915084601f83011261223057600080fd5b81518181111561224257612242611eac565b61227360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611edb565b915080825285602082850101111561228a57600080fd5b61229b816020840160208601612149565b5094935050505056fea2646970667358221220eb17abe05eeba3a20acf423d9c0b916f7c22eba6424cd918d18ad2a760eea1ba64736f6c634300080a0033608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611a018061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063715018a61161005b578063715018a6146100f45780638da5cb5b146100fc578063d7aa2e3514610124578063f2fde38b1461015557600080fd5b80631bf64c411461008d57806345330666146100b657806354fd4d50146100cb5780636f33547d146100e1575b600080fd5b6100a061009b366004611436565b610168565b6040516100ad919061158a565b60405180910390f35b6100c96100c43660046115f9565b61027d565b005b6100d3600281565b6040519081526020016100ad565b6100a06100ef366004611436565b61035a565b6100c9610514565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ad565b6100d361013236600461164a565b600160209081526000938452604080852082529284528284209052825290205481565b6100c9610163366004611695565b6105a1565b6101a56040805160c08101909152600060808201908152606060a08301528190815260200160008152602001600015158152602001600081525090565b6040805160028082526060820183526000926020830190803683370190505090508360400151816000815181106101de576101de6116b9565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050836060015181600181518110610230576102306116b9565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506102758484836106d1565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610303576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff93841660009081526001602090815260408083209587168084528683528184209590971683529381528382208390559384528281209481529390925290912055565b6103976040805160c08101909152600060808201908152606060a08301528190815260200160008152602001600015158152602001600081525090565b60808381015151604080516003808252938101909152909160009190602082016060803683370190505090508460400151816000815181106103db576103db6116b9565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505084606001518160028151811061042d5761042d6116b9565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060005b8281101561050b5785608001518181518110610488576104886116b9565b6020026020010151826001815181106104a3576104a36116b9565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060006104ea8787856106d1565b90506104f98188876000610aa7565b15610502578094505b5060010161046a565b50505092915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102fa565b61059f6000610ac3565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102fa565b73ffffffffffffffffffffffffffffffffffffffff81166106c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102fa565b6106ce81610ac3565b50565b61070e6040805160c08101909152600060808201908152606060a08301528190815260200160008152602001600015158152602001600081525090565b600061071985610b38565b1561080a5760a08501516040517fd06ca61f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169163d06ca61f9161077691908790600401611739565b600060405180830381865afa9250505080156107d257506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107cf9190810190611752565b60015b6107db576108e6565b80600182516107ea9190611812565b815181106107fa576107fa6116b9565b60200260200101519150506108e6565b60a08501516040517f1f00ca7400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861691631f00ca749161086291908790600401611739565b600060405180830381865afa9250505080156108be57506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108bb9190810190611752565b60015b6108c7576108e6565b806000815181106108da576108da6116b9565b60200260200101519150505b8015610a9f57602082018190526001604083015261090685858584610bd1565b826000018190525060008473ffffffffffffffffffffffffffffffffffffffff1663bd90df706040518163ffffffff1660e01b8152600401602060405180830381865afa15801561095b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097f9190611829565b90506000600185516109919190611812565b905060005b81811015610a9b5773ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040812087519091908890849081106109da576109da6116b9565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087836001610a2c9190611846565b81518110610a3c57610a3c6116b9565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485606001818151610a909190611846565b905250600101610996565b5050505b509392505050565b6000610aba858585866060015186610e3c565b95945050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008082516002811115610b4e57610b4e61185e565b1480610b6c5750600182516002811115610b6a57610b6a61185e565b145b15610b7957506001919050565b600282516002811115610b8e57610b8e61185e565b1415610b9c57506000919050565b81516040517ffe7995cf0000000000000000000000000000000000000000000000000000000081526102fa919060040161188d565b604080518082019091526000815260606020820152600185516002811115610bfb57610bfb61185e565b1415610cf8576040805180820190915273ffffffffffffffffffffffffffffffffffffffff85168152602081017fbdbeaa3100000000000000000000000000000000000000000000000000000000610c538886610f56565b86610c6042610e10611846565b604051602401610c72939291906118ce565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290529050610275565b600085516002811115610d0d57610d0d61185e565b1415610d93576040805180820190915273ffffffffffffffffffffffffffffffffffffffff8516815260a086015160208201907f38ed17390000000000000000000000000000000000000000000000000000000090610d6c8987610f90565b60208a01518890610d7f42610e10611846565b604051602401610c729594939291906118f7565b600285516002811115610da857610da861185e565b1415610e07576040805180820190915273ffffffffffffffffffffffffffffffffffffffff8516815260a086015160208201907f8803dbee0000000000000000000000000000000000000000000000000000000090610d6c8987610f90565b84516040517ffe7995cf0000000000000000000000000000000000000000000000000000000081526102fa919060040161188d565b60008560400151610e4f57506000610aba565b8360400151610e6057506001610aba565b6000610ebd8688602001516b033b2e3c9fd0803ce8000000868b60600151610e889190611940565b610e92919061197d565b60208901516b033b2e3c9fd0803ce8000000610eae898b611940565b610eb8919061197d565b611077565b9050600086516002811115610ed457610ed461185e565b1480610ef25750600186516002811115610ef057610ef061185e565b145b15610efe579050610aba565b600286516002811115610f1357610f1361185e565b1415610f2157159050610aba565b85516040517ffe7995cf0000000000000000000000000000000000000000000000000000000081526102fa919060040161188d565b60a0820151600090610f7d84610f78856b033b2e3c9fd0803ce8000000611940565b610f90565b610f87919061197d565b90505b92915050565b60008260e0015115610fa457506000610f8a565b600083516002811115610fb957610fb961185e565b1480610fd75750600183516002811115610fd557610fd561185e565b145b1561100a5760c083015161271090610fef9082611812565b610ff99084611940565b611003919061197d565b9050610f8a565b60028351600281111561101f5761101f61185e565b14156110425760c083015161103690612710611846565b610ff961271084611940565b82516040517ffe7995cf0000000000000000000000000000000000000000000000000000000081526102fa919060040161188d565b60006110b76040518060400160405280600c81526020017f414141202d20616d6f756e740000000000000000000000000000000000000000815250611168565b6110c0856111f7565b6110c9846111f7565b6110d2836111f7565b6110db826111f7565b6110ed6110e88587611812565b6111f7565b6110fa6110e88385611812565b61110386610b38565b611124576111118284611846565b61111b8587611846565b10159050610aba565b8385101580156111345750818310155b1561114d576111438284611812565b61111b8587611812565b83851061115b57600161115e565b60005b9695505050505050565b6106ce8160405160240161117c91906119b8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052611284565b6106ce8160405160240161120d91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff5b1bba9000000000000000000000000000000000000000000000000000000001790525b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff811182821017156112f8576112f86112a5565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611345576113456112a5565b604052919050565b80356003811061135c57600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff811681146106ce57600080fd5b803561135c81611361565b600067ffffffffffffffff8211156113a8576113a86112a5565b5060051b60200190565b600082601f8301126113c357600080fd5b813560206113d86113d38361138e565b6112fe565b82815260059290921b840181019181810190868411156113f757600080fd5b8286015b8481101561141b57803561140e81611361565b83529183019183016113fb565b509695505050505050565b8035801515811461135c57600080fd5b6000806040838503121561144957600080fd5b823567ffffffffffffffff8082111561146157600080fd5b90840190610100828703121561147657600080fd5b61147e6112d4565b6114878361134d565b815261149560208401611383565b60208201526114a660408401611383565b60408201526114b760608401611383565b60608201526080830135828111156114ce57600080fd5b6114da888286016113b2565b60808301525060a083013560a082015260c083013560c082015261150060e08401611426565b60e0820152935061151691505060208401611383565b90509250929050565b6000815180845260005b8181101561154557602081850181015186830182015201611529565b81811115611557576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208082528251608083830152805173ffffffffffffffffffffffffffffffffffffffff1660a08401520151604060c08301526000906115cd60e084018261151f565b905060208401516040840152604084015115156060840152606084015160808401528091505092915050565b6000806000806080858703121561160f57600080fd5b843561161a81611361565b9350602085013561162a81611361565b9250604085013561163a81611361565b9396929550929360600135925050565b60008060006060848603121561165f57600080fd5b833561166a81611361565b9250602084013561167a81611361565b9150604084013561168a81611361565b809150509250925092565b6000602082840312156116a757600080fd5b81356116b281611361565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020808501945080840160005b8381101561172e57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016116fc565b509495945050505050565b82815260406020820152600061027560408301846116e8565b6000602080838503121561176557600080fd5b825167ffffffffffffffff81111561177c57600080fd5b8301601f8101851361178d57600080fd5b805161179b6113d38261138e565b81815260059190911b820183019083810190878311156117ba57600080fd5b928401925b828410156117d8578351825292840192908401906117bf565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611824576118246117e3565b500390565b60006020828403121561183b57600080fd5b81516116b281611361565b60008219821115611859576118596117e3565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106118c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b8381526060602082015260006118e760608301856116e8565b9050826040830152949350505050565b85815284602082015260a06040820152600061191660a08301866116e8565b73ffffffffffffffffffffffffffffffffffffffff94909416606083015250608001529392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611978576119786117e3565b500290565b6000826119b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b602081526000610f87602083018461151f56fea2646970667358221220042a62b4d425a2205fa828887bf063a55ef88bc4c19cee1e98235c23b32ccdf764736f6c634300080a003360806040526000805460ff1916600117905534801561001d57600080fd5b50611be18061002d6000396000f3fe6080604052600436106100d25760003560e01c8063ba414fa61161007f578063db3e219811610059578063db3e219814610215578063f28c049814610228578063f7729d431461023b578063fa7626d41461025b57600080fd5b8063ba414fa6146101bd578063c04b8d59146101e2578063cdca1753146101f557600080fd5b8063414bf389116100b0578063414bf3891461014c57806347485d2a1461015f5780635911fb9a1461019d57600080fd5b80632ccbc99b146100d75780632f80bb1d146100f957806330d07f211461012c575b600080fd5b3480156100e357600080fd5b506100f76100f2366004611672565b610275565b005b34801561010557600080fd5b506101196101143660046116f0565b61031f565b6040519081526020015b60405180910390f35b34801561013857600080fd5b506101196101473660046117c3565b610468565b61011961015a366004611842565b610566565b34801561016b57600080fd5b5061011961017a36600461185f565b600160209081526000938452604080852082529284528284209052825290205481565b3480156101a957600080fd5b506100f76101b83660046118a6565b6106b5565b3480156101c957600080fd5b506101d26106c8565b6040519015158152602001610123565b6101196101f03660046118f9565b610826565b34801561020157600080fd5b506101196102103660046116f0565b6109b5565b610119610223366004611842565b610af1565b6101196102363660046118f9565b610c00565b34801561024757600080fd5b506101196102563660046117c3565b610d4e565b34801561026757600080fd5b506000546101d29060ff1681565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292815282822062ffffff86168352905220819055806102ce6b033b2e3c9fd0803ce80000008061195d565b6102d8919061199a565b73ffffffffffffffffffffffffffffffffffffffff938416600090815260016020908152604080832097909616825295865284812062ffffff909416815292909452502055565b805b600361032f6014600261195d565b61033991906119d5565b83511061046257600080600061034e86610e35565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600160209081526040808320938716835292815282822062ffffff8516835290522054929550909350915080610402576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f556e697377617056334d6f636b3a2052617465206973206e6f7420736574757060448201526064015b60405180910390fd5b61041462ffffff8316620f42406119ed565b8161042b6b033b2e3c9fd0803ce80000008861195d565b610435919061199a565b61044290620f424061195d565b61044c919061199a565b945061045787610e71565b965050505050610321565b92915050565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600160209081526040808320938816835292815282822062ffffff8716835290529081205480610511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f556e697377617056334d6f636b3a2052617465206973206e6f7420736574757060448201526064016103f9565b61052362ffffff8616620f42406119ed565b8161053a6b033b2e3c9fd0803ce80000008761195d565b610544919061199a565b61055190620f424061195d565b61055b919061199a565b979650505050505050565b60006105a46105786020840184611a04565b6105886040850160208601611a04565b6105986060860160408701611a21565b8560a001356000610d4e565b90508160c0013581101561063a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f556e69737761705632526f757465723a20494e53554646494349454e545f4f5560448201527f545055545f414d4f554e5400000000000000000000000000000000000000000060648201526084016103f9565b61066f333060a08501356106516020870187611a04565b73ffffffffffffffffffffffffffffffffffffffff16929190610ea2565b6106b06106826080840160608501611a04565b826106936040860160208701611a04565b73ffffffffffffffffffffffffffffffffffffffff169190610f84565b919050565b6106c38383610bb884610275565b505050565b60008054610100900460ff16156106e85750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156106b05760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909161078d917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611a68565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107c591611ab0565b6000604051808303816000865af19150503d8060008114610802576040519150601f19603f3d011682016040523d82523d6000602084013e610807565b606091505b509150508080602001905181019061081f9190611acc565b9392505050565b600080806108716108378580611aee565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fda92505050565b90925090506108c16108838580611aee565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060608601356109b5565b92508360800135831015610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f556e69737761705632526f757465723a20494e53554646494349454e545f4f5560448201527f545055545f414d4f554e5400000000000000000000000000000000000000000060648201526084016103f9565b61097d73ffffffffffffffffffffffffffffffffffffffff831633306060880135610ea2565b6109ae6109906040860160208701611a04565b73ffffffffffffffffffffffffffffffffffffffff83169085610f84565b5050919050565b805b60036109c56014600261195d565b6109cf91906119d5565b8351106104625760008060006109e486610e35565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600160209081526040808320938616835292815282822062ffffff8516835290522054929550909350915080610a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f556e697377617056334d6f636b3a2052617465206973206e6f7420736574757060448201526064016103f9565b620f4240610aa662ffffff8416826119ed565b6b033b2e3c9fd0803ce8000000610abd848961195d565b610ac7919061199a565b610ad1919061195d565b610adb919061199a565b9450610ae687610e71565b9650505050506109b7565b6000610b2f610b036020840184611a04565b610b136040850160208601611a04565b610b236060860160408701611a21565b8560a001356000610468565b90508160c00135811115610bc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f556e69737761705632526f757465723a20494e53554646494349454e545f4f5560448201527f545055545f414d4f554e5400000000000000000000000000000000000000000060648201526084016103f9565b610bd83330836106516020870187611a04565b6106b0610beb6080840160608501611a04565b60a08401356106936040860160208701611a04565b60008080610c116108378580611aee565b9092509050610c61610c238580611aee565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050606086013561031f565b92508360800135831115610cf7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f556e69737761705632526f757465723a20494e53554646494349454e545f4f5560448201527f545055545f414d4f554e5400000000000000000000000000000000000000000060648201526084016103f9565b610d1973ffffffffffffffffffffffffffffffffffffffff8216333086610ea2565b6109ae610d2c6040860160208701611a04565b73ffffffffffffffffffffffffffffffffffffffff8416906060870135610f84565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600160209081526040808320938816835292815282822062ffffff8716835290529081205480610df7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f556e697377617056334d6f636b3a2052617465206973206e6f7420736574757060448201526064016103f9565b620f4240610e0a62ffffff8716826119ed565b6b033b2e3c9fd0803ce8000000610e21848861195d565b610e2b919061199a565b610551919061195d565b60008080610e43848261101c565b9250610e508460146110ac565b9050610e68610e61600360146119d5565b859061101c565b91509193909250565b6060610462610e82600360146119d5565b610e8e600360146119d5565b8451610e9a91906119ed565b8491906111a0565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610f7e9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261131a565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526106c39084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610efc565b600080610fe683610e35565b50909250610ff5905083611426565b1561100a5761100383610e71565b9250915091565b61101383610e35565b50915050915091565b60006110298260146119d5565b83511015611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e6473000000000000000000000060448201526064016103f9565b5001602001516c01000000000000000000000000900490565b6000816110ba8160036119d5565b1015611122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f7700000000000000000000000000000060448201526064016103f9565b61112d8260036119d5565b83511015611197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e647300000000000000000000000060448201526064016103f9565b50016003015190565b6060816111ae81601f6119d5565b1015611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016103f9565b61122082846119d5565b8451101561128a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e647300000000000000000000000000000060448201526064016103f9565b6060821580156112a95760405191506000825260208201604052611311565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156112e25780518352602092830192016112ca565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b600061137c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166114609092919063ffffffff16565b8051909150156106c3578080602001905181019061139a9190611acc565b6106c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016103f9565b6000611434600360146119d5565b60146114416003826119d5565b61144b91906119d5565b61145591906119d5565b825110159050919050565b606061146f8484600085611477565b949350505050565b606082471015611509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103f9565b843b611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103f9565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161159a9190611ab0565b60006040518083038185875af1925050503d80600081146115d7576040519150601f19603f3d011682016040523d82523d6000602084013e6115dc565b606091505b509150915061055b828286606083156115f657508161081f565b8251156116065782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f99190611b5a565b73ffffffffffffffffffffffffffffffffffffffff8116811461165c57600080fd5b50565b803562ffffff811681146106b057600080fd5b6000806000806080858703121561168857600080fd5b84356116938161163a565b935060208501356116a38161163a565b92506116b16040860161165f565b9396929550929360600135925050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561170357600080fd5b823567ffffffffffffffff8082111561171b57600080fd5b818501915085601f83011261172f57600080fd5b813581811115611741576117416116c1565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611787576117876116c1565b816040528281528860208487010111156117a057600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080600080600060a086880312156117db57600080fd5b85356117e68161163a565b945060208601356117f68161163a565b93506118046040870161165f565b925060608601359150608086013561181b8161163a565b809150509295509295909350565b6000610100828403121561183c57600080fd5b50919050565b6000610100828403121561185557600080fd5b61081f8383611829565b60008060006060848603121561187457600080fd5b833561187f8161163a565b9250602084013561188f8161163a565b915061189d6040850161165f565b90509250925092565b6000806000606084860312156118bb57600080fd5b83356118c68161163a565b925060208401356118d68161163a565b929592945050506040919091013590565b600060a0828403121561183c57600080fd5b60006020828403121561190b57600080fd5b813567ffffffffffffffff81111561192257600080fd5b61146f848285016118e7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156119955761199561192e565b500290565b6000826119d0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156119e8576119e861192e565b500190565b6000828210156119ff576119ff61192e565b500390565b600060208284031215611a1657600080fd5b813561081f8161163a565b600060208284031215611a3357600080fd5b61081f8261165f565b60005b83811015611a57578181015183820152602001611a3f565b83811115610f7e5750506000910152565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251611aa2816004850160208701611a3c565b919091016004019392505050565b60008251611ac2818460208701611a3c565b9190910192915050565b600060208284031215611ade57600080fd5b8151801515811461081f57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b2357600080fd5b83018035915067ffffffffffffffff821115611b3e57600080fd5b602001915036819003821315611b5357600080fd5b9250929050565b6020815260008251806020840152611b79816040850160208701611a3c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212204cf30f1ca2431e63304f0a45d5cefa0164fe6393b35a339d16bca5512d511dd064736f6c634300080a003360e06040523480156200001157600080fd5b506040516200221a3803806200221a833981016040819052620000349162000121565b81816001600160a01b03821615806200005457506001600160a01b038116155b156200007357604051635919af9760e11b815260040160405180910390fd5b6001600160a01b038216608081905260408051632f7a188160e01b81529051632f7a1881916004808201926020929091908290030181865afa158015620000be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e4919062000159565b6001600160a01b0390811660a0521660c05250506001600055506200017e565b80516001600160a01b03811681146200011c57600080fd5b919050565b600080604083850312156200013557600080fd5b620001408362000104565b9150620001506020840162000104565b90509250929050565b6000602082840312156200016c57600080fd5b620001778262000104565b9392505050565b60805160a05160c051611ff6620002246000396000818161017a015281816111a8015281816112c701526113a101526000818160d30152818161101301526115330152600081816101c101528181610314015281816105630152818161070501528181610ae001528181610c7801528181610dbe015281816111fe01528181611298015281816113f7015281816115bb0152818161166f01526117190152611ff66000f3fe6080604052600436106100bc5760003560e01c8063c12c21c011610074578063db3e21981161004e578063db3e219814610225578063f28c049814610238578063f4f18d901461024b57600080fd5b8063c12c21c0146101af578063c7fbf4de146101e3578063ce30bbdb1461020357600080fd5b806378aa73a4116100a557806378aa73a414610140578063bd90df7014610168578063c04b8d591461019c57600080fd5b80632f7a1881146100c1578063414bf3891461011f575b600080fd5b3480156100cd57600080fd5b506100f57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61013261012d36600461182d565b61026b565b604051908152602001610116565b34801561014c57600080fd5b50610155600281565b60405161ffff9091168152602001610116565b34801561017457600080fd5b506100f57f000000000000000000000000000000000000000000000000000000000000000081565b6101326101aa366004611863565b6104bf565b3480156101bb57600080fd5b506100f57f000000000000000000000000000000000000000000000000000000000000000081565b3480156101ef57600080fd5b506101326101fe3660046118a0565b6106bd565b34801561020f57600080fd5b50610218600281565b60405161011691906118b2565b61013261023336600461182d565b610a3c565b610132610246366004611863565b610bd4565b34801561025757600080fd5b506101326102663660046118f3565b610d76565b6000600260005414156102df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556040517fe958b7040000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa158015610370573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103949190611953565b905060006103a736859003850185611af2565b73ffffffffffffffffffffffffffffffffffffffff83166060820152905061049f826103d66020870187611b0f565b6103e66040880160208901611b0f565b6040517f414bf3890000000000000000000000000000000000000000000000000000000090610419908790602401611b2c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260016000610ff6565b8060200190518101906104b29190611ba7565b6001600055949350505050565b60006002600054141561052e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102d6565b600260009081556040517fe958b7040000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa1580156105bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e39190611953565b905060008061062f6105f58680611bc0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146e92505050565b9150915060008561063f90611d27565b73ffffffffffffffffffffffffffffffffffffffff8516602082015260405190915061069b908590859085907fc04b8d590000000000000000000000000000000000000000000000000000000090610419908790602401611e0c565b8060200190518101906106ae9190611ba7565b60016000559695505050505050565b6040517fe958b704000000000000000000000000000000000000000000000000000000008152336004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e958b70490602401602060405180830381865afa15801561074c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107709190611953565b905060006107816020850185611b0f565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291909116906370a0823190602401602060405180830381865afa1580156107ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108139190611ba7565b90506001811115610a35576040805161010081019091527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190600090806108606020880188611b0f565b73ffffffffffffffffffffffffffffffffffffffff16815260200186602001602081019061088e9190611b0f565b73ffffffffffffffffffffffffffffffffffffffff1681526020016108b96060880160408901611e1f565b62ffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001866060013581526020018381526020016b033b2e3c9fd0803ce800000087608001358561090c9190611e69565b6109169190611ea6565b815260200161092b60c0880160a08901611b0f565b73ffffffffffffffffffffffffffffffffffffffff1690529050610a1e836109566020880188611b0f565b6109666040890160208a01611b0f565b6040517f414bf3890000000000000000000000000000000000000000000000000000000090610999908790602401611b2c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600180610ff6565b806020019051810190610a319190611ba7565b9350505b5050919050565b600060026000541415610aab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102d6565b600260009081556040517fe958b7040000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa158015610b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b609190611953565b90506000610b7336859003850185611af2565b73ffffffffffffffffffffffffffffffffffffffff831660608201528051602082015160405192935061049f92859291907fdb3e21980000000000000000000000000000000000000000000000000000000090610419908790602401611b2c565b600060026000541415610c43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102d6565b600260009081556040517fe958b7040000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190611953565b9050600080610d0a6105f58680611bc0565b91509150600085610d1a90611d27565b73ffffffffffffffffffffffffffffffffffffffff8516602082015260405190915061069b908590849086907ff28c04980000000000000000000000000000000000000000000000000000000090610419908790602401611e0c565b6040517fe958b704000000000000000000000000000000000000000000000000000000008152336004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e958b70490602401602060405180830381865afa158015610e05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e299190611953565b9050600080610e3b6105f58680611bc0565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301529294509092506000918416906370a0823190602401602060405180830381865afa158015610eb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed49190611ba7565b90506001811115610fed576040805160a081019091527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019060009080610f1d8980611bc0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525073ffffffffffffffffffffffffffffffffffffffff8716602080830191909152890135604080830191909152606082018590526080909101906b033b2e3c9fd0803ce800000090610fa8908b013586611e69565b610fb29190611ea6565b8152509050610fd685858563c04b8d5960e01b856040516024016109999190611e0c565b806020019051810190610fe99190611ba7565b9550505b50505050919050565b60606000803373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461115f576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301528916906370a0823190602401602060405180830381865afa1580156110a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c89190611ba7565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152919350908816906370a0823190602401602060405180830381865afa158015611138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115c9190611ba7565b90505b841561125b576040517f46fb371d00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116602483015289811660448301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60648301527f000000000000000000000000000000000000000000000000000000000000000016906346fb371d90608401600060405180830381600087803b15801561124257600080fd5b505af1158015611256573d6000803e3d6000fd5b505050505b6040517f6ce4074a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636ce4074a906112f19033907f0000000000000000000000000000000000000000000000000000000000000000908b90600401611ee1565b6000604051808303816000875af1158015611310573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113569190810190611f23565b92508415611454576040517f46fb371d00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116602483015289811660448301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60648301527f000000000000000000000000000000000000000000000000000000000000000016906346fb371d90608401600060405180830381600087803b15801561143b57600080fd5b505af115801561144f573d6000803e3d6000fd5b505050505b61146289898985858961151b565b50509695505050505050565b600080600361147f60146002611e69565b6114899190611f91565b835110156114c3576040517f8287466d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114ce83600061177e565b91506115146114df60036014611f91565b6114eb60036014611f91565b601486516114f99190611fa9565b6115039190611ea6565b61150d9190611e69565b849061177e565b9050915091565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461161c576040517f654a9eda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301528681166024830152858116604483015260648201859052608482018490527f0000000000000000000000000000000000000000000000000000000000000000169063654a9eda9060a401600060405180830381600087803b1580156115ff57600080fd5b505af1158015611613573d6000803e3d6000fd5b50505050611776565b80156116cc576040517f0d8f9cee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015286811660248301527f00000000000000000000000000000000000000000000000000000000000000001690630d8f9cee90604401600060405180830381600087803b1580156116b357600080fd5b505af11580156116c7573d6000803e3d6000fd5b505050505b6040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015285811660248301527f000000000000000000000000000000000000000000000000000000000000000016906351e3f16090604401600060405180830381600087803b15801561175d57600080fd5b505af1158015611771573d6000803e3d6000fd5b505050505b505050505050565b600061178b826014611f91565b835110156117f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e6473000000000000000000000060448201526064016102d6565b50818101602001516c0100000000000000000000000090045b92915050565b6000610100828403121561182757600080fd5b50919050565b6000610100828403121561184057600080fd5b61184a8383611814565b9392505050565b600060a0828403121561182757600080fd5b60006020828403121561187557600080fd5b813567ffffffffffffffff81111561188c57600080fd5b61189884828501611851565b949350505050565b600060c0828403121561182757600080fd5b60208101601183106118ed577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561190557600080fd5b813567ffffffffffffffff81111561191c57600080fd5b82016060818503121561184a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461195057600080fd5b50565b60006020828403121561196557600080fd5b815161184a8161192e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff811182821017156119c2576119c2611970565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611a0f57611a0f611970565b604052919050565b8035611a228161192e565b919050565b803562ffffff81168114611a2257600080fd5b6000610100808385031215611a4e57600080fd5b6040519081019067ffffffffffffffff82118183101715611a7157611a71611970565b8160405280925083359150611a858261192e565b818152611a9460208501611a17565b6020820152611aa560408501611a27565b6040820152611ab660608501611a17565b60608201526080840135608082015260a084013560a082015260c084013560c0820152611ae560e08501611a17565b60e0820152505092915050565b60006101008284031215611b0557600080fd5b61184a8383611a3a565b600060208284031215611b2157600080fd5b813561184a8161192e565b610100810161180e828473ffffffffffffffffffffffffffffffffffffffff80825116835280602083015116602084015262ffffff60408301511660408401528060608301511660608401526080820151608084015260a082015160a084015260c082015160c08401528060e08301511660e0840152505050565b600060208284031215611bb957600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611bf557600080fd5b83018035915067ffffffffffffffff821115611c1057600080fd5b602001915036819003821315611c2557600080fd5b9250929050565b600067ffffffffffffffff821115611c4657611c46611970565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600060a08284031215611c8457600080fd5b611c8c61199f565b9050813567ffffffffffffffff811115611ca557600080fd5b8201601f81018413611cb657600080fd5b80356020611ccb611cc683611c2c565b6119c8565b8281528682848601011115611cdf57600080fd5b828285018383013760008184018301528452611cfc858201611a17565b8185015250505060408201356040820152606082013560608201526080820135608082015292915050565b600061180e3683611c72565b60005b83811015611d4e578181015183820152602001611d36565b83811115611d5d576000848401525b50505050565b60008151808452611d7b816020860160208601611d33565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000815160a08452611dc260a0850182611d63565b905073ffffffffffffffffffffffffffffffffffffffff60208401511660208501526040830151604085015260608301516060850152608083015160808501528091505092915050565b60208152600061184a6020830184611dad565b600060208284031215611e3157600080fd5b61184a82611a27565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611ea157611ea1611e3a565b500290565b600082611edc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600073ffffffffffffffffffffffffffffffffffffffff808616835280851660208401525060606040830152611f1a6060830184611d63565b95945050505050565b600060208284031215611f3557600080fd5b815167ffffffffffffffff811115611f4c57600080fd5b8201601f81018413611f5d57600080fd5b8051611f6b611cc682611c2c565b818152856020838501011115611f8057600080fd5b611f1a826020830160208601611d33565b60008219821115611fa457611fa4611e3a565b500190565b600082821015611fbb57611fbb611e3a565b50039056fea26469706673582212205e5422ac5bcae72b08548a48e40a231ab28c72dbc2d7f2b1b2c453222770f56564736f6c634300080a0033608060405234801561001057600080fd5b5061001a33610081565b73e592427a0aece92de3edee1f18e0157c0586156460005260016020527fbad1c9453febe4a6446e59e386c36af7924acc0d372d29859fea25e7a6eaac1780546001600160a01b03191673b27308f9f90d607463bb33ea1bebb41c27ce5ab61790556100d1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612604806100e06000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80636f33547d11610081578063c67903ea1161005b578063c67903ea14610208578063d7aa2e3514610269578063f2fde38b1461029a57600080fd5b80636f33547d146101cf578063715018a6146101e25780638da5cb5b146101ea57600080fd5b806345330666116100b2578063453306661461017d5780634acc79ed1461019257806354fd4d50146101b957600080fd5b80631b162e56146100d95780631bf64c41146101025780632a10672614610122575b600080fd5b6100ec6100e7366004611e57565b6102ad565b6040516100f99190611f30565b60405180910390f35b61011561011036600461206e565b610427565b6040516100f99190612157565b6101586101303660046121c6565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f9565b61019061018b3660046121ea565b610805565b005b6101a56101a036600461223b565b6108e2565b60405162ffffff90911681526020016100f9565b6101c1600281565b6040519081526020016100f9565b6101156101dd36600461206e565b61094a565b610190610f2e565b60005473ffffffffffffffffffffffffffffffffffffffff16610158565b610190610216366004612254565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b6101c161027736600461228d565b600260209081526000938452604080852082529284528284209052825290205481565b6101906102a83660046121c6565b610fbb565b606060006102ba866108e2565b905060006102c7856108e2565b905060008960028111156102dd576102dd6122d8565b14806102fa575060018960028111156102f8576102f86122d8565b145b61038e576040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086811b821660208401527fffffff000000000000000000000000000000000000000000000000000000000060e885811b821660348601528a831b8416603786015286901b16604b8401528a901b16604e82015260620160405160208183030381529060405261041a565b6040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608a811b821660208401527fffffff000000000000000000000000000000000000000000000000000000000060e886811b821660348601528a831b8416603786015285901b16604b84015286901b16604e8201526062016040516020818303038152906040525b9998505050505050505050565b6104646040805160c08101909152600060808201908152606060a08301528190815260200160008152602001600015158152602001600081525090565b600283516002811115610479576104796122d8565b146104855760006104a7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b8160200181815250506000600160008473ffffffffffffffffffffffffffffffffffffffff1663bd90df706040518163ffffffff1660e01b8152600401602060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105259190612307565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160009081205490911691505b60038110156107fd5761059c6040805160c08101909152600060808201908152606060a08301528190815260200160008152602001600015158152602001600081525090565b6105a5866110eb565b156106c6578273ffffffffffffffffffffffffffffffffffffffff1663f7729d43876040015188606001516105d9866108e2565b60a08b01516040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff948516600482015293909216602484015262ffffff16604483015260648201526000608482015260a4016020604051808303816000875af19250505080156106a2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261069f91810190612324565b60015b6106ab576107de565b80156106c0576106bd87828886611184565b91505b506107de565b8273ffffffffffffffffffffffffffffffffffffffff166330d07f21876040015188606001516106f5866108e2565b60a08b01516040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff948516600482015293909216602484015262ffffff16604483015260648201526000608482015260a4016020604051808303816000875af19250505080156107be575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526107bb91810190612324565b60015b6107c7576107de565b80156107dc576107d987828886611184565b91505b505b6107eb81878660006112a9565b156107f4578093505b50600101610556565b505092915050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff93841660009081526002602090815260408083209587168084528683528184209590971683529381528382208390559384528281209481529390925290912055565b60006003821061091e576040517f50c1fe4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b811561093c578160011461093457611388610940565b610bb8610940565b6103e85b61ffff1692915050565b6109876040805160c08101909152600060808201908152606060a08301528190815260200160008152602001600015158152602001600081525090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1663bd90df706040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fc9190612307565b73ffffffffffffffffffffffffffffffffffffffff908116825260208201929092526040016000908120546080870151519216925085516002811115610a4457610a446122d8565b1480610a625750600185516002811115610a6057610a606122d8565b145b610a8c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a8f565b60005b602084015260005b81811015610f255760005b6003811015610f1c5760005b6003811015610f13576000610af089600001518a60400151858c608001518881518110610add57610add61233d565b6020026020010151868e606001516102ad565b9050600080610afe8b6110eb565b15610be15760a08b01516040517fcdca175300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a169163cdca175391610b5a91879160040161236c565b6020604051808303816000875af1925050508015610bb3575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610bb091810190612324565b60015b610bbc57610cbb565b8015801590610bce5750896020015181115b15610bdb57809250600191505b50610cbb565b60a08b01516040517f2f80bb1d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a1691632f80bb1d91610c3891879160040161236c565b6020604051808303816000875af1925050508015610c91575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610c8e91810190612324565b60015b610c9a57610cbb565b8015801590610cac5750896020015181105b15610cb957809250600191505b505b8015610f0557600160408a015260208901829052610cdb8b838c866112c7565b896000018190525060008a73ffffffffffffffffffffffffffffffffffffffff1663bd90df706040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190612307565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040812060808f0151805193945090928a908110610d9557610d9561233d565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d6060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e6040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e608001518a81518110610eb157610eb161233d565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610efe91906123bd565b60608b0152505b505050806001019050610aae565b50600101610aa2565b50600101610a97565b50505092915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610faf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610882565b610fb9600061159d565b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461103c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610882565b73ffffffffffffffffffffffffffffffffffffffff81166110df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610882565b6110e88161159d565b50565b60008082516002811115611101576111016122d8565b148061111f575060018251600281111561111d5761111d6122d8565b145b1561112c57506001919050565b600282516002811115611141576111416122d8565b141561114f57506000919050565b81516040517ffe7995cf00000000000000000000000000000000000000000000000000000000815261088291906004016123d5565b6111c16040805160c08101909152600060808201908152606060a08301528190815260200160008152602001600015158152602001600081525090565b60016040820152602081018490526111db85858585611612565b816000018190525060008373ffffffffffffffffffffffffffffffffffffffff1663bd90df706040518163ffffffff1660e01b8152600401602060405180830381865afa158015611230573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112549190612307565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526002602090815260408083208a82015185168452825280832060609a8b01519094168352929052205495820195909552949350505050565b60006112bc8585858660600151866119a4565b90505b949350505050565b6040805180820190915260008152606060208201526001855160028111156112f1576112f16122d8565b14156113f4576000604051806060016040528084815260200142610e1061131891906123bd565b81526020016113278888611ac7565b815250905060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff16815260200163f4f18d9060e01b8360405160240161136c9190612416565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905291506112bf9050565b600085516002811115611409576114096122d8565b14156114ae5760006040518060a00160405280848152602001876020015173ffffffffffffffffffffffffffffffffffffffff16815260200142610e1061145091906123bd565b815260a088015160208201526040016114698888611b01565b815250905060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff16815260200163c04b8d5960e01b8360405160240161136c91906124b1565b6002855160028111156114c3576114c36122d8565b14156115685760006040518060a00160405280848152602001876020015173ffffffffffffffffffffffffffffffffffffffff16815260200142610e1061150a91906123bd565b815260a088015160208201526040016115238888611b01565b815250905060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff16815260200163f28c049860e01b8360405160240161136c91906124b1565b84516040517ffe7995cf00000000000000000000000000000000000000000000000000000000815261088291906004016123d5565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051808201909152600081526060602082015260018551600281111561163c5761163c6122d8565b141561175e5760006040518060c00160405280876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001611698856108e2565b62ffffff1681526020016116ae42610e106123bd565b81526020016116bd8888611ac7565b8152600060209182015260408051808201825273ffffffffffffffffffffffffffffffffffffffff8881168252825185518216602482015285850151821660448201529285015162ffffff16606484015260608501516084840152608085015160a484015260a08501511660c4830152929350908201907fc7fbf4de000000000000000000000000000000000000000000000000000000009060e40161136c565b600085516002811115611773576117736122d8565b1415611881576000604051806101000160405280876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff1681526020016117d0856108e2565b62ffffff16815260208881015173ffffffffffffffffffffffffffffffffffffffff169082015260400161180642610e106123bd565b815260a0880151602082015260400161181f8888611b01565b8152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff16815260200163414bf38960e01b8360405160240161136c91906124c4565b600285516002811115611896576118966122d8565b1415611568576000604051806101000160405280876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff1681526020016118f3856108e2565b62ffffff16815260208881015173ffffffffffffffffffffffffffffffffffffffff169082015260400161192942610e106123bd565b815260a088015160208201526040016119428888611b01565b8152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff16815260200163db3e219860e01b8360405160240161136c91906124c4565b600085604001516119b757506000611abe565b83604001516119c857506001611abe565b6000611a258688602001516b033b2e3c9fd0803ce8000000868b606001516119f0919061253f565b6119fa919061257c565b60208901516b033b2e3c9fd0803ce8000000611a16898b61253f565b611a20919061257c565b611be8565b9050600086516002811115611a3c57611a3c6122d8565b1480611a5a5750600186516002811115611a5857611a586122d8565b145b15611a66579050611abe565b600286516002811115611a7b57611a7b6122d8565b1415611a8957159050611abe565b85516040517ffe7995cf00000000000000000000000000000000000000000000000000000000815261088291906004016123d5565b95945050505050565b60a0820151600090611aee84611ae9856b033b2e3c9fd0803ce800000061253f565b611b01565b611af8919061257c565b90505b92915050565b60008260e0015115611b1557506000611afb565b600083516002811115611b2a57611b2a6122d8565b1480611b485750600183516002811115611b4657611b466122d8565b145b15611b7b5760c083015161271090611b6090826125b7565b611b6a908461253f565b611b74919061257c565b9050611afb565b600283516002811115611b9057611b906122d8565b1415611bb35760c0830151611ba7906127106123bd565b611b6a6127108461253f565b82516040517ffe7995cf00000000000000000000000000000000000000000000000000000000815261088291906004016123d5565b6000611c286040518060400160405280600c81526020017f414141202d20616d6f756e740000000000000000000000000000000000000000815250611cd9565b611c3185611d68565b611c3a84611d68565b611c4383611d68565b611c4c82611d68565b611c5e611c5985876125b7565b611d68565b611c6b611c5983856125b7565b611c74866110eb565b611c9557611c8282846123bd565b611c8c85876123bd565b10159050611abe565b838510158015611ca55750818310155b15611cbe57611cb482846125b7565b611c8c85876125b7565b838510611ccc576001611ccf565b60005b9695505050505050565b6110e881604051602401611ced9190611f30565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052611df5565b6110e881604051602401611d7e91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff5b1bba9000000000000000000000000000000000000000000000000000000001790525b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b803560038110611e2557600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff811681146110e857600080fd5b8035611e2581611e2a565b60008060008060008060c08789031215611e7057600080fd5b611e7987611e16565b95506020870135611e8981611e2a565b9450604087013593506060870135611ea081611e2a565b92506080870135915060a0870135611eb781611e2a565b809150509295509295509295565b6000815180845260005b81811015611eeb57602081850181015186830182015201611ecf565b81811115611efd576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611af86020830184611ec5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715611f9657611f96611f43565b60405290565b600082601f830112611fad57600080fd5b8135602067ffffffffffffffff80831115611fca57611fca611f43565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110848211171561200d5761200d611f43565b60405293845285810183019383810192508785111561202b57600080fd5b83870191505b8482101561205357813561204481611e2a565b83529183019190830190612031565b979650505050505050565b80358015158114611e2557600080fd5b6000806040838503121561208157600080fd5b823567ffffffffffffffff8082111561209957600080fd5b9084019061010082870312156120ae57600080fd5b6120b6611f72565b6120bf83611e16565b81526120cd60208401611e4c565b60208201526120de60408401611e4c565b60408201526120ef60608401611e4c565b606082015260808301358281111561210657600080fd5b61211288828601611f9c565b60808301525060a083013560a082015260c083013560c082015261213860e0840161205e565b60e0820152935061214e91505060208401611e4c565b90509250929050565b60208082528251608083830152805173ffffffffffffffffffffffffffffffffffffffff1660a08401520151604060c083015260009061219a60e0840182611ec5565b905060208401516040840152604084015115156060840152606084015160808401528091505092915050565b6000602082840312156121d857600080fd5b81356121e381611e2a565b9392505050565b6000806000806080858703121561220057600080fd5b843561220b81611e2a565b9350602085013561221b81611e2a565b9250604085013561222b81611e2a565b9396929550929360600135925050565b60006020828403121561224d57600080fd5b5035919050565b6000806040838503121561226757600080fd5b823561227281611e2a565b9150602083013561228281611e2a565b809150509250929050565b6000806000606084860312156122a257600080fd5b83356122ad81611e2a565b925060208401356122bd81611e2a565b915060408401356122cd81611e2a565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561231957600080fd5b81516121e381611e2a565b60006020828403121561233657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60408152600061237f6040830185611ec5565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156123d0576123d061238e565b500190565b6020810160038310612410577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6020815260008251606060208401526124326080840182611ec5565b905060208401516040840152604084015160608401528091505092915050565b6000815160a0845261246760a0850182611ec5565b905073ffffffffffffffffffffffffffffffffffffffff60208401511660208501526040830151604085015260608301516060850152608083015160808501528091505092915050565b602081526000611af86020830184612452565b6101008101611afb828473ffffffffffffffffffffffffffffffffffffffff80825116835280602083015116602084015262ffffff60408301511660408401528060608301511660608401526080820151608084015260a082015160a084015260c082015160c08401528060e08301511660e0840152505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156125775761257761238e565b500290565b6000826125b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000828210156125c9576125c961238e565b50039056fea2646970667358221220f48bf290d42d727585d0174d5aecb1c111d9a28593d6c27486ce6672041893ce64736f6c634300080a003360806040526000805461ff01600160b01b031916757109709ecfa91a80626ff3989d68f67f5b1dd12d00011790553480156200003a57600080fd5b506040805161018081019091526000908060c081018060018152604080518082018252600381526244414960e81b6020828101919091528301526012908201526305f5e100606082015260800160018152602001600081525081526020016040518060c001604052806002600a811115620000b957620000b962000b78565b815260408051808201825260048152635553444360e01b6020828101919091528301526006908201526305f5e100606082015260800160018152602001600081525081526020016040518060c001604052806003600a81111562000121576200012162000b78565b815260408051808201825260048152630ae8aa8960e31b602082810191909152830152601290820152644a817c8000606082015260800160028152602001600081525081526020016040518060c001604052806004600a8111156200018a576200018a62000b78565b815260408051808201825260048152634c494e4b60e01b6020828101919091528301526012908201526359682f00606082015260800160018152602001600081525081526020016040518060c001604052806005600a811115620001f257620001f262000b78565b815260408051808201825260048152631554d11560e21b602082810191909152830152601290820152633b023380606082015260800160018152602001600081525081526020016040518060c001604052806006600a8111156200025a576200025a62000b78565b815260408051808201825260058152640e6e88aa8960db1b602082810191909152830152601290820152644cd588640060608201526080016003815260200160009052905260408051610140810190915290915060009080608081018060078152602001604051806040016040528060048152602001636344414960e01b8152508152602001601260ff1681526020016305f5e100815260200160048081111562000309576200030962000b78565b8152602001600181525081526020016040518060c001604052806008600a81111562000339576200033962000b78565b81526040805180820182526005815264635553444360d81b6020828101919091528301526006908201526305f5e100606082015260800160048152602001600281525081526020016040518060c001604052806009600a811115620003a257620003a262000b78565b8152604080518082018252600581526418d554d11560da1b602082810191909152830152601290820152633b023380606082015260800160048152602001600581525081526020016040518060c00160405280600a808111156200040a576200040a62000b78565b81526040805180820182526005815264634c494e4b60d81b6020828101919091528301526012908201526359682f00606082015260800160048152602001600490529052905060005b600681101562000496576200048183826006811062000476576200047662000b8e565b6020020151620004db565b806200048d8162000ba4565b91505062000453565b5060005b6004811015620004d257620004bd82826004811062000476576200047662000b8e565b80620004c98162000ba4565b9150506200049a565b50505062000d14565b6000600282608001516004811115620004f857620004f862000b78565b14156200054e576040516200050d9062000a8c565b604051809103906000f0801580156200052a573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b03831617905590506200071e565b60038260800151600481111562000569576200056962000b78565b1415620005a4576040516200057e9062000a9a565b604051809103906000f0801580156200059b573d6000803e3d6000fd5b5090506200071e565b600182608001516004811115620005bf57620005bf62000b78565b1415620005f157816020015182602001518360400151604051620005e39062000aa8565b6200057e9392919062000c1e565b6004826080015160048111156200060c576200060c62000b78565b1415620006be576000600260008460a00151600a81111562000632576200063262000b78565b600a81111562000646576200064662000b78565b815260200190815260200160002060009054906101000a90046001600160a01b0316905082602001518360200151846040015183604051620006889062000ab6565b62000697949392919062000c5b565b604051809103906000f080158015620006b4573d6000803e3d6000fd5b509150506200071e565b60405162461bcd60e51b815260206004820152602b60248201527f74657374546f6b656e53756974653a204372656174696e6720756e6b6e6f776e60448201526a20746f6b656e207479706560a81b606482015260840160405180910390fd5b60005460208301516040516318caf8e360e31b8152620100009092046001600160a01b03169163c657c718916200075b9185919060040162000ca9565b600060405180830381600087803b1580156200077657600080fd5b505af11580156200078b573d6000803e3d6000fd5b50505050600082606001516008604051620007a69062000ac4565b91825260ff166020820152604001604051809103906000f080158015620007d1573d6000803e3d6000fd5b50905081600260008560000151600a811115620007f257620007f262000b78565b600a81111562000806576200080662000b78565b815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508260600151600560008560000151600a8111156200085a576200085a62000b78565b600a8111156200086e576200086e62000b78565b8152602080820192909252604090810160009081209390935585516001600160a01b03861684526008909252909120805460ff1916600183600a811115620008ba57620008ba62000b78565b02179055508260800151600360008560000151600a811115620008e157620008e162000b78565b600a811115620008f557620008f562000b78565b81526020810191909152604001600020805460ff1916600183600481111562000922576200092262000b78565b0217905550604080518082019091526001600160a01b0380841682528281166020808401918252600780546001810182556000918252945160029095027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810180549686166001600160a01b031997881617905592517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689909301805493909416929094169190911790915584015184519091600491600a811115620009eb57620009eb62000b78565b600a811115620009ff57620009ff62000b78565b8152602001908152602001600020908051906020019062000a2292919062000ad2565b5080600660008560000151600a81111562000a415762000a4162000b78565b600a81111562000a555762000a5562000b78565b815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050565b610ab1806200285183390190565b611224806200330283390190565b611758806200452683390190565b6117098062005c7e83390190565b6106ca806200738783390190565b82805462000ae09062000cd7565b90600052602060002090601f01602090048101928262000b04576000855562000b4f565b82601f1062000b1f57805160ff191683800117855562000b4f565b8280016001018555821562000b4f579182015b8281111562000b4f57825182559160200191906001019062000b32565b5062000b5d92915062000b61565b5090565b5b8082111562000b5d576000815560010162000b62565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060001982141562000bc757634e487b7160e01b600052601160045260246000fd5b5060010190565b6000815180845260005b8181101562000bf65760208185018101518683018201520162000bd8565b8181111562000c09576000602083870101525b50601f01601f19169290920160200192915050565b60608152600062000c33606083018662000bce565b828103602084015262000c47818662000bce565b91505060ff83166040830152949350505050565b60808152600062000c70608083018762000bce565b828103602084015262000c84818762000bce565b60ff95909516604084015250506001600160a01b039190911660609091015292915050565b6001600160a01b038316815260406020820181905260009062000ccf9083018462000bce565b949350505050565b600181811c9082168062000cec57607f821691505b6020821081141562000d0e57634e487b7160e01b600052602260045260246000fd5b50919050565b611b2d8062000d246000396000f3fe6080604052600436106101635760003560e01c80638eb86e8b116100c0578063c6c3bbe611610074578063d051a62211610059578063d051a62214610490578063eebab8ef146104b0578063fa7626d4146104d057600080fd5b8063c6c3bbe614610433578063c74912d21461045357600080fd5b80639b140a85116100a55780639b140a85146103e6578063b36ba20814610406578063ba414fa61461040e57600080fd5b80638eb86e8b1461038357806398cdaadf146103a357600080fd5b80636a72bde71161011757806388327863116100fc578063883278631461030857806388f776a2146103365780638a3177a31461035657600080fd5b80636a72bde7146102c45780636ca42ae3146102e657600080fd5b8063440864fa11610148578063440864fa146102025780634b57b0be1461022f57806367b426451461028157600080fd5b806304bc3b1c1461016f57806310c7f0b9146101b557600080fd5b3661016a57005b600080fd5b34801561017b57600080fd5b5061019f61018a3660046116f6565b60086020526000908152604090205460ff1681565b6040516101ac9190611742565b60405180910390f35b3480156101c157600080fd5b506101d56101d036600461175c565b6104ea565b6040805173ffffffffffffffffffffffffffffffffffffffff9384168152929091166020830152016101ac565b34801561020e57600080fd5b5061022261021d366004611784565b610530565b6040516101ac91906117cb565b34801561023b57600080fd5b5060015461025c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ac565b34801561028d57600080fd5b5061025c61029c366004611784565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156102d057600080fd5b506102e46102df36600461181c565b6105ca565b005b3480156102f257600080fd5b506102fb610730565b6040516101ac919061186b565b34801561031457600080fd5b506103286103233660046118d4565b6107b5565b6040519081526020016101ac565b34801561034257600080fd5b506102e461035136600461190b565b610888565b34801561036257600080fd5b50610328610371366004611784565b60056020526000908152604090205481565b34801561038f57600080fd5b506102e461039e366004611954565b6108b9565b3480156103af57600080fd5b5061025c6103be366004611784565b60066020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156103f257600080fd5b506102e4610401366004611993565b610a73565b6102e4610b22565b34801561041a57600080fd5b50610423610ba0565b60405190151581526020016101ac565b34801561043f57600080fd5b506102e461044e3660046119b3565b610d00565b34801561045f57600080fd5b5061048361046e366004611784565b60036020526000908152604090205460ff1681565b6040516101ac91906119d3565b34801561049c57600080fd5b506103286104ab36600461190b565b610daf565b3480156104bc57600080fd5b506102e46104cb366004611954565b610e8b565b3480156104dc57600080fd5b506000546104239060ff1681565b600781815481106104fa57600080fd5b60009182526020909120600290910201805460019091015473ffffffffffffffffffffffffffffffffffffffff91821692501682565b60046020526000908152604090208054610549906119e7565b80601f0160208091040260200160405190810160405280929190818152602001828054610575906119e7565b80156105c25780601f10610597576101008083540402835291602001916105c2565b820191906000526020600020905b8154815290600101906020018083116105a557829003601f168201915b505050505081565b6000546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152620100009092049091169063ca669fa790602401600060405180830381600087803b15801561063e57600080fd5b505af1158015610652573d6000803e3d6000fd5b505050506002600085600a81111561066c5761066c611713565b600a81111561067d5761067d611713565b8152602081019190915260409081016000205490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490529091169063095ea7b3906044016020604051808303816000875af1158015610705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107299190611a3b565b5050505050565b60606007805480602002602001604051908101604052809291908181526020016000905b828210156107ac5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff908116835260019182015416828401529083529092019101610754565b50505050905090565b60006002600084600a8111156107cd576107cd611713565b600a8111156107de576107de611713565b8152602081019190915260409081016000205490517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152909116906370a0823190602401602060405180830381865afa15801561085d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108819190611a5d565b9392505050565b6108b48383837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6105ca565b505050565b60016003600085600a8111156108d1576108d1611713565b600a8111156108e2576108e2611713565b815260208101919091526040016000205460ff16600481111561090757610907611713565b14610999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f74657374546f6b656e53756974653a20547279696e6720746f206275726e206160448201527f206e6f6e2d6e6f726d616c20746f6b656e00000000000000000000000000000060648201526084015b60405180910390fd5b6002600084600a8111156109af576109af611713565b600a8111156109c0576109c0611713565b8152602081019190915260409081016000205490517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905290911690639dc29fac906044015b6020604051808303816000875af1158015610a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6d9190611a3b565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604081205460ff169081600a811115610aaf57610aaf611713565b1415610b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4e6f20746f6b656e2077697468207375636820616464726573730000000000006044820152606401610990565b610a6d818484610888565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b8c57600080fd5b505af1158015610729573d6000803e3d6000fd5b60008054610100900460ff1615610bc05750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610cfb5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610c65917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611a76565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c9d91611abe565b6000604051808303816000865af19150503d8060008114610cda576040519150601f19603f3d011682016040523d82523d6000602084013e610cdf565b606091505b5091505080806020019051810190610cf79190611a3b565b9150505b919050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604081205460ff169081600a811115610d3c57610d3c611713565b1415610da4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4e6f20746f6b656e2077697468207375636820616464726573730000000000006044820152606401610990565b610a6d818484610e8b565b60006002600085600a811115610dc757610dc7611713565b600a811115610dd857610dd8611713565b8152602081019190915260409081016000205490517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301529091169063dd62ed3e90604401602060405180830381865afa158015610e5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e839190611a5d565b949350505050565b60026003600085600a811115610ea357610ea3611713565b600a811115610eb457610eb4611713565b815260208101919091526040016000205460ff166004811115610ed957610ed9611713565b1415610ff6576000546040517fc88a5e6d000000000000000000000000000000000000000000000000000000008152306004820152602481018390526201000090910473ffffffffffffffffffffffffffffffffffffffff169063c88a5e6d90604401600060405180830381600087803b158015610f5657600080fd5b505af1158015610f6a573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b505050505061163c565b600380600085600a81111561100d5761100d611713565b600a81111561101e5761101e611713565b815260208101919091526040016000205460ff16600481111561104357611043611713565b14156111aa576000546040517fc88a5e6d000000000000000000000000000000000000000000000000000000008152306004820152602481018390526201000090910473ffffffffffffffffffffffffffffffffffffffff169063c88a5e6d90604401600060405180830381600087803b1580156110c057600080fd5b505af11580156110d4573d6000803e3d6000fd5b505050506002600084600a8111156110ee576110ee611713565b600a8111156110ff576110ff611713565b8152602081019190915260409081016000205490517fa1903eab00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9091169063a1903eab90839060240160206040518083038185885af115801561117f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111a49190611a5d565b5061163c565b60046003600085600a8111156111c2576111c2611713565b600a8111156111d3576111d3611713565b815260208101919091526040016000205460ff1660048111156111f8576111f8611713565b141561148f5760006002600085600a81111561121657611216611713565b600a81111561122757611227611713565b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c49190611ada565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600860205260409020549091506112fb9060ff163084610e8b565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b36002600087600a81111561132d5761132d611713565b600a81111561133e5761133e611713565b81526020810191909152604090810160002054905160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018590526044016020604051808303816000875af11580156113c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e69190611a3b565b506002600085600a8111156113fd576113fd611713565b600a81111561140e5761140e611713565b8152602081019190915260409081016000205490517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810184905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b158015610fd857600080fd5b60016003600085600a8111156114a7576114a7611713565b600a8111156114b8576114b8611713565b815260208101919091526040016000205460ff1660048111156114dd576114dd611713565b14156115b4576002600084600a8111156114f9576114f9611713565b600a81111561150a5761150a611713565b8152602081019190915260409081016000205490517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f19906044016020604051808303816000875af1158015611590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a49190611a3b565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f74657374546f6b656e53756974653a20547279696e6720746f207472616e736660448201527f657220756e6b6e6f776e20746f6b656e000000000000000000000000000000006064820152608401610990565b6002600084600a81111561165257611652611713565b600a81111561166357611663611713565b8152602081019190915260409081016000205490517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490529091169063a9059cbb90604401610a2a565b73ffffffffffffffffffffffffffffffffffffffff811681146116f357600080fd5b50565b60006020828403121561170857600080fd5b8135610881816116d1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600b831061175657611756611713565b91905290565b60006020828403121561176e57600080fd5b5035919050565b8035600b8110610cfb57600080fd5b60006020828403121561179657600080fd5b61088182611775565b60005b838110156117ba5781810151838201526020016117a2565b83811115610a6d5750506000910152565b60208152600082518060208401526117ea81604085016020870161179f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561183257600080fd5b61183b85611775565b9350602085013561184b816116d1565b9250604085013561185b816116d1565b9396929550929360600135925050565b602080825282518282018190526000919060409081850190868401855b828110156118c7578151805173ffffffffffffffffffffffffffffffffffffffff90811686529087015116868501529284019290850190600101611888565b5091979650505050505050565b600080604083850312156118e757600080fd5b6118f083611775565b91506020830135611900816116d1565b809150509250929050565b60008060006060848603121561192057600080fd5b61192984611775565b92506020840135611939816116d1565b91506040840135611949816116d1565b809150509250925092565b60008060006060848603121561196957600080fd5b61197284611775565b92506020840135611982816116d1565b929592945050506040919091013590565b6000806000606084860312156119a857600080fd5b8335611929816116d1565b6000806000606084860312156119c857600080fd5b8335611972816116d1565b602081016005831061175657611756611713565b600181811c908216806119fb57607f821691505b60208210811415611a35577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215611a4d57600080fd5b8151801515811461088157600080fd5b600060208284031215611a6f57600080fd5b5051919050565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251611ab081600485016020870161179f565b919091016004019392505050565b60008251611ad081846020870161179f565b9190910192915050565b600060208284031215611aec57600080fd5b8151610881816116d156fea264697066735822122010fe735ed069aca27931edce4ba2ff14ec7886bf21b0eea685a884f9200fb49e64736f6c634300080a003360c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b5061014e565b82805461008690610113565b90600052602060002090601f0160209004810192826100a857600085556100ee565b82601f106100c157805160ff19168380011785556100ee565b828001600101855582156100ee579182015b828111156100ee5782518255916020019190600101906100d3565b506100fa9291506100fe565b5090565b5b808211156100fa57600081556001016100ff565b600181811c9082168061012757607f821691505b6020821081141561014857634e487b7160e01b600052602260045260246000fd5b50919050565b6109548061015d6000396000f3fe6080604052600436106100cb5760003560e01c806340c10f1911610074578063a9059cbb1161004e578063a9059cbb14610225578063d0e30db014610245578063dd62ed3e1461024d57600080fd5b806340c10f19146101c357806370a08231146101e357806395d89b411461021057600080fd5b806323b872dd116100a557806323b872dd146101575780632e1a7d4d14610177578063313ce5671461019757600080fd5b806306fdde03146100df578063095ea7b31461010a57806318160ddd1461013a57600080fd5b366100da576100d8610285565b005b600080fd5b3480156100eb57600080fd5b506100f46102e0565b6040516101019190610703565b60405180910390f35b34801561011657600080fd5b5061012a61012536600461079f565b61036e565b6040519015158152602001610101565b34801561014657600080fd5b50475b604051908152602001610101565b34801561016357600080fd5b5061012a6101723660046107c9565b6103e7565b34801561018357600080fd5b506100d8610192366004610805565b6105fe565b3480156101a357600080fd5b506002546101b19060ff1681565b60405160ff9091168152602001610101565b3480156101cf57600080fd5b506100d86101de36600461079f565b6106a4565b3480156101ef57600080fd5b506101496101fe36600461081e565b60036020526000908152604090205481565b34801561021c57600080fd5b506100f46106e2565b34801561023157600080fd5b5061012a61024036600461079f565b6106ef565b6100d8610285565b34801561025957600080fd5b50610149610268366004610839565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102a490849061089b565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102ed906108b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610319906108b3565b80156103665780601f1061033b57610100808354040283529160200191610366565b820191906000526020600020905b81548152906001019060200180831161034957829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103d69086815260200190565b60405180910390a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561041957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061048f575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105175773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156104d157600080fd5b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915281208054849290610511908490610907565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061054c908490610907565b909155505073ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805484929061058690849061089b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105ec91815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561061a57600080fd5b3360009081526003602052604081208054839290610639908490610907565b9091555050604051339082156108fc029083906000818181858888f1935050505015801561066b573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080548392906106d990849061089b565b90915550505050565b600180546102ed906108b3565b60006106fc3384846103e7565b9392505050565b600060208083528351808285015260005b8181101561073057858101830151858201604001528201610714565b81811115610742576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461079a57600080fd5b919050565b600080604083850312156107b257600080fd5b6107bb83610776565b946020939093013593505050565b6000806000606084860312156107de57600080fd5b6107e784610776565b92506107f560208501610776565b9150604084013590509250925092565b60006020828403121561081757600080fd5b5035919050565b60006020828403121561083057600080fd5b6106fc82610776565b6000806040838503121561084c57600080fd5b61085583610776565b915061086360208401610776565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156108ae576108ae61086c565b500190565b600181811c908216806108c757607f821691505b60208210811415610901577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000828210156109195761091961086c565b50039056fea26469706673582212206ec943fa4e3b70d8fca6c25b6aa26fa18e8f8952ce3bc4d5afcb443bf3097c0564736f6c634300080a003360806040526000600255600060035534801561001a57600080fd5b506111fa8061002a6000396000f3fe60806040526004361061016e5760003560e01c80637a28fb88116100cb578063bdd17e1c1161007f578063dd62ed3e11610059578063dd62ed3e146103ee578063ee7a7c0414610441578063f5eb42dc1461046157600080fd5b8063bdd17e1c146103ad578063cdb9a21c146103c3578063d5002f2e146103d957600080fd5b8063a1903eab116100b0578063a1903eab1461035a578063a457c2d71461036d578063a9059cbb1461038d57600080fd5b80637a28fb88146102f457806395d89b411461031457600080fd5b806323b872dd1161012257806337cfdaca1161010757806337cfdaca1461020d57806339509351146102b457806370a08231146102d457600080fd5b806323b872dd14610278578063313ce5671461029857600080fd5b806318160ddd1161015357806318160ddd1461020d578063192084511461023057806322301f6e1461025057600080fd5b806306fdde0314610185578063095ea7b3146101dd57600080fd5b366101805761017d6000610481565b50005b600080fd5b34801561019157600080fd5b5060408051808201909152601781527f4c6971756964207374616b656420457468657220322e3000000000000000000060208201525b6040516101d49190610f63565b60405180910390f35b3480156101e957600080fd5b506101fd6101f8366004610fff565b610545565b60405190151581526020016101d4565b34801561021957600080fd5b5061022261055b565b6040519081526020016101d4565b34801561023c57600080fd5b5061022261024b366004611029565b61056b565b34801561025c57600080fd5b5061027661026b366004611042565b600391909155600255565b005b34801561028457600080fd5b506101fd610293366004611064565b6105ab565b3480156102a457600080fd5b50604051601281526020016101d4565b3480156102c057600080fd5b506101fd6102cf366004610fff565b610696565b3480156102e057600080fd5b506102226102ef3660046110a0565b6106d9565b34801561030057600080fd5b5061022261030f366004611029565b61070e565b34801561032057600080fd5b5060408051808201909152600581527f737445544800000000000000000000000000000000000000000000000000000060208201526101c7565b6102226103683660046110a0565b61073a565b34801561037957600080fd5b506101fd610388366004610fff565b610745565b34801561039957600080fd5b506101fd6103a8366004610fff565b6107f9565b3480156103b957600080fd5b5061022260035481565b3480156103cf57600080fd5b5061022260025481565b3480156103e557600080fd5b50610222610806565b3480156103fa57600080fd5b506102226104093660046110bb565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b34801561044d57600080fd5b5061027661045c366004610fff565b610811565b34801561046d57600080fd5b5061022261047c3660046110a0565b61081f565b60003334806104f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006104fc8261056b565b9050806105065750805b8160036000828254610518919061111d565b909155506105289050838261084a565b61053383838761093b565b61053d8382610992565b949350505050565b60006105523384846109ea565b50600192915050565b600061056660035490565b905090565b60008061057760035490565b9050806105875750600092915050565b6105a48161059e61059760025490565b8690610b52565b90610b5e565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602090815260408083203384529091528120548281101561066c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f5452414e534645525f414d4f554e545f455843454544535f414c4c4f57414e4360448201527f450000000000000000000000000000000000000000000000000000000000000060648201526084016104e8565b610677858585610b6a565b61068b85336106868487610bef565b6109ea565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105529185906106869086610bfb565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260408120546107089061070e565b92915050565b60008061071a60025490565b90508061072a5750600092915050565b6105a48161059e61059760035490565b600061070882610481565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156107e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4445435245415345445f414c4c4f57414e43455f42454c4f575f5a45524f000060448201526064016104e8565b6107ef33856106868487610bef565b5060019392505050565b6000610552338484610b6a565b600061056660025490565b61081b8282610c07565b5050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260208190526040812054610708565b73ffffffffffffffffffffffffffffffffffffffff82166108c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d494e545f544f5f5448455f5a45524f5f41444452455353000000000000000060448201526064016104e8565b80600260008282546108d9919061111d565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461090e9082610bfb565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526020819052604090209190915550565b6040805183815273ffffffffffffffffffffffffffffffffffffffff83811660208301528516917fed8dd430b1e4bba98e943dc5b157cf7b54d9e12916d6c474ff5733a95001d03b910160405180910390a2505050565b73ffffffffffffffffffffffffffffffffffffffff821660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6109d58461070e565b60405190815260200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8316610a67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f415050524f56455f46524f4d5f5a45524f5f414444524553530000000000000060448201526064016104e8565b73ffffffffffffffffffffffffffffffffffffffff8216610ae4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f415050524f56455f544f5f5a45524f5f4144445245535300000000000000000060448201526064016104e8565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006105a48284611135565b60006105a48284611172565b6000610b758261056b565b9050610b82848483610d64565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610be191815260200190565b60405180910390a350505050565b60006105a482846111ad565b60006105a4828461111d565b73ffffffffffffffffffffffffffffffffffffffff8216610c84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4255524e5f46524f4d5f5448455f5a45524f5f4144445245535300000000000060448201526064016104e8565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205480821115610d14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4255524e5f414d4f554e545f455843454544535f42414c414e4345000000000060448201526064016104e8565b8160026000828254610d2691906111ad565b90915550610d3690508183610bef565b73ffffffffffffffffffffffffffffffffffffffff9093166000908152602081905260409020929092555050565b73ffffffffffffffffffffffffffffffffffffffff8316610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f5452414e534645525f46524f4d5f5448455f5a45524f5f41444452455353000060448201526064016104e8565b73ffffffffffffffffffffffffffffffffffffffff8216610e5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f5452414e534645525f544f5f5448455f5a45524f5f414444524553530000000060448201526064016104e8565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205480821115610eee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5452414e534645525f414d4f554e545f455843454544535f42414c414e43450060448201526064016104e8565b610ef88183610bef565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152602081905260408082209390935590851681522054610f349083610bfb565b73ffffffffffffffffffffffffffffffffffffffff909316600090815260208190526040902092909255505050565b600060208083528351808285015260005b81811015610f9057858101830151858201604001528201610f74565b81811115610fa2576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ffa57600080fd5b919050565b6000806040838503121561101257600080fd5b61101b83610fd6565b946020939093013593505050565b60006020828403121561103b57600080fd5b5035919050565b6000806040838503121561105557600080fd5b50508035926020909101359150565b60008060006060848603121561107957600080fd5b61108284610fd6565b925061109060208501610fd6565b9150604084013590509250925092565b6000602082840312156110b257600080fd5b6105a482610fd6565b600080604083850312156110ce57600080fd5b6110d783610fd6565b91506110e560208401610fd6565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611130576111306110ee565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561116d5761116d6110ee565b500290565b6000826111a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000828210156111bf576111bf6110ee565b50039056fea2646970667358221220a5b4f31162ba2b8b3424cef84b31ef91d05a825243602b5fdf758ffb49b8246364736f6c634300080a003360a06040523480156200001157600080fd5b506040516200175838038062001758833981016040819052620000349162000269565b8251839083906200004d906003906020850190620000f6565b50805162000063906004906020840190620000f6565b505050620000806200007a620000a060201b60201c565b620000a4565b60ff166080525050600680546001600160a01b031916331790556200032b565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200010490620002ee565b90600052602060002090601f01602090048101928262000128576000855562000173565b82601f106200014357805160ff191683800117855562000173565b8280016001018555821562000173579182015b828111156200017357825182559160200191906001019062000156565b506200018192915062000185565b5090565b5b8082111562000181576000815560010162000186565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001c457600080fd5b81516001600160401b0380821115620001e157620001e16200019c565b604051601f8301601f19908116603f011681019082821181831017156200020c576200020c6200019c565b816040528381526020925086838588010111156200022957600080fd5b600091505b838210156200024d57858201830151818301840152908201906200022e565b838211156200025f5760008385830101525b9695505050505050565b6000806000606084860312156200027f57600080fd5b83516001600160401b03808211156200029757600080fd5b620002a587838801620001b2565b94506020860151915080821115620002bc57600080fd5b50620002cb86828701620001b2565b925050604084015160ff81168114620002e357600080fd5b809150509250925092565b600181811c908216806200030357607f821691505b602082108114156200032557634e487b7160e01b600052602260045260246000fd5b50919050565b60805161141162000347600039600061025f01526114116000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806370a08231116100cd5780639dc29fac11610081578063a9059cbb11610066578063a9059cbb1461034c578063dd62ed3e1461035f578063f2fde38b146103a557600080fd5b80639dc29fac14610326578063a457c2d71461033957600080fd5b806379cc6790116100b257806379cc6790146102ed5780638da5cb5b1461030057806395d89b411461031e57600080fd5b806370a08231146102af578063715018a6146102e557600080fd5b806318160ddd11610124578063313ce56711610109578063313ce56714610258578063395093511461028957806340c10f191461029c57600080fd5b806318160ddd1461023357806323b872dd1461024557600080fd5b806306fdde03146101565780630754617214610174578063095ea7b3146101b95780631652e9fc146101dc575b600080fd5b61015e6103b8565b60405161016b91906111d2565b60405180910390f35b6006546101949073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016b565b6101cc6101c736600461126e565b61044a565b604051901515815260200161016b565b6102316101ea366004611298565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b005b6002545b60405190815260200161016b565b6101cc6102533660046112ba565b610460565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161016b565b6101cc61029736600461126e565b61054b565b6101cc6102aa36600461126e565b610594565b6102376102bd366004611298565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102316106a3565b6101cc6102fb36600461126e565b610730565b60055473ffffffffffffffffffffffffffffffffffffffff16610194565b61015e6107be565b6101cc61033436600461126e565b6107cd565b6101cc61034736600461126e565b6107d9565b6101cc61035a36600461126e565b6108b1565b61023761036d3660046112f6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6102316103b3366004611298565b6108be565b6060600380546103c790611329565b80601f01602080910402602001604051908101604052809291908181526020018280546103f390611329565b80156104405780601f1061041557610100808354040283529160200191610440565b820191906000526020600020905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b60006104573384846109ee565b50600192915050565b600061046d848484610ba2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482811015610533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61054085338584036109ee565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161045791859061058f9086906113ac565b6109ee565b60065460009073ffffffffffffffffffffffffffffffffffffffff163314610618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d696e7465722063616c6c73206f6e6c79000000000000000000000000000000604482015260640161052a565b60065473ffffffffffffffffffffffffffffffffffffffff163314610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d696e7465722063616c6c73206f6e6c79000000000000000000000000000000604482015260640161052a565b6104578383610e56565b60055473ffffffffffffffffffffffffffffffffffffffff163314610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052a565b61072e6000610f76565b565b60065460009073ffffffffffffffffffffffffffffffffffffffff1633146107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d696e7465722063616c6c73206f6e6c79000000000000000000000000000000604482015260640161052a565b6104578383610fed565b6060600480546103c790611329565b60006104578383610fed565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120548281101561089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161052a565b6108a733858584036109ee565b5060019392505050565b6000610457338484610ba2565b60055473ffffffffffffffffffffffffffffffffffffffff16331461093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052a565b73ffffffffffffffffffffffffffffffffffffffff81166109e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161052a565b6109eb81610f76565b50565b73ffffffffffffffffffffffffffffffffffffffff8316610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8216610b33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8216610ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610d9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610de29084906113ac565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e4891815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610ed3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161052a565b8060026000828254610ee591906113ac565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610f1f9084906113ac565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff8216611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015611146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906111829084906113c4565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610b95565b600060208083528351808285015260005b818110156111ff578581018301518582016040015282016111e3565b81811115611211576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461126957600080fd5b919050565b6000806040838503121561128157600080fd5b61128a83611245565b946020939093013593505050565b6000602082840312156112aa57600080fd5b6112b382611245565b9392505050565b6000806000606084860312156112cf57600080fd5b6112d884611245565b92506112e660208501611245565b9150604084013590509250925092565b6000806040838503121561130957600080fd5b61131283611245565b915061132060208401611245565b90509250929050565b600181811c9082168061133d57607f821691505b60208210811415611377577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156113bf576113bf61137d565b500190565b6000828210156113d6576113d661137d565b50039056fea2646970667358221220fd9684963a1e0e9d3eb55681a6f85f5c76804530c79f10cf8d0cfbd35511577164736f6c634300080a003360c06040523480156200001157600080fd5b506040516200170938038062001709833981016040819052620000349162000266565b8351849084906200004d906003906020850190620000f3565b50805162000063906004906020840190620000f3565b505050620000806200007a6200009d60201b60201c565b620000a1565b60ff9091166080526001600160a01b031660a05250620003479050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b82805462000101906200030a565b90600052602060002090601f01602090048101928262000125576000855562000170565b82601f106200014057805160ff191683800117855562000170565b8280016001018555821562000170579182015b828111156200017057825182559160200191906001019062000153565b506200017e92915062000182565b5090565b5b808211156200017e576000815560010162000183565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001c157600080fd5b81516001600160401b0380821115620001de57620001de62000199565b604051601f8301601f19908116603f0116810190828211818310171562000209576200020962000199565b816040528381526020925086838588010111156200022657600080fd5b600091505b838210156200024a57858201830151818301840152908201906200022b565b838211156200025c5760008385830101525b9695505050505050565b600080600080608085870312156200027d57600080fd5b84516001600160401b03808211156200029557600080fd5b620002a388838901620001af565b95506020870151915080821115620002ba57600080fd5b50620002c987828801620001af565b935050604085015160ff81168114620002e157600080fd5b60608601519092506001600160a01b0381168114620002ff57600080fd5b939692955090935050565b600181811c908216806200031f57607f821691505b602082108114156200034157634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05161138e6200037b600039600081816101f70152818161041f0152610600015260006101a2015261138e6000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80636f307dc3116100b257806395d89b4111610081578063a9059cbb11610066578063a9059cbb146102b5578063dd62ed3e146102c8578063f2fde38b1461030e57600080fd5b806395d89b411461029a578063a457c2d7146102a257600080fd5b80636f307dc3146101f257806370a082311461023e578063715018a6146102745780638da5cb5b1461027c57600080fd5b806323b872dd116100ee57806323b872dd14610188578063313ce5671461019b57806339509351146101cc57806340c10f19146101df57600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd146101615780631e9a695014610173575b600080fd5b610128610321565b604051610135919061112d565b60405180910390f35b61015161014c3660046111c9565b6103b3565b6040519015158152602001610135565b6002545b604051908152602001610135565b6101866101813660046111c9565b6103c9565b005b6101516101963660046111f3565b610491565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610135565b6101516101da3660046111c9565b61057c565b6101866101ed3660046111c9565b6105c5565b6102197f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b61016561024c36600461122f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610186610691565b60055473ffffffffffffffffffffffffffffffffffffffff16610219565b61012861071e565b6101516102b03660046111c9565b61072d565b6101516102c33660046111c9565b610805565b6101656102d6366004611251565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61018661031c36600461122f565b610812565b60606003805461033090611284565b80601f016020809104026020016040519081016040528092919081815260200182805461035c90611284565b80156103a95780601f1061037e576101008083540402835291602001916103a9565b820191906000526020600020905b81548152906001019060200180831161038c57829003601f168201915b5050505050905090565b60006103c0338484610942565b50600192915050565b6103d33382610af5565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015610468573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048c91906112d8565b505050565b600061049e848484610ce2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482811015610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6105718533858403610942565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103c09185906105c0908690611329565b610942565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303816000875af115801561065e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068291906112d8565b5061068d8282610f96565b5050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161055b565b61071c60006110b6565b565b60606004805461033090611284565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156107ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161055b565b6107fb3385858403610942565b5060019392505050565b60006103c0338484610ce2565b60055473ffffffffffffffffffffffffffffffffffffffff163314610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161055b565b73ffffffffffffffffffffffffffffffffffffffff8116610936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161055b565b61093f816110b6565b50565b73ffffffffffffffffffffffffffffffffffffffff83166109e4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff8216610a87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8216610b98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c8a908490611341565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff8216610e28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610ede576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610f22908490611329565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f8891815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161055b565b80600260008282546110259190611329565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260408120805483929061105f908490611329565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b8181101561115a5785810183015185820160400152820161113e565b8181111561116c576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146111c457600080fd5b919050565b600080604083850312156111dc57600080fd5b6111e5836111a0565b946020939093013593505050565b60008060006060848603121561120857600080fd5b611211846111a0565b925061121f602085016111a0565b9150604084013590509250925092565b60006020828403121561124157600080fd5b61124a826111a0565b9392505050565b6000806040838503121561126457600080fd5b61126d836111a0565b915061127b602084016111a0565b90509250929050565b600181811c9082168061129857607f821691505b602082108114156112d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000602082840312156112ea57600080fd5b8151801515811461124a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561133c5761133c6112fa565b500190565b600082821015611353576113536112fa565b50039056fea26469706673582212203a6db30cd3c097921df4156794aa7973eb848711deeb2cffd7c54a9df1fdb0a564736f6c634300080a003360a060405234801561001057600080fd5b506040516106ca3803806106ca83398101604081905261002f9161006c565b60009190915560ff166080526001805460506001600160501b031991821681179092556004805490911690911790554260028190556003556100a2565b6000806040838503121561007f57600080fd5b82519150602083015160ff8116811461009757600080fd5b809150509250929050565b60805161060e6100bc600039600060d3015261060e6000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80639a6fc8f511610081578063d62ada111161005b578063d62ada11146102dc578063f7a30806146102f4578063feaf968c1461030757600080fd5b80639a6fc8f5146101cd578063bd18ad531461023a578063cd653afc1461024d57600080fd5b806354fd4d50116100b257806354fd4d501461012d57806367e8d83d1461013c5780637284e4161461018e57600080fd5b8063313ce567146100ce5780633fd0875f1461010c575b600080fd5b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020015b60405180910390f35b6004546a0100000000000000000000900460ff166040516101039190610441565b60405160018152602001610103565b61018c61014a366004610482565b600480549115156c01000000000000000000000000027fffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff909216919091179055565b005b604080518082018252600c81527f7072696365206f7261636c6500000000000000000000000000000000000000006020820152905161010391906104ab565b6102036101db36600461053d565b60015460005460025460035460045469ffffffffffffffffffff948516941691939590929450565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610103565b61018c610248366004610558565b61030f565b61018c61025b366004610579565b6001805469ffffffffffffffffffff9586167fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090911617905560029290925560035560048054919092167fffffffffffffffffffffffffffffffffffffffff00ff00000000000000000000909116176b020000000000000000000000179055565b6102e461035f565b6040519015158152602001610103565b61018c6103023660046105bf565b600055565b610203610385565b600480548291907fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff166b01000000000000000000000083600281111561035757610357610412565b021790555050565b600454600090610380906b010000000000000000000000900460ff166103d6565b905090565b60008060008060006004600c9054906101000a900460ff16156103a757600080fd5b505060015460005460025460035460045469ffffffffffffffffffff9485169893975091955093509190911690565b600060028260028111156103ec576103ec610412565b14156103f757600080fd5b600182600281111561040b5761040b610412565b1492915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016006831061047c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561049457600080fd5b813580151581146104a457600080fd5b9392505050565b600060208083528351808285015260005b818110156104d8578581018301518582016040015282016104bc565b818111156104ea576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803569ffffffffffffffffffff8116811461053857600080fd5b919050565b60006020828403121561054f57600080fd5b6104a48261051e565b60006020828403121561056a57600080fd5b8135600381106104a457600080fd5b6000806000806080858703121561058f57600080fd5b6105988561051e565b935060208501359250604085013591506105b46060860161051e565b905092959194509250565b6000602082840312156105d157600080fd5b503591905056fea264697066735822122014874f7a973b86501c4c1a8be32490fe902c8f088ee234d25f9b2497e19f9e5264736f6c634300080a0033496e636f72726563742061646472657373206f6620556e695632207061746866696e646572496e636f72726563742061646472657373206f66204375727665207061746866696e646572496e636f72726563742061646472657373206f6620556e695633207061746866696e646572a2646970667358221220d1f25b066781f72116ea79763a3952aa8c964744c38479031d287abd83e8ca4564736f6c634300080a0033";
|
|
866
|
-
|
|
867
|
-
type SwapPathFinderTestConstructorParams =
|
|
868
|
-
| [signer?: Signer]
|
|
869
|
-
| ConstructorParameters<typeof ContractFactory>;
|
|
870
|
-
|
|
871
|
-
const isSuperArgs = (
|
|
872
|
-
xs: SwapPathFinderTestConstructorParams
|
|
873
|
-
): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
|
|
874
|
-
|
|
875
|
-
export class SwapPathFinderTest__factory extends ContractFactory {
|
|
876
|
-
constructor(...args: SwapPathFinderTestConstructorParams) {
|
|
877
|
-
if (isSuperArgs(args)) {
|
|
878
|
-
super(...args);
|
|
879
|
-
} else {
|
|
880
|
-
super(_abi, _bytecode, args[0]);
|
|
881
|
-
}
|
|
882
|
-
}
|
|
883
|
-
|
|
884
|
-
override deploy(
|
|
885
|
-
overrides?: Overrides & { from?: string | Promise<string> }
|
|
886
|
-
): Promise<SwapPathFinderTest> {
|
|
887
|
-
return super.deploy(overrides || {}) as Promise<SwapPathFinderTest>;
|
|
888
|
-
}
|
|
889
|
-
override getDeployTransaction(
|
|
890
|
-
overrides?: Overrides & { from?: string | Promise<string> }
|
|
891
|
-
): TransactionRequest {
|
|
892
|
-
return super.getDeployTransaction(overrides || {});
|
|
893
|
-
}
|
|
894
|
-
override attach(address: string): SwapPathFinderTest {
|
|
895
|
-
return super.attach(address) as SwapPathFinderTest;
|
|
896
|
-
}
|
|
897
|
-
override connect(signer: Signer): SwapPathFinderTest__factory {
|
|
898
|
-
return super.connect(signer) as SwapPathFinderTest__factory;
|
|
899
|
-
}
|
|
900
|
-
|
|
901
|
-
static readonly bytecode = _bytecode;
|
|
902
|
-
static readonly abi = _abi;
|
|
903
|
-
static createInterface(): SwapPathFinderTestInterface {
|
|
904
|
-
return new utils.Interface(_abi) as SwapPathFinderTestInterface;
|
|
905
|
-
}
|
|
906
|
-
static connect(
|
|
907
|
-
address: string,
|
|
908
|
-
signerOrProvider: Signer | Provider
|
|
909
|
-
): SwapPathFinderTest {
|
|
910
|
-
return new Contract(address, _abi, signerOrProvider) as SwapPathFinderTest;
|
|
911
|
-
}
|
|
912
|
-
}
|