0x60806040523480156200001157600080fd5b5060405162001ca438038062001ca483398181016040528101906200003791906200015a565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620001fe565b6000815190506200015481620001e4565b92915050565b6000806000606084860312156200017057600080fd5b6000620001808682870162000143565b9350506020620001938682870162000143565b9250506040620001a68682870162000143565b9150509250925092565b6000620001bd82620001c4565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620001ef81620001b0565b8114620001fb57600080fd5b50565b611a96806200020e6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806378cf19e91161008c5780638da5cb5b116100665780638da5cb5b146101d6578063a87cce75146101f4578063c7c4ff4614610212578063ebefd25614610230576100cf565b806378cf19e9146101825780637d654c7f1461019e578063880cdc31146101ba576100cf565b806306ddbaad146100d457806310f9a677146100f05780633b66d02b1461010c5780635cfa946a1461012857806361150923146101465780636419e18014610164575b600080fd5b6100ee60048036038101906100e991906111d2565b61024c565b005b61010a600480360381019061010591906111a9565b61045b565b005b610126600480360381019061012191906111d2565b610585565b005b6101306106f5565b60405161013d919061167f565b60405180910390f35b61014e6106fb565b60405161015b9190611502565b60405180910390f35b61016c610721565b6040516101799190611502565b60405180910390f35b61019c600480360381019061019791906111d2565b610747565b005b6101b860048036038101906101b39190611237565b6109ba565b005b6101d460048036038101906101cf91906111a9565b610b2b565b005b6101de610cc5565b6040516101eb9190611495565b60405180910390f35b6101fc610ce9565b6040516102099190611495565b60405180910390f35b61021a610d0f565b6040516102279190611495565b60405180910390f35b61024a600480360381019061024591906111a9565b610d35565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f35750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610332576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103299061157f565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156103b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ab9061165f565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104039190611722565b925050819055506104578282600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e629092919063ffffffff16565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806105025750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610541576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105389061157f565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060c906115df565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146106f1576106b78282600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e629092919063ffffffff16565b7f562c219552544ec4c9d7a8eb850f80ea152973e315372bf4999fe7c953ea004f82826040516106e89291906114d9565b60405180910390a15b5050565b60055481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107ee5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61082d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108249061157f565b60405180910390fd5b80600554600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161088c9190611495565b60206040518083038186803b1580156108a457600080fd5b505afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190611260565b6108e691906116cc565b1015610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091e9061159f565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461097691906116cc565b925050819055507f61c8427ca14788cf50e420fe4b1e41be1ab20530a3f48bb547315dc91e62b9c182826040516109ae9291906114d9565b60405180910390a15050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3f906115ff565b60405180910390fd5b63075bcd158114610a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a859061153f565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4c19d31874b3f8325813d90efdd10758f703ab99b84367f07276ecd2cd69c95d3360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610b209291906114b0565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb0906115ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c209061155f565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4c19d31874b3f8325813d90efdd10758f703ab99b84367f07276ecd2cd69c95d3360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610cba9291906114b0565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dba906115ff565b60405180910390fd5b7f55544227c1dac3dda76ef0acf11ca487956bc66fe0c1272f203c60de2174dfdd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051610e169291906114b0565b60405180910390a180600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ee38363a9059cbb60e01b8484604051602401610e819291906114d9565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610ee8565b505050565b6000610f4a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610faf9092919063ffffffff16565b9050600081511115610faa5780806020019051810190610f6a919061120e565b610fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa09061163f565b60405180910390fd5b5b505050565b6060610fbe8484600085610fc7565b90509392505050565b60608247101561100c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611003906115bf565b60405180910390fd5b611015856110db565b611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b9061161f565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161107d919061147e565b60006040518083038185875af1925050503d80600081146110ba576040519150601f19603f3d011682016040523d82523d6000602084013e6110bf565b606091505b50915091506110cf8282866110ee565b92505050949350505050565b600080823b905060008111915050919050565b606083156110fe5782905061114e565b6000835111156111115782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611145919061151d565b60405180910390fd5b9392505050565b60008135905061116481611a1b565b92915050565b60008151905061117981611a32565b92915050565b60008135905061118e81611a49565b92915050565b6000815190506111a381611a49565b92915050565b6000602082840312156111bb57600080fd5b60006111c984828501611155565b91505092915050565b600080604083850312156111e557600080fd5b60006111f385828601611155565b92505060206112048582860161117f565b9150509250929050565b60006020828403121561122057600080fd5b600061122e8482850161116a565b91505092915050565b60006020828403121561124957600080fd5b60006112578482850161117f565b91505092915050565b60006020828403121561127257600080fd5b600061128084828501611194565b91505092915050565b61129281611756565b82525050565b60006112a38261169a565b6112ad81856116b0565b93506112bd8185602086016117c2565b80840191505092915050565b6112d28161179e565b82525050565b60006112e3826116a5565b6112ed81856116bb565b93506112fd8185602086016117c2565b61130681611824565b840191505092915050565b600061131e600c836116bb565b915061132982611835565b602082019050919050565b6000611341600f836116bb565b915061134c8261185e565b602082019050919050565b60006113646016836116bb565b915061136f82611887565b602082019050919050565b60006113876019836116bb565b9150611392826118b0565b602082019050919050565b60006113aa6026836116bb565b91506113b5826118d9565b604082019050919050565b60006113cd601f836116bb565b91506113d882611928565b602082019050919050565b60006113f06009836116bb565b91506113fb82611951565b602082019050919050565b6000611413601d836116bb565b915061141e8261197a565b602082019050919050565b6000611436602a836116bb565b9150611441826119a3565b604082019050919050565b6000611459601c836116bb565b9150611464826119f2565b602082019050919050565b61147881611794565b82525050565b600061148a8284611298565b915081905092915050565b60006020820190506114aa6000830184611289565b92915050565b60006040820190506114c56000830185611289565b6114d26020830184611289565b9392505050565b60006040820190506114ee6000830185611289565b6114fb602083018461146f565b9392505050565b600060208201905061151760008301846112c9565b92915050565b6000602082019050818103600083015261153781846112d8565b905092915050565b6000602082019050818103600083015261155881611311565b9050919050565b6000602082019050818103600083015261157881611334565b9050919050565b6000602082019050818103600083015261159881611357565b9050919050565b600060208201905081810360008301526115b88161137a565b9050919050565b600060208201905081810360008301526115d88161139d565b9050919050565b600060208201905081810360008301526115f8816113c0565b9050919050565b60006020820190508181036000830152611618816113e3565b9050919050565b6000602082019050818103600083015261163881611406565b9050919050565b6000602082019050818103600083015261165881611429565b9050919050565b600060208201905081810360008301526116788161144c565b9050919050565b6000602082019050611694600083018461146f565b92915050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006116d782611794565b91506116e283611794565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611717576117166117f5565b5b828201905092915050565b600061172d82611794565b915061173883611794565b92508282101561174b5761174a6117f5565b5b828203905092915050565b600061176182611774565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006117a9826117b0565b9050919050565b60006117bb82611774565b9050919050565b60005b838110156117e05780820151818401526020810190506117c5565b838111156117ef576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000601f19601f8301169050919050565b7f496e76616c696420636f64650000000000000000000000000000000000000000600082015250565b7f496e76616c696420616464726573730000000000000000000000000000000000600082015250565b7f4e6f74206f776e65722f646570757479206f776e657200000000000000000000600082015250565b7f496e73756666696369656e7420555344542062616c616e636500000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f4f6e6c792048524d5020746f6b656e2063616e20626520726563656976656400600082015250565b7f4e6f74206f776e65720000000000000000000000000000000000000000000000600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f496e73756666696369656e7420726573657276656420746f6b656e7300000000600082015250565b611a2481611756565b8114611a2f57600080fd5b50565b611a3b81611768565b8114611a4657600080fd5b50565b611a5281611794565b8114611a5d57600080fd5b5056fea2646970667358221220de7aa67dea4062f90727dc788684a8e2bc3037437b5d9ccc1d508c1ef9c8bd6964736f6c6343000802003300000000000000000000000081a200ea9b24dcbf6ee554eab5875a653d37e5d4000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000e08743edafb3e4e90084df66dd4bad439b85f40