Loading
[ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "fundAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "manager", "type": "address" }, { "indexed": false, "internalType": "bytes32", "name": "assetKey", "type": "bytes32" } ], "name": "AssetAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "fundAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "manager", "type": "address" }, { "indexed": false, "internalType": "bytes32", "name": "assetKey", "type": "bytes32" } ], "name": "AssetRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "sUSDAmountTransferredOut", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "finalTokenPrice", "type": "uint256" } ], "name": "FundDeprecated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "pool", "type": "address" }, { "indexed": false, "internalType": "address", "name": "manager", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "available", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "daoFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "managerFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokenPriceAtLastFeeMint", "type": "uint256" } ], "name": "ManagerFeeMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "newManager", "type": "address" }, { "indexed": false, "internalType": "string", "name": "newManagerName", "type": "string" } ], "name": "ManagerUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "fundAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "investor", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "valueWithdrawn", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "fundTokensWithdrawn", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalInvestorFundTokens", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "fundValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalSupply", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "time", "type": "uint256" } ], "name": "Withdrawal", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "member", "type": "address" } ], "name": "addMember", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "members", "type": "address[]" } ], "name": "addMembers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "addressResolver", "outputs": [ { "internalType": "contract IAddressResolver", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "announcedFeeIncreaseNumerator", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "announcedFeeIncreaseTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "assetPosition", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "key", "type": "bytes32" } ], "name": "assetValue", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "availableManagerFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newManager", "type": "address" }, { "internalType": "string", "name": "newManagerName", "type": "string" } ], "name": "changeManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "creationTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "creator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "deprecateAndTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20[]", "name": "synthProxies", "type": "address[]" }, { "internalType": "bytes32[]", "name": "synthKeys", "type": "bytes32[]" } ], "name": "dynamicRedeemSynths", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "factory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "finalTokenPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "key", "type": "bytes32" } ], "name": "getAssetProxy", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "getExitFeeRemainingCooldown", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getFundComposition", "outputs": [ { "internalType": "bytes32[]", "name": "", "type": "bytes32[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getFundSummary", "outputs": [ { "internalType": "string", "name": "", "type": "string" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "string", "name": "", "type": "string" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bool", "name": "", "type": "bool" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getManagerFeeIncreaseInfo", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMembers", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getSupportedAssets", "outputs": [ { "internalType": "bytes32[]", "name": "", "type": "bytes32[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWaitingPeriods", "outputs": [ { "internalType": "bytes32[]", "name": "", "type": "bytes32[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "key", "type": "bytes32" } ], "name": "isAssetSupported", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "member", "type": "address" } ], "name": "isMemberAllowed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "lastDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "manager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "managerName", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "failOnSuspended", "type": "bool" } ], "name": "mintManagerFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numberOfMembers", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numberOfSupportedAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "persistentAsset", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "privatePool", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "targetVersion", "type": "uint256" } ], "name": "receiveUpgrade", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20[]", "name": "synthProxies", "type": "address[]" }, { "internalType": "bytes32[]", "name": "synthKeys", "type": "bytes32[]" } ], "name": "redeemSynths", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "key", "type": "bytes32" } ], "name": "removeFromSupportedAssets", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "member", "type": "address" } ], "name": "removeMember", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "members", "type": "address[]" } ], "name": "removeMembers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "removeTrader", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newTrader", "type": "address" } ], "name": "setTrader", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "supportedAssets", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenPriceAtLastFeeMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalFundValue", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "trader", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "key", "type": "bytes32" } ], "name": "validateAsset", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_fundTokenAmount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561001057600080fd5b50614746806100206000396000f3fe608060405234801561001057600080fd5b506004361061029e5760003560e01c8063023f21de146102a357806302d05d3f146102c25780630499123f146102e657806305a2ee2a1461031557806306fdde031461031d578063095ea7b31461039a5780630b1ca49a146103da5780631758078b1461040057806318160ddd146104085780631c5918d2146104105780631cc645441461054057806323b872dd1461054857806329d16ee81461057e5780632e1a7d4d146105a4578063313ce567146105c157806339509351146105df57806339b8c5a81461060b5780633c866241146106135780633ded6530146106b457806346ee84b0146106d1578063481c6a7514610772578063510965c51461077a578063522136631461089d57806359b5e75e1461095157806367079749146109595780636f4d469b1461097657806370a0823114610a175780637714f39d14610a3d5780637b4d0c6314610a455780637c8afd5114610a4d5780637ff9b59614610a55578063866dabbb14610a5d5780638f32343914610b80578063936553c414610b8857806395d89b4114610b905780639eab525314610b98578063a30e3fa914610bf0578063a457c2d714610bf8578063a6bc18f914610c24578063a9059cbb14610c4a578063ad60ffcc14610c76578063adefd87114610c7e578063ba06c9a614610ca4578063bbbf725b14610cc3578063c45a015514610ce9578063c68dbb3714610cf1578063ca6d56dc14610d0e578063d44fa33e14610d34578063d78d7c2e14610d51578063d8270dce14610d6e578063dd62ed3e14610d76578063e4d4d90614610da4578063e5406dbf14610dc1578063e5ea775914610dc9578063ed5b165d14610de6578063edbf6f5014610e07578063f09d14d714610e0f578063fed4416a14610ef5575b600080fd5b6102c0600480360360208110156102b957600080fd5b5035610efd565b005b6102ca61117d565b604080516001600160a01b039092168252519081900360200190f35b610303600480360360208110156102fc57600080fd5b5035611191565b60408051918252519081900360200190f35b6102ca61132e565b61032561133d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561035f578181015183820152602001610347565b50505050905090810190601f16801561038c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103c6600480360360408110156103b057600080fd5b506001600160a01b0381351690602001356113d3565b604080519115158252519081900360200190f35b6102c0600480360360208110156103f057600080fd5b50356001600160a01b03166113f1565b6102ca61145a565b610303611469565b61041861146f565b60405180806020018c81526020018b81526020018a6001600160a01b0316815260200180602001898152602001881515815260200187815260200186815260200185815260200184815260200183810383528e818151815260200191508051906020019080838360005b8381101561049a578181015183820152602001610482565b50505050905090810190601f1680156104c75780820380516001836020036101000a031916815260200191505b5083810382528a5181528a516020918201918c019080838360005b838110156104fa5781810151838201526020016104e2565b50505050905090810190601f1680156105275780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390f35b610303611587565b6103c66004803603606081101561055e57600080fd5b506001600160a01b0381358116916020810135909116906040013561158d565b6103036004803603602081101561059457600080fd5b50356001600160a01b0316611614565b6102c0600480360360208110156105ba57600080fd5b5035611626565b6105c9611941565b6040805160ff9092168252519081900360200190f35b6103c6600480360360408110156105f557600080fd5b506001600160a01b03813516906020013561194a565b6102c0611998565b61061b611cbb565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561065f578181015183820152602001610647565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561069e578181015183820152602001610686565b5050505090500194505050505060405180910390f35b6102ca600480360360208110156106ca57600080fd5b5035611ebb565b6102c0600480360360208110156106e757600080fd5b810190602081018135600160201b81111561070157600080fd5b82018360208201111561071357600080fd5b803590602001918460208302840111600160201b8311171561073457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506120be945050505050565b6102ca612165565b6102c06004803603604081101561079057600080fd5b810190602081018135600160201b8111156107aa57600080fd5b8201836020820111156107bc57600080fd5b803590602001918460208302840111600160201b831117156107dd57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561082c57600080fd5b82018360208201111561083e57600080fd5b803590602001918460208302840111600160201b8311171561085f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612174945050505050565b6102c0600480360360408110156108b357600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156108dd57600080fd5b8201836020820111156108ef57600080fd5b803590602001918460018302840111600160201b8311171561091057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061243b945050505050565b6103c6612566565b6103c66004803603602081101561096f57600080fd5b503561256f565b6102c06004803603602081101561098c57600080fd5b810190602081018135600160201b8111156109a657600080fd5b8201836020820111156109b857600080fd5b803590602001918460208302840111600160201b831117156109d957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612584945050505050565b61030360048036036020811015610a2d57600080fd5b50356001600160a01b031661261b565b610303612636565b61030361263c565b6102c0612642565b6103036126a2565b6102c060048036036040811015610a7357600080fd5b810190602081018135600160201b811115610a8d57600080fd5b820183602082011115610a9f57600080fd5b803590602001918460208302840111600160201b83111715610ac057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610b0f57600080fd5b820183602082011115610b2157600080fd5b803590602001918460208302840111600160201b83111715610b4257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506126cc945050505050565b610303612a8a565b610303612a90565b610325612a96565b610ba0612af7565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610bdc578181015183820152602001610bc4565b505050509050019250505060405180910390f35b610303612b58565b6103c660048036036040811015610c0e57600080fd5b506001600160a01b038135169060200135612b5e565b6102c060048036036020811015610c3a57600080fd5b50356001600160a01b0316612bc6565b6103c660048036036040811015610c6057600080fd5b506001600160a01b038135169060200135612c36565b610303612c4a565b61030360048036036020811015610c9457600080fd5b50356001600160a01b0316612c98565b61030360048036036020811015610cba57600080fd5b50351515612d63565b6103c660048036036020811015610cd957600080fd5b50356001600160a01b0316612ff3565b6102ca613010565b61030360048036036020811015610d0757600080fd5b503561301f565b6102c060048036036020811015610d2457600080fd5b50356001600160a01b031661303d565b6103c660048036036020811015610d4a57600080fd5b50356130a7565b61030360048036036020811015610d6757600080fd5b50356130bb565b6103036130cd565b61030360048036036040811015610d8c57600080fd5b506001600160a01b03813581169160200135166130d3565b6102c060048036036020811015610dba57600080fd5b50356130fe565b610ba06131ca565b6103c660048036036020811015610ddf57600080fd5b5035613221565b610dee6133ba565b6040805192835260208301919091528051918290030190f35b6103036133c4565b610e1761347a565b60405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610e5f578181015183820152602001610e47565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610e9e578181015183820152602001610e86565b50505050905001848103825285818151815260200191508051906020019060200280838360005b83811015610edd578181015183820152602001610ec5565b50505050905001965050505050505060405180910390f35b61032561375a565b60d060009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4b57600080fd5b505afa158015610f5f573d6000803e3d6000fd5b505050506040513d6020811015610f7557600080fd5b50516001600160a01b0316331480610fa55750610f90612165565b6001600160a01b0316336001600160a01b0316145b80610fc85750610fb361145a565b6001600160a01b0316336001600160a01b0316145b6110035760405162461bcd60e51b81526004018080602001828103825260248152602001806145d26024913960400191505060405180910390fd5b61100c816130a7565b611053576040805162461bcd60e51b8152602060048201526013602482015272185cdcd95d081b9bdd081cdd5c1c1bdc9d1959606a1b604482015290519081900360640190fd5b600081815260d3602052604090205460ff16156110a15760405162461bcd60e51b815260040180806020018281038252602281526020018061458a6022913960400191505060405180910390fd5b6110aa81613221565b151560011415611171576110bd81611ebb565b6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561110957600080fd5b505afa15801561111d573d6000803e3d6000fd5b505050506040513d602081101561113357600080fd5b5051156111715760405162461bcd60e51b81526004018080602001828103825260218152602001806145256021913960400191505060405180910390fd5b61117a816137bb565b50565b60cd5461010090046001600160a01b031681565b60cf54604080516321f8a72160e01b81526c45786368616e6765526174657360981b600482015290516000926001600160a01b0316916321f8a721916024808301926020929190829003018186803b1580156111ec57600080fd5b505afa158015611200573d6000803e3d6000fd5b505050506040513d602081101561121657600080fd5b50516001600160a01b031663654a60ac8361123081611ebb565b6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561127c57600080fd5b505afa158015611290573d6000803e3d6000fd5b505050506040513d60208110156112a657600080fd5b5051604080516001600160e01b031960e086901b16815260048101939093526024830191909152631cd554d160e21b6044830152516064808301926020929190829003018186803b1580156112fa57600080fd5b505afa15801561130e573d6000803e3d6000fd5b505050506040513d602081101561132457600080fd5b505190505b919050565b60cf546001600160a01b031681565b60688054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156113c95780601f1061139e576101008083540402835291602001916113c9565b820191906000526020600020905b8154815290600101906020018083116113ac57829003601f168201915b5050505050905090565b60006113e76113e06138bb565b84846138bf565b5060015b92915050565b6097546001600160a01b0316331461143f576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b61144881612ff3565b6114515761117a565b61117a816139ab565b609b546001600160a01b031690565b60675490565b60606000806000606060008060008060008060008060d060009054906101000a90046001600160a01b03166001600160a01b031663b7a54526306040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050604080518083038186803b1580156114e557600080fd5b505afa1580156114f9573d6000803e3d6000fd5b505050506040513d604081101561150f57600080fd5b50805160209091015190925090506000600161152961133d565b611531611469565b611539612c4a565b611541612165565b61154961375a565b60ce5460cd60009054906101000a900460ff168a8a8a8a9e509e509e509e509e509e509e509e509e509e509e5050505050909192939495969798999a565b60d85481565b600061159a848484613aa4565b61160a846115a66138bb565b61160585604051806060016040528060288152602001614617602891396001600160a01b038a166000908152606660205260408120906115e46138bb565b6001600160a01b031681526020810191909152604001600020549190613bef565b6138bf565b5060019392505050565b60d56020526000908152604090205481565b60d8541561166d576040805162461bcd60e51b815260206004820152600f60248201526e119d5b990819195c1c9958d85d1959608a1b604482015290519081900360640190fd5b806116773361261b565b10156116b45760405162461bcd60e51b81526004018080602001828103825260238152602001806146ee6023913960400191505060405180910390fd5b6116bd33612c98565b15611701576040805162461bcd60e51b815260206004820152600f60248201526e636f6f6c646f776e2061637469766560881b604482015290519081900360640190fd5b600061170d6000612d63565b9050600061172c61171c611469565b6117268585613c86565b90613cdf565b9050600061174d61173b611469565b61172686670de0b6b3a7640000613c86565b90506117593385613d1e565b60d15460005b818110156118af57600061178960d1838154811061177957fe5b9060005260206000200154611ebb565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156117da57600080fd5b505afa1580156117ee573d6000803e3d6000fd5b505050506040513d602081101561180457600080fd5b505190506000611820670de0b6b3a76400006117268489613c86565b905080156118a4576040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b0385169163a9059cbb9160448083019260209291908290030181600087803b15801561187757600080fd5b505af115801561188b573d6000803e3d6000fd5b505050506040513d60208110156118a157600080fd5b50505b50505060010161175f565b507f79d44cc8beeed36226f14818b2ecaca7ef252bcd56c9ae35f5a86869dbdefb97303385886118de3361261b565b6118e88a8a613e08565b6118f0611469565b604080516001600160a01b039889168152969097166020870152858701949094526060850192909252608084015260a083015260c08201524260e08201529051908190036101000190a15050505050565b606a5460ff1690565b60006113e76119576138bb565b8461160585606660006119686138bb565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490613e4a565b60d05460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b1580156119dd57600080fd5b505afa1580156119f1573d6000803e3d6000fd5b505050506040513d6020811015611a0757600080fd5b505160d85490915015611a56576040805162461bcd60e51b8152602060048201526012602482015271105b1c9958591e4819195c1c9958d85d195960721b604482015290519081900360640190fd5b6001600160a01b0381163314611aa0576040805162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6000611aaa6126a2565b90506000611abe631cd554d160e21b611ebb565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611b0f57600080fd5b505afa158015611b23573d6000803e3d6000fd5b505050506040513d6020811015611b3957600080fd5b505160d884905560d05460408051638da5cb5b60e01b815290519293506001600160a01b038086169363a9059cbb9390911691638da5cb5b916004808301926020929190829003018186803b158015611b9157600080fd5b505afa158015611ba5573d6000803e3d6000fd5b505050506040513d6020811015611bbb57600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482018590525160448083019260209291908290030181600087803b158015611c0b57600080fd5b505af1158015611c1f573d6000803e3d6000fd5b505050506040513d6020811015611c3557600080fd5b5051611c7a576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b604080518281526020810185905281517f2d05fbcd358ca1228bd9f8cfd8e1e31d25c5199e4f31b1426796d06890ec599c929181900390910190a150505050565b60d154606090819081816001600160401b0381118015611cda57600080fd5b50604051908082528060200260200182016040528015611d04578160200160208202803683370190505b5090506060826001600160401b0381118015611d1f57600080fd5b50604051908082528060200260200182016040528015611d49578160200160208202803683370190505b5060cf54604080516321f8a72160e01b81526822bc31b430b733b2b960b91b600482015290519293506000926001600160a01b03909216916321f8a72191602480820192602092909190829003018186803b158015611da757600080fd5b505afa158015611dbb573d6000803e3d6000fd5b505050506040513d6020811015611dd157600080fd5b5051905060005b84811015611eaf57600060d18281548110611def57fe5b9060005260206000200154905080858381518110611e0957fe5b602090810291909101810191909152604080516301670a7b60e21b81523060048201526024810184905290516001600160a01b0386169263059c29ec9260448082019391829003018186803b158015611e6157600080fd5b505afa158015611e75573d6000803e3d6000fd5b505050506040513d6020811015611e8b57600080fd5b50518451859084908110611e9b57fe5b602090810291909101015250600101611dd8565b50919450925050509091565b60cf54604080516321f8a72160e01b8152680a6f2dce8d0cae8d2f60bb1b6004820152905160009283926001600160a01b03909116916321f8a72191602480820192602092909190829003018186803b158015611f1757600080fd5b505afa158015611f2b573d6000803e3d6000fd5b505050506040513d6020811015611f4157600080fd5b505160408051633260803960e01b81526004810186905290516001600160a01b0390921691633260803991602480820192602092909190829003018186803b158015611f8c57600080fd5b505afa158015611fa0573d6000803e3d6000fd5b505050506040513d6020811015611fb657600080fd5b505190506001600160a01b038116612003576040805162461bcd60e51b815260206004820152600b60248201526a696e76616c6964206b657960a81b604482015290519081900360640190fd5b6000816001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b15801561203e57600080fd5b505afa158015612052573d6000803e3d6000fd5b505050506040513d602081101561206857600080fd5b505190506001600160a01b0381166120b7576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c69642070726f787960981b604482015290519081900360640190fd5b9392505050565b6097546001600160a01b0316331461210c576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b60005b81518110156121615761213482828151811061212757fe5b6020026020010151612ff3565b61213d57612159565b61215982828151811061214c57fe5b60200260200101516139ab565b60010161210f565b5050565b6097546001600160a01b031690565b80518251146121ba576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081a5b9c1d5d609a1b604482015290519081900360640190fd5b60cf54604080516321f8a72160e01b815273223cb730b6b4b1a9bcb73a342932b232b2b6b2b960611b60048201819052915191926000926001600160a01b03909116916321f8a721916024808301926020929190829003018186803b15801561222257600080fd5b505afa158015612236573d6000803e3d6000fd5b505050506040513d602081101561224c57600080fd5b505190506001600160a01b0381166122a0576040805162461bcd60e51b81526020600482015260126024820152711c995919595b595c881b9bdd08199bdd5b9960721b604482015290519081900360640190fd5b60005b8451811015612434576122c88482815181106122bb57fe5b60200260200101516130a7565b1561242c57816001600160a01b03166395a2251f8683815181106122e857fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561232f57600080fd5b505af1158015612343573d6000803e3d6000fd5b5050505084818151811061235357fe5b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156123a757600080fd5b505afa1580156123bb573d6000803e3d6000fd5b505050506040513d60208110156123d157600080fd5b505115801561240b575060d360008583815181106123eb57fe5b60209081029190910181015182528101919091526040016000205460ff16155b1561242c5761242c84828151811061241f57fe5b60200260200101516137bb565b6001016122a3565b5050505050565b6097546001600160a01b03163314612489576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b609780546001600160a01b0319166001600160a01b03841617905580516124b790609890602084019061446e565b507f6ed15082ad038474841528b5badca105106d4463e44b5d434130dfb299aa3669828260405180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561252757818101518382015260200161250f565b50505050905090810190601f1680156125545780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b60cd5460ff1681565b60d36020526000908152604090205460ff1681565b6097546001600160a01b031633146125d2576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b60005b8151811015612161576125ed82828151811061212757fe5b156125f757612613565b61261382828151811061260657fe5b6020026020010151613ea2565b6001016125d5565b6001600160a01b031660009081526065602052604090205490565b60d45481565b60d75481565b6097546001600160a01b03163314612690576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b609b80546001600160a01b0319169055565b6000806126ad612c4a565b905060006126b9611469565b90506126c58282613efe565b9250505090565b8051825114612712576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081a5b9c1d5d609a1b604482015290519081900360640190fd5b60cf54604080516321f8a72160e01b81526c29bcb73a342932b232b2b6b2b960991b60048201819052915191926000926001600160a01b03909116916321f8a721916024808301926020929190829003018186803b15801561277357600080fd5b505afa158015612787573d6000803e3d6000fd5b505050506040513d602081101561279d57600080fd5b5051905060005b8451811015612434576127bc8482815181106122bb57fe5b15612a82576000826001600160a01b0316639bc3f2698784815181106127de57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561282357600080fd5b505afa158015612837573d6000803e3d6000fd5b505050506040513d602081101561284d57600080fd5b50511161289b576040805162461bcd60e51b81526020600482015260176024820152761cde5b9d1a081a5cc81b9bdd0819195c1c9958d85d1959604a1b604482015290519081900360640190fd5b60008582815181106128a957fe5b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156128fd57600080fd5b505afa158015612911573d6000803e3d6000fd5b505050506040513d602081101561292757600080fd5b505111156129aa57816001600160a01b03166395a2251f86838151811061294a57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561299157600080fd5b505af11580156129a5573d6000803e3d6000fd5b505050505b8481815181106129b657fe5b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612a0a57600080fd5b505afa158015612a1e573d6000803e3d6000fd5b505050506040513d6020811015612a3457600080fd5b5051158015612a6e575060d36000858381518110612a4e57fe5b60209081029190910181015182528101919091526040016000205460ff16155b15612a8257612a8284828151811061241f57fe5b6001016127a4565b60d65481565b60d15490565b60698054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156113c95780601f1061139e576101008083540402835291602001916113c9565b606060998054806020026020016040519081016040528092919081815260200182805480156113c957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612b31575050505050905090565b60995490565b60006113e7612b6b6138bb565b84611605856040518060600160405280602581526020016146c96025913960666000612b956138bb565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190613bef565b6097546001600160a01b03163314612c14576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b609b80546001600160a01b0319166001600160a01b0392909216919091179055565b60006113e7612c436138bb565b8484613aa4565b60d1546000908190815b81811015612c9057612c86612c7f60d18381548110612c6f57fe5b9060005260206000200154611191565b8490613e4a565b9250600101612c54565b509091505090565b60008060d060009054906101000a90046001600160a01b03166001600160a01b031663eda96ea96040518163ffffffff1660e01b815260040160206040518083038186803b158015612ce957600080fd5b505afa158015612cfd573d6000803e3d6000fd5b505050506040513d6020811015612d1357600080fd5b50516001600160a01b038416600090815260d5602052604081205491925090612d3c9083613e4a565b905042811015612d5157600092505050611329565b612d5b8142613e08565b949350505050565b6000612d6e82613f2e565b6000612d78612c4a565b90506000612d84611469565b60d05460408051635bd2a29360e11b8152306004820152815193945060009384936001600160a01b03169263b7a545269260248082019391829003018186803b158015612dd057600080fd5b505afa158015612de4573d6000803e3d6000fd5b505050506040513d6040811015612dfa57600080fd5b50805160209091015160d4549193509150600090612e1d9086908690868661425b565b90506064811015612e35578495505050505050611329565b60d05460408051631d68702d60e01b815290516000926001600160a01b031691631d68702d916004808301926020929190829003018186803b158015612e7a57600080fd5b505afa158015612e8e573d6000803e3d6000fd5b505050506040513d6020811015612ea457600080fd5b505160d0546040805163272b69b960e21b8152815193945060009384936001600160a01b031692639cada6e49260048082019391829003018186803b158015612eec57600080fd5b505afa158015612f00573d6000803e3d6000fd5b505050506040513d6040811015612f1657600080fd5b50805160209091015190925090506000612f34826117268786613c86565b90506000612f428683613e08565b90508115612f5457612f5485836142cc565b8015612f6b57612f6b612f65612165565b826142cc565b612f758a8a613efe565b60d4557f755a8059d66d8d243bc9f6913f429a811f154599d0538bb0b6a2ac23f23d2ccd30612fa2612165565b60d454604080516001600160a01b0394851681529290931660208301528183018a9052606082018690526080820185905260a082015290519081900360c00190a150979a9950505050505050505050565b6001600160a01b03166000908152609a6020526040902054151590565b60d0546001600160a01b031681565b60d1818154811061302c57fe5b600091825260209091200154905081565b6097546001600160a01b0316331461308b576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b61309481612ff3565b1561309e5761117a565b61117a81613ea2565b600090815260d26020526040902054151590565b60d26020526000908152604090205481565b60ce5481565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b60d0546001600160a01b0316331461314d576040805162461bcd60e51b815260206004820152600d60248201526c3737903832b936b4b9b9b4b7b760991b604482015290519081900360640190fd5b80600114156131815760cf80546001600160a01b031916734e3b31eb0e5cb73641ee1e65e7dcefe520ba3ef217905561117a565b6040805162461bcd60e51b81526020600482015260196024820152781d5c19dc985919481a185b991b195c881b9bdd08199bdd5b99603a1b604482015290519081900360640190fd5b606060d18054806020026020016040519081016040528092919081815260200182805480156113c957602002820191906000526020600020905b815481526020019060010190808311613204575050505050905090565b60cf54604080516321f8a72160e01b8152680a6f2dce8d0cae8d2f60bb1b6004820152905160009283926001600160a01b03909116916321f8a72191602480820192602092909190829003018186803b15801561327d57600080fd5b505afa158015613291573d6000803e3d6000fd5b505050506040513d60208110156132a757600080fd5b505160408051633260803960e01b81526004810186905290516001600160a01b0390921691633260803991602480820192602092909190829003018186803b1580156132f257600080fd5b505afa158015613306573d6000803e3d6000fd5b505050506040513d602081101561331c57600080fd5b505190506001600160a01b038116613338576000915050611329565b6000816001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b15801561337357600080fd5b505afa158015613387573d6000803e3d6000fd5b505050506040513d602081101561339d57600080fd5b505190506001600160a01b03811661160a57600092505050611329565b60d65460d7549091565b6000806133cf612c4a565b905060006133db611469565b60d05460408051635bd2a29360e11b8152306004820152815193945060009384936001600160a01b03169263b7a545269260248082019391829003018186803b15801561342757600080fd5b505afa15801561343b573d6000803e3d6000fd5b505050506040513d604081101561345157600080fd5b50805160209091015160d45491935091506134719085908590858561425b565b94505050505090565b60d1546060908190819081816001600160401b038111801561349b57600080fd5b506040519080825280602002602001820160405280156134c5578160200160208202803683370190505b5090506060826001600160401b03811180156134e057600080fd5b5060405190808252806020026020018201604052801561350a578160200160208202803683370190505b5090506060836001600160401b038111801561352557600080fd5b5060405190808252806020026020018201604052801561354f578160200160208202803683370190505b5060cf54604080516321f8a72160e01b81526c45786368616e6765526174657360981b600482015290519293506000926001600160a01b03909216916321f8a72191602480820192602092909190829003018186803b1580156135b157600080fd5b505afa1580156135c5573d6000803e3d6000fd5b505050506040513d60208110156135db57600080fd5b5051905060005b8581101561374c57600060d182815481106135f957fe5b9060005260206000200154905061360f81611ebb565b6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561365b57600080fd5b505afa15801561366f573d6000803e3d6000fd5b505050506040513d602081101561368557600080fd5b5051855186908490811061369557fe5b602002602001018181525050808683815181106136ae57fe5b602002602001018181525050826001600160a01b031663ac82f608826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156136fe57600080fd5b505afa158015613712573d6000803e3d6000fd5b505050506040513d602081101561372857600080fd5b5051845185908490811061373857fe5b6020908102919091010152506001016135e2565b509297919650945092505050565b60988054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156113c95780601f1061139e576101008083540402835291602001916113c9565b60d154600082815260d260205260408120546137d8906001613e08565b9050600060d16137e9846001613e08565b815481106137f357fe5b906000526020600020015490508060d1838154811061380e57fe5b600091825260209091200155613825826001613e4a565b600082815260d26020526040808220929092558581529081205560d180548061384a57fe5b600190038181906000526020600020016000905590557f241d622959843ef6d15b4517709d11e054e1c06a2733f7773837c3d2377d8a893061388a612165565b604080516001600160a01b03938416815291909216602082015280820187905290519081900360600190a150505050565b3390565b6001600160a01b0383166139045760405162461bcd60e51b81526004018080602001828103825260248152602001806146a56024913960400191505060405180910390fd5b6001600160a01b0382166139495760405162461bcd60e51b81526004018080602001828103825260228152602001806145686022913960400191505060405180910390fd5b6001600160a01b03808416600081815260666020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6099546001600160a01b0382166000908152609a60205260408120546139d2906001613e08565b9050600060996139e3846001613e08565b815481106139ed57fe5b600091825260209091200154609980546001600160a01b039092169250829184908110613a1657fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055613a4a826001613e4a565b6001600160a01b038083166000908152609a6020526040808220939093559086168152908120556099805480613a7c57fe5b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6001600160a01b038316613ae95760405162461bcd60e51b81526004018080602001828103825260258152602001806146806025913960400191505060405180910390fd5b6001600160a01b038216613b2e5760405162461bcd60e51b81526004018080602001828103825260238152602001806145026023913960400191505060405180910390fd5b613b398383836143ac565b613b76816040518060600160405280602681526020016145ac602691396001600160a01b0386166000908152606560205260409020549190613bef565b6001600160a01b038085166000908152606560205260408082209390935590841681522054613ba59082613e4a565b6001600160a01b03808416600081815260656020908152604091829020949094558051858152905191939287169260008051602061463f83398151915292918290030190a3505050565b60008184841115613c7e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613c43578181015183820152602001613c2b565b50505050905090810190601f168015613c705780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082613c95575060006113eb565b82820282848281613ca257fe5b04146120b75760405162461bcd60e51b81526004018080602001828103825260218152602001806145f66021913960400191505060405180910390fd5b60006120b783836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250614409565b6001600160a01b038216613d635760405162461bcd60e51b815260040180806020018281038252602181526020018061465f6021913960400191505060405180910390fd5b613d6f826000836143ac565b613dac81604051806060016040528060228152602001614546602291396001600160a01b0385166000908152606560205260409020549190613bef565b6001600160a01b038316600090815260656020526040902055606754613dd29082613e08565b6067556040805182815290516000916001600160a01b0385169160008051602061463f8339815191529181900360200190a35050565b60006120b783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613bef565b6000828201838110156120b7576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b609980546001810182557f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000180546001600160a01b039093166001600160a01b031990931683179055546000918252609a602052604090912055565b6000811580613f0b575082155b15613f18575060006113eb565b6120b78261172685670de0b6b3a7640000613c86565b60cf54604080516321f8a72160e01b8152680a6f2dce8d0cae8d2f60bb1b600482015290516000926001600160a01b0316916321f8a721916024808301926020929190829003018186803b158015613f8557600080fd5b505afa158015613f99573d6000803e3d6000fd5b505050506040513d6020811015613faf57600080fd5b505160cf54604080516321f8a72160e01b81526b53797374656d53746174757360a01b600482015290519293506000926001600160a01b03909216916321f8a72191602480820192602092909190829003018186803b15801561401157600080fd5b505afa158015614025573d6000803e3d6000fd5b505050506040513d602081101561403b57600080fd5b505160d15490915060005b8181101561243457600061406060d1838154811061177957fe5b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156140b157600080fd5b505afa1580156140c5573d6000803e3d6000fd5b505050506040513d60208110156140db57600080fd5b50519050801561425157856001600160a01b031663987757dd60d1858154811061410157fe5b90600052602060002001546040518263ffffffff1660e01b815260040180828152602001915050606060405180830381600087803b15801561414257600080fd5b505af1158015614156573d6000803e3d6000fd5b505050506040513d606081101561416c57600080fd5b50508615614251576000856001600160a01b031663e91e691860d1868154811061419257fe5b90600052602060002001546040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b1580156141d057600080fd5b505afa1580156141e4573d6000803e3d6000fd5b505050506040513d60408110156141fa57600080fd5b50519050801561424f576040805162461bcd60e51b815260206004820152601b60248201527a1c995c5d5a5c995908185cdcd95d081a5cc81cdd5cdc195b991959602a1b604482015290519081900360640190fd5b505b5050600101614046565b6000841580614268575085155b15614275575060006142c3565b600061428d8661172689670de0b6b3a7640000613c86565b90508481116142a05760009150506142c3565b60006142be826117268681896142b88d81878f613e08565b90613c86565b925050505b95945050505050565b6001600160a01b038216614327576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b614333600083836143ac565b6067546143409082613e4a565b6067556001600160a01b0382166000908152606560205260409020546143669082613e4a565b6001600160a01b038316600081815260656020908152604080832094909455835185815293519293919260008051602061463f8339815191529281900390910190a35050565b6143b7838383614404565b6143c083612c98565b15614404576040805162461bcd60e51b815260206004820152600f60248201526e636f6f6c646f776e2061637469766560881b604482015290519081900360640190fd5b505050565b600081836144585760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613c43578181015183820152602001613c2b565b50600083858161446457fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106144af57805160ff19168380011785556144dc565b828001600101855582156144dc579182015b828111156144dc5782518255916020019190600101906144c1565b506144e89291506144ec565b5090565b5b808211156144e857600081556001016144ed56fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573736e6f6e2d656d7074792061737365742063616e6e6f742062652072656d6f76656445524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737370657273697374656e74206173736574732063616e27742062652072656d6f76656445524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63656f6e6c79206d616e616765722c20747261646572206f722050726f746f636f6c2044414f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f696e73756666696369656e742062616c616e6365206f662066756e6420746f6b656e73a26469706673582212201639b39db9ad53a2926154e44bff1dda3d6878eb1d5e626a509b18500d66f6c464736f6c634300060c0033