0x60806040523480156200001157600080fd5b50336040518060400160405280600681526020017f57706f696e7300000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f57504e000000000000000000000000000000000000000000000000000000000081525081600390816200009091906200074e565b508060049081620000a291906200074e565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200011a5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200011191906200087a565b60405180910390fd5b6200012b816200015160201b60201c565b506200014b336c01a40d7ac927e11eedd00000006200021760201b60201c565b6200096c565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200028c5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200028391906200087a565b60405180910390fd5b620002a060008383620002a460201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620002fa578060026000828254620002ed9190620008c6565b92505081905550620003d0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101562000389578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620003809392919062000912565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200041b578060026000828254039250508190555062000468565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004c791906200094f565b60405180910390a3505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200055657607f821691505b6020821081036200056c576200056b6200050e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005d67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000597565b620005e2868362000597565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200062f620006296200062384620005fa565b62000604565b620005fa565b9050919050565b6000819050919050565b6200064b836200060e565b620006636200065a8262000636565b848454620005a4565b825550505050565b600090565b6200067a6200066b565b6200068781848462000640565b505050565b5b81811015620006af57620006a360008262000670565b6001810190506200068d565b5050565b601f821115620006fe57620006c88162000572565b620006d38462000587565b81016020851015620006e3578190505b620006fb620006f28562000587565b8301826200068c565b50505b505050565b600082821c905092915050565b6000620007236000198460080262000703565b1980831691505092915050565b60006200073e838362000710565b9150826002028217905092915050565b6200075982620004d4565b67ffffffffffffffff811115620007755762000774620004df565b5b6200078182546200053d565b6200078e828285620006b3565b600060209050601f831160018114620007c65760008415620007b1578287015190505b620007bd858262000730565b8655506200082d565b601f198416620007d68662000572565b60005b828110156200080057848901518255600182019150602085019450602081019050620007d9565b868310156200082057848901516200081c601f89168262000710565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008628262000835565b9050919050565b620008748162000855565b82525050565b600060208201905062000891600083018462000869565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008d382620005fa565b9150620008e083620005fa565b9250828201905080821115620008fb57620008fa62000897565b5b92915050565b6200090c81620005fa565b82525050565b600060608201905062000929600083018662000869565b62000938602083018562000901565b62000947604083018462000901565b949350505050565b600060208201905062000966600083018462000901565b92915050565b61139d806200097c6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c681161009757806395d89b411161006657806395d89b4114610262578063a9059cbb14610280578063dd62ed3e146102b0578063f2fde38b146102e0576100f5565b806342966c68146101ee57806370a082311461020a578063715018a61461023a5780638da5cb5b14610244576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806332cb6b0c146101b457806340c10f19146101d2576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b6101026102fc565b60405161010f9190610f58565b60405180910390f35b610132600480360381019061012d9190611013565b61038e565b60405161013f919061106e565b60405180910390f35b6101506103b1565b60405161015d9190611098565b60405180910390f35b610180600480360381019061017b91906110b3565b6103bb565b60405161018d919061106e565b60405180910390f35b61019e6103ea565b6040516101ab9190611122565b60405180910390f35b6101bc6103f3565b6040516101c99190611098565b60405180910390f35b6101ec60048036038101906101e79190611013565b610404565b005b6102086004803603810190610203919061113d565b61047c565b005b610224600480360381019061021f919061116a565b610491565b6040516102319190611098565b60405180910390f35b6102426104d9565b005b61024c6104ed565b60405161025991906111a6565b60405180910390f35b61026a610517565b6040516102779190610f58565b60405180910390f35b61029a60048036038101906102959190611013565b6105a9565b6040516102a7919061106e565b60405180910390f35b6102ca60048036038101906102c591906111c1565b6105cc565b6040516102d79190611098565b60405180910390f35b6102fa60048036038101906102f5919061116a565b610653565b005b60606003805461030b90611230565b80601f016020809104026020016040519081016040528092919081815260200182805461033790611230565b80156103845780601f1061035957610100808354040283529160200191610384565b820191906000526020600020905b81548152906001019060200180831161036757829003601f168201915b5050505050905090565b6000806103996106d9565b90506103a68185856106e1565b600191505092915050565b6000600254905090565b6000806103c66106d9565b90506103d38582856106f3565b6103de858585610787565b60019150509392505050565b60006012905090565b6c01a40d7ac927e11eedd000000081565b61040c61087b565b6c01a40d7ac927e11eedd0000000816104236103b1565b61042d9190611290565b111561046e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046590611310565b60405180910390fd5b6104788282610902565b5050565b61048461087b565b61048e3382610984565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6104e161087b565b6104eb6000610a06565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461052690611230565b80601f016020809104026020016040519081016040528092919081815260200182805461055290611230565b801561059f5780601f106105745761010080835404028352916020019161059f565b820191906000526020600020905b81548152906001019060200180831161058257829003601f168201915b5050505050905090565b6000806105b46106d9565b90506105c1818585610787565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61065b61087b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106cd5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016106c491906111a6565b60405180910390fd5b6106d681610a06565b50565b600033905090565b6106ee8383836001610acc565b505050565b60006106ff84846105cc565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107815781811015610771578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161076893929190611330565b60405180910390fd5b61078084848484036000610acc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107f95760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016107f091906111a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361086b5760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161086291906111a6565b60405180910390fd5b610876838383610ca3565b505050565b6108836106d9565b73ffffffffffffffffffffffffffffffffffffffff166108a16104ed565b73ffffffffffffffffffffffffffffffffffffffff1614610900576108c46106d9565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016108f791906111a6565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109745760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161096b91906111a6565b60405180910390fd5b61098060008383610ca3565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109f65760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016109ed91906111a6565b60405180910390fd5b610a0282600083610ca3565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3e5760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610b3591906111a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bb05760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610ba791906111a6565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610c9d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c949190611098565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cf5578060026000828254610ce99190611290565b92505081905550610dc8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d81578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610d7893929190611330565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e115780600260008282540392505081905550610e5e565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ebb9190611098565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610f02578082015181840152602081019050610ee7565b60008484015250505050565b6000601f19601f8301169050919050565b6000610f2a82610ec8565b610f348185610ed3565b9350610f44818560208601610ee4565b610f4d81610f0e565b840191505092915050565b60006020820190508181036000830152610f728184610f1f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610faa82610f7f565b9050919050565b610fba81610f9f565b8114610fc557600080fd5b50565b600081359050610fd781610fb1565b92915050565b6000819050919050565b610ff081610fdd565b8114610ffb57600080fd5b50565b60008135905061100d81610fe7565b92915050565b6000806040838503121561102a57611029610f7a565b5b600061103885828601610fc8565b925050602061104985828601610ffe565b9150509250929050565b60008115159050919050565b61106881611053565b82525050565b6000602082019050611083600083018461105f565b92915050565b61109281610fdd565b82525050565b60006020820190506110ad6000830184611089565b92915050565b6000806000606084860312156110cc576110cb610f7a565b5b60006110da86828701610fc8565b93505060206110eb86828701610fc8565b92505060406110fc86828701610ffe565b9150509250925092565b600060ff82169050919050565b61111c81611106565b82525050565b60006020820190506111376000830184611113565b92915050565b60006020828403121561115357611152610f7a565b5b600061116184828501610ffe565b91505092915050565b6000602082840312156111805761117f610f7a565b5b600061118e84828501610fc8565b91505092915050565b6111a081610f9f565b82525050565b60006020820190506111bb6000830184611197565b92915050565b600080604083850312156111d8576111d7610f7a565b5b60006111e685828601610fc8565b92505060206111f785828601610fc8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061124857607f821691505b60208210810361125b5761125a611201565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061129b82610fdd565b91506112a683610fdd565b92508282019050808211156112be576112bd611261565b5b92915050565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b60006112fa601283610ed3565b9150611305826112c4565b602082019050919050565b60006020820190508181036000830152611329816112ed565b9050919050565b60006060820190506113456000830186611197565b6113526020830185611089565b61135f6040830184611089565b94935050505056fea2646970667358221220b196addf50a71125aad53934ff8a9068e7ec0fdb44bcb842f125aedcd4a8daef64736f6c63430008140033