0x60806040526064600455600a6005553480156200001b57600080fd5b506040516200228c3803806200228c833981810160405281019062000041919062000210565b62000061620000556200012d60201b60201c565b6200013560201b60201c565b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620002bf565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000815190506200020a81620002a5565b92915050565b6000806000606084860312156200022c576200022b620002a0565b5b60006200023c86828701620001f9565b93505060206200024f86828701620001f9565b92505060406200026286828701620001f9565b9150509250925092565b6000620002798262000280565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002b0816200026c565b8114620002bc57600080fd5b50565b611fbd80620002cf6000396000f3fe6080604052600436106100e85760003560e01c8063846b58fc1161008a5780639803168211610059578063980316821461028c57806399c5c8aa146102b7578063ba0553ae146102e2578063f2fde38b14610312576100e8565b8063846b58fc146101ef5780638a85d8bf1461021a5780638da5cb5b1461024557806394b918de14610270576100e8565b80633ccfd60b116100c65780633ccfd60b146101785780634355129814610182578063679aefce146101ad578063715018a6146101d8576100e8565b8063111fa9a4146100ed5780632c4e722e1461011d57806334fcf43714610148575b600080fd5b61010760048036038101906101029190611278565b61033b565b6040516101149190611658565b60405180910390f35b34801561012957600080fd5b5061013261038f565b60405161013f9190611850565b60405180910390f35b610162600480360381019061015d91906112d2565b610395565b60405161016f9190611658565b60405180910390f35b6101806103af565b005b34801561018e57600080fd5b5061019761044a565b6040516101a491906115dd565b60405180910390f35b3480156101b957600080fd5b506101c2610474565b6040516101cf9190611850565b60405180910390f35b3480156101e457600080fd5b506101ed61047e565b005b3480156101fb57600080fd5b50610204610492565b6040516102119190611673565b60405180910390f35b34801561022657600080fd5b5061022f6104b8565b60405161023c9190611850565b60405180910390f35b34801561025157600080fd5b5061025a6104c2565b60405161026791906115dd565b60405180910390f35b61028a600480360381019061028591906112d2565b6104eb565b005b34801561029857600080fd5b506102a1610c8c565b6040516102ae9190611850565b60405180910390f35b3480156102c357600080fd5b506102cc610c92565b6040516102d99190611673565b60405180910390f35b6102fc60048036038101906102f791906112d2565b610cb8565b6040516103099190611658565b60405180910390f35b34801561031e57600080fd5b5061033960048036038101906103349190611278565b610cd2565b005b6000610345610d56565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60045481565b600061039f610d56565b8160048190555060019050919050565b6103b7610d56565b600047116103fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f190611770565b60405180910390fd5b6104026104c2565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610447573d6000803e3d6000fd5b50565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600454905090565b610486610d56565b6104906000610dd4565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561057c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610573906117f0565b60405180910390fd5b6000610707600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156105e957600080fd5b505afa1580156105fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610621919061132c565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561068957600080fd5b505afa15801561069d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c1919061132c565b6106cb9190611a99565b600a6106d79190611921565b6106f96103e8600454866106eb9190611a3f565b610e9890919063ffffffff16565b610e9890919063ffffffff16565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561077357600080fd5b505afa158015610787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ab919061132c565b600a6107b79190611921565b6005546107c49190611a3f565b905080821015610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090611830565b60405180910390fd5b81600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016108679291906115f8565b60206040518083038186803b15801561087f57600080fd5b505afa158015610893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b791906112ff565b10156108f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ef90611730565b60405180910390fd5b82600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016109789291906115f8565b60206040518083038186803b15801561099057600080fd5b505afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c891906112ff565b1015610a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a00906116f0565b60405180910390fd5b82600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610a8791906115dd565b60206040518083038186803b158015610a9f57600080fd5b505afa158015610ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad791906112ff565b1015610b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0f906116b0565b60405180910390fd5b6000610b6a600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686610eae565b905080610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba390611750565b60405180910390fd5b6000610bfe600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163388610eae565b905080610c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c37906117b0565b60405180910390fd5b84843373ffffffffffffffffffffffffffffffffffffffff167f77f92a1b6a1a11de8ca49515ad4c1fad45632dd3442167d74b90b304a3c7a75860405160405180910390a45050505050565b60055481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cc2610d56565b8160058190555060019050919050565b610cda610d56565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d41906116d0565b60405180910390fd5b610d5381610dd4565b50565b610d5e610ee9565b73ffffffffffffffffffffffffffffffffffffffff16610d7c6104c2565b73ffffffffffffffffffffffffffffffffffffffff1614610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc990611790565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008183610ea6919061189d565b905092915050565b6000610edd8484848873ffffffffffffffffffffffffffffffffffffffff16610ef1909392919063ffffffff16565b60019050949350505050565b600033905090565b610f74846323b872dd60e01b858585604051602401610f1293929190611621565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610f7a565b50505050565b6000610fdc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166110419092919063ffffffff16565b905060008151111561103c5780806020019051810190610ffc91906112a5565b61103b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103290611810565b60405180910390fd5b5b505050565b60606110508484600085611059565b90509392505050565b60608247101561109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109590611710565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516110c791906115c6565b60006040518083038185875af1925050503d8060008114611104576040519150601f19603f3d011682016040523d82523d6000602084013e611109565b606091505b509150915061111a87838387611126565b92505050949350505050565b6060831561118957600083511415611181576111418561119c565b611180576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611177906117d0565b60405180910390fd5b5b829050611194565b61119383836111bf565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156111d25781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611206919061168e565b60405180910390fd5b60008135905061121e81611f2b565b92915050565b60008151905061123381611f42565b92915050565b60008135905061124881611f59565b92915050565b60008151905061125d81611f59565b92915050565b60008151905061127281611f70565b92915050565b60006020828403121561128e5761128d611be9565b5b600061129c8482850161120f565b91505092915050565b6000602082840312156112bb576112ba611be9565b5b60006112c984828501611224565b91505092915050565b6000602082840312156112e8576112e7611be9565b5b60006112f684828501611239565b91505092915050565b60006020828403121561131557611314611be9565b5b60006113238482850161124e565b91505092915050565b60006020828403121561134257611341611be9565b5b600061135084828501611263565b91505092915050565b61136281611acd565b82525050565b61137181611adf565b82525050565b60006113828261186b565b61138c8185611881565b935061139c818560208601611b58565b80840191505092915050565b6113b181611b22565b82525050565b60006113c282611876565b6113cc818561188c565b93506113dc818560208601611b58565b6113e581611bee565b840191505092915050565b60006113fd602f8361188c565b915061140882611c0c565b604082019050919050565b600061142060268361188c565b915061142b82611c5b565b604082019050919050565b600061144360398361188c565b915061144e82611caa565b604082019050919050565b600061146660268361188c565b915061147182611cf9565b604082019050919050565b600061148960238361188c565b915061149482611d48565b604082019050919050565b60006114ac601a8361188c565b91506114b782611d97565b602082019050919050565b60006114cf600c8361188c565b91506114da82611dc0565b602082019050919050565b60006114f260208361188c565b91506114fd82611de9565b602082019050919050565b600061151560198361188c565b915061152082611e12565b602082019050919050565b6000611538601d8361188c565b915061154382611e3b565b602082019050919050565b600061155b60268361188c565b915061156682611e64565b604082019050919050565b600061157e602a8361188c565b915061158982611eb3565b604082019050919050565b60006115a160158361188c565b91506115ac82611f02565b602082019050919050565b6115c081611b0b565b82525050565b60006115d28284611377565b915081905092915050565b60006020820190506115f26000830184611359565b92915050565b600060408201905061160d6000830185611359565b61161a6020830184611359565b9392505050565b60006060820190506116366000830186611359565b6116436020830185611359565b61165060408301846115b7565b949350505050565b600060208201905061166d6000830184611368565b92915050565b600060208201905061168860008301846113a8565b92915050565b600060208201905081810360008301526116a881846113b7565b905092915050565b600060208201905081810360008301526116c9816113f0565b9050919050565b600060208201905081810360008301526116e981611413565b9050919050565b6000602082019050818103600083015261170981611436565b9050919050565b6000602082019050818103600083015261172981611459565b9050919050565b600060208201905081810360008301526117498161147c565b9050919050565b600060208201905081810360008301526117698161149f565b9050919050565b60006020820190508181036000830152611789816114c2565b9050919050565b600060208201905081810360008301526117a9816114e5565b9050919050565b600060208201905081810360008301526117c981611508565b9050919050565b600060208201905081810360008301526117e98161152b565b9050919050565b600060208201905081810360008301526118098161154e565b9050919050565b6000602082019050818103600083015261182981611571565b9050919050565b6000602082019050818103600083015261184981611594565b9050919050565b600060208201905061186560008301846115b7565b92915050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006118a882611b0b565b91506118b383611b0b565b9250826118c3576118c2611bba565b5b828204905092915050565b6000808291508390505b6001851115611918578086048111156118f4576118f3611b8b565b5b60018516156119035780820291505b808102905061191185611bff565b94506118d8565b94509492505050565b600061192c82611b0b565b915061193783611b15565b92506119647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461196c565b905092915050565b60008261197c5760019050611a38565b8161198a5760009050611a38565b81600181146119a057600281146119aa576119d9565b6001915050611a38565b60ff8411156119bc576119bb611b8b565b5b8360020a9150848211156119d3576119d2611b8b565b5b50611a38565b5060208310610133831016604e8410600b8410161715611a0e5782820a905083811115611a0957611a08611b8b565b5b611a38565b611a1b84848460016118ce565b92509050818404811115611a3257611a31611b8b565b5b81810290505b9392505050565b6000611a4a82611b0b565b9150611a5583611b0b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611a8e57611a8d611b8b565b5b828202905092915050565b6000611aa482611b15565b9150611aaf83611b15565b925082821015611ac257611ac1611b8b565b5b828203905092915050565b6000611ad882611aeb565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611b2d82611b34565b9050919050565b6000611b3f82611b46565b9050919050565b6000611b5182611aeb565b9050919050565b60005b83811015611b76578082015181840152602081019050611b5b565b83811115611b85576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f546865206f776e657220646f6573206e6f74206861766520656e6f756768206260008201527f616c616e636520746f20737761702e0000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f546865206f776e657220646f6573206e6f74206861766520616c6c6f77616e6360008201527f6520666f722074686520736d61727420636f6e74726163742e00000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416c6c6f77616e636520666f722074686520627579657220697320746f6f206c60008201527f6f772e0000000000000000000000000000000000000000000000000000000000602082015250565b7f5553445420746f6b656e207472616e73666572206661696c6564000000000000600082015250565b7f42616c616e636520697320300000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d435320746f6b656e207472616e73666572206661696c656400000000000000600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5468652062757965722063616e6e6f742062652073616d652061732049434f2060008201527f6f776e65722e0000000000000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f4d696e20616d6f756e7420697320313020555344540000000000000000000000600082015250565b611f3481611acd565b8114611f3f57600080fd5b50565b611f4b81611adf565b8114611f5657600080fd5b50565b611f6281611b0b565b8114611f6d57600080fd5b50565b611f7981611b15565b8114611f8457600080fd5b5056fea2646970667358221220892698d2834404a00b50fdcf201b32600f8f829d9ccbec28c877148c38604e3764736f6c63430008070033000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000da5ac8f284537d6eab198801127a9d49b0cbdff5000000000000000000000000e187033c1ac8009afbb8f8e5b164bece8f00b990