0x608060405260016000806101000a81548160ff0219169083151502179055503480156200002b57600080fd5b50601260ff16600a6200003f919062000224565b6152086200004e919062000275565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002d6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200012557808604811115620000fd57620000fc62000097565b5b60018516156200010d5780820291505b80810290506200011d85620000c6565b9450620000dd565b94509492505050565b60008262000140576001905062000213565b8162000150576000905062000213565b81600181146200016957600281146200017457620001aa565b600191505062000213565b60ff84111562000189576200018862000097565b5b8360020a915084821115620001a357620001a262000097565b5b5062000213565b5060208310610133831016604e8410600b8410161715620001e45782820a905083811115620001de57620001dd62000097565b5b62000213565b620001f38484846001620000d3565b925090508184048111156200020d576200020c62000097565b5b81810290505b9392505050565b6000819050919050565b600062000231826200021a565b91506200023e836200021a565b92506200026d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200012e565b905092915050565b600062000282826200021a565b91506200028f836200021a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620002cb57620002ca62000097565b5b828202905092915050565b6113d680620002e66000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461017d57806395d89b41146101ad578063a9059cbb146101cb578063af35c6c7146101fb578063bef97c8714610205578063dd62ed3e14610223576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633a67a0f614610173575b600080fd5b6100c1610253565b6040516100ce9190610c09565b60405180910390f35b6100f160048036038101906100ec9190610cc4565b61028c565b6040516100fe9190610d1f565b60405180910390f35b61010f61037e565b60405161011c9190610d49565b60405180910390f35b61013f600480360381019061013a9190610d64565b61039f565b60405161014c9190610d1f565b60405180910390f35b61015d6107bd565b60405161016a9190610dd3565b60405180910390f35b61017b6107c2565b005b61019760048036038101906101929190610dee565b6107de565b6040516101a49190610d49565b60405180910390f35b6101b5610827565b6040516101c29190610c09565b60405180910390f35b6101e560048036038101906101e09190610cc4565b610860565b6040516101f29190610d1f565b60405180910390f35b610203610abc565b005b61020d610ad8565b60405161021a9190610d1f565b60405180910390f35b61023d60048036038101906102389190610e1b565b610ae9565b60405161024a9190610d49565b60405180910390f35b6040518060400160405280600c81526020017f5768697465426974646f6765000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161036c9190610d49565b60405180910390a36001905092915050565b601260ff16600a61038f9190610fbd565b61520861039c9190611008565b81565b60008060009054906101000a900460ff166103ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e6906110d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361045e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045590611166565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c4906111f8565b60405180910390fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561054f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105469061128a565b60405180910390fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561060e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610605906112f6565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461065d9190611316565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106b3919061134a565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107469190611316565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107aa9190610d49565b60405180910390a3600190509392505050565b601281565b60008060006101000a81548160ff021916908315150217905550565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040518060400160405280600681526020017f5742444f4745000000000000000000000000000000000000000000000000000081525081565b60008060009054906101000a900460ff166108b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a7906110d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361091f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610916906111f8565b60405180910390fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156109a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109989061128a565b60405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109f09190611316565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a46919061134a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610aaa9190610d49565b60405180910390a36001905092915050565b60016000806101000a81548160ff021916908315150217905550565b60008054906101000a900460ff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610baa578082015181840152602081019050610b8f565b83811115610bb9576000848401525b50505050565b6000601f19601f8301169050919050565b6000610bdb82610b70565b610be58185610b7b565b9350610bf5818560208601610b8c565b610bfe81610bbf565b840191505092915050565b60006020820190508181036000830152610c238184610bd0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c5b82610c30565b9050919050565b610c6b81610c50565b8114610c7657600080fd5b50565b600081359050610c8881610c62565b92915050565b6000819050919050565b610ca181610c8e565b8114610cac57600080fd5b50565b600081359050610cbe81610c98565b92915050565b60008060408385031215610cdb57610cda610c2b565b5b6000610ce985828601610c79565b9250506020610cfa85828601610caf565b9150509250929050565b60008115159050919050565b610d1981610d04565b82525050565b6000602082019050610d346000830184610d10565b92915050565b610d4381610c8e565b82525050565b6000602082019050610d5e6000830184610d3a565b92915050565b600080600060608486031215610d7d57610d7c610c2b565b5b6000610d8b86828701610c79565b9350506020610d9c86828701610c79565b9250506040610dad86828701610caf565b9150509250925092565b600060ff82169050919050565b610dcd81610db7565b82525050565b6000602082019050610de86000830184610dc4565b92915050565b600060208284031215610e0457610e03610c2b565b5b6000610e1284828501610c79565b91505092915050565b60008060408385031215610e3257610e31610c2b565b5b6000610e4085828601610c79565b9250506020610e5185828601610c79565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115610ee157808604811115610ebd57610ebc610e5b565b5b6001851615610ecc5780820291505b8081029050610eda85610e8a565b9450610ea1565b94509492505050565b600082610efa5760019050610fb6565b81610f085760009050610fb6565b8160018114610f1e5760028114610f2857610f57565b6001915050610fb6565b60ff841115610f3a57610f39610e5b565b5b8360020a915084821115610f5157610f50610e5b565b5b50610fb6565b5060208310610133831016604e8410600b8410161715610f8c5782820a905083811115610f8757610f86610e5b565b5b610fb6565b610f998484846001610e97565b92509050818404811115610fb057610faf610e5b565b5b81810290505b9392505050565b6000610fc882610c8e565b9150610fd383610c8e565b92506110007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610eea565b905092915050565b600061101382610c8e565b915061101e83610c8e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561105757611056610e5b565b5b828202905092915050565b7f5768697465426974646f67653a207472616e736665727320617265206375727260008201527f656e746c792064697361626c6564000000000000000000000000000000000000602082015250565b60006110be602e83610b7b565b91506110c982611062565b604082019050919050565b600060208201905081810360008301526110ed816110b1565b9050919050565b7f5768697465426974646f67653a207472616e736665722066726f6d207468652060008201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b6000611150602c83610b7b565b915061115b826110f4565b604082019050919050565b6000602082019050818103600083015261117f81611143565b9050919050565b7f5768697465426974646f67653a207472616e7366657220746f20746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006111e2602a83610b7b565b91506111ed82611186565b604082019050919050565b60006020820190508181036000830152611211816111d5565b9050919050565b7f5768697465426974646f67653a20696e73756666696369656e742062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611274602283610b7b565b915061127f82611218565b604082019050919050565b600060208201905081810360008301526112a381611267565b9050919050565b7f5768697465426974646f67653a20616c6c6f77616e6365206578636565646564600082015250565b60006112e0602083610b7b565b91506112eb826112aa565b602082019050919050565b6000602082019050818103600083015261130f816112d3565b9050919050565b600061132182610c8e565b915061132c83610c8e565b92508282101561133f5761133e610e5b565b5b828203905092915050565b600061135582610c8e565b915061136083610c8e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561139557611394610e5b565b5b82820190509291505056fea2646970667358221220fe7972d67f33a1a11fe58a0118c3135cd774c1dea5a44661a52d9a81ace5230364736f6c634300080d0033