60806040523480156200001157600080fd5b5060405162002ac238038062002ac28339818101604052810190620000379190620007a6565b6040518060400160405280600d81526020017f536861726b42656520436f696e000000000000000000000000000000000000008152506040518060400160405280600481526020017f5342454500000000000000000000000000000000000000000000000000000000815250620000c3620000b76200011060201b60201c565b6200011860201b60201c565b8160049080519060200190620000db929190620006df565b508060059080519060200190620000f4929190620006df565b505050620001093382620001dc60201b60201c565b5062000ab6565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200024f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000246906200092f565b60405180910390fd5b62000263600083836200034b60201b60201c565b8060036000828254620002779190620009a1565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200032b919062000973565b60405180910390a362000347600083836200066860201b60201c565b5050565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620003f05750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b62000432576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004299062000951565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141562000556576200049a6200066d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806200050e5750620004df6200066d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b62000550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000547906200090d565b60405180910390fd5b62000663565b600660009054906101000a900460ff168015620005c05750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15620006625760075481620005e0846200069660201b620006b01760201c565b620005ec9190620009a1565b111580156200061f57506008548162000610846200069660201b620006b01760201c565b6200061c9190620009a1565b10155b62000661576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200065890620008eb565b60405180910390fd5b5b5b505050565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b828054620006ed9062000a08565b90600052602060002090601f0160209004810192826200071157600085556200075d565b82601f106200072c57805160ff19168380011785556200075d565b828001600101855582156200075d579182015b828111156200075c5782518255916020019190600101906200073f565b5b5090506200076c919062000770565b5090565b5b808211156200078b57600081600090555060010162000771565b5090565b600081519050620007a08162000a9c565b92915050565b600060208284031215620007b957600080fd5b6000620007c9848285016200078f565b91505092915050565b6000620007e160068362000990565b91507f466f7262696400000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006200082360168362000990565b91507f74726164696e67206973206e6f742073746172746564000000000000000000006000830152602082019050919050565b600062000865601f8362000990565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6000620008a7600b8362000990565b91507f426c61636b6c69737465640000000000000000000000000000000000000000006000830152602082019050919050565b620008e581620009fe565b82525050565b600060208201905081810360008301526200090681620007d2565b9050919050565b60006020820190508181036000830152620009288162000814565b9050919050565b600060208201905081810360008301526200094a8162000856565b9050919050565b600060208201905081810360008301526200096c8162000898565b9050919050565b60006020820190506200098a6000830184620008da565b92915050565b600082825260208201905092915050565b6000620009ae82620009fe565b9150620009bb83620009fe565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620009f357620009f262000a3e565b5b828201905092915050565b6000819050919050565b6000600282049050600182168062000a2157607f821691505b6020821081141562000a385762000a3762000a6d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b62000aa781620009fe565b811462000ab357600080fd5b50565b611ffc8062000ac66000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806349bd5a5e116100b85780638da5cb5b1161007c5780638da5cb5b1461036757806395d89b4114610385578063a457c2d7146103a3578063a9059cbb146103d3578063dd62ed3e14610403578063f2fde38b1461043357610142565b806349bd5a5e146102d357806370a08231146102f1578063715018a614610321578063860a32ec1461032b57806389f9a1d31461034957610142565b806323b872dd1161010a57806323b872dd14610201578063313ce56714610231578063395093511461024f5780633aa633aa1461027f578063404e51291461029b57806342966c68146102b757610142565b806306fdde0314610147578063095ea7b31461016557806316c021291461019557806318160ddd146101c55780631ab99e12146101e3575b600080fd5b61014f61044f565b60405161015c9190611bce565b60405180910390f35b61017f600480360381019061017a9190611585565b6104e1565b60405161018c9190611bb3565b60405180910390f35b6101af60048036038101906101aa9190611495565b610504565b6040516101bc9190611bb3565b60405180910390f35b6101cd610524565b6040516101da9190611db0565b60405180910390f35b6101eb61052e565b6040516101f89190611db0565b60405180910390f35b61021b600480360381019061021691906114fa565b610534565b6040516102289190611bb3565b60405180910390f35b610239610563565b6040516102469190611dcb565b60405180910390f35b61026960048036038101906102649190611585565b61056c565b6040516102769190611bb3565b60405180910390f35b610299600480360381019061029491906115c1565b6105a3565b005b6102b560048036038101906102b09190611549565b61061a565b005b6102d160048036038101906102cc9190611624565b61067d565b005b6102db61068a565b6040516102e89190611b98565b60405180910390f35b61030b60048036038101906103069190611495565b6106b0565b6040516103189190611db0565b60405180910390f35b6103296106f9565b005b61033361070d565b6040516103409190611bb3565b60405180910390f35b610351610720565b60405161035e9190611db0565b60405180910390f35b61036f610726565b60405161037c9190611b98565b60405180910390f35b61038d61074f565b60405161039a9190611bce565b60405180910390f35b6103bd60048036038101906103b89190611585565b6107e1565b6040516103ca9190611bb3565b60405180910390f35b6103ed60048036038101906103e89190611585565b610858565b6040516103fa9190611bb3565b60405180910390f35b61041d600480360381019061041891906114be565b61087b565b60405161042a9190611db0565b60405180910390f35b61044d60048036038101906104489190611495565b610902565b005b60606004805461045e90611ee0565b80601f016020809104026020016040519081016040528092919081815260200182805461048a90611ee0565b80156104d75780601f106104ac576101008083540402835291602001916104d7565b820191906000526020600020905b8154815290600101906020018083116104ba57829003601f168201915b5050505050905090565b6000806104ec610986565b90506104f981858561098e565b600191505092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600354905090565b60085481565b60008061053f610986565b905061054c858285610b59565b610557858585610be5565b60019150509392505050565b60006012905090565b600080610577610986565b9050610598818585610589858961087b565b6105939190611e02565b61098e565b600191505092915050565b6105ab610e60565b83600660006101000a81548160ff02191690831515021790555082600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816007819055508060088190555050505050565b610622610e60565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6106873382610ede565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610701610e60565b61070b60006110ae565b565b600660009054906101000a900460ff1681565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461075e90611ee0565b80601f016020809104026020016040519081016040528092919081815260200182805461078a90611ee0565b80156107d75780601f106107ac576101008083540402835291602001916107d7565b820191906000526020600020905b8154815290600101906020018083116107ba57829003601f168201915b5050505050905090565b6000806107ec610986565b905060006107fa828661087b565b90508381101561083f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083690611d70565b60405180910390fd5b61084c828686840361098e565b60019250505092915050565b600080610863610986565b9050610870818585610be5565b600191505092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61090a610e60565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097190611c30565b60405180910390fd5b610983816110ae565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f590611d50565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6590611c50565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b4c9190611db0565b60405180910390a3505050565b6000610b65848461087b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bdf5781811015610bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc890611c70565b60405180910390fd5b610bde848484840361098e565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4c90611d30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbc90611bf0565b60405180910390fd5b610cd0838383611172565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4e90611c90565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e479190611db0565b60405180910390a3610e5a848484611451565b50505050565b610e68610986565b73ffffffffffffffffffffffffffffffffffffffff16610e86610726565b73ffffffffffffffffffffffffffffffffffffffff1614610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed390611cd0565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590611cf0565b60405180910390fd5b610f5a82600083611172565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd890611c10565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110959190611db0565b60405180910390a36110a983600084611451565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156112165750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124c90611d90565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611363576112b4610726565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061131f57506112f0610726565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590611d10565b60405180910390fd5b61144c565b600660009054906101000a900460ff1680156113cc5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561144b57600754816113de846106b0565b6113e89190611e02565b1115801561140b5750600854816113fe846106b0565b6114089190611e02565b10155b61144a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144190611cb0565b60405180910390fd5b5b5b505050565b505050565b60008135905061146581611f81565b92915050565b60008135905061147a81611f98565b92915050565b60008135905061148f81611faf565b92915050565b6000602082840312156114a757600080fd5b60006114b584828501611456565b91505092915050565b600080604083850312156114d157600080fd5b60006114df85828601611456565b92505060206114f085828601611456565b9150509250929050565b60008060006060848603121561150f57600080fd5b600061151d86828701611456565b935050602061152e86828701611456565b925050604061153f86828701611480565b9150509250925092565b6000806040838503121561155c57600080fd5b600061156a85828601611456565b925050602061157b8582860161146b565b9150509250929050565b6000806040838503121561159857600080fd5b60006115a685828601611456565b92505060206115b785828601611480565b9150509250929050565b600080600080608085870312156115d757600080fd5b60006115e58782880161146b565b94505060206115f687828801611456565b935050604061160787828801611480565b925050606061161887828801611480565b91505092959194509250565b60006020828403121561163657600080fd5b600061164484828501611480565b91505092915050565b61165681611e58565b82525050565b61166581611e6a565b82525050565b600061167682611de6565b6116808185611df1565b9350611690818560208601611ead565b61169981611f70565b840191505092915050565b60006116b1602383611df1565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611717602283611df1565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061177d602683611df1565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006117e3602283611df1565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611849601d83611df1565b91507f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006000830152602082019050919050565b6000611889602683611df1565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006118ef600683611df1565b91507f466f7262696400000000000000000000000000000000000000000000000000006000830152602082019050919050565b600061192f602083611df1565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061196f602183611df1565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006119d5601683611df1565b91507f74726164696e67206973206e6f742073746172746564000000000000000000006000830152602082019050919050565b6000611a15602583611df1565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611a7b602483611df1565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ae1602583611df1565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b47600b83611df1565b91507f426c61636b6c69737465640000000000000000000000000000000000000000006000830152602082019050919050565b611b8381611e96565b82525050565b611b9281611ea0565b82525050565b6000602082019050611bad600083018461164d565b92915050565b6000602082019050611bc8600083018461165c565b92915050565b60006020820190508181036000830152611be8818461166b565b905092915050565b60006020820190508181036000830152611c09816116a4565b9050919050565b60006020820190508181036000830152611c298161170a565b9050919050565b60006020820190508181036000830152611c4981611770565b9050919050565b60006020820190508181036000830152611c69816117d6565b9050919050565b60006020820190508181036000830152611c898161183c565b9050919050565b60006020820190508181036000830152611ca98161187c565b9050919050565b60006020820190508181036000830152611cc9816118e2565b9050919050565b60006020820190508181036000830152611ce981611922565b9050919050565b60006020820190508181036000830152611d0981611962565b9050919050565b60006020820190508181036000830152611d29816119c8565b9050919050565b60006020820190508181036000830152611d4981611a08565b9050919050565b60006020820190508181036000830152611d6981611a6e565b9050919050565b60006020820190508181036000830152611d8981611ad4565b9050919050565b60006020820190508181036000830152611da981611b3a565b9050919050565b6000602082019050611dc56000830184611b7a565b92915050565b6000602082019050611de06000830184611b89565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611e0d82611e96565b9150611e1883611e96565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611e4d57611e4c611f12565b5b828201905092915050565b6000611e6382611e76565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611ecb578082015181840152602081019050611eb0565b83811115611eda576000848401525b50505050565b60006002820490506001821680611ef857607f821691505b60208210811415611f0c57611f0b611f41565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b611f8a81611e58565b8114611f9557600080fd5b50565b611fa181611e6a565b8114611fac57600080fd5b50565b611fb881611e96565b8114611fc357600080fd5b5056fea264697066735822122099f5930c656208c5fcc1ae29b37db9b277d6309e6ced4bb20518019a24af672964736f6c6343000800003300000000000000000000000000000000000000011f2fd016868c800000000000