60c06040526001600b556000600c556200002c600b54600c54620006bb60201b62001c721790919060201c565b600d556009600e556001600f5562000057600e54600f54620006bb60201b62001c721790919060201c565b60105573463fddf2a1a8d7d56aa1456e703f105914124d7d601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601160156101000a81548160ff02191690831515021790555069d3c21bcecceda10000006012556b97dd7d2157478b2e98000000601355348015620000f557600080fd5b506040518060400160405280600581526020017f5452554d500000000000000000000000000000000000000000000000000000008152506040518060400160405280600a81526020017f4d41474120544f4b454e000000000000000000000000000000000000000000008152506012336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38260019081620002309190620009c9565b508160029081620002429190620009c9565b5080600360006101000a81548160ff021916908360ff16021790555050505033601460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b97dd7d2157478b2e9800000060078190555060075460046000601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073c532a74256d3db42d0bf7a0400fefdbad769400890508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000382573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a8919062000b1a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000410573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000436919062000b1a565b6040518363ffffffff1660e01b81526004016200045592919062000b5d565b6020604051808303816000875af115801562000475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049b919062000b1a565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160066000620005186200071e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200064b6200074760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620006ac919062000b9b565b60405180910390a35062000ca5565b6000808284620006cc919062000be7565b90508381101562000714576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200070b9062000c83565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600033905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007d157607f821691505b602082108103620007e757620007e662000789565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000812565b6200085d868362000812565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008aa620008a46200089e8462000875565b6200087f565b62000875565b9050919050565b6000819050919050565b620008c68362000889565b620008de620008d582620008b1565b8484546200081f565b825550505050565b600090565b620008f5620008e6565b62000902818484620008bb565b505050565b5b818110156200092a576200091e600082620008eb565b60018101905062000908565b5050565b601f82111562000979576200094381620007ed565b6200094e8462000802565b810160208510156200095e578190505b620009766200096d8562000802565b83018262000907565b50505b505050565b600082821c905092915050565b60006200099e600019846008026200097e565b1980831691505092915050565b6000620009b983836200098b565b9150826002028217905092915050565b620009d4826200074f565b67ffffffffffffffff811115620009f057620009ef6200075a565b5b620009fc8254620007b8565b62000a098282856200092e565b600060209050601f83116001811462000a41576000841562000a2c578287015190505b62000a388582620009ab565b86555062000aa8565b601f19841662000a5186620007ed565b60005b8281101562000a7b5784890151825560018201915060208501945060208101905062000a54565b8683101562000a9b578489015162000a97601f8916826200098b565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ae28262000ab5565b9050919050565b62000af48162000ad5565b811462000b0057600080fd5b50565b60008151905062000b148162000ae9565b92915050565b60006020828403121562000b335762000b3262000ab0565b5b600062000b438482850162000b03565b91505092915050565b62000b578162000ad5565b82525050565b600060408201905062000b74600083018562000b4c565b62000b83602083018462000b4c565b9392505050565b62000b958162000875565b82525050565b600060208201905062000bb2600083018462000b8a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bf48262000875565b915062000c018362000875565b925082820190508082111562000c1c5762000c1b62000bb8565b5b92915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000c6b601b8362000c22565b915062000c788262000c33565b602082019050919050565b6000602082019050818103600083015262000c9e8162000c5c565b9050919050565b60805160a0516140a562000d1160003960008181610d500152818161207a0152818161230201528181612359015281816123ba0152612429015260008181610a8901528181612b0301528181612be401528181612c0b01528181612e2a0152612e5101526140a56000f3fe60806040526004361061021e5760003560e01c8063889b408c11610123578063c57a6c44116100ab578063e745b2541161006f578063e745b254146107d2578063ea2f0b37146107fd578063f2fde38b14610826578063fa716d131461084f578063fb0ecfa41461087a57610225565b8063c57a6c44146106ed578063d12a768814610716578063dd62ed3e14610741578063e083e9221461077e578063e0f07e3a146107a757610225565b806395d89b41116100f257806395d89b41146105f4578063a457c2d71461061f578063a9059cbb1461065c578063b2bdfa7b14610699578063c49b9a80146106c457610225565b8063889b408c1461054a5780638c0b5e22146105755780638da5cb5b146105a0578063906e9dd0146105cb57610225565b806333759dfb116101a65780634a74bb02116101755780634a74bb02146104795780635eb04347146104a45780636ac9a870146104cd57806370a08231146104f6578063715018a61461053357610225565b806333759dfb146103bd57806339509351146103e8578063437823ec1461042557806349bd5a5e1461044e57610225565b80630b4ae420116101ed5780630b4ae420146102e85780631694505e146102ff57806318160ddd1461032a57806323b872dd14610355578063313ce5671461039257610225565b8063043a28ee1461022a57806306e8781a1461025557806306fdde0314610280578063095ea7b3146102ab57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108a3565b60405161024c9190612f1e565b60405180910390f35b34801561026157600080fd5b5061026a6108a9565b6040516102779190612f1e565b60405180910390f35b34801561028c57600080fd5b506102956108af565b6040516102a29190612fc9565b60405180910390f35b3480156102b757600080fd5b506102d260048036038101906102cd919061307a565b610941565b6040516102df91906130d5565b60405180910390f35b3480156102f457600080fd5b506102fd61095f565b005b34801561030b57600080fd5b50610314610a87565b604051610321919061314f565b60405180910390f35b34801561033657600080fd5b5061033f610aab565b60405161034c9190612f1e565b60405180910390f35b34801561036157600080fd5b5061037c6004803603810190610377919061316a565b610ab5565b60405161038991906130d5565b60405180910390f35b34801561039e57600080fd5b506103a7610b8e565b6040516103b491906131d9565b60405180910390f35b3480156103c957600080fd5b506103d2610ba5565b6040516103df9190612f1e565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a919061307a565b610bab565b60405161041c91906130d5565b60405180910390f35b34801561043157600080fd5b5061044c600480360381019061044791906131f4565b610c5e565b005b34801561045a57600080fd5b50610463610d4e565b6040516104709190613230565b60405180910390f35b34801561048557600080fd5b5061048e610d72565b60405161049b91906130d5565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c6919061324b565b610d85565b005b3480156104d957600080fd5b506104f460048036038101906104ef9190613278565b610e24565b005b34801561050257600080fd5b5061051d600480360381019061051891906131f4565b610f48565b60405161052a9190612f1e565b60405180910390f35b34801561053f57600080fd5b50610548610f91565b005b34801561055657600080fd5b5061055f6110e4565b60405161056c9190612f1e565b60405180910390f35b34801561058157600080fd5b5061058a6110ea565b6040516105979190612f1e565b60405180910390f35b3480156105ac57600080fd5b506105b56110f0565b6040516105c29190613230565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed91906132f6565b611119565b005b34801561060057600080fd5b506106096111f2565b6040516106169190612fc9565b60405180910390f35b34801561062b57600080fd5b506106466004803603810190610641919061307a565b611284565b60405161065391906130d5565b60405180910390f35b34801561066857600080fd5b50610683600480360381019061067e919061307a565b611351565b60405161069091906130d5565b60405180910390f35b3480156106a557600080fd5b506106ae61136f565b6040516106bb9190613230565b60405180910390f35b3480156106d057600080fd5b506106eb60048036038101906106e6919061334f565b611395565b005b3480156106f957600080fd5b50610714600480360381019061070f919061324b565b61147e565b005b34801561072257600080fd5b5061072b61151d565b6040516107389190612f1e565b60405180910390f35b34801561074d57600080fd5b506107686004803603810190610763919061337c565b611523565b6040516107759190612f1e565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a091906131f4565b6115aa565b005b3480156107b357600080fd5b506107bc61186b565b6040516107c991906133cb565b60405180910390f35b3480156107de57600080fd5b506107e7611891565b6040516107f49190612f1e565b60405180910390f35b34801561080957600080fd5b50610824600480360381019061081f91906131f4565b611897565b005b34801561083257600080fd5b5061084d600480360381019061084891906131f4565b611987565b005b34801561085b57600080fd5b50610864611b48565b6040516108719190612f1e565b60405180910390f35b34801561088657600080fd5b506108a1600480360381019061089c9190613278565b611b4e565b005b600d5481565b600b5481565b6060600180546108be90613415565b80601f01602080910402602001604051908101604052809291908181526020018280546108ea90613415565b80156109375780601f1061090c57610100808354040283529160200191610937565b820191906000526020600020905b81548152906001019060200180831161091a57829003601f168201915b5050505050905090565b600061095561094e611cd0565b8484611cd8565b6001905092915050565b610967611cd0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109eb90613492565b60405180910390fd5b60004711610a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2e906134fe565b60405180910390fd5b610a3f6110f0565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610a84573d6000803e3d6000fd5b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600754905090565b6000610ac2848484611ea1565b610b8384610ace611cd0565b610b7e8560405180606001604052806028815260200161402360289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b34611cd0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293c9092919063ffffffff16565b611cd8565b600190509392505050565b6000600360009054906101000a900460ff16905090565b60105481565b6000610c54610bb8611cd0565b84610c4f8560056000610bc9611cd0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b611cd8565b6001905092915050565b610c66611cd0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cea90613492565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601160159054906101000a900460ff1681565b610d8d611cd0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1190613492565b60405180910390fd5b8060138190555050565b610e2c611cd0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb090613492565b60405180910390fd5b80600e8190555081600f81905550610ede600e54600f54611c7290919063ffffffff16565b6010819055506000610efd600f54600e54611c7290919063ffffffff16565b9050600f811115610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3a9061356a565b60405180910390fd5b505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f99611cd0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101d90613492565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60135481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611121611cd0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a590613492565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606002805461120190613415565b80601f016020809104026020016040519081016040528092919081815260200182805461122d90613415565b801561127a5780601f1061124f5761010080835404028352916020019161127a565b820191906000526020600020905b81548152906001019060200180831161125d57829003601f168201915b5050505050905090565b6000611347611291611cd0565b846113428560405180606001604052806025815260200161404b60259139600560006112bb611cd0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293c9092919063ffffffff16565b611cd8565b6001905092915050565b600061136561135e611cd0565b8484611ea1565b6001905092915050565b601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61139d611cd0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142190613492565b60405180910390fd5b80601160156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161147391906130d5565b60405180910390a150565b611486611cd0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a90613492565b60405180910390fd5b8060128190555050565b60125481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115b2611cd0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461163f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163690613492565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a4906135fc565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116e89190613230565b602060405180830381865afa158015611705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117299190613631565b11611769576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611760906136aa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61178d6110f0565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117c69190613230565b602060405180830381865afa1580156117e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118079190613631565b6040518363ffffffff1660e01b81526004016118249291906136ca565b6020604051808303816000875af1158015611843573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118679190613708565b5050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b61189f611cd0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461192c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192390613492565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61198f611cd0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1390613492565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a82906137a7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c5481565b611b56611cd0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bda90613492565b60405180910390fd5b80600b8190555081600c81905550611c08600b54600c54611c7290919063ffffffff16565b600d819055506000611c27600c54600b54611c7290919063ffffffff16565b9050600a811115611c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6490613813565b60405180910390fd5b505050565b6000808284611c819190613862565b905083811015611cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbd906138e2565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3e90613974565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dad90613a06565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e949190612f1e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0790613a98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7690613b2a565b60405180910390fd5b611f876110f0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ff55750611fc56110f0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120405760135481111561203f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203690613b96565b60405180910390fd5b5b600061204b30610f48565b9050600060125482101590508080156120715750601460009054906101000a900460ff16155b80156120c957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156120e15750601160159054906101000a900460ff165b15612240576001601460006101000a81548160ff021916908315150217905550600061212c60105461211e600e54866129a090919063ffffffff16565b612a1a90919063ffffffff16565b9050600047905061213c82612a64565b60006121518247612ca190919063ffffffff16565b9050600061217e600e54612170600e54856129a090919063ffffffff16565b612a1a90919063ffffffff16565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121e8573d6000803e3d6000fd5b506000612214601054612206600f548a6129a090919063ffffffff16565b612a1a90919063ffffffff16565b905061221f81612ceb565b6000601460006101000a81548160ff02191690831515021790555050505050505b6000601460009054906101000a900460ff16159050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122f65750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561230057600090505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156123a857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156123b257600090505b8015612497577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361242757600b54600881905550600c54600981905550600d54600a819055505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361249657600e54600881905550600f54600981905550601054600a819055505b5b801561278a5760006124c760646124b9600a54886129a090919063ffffffff16565b612a1a90919063ffffffff16565b905060006124de8287612ca190919063ffffffff16565b905061254c86604051806060016040528060268152602001613ffd60269139600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293c9092919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125e181600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061267682600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127169190612f1e565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161277b9190612f1e565b60405180910390a35050612934565b6127f684604051806060016040528060268152602001613ffd60269139600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293c9092919063ffffffff16565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061288b84600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161292b9190612f1e565b60405180910390a35b505050505050565b6000838311158290612984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297b9190612fc9565b60405180910390fd5b50600083856129939190613bb6565b9050809150509392505050565b60008083036129b25760009050612a14565b600082846129c09190613bea565b90508284826129cf9190613c5b565b14612a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0690613cfe565b60405180910390fd5b809150505b92915050565b6000612a5c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612dc1565b905092915050565b6000600267ffffffffffffffff811115612a8157612a80613d1e565b5b604051908082528060200260200182016040528015612aaf5781602001602082028036833780820191505090505b5090503081600081518110612ac757612ac6613d4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b909190613d91565b81600181518110612ba457612ba3613d4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c09307f000000000000000000000000000000000000000000000000000000000000000084611cd8565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c6b959493929190613eb7565b600060405180830381600087803b158015612c8557600080fd5b505af1158015612c99573d6000803e3d6000fd5b505050505050565b6000612ce383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061293c565b905092915050565b6001601160146101000a81548160ff0219169083151502179055506000612d1c600283612a1a90919063ffffffff16565b90506000612d338284612ca190919063ffffffff16565b90506000479050612d4383612a64565b6000612d588247612ca190919063ffffffff16565b9050612d648382612e24565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051612d9793929190613f11565b60405180910390a1505050506000601160146101000a81548160ff02191690831515021790555050565b60008083118290612e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dff9190612fc9565b60405180910390fd5b5060008385612e179190613c5b565b9050809150509392505050565b612e4f307f000000000000000000000000000000000000000000000000000000000000000084611cd8565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612e996110f0565b426040518863ffffffff1660e01b8152600401612ebb96959493929190613f48565b60606040518083038185885af1158015612ed9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612efe9190613fa9565b5050505050565b6000819050919050565b612f1881612f05565b82525050565b6000602082019050612f336000830184612f0f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f73578082015181840152602081019050612f58565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f9b82612f39565b612fa58185612f44565b9350612fb5818560208601612f55565b612fbe81612f7f565b840191505092915050565b60006020820190508181036000830152612fe38184612f90565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061301b82612ff0565b9050919050565b61302b81613010565b811461303657600080fd5b50565b60008135905061304881613022565b92915050565b61305781612f05565b811461306257600080fd5b50565b6000813590506130748161304e565b92915050565b6000806040838503121561309157613090612feb565b5b600061309f85828601613039565b92505060206130b085828601613065565b9150509250929050565b60008115159050919050565b6130cf816130ba565b82525050565b60006020820190506130ea60008301846130c6565b92915050565b6000819050919050565b600061311561311061310b84612ff0565b6130f0565b612ff0565b9050919050565b6000613127826130fa565b9050919050565b60006131398261311c565b9050919050565b6131498161312e565b82525050565b60006020820190506131646000830184613140565b92915050565b60008060006060848603121561318357613182612feb565b5b600061319186828701613039565b93505060206131a286828701613039565b92505060406131b386828701613065565b9150509250925092565b600060ff82169050919050565b6131d3816131bd565b82525050565b60006020820190506131ee60008301846131ca565b92915050565b60006020828403121561320a57613209612feb565b5b600061321884828501613039565b91505092915050565b61322a81613010565b82525050565b60006020820190506132456000830184613221565b92915050565b60006020828403121561326157613260612feb565b5b600061326f84828501613065565b91505092915050565b6000806040838503121561328f5761328e612feb565b5b600061329d85828601613065565b92505060206132ae85828601613065565b9150509250929050565b60006132c382612ff0565b9050919050565b6132d3816132b8565b81146132de57600080fd5b50565b6000813590506132f0816132ca565b92915050565b60006020828403121561330c5761330b612feb565b5b600061331a848285016132e1565b91505092915050565b61332c816130ba565b811461333757600080fd5b50565b60008135905061334981613323565b92915050565b60006020828403121561336557613364612feb565b5b60006133738482850161333a565b91505092915050565b6000806040838503121561339357613392612feb565b5b60006133a185828601613039565b92505060206133b285828601613039565b9150509250929050565b6133c5816132b8565b82525050565b60006020820190506133e060008301846133bc565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061342d57607f821691505b6020821081036134405761343f6133e6565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061347c602083612f44565b915061348782613446565b602082019050919050565b600060208201905081810360008301526134ab8161346f565b9050919050565b7f43616e2774207769746864726177206e65676174697665206f72207a65726f00600082015250565b60006134e8601f83612f44565b91506134f3826134b2565b602082019050919050565b60006020820190508181036000830152613517816134db565b9050919050565b7f53656c6c204665652073686f756c6420626520313525206f72206c6573730000600082015250565b6000613554601e83612f44565b915061355f8261351e565b602082019050919050565b6000602082019050818103600083015261358381613547565b9050919050565b7f43616e277420776974686472617720746f6b656e732064657374696e6564206660008201527f6f72206c69717569646974790000000000000000000000000000000000000000602082015250565b60006135e6602c83612f44565b91506135f18261358a565b604082019050919050565b60006020820190508181036000830152613615816135d9565b9050919050565b60008151905061362b8161304e565b92915050565b60006020828403121561364757613646612feb565b5b60006136558482850161361c565b91505092915050565b7f43616e2774207769746864726177203000000000000000000000000000000000600082015250565b6000613694601083612f44565b915061369f8261365e565b602082019050919050565b600060208201905081810360008301526136c381613687565b9050919050565b60006040820190506136df6000830185613221565b6136ec6020830184612f0f565b9392505050565b60008151905061370281613323565b92915050565b60006020828403121561371e5761371d612feb565b5b600061372c848285016136f3565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613791602683612f44565b915061379c82613735565b604082019050919050565b600060208201905081810360008301526137c081613784565b9050919050565b7f427579204665652073686f756c6420626520313025206f72206c657373000000600082015250565b60006137fd601d83612f44565b9150613808826137c7565b602082019050919050565b6000602082019050818103600083015261382c816137f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061386d82612f05565b915061387883612f05565b92508282019050808211156138905761388f613833565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006138cc601b83612f44565b91506138d782613896565b602082019050919050565b600060208201905081810360008301526138fb816138bf565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061395e602483612f44565b915061396982613902565b604082019050919050565b6000602082019050818103600083015261398d81613951565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139f0602283612f44565b91506139fb82613994565b604082019050919050565b60006020820190508181036000830152613a1f816139e3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a82602583612f44565b9150613a8d82613a26565b604082019050919050565b60006020820190508181036000830152613ab181613a75565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b14602383612f44565b9150613b1f82613ab8565b604082019050919050565b60006020820190508181036000830152613b4381613b07565b9050919050565b7f5472616e73616374696f6e2073697a65206c696d697420726561636865640000600082015250565b6000613b80601e83612f44565b9150613b8b82613b4a565b602082019050919050565b60006020820190508181036000830152613baf81613b73565b9050919050565b6000613bc182612f05565b9150613bcc83612f05565b9250828203905081811115613be457613be3613833565b5b92915050565b6000613bf582612f05565b9150613c0083612f05565b9250828202613c0e81612f05565b91508282048414831517613c2557613c24613833565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c6682612f05565b9150613c7183612f05565b925082613c8157613c80613c2c565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ce8602183612f44565b9150613cf382613c8c565b604082019050919050565b60006020820190508181036000830152613d1781613cdb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d8b81613022565b92915050565b600060208284031215613da757613da6612feb565b5b6000613db584828501613d7c565b91505092915050565b6000819050919050565b6000613de3613dde613dd984613dbe565b6130f0565b612f05565b9050919050565b613df381613dc8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e2e81613010565b82525050565b6000613e408383613e25565b60208301905092915050565b6000602082019050919050565b6000613e6482613df9565b613e6e8185613e04565b9350613e7983613e15565b8060005b83811015613eaa578151613e918882613e34565b9750613e9c83613e4c565b925050600181019050613e7d565b5085935050505092915050565b600060a082019050613ecc6000830188612f0f565b613ed96020830187613dea565b8181036040830152613eeb8186613e59565b9050613efa6060830185613221565b613f076080830184612f0f565b9695505050505050565b6000606082019050613f266000830186612f0f565b613f336020830185612f0f565b613f406040830184612f0f565b949350505050565b600060c082019050613f5d6000830189613221565b613f6a6020830188612f0f565b613f776040830187613dea565b613f846060830186613dea565b613f916080830185613221565b613f9e60a0830184612f0f565b979650505050505050565b600080600060608486031215613fc257613fc1612feb565b5b6000613fd08682870161361c565b9350506020613fe18682870161361c565b9250506040613ff28682870161361c565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122009072c5e94ec3098c7cbf58b249f45a00795ee65fbfebeef82b8a8b4573d167b64736f6c63430008110033