60806040526804ed9df88566383a005f196200001c9190620006db565b5f196200002a91906200073f565b6006555f600855600a6009555f600a55602d600b55600a54600c55600b54600d55600c54600e55600d54600f553360125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555067193b7abaf6f6c40060165567193b7abaf6f6c400601755670c9dbd5d7b7b620060185534801562000156575f80fd5b505f620001686200067760201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f6200021a6200067760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200031f9190620007de565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000385573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ab9190620007de565b6040518363ffffffff1660e01b8152600401620003ca9291906200081f565b6020604051808303815f875af1158015620003e7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200040d9190620007de565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f620004616200067e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620006016200067760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6804ed9df88566383a006040516200066891906200085b565b60405180910390a35062000876565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620006e782620006a5565b9150620006f483620006a5565b925082620007075762000706620006ae565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200074b82620006a5565b91506200075883620006a5565b925082820390508181111562000773576200077262000712565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007a8826200077d565b9050919050565b620007ba816200079c565b8114620007c5575f80fd5b50565b5f81519050620007d881620007af565b92915050565b5f60208284031215620007f657620007f562000779565b5b5f6200080584828501620007c8565b91505092915050565b62000819816200079c565b82525050565b5f604082019050620008345f8301856200080e565b6200084360208301846200080e565b9392505050565b6200085581620006a5565b82525050565b5f602082019050620008705f8301846200084a565b92915050565b613bcb80620008845f395ff3fe6080604052600436106101d0575f3560e01c80637f2feddc116100f6578063a9059cbb11610094578063dd62ed3e11610063578063dd62ed3e14610641578063ea1644d51461067d578063f2fde38b146106a5578063f50c7c29146106cd576101d7565b8063a9059cbb1461058b578063bfd79284146105c7578063c3c8cd8014610603578063c492f04614610619576101d7565b80638f9a55c0116100d05780638f9a55c0146104e757806395d89b411461051157806398a5c3151461053b578063a2a957bb14610563576101d7565b80637f2feddc146104595780638da5cb5b146104955780638f70ccf7146104bf576101d7565b8063313ce5671161016e57806370a082311161013d57806370a08231146103b5578063715018a6146103f157806374010ece146104075780637d1db4a51461042f576101d7565b8063313ce5671461032357806349bd5a5e1461034d5780636d8aa8f8146103775780636fc3eaec1461039f576101d7565b806318160ddd116101aa57806318160ddd1461026b57806318570f881461029557806323b872dd146102bd5780632fd689e3146102f9576101d7565b806306fdde03146101db578063095ea7b3146102055780631694505e14610241576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef6106f5565b6040516101fc9190612b35565b60405180910390f35b348015610210575f80fd5b5061022b60048036038101906102269190612bf3565b610732565b6040516102389190612c4b565b60405180910390f35b34801561024c575f80fd5b5061025561074f565b6040516102629190612cbf565b60405180910390f35b348015610276575f80fd5b5061027f610774565b60405161028c9190612ce7565b60405180910390f35b3480156102a0575f80fd5b506102bb60048036038101906102b69190612e40565b610784565b005b3480156102c8575f80fd5b506102e360048036038101906102de9190612e87565b6108a3565b6040516102f09190612c4b565b60405180910390f35b348015610304575f80fd5b5061030d610977565b60405161031a9190612ce7565b60405180910390f35b34801561032e575f80fd5b5061033761097d565b6040516103449190612ef2565b60405180910390f35b348015610358575f80fd5b50610361610985565b60405161036e9190612f1a565b60405180910390f35b348015610382575f80fd5b5061039d60048036038101906103989190612f5d565b6109aa565b005b3480156103aa575f80fd5b506103b3610a5b565b005b3480156103c0575f80fd5b506103db60048036038101906103d69190612f88565b610b28565b6040516103e89190612ce7565b60405180910390f35b3480156103fc575f80fd5b50610405610b76565b005b348015610412575f80fd5b5061042d60048036038101906104289190612fb3565b610cc4565b005b34801561043a575f80fd5b50610443610d62565b6040516104509190612ce7565b60405180910390f35b348015610464575f80fd5b5061047f600480360381019061047a9190612f88565b610d68565b60405161048c9190612ce7565b60405180910390f35b3480156104a0575f80fd5b506104a9610d7d565b6040516104b69190612f1a565b60405180910390f35b3480156104ca575f80fd5b506104e560048036038101906104e09190612f5d565b610da4565b005b3480156104f2575f80fd5b506104fb610e55565b6040516105089190612ce7565b60405180910390f35b34801561051c575f80fd5b50610525610e5b565b6040516105329190612b35565b60405180910390f35b348015610546575f80fd5b50610561600480360381019061055c9190612fb3565b610e98565b005b34801561056e575f80fd5b5061058960048036038101906105849190612fde565b610f36565b005b348015610596575f80fd5b506105b160048036038101906105ac9190612bf3565b610fec565b6040516105be9190612c4b565b60405180910390f35b3480156105d2575f80fd5b506105ed60048036038101906105e89190612f88565b611009565b6040516105fa9190612c4b565b60405180910390f35b34801561060e575f80fd5b50610617611026565b005b348015610624575f80fd5b5061063f600480360381019061063a919061309b565b6110fb565b005b34801561064c575f80fd5b50610667600480360381019061066291906130f8565b61122a565b6040516106749190612ce7565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190612fb3565b6112ac565b005b3480156106b0575f80fd5b506106cb60048036038101906106c69190612f88565b61134a565b005b3480156106d8575f80fd5b506106f360048036038101906106ee9190612f88565b611507565b005b60606040518060400160405280600481526020017f4e494e4500000000000000000000000000000000000000000000000000000000815250905090565b5f61074561073e6115f2565b84846115f9565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6804ed9df88566383a00905090565b61078c6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080f90613180565b60405180910390fd5b5f5b815181101561089f57600160105f84848151811061083b5761083a61319e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061081a565b5050565b5f6108af8484846117bc565b61096c846108bb6115f2565b61096785604051806060016040528060288152602001613b6e6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61091e6115f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461201c9092919063ffffffff16565b6115f9565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109b26115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3590613180565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a9b6115f2565b73ffffffffffffffffffffffffffffffffffffffff161480610b10575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610af86115f2565b73ffffffffffffffffffffffffffffffffffffffff16145b610b18575f80fd5b5f479050610b258161207e565b50565b5f610b6f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120e6565b9050919050565b610b7e6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0190613180565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ccc6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90613180565b60405180910390fd5b8060168190555050565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610dac6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f90613180565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600381526020017f3930730000000000000000000000000000000000000000000000000000000000815250905090565b610ea06115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2390613180565b60405180910390fd5b8060188190555050565b610f3e6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc190613180565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f610fff610ff86115f2565b84846117bc565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110666115f2565b73ffffffffffffffffffffffffffffffffffffffff1614806110db575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110c36115f2565b73ffffffffffffffffffffffffffffffffffffffff16145b6110e3575f80fd5b5f6110ed30610b28565b90506110f881612152565b50565b6111036115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461118f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118690613180565b60405180910390fd5b5f5b83839050811015611224578160055f8686858181106111b3576111b261319e565b5b90506020020160208101906111c89190612f88565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611191565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6112b46115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133790613180565b60405180910390fd5b8060178190555050565b6113526115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d590613180565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361144c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114439061323b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61150f6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159290613180565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e906132c9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc90613357565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117af9190612ce7565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361182a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611821906133e5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188f90613473565b60405180910390fd5b5f81116118da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d190613501565b60405180910390fd5b6118e2610d7d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119505750611920610d7d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2957601560149054906101000a900460ff166119df57611971610d7d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d59061358f565b60405180910390fd5b5b601654811115611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b906135f7565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ac2575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af890613685565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bad5760175481611b6284610b28565b611b6c91906136d0565b10611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba390613773565b60405180910390fd5b5b5f611bb730610b28565b90505f60185482101590506016548210611bd15760165491505b808015611be9575060158054906101000a900460ff16155b8015611c42575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c5a5750601560169054906101000a900460ff165b8015611cad575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d00575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d2657611d0e82612152565b5f4790505f811115611d2457611d234761207e565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dc9575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611e7a575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e79575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e87575f905061200a565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f30575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f4857600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ff1575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561200957600a54600c81905550600b54600d819055505b5b612016848484846123bb565b50505050565b5f838311158290612063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205a9190612b35565b60405180910390fd5b505f83856120719190613791565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120e2573d5f803e3d5ffd5b5050565b5f60065482111561212c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212390613834565b60405180910390fd5b5f6121356123e8565b905061214a818461241190919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561218857612187612d04565b5b6040519080825280602002602001820160405280156121b65781602001602082028036833780820191505090505b50905030815f815181106121cd576121cc61319e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612271573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122959190613866565b816001815181106122a9576122a861319e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230f3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115f9565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612371959493929190613981565b5f604051808303815f87803b158015612388575f80fd5b505af115801561239a573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806123c9576123c861245a565b5b6123d4848484612493565b806123e2576123e1612653565b5b50505050565b5f805f6123f3612667565b9150915061240a818361241190919063ffffffff16565b9250505090565b5f61245283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126c6565b905092915050565b5f600c5414801561246c57505f600d54145b61249157600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806124a287612727565b9550955095509550955095506124fe8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461278790919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061258f8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127d090919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125d98161282d565b6125e384836128e4565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126409190612ce7565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f6804ed9df88566383a00905061269a6804ed9df88566383a0060065461241190919063ffffffff16565b8210156126b9576006546804ed9df88566383a009350935050506126c2565b81819350935050505b9091565b5f808311829061270c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127039190612b35565b60405180910390fd5b505f838561271a9190613a06565b9050809150509392505050565b5f805f805f805f805f61273f8a600c54600d5461291e565b9250925092505f61274e6123e8565b90505f805f61275f8e8787876129b0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6127c883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061201c565b905092915050565b5f8082846127de91906136d0565b905083811015612823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281a90613a80565b60405180910390fd5b8091505092915050565b5f6128366123e8565b90505f61284c8284612a3490919063ffffffff16565b905061289e8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127d090919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6128f98260065461278790919063ffffffff16565b600681905550612914816007546127d090919063ffffffff16565b6007819055505050565b5f805f80612948606461293a888a612a3490919063ffffffff16565b61241190919063ffffffff16565b90505f6129716064612963888b612a3490919063ffffffff16565b61241190919063ffffffff16565b90505f6129998261298b858c61278790919063ffffffff16565b61278790919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806129c78589612a3490919063ffffffff16565b90505f6129dd8689612a3490919063ffffffff16565b90505f6129f38789612a3490919063ffffffff16565b90505f612a1b82612a0d858761278790919063ffffffff16565b61278790919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612a44575f9050612aa5565b5f8284612a519190613a9e565b9050828482612a609190613a06565b14612aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9790613b4f565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612ae2578082015181840152602081019050612ac7565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b0782612aab565b612b118185612ab5565b9350612b21818560208601612ac5565b612b2a81612aed565b840191505092915050565b5f6020820190508181035f830152612b4d8184612afd565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b8f82612b66565b9050919050565b612b9f81612b85565b8114612ba9575f80fd5b50565b5f81359050612bba81612b96565b92915050565b5f819050919050565b612bd281612bc0565b8114612bdc575f80fd5b50565b5f81359050612bed81612bc9565b92915050565b5f8060408385031215612c0957612c08612b5e565b5b5f612c1685828601612bac565b9250506020612c2785828601612bdf565b9150509250929050565b5f8115159050919050565b612c4581612c31565b82525050565b5f602082019050612c5e5f830184612c3c565b92915050565b5f819050919050565b5f612c87612c82612c7d84612b66565b612c64565b612b66565b9050919050565b5f612c9882612c6d565b9050919050565b5f612ca982612c8e565b9050919050565b612cb981612c9f565b82525050565b5f602082019050612cd25f830184612cb0565b92915050565b612ce181612bc0565b82525050565b5f602082019050612cfa5f830184612cd8565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612d3a82612aed565b810181811067ffffffffffffffff82111715612d5957612d58612d04565b5b80604052505050565b5f612d6b612b55565b9050612d778282612d31565b919050565b5f67ffffffffffffffff821115612d9657612d95612d04565b5b602082029050602081019050919050565b5f80fd5b5f612dbd612db884612d7c565b612d62565b90508083825260208201905060208402830185811115612de057612ddf612da7565b5b835b81811015612e095780612df58882612bac565b845260208401935050602081019050612de2565b5050509392505050565b5f82601f830112612e2757612e26612d00565b5b8135612e37848260208601612dab565b91505092915050565b5f60208284031215612e5557612e54612b5e565b5b5f82013567ffffffffffffffff811115612e7257612e71612b62565b5b612e7e84828501612e13565b91505092915050565b5f805f60608486031215612e9e57612e9d612b5e565b5b5f612eab86828701612bac565b9350506020612ebc86828701612bac565b9250506040612ecd86828701612bdf565b9150509250925092565b5f60ff82169050919050565b612eec81612ed7565b82525050565b5f602082019050612f055f830184612ee3565b92915050565b612f1481612b85565b82525050565b5f602082019050612f2d5f830184612f0b565b92915050565b612f3c81612c31565b8114612f46575f80fd5b50565b5f81359050612f5781612f33565b92915050565b5f60208284031215612f7257612f71612b5e565b5b5f612f7f84828501612f49565b91505092915050565b5f60208284031215612f9d57612f9c612b5e565b5b5f612faa84828501612bac565b91505092915050565b5f60208284031215612fc857612fc7612b5e565b5b5f612fd584828501612bdf565b91505092915050565b5f805f8060808587031215612ff657612ff5612b5e565b5b5f61300387828801612bdf565b945050602061301487828801612bdf565b935050604061302587828801612bdf565b925050606061303687828801612bdf565b91505092959194509250565b5f80fd5b5f8083601f84011261305b5761305a612d00565b5b8235905067ffffffffffffffff81111561307857613077613042565b5b60208301915083602082028301111561309457613093612da7565b5b9250929050565b5f805f604084860312156130b2576130b1612b5e565b5b5f84013567ffffffffffffffff8111156130cf576130ce612b62565b5b6130db86828701613046565b935093505060206130ee86828701612f49565b9150509250925092565b5f806040838503121561310e5761310d612b5e565b5b5f61311b85828601612bac565b925050602061312c85828601612bac565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61316a602083612ab5565b915061317582613136565b602082019050919050565b5f6020820190508181035f8301526131978161315e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613225602683612ab5565b9150613230826131cb565b604082019050919050565b5f6020820190508181035f83015261325281613219565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132b3602483612ab5565b91506132be82613259565b604082019050919050565b5f6020820190508181035f8301526132e0816132a7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613341602283612ab5565b915061334c826132e7565b604082019050919050565b5f6020820190508181035f83015261336e81613335565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133cf602583612ab5565b91506133da82613375565b604082019050919050565b5f6020820190508181035f8301526133fc816133c3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61345d602383612ab5565b915061346882613403565b604082019050919050565b5f6020820190508181035f83015261348a81613451565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134eb602983612ab5565b91506134f682613491565b604082019050919050565b5f6020820190508181035f830152613518816134df565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613579603f83612ab5565b91506135848261351f565b604082019050919050565b5f6020820190508181035f8301526135a68161356d565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6135e1601c83612ab5565b91506135ec826135ad565b602082019050919050565b5f6020820190508181035f83015261360e816135d5565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f61366f602383612ab5565b915061367a82613615565b604082019050919050565b5f6020820190508181035f83015261369c81613663565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6136da82612bc0565b91506136e583612bc0565b92508282019050808211156136fd576136fc6136a3565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61375d602383612ab5565b915061376882613703565b604082019050919050565b5f6020820190508181035f83015261378a81613751565b9050919050565b5f61379b82612bc0565b91506137a683612bc0565b92508282039050818111156137be576137bd6136a3565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61381e602a83612ab5565b9150613829826137c4565b604082019050919050565b5f6020820190508181035f83015261384b81613812565b9050919050565b5f8151905061386081612b96565b92915050565b5f6020828403121561387b5761387a612b5e565b5b5f61388884828501613852565b91505092915050565b5f819050919050565b5f6138b46138af6138aa84613891565b612c64565b612bc0565b9050919050565b6138c48161389a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138fc81612b85565b82525050565b5f61390d83836138f3565b60208301905092915050565b5f602082019050919050565b5f61392f826138ca565b61393981856138d4565b9350613944836138e4565b805f5b8381101561397457815161395b8882613902565b975061396683613919565b925050600181019050613947565b5085935050505092915050565b5f60a0820190506139945f830188612cd8565b6139a160208301876138bb565b81810360408301526139b38186613925565b90506139c26060830185612f0b565b6139cf6080830184612cd8565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613a1082612bc0565b9150613a1b83612bc0565b925082613a2b57613a2a6139d9565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a6a601b83612ab5565b9150613a7582613a36565b602082019050919050565b5f6020820190508181035f830152613a9781613a5e565b9050919050565b5f613aa882612bc0565b9150613ab383612bc0565b9250828202613ac181612bc0565b91508282048414831517613ad857613ad76136a3565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b39602183612ab5565b9150613b4482613adf565b604082019050919050565b5f6020820190508181035f830152613b6681613b2d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122082971ba5fbc496e0bbf6694247dad057bf4f5ceda8faa0c93ca93d9f9ba60a9364736f6c63430008160033