0x60a060405234801561000f575f80fd5b50604051610ecc380380610ecc83398101604081905261002e9161003f565b6001600160a01b031660805261006c565b5f6020828403121561004f575f80fd5b81516001600160a01b0381168114610065575f80fd5b9392505050565b608051610e356100975f395f8181608e0152818160e6015281816102e101526104190152610e355ff3fe608060405234801561000f575f80fd5b506004361061004a575f3560e01c806331f570721461004e57806350b1fa6214610063578063639af6d014610089578063d9871088146100c8575b5f80fd5b61006161005c3660046108d2565b6100db565b005b61007661007136600461093e565b6102ca565b6040519081526020015b60405180910390f35b6100b07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610080565b6100766100d636600461093e565b610517565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101245760405163574b16a760e11b815260040160405180910390fd5b5f61013182840184610ac3565b805160808201516040830151929350610154926001600160a01b03169190610546565b5f808260200151600181111561016c5761016c610baa565b0361020f5781516040808401516060850151608086015160a087015160c088015160e08901516101008a01519651636cebb4f960e01b81526001600160a01b0390981697636cebb4f9976101c897969594939291600401610c0b565b6020604051808303815f875af11580156101e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102089190610c5f565b90506102a9565b81516040808401516060850151608086015160a087015160c088015160e08901516101008a0151965163629f5b4f60e01b81526001600160a01b039098169763629f5b4f9761026697969594939291600401610c0b565b6020604051808303815f875af1158015610282573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a69190610c5f565b90505b60405163f0434ca160e01b8152600481018290526024015b60405180910390fd5b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f91908a16906370a0823190602401602060405180830381865afa158015610331573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103559190610c5f565b96505f6040518061012001604052808c6001600160a01b0316815260200160018081111561038557610385610baa565b81526020018b6001600160a01b031681526020018a6001600160a01b03168152602001898152602001886001600160a01b03168152602001878152602001866001600160a01b0316815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509152506040519091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e0232b42908c908b90610452908690602001610c96565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161047f93929190610d5b565b5f604051808303815f87803b158015610496575f80fd5b505af19250505080156104a7575060015b610509573d8080156104d4576040519150601f19603f3d011682016040523d82523d5f602084013e6104d9565b606091505b506104f28160048084516104ed9190610d9f565b61059d565b8060200190518101906105059190610c5f565b9250505b509998505050505050505050565b5f806040518061012001604052808c6001600160a01b031681526020015f600181111561038557610385610baa565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526105989084906106f5565b505050565b6060816105ab81601f610db2565b10156105ea5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016102c1565b826105f58382610db2565b10156106345760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016102c1565b61063e8284610db2565b845110156106825760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016102c1565b6060821580156106a05760405191505f8252602082016040526106ea565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156106d95780518352602092830192016106c1565b5050858452601f01601f1916604052505b5090505b9392505050565b5f6107096001600160a01b03841683610756565b905080515f1415801561072d57508080602001905181019061072b9190610dc5565b155b1561059857604051635274afe760e01b81526001600160a01b03841660048201526024016102c1565b606061076383835f61076c565b90505b92915050565b6060814710156107915760405163cd78605960e01b81523060048201526024016102c1565b5f80856001600160a01b031684866040516107ac9190610de4565b5f6040518083038185875af1925050503d805f81146107e6576040519150601f19603f3d011682016040523d82523d5f602084013e6107eb565b606091505b50915091506107fb868383610805565b9695505050505050565b60608261081a5761081582610861565b6106ee565b815115801561083157506001600160a01b0384163b155b1561085a57604051639996b31560e01b81526001600160a01b03851660048201526024016102c1565b50806106ee565b8051156108715780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b5f8083601f84011261089d575f80fd5b50813567ffffffffffffffff8111156108b4575f80fd5b6020830191508360208285010111156108cb575f80fd5b9250929050565b5f805f604084860312156108e4575f80fd5b83359250602084013567ffffffffffffffff811115610901575f80fd5b61090d8682870161088d565b9497909650939450505050565b6001600160a01b038116811461088a575f80fd5b80356109398161091a565b919050565b5f805f805f805f805f6101008a8c031215610957575f80fd5b89356109628161091a565b985060208a01356109728161091a565b975060408a01356109828161091a565b965060608a0135955060808a01356109998161091a565b945060a08a0135935060c08a01356109b08161091a565b925060e08a013567ffffffffffffffff8111156109cb575f80fd5b6109d78c828d0161088d565b915080935050809150509295985092959850929598565b634e487b7160e01b5f52604160045260245ffd5b604051610120810167ffffffffffffffff81118282101715610a2657610a266109ee565b60405290565b803560028110610939575f80fd5b5f82601f830112610a49575f80fd5b813567ffffffffffffffff80821115610a6457610a646109ee565b604051601f8301601f19908116603f01168101908282118183101715610a8c57610a8c6109ee565b81604052838152866020858801011115610aa4575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60208284031215610ad3575f80fd5b813567ffffffffffffffff80821115610aea575f80fd5b908301906101208286031215610afe575f80fd5b610b06610a02565b610b0f8361092e565b8152610b1d60208401610a2c565b6020820152610b2e6040840161092e565b6040820152610b3f6060840161092e565b606082015260808301356080820152610b5a60a0840161092e565b60a082015260c083013560c0820152610b7560e0840161092e565b60e08201526101008084013583811115610b8d575f80fd5b610b9988828701610a3a565b918301919091525095945050505050565b634e487b7160e01b5f52602160045260245ffd5b5f5b83811015610bd8578181015183820152602001610bc0565b50505f910152565b5f8151808452610bf7816020860160208601610bbe565b601f01601f19169290920160200192915050565b5f6001600160a01b03808a1683528089166020840152876040840152808716606084015285608084015280851660a08401525060e060c0830152610c5260e0830184610be0565b9998505050505050505050565b5f60208284031215610c6f575f80fd5b5051919050565b60028110610c9257634e487b7160e01b5f52602160045260245ffd5b9052565b60208152610cb06020820183516001600160a01b03169052565b5f6020830151610cc36040840182610c76565b5060408301516001600160a01b03811660608401525060608301516001600160a01b038116608084015250608083015160a083015260a0830151610d1260c08401826001600160a01b03169052565b5060c083015160e083015260e0830151610100610d39818501836001600160a01b03169052565b840151610120848101529050610d53610140840182610be0565b949350505050565b6001600160a01b0384168152826020820152606060408201525f610d826060830184610be0565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561076657610766610d8b565b8082018082111561076657610766610d8b565b5f60208284031215610dd5575f80fd5b815180151581146106ee575f80fd5b5f8251610df5818460208701610bbe565b919091019291505056fea26469706673582212206433ad581a0d113f319e683894f8e85ca166185ef01ca8f4ea3d125ffcaff4b864736f6c63430008140033000000000000000000000000bbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb