VQ0NCgAAAADLuIxj2IEAAOMAAAAAAAAAAAAAAAAAAAAACAAAAEAAAABz6gIAAGQAWgBkAWQCbAFaAWQBZAJsAloCZAFkAmwDWgNkAWQCbARaBGQBZAJsBVoFZAFkAmwGWgZkAWQCbAdaB2QBZAJsCFoIZAFkAmwJWglkAWQCbApaCmQBZAJsC1oLZAFkA2wMbQ1aDQEAZAFkBGwObQ9aD20QWhABAGQFZAZsEW0SWhIBAGQFZAdsE20TWhMBAGQFZAhsFG0VWhVtFloWAQBkBWQJbBdtGFoYbRlaGW0aWhptG1obbRxaHG0dWh0BAGQFZApsF20eWh8BAGQFZAtsF20gWiBtIVohbSJaIm0jWiNtJFokbSVaJW0mWiYBAGQFZAxsJ20oWigBAGQFZA1sKW0qWiptK1orbSxaLG0tWi0BAGQFZA5sLm0vWi8BAGQPWjBlEqAxoQBaMmQQZBFkEpwCWjNkE6A0ZQWgNWQUZQ9kFWQWjQFkFxkAoQKhAVo2ZQhqN2QYawKQAXJuZBlkGoQAWjhkG2QchABaIGQdZB6EAFo5ZB9kIIQAWjpkdGQiZCOEAVo7ZCRkJYQAWjxkJmQnhABaPWUCaj5kKGQphACDAVo/ZCpkK4QAWkBkLGQthABaQWQuZC+EAFpCZDBkMYQAWkNkdWQyZDOEAVpEZDRkNYQAWkVkNmQ3hABaRmQ4ZDmEAFpHZDpkO4QAWkhkPGQ9hABaSWQ+ZD+EAFpKZEBkQYQAWktkQmRDhABaTGVNZESDAVpOZEVkRoQAWk9kR2RIhABaUGRJZEqEAFpRZEtkTIQAWlJkTWROhABaU2RPZFCEAFpUZQJqPmRRZFKEAIMBWlVkU2RUhABaVmR2ZFVkVoQBWldkV2RYhABaWGR3ZFlkWoQBWllkeGRcZF2EAVpaZF5kX4QAWltkYGRhhABaXGRioF1kY6EBWl5lXmRkFABaX2VeZGUUAFpgZGZkZ4QAWmFkaGRphABaYmRqZGuEAFpjZGxkbYQAWmRkbmRvhABaZWRwZHGEAFpmZHJkc4QAWmdkAlMAKXl6lApyZXF1ZXN0cy51dGlscwp+fn5+fn5+fn5+fn5+fgoKVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgdGhhdCBhcmUgdXNlZCB3aXRoaW4gUmVxdWVzdHMKdGhhdCBhcmUgYWxzbyB1c2VmdWwgZm9yIGV4dGVybmFsIGNvbnN1bXB0aW9uLgrpAAAAAE4pAdoLT3JkZXJlZERpY3QpAtoMbWFrZV9oZWFkZXJz2glwYXJzZV91cmzpAQAAACkB2gVjZXJ0c6kB2gtfX3ZlcnNpb25fXykC2hFIRUFERVJfVkFMSURBVE9SU9oQdG9fbmF0aXZlX3N0cmluZykG2gdNYXBwaW5n2gpiYXNlc3RyaW5n2gVieXRlc9oKZ2V0cHJveGllc9oWZ2V0cHJveGllc19lbnZpcm9ubWVudNoNaW50ZWdlcl90eXBlcykB2g9wYXJzZV9odHRwX2xpc3QpB9oMcHJveHlfYnlwYXNz2hhwcm94eV9ieXBhc3NfZW52aXJvbm1lbnTaBXF1b3Rl2gNzdHLaB3VucXVvdGXaCHVybHBhcnNl2gp1cmx1bnBhcnNlqQHaE2Nvb2tpZWphcl9mcm9tX2RpY3QpBNoPRmlsZU1vZGVXYXJuaW5n2g1JbnZhbGlkSGVhZGVy2gpJbnZhbGlkVVJM2hVVbnJld2luZGFibGVCb2R5RXJyb3IpAdoTQ2FzZUluc2Vuc2l0aXZlRGljdCkCegYubmV0cmPaBl9uZXRyY+lQAAAAabsBAAApAtoEaHR0cNoFaHR0cHN6AiwgegQsXHMqVCkB2g9hY2NlcHRfZW5jb2Rpbmd6D2FjY2VwdC1lbmNvZGluZ9oFd2luMzJjAQAAAAAAAAAAAAAABgAAAAkAAABDAAAAc+oAAAB6DGQBZABsAH0BVwBuFgQAdAFrCnIiAQABAAEAWQBkAlMAWAB6NnwBoAJ8AWoDZAOhAn0CdAR8AaAFfAJkBKECZAEZAIMBfQN8AaAFfAJkBaECZAEZAH0EVwBuGgQAdAZ0B2YCawpydAEAAQABAFkAZAJTAFgAfANyfnwEc4JkAlMAfASgCGQGoQF9BHwERABdVH0FfAVkB2sCcqpkCHwAawdyqgEAZAlTAHwFoAlkCGQKoQJ9BXwFoAlkC2QMoQJ9BXwFoAlkDWQIoQJ9BXQKoAt8BXwAdApqDKEDcpABAGQJUwBxkGQCUwApDk5yAQAAAEZ6O1NvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXEludGVybmV0IFNldHRpbmdzWgtQcm94eUVu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eS92YWx1ZSBkaWN0aW9uYXJ5IGZyb20gYSBDb29raWVKYXIuCgogICAgOnBhcmFtIGNqOiBDb29raWVKYXIgb2JqZWN0IHRvIGV4dHJhY3QgY29va2llcyBmcm9tLgogICAgOnJ0eXBlOiBkaWN0CiAgICApAnKUAAAAcm8AAAApA9oCY2raC2Nvb2tpZV9kaWN02gZjb29raWVyOQAAAHI5AAAAcjoAAADaE2RpY3RfZnJvbV9jb29raWVqYXLJAQAAcwgAAAAABwQCCAEOAnKmAAAAYwIAAAAAAAAAAAAAAAIAAAADAAAAQwAAAHMKAAAAdAB8AXwAgwJTACkBesJSZXR1cm5zIGEgQ29va2llSmFyIGZyb20gYSBrZXkvdmFsdWUgZGljdGlvbmFyeS4KCiAgICA6cGFyYW0gY2o6IENvb2tpZUphciB0byBpbnNlcnQgY29va2llcyBpbnRvLgogICAgOnBhcmFtIGNvb2tpZV9kaWN0OiBEaWN0IG9mIGtleS92YWx1ZXMgdG8gaW5zZXJ0IGludG8gQ29va2llSmFyLgogICAgOnJ0eXBlOiBDb29raWVKYXIKICAgIHIZAAAAKQJyowAAAHKkAAAAcjkAAAByOQAAAHI6AAAA2hVhZGRfZGljdF90b19jb29raWVqYXLYAQAAcwIAAAAACHKnAAAAYwEAAAAAAAAAAAAAAAQAAAAEAAAAQwAAAHNUAAAAdACgAWQBdAKhAgEAdANqBGQCdANqBWQDjQJ9AXQDagRkBHQDagVkA40CfQJ0A6AEZAWhAX0DfAGgBnwAoQF8AqAGfAChARcAfAOgBnwAoQEXAFMAKQZ6bFJldHVybnMgZW5jb2RpbmdzIGZyb20gZ2l2ZW4gY29udGVudCBzdHJpbmcuCgogICAgOnBhcmFtIGNvbnRlbnQ6IGJ5dGVzdHJpbmcgdG8gZXh0cmFjdCBlbmNvZGluZ3MgZnJvbS4KICAgIHqkSW4gcmVxdWVzdHMgMy4wLCBnZXRfZW5jb2RpbmdzX2Zyb21fY29udGVudCB3aWxsIGJlIHJlbW92ZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIHRoZSBkaXNjdXNzaW9uIG9uIGlzc3VlICMyMjY2LiAoVGhpcyB3YXJuaW5nIHNob3VsZCBvbmx5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