0x60806040523480156200001157600080fd5b506040516200207c3803806200207c8339818101604052810190620000379190620002ff565b620000576200004b620001c960201b60201c565b620001d160201b60201c565b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000ca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000c190620003a7565b60405180910390fd5b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200013d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013490620003a7565b60405180910390fd5b83600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050620003c9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002c7826200029a565b9050919050565b620002d981620002ba565b8114620002e557600080fd5b50565b600081519050620002f981620002ce565b92915050565b6000806040838503121562000319576200031862000295565b5b60006200032985828601620002e8565b92505060206200033c85828601620002e8565b9150509250929050565b600082825260208201905092915050565b7f6164647265737320697320746865207a65726f20616464726573730000000000600082015250565b60006200038f601b8362000346565b91506200039c8262000357565b602082019050919050565b60006020820190508181036000830152620003c28162000380565b9050919050565b611ca380620003d96000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b146101495780639d84ca3514610167578063a1f7536d14610185578063aeea72bd146101b5578063f2fde38b146101e55761009e565b8063346f9f95146100a357806340fc14f7146100c157806357b59e16146100f15780635f3485ac14610121578063715018a61461013f575b600080fd5b6100ab610201565b6040516100b891906110e8565b60405180910390f35b6100db60048036038101906100d69190611143565b610227565b6040516100e8919061118b565b60405180910390f35b61010b60048036038101906101069190611143565b61032f565b604051610118919061118b565b60405180910390f35b610129610437565b60405161013691906110e8565b60405180910390f35b61014761045d565b005b610151610471565b60405161015e91906110e8565b60405180910390f35b61016f61049a565b60405161017c91906110e8565b60405180910390f35b61019f600480360381019061019a9190611364565b6104c0565b6040516101ac919061118b565b60405180910390f35b6101cf60048036038101906101ca9190611143565b6108ed565b6040516101dc919061118b565b60405180910390f35b6101ff60048036038101906101fa9190611143565b6109f5565b005b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610231610a78565b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029890611444565b60405180910390fd5b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff167fe15bf6ee24fa51986b8a9a44c40958a383c7d222620b0fd508b48233e41ac86160405160405180910390a26001915050919050565b6000610339610a78565b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036103a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a090611444565b60405180910390fd5b82600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff167fddc43f458b12a8ea7e96270cb08a6f4b9394d7525e5cd0a10ff3853a8869880e60405160405180910390a26001915050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610465610a78565b61046f6000610af6565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600084600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610532576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610529906114d6565b60405180910390fd5b61053a610bba565b73ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c090611568565b60405180910390fd5b6000846105f857600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166105fa565b305b90506000805b87518173ffffffffffffffffffffffffffffffffffffffff16101561068057600061065c8a8a8473ffffffffffffffffffffffffffffffffffffffff168151811061064e5761064d611588565b5b602002602001015186610bc2565b9050808361066a91906115f0565b925050808061067890611624565b915050610600565b508773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8fc3b0eda7afcd5800a9050b6036337a3d0a32cb5b2435e8269c9fe9f183f292838a8a6040516106e29392919061172d565b60405180910390a38580156106f75750600081115b156108de578773ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161075992919061176b565b6020604051808303816000875af1158015610778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079c91906117a9565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637857f4c58983600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16896040518563ffffffff1660e01b815260040161082094939291906117e5565b600060405180830381600087803b15801561083a57600080fd5b505af115801561084e573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb82c45a622fc4b5e5ecdd20214e7a3d1d65f489ed6fb7052185c0ecb5d2be0998389896040516108d59392919061182a565b60405180910390a35b60019350505050949350505050565b60006108f7610a78565b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095e90611444565b60405180910390fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff167f8cd750dac801ef20a0b62467f0f449c669dc4c1c2c609ab36edb86eb19146f0360405160405180910390a26001915050919050565b6109fd610a78565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a63906118d3565b60405180910390fd5b610a7581610af6565b50565b610a80610bba565b73ffffffffffffffffffffffffffffffffffffffff16610a9e610471565b73ffffffffffffffffffffffffffffffffffffffff1614610af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aeb9061193f565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600083600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2b906114d6565b60405180910390fd5b600085905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b8152600401610c7491906110e8565b602060405180830381865afa158015610c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb5919061198b565b9050610cc387878784610ccf565b93505050509392505050565b600084600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d38906114d6565b60405180910390fd5b6000831115610d7e576000869050610d7c8686868473ffffffffffffffffffffffffffffffffffffffff16610d8a909392919063ffffffff16565b505b82915050949350505050565b610e0d846323b872dd60e01b858585604051602401610dab939291906119b8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e13565b50505050565b6000610e75826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610eda9092919063ffffffff16565b9050600081511115610ed55780806020019051810190610e9591906117a9565b610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb90611a61565b60405180910390fd5b5b505050565b6060610ee98484600085610ef2565b90509392505050565b606082471015610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e90611af3565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610f609190611b84565b60006040518083038185875af1925050503d8060008114610f9d576040519150601f19603f3d011682016040523d82523d6000602084013e610fa2565b606091505b5091509150610fb387838387610fbf565b92505050949350505050565b6060831561102157600083510361101957610fd985611034565b611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100f90611be7565b60405180910390fd5b5b82905061102c565b61102b8383611057565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561106a5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109e9190611c4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006110d2826110a7565b9050919050565b6110e2816110c7565b82525050565b60006020820190506110fd60008301846110d9565b92915050565b6000604051905090565b600080fd5b600080fd5b611120816110c7565b811461112b57600080fd5b50565b60008135905061113d81611117565b92915050565b6000602082840312156111595761115861110d565b5b60006111678482850161112e565b91505092915050565b60008115159050919050565b61118581611170565b82525050565b60006020820190506111a0600083018461117c565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6111f4826111ab565b810181811067ffffffffffffffff82111715611213576112126111bc565b5b80604052505050565b6000611226611103565b905061123282826111eb565b919050565b600067ffffffffffffffff821115611252576112516111bc565b5b602082029050602081019050919050565b600080fd5b600061127b61127684611237565b61121c565b9050808382526020820190506020840283018581111561129e5761129d611263565b5b835b818110156112c757806112b3888261112e565b8452602084019350506020810190506112a0565b5050509392505050565b600082601f8301126112e6576112e56111a6565b5b81356112f6848260208601611268565b91505092915050565b61130881611170565b811461131357600080fd5b50565b600081359050611325816112ff565b92915050565b600060ff82169050919050565b6113418161132b565b811461134c57600080fd5b50565b60008135905061135e81611338565b92915050565b6000806000806080858703121561137e5761137d61110d565b5b600061138c8782880161112e565b945050602085013567ffffffffffffffff8111156113ad576113ac611112565b5b6113b9878288016112d1565b93505060406113ca87828801611316565b92505060606113db8782880161134f565b91505092959194509250565b600082825260208201905092915050565b7f6164647265737320697320746865207a65726f20616464726573730000000000600082015250565b600061142e601b836113e7565b9150611439826113f8565b602082019050919050565b6000602082019050818103600083015261145d81611421565b9050919050565b7f7472616e7366657220746f6b656e20697320746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006114c06022836113e7565b91506114cb82611464565b604082019050919050565b600060208201905081810360008301526114ef816114b3565b9050919050565b7f426c6f636b41544d436f6c6c6563743a2063616c6c6572206973206e6f74207460008201527f686520636f6c6c65637420616464726573730000000000000000000000000000602082015250565b60006115526032836113e7565b915061155d826114f6565b604082019050919050565b6000602082019050818103600083015261158181611545565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115fb826115b7565b9150611606836115b7565b925082820190508082111561161e5761161d6115c1565b5b92915050565b600061162f826110a7565b915073ffffffffffffffffffffffffffffffffffffffff8203611655576116546115c1565b5b600182019050919050565b611669816115b7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6116a4816110c7565b82525050565b60006116b6838361169b565b60208301905092915050565b6000602082019050919050565b60006116da8261166f565b6116e4818561167a565b93506116ef8361168b565b8060005b8381101561172057815161170788826116aa565b9750611712836116c2565b9250506001810190506116f3565b5085935050505092915050565b60006060820190506117426000830186611660565b818103602083015261175481856116cf565b9050611763604083018461117c565b949350505050565b600060408201905061178060008301856110d9565b61178d6020830184611660565b9392505050565b6000815190506117a3816112ff565b92915050565b6000602082840312156117bf576117be61110d565b5b60006117cd84828501611794565b91505092915050565b6117df8161132b565b82525050565b60006080820190506117fa60008301876110d9565b6118076020830186611660565b61181460408301856110d9565b61182160608301846117d6565b95945050505050565b600060608201905061183f6000830186611660565b61184c602083018561117c565b61185960408301846117d6565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006118bd6026836113e7565b91506118c882611861565b604082019050919050565b600060208201905081810360008301526118ec816118b0565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006119296020836113e7565b9150611934826118f3565b602082019050919050565b600060208201905081810360008301526119588161191c565b9050919050565b611968816115b7565b811461197357600080fd5b50565b6000815190506119858161195f565b92915050565b6000602082840312156119a1576119a061110d565b5b60006119af84828501611976565b91505092915050565b60006060820190506119cd60008301866110d9565b6119da60208301856110d9565b6119e76040830184611660565b949350505050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000611a4b602a836113e7565b9150611a56826119ef565b604082019050919050565b60006020820190508181036000830152611a7a81611a3e565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000611add6026836113e7565b9150611ae882611a81565b604082019050919050565b60006020820190508181036000830152611b0c81611ad0565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015611b47578082015181840152602081019050611b2c565b60008484015250505050565b6000611b5e82611b13565b611b688185611b1e565b9350611b78818560208601611b29565b80840191505092915050565b6000611b908284611b53565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000611bd1601d836113e7565b9150611bdc82611b9b565b602082019050919050565b60006020820190508181036000830152611c0081611bc4565b9050919050565b600081519050919050565b6000611c1d82611c07565b611c2781856113e7565b9350611c37818560208601611b29565b611c40816111ab565b840191505092915050565b60006020820190508181036000830152611c658184611c12565b90509291505056fea264697066735822122076728c23e4393b7ae8953f6822ba7c7bfc35336efbbc381585c7b81a5c8f1e9064736f6c6343000811003300000000000000000000000019775734d21408c97c0d566cf6988efeef388b130000000000000000000000004b958bd671cd5bd3001cc0072b17633b78e574ae