6080604052601760065560176007555f6008555f6009556017600a556017600b55601e600c556046600d555f600e556009600a6200003e919062000601565b63fac033206200004f919062000651565b600f556009600a62000062919062000601565b63fac0332062000073919062000651565b6010556009600a62000086919062000601565b63fa56ea0062000097919062000651565b6011556009600a620000aa919062000601565b63fac03320620000bb919062000651565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f6015555f60165534801562000106575f80fd5b505f620001186200044160201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001c46200044160201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000213919062000601565b6461f313f88062000225919062000651565b60015f620002386200044160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6200028a6200044860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003b46200044160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a62000412919062000601565b6461f313f88062000424919062000651565b604051620004339190620006ac565b60405180910390a3620006c7565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620004f957808604811115620004d157620004d06200046f565b5b6001851615620004e15780820291505b8081029050620004f1856200049c565b9450620004b1565b94509492505050565b5f82620005135760019050620005e5565b8162000522575f9050620005e5565b81600181146200053b576002811462000546576200057c565b6001915050620005e5565b60ff8411156200055b576200055a6200046f565b5b8360020a9150848211156200057557620005746200046f565b5b50620005e5565b5060208310610133831016604e8410600b8410161715620005b65782820a905083811115620005b057620005af6200046f565b5b620005e5565b620005c58484846001620004a8565b92509050818404811115620005df57620005de6200046f565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200060d82620005ec565b91506200061a83620005f5565b9250620006497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000502565b905092915050565b5f6200065d82620005ec565b91506200066a83620005ec565b92508282026200067a81620005ec565b915082820484148315176200069457620006936200046f565b5b5092915050565b620006a681620005ec565b82525050565b5f602082019050620006c15f8301846200069b565b92915050565b61383c80620006d55f395ff3fe60806040526004361061014e575f3560e01c8063715018a6116100b5578063a9059cbb1161006e578063a9059cbb14610441578063bf474bed1461047d578063c56f23b5146104a7578063c9567bf9146104cf578063dd62ed3e146104e5578063ec1f3f631461052157610155565b8063715018a61461035b5780637d1db4a5146103715780638cd4426d1461039b5780638da5cb5b146103c35780638f9a55c0146103ed57806395d89b411461041757610155565b8063313ce56711610107578063313ce5671461026557806334ed5a3e1461028f57806351bc3c85146102b757806362dff7e9146102cd5780636384c3561461030957806370a082311461031f57610155565b806306fdde0314610159578063095ea7b3146101835780630faee56f146101bf578063109daa99146101e957806318160ddd146101ff57806323b872dd1461022957610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610549565b60405161017a919061272b565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a491906127e9565b610586565b6040516101b69190612841565b60405180910390f35b3480156101ca575f80fd5b506101d36105a3565b6040516101e09190612869565b60405180910390f35b3480156101f4575f80fd5b506101fd6105a9565b005b34801561020a575f80fd5b5061021361067d565b6040516102209190612869565b60405180910390f35b348015610234575f80fd5b5061024f600480360381019061024a9190612882565b6106a1565b60405161025c9190612841565b60405180910390f35b348015610270575f80fd5b50610279610775565b60405161028691906128ed565b60405180910390f35b34801561029a575f80fd5b506102b560048036038101906102b09190612a46565b61077d565b005b3480156102c2575f80fd5b506102cb61089c565b005b3480156102d8575f80fd5b506102f360048036038101906102ee9190612a8d565b61094b565b6040516103009190612841565b60405180910390f35b348015610314575f80fd5b5061031d61099d565b005b34801561032a575f80fd5b5061034560048036038101906103409190612a8d565b610acf565b6040516103529190612869565b60405180910390f35b348015610366575f80fd5b5061036f610b15565b005b34801561037c575f80fd5b50610385610c63565b6040516103929190612869565b60405180910390f35b3480156103a6575f80fd5b506103c160048036038101906103bc91906127e9565b610c69565b005b3480156103ce575f80fd5b506103d7610e0a565b6040516103e49190612ac7565b60405180910390f35b3480156103f8575f80fd5b50610401610e31565b60405161040e9190612869565b60405180910390f35b348015610422575f80fd5b5061042b610e37565b604051610438919061272b565b60405180910390f35b34801561044c575f80fd5b50610467600480360381019061046291906127e9565b610e74565b6040516104749190612841565b60405180910390f35b348015610488575f80fd5b50610491610e91565b60405161049e9190612869565b60405180910390f35b3480156104b2575f80fd5b506104cd60048036038101906104c89190612a46565b610e97565b005b3480156104da575f80fd5b506104e3610fb5565b005b3480156104f0575f80fd5b5061050b60048036038101906105069190612ae0565b6114d5565b6040516105189190612869565b60405180910390f35b34801561052c575f80fd5b5061054760048036038101906105429190612b1e565b611557565b005b60606040518060400160405280600b81526020017f53746f6e65722043617473000000000000000000000000000000000000000000815250905090565b5f6105996105926115e3565b84846115ea565b6001905092915050565b60125481565b6105b16115e3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461063d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063490612b93565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106739190612bf3565b60405180910390a1565b5f6009600a61068c9190612d68565b6461f313f88061069c9190612db2565b905090565b5f6106ad8484846117ad565b61076a846106b96115e3565b610765856040518060600160405280602881526020016137df6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61071c6115e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461218d9092919063ffffffff16565b6115ea565b600190509392505050565b5f6009905090565b6107856115e3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610811576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080890612b93565b60405180910390fd5b5f5b815181101561089857600160045f84848151811061083457610833612df3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610813565b5050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108dc6115e3565b73ffffffffffffffffffffffffffffffffffffffff16146108fb575f80fd5b5f61090530610acf565b90505f811180156109225750601460169054906101000a900460ff165b1561093157610930816121ef565b5b5f4790505f811115610947576109468161245a565b5b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6109a56115e3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2890612b93565b60405180910390fd5b6009600a610a3f9190612d68565b6461f313f880610a4f9190612db2565b600f819055506009600a610a639190612d68565b6461f313f880610a739190612db2565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610aa89190612d68565b6461f313f880610ab89190612db2565b604051610ac59190612869565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b1d6115e3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba090612b93565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ca96115e3565b73ffffffffffffffffffffffffffffffffffffffff1614610cc8575f80fd5b5f610d666064610d58848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d0b9190612ac7565b602060405180830381865afa158015610d26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d4a9190612e34565b6124c290919063ffffffff16565b61253990919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610dc4929190612eb1565b6020604051808303815f875af1158015610de0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e049190612f02565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600681526020017f53544f4e45520000000000000000000000000000000000000000000000000000815250905090565b5f610e87610e806115e3565b84846117ad565b6001905092915050565b60115481565b610e9f6115e3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290612b93565b60405180910390fd5b5f5b8151811015610fb1575f60045f848481518110610f4d57610f4c612df3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610f2d565b5050565b610fbd6115e3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104090612b93565b60405180910390fd5b60148054906101000a900460ff1615611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90612f77565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111343060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61111f9190612d68565b6461f313f88061112f9190612db2565b6115ea565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561119e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c29190612fa9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611248573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126c9190612fa9565b6040518363ffffffff1660e01b8152600401611289929190612fd4565b6020604051808303815f875af11580156112a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c99190612fa9565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061135030610acf565b5f8061135a610e0a565b426040518863ffffffff1660e01b815260040161137c96959493929190612ffb565b60606040518083038185885af1158015611398573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906113bd919061305a565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161145d9291906130aa565b6020604051808303815f875af1158015611479573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061149d9190612f02565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115976115e3565b73ffffffffffffffffffffffffffffffffffffffff16146115b6575f80fd5b60085481111580156115ca57506009548111155b6115d2575f80fd5b806008819055508060098190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f90613141565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd906131cf565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117a09190612869565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361181b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118129061325d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611889576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611880906132eb565b60405180910390fd5b5f81116118cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c290613379565b60405180910390fd5b5f6118d4610e0a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119425750611912610e0a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561199b575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611edd5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a3e575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611a46575f80fd5b5f600e5403611a8e57611a8b6064611a7d600a54600e5411611a6a57600654611a6e565b6008545b856124c290919063ffffffff16565b61253990919063ffffffff16565b90505b5f600e541115611ac357611ac06064611ab2600d54856124c290919063ffffffff16565b61253990919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b6c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bbf575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611cb757600f54821115611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c00906133e1565b60405180910390fd5b60105482611c1685610acf565b611c2091906133ff565b1115611c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c589061347c565b60405180910390fd5b611c9d6064611c8f600a54600e5411611c7c57600654611c80565b6008545b856124c290919063ffffffff16565b61253990919063ffffffff16565b9050600e5f815480929190611cb19061349a565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d3f57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d8357611d806064611d72600b54600e5411611d5f57600754611d63565b6009545b856124c290919063ffffffff16565b61253990919063ffffffff16565b90505b5f611d8d30610acf565b9050601460159054906101000a900460ff16158015611df8575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e105750601460169054906101000a900460ff165b8015611e1d575060115481115b8015611e2c5750600c54600e54115b15611edb57601654431115611e43575f6015819055505b600360155410611e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7f9061352b565b60405180910390fd5b611ea5611ea084611e9b84601254612582565b612582565b6121ef565b5f4790505f811115611ebb57611eba4761245a565b5b60155f815480929190611ecd9061349a565b919050555043601681905550505b505b5f811115611fdc57611f358160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461259a90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fd39190612869565b60405180910390a35b61202c8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125f790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120cf61208382846125f790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461259a90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61217284866125f790919063ffffffff16565b60405161217f9190612869565b60405180910390a350505050565b5f8383111582906121d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cb919061272b565b60405180910390fd5b505f83856121e29190613549565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156122265761222561290a565b5b6040519080825280602002602001820160405280156122545781602001602082028036833780820191505090505b50905030815f8151811061226b5761226a612df3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561230f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123339190612fa9565b8160018151811061234757612346612df3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123ad3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115ea565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161240f959493929190613633565b5f604051808303815f87803b158015612426575f80fd5b505af1158015612438573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156124be573d5f803e3d5ffd5b5050565b5f8083036124d2575f9050612533565b5f82846124df9190612db2565b90508284826124ee91906136b8565b1461252e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252590613758565b60405180910390fd5b809150505b92915050565b5f61257a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612640565b905092915050565b5f8183116125905782612592565b815b905092915050565b5f8082846125a891906133ff565b9050838110156125ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e4906137c0565b60405180910390fd5b8091505092915050565b5f61263883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061218d565b905092915050565b5f8083118290612686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267d919061272b565b60405180910390fd5b505f838561269491906136b8565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156126d85780820151818401526020810190506126bd565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6126fd826126a1565b61270781856126ab565b93506127178185602086016126bb565b612720816126e3565b840191505092915050565b5f6020820190508181035f83015261274381846126f3565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127858261275c565b9050919050565b6127958161277b565b811461279f575f80fd5b50565b5f813590506127b08161278c565b92915050565b5f819050919050565b6127c8816127b6565b81146127d2575f80fd5b50565b5f813590506127e3816127bf565b92915050565b5f80604083850312156127ff576127fe612754565b5b5f61280c858286016127a2565b925050602061281d858286016127d5565b9150509250929050565b5f8115159050919050565b61283b81612827565b82525050565b5f6020820190506128545f830184612832565b92915050565b612863816127b6565b82525050565b5f60208201905061287c5f83018461285a565b92915050565b5f805f6060848603121561289957612898612754565b5b5f6128a6868287016127a2565b93505060206128b7868287016127a2565b92505060406128c8868287016127d5565b9150509250925092565b5f60ff82169050919050565b6128e7816128d2565b82525050565b5f6020820190506129005f8301846128de565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612940826126e3565b810181811067ffffffffffffffff8211171561295f5761295e61290a565b5b80604052505050565b5f61297161274b565b905061297d8282612937565b919050565b5f67ffffffffffffffff82111561299c5761299b61290a565b5b602082029050602081019050919050565b5f80fd5b5f6129c36129be84612982565b612968565b905080838252602082019050602084028301858111156129e6576129e56129ad565b5b835b81811015612a0f57806129fb88826127a2565b8452602084019350506020810190506129e8565b5050509392505050565b5f82601f830112612a2d57612a2c612906565b5b8135612a3d8482602086016129b1565b91505092915050565b5f60208284031215612a5b57612a5a612754565b5b5f82013567ffffffffffffffff811115612a7857612a77612758565b5b612a8484828501612a19565b91505092915050565b5f60208284031215612aa257612aa1612754565b5b5f612aaf848285016127a2565b91505092915050565b612ac18161277b565b82525050565b5f602082019050612ada5f830184612ab8565b92915050565b5f8060408385031215612af657612af5612754565b5b5f612b03858286016127a2565b9250506020612b14858286016127a2565b9150509250929050565b5f60208284031215612b3357612b32612754565b5b5f612b40848285016127d5565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b7d6020836126ab565b9150612b8882612b49565b602082019050919050565b5f6020820190508181035f830152612baa81612b71565b9050919050565b5f819050919050565b5f819050919050565b5f612bdd612bd8612bd384612bb1565b612bba565b6127b6565b9050919050565b612bed81612bc3565b82525050565b5f602082019050612c065f830184612be4565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612c8e57808604811115612c6a57612c69612c0c565b5b6001851615612c795780820291505b8081029050612c8785612c39565b9450612c4e565b94509492505050565b5f82612ca65760019050612d61565b81612cb3575f9050612d61565b8160018114612cc95760028114612cd357612d02565b6001915050612d61565b60ff841115612ce557612ce4612c0c565b5b8360020a915084821115612cfc57612cfb612c0c565b5b50612d61565b5060208310610133831016604e8410600b8410161715612d375782820a905083811115612d3257612d31612c0c565b5b612d61565b612d448484846001612c45565b92509050818404811115612d5b57612d5a612c0c565b5b81810290505b9392505050565b5f612d72826127b6565b9150612d7d836128d2565b9250612daa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c97565b905092915050565b5f612dbc826127b6565b9150612dc7836127b6565b9250828202612dd5816127b6565b91508282048414831517612dec57612deb612c0c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612e2e816127bf565b92915050565b5f60208284031215612e4957612e48612754565b5b5f612e5684828501612e20565b91505092915050565b5f612e79612e74612e6f8461275c565b612bba565b61275c565b9050919050565b5f612e8a82612e5f565b9050919050565b5f612e9b82612e80565b9050919050565b612eab81612e91565b82525050565b5f604082019050612ec45f830185612ea2565b612ed1602083018461285a565b9392505050565b612ee181612827565b8114612eeb575f80fd5b50565b5f81519050612efc81612ed8565b92915050565b5f60208284031215612f1757612f16612754565b5b5f612f2484828501612eee565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612f616017836126ab565b9150612f6c82612f2d565b602082019050919050565b5f6020820190508181035f830152612f8e81612f55565b9050919050565b5f81519050612fa38161278c565b92915050565b5f60208284031215612fbe57612fbd612754565b5b5f612fcb84828501612f95565b91505092915050565b5f604082019050612fe75f830185612ab8565b612ff46020830184612ab8565b9392505050565b5f60c08201905061300e5f830189612ab8565b61301b602083018861285a565b6130286040830187612be4565b6130356060830186612be4565b6130426080830185612ab8565b61304f60a083018461285a565b979650505050505050565b5f805f6060848603121561307157613070612754565b5b5f61307e86828701612e20565b935050602061308f86828701612e20565b92505060406130a086828701612e20565b9150509250925092565b5f6040820190506130bd5f830185612ab8565b6130ca602083018461285a565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61312b6024836126ab565b9150613136826130d1565b604082019050919050565b5f6020820190508181035f8301526131588161311f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131b96022836126ab565b91506131c48261315f565b604082019050919050565b5f6020820190508181035f8301526131e6816131ad565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6132476025836126ab565b9150613252826131ed565b604082019050919050565b5f6020820190508181035f8301526132748161323b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6132d56023836126ab565b91506132e08261327b565b604082019050919050565b5f6020820190508181035f830152613302816132c9565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6133636029836126ab565b915061336e82613309565b604082019050919050565b5f6020820190508181035f83015261339081613357565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6133cb6019836126ab565b91506133d682613397565b602082019050919050565b5f6020820190508181035f8301526133f8816133bf565b9050919050565b5f613409826127b6565b9150613414836127b6565b925082820190508082111561342c5761342b612c0c565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613466601a836126ab565b915061347182613432565b602082019050919050565b5f6020820190508181035f8301526134938161345a565b9050919050565b5f6134a4826127b6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134d6576134d5612c0c565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6135156017836126ab565b9150613520826134e1565b602082019050919050565b5f6020820190508181035f83015261354281613509565b9050919050565b5f613553826127b6565b915061355e836127b6565b925082820390508181111561357657613575612c0c565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6135ae8161277b565b82525050565b5f6135bf83836135a5565b60208301905092915050565b5f602082019050919050565b5f6135e18261357c565b6135eb8185613586565b93506135f683613596565b805f5b8381101561362657815161360d88826135b4565b9750613618836135cb565b9250506001810190506135f9565b5085935050505092915050565b5f60a0820190506136465f83018861285a565b6136536020830187612be4565b818103604083015261366581866135d7565b90506136746060830185612ab8565b613681608083018461285a565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136c2826127b6565b91506136cd836127b6565b9250826136dd576136dc61368b565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137426021836126ab565b915061374d826136e8565b604082019050919050565b5f6020820190508181035f83015261376f81613736565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6137aa601b836126ab565b91506137b582613776565b602082019050919050565b5f6020820190508181035f8301526137d78161379e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122054de457d001f71dad93846b6880e5501d462edce9269d98a8914aded5f9f9df064736f6c63430008170033