60806040526b204fce5e3e2502611000000060005534801561002057600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005460016000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60005460405161014c9190610172565b60405180910390a361018d565b6000819050919050565b61016c81610159565b82525050565b60006020820190506101876000830184610163565b92915050565b61107d8061019c6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806370a082311161007157806370a0823114610168578063715018a6146101985780638da5cb5b146101a257806395d89b41146101c0578063a9059cbb146101de578063dd62ed3e1461020e576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b661023e565b6040516100c39190610aac565b60405180910390f35b6100e660048036038101906100e19190610b67565b610277565b6040516100f39190610bc2565b60405180910390f35b61010461028e565b6040516101119190610bec565b60405180910390f35b610134600480360381019061012f9190610c07565b610297565b6040516101419190610bc2565b60405180910390f35b610152610341565b60405161015f9190610c76565b60405180910390f35b610182600480360381019061017d9190610c91565b610346565b60405161018f9190610bec565b60405180910390f35b6101a061038f565b005b6101aa6104e0565b6040516101b79190610ccd565b60405180910390f35b6101c8610506565b6040516101d59190610aac565b60405180910390f35b6101f860048036038101906101f39190610b67565b61053f565b6040516102059190610bc2565b60405180910390f35b61022860048036038101906102239190610ce8565b610556565b6040516102359190610bec565b60405180910390f35b6040518060400160405280600781526020017f4d49434841454c0000000000000000000000000000000000000000000000000081525081565b60006102843384846105dd565b6001905092915050565b60008054905090565b60006102a48484846107a6565b610336843384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546103319190610d57565b6105dd565b600190509392505050565b601281565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461041f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041690610dd7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600781526020017f4d49434841454c0000000000000000000000000000000000000000000000000081525081565b600061054c3384846107a6565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390610e43565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b290610eaf565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107999190610bec565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080c90610f1b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087b90610f87565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fd90610ff3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109559190610d57565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109ab9190611013565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a0f9190610bec565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610a56578082015181840152602081019050610a3b565b60008484015250505050565b6000601f19601f8301169050919050565b6000610a7e82610a1c565b610a888185610a27565b9350610a98818560208601610a38565b610aa181610a62565b840191505092915050565b60006020820190508181036000830152610ac68184610a73565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610afe82610ad3565b9050919050565b610b0e81610af3565b8114610b1957600080fd5b50565b600081359050610b2b81610b05565b92915050565b6000819050919050565b610b4481610b31565b8114610b4f57600080fd5b50565b600081359050610b6181610b3b565b92915050565b60008060408385031215610b7e57610b7d610ace565b5b6000610b8c85828601610b1c565b9250506020610b9d85828601610b52565b9150509250929050565b60008115159050919050565b610bbc81610ba7565b82525050565b6000602082019050610bd76000830184610bb3565b92915050565b610be681610b31565b82525050565b6000602082019050610c016000830184610bdd565b92915050565b600080600060608486031215610c2057610c1f610ace565b5b6000610c2e86828701610b1c565b9350506020610c3f86828701610b1c565b9250506040610c5086828701610b52565b9150509250925092565b600060ff82169050919050565b610c7081610c5a565b82525050565b6000602082019050610c8b6000830184610c67565b92915050565b600060208284031215610ca757610ca6610ace565b5b6000610cb584828501610b1c565b91505092915050565b610cc781610af3565b82525050565b6000602082019050610ce26000830184610cbe565b92915050565b60008060408385031215610cff57610cfe610ace565b5b6000610d0d85828601610b1c565b9250506020610d1e85828601610b1c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610d6282610b31565b9150610d6d83610b31565b9250828203905081811115610d8557610d84610d28565b5b92915050565b7f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b6000610dc1601783610a27565b9150610dcc82610d8b565b602082019050919050565b60006020820190508181036000830152610df081610db4565b9050919050565b7f417070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b6000610e2d601d83610a27565b9150610e3882610df7565b602082019050919050565b60006020820190508181036000830152610e5c81610e20565b9050919050565b7f417070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b6000610e99601b83610a27565b9150610ea482610e63565b602082019050919050565b60006020820190508181036000830152610ec881610e8c565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000610f05601e83610a27565b9150610f1082610ecf565b602082019050919050565b60006020820190508181036000830152610f3481610ef8565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000610f71601c83610a27565b9150610f7c82610f3b565b602082019050919050565b60006020820190508181036000830152610fa081610f64565b9050919050565b7f5472616e7366657220616d6f756e7420657863656564732062616c616e636500600082015250565b6000610fdd601f83610a27565b9150610fe882610fa7565b602082019050919050565b6000602082019050818103600083015261100c81610fd0565b9050919050565b600061101e82610b31565b915061102983610b31565b925082820190508082111561104157611040610d28565b5b9291505056fea26469706673582212202e95efc438560f2ffcfc969ee88f6653501ac0413e68386c283e9c9d72b4b34f64736f6c63430008180033