60806040526012600a62000014919062000d7e565b64019b45a50062000026919062000dcf565b60035562000056606462000047600460035462000a9f60201b90919060201c565b62000b2260201b90919060201c565b60045562000086606462000077600460035462000a9f60201b90919060201c565b62000b2260201b90919060201c565b6005556000600b556002600c556000600d556000600e556000600f55600f54600d54600b54600c54600e54620000bd919062000e1a565b620000c9919062000e1a565b620000d5919062000e1a565b620000e1919062000e1a565b601055606460115560646012556064601355612710601455601e601a556064601b556000601f60146101000a81548160ff0219169083151502179055506000601f60156101000a81548160ff0219169083151502179055506103e860016003546200014d919062000dcf565b62000159919062000e84565b6020553480156200016957600080fd5b5060006200017c62000b7460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507346c228f2aafa17f943c7b6cb4f4ed6c732bfee0d601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600073c93acadcdeec53969c20bc2f99c03d179b344a5773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600073742cc95229c6d3bf3c80cc32f899f302f84250bc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600354600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620009c6919062000d7e565b64012a05f200620009d8919062000dcf565b604051620009e7919062000ecd565b60405180910390a3601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a62000a71919062000d7e565b63713fb30062000a82919062000dcf565b60405162000a91919062000ecd565b60405180910390a362001040565b600080830362000ab3576000905062000b1c565b6000828462000ac3919062000dcf565b905082848262000ad4919062000e84565b1462000b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b0e9062000f71565b60405180910390fd5b809150505b92915050565b600062000b6c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000b7c60201b60201c565b905092915050565b600033905090565b6000808311829062000bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bbd91906200101c565b60405180910390fd5b506000838562000bd7919062000e84565b9050809150509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c725780860481111562000c4a5762000c4962000be4565b5b600185161562000c5a5780820291505b808102905062000c6a8562000c13565b945062000c2a565b94509492505050565b60008262000c8d576001905062000d60565b8162000c9d576000905062000d60565b816001811462000cb6576002811462000cc15762000cf7565b600191505062000d60565b60ff84111562000cd65762000cd562000be4565b5b8360020a91508482111562000cf05762000cef62000be4565b5b5062000d60565b5060208310610133831016604e8410600b841016171562000d315782820a90508381111562000d2b5762000d2a62000be4565b5b62000d60565b62000d40848484600162000c20565b9250905081840481111562000d5a5762000d5962000be4565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d8b8262000d67565b915062000d988362000d71565b925062000dc77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c7b565b905092915050565b600062000ddc8262000d67565b915062000de98362000d67565b925082820262000df98162000d67565b9150828204841483151762000e135762000e1262000be4565b5b5092915050565b600062000e278262000d67565b915062000e348362000d67565b925082820190508082111562000e4f5762000e4e62000be4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e918262000d67565b915062000e9e8362000d67565b92508262000eb15762000eb062000e55565b5b828204905092915050565b62000ec78162000d67565b82525050565b600060208201905062000ee4600083018462000ebc565b92915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000f5960218362000eea565b915062000f668262000efb565b604082019050919050565b6000602082019050818103600083015262000f8c8162000f4a565b9050919050565b600081519050919050565b60005b8381101562000fbe57808201518184015260208101905062000fa1565b60008484015250505050565b6000601f19601f8301169050919050565b600062000fe88262000f93565b62000ff4818562000eea565b93506200100681856020860162000f9e565b620010118162000fca565b840191505092915050565b6000602082019050818103600083015262001038818462000fdb565b905092915050565b6144b580620010506000396000f3fe6080604052600436106102085760003560e01c806377b54bad11610118578063a8aa1b31116100a0578063dd62ed3e1161006f578063dd62ed3e14610739578063df20fd4914610776578063f2fde38b1461079f578063f4293890146107c8578063f887ea40146107df5761020f565b8063a8aa1b311461069c578063a9059cbb146106c7578063b2bdfa7b14610704578063bf0fc3ed1461072f5761020f565b806382528791116100e757806382528791146105db578063893d20e8146106045780638da5cb5b1461062f57806395d89b411461065a578063a70419d2146106855761020f565b806377b54bad1461050b57806378109e54146105485780637d1db4a5146105735780637fcddee51461059e5761020f565b80632b603c711161019b5780635d83e1d51161016a5780635d83e1d51461044c5780636ddd17131461047557806370a08231146104a0578063715018a6146104dd578063751039fc146104f45761020f565b80632b603c711461037c57806330c9a6a0146103b9578063313ce567146103f657806355265669146104215761020f565b806318160ddd116101d757806318160ddd146102d25780631df4ccfc146102fd57806323b872dd14610328578063293230b8146103655761020f565b80630445b6671461021457806306fdde031461023f57806308fd3d051461026a578063095ea7b3146102955761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061022961080a565b60405161023691906136c5565b60405180910390f35b34801561024b57600080fd5b50610254610810565b6040516102619190613770565b60405180910390f35b34801561027657600080fd5b5061027f61084d565b60405161028c91906137ad565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b79190613857565b610860565b6040516102c991906137ad565b60405180910390f35b3480156102de57600080fd5b506102e7610952565b6040516102f491906136c5565b60405180910390f35b34801561030957600080fd5b5061031261095c565b60405161031f91906136c5565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a9190613897565b610962565b60405161035c91906137ad565b60405180910390f35b34801561037157600080fd5b5061037a610b62565b005b34801561038857600080fd5b506103a3600480360381019061039e91906138ea565b610c14565b6040516103b091906137ad565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190613917565b610ce2565b6040516103ed91906136c5565b60405180910390f35b34801561040257600080fd5b5061040b610d54565b6040516104189190613960565b60405180910390f35b34801561042d57600080fd5b50610436610d5d565b60405161044391906136c5565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e9190613917565b610d9e565b005b34801561048157600080fd5b5061048a610e9d565b60405161049791906137ad565b60405180910390f35b3480156104ac57600080fd5b506104c760048036038101906104c291906138ea565b610eb0565b6040516104d491906136c5565b60405180910390f35b3480156104e957600080fd5b506104f2610ef9565b005b34801561050057600080fd5b5061050961104c565b005b34801561051757600080fd5b50610532600480360381019061052d9190613857565b6110f5565b60405161053f91906137ad565b60405180910390f35b34801561055457600080fd5b5061055d61125c565b60405161056a91906136c5565b60405180910390f35b34801561057f57600080fd5b50610588611262565b60405161059591906136c5565b60405180910390f35b3480156105aa57600080fd5b506105c560048036038101906105c0919061397b565b611268565b6040516105d291906137ad565b60405180910390f35b3480156105e757600080fd5b5061060260048036038101906105fd91906139bb565b61127d565b005b34801561061057600080fd5b50610619611523565b6040516106269190613a45565b60405180910390f35b34801561063b57600080fd5b50610644611532565b6040516106519190613a45565b60405180910390f35b34801561066657600080fd5b5061066f61155b565b60405161067c9190613770565b60405180910390f35b34801561069157600080fd5b5061069a611598565b005b3480156106a857600080fd5b506106b1611647565b6040516106be9190613a45565b60405180910390f35b3480156106d357600080fd5b506106ee60048036038101906106e99190613857565b61166d565b6040516106fb91906137ad565b60405180910390f35b34801561071057600080fd5b50610719611682565b6040516107269190613a45565b60405180910390f35b6107376116a6565b005b34801561074557600080fd5b50610760600480360381019061075b9190613a60565b611be0565b60405161076d91906136c5565b60405180910390f35b34801561078257600080fd5b5061079d60048036038101906107989190613acc565b611c67565b005b3480156107ab57600080fd5b506107c660048036038101906107c191906138ea565b611d6b565b005b3480156107d457600080fd5b506107dd611f2c565b005b3480156107eb57600080fd5b506107f4611f97565b6040516108019190613b6b565b60405180910390f35b60205481565b60606040518060400160405280600c81526020017f50657065204d616368696e650000000000000000000000000000000000000000815250905090565b601f60149054906101000a900460ff1681565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161094091906136c5565b60405180910390a36001905092915050565b6000600354905090565b60105481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b4e57610acd826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fbd9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610b59848484612021565b90509392505050565b610b6a612723565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bee90613bd2565b60405180910390fd5b6001601f60146101000a81548160ff021916908315150217905550565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019050919050565b6000610d4d610cef610d5d565b610d3f610d306002610d22601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610eb0565b61272b90919063ffffffff16565b8561272b90919063ffffffff16565b6127a590919063ffffffff16565b9050919050565b60006012905090565b6000610d99610d6c6000610eb0565b610d8b610d7a61dead610eb0565b6003546127ef90919063ffffffff16565b6127ef90919063ffffffff16565b905090565b610da6612723565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2a90613bd2565b60405180910390fd5b6001811015610e4157600080fd5b606481600354610e519190613c21565b610e5b9190613c92565b6005819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be51600554604051610e9291906136c5565b60405180910390a150565b601f60159054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f01612723565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590613bd2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611054612723565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d890613bd2565b60405180910390fd5b600354600481905550600354600581905550565b600080820361117b578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111379190613a45565b602060405180830381865afa158015611154573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111789190613cd8565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f83836040516111ac929190613d05565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611211929190613d05565b6020604051808303816000875af1158015611230573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112549190613d43565b905092915050565b60055481565b60045481565b60008261127483610ce2565b11905092915050565b611285612723565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130990613bd2565b60405180910390fd5b84601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b15601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516115149493929190613d70565b60405180910390a15050505050565b600061152d611532565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f50504d4500000000000000000000000000000000000000000000000000000000815250905090565b6115a0612723565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461162d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162490613bd2565b60405180910390fd5b600160128190555060016011819055506001601381905550565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061167a338484612021565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116ae612723565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461173b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173290613bd2565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118219190613dca565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f29190613dca565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b815260040161194e929190613df7565b6020604051808303816000875af115801561196d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119919190613dca565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430611b5730610eb0565b60008033426040518863ffffffff1660e01b8152600401611b7d96959493929190613e5b565b60606040518083038185885af1158015611b9b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611bc09190613ebc565b5050506001601f60156101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c6f612723565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf390613bd2565b60405180910390fd5b81601f60156101000a81548160ff021916908315150217905550806020819055507f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60602054601f60159054906101000a900460ff16604051611d5f929190613f0f565b60405180910390a15050565b611d73612723565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df790613bd2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6690613faa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611f94573d6000803e3d6000fd5b50565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290612005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffc9190613770565b60405180910390fd5b50600083856120149190613fca565b9050809150509392505050565b6000602160009054906101000a900460ff161561204a57612043848484612839565b905061271c565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120ee5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561214357601f60149054906101000a900460ff16612142576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121399061404a565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121c957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612203575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561225d5750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156122b75750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123115750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123675750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561247557600061237784610eb0565b9050600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561241d5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612473576005548382612431919061406a565b1115612472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246990614110565b60405180910390fd5b5b505b61247f8483612a0c565b612487612aa9565b1561249557612494612b80565b5b61251e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fbd9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126045750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612618576126138584866131a7565b61261a565b825b905061266e81600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135eb90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161270e91906136c5565b60405180910390a360019150505b9392505050565b600033905090565b600080830361273d576000905061279f565b6000828461274b9190613c21565b905082848261275a9190613c92565b1461279a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612791906141a2565b60405180910390fd5b809150505b92915050565b60006127e783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613649565b905092915050565b600061283183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fbd565b905092915050565b60006128c4826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fbd9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061295982600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135eb90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129f991906136c5565b60405180910390a3600190509392505050565b60045481111580612a665750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9c9061420e565b60405180910390fd5b5050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612b165750602160009054906101000a900460ff16155b8015612b2e5750601f60159054906101000a900460ff165b8015612b7b5750602054600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602160006101000a81548160ff0219169083151502179055506000612bab601a54601b54611268565b612bb757600b54612bba565b60005b90506000612bfa6002612bec601054612bde8660205461272b90919063ffffffff16565b6127a590919063ffffffff16565b6127a590919063ffffffff16565b90506000612c13826020546127ef90919063ffffffff16565b90506000600267ffffffffffffffff811115612c3257612c3161422e565b5b604051908082528060200260200182016040528015612c605781602001602082028036833780820191505090505b5090503081600081518110612c7857612c7761425d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612ce957612ce861425d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612d8c95949392919061434a565b600060405180830381600087803b158015612da657600080fd5b505af1158015612dba573d6000803e3d6000fd5b505050506000612dd382476127ef90919063ffffffff16565b90506000612dff612dee6002896127a590919063ffffffff16565b6010546127ef90919063ffffffff16565b90506000612e3b6002612e2d84612e1f8c8861272b90919063ffffffff16565b6127a590919063ffffffff16565b6127a590919063ffffffff16565b90506000612e6683612e58600c548761272b90919063ffffffff16565b6127a590919063ffffffff16565b90506000612e9184612e83600e548861272b90919063ffffffff16565b6127a590919063ffffffff16565b90506000612ebc85612eae600d548961272b90919063ffffffff16565b6127a590919063ffffffff16565b90506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612f06906143d5565b60006040518083038185875af1925050503d8060008114612f43576040519150601f19603f3d011682016040523d82523d6000602084013e612f48565b606091505b50509050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612f92906143d5565b60006040518083038185875af1925050503d8060008114612fcf576040519150601f19603f3d011682016040523d82523d6000602084013e612fd4565b606091505b505080915050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051613020906143d5565b60006040518083038185875af1925050503d806000811461305d576040519150601f19603f3d011682016040523d82523d6000602084013e613062565b606091505b5050809150506000905060008b111561317e57601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016130fe96959493929190613e5b565b60606040518083038185885af115801561311c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131419190613ebc565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c6040516131759291906143ea565b60405180910390a15b5050505050505050505050506000602160006101000a81548160ff021916908315150217905550565b6000806013549050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361320e57601154905061326a565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036132695760125490505b5b60006132a76014546132998461328b6010548a61272b90919063ffffffff16565b61272b90919063ffffffff16565b6127a590919063ffffffff16565b90506000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461330f5761330a6000610eb0565b61331b565b61331a61dead610eb0565b5b905060008161334960105461333b600f548761272b90919063ffffffff16565b6127a590919063ffffffff16565b6133539190613fca565b9050600061336a82856127ef90919063ffffffff16565b90506133be81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135eb90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134758260066000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135eb90919063ffffffff16565b60066000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161353791906136c5565b60405180910390a360008211156135ca5761355d826003546127ef90919063ffffffff16565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135c191906136c5565b60405180910390a35b6135dd84896127ef90919063ffffffff16565b955050505050509392505050565b60008082846135fa919061406a565b90508381101561363f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136369061445f565b60405180910390fd5b8091505092915050565b60008083118290613690576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136879190613770565b60405180910390fd5b506000838561369f9190613c92565b9050809150509392505050565b6000819050919050565b6136bf816136ac565b82525050565b60006020820190506136da60008301846136b6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561371a5780820151818401526020810190506136ff565b60008484015250505050565b6000601f19601f8301169050919050565b6000613742826136e0565b61374c81856136eb565b935061375c8185602086016136fc565b61376581613726565b840191505092915050565b6000602082019050818103600083015261378a8184613737565b905092915050565b60008115159050919050565b6137a781613792565b82525050565b60006020820190506137c2600083018461379e565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006137f8826137cd565b9050919050565b613808816137ed565b811461381357600080fd5b50565b600081359050613825816137ff565b92915050565b613834816136ac565b811461383f57600080fd5b50565b6000813590506138518161382b565b92915050565b6000806040838503121561386e5761386d6137c8565b5b600061387c85828601613816565b925050602061388d85828601613842565b9150509250929050565b6000806000606084860312156138b0576138af6137c8565b5b60006138be86828701613816565b93505060206138cf86828701613816565b92505060406138e086828701613842565b9150509250925092565b600060208284031215613900576138ff6137c8565b5b600061390e84828501613816565b91505092915050565b60006020828403121561392d5761392c6137c8565b5b600061393b84828501613842565b91505092915050565b600060ff82169050919050565b61395a81613944565b82525050565b60006020820190506139756000830184613951565b92915050565b60008060408385031215613992576139916137c8565b5b60006139a085828601613842565b92505060206139b185828601613842565b9150509250929050565b600080600080600060a086880312156139d7576139d66137c8565b5b60006139e588828901613816565b95505060206139f688828901613816565b9450506040613a0788828901613816565b9350506060613a1888828901613816565b9250506080613a2988828901613816565b9150509295509295909350565b613a3f816137ed565b82525050565b6000602082019050613a5a6000830184613a36565b92915050565b60008060408385031215613a7757613a766137c8565b5b6000613a8585828601613816565b9250506020613a9685828601613816565b9150509250929050565b613aa981613792565b8114613ab457600080fd5b50565b600081359050613ac681613aa0565b92915050565b60008060408385031215613ae357613ae26137c8565b5b6000613af185828601613ab7565b9250506020613b0285828601613842565b9150509250929050565b6000819050919050565b6000613b31613b2c613b27846137cd565b613b0c565b6137cd565b9050919050565b6000613b4382613b16565b9050919050565b6000613b5582613b38565b9050919050565b613b6581613b4a565b82525050565b6000602082019050613b806000830184613b5c565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613bbc6020836136eb565b9150613bc782613b86565b602082019050919050565b60006020820190508181036000830152613beb81613baf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c2c826136ac565b9150613c37836136ac565b9250828202613c45816136ac565b91508282048414831517613c5c57613c5b613bf2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c9d826136ac565b9150613ca8836136ac565b925082613cb857613cb7613c63565b5b828204905092915050565b600081519050613cd28161382b565b92915050565b600060208284031215613cee57613ced6137c8565b5b6000613cfc84828501613cc3565b91505092915050565b6000604082019050613d1a6000830185613a36565b613d2760208301846136b6565b9392505050565b600081519050613d3d81613aa0565b92915050565b600060208284031215613d5957613d586137c8565b5b6000613d6784828501613d2e565b91505092915050565b6000608082019050613d856000830187613a36565b613d926020830186613a36565b613d9f6040830185613a36565b613dac6060830184613a36565b95945050505050565b600081519050613dc4816137ff565b92915050565b600060208284031215613de057613ddf6137c8565b5b6000613dee84828501613db5565b91505092915050565b6000604082019050613e0c6000830185613a36565b613e196020830184613a36565b9392505050565b6000819050919050565b6000613e45613e40613e3b84613e20565b613b0c565b6136ac565b9050919050565b613e5581613e2a565b82525050565b600060c082019050613e706000830189613a36565b613e7d60208301886136b6565b613e8a6040830187613e4c565b613e976060830186613e4c565b613ea46080830185613a36565b613eb160a08301846136b6565b979650505050505050565b600080600060608486031215613ed557613ed46137c8565b5b6000613ee386828701613cc3565b9350506020613ef486828701613cc3565b9250506040613f0586828701613cc3565b9150509250925092565b6000604082019050613f2460008301856136b6565b613f31602083018461379e565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f946026836136eb565b9150613f9f82613f38565b604082019050919050565b60006020820190508181036000830152613fc381613f87565b9050919050565b6000613fd5826136ac565b9150613fe0836136ac565b9250828203905081811115613ff857613ff7613bf2565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006140346014836136eb565b915061403f82613ffe565b602082019050919050565b6000602082019050818103600083015261406381614027565b9050919050565b6000614075826136ac565b9150614080836136ac565b925082820190508082111561409857614097613bf2565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b60006140fa603e836136eb565b91506141058261409e565b604082019050919050565b60006020820190508181036000830152614129816140ed565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061418c6021836136eb565b915061419782614130565b604082019050919050565b600060208201905081810360008301526141bb8161417f565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006141f86011836136eb565b9150614203826141c2565b602082019050919050565b60006020820190508181036000830152614227816141eb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142c1816137ed565b82525050565b60006142d383836142b8565b60208301905092915050565b6000602082019050919050565b60006142f78261428c565b6143018185614297565b935061430c836142a8565b8060005b8381101561433d57815161432488826142c7565b975061432f836142df565b925050600181019050614310565b5085935050505092915050565b600060a08201905061435f60008301886136b6565b61436c6020830187613e4c565b818103604083015261437e81866142ec565b905061438d6060830185613a36565b61439a60808301846136b6565b9695505050505050565b600081905092915050565b50565b60006143bf6000836143a4565b91506143ca826143af565b600082019050919050565b60006143e0826143b2565b9150819050919050565b60006040820190506143ff60008301856136b6565b61440c60208301846136b6565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614449601b836136eb565b915061445482614413565b602082019050919050565b600060208201905081810360008301526144788161443c565b905091905056fea264697066735822122051cd2f2043ae65317356cf574cacadaaad839dc473835a5a5893c954d53dc2bd64736f6c63430008130033