0x60a060405234801561001057600080fd5b503373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505060805160601c610ff161007d6000398060f9528061021552806102a352806102fb5280610334528061039a5250610ff16000f3fe60806040526004361061004e5760003560e01c80632a2fea2d1461005a578063644697131461008a5780638d702122146100a65780639c3d91e8146100bd578063cffc2a2d146100d957610055565b3661005557005b600080fd5b610074600480360381019061006f91906109fd565b6100f5565b6040516100819190610d3e565b60405180910390f35b6100a4600480360381019061009f9190610b27565b610213565b005b3480156100b257600080fd5b506100bb6102a1565b005b6100d760048036038101906100d29190610a69565b610332565b005b6100f360048036038101906100ee9190610b27565b610398565b005b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461014f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561018957600080fd5b600060608673ffffffffffffffffffffffffffffffffffffffff168686866040516101b5929190610cca565b60006040518083038185875af1925050503d80600081146101f2576040519150601f19603f3d011682016040523d82523d6000602084013e6101f7565b606091505b50915091508161020657600080fd5b8092505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461026b57600080fd5b610275828261056f565b60008514156102835761029a565b610290848487010161062f565b61029983610716565b5b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102f957600080fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16ff5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461038a57600080fd5b610394828261056f565b5050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103f057600080fd5b600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161043f9190610cfa565b60206040518083038186803b15801561045757600080fd5b505afa15801561046b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048f9190610afe565b905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb846000815181106104ce57fe5b6020026020010151886040518363ffffffff1660e01b81526004016104f4929190610d15565b602060405180830381600087803b15801561050e57600080fd5b505af1158015610522573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105469190610ad5565b50610551838361056f565b61055e858583010161062f565b61056784610716565b505050505050565b60005b825181101561062a576000606084838151811061058b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168484815181106105b557fe5b60200260200101516040516105ca9190610ce3565b6000604051808303816000865af19150503d8060008114610607576040519150601f19603f3d011682016040523d82523d6000602084013e61060c565b606091505b50915091508161061b57600080fd5b50508080600101915050610572565b505050565b600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161067e9190610cfa565b60206040518083038186803b15801561069657600080fd5b505afa1580156106aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ce9190610afe565b9050818111610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070990610d60565b60405180910390fd5b5050565b6000811415610724576107fc565b6000479050818110156107b35773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d8284036040518263ffffffff1660e01b81526004016107809190610d80565b600060405180830381600087803b15801561079a57600080fd5b505af11580156107ae573d6000803e3d6000fd5b505050505b4173ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156107f9573d6000803e3d6000fd5b50505b50565b60008135905061080e81610f5f565b92915050565b60008135905061082381610f76565b92915050565b600082601f83011261083a57600080fd5b813561084d61084882610dc8565b610d9b565b9150818183526020840193506020810190508385602084028201111561087257600080fd5b60005b838110156108a2578161088888826107ff565b845260208401935060208301925050600181019050610875565b5050505092915050565b600082601f8301126108bd57600080fd5b81356108d06108cb82610df0565b610d9b565b9150818183526020840193506020810190508360005b8381101561091657813586016108fc888261097f565b8452602084019350602083019250506001810190506108e6565b5050505092915050565b60008151905061092f81610f8d565b92915050565b60008083601f84011261094757600080fd5b8235905067ffffffffffffffff81111561096057600080fd5b60208301915083600182028301111561097857600080fd5b9250929050565b600082601f83011261099057600080fd5b81356109a361099e82610e18565b610d9b565b915080825260208301602083018583830111156109bf57600080fd5b6109ca838284610f0c565b50505092915050565b6000813590506109e281610fa4565b92915050565b6000815190506109f781610fa4565b92915050565b60008060008060608587031215610a1357600080fd5b6000610a2187828801610814565b9450506020610a32878288016109d3565b935050604085013567ffffffffffffffff811115610a4f57600080fd5b610a5b87828801610935565b925092505092959194509250565b60008060408385031215610a7c57600080fd5b600083013567ffffffffffffffff811115610a9657600080fd5b610aa285828601610829565b925050602083013567ffffffffffffffff811115610abf57600080fd5b610acb858286016108ac565b9150509250929050565b600060208284031215610ae757600080fd5b6000610af584828501610920565b91505092915050565b600060208284031215610b1057600080fd5b6000610b1e848285016109e8565b91505092915050565b600080600080600060a08688031215610b3f57600080fd5b6000610b4d888289016109d3565b9550506020610b5e888289016109d3565b9450506040610b6f888289016109d3565b935050606086013567ffffffffffffffff811115610b8c57600080fd5b610b9888828901610829565b925050608086013567ffffffffffffffff811115610bb557600080fd5b610bc1888289016108ac565b9150509295509295909350565b610bd781610ed6565b82525050565b610be681610e7c565b82525050565b6000610bf88385610e60565b9350610c05838584610f0c565b82840190509392505050565b6000610c1c82610e44565b610c268185610e4f565b9350610c36818560208601610f1b565b610c3f81610f4e565b840191505092915050565b6000610c5582610e44565b610c5f8185610e60565b9350610c6f818560208601610f1b565b80840191505092915050565b6000610c88600a83610e6b565b91507f6e6f7420656e6f756768000000000000000000000000000000000000000000006000830152602082019050919050565b610cc481610ecc565b82525050565b6000610cd7828486610bec565b91508190509392505050565b6000610cef8284610c4a565b915081905092915050565b6000602082019050610d0f6000830184610bce565b92915050565b6000604082019050610d2a6000830185610bdd565b610d376020830184610cbb565b9392505050565b60006020820190508181036000830152610d588184610c11565b905092915050565b60006020820190508181036000830152610d7981610c7b565b9050919050565b6000602082019050610d956000830184610cbb565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610dbe57600080fd5b8060405250919050565b600067ffffffffffffffff821115610ddf57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115610e0757600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115610e2f57600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610e8782610eac565b9050919050565b6000610e9982610eac565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610ee182610ee8565b9050919050565b6000610ef382610efa565b9050919050565b6000610f0582610eac565b9050919050565b82818337600083830152505050565b60005b83811015610f39578082015181840152602081019050610f1e565b83811115610f48576000848401525b50505050565b6000601f19601f8301169050919050565b610f6881610e7c565b8114610f7357600080fd5b50565b610f7f81610e8e565b8114610f8a57600080fd5b50565b610f9681610ea0565b8114610fa157600080fd5b50565b610fad81610ecc565b8114610fb857600080fd5b5056fea2646970667358221220b0fba21ba3c5a365216ed5a49b3ac6d8c7a5150fea94d9be38fed7f65c2458df64736f6c634300060c0033