60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d2565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000175565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620000ec5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e39190620001b5565b60405180910390a15b565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60006200015d602783620000ee565b91506200016a82620000ff565b604082019050919050565b6000602082019050818103600083015262000190816200014e565b9050919050565b600060ff82169050919050565b620001af8162000197565b82525050565b6000602082019050620001cc6000830184620001a4565b92915050565b611f7880620001e26000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063a457c2d711610066578063a457c2d71461028b578063a9059cbb146102bb578063dd62ed3e146102eb578063f2fde38b1461031b57610100565b8063715018a61461023b5780638129fc1c146102455780638da5cb5b1461024f57806395d89b411461026d57610100565b8063313ce567116100d3578063313ce567146101a157806339509351146101bf57806340c10f19146101ef57806370a082311461020b57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d610337565b60405161011a919061129a565b60405180910390f35b61013d60048036038101906101389190611355565b6103c9565b60405161014a91906113b0565b60405180910390f35b61015b6103ec565b60405161016891906113da565b60405180910390f35b61018b600480360381019061018691906113f5565b6103f6565b60405161019891906113b0565b60405180910390f35b6101a9610425565b6040516101b69190611464565b60405180910390f35b6101d960048036038101906101d49190611355565b61042e565b6040516101e691906113b0565b60405180910390f35b61020960048036038101906102049190611355565b610465565b005b6102256004803603810190610220919061147f565b610473565b60405161023291906113da565b60405180910390f35b6102436104bc565b005b61024d6104d0565b005b610257610682565b60405161026491906114bb565b60405180910390f35b6102756106ac565b604051610282919061129a565b60405180910390f35b6102a560048036038101906102a09190611355565b61073e565b6040516102b291906113b0565b60405180910390f35b6102d560048036038101906102d09190611355565b6107b5565b6040516102e291906113b0565b60405180910390f35b610305600480360381019061030091906114d6565b6107d8565b60405161031291906113da565b60405180910390f35b6103356004803603810190610330919061147f565b61085f565b005b60606036805461034690611545565b80601f016020809104026020016040519081016040528092919081815260200182805461037290611545565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b6000806103d46108e2565b90506103e18185856108ea565b600191505092915050565b6000603554905090565b6000806104016108e2565b905061040e858285610ab3565b610419858585610b3f565b60019150509392505050565b60006006905090565b6000806104396108e2565b905061045a81858561044b85896107d8565b61045591906115a5565b6108ea565b600191505092915050565b61046f8282610db8565b5050565b6000603360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6104c4610f0f565b6104ce6000610f8d565b565b60008060019054906101000a900460ff161590508080156105015750600160008054906101000a900460ff1660ff16105b8061052e575061051030611053565b15801561052d5750600160008054906101000a900460ff1660ff16145b5b61056d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105649061164b565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156105aa576001600060016101000a81548160ff0219169083151502179055505b61061e6040518060400160405280600a81526020017f55534420546574686572000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5553445400000000000000000000000000000000000000000000000000000000815250611076565b6106266110d3565b801561067f5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161067691906116b0565b60405180910390a15b50565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060603780546106bb90611545565b80601f01602080910402602001604051908101604052809291908181526020018280546106e790611545565b80156107345780601f1061070957610100808354040283529160200191610734565b820191906000526020600020905b81548152906001019060200180831161071757829003601f168201915b5050505050905090565b6000806107496108e2565b9050600061075782866107d8565b90508381101561079c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107939061173d565b60405180910390fd5b6107a982868684036108ea565b60019250505092915050565b6000806107c06108e2565b90506107cd818585610b3f565b600191505092915050565b6000603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610867610f0f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cd906117cf565b60405180910390fd5b6108df81610f8d565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610959576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095090611861565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bf906118f3565b60405180910390fd5b80603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610aa691906113da565b60405180910390a3505050565b6000610abf84846107d8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b395781811015610b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b229061195f565b60405180910390fd5b610b3884848484036108ea565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba5906119f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1490611a83565b60405180910390fd5b610c2883838361112c565b6000603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca690611b15565b60405180910390fd5b818103603360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d9f91906113da565b60405180910390a3610db2848484611131565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1e90611b81565b60405180910390fd5b610e336000838361112c565b8060356000828254610e4591906115a5565b9250508190555080603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ef791906113da565b60405180910390a3610f0b60008383611131565b5050565b610f176108e2565b73ffffffffffffffffffffffffffffffffffffffff16610f35610682565b73ffffffffffffffffffffffffffffffffffffffff1614610f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8290611bed565b60405180910390fd5b565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166110c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bc90611c7f565b60405180910390fd5b6110cf8282611136565b5050565b600060019054906101000a900460ff16611122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111990611c7f565b60405180910390fd5b61112a6111a9565b565b505050565b505050565b600060019054906101000a900460ff16611185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117c90611c7f565b60405180910390fd5b81603690816111949190611e70565b5080603790816111a49190611e70565b505050565b600060019054906101000a900460ff166111f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ef90611c7f565b60405180910390fd5b6112086112036108e2565b610f8d565b565b600081519050919050565b600082825260208201905092915050565b60005b83811015611244578082015181840152602081019050611229565b60008484015250505050565b6000601f19601f8301169050919050565b600061126c8261120a565b6112768185611215565b9350611286818560208601611226565b61128f81611250565b840191505092915050565b600060208201905081810360008301526112b48184611261565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112ec826112c1565b9050919050565b6112fc816112e1565b811461130757600080fd5b50565b600081359050611319816112f3565b92915050565b6000819050919050565b6113328161131f565b811461133d57600080fd5b50565b60008135905061134f81611329565b92915050565b6000806040838503121561136c5761136b6112bc565b5b600061137a8582860161130a565b925050602061138b85828601611340565b9150509250929050565b60008115159050919050565b6113aa81611395565b82525050565b60006020820190506113c560008301846113a1565b92915050565b6113d48161131f565b82525050565b60006020820190506113ef60008301846113cb565b92915050565b60008060006060848603121561140e5761140d6112bc565b5b600061141c8682870161130a565b935050602061142d8682870161130a565b925050604061143e86828701611340565b9150509250925092565b600060ff82169050919050565b61145e81611448565b82525050565b60006020820190506114796000830184611455565b92915050565b600060208284031215611495576114946112bc565b5b60006114a38482850161130a565b91505092915050565b6114b5816112e1565b82525050565b60006020820190506114d060008301846114ac565b92915050565b600080604083850312156114ed576114ec6112bc565b5b60006114fb8582860161130a565b925050602061150c8582860161130a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061155d57607f821691505b6020821081036115705761156f611516565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115b08261131f565b91506115bb8361131f565b92508282019050808211156115d3576115d2611576565b5b92915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000611635602e83611215565b9150611640826115d9565b604082019050919050565b6000602082019050818103600083015261166481611628565b9050919050565b6000819050919050565b6000819050919050565b600061169a6116956116908461166b565b611675565b611448565b9050919050565b6116aa8161167f565b82525050565b60006020820190506116c560008301846116a1565b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611727602583611215565b9150611732826116cb565b604082019050919050565b600060208201905081810360008301526117568161171a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006117b9602683611215565b91506117c48261175d565b604082019050919050565b600060208201905081810360008301526117e8816117ac565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061184b602483611215565b9150611856826117ef565b604082019050919050565b6000602082019050818103600083015261187a8161183e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006118dd602283611215565b91506118e882611881565b604082019050919050565b6000602082019050818103600083015261190c816118d0565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611949601d83611215565b915061195482611913565b602082019050919050565b600060208201905081810360008301526119788161193c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006119db602583611215565b91506119e68261197f565b604082019050919050565b60006020820190508181036000830152611a0a816119ce565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611a6d602383611215565b9150611a7882611a11565b604082019050919050565b60006020820190508181036000830152611a9c81611a60565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611aff602683611215565b9150611b0a82611aa3565b604082019050919050565b60006020820190508181036000830152611b2e81611af2565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611b6b601f83611215565b9150611b7682611b35565b602082019050919050565b60006020820190508181036000830152611b9a81611b5e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611bd7602083611215565b9150611be282611ba1565b602082019050919050565b60006020820190508181036000830152611c0681611bca565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000611c69602b83611215565b9150611c7482611c0d565b604082019050919050565b60006020820190508181036000830152611c9881611c5c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611d307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611cf3565b611d3a8683611cf3565b95508019841693508086168417925050509392505050565b6000611d6d611d68611d638461131f565b611675565b61131f565b9050919050565b6000819050919050565b611d8783611d52565b611d9b611d9382611d74565b848454611d00565b825550505050565b600090565b611db0611da3565b611dbb818484611d7e565b505050565b5b81811015611ddf57611dd4600082611da8565b600181019050611dc1565b5050565b601f821115611e2457611df581611cce565b611dfe84611ce3565b81016020851015611e0d578190505b611e21611e1985611ce3565b830182611dc0565b50505b505050565b600082821c905092915050565b6000611e4760001984600802611e29565b1980831691505092915050565b6000611e608383611e36565b9150826002028217905092915050565b611e798261120a565b67ffffffffffffffff811115611e9257611e91611c9f565b5b611e9c8254611545565b611ea7828285611de3565b600060209050601f831160018114611eda5760008415611ec8578287015190505b611ed28582611e54565b865550611f3a565b601f198416611ee886611cce565b60005b82811015611f1057848901518255600182019150602085019450602081019050611eeb565b86831015611f2d5784890151611f29601f891682611e36565b8355505b6001600288020188555050505b50505050505056fea2646970667358221220cdecf4dbd2cdd07571b7a4441d93ca82315ea9fd1e13eca9e13df1f52a89b42264736f6c63430008120033