60806040526009600a6200001491906200091e565b6602c36280289c716200002891906200096e565b5f19620000369190620009e5565b5f1962000044919062000a1c565b6006555f600855601e6009555f600a556046600b55600a54600c55600b54600d55600c54600e55600d54600f55730b2500b23dda4e6f9f3f8e9b99df6eca5c6a86f760125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730b2500b23dda4e6f9f3f8e9b99df6eca5c6a86f760135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555060646009600a6200015f91906200091e565b6602c36280289c716200017391906200096e565b6200017f919062000a56565b60026200018d91906200096e565b60165560646009600a620001a291906200091e565b6602c36280289c71620001b691906200096e565b620001c2919062000a56565b6002620001d091906200096e565b6017556103e86009600a620001e691906200091e565b6602c36280289c71620001fa91906200096e565b62000206919062000a56565b60016200021491906200096e565b60185534801562000223575f80fd5b505f620002356200075e60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f620002e76200075e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ec919062000af2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000452573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000478919062000af2565b6040518363ffffffff1660e01b81526004016200049792919062000b33565b6020604051808303815f875af1158015620004b4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004da919062000af2565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f6200052e6200076560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620006ce6200075e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200072c91906200091e565b6602c36280289c716200074091906200096e565b6040516200074f919062000b6f565b60405180910390a35062000b8a565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200081657808604811115620007ee57620007ed6200078c565b5b6001851615620007fe5780820291505b80810290506200080e85620007b9565b9450620007ce565b94509492505050565b5f8262000830576001905062000902565b816200083f575f905062000902565b8160018114620008585760028114620008635762000899565b600191505062000902565b60ff8411156200087857620008776200078c565b5b8360020a9150848211156200089257620008916200078c565b5b5062000902565b5060208310610133831016604e8410600b8410161715620008d35782820a905083811115620008cd57620008cc6200078c565b5b62000902565b620008e28484846001620007c5565b92509050818404811115620008fc57620008fb6200078c565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200092a8262000909565b9150620009378362000912565b9250620009667fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200081f565b905092915050565b5f6200097a8262000909565b9150620009878362000909565b9250828202620009978162000909565b91508282048414831517620009b157620009b06200078c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620009f18262000909565b9150620009fe8362000909565b92508262000a115762000a10620009b8565b5b828206905092915050565b5f62000a288262000909565b915062000a358362000909565b925082820390508181111562000a505762000a4f6200078c565b5b92915050565b5f62000a628262000909565b915062000a6f8362000909565b92508262000a825762000a81620009b8565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000abc8262000a91565b9050919050565b62000ace8162000ab0565b811462000ad9575f80fd5b50565b5f8151905062000aec8162000ac3565b92915050565b5f6020828403121562000b0a5762000b0962000a8d565b5b5f62000b198482850162000adc565b91505092915050565b62000b2d8162000ab0565b82525050565b5f60408201905062000b485f83018562000b22565b62000b57602083018462000b22565b9392505050565b62000b698162000909565b82525050565b5f60208201905062000b845f83018462000b5e565b92915050565b613e9e8062000b985f395ff3fe6080604052600436106101da575f3560e01c806374010ece11610101578063a2a957bb11610094578063c492f04611610063578063c492f04614610661578063dd62ed3e14610689578063ea1644d5146106c5578063f2fde38b146106ed576101e1565b8063a2a957bb146105ab578063a9059cbb146105d3578063bfd792841461060f578063c3c8cd801461064b576101e1565b80638f70ccf7116100d05780638f70ccf7146105075780638f9a55c01461052f57806395d89b411461055957806398a5c31514610583576101e1565b806374010ece1461044f5780637d1db4a5146104775780637f2feddc146104a15780638da5cb5b146104dd576101e1565b80632fd689e3116101795780636d8aa8f8116101485780636d8aa8f8146103bf5780636fc3eaec146103e757806370a08231146103fd578063715018a614610439576101e1565b80632fd689e314610319578063313ce5671461034357806349bd5a5e1461036d5780636b99905314610397576101e1565b80631694505e116101b55780631694505e1461027357806318160ddd1461029d57806320ec96b0146102c757806323b872dd146102dd576101e1565b8062b8cf2a146101e557806306fdde031461020d578063095ea7b314610237576101e1565b366101e157005b5f80fd5b3480156101f0575f80fd5b5061020b60048036038101906102069190612dc0565b610715565b005b348015610218575f80fd5b50610221610834565b60405161022e9190612e81565b60405180910390f35b348015610242575f80fd5b5061025d60048036038101906102589190612ed4565b610871565b60405161026a9190612f2c565b60405180910390f35b34801561027e575f80fd5b5061028761088e565b6040516102949190612fa0565b60405180910390f35b3480156102a8575f80fd5b506102b16108b3565b6040516102be9190612fc8565b60405180910390f35b3480156102d2575f80fd5b506102db6108d9565b005b3480156102e8575f80fd5b5061030360048036038101906102fe9190612fe1565b6109bb565b6040516103109190612f2c565b60405180910390f35b348015610324575f80fd5b5061032d610a8f565b60405161033a9190612fc8565b60405180910390f35b34801561034e575f80fd5b50610357610a95565b604051610364919061304c565b60405180910390f35b348015610378575f80fd5b50610381610a9d565b60405161038e9190613074565b60405180910390f35b3480156103a2575f80fd5b506103bd60048036038101906103b8919061308d565b610ac2565b005b3480156103ca575f80fd5b506103e560048036038101906103e091906130e2565b610bad565b005b3480156103f2575f80fd5b506103fb610c5e565b005b348015610408575f80fd5b50610423600480360381019061041e919061308d565b610d2b565b6040516104309190612fc8565b60405180910390f35b348015610444575f80fd5b5061044d610d79565b005b34801561045a575f80fd5b506104756004803603810190610470919061310d565b610ec7565b005b348015610482575f80fd5b5061048b610f65565b6040516104989190612fc8565b60405180910390f35b3480156104ac575f80fd5b506104c760048036038101906104c2919061308d565b610f6b565b6040516104d49190612fc8565b60405180910390f35b3480156104e8575f80fd5b506104f1610f80565b6040516104fe9190613074565b60405180910390f35b348015610512575f80fd5b5061052d600480360381019061052891906130e2565b610fa7565b005b34801561053a575f80fd5b50610543611058565b6040516105509190612fc8565b60405180910390f35b348015610564575f80fd5b5061056d61105e565b60405161057a9190612e81565b60405180910390f35b34801561058e575f80fd5b506105a960048036038101906105a4919061310d565b61109b565b005b3480156105b6575f80fd5b506105d160048036038101906105cc9190613138565b611139565b005b3480156105de575f80fd5b506105f960048036038101906105f49190612ed4565b6111ef565b6040516106069190612f2c565b60405180910390f35b34801561061a575f80fd5b506106356004803603810190610630919061308d565b61120c565b6040516106429190612f2c565b60405180910390f35b348015610656575f80fd5b5061065f611229565b005b34801561066c575f80fd5b50610687600480360381019061068291906131f5565b6112fe565b005b348015610694575f80fd5b506106af60048036038101906106aa9190613252565b61142d565b6040516106bc9190612fc8565b60405180910390f35b3480156106d0575f80fd5b506106eb60048036038101906106e6919061310d565b6114af565b005b3480156106f8575f80fd5b50610713600480360381019061070e919061308d565b61154d565b005b61071d61170a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a0906132da565b60405180910390fd5b5f5b815181101561083057600160105f8484815181106107cc576107cb6132f8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506107ab565b5050565b60606040518060400160405280600b81526020017f476f646a616b20436f696e000000000000000000000000000000000000000000815250905090565b5f61088461087d61170a565b8484611711565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6009600a6108c29190613481565b6602c36280289c716108d491906134cb565b905090565b6108e161170a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610964906132da565b60405180910390fd5b6009600a61097b9190613481565b6602c36280289c7161098d91906134cb565b6017819055506009600a6109a19190613481565b6602c36280289c716109b391906134cb565b601681905550565b5f6109c78484846118d4565b610a84846109d361170a565b610a7f85604051806060016040528060288152602001613e416028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a3661170a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121349092919063ffffffff16565b611711565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610aca61170a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4d906132da565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610bb561170a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c38906132da565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c9e61170a565b73ffffffffffffffffffffffffffffffffffffffff161480610d13575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cfb61170a565b73ffffffffffffffffffffffffffffffffffffffff16145b610d1b575f80fd5b5f479050610d2881612196565b50565b5f610d7260025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121fe565b9050919050565b610d8161170a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e04906132da565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ecf61170a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f52906132da565b60405180910390fd5b8060168190555050565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610faf61170a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611032906132da565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f474f444a414b0000000000000000000000000000000000000000000000000000815250905090565b6110a361170a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611126906132da565b60405180910390fd5b8060188190555050565b61114161170a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c4906132da565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f6112026111fb61170a565b84846118d4565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661126961170a565b73ffffffffffffffffffffffffffffffffffffffff1614806112de575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112c661170a565b73ffffffffffffffffffffffffffffffffffffffff16145b6112e6575f80fd5b5f6112f030610d2b565b90506112fb8161226a565b50565b61130661170a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611392576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611389906132da565b60405180910390fd5b5f5b83839050811015611427578160055f8686858181106113b6576113b56132f8565b5b90506020020160208101906113cb919061308d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611394565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6114b761170a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a906132da565b60405180910390fd5b8060178190555050565b61155561170a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d8906132da565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361164f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116469061357c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361177f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117769061360a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e490613698565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118c79190612fc8565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193990613726565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a7906137b4565b60405180910390fd5b5f81116119f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e990613842565b60405180910390fd5b6119fa610f80565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a685750611a38610f80565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e4157601560149054906101000a900460ff16611af757611a89610f80565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aed906138d0565b60405180910390fd5b5b601654811115611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3390613938565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bda575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c10906139c6565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611cc55760175481611c7a84610d2b565b611c8491906139e4565b10611cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbb90613a87565b60405180910390fd5b5b5f611ccf30610d2b565b90505f60185482101590506016548210611ce95760165491505b808015611d01575060158054906101000a900460ff16155b8015611d5a575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d725750601560169054906101000a900460ff165b8015611dc5575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e18575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e3e57611e268261226a565b5f4790505f811115611e3c57611e3b47612196565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ee1575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611f92575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f91575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f9f575f9050612122565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612048575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561206057600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612109575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561212157600a54600c81905550600b54600d819055505b5b61212e848484846124d3565b50505050565b5f83831115829061217b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121729190612e81565b60405180910390fd5b505f83856121899190613aa5565b9050809150509392505050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156121fa573d5f803e3d5ffd5b5050565b5f600654821115612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223b90613b48565b60405180910390fd5b5f61224d612500565b9050612262818461252990919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156122a05761229f612c2a565b5b6040519080825280602002602001820160405280156122ce5781602001602082028036833780820191505090505b50905030815f815181106122e5576122e46132f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612389573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123ad9190613b7a565b816001815181106123c1576123c06132f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124273060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611711565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612489959493929190613c95565b5f604051808303815f87803b1580156124a0575f80fd5b505af11580156124b2573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806124e1576124e0612572565b5b6124ec8484846125ab565b806124fa576124f961276b565b5b50505050565b5f805f61250b61277f565b91509150612522818361252990919063ffffffff16565b9250505090565b5f61256a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612820565b905092915050565b5f600c5414801561258457505f600d54145b6125a957600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806125ba87612881565b9550955095509550955095506126168660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128e190919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126a78560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292a90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126f181612987565b6126fb8483612a3e565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127589190612fc8565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f6009600a6127969190613481565b6602c36280289c716127a891906134cb565b90506127de6009600a6127bb9190613481565b6602c36280289c716127cd91906134cb565b60065461252990919063ffffffff16565b821015612813576006546009600a6127f69190613481565b6602c36280289c7161280891906134cb565b93509350505061281c565b81819350935050505b9091565b5f8083118290612866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285d9190612e81565b60405180910390fd5b505f83856128749190613d1a565b9050809150509392505050565b5f805f805f805f805f6128998a600c54600d54612a78565b9250925092505f6128a8612500565b90505f805f6128b98e878787612b0a565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61292283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612134565b905092915050565b5f80828461293891906139e4565b90508381101561297d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297490613d94565b60405180910390fd5b8091505092915050565b5f612990612500565b90505f6129a68284612b8e90919063ffffffff16565b90506129f88160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292a90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612a53826006546128e190919063ffffffff16565b600681905550612a6e8160075461292a90919063ffffffff16565b6007819055505050565b5f805f80612aa26064612a94888a612b8e90919063ffffffff16565b61252990919063ffffffff16565b90505f612acb6064612abd888b612b8e90919063ffffffff16565b61252990919063ffffffff16565b90505f612af382612ae5858c6128e190919063ffffffff16565b6128e190919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612b218589612b8e90919063ffffffff16565b90505f612b378689612b8e90919063ffffffff16565b90505f612b4d8789612b8e90919063ffffffff16565b90505f612b7582612b6785876128e190919063ffffffff16565b6128e190919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612b9e575f9050612bff565b5f8284612bab91906134cb565b9050828482612bba9190613d1a565b14612bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf190613e22565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612c6082612c1a565b810181811067ffffffffffffffff82111715612c7f57612c7e612c2a565b5b80604052505050565b5f612c91612c05565b9050612c9d8282612c57565b919050565b5f67ffffffffffffffff821115612cbc57612cbb612c2a565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612cfa82612cd1565b9050919050565b612d0a81612cf0565b8114612d14575f80fd5b50565b5f81359050612d2581612d01565b92915050565b5f612d3d612d3884612ca2565b612c88565b90508083825260208201905060208402830185811115612d6057612d5f612ccd565b5b835b81811015612d895780612d758882612d17565b845260208401935050602081019050612d62565b5050509392505050565b5f82601f830112612da757612da6612c16565b5b8135612db7848260208601612d2b565b91505092915050565b5f60208284031215612dd557612dd4612c0e565b5b5f82013567ffffffffffffffff811115612df257612df1612c12565b5b612dfe84828501612d93565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e3e578082015181840152602081019050612e23565b5f8484015250505050565b5f612e5382612e07565b612e5d8185612e11565b9350612e6d818560208601612e21565b612e7681612c1a565b840191505092915050565b5f6020820190508181035f830152612e998184612e49565b905092915050565b5f819050919050565b612eb381612ea1565b8114612ebd575f80fd5b50565b5f81359050612ece81612eaa565b92915050565b5f8060408385031215612eea57612ee9612c0e565b5b5f612ef785828601612d17565b9250506020612f0885828601612ec0565b9150509250929050565b5f8115159050919050565b612f2681612f12565b82525050565b5f602082019050612f3f5f830184612f1d565b92915050565b5f819050919050565b5f612f68612f63612f5e84612cd1565b612f45565b612cd1565b9050919050565b5f612f7982612f4e565b9050919050565b5f612f8a82612f6f565b9050919050565b612f9a81612f80565b82525050565b5f602082019050612fb35f830184612f91565b92915050565b612fc281612ea1565b82525050565b5f602082019050612fdb5f830184612fb9565b92915050565b5f805f60608486031215612ff857612ff7612c0e565b5b5f61300586828701612d17565b935050602061301686828701612d17565b925050604061302786828701612ec0565b9150509250925092565b5f60ff82169050919050565b61304681613031565b82525050565b5f60208201905061305f5f83018461303d565b92915050565b61306e81612cf0565b82525050565b5f6020820190506130875f830184613065565b92915050565b5f602082840312156130a2576130a1612c0e565b5b5f6130af84828501612d17565b91505092915050565b6130c181612f12565b81146130cb575f80fd5b50565b5f813590506130dc816130b8565b92915050565b5f602082840312156130f7576130f6612c0e565b5b5f613104848285016130ce565b91505092915050565b5f6020828403121561312257613121612c0e565b5b5f61312f84828501612ec0565b91505092915050565b5f805f80608085870312156131505761314f612c0e565b5b5f61315d87828801612ec0565b945050602061316e87828801612ec0565b935050604061317f87828801612ec0565b925050606061319087828801612ec0565b91505092959194509250565b5f80fd5b5f8083601f8401126131b5576131b4612c16565b5b8235905067ffffffffffffffff8111156131d2576131d161319c565b5b6020830191508360208202830111156131ee576131ed612ccd565b5b9250929050565b5f805f6040848603121561320c5761320b612c0e565b5b5f84013567ffffffffffffffff81111561322957613228612c12565b5b613235868287016131a0565b93509350506020613248868287016130ce565b9150509250925092565b5f806040838503121561326857613267612c0e565b5b5f61327585828601612d17565b925050602061328685828601612d17565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132c4602083612e11565b91506132cf82613290565b602082019050919050565b5f6020820190508181035f8301526132f1816132b8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156133a75780860481111561338357613382613325565b5b60018516156133925780820291505b80810290506133a085613352565b9450613367565b94509492505050565b5f826133bf576001905061347a565b816133cc575f905061347a565b81600181146133e257600281146133ec5761341b565b600191505061347a565b60ff8411156133fe576133fd613325565b5b8360020a91508482111561341557613414613325565b5b5061347a565b5060208310610133831016604e8410600b84101617156134505782820a90508381111561344b5761344a613325565b5b61347a565b61345d848484600161335e565b9250905081840481111561347457613473613325565b5b81810290505b9392505050565b5f61348b82612ea1565b915061349683613031565b92506134c37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846133b0565b905092915050565b5f6134d582612ea1565b91506134e083612ea1565b92508282026134ee81612ea1565b9150828204841483151761350557613504613325565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613566602683612e11565b91506135718261350c565b604082019050919050565b5f6020820190508181035f8301526135938161355a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6135f4602483612e11565b91506135ff8261359a565b604082019050919050565b5f6020820190508181035f830152613621816135e8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613682602283612e11565b915061368d82613628565b604082019050919050565b5f6020820190508181035f8301526136af81613676565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613710602583612e11565b915061371b826136b6565b604082019050919050565b5f6020820190508181035f83015261373d81613704565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61379e602383612e11565b91506137a982613744565b604082019050919050565b5f6020820190508181035f8301526137cb81613792565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61382c602983612e11565b9150613837826137d2565b604082019050919050565b5f6020820190508181035f83015261385981613820565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f6138ba603f83612e11565b91506138c582613860565b604082019050919050565b5f6020820190508181035f8301526138e7816138ae565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613922601c83612e11565b915061392d826138ee565b602082019050919050565b5f6020820190508181035f83015261394f81613916565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f6139b0602383612e11565b91506139bb82613956565b604082019050919050565b5f6020820190508181035f8301526139dd816139a4565b9050919050565b5f6139ee82612ea1565b91506139f983612ea1565b9250828201905080821115613a1157613a10613325565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613a71602383612e11565b9150613a7c82613a17565b604082019050919050565b5f6020820190508181035f830152613a9e81613a65565b9050919050565b5f613aaf82612ea1565b9150613aba83612ea1565b9250828203905081811115613ad257613ad1613325565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613b32602a83612e11565b9150613b3d82613ad8565b604082019050919050565b5f6020820190508181035f830152613b5f81613b26565b9050919050565b5f81519050613b7481612d01565b92915050565b5f60208284031215613b8f57613b8e612c0e565b5b5f613b9c84828501613b66565b91505092915050565b5f819050919050565b5f613bc8613bc3613bbe84613ba5565b612f45565b612ea1565b9050919050565b613bd881613bae565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c1081612cf0565b82525050565b5f613c218383613c07565b60208301905092915050565b5f602082019050919050565b5f613c4382613bde565b613c4d8185613be8565b9350613c5883613bf8565b805f5b83811015613c88578151613c6f8882613c16565b9750613c7a83613c2d565b925050600181019050613c5b565b5085935050505092915050565b5f60a082019050613ca85f830188612fb9565b613cb56020830187613bcf565b8181036040830152613cc78186613c39565b9050613cd66060830185613065565b613ce36080830184612fb9565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d2482612ea1565b9150613d2f83612ea1565b925082613d3f57613d3e613ced565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613d7e601b83612e11565b9150613d8982613d4a565b602082019050919050565b5f6020820190508181035f830152613dab81613d72565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e0c602183612e11565b9150613e1782613db2565b604082019050919050565b5f6020820190508181035f830152613e3981613e00565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209ae81c352a0edd432929d073a5bb10d000e838902d7b1787dbc287d155eca56964736f6c63430008160033