0x608060405234801561001057600080fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005600281905550600f6003819055506207a1206004819055506000600560006101000a81548160ff021916908315150217905550611451806100ea6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063be9a65551461003b578063efbe1c1c14610045575b600080fd5b61004361004f565b005b61004d610154565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146100df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100d690610a6e565b60405180910390fd5b600560009054906101000a900460ff161561012f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012690610ada565b60405180910390fd5b6001600560006101000a81548160ff021916908315150217905550610152610250565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101db90610a6e565b60405180910390fd5b600560009054906101000a900460ff16610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022a90610b46565b60405180910390fd5b6000600560006101000a81548160ff021916908315150217905550565b5b600560009054906101000a900460ff16156102cb5760004390506000610276826102cd565b905060005b818110156102c35760008061029085846102e5565b9150915061029e8282610622565b156102ae576102ad82826107a4565b5b505080806102bb90610b9f565b91505061027b565b505050610251565b565b60008143146102dc57456102de565b425b9050919050565b6102ed610952565b6102f5610989565b6102fd610952565b610305610989565b606060004173ffffffffffffffffffffffffffffffffffffffff16635702f8398989604051602401610338929190610bf6565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516103869190610c90565b600060405180830381855afa9150503d80600081146103c1576040519150601f19603f3d011682016040523d82523d6000602084013e6103c6565b606091505b5080935081925050508061040f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040690610d19565b60405180910390fd5b818060200190518101906104239190610f0e565b866000018760200188604001839052838152508373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505050504173ffffffffffffffffffffffffffffffffffffffff16634a474ee08989604051602401610498929190610bf6565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516104e69190610c90565b600060405180830381855afa9150503d8060008114610521576040519150601f19603f3d011682016040523d82523d6000602084013e610526565b606091505b5080935081925050508061056f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056690610fef565b60405180910390fd5b81806020019051810190610583919061100f565b88600001896020018a6040018b6060018c6080018d60a00186815250868152508673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508681525086815250505050505050838395509550505050509250929050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f846080015161066f86610853565b6040518363ffffffff1660e01b815260040161068c92919061116c565b600060405180830381865afa1580156106a9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906106d29190611264565b90506000816001815181106106ea576106e96112ad565b5b6020026020010151905060006064600354606461070791906112dc565b836107129190611310565b61071c9190611381565b905060008560a001518361073091906112dc565b90506064600f87608001516107459190611310565b61074f9190611381565b8111156107955760008660a001518461076891906112dc565b90508281101580156107805750600454876000015111155b156107935760019550505050505061079e565b505b60009450505050505b92915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d79582608001518360a001516107f385610853565b866000015186602001516040518663ffffffff1660e01b815260040161081d9594939291906113c1565b600060405180830381600087803b15801561083757600080fd5b505af115801561084b573d6000803e3d6000fd5b505050505050565b60606000600267ffffffffffffffff81111561087257610871610df2565b5b6040519080825280602002602001820160405280156108a05781602001602082028036833780820191505090505b5090508260400151816000815181106108bc576108bb6112ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082606001518160018151811061090f5761090e6112ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080915050919050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b6040518060c001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b600082825260208201905092915050565b7f4f6e6c792074686520636f6e7472616374206f776e65722063616e2063616c6c60008201527f20746869732066756e6374696f6e2e0000000000000000000000000000000000602082015250565b6000610a58602f836109eb565b9150610a63826109fc565b604082019050919050565b60006020820190508181036000830152610a8781610a4b565b9050919050565b7f54686520626f7420697320616c72656164792072756e6e696e672e0000000000600082015250565b6000610ac4601b836109eb565b9150610acf82610a8e565b602082019050919050565b60006020820190508181036000830152610af381610ab7565b9050919050565b7f54686520626f74206973206e6f742072756e6e696e672e000000000000000000600082015250565b6000610b306017836109eb565b9150610b3b82610afa565b602082019050919050565b60006020820190508181036000830152610b5f81610b23565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000610baa82610b95565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610bdc57610bdb610b66565b5b600182019050919050565b610bf081610b95565b82525050565b6000604082019050610c0b6000830185610be7565b610c186020830184610be7565b9392505050565b600081519050919050565b600081905092915050565b60005b83811015610c53578082015181840152602081019050610c38565b60008484015250505050565b6000610c6a82610c1f565b610c748185610c2a565b9350610c84818560208601610c35565b80840191505092915050565b6000610c9c8284610c5f565b915081905092915050565b7f4661696c656420746f206665746368207472616e73616374696f6e20696e707560008201527f7420646174612e00000000000000000000000000000000000000000000000000602082015250565b6000610d036027836109eb565b9150610d0e82610ca7565b604082019050919050565b60006020820190508181036000830152610d3281610cf6565b9050919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d7882610d4d565b9050919050565b610d8881610d6d565b8114610d9357600080fd5b50565b600081519050610da581610d7f565b92915050565b610db481610b95565b8114610dbf57600080fd5b50565b600081519050610dd181610dab565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610e2a82610de1565b810181811067ffffffffffffffff82111715610e4957610e48610df2565b5b80604052505050565b6000610e5c610d39565b9050610e688282610e21565b919050565b600067ffffffffffffffff821115610e8857610e87610df2565b5b610e9182610de1565b9050602081019050919050565b6000610eb1610eac84610e6d565b610e52565b905082815260208101848484011115610ecd57610ecc610ddc565b5b610ed8848285610c35565b509392505050565b600082601f830112610ef557610ef4610dd7565b5b8151610f05848260208601610e9e565b91505092915050565b600080600060608486031215610f2757610f26610d43565b5b6000610f3586828701610d96565b9350506020610f4686828701610dc2565b925050604084015167ffffffffffffffff811115610f6757610f66610d48565b5b610f7386828701610ee0565b9150509250925092565b7f4661696c656420746f206665746368207472616e73616374696f6e206465746160008201527f696c7320646174612e0000000000000000000000000000000000000000000000602082015250565b6000610fd96029836109eb565b9150610fe482610f7d565b604082019050919050565b6000602082019050818103600083015261100881610fcc565b9050919050565b60008060008060008060c0878903121561102c5761102b610d43565b5b600061103a89828a01610dc2565b965050602061104b89828a01610dc2565b955050604061105c89828a01610d96565b945050606061106d89828a01610d96565b935050608061107e89828a01610dc2565b92505060a061108f89828a01610dc2565b9150509295509295509295565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006110d382610d4d565b9050919050565b6110e3816110c8565b82525050565b60006110f583836110da565b60208301905092915050565b6000602082019050919050565b60006111198261109c565b61112381856110a7565b935061112e836110b8565b8060005b8381101561115f57815161114688826110e9565b975061115183611101565b925050600181019050611132565b5085935050505092915050565b60006040820190506111816000830185610be7565b8181036020830152611193818461110e565b90509392505050565b600067ffffffffffffffff8211156111b7576111b6610df2565b5b602082029050602081019050919050565b600080fd5b60006111e06111db8461119c565b610e52565b90508083825260208201905060208402830185811115611203576112026111c8565b5b835b8181101561122c57806112188882610dc2565b845260208401935050602081019050611205565b5050509392505050565b600082601f83011261124b5761124a610dd7565b5b815161125b8482602086016111cd565b91505092915050565b60006020828403121561127a57611279610d43565b5b600082015167ffffffffffffffff81111561129857611297610d48565b5b6112a484828501611236565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006112e782610b95565b91506112f283610b95565b925082820390508181111561130a57611309610b66565b5b92915050565b600061131b82610b95565b915061132683610b95565b925082820261133481610b95565b9150828204841483151761134b5761134a610b66565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061138c82610b95565b915061139783610b95565b9250826113a7576113a6611352565b5b828204905092915050565b6113bb816110c8565b82525050565b600060a0820190506113d66000830188610be7565b6113e36020830187610be7565b81810360408301526113f5818661110e565b905061140460608301856113b2565b6114116080830184610be7565b969550505050505056fea2646970667358221220f7941eb13a45b03e64fe8381c49ef40a82d348b1ea9adb361baa0cf0c280d6f464736f6c63430008120033