0x60806040523480156200001157600080fd5b506040516200191e3803806200191e833981810160405281019062000037919062000323565b6040518060400160405280600581526020017f4d757261690000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4d5552000000000000000000000000000000000000000000000000000000000081525069d3c21bcecceda10000008260049081620000bf9190620005cf565b508160059081620000d19190620005cf565b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200012581336200012f60201b60201c565b50505050620007f3565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620001c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b99062000717565b60405180910390fd5b620001d660008284620002b460201b60201c565b81600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000227919062000768565b925050819055508160008082825462000241919062000768565b925050819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051620002a89190620007d6565b60405180910390a35050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002eb82620002be565b9050919050565b620002fd81620002de565b81146200030957600080fd5b50565b6000815190506200031d81620002f2565b92915050565b6000602082840312156200033c576200033b620002b9565b5b60006200034c848285016200030c565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003d757607f821691505b602082108103620003ed57620003ec6200038f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000418565b62000463868362000418565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004b0620004aa620004a4846200047b565b62000485565b6200047b565b9050919050565b6000819050919050565b620004cc836200048f565b620004e4620004db82620004b7565b84845462000425565b825550505050565b600090565b620004fb620004ec565b62000508818484620004c1565b505050565b5b81811015620005305762000524600082620004f1565b6001810190506200050e565b5050565b601f8211156200057f576200054981620003f3565b620005548462000408565b8101602085101562000564578190505b6200057c620005738562000408565b8301826200050d565b50505b505050565b600082821c905092915050565b6000620005a46000198460080262000584565b1980831691505092915050565b6000620005bf838362000591565b9150826002028217905092915050565b620005da8262000355565b67ffffffffffffffff811115620005f657620005f562000360565b5b620006028254620003be565b6200060f82828562000534565b600060209050601f83116001811462000647576000841562000632578287015190505b6200063e8582620005b1565b865550620006ae565b601f1984166200065786620003f3565b60005b8281101562000681578489015182556001820191506020850194506020810190506200065a565b86831015620006a157848901516200069d601f89168262000591565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f6e6f7420616e206f776e65722100000000000000000000000000000000000000600082015250565b6000620006ff600d83620006b6565b91506200070c82620006c7565b602082019050919050565b600060208201905081810360008301526200073281620006f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000775826200047b565b915062000782836200047b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620007ba57620007b962000739565b5b828201905092915050565b620007d0816200047b565b82525050565b6000602082019050620007ed6000830184620007c5565b92915050565b61111b80620008036000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806370a082311161007157806370a082311461014057806394bf804d1461017057806395d89b411461018c5780639dc29fac146101aa578063a9059cbb146101c6578063dd62ed3e146101e2576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100e857806323b872dd14610106578063313ce56714610122575b600080fd5b6100b6610212565b6040516100c39190610c63565b60405180910390f35b6100e660048036038101906100e19190610d1e565b6102a4565b005b6100f06102b3565b6040516100fd9190610d6d565b60405180910390f35b610120600480360381019061011b9190610d88565b6102bc565b005b61012a61057e565b6040516101379190610d6d565b60405180910390f35b61015a60048036038101906101559190610ddb565b610587565b6040516101679190610d6d565b60405180910390f35b61018a60048036038101906101859190610e08565b6105d0565b005b610194610744565b6040516101a19190610c63565b60405180910390f35b6101c460048036038101906101bf9190610d1e565b6107d6565b005b6101e060048036038101906101db9190610d1e565b6108e4565b005b6101fc60048036038101906101f79190610e48565b610a53565b6040516102099190610d6d565b60405180910390f35b60606004805461022190610eb7565b80601f016020809104026020016040519081016040528092919081815260200182805461024d90610eb7565b801561029a5780601f1061026f5761010080835404028352916020019161029a565b820191906000526020600020905b81548152906001019060200180831161027d57829003601f168201915b5050505050905090565b6102af338383610ada565b5050565b60008054905090565b8281806102c883610587565b1015610309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030090610f34565b60405180910390fd5b610314858585610bc5565b82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156103d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ca90610fa0565b60405180910390fd5b82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045f9190610fef565b9250508190555082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104b59190610fef565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461050b9190611023565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161056f9190610d6d565b60405180910390a35050505050565b60006012905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610660576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610657906110c5565b60405180910390fd5b61066c60008284610bc5565b81600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106bb9190611023565b92505081905550816000808282546106d39190611023565b925050819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107389190610d6d565b60405180910390a35050565b60606005805461075390610eb7565b80601f016020809104026020016040519081016040528092919081815260200182805461077f90610eb7565b80156107cc5780601f106107a1576101008083540402835291602001916107cc565b820191906000526020600020905b8154815290600101906020018083116107af57829003601f168201915b5050505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085d906110c5565b60405180910390fd5b61087282600083610bc5565b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108c19190610fef565b92505081905550806000808282546108d99190610fef565b925050819055505050565b3381806108f083610587565b1015610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092890610f34565b60405180910390fd5b61093c338585610bc5565b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461098b9190610fef565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109e19190611023565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610a459190610d6d565b60405180910390a350505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f6e11fb1b7f119e3f2fa29896ef5fdf8b8a2d0d4df6fe90ba8668e7d8b2ffa25e83604051610bb89190610d6d565b60405180910390a3505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610c04578082015181840152602081019050610be9565b83811115610c13576000848401525b50505050565b6000601f19601f8301169050919050565b6000610c3582610bca565b610c3f8185610bd5565b9350610c4f818560208601610be6565b610c5881610c19565b840191505092915050565b60006020820190508181036000830152610c7d8184610c2a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610cb582610c8a565b9050919050565b610cc581610caa565b8114610cd057600080fd5b50565b600081359050610ce281610cbc565b92915050565b6000819050919050565b610cfb81610ce8565b8114610d0657600080fd5b50565b600081359050610d1881610cf2565b92915050565b60008060408385031215610d3557610d34610c85565b5b6000610d4385828601610cd3565b9250506020610d5485828601610d09565b9150509250929050565b610d6781610ce8565b82525050565b6000602082019050610d826000830184610d5e565b92915050565b600080600060608486031215610da157610da0610c85565b5b6000610daf86828701610cd3565b9350506020610dc086828701610cd3565b9250506040610dd186828701610d09565b9150509250925092565b600060208284031215610df157610df0610c85565b5b6000610dff84828501610cd3565b91505092915050565b60008060408385031215610e1f57610e1e610c85565b5b6000610e2d85828601610d09565b9250506020610e3e85828601610cd3565b9150509250929050565b60008060408385031215610e5f57610e5e610c85565b5b6000610e6d85828601610cd3565b9250506020610e7e85828601610cd3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610ecf57607f821691505b602082108103610ee257610ee1610e88565b5b50919050565b7f6e6f7420656e6f75676820746f6b656e73210000000000000000000000000000600082015250565b6000610f1e601283610bd5565b9150610f2982610ee8565b602082019050919050565b60006020820190508181036000830152610f4d81610f11565b9050919050565b7f636865636b20616c6c6f77616e63652100000000000000000000000000000000600082015250565b6000610f8a601083610bd5565b9150610f9582610f54565b602082019050919050565b60006020820190508181036000830152610fb981610f7d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ffa82610ce8565b915061100583610ce8565b92508282101561101857611017610fc0565b5b828203905092915050565b600061102e82610ce8565b915061103983610ce8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561106e5761106d610fc0565b5b828201905092915050565b7f6e6f7420616e206f776e65722100000000000000000000000000000000000000600082015250565b60006110af600d83610bd5565b91506110ba82611079565b602082019050919050565b600060208201905081810360008301526110de816110a2565b905091905056fea264697066735822122055ffec4a9800d0f3f8e78e6d579e72d0695c575874ab240244159e0e13e9b1a764736f6c634300080f0033000000000000000000000000adbb7bc27c2432f9b5af8989faf824a80962d4de