Mw0NCn2EhGOiegAA4wAAAAAAAAAAAAAAAAYAAABAAAAAc+ACAABkAFoAZAFkAmwBWgFkAWQCbAJaAmQBZAJsA1oDZAFkAmwEWgRkAWQCbAVaBWQBZAJsBloGZAFkAmwHWgdkAWQCbAhaCGQBZAJsCVoJZAFkAmwKWgpkAWQCbAtaC2QBZANsDG0NWg0BAGQBZARsDm0PWg8BAGQFZAZsEG0QWhABAGQFZAdsEW0SWhIBAGQFZAhsE20UWhQBAGQFZAlsFW0WWhcBAGQFZApsFW0YWhhtGVoZbRpaGm0bWhttHFocbR1aHW0eWh5tH1ofbSBaIG0hWiFtIloibSNaI20kWiRtJVolAQBkBWQLbCZtJ1onAQBkBWQMbChtKVopAQBkBWQNbCptK1orbSxaLG0tWi1tLlouAQBkc1ovZRJqMIMAWjFkEGQRZBKcAloyZBNqM2UFajRkFGUPZBVkFo0BZBcZAIMCgwFaNWUIajZkGGsCkAFyYmQZZBqEAFo3ZBtkHIQAWh5kHWQehABaOGQfZCCEAFo5ZHRkImQjhAFaOmQkZCWEAFo7ZCZkJ4QAWjxlAmo9ZChkKYQAgwFaPmQqZCuEAFo/ZCxkLYQAWkBkLmQvhABaQWQwZDGEAFpCZHVkMmQzhAFaQ2Q0ZDWEAFpEZDZkN4QAWkVkOGQ5hABaRmQ6ZDuEAFpHZDxkPYQAWkhkPmQ/hABaSWRAZEGEAFpKZEJkQ4QAWktlTGR2gwFaTWRGZEeEAFpOZEhkSYQAWk9kSmRLhABaUGRMZE2EAFpRZE5kT4QAWlJkUGRRhABaU2UCaj1kUmRThACDAVpUZFRkVYQAWlVkd2RWZFeEAVpWZFhkWYQAWldkeGRbZFyEAVpYZF1kXoQAWllkX2RghABaWmRhaltkYoMBWlxlXGRjFABaXWVcZGQUAFpeZGVkZoQAWl9kZ2RohABaYGRpZGqEAFphZQVqYmRrgwFaY2UFamJkbIMBWmRkbWRuhABaZWRvZHCEAFpmZHFkcoQAWmdkAlMAKXl6lApyZXF1ZXN0cy51dGlscwp+fn5+fn5+fn5+fn5+fgoKVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgdGhhdCBhcmUgdXNlZCB3aXRoaW4gUmVxdWVzdHMKdGhhdCBhcmUgYWxzbyB1c2VmdWwgZm9yIGV4dGVybmFsIGNvbnN1bXB0aW9uLgrpAAAAAE4pAdoLT3JkZXJlZERpY3QpAdoMbWFrZV9oZWFkZXJz6QEAAAApAdoLX192ZXJzaW9uX18pAdoFY2VydHMpAdoQdG9fbmF0aXZlX3N0cmluZykB2g9wYXJzZV9odHRwX2xpc3QpDtoFcXVvdGXaCHVybHBhcnNl2gVieXRlc9oDc3Ry2gd1bnF1b3Rl2gpnZXRwcm94aWVz2gxwcm94eV9ieXBhc3PaCnVybHVucGFyc2XaCmJhc2VzdHJpbmfaDWludGVnZXJfdHlwZXPaBmlzX3B5M9oYcHJveHlfYnlwYXNzX2Vudmlyb25tZW502hZnZXRwcm94aWVzX2Vudmlyb25tZW502gdNYXBwaW5nKQHaE2Nvb2tpZWphcl9mcm9tX2RpY3QpAdoTQ2FzZUluc2Vuc2l0aXZlRGljdCkE2gpJbnZhbGlkVVJM2g1JbnZhbGlkSGVhZGVy2g9GaWxlTW9kZVdhcm5pbmfaFVVucmV3aW5kYWJsZUJvZHlFcnJvcvoGLm5ldHJj2gZfbmV0cmPpUAAAAGm7AQAAKQLaBGh0dHDaBWh0dHBzegIsIHoELFxzKlQpAdoPYWNjZXB0X2VuY29kaW5neg9hY2NlcHQtZW5jb2RpbmfaBXdpbjMyYwEAAAAAAAAABgAAABUAAABDAAAAc/QAAAB5GnQAchBkAWQAbAF9AW4IZAFkAGwCfQFXAG4UBAB0A2sKci4BAAEAAQBkAlMAWAB5NnwBagR8AWoFZAODAn0CdAZ8AWoHfAJkBIMCZAEZAIMBfQN8AWoHfAJkBYMCZAEZAH0EVwBuFAQAdAhrCnJ6AQABAAEAZAJTAFgAfAMMAHOIfAQMAHKMZAJTAHwEaglkBoMBfQR4WHwERABdUH0FfAVkB2sCcrRkCHwAawdytGQJUwB8BWoKZAhkCoMCfQV8BWoKZAtkDIMCfQV8BWoKZA1kCIMCfQV0C2oMfAV8AHQLag2DA3KcZAlTAHGcVwBkAlMAKQ5OcgEAAABGejtTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxJbnRlcm5ldCBTZXR0aW5nc1oLUHJveHlFbmFibGVaDVByb3h5T3ZlcnJpZGX6ATt6Bzxsb2NhbD7aAS5UegJcLtoBKnoCLir6AT8pDnITAAAA2gZ3aW5yZWfaB193aW5yZWfaC0ltcG9ydEVycm9y2gdPcGVuS2V52hFIS0VZX0NVUlJFTlRfVVNFUtoDaW502gxRdWVyeVZhbHVlRXjaB09TRXJyb3LaBXNwbGl02gdyZXBsYWNl2gJyZdoFbWF0Y2jaAUkpBtoEaG9zdHIoAAAAWhBpbnRlcm5ldFNldHRpbmdzWgtwcm94eUVuYWJsZVoNcHJveHlPdmVycmlkZdoEdGVzdKkAcjcAAAD6iy9ob21lL3VldGxoci9Eb2N1bWVudHMvU2VybW9QbG90X2JhY2tlbmQvZHJhZnRfU1JBTV9ibGFja2JveC9VRVRSVl9FU29DX3YyL3ZlbnYvbGliNjQvcHl0aG9uMy42L3NpdGUtcGFja2FnZXMvcGlwL192ZW5kb3IvcmVxdWVzdHMvdXRpbHMucHnaFXByb3h5X2J5cGFzc19yZWdpc3RyeTYAAABzOAAAAAABAgEEAQoCDAEOAQYCAgEIAQYCCAEMAgYBDgEOAQYBDAEEBQoCCgEIAQgBBAEMAQwBDAEQAQgBcjkAAABjAQAAAAAAAAABAAAAAgAAAEMAAABzGgAAAHQAgwByDnQBfACDAVMAdAJ8AIMBUwBkAVMAKQJ6mlJldHVybiBUcnVlLCBpZiB0aGUgaG9zdCBzaG91bGQgYmUgYnlwYXNzZWQuCgogICAgICAgIENoZWNrcyBwcm94eSBzZXR0aW5ncyBnYXRoZXJlZCBmcm9tIHRoZSBlbnZpcm9ubWVudCwgaWYgc3BlY2lmaWVkLAogICAgICAgIG9yIHRoZSByZWdpc3RyeS4KICAgICAgICBOKQNyFQAAAHIUAAAAcjkAAAApAXI1AAAAcjcAAAByNwAAAHI4AAAAcg8AAABdAAAAcwYAAAAABgYBCAJyDwAAAGMBAAAAAAAAAAEAAAADAAAAQwAAAHMWAAAAdAB8AGQBgwJyEnwAagGDAH0AfABTACkCei9SZXR1cm5zIGFuIGludGVybmFsIHNlcXVlbmNlIGRpY3Rpb25hcnkgdXBkYXRlLtoFaXRlbXMpAtoHaGFzYXR0cnI6AAAAKQHaAWRyNwAAAHI3AAAAcjgAAADaEGRpY3RfdG9fc2VxdWVuY2VpAAAAcwYAAAAAAwoBCAJyPQAAAGMBAAAA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