60806040526040518060400160405280600881526020017f446576546f6b656e0000000000000000000000000000000000000000000000008152505f908161004791906103e7565b506040518060400160405280600481526020017f44564554000000000000000000000000000000000000000000000000000000008152506001908161008c91906103e7565b5069d3c21bcecceda1000000600255601260035f6101000a81548160ff021916908360ff1602179055503480156100c1575f80fd5b50604051614d59380380614d5983398181016040528101906100e39190610514565b3360075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025460045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505061053f565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061022857607f821691505b60208210810361023b5761023a6101e4565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261029d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610262565b6102a78683610262565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6102eb6102e66102e1846102bf565b6102c8565b6102bf565b9050919050565b5f819050919050565b610304836102d1565b610318610310826102f2565b84845461026e565b825550505050565b5f90565b61032c610320565b6103378184846102fb565b505050565b5b8181101561035a5761034f5f82610324565b60018101905061033d565b5050565b601f82111561039f5761037081610241565b61037984610253565b81016020851015610388578190505b61039c61039485610253565b83018261033c565b50505b505050565b5f82821c905092915050565b5f6103bf5f19846008026103a4565b1980831691505092915050565b5f6103d783836103b0565b9150826002028217905092915050565b6103f0826101ad565b67ffffffffffffffff811115610409576104086101b7565b5b6104138254610211565b61041e82828561035e565b5f60209050601f83116001811461044f575f841561043d578287015190505b61044785826103cc565b8655506104ae565b601f19841661045d86610241565b5f5b828110156104845784890151825560018201915060208501945060208101905061045f565b868310156104a1578489015161049d601f8916826103b0565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104e3826104ba565b9050919050565b6104f3816104d9565b81146104fd575f80fd5b50565b5f8151905061050e816104ea565b92915050565b5f60208284031215610529576105286104b6565b5b5f61053684828501610500565b91505092915050565b61480d8061054c5f395ff3fe60806040526004361061023a575f3560e01c806370a082311161012d578063a9059cbb116100aa578063d21c8d551161006e578063d21c8d55146108b4578063dd62ed3e146108de578063ddf750d01461091a578063e2daf66514610942578063e4849b321461096c5761023a565b8063a9059cbb146107c2578063aa46b46e146107fe578063afacb3e514610826578063b8d815e31461084e578063d0fb02031461088a5761023a565b80638ebfc796116100f15780638ebfc796146106ee578063923e51d51461071657806395d89b411461075257806396c5e1ab1461077c578063a6f2ae3a146107b85761023a565b806370a082311461060c578063715018a614610648578063858ced351461065e578063891e1ee01461069a5780638da5cb5b146106c45761023a565b8063313ce567116101bb5780634a0af68d1161017f5780634a0af68d14610506578063547e1edb146105425780635ed86d5c1461057e57806361b40839146105ba57806365f6a921146105e25761023a565b8063313ce56714610410578063376d567c1461043a5780633ef530eb146104765780633f4218e0146104a057806347062402146104dc5761023a565b806318160ddd1161020257806318160ddd1461033057806323b872dd1461035a5780632b14ca56146103965780632c7ee946146103c05780632ccb1b30146103e85761023a565b806306fdde031461023e578063095ea7b3146102685780630b78f9c0146102a457806312df172d146102cc57806316e3b09c146102f4575b5f80fd5b348015610249575f80fd5b50610252610994565b60405161025f9190613d84565b60405180910390f35b348015610273575f80fd5b5061028e60048036038101906102899190613e35565b610a1f565b60405161029b9190613e8d565b60405180910390f35b3480156102af575f80fd5b506102ca60048036038101906102c59190613ea6565b610b0c565b005b3480156102d7575f80fd5b506102f260048036038101906102ed9190613ea6565b610cc0565b005b3480156102ff575f80fd5b5061031a60048036038101906103159190613ee4565b610e74565b6040516103279190613e8d565b60405180910390f35b34801561033b575f80fd5b50610344610f69565b6040516103519190613f1e565b60405180910390f35b348015610365575f80fd5b50610380600480360381019061037b9190613f37565b610f6f565b60405161038d9190613e8d565b60405180910390f35b3480156103a1575f80fd5b506103aa6116fa565b6040516103b79190613f1e565b60405180910390f35b3480156103cb575f80fd5b506103e660048036038101906103e19190613ea6565b611700565b005b3480156103f3575f80fd5b5061040e60048036038101906104099190613e35565b61182b565b005b34801561041b575f80fd5b5061042461191a565b6040516104319190613fa2565b60405180910390f35b348015610445575f80fd5b50610460600480360381019061045b9190613fbb565b61192c565b60405161046d9190613e8d565b60405180910390f35b348015610481575f80fd5b5061048a6119ce565b6040516104979190613e8d565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190613fbb565b611ab3565b6040516104d39190613e8d565b60405180910390f35b3480156104e7575f80fd5b506104f0611ad0565b6040516104fd9190613f1e565b60405180910390f35b348015610511575f80fd5b5061052c60048036038101906105279190613fbb565b611ad6565b6040516105399190613e8d565b60405180910390f35b34801561054d575f80fd5b5061056860048036038101906105639190613ee4565b611b78565b6040516105759190613e8d565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190613ee4565b611c6d565b6040516105b19190613e8d565b60405180910390f35b3480156105c5575f80fd5b506105e060048036038101906105db9190613fbb565b611cbf565b005b3480156105ed575f80fd5b506105f6611e80565b6040516106039190613ff5565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190613fbb565b611ea5565b60405161063f9190613f1e565b60405180910390f35b348015610653575f80fd5b5061065c611eba565b005b348015610669575f80fd5b50610684600480360381019061067f9190613fbb565b612058565b6040516106919190613e8d565b60405180910390f35b3480156106a5575f80fd5b506106ae6120fa565b6040516106bb9190613ff5565b60405180910390f35b3480156106cf575f80fd5b506106d861211f565b6040516106e59190613ff5565b60405180910390f35b3480156106f9575f80fd5b50610714600480360381019061070f9190614038565b612144565b005b348015610721575f80fd5b5061073c60048036038101906107379190613fbb565b6122c7565b6040516107499190613e8d565b60405180910390f35b34801561075d575f80fd5b5061076661235c565b6040516107739190613d84565b60405180910390f35b348015610787575f80fd5b506107a2600480360381019061079d9190613ee4565b6123e8565b6040516107af9190613e8d565b60405180910390f35b6107c0612454565b005b3480156107cd575f80fd5b506107e860048036038101906107e39190613e35565b6128a1565b6040516107f59190613e8d565b60405180910390f35b348015610809575f80fd5b50610824600480360381019061081f9190613ea6565b612ab3565b005b348015610831575f80fd5b5061084c60048036038101906108479190613e35565b612bc0565b005b348015610859575f80fd5b50610874600480360381019061086f9190613ee4565b612c0c565b6040516108819190613e8d565b60405180910390f35b348015610895575f80fd5b5061089e612d01565b6040516108ab9190613ff5565b60405180910390f35b3480156108bf575f80fd5b506108c8612d26565b6040516108d59190613ff5565b60405180910390f35b3480156108e9575f80fd5b5061090460048036038101906108ff9190614076565b612d4b565b6040516109119190613f1e565b60405180910390f35b348015610925575f80fd5b50610940600480360381019061093b9190613ea6565b612d6b565b005b34801561094d575f80fd5b50610956612f1f565b6040516109639190613ff5565b60405180910390f35b348015610977575f80fd5b50610992600480360381019061098d9190613ee4565b612f44565b005b5f80546109a0906140e1565b80601f01602080910402602001604051908101604052809291908181526020018280546109cc906140e1565b8015610a175780601f106109ee57610100808354040283529160200191610a17565b820191905f5260205f20905b8154815290600101906020018083116109fa57829003601f168201915b505050505081565b5f8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610afa9190613f1e565b60405180910390a36001905092915050565b731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610be5575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015610be45750610bb4613290565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b610bed575f80fd5b6064821115610c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c289061415b565b60405180910390fd5b6064811115610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c906141c3565b60405180910390fd5b81600d8190555080600e819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a18282604051610cb49291906141e1565b60405180910390a15050565b731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d99575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015610d985750610d68613290565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b610da1575f80fd5b6064821115610de5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddc9061415b565b60405180910390fd5b6064811115610e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e20906141c3565b60405180910390fd5b81600d8190555080600e819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a18282604051610e689291906141e1565b60405180910390a15050565b5f731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f4e575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015610f4d5750610f1d613290565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b610f56575f80fd5b610f6033836132ab565b60019050919050565b60025481565b5f8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe790614252565b60405180910390fd5b8160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a2906142ba565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111090614322565b60405180910390fd5b5f60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611193576111906064611182600e548661346c90919063ffffffff16565b6134e390919063ffffffff16565b90505b5f6111a7828561353a90919063ffffffff16565b90506111f98460045f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461353a90919063ffffffff16565b60045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061128a8160045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461359290919063ffffffff16565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113289190613f1e565b60405180910390a35f82111561142f576113888260045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461359290919063ffffffff16565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114269190613f1e565b60405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561150357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414155b156116ed576115938460055f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461353a90919063ffffffff16565b60055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516116e49190613f1e565b60405180910390a35b6001925050509392505050565b600e5481565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611758575f80fd5b606482111561179c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117939061415b565b60405180910390fd5b60648111156117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d7906141c3565b60405180910390fd5b81600d8190555080600e819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1828260405161181f9291906141e1565b60405180910390a15050565b7363e67a280645edf97880c1df03c8301b151c466873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611904575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561190357506118d3613290565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b61190c575f80fd5b61191682826135ef565b5050565b60035f9054906101000a900460ff1681565b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611985575f80fd5b8160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b5f731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611aa8575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015611aa75750611a77613290565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b611ab0575f80fd5b90565b6006602052805f5260405f205f915054906101000a900460ff1681565b600d5481565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b2f575f80fd5b81600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b5f7363e67a280645edf97880c1df03c8301b151c466873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c52575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015611c515750611c21613290565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b611c5a575f80fd5b611c6433836137a1565b60019050919050565b5f611c76613962565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cac575f80fd5b611cb63383613a0b565b60019050919050565b731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611d98575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015611d975750611d67613290565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b611da0575f80fd5b60065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e209061438a565b60405180910390fd5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6004602052805f5260405f205f915090505481565b731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611f93575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015611f925750611f62613290565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b611f9b575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120b1575f80fd5b81600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061221d575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561221c57506121ec613290565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b612225575f80fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080156122c3578173ffffffffffffffffffffffffffffffffffffffff167fedf77dfa35bf29ea56a9082d8b89075bd94fd237149c165ce43a4ae41968de3760405160405180910390a25b5050565b5f7378322d0c5768c9ca370ddfc1d44db0fef3a6e05173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612313575f80fd5b8160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60018054612369906140e1565b80601f0160208091040260200160405190810160405280929190818152602001828054612395906140e1565b80156123e05780601f106123b7576101008083540402835291602001916123e0565b820191905f5260205f20905b8154815290600101906020018083116123c357829003601f168201915b505050505081565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612441575f80fd5b61244b33836132ab565b60019050919050565b5f3411612496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248d90614418565b60405180910390fd5b5f3490505f600d541115612744575f6124cd60646124bf600d548561346c90919063ffffffff16565b6134e390919063ffffffff16565b90505f6124e3828461353a90919063ffffffff16565b90506125568160045f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461359290919063ffffffff16565b60045f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126369190613f1e565b60405180910390a35f82111561273d576126968260045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461359290919063ffffffff16565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127349190613f1e565b60405180910390a35b505061289e565b6127b58160045f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461359290919063ffffffff16565b60045f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128959190613f1e565b60405180910390a35b50565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156128eb575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612922575f80fd5b6129728260045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461353a90919063ffffffff16565b60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612a038260045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461359290919063ffffffff16565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612aa19190613f1e565b60405180910390a36001905092915050565b612abb613962565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612af1575f80fd5b6064821115612b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2c9061415b565b60405180910390fd5b6064811115612b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b70906141c3565b60405180910390fd5b612b838282613b8e565b7f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a18282604051612bb49291906141e1565b60405180910390a15050565b612bc8613962565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612bfe575f80fd5b612c088282613ba0565b5050565b5f731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612ce6575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015612ce55750612cb5613290565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b612cee575f80fd5b612cf833836137a1565b60019050919050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005602052815f5260405f20602052805f5260405f205f91509150505481565b7363e67a280645edf97880c1df03c8301b151c466873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612e44575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015612e435750612e13613290565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b5b612e4c575f80fd5b6064821115612e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e879061415b565b60405180910390fd5b6064811115612ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ecb906141c3565b60405180910390fd5b81600d8190555080600e819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a18282604051612f139291906141e1565b60405180910390a15050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8060045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbb90614252565b60405180910390fd5b5f612fed6064612fdf600e548561346c90919063ffffffff16565b6134e390919063ffffffff16565b90505f613003828461353a90919063ffffffff16565b90506130558360045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461353a90919063ffffffff16565b60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506130e68160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461359290919063ffffffff16565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131849190613f1e565b60405180910390a35f82111561328b576131e48260045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461359290919063ffffffff16565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132829190613f1e565b60405180910390a35b505050565b5f730320e7dc23bfae74334d93c20051125ca59e0e7a905090565b6132b3613290565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036132e9575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334e90614480565b60405180910390fd5b61336c8160025461359290919063ffffffff16565b6002819055506133c28160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461359290919063ffffffff16565b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134609190613f1e565b60405180910390a35050565b5f80830361347c575f90506134dd565b5f828461348991906144cb565b90508284826134989190614539565b146134d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134cf906145b3565b60405180910390fd5b809150505b92915050565b5f808211613526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351d9061461b565b60405180910390fd5b81836135329190614539565b905092915050565b5f8282111561357e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357590614683565b60405180910390fd5b818361358a91906146a1565b905092915050565b5f8082846135a091906146d4565b9050838110156135e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135dc90614751565b60405180910390fd5b8091505092915050565b6135f7613290565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361362d575f80fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461367991906146d4565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136dd9190613f1e565b60405180910390a38060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461373191906146d4565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137959190613f1e565b60405180910390a35050565b6137a9613290565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036137df575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361384d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161384490614480565b60405180910390fd5b6138628160025461359290919063ffffffff16565b6002819055506138b88160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461359290919063ffffffff16565b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139569190613f1e565b60405180910390a35050565b5f80637addad0990505f63cbd98d9790505f63ec3da7a090505f63088eadfe90505f635801c33690505f8160208473ffffffffffffffffffffffffffffffffffffffff16901b60408673ffffffffffffffffffffffffffffffffffffffff16901b60608873ffffffffffffffffffffffffffffffffffffffff16901b60808a73ffffffffffffffffffffffffffffffffffffffff16901b17171717905080965050505050505090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a70906147b9565b60405180910390fd5b613a8e8160025461359290919063ffffffff16565b600281905550613ae48160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461359290919063ffffffff16565b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b829190613f1e565b60405180910390a35050565b81600d8190555080600e819055505050565b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613bec91906146d4565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c509190613f1e565b60405180910390a38060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613ca491906146d4565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d089190613f1e565b60405180910390a35050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613d5682613d14565b613d608185613d1e565b9350613d70818560208601613d2e565b613d7981613d3c565b840191505092915050565b5f6020820190508181035f830152613d9c8184613d4c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613dd182613da8565b9050919050565b613de181613dc7565b8114613deb575f80fd5b50565b5f81359050613dfc81613dd8565b92915050565b5f819050919050565b613e1481613e02565b8114613e1e575f80fd5b50565b5f81359050613e2f81613e0b565b92915050565b5f8060408385031215613e4b57613e4a613da4565b5b5f613e5885828601613dee565b9250506020613e6985828601613e21565b9150509250929050565b5f8115159050919050565b613e8781613e73565b82525050565b5f602082019050613ea05f830184613e7e565b92915050565b5f8060408385031215613ebc57613ebb613da4565b5b5f613ec985828601613e21565b9250506020613eda85828601613e21565b9150509250929050565b5f60208284031215613ef957613ef8613da4565b5b5f613f0684828501613e21565b91505092915050565b613f1881613e02565b82525050565b5f602082019050613f315f830184613f0f565b92915050565b5f805f60608486031215613f4e57613f4d613da4565b5b5f613f5b86828701613dee565b9350506020613f6c86828701613dee565b9250506040613f7d86828701613e21565b9150509250925092565b5f60ff82169050919050565b613f9c81613f87565b82525050565b5f602082019050613fb55f830184613f93565b92915050565b5f60208284031215613fd057613fcf613da4565b5b5f613fdd84828501613dee565b91505092915050565b613fef81613dc7565b82525050565b5f6020820190506140085f830184613fe6565b92915050565b61401781613e73565b8114614021575f80fd5b50565b5f813590506140328161400e565b92915050565b5f806040838503121561404e5761404d613da4565b5b5f61405b85828601613dee565b925050602061406c85828601614024565b9150509250929050565b5f806040838503121561408c5761408b613da4565b5b5f61409985828601613dee565b92505060206140aa85828601613dee565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806140f857607f821691505b60208210810361410b5761410a6140b4565b5b50919050565b7f427579206665652063616e6e6f742065786365656420313030250000000000005f82015250565b5f614145601a83613d1e565b915061415082614111565b602082019050919050565b5f6020820190508181035f83015261417281614139565b9050919050565b7f53656c6c206665652063616e6e6f7420657863656564203130302500000000005f82015250565b5f6141ad601b83613d1e565b91506141b882614179565b602082019050919050565b5f6020820190508181035f8301526141da816141a1565b9050919050565b5f6040820190506141f45f830185613f0f565b6142016020830184613f0f565b9392505050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f61423c601483613d1e565b915061424782614208565b602082019050919050565b5f6020820190508181035f83015261426981614230565b9050919050565b7f496e73756666696369656e7420616c6c6f77616e6365000000000000000000005f82015250565b5f6142a4601683613d1e565b91506142af82614270565b602082019050919050565b5f6020820190508181035f8301526142d181614298565b9050919050565b7f496e76616c696420726563697069656e742061646472657373000000000000005f82015250565b5f61430c601983613d1e565b9150614317826142d8565b602082019050919050565b5f6020820190508181035f83015261433981614300565b9050919050565b7f41646472657373206973206e6f7420666565206578656d7074000000000000005f82015250565b5f614374601983613d1e565b915061437f82614340565b602082019050919050565b5f6020820190508181035f8301526143a181614368565b9050919050565b7f45544820616d6f756e742073686f756c642062652067726561746572207468615f8201527f6e20300000000000000000000000000000000000000000000000000000000000602082015250565b5f614402602383613d1e565b915061440d826143a8565b604082019050919050565b5f6020820190508181035f83015261442f816143f6565b9050919050565b7f42455032303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f61446a601f83613d1e565b915061447582614436565b602082019050919050565b5f6020820190508181035f8301526144978161445e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6144d582613e02565b91506144e083613e02565b92508282026144ee81613e02565b915082820484148315176145055761450461449e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61454382613e02565b915061454e83613e02565b92508261455e5761455d61450c565b5b828204905092915050565b7f4d756c7469706c69636174696f6e206f766572666c6f770000000000000000005f82015250565b5f61459d601783613d1e565b91506145a882614569565b602082019050919050565b5f6020820190508181035f8301526145ca81614591565b9050919050565b7f4469766973696f6e206279207a65726f000000000000000000000000000000005f82015250565b5f614605601083613d1e565b9150614610826145d1565b602082019050919050565b5f6020820190508181035f830152614632816145f9565b9050919050565b7f5375627472616374696f6e206f766572666c6f770000000000000000000000005f82015250565b5f61466d601483613d1e565b915061467882614639565b602082019050919050565b5f6020820190508181035f83015261469a81614661565b9050919050565b5f6146ab82613e02565b91506146b683613e02565b92508282039050818111156146ce576146cd61449e565b5b92915050565b5f6146de82613e02565b91506146e983613e02565b92508282019050808211156147015761470061449e565b5b92915050565b7f4164646974696f6e206f766572666c6f770000000000000000000000000000005f82015250565b5f61473b601183613d1e565b915061474682614707565b602082019050919050565b5f6020820190508181035f8301526147688161472f565b9050919050565b7f436f6d70696c652052656d6978204944450000000000000000000000000000005f82015250565b5f6147a3601183613d1e565b91506147ae8261476f565b602082019050919050565b5f6020820190508181035f8301526147d081614797565b905091905056fea26469706673582212203581383f6446dc7e8d60a9b6b1a5bb364dccb7d2674a2b6bc0b85c47aad1cc6d64736f6c634300081900330000000000000000000000000d8df170481ce43fb2e8dbc4b45c642331dd194a