60806040526000600455600060055560006006556000600755600060085560006009556000600e60146101000a81548160ff0219169083151502179055506000600e60156101000a81548160ff0219169083151502179055503480156200006557600080fd5b50604051620044fa380380620044fa83398181016040528101906200008b91906200089c565b60006200009d6200082a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736680151800526a455b2d00f8cc5b4eafe6be38de600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000620002286200082a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60026000620005296200082a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604b60646012600a620005cc919062000a7d565b6402540be400620005de919062000ace565b620005ea919062000b48565b620005f6919062000ace565b600160006200060a6200082a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960646012600a6200065c919062000a7d565b6402540be4006200066e919062000ace565b6200067a919062000b48565b62000686919062000ace565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620006d96200082a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef604b60646012600a6200073c919062000a7d565b6402540be4006200074e919062000ace565b6200075a919062000b48565b62000766919062000ace565b60405162000775919062000b91565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601960646012600a620007e1919062000a7d565b6402540be400620007f3919062000ace565b620007ff919062000b48565b6200080b919062000ace565b6040516200081a919062000b91565b60405180910390a3505062000bae565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008648262000837565b9050919050565b620008768162000857565b81146200088257600080fd5b50565b60008151905062000896816200086b565b92915050565b60008060408385031215620008b657620008b562000832565b5b6000620008c68582860162000885565b9250506020620008d98582860162000885565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200097157808604811115620009495762000948620008e3565b5b6001851615620009595780820291505b8081029050620009698562000912565b945062000929565b94509492505050565b6000826200098c576001905062000a5f565b816200099c576000905062000a5f565b8160018114620009b55760028114620009c057620009f6565b600191505062000a5f565b60ff841115620009d557620009d4620008e3565b5b8360020a915084821115620009ef57620009ee620008e3565b5b5062000a5f565b5060208310610133831016604e8410600b841016171562000a305782820a90508381111562000a2a5762000a29620008e3565b5b62000a5f565b62000a3f84848460016200091f565b9250905081840481111562000a595762000a58620008e3565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000a8a8262000a66565b915062000a978362000a70565b925062000ac67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200097a565b905092915050565b600062000adb8262000a66565b915062000ae88362000a66565b925082820262000af88162000a66565b9150828204841483151762000b125762000b11620008e3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b558262000a66565b915062000b628362000a66565b92508262000b755762000b7462000b19565b5b828204905092915050565b62000b8b8162000a66565b82525050565b600060208201905062000ba8600083018462000b80565b92915050565b61393c8062000bbe6000396000f3fe6080604052600436106101c65760003560e01c8063579285be116100f757806395d89b4111610095578063d24843c711610064578063d24843c71461061e578063dd62ed3e14610647578063ea414b2814610684578063f2fde38b146106ad576101cd565b806395d89b4114610571578063a9059cbb1461059c578063c4590d3f146105d9578063cd33918814610602576101cd565b8063715018a6116100d1578063715018a6146104d957806373889f4a146104f057806385b27c851461051b5780638da5cb5b14610546576101cd565b8063579285be1461044a57806364998def1461047357806370a082311461049c576101cd565b8063313ce5671161016457806349bd5a5e1161013e57806349bd5a5e146103b45780635165be87146103df57806351bc3c851461040a57806352f7c98814610421576101cd565b8063313ce5671461033357806336db71291461035e5780634706240214610389576101cd565b80631f53ac02116101a05780631f53ac021461026557806323b872dd1461028e5780632a11ced0146102cb5780632b14ca5614610308576101cd565b806306fdde03146101d2578063095ea7b3146101fd57806318160ddd1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106d6565b6040516101f49190612a21565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612adc565b610713565b6040516102319190612b37565b60405180910390f35b34801561024657600080fd5b5061024f610731565b60405161025c9190612b61565b60405180910390f35b34801561027157600080fd5b5061028c60048036038101906102879190612b7c565b610756565b005b34801561029a57600080fd5b506102b560048036038101906102b09190612ba9565b6107f7565b6040516102c29190612b37565b60405180910390f35b3480156102d757600080fd5b506102f260048036038101906102ed9190612bfc565b6108ed565b6040516102ff9190612c38565b60405180910390f35b34801561031457600080fd5b5061031d61092c565b60405161032a9190612b61565b60405180910390f35b34801561033f57600080fd5b50610348610932565b6040516103559190612c6f565b60405180910390f35b34801561036a57600080fd5b5061037361093b565b6040516103809190612b61565b60405180910390f35b34801561039557600080fd5b5061039e610941565b6040516103ab9190612b61565b60405180910390f35b3480156103c057600080fd5b506103c9610947565b6040516103d69190612c38565b60405180910390f35b3480156103eb57600080fd5b506103f461096d565b6040516104019190612b61565b60405180910390f35b34801561041657600080fd5b5061041f610973565b005b34801561042d57600080fd5b5061044860048036038101906104439190612c8a565b610a8a565b005b34801561045657600080fd5b50610471600480360381019061046c9190612b7c565b610b2d565b005b34801561047f57600080fd5b5061049a60048036038101906104959190612bfc565b610c06565b005b3480156104a857600080fd5b506104c360048036038101906104be9190612b7c565b610ca7565b6040516104d09190612b61565b60405180910390f35b3480156104e557600080fd5b506104ee610cf0565b005b3480156104fc57600080fd5b50610505610e43565b6040516105129190612b61565b60405180910390f35b34801561052757600080fd5b50610530610e50565b60405161053d9190612b61565b60405180910390f35b34801561055257600080fd5b5061055b610e56565b6040516105689190612c38565b60405180910390f35b34801561057d57600080fd5b50610586610e7f565b6040516105939190612a21565b60405180910390f35b3480156105a857600080fd5b506105c360048036038101906105be9190612adc565b610ebc565b6040516105d09190612b37565b60405180910390f35b3480156105e557600080fd5b5061060060048036038101906105fb9190612c8a565b610eda565b005b61061c60048036038101906106179190612cca565b610f85565b005b34801561062a57600080fd5b5061064560048036038101906106409190612bfc565b611400565b005b34801561065357600080fd5b5061066e60048036038101906106699190612d57565b6114a1565b60405161067b9190612b61565b60405180910390f35b34801561069057600080fd5b506106ab60048036038101906106a69190612b7c565b611528565b005b3480156106b957600080fd5b506106d460048036038101906106cf9190612b7c565b611601565b005b60606040518060400160405280600581526020017f526174696f000000000000000000000000000000000000000000000000000000815250905090565b60006107276107206117c2565b84846117ca565b6001905092915050565b60006012600a6107419190612ef9565b6402540be4006107519190612f44565b905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107976117c2565b73ffffffffffffffffffffffffffffffffffffffff16036107f45780600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600061080484848461195e565b6108e2846108106117c2565b6108dd856040518060400160405280600d81526020017f6c6f7720616c6c6f77616e636500000000000000000000000000000000000000815250600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108936117c2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252c9092919063ffffffff16565b6117ca565b600190509392505050565b600b81815481106108fd57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60006012905090565b60075481565b60045481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b61097b610e56565b73ffffffffffffffffffffffffffffffffffffffff166109996117c2565b73ffffffffffffffffffffffffffffffffffffffff161480610a0f5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109f76117c2565b73ffffffffffffffffffffffffffffffffffffffff16145b610a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4590612fd2565b60405180910390fd5b6000610a5930610ca7565b90506000811115610a6e57610a6d81612590565b5b60004790506000811115610a8657610a85816127c0565b5b5050565b610a926117c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b169061303e565b60405180910390fd5b610b298282612957565b5050565b610b356117c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb99061303e565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c0e6117c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c929061303e565b60405180910390fd5b610ca481612969565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610cf86117c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7c9061303e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600b80549050905090565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f526174696f000000000000000000000000000000000000000000000000000000815250905090565b6000610ed0610ec96117c2565b848461195e565b6001905092915050565b610ee26117c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f669061303e565b60405180910390fd5b610f7882612973565b610f818161297d565b5050565b610f8d6117c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110119061303e565b60405180910390fd5b600e60149054906101000a900460ff161561106a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611061906130d0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ed9190613105565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611168573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118c9190613105565b6040518363ffffffff1660e01b81526004016111a9929190613132565b6020604051808303816000875af11580156111c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ec9190613105565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719343061126730610ca7565b600080611272610e56565b426040518863ffffffff1660e01b8152600401611294969594939291906131a0565b60606040518083038185885af11580156112b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112d79190613216565b505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161136b929190613269565b6020604051808303816000875af115801561138a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ae91906132be565b506113b98686612957565b6113c284612973565b6113cb8361297d565b6113d482612969565b6113dd81612987565b6001600e60146101000a81548160ff021916908315150217905550505050505050565b6114086117c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148c9061303e565b60405180910390fd5b61149e81612987565b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115306117c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b49061303e565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116096117c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d9061303e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc90613337565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118345750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186a906133a3565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119519190612b61565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c490613435565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a33906134c7565b60405180910390fd5b60008111611a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7690613559565b60405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b255750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d4557600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611bc75750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c8d5760075482611bd985610ca7565b611be39190613579565b111580611bf257506000600754145b611c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c28906135f9565b60405180910390fd5b60065482111580611c4457506000600654145b611c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7a90613665565b60405180910390fd5b6004549050611d44565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d3e5760065482111580611cf557506000600654145b611d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2b90613665565b60405180910390fd5b6005549050611d43565b600090505b5b5b600060648284611d559190612f44565b611d5f91906136b4565b905060008184611d6f91906136e5565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dbc91906136e5565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4a9190613579565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600e60159054906101000a900460ff16158015611f3c5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b8015611f955750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b8015611fad5750600e60149054906101000a900460ff165b15611fdf576009548110611fde57611fc481612590565b60004790506000811115611fdc57611fdb816127c0565b5b505b5b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120875750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156120d257506000600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b1561213b57600b869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121869190613579565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000831115612238573073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161222f9190612b61565b60405180910390a35b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122e05750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b801561232b57506000600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156124be5760005b600b805490508110156124bc578773ffffffffffffffffffffffffffffffffffffffff16600b828154811061236b5761236a613719565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036124a957600b6001600b805490506123c591906136e5565b815481106123d6576123d5613719565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b828154811061241557612414613719565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b80548061246f5761246e613748565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556124bc565b80806124b490613777565b915050612333565b505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161251b9190612b61565b60405180910390a350505050505050565b6000838311158290612574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256b9190612a21565b60405180910390fd5b506000838561258391906136e5565b9050809150509392505050565b6001600e60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156125c8576125c76137bf565b5b6040519080825280602002602001820160405280156125f65781602001602082028036833780820191505090505b509050308160008151811061260e5761260d613719565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126cb9190613105565b816001815181106126df576126de613719565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161276f9594939291906138ac565b600060405180830381600087803b15801561278957600080fd5b505af115801561279d573d6000803e3d6000fd5b50505050506000600e60156101000a81548160ff02191690831515021790555050565b60006064600854836127d29190612f44565b6127dc91906136b4565b9050600081836127ec91906136e5565b9050600060646014836127ff9190612f44565b61280991906136b4565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015612873573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156128dc573d6000803e3d6000fd5b50600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc828461292591906136e5565b9081150290604051600060405180830381858888f19350505050158015612950573d6000803e3d6000fd5b5050505050565b81600481905550806005819055505050565b8060098190555050565b8060068190555050565b8060078190555050565b8060088190555050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129cb5780820151818401526020810190506129b0565b60008484015250505050565b6000601f19601f8301169050919050565b60006129f382612991565b6129fd818561299c565b9350612a0d8185602086016129ad565b612a16816129d7565b840191505092915050565b60006020820190508181036000830152612a3b81846129e8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a7382612a48565b9050919050565b612a8381612a68565b8114612a8e57600080fd5b50565b600081359050612aa081612a7a565b92915050565b6000819050919050565b612ab981612aa6565b8114612ac457600080fd5b50565b600081359050612ad681612ab0565b92915050565b60008060408385031215612af357612af2612a43565b5b6000612b0185828601612a91565b9250506020612b1285828601612ac7565b9150509250929050565b60008115159050919050565b612b3181612b1c565b82525050565b6000602082019050612b4c6000830184612b28565b92915050565b612b5b81612aa6565b82525050565b6000602082019050612b766000830184612b52565b92915050565b600060208284031215612b9257612b91612a43565b5b6000612ba084828501612a91565b91505092915050565b600080600060608486031215612bc257612bc1612a43565b5b6000612bd086828701612a91565b9350506020612be186828701612a91565b9250506040612bf286828701612ac7565b9150509250925092565b600060208284031215612c1257612c11612a43565b5b6000612c2084828501612ac7565b91505092915050565b612c3281612a68565b82525050565b6000602082019050612c4d6000830184612c29565b92915050565b600060ff82169050919050565b612c6981612c53565b82525050565b6000602082019050612c846000830184612c60565b92915050565b60008060408385031215612ca157612ca0612a43565b5b6000612caf85828601612ac7565b9250506020612cc085828601612ac7565b9150509250929050565b60008060008060008060c08789031215612ce757612ce6612a43565b5b6000612cf589828a01612ac7565b9650506020612d0689828a01612ac7565b9550506040612d1789828a01612ac7565b9450506060612d2889828a01612ac7565b9350506080612d3989828a01612ac7565b92505060a0612d4a89828a01612ac7565b9150509295509295509295565b60008060408385031215612d6e57612d6d612a43565b5b6000612d7c85828601612a91565b9250506020612d8d85828601612a91565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612e1d57808604811115612df957612df8612d97565b5b6001851615612e085780820291505b8081029050612e1685612dc6565b9450612ddd565b94509492505050565b600082612e365760019050612ef2565b81612e445760009050612ef2565b8160018114612e5a5760028114612e6457612e93565b6001915050612ef2565b60ff841115612e7657612e75612d97565b5b8360020a915084821115612e8d57612e8c612d97565b5b50612ef2565b5060208310610133831016604e8410600b8410161715612ec85782820a905083811115612ec357612ec2612d97565b5b612ef2565b612ed58484846001612dd3565b92509050818404811115612eec57612eeb612d97565b5b81810290505b9392505050565b6000612f0482612aa6565b9150612f0f83612c53565b9250612f3c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e26565b905092915050565b6000612f4f82612aa6565b9150612f5a83612aa6565b9250828202612f6881612aa6565b91508282048414831517612f7f57612f7e612d97565b5b5092915050565b7f496e76616c6964207065726d697373696f6e0000000000000000000000000000600082015250565b6000612fbc60128361299c565b9150612fc782612f86565b602082019050919050565b60006020820190508181036000830152612feb81612faf565b9050919050565b7f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b600061302860178361299c565b915061303382612ff2565b602082019050919050565b600060208201905081810360008301526130578161301b565b9050919050565b7f746f6b656e20697320616c726561647920656e61626c656420666f722074726160008201527f64696e6700000000000000000000000000000000000000000000000000000000602082015250565b60006130ba60248361299c565b91506130c58261305e565b604082019050919050565b600060208201905081810360008301526130e9816130ad565b9050919050565b6000815190506130ff81612a7a565b92915050565b60006020828403121561311b5761311a612a43565b5b6000613129848285016130f0565b91505092915050565b60006040820190506131476000830185612c29565b6131546020830184612c29565b9392505050565b6000819050919050565b6000819050919050565b600061318a6131856131808461315b565b613165565b612aa6565b9050919050565b61319a8161316f565b82525050565b600060c0820190506131b56000830189612c29565b6131c26020830188612b52565b6131cf6040830187613191565b6131dc6060830186613191565b6131e96080830185612c29565b6131f660a0830184612b52565b979650505050505050565b60008151905061321081612ab0565b92915050565b60008060006060848603121561322f5761322e612a43565b5b600061323d86828701613201565b935050602061324e86828701613201565b925050604061325f86828701613201565b9150509250925092565b600060408201905061327e6000830185612c29565b61328b6020830184612b52565b9392505050565b61329b81612b1c565b81146132a657600080fd5b50565b6000815190506132b881613292565b92915050565b6000602082840312156132d4576132d3612a43565b5b60006132e2848285016132a9565b91505092915050565b7f6e6577206f776e6572206973207a65726f206164647265737300000000000000600082015250565b600061332160198361299c565b915061332c826132eb565b602082019050919050565b6000602082019050818103600083015261335081613314565b9050919050565b7f617070726f7665207a65726f2061646472657373000000000000000000000000600082015250565b600061338d60148361299c565b915061339882613357565b602082019050919050565b600060208201905081810360008301526133bc81613380565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061341f60258361299c565b915061342a826133c3565b604082019050919050565b6000602082019050818103600083015261344e81613412565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134b160238361299c565b91506134bc82613455565b604082019050919050565b600060208201905081810360008301526134e0816134a4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061354360298361299c565b915061354e826134e7565b604082019050919050565b6000602082019050818103600083015261357281613536565b9050919050565b600061358482612aa6565b915061358f83612aa6565b92508282019050808211156135a7576135a6612d97565b5b92915050565b7f457863656564206d617820616d6f756e74207065722077616c6c657400000000600082015250565b60006135e3601c8361299c565b91506135ee826135ad565b602082019050919050565b60006020820190508181036000830152613612816135d6565b9050919050565b7f457863656564206d617820616d6f756e74207065722074780000000000000000600082015250565b600061364f60188361299c565b915061365a82613619565b602082019050919050565b6000602082019050818103600083015261367e81613642565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136bf82612aa6565b91506136ca83612aa6565b9250826136da576136d9613685565b5b828204905092915050565b60006136f082612aa6565b91506136fb83612aa6565b925082820390508181111561371357613712612d97565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061378282612aa6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137b4576137b3612d97565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61382381612a68565b82525050565b6000613835838361381a565b60208301905092915050565b6000602082019050919050565b6000613859826137ee565b61386381856137f9565b935061386e8361380a565b8060005b8381101561389f5781516138868882613829565b975061389183613841565b925050600181019050613872565b5085935050505092915050565b600060a0820190506138c16000830188612b52565b6138ce6020830187613191565b81810360408301526138e0818661384e565b90506138ef6060830185612c29565b6138fc6080830184612b52565b969550505050505056fea2646970667358221220b0cef8bfbde5416a407665b5775e9e682ee2e0edcebee41bbad7c2627ec2db0764736f6c634300081300330000000000000000000000006680151800526a455b2d00f8cc5b4eafe6be38de000000000000000000000000f13aeb59d5711bc3017911c7806e3b9a7b05222a