0x608060405234801561001057600080fd5b5061002d61002261003260201b60201c565b61003a60201b60201c565b6100fe565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610fa38061010d6000396000f3fe608060405234801561001057600080fd5b50600436106100815760003560e01c806369cd41c11161005b57806369cd41c114610125578063715018a6146101555780638da5cb5b1461015f578063f2fde38b1461017d57610082565b8063095ea7b3146100bd5780630eb45fc5146100ed5780633081bef61461010957610082565b5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100b490610bd0565b60405180910390fd5b6100d760048036038101906100d291906109ee565b610199565b6040516100e49190610b95565b60405180910390f35b610107600480360381019061010291906109ae565b61023d565b005b610123600480360381019061011e9190610a2e565b61037f565b005b61013f600480360381019061013a9190610981565b6105b8565b60405161014c9190610b7a565b60405180910390f35b61015d6105d8565b005b6101676105ec565b6040516101749190610b5f565b60405180910390f35b61019760048036038101906101929190610981565b610615565b005b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156101fc576359faaa0360e01b9050610237565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022e90610bf0565b60405180910390fd5b92915050565b610245610699565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015610288575061028682610717565b155b156102bf576040517f16f8ec1c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fb82aafab1694a65f195803618dd20743a83acd9f4bd89b75c899017153f66e90836040516103739190610b7a565b60405180910390a35050565b610387610699565b80518251146103c2576040517f6889ba9000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156105b357600073ffffffffffffffffffffffffffffffffffffffff168382815181106103f9576103f8610ddb565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015610445575061044383828151811061043657610435610ddb565b5b6020026020010151610717565b155b1561047c576040517f16f8ec1c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81818151811061048f5761048e610ddb565b5b6020026020010151600160008584815181106104ae576104ad610ddb565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082818151811061051a57610519610ddb565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fb82aafab1694a65f195803618dd20743a83acd9f4bd89b75c899017153f66e9084848151811061058357610582610ddb565b5b60200260200101516040516105989190610b7a565b60405180910390a380806105ab90610d63565b9150506103c5565b505050565b60016020528060005260406000206000915054906101000a900460ff1681565b6105e0610699565b6105ea600061073a565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61061d610699565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561068d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068490610bb0565b60405180910390fd5b6106968161073a565b50565b6106a16107fe565b73ffffffffffffffffffffffffffffffffffffffff166106bf6105ec565b73ffffffffffffffffffffffffffffffffffffffff1614610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070c90610c10565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600061081961081484610c55565b610c30565b9050808382526020820190508285602086028201111561083c5761083b610e3e565b5b60005b8581101561086c578161085288826108e6565b84526020840193506020830192505060018101905061083f565b5050509392505050565b600061088961088484610c81565b610c30565b905080838252602082019050828560208602820111156108ac576108ab610e3e565b5b60005b858110156108dc57816108c28882610957565b8452602084019350602083019250506001810190506108af565b5050509392505050565b6000813590506108f581610f28565b92915050565b600082601f8301126109105761090f610e39565b5b8135610920848260208601610806565b91505092915050565b600082601f83011261093e5761093d610e39565b5b813561094e848260208601610876565b91505092915050565b60008135905061096681610f3f565b92915050565b60008135905061097b81610f56565b92915050565b60006020828403121561099757610996610e48565b5b60006109a5848285016108e6565b91505092915050565b600080604083850312156109c5576109c4610e48565b5b60006109d3858286016108e6565b92505060206109e485828601610957565b9150509250929050565b60008060408385031215610a0557610a04610e48565b5b6000610a13858286016108e6565b9250506020610a248582860161096c565b9150509250929050565b60008060408385031215610a4557610a44610e48565b5b600083013567ffffffffffffffff811115610a6357610a62610e43565b5b610a6f858286016108fb565b925050602083013567ffffffffffffffff811115610a9057610a8f610e43565b5b610a9c85828601610929565b9150509250929050565b610aaf81610cbe565b82525050565b610abe81610cd0565b82525050565b610acd81610cdc565b82525050565b6000610ae0602683610cad565b9150610aeb82610e5e565b604082019050919050565b6000610b03601b83610cad565b9150610b0e82610ead565b602082019050919050565b6000610b26601483610cad565b9150610b3182610ed6565b602082019050919050565b6000610b49602083610cad565b9150610b5482610eff565b602082019050919050565b6000602082019050610b746000830184610aa6565b92915050565b6000602082019050610b8f6000830184610ab5565b92915050565b6000602082019050610baa6000830184610ac4565b92915050565b60006020820190508181036000830152610bc981610ad3565b9050919050565b60006020820190508181036000830152610be981610af6565b9050919050565b60006020820190508181036000830152610c0981610b19565b9050919050565b60006020820190508181036000830152610c2981610b3c565b9050919050565b6000610c3a610c4b565b9050610c468282610d32565b919050565b6000604051905090565b600067ffffffffffffffff821115610c7057610c6f610e0a565b5b602082029050602081019050919050565b600067ffffffffffffffff821115610c9c57610c9b610e0a565b5b602082029050602081019050919050565b600082825260208201905092915050565b6000610cc982610d08565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b610d3b82610e4d565b810181811067ffffffffffffffff82111715610d5a57610d59610e0a565b5b80604052505050565b6000610d6e82610d28565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610da157610da0610dac565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206973206e6f742077686974656c69737465640000000000600082015250565b7f5370656e646572206e6f7420617070726f766564000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b610f3181610cbe565b8114610f3c57600080fd5b50565b610f4881610cd0565b8114610f5357600080fd5b50565b610f5f81610d28565b8114610f6a57600080fd5b5056fea2646970667358221220376e16ffe1af0f69536bc1a51695c378e250efe530f940391420623979feac9864736f6c63430008070033