60806040523480156200001157600080fd5b50604051620016c0380380620016c0833981810160405281019062000037919062000229565b33600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060019080519060200190620000f3929190620000fb565b5050620003fe565b82805462000109906200030f565b90600052602060002090601f0160209004810192826200012d576000855562000179565b82601f106200014857805160ff191683800117855562000179565b8280016001018555821562000179579182015b82811115620001785782518255916020019190600101906200015b565b5b5090506200018891906200018c565b5090565b5b80821115620001a75760008160009055506001016200018d565b5090565b6000620001c2620001bc84620002a3565b6200027a565b905082815260208101848484011115620001e157620001e0620003de565b5b620001ee848285620002d9565b509392505050565b600082601f8301126200020e576200020d620003d9565b5b815162000220848260208601620001ab565b91505092915050565b600060208284031215620002425762000241620003e8565b5b600082015167ffffffffffffffff811115620002635762000262620003e3565b5b6200027184828501620001f6565b91505092915050565b60006200028662000299565b905062000294828262000345565b919050565b6000604051905090565b600067ffffffffffffffff821115620002c157620002c0620003aa565b5b620002cc82620003ed565b9050602081019050919050565b60005b83811015620002f9578082015181840152602081019050620002dc565b8381111562000309576000848401525b50505050565b600060028204905060018216806200032857607f821691505b602082108114156200033f576200033e6200037b565b5b50919050565b6200035082620003ed565b810181811067ffffffffffffffff82111715620003725762000371620003aa565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6112b2806200040e6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80634f9109ca1161005b5780634f9109ca146100d857806366605ba4146100f457806368e27fca146101105780637d3fda421461012e5761007d565b806306fdde03146100825780630d80bf64146100a05780632f89e6c9146100bc575b600080fd5b61008a61014c565b6040516100979190610dcc565b60405180910390f35b6100ba60048036038101906100b59190610ce1565b6101de565b005b6100d660048036038101906100d19190610ce1565b6102e2565b005b6100f260048036038101906100ed9190610ce1565b6103e7565b005b61010e60048036038101906101099190610ce1565b61064b565b005b6101186106f5565b6040516101259190610dcc565b60405180910390f35b610136610872565b6040516101439190610dcc565b60405180910390f35b60606001805461015b9061104e565b80601f01602080910402602001604051908101604052809291908181526020018280546101879061104e565b80156101d45780601f106101a9576101008083540402835291602001916101d4565b820191906000526020600020905b8154815290600101906020018083116101b757829003601f168201915b5050505050905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461026e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026590610e0e565b60405180910390fd5b600061027982610900565b90506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000805b600380549050811015610387576003818154811061030757610306611158565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610374578180610370906110b1565b9250505b808061037f906110b1565b9150506102e6565b5060018110156103cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c390610e2e565b60405180910390fd5b81600090805190602001906103e2929190610bce565b505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046e90610e0e565b60405180910390fd5b60008061048383610900565b905060005b600380549050811015610529578173ffffffffffffffffffffffffffffffffffffffff16600382815481106104c0576104bf611158565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610516578280610512906110b1565b9350505b8080610521906110b1565b915050610488565b50600182101561056e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056590610dee565b60405180910390fd5b60005b600380549050811015610645578173ffffffffffffffffffffffffffffffffffffffff16600382815481106105a9576105a8611158565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610632576003818154811061060457610603611158565b5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b808061063d906110b1565b915050610571565b50505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d290610e0e565b60405180910390fd5b80600190805190602001906106f1929190610bce565b5050565b60606000805b60038054905081101561079c576003818154811061071c5761071b611158565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610789578180610785906110b1565b9250505b8080610794906110b1565b9150506106fb565b5060018110156107e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d890610e2e565b60405180910390fd5b600080546107ee9061104e565b80601f016020809104026020016040519081016040528092919081815260200182805461081a9061104e565b80156108675780601f1061083c57610100808354040283529160200191610867565b820191906000526020600020905b81548152906001019060200180831161084a57829003601f168201915b505050505091505090565b6001805461087f9061104e565b80601f01602080910402602001604051908101604052809291908181526020018280546108ab9061104e565b80156108f85780601f106108cd576101008083540402835291602001916108f8565b820191906000526020600020905b8154815290600101906020018083116108db57829003601f168201915b505050505081565b600080829050600080806000600290505b602a811015610bc157610100846109289190610f60565b935084818151811061093d5761093c611158565b5b602001015160f81c60f81b60f81c60ff1692508460018261095e9190610f0a565b8151811061096f5761096e611158565b5b602001015160f81c60f81b60f81c60ff16915060618373ffffffffffffffffffffffffffffffffffffffff16101580156109c0575060668373ffffffffffffffffffffffffffffffffffffffff1611155b156109d9576057836109d29190610fae565b9250610a85565b60418373ffffffffffffffffffffffffffffffffffffffff1610158015610a17575060468373ffffffffffffffffffffffffffffffffffffffff1611155b15610a3057603783610a299190610fae565b9250610a84565b60308373ffffffffffffffffffffffffffffffffffffffff1610158015610a6e575060398373ffffffffffffffffffffffffffffffffffffffff1611155b15610a8357603083610a809190610fae565b92505b5b5b60618273ffffffffffffffffffffffffffffffffffffffff1610158015610ac3575060668273ffffffffffffffffffffffffffffffffffffffff1611155b15610adc57605782610ad59190610fae565b9150610b88565b60418273ffffffffffffffffffffffffffffffffffffffff1610158015610b1a575060468273ffffffffffffffffffffffffffffffffffffffff1611155b15610b3357603782610b2c9190610fae565b9150610b87565b60308273ffffffffffffffffffffffffffffffffffffffff1610158015610b71575060398273ffffffffffffffffffffffffffffffffffffffff1611155b15610b8657603082610b839190610fae565b91505b5b5b81601084610b969190610f60565b610ba09190610ec0565b84610bab9190610ec0565b9350600281610bba9190610f0a565b9050610911565b5082945050505050919050565b828054610bda9061104e565b90600052602060002090601f016020900481019282610bfc5760008555610c43565b82601f10610c1557805160ff1916838001178555610c43565b82800160010185558215610c43579182015b82811115610c42578251825591602001919060010190610c27565b5b509050610c509190610c54565b5090565b5b80821115610c6d576000816000905550600101610c55565b5090565b6000610c84610c7f84610e73565b610e4e565b905082815260208101848484011115610ca057610c9f6111bb565b5b610cab84828561100c565b509392505050565b600082601f830112610cc857610cc76111b6565b5b8135610cd8848260208601610c71565b91505092915050565b600060208284031215610cf757610cf66111c5565b5b600082013567ffffffffffffffff811115610d1557610d146111c0565b5b610d2184828501610cb3565b91505092915050565b6000610d3582610ea4565b610d3f8185610eaf565b9350610d4f81856020860161101b565b610d58816111ca565b840191505092915050565b6000610d70601c83610eaf565b9150610d7b826111db565b602082019050919050565b6000610d93601783610eaf565b9150610d9e82611204565b602082019050919050565b6000610db6602583610eaf565b9150610dc18261122d565b604082019050919050565b60006020820190508181036000830152610de68184610d2a565b905092915050565b60006020820190508181036000830152610e0781610d63565b9050919050565b60006020820190508181036000830152610e2781610d86565b9050919050565b60006020820190508181036000830152610e4781610da9565b9050919050565b6000610e58610e69565b9050610e648282611080565b919050565b6000604051905090565b600067ffffffffffffffff821115610e8e57610e8d611187565b5b610e97826111ca565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000610ecb82610fe2565b9150610ed683610fe2565b92508273ffffffffffffffffffffffffffffffffffffffff03821115610eff57610efe6110fa565b5b828201905092915050565b6000610f1582611002565b9150610f2083611002565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610f5557610f546110fa565b5b828201905092915050565b6000610f6b82610fe2565b9150610f7683610fe2565b92508173ffffffffffffffffffffffffffffffffffffffff0483118215151615610fa357610fa26110fa565b5b828202905092915050565b6000610fb982610fe2565b9150610fc483610fe2565b925082821015610fd757610fd66110fa565b5b828203905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561103957808201518184015260208101905061101e565b83811115611048576000848401525b50505050565b6000600282049050600182168061106657607f821691505b6020821081141561107a57611079611129565b5b50919050565b611089826111ca565b810181811067ffffffffffffffff821117156110a8576110a7611187565b5b80604052505050565b60006110bc82611002565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156110ef576110ee6110fa565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f41646472657373206973206e6f7420696e2077686974656c6973742e00000000600082015250565b7f4f6e6c79206f776e65722063616e206578656375746521000000000000000000600082015250565b7f4f6e6c792077686974656c697374656420616464726573732063616e2065786560008201527f637574652100000000000000000000000000000000000000000000000000000060208201525056fea26469706673582212203592afb4cee1ef9bf56aad69b80cb6175391023d5fa47073bb3f8a1b8b15e4fc64736f6c63430008070033