0 txs
0 calls
constructor
constructor(address _poolLogic, address _cloneFactory, address _WETH)
functions
allPools
viewfunction allPools(uint256) view returns (address)
allPoolsLength
viewfunction allPoolsLength() view returns (uint256)
cloneFactory
viewfunction cloneFactory() view returns (address)
getPool
viewfunction getPool(address) view returns (address)
isValidPool
viewfunction isValidPool(address _pool) view returns (bool)
owner
viewfunction owner() view returns (address)
poolFee
viewfunction poolFee() view returns (uint256)
poolLogic
viewfunction poolLogic() view returns (address)
router
viewfunction router() view returns (address)
settlement
viewfunction settlement() view returns (address)
addPool
nonpayablefunction addPool(address _pool)
createPool
nonpayablefunction createPool(address _baseToken, address _oracle, uint256 _liquidityParameter) returns (address pool)
emergencyWithdrawFromPool
nonpayablefunction emergencyWithdrawFromPool(address _pool, address _token, uint256 _amount, address _to)
removePool
nonpayablefunction removePool(address _pool)
renounceOwnership
nonpayablefunction renounceOwnership()
setAllPoolsDepositEnabled
nonpayablefunction setAllPoolsDepositEnabled(bool _depositEnabled)
setAllPoolsTradeEnabled
nonpayablefunction setAllPoolsTradeEnabled(bool _tradeEnabled)
setAllPoolsWithdrawEnabled
nonpayablefunction setAllPoolsWithdrawEnabled(bool _withdrawEnabled)
setCloneFactory
nonpayablefunction setCloneFactory(address _cloneFactory)
setPoolDepositEnabled
nonpayablefunction setPoolDepositEnabled(address _pool, bool _depositEnabled)
setPoolFee
nonpayablefunction setPoolFee(uint256 _poolFee)
setPoolLiquidityParameter
nonpayablefunction setPoolLiquidityParameter(address _pool, uint256 _liquidityParameter)
setPoolLogic
nonpayablefunction setPoolLogic(address _poolLogic)
setPoolTradeEnabled
nonpayablefunction setPoolTradeEnabled(address _pool, bool _tradeEnabled)
setPoolWithdrawEnabled
nonpayablefunction setPoolWithdrawEnabled(address _pool, bool _withdrawEnabled)
setRouter
nonpayablefunction setRouter(address _router)
setRouterContractWhitelist
nonpayablefunction setRouterContractWhitelist(address _address, bool _whitelist)
setRouterOnlyEOAEnabled
nonpayablefunction setRouterOnlyEOAEnabled(bool _onlyEOAEnabled)
setSettlement
nonpayablefunction setSettlement(address _settlement)
setSettlementDuration
nonpayablefunction setSettlementDuration(uint256 _duration)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PoolCreated
event PoolCreated(address indexed baseToken, address pool, uint256)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b50604051620086f6380380620086f6833981810160405260608110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505060006200006e620002f360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060003060b4604051620001a190620002fb565b808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051809103906000f080158015620001e5573d6000803e3d6000fd5b50905080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600030836040516200023b9062000309565b808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050604051809103906000f08015801562000295573d6000803e3d6000fd5b50905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506702c68af0bb140000600181905550505050505062000317565b600033905090565b611ee6806200350583390190565b61330b80620053eb83390190565b6131de80620003276000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639501dc871161010f578063c0d78655116100a2578063f2a36d9911610071578063f2a36d99146108e8578063f2fde38b14610938578063f887ea401461097c578063fac1756b146109b0576101e5565b8063c0d78655146107b4578063d914cd4b146107f8578063e07265c41461083c578063efde4e64146108ca576101e5565b8063a3091223116100de578063a309122314610678578063a7012df6146106c6578063bbe4f6db14610716578063bcdc0b0a14610784576101e5565b80639501dc8714610596578063983eefed146105c45780639de0d49d146105f4578063a064f9a114610644576101e5565b806351810fb511610187578063861d312911610156578063861d3129146104aa5780638da5cb5b146104da5780638e10153d1461050e5780638f4e6f3714610552576101e5565b806351810fb51461037e57806356433f76146104165780635ab78ee114610446578063715018a6146104a0576101e5565b806341d1de97116101c357806341d1de97146102805780634f4e6eea146102d857806350f45c5f1461031c578063511606301461034a576101e5565b8063089fe6aa146101ea57806339b81fd9146102085780633b7d09461461023c575b600080fd5b6101f2610a00565b6040518082815260200191505060405180910390f35b610210610a06565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61027e6004803603602081101561025257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a2c565b005b6102ac6004803603602081101561029657600080fd5b8101908080359060200190929190505050610f04565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61031a600480360360208110156102ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f40565b005b6103486004803603602081101561033257600080fd5b810190808035906020019092919050505061104c565b005b6103526111a4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103ea6004803603606081101561039457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111ca565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104446004803603602081101561042c57600080fd5b81019080803515159060200190929190505050611779565b005b6104886004803603602081101561045c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118a3565b60405180821515815260200191505060405180910390f35b6104a8611945565b005b6104d8600480360360208110156104c057600080fd5b81019080803515159060200190929190505050611acb565b005b6104e2611bf5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105506004803603602081101561052457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c1e565b005b6105946004803603602081101561056857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d2a565b005b6105c2600480360360208110156105ac57600080fd5b8101908080359060200190929190505050611e36565b005b6105f2600480360360208110156105da57600080fd5b81019080803515159060200190929190505050611f08565b005b6106426004803603604081101561060a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612032565b005b61064c61216b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106c46004803603604081101561068e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612191565b005b610714600480360360408110156106dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506122c8565b005b6107586004803603602081101561072c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124e6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107b26004803603602081101561079a57600080fd5b81019080803515159060200190929190505050612519565b005b6107f6600480360360208110156107ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612673565b005b61083a6004803603602081101561080e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061277f565b005b6108c86004803603608081101561085257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b55565b005b6108d2612cca565b6040518082815260200191505060405180910390f35b610936600480360360408110156108fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612cd7565b005b61097a6004803603602081101561094e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e10565b005b61098461301b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109fe600480360360408110156109c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613041565b005b60015481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a3461317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663c55dae636040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3c57600080fd5b505afa158015610b50573d6000803e3d6000fd5b505050506040513d6020811015610b6657600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43656e74617572537761703a205a45524f5f414444524553530000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43656e74617572537761703a20504f4f4c5f4e4f545f464f554e44000000000081525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005b600780549050811015610eff578273ffffffffffffffffffffffffffffffffffffffff1660078281548110610dd157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610ef257600760016007805490500381548110610e2d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110610e6557fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506007805480610eb857fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610eff565b8080600101915050610da0565b505050565b60078181548110610f1157fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f4861317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611008576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61105461317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611114576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350f45c5f826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561118957600080fd5b505af115801561119d573d6000803e3d6000fd5b5050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006111d461317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611294576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156112fe5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b611370576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43656e74617572537761703a205a45524f5f414444524553530000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611471576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43656e74617572537761703a20504f4f4c5f455849535453000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357894c1b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561151e57600080fd5b505af1158015611532573d6000803e3d6000fd5b505050506040513d602081101561154857600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166346639dba308686866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b15801561160857600080fd5b505af115801561161c573d6000803e3d6000fd5b5050505080600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167ff8a0462f666b427ea753848be7e91f9ce413975906f6f39950be296ca9a4d52482600780549050604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a29392505050565b61178161317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611841576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b60078054905081101561189f576118926007828154811061186157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612cd7565b8080600101915050611844565b5050565b600080600090505b60078054905081101561193a578273ffffffffffffffffffffffffffffffffffffffff16600782815481106118dc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561192d576001915050611940565b80806001019150506118ab565b50600090505b919050565b61194d61317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611ad361317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b600780549050811015611bf157611be460078281548110611bb357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612032565b8080600101915050611b96565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c2661317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ce6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d3261317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611df2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e3e61317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611efe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060018190555050565b611f1061317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b60078054905081101561202e5761202160078281548110611ff057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613041565b8080600101915050611fd3565b5050565b61203a61317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16635b17d04b826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561214f57600080fd5b505af1158015612163573d6000803e3d6000fd5b505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61219961317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612259576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663b464f469826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156122ac57600080fd5b505af11580156122c0573d6000803e3d6000fd5b505050505050565b6122d061317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612390576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b801561243e57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368d15bbf836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561242157600080fd5b505af1158015612435573d6000803e3d6000fd5b505050506124e2565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b480bfff836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156124c957600080fd5b505af11580156124dd573d6000803e3d6000fd5b505050505b5050565b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61252161317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635b46ec71826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561265857600080fd5b505af115801561266c573d6000803e3d6000fd5b5050505050565b61267b61317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461273b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61278761317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612847576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663c55dae636040518163ffffffff1660e01b815260040160206040518083038186803b15801561288f57600080fd5b505afa1580156128a3573d6000803e3d6000fd5b505050506040513d60208110156128b957600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561296f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43656e74617572537761703a205a45524f5f414444524553530000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43656e74617572537761703a20504f4f4c5f455849535453000000000000000081525060200191505060405180910390fd5b81600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506007829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b612b5d61317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c1d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663551512de8484846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b158015612cac57600080fd5b505af1158015612cc0573d6000803e3d6000fd5b5050505050505050565b6000600780549050905090565b612cdf61317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d9f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16633bec2bf3826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b158015612df457600080fd5b505af1158015612e08573d6000803e3d6000fd5b505050505050565b612e1861317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ed8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612f5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131836026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61304961317a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613109576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16639ec004a2826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561315e57600080fd5b505af1158015613172573d6000803e3d6000fd5b505050505050565b60003390509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220f4cdca1288d8046443631b669a6e95e6f84e821afcf8c4a0fe83e751a2c391f764736f6c634300060c003360806040523480156200001157600080fd5b5060405162001ee638038062001ee68339818101604052810190620000379190620000b4565b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600181905550505062000167565b600081519050620000978162000133565b92915050565b600081519050620000ae816200014d565b92915050565b60008060408385031215620000c857600080fd5b6000620000d88582860162000086565b9250506020620000eb858286016200009d565b9150509250929050565b6000620001028262000109565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6200013e81620000f5565b81146200014a57600080fd5b50565b620001588162000129565b81146200016457600080fd5b50565b611d6f80620001776000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063576922131161005b57806357692213146100ea5780637b59475914610108578063c45a015514610124578063e9c0f423146101425761007d565b80631b54b99d146100825780633da3535f1461009e57806350f45c5f146100ce575b600080fd5b61009c6004803603810190610097919061168b565b610172565b005b6100b860048036038101906100b39190611600565b6108ba565b6040516100c59190611bee565b60405180910390f35b6100e860048036038101906100e391906116f1565b610aae565b005b6100f2610b46565b6040516100ff9190611c0a565b60405180910390f35b610122600480360381019061011d919061163c565b610b4c565b005b61012c611186565b6040516101399190611aaf565b60405180910390f35b61015c60048036038101906101579190611600565b6111aa565b6040516101699190611af3565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ab78ee182600001516040518263ffffffff1660e01b81526004016101cf9190611aaf565b60206040518083038186803b1580156101e757600080fd5b505afa1580156101fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021f91906116c8565b61025e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025590611bae565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ab78ee18260a001516040518263ffffffff1660e01b81526004016102bb9190611aaf565b60206040518083038186803b1580156102d357600080fd5b505afa1580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906116c8565b61034a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034190611bae565b60405180910390fd5b8060a0015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b390611b4e565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b015414610482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611b8e565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360a0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b015414610548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053f90611b8e565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061016082015181600b015590505080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360a0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061016082015181600b01559050505050565b6108c26113c2565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806101800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600b82015481525050905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3390611b6e565b60405180910390fd5b8060018190555050565b60015481565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb190611b4e565b60405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b01541415610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490611b0e565b60405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b01541415610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3790611b0e565b60405180910390fd5b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b0154421015610e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df990611bce565b60405180910390fd5b610f098173ffffffffffffffffffffffffffffffffffffffff1663c55dae636040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4b57600080fd5b505afa158015610e5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8391906115d7565b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154611237565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160009055600382016000905560048201600090556005820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556006820160009055600782016000905560088201600090556009820160009055600a820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600b8201600090555050600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160009055600382016000905560048201600090556005820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556006820160009055600782016000905560088201600090556009820160009055600a820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600b8201600090555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b01541415905092915050565b600060608473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e7432353629000000000000008152508051906020012085856040516024016112a2929190611aca565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161130c9190611a98565b6000604051808303816000865af19150503d8060008114611349576040519150601f19603f3d011682016040523d82523d6000602084013e61134e565b606091505b509150915081801561137c575060008151148061137b57508080602001905181019061137a91906116c8565b5b5b6113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b290611b2e565b60405180910390fd5b5050505050565b604051806101800160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b60008135905061147481611cf4565b92915050565b60008151905061148981611cf4565b92915050565b60008151905061149e81611d0b565b92915050565b600061018082840312156114b757600080fd5b6114c2610180611c25565b905060006114d284828501611465565b60008301525060206114e6848285016115c2565b60208301525060406114fa848285016115c2565b604083015250606061150e848285016115c2565b6060830152506080611522848285016115c2565b60808301525060a061153684828501611465565b60a08301525060c061154a848285016115c2565b60c08301525060e061155e848285016115c2565b60e083015250610100611573848285016115c2565b61010083015250610120611589848285016115c2565b6101208301525061014061159f84828501611465565b610140830152506101606115b5848285016115c2565b6101608301525092915050565b6000813590506115d181611d22565b92915050565b6000602082840312156115e957600080fd5b60006115f78482850161147a565b91505092915050565b6000806040838503121561161357600080fd5b600061162185828601611465565b925050602061163285828601611465565b9150509250929050565b60008060006060848603121561165157600080fd5b600061165f86828701611465565b935050602061167086828701611465565b925050604061168186828701611465565b9150509250925092565b6000806101a0838503121561169f57600080fd5b60006116ad85828601611465565b92505060206116be858286016114a4565b9150509250929050565b6000602082840312156116da57600080fd5b60006116e88482850161148f565b91505092915050565b60006020828403121561170357600080fd5b6000611711848285016115c2565b91505092915050565b61172381611c79565b82525050565b61173281611c79565b82525050565b61174181611c8b565b82525050565b600061175282611c52565b61175c8185611c5d565b935061176c818560208601611cc1565b80840191505092915050565b6000611785602783611c68565b91507f43656e74617572537761703a20534554544c454d454e545f444f45535f4e4f5460008301527f5f455849535453000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006117eb601c83611c68565b91507f43656e74617572537761703a205452414e534645525f4641494c4544000000006000830152602082019050919050565b600061182b601983611c68565b91507f43656e74617572537761703a20494e56414c49445f504f4f4c000000000000006000830152602082019050919050565b600061186b602183611c68565b91507f43656e74617572537761703a204f4e4c595f464143544f52595f414c4c4f574560008301527f44000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006118d1601e83611c68565b91507f43656e74617572537761703a20534554544c454d454e545f45584953545300006000830152602082019050919050565b6000611911601b83611c68565b91507f43656e74617572537761703a20504f4f4c5f4e4f545f464f554e4400000000006000830152602082019050919050565b6000611951601f83611c68565b91507f43656e74617572537761703a20534554544c454d454e545f50454e44494e47006000830152602082019050919050565b6101808201600082015161199b600085018261171a565b5060208201516119ae6020850182611a7a565b5060408201516119c16040850182611a7a565b5060608201516119d46060850182611a7a565b5060808201516119e76080850182611a7a565b5060a08201516119fa60a085018261171a565b5060c0820151611a0d60c0850182611a7a565b5060e0820151611a2060e0850182611a7a565b50610100820151611a35610100850182611a7a565b50610120820151611a4a610120850182611a7a565b50610140820151611a5f61014085018261171a565b50610160820151611a74610160850182611a7a565b50505050565b611a8381611cb7565b82525050565b611a9281611cb7565b82525050565b6000611aa48284611747565b915081905092915050565b6000602082019050611ac46000830184611729565b92915050565b6000604082019050611adf6000830185611729565b611aec6020830184611a89565b9392505050565b6000602082019050611b086000830184611738565b92915050565b60006020820190508181036000830152611b2781611778565b9050919050565b60006020820190508181036000830152611b47816117de565b9050919050565b60006020820190508181036000830152611b678161181e565b9050919050565b60006020820190508181036000830152611b878161185e565b9050919050565b60006020820190508181036000830152611ba7816118c4565b9050919050565b60006020820190508181036000830152611bc781611904565b9050919050565b60006020820190508181036000830152611be781611944565b9050919050565b600061018082019050611c046000830184611984565b92915050565b6000602082019050611c1f6000830184611a89565b92915050565b6000604051905081810181811067ffffffffffffffff82111715611c4857600080fd5b8060405250919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000611c8482611c97565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611cdf578082015181840152602081019050611cc4565b83811115611cee576000848401525b50505050565b611cfd81611c79565b8114611d0857600080fd5b50565b611d1481611c8b565b8114611d1f57600080fd5b50565b611d2b81611cb7565b8114611d3657600080fd5b5056fea2646970667358221220506c18f85cb2a0885423dbf0b6028b1ac8e35d92ea10a49621786e6de245236f64736f6c634300060c003360a060405234801561001057600080fd5b5060405161330b38038061330b8339818101604052604081101561003357600080fd5b810190808051906020019092919080519060200190929190505050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506001600060146101000a81548160ff021916908315150217905550505060805160601c613207610104600039806101085280611e1b52506132076000f3fe6080604052600436106101015760003560e01c80636972320f11610095578063b480bfff11610064578063b480bfff146106eb578063c45a01551461073c578063de7d92e91461077d578063e7d9888c14610835578063ff4b1592146108e45761015d565b80636972320f146104d9578063a7321221146105be578063ad5c464814610643578063af5a6c7e146106845761015d565b806353b609b5116100d157806353b609b51461036b5780635b46ec71146103fa5780635bb478081461043757806368d15bbf146104885761015d565b8062c24087146101625780634aa06652146102055780634d8c2c6b146102945780634ddc75031461033e5761015d565b3661015d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461015b57fe5b005b600080fd5b34801561016e57600080fd5b506101ef600480360360a081101561018557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610993565b6040518082815260200191505060405180910390f35b34801561021157600080fd5b5061027e6004803603606081101561022857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e32565b6040518082815260200191505060405180910390f35b3480156102a057600080fd5b50610321600480360360a08110156102b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506111d1565b604051808381526020018281526020019250505060405180910390f35b34801561034a57600080fd5b506103536115c3565b60405180821515815260200191505060405180910390f35b34801561037757600080fd5b506103e46004803603606081101561038e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115d6565b6040518082815260200191505060405180910390f35b34801561040657600080fd5b506104356004803603602081101561041d57600080fd5b81019080803515159060200190929190505050611974565b005b34801561044357600080fd5b506104866004803603602081101561045a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a35565b005b34801561049457600080fd5b506104d7600480360360208110156104ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b1c565b005b3480156104e557600080fd5b506105bc600480360360408110156104fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561053957600080fd5b82018360208201111561054b57600080fd5b8035906020019184602083028401116401000000008311171561056d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611c95565b005b3480156105ca57600080fd5b5061062d600480360360408110156105e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d6b565b6040518082815260200191505060405180910390f35b34801561064f57600080fd5b50610658611e19565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561069057600080fd5b506106d3600480360360208110156106a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e3d565b60405180821515815260200191505060405180910390f35b3480156106f757600080fd5b5061073a6004803603602081101561070e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e5d565b005b34801561074857600080fd5b50610751611f5c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561078957600080fd5b506107ec600480360360408110156107a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f80565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b34801561084157600080fd5b506108e2600480360360c081101561085857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612258565b005b3480156108f057600080fd5b50610991600480360360c081101561090757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125e9565b005b60008142811015610a0c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43656e74617572537761703a204558504952454400000000000000000000000081525060200191505060405180910390fd5b33600060149054906101000a900460ff1615610af357610a2b81612980565b1580610a805750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610af2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f43656e74617572537761703a204f4e4c595f454f415f414c4c4f57454400000081525060200191505060405180910390fd5b5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bbe4f6db8a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b7d57600080fd5b505afa158015610b91573d6000803e3d6000fd5b505050506040513d6020811015610ba757600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43656e74617572537761703a20504f4f4c5f4e4f545f464f554e44000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd33838b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610cec57600080fd5b505af1158015610d00573d6000803e3d6000fd5b505050506040513d6020811015610d1657600080fd5b8101908080519060200190929190505050508073ffffffffffffffffffffffffffffffffffffffff166389afcb44886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610d9157600080fd5b505af1158015610da5573d6000803e3d6000fd5b505050506040513d6020811015610dbb57600080fd5b81019080805190602001909291905050509350858411610e26576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806131876027913960400191505060405180910390fd5b50505095945050505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663089fe6aa6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e9b57600080fd5b505afa158015610eaf573d6000803e3d6000fd5b505050506040513d6020811015610ec557600080fd5b8101908080519060200190929190505050905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bbe4f6db876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610f6257600080fd5b505afa158015610f76573d6000803e3d6000fd5b505050506040513d6020811015610f8c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663fecc5a56856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610fed57600080fd5b505afa158015611001573d6000803e3d6000fd5b505050506040513d602081101561101757600080fd5b8101908080519060200190929190505050905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bbe4f6db876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156110b457600080fd5b505afa1580156110c8573d6000803e3d6000fd5b505050506040513d60208110156110de57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a0930ebe836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561113f57600080fd5b505afa158015611153573d6000803e3d6000fd5b505050506040513d602081101561116957600080fd5b810190808051906020019092919050505090506111c568056bc75e2d631000006111b76111a88668056bc75e2d6310000061299390919063ffffffff16565b846129dd90919063ffffffff16565b612a6390919063ffffffff16565b93505050509392505050565b600080824281101561124b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43656e74617572537761703a204558504952454400000000000000000000000081525060200191505060405180910390fd5b33600060149054906101000a900460ff16156113325761126a81612980565b15806112bf5750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f43656e74617572537761703a204f4e4c595f454f415f414c4c4f57454400000081525060200191505060405180910390fd5b5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bbe4f6db8b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156113bc57600080fd5b505afa1580156113d0573d6000803e3d6000fd5b505050506040513d60208110156113e657600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561149c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43656e74617572537761703a20504f4f4c5f4e4f545f464f554e44000000000081525060200191505060405180910390fd5b6114a78a8a89612aad565b93506114b58a33838c612d2e565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561151e57600080fd5b505af1158015611532573d6000803e3d6000fd5b505050506040513d602081101561154857600080fd5b810190808051906020019092919050505093508684116115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806131876027913960400191505060405180910390fd5b8894505050509550959350505050565b600060149054906101000a900460ff1681565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663089fe6aa6040518163ffffffff1660e01b815260040160206040518083038186803b15801561163f57600080fd5b505afa158015611653573d6000803e3d6000fd5b505050506040513d602081101561166957600080fd5b8101908080519060200190929190505050905060006116c761169d8368056bc75e2d6310000061299390919063ffffffff16565b6116b968056bc75e2d63100000876129dd90919063ffffffff16565b612a6390919063ffffffff16565b905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bbe4f6db876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561175357600080fd5b505afa158015611767573d6000803e3d6000fd5b505050506040513d602081101561177d57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663807e6cc6836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156117de57600080fd5b505afa1580156117f2573d6000803e3d6000fd5b505050506040513d602081101561180857600080fd5b8101908080519060200190929190505050905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bbe4f6db886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156118a257600080fd5b505afa1580156118b6573d6000803e3d6000fd5b505050506040513d60208110156118cc57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16638d2f19bc826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561192d57600080fd5b505afa158015611941573d6000803e3d6000fd5b505050506040513d602081101561195757600080fd5b810190808051906020019092919050505093505050509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806131666021913960400191505060405180910390fd5b80600060146101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ad9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806131666021913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bc0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806131666021913960400191505060405180910390fd5b611bc981612980565b611c3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43656e74617572537761703a204e4f545f434f4e54524143540000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60005b8151811015611d6657818181518110611cad57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166392a3d6c0846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611d1d57600080fd5b505af1158015611d31573d6000803e3d6000fd5b505050506040513d6020811015611d4757600080fd5b8101908080519060200190929190505050508080600101915050611c98565b505050565b60008173ffffffffffffffffffffffffffffffffffffffff166392a3d6c0846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611dd657600080fd5b505af1158015611dea573d6000803e3d6000fd5b505050506040513d6020811015611e0057600080fd5b8101908080519060200190929190505050905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60016020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806131666021913960400191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bbe4f6db856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561200a57600080fd5b505afa15801561201e573d6000803e3d6000fd5b505050506040513d602081101561203457600080fd5b81019080805190602001909291905050509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43656e74617572537761703a20504f4f4c5f4e4f545f464f554e44000000000081525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bbe4f6db846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561217157600080fd5b505afa158015612185573d6000803e3d6000fd5b505050506040513d602081101561219b57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43656e74617572537761703a20504f4f4c5f4e4f545f464f554e44000000000081525060200191505060405180910390fd5b9250929050565b80428110156122cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43656e74617572537761703a204558504952454400000000000000000000000081525060200191505060405180910390fd5b33600060149054906101000a900460ff16156123b6576122ee81612980565b15806123435750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6123b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f43656e74617572537761703a204f4e4c595f454f415f414c4c4f57454400000081525060200191505060405180910390fd5b5b846123c289888a610e32565b1015612419576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806131876027913960400191505060405180910390fd5b6000806124268a89611f80565b915091506124368a33848c612d2e565b6000808373ffffffffffffffffffffffffffffffffffffffff166328a4a0d1336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506040805180830381600087803b1580156124a157600080fd5b505af11580156124b5573d6000803e3d6000fd5b505050506040513d60408110156124cb57600080fd5b810190808051906020019092919080519060200190929190505050915091508273ffffffffffffffffffffffffffffffffffffffff16631a275a03338e85858d6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050602060405180830381600087803b15801561259f57600080fd5b505af11580156125b3573d6000803e3d6000fd5b505050506040513d60208110156125c957600080fd5b810190808051906020019092919050505050505050505050505050505050565b8042811015612660576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43656e74617572537761703a204558504952454400000000000000000000000081525060200191505060405180910390fd5b33600060149054906101000a900460ff16156127475761267f81612980565b15806126d45750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f43656e74617572537761703a204f4e4c595f454f415f414c4c4f57454400000081525060200191505060405180910390fd5b5b60006127548988886115d6565b9050878111156127af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806131226023913960400191505060405180910390fd5b6000806127bc8b8a611f80565b915091506127cc8b338486612d2e565b6000808373ffffffffffffffffffffffffffffffffffffffff166328a4a0d1336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506040805180830381600087803b15801561283757600080fd5b505af115801561284b573d6000803e3d6000fd5b505050506040513d604081101561286157600080fd5b810190808051906020019092919080519060200190929190505050915091508273ffffffffffffffffffffffffffffffffffffffff16631a275a03338f85858e6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050602060405180830381600087803b15801561293557600080fd5b505af1158015612949573d6000803e3d6000fd5b505050506040513d602081101561295f57600080fd5b81019080805190602001909291905050505050505050505050505050505050565b600080823b905060008111915050919050565b60006129d583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f13565b905092915050565b6000808314156129f05760009050612a5d565b6000828402905082848281612a0157fe5b0414612a58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806131456021913960400191505060405180910390fd5b809150505b92915050565b6000612aa583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fd3565b905092915050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bbe4f6db866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612b3757600080fd5b505afa158015612b4b573d6000803e3d6000fd5b505050506040513d6020811015612b6157600080fd5b8101908080519060200190929190505050905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612bbc57600080fd5b505afa158015612bd0573d6000803e3d6000fd5b505050506040513d6020811015612be657600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff1663faa482246040518163ffffffff1660e01b815260040160206040518083038186803b158015612c4157600080fd5b505afa158015612c55573d6000803e3d6000fd5b505050506040513d6020811015612c6b57600080fd5b810190808051906020019092919050505090508593506000821415612ca457612c9d818761309990919063ffffffff16565b9350612ccc565b612cc981612cbb84896129dd90919063ffffffff16565b612a6390919063ffffffff16565b93505b848411612d24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806131876027913960400191505060405180910390fd5b5050509392505050565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612e0f5780518252602082019150602081019050602083039250612dec565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612e71576040519150601f19603f3d011682016040523d82523d6000602084013e612e76565b606091505b5091509150818015612eb65750600081511480612eb55750808060200190516020811015612ea357600080fd5b81019080805190602001909291905050505b5b612f0b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806131ae6024913960400191505060405180910390fd5b505050505050565b6000838311158290612fc0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612f85578082015181840152602081019050612f6a565b50505050905090810190601f168015612fb25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808311829061307f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613044578082015181840152602081019050613029565b50505050905090810190601f1680156130715780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161308b57fe5b049050809150509392505050565b600080828401905083811015613117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe43656e74617572537761703a204558434553534956455f494e5055545f414d4f554e54536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743656e74617572537761703a204f4e4c595f464143544f52595f414c4c4f57454443656e74617572537761703a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a264697066735822122056b75ca282e1a4ff9d0a551d66750ef1e49f7f4512cb5983c123327f4a9411fa64736f6c634300060c0033000000000000000000000000893604fb79062b0450b866616ceca877c0d234820000000000000000000000000deb1a88002d54ae993e9dc341a7e9d78fbfdaac000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2