0x608060405234801561001057600080fd5b50610bef806100206000396000f3fe6080604052600436106100295760003560e01c8063dc6e0f671461002e578063f9dbd6fc14610043575b600080fd5b61004161003c366004610739565b610056565b005b61004161005136600461086f565b61030e565b6040805160808101825260008082526060602083018190529282015281810191909152731d1499e622d69689cdf9004d05ec547d650ff211906060806000875167ffffffffffffffff8111156100ae576100ae610612565b6040519080825280602002602001820160405280156100e157816020015b60608152602001906001900390816100cc5790505b50905060005b885181101561029a57856001600160a01b031663f8d12a418a8381518110610111576101116108fc565b60200260200101516040518263ffffffff1660e01b815260040161013791815260200190565b600060405180830381865afa158015610154573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261017c91908101906109af565b9450846040015130898381518110610196576101966108fc565b602002602001015160018a85815181106101b2576101b26108fc565b60200260200101516040516024016101cd9493929190610a6f565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509350856001600160a01b03168460405161021a9190610ac2565b6000604051808303816000865af19150503d8060008114610257576040519150601f19603f3d011682016040523d82523d6000602084013e61025c565b606091505b50935061026a905083610464565b82828151811061027c5761027c6108fc565b6020026020010181905250808061029290610af4565b9150506100e7565b50606060005b89518110156102f957818382815181106102bc576102bc6108fc565b60200260200101516040516020016102d5929190610b0f565b604051602081830303815290604052915080806102f190610af4565b9150506102a0565b5061030381610485565b505050505050505050565b60405163f8d12a4160e01b8152600481018690527399988277635242579f21df0e3efd4a1134ff4fab90600090829063f8d12a4190602401600060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261038b91908101906109af565b90506000816040015130888888886040516024016103ad959493929190610b3e565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000836001600160a01b0316826040516103fc9190610ac2565b6000604051808303816000865af19150503d8060008114610439576040519150601f19603f3d011682016040523d82523d6000602084013e61043e565b606091505b50915050600061044d82610464565b905061045881610485565b50505050505050505050565b606061047f8260406047855161047a9190610b8a565b6104fe565b92915050565b805160205b818110156104f9578083015160f81c6001820184015160601c6015830185015160358401860151605585018701600085600081146104cf5760018114610029576104db565b6000808585888a5af191505b50806104e657600080fd5b505080605501850194505050505061048a565b505050565b60608161050c81601f610ba1565b10156105505760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064015b60405180910390fd5b61055a8284610ba1565b8451101561059e5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610547565b6060821580156105bd5760405191506000825260208201604052610607565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156105f65780518352602092830192016105de565b5050858452601f01601f1916604052505b5090505b9392505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561064b5761064b610612565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561067a5761067a610612565b604052919050565b600067ffffffffffffffff82111561069c5761069c610612565b5060051b60200190565b600082601f8301126106b757600080fd5b813560206106cc6106c783610682565b610651565b82815260059290921b840181019181810190868411156106eb57600080fd5b8286015b8481101561070657803583529183019183016106ef565b509695505050505050565b600067ffffffffffffffff82111561072b5761072b610612565b50601f01601f191660200190565b60008060006060848603121561074e57600080fd5b833567ffffffffffffffff8082111561076657600080fd5b610772878388016106a6565b945060209150818601358181111561078957600080fd5b610795888289016106a6565b945050604080870135828111156107ab57600080fd5b8701601f810189136107bc57600080fd5b80356107ca6106c782610682565b81815260059190911b8201850190858101908b8311156107e957600080fd5b8684015b8381101561085d578035878111156108055760008081fd5b8501603f81018e136108175760008081fd5b888101356108276106c782610711565b8181528f8983850101111561083c5760008081fd5b818984018c83013760009181018b01919091528452509187019187016107ed565b50809750505050505050509250925092565b60008060008060006080868803121561088757600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff808211156108b457600080fd5b818801915088601f8301126108c857600080fd5b8135818111156108d757600080fd5b8960208285010111156108e957600080fd5b9699959850939650602001949392505050565b634e487b7160e01b600052603260045260246000fd5b60005b8381101561092d578181015183820152602001610915565b8381111561093c576000848401525b50505050565b60006109506106c784610711565b905082815283838301111561096457600080fd5b61060b836020830184610912565b80516001600160e01b03198116811461098a57600080fd5b919050565b600082601f8301126109a057600080fd5b61060b83835160208501610942565b6000602082840312156109c157600080fd5b815167ffffffffffffffff808211156109d957600080fd5b90830190608082860312156109ed57600080fd5b6109f5610628565b82518152602083015182811115610a0b57600080fd5b8301601f81018713610a1c57600080fd5b610a2b87825160208401610942565b602083015250610a3d60408401610972565b6040820152606083015182811115610a5457600080fd5b610a608782860161098f565b60608301525095945050505050565b60018060a01b038516815283602082015260ff831660408201526080606082015260008251806080840152610aab8160a0850160208701610912565b601f01601f19169190910160a00195945050505050565b60008251610ad4818460208701610912565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415610b0857610b08610ade565b5060010190565b60008351610b21818460208801610912565b835190830190610b35818360208801610912565b01949350505050565b60018060a01b038616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b600082821015610b9c57610b9c610ade565b500390565b60008219821115610bb457610bb4610ade565b50019056fea2646970667358221220005e022d8dd2fb7ae19ee7f72abed28d64e70f48bba2cc5169616f5ca095a9cc64736f6c634300080a0033