60806040526040518060400160405280600a81526020017f427567732042756e6e79000000000000000000000000000000000000000000008152505f90816100479190610367565b506040518060400160405280600481526020017f42554753000000000000000000000000000000000000000000000000000000008152506001908161008c9190610367565b50601260025f6101000a81548160ff021916908360ff16021790555060025f9054906101000a900460ff1660ff16600a6100c69190610592565b633b9aca006100d591906105dc565b6003553480156100e3575f80fd5b5060035460045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061061d565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806101a857607f821691505b6020821081036101bb576101ba610164565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261021d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826101e2565b61022786836101e2565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61026b6102666102618461023f565b610248565b61023f565b9050919050565b5f819050919050565b61028483610251565b61029861029082610272565b8484546101ee565b825550505050565b5f90565b6102ac6102a0565b6102b781848461027b565b505050565b5b818110156102da576102cf5f826102a4565b6001810190506102bd565b5050565b601f82111561031f576102f0816101c1565b6102f9846101d3565b81016020851015610308578190505b61031c610314856101d3565b8301826102bc565b50505b505050565b5f82821c905092915050565b5f61033f5f1984600802610324565b1980831691505092915050565b5f6103578383610330565b9150826002028217905092915050565b6103708261012d565b67ffffffffffffffff81111561038957610388610137565b5b6103938254610191565b61039e8282856102de565b5f60209050601f8311600181146103cf575f84156103bd578287015190505b6103c7858261034c565b86555061042e565b601f1984166103dd866101c1565b5f5b82811015610404578489015182556001820191506020850194506020810190506103df565b86831015610421578489015161041d601f891682610330565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104b85780860481111561049457610493610436565b5b60018516156104a35780820291505b80810290506104b185610463565b9450610478565b94509492505050565b5f826104d0576001905061058b565b816104dd575f905061058b565b81600181146104f357600281146104fd5761052c565b600191505061058b565b60ff84111561050f5761050e610436565b5b8360020a91508482111561052657610525610436565b5b5061058b565b5060208310610133831016604e8410600b84101617156105615782820a90508381111561055c5761055b610436565b5b61058b565b61056e848484600161046f565b9250905081840481111561058557610584610436565b5b81810290505b9392505050565b5f61059c8261023f565b91506105a78361023f565b92506105d47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104c1565b905092915050565b5f6105e68261023f565b91506105f18361023f565b92508282026105ff8161023f565b9150828204841483151761061657610615610436565b5b5092915050565b610b718061062a5f395ff3fe608060405234801561000f575f80fd5b506004361061007b575f3560e01c806342966c681161005957806342966c68146100d957806370a08231146100f557806395d89b4114610125578063a9059cbb146101435761007b565b806306fdde031461007f57806318160ddd1461009d578063313ce567146100bb575b5f80fd5b610087610173565b604051610094919061073f565b60405180910390f35b6100a56101fe565b6040516100b29190610777565b60405180910390f35b6100c3610204565b6040516100d091906107ab565b60405180910390f35b6100f360048036038101906100ee91906107f2565b610216565b005b61010f600480360381019061010a9190610877565b6103f9565b60405161011c9190610777565b60405180910390f35b61012d61043f565b60405161013a919061073f565b60405180910390f35b61015d600480360381019061015891906108a2565b6104cb565b60405161016a91906108fa565b60405180910390f35b5f805461017f90610940565b80601f01602080910402602001604051908101604052809291908181526020018280546101ab90610940565b80156101f65780601f106101cd576101008083540402835291602001916101f6565b820191905f5260205f20905b8154815290600101906020018083116101d957829003601f168201915b505050505081565b60035481565b60025f9054906101000a900460ff1681565b5f8111610258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024f906109ba565b60405180910390fd5b8060045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156102d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102cf90610a22565b60405180910390fd5b8060045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546103249190610a6d565b925050819055508060035f82825461033c9190610a6d565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040516103899190610777565b60405180910390a25f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103ee9190610777565b60405180910390a350565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6001805461044c90610940565b80601f016020809104026020016040519081016040528092919081815260200182805461047890610940565b80156104c35780601f1061049a576101008083540402835291602001916104c3565b820191905f5260205f20905b8154815290600101906020018083116104a657829003601f168201915b505050505081565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361053a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053190610aea565b60405180910390fd5b8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156105ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b190610a22565b60405180910390fd5b8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546106069190610a6d565b925050819055508160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546106599190610b08565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106bd9190610777565b60405180910390a36001905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610711826106cf565b61071b81856106d9565b935061072b8185602086016106e9565b610734816106f7565b840191505092915050565b5f6020820190508181035f8301526107578184610707565b905092915050565b5f819050919050565b6107718161075f565b82525050565b5f60208201905061078a5f830184610768565b92915050565b5f60ff82169050919050565b6107a581610790565b82525050565b5f6020820190506107be5f83018461079c565b92915050565b5f80fd5b6107d18161075f565b81146107db575f80fd5b50565b5f813590506107ec816107c8565b92915050565b5f60208284031215610807576108066107c4565b5b5f610814848285016107de565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108468261081d565b9050919050565b6108568161083c565b8114610860575f80fd5b50565b5f813590506108718161084d565b92915050565b5f6020828403121561088c5761088b6107c4565b5b5f61089984828501610863565b91505092915050565b5f80604083850312156108b8576108b76107c4565b5b5f6108c585828601610863565b92505060206108d6858286016107de565b9150509250929050565b5f8115159050919050565b6108f4816108e0565b82525050565b5f60208201905061090d5f8301846108eb565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061095757607f821691505b60208210810361096a57610969610913565b5b50919050565b7f416d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f6109a4601d836106d9565b91506109af82610970565b602082019050919050565b5f6020820190508181035f8301526109d181610998565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f610a0c6014836106d9565b9150610a17826109d8565b602082019050919050565b5f6020820190508181035f830152610a3981610a00565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a778261075f565b9150610a828361075f565b9250828203905081811115610a9a57610a99610a40565b5b92915050565b7f5472616e7366657220746f20746865207a65726f2061646472657373000000005f82015250565b5f610ad4601c836106d9565b9150610adf82610aa0565b602082019050919050565b5f6020820190508181035f830152610b0181610ac8565b9050919050565b5f610b128261075f565b9150610b1d8361075f565b9250828201905080821115610b3557610b34610a40565b5b9291505056fea2646970667358221220a4cf6abd7120f5a443dde8a6cd29e256ea9ed372f851bbe843a41309f90ba41764736f6c63430008190033