6080604052601960065560196007555f6008555f6009556017600a556019600b55601a600c556046600d555f600e556009600a61003c919061059f565b6503d37ec7b50061004d91906105e9565b600f556009600a61005e919061059f565b6503d37ec7b50061006f91906105e9565b6010556009600a610080919061059f565b6503d37ec7b50061009191906105e9565b6011556009600a6100a2919061059f565b6503d37ec7b5006100b391906105e9565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f6015555f6016553480156100fd575f80fd5b505f61010d61040060201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3503260055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6101f7919061059f565b66017e9d8602b40061020991906105e9565b60015f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61025d61040760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6103d4919061059f565b66017e9d8602b4006103e691906105e9565b6040516103f39190610639565b60405180910390a3610652565b5f32905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104b05780860481111561048c5761048b61042e565b5b600185161561049b5780820291505b80810290506104a98561045b565b9450610470565b94509492505050565b5f826104c85760019050610583565b816104d5575f9050610583565b81600181146104eb57600281146104f557610524565b6001915050610583565b60ff8411156105075761050661042e565b5b8360020a91508482111561051e5761051d61042e565b5b50610583565b5060208310610133831016604e8410600b84101617156105595782820a9050838111156105545761055361042e565b5b610583565b6105668484846001610467565b9250905081840481111561057d5761057c61042e565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6105a98261058a565b91506105b483610593565b92506105e17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104b9565b905092915050565b5f6105f38261058a565b91506105fe8361058a565b925082820261060c8161058a565b915082820484148315176106235761062261042e565b5b5092915050565b6106338161058a565b82525050565b5f60208201905061064c5f83018461062a565b92915050565b6135438061065f5f395ff3fe608060405260043610610143575f3560e01c8063715018a6116100b5578063a9059cbb1161006e578063a9059cbb1461040e578063bf474bed1461044a578063c9567bf914610474578063d34628cc1461048a578063dd62ed3e146104b2578063ec1f3f63146104ee5761014a565b8063715018a61461033a578063751039fc146103505780637d1db4a5146103665780638da5cb5b146103905780638f9a55c0146103ba57806395d89b41146103e45761014a565b806323b872dd1161010757806323b872dd1461021e578063313ce5671461025a57806331c2d847146102845780633bbac579146102ac57806351bc3c85146102e857806370a08231146102fe5761014a565b806306fdde031461014e578063095ea7b3146101785780630faee56f146101b4578063109daa99146101de57806318160ddd146101f45761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b50610162610516565b60405161016f91906124d6565b60405180910390f35b348015610183575f80fd5b5061019e60048036038101906101999190612594565b610553565b6040516101ab91906125ec565b60405180910390f35b3480156101bf575f80fd5b506101c8610570565b6040516101d59190612614565b60405180910390f35b3480156101e9575f80fd5b506101f2610576565b005b3480156101ff575f80fd5b5061020861064a565b6040516102159190612614565b60405180910390f35b348015610229575f80fd5b50610244600480360381019061023f919061262d565b610670565b60405161025191906125ec565b60405180910390f35b348015610265575f80fd5b5061026e610744565b60405161027b9190612698565b60405180910390f35b34801561028f575f80fd5b506102aa60048036038101906102a591906127f1565b61074c565b005b3480156102b7575f80fd5b506102d260048036038101906102cd9190612838565b61086a565b6040516102df91906125ec565b60405180910390f35b3480156102f3575f80fd5b506102fc6108bc565b005b348015610309575f80fd5b50610324600480360381019061031f9190612838565b610953565b6040516103319190612614565b60405180910390f35b348015610345575f80fd5b5061034e610999565b005b34801561035b575f80fd5b50610364610ae7565b005b348015610371575f80fd5b5061037a610c1f565b6040516103879190612614565b60405180910390f35b34801561039b575f80fd5b506103a4610c25565b6040516103b19190612872565b60405180910390f35b3480156103c5575f80fd5b506103ce610c4c565b6040516103db9190612614565b60405180910390f35b3480156103ef575f80fd5b506103f8610c52565b60405161040591906124d6565b60405180910390f35b348015610419575f80fd5b50610434600480360381019061042f9190612594565b610c8f565b60405161044191906125ec565b60405180910390f35b348015610455575f80fd5b5061045e610cac565b60405161046b9190612614565b60405180910390f35b34801561047f575f80fd5b50610488610cb2565b005b348015610495575f80fd5b506104b060048036038101906104ab91906127f1565b6111d4565b005b3480156104bd575f80fd5b506104d860048036038101906104d3919061288b565b6112f3565b6040516104e59190612614565b60405180910390f35b3480156104f9575f80fd5b50610514600480360381019061050f91906128c9565b611375565b005b60606040518060400160405280600581526020017f5465737433000000000000000000000000000000000000000000000000000000815250905090565b5f61056661055f611401565b8484611408565b6001905092915050565b60125481565b61057e611401565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461060a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106019061293e565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f604051610640919061299e565b60405180910390a1565b5f6009600a6106599190612b13565b66017e9d8602b40061066b9190612b5d565b905090565b5f61067c8484846115cb565b61073984610688611401565b610734856040518060600160405280602881526020016134e66028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106eb611401565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f529092919063ffffffff16565b611408565b600190509392505050565b5f6009905090565b610754611401565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d79061293e565b60405180910390fd5b5f5b8151811015610866575f60045f84848151811061080257610801612b9e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506107e2565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611401565b73ffffffffffffffffffffffffffffffffffffffff161461091b575f80fd5b5f61092530610953565b90505f8111156109395761093881611fb4565b5b5f4790505f81111561094f5761094e8161221f565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109a1611401565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a249061293e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610aef611401565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b729061293e565b60405180910390fd5b6009600a610b899190612b13565b66017e9d8602b400610b9b9190612b5d565b600f819055506009600a610baf9190612b13565b66017e9d8602b400610bc19190612b5d565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610bf69190612b13565b66017e9d8602b400610c089190612b5d565b604051610c159190612614565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600581526020017f5465737433000000000000000000000000000000000000000000000000000000815250905090565b5f610ca2610c9b611401565b84846115cb565b6001905092915050565b60115481565b610cba611401565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d9061293e565b60405180910390fd5b60148054906101000a900460ff1615610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b90612c15565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e333060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610e1c9190612b13565b66017e9d8602b400610e2e9190612b5d565b611408565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec19190612c47565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6b9190612c47565b6040518363ffffffff1660e01b8152600401610f88929190612c72565b6020604051808303815f875af1158015610fa4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc89190612c47565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061104f30610953565b5f80611059610c25565b426040518863ffffffff1660e01b815260040161107b96959493929190612c99565b60606040518083038185885af1158015611097573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110bc9190612d0c565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161115c929190612d5c565b6020604051808303815f875af1158015611178573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061119c9190612dad565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b6111dc611401565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125f9061293e565b60405180910390fd5b5f5b81518110156112ef57600160045f84848151811061128b5761128a612b9e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061126a565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113b5611401565b73ffffffffffffffffffffffffffffffffffffffff16146113d4575f80fd5b60085481111580156113e857506009548111155b6113f0575f80fd5b806008819055508060098190555050565b5f32905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d90612e48565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114db90612ed6565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115be9190612614565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163090612f64565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169e90612ff2565b60405180910390fd5b5f81116116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e090613080565b60405180910390fd5b5f6116f2610c25565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117605750611730610c25565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ca25760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611803575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61180b575f80fd5b5f600e5403611853576118506064611842600a54600e541161182f57600654611833565b6008545b8561228790919063ffffffff16565b6122fe90919063ffffffff16565b90505b5f600e541115611888576118856064611877600d548561228790919063ffffffff16565b6122fe90919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611931575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611984575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611a7c57600f548211156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c5906130e8565b60405180910390fd5b601054826119db85610953565b6119e59190613106565b1115611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d90613183565b60405180910390fd5b611a626064611a54600a54600e5411611a4157600654611a45565b6008545b8561228790919063ffffffff16565b6122fe90919063ffffffff16565b9050600e5f815480929190611a76906131a1565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b0457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611b4857611b456064611b37600b54600e5411611b2457600754611b28565b6009545b8561228790919063ffffffff16565b6122fe90919063ffffffff16565b90505b5f611b5230610953565b9050601460159054906101000a900460ff16158015611bbd575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611bd55750601460169054906101000a900460ff165b8015611be2575060115481115b8015611bf15750600c54600e54115b15611ca057601654431115611c08575f6015819055505b600360155410611c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4490613232565b60405180910390fd5b611c6a611c6584611c6084601254612347565b612347565b611fb4565b5f4790505f811115611c8057611c7f4761221f565b5b60155f815480929190611c92906131a1565b919050555043601681905550505b505b5f811115611da157611cfa8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461235f90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d989190612614565b60405180910390a35b611df18260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123bc90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e94611e4882846123bc90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461235f90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611f3784866123bc90919063ffffffff16565b604051611f449190612614565b60405180910390a350505050565b5f838311158290611f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9091906124d6565b60405180910390fd5b505f8385611fa79190613250565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611feb57611fea6126b5565b5b6040519080825280602002602001820160405280156120195781602001602082028036833780820191505090505b50905030815f815181106120305761202f612b9e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120f89190612c47565b8160018151811061210c5761210b612b9e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121723060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611408565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016121d495949392919061333a565b5f604051808303815f87803b1580156121eb575f80fd5b505af11580156121fd573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612283573d5f803e3d5ffd5b5050565b5f808303612297575f90506122f8565b5f82846122a49190612b5d565b90508284826122b391906133bf565b146122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea9061345f565b60405180910390fd5b809150505b92915050565b5f61233f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612405565b905092915050565b5f8183116123555782612357565b815b905092915050565b5f80828461236d9190613106565b9050838110156123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a9906134c7565b60405180910390fd5b8091505092915050565b5f6123fd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f52565b905092915050565b5f808311829061244b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244291906124d6565b60405180910390fd5b505f838561245991906133bf565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6124a882612466565b6124b28185612470565b93506124c2818560208601612480565b6124cb8161248e565b840191505092915050565b5f6020820190508181035f8301526124ee818461249e565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61253082612507565b9050919050565b61254081612526565b811461254a575f80fd5b50565b5f8135905061255b81612537565b92915050565b5f819050919050565b61257381612561565b811461257d575f80fd5b50565b5f8135905061258e8161256a565b92915050565b5f80604083850312156125aa576125a96124ff565b5b5f6125b78582860161254d565b92505060206125c885828601612580565b9150509250929050565b5f8115159050919050565b6125e6816125d2565b82525050565b5f6020820190506125ff5f8301846125dd565b92915050565b61260e81612561565b82525050565b5f6020820190506126275f830184612605565b92915050565b5f805f60608486031215612644576126436124ff565b5b5f6126518682870161254d565b93505060206126628682870161254d565b925050604061267386828701612580565b9150509250925092565b5f60ff82169050919050565b6126928161267d565b82525050565b5f6020820190506126ab5f830184612689565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6126eb8261248e565b810181811067ffffffffffffffff8211171561270a576127096126b5565b5b80604052505050565b5f61271c6124f6565b905061272882826126e2565b919050565b5f67ffffffffffffffff821115612747576127466126b5565b5b602082029050602081019050919050565b5f80fd5b5f61276e6127698461272d565b612713565b9050808382526020820190506020840283018581111561279157612790612758565b5b835b818110156127ba57806127a6888261254d565b845260208401935050602081019050612793565b5050509392505050565b5f82601f8301126127d8576127d76126b1565b5b81356127e884826020860161275c565b91505092915050565b5f60208284031215612806576128056124ff565b5b5f82013567ffffffffffffffff81111561282357612822612503565b5b61282f848285016127c4565b91505092915050565b5f6020828403121561284d5761284c6124ff565b5b5f61285a8482850161254d565b91505092915050565b61286c81612526565b82525050565b5f6020820190506128855f830184612863565b92915050565b5f80604083850312156128a1576128a06124ff565b5b5f6128ae8582860161254d565b92505060206128bf8582860161254d565b9150509250929050565b5f602082840312156128de576128dd6124ff565b5b5f6128eb84828501612580565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612928602083612470565b9150612933826128f4565b602082019050919050565b5f6020820190508181035f8301526129558161291c565b9050919050565b5f819050919050565b5f819050919050565b5f61298861298361297e8461295c565b612965565b612561565b9050919050565b6129988161296e565b82525050565b5f6020820190506129b15f83018461298f565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612a3957808604811115612a1557612a146129b7565b5b6001851615612a245780820291505b8081029050612a32856129e4565b94506129f9565b94509492505050565b5f82612a515760019050612b0c565b81612a5e575f9050612b0c565b8160018114612a745760028114612a7e57612aad565b6001915050612b0c565b60ff841115612a9057612a8f6129b7565b5b8360020a915084821115612aa757612aa66129b7565b5b50612b0c565b5060208310610133831016604e8410600b8410161715612ae25782820a905083811115612add57612adc6129b7565b5b612b0c565b612aef84848460016129f0565b92509050818404811115612b0657612b056129b7565b5b81810290505b9392505050565b5f612b1d82612561565b9150612b288361267d565b9250612b557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612a42565b905092915050565b5f612b6782612561565b9150612b7283612561565b9250828202612b8081612561565b91508282048414831517612b9757612b966129b7565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612bff601783612470565b9150612c0a82612bcb565b602082019050919050565b5f6020820190508181035f830152612c2c81612bf3565b9050919050565b5f81519050612c4181612537565b92915050565b5f60208284031215612c5c57612c5b6124ff565b5b5f612c6984828501612c33565b91505092915050565b5f604082019050612c855f830185612863565b612c926020830184612863565b9392505050565b5f60c082019050612cac5f830189612863565b612cb96020830188612605565b612cc6604083018761298f565b612cd3606083018661298f565b612ce06080830185612863565b612ced60a0830184612605565b979650505050505050565b5f81519050612d068161256a565b92915050565b5f805f60608486031215612d2357612d226124ff565b5b5f612d3086828701612cf8565b9350506020612d4186828701612cf8565b9250506040612d5286828701612cf8565b9150509250925092565b5f604082019050612d6f5f830185612863565b612d7c6020830184612605565b9392505050565b612d8c816125d2565b8114612d96575f80fd5b50565b5f81519050612da781612d83565b92915050565b5f60208284031215612dc257612dc16124ff565b5b5f612dcf84828501612d99565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612e32602483612470565b9150612e3d82612dd8565b604082019050919050565b5f6020820190508181035f830152612e5f81612e26565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612ec0602283612470565b9150612ecb82612e66565b604082019050919050565b5f6020820190508181035f830152612eed81612eb4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612f4e602583612470565b9150612f5982612ef4565b604082019050919050565b5f6020820190508181035f830152612f7b81612f42565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612fdc602383612470565b9150612fe782612f82565b604082019050919050565b5f6020820190508181035f83015261300981612fd0565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61306a602983612470565b915061307582613010565b604082019050919050565b5f6020820190508181035f8301526130978161305e565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6130d2601983612470565b91506130dd8261309e565b602082019050919050565b5f6020820190508181035f8301526130ff816130c6565b9050919050565b5f61311082612561565b915061311b83612561565b9250828201905080821115613133576131326129b7565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61316d601a83612470565b915061317882613139565b602082019050919050565b5f6020820190508181035f83015261319a81613161565b9050919050565b5f6131ab82612561565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036131dd576131dc6129b7565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f61321c601783612470565b9150613227826131e8565b602082019050919050565b5f6020820190508181035f83015261324981613210565b9050919050565b5f61325a82612561565b915061326583612561565b925082820390508181111561327d5761327c6129b7565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6132b581612526565b82525050565b5f6132c683836132ac565b60208301905092915050565b5f602082019050919050565b5f6132e882613283565b6132f2818561328d565b93506132fd8361329d565b805f5b8381101561332d57815161331488826132bb565b975061331f836132d2565b925050600181019050613300565b5085935050505092915050565b5f60a08201905061334d5f830188612605565b61335a602083018761298f565b818103604083015261336c81866132de565b905061337b6060830185612863565b6133886080830184612605565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6133c982612561565b91506133d483612561565b9250826133e4576133e3613392565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613449602183612470565b9150613454826133ef565b604082019050919050565b5f6020820190508181035f8301526134768161343d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6134b1601b83612470565b91506134bc8261347d565b602082019050919050565b5f6020820190508181035f8301526134de816134a5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122054a7a66e8eac069a860631667bc2a51a0b3d9c92394315179feba3fc77b3a2a564736f6c63430008190033