0x608060405234801561001057600080fd5b50610f9d806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632208ea8e14610051578063254a88aa146100805780638e09851814610093578063a319da84146100a6575b600080fd5b61006461005f3660046108dc565b6100b9565b6040516001600160a01b03909116815260200160405180910390f35b61006461008e3660046108a9565b610132565b6100646100a1366004610932565b610152565b6100646100b43660046108a9565b6101c8565b6000806100d4838760601b6001600160601b031916866101e1565b9050846001600160a01b0316816001600160a01b0316146101285760405162461bcd60e51b81526020600482015260096024820152683130b21031b430b4b760b91b60448201526064015b60405180910390fd5b5092949350505050565b600061014b838360601b6001600160601b031916610494565b9392505050565b60008061016e848860601b6001600160601b0319168786610500565b9050856001600160a01b0316816001600160a01b0316146101bd5760405162461bcd60e51b81526020600482015260096024820152683130b21031b430b4b760b91b604482015260640161011f565b509395945050505050565b600061014b838360601b6001600160601b0319166107c6565b6000806040518061026001604052806102358152602001610d33610235913990506000848251602084016000f590506001600160a01b0381166102565760405162461bcd60e51b815260206004820152600d60248201526c19195c1b1bde4819985a5b1959609a1b604482015260640161011f565b604080516001600160a01b038881166020830152600092908416917fd42afb56d73d6f8480b7bb7cd0deac0a71b3a7f6f12b7ec5248d898b45d851cd910160408051601f19818403018152908290526102b2929160200161099a565b60408051601f19818403018152908290526102cc916109cb565b6000604051808303816000865af19150503d8060008114610309576040519150601f19603f3d011682016040523d82523d6000602084013e61030e565b606091505b50509050806103525760405162461bcd60e51b815260206004820152601060248201526f1cd95d10995858dbdb8819985a5b195960821b604482015260640161011f565b816001600160a01b03167f94bfed88a125d15cc1071806a1de374e1cc916c1261f8b5e9444c151da1cc2ad866040516020016103c791908151815260208083015190820152604080830151908201526060808301516001600160a01b0316908201526080918201519181019190915260a00190565b60408051601f19818403018152908290526103e5929160200161099a565b60408051601f19818403018152908290526103ff916109cb565b6000604051808303816000865af19150503d806000811461043c576040519150601f19603f3d011682016040523d82523d6000602084013e610441565b606091505b5050809150508061048a5760405162461bcd60e51b81526020600482015260136024820152721cd95d081b595d1859185d184819985a5b1959606a1b604482015260640161011f565b5095945050505050565b6000806040518061026001604052806102358152602001610d336102359139805190602001209050600060ff8585846040516020016104d69493929190610a5e565b60408051808303601f1901815291905280516020909101206001600160a01b031695945050505050565b6000806040518061026001604052806102358152602001610afe610235913990506000858251602084016000f590506001600160a01b0381166105755760405162461bcd60e51b815260206004820152600d60248201526c19195c1b1bde4819985a5b1959609a1b604482015260640161011f565b604080516001600160a01b0389811660208301526000928392918516917fd42afb56d73d6f8480b7bb7cd0deac0a71b3a7f6f12b7ec5248d898b45d851cd910160408051601f19818403018152908290526105d3929160200161099a565b60408051601f19818403018152908290526105ed916109cb565b6000604051808303816000865af19150503d806000811461062a576040519150601f19603f3d011682016040523d82523d6000602084013e61062f565b606091505b509150915081816040516020016106469190610a24565b604051602081830303815290604052906106735760405162461bcd60e51b815260040161011f9190610a9a565b506040805160c48082526101008201909252600091602082018180368337019050506080890151909150600090600160f81b9060011a60f81b6001600160f81b03191614905060007f26553567e4c43064361eeb28d95a3abb72f2de87a839b12ab8640140f864686190508060208401528951602484015260208a0151604484015260408a0151606484015260608a015160848401528860a48401528160c4840152856001600160a01b03168360405161072d91906109cb565b6000604051808303816000865af19150503d806000811461076a576040519150601f19603f3d011682016040523d82523d6000602084013e61076f565b606091505b50604051919650945085906107889086906020016109e7565b604051602081830303815290604052906107b55760405162461bcd60e51b815260040161011f9190610a9a565b50949b9a5050505050505050505050565b6000806040518061026001604052806102358152602001610afe6102359139805190602001209050600060ff8585846040516020016104d69493929190610a5e565b80356001600160a01b038116811461081f57600080fd5b919050565b600060a0828403121561083657600080fd5b60405160a0810181811067ffffffffffffffff8211171561086757634e487b7160e01b600052604160045260246000fd5b806040525080915082358152602083013560208201526040830135604082015261089360608401610808565b6060820152608083013560808201525092915050565b600080604083850312156108bc57600080fd5b6108c583610808565b91506108d360208401610808565b90509250929050565b60008060008061010085870312156108f357600080fd5b6108fc85610808565b935061090a60208601610808565b92506109198660408701610824565b915061092760e08601610808565b905092959194509250565b6000806000806000610120868803121561094b57600080fd5b61095486610808565b945061096260208701610808565b93506109718760408801610824565b925061097f60e08701610808565b915061098e6101008701610808565b90509295509295909350565b6001600160e01b03198316815281516000906109bd816004850160208701610acd565b919091016004019392505050565b600082516109dd818460208701610acd565b9190910192915050565b74039b2ba1036b2ba30b230ba30903330b4b632b21d1605d1b815260008251610a17816015850160208701610acd565b9190910160150192915050565b71039b2ba2132b0b1b7b7103330b4b632b21d160751b815260008251610a51816012850160208701610acd565b9190910160120192915050565b60f89490941b6001600160f81b031916845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b6020815260008251806020840152610ab9816040850160208701610acd565b601f01601f19169190910160400192915050565b60005b83811015610ae8578181015183820152602001610ad0565b83811115610af7576000848401525b5050505056fe608060405234801561001057600080fd5b50610215806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d42afb56146100fd575b60008061005960017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d516101a2565b60001b9050805491506000826001600160a01b0316631626425c6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561009f57600080fd5b505af11580156100b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d79190610185565b90503660008037600080366000845af43d6000803e8080156100f8573d6000f35b3d6000fd5b61011061010b366004610161565b610112565b005b60008061014060017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d516101a2565b8054925090506001600160a01b0382161561015a57600080fd5b9190915550565b60006020828403121561017357600080fd5b813561017e816101c7565b9392505050565b60006020828403121561019757600080fd5b815161017e816101c7565b6000828210156101c257634e487b7160e01b600052601160045260246000fd5b500390565b6001600160a01b03811681146101dc57600080fd5b5056fea2646970667358221220d283edebb1e56b63c1cf809c7a7219bbf056c367c289dabb51fdba5f71cdf44c64736f6c63430008060033608060405234801561001057600080fd5b50610215806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d42afb56146100fd575b60008061005960017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d516101a2565b60001b9050805491506000826001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561009f57600080fd5b505af11580156100b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d79190610185565b90503660008037600080366000845af43d6000803e8080156100f8573d6000f35b3d6000fd5b61011061010b366004610161565b610112565b005b60008061014060017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d516101a2565b8054925090506001600160a01b0382161561015a57600080fd5b9190915550565b60006020828403121561017357600080fd5b813561017e816101c7565b9392505050565b60006020828403121561019757600080fd5b815161017e816101c7565b6000828210156101c257634e487b7160e01b600052601160045260246000fd5b500390565b6001600160a01b03811681146101dc57600080fd5b5056fea2646970667358221220e6ae4b3dc2474e43ff609e19eb520ce54b6f38170a43a6f96541360be5efc2b464736f6c63430008060033a26469706673582212204c4a04d220c8e53600f857919fd04adf9e4c2ef10d5948d8e22e90f9639f405364736f6c63430008060033