0x608060405234801561001057600080fd5b506108f3806100206000396000f3fe60806040526004361061003f5760003560e01c806327e235e3146100445780632e1a7d4d14610081578063a9059cbb146100aa578063d0e30db0146100d3575b600080fd5b34801561005057600080fd5b5061006b600480360381019061006691906105b1565b6100dd565b60405161007891906105f7565b60405180910390f35b34801561008d57600080fd5b506100a860048036038101906100a3919061063e565b6100f5565b005b3480156100b657600080fd5b506100d160048036038101906100cc919061066b565b610263565b005b6100db6104a9565b005b60006020528060005260406000206000915090505481565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016d90610708565b60405180910390fd5b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546101c49190610757565b925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610211573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161025891906105f7565b60405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c9906107d7565b60405180910390fd5b60008111610315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030c90610869565b60405180910390fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038d90610708565b60405180910390fd5b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103e49190610757565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104399190610889565b925050819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161049d91906105f7565b60405180910390a35050565b346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104f79190610889565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c3460405161054491906105f7565b60405180910390a2565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061057e82610553565b9050919050565b61058e81610573565b811461059957600080fd5b50565b6000813590506105ab81610585565b92915050565b6000602082840312156105c7576105c661054e565b5b60006105d58482850161059c565b91505092915050565b6000819050919050565b6105f1816105de565b82525050565b600060208201905061060c60008301846105e8565b92915050565b61061b816105de565b811461062657600080fd5b50565b60008135905061063881610612565b92915050565b6000602082840312156106545761065361054e565b5b600061066284828501610629565b91505092915050565b600080604083850312156106825761068161054e565b5b60006106908582860161059c565b92505060206106a185828601610629565b9150509250929050565b600082825260208201905092915050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b60006106f26014836106ab565b91506106fd826106bc565b602082019050919050565b60006020820190508181036000830152610721816106e5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610762826105de565b915061076d836105de565b925082820390508181111561078557610784610728565b5b92915050565b7f496e76616c696420726563697069656e74206164647265737300000000000000600082015250565b60006107c16019836106ab565b91506107cc8261078b565b602082019050919050565b600060208201905081810360008301526107f0816107b4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006108536029836106ab565b915061085e826107f7565b604082019050919050565b6000602082019050818103600083015261088281610846565b9050919050565b6000610894826105de565b915061089f836105de565b92508282019050808211156108b7576108b6610728565b5b9291505056fea2646970667358221220d551642d82a25207a9220c12501f8191c608ecb638a486fd36edc0ba915f47d664736f6c63430008120033