IyAkTWlyT1M6IHNyYy9iaW4vbWtzaC9jaGVjay50LHYgMS44NTMgMjAyMC8xMC8zMSAwMzo1MzowMyB0ZyBFeHAgJAojIC0qLSBtb2RlOiBzaCAtKi0KIy0KIyBDb3B5cmlnaHQgwqkgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwKIwkgICAgICAyMDExLCAyMDEyLCAyMDEzLCAyMDE0LCAyMDE1LCAyMDE2LCAyMDE3LCAyMDE4LAojCSAgICAgIDIwMTksIDIwMjAKIwltaXJhYmlsb3MgPG1AbWlyYnNkLm9yZz4KIwojIFByb3ZpZGVkIHRoYXQgdGhlc2UgdGVybXMgYW5kIGRpc2NsYWltZXIgYW5kIGFsbCBjb3B5cmlnaHQgbm90aWNlcwojIGFyZSByZXRhaW5lZCBvciByZXByb2R1Y2VkIGluIGFuIGFjY29tcGFueWluZyBkb2N1bWVudCwgcGVybWlzc2lvbgojIGlzIGdyYW50ZWQgdG8gZGVhbCBpbiB0aGlzIHdvcmsgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHVu4oCQCiMgbGltaXRlZCByaWdodHMgdG8gdXNlLCBwdWJsaWNseSBwZXJmb3JtLCBkaXN0cmlidXRlLCBzZWxsLCBtb2RpZnksCiMgbWVyZ2UsIGdpdmUgYXdheSwgb3Igc3VibGljZW5jZS4KIwojIFRoaXMgd29yayBpcyBwcm92aWRlZCDigJxBUyBJU+KAnSBhbmQgV0lUSE9VVCBXQVJSQU5UWSBvZiBhbnkga2luZCwgdG8KIyB0aGUgdXRtb3N0IGV4dGVudCBwZXJtaXR0ZWQgYnkgYXBwbGljYWJsZSBsYXcsIG5laXRoZXIgZXhwcmVzcyBub3IKIyBpbXBsaWVkOyB3aXRob3V0IG1hbGljaW91cyBpbnRlbnQgb3IgZ3Jvc3MgbmVnbGlnZW5jZS4gSW4gbm8gZXZlbnQKIyBtYXkgYSBsaWNlbnNvciwgYXV0aG9yIG9yIGNvbnRyaWJ1dG9yIGJlIGhlbGQgbGlhYmxlIGZvciBpbmRpcmVjdCwKIyBkaXJlY3QsIG90aGVyIGRhbWFnZSwgbG9zcywgb3Igb3RoZXIgaXNzdWVzIGFyaXNpbmcgaW4gYW55IHdheSBvdXQKIyBvZiBkZWFsaW5nIGluIHRoZSB3b3JrLCBldmVuIGlmIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2gKIyBkYW1hZ2Ugb3IgZXhpc3RlbmNlIG9mIGEgZGVmZWN0LCBleGNlcHQgcHJvdmVuIHRoYXQgaXQgcmVzdWx0cyBvdXQKIyBvZiBzYWlkIHBlcnNvbuKAmXMgaW1tZWRpYXRlIGZhdWx0IHdoZW4gdXNpbmcgdGhlIHdvcmsgYXMgaW50ZW5kZWQuCiMtCiMgWW91IG1heSBhbHNvIHdhbnQgdG8gdGVzdCBJRlMgd2l0aCB0aGUgc2NyaXB0IGF0CiMgaHR0cDovL3d3dy5yZXNlYXJjaC5hdHQuY29tL35nc2YvcHVibGljL2lmcy5zaAojCiMgTW9yZSB0ZXN0c3VpdGVzIGF0OgojIGh0dHA6Ly9zdm53ZWIuZnJlZWJzZC5vcmcvYmFzZS9oZWFkL2Jpbi90ZXN0L3Rlc3RzL2xlZ2FjeV90ZXN0LnNoP3ZpZXc9Y28mY29udGVudC10eXBlPXRleHQlMkZwbGFpbgojCiMgSW50ZWdyYXRlZCB0ZXN0c3VpdGVzIGZyb206CiMgKDIwMTMvMTIvMDIgMjA6Mzk6NDQpIGh0dHA6Ly9jdnN3ZWIub3BlbmJzZC5vcmcvY2dpLWJpbi9jdnN3ZWIvc3JjL3JlZ3Jlc3MvYmluL2tzaC8/c29ydGJ5PWRhdGUKCmV4cGVjdGVkLXN0ZG91dDoKCUtTSCBSNTkgMjAyMC8xMC8zMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGJhc2UgdmVyc2lvbiBvZiBmdWxsIHNoZWxsCnN0ZGluOgoJdnNuPSR7S1NIX1ZFUlNJT04lJScgKycqfQoJZWNobyAiJHt2c24jKiB9IgpuYW1lOiBLU0hfVkVSU0lPTgotLS0KZXhwZWN0ZWQtc3Rkb3V0OgoJQCgjKU1JUkJTRApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoaXMgaWRlbnRpZmllcyBhcyBsZWdhY3kgc2hlbGwKc3RkaW46CgllY2hvICIke0tTSF9WRVJTSU9OJSUgKn0iCm5hbWU6IEtTSF9WRVJTSU9OLW1vZGVybgpjYXRlZ29yeTogIXNoZWxsOmxlZ2FjeS15ZXMKLS0tCmV4cGVjdGVkLXN0ZG91dDoKCUAoIylMRUdBQ1kKZGVzY3JpcHRpb246CglDaGVjayB0aGlzIGlkZW50aWZpZXMgYXMgbGVnYWN5IHNoZWxsCnN0ZGluOgoJZWNobyAiJHtLU0hfVkVSU0lPTiUlICp9IgpuYW1lOiBLU0hfVkVSU0lPTi1sZWdhY3kKY2F0ZWdvcnk6ICFzaGVsbDpsZWdhY3ktbm8KLS0tCm5hbWU6IEtTSF9WRVJTSU9OLWFzY2lpCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgc2hlbGwgdmVyc2lvbiB0YWcgZG9lcyBub3QgaW5jbHVkZSBFQkNESUMKY2F0ZWdvcnk6ICFzaGVsbDplYmNkaWMteWVzCnN0ZGluOgoJc2V0IC1vIG5vZ2xvYgoJZm9yIHggaW4gJEtTSF9WRVJTSU9OOyBkbwoJCVtbICR4ID0gJytFQkNESUMnIF1dICYmIGV4aXQgMQoJZG9uZQoJZXhpdCAwCi0tLQpuYW1lOiBLU0hfVkVSU0lPTi1lYmNkaWMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBzaGVsbCB2ZXJzaW9uIHRhZyBpbmNsdWRlcyBFQkNESUMKY2F0ZWdvcnk6ICFzaGVsbDplYmNkaWMtbm8Kc3RkaW46CglzZXQgLW8gbm9nbG9iCglmb3IgeCBpbiAkS1NIX1ZFUlNJT047IGRvCgkJW1sgJHggPSAnK0VCQ0RJQycgXV0gJiYgZXhpdCAwCglkb25lCglleGl0IDEKLS0tCm5hbWU6IEtTSF9WRVJTSU9OLWJpbm1vZGUKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBzaGVsbCB2ZXJzaW9uIHRhZyBkb2VzIG5vdCBpbmNsdWRlIFRFWFRNT0RFCmNhdGVnb3J5OiAhc2hlbGw6dGV4dG1vZGUteWVzCnN0ZGluOgoJc2V0IC1vIG5vZ2xvYgoJZm9yIHggaW4gJEtTSF9WRVJTSU9OOyBkbwoJCVtbICR4ID0gJytURVhUTU9ERScgXV0gJiYgZXhpdCAxCglkb25lCglleGl0IDAKLS0tCm5hbWU6IEtTSF9WRVJTSU9OLXRleHRtb2RlCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgc2hlbGwgdmVyc2lvbiB0YWcgaW5jbHVkZXMgVEVYVE1PREUKY2F0ZWdvcnk6ICFzaGVsbDp0ZXh0bW9kZS1ubwpzdGRpbjoKCXNldCAtbyBub2dsb2IKCWZvciB4IGluICRLU0hfVkVSU0lPTjsgZG8KCQlbWyAkeCA9ICcrVEVYVE1PREUnIF1dICYmIGV4aXQgMAoJZG9uZQoJZXhpdCAxCi0tLQpuYW1lOiBzZWxmdGVzdC0xCmRlc2NyaXB0aW9uOgoJUmVncmVzc2lvbiB0ZXN0IHNlbGYtdGVzdGluZwpzdGRpbjoKCWVjaG8gJHtmb286LWJhen0KZXhwZWN0ZWQtc3Rkb3V0OgoJYmF6Ci0tLQpuYW1lOiBzZWxmdGVzdC0yCmRlc2NyaXB0aW9uOgoJUmVncmVzc2lvbiB0ZXN0IHNlbGYtdGVzdGluZwplbnYtc2V0dXA6ICFmb289YmFyIQpzdGRpbjoKCWVjaG8gJHtmb286LWJhen0KZXhwZWN0ZWQtc3Rkb3V0OgoJYmFyCi0tLQpuYW1lOiBzZWxmdGVzdC0zCmRlc2NyaXB0aW9uOgoJUmVncmVzc2lvbiB0ZXN0IHNlbGYtdGVzdGluZwplbnYtc2V0dXA6ICFFTlY9Zm5vcmQhCnN0ZGluOgoJZWNobyAiPCRFTlY+IgpleHBlY3RlZC1zdGRvdXQ6Cgk8Zm5vcmQ+Ci0tLQpuYW1lOiBzZWxmdGVzdC1leGVjCmRlc2NyaXB0aW9uOgoJRW5zdXJlIHRoYXQgdGhlIHRlc3QgcnVuIGRpcmVjdG9yeSAoZGVmYXVsdCAvdG1wIGJ1dCBjYW4gYmUgY2hhbmdlZAoJd2l0aCBjaGVjay5wbCBmbGFnIC1UIG9yIHRlc3Quc2ggJFRNUERJUikgaXMgbm90IG1vdW50ZWQgbm9leGVjLCBhcwoJd2UgZXhlY3V0ZSBzY3JpcHRzIGZyb20gdGhlIHNjcmF0Y2ggZGlyZWN0b3J5IGR1cmluZyBzZXZlcmFsIHRlc3RzLgpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZWNobyB0ZicgPmxxCgljaG1vZCAreCBscQoJLi9scQpleHBlY3RlZC1zdGRvdXQ6Cgl0ZgotLS0KbmFtZTogc2VsZnRlc3QtZW52CmRlc2NyaXB0aW9uOgoJSnVzdCBvdXRwdXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBzZXQgKGFsd2F5cyBmYWlscykKY2F0ZWdvcnk6IGRpc2FibGVkCnN0ZGluOgoJc2V0Ci0tLQpuYW1lOiBzZWxmdGVzdC1kaXJlY3QtYnVpbHRpbi1jYWxsCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBkaXJlY3QgYnVpbHRpbiBjYWxscyB3b3JrCnN0ZGluOgoJbG4gLXMgIiRfX3Byb2duYW1lIiBjYXQgfHwgY3AgIiRfX3Byb2duYW1lIiBjYXQKCWxuIC1zICIkX19wcm9nbmFtZSIgZWNobyB8fCBjcCAiJF9fcHJvZ25hbWUiIGVjaG8KCS4vZWNobyAtYyAnZWNobyAgZm9vJyB8IC4vY2F0IC11CmV4cGVjdGVkLXN0ZG91dDoKCS1jIGVjaG8gIGZvbwotLS0KbmFtZTogc2VsZnRlc3QtcGF0aHNlcC11bml4CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAkUEFUSFNFUCBpcyBzZXQgY29ycmVjdGx5LgpjYXRlZ29yeTogIW9zOm9zMgpzdGRpbjoKCVBBVEhTRVA9LjsgZXhwb3J0IFBBVEhTRVAKCSIkX19wcm9nbmFtZSIgLWMgJ3ByaW50IC1yIC0tICRQQVRIU0VQJwpleHBlY3RlZC1zdGRvdXQ6Cgk6Ci0tLQpuYW1lOiBzZWxmdGVzdC1wYXRoc2VwLWRvc3BhdGgKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICRQQVRIU0VQIGlzIHNldCBjb3JyZWN0bHkuCmNhdGVnb3J5OiBvczpvczIKc3RkaW46CglQQVRIU0VQPS47IGV4cG9ydCBQQVRIU0VQCgkiJF9fcHJvZ25hbWUiIC1jICdwcmludCAtciAtLSAkUEFUSFNFUCcKZXhwZWN0ZWQtc3Rkb3V0OgoJOwotLS0KbmFtZTogc2VsZnRlc3QtdHR5LWFic2VudApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYSBjb250cm9sbGluZyB0dHkgaXMgbm90IHByZXNlbnQgYXMgcmVncmVzczpuby1jdHR5IHdhcyB1c2VkCgkoaWYgdGhpcyB0ZXN0IGZhaWxzIGZvciB5b3UgRE8gTk9UIFBBU1MgcmVncmVzczpuby1jdHR5IGFuZCBmaXggZXZlcnkKCW90aGVyIHRlc3QgdGhhdCBmYWlsczogd2h5IHUgdXNlIGl0IGlmIHUgaGF6IGN0dHk/KQpjYXRlZ29yeTogcmVncmVzczpuby1jdHR5CmVudi1zZXR1cDogIUVOVj0uL2VudmYhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJlbnZmIgoJUFMxPVgKYXJndW1lbnRzOiAhLWkhCnN0ZGluOgoJZWNobyBvawpleHBlY3RlZC1zdGRvdXQ6CglvawpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9rc2g6IHdhcm5pbmc6IHdvbid0IGhhdmUgZnVsbCBqb2IgY29udHJvbFxuWFgvCi0tLQpuYW1lOiBzZWxmdGVzdC10dHktcHJlc2VudApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYSBjb250cm9sbGluZyB0dHkgaXMgcHJlc2VudCBhcyByZWdyZXNzOm5vLWN0dHkgd2FzIG5vdCB1c2VkCm5lZWQtY3R0eTogeWVzCmVudi1zZXR1cDogIUVOVj0uL2VudmYhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJlbnZmIgoJUFMxPVgKYXJndW1lbnRzOiAhLWkhCnN0ZGluOgoJZWNobyBvawpleHBlY3RlZC1zdGRvdXQ6CglvawpleHBlY3RlZC1zdGRlcnI6ICEKCVhYCi0tLQpuYW1lOiBhbGlhcy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZWN1cnNpb24gaXMgZGV0ZWN0ZWQvYXZvaWRlZCBpbiBhbGlhc2VzLgpzdGRpbjoKCWFsaWFzIGZvb0Jhcj1mb29CYXIKCWZvb0JhcgoJZXhpdCAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2Zvb0Jhci4qbm90IGZvdW5kLiovCi0tLQpuYW1lOiBhbGlhcy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZWN1cnNpb24gaXMgZGV0ZWN0ZWQvYXZvaWRlZCBpbiBhbGlhc2VzLgpzdGRpbjoKCWFsaWFzIGZvb0Jhcj1iYXJGb28KCWFsaWFzIGJhckZvbz1mb29CYXIKCWZvb0JhcgoJYmFyRm9vCglleGl0IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvZm9vQmFyLipub3QgZm91bmQuKlxuLipiYXJGb28uKm5vdCBmb3VuZC8KLS0tCm5hbWU6IGFsaWFzLTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHJlY3Vyc2lvbiBpcyBkZXRlY3RlZC9hdm9pZGVkIGluIGFsaWFzZXMuCnN0ZGluOgoJYWxpYXMgRWNobz0nZWNobyAnCglhbGlhcyBmb29CYXI9YmFyRm9vCglhbGlhcyBiYXJGb289Zm9vQmFyCglFY2hvIGZvb0JhcgoJdW5hbGlhcyBiYXJGb28KCUVjaG8gZm9vQmFyCmV4cGVjdGVkLXN0ZG91dDoKCWZvb0JhcgoJYmFyRm9vCi0tLQpuYW1lOiBhbGlhcy00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhcyBleHBhbnNpb24gaXNuJ3QgZG9uZSBvbiBrZXl3b3JkcyAoaW4ga2V5d29yZAoJcG9zdGl0aW9ucykuCnN0ZGluOgoJYWxpYXMgRWNobz0nZWNobyAnCglhbGlhcyB3aGlsZT1XaGlsZQoJd2hpbGUgZmFsc2U7IGRvIGVjaG8gaGkgOyBkb25lCglFY2hvIHdoaWxlCmV4cGVjdGVkLXN0ZG91dDoKCVdoaWxlCi0tLQpuYW1lOiBhbGlhcy01CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhcyBleHBhbnNpb24gZG9uZSBhZnRlciBhbGlhcyB3aXRoIHRyYWlsaW5nIHNwYWNlLgpzdGRpbjoKCWFsaWFzIEVjaG89J2VjaG8gJwoJYWxpYXMgZm9vPSdiYXIgc3R1ZmYgJwoJYWxpYXMgYmFyPSdCYXIxIEJhcjIgJwoJYWxpYXMgc3R1ZmY9J1N0dWZmJwoJYWxpYXMgYmxhaD0nQmxhaCcKCUVjaG8gZm9vIGJsYWgKZXhwZWN0ZWQtc3Rkb3V0OgoJQmFyMSBCYXIyIFN0dWZmIEJsYWgKLS0tCm5hbWU6IGFsaWFzLTYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFsaWFzIGV4cGFuc2lvbiBkb25lIGFmdGVyIGFsaWFzIHdpdGggdHJhaWxpbmcgc3BhY2UuCnN0ZGluOgoJYWxpYXMgRWNobz0nZWNobyAnCglhbGlhcyBmb289J2JhciBiYXInCglhbGlhcyBiYXI9J0JhciAnCglhbGlhcyBibGFoPUJsYWgKCUVjaG8gZm9vIGJsYWgKZXhwZWN0ZWQtc3Rkb3V0OgoJQmFyIEJhciBCbGFoCi0tLQpuYW1lOiBhbGlhcy03CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhcyBleHBhbnNpb24gZG9uZSBhZnRlciBhbGlhcyB3aXRoIHRyYWlsaW5nIHNwYWNlCglhZnRlciBhIGtleXdvcmQuCnN0ZGluOgoJYWxpYXMgWD0nY2FzZSAnCglhbGlhcyBZPVoKCVggWSBpbiAnWScpIGVjaG8gaXMgeSA7OyBaKSBlY2hvIGlzIHogOzsgZXNhYwpleHBlY3RlZC1zdGRvdXQ6CglpcyB6Ci0tLQpuYW1lOiBhbGlhcy04CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBuZXdsaW5lcyBpbiBhbiBhbGlhcyBkb24ndCBjYXVzZSB0aGUgY29tbWFuZCB0byBiZSBsb3N0LgpzdGRpbjoKCWFsaWFzIGZvbz0nCgkKCQoJZWNobyBoaQoJCgkKCQoJZWNobyB0aGVyZQoJCgkKCScKCWZvbwpleHBlY3RlZC1zdGRvdXQ6CgloaQoJdGhlcmUKLS0tCm5hbWU6IGFsaWFzLTkKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHJlY3Vyc2lvbiBpcyBkZXRlY3RlZC9hdm9pZGVkIGluIGFsaWFzZXMuCglUaGlzIGNoZWNrIGZhaWxzIGZvciBzbG93IG1hY2hpbmVzIG9yIEN5Z3dpbiwgcmFpc2UKCXRoZSB0aW1lLWxpbWl0IGNsYXVzZSAoZS5nLiB0byA3KSBpZiB0aGlzIG9jY3Vycy4KdGltZS1saW1pdDogMwpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZWNobyB0ZicgPmxxCgljaG1vZCAreCBscQoJUEFUSD0kUFdEJFBBVEhTRVAkUEFUSAoJYWxpYXMgbHE9bHEKCWxxCgllY2hvID0gbm93CglpPWBscWAKCXByaW50IC1yIC0tICRpCgllY2hvID0gb3V0CglleGl0IDAKZXhwZWN0ZWQtc3Rkb3V0OgoJdGYKCT0gbm93Cgl0ZgoJPSBvdXQKLS0tCm5hbWU6IGFsaWFzLTEwCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZWN1cnNpb24gaXMgZGV0ZWN0ZWQvYXZvaWRlZCBpbiBhbGlhc2VzLgoJUmVncmVzc2lvbiwgaW50cm9kdWNlZCBkdXJpbmcgYW4gb2xkIGJ1Z2ZpeC4Kc3RkaW46CglhbGlhcyBmb289J3ByaW50IGhlbGxvICcKCWFsaWFzIGJhcj0nZm9vIHdvcmxkJwoJZWNobyAkKGJhcikKZXhwZWN0ZWQtc3Rkb3V0OgoJaGVsbG8gd29ybGQKLS0tCm5hbWU6IGFsaWFzLTExCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzcGVjaWFsIGFyZ3VtZW50IGhhbmRsaW5nIHN0aWxsIGFwcGxpZXMgd2l0aCBlc2NhcGVkIGFsaWFzZXMKc3RkaW46CglhbGlhcyBsb2NhbDE9J1x0eXBlc2V0JwoJYWxpYXMgbG9jYWwyPSdcXGJ1aWx0aW4gdHlwZXNldCcKCWZ1bmN0aW9uIGZvb2EgewoJCWxvY2FsMSB4PSQxIHk9egoJCXByaW50IC1yIC0tICIkeCwkeSIKCX0KCWZ1bmN0aW9uIGZvb2IgewoJCWxvY2FsMiB4PSQxIHk9egoJCXByaW50IC1yIC0tICIkeCwkeSIKCX0KCXg9MSB5PTI7IGZvb2EgJ2JhciAtIGJheicKCXg9MSB5PTI7IGZvb2IgJ2JhciAtIGJheicKZXhwZWN0ZWQtc3Rkb3V0OgoJYmFyIC0gYmF6LHoKCWJhciAtIGJheix6Ci0tLQpuYW1lOiBhbGlhcy0xMgpkZXNjcmlwdGlvbjoKCVNvbWV0aGluZyB3ZWlyZCBmcm9tIE1hcnRpam4gRGVra2VyCnN0ZGluOgoJYWxpYXMgZWNobz1wcmludAoJeCgpIHsgZWNobyBhOyAoZWNobyBiKTsgeD0kKGVjaG8gYyk7IH0KCXR5cGVzZXQgLWYgeAoJYWxpYXMgT1BFTj0neycgQ0xPU0U9J307JwoJeyBPUEVOIGVjaG8gaGkxOyBDTE9TRSB9Cgl2YXI9YHsgT1BFTiBlY2hvIGhpMjsgQ0xPU0UgfWAgJiYgZWNobyAiJHZhciIKCXZhcj0kKHsgT1BFTiBlY2hvIGhpMzsgQ0xPU0UgfSkgJiYgZWNobyAiJHZhciIKZXhwZWN0ZWQtc3Rkb3V0OgoJeCgpIHsKCQlccHJpbnQgYSAKCQkoIFxwcmludCBiICkgCgkJeD0kKFxwcmludCBjICkgCgl9IAoJaGkxCgloaTIKCWhpMwotLS0KbmFtZTogYXJpdGgtY29tcG91bmQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFyaXRobWV0aWMgZXhwcmVzc2lvbnMgYXJlIGNvbXBvdW5kIGNvbnN0cnVjdHMKc3RkaW46Cgl7ICEgKCggMCQoY2F0ID4mMikgKSkgPDw8MTsgfSA8PDwyCmV4cGVjdGVkLXN0ZGVycjoKCTEKLS0tCm5hbWU6IGFyaXRoLWxhenktMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgb25seSBvbmUgc2lkZSBvZiB0ZXJuYXJ5IG9wZXJhdG9yIGlzIGV2YWx1YXRlZApzdGRpbjoKCXg9aSs9MgoJeT1qKz0yCgl0eXBlc2V0IC1pIGk9MSBqPTEKCWVjaG8gJCgoMSA/IDIwIDogKHgrPTIpKSkKCWVjaG8gJGksJHgKCWVjaG8gJCgoMCA/ICh5Kz0yKSA6IDMwKSkKCWVjaG8gJGosJHkKZXhwZWN0ZWQtc3Rkb3V0OgoJMjAKCTEsaSs9MgoJMzAKCTEsais9MgotLS0KbmFtZTogYXJpdGgtbGF6eS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhc3NpZ25tZW50cyBub3QgZG9uZSBvbiBub24tZXZhbHVhdGVkIHNpZGUgb2YgdGVybmFyeQoJb3BlcmF0b3IKc3RkaW46Cgl4PWkrPTIKCXk9ais9MgoJdHlwZXNldCAtaSBpPTEgaj0xCgllY2hvICQoKDEgPyAyMCA6ICh4Kz0yKSkpCgllY2hvICRpLCR4CgllY2hvICQoKDAgPyAoeSs9MikgOiAzMCkpCgllY2hvICRpLCR5CmV4cGVjdGVkLXN0ZG91dDoKCTIwCgkxLGkrPTIKCTMwCgkxLGorPTIKLS0tCm5hbWU6IGFyaXRoLWxhenktMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYXNzaWdubWVudHMgbm90IGRvbmUgb24gbm9uLWV2YWx1YXRlZCBzaWRlIG9mIHRlcm5hcnkKCW9wZXJhdG9yIGFuZCB0aGlzIGNvbnN0cnVjdCBpcyBwYXJzZWQgY29ycmVjdGx5IChEZWJpYW4gIzQ0NTY1MSkKc3RkaW46Cgl4PTQKCXk9JCgoMCA/IHg9MSA6IDIpKQoJZWNobyA9ICR4ICR5ID0KZXhwZWN0ZWQtc3Rkb3V0OgoJPSA0IDIgPQotLS0KbmFtZTogYXJpdGgtbGF6eS00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBwcmV1bi9wb3N0dW4gbm90IGRvbmUgb24gbm9uLWV2YWx1YXRlZCBzaWRlIG9mIHRlcm5hcnkKCW9wZXJhdG9yCnN0ZGluOgoJKCggbSA9IG4gPSAwLCAxID8gbisrIDogbSsrID8gMiA6IDMgKSkKCWVjaG8gIigkbiwgJG0pIgoJbT0wOyBlY2hvICQoKCAwID8gKyttIDogMiApKTsgZWNobyAkbQoJbT0wOyBlY2hvICQoKCAwID8gbSsrIDogMiApKTsgZWNobyAkbQpleHBlY3RlZC1zdGRvdXQ6CgkoMSwgMCkKCTIKCTAKCTIKCTAKLS0tCm5hbWU6IGFyaXRoLWxhenktNS1hcnItbgpkZXNjcmlwdGlvbjogQ2hlY2sgbGF6eSBldmFsdWF0aW9uIHdpdGggc2lkZSBlZmZlY3RzCnN0ZGluOgoJYT0wOyBlY2hvICIkKCgwJiZiW2ErK10sYSkpIgpleHBlY3RlZC1zdGRvdXQ6CgkwCi0tLQpuYW1lOiBhcml0aC1sYXp5LTUtYXJyLXAKZGVzY3JpcHRpb246IENoZWNrIGxhenkgZXZhbHVhdGlvbiB3aXRoIHNpZGUgZWZmZWN0cwpzdGRpbjoKCWE9MDsgZWNobyAiJCgoMCYmKGJbYSsrXSksYSkpIgpleHBlY3RlZC1zdGRvdXQ6CgkwCi0tLQpuYW1lOiBhcml0aC1sYXp5LTUtc3RyLW4KZGVzY3JpcHRpb246IENoZWNrIGxhenkgZXZhbHVhdGlvbiB3aXRoIHNpZGUgZWZmZWN0cwpzdGRpbjoKCWE9MCBiPWErKzsgKCgwJiZiKSk7IGVjaG8gJGEKZXhwZWN0ZWQtc3Rkb3V0OgoJMAotLS0KbmFtZTogYXJpdGgtbGF6eS01LXN0ci1wCmRlc2NyaXB0aW9uOiBDaGVjayBsYXp5IGV2YWx1YXRpb24gd2l0aCBzaWRlIGVmZmVjdHMKc3RkaW46CglhPTAgYj1hKys7ICgoMCYmKGIpKSk7IGVjaG8gJGEKZXhwZWN0ZWQtc3Rkb3V0OgoJMAotLS0KbmFtZTogYXJpdGgtbGF6eS01LXRlcm4tbC1uCmRlc2NyaXB0aW9uOiBDaGVjayBsYXp5IGV2YWx1YXRpb24gd2l0aCBzaWRlIGVmZmVjdHMKc3RkaW46CglhPTA7IGVjaG8gIiQoKDA/YlthKytdOjk5OSxhKSkiCmV4cGVjdGVkLXN0ZG91dDoKCTAKLS0tCm5hbWU6IGFyaXRoLWxhenktNS10ZXJuLWwtcApkZXNjcmlwdGlvbjogQ2hlY2sgbGF6eSBldmFsdWF0aW9uIHdpdGggc2lkZSBlZmZlY3RzCnN0ZGluOgoJYT0wOyBlY2hvICIkKCgwPyhiW2ErK10pOjk5OSxhKSkiCmV4cGVjdGVkLXN0ZG91dDoKCTAKLS0tCm5hbWU6IGFyaXRoLWxhenktNS10ZXJuLXItbgpkZXNjcmlwdGlvbjogQ2hlY2sgbGF6eSBldmFsdWF0aW9uIHdpdGggc2lkZSBlZmZlY3RzCnN0ZGluOgoJYT0wOyBlY2hvICIkKCgxPzk5OTpiW2ErK10sYSkpIgpleHBlY3RlZC1zdGRvdXQ6CgkwCi0tLQpuYW1lOiBhcml0aC1sYXp5LTUtdGVybi1yLXAKZGVzY3JpcHRpb246IENoZWNrIGxhenkgZXZhbHVhdGlvbiB3aXRoIHNpZGUgZWZmZWN0cwpzdGRpbjoKCWE9MDsgZWNobyAiJCgoMT85OTk6KGJbYSsrXSksYSkpIgpleHBlY3RlZC1zdGRvdXQ6CgkwCi0tLQpuYW1lOiBhcml0aC10ZXJuYXJ5LXByZWMtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHByZWNlZGVuY2Ugb2YgdGVybmFyeSBvcGVyYXRvciB2cyBhc3NpZ25tZW50CnN0ZGluOgoJdHlwZXNldCAtaSB4PTIKCXk9JCgoMSA/IDIwIDogeCs9MikpCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKjouKjEgXD8gMjAgOiB4XCs9Mi4qbHZhbHVlLipcbiQvCi0tLQpuYW1lOiBhcml0aC10ZXJuYXJ5LXByZWMtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHByZWNlZGVuY2Ugb2YgdGVybmFyeSBvcGVyYXRvciB2cyBhc3NpZ25tZW50CnN0ZGluOgoJdHlwZXNldCAtaSB4PTIKCWVjaG8gJCgoMCA/IHgrPTIgOiAyMCkpCmV4cGVjdGVkLXN0ZG91dDoKCTIwCi0tLQpuYW1lOiBhcml0aC1wcmVjLTEKZGVzY3JpcHRpb246CglQcm92ZSBhcml0aG1ldGljIGV4cHJlc3Npb25zIHdpdGggZW1iZWRkZWQgcGFyYW1ldGVyCglzdWJzdGl0dXRpb25zIGNhbm5vdCBiZSBwYXJzZWQgYWhlYWQgb2YgdGltZQpzdGRpbjoKCWE9JzMgKyA0JwoJcHJpbnQgMSAkKCgyICogYSkpIC4KCXByaW50IDIgJCgoMiAqICRhKSkgLgpleHBlY3RlZC1zdGRvdXQ6CgkxIDE0IC4KCTIgMTAgLgotLS0KbmFtZTogYXJpdGgtZGl2LWFzc29jLTEKZGVzY3JpcHRpb246CglDaGVjayBhc3NvY2lhdGl2aXR5IG9mIGRpdmlzaW9uIG9wZXJhdG9yCnN0ZGluOgoJZWNobyAkKCgyMCAvIDIgLyAyKSkKZXhwZWN0ZWQtc3Rkb3V0OgoJNQotLS0KbmFtZTogYXJpdGgtZGl2LWJ5emVybwpkZXNjcmlwdGlvbjoKCUNoZWNrIGRpdmlzaW9uIGJ5IHplcm8gZXJyb3JzIG91dApzdGRpbjoKCXg9JChlY2hvICQoKDEgLyAwKSkpCgllY2hvID0kPzokeC4KZXhwZWN0ZWQtc3Rkb3V0OgoJPTE6LgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmRpdmlzb3IvCi0tLQpuYW1lOiBhcml0aC1kaXYtaW50bWluLWJ5LW1pbnVzb25lCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZGl2aXNpb24gb3ZlcmZsb3cgd3JhcHMgYXJvdW5kIHNpbGVudGx5CmNhdGVnb3J5OiBpbnQ6MzIKc3RkaW46CgllY2hvIHNpZ25lZDokKCgtMjE0NzQ4MzY0OCAvIC0xKSlyJCgoLTIxNDc0ODM2NDggJSAtMSkpLgoJZWNobyB1bnNpZ25lZDokKCgjIC0yMTQ3NDgzNjQ4IC8gLTEpKXIkKCgjIC0yMTQ3NDgzNjQ4ICUgLTEpKS4KZXhwZWN0ZWQtc3Rkb3V0OgoJc2lnbmVkOi0yMTQ3NDgzNjQ4cjAuCgl1bnNpZ25lZDowcjIxNDc0ODM2NDguCi0tLQpuYW1lOiBhcml0aC1kaXYtaW50bWluLWJ5LW1pbnVzb25lLTY0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgZGl2aXNpb24gb3ZlcmZsb3cgd3JhcHMgYXJvdW5kIHNpbGVudGx5CmNhdGVnb3J5OiBpbnQ6NjQKc3RkaW46CgllY2hvIHNpZ25lZDokKCgtOTIyMzM3MjAzNjg1NDc3NTgwOCAvIC0xKSlyJCgoLTkyMjMzNzIwMzY4NTQ3NzU4MDggJSAtMSkpLgoJZWNobyB1bnNpZ25lZDokKCgjIC05MjIzMzcyMDM2ODU0Nzc1ODA4IC8gLTEpKXIkKCgjIC05MjIzMzcyMDM2ODU0Nzc1ODA4ICUgLTEpKS4KZXhwZWN0ZWQtc3Rkb3V0OgoJc2lnbmVkOi05MjIzMzcyMDM2ODU0Nzc1ODA4cjAuCgl1bnNpZ25lZDowcjkyMjMzNzIwMzY4NTQ3NzU4MDguCi0tLQpuYW1lOiBhcml0aC1hc3NvcC1hc3NvYy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYXNzb2NpYXRpdml0eSBvZiBhc3NpZ25tZW50LW9wZXJhdG9yIG9wZXJhdG9yCnN0ZGluOgoJdHlwZXNldCAtaSBpPTEgaj0yIGs9MwoJZWNobyAkKChpICs9IGogKz0gaykpCgllY2hvICRpLCRqLCRrCmV4cGVjdGVkLXN0ZG91dDoKCTYKCTYsNSwzCi0tLQpuYW1lOiBhcml0aC1tYW5kYXRvcnkKZGVzY3JpcHRpb246CglQYXNzaW5nIG9mIHRoaXMgdGVzdCBpcyAqbWFuZGF0b3J5KiBmb3IgYSB2YWxpZCBta3NoIGV4ZWN1dGFibGUhCmNhdGVnb3J5OiBzaGVsbDpsZWdhY3ktbm8Kc3RkaW46Cgl0eXBlc2V0IC1pIHNhcmk9MAoJdHlwZXNldCAtVWkgdWFyaT0wCgl0eXBlc2V0IC1pIHg9MAoJcHJpbnQgLXIgLS0gJCgoeCsrKSk6JHNhcmk9JHVhcmkuICMwCglsZXQgLS1zYXJpIC0tdWFyaQoJcHJpbnQgLXIgLS0gJCgoeCsrKSk6JHNhcmk9JHVhcmkuICMxCglzYXJpPTIxNDc0ODM2NDcgdWFyaT0yMTQ3NDgzNjQ3CglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzIKCWxldCArK3NhcmkgKyt1YXJpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzMKCWxldCAtLXNhcmkgLS11YXJpCglsZXQgJ3NhcmkgKj0gMicgJ3VhcmkgKj0gMicKCWxldCArK3NhcmkgKyt1YXJpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzQKCWxldCArK3NhcmkgKyt1YXJpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzUKCXNhcmk9LTIxNDc0ODM2NDggdWFyaT0tMjE0NzQ4MzY0OAoJcHJpbnQgLXIgLS0gJCgoeCsrKSk6JHNhcmk9JHVhcmkuICM2CglsZXQgLS1zYXJpIC0tdWFyaQoJcHJpbnQgLXIgLS0gJCgoeCsrKSk6JHNhcmk9JHVhcmkuICM3CgkoKCBzYXJpID0gLTUgPj4gMSApKQoJKCgjIHVhcmkgPSAtNSA+PiAxICkpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzgKCSgoIHNhcmkgPSAtMiApKQoJKCgjIHVhcmkgPSBzYXJpICkpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzkKZXhwZWN0ZWQtc3Rkb3V0OgoJMDowPTAuCgkxOi0xPTQyOTQ5NjcyOTUuCgkyOjIxNDc0ODM2NDc9MjE0NzQ4MzY0Ny4KCTM6LTIxNDc0ODM2NDg9MjE0NzQ4MzY0OC4KCTQ6LTE9NDI5NDk2NzI5NS4KCTU6MD0wLgoJNjotMjE0NzQ4MzY0OD0yMTQ3NDgzNjQ4LgoJNzoyMTQ3NDgzNjQ3PTIxNDc0ODM2NDcuCgk4Oi0zPTIxNDc0ODM2NDUuCgk5Oi0yPTQyOTQ5NjcyOTQuCi0tLQpuYW1lOiBhcml0aC11bnNpZ25lZC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgdW5zaWduZWQgYXJpdGhtZXRpY3Mgd29yawpjYXRlZ29yeTogaW50OjMyCnN0ZGluOgoJIyBzaWduZWQgdnMgdW5zaWduZWQKCWVjaG8geDEgJCgoLTEpKSAkKCgjLTEpKQoJIyBjYWxjdWxhdGluZwoJdHlwZXNldCAtaSB2cwoJdHlwZXNldCAtVWkgdnUKCXZzPTQxMjM0NTY3ODk7IHZ1PTQxMjM0NTY3ODkKCWVjaG8geDIgJHZzICR2dQoJKCggdnMgJT0gMjE0NzQ4MzY0NyApKQoJKCggdnUgJT0gMjE0NzQ4MzY0NyApKQoJZWNobyB4MyAkdnMgJHZ1Cgl2cz00MTIzNDU2Nzg5OyB2dT00MTIzNDU2Nzg5CgkoKCAjIHZzICU9IDIxNDc0ODM2NDcgKSkKCSgoICMgdnUgJT0gMjE0NzQ4MzY0NyApKQoJZWNobyB4NCAkdnMgJHZ1CgkjIG1ha2Ugc3VyZSB0aGUgY2FsY3VsYXRpb24gZG9lcyBub3QgY2hhbmdlIHVuc2lnbmVkIGZsYWcKCXZzPTQxMjM0NTY3ODk7IHZ1PTQxMjM0NTY3ODkKCWVjaG8geDUgJHZzICR2dQoJIyBzaG9ydCBmb3JtCgllY2hvIHg2ICQoKCMgdnMgJSAyMTQ3NDgzNjQ3KSkgJCgoIyB2dSAlIDIxNDc0ODM2NDcpKQoJIyBhcnJheSByZWZzCglzZXQgLUEgdmEKCXZhWzE5NzU5NzMxNDJdPXJpZ2h0Cgl2YVs0MTIzNDU2Nzg5XT13cm9uZwoJZWNobyB4NyAke3ZhWyM0MTIzNDU2Nzg5JTIxNDc0ODM2NDddfQoJIyBtYWtlIHN1cmUgbXVsdGlwbGUgY2FsY3VsYXRpb25zIGRvbid0IGludGVyZmVyZSB3aXRoIGVhY2ggb3RoZXIKCWxldCAnIyBtY2EgPSAtNCAlIC0yJyAnIG1jYiA9IC00ICUgLTInCgllY2hvIHg4ICRtY2EgJG1jYgpleHBlY3RlZC1zdGRvdXQ6Cgl4MSAtMSA0Mjk0OTY3Mjk1Cgl4MiAtMTcxNTEwNTA3IDQxMjM0NTY3ODkKCXgzIC0xNzE1MTA1MDcgNDEyMzQ1Njc4OQoJeDQgMTk3NTk3MzE0MiAxOTc1OTczMTQyCgl4NSAtMTcxNTEwNTA3IDQxMjM0NTY3ODkKCXg2IDE5NzU5NzMxNDIgMTk3NTk3MzE0MgoJeDcgcmlnaHQKCXg4IC00IDAKLS0tCm5hbWU6IGFyaXRoLWxpbWl0MzItMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGFyaXRobWV0aWNzIGFyZSAzMiBiaXQKY2F0ZWdvcnk6IGludDozMgpzdGRpbjoKCSMgc2lnbmVkIHZzIHVuc2lnbmVkCgllY2hvIHgxICQoKC0xKSkgJCgoIy0xKSkKCSMgY2FsY3VsYXRpbmcKCXR5cGVzZXQgLWkgdnMKCXR5cGVzZXQgLVVpIHZ1Cgl2cz0yMTQ3NDgzNjQ3OyB2dT0yMTQ3NDgzNjQ3CgllY2hvIHgyICR2cyAkdnUKCWxldCB2cysrIHZ1KysKCWVjaG8geDMgJHZzICR2dQoJdnM9NDI5NDk2NzI5NTsgdnU9NDI5NDk2NzI5NQoJZWNobyB4NCAkdnMgJHZ1CglsZXQgdnMrKyB2dSsrCgllY2hvIHg1ICR2cyAkdnUKCWxldCB2cysrIHZ1KysKCWVjaG8geDYgJHZzICR2dQpleHBlY3RlZC1zdGRvdXQ6Cgl4MSAtMSA0Mjk0OTY3Mjk1Cgl4MiAyMTQ3NDgzNjQ3IDIxNDc0ODM2NDcKCXgzIC0yMTQ3NDgzNjQ4IDIxNDc0ODM2NDgKCXg0IC0xIDQyOTQ5NjcyOTUKCXg1IDAgMAoJeDYgMSAxCi0tLQpuYW1lOiBhcml0aC1saW1pdDY0LTEKZGVzY3JpcHRpb246CglDaGVjayBpZiBhcml0aG1ldGljcyBhcmUgNjQgYml0CmNhdGVnb3J5OiBpbnQ6NjQKc3RkaW46CgkjIHNpZ25lZCB2cyB1bnNpZ25lZAoJZWNobyB4MSAkKCgtMSkpICQoKCMtMSkpCgkjIGNhbGN1bGF0aW5nCgl0eXBlc2V0IC1pIHZzCgl0eXBlc2V0IC1VaSB2dQoJdnM9OTIyMzM3MjAzNjg1NDc3NTgwNzsgdnU9OTIyMzM3MjAzNjg1NDc3NTgwNwoJZWNobyB4MiAkdnMgJHZ1CglsZXQgdnMrKyB2dSsrCgllY2hvIHgzICR2cyAkdnUKCXZzPTE4NDQ2NzQ0MDczNzA5NTUxNjE1OyB2dT0xODQ0Njc0NDA3MzcwOTU1MTYxNQoJZWNobyB4NCAkdnMgJHZ1CglsZXQgdnMrKyB2dSsrCgllY2hvIHg1ICR2cyAkdnUKCWxldCB2cysrIHZ1KysKCWVjaG8geDYgJHZzICR2dQpleHBlY3RlZC1zdGRvdXQ6Cgl4MSAtMSAxODQ0Njc0NDA3MzcwOTU1MTYxNQoJeDIgOTIyMzM3MjAzNjg1NDc3NTgwNyA5MjIzMzcyMDM2ODU0Nzc1ODA3Cgl4MyAtOTIyMzM3MjAzNjg1NDc3NTgwOCA5MjIzMzcyMDM2ODU0Nzc1ODA4Cgl4NCAtMSAxODQ0Njc0NDA3MzcwOTU1MTYxNQoJeDUgMCAwCgl4NiAxIDEKLS0tCm5hbWU6IGJrc2wtbmwtaWduLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGlzIG5vdCBjb2xsYXBzZWQgYWZ0ZXIgIwpzdGRpbjoKCWVjaG8gaGkgI3RoZXJlIFwKCWVjaG8gZm9sa3MKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWZvbGtzCi0tLQpuYW1lOiBia3NsLW5sLWlnbi0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBub3QgY29sbGFwc2VkIGluc2lkZSBzaW5nbGUgcXVvdGVzCnN0ZGluOgoJZWNobyAnaGkgXAoJdGhlcmUnCgllY2hvIGZvbGtzCmV4cGVjdGVkLXN0ZG91dDoKCWhpIFwKCXRoZXJlCglmb2xrcwotLS0KbmFtZTogYmtzbC1ubC1pZ24tMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgbm90IGNvbGxhcHNlZCBpbnNpZGUgc2luZ2xlIHF1b3RlcwpzdGRpbjoKCWNhdCA8PCBcRU9GCgloaSBcCgl0aGVyZQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWhpIFwKCXRoZXJlCi0tLQpuYW1lOiBia3NsLW5sLWlnbi00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaW50ZXJhY3Rpb24gb2YgYWxpYXNlcywgc2luZ2xlIHF1b3RlcyBhbmQgaGVyZS1kb2N1bWVudHMKCXdpdGggYmFja3NsYXNoLW5ld2xpbmUKCShkb24ndCBrbm93IHdoYXQgUE9TSVggaGFzIHRvIHNheSBhYm91dCB0aGlzKQpzdGRpbjoKCWE9MgoJYWxpYXMgeD0nZWNobyBoaQoJY2F0IDw8ICJFT0YiCglmb29cCgliYXIKCXNvbWUnCgl4Cgltb3JlXAoJc3R1ZmYkYQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWhpCglmb29cCgliYXIKCXNvbWUKCW1vcmVcCglzdHVmZiRhCi0tLQpuYW1lOiBia3NsLW5sLWlnbi01CmRlc2NyaXB0aW9uOgoJQ2hlY2sgd2hhdCBoYXBwZW5zIHdpdGggYmFja3NsYXNoIGF0IGVuZCBvZiBpbnB1dAoJKHRoZSBvbGQgQm91cm5lIHNoZWxsIHRyYXNoZXMgdGhlbTsgc28gZG8gd2UpCnN0ZGluOiAhCgllY2hvIGBlY2hvIGZvb1xcYGJhcgoJZWNobyBoaVwKZXhwZWN0ZWQtc3Rkb3V0OgoJZm9vYmFyCgloaQotLS0KIwojIFBsYWNlcyBcbmV3bGluZSBzaG91bGQgYmUgY29sbGFwc2VkCiMKbmFtZTogYmtzbC1ubC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgYmVmb3JlLCBpbiB0aGUgbWlkZGxlIG9mLCBhbmQKCWFmdGVyIHdvcmRzCnN0ZGluOgoJIAkgCVwKCQkJIGVjaG8gaGlcCglUaGVyZSwgXAoJZm9sa3MKZXhwZWN0ZWQtc3Rkb3V0OgoJaGlUaGVyZSwgZm9sa3MKLS0tCm5hbWU6IGJrc2wtbmwtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluICQgc2VxdWVuY2VzCgkoa3NoOTMgZmFpbHMgdGhpcykKc3RkaW46CglhPTEyCglhYj0xOQoJZWNobyAkXAoJYQoJZWNobyAkYVwKCWIKCWVjaG8gJFwKCXthfQoJZWNobyAke2FcCglifQoJZWNobyAke2FiXAoJfQpleHBlY3RlZC1zdGRvdXQ6CgkxMgoJMTkKCTEyCgkxOQoJMTkKLS0tCm5hbWU6IGJrc2wtbmwtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluICQoLi4pIGFuZCBgLi4uYCBzZXF1ZW5jZXMKCShrc2g5MyBmYWlscyB0aGlzKQpzdGRpbjoKCWVjaG8gJFwKCShlY2hvIGZvb2JhcjEpCgllY2hvICQoXAoJZWNobyBmb29iYXIyKQoJZWNobyAkKGVjaG8gZm9vXAoJYmFyMykKCWVjaG8gJChlY2hvIGZvb2JhcjRcCgkpCgllY2hvIGAKCWVjaG8gc3R1ZmYxYAoJZWNobyBgZWNobyBzdFwKCXVmZjJgCmV4cGVjdGVkLXN0ZG91dDoKCWZvb2JhcjEKCWZvb2JhcjIKCWZvb2JhcjMKCWZvb2JhcjQKCXN0dWZmMQoJc3R1ZmYyCi0tLQpuYW1lOiBia3NsLW5sLTQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGlzIGNvbGxhcHNlZCBpbiAkKCguLikpIHNlcXVlbmNlcwoJKGtzaDkzIGZhaWxzIHRoaXMpCnN0ZGluOgoJZWNobyAkXAoJKCgxKzIpKQoJZWNobyAkKFwKCSgxKzIrMykpCgllY2hvICQoKFwKCTErMiszKzQpKQoJZWNobyAkKCgxK1wKCTIrMys0KzUpKQoJZWNobyAkKCgxKzIrMys0KzUrNilcCgkpCmV4cGVjdGVkLXN0ZG91dDoKCTMKCTYKCTEwCgkxNQoJMjEKLS0tCm5hbWU6IGJrc2wtbmwtNQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluIGRvdWJsZSBxdW90ZWQgc3RyaW5ncwpzdGRpbjoKCWVjaG8gIlwKCWhpIgoJZWNobyAiZm9vXAoJYmFyIgoJZWNobyAiZm9sa3NcCgkiCmV4cGVjdGVkLXN0ZG91dDoKCWhpCglmb29iYXIKCWZvbGtzCi0tLQpuYW1lOiBia3NsLW5sLTYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGlzIGNvbGxhcHNlZCBpbiBoZXJlIGRvY3VtZW50IGRlbGltaXRlcnMKCShrc2g5MyBmYWlscyBzZWNvbmQgcGFydCBvZiB0aGlzKQpzdGRpbjoKCWE9MTIKCWNhdCA8PCBFT1wKCUYKCWE9JGEKCWZvb1wKCWJhcgoJRU9GCgljYXQgPDwgRV9PX0YKCWZvbwoJRV9PX1wKCUYKCWVjaG8gZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglhPTEyCglmb29iYXIKCWZvbwoJZG9uZQotLS0KbmFtZTogYmtzbC1ubC03CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgaW4gZG91YmxlLXF1b3RlZCBoZXJlLWRvY3VtZW50CglkZWxpbWl0ZXIuCnN0ZGluOgoJYT0xMgoJY2F0IDw8ICJFT1wKCUYiCglhPSRhCglmb29cCgliYXIKCUVPRgoJZWNobyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCWE9JGEKCWZvb1wKCWJhcgoJZG9uZQotLS0KbmFtZTogYmtzbC1ubC04CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgaW4gdmFyaW91cyAyKyBjaGFyYWN0ZXIgdG9rZW5zCglkZWxpbWl0ZXIuCgkoa3NoOTMgZmFpbHMgdGhpcykKc3RkaW46CgllY2hvIGhpICZcCgkmIGVjaG8gdGhlcmUKCWVjaG8gZm9vIHxcCgl8IGVjaG8gYmFyCgljYXQgPFwKCTwgRU9GCglzdHVmZgoJRU9GCgljYXQgPFwKCTxcCgktIEVPRgoJCW1vcmUgc3R1ZmYKCUVPRgoJY2F0IDw8XAoJRU9GCglhYmNkZWYKCUVPRgoJZWNobyBoaSA+XAoJPiAvZGV2L251bGwKCWVjaG8gJD8KCWk9MQoJY2FzZSAkaSBpbgoJKFwKCXh8XAoJMVwKCSkgZWNobyBoaTtcCgk7CgkoKikgZWNobyBvb3BzCgllc2FjCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgl0aGVyZQoJZm9vCglzdHVmZgoJbW9yZSBzdHVmZgoJYWJjZGVmCgkwCgloaQotLS0KbmFtZTogYmtzbC1ubC05CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcIGF0IHRoZSBlbmQgb2YgYW4gYWxpYXMgaXMgY29sbGFwc2VkIHdoZW4gZm9sbG93ZWQKCWJ5IGEgbmV3bGluZQoJKGRvbid0IGtub3cgd2hhdCBQT1NJWCBoYXMgdG8gc2F5IGFib3V0IHRoaXMpCnN0ZGluOgoJYWxpYXMgeD0nZWNobyBoaVwnCgl4CgllY2hvIHRoZXJlCmV4cGVjdGVkLXN0ZG91dDoKCWhpZWNobyB0aGVyZQotLS0KbmFtZTogYmtzbC1ubC0xMApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaW4gYSBrZXl3b3JkIGlzIGNvbGxhcHNlZApzdGRpbjoKCWlcCglmIHRydWU7IHRoZW5cCgkgZWNobyBwYXNzOyBlbFwKCXNlIGVjaG8gZmFpbDsgZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJcGFzcwotLS0KIwojIFBsYWNlcyBcbmV3bGluZSBzaG91bGQgYmUgY29sbGFwc2VkIChrc2ggZXh0ZW5zaW9ucykKIwpuYW1lOiBia3NsLW5sLWtzaC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgaW4gZXh0ZW5kZWQgZ2xvYmJpbmcKCShrc2g5MyBmYWlscyB0aGlzKQpzdGRpbjoKCXh4eD1mb28KCWNhc2UgJHh4eCBpbgoJKGYqXAoJKFwKCW9cCgkpXAoJKSBlY2hvIG9rIDs7CgkqKSBlY2hvIGJhZAoJZXNhYwpleHBlY3RlZC1zdGRvdXQ6CglvawotLS0KbmFtZTogYmtzbC1ubC1rc2gtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluICgoLi4uKSkgZXhwcmVzc2lvbnMKCShrc2g5MyBmYWlscyB0aGlzKQpzdGRpbjoKCWk9MQoJKFwKCShcCglpPWkrMlwKCSlcCgkpCgllY2hvICRpCmV4cGVjdGVkLXN0ZG91dDoKCTMKLS0tCm5hbWU6IGJyZWFrLTEKZGVzY3JpcHRpb246CglTZWUgaWYgYnJlYWsgYnJlYWtzIG91dCBvZiBsb29wcwpzdGRpbjoKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBicmVhazsgZWNobyBiYWQtJGk7IGRvbmUKCWVjaG8gZW5kLTEKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBicmVhayAxOyBlY2hvIGJhZC0kaTsgZG9uZQoJZWNobyBlbmQtMgoJZm9yIGkgaW4gYSBiIGM7IGRvCgkgICAgZm9yIGogaW4geCB5IHo7IGRvCgkJZWNobyAkaTokagoJCWJyZWFrCgkJZWNobyBiYWQtJGkKCSAgICBkb25lCgkgICAgZWNobyBlbmQtJGkKCWRvbmUKCWVjaG8gZW5kLTMKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBldmFsIGJyZWFrOyBlY2hvIGJhZC0kaTsgZG9uZQoJZWNobyBlbmQtNApleHBlY3RlZC1zdGRvdXQ6CglhCgllbmQtMQoJYQoJZW5kLTIKCWE6eAoJZW5kLWEKCWI6eAoJZW5kLWIKCWM6eAoJZW5kLWMKCWVuZC0zCglhCgllbmQtNAotLS0KbmFtZTogYnJlYWstMgpkZXNjcmlwdGlvbjoKCVNlZSBpZiBicmVhayBicmVha3Mgb3V0IG9mIG5lc3RlZCBsb29wcwpzdGRpbjoKCWZvciBpIGluIGEgYiBjOyBkbwoJICAgIGZvciBqIGluIHggeSB6OyBkbwoJCWVjaG8gJGk6JGoKCQlicmVhayAyCgkJZWNobyBiYWQtJGkKCSAgICBkb25lCgkgICAgZWNobyBlbmQtJGkKCWRvbmUKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCWE6eAoJZW5kCi0tLQpuYW1lOiBicmVhay0zCmRlc2NyaXB0aW9uOgoJV2hhdCBpZiBicmVhayB1c2VkIG91dHNpZGUgb2YgYW55IGxvb3BzCgkoa3NoODgsa3NoOTMgZG9uJ3QgcHJpbnQgZXJyb3IgbWVzc2FnZXMgaGVyZSkKc3RkaW46CglicmVhawpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmJyZWFrLiovCi0tLQpuYW1lOiBicmVhay00CmRlc2NyaXB0aW9uOgoJV2hhdCBpZiBicmVhayBOIHVzZWQgd2hlbiBvbmx5IE4tMSBsb29wcwoJKGtzaDg4LGtzaDkzIGRvbid0IHByaW50IGVycm9yIG1lc3NhZ2VzIGhlcmUpCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvIGVjaG8gJGk7IGJyZWFrIDI7IGVjaG8gYmFkLSRpOyBkb25lCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CglhCgllbmQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvLipicmVhay4qLwotLS0KbmFtZTogYnJlYWstNQpkZXNjcmlwdGlvbjoKCUVycm9yIGlmIGJyZWFrIGFyZ3VtZW50IGlzbid0IGEgbnVtYmVyCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvIGVjaG8gJGk7IGJyZWFrIGFiYzsgZWNobyBtb3JlLSRpOyBkb25lCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CglhCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmJyZWFrLiovCi0tLQpuYW1lOiBjb250aW51ZS0xCmRlc2NyaXB0aW9uOgoJU2VlIGlmIGNvbnRpbnVlIGNvbnRpbnVlcyBsb29wcwpzdGRpbjoKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBjb250aW51ZTsgZWNobyBiYWQtJGkgOyBkb25lCgllY2hvIGVuZC0xCglmb3IgaSBpbiBhIGIgYzsgZG8gZWNobyAkaTsgY29udGludWUgMTsgZWNobyBiYWQtJGk7IGRvbmUKCWVjaG8gZW5kLTIKCWZvciBpIGluIGEgYiBjOyBkbwoJICAgIGZvciBqIGluIHggeSB6OyBkbwoJCWVjaG8gJGk6JGoKCQljb250aW51ZQoJCWVjaG8gYmFkLSRpLSRqCgkgICAgZG9uZQoJICAgIGVjaG8gZW5kLSRpCglkb25lCgllY2hvIGVuZC0zCglmb3IgaSBpbiBhIGIgYzsgZG8gZWNobyAkaTsgZXZhbCBjb250aW51ZTsgZWNobyBiYWQtJGkgOyBkb25lCgllY2hvIGVuZC00CmV4cGVjdGVkLXN0ZG91dDoKCWEKCWIKCWMKCWVuZC0xCglhCgliCgljCgllbmQtMgoJYTp4CglhOnkKCWE6egoJZW5kLWEKCWI6eAoJYjp5CgliOnoKCWVuZC1iCgljOngKCWM6eQoJYzp6CgllbmQtYwoJZW5kLTMKCWEKCWIKCWMKCWVuZC00Ci0tLQpuYW1lOiBjb250aW51ZS0yCmRlc2NyaXB0aW9uOgoJU2VlIGlmIGNvbnRpbnVlIGJyZWFrcyBvdXQgb2YgbmVzdGVkIGxvb3BzCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvCgkgICAgZm9yIGogaW4geCB5IHo7IGRvCgkJZWNobyAkaTokagoJCWNvbnRpbnVlIDIKCQllY2hvIGJhZC0kaS0kagoJICAgIGRvbmUKCSAgICBlY2hvIGVuZC0kaQoJZG9uZQoJZWNobyBlbmQKZXhwZWN0ZWQtc3Rkb3V0OgoJYTp4CgliOngKCWM6eAoJZW5kCi0tLQpuYW1lOiBjb250aW51ZS0zCmRlc2NyaXB0aW9uOgoJV2hhdCBpZiBjb250aW51ZSB1c2VkIG91dHNpZGUgb2YgYW55IGxvb3BzCgkoa3NoODgsa3NoOTMgZG9uJ3QgcHJpbnQgZXJyb3IgbWVzc2FnZXMgaGVyZSkKc3RkaW46Cgljb250aW51ZQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmNvbnRpbnVlLiovCi0tLQpuYW1lOiBjb250aW51ZS00CmRlc2NyaXB0aW9uOgoJV2hhdCBpZiBjb250aW51ZSBOIHVzZWQgd2hlbiBvbmx5IE4tMSBsb29wcwoJKGtzaDg4LGtzaDkzIGRvbid0IHByaW50IGVycm9yIG1lc3NhZ2VzIGhlcmUpCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvIGVjaG8gJGk7IGNvbnRpbnVlIDI7IGVjaG8gYmFkLSRpOyBkb25lCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CglhCgliCgljCgllbmQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvLipjb250aW51ZS4qLwotLS0KbmFtZTogY29udGludWUtNQpkZXNjcmlwdGlvbjoKCUVycm9yIGlmIGNvbnRpbnVlIGFyZ3VtZW50IGlzbid0IGEgbnVtYmVyCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvIGVjaG8gJGk7IGNvbnRpbnVlIGFiYzsgZWNobyBtb3JlLSRpOyBkb25lCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CglhCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmNvbnRpbnVlLiovCi0tLQpuYW1lOiBjZC1oaXN0b3J5CmRlc2NyaXB0aW9uOgoJVGVzdCBzb21lb25lJ3MgQ0QgaGlzdG9yeSBwYWNrYWdlICh1c2VzIGFycmF5cykKc3RkaW46CgkjIGdvIHRvIGtub3duIHBsYWNlIGJlZm9yZSBkb2luZyBhbnl0aGluZwoJY2QgLwoJCglhbGlhcyBjZD1fY2QKCWZ1bmN0aW9uIF9jZAoJewoJCXR5cGVzZXQgLWkgY2RsZW4gaQoJCXR5cGVzZXQgdAoJCgkJaWYgWyAkIyAtZXEgMCBdCgkJdGhlbgoJCQlzZXQgLS0gJEhPTUUKCQlmaQoJCgkJaWYgWyAiJENESElTVEZJTEUiIC1hIC1yICIkQ0RISVNURklMRSIgXSAjIGlmIGRpcmVjdG9yeSBoaXN0b3J5IGV4aXN0cwoJCXRoZW4KCQkJdHlwZXNldCBDREhJU1QKCQkJaT0tMQoJCQl3aGlsZSByZWFkIC1yIHQJCQkjIHJlYWQgZGlyZWN0b3J5IGhpc3RvcnkgZmlsZQoJCQlkbwoJCQkJQ0RISVNUW2k9aSsxXT0kdAoJCQlkb25lIDwkQ0RISVNURklMRQoJCWZpCgkKCQlpZiBbICIke0NESElTVFswXX0iICE9ICIkUFdEIiAtYSAiJFBXRCIgIT0gIiIgXQoJCXRoZW4KCQkJX2NkaW5zCQkJCSMgaW5zZXJ0ICRQV0QgaW50byBjZCBoaXN0b3J5CgkJZmkKCQoJCWNkbGVuPSR7I0NESElTVFsqXX0JCQkjIG51bWJlciBvZiBlbGVtZW50cyBpbiBoaXN0b3J5CgkKCQljYXNlICIkQCIgaW4KCQktKQkJCQkJIyBjZCB0byBuZXcgZGlyCgkJCWlmIFsgIiRPTERQV0QiID0gIiIgXSAmJiAoKGNkbGVuPjEpKQoJCQl0aGVuCgkJCQkncHJpbnQnICR7Q0RISVNUWzFdfQoJCQkJJ2NkJyAke0NESElTVFsxXX0KCQkJCV9wd2QKCQkJZWxzZQoJCQkJJ2NkJyAkQAoJCQkJX3B3ZAoJCQlmaQoJCQk7OwoJCS1sKQkJCQkJIyBwcmludCBkaXJlY3RvcnkgbGlzdAoJCQl0eXBlc2V0IC1SMyBudW0KCQkJKChpPWNkbGVuKSkKCQkJd2hpbGUgKCgoaT1pLTEpPj0wKSkKCQkJZG8KCQkJCW51bT0kaQoJCQkJJ3ByaW50JyAiJG51bSAke0NESElTVFtpXX0iCgkJCWRvbmUKCQkJcmV0dXJuCgkJCTs7CgkJLVswLTldfC1bMC05XVswLTldKQkJCSMgY2QgdG8gZGlyIGluIGxpc3QKCQkJaWYgKCgoaT0kezEjLX0pPGNkbGVuKSkKCQkJdGhlbgoJCQkJJ3ByaW50JyAke0NESElTVFtpXX0KCQkJCSdjZCcgJHtDREhJU1RbaV19CgkJCQlfcHdkCgkJCWVsc2UKCQkJCSdjZCcgJEAKCQkJCV9wd2QKCQkJZmkKCQkJOzsKCQktKikJCQkJCSMgY2QgdG8gbWF0Y2hlZCBkaXIgaW4gbGlzdAoJCQl0PSR7MSMtfQoJCQlpPTEKCQkJd2hpbGUgKChpPGNkbGVuKSkKCQkJZG8KCQkJCWNhc2UgJHtDREhJU1RbaV19IGluCgkJCQkqJHQqKQoJCQkJCSdwcmludCcgJHtDREhJU1RbaV19CgkJCQkJJ2NkJyAke0NESElTVFtpXX0KCQkJCQlfcHdkCgkJCQkJYnJlYWsKCQkJCQk7OwoJCQkJZXNhYwoJCQkJKChpPWkrMSkpCgkJCWRvbmUKCQkJaWYgKChpPj1jZGxlbikpCgkJCXRoZW4KCQkJCSdjZCcgJEAKCQkJCV9wd2QKCQkJZmkKCQkJOzsKCQkqKQkJCQkJIyBjZCB0byBuZXcgZGlyCgkJCSdjZCcgJEAKCQkJX3B3ZAoJCQk7OwoJCWVzYWMKCQoJCV9jZGlucwkJCQkJIyBpbnNlcnQgJFBXRCBpbnRvIGNkIGhpc3RvcnkKCQoJCWlmIFsgIiRDREhJU1RGSUxFIiBdCgkJdGhlbgoJCQljZGxlbj0keyNDREhJU1RbKl19CQkjIG51bWJlciBvZiBlbGVtZW50cyBpbiBoaXN0b3J5CgkKCQkJaT0wCgkJCXdoaWxlICgoaTxjZGxlbikpCgkJCWRvCgkJCQkncHJpbnQnIC1yICR7Q0RISVNUW2ldfQkjIHVwZGF0ZSBkaXJlY3RvcnkgaGlzdG9yeQoJCQkJKChpPWkrMSkpCgkJCWRvbmUgPiRDREhJU1RGSUxFCgkJZmkKCX0KCQoJZnVuY3Rpb24gX2NkaW5zCQkJCQkjIGluc2VydCAkUFdEIGludG8gY2QgaGlzdG9yeQoJewkJCQkJCSMgbWVhbnQgdG8gYmUgY2FsbGVkIG9ubHkgYnkgX2NkCgkJdHlwZXNldCAtaSBpCgkKCQkoKGk9MCkpCgkJd2hpbGUgKChpPCR7I0NESElTVFsqXX0pKQkJIyBzZWUgaWYgZGlyIGlzIGFscmVhZHkgaW4gbGlzdAoJCWRvCgkJCWlmIFsgIiR7Q0RISVNUWyRpXX0iID0gIiRQV0QiIF0KCQkJdGhlbgoJCQkJYnJlYWsKCQkJZmkKCQkJKChpPWkrMSkpCgkJZG9uZQoJCgkJaWYgKChpPjIyKSkJCQkJIyBsaW1pdCBtYXggc2l6ZSBvZiBsaXN0CgkJdGhlbgoJCQlpPTIyCgkJZmkKCQoJCXdoaWxlICgoKGk9aS0xKT49MCkpCQkJIyBidW1wIG9sZCBkaXJzIGluIGxpc3QKCQlkbwoJCQlDREhJU1RbaSsxXT0ke0NESElTVFtpXX0KCQlkb25lCgkKCQlDREhJU1RbMF09JFBXRAkJCQkjIGluc2VydCBuZXcgZGlyZWN0b3J5IGluIGxpc3QKCX0KCQoJCglmdW5jdGlvbiBfcHdkCgl7CgkJaWYgWyAtbiAiJEVDRCIgXQoJCXRoZW4KCQkJcHdkIDE+JjYKCQlmaQoJfQoJIyBTdGFydCBvZiB0ZXN0CgljZCAvdG1wCgljZCAvYmluCgljZCAvZXRjCgljZCAtCgljZCAtMgoJY2QgLWwKZXhwZWN0ZWQtc3Rkb3V0OgoJL2JpbgoJL3RtcAoJICAzIC8KCSAgMiAvZXRjCgkgIDEgL2JpbgoJICAwIC90bXAKLS0tCm5hbWU6IGNkLXBlCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcGFja2FnZSBmb3IgY2QgLVBlCm5lZWQtcGFzczogbm8KIyB0aGUgbXYgY29tbWFuZCBmYWlscyBvbiBDeWd3aW4gYW5kIHovT1MKIyBIdXJkIGFib3J0cyB0aGUgdGVzdHN1aXRlIChwZXJtaXNzaW9uIGRlbmllZCkKIyBRTlggZG9lcyBub3QgZmluZCBzdWJkaXIgdG8gY2QgaW50bwpjYXRlZ29yeTogIW9zOmN5Z3dpbiwhb3M6Z251LCFvczptaWRpcGl4LCFvczptc3lzLCFvczpudG8sIW9zOm9zMzkwLCFub3N5bWxpbmsKZmlsZS1zZXR1cDogZmlsZSA2NDQgIngiCglta2RpciBub3JlYWQgbm9yZWFkL3RhcmdldCBub3JlYWQvdGFyZ2V0L3N1YmRpcgoJbG4gLXMgbm9yZWFkIGxpbmsKCWNobW9kIDMxMSBub3JlYWQKCWNkIC1QJDEgLgoJZWNobyAwPSQ/Cglid2Q9JFBXRAoJY2QgLVAkMSBsaW5rL3RhcmdldAoJZWNobyAxPSQ/LCR7UFdEIyRid2QvfQoJZXB3ZD0kKCRUU0hFTEwgLWMgcHdkIDI+L2Rldi9udWxsKQoJIyBUaGlzIHVuZXhwZWN0ZWRseSBzdWNjZWVkcyBvbiBHTlUvTGludXggYW5kIE1pZG5pZ2h0QlNECgkjZWNobyBwd2Q9JD8sJGVwd2QKCSMgZXhwZWN0Oglwd2Q9MSwKCW12IC4uLy4uL25vcmVhZCAuLi8uLi9yZW5hbWVkCgljZCAtUCQxIHN1YmRpcgoJZWNobyAyPSQ/LCR7UFdEIyRid2QvfQoJY2QgJGJ3ZAoJY2htb2QgNzU1IG5vcmVhZCByZW5hbWVkIDI+L2Rldi9udWxsCglybSAtcmYgbm9yZWFkIGxpbmsgcmVuYW1lZApzdGRpbjoKCWV4cG9ydCBUU0hFTEw9IiRfX3Byb2duYW1lIgoJIiRfX3Byb2duYW1lIiB4CgllY2hvICJub3cgd2l0aCAtZToiCgkiJF9fcHJvZ25hbWUiIHggZQpleHBlY3RlZC1zdGRvdXQ6CgkwPTAKCTE9MCxub3JlYWQvdGFyZ2V0CgkyPTAsbm9yZWFkL3RhcmdldC9zdWJkaXIKCW5vdyB3aXRoIC1lOgoJMD0wCgkxPTAsbm9yZWFkL3RhcmdldAoJMj0xLG5vcmVhZC90YXJnZXQvc3ViZGlyCi0tLQpuYW1lOiBlbnYtcHJvbXB0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBwcm9tcHQgbm90IHByaW50ZWQgd2hlbiBwcm9jZXNzaW5nIEVOVgplbnYtc2V0dXA6ICFFTlY9Li9mb28hCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJmb28iCglYWFg9XwoJUFMxPVgKCWZhbHNlICYmIGVjaG8gaG1tbQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKc3RkaW46CgllY2hvIGhpJHtYWFh9dGhlcmUKZXhwZWN0ZWQtc3Rkb3V0OgoJaGlfdGhlcmUKZXhwZWN0ZWQtc3RkZXJyOiAhCglYWAotLS0KbmFtZTogZXhwYW5kLXVnbHkKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHdlaXJkICR7Zm9vK2Jhcn0gY29uc3RydWN0cyBhcmUgcGFyc2VkIGNvcnJlY3RseQpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZm9yIHggaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIiR4IjsgZG9uZScgPnBmbgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG5mb3IgeCBpbiAiJEAiOyBkbyBwcmludCAtbnIgLS0gIjwkeD4gIjsgZG9uZScgPnBmcwoJY2htb2QgK3ggcGZuIHBmcwoJKGVjaG8gMSAke0lGUysnfSd6fSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMQoJKGVjaG8gMiAiJHtJRlMrJ30nen0iKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyCgkoZWNobyAzICJmb28gJHtJRlMrJ2Jhcn0gYmF6IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMwoJKGVjaG8gLW4gJzQgJzsgLi9wZm4gImZvbyAke0lGUysiYiAgIGMifSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA0CgkoZWNobyAtbiAnNSAnOyAuL3BmbiAiZm9vICR7SUZTK2IgICBjfSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA1CgkoZWNobyA2ICR7SUZTKyJ9Inp9KSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA2CgkoZWNobyA3ICIke0lGUysifSJ6fSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDcKCShlY2hvIDggIiR7SUZTK1wifVwien0iKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA4CgkoZWNobyA5ICIke0lGUytcIlx9XCJ6fSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDkKCShlY2hvIDEwIGZvbyAke0lGUysnYmFyfSBiYXonfSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTAKCShlY2hvIDExICIkKGVjaG8gIiR7SUZTKyd9J3p9IikiKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAxMQoJKGVjaG8gMTIgIiQoZWNobyAke0lGUysnfSd6fSkiKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAxMgoJKGVjaG8gMTMgJHtJRlMrXH16fSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTMKCShlY2hvIDE0ICIke0lGUytcfXp9IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTQKCXU9eDsgKGVjaG8gLW4gJzE1ICc7IC4vcGZzICJmb28gJHtJRlMrYSJiJHV7IHsie3tcfWJ9IGMgJHtJRlMrZHt9fSBiYXIiICR7SUZTLWV7fX0gYmF6OyBlY2hvIC4pIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDE1CglsPXQ7IChlY2hvIDE2ICR7SUZTK2hgZWNobyAtbiBpICR7SUZTKyRsfWhgZXJlfSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTYKCWw9dDsgKGVjaG8gMTcgJHtJRlMraCQoZWNobyAtbiBpICR7SUZTKyRsfWgpZXJlfSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTcKCWw9dDsgKGVjaG8gMTggIiR7SUZTK2hgZWNobyAtbiBpICR7SUZTKyRsfWhgZXJlfSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDE4CglsPXQ7IChlY2hvIDE5ICIke0lGUytoJChlY2hvIC1uIGkgJHtJRlMrJGx9aCllcmV9IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTkKCWw9dDsgKGVjaG8gMjAgJHtJRlMraGBlY2hvIC1uIGkgIiR7SUZTKyRsfSJoYGVyZX0pIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDIwCglsPXQ7IChlY2hvIDIxICR7SUZTK2gkKGVjaG8gLW4gaSAiJHtJRlMrJGx9ImgpZXJlfSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMjEKCWw9dDsgKGVjaG8gMjIgIiR7SUZTK2hgZWNobyAtbiBpICIke0lGUyskbH0iaGBlcmV9IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMjIKCWw9dDsgKGVjaG8gMjMgIiR7SUZTK2gkKGVjaG8gLW4gaSAiJHtJRlMrJGx9ImgpZXJlfSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDIzCglrZXk9dmFsdWU7IChlY2hvIC1uICcyNCAnOyAuL3BmbiAiJHtJRlMrJyRrZXknfSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDI0CglrZXk9dmFsdWU7IChlY2hvIC1uICcyNSAnOyAuL3BmbiAiJHtJRlMrIicka2V5JyJ9IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMjUJIyBrc2g5Mzog4oCcJyRrZXkn4oCdCglrZXk9dmFsdWU7IChlY2hvIC1uICcyNiAnOyAuL3BmbiAke0lGUysnJGtleSd9KSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyNgoJa2V5PXZhbHVlOyAoZWNobyAtbiAnMjcgJzsgLi9wZm4gJHtJRlMrIicka2V5JyJ9KSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyNwoJKGVjaG8gLW4gJzI4ICc7IC4vcGZuICIke0lGUysiJyJ4IH4geCd9J3giJ30ieH0iICMnKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyOAoJdT14OyAoZWNobyAtbiAnMjkgJzsgLi9wZnMgZm9vICR7SUZTK2EiYiR1eyB7Insge1x9Yn0gYyAke0lGUytke319IGJhciAke0lGUy1le319IGJhejsgZWNobyAuKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyOQoJKGVjaG8gLW4gJzMwICc7IC4vcGZzICR7SUZTK2ZvbyAnYlwKCWFyJyBiYXp9OyBlY2hvIC4pIDI+L2Rldi9udWxsIHx8IChlY2hvIGZhaWxlZCBpbiAzMDsgZWNobyBmYWlsZWQgaW4gMzEpCgkoZWNobyAtbiAnMzIgJzsgLi9wZnMgJHtJRlMrZm9vICJiXAoJYXIiIGJhen07IGVjaG8gLikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMzIKCShlY2hvIC1uICczMyAnOyAuL3BmcyAiJHtJRlMrZm9vICdiXAoJYXInIGJhen0iOyBlY2hvIC4pIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDMzCgkoZWNobyAtbiAnMzQgJzsgLi9wZnMgIiR7SUZTK2ZvbyAiYlwKCWFyIiBiYXp9IjsgZWNobyAuKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAzNAoJKGVjaG8gLW4gJzM1ICc7IC4vcGZzICR7dj1hXCBifSB4ICR7dj1jXCBkfTsgZWNobyAuKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAzNQoJKGVjaG8gLW4gJzM2ICc7IC4vcGZzICIke3Y9YVwgYn0iIHggIiR7dj1jXCBkfSI7IGVjaG8gLikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMzYKCShlY2hvIC1uICczNyAnOyAuL3BmcyAke3YtYVwgYn0geCAke3YtY1wgZH07IGVjaG8gLikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMzcKCShlY2hvIDM4ICR7SUZTK3gnYSd5fSAvICIke0lGUyt4J2EneX0iIC4pIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDM4Cglmb289IngnYSd5IjsgKGVjaG8gMzkgJHtmb28lKidhJyp9IC8gIiR7Zm9vJSonYScqfSIgLikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMzkKCWZvbz0iYSBiIGMiOyAoZWNobyAtbiAnNDAgJzsgLi9wZnMgIiR7Zm9vI2F9IjsgZWNobyAuKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA0MAoJKGZvbygpIHsgcmV0dXJuIDEwMDsgfTsgZm9vOyBlY2hvIDQxICR7IyskeyM6KyR7Iz99fVwgXH1cfVx9fSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gNDEKZXhwZWN0ZWQtc3Rkb3V0OgoJMSB9egoJMiAnJ3p9CgkzIGZvbyAnYmFyIGJhegoJNCBmb28gYiAgIGMgYmF6Cgk1IGZvbyBiICAgYyBiYXoKCTYgfXoKCTcgfXoKCTggIiJ6fQoJOSAifSJ6CgkxMCBmb28gYmFyfSBiYXoKCTExICcnen0KCTEyIH16CgkxMyB9egoJMTQgfXoKCTE1IDxmb28gYWJ4eyB7e3t9YiBjIGR7fSBiYXI+IDx9PiA8YmF6PiAuCgkxNiBoaSB0aGVyZQoJMTcgaGkgdGhlcmUKCTE4IGhpIHRoZXJlCgkxOSBoaSB0aGVyZQoJMjAgaGkgdGhlcmUKCTIxIGhpIHRoZXJlCgkyMiBoaSB0aGVyZQoJMjMgaGkgdGhlcmUKCTI0ICd2YWx1ZScKCTI1ICd2YWx1ZScKCTI2ICRrZXkKCTI3ICd2YWx1ZScKCTI4ICd4IH4geCcneH0ieH0iICMKCTI5IDxmb28+IDxhYnh7IHt7PiA8e31iPiA8Yz4gPGR7fT4gPGJhcj4gPH0+IDxiYXo+IC4KCTMwIDxmb28+IDxiXAoJYXI+IDxiYXo+IC4KCTMyIDxmb28+IDxiYXI+IDxiYXo+IC4KCTMzIDxmb28gJ2JhcicgYmF6PiAuCgkzNCA8Zm9vIGJhciBiYXo+IC4KCTM1IDxhPiA8Yj4gPHg+IDxhPiA8Yj4gLgoJMzYgPGFcIGI+IDx4PiA8YVwgYj4gLgoJMzcgPGEgYj4gPHg+IDxjIGQ+IC4KCTM4IHhheSAvIHgnYSd5IC4KCTM5IHgnIC8geCcgLgoJNDAgPCBiIGM+IC4KCTQxIDMgfX19Ci0tLQpuYW1lOiBleHBhbmQtdW5nbG9iLWRibHEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHJlZ3VsYXIgIiR7Zm9vK2Jhcn0iIGNvbnN0cnVjdHMgYXJlIHBhcnNlZCBjb3JyZWN0bHkKc3RkaW46Cgl1PXgKCXRsX25vcm0oKSB7CgkJdj0kMgoJCXRlc3QgeCIkdiIgPSB4Ii0iICYmIHVuc2V0IHYKCQkoZWNobyAiJDEgcGx1cyBub3JtIGZvbyAke3YrJ2Jhcid9IGJheiIpCgkJKGVjaG8gIiQxIGRhc2ggbm9ybSBmb28gJHt2LSdiYXInfSBiYXoiKQoJCShlY2hvICIkMSBlcWFsIG5vcm0gZm9vICR7dj0nYmFyJ30gYmF6IikKCQkoZWNobyAiJDEgcXN0biBub3JtIGZvbyAke3Y/J2Jhcid9IGJheiIpIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgcXN0biBub3JtIC0+IGVycm9yIgoJCShlY2hvICIkMSBQTFVTIG5vcm0gZm9vICR7djorJ2Jhcid9IGJheiIpCgkJKGVjaG8gIiQxIERBU0ggbm9ybSBmb28gJHt2Oi0nYmFyJ30gYmF6IikKCQkoZWNobyAiJDEgRVFBTCBub3JtIGZvbyAke3Y6PSdiYXInfSBiYXoiKQoJCShlY2hvICIkMSBRU1ROIG5vcm0gZm9vICR7djo/J2Jhcid9IGJheiIpIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgUVNUTiBub3JtIC0+IGVycm9yIgoJfQoJdGxfcGFyZW4oKSB7CgkJdj0kMgoJCXRlc3QgeCIkdiIgPSB4Ii0iICYmIHVuc2V0IHYKCQkoZWNobyAiJDEgcGx1cyBwYXJuIGZvbyAke3YrKGJhcil9IGJheiIpCgkJKGVjaG8gIiQxIGRhc2ggcGFybiBmb28gJHt2LShiYXIpfSBiYXoiKQoJCShlY2hvICIkMSBlcWFsIHBhcm4gZm9vICR7dj0oYmFyKX0gYmF6IikKCQkoZWNobyAiJDEgcXN0biBwYXJuIGZvbyAke3Y/KGJhcil9IGJheiIpIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgcXN0biBwYXJuIC0+IGVycm9yIgoJCShlY2hvICIkMSBQTFVTIHBhcm4gZm9vICR7djorKGJhcil9IGJheiIpCgkJKGVjaG8gIiQxIERBU0ggcGFybiBmb28gJHt2Oi0oYmFyKX0gYmF6IikKCQkoZWNobyAiJDEgRVFBTCBwYXJuIGZvbyAke3Y6PShiYXIpfSBiYXoiKQoJCShlY2hvICIkMSBRU1ROIHBhcm4gZm9vICR7djo/KGJhcil9IGJheiIpIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgUVNUTiBwYXJuIC0+IGVycm9yIgoJfQoJdGxfYnJhY2UoKSB7CgkJdj0kMgoJCXRlc3QgeCIkdiIgPSB4Ii0iICYmIHVuc2V0IHYKCQkoZWNobyAiJDEgcGx1cyBicmFjIGZvbyAke3YrYSR1e3t7XH1ifSBjICR7ditke319IGJheiIpCgkJKGVjaG8gIiQxIGRhc2ggYnJhYyBmb28gJHt2LWEkdXt7e1x9Yn0gYyAke3YtZHt9fSBiYXoiKQoJCShlY2hvICIkMSBlcWFsIGJyYWMgZm9vICR7dj1hJHV7e3tcfWJ9IGMgJHt2PWR7fX0gYmF6IikKCQkoZWNobyAiJDEgcXN0biBicmFjIGZvbyAke3Y/YSR1e3t7XH1ifSBjICR7dj9ke319IGJheiIpIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgcXN0biBicmFjIC0+IGVycm9yIgoJCShlY2hvICIkMSBQTFVTIGJyYWMgZm9vICR7djorYSR1e3t7XH1ifSBjICR7djorZHt9fSBiYXoiKQoJCShlY2hvICIkMSBEQVNIIGJyYWMgZm9vICR7djotYSR1e3t7XH1ifSBjICR7djotZHt9fSBiYXoiKQoJCShlY2hvICIkMSBFUUFMIGJyYWMgZm9vICR7djo9YSR1e3t7XH1ifSBjICR7djo9ZHt9fSBiYXoiKQoJCShlY2hvICIkMSBRU1ROIGJyYWMgZm9vICR7djo/YSR1e3t7XH1ifSBjICR7djo/ZHt9fSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIFFTVE4gYnJhYyAtPiBlcnJvciIKCX0KCTogJ319fScgJ319fScgJ319fScgJ319fScgJ319fScgJ319fScgJ319fScgJ319fScKCXRsX25vcm0gMSAtCgl0bF9ub3JtIDIgJycKCXRsX25vcm0gMyB4Cgl0bF9wYXJlbiA0IC0KCXRsX3BhcmVuIDUgJycKCXRsX3BhcmVuIDYgeAoJdGxfYnJhY2UgNyAtCgl0bF9icmFjZSA4ICcnCgl0bF9icmFjZSA5IHgKZXhwZWN0ZWQtc3Rkb3V0OgoJMSBwbHVzIG5vcm0gZm9vICBiYXoKCTEgZGFzaCBub3JtIGZvbyAnYmFyJyBiYXoKCTEgZXFhbCBub3JtIGZvbyAnYmFyJyBiYXoKCTEgcXN0biBub3JtIC0+IGVycm9yCgkxIFBMVVMgbm9ybSBmb28gIGJhegoJMSBEQVNIIG5vcm0gZm9vICdiYXInIGJhegoJMSBFUUFMIG5vcm0gZm9vICdiYXInIGJhegoJMSBRU1ROIG5vcm0gLT4gZXJyb3IKCTIgcGx1cyBub3JtIGZvbyAnYmFyJyBiYXoKCTIgZGFzaCBub3JtIGZvbyAgYmF6CgkyIGVxYWwgbm9ybSBmb28gIGJhegoJMiBxc3RuIG5vcm0gZm9vICBiYXoKCTIgUExVUyBub3JtIGZvbyAgYmF6CgkyIERBU0ggbm9ybSBmb28gJ2JhcicgYmF6CgkyIEVRQUwgbm9ybSBmb28gJ2JhcicgYmF6CgkyIFFTVE4gbm9ybSAtPiBlcnJvcgoJMyBwbHVzIG5vcm0gZm9vICdiYXInIGJhegoJMyBkYXNoIG5vcm0gZm9vIHggYmF6CgkzIGVxYWwgbm9ybSBmb28geCBiYXoKCTMgcXN0biBub3JtIGZvbyB4IGJhegoJMyBQTFVTIG5vcm0gZm9vICdiYXInIGJhegoJMyBEQVNIIG5vcm0gZm9vIHggYmF6CgkzIEVRQUwgbm9ybSBmb28geCBiYXoKCTMgUVNUTiBub3JtIGZvbyB4IGJhegoJNCBwbHVzIHBhcm4gZm9vICBiYXoKCTQgZGFzaCBwYXJuIGZvbyAoYmFyKSBiYXoKCTQgZXFhbCBwYXJuIGZvbyAoYmFyKSBiYXoKCTQgcXN0biBwYXJuIC0+IGVycm9yCgk0IFBMVVMgcGFybiBmb28gIGJhegoJNCBEQVNIIHBhcm4gZm9vIChiYXIpIGJhegoJNCBFUUFMIHBhcm4gZm9vIChiYXIpIGJhegoJNCBRU1ROIHBhcm4gLT4gZXJyb3IKCTUgcGx1cyBwYXJuIGZvbyAoYmFyKSBiYXoKCTUgZGFzaCBwYXJuIGZvbyAgYmF6Cgk1IGVxYWwgcGFybiBmb28gIGJhegoJNSBxc3RuIHBhcm4gZm9vICBiYXoKCTUgUExVUyBwYXJuIGZvbyAgYmF6Cgk1IERBU0ggcGFybiBmb28gKGJhcikgYmF6Cgk1IEVRQUwgcGFybiBmb28gKGJhcikgYmF6Cgk1IFFTVE4gcGFybiAtPiBlcnJvcgoJNiBwbHVzIHBhcm4gZm9vIChiYXIpIGJhegoJNiBkYXNoIHBhcm4gZm9vIHggYmF6Cgk2IGVxYWwgcGFybiBmb28geCBiYXoKCTYgcXN0biBwYXJuIGZvbyB4IGJhegoJNiBQTFVTIHBhcm4gZm9vIChiYXIpIGJhegoJNiBEQVNIIHBhcm4gZm9vIHggYmF6Cgk2IEVRQUwgcGFybiBmb28geCBiYXoKCTYgUVNUTiBwYXJuIGZvbyB4IGJhegoJNyBwbHVzIGJyYWMgZm9vICBjIH0gYmF6Cgk3IGRhc2ggYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTcgZXFhbCBicmFjIGZvbyBheHt7e31iIGMgYXh7e3t9Yn0gYmF6Cgk3IHFzdG4gYnJhYyAtPiBlcnJvcgoJNyBQTFVTIGJyYWMgZm9vICBjIH0gYmF6Cgk3IERBU0ggYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTcgRVFBTCBicmFjIGZvbyBheHt7e31iIGMgYXh7e3t9Yn0gYmF6Cgk3IFFTVE4gYnJhYyAtPiBlcnJvcgoJOCBwbHVzIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk4IGRhc2ggYnJhYyBmb28gIGMgfSBiYXoKCTggZXFhbCBicmFjIGZvbyAgYyB9IGJhegoJOCBxc3RuIGJyYWMgZm9vICBjIH0gYmF6Cgk4IFBMVVMgYnJhYyBmb28gIGMgfSBiYXoKCTggREFTSCBicmFjIGZvbyBheHt7e31iIGMgZHt9IGJhegoJOCBFUUFMIGJyYWMgZm9vIGF4e3t7fWIgYyBheHt7e31ifSBiYXoKCTggUVNUTiBicmFjIC0+IGVycm9yCgk5IHBsdXMgYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTkgZGFzaCBicmFjIGZvbyB4IGMgeH0gYmF6Cgk5IGVxYWwgYnJhYyBmb28geCBjIHh9IGJhegoJOSBxc3RuIGJyYWMgZm9vIHggYyB4fSBiYXoKCTkgUExVUyBicmFjIGZvbyBheHt7e31iIGMgZHt9IGJhegoJOSBEQVNIIGJyYWMgZm9vIHggYyB4fSBiYXoKCTkgRVFBTCBicmFjIGZvbyB4IGMgeH0gYmF6Cgk5IFFTVE4gYnJhYyBmb28geCBjIHh9IGJhegotLS0KbmFtZTogZXhwYW5kLXVuZ2xvYi11bnEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHJlZ3VsYXIgJHtmb28rYmFyfSBjb25zdHJ1Y3RzIGFyZSBwYXJzZWQgY29ycmVjdGx5CnN0ZGluOgoJdT14Cgl0bF9ub3JtKCkgewoJCXY9JDIKCQl0ZXN0IHgiJHYiID0geCItIiAmJiB1bnNldCB2CgkJKGVjaG8gJDEgcGx1cyBub3JtIGZvbyAke3YrJ2Jhcid9IGJheikKCQkoZWNobyAkMSBkYXNoIG5vcm0gZm9vICR7di0nYmFyJ30gYmF6KQoJCShlY2hvICQxIGVxYWwgbm9ybSBmb28gJHt2PSdiYXInfSBiYXopCgkJKGVjaG8gJDEgcXN0biBub3JtIGZvbyAke3Y/J2Jhcid9IGJheikgMj4vZGV2L251bGwgfHwgXAoJCSAgICBlY2hvICIkMSBxc3RuIG5vcm0gLT4gZXJyb3IiCgkJKGVjaG8gJDEgUExVUyBub3JtIGZvbyAke3Y6KydiYXInfSBiYXopCgkJKGVjaG8gJDEgREFTSCBub3JtIGZvbyAke3Y6LSdiYXInfSBiYXopCgkJKGVjaG8gJDEgRVFBTCBub3JtIGZvbyAke3Y6PSdiYXInfSBiYXopCgkJKGVjaG8gJDEgUVNUTiBub3JtIGZvbyAke3Y6PydiYXInfSBiYXopIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgUVNUTiBub3JtIC0+IGVycm9yIgoJfQoJdGxfcGFyZW4oKSB7CgkJdj0kMgoJCXRlc3QgeCIkdiIgPSB4Ii0iICYmIHVuc2V0IHYKCQkoZWNobyAkMSBwbHVzIHBhcm4gZm9vICR7ditcKGJhcicpJ30gYmF6KQoJCShlY2hvICQxIGRhc2ggcGFybiBmb28gJHt2LVwoYmFyJyknfSBiYXopCgkJKGVjaG8gJDEgZXFhbCBwYXJuIGZvbyAke3Y9XChiYXInKSd9IGJheikKCQkoZWNobyAkMSBxc3RuIHBhcm4gZm9vICR7dj9cKGJhcicpJ30gYmF6KSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIHFzdG4gcGFybiAtPiBlcnJvciIKCQkoZWNobyAkMSBQTFVTIHBhcm4gZm9vICR7djorXChiYXInKSd9IGJheikKCQkoZWNobyAkMSBEQVNIIHBhcm4gZm9vICR7djotXChiYXInKSd9IGJheikKCQkoZWNobyAkMSBFUUFMIHBhcm4gZm9vICR7djo9XChiYXInKSd9IGJheikKCQkoZWNobyAkMSBRU1ROIHBhcm4gZm9vICR7djo/XChiYXInKSd9IGJheikgMj4vZGV2L251bGwgfHwgXAoJCSAgICBlY2hvICIkMSBRU1ROIHBhcm4gLT4gZXJyb3IiCgl9Cgl0bF9icmFjZSgpIHsKCQl2PSQyCgkJdGVzdCB4IiR2IiA9IHgiLSIgJiYgdW5zZXQgdgoJCShlY2hvICQxIHBsdXMgYnJhYyBmb28gJHt2K2EkdXt7e1x9Yn0gYyAke3YrZHt9fSBiYXopCgkJKGVjaG8gJDEgZGFzaCBicmFjIGZvbyAke3YtYSR1e3t7XH1ifSBjICR7di1ke319IGJheikKCQkoZWNobyAkMSBlcWFsIGJyYWMgZm9vICR7dj1hJHV7e3tcfWJ9IGMgJHt2PWR7fX0gYmF6KQoJCShlY2hvICQxIHFzdG4gYnJhYyBmb28gJHt2P2EkdXt7e1x9Yn0gYyAke3Y/ZHt9fSBiYXopIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgcXN0biBicmFjIC0+IGVycm9yIgoJCShlY2hvICQxIFBMVVMgYnJhYyBmb28gJHt2OithJHV7e3tcfWJ9IGMgJHt2Oitke319IGJheikKCQkoZWNobyAkMSBEQVNIIGJyYWMgZm9vICR7djotYSR1e3t7XH1ifSBjICR7djotZHt9fSBiYXopCgkJKGVjaG8gJDEgRVFBTCBicmFjIGZvbyAke3Y6PWEkdXt7e1x9Yn0gYyAke3Y6PWR7fX0gYmF6KQoJCShlY2hvICQxIFFTVE4gYnJhYyBmb28gJHt2Oj9hJHV7e3tcfWJ9IGMgJHt2Oj9ke319IGJheikgMj4vZGV2L251bGwgfHwgXAoJCSAgICBlY2hvICIkMSBRU1ROIGJyYWMgLT4gZXJyb3IiCgl9Cgk6ICd9fX0nICd9fX0nICd9fX0nICd9fX0nICd9fX0nICd9fX0nICd9fX0nICd9fX0nCgl0bF9ub3JtIDEgLQoJdGxfbm9ybSAyICcnCgl0bF9ub3JtIDMgeAoJdGxfcGFyZW4gNCAtCgl0bF9wYXJlbiA1ICcnCgl0bF9wYXJlbiA2IHgKCXRsX2JyYWNlIDcgLQoJdGxfYnJhY2UgOCAnJwoJdGxfYnJhY2UgOSB4CmV4cGVjdGVkLXN0ZG91dDoKCTEgcGx1cyBub3JtIGZvbyBiYXoKCTEgZGFzaCBub3JtIGZvbyBiYXIgYmF6CgkxIGVxYWwgbm9ybSBmb28gYmFyIGJhegoJMSBxc3RuIG5vcm0gLT4gZXJyb3IKCTEgUExVUyBub3JtIGZvbyBiYXoKCTEgREFTSCBub3JtIGZvbyBiYXIgYmF6CgkxIEVRQUwgbm9ybSBmb28gYmFyIGJhegoJMSBRU1ROIG5vcm0gLT4gZXJyb3IKCTIgcGx1cyBub3JtIGZvbyBiYXIgYmF6CgkyIGRhc2ggbm9ybSBmb28gYmF6CgkyIGVxYWwgbm9ybSBmb28gYmF6CgkyIHFzdG4gbm9ybSBmb28gYmF6CgkyIFBMVVMgbm9ybSBmb28gYmF6CgkyIERBU0ggbm9ybSBmb28gYmFyIGJhegoJMiBFUUFMIG5vcm0gZm9vIGJhciBiYXoKCTIgUVNUTiBub3JtIC0+IGVycm9yCgkzIHBsdXMgbm9ybSBmb28gYmFyIGJhegoJMyBkYXNoIG5vcm0gZm9vIHggYmF6CgkzIGVxYWwgbm9ybSBmb28geCBiYXoKCTMgcXN0biBub3JtIGZvbyB4IGJhegoJMyBQTFVTIG5vcm0gZm9vIGJhciBiYXoKCTMgREFTSCBub3JtIGZvbyB4IGJhegoJMyBFUUFMIG5vcm0gZm9vIHggYmF6CgkzIFFTVE4gbm9ybSBmb28geCBiYXoKCTQgcGx1cyBwYXJuIGZvbyBiYXoKCTQgZGFzaCBwYXJuIGZvbyAoYmFyKSBiYXoKCTQgZXFhbCBwYXJuIGZvbyAoYmFyKSBiYXoKCTQgcXN0biBwYXJuIC0+IGVycm9yCgk0IFBMVVMgcGFybiBmb28gYmF6Cgk0IERBU0ggcGFybiBmb28gKGJhcikgYmF6Cgk0IEVRQUwgcGFybiBmb28gKGJhcikgYmF6Cgk0IFFTVE4gcGFybiAtPiBlcnJvcgoJNSBwbHVzIHBhcm4gZm9vIChiYXIpIGJhegoJNSBkYXNoIHBhcm4gZm9vIGJhegoJNSBlcWFsIHBhcm4gZm9vIGJhegoJNSBxc3RuIHBhcm4gZm9vIGJhegoJNSBQTFVTIHBhcm4gZm9vIGJhegoJNSBEQVNIIHBhcm4gZm9vIChiYXIpIGJhegoJNSBFUUFMIHBhcm4gZm9vIChiYXIpIGJhegoJNSBRU1ROIHBhcm4gLT4gZXJyb3IKCTYgcGx1cyBwYXJuIGZvbyAoYmFyKSBiYXoKCTYgZGFzaCBwYXJuIGZvbyB4IGJhegoJNiBlcWFsIHBhcm4gZm9vIHggYmF6Cgk2IHFzdG4gcGFybiBmb28geCBiYXoKCTYgUExVUyBwYXJuIGZvbyAoYmFyKSBiYXoKCTYgREFTSCBwYXJuIGZvbyB4IGJhegoJNiBFUUFMIHBhcm4gZm9vIHggYmF6Cgk2IFFTVE4gcGFybiBmb28geCBiYXoKCTcgcGx1cyBicmFjIGZvbyBjIH0gYmF6Cgk3IGRhc2ggYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTcgZXFhbCBicmFjIGZvbyBheHt7e31iIGMgYXh7e3t9Yn0gYmF6Cgk3IHFzdG4gYnJhYyAtPiBlcnJvcgoJNyBQTFVTIGJyYWMgZm9vIGMgfSBiYXoKCTcgREFTSCBicmFjIGZvbyBheHt7e31iIGMgZHt9IGJhegoJNyBFUUFMIGJyYWMgZm9vIGF4e3t7fWIgYyBheHt7e31ifSBiYXoKCTcgUVNUTiBicmFjIC0+IGVycm9yCgk4IHBsdXMgYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTggZGFzaCBicmFjIGZvbyBjIH0gYmF6Cgk4IGVxYWwgYnJhYyBmb28gYyB9IGJhegoJOCBxc3RuIGJyYWMgZm9vIGMgfSBiYXoKCTggUExVUyBicmFjIGZvbyBjIH0gYmF6Cgk4IERBU0ggYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTggRVFBTCBicmFjIGZvbyBheHt7e31iIGMgYXh7e3t9Yn0gYmF6Cgk4IFFTVE4gYnJhYyAtPiBlcnJvcgoJOSBwbHVzIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk5IGRhc2ggYnJhYyBmb28geCBjIHh9IGJhegoJOSBlcWFsIGJyYWMgZm9vIHggYyB4fSBiYXoKCTkgcXN0biBicmFjIGZvbyB4IGMgeH0gYmF6Cgk5IFBMVVMgYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTkgREFTSCBicmFjIGZvbyB4IGMgeH0gYmF6Cgk5IEVRQUwgYnJhYyBmb28geCBjIHh9IGJhegoJOSBRU1ROIGJyYWMgZm9vIHggYyB4fSBiYXoKLS0tCm5hbWU6IGV4cGFuZC10aHJlZWNvbG9ucy1kYmxxCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZm9yIGEgcGFydGljdWxhciB0aGluZyB0aGF0IHVzZWQgdG8gc2VnZmF1bHQKc3RkaW46CglURVNUPTEyMzQKCWVjaG8gIiR7VEVTVDoxOjI6M30iCgllY2hvICQ/IGJ1dCBzdGlsbCBsaXZpbmcKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvYmFkIHN1YnN0aXR1dGlvbi8KZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogZXhwYW5kLXRocmVlY29sb25zLXVucQpkZXNjcmlwdGlvbjoKCUNoZWNrIGZvciBhIHBhcnRpY3VsYXIgdGhpbmcgdGhhdCB1c2VkIHRvIG5vdCBlcnJvciBvdXQKc3RkaW46CglURVNUPTEyMzQKCWVjaG8gJHtURVNUOjE6MjozfQoJZWNobyAkPyBidXQgc3RpbGwgbGl2aW5nCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2JhZCBzdWJzdGl0dXRpb24vCmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IGV4cGFuZC13ZWlyZC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgY29ybmVyIGNhc2VzIG9mIHRyaW0gZXhwYW5zaW9uIHZzLiAkIyB2cy4gJHsjdmFyfSB2cy4gJHt2YXI/fQpzdGRpbjoKCXNldCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMQoJZWNobyAkeyN9CSMgdmFsdWUgb2YgJCMKCWVjaG8gJHsjI30JIyBsZW5ndGggb2YgJCMKCWVjaG8gJHsjIzF9CSMgJCMgdHJpbW1lZCAxCglzZXQgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIKCWVjaG8gJHsjIzF9CgkoZXhpdCAwKQoJZWNobyAkPyA9ICR7Iz99IC4KCShleGl0IDExMSkKCWVjaG8gJD8gPSAkeyM/fSAuCmV4cGVjdGVkLXN0ZG91dDoKCTExCgkyCgkxCgkyCgkwID0gMSAuCgkxMTEgPSAzIC4KLS0tCm5hbWU6IGV4cGFuZC13ZWlyZC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbW9yZSBzdWJzdGl0dXRpb24gYW5kIGV4dGVuc2lvbiBjb3JuZXIgY2FzZXMKc3RkaW46Cgk6JiBzZXQgLUM7IHBpZD0kJDsgc3ViPSQhOyBmbGc9JC07IHNldCAtLSBpOyBleGVjIDM+eC50bXAKCSNlY2hvICJEOiAhPSQhICM9JCMgXCQ9JCQgLT0kLSA/PSQ/IgoJZWNobyA+JjMgMyA9IHNeJHshLXdvcmR9ICwgJHsjLXdvcmR9ICwgcF4keyQtd29yZH0gLCBmXiR7LS13b3JkfSAsICR7Py13b3JkfSAuCgllY2hvID4mMyA0ID0gJHshK3dvcmR9ICwgJHsjK3dvcmR9ICwgJHskK3dvcmR9ICwgJHstK3dvcmR9ICwgJHs/K3dvcmR9IC4KCWVjaG8gPiYzIDUgPSBzXiR7IT13b3JkfSAsICR7Iz13b3JkfSAsIHBeJHskPXdvcmR9ICwgZl4key09d29yZH0gLCAkez89d29yZH0gLgoJZWNobyA+JjMgNiA9IHNeJHshP3dvcmR9ICwgJHsjP3dvcmR9ICwgcF4keyQ/d29yZH0gLCBmXiR7LT93b3JkfSAsICR7Pz93b3JkfSAuCgllY2hvID4mMyA3ID0gc2xeJHsjIX0gLCAkeyMjfSAsIHBsXiR7IyR9ICwgZmxeJHsjLX0gLCAkeyM/fSAuCgllY2hvID4mMyA4ID0gc3deJHslIX0gLCAkeyUjfSAsIHB3XiR7JSR9ICwgZndeJHslLX0gLCAkeyU/fSAuCgllY2hvID4mMyA5ID0gJHshIX0gLCBzXiR7ISN9ICwgJHshJH0gLCBzXiR7IS19ICwgc14keyE/fSAuCgllY2hvID4mMyAxMCA9IHNeJHshI3BhdHRlcm59ICwgJHsjI3BhdHRlcm59ICwgcF4keyQjcGF0dGVybn0gLCBmXiR7LSNwYXR0ZXJufSAsICR7PyNwYXR0ZXJufSAuCgllY2hvID4mMyAxMSA9IHNeJHshJXBhdHRlcm59ICwgJHsjJXBhdHRlcm59ICwgcF4keyQlcGF0dGVybn0gLCBmXiR7LSVwYXR0ZXJufSAsICR7PyVwYXR0ZXJufSAuCgllY2hvID4mMyAxMiA9ICQjIDogJHsjI30gLCAkeyMjMX0gLgoJc2V0IC0tCgllY2hvID4mMyAxNCA9ICQjIDogJHsjI30gLCAkeyMjMX0gLgoJc2V0IC0tIDEgMiAzIDQgNQoJZWNobyA+JjMgMTYgPSAkIyA6ICR7IyN9ICwgJHsjIzF9IC4KCXNldCAtLSAxIDIgMyA0IDUgNiA3IDggOSBhIGIgYyBkIGUKCWVjaG8gPiYzIDE4ID0gJCMgOiAkeyMjfSAsICR7IyMxfSAuCglleGVjIDM+Ji0KCTx4LnRtcCBzZWQgXAoJICAgIC1lICJzLyBwbF4keyNwaWR9IC8gUElEIC9nIiAtZSAicy8gc2xeJHsjc3VifSAvIFNVQiAvZyIgLWUgInMvIGZsXiR7I2ZsZ30gLyBGTEcgL2ciIFwKCSAgICAtZSAicy8gcHdeJHslcGlkfSAvIFBJRCAvZyIgLWUgInMvIHN3XiR7JXN1Yn0gLyBTVUIgL2ciIC1lICJzLyBmd14keyVmbGd9IC8gRkxHIC9nIiBcCgkgICAgLWUgInMvIHBeJHBpZCAvIFBJRCAvZyIgLWUgInMvIHNeJHN1YiAvIFNVQiAvZyIgLWUgInMvIGZeJGZsZyAvIEZMRyAvZyIKZXhwZWN0ZWQtc3Rkb3V0OgoJMyA9IFNVQiAsIDEgLCBQSUQgLCBGTEcgLCAwIC4KCTQgPSB3b3JkICwgd29yZCAsIHdvcmQgLCB3b3JkICwgd29yZCAuCgk1ID0gU1VCICwgMSAsIFBJRCAsIEZMRyAsIDAgLgoJNiA9IFNVQiAsIDEgLCBQSUQgLCBGTEcgLCAwIC4KCTcgPSBTVUIgLCAxICwgUElEICwgRkxHICwgMSAuCgk4ID0gU1VCICwgMSAsIFBJRCAsIEZMRyAsIDEgLgoJOSA9ICEgLCBTVUIgLCAkICwgU1VCICwgU1VCIC4KCTEwID0gU1VCICwgMSAsIFBJRCAsIEZMRyAsIDAgLgoJMTEgPSBTVUIgLCAxICwgUElEICwgRkxHICwgMCAuCgkxMiA9IDEgOiAxICwgLgoJMTQgPSAwIDogMSAsIDAgLgoJMTYgPSA1IDogMSAsIDUgLgoJMTggPSAxNCA6IDIgLCA0IC4KLS0tCm5hbWU6IGV4cGFuZC13ZWlyZC0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0cmltbWluZyB3b3JrcyB3aXRoIHBvc2l0aW9uYWwgcGFyYW1ldGVycyAoRGViaWFuICM0ODQ1MykKc3RkaW46CglBPTk5OTktMDIKCUI9OTk5OQoJZWNobyAxPSR7QSMkQj99LgoJc2V0IC0tICRBICRCCgllY2hvIDI9JHsxIyQyP30uCmV4cGVjdGVkLXN0ZG91dDoKCTE9MDIuCgkyPTAyLgotLS0KbmFtZTogZXhwYW5kLXdlaXJkLTQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRpbGRlIGV4cGFuc2lvbiBpcyBlbmFibGVkIGluICR7eCN+fQoJYW5kIGNhc2VzIHRoYXQgYXJlIG1vZGVsbGVkIGFmdGVyIGl0ICgke3gvfi9+fSkKc3RkaW46CglIT01FPS9ldGMKCWE9In4veCIKCWVjaG8gIjwke2Ejfn0+IDwke2EjXH59PiA8JHtiOi1+fT4gPCR7YjotXH59PiA8JHtjOj1+fT48JGM+IDwke2Evfn0+IDwke2EveC9+fT4gPCR7YS94L1x+fT4iCmV4cGVjdGVkLXN0ZG91dDoKCTx+L3g+IDwveD4gPH4+IDxcfj4gPH4+PH4+IDx+L3g+IDx+Ly9ldGM+IDx+L34+Ci0tLQpuYW1lOiBleHBhbmQtYmFuZy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgY29ybmVyIGNhc2Ugb2YgJHshP30gd2l0aCAhIGJlaW5nIHZhciB2cy4gb3AKc3RkaW46CgllY2hvICR7IT99CmV4cGVjdGVkLWV4aXQ6IDEKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC9ub3Qgc2V0LwotLS0KbmFtZTogZXhwYW5kLWJhbmctMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGNvcm5lciBjYXNlIG9mICR7IXZhcn0gdnMuICR7dmFyIG9wfSB3aXRoIHZhcj0hCnN0ZGluOgoJZWNobyAxICQhIC4KCWVjaG8gMiAkeyEjfSAuCgllY2hvIDMgJHshI1swLTldfSAuCgllY2hvIDQgJHshLWZvb30gLgoJIyBnZXQgYW4gYXQgbGVhc3QgdGhyZWUtZGlnaXQgYmcgcGlkCgl3aGlsZSA6OyBkbwoJCTomCgkJeD0kIQoJCWlmIFtbICR4ICE9ICsoWzAtOV0pIF1dOyB0aGVuCgkJCWVjaG8gPiYyICJjYW5ub3QgdGVzdCwgcGlkICckeCcgbm90IG51bWVyaWMiCgkJCWVjaG8gPiYyIHJlcG9ydCB0aGlzIHdpdGggYXMgbWFueSBkZXRhaWxzIGFzIHBvc3NpYmxlCgkJCWV4aXQgMQoJCWZpCgkJW1sgJHggPSBbMC05XVswLTldWzAtOV0qIF1dICYmIGJyZWFrCglkb25lCgl5PSR7eCM/fQoJdD0kITsgW1sgJHQgPSAkeCBdXTsgZWNobyA1ICQ/IC4KCXQ9JHshI307IFtbICR0ID0gJHggXV07IGVjaG8gNiAkPyAuCgl0PSR7ISNbMC05XX07IFtbICR0ID0gJHkgXV07IGVjaG8gNyAkPyAuCgl0PSR7IS1mb299OyBbWyAkdCA9ICR4IF1dOyBlY2hvIDggJD8gLgoJdD0keyE/YmFyfTsgW1sgJHQgPSAkeCBdXTsgZWNobyA5ICQ/IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSAuCgkyIC4KCTMgLgoJNCBmb28gLgoJNSAwIC4KCTYgMCAuCgk3IDAgLgoJOCAwIC4KCTkgMCAuCi0tLQpuYW1lOiBleHBhbmQtbnVtYmVyLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHBvc2l0aW9uYWwgYXJndW1lbnRzIGRvIG5vdCBvdmVyZmxvdwpzdGRpbjoKCWVjaG8gIjEgJHsxMjM0NTY3ODkwMTIzNDU2Nzg5MH0gLiIKZXhwZWN0ZWQtc3Rkb3V0OgoJMSAgLgotLS0KbmFtZTogZXhwYW5kLXNsYXNoZXMtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2lkZSBlZmZlY3RzIGluIHN1YnN0cmluZyByZXBsYWNlbWVudCBhcmUgaGFuZGxlZCBjb3JyZWN0bHkKc3RkaW46Cglmb289bjFuMW4xbjJuMwoJaT0yCgluPTEKCWVjaG8gMSAke2Zvby8vbiQoKG4rKykpL1skKCgrK2kpKV19IC4KCWVjaG8gMiAkbiAsICRpIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSBbM11bM11bM11uMm4zIC4KCTIgMiAsIDMgLgotLS0KbmFtZTogZXhwYW5kLXNsYXNoZXMtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2lkZSBlZmZlY3RzIGluIHN1YnN0cmluZyByZXBsYWNlbWVudCBhcmUgaGFuZGxlZCBjb3JyZWN0bHkKc3RkaW46Cglmb289bjFuMW4xbjJuMwoJaT0yCgluPTEKCWVjaG8gMSAke2Zvb0AvbiQoKG4rKykpL1skKCgrK2kpKV19IC4KCWVjaG8gMiAkbiAsICRpIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSBbM11uMW4xWzRdWzVdIC4KCTIgNSAsIDUgLgotLS0KbmFtZTogZXhwYW5kLXNsYXNoZXMtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgd2UgY2FuIGFjY2VzcyB0aGUgcmVwbGFjZWQgc3RyaW5nCnN0ZGluOgoJZm9vPW4xbjFuMW4ybjMKCWVjaG8gMSAke2Zvb0AvblsxMl0vWyRLU0hfTUFUQ0hdfSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgW24xXVtuMV1bbjFdW24yXW4zIC4KLS0tCm5hbWU6IGVnbG9iLWJhZC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBnbG9iYmluZyBpc24ndCBkb25lIHdoZW4gZ2xvYiBoYXMgc3ludGF4IGVycm9yCmNhdGVnb3J5OiAhb3M6Y3lnd2luLCFvczptaWRpcGl4LCFvczptc3lzLCFvczpvczIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkAoYVtifCljXWZvbyIKc3RkaW46CgllY2hvIEAoYVtifCljXSoKZXhwZWN0ZWQtc3Rkb3V0OgoJQChhW2J8KWNdKgotLS0KbmFtZTogZWdsb2ItYmFkLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGdsb2JiaW5nIGlzbid0IGRvbmUgd2hlbiBnbG9iIGhhcyBzeW50YXggZXJyb3IKCShBVCZUIGtzaCBmYWlscyB0aGlzIHRlc3QpCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmN4IgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjeiIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImJiYyIKc3RkaW46CgllY2hvIFthKihdKil6CmV4cGVjdGVkLXN0ZG91dDoKCVthKihdKil6Ci0tLQpuYW1lOiBlZ2xvYi1pbmZpbml0ZS1wbHVzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaGVsbCBkb2Vzbid0IGdvIGludG8gaW5maW5pdGUgbG9vcCBleHBhbmRpbmcgKyguLi4pCglleHByZXNzaW9ucy4KZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiYyIKdGltZS1saW1pdDogMwpzdGRpbjoKCWVjaG8gKygpYwoJZWNobyArKCl4CgllY2hvICsoKiljCgllY2hvICsoKil4CmV4cGVjdGVkLXN0ZG91dDoKCSsoKWMKCSsoKXgKCWFiYwoJKygqKXgKLS0tCm5hbWU6IGVnbG9iLXN1YnN0LTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGVnbG9iYmluZyBpc24ndCBkb25lIG9uIHN1YnN0aXR1dGlvbiByZXN1bHRzCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmMiCnN0ZGluOgoJeD0nQCgqKScKCWVjaG8gJHgKZXhwZWN0ZWQtc3Rkb3V0OgoJQCgqKQotLS0KbmFtZTogZWdsb2Itbm9tYXRjaC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgcGF0dGVybiBkb2Vzbid0IG1hdGNoCnN0ZGluOgoJZWNobyAxOiBuby1maWxlKyhhfGIpc3R1ZmYKCWVjaG8gMjogbm8tZmlsZSsoYSooYyl8YilzdHVmZgoJZWNobyAzOiBuby1maWxlKygoKChjKSkpfGIpc3R1ZmYKZXhwZWN0ZWQtc3Rkb3V0OgoJMTogbm8tZmlsZSsoYXxiKXN0dWZmCgkyOiBuby1maWxlKyhhKihjKXxiKXN0dWZmCgkzOiBuby1maWxlKygoKChjKSkpfGIpc3R1ZmYKLS0tCm5hbWU6IGVnbG9iLW1hdGNoLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBwYXR0ZXJuIG1hdGNoZXMgY29ycmVjdGx5CmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmQiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhY2QiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmFjIgpzdGRpbjoKCWVjaG8gMTogYSsoYnxjKWQKCWVjaG8gMjogYSEoQChifEIpKWQKCWVjaG8gMzogKihhKGJ8YykpCQkjICguLi58Li4uKSBjYW4gYmUgdXNlZCB3aXRoaW4gWCguLikKCWVjaG8gNDogYVtiKihmb298YmFyKV1kCQkjIHBhdHRlcm5zIG5vdCBzcGVjaWFsIGluc2lkZSBbLi4uXQpleHBlY3RlZC1zdGRvdXQ6CgkxOiBhYmQgYWNkCgkyOiBhY2QKCTM6IGFiYWMKCTQ6IGFiZAotLS0KbmFtZTogZWdsb2ItY2FzZS0xCmRlc2NyaXB0aW9uOgoJU2ltcGxlIG5lZ2F0aW9uIHRlc3RzCnN0ZGluOgoJY2FzZSBmb28gaW4gIShmb298YmFyKSkgZWNobyB5ZXM7OyAqKSBlY2hvIG5vOzsgZXNhYwoJY2FzZSBiYXIgaW4gIShmb298YmFyKSkgZWNobyB5ZXM7OyAqKSBlY2hvIG5vOzsgZXNhYwpleHBlY3RlZC1zdGRvdXQ6CglubwoJbm8KLS0tCm5hbWU6IGVnbG9iLWNhc2UtMgpkZXNjcmlwdGlvbjoKCVNpbXBsZSBrbGVlbmUgdGVzdHMKc3RkaW46CgljYXNlIGZvbyBpbiAqKGF8YlspKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCgljYXNlIGZvbyBpbiAqKGF8YlspfGYqKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCgljYXNlICcqKGF8YlspJyBpbiAqKGF8YlspKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCgljYXNlICdhYWJbYlthYlthJyBpbiAqKGF8YlspKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCmV4cGVjdGVkLXN0ZG91dDoKCW5vCgl5ZXMKCW5vCgl5ZXMKLS0tCm5hbWU6IGVnbG9iLXRyaW0tMQpkZXNjcmlwdGlvbjoKCUVnbG9iYmluZyBpbiB0cmltIGV4cHJlc3Npb25zLi4uCgkoQVQmVCBrc2ggZmFpbHMgdGhpcyAtIGRvY3Mgc2F5ICMgbWF0Y2hlcyBzaG9ydGVzdCBzdHJpbmcsICMjIG1hdGNoZXMKCWxvbmdlc3QuLi4pCnN0ZGluOgoJeD1hYmNkZWYKCWVjaG8gMTogJHt4I2F8YWJjfQoJZWNobyAyOiAke3gjI2F8YWJjfQoJZWNobyAzOiAke3glZGVmfGZ9CgllY2hvIDQ6ICR7eCUlZnxkZWZ9CmV4cGVjdGVkLXN0ZG91dDoKCTE6IGJjZGVmCgkyOiBkZWYKCTM6IGFiY2RlCgk0OiBhYmMKLS0tCm5hbWU6IGVnbG9iLXRyaW0tMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGVnbG9iYmluZyB3b3JrcyBpbiB0cmltcy4uLgpzdGRpbjoKCXg9YWJjZGVmCgllY2hvIDE6ICR7eCMqKGF8YiljZH0KCWVjaG8gMjogIiR7eCMqKGF8YiljZH0iCgllY2hvIDM6ICR7eCMiKihhfGIpY2QifQoJZWNobyA0OiAke3gjYShifGMpfQpleHBlY3RlZC1zdGRvdXQ6CgkxOiBlZgoJMjogZWYKCTM6IGFiY2RlZgoJNDogY2RlZgotLS0KbmFtZTogZWdsb2ItdHJpbS0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZWdsb2JiaW5nIHdvcmtzIGluIHRyaW1zLCBmb3IgS29ybiBTaGVsbAoJRW5zdXJlIGVnbG9iYmluZyBkb2VzIG5vdCB3b3JrIGZvciByZWR1Y2VkLWZlYXR1cmUgL2Jpbi9zaApzdGRpbjoKCXNldCArbyBzaAoJeD1mb29iYXIKCXk9Zm9vYmF6Cgl6PWZvb2JhXD8KCWVjaG8gIjwke3glYmFyfGJhen0sJHt5JWJhcnxiYXp9LCR7eiVcP30+IgoJZWNobyAiPCR7eCViYShyfHopfSwke3klYmEocnx6KX0+IgoJc2V0IC1vIHNoCgllY2hvICI8JHt4JWJhcnxiYXp9LCR7eSViYXJ8YmF6fSwke3olXD99PiIKCXo9J2ZvbyhiYXInCgllY2hvICI8JHt6JSgqfT4iCmV4cGVjdGVkLXN0ZG91dDoKCTxmb28sZm9vLGZvb2JhPgoJPGZvbyxmb28+Cgk8Zm9vYmFyLGZvb2Jheixmb29iYT4KCTxmb28+Ci0tLQpuYW1lOiBlZ2xvYi1zdWJzdHJwbC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZWdsb2JiaW5nIHdvcmtzIGluIHN1YnN0cy4uLiBhbmQgdGhleSB3b3JrIGF0IGFsbApzdGRpbjoKCVtbIC1uICRCQVNIX1ZFUlNJT04gXV0gJiYgc2hvcHQgLXMgZXh0Z2xvYgoJeD0xMjIyMzIxX2FiL2NkZV9iL2NfMTIyMQoJeT14eXoKCWVjaG8gMTogJHt4LzJ9IC4gJHt4L30KCWVjaG8gMjogJHt4Ly8yfQoJZWNobyAzOiAke3gvKygyKX0KCWVjaG8gNDogJHt4Ly8rKDIpfQoJZWNobyA1OiAke3gvMi80fQoJZWNobyA2OiAke3gvLzIvNH0KCWVjaG8gNzogJHt4LysoMikvNH0KCWVjaG8gODogJHt4Ly8rKDIpLzR9CgllY2hvIDk6ICR7eC9iL2MvZS9mfQoJZWNobyAxMDogJHt4L2JcL2MvZS9mfQoJZWNobyAxMTogJHt4L2JcL2MvZVwvZn0KCWVjaG8gMTI6ICR7eC9iXC9jL2VcXC9mfQoJZWNobyAxMzogJHt4L2JcXC9jL2VcXC9mfQoJZWNobyAxNDogJHt4Ly9iL2MvZS9mfQoJZWNobyAxNTogJHt4Ly9iXC9jL2UvZn0KCWVjaG8gMTY6ICR7eC8vYlwvYy9lXC9mfQoJZWNobyAxNzogJHt4Ly9iXC9jL2VcXC9mfQoJZWNobyAxODogJHt4Ly9iXFwvYy9lXFwvZn0KCWVjaG8gMTk6ICR7eC9iXC8qXC9jL3h9CgllY2hvIDIwOiAke3gvXC8vLn0KCWVjaG8gMjE6ICR7eC8vXC8vLn0KCWVjaG8gMjI6ICR7eC8vLy59CgllY2hvIDIzOiAke3gvIzEvOX0KCWVjaG8gMjQ6ICR7eC8vIzEvOX0KCWVjaG8gMjU6ICR7eC8lMS85fQoJZWNobyAyNjogJHt4Ly8lMS85fQoJZWNobyAyNzogJHt4Ly9cJTEvOX0KCWVjaG8gMjg6ICR7eC8vXFwlMS85fQoJZWNobyAyOTogJHt4Ly9cYS85fQoJZWNobyAzMDogJHt4Ly9cXGEvOX0KCWVjaG8gMzE6ICR7eC8yLyR5fQpleHBlY3RlZC1zdGRvdXQ6CgkxOiAxMjIzMjFfYWIvY2RlX2IvY18xMjIxIC4gMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjEKCTI6IDEzMV9hYi9jZGVfYi9jXzExCgkzOiAxMzIxX2FiL2NkZV9iL2NfMTIyMQoJNDogMTMxX2FiL2NkZV9iL2NfMTEKCTU6IDE0MjIzMjFfYWIvY2RlX2IvY18xMjIxCgk2OiAxNDQ0MzQxX2FiL2NkZV9iL2NfMTQ0MQoJNzogMTQzMjFfYWIvY2RlX2IvY18xMjIxCgk4OiAxNDM0MV9hYi9jZGVfYi9jXzE0MQoJOTogMTIyMjMyMV9hYy9lL2YvY2RlX2IvY18xMjIxCgkxMDogMTIyMjMyMV9hZS9mZGVfYi9jXzEyMjEKCTExOiAxMjIyMzIxX2FlL2ZkZV9iL2NfMTIyMQoJMTI6IDEyMjIzMjFfYWVcL2ZkZV9iL2NfMTIyMQoJMTM6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgkxNDogMTIyMjMyMV9hYy9lL2YvY2RlX2MvZS9mL2NfMTIyMQoJMTU6IDEyMjIzMjFfYWUvZmRlX2UvZl8xMjIxCgkxNjogMTIyMjMyMV9hZS9mZGVfZS9mXzEyMjEKCTE3OiAxMjIyMzIxX2FlXC9mZGVfZVwvZl8xMjIxCgkxODogMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjEKCTE5OiAxMjIyMzIxX2F4XzEyMjEKCTIwOiAxMjIyMzIxX2FiLmNkZV9iL2NfMTIyMQoJMjE6IDEyMjIzMjFfYWIuY2RlX2IuY18xMjIxCgkyMjogMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjEKCTIzOiA5MjIyMzIxX2FiL2NkZV9iL2NfMTIyMQoJMjQ6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgkyNTogMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjkKCTI2OiAxMjIyMzIxX2FiL2NkZV9iL2NfMTIyMQoJMjc6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgkyODogMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjEKCTI5OiAxMjIyMzIxXzliL2NkZV9iL2NfMTIyMQoJMzA6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgkzMTogMXh5ejIyMzIxX2FiL2NkZV9iL2NfMTIyMQotLS0KbmFtZTogZWdsb2Itc3Vic3RycGwtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGFuY2hvcmVkIHN1YnN0cmluZyByZXBsYWNlbWVudCB3b3JrcywgY29ybmVyIGNhc2VzCnN0ZGluOgoJZm9vPTEyMwoJZWNobyAxOiAke2Zvby8jL3h9CgllY2hvIDI6ICR7Zm9vLyUveH0KCWVjaG8gMzogJHtmb28vIy99CgllY2hvIDQ6ICR7Zm9vLyN9CgllY2hvIDU6ICR7Zm9vLyUvfQoJZWNobyA2OiAke2Zvby8lfQpleHBlY3RlZC1zdGRvdXQ6CgkxOiB4MTIzCgkyOiAxMjN4CgkzOiAxMjMKCTQ6IDEyMwoJNTogMTIzCgk2OiAxMjMKLS0tCm5hbWU6IGVnbG9iLXN1YnN0cnBsLTNhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3Vic3RyaW5nIHJlcGxhY2VtZW50IHdvcmtzIHdpdGggdmFyaWFibGVzIGFuZCBzbGFzaGVzLCB0b28Kc3RkaW46CglIT01FPS9ldGMKCXBmeD0vaG9tZS91c2VyCgl3ZD0vaG9tZS91c2VyL3RtcAoJZWNobyAiJHt3ZC8jJHBmeC9+fSIKCWVjaG8gIiR7d2QvI1wkcGZ4L359IgoJZWNobyAiJHt3ZC8jIiRwZngiL359IgoJZWNobyAiJHt3ZC8jJyRwZngnL359IgoJZWNobyAiJHt3ZC8jIlwkcGZ4Ii9+fSIKCWVjaG8gIiR7d2QvIydcJHBmeCcvfn0iCmV4cGVjdGVkLXN0ZG91dDoKCS9ldGMvdG1wCgkvaG9tZS91c2VyL3RtcAoJL2V0Yy90bXAKCS9ob21lL3VzZXIvdG1wCgkvaG9tZS91c2VyL3RtcAoJL2hvbWUvdXNlci90bXAKLS0tCm5hbWU6IGVnbG9iLXN1YnN0cnBsLTNiCmRlc2NyaXB0aW9uOgoJTW9yZSBvZiB0aGlzLCBiYXNoIGZhaWxzIGl0IChiYXNoNCBwYXNzZXMpCnN0ZGluOgoJSE9NRT0vZXRjCglwZng9L2hvbWUvdXNlcgoJd2Q9L2hvbWUvdXNlci90bXAKCWVjaG8gIiR7d2QvIyQoZWNobyAvaG9tZS91c2VyKS9+fSIKCWVjaG8gIiR7d2QvIyIkKGVjaG8gL2hvbWUvdXNlcikiL359IgoJZWNobyAiJHt3ZC8jJyQoZWNobyAvaG9tZS91c2VyKScvfn0iCmV4cGVjdGVkLXN0ZG91dDoKCS9ldGMvdG1wCgkvZXRjL3RtcAoJL2hvbWUvdXNlci90bXAKLS0tCm5hbWU6IGVnbG9iLXN1YnN0cnBsLTNjCmRlc2NyaXB0aW9uOgoJRXZlbiBtb3JlIHdlaXJkIGNhc2VzCnN0ZGluOgoJSE9NRT0vZXRjCglwZng9L2hvbWUvdXNlcgoJd2Q9JyRwZngvdG1wJwoJZWNobyAxOiAke3dkLyMkcGZ4L359CgllY2hvIDI6ICR7d2QvI1wkcGZ4L359CgllY2hvIDM6ICR7d2QvIyIkcGZ4Ii9+fQoJZWNobyA0OiAke3dkLyMnJHBmeCcvfn0KCWVjaG8gNTogJHt3ZC8jIlwkcGZ4Ii9+fQoJZWNobyA2OiAke3dkLyMnXCRwZngnL359Cgl0cz0nYS9iYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApJwoJdHA9YS9iCgl0cj1jL2QKCVtbIC1uICRCQVNIX1ZFUlNJT04gXV0gJiYgc2hvcHQgLXMgZXh0Z2xvYgoJZWNobyA3OiAke3RzL2FcL2IvJHRyfQoJZWNobyA4OiAke3RzL2FcL2IvXCR0cn0KCWVjaG8gOTogJHt0cy8kdHAvJHRyfQoJZWNobyAxMDogJHt0cy9cJHRwLyR0cn0KCWVjaG8gMTE6ICR7dHMvXFwkdHAvJHRyfQoJZWNobyAxMjogJHt0cy8kdHAvYy9kfQoJZWNobyAxMzogJHt0cy8kdHAvY1wvZH0KCWVjaG8gMTQ6ICR7dHMvJHRwL2NcXC9kfQoJZWNobyAxNTogJHt0cy8rKGFcL2IpLyR0cn0KCWVjaG8gMTY6ICR7dHMvKyhhXC9iKS9cJHRyfQoJZWNobyAxNzogJHt0cy8rKCR0cCkvJHRyfQoJZWNobyAxODogJHt0cy8rKCR0cCkvYy9kfQoJZWNobyAxOTogJHt0cy8rKCR0cCkvY1wvZH0KCWVjaG8gMjA6ICR7dHMvL2FcL2IvJHRyfQoJZWNobyAyMTogJHt0cy8vYVwvYi9cJHRyfQoJZWNobyAyMjogJHt0cy8vJHRwLyR0cn0KCWVjaG8gMjM6ICR7dHMvLyR0cC9jL2R9CgllY2hvIDI0OiAke3RzLy8kdHAvY1wvZH0KCWVjaG8gMjU6ICR7dHMvLysoYVwvYikvJHRyfQoJZWNobyAyNjogJHt0cy8vKyhhXC9iKS9cJHRyfQoJZWNobyAyNzogJHt0cy8vKygkdHApLyR0cn0KCWVjaG8gMjg6ICR7dHMvLysoJHRwKS9jL2R9CgllY2hvIDI5OiAke3RzLy8rKCR0cCkvY1wvZH0KCXRwPSIrKCR0cCkiCgllY2hvIDMwOiAke3RzLyR0cC8kdHJ9CgllY2hvIDMxOiAke3RzLy8kdHAvJHRyfQpleHBlY3RlZC1zdGRvdXQ6CgkxOiAkcGZ4L3RtcAoJMjogL2V0Yy90bXAKCTM6ICRwZngvdG1wCgk0OiAvZXRjL3RtcAoJNTogL2V0Yy90bXAKCTY6ICRwZngvdG1wCgk3OiBjL2RhL2IkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKCTg6ICR0cmEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJOTogYy9kYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxMDogYS9iYS9iYy9kJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxMTogYS9iYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxMjogYy9kYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxMzogYy9kYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxNDogY1wvZGEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTU6IGMvZCR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTY6ICR0ciR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTc6IGMvZCR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTg6IGMvZCR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTk6IGMvZCR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMjA6IGMvZGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjE6ICR0ciR0ciR0cCR0cF8kdHIkdHBfKigkdHIpXyooJHRwKQoJMjI6IGMvZGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjM6IGMvZGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjQ6IGMvZGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjU6IGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjY6ICR0ciR0cCR0cF8kdHIkdHBfKigkdHIpXyooJHRwKQoJMjc6IGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjg6IGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjk6IGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMzA6IGEvYmEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMzE6IGEvYmEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQojCVRoaXMgaXMgd2hhdCBHTlUgYmFzaCBkb2VzOgojCTMwOiBjL2QkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKIwkzMTogYy9kJHRwJHRwX2MvZCR0cF8qKGMvZClfKigkdHApCi0tLQpuYW1lOiBlZ2xvYi11dGY4LTEKZGVzY3JpcHRpb246CglVVEYtOCBtb2RlIGRpZmZlcmVuY2VzIGZvciBlZ2xvYmJpbmcKY2F0ZWdvcnk6ICFzaGVsbDplYmNkaWMteWVzCnN0ZGluOgoJcz1ibMO2ZAoJc2V0ICtVCglwcmludCAxOiAke3MlPz8/fSAuCglwcmludCAyOiAke3MvYj8/P2QveH0gLgoJc2V0IC1VCglwcmludCAzOiAke3MlPz8/fSAuCglwcmludCA0OiAke3MvYj8/ZC94fSAuCgl4PW7DtgoJcHJpbnQgNTogJHt4JT99ICR7eCUlP30gLgoJeD3DpGgKCXByaW50IDY6ICR7eCM/fSAke3gjIz99IC4KCXg9gYIKCXByaW50IDc6ICR7eCU/fSAke3glJT99IC4KCXg9bcOkgAoJcHJpbnQgODogJHt4JT99ICR7eCUlP30gLgoJeD3kvZUKCXByaW50IDk6ICR7eCU/fSAke3glJT99IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMTogYmwgLgoJMjogeCAuCgkzOiBiIC4KCTQ6IHggLgoJNTogbiBuIC4KCTY6IGggaCAuCgk3OiCBIIEgLgoJODogbcOkIG3DpCAuCgk5OiAuCi0tLQpuYW1lOiBnbG9iLWJhZC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBbIG1hdGNoZXMgaXRzZWxmIGlmIGl0J3Mgbm90IGEgdmFsaWQgYnJhY2tldCBleHByCglidXQgZG9lcyBub3QgcHJldmVudCBnbG9iYmluZywgd2hpbGUgYmFja3NsYXNoLWVzY2FwaW5nIGRvZXMKZmlsZS1zZXR1cDogZGlyIDc1NSAiW3giCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJbeC9mb28iCnN0ZGluOgoJZWNobyBbKgoJZWNobyAqW3gKCWVjaG8gW3gvKgoJOj4nYWJbeCcKCTo+J2FbYS16XVt4JwoJZWNobyBhW2Etel1bKgoJZWNobyBhW2Etel0qCgllY2hvIGFbYVwtel0qCmV4cGVjdGVkLXN0ZG91dDoKCVt4CglbeAoJW3gvZm9vCglhYlt4CglhYlt4CglhW2Etel0qCi0tLQpuYW1lOiBnbG9iLWJhZC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzeW1ib2xpYyBsaW5rcyBhcmVuJ3Qgc3RhdCgpJ2QKIyBicmVha3Mgb24gRGVsbCBVTklYIDQuMCBSMi4yIChTVlI0KSB3aGVyZSB1bmxpbmsgYWxzbyBmYWlscwojIGJyZWFrcyBvbiBGcmVlTWlOVCAoY2Fubm90IHVubGluayBkYW5nbGluZyBzeW1saW5rcykKIyBicmVha3Mgb24gTVNZUywgT1MvMiAoZG8gbm90IHN1cHBvcnQgc3ltbGlua3MpCmNhdGVnb3J5OiAhb3M6bWludCwhb3M6bXN5cywhb3M6c3ZyNC4wLCFub3N5bWxpbmsKZmlsZS1zZXR1cDogZGlyIDc1NSAiZGlyIgpmaWxlLXNldHVwOiBzeW1saW5rIDY0NCAiZGlyL2FiYyIKCW5vbi1leGlzdGVudC1maWxlCnN0ZGluOgoJZWNobyBkKi8qCgllY2hvIGQqL2FiYwpleHBlY3RlZC1zdGRvdXQ6CglkaXIvYWJjCglkaXIvYWJjCi0tLQpuYW1lOiBnbG9iLWJhZC0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgc2xhc2ggaXMgcGFyc2VkIGJlZm9yZSB0aGUgZ2xvYgpzdGRpbjoKCW1rZGlyIGEgJ2FbYicKCShjZCAnYVtiJzsgZWNobyBvayA+J2NdZCcpCgllY2hvIG5vayA+YWJkCgllY2hvIGZhaWwgPmEvZAoJY2F0IGFbYi9jXWQKZXhwZWN0ZWQtc3Rkb3V0OgoJb2sKLS0tCm5hbWU6IGdsb2ItcmFuZ2UtMQpkZXNjcmlwdGlvbjoKCVRlc3QgcmFuZ2UgbWF0Y2hpbmcKZmlsZS1zZXR1cDogZmlsZSA2NDQgIi5iYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImJiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImNiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIi1iYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIiFiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIl5iYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIitiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIixiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIjBiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIjFiYyIKc3RkaW46CgllY2hvIFthYi1dKgoJZWNobyBbLWFiXSoKCWVjaG8gWyEtYWJdKgoJZWNobyBbIWFiXSoKCWVjaG8gW11hYl0qCgllY2hvIFteYWJdKgoJZWNobyBbKy0tXSoKCWVjaG8gWy0tMV0qCgpleHBlY3RlZC1zdGRvdXQ6CgktYmMgYWJjIGJiYwoJLWJjIGFiYyBiYmMKCSFiYyArYmMgLGJjIDBiYyAxYmMgXmJjIGNiYwoJIWJjICtiYyAsYmMgLWJjIDBiYyAxYmMgXmJjIGNiYwoJYWJjIGJiYwoJXmJjIGFiYyBiYmMKCStiYyAsYmMgLWJjCgktYmMgMGJjIDFiYwotLS0KbmFtZTogZ2xvYi1yYW5nZS0yCmRlc2NyaXB0aW9uOgoJVGVzdCByYW5nZSBtYXRjaGluZwoJKEFUJlQga3NoIGZhaWxzIHRoaXM7IFBPU0lYIHNheXMgaW52YWxpZCkKZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiYyIKc3RkaW46CgllY2hvIFthLS1dKgpleHBlY3RlZC1zdGRvdXQ6CglbYS0tXSoKLS0tCm5hbWU6IGdsb2ItcmFuZ2UtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZ2xvYmJpbmcgbWF0Y2hlcyB0aGUgcmlnaHQgdGhpbmdzLi4uCiMgYnJlYWtzIG9uIE1hYyBPU1ggKEhGUysgbm9uLXN0YW5kYXJkIFVURi04IGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uKQojIGJyZWFrcyBvbiBDeWd3aW4gMS43IChmaWxlcyBhcmUgbm93IFVURi0xNiBvciBzb21ldGhpbmcpCiMgYnJlYWtzIG9uIFFOWCA2LjQuMSAoc2F5cyBSVCkKY2F0ZWdvcnk6ICFvczpjeWd3aW4sIW9zOm1pZGlwaXgsIW9zOmRhcndpbiwhb3M6bXN5cywhb3M6bnRvLCFvczpvczIsIW9zOm9zMzkwCm5lZWQtcGFzczogbm8KZmlsZS1zZXR1cDogZmlsZSA2NDQgImHCYyIKc3RkaW46CgllY2hvIGFbwS3aXSoKZXhwZWN0ZWQtc3Rkb3V0OgoJYcJjCi0tLQpuYW1lOiBnbG9iLXJhbmdlLTQKZGVzY3JpcHRpb246CglSZXN1bHRzIHVuc3BlY2lmaWVkIGFjY29yZGluZyB0byBQT1NJWApmaWxlLXNldHVwOiBmaWxlIDY0NCAiLmJjIgpzdGRpbjoKCWVjaG8gW2EuXSoKZXhwZWN0ZWQtc3Rkb3V0OgoJW2EuXSoKLS0tCm5hbWU6IGdsb2ItcmFuZ2UtNQpkZXNjcmlwdGlvbjoKCVJlc3VsdHMgdW5zcGVjaWZpZWQgYWNjb3JkaW5nIHRvIFBPU0lYCgkoQVQmVCBrc2ggdHJlYXRzIHRoaXMgbGlrZSBbYS1jYy1lXSopCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJiYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJjYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJkYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJlYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICItYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJAYmMiCnN0ZGluOgoJZWNobyBbYS1jLWVdKgoJZWNobyBbYS0tQF0qCmV4cGVjdGVkLXN0ZG91dDoKCS1iYyBhYmMgYmJjIGNiYyBlYmMKCUBiYwotLS0KbmFtZTogZ2xvYi1yYW5nZS02CmRlc2NyaXB0aW9uOgoJa3NoOTMgZmFpbHMgdGhpcyBidXQgUE9TSVggcHJvYmFibHkgZGVtYW5kcyBpdApmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjIgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiY2JjIgpzdGRpbjoKCWVjaG8gKmIqCglbICcqYionID0gKmIqIF0gJiYgZWNobyB5ZXA7IGVjaG8gJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJYWJjIGNiYwoJMgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjogLy4qLwotLS0KbmFtZTogZ2xvYi13b3JkLTEKZGVzY3JpcHRpb246CglDaGVjayBCU0Qgd29yZCBib3VuZGFyeSBtYXRjaGVzCnN0ZGluOgoJdCgpIHsgW1sgJDEgPSAqW1s6XDw6XV1iYXJbWzpcPjpdXSogXV07IGVjaG8gPSQ/OyB9Cgl0ICdmb28gYmFyIGJheicKCXQgJ2Zvb2JhciBiYXonCgl0ICdmb28gYmFyYmF6JwoJdCAnYmFyJwoJdCAnX2JhcicKCXQgJ2Jhcl8nCmV4cGVjdGVkLXN0ZG91dDoKCT0wCgk9MQoJPTEKCT0wCgk9MQoJPTEKLS0tCm5hbWU6IGdsb2ItdHJpbS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYWdhaW5zdCBhIHJlZ3Jlc3Npb24gZnJvbSBmaXhpbmcgSUZTLXN1YnN0LTIKc3RkaW46Cgl4PScjZm9vJwoJcHJpbnQgLXIgImJlZm9yZT0nJHgnIgoJeD0ke3glJSMqfQoJcHJpbnQgLXIgImFmdGVyID0nJHgnIgpleHBlY3RlZC1zdGRvdXQ6CgliZWZvcmU9JyNmb28nCglhZnRlciA9JycKLS0tCm5hbWU6IGhlcmVkb2MtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIG9yZGVyaW5nL2NvbnRlbnQgb2YgcmVkdW5kZW50IGhlcmUgZG9jdW1lbnRzLgpzdGRpbjoKCWNhdCA8PCBFT0YxIDw8IEVPRjIKCWhpCglFT0YxCgl0aGVyZQoJRU9GMgpleHBlY3RlZC1zdGRvdXQ6Cgl0aGVyZQotLS0KbmFtZTogaGVyZWRvYy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcXVvdGVkIGhlcmUtZG9jIGlzIHByb3RlY3RlZC4Kc3RkaW46CglhPWZvbwoJY2F0IDw8ICdFT0YnCgloaVwKCXRoZXJlJGEKCXN0dWZmCglFT1wKCUYKCUVPRgpleHBlY3RlZC1zdGRvdXQ6CgloaVwKCXRoZXJlJGEKCXN0dWZmCglFT1wKCUYKLS0tCm5hbWU6IGhlcmVkb2MtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgbmV3bGluZSBpc24ndCBuZWVkZWQgYWZ0ZXIgaGVyZWRvYy1kZWxpbWl0ZXIgbWFya2VyLgpzdGRpbjogIQoJY2F0IDw8IEVPRgoJaGkKCXRoZXJlCglFT0YKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCXRoZXJlCi0tLQpuYW1lOiBoZXJlZG9jLTRhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbiBlcnJvciBvY2N1cnMgaWYgdGhlIGhlcmVkb2MtZGVsaW1pdGVyIGlzIG1pc3NpbmcuCnN0ZGluOiAhCgljYXQgPDwgRU9GCgloaQoJdGhlcmUKZXhwZWN0ZWQtZXhpdDogZSA+IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC8uKi8KLS0tCm5hbWU6IGhlcmVkb2MtNGFuCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbiBlcnJvciBvY2N1cnMgaWYgdGhlIGhlcmVkb2MtZGVsaW1pdGVyIGlzIG1pc3NpbmcuCmFyZ3VtZW50czogIS1uIQpzdGRpbjogIQoJY2F0IDw8IEVPRgoJaGkKCXRoZXJlCmV4cGVjdGVkLWV4aXQ6IGUgPiAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLiovCi0tLQpuYW1lOiBoZXJlZG9jLTRiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbiBlcnJvciBvY2N1cnMgaWYgdGhlIGhlcmVkb2MgaXMgbWlzc2luZy4Kc3RkaW46ICEKCWNhdCA8PCBFT0YKZXhwZWN0ZWQtZXhpdDogZSA+IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC8uKi8KLS0tCm5hbWU6IGhlcmVkb2MtNGJuCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbiBlcnJvciBvY2N1cnMgaWYgdGhlIGhlcmVkb2MgaXMgbWlzc2luZy4KYXJndW1lbnRzOiAhLW4hCnN0ZGluOiAhCgljYXQgPDwgRU9GCmV4cGVjdGVkLWV4aXQ6IGUgPiAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLiovCi0tLQpuYW1lOiBoZXJlZG9jLTUKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGJhY2tzbGFzaCBxdW90ZXMgYSAkLCBgIGFuZCBcIGFuZCBraWxscyBhIFxuZXdsaW5lCnN0ZGluOgoJYT1CQUQKCWI9b2sKCWNhdCA8PCBFT0YKCWhcJHthfWkKCWhcXCR7Yn1pCgl0aFxgZWNobyBub3QtcnVuXGBlcmUKCXRoXFxgZWNobyBpcy1ydW5gZXJlCglmb2xcXGtzCgltb3JlXFwKCWxhc3QgXAoJbGluZQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWgke2F9aQoJaFxva2kKCXRoYGVjaG8gbm90LXJ1bmBlcmUKCXRoXGlzLXJ1bmVyZQoJZm9sXGtzCgltb3JlXAoJbGFzdCBsaW5lCi0tLQpuYW1lOiBoZXJlZG9jLTYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGluIGluaXRpYWwgaGVyZS1kZWxpbSB3b3JkIGRvZXNuJ3QgaW1wbHkKCWEgcXVvdGVkIGhlcmUtZG9jLgpzdGRpbjoKCWE9aQoJY2F0IDw8IEVPXAoJRgoJaCRhCgl0aGVyZQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgl0aGVyZQotLS0KbmFtZTogaGVyZWRvYy03CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBkb3VibGUgcXVvdGVkICQgZXhwcmVzc2lvbnMgaW4gaGVyZSBkZWxpbWl0ZXJzIGFyZQoJbm90IGV4cGFuZGVkIGFuZCBtYXRjaCB0aGUgZGVsaW1pdGVyLgoJUE9TSVggc2F5cyBvbmx5IHF1b3RlIHJlbW92YWwgaXMgYXBwbGllZCB0byB0aGUgZGVsaW1pdGVyLgpzdGRpbjoKCWE9YgoJY2F0IDw8ICJFJGEiCgloaQoJaCRhCgloYgoJRSRhCgllY2hvIGRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWgkYQoJaGIKCWRvbmUKLS0tCm5hbWU6IGhlcmVkb2MtOApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZG91YmxlIHF1b3RlZCBlc2NhcGVkICQgZXhwcmVzc2lvbnMgaW4gaGVyZQoJZGVsaW1pdGVycyBhcmUgbm90IGV4cGFuZGVkIGFuZCBtYXRjaCB0aGUgZGVsaW1pdGVyLgoJUE9TSVggc2F5cyBvbmx5IHF1b3RlIHJlbW92YWwgaXMgYXBwbGllZCB0byB0aGUgZGVsaW1pdGVyCgkoXCBjb3VudHMgYXMgYSBxdW90ZSkuCnN0ZGluOgoJYT1iCgljYXQgPDwgIkVcJGEiCgloaQoJaCRhCgloXCRhCgloYgoJaFxiCglFJGEKCWVjaG8gZG9uZQpleHBlY3RlZC1zdGRvdXQ6CgloaQoJaCRhCgloXCRhCgloYgoJaFxiCglkb25lCi0tLQpuYW1lOiBoZXJlZG9jLTkKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGhlcmUgc3RyaW5ncyB3b3JrLgpzdGRpbjoKCWJhcj0iYmFyCgkJYmF6IgoJdHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8Zm9vCgkiJF9fcHJvZ25hbWUiIC1jICJ0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDxmb28iCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDwiJGJhciIKCXRyIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IG5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtIDw8PCckYmFyJwoJdHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8XCRiYXIKCXRyIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IG5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtIDw8PC1mb28KCXRyIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IG5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtIDw8PCIkKGVjaG8gImZvbyBiYXIiKSIKCXRyIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IG5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtIDw8PCJBICQoZWNobyAiZm9vIGJhciIpIEIiCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDxcJGJcJGIkYmFyCglmbm9yZD00MgoJYmFyPSJiYXIKCQkgXCRmbm9yZCBiYXoiCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDwkYmFyCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDwgYmFyCgllY2hvICQodHIgciB6IDw8PCdiYXInIDI+L2Rldi9udWxsKQoJY2F0IDw8PCAiJCggIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKWFhIgoJSUZTPSQnXG4nCgl4PShhICJiIGMiKQoJdHIgYWMgMTIgPDw8ICR7eFsqXX0KCXRyIGFjIDM0IDw8PCAiJHt4WypdfSIKCXRyIGFjIDU2IDw8PCAke3hbQF19Cgl0ciBhYyA3OCA8PDwgIiR7eFtAXX0iCmV4cGVjdGVkLXN0ZG91dDoKCXNiYgoJc2JiCglvbmUKCQlvbm0KCSRvbmUKCSRvbmUKCS1zYmIKCXNiYiBvbmUKCUEgc2JiIG9uZSBCCgkkbyRvb25lCgkJb25tCglvbmUKCQkgJHNhYmVxIG9ubQoJb25lCgliYXoKCWFhCgkxCgliIDIKCTMKCWIgNAoJNSBiIDYKCTcgYiA4Ci0tLQpuYW1lOiBoZXJlZG9jLTEwCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZGlyZWN0IGhlcmUgZG9jdW1lbnQgYXNzaWdubWVudApjYXRlZ29yeTogIXNoZWxsOmViY2RpYy15ZXMKc3RkaW46Cgl4PXUKCXZhPTw8RU9GCgk9YSAkeCBceDQwPQoJRU9GCgl2Yj08PCdFT0YnCgk9YiAkeCBceDQwPQoJRU9GCglmdW5jdGlvbiBmb28gewoJCXZjPTw8LUVPRgoJCQk9YyAkeCBceDQwPQoJCUVPRgoJfQoJZm5kPSQodHlwZXNldCAtZiBmb28pCglwcmludCAtciAtLSAiJGZuZCIKCWZ1bmN0aW9uIGZvbyB7CgkJZWNobyBibHViCgl9Cglmb28KCWV2YWwgIiRmbmQiCglmb28KCSMgcmF0aGVyIG5vbnNlbnNpY2FsLCBidXTigKYKCXZkPTw8PCI9ZCAkeCBceDQwPSIKCXZlPTw8PCc9ZSAkeCBceDQwPScKCXZmPTw8PCQnPWYgJHggXHg0MD0nCgkjIG5vdyBjaGVjawoJcHJpbnQgLXIgLS0gInwgdmE9eyR2YX0gdmI9eyR2Yn0gdmM9eyR2Y30gdmQ9eyR2ZH0gdmU9eyR2ZX0gdmY9eyR2Zn0gfCIKCSMgY2hlY2sgYXBwZW5kCgl2PTw8LUVPRgoJCXZhcHAxCglFT0YKCXYrPTw8LUVPRgoJCXZhcHAyCglFT0YKCXByaW50IC1yIC0tICJ8ICR7di8vJCdcbicvXn0gfCIKZXhwZWN0ZWQtc3Rkb3V0OgoJZnVuY3Rpb24gZm9vIHsKCQl2Yz08PC1FT0YgCgk9YyAkeCBceDQwPQoJRU9GCgkKCX0gCglibHViCgl8IHZhPXs9YSB1IFx4NDA9Cgl9IHZiPXs9YiAkeCBceDQwPQoJfSB2Yz17PWMgdSBceDQwPQoJfSB2ZD17PWQgdSBceDQwPQoJfSB2ZT17PWUgJHggXHg0MD0KCX0gdmY9ez1mICR4IEA9Cgl9IHwKCXwgdmFwcDFedmFwcDJeIHwKLS0tCm5hbWU6IGhlcmVkb2MtMTAtZWJjZGljCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZGlyZWN0IGhlcmUgZG9jdW1lbnQgYXNzaWdubWVudApjYXRlZ29yeTogIXNoZWxsOmViY2RpYy1ubwpzdGRpbjoKCXg9dQoJdmE9PDxFT0YKCT1hICR4IFx4N0M9CglFT0YKCXZiPTw8J0VPRicKCT1iICR4IFx4N0M9CglFT0YKCWZ1bmN0aW9uIGZvbyB7CgkJdmM9PDwtRU9GCgkJCT1jICR4IFx4N0M9CgkJRU9GCgl9CglmbmQ9JCh0eXBlc2V0IC1mIGZvbykKCXByaW50IC1yIC0tICIkZm5kIgoJZnVuY3Rpb24gZm9vIHsKCQllY2hvIGJsdWIKCX0KCWZvbwoJZXZhbCAiJGZuZCIKCWZvbwoJIyByYXRoZXIgbm9uc2Vuc2ljYWwsIGJ1dOKApgoJdmQ9PDw8Ij1kICR4IFx4N0M9IgoJdmU9PDw8Jz1lICR4IFx4N0M9JwoJdmY9PDw8JCc9ZiAkeCBceDdDPScKCSMgbm93IGNoZWNrCglwcmludCAtciAtLSAifCB2YT17JHZhfSB2Yj17JHZifSB2Yz17JHZjfSB2ZD17JHZkfSB2ZT17JHZlfSB2Zj17JHZmfSB8IgoJIyBjaGVjayBhcHBlbmQKCXY9PDwtRU9GCgkJdmFwcDEKCUVPRgoJdis9PDwtRU9GCgkJdmFwcDIKCUVPRgoJcHJpbnQgLXIgLS0gInwgJHt2Ly8kJ1xuJy9efSB8IgpleHBlY3RlZC1zdGRvdXQ6CglmdW5jdGlvbiBmb28gewoJCXZjPTw8LUVPRiAKCT1jICR4IFx4N0M9CglFT0YKCQoJfSAKCWJsdWIKCXwgdmE9ez1hIHUgXHg3Qz0KCX0gdmI9ez1iICR4IFx4N0M9Cgl9IHZjPXs9YyB1IFx4N0M9Cgl9IHZkPXs9ZCB1IFx4N0M9Cgl9IHZlPXs9ZSAkeCBceDdDPQoJfSB2Zj17PWYgJHggQD0KCX0gfAoJfCB2YXBwMV52YXBwMl4gfAotLS0KbmFtZTogaGVyZWRvYy0xMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGhlcmUgZG9jdW1lbnRzIHdpdGggbm8gb3IgZW1wdHkgZGVsaW1pdGVyCnN0ZGluOgoJeD11Cgl2YT08PAoJPWEgJHggXHg0MD0KCTw8Cgl2Yj08PCcnCgk9YiAkeCBceDQwPQoJCglmdW5jdGlvbiBmb28gewoJCXZjPTw8LQoJCQk9YyAkeCBceDQwPQoJCTw8CgkJdmQ9PDwtJycKCQkJPWQgJHggXHg0MD0KCQoJfQoJZm5kPSQodHlwZXNldCAtZiBmb28pCglwcmludCAtciAtLSAiJGZuZCIKCWZ1bmN0aW9uIGZvbyB7CgkJZWNobyBibHViCgl9Cglmb28KCWV2YWwgIiRmbmQiCglmb28KCXByaW50IC1yIC0tICJ8IHZhPXskdmF9IHZiPXskdmJ9IHZjPXskdmN9IHZkPXskdmR9IHwiCgl4PXkKCWZvbwoJdHlwZXNldCAtZiBmb28KCXByaW50IC1yIC0tICJ8IHZjPXskdmN9IHZkPXskdmR9IHwiCgkjIGNoZWNrIGFwcGVuZAoJdj08PC0KCQl2YXBwMQoJPDwKCXYrPTw8LScnCgkJdmFwcDIKCQoJcHJpbnQgLXIgLS0gInwgJHt2Ly8kJ1xuJy9efSB8IgpleHBlY3RlZC1zdGRvdXQ6CglmdW5jdGlvbiBmb28gewoJCXZjPTw8LSAKCT1jICR4IFx4NDA9Cgk8PAoJCgkJdmQ9PDwtIiIgCgk9ZCAkeCBceDQwPQoJCgkKCX0gCglibHViCgl8IHZhPXs9YSB1IFx4NDA9Cgl9IHZiPXs9YiAkeCBceDQwPQoJfSB2Yz17PWMgdSBceDQwPQoJfSB2ZD17PWQgJHggXHg0MD0KCX0gfAoJZnVuY3Rpb24gZm9vIHsKCQl2Yz08PC0gCgk9YyAkeCBceDQwPQoJPDwKCQoJCXZkPTw8LSIiIAoJPWQgJHggXHg0MD0KCQoJCgl9IAoJfCB2Yz17PWMgeSBceDQwPQoJfSB2ZD17PWQgJHggXHg0MD0KCX0gfAoJfCB2YXBwMV52YXBwMl4gfAotLS0KbmFtZTogaGVyZWRvYy0xMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGhlcmUgZG9jdW1lbnRzIGNhbiB1c2UgJCogYW5kICRAOyBub3RlIHNoZWxscyB2YXJ5OgoJ4oCiIHBka3NoIDUuMi4xNCBhY3RzIHRoZSBzYW1lCgnigKIgZGFzaCBoYXMgMSBhbmQgMiB0aGUgc2FtZSBidXQgMyBsYWNrcyB0aGUgc3BhY2UKCeKAoiBrc2g5MywgYmFzaDQgZGlmZmVyIGluIDIgYnkgdXNpbmcgc3BhY2UgaXB2IGNvbG9uCnN0ZGluOgoJc2V0IC0tIGEgYgoJbmw9JwoJJwoJSUZTPSIgCSRubCI7IG49MQoJY2F0IDw8RU9GCgkkbiBmb28gJCogZm9vCgkkbiBiYXIgIiQqIiBiYXIKCSRuIGJheiAkQCBiYXoKCSRuIGJsYSAiJEAiIGJsYQoJRU9GCglJRlM9IjoiOyBuPTIKCWNhdCA8PEVPRgoJJG4gZm9vICQqIGZvbwoJJG4gYmFyICIkKiIgYmFyCgkkbiBiYXogJEAgYmF6CgkkbiBibGEgIiRAIiBibGEKCUVPRgoJSUZTPTsgbj0zCgljYXQgPDxFT0YKCSRuIGZvbyAkKiBmb28KCSRuIGJhciAiJCoiIGJhcgoJJG4gYmF6ICRAIGJhegoJJG4gYmxhICIkQCIgYmxhCglFT0YKZXhwZWN0ZWQtc3Rkb3V0OgoJMSBmb28gYSBiIGZvbwoJMSBiYXIgImEgYiIgYmFyCgkxIGJheiBhIGIgYmF6CgkxIGJsYSAiYSBiIiBibGEKCTIgZm9vIGE6YiBmb28KCTIgYmFyICJhOmIiIGJhcgoJMiBiYXogYTpiIGJhegoJMiBibGEgImE6YiIgYmxhCgkzIGZvbyBhIGIgZm9vCgkzIGJhciAiYSBiIiBiYXIKCTMgYmF6IGEgYiBiYXoKCTMgYmxhICJhIGIiIGJsYQotLS0KbmFtZTogaGVyZWRvYy0xNApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdXNpbmcgbXVsdGlwbGUgaGVyZSBkb2N1bWVudHMgd29ya3MKc3RkaW46Cglmb28oKSB7CgkJZWNobyAiZ290ICQoY2F0KSBvbiBzdGRpbiIKCQllY2hvICJnb3QgJChjYXQgPCY0KSBvbiBmZCM0IgoJCWVjaG8gImdvdCAkKGNhdCA8JjUpIG9uIGZkIzUiCgl9CgliYXIoKSB7CgkJZm9vIDQ8PC1hIDw8LWIgNTw8LWMKCQlmb3VyCgkJYQoJCXplcm8KCQliCgkJZml2ZQoJCWMKCX0KCXg9JCh0eXBlc2V0IC1mIGJhcikKCWV2YWwgIiR4IgoJeT0kKHR5cGVzZXQgLWYgYmFyKQoJW1sgJHggPSAiJHkiIF1dOyBlY2hvICQ/Cgl0eXBlc2V0IC1mIGJhcgoJYmFyCmV4cGVjdGVkLXN0ZG91dDoKCTAKCWJhcigpIHsKCQlcZm9vIDQ8PC1hIDw8LWIgNTw8LWMgCglmb3VyCglhCgl6ZXJvCgliCglmaXZlCgljCgkKCX0gCglnb3QgemVybyBvbiBzdGRpbgoJZ290IGZvdXIgb24gZmQjNAoJZ290IGZpdmUgb24gZmQjNQotLS0KbmFtZTogaGVyZWRvYy0xNQpkZXNjcmlwdGlvbjoKCUNoZWNrIGhpZ2gtYml0NyBzZXBhcmF0b3JzIHdvcmsKc3RkaW46Cgl1PcOkCgl0ciBhLXogQS1aIDw8LeKApgoJCW0ke3V9aAoJ4oCmCgllY2hvIG9rCmV4cGVjdGVkLXN0ZG91dDoKCU3DpEgKCW9rCi0tLQpuYW1lOiBoZXJlZG9jLWNvbXN1Yi0xCmRlc2NyaXB0aW9uOgoJVGVzdHMgZm9yIGhlcmUgZG9jdW1lbnRzIGluIENPTVNVQiwgdGFrZW4gZnJvbSBBdXN0aW4gTUwKc3RkaW46Cgl0ZXh0PSQoY2F0IDw8RU9GCgloZXJlIGlzIHRoZSB0ZXh0CglFT0YpCgllY2hvID0gJHRleHQgPQpleHBlY3RlZC1zdGRvdXQ6Cgk9IGhlcmUgaXMgdGhlIHRleHQgPQotLS0KbmFtZTogaGVyZWRvYy1jb21zdWItMgpkZXNjcmlwdGlvbjoKCVRlc3RzIGZvciBoZXJlIGRvY3VtZW50cyBpbiBDT01TVUIsIHRha2VuIGZyb20gQXVzdGluIE1MCnN0ZGluOgoJdW5iYWxhbmNlZD0kKGNhdCA8PEVPRgoJdGhpcyBwYXJlbiApIGlzIGEgcHJvYmxlbQoJRU9GKQoJZWNobyA9ICR1bmJhbGFuY2VkID0KZXhwZWN0ZWQtc3Rkb3V0OgoJPSB0aGlzIHBhcmVuICkgaXMgYSBwcm9ibGVtID0KLS0tCm5hbWU6IGhlcmVkb2MtY29tc3ViLTMKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMgaW4gQ09NU1VCLCB0YWtlbiBmcm9tIEF1c3RpbiBNTApzdGRpbjoKCWJhbGFuY2VkPSQoY2F0IDw8RU9GCgl0aGVzZSBwYXJlbnMgKCApIGFyZSBub3QgYSBwcm9ibGVtCglFT0YpCgllY2hvID0gJGJhbGFuY2VkID0KZXhwZWN0ZWQtc3Rkb3V0OgoJPSB0aGVzZSBwYXJlbnMgKCApIGFyZSBub3QgYSBwcm9ibGVtID0KLS0tCm5hbWU6IGhlcmVkb2MtY29tc3ViLTQKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMgaW4gQ09NU1VCLCB0YWtlbiBmcm9tIEF1c3RpbiBNTApzdGRpbjoKCWJhbGFuY2VkPSQoY2F0IDw8RU9GCgl0aGVzZSBwYXJlbnMgXCggKSBhcmUgYSBwcm9ibGVtCglFT0YpCgllY2hvID0gJGJhbGFuY2VkID0KZXhwZWN0ZWQtc3Rkb3V0OgoJPSB0aGVzZSBwYXJlbnMgXCggKSBhcmUgYSBwcm9ibGVtID0KLS0tCm5hbWU6IGhlcmVkb2MtY29tc3ViLTUKZGVzY3JpcHRpb246CglDaGVjayBoZXJlZG9jIGFuZCBDT01TVUIgbWl4dHVyZSBpbiBpbnB1dApzdGRpbjoKCXByZWZpeCgpIHsgc2VkIC1lICJzL14vJDE6LyI7IH0KCVhYWCgpIHsgZWNobyB4LWVuOyB9CglZWVkoKSB7IGVjaG8geS1lczsgfQoJCglwcmVmaXggQSA8PFhYWCAmJiBlY2hvICIkKHByZWZpeCBCIDw8WFhYCgllY2hvIGxpbmUgMQoJWFhYCgllY2hvIGxpbmUgMikiICYmIHByZWZpeCBDIDw8WVlZCgllY2hvIGxpbmUgMwoJWFhYCgllY2hvIGxpbmUgNCkiCgllY2hvIGxpbmUgNQoJWVlZCglYWFgKZXhwZWN0ZWQtc3Rkb3V0OgoJQTplY2hvIGxpbmUgMwoJQjplY2hvIGxpbmUgMQoJbGluZSAyCglDOmVjaG8gbGluZSA0KSIKCUM6ZWNobyBsaW5lIDUKCXgtZW4KLS0tCm5hbWU6IGhlcmVkb2MtY29tc3ViLTYKZGVzY3JpcHRpb246CglDaGVjayBoZXJlIGRvY3VtZW50cyBhbmQgaGVyZSBzdHJpbmdzIGNhbiBiZSB1c2VkCgl3aXRob3V0IGEgc3BlY2lmaWMgY29tbWFuZCwgbGlrZSAkKDzigKYpIChleHRlbnNpb24pCnN0ZGluOgoJZm9vPWJhcgoJeD0kKDw8PEVPJHtmb299RikKCWVjaG8gIjM8JHg+IgoJCXk9JCg8PC1FT0YKCQkJaGkhCgkKCQkJJGZvbykgaXMgbm90IGEgcHJvYmxlbQoJCgkKCQlFT0YpCgllY2hvICI3PCR5PiIKZXhwZWN0ZWQtc3Rkb3V0OgoJMzxFT2JhckY+Cgk3PGhpIQoJCgliYXIpIGlzIG5vdCBhIHByb2JsZW0+Ci0tLQpuYW1lOiBoZXJlZG9jLXN1YnNoZWxsLTEKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMgaW4gc3Vic2hlbGxzLCB0YWtlbiBmcm9tIEF1c3RpbiBNTApzdGRpbjoKCShjYXQgPDxFT0YKCXNvbWUgdGV4dAoJRU9GKQoJZWNobyBlbmQKZXhwZWN0ZWQtc3Rkb3V0OgoJc29tZSB0ZXh0CgllbmQKLS0tCm5hbWU6IGhlcmVkb2Mtc3Vic2hlbGwtMgpkZXNjcmlwdGlvbjoKCVRlc3RzIGZvciBoZXJlIGRvY3VtZW50cyBpbiBzdWJzaGVsbHMsIHRha2VuIGZyb20gQXVzdGluIE1MCnN0ZGluOgoJKGNhdCA8PEVPRgoJc29tZSB0ZXh0CglFT0YKCSkKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCXNvbWUgdGV4dAoJZW5kCi0tLQpuYW1lOiBoZXJlZG9jLXN1YnNoZWxsLTMKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMgaW4gc3Vic2hlbGxzLCB0YWtlbiBmcm9tIEF1c3RpbiBNTApzdGRpbjoKCShjYXQgPDxFT0Y7ICkKCXNvbWUgdGV4dAoJRU9GCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6Cglzb21lIHRleHQKCWVuZAotLS0KbmFtZTogaGVyZWRvYy13ZWlyZC0xCmRlc2NyaXB0aW9uOgoJVGVzdHMgZm9yIGhlcmUgZG9jdW1lbnRzLCB0YWtlbiBmcm9tIEF1c3RpbiBNTAoJRG9jdW1lbnRzIGN1cnJlbnQgc3RhdGUgaW4gbWtzaCwgKk5PVCogbmVjZXNzYXJpbHkgY29ycmVjdCEKc3RkaW46CgljYXQgPDxFTkQKCWhlbGxvCglFTkRcCglFTkQKCUVORAoJZWNobyBlbmQKZXhwZWN0ZWQtc3Rkb3V0OgoJaGVsbG8KCUVOREVORAoJZW5kCi0tLQpuYW1lOiBoZXJlZG9jLXdlaXJkLTIKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMsIHRha2VuIGZyb20gQXVzdGluIE1MCnN0ZGluOgoJY2F0IDw8JyAgICBFTkQgICAgJwoJaGVsbG8KCSAgICBFTkQgICAgCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CgloZWxsbwoJZW5kCi0tLQpuYW1lOiBoZXJlZG9jLXdlaXJkLTQKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMsIHRha2VuIGZyb20gQXVzdGluIE1MCglEb2N1bWVudHMgY3VycmVudCBzdGF0ZSBpbiBta3NoLCAqTk9UKiBuZWNlc3NhcmlseSBjb3JyZWN0IQpzdGRpbjoKCWNhdCA8PEVORAoJaGVsbG9cCglFTkQKCUVORAoJZWNobyBlbmQKZXhwZWN0ZWQtc3Rkb3V0OgoJaGVsbG9FTkQKCWVuZAotLS0KbmFtZTogaGVyZWRvYy13ZWlyZC01CmRlc2NyaXB0aW9uOgoJVGVzdHMgZm9yIGhlcmUgZG9jdW1lbnRzLCB0YWtlbiBmcm9tIEF1c3RpbiBNTAoJRG9jdW1lbnRzIGN1cnJlbnQgc3RhdGUgaW4gbWtzaCwgKk5PVCogbmVjZXNzYXJpbHkgY29ycmVjdCEKc3RkaW46CgljYXQgPDxFTkQKCWhlbGxvCglcRU5ECglFTkQKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCWhlbGxvCglcRU5ECgllbmQKLS0tCm5hbWU6IGhlcmVkb2MtdG1wZmlsZS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBoZXJlZG9jIHRlbXAgZmlsZXMgYXJlbid0IHJlbW92ZWQgdG9vIHNvb24gb3IgdG9vIGxhdGUuCglIZXJlZG9jIGluIHNpbXBsZSBjb21tYW5kLgpzdGRpbjoKCVRNUERJUj0kUFdECglldmFsICcKCQljYXQgPDwtIEVPRgoJCWhpCgkJRU9GCgkJZm9yIGkgaW4gYSBiIDsgZG8KCQkJY2F0IDw8LSBFT0YKCQkJbW9yZQoJCQlFT0YKCQlkb25lCgkgICAgJyAmCglzbGVlcCAxCgllY2hvIExlZnQgb3ZlcnM6ICoKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCW1vcmUKCW1vcmUKCUxlZnQgb3ZlcnM6ICoKLS0tCm5hbWU6IGhlcmVkb2MtdG1wZmlsZS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBoZXJlZG9jIHRlbXAgZmlsZXMgYXJlbid0IHJlbW92ZWQgdG9vIHNvb24gb3IgdG9vIGxhdGUuCglIZXJlZG9jIGluIGZ1bmN0aW9uLCBtdWx0aXBsZSBjYWxscyB0byBmdW5jdGlvbi4Kc3RkaW46CglUTVBESVI9JFBXRAoJZXZhbCAnCgkJZm9vKCkgewoJCQljYXQgPDwtIEVPRgoJCQloaQoJCQlFT0YKCQl9CgkJZm9vCgkJZm9vCgkgICAgJyAmCglzbGVlcCAxCgllY2hvIExlZnQgb3ZlcnM6ICoKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWhpCglMZWZ0IG92ZXJzOiAqCi0tLQpuYW1lOiBoZXJlZG9jLXRtcGZpbGUtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgaGVyZWRvYyB0ZW1wIGZpbGVzIGFyZW4ndCByZW1vdmVkIHRvbyBzb29uIG9yIHRvbyBsYXRlLgoJSGVyZWRvYyBpbiBmdW5jdGlvbiBpbiBsb29wLCBtdWx0aXBsZSBjYWxscyB0byBmdW5jdGlvbi4Kc3RkaW46CglUTVBESVI9JFBXRAoJZXZhbCAnCgkJZm9vKCkgewoJCQljYXQgPDwtIEVPRgoJCQloaQoJCQlFT0YKCQl9CgkJZm9yIGkgaW4gYSBiOyBkbwoJCQlmb28KCQkJZm9vKCkgewoJCQkJY2F0IDw8LSBFT0YKCQkJCWZvbGtzICRpCgkJCQlFT0YKCQkJfQoJCWRvbmUKCQlmb28KCSAgICAnICYKCXNsZWVwIDEKCWVjaG8gTGVmdCBvdmVyczogKgpleHBlY3RlZC1zdGRvdXQ6CgloaQoJZm9sa3MgYgoJZm9sa3MgYgoJTGVmdCBvdmVyczogKgotLS0KbmFtZTogaGVyZWRvYy10bXBmaWxlLTQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGhlcmVkb2MgdGVtcCBmaWxlcyBhcmVuJ3QgcmVtb3ZlZCB0b28gc29vbiBvciB0b28gbGF0ZS4KCUJhY2tncm91bmRlZCBzaW1wbGUgY29tbWFuZCB3aXRoIGhlcmUgZG9jCnN0ZGluOgoJVE1QRElSPSRQV0QKCWV2YWwgJwoJCWNhdCA8PC0gRU9GICYKCQloaQoJCUVPRgoJICAgICcgJgoJc2xlZXAgMQoJZWNobyBMZWZ0IG92ZXJzOiAqCmV4cGVjdGVkLXN0ZG91dDoKCWhpCglMZWZ0IG92ZXJzOiAqCi0tLQpuYW1lOiBoZXJlZG9jLXRtcGZpbGUtNQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgaGVyZWRvYyB0ZW1wIGZpbGVzIGFyZW4ndCByZW1vdmVkIHRvbyBzb29uIG9yIHRvbyBsYXRlLgoJQmFja2dyb3VuZGVkIHN1YnNoZWxsIGNvbW1hbmQgd2l0aCBoZXJlIGRvYwpzdGRpbjoKCVRNUERJUj0kUFdECglldmFsICcKCSAgICAgICgKCQlzbGVlcCAxCSMgc28gcGFyZW50IGV4aXRzCgkJZWNobyBBCgkJY2F0IDw8LSBFT0YKCQloaQoJCUVPRgoJCWVjaG8gQgoJICAgICAgKSAmCgkgICAgJyAmCglzbGVlcCA1CgllY2hvIExlZnQgb3ZlcnM6ICoKZXhwZWN0ZWQtc3Rkb3V0OgoJQQoJaGkKCUIKCUxlZnQgb3ZlcnM6ICoKLS0tCm5hbWU6IGhlcmVkb2MtdG1wZmlsZS02CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBoZXJlZG9jIHRlbXAgZmlsZXMgYXJlbid0IHJlbW92ZWQgdG9vIHNvb24gb3IgdG9vIGxhdGUuCglIZXJlZG9jIGluIHBpcGVsaW5lLgpzdGRpbjoKCVRNUERJUj0kUFdECglldmFsICcKCQljYXQgPDwtIEVPRiB8IHNlZCAicy9oaS9ISS8iCgkJaGkKCQlFT0YKCSAgICAnICYKCXNsZWVwIDEKCWVjaG8gTGVmdCBvdmVyczogKgpleHBlY3RlZC1zdGRvdXQ6CglISQoJTGVmdCBvdmVyczogKgotLS0KbmFtZTogaGVyZWRvYy10bXBmaWxlLTcKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGhlcmVkb2MgdGVtcCBmaWxlcyBhcmVuJ3QgcmVtb3ZlZCB0b28gc29vbiBvciB0b28gbGF0ZS4KCUhlcmVkb2MgaW4gYmFja2dyb3VuZGVkIHBpcGVsaW5lLgpzdGRpbjoKCVRNUERJUj0kUFdECglldmFsICcKCQljYXQgPDwtIEVPRiB8IHNlZCAncy9oaS9ISS8nICYKCQloaQoJCUVPRgoJICAgICcgJgoJc2xlZXAgMQoJZWNobyBMZWZ0IG92ZXJzOiAqCmV4cGVjdGVkLXN0ZG91dDoKCUhJCglMZWZ0IG92ZXJzOiAqCi0tLQpuYW1lOiBoZXJlZG9jLXRtcGZpbGUtOApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgaGVyZWRvYyB0ZW1wIGZpbGVzIGFyZW4ndCByZW1vdmVkIHRvbyBzb29uIG9yIHRvbwoJbGF0ZS4gSGVyZWRvYyBpbiBmdW5jdGlvbiwgYmFja2dyb3VuZGVkIGNhbGwgdG8gZnVuY3Rpb24uCglUaGlzIGNoZWNrIGNhbiBmYWlsIG9uIHNsb3cgbWFjaGluZXMgKDwxMDAgTUh6KSwgb3IgQ3lnd2luLAoJdGhhdCdzIG5vcm1hbC4KbmVlZC1wYXNzOiBubwpzdGRpbjoKCVRNUERJUj0kUFdECgkjIEJhY2tncm91bmQgZXZhbCBzbyBtYWluIHNoZWxsIGRvZXNuJ3QgZG8gcGFyc2luZwoJZXZhbCAnCgkJZm9vKCkgewoJCQljYXQgPDwtIEVPRgoJCQloaQoJCQlFT0YKCQl9CgkJZm9vCgkJIyBzbGVlcCBzbyBldmFsIGNhbiBkaWUKCQkoc2xlZXAgMTsgZm9vKSAmCgkJKHNsZWVwIDE7IGZvbykgJgoJCWZvbwoJICAgICcgJgoJc2xlZXAgNQoJZWNobyBMZWZ0IG92ZXJzOiAqCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgloaQoJaGkKCWhpCglMZWZ0IG92ZXJzOiAqCi0tLQpuYW1lOiBoZXJlZG9jLXF1b3RpbmctdW5zdWJzdApkZXNjcmlwdGlvbjoKCUNoZWNrIGZvciBjb3JyZWN0IGhhbmRsaW5nIG9mIHF1b3RlZCBjaGFyYWN0ZXJzIGluCgloZXJlIGRvY3VtZW50cyB3aXRob3V0IHN1YnN0aXR1dGlvbiAobWFya2VyIGlzIHF1b3RlZCkuCnN0ZGluOgoJZm9vPWJhcgoJY2F0IDw8LSdFT0YnCgkJeCAiIFwiIFwgXFwgJCBcJCBgZWNobyBiYXpgIFxgZWNobyBiYXpcYCAkZm9vIFwkZm9vIHgKCUVPRgpleHBlY3RlZC1zdGRvdXQ6Cgl4ICIgXCIgXCBcXCAkIFwkIGBlY2hvIGJhemAgXGBlY2hvIGJhelxgICRmb28gXCRmb28geAotLS0KbmFtZTogaGVyZWRvYy1xdW90aW5nLXN1YnN0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgcXVvdGVkIGNoYXJhY3RlcnMgaW4KCWhlcmUgZG9jdW1lbnRzIHdpdGggc3Vic3RpdHV0aW9uIChtYXJrZXIgaXMgbm90IHF1b3RlZCkuCnN0ZGluOgoJZm9vPWJhcgoJY2F0IDw8LUVPRgoJCXggIiBcIiBcIFxcICQgXCQgYGVjaG8gYmF6YCBcYGVjaG8gYmF6XGAgJGZvbyBcJGZvbyB4CglFT0YKZXhwZWN0ZWQtc3Rkb3V0OgoJeCAiIFwiIFwgXCAkICQgYmF6IGBlY2hvIGJhemAgYmFyICRmb28geAotLS0KbmFtZTogc2luZ2xlLXF1b3Rlcy1pbi1icmFjZXMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHNpbmdsZSBxdW90ZXMgaW5zaWRlIHVucXVvdGVkIHt9IGFyZSB0cmVhdGVkIGFzIHF1b3RlcwpzdGRpbjoKCWZvbz0xCgllY2hvICR7Zm9vOisnYmxhaCAgJGZvbyd9CmV4cGVjdGVkLXN0ZG91dDoKCWJsYWggICRmb28KLS0tCm5hbWU6IHNpbmdsZS1xdW90ZXMtaW4tcXVvdGVkLWJyYWNlcwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2luZ2xlIHF1b3RlcyBpbnNpZGUgcXVvdGVkIHt9IGFyZSB0cmVhdGVkIGFzCglub3JtYWwgY2hhcgpzdGRpbjoKCWZvbz0xCgllY2hvICIke2ZvbzorJ2JsYWggICRmb28nfSIKZXhwZWN0ZWQtc3Rkb3V0OgoJJ2JsYWggIDEnCi0tLQpuYW1lOiBzaW5nbGUtcXVvdGVzLWluLWJyYWNlcy1uZXN0ZWQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHNpbmdsZSBxdW90ZXMgaW5zaWRlIHVucXVvdGVkIHt9IGFyZSB0cmVhdGVkIGFzIHF1b3RlcywKCWV2ZW4gaWYgdGhhdCdzIGluc2lkZSBhIGRvdWJsZS1xdW90ZWQgY29tbWFuZCBleHBhbnNpb24Kc3RkaW46Cglmb289MQoJZWNobyAiJCggZWNobyAke2ZvbzorJ2JsYWggICRmb28nfSkiCmV4cGVjdGVkLXN0ZG91dDoKCWJsYWggICRmb28KLS0tCm5hbWU6IHNpbmdsZS1xdW90ZXMtaW4tYnJhY2UtcGF0dGVybgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2luZ2xlIHF1b3RlcyBpbnNpZGUge30gcGF0dGVybiBhcmUgdHJlYXRlZCBhcyBxdW90ZXMKc3RkaW46Cglmb289MTIzNAoJZWNobyAke2ZvbyUnMicqfSAiJHtmb28lJzInKn0iICR7Zm9vJTInKid9ICIke2ZvbyUyJyonfSIKZXhwZWN0ZWQtc3Rkb3V0OgoJMSAxIDEyMzQgMTIzNAotLS0KbmFtZTogc2luZ2xlLXF1b3Rlcy1pbi1oZXJlZG9jLWJyYWNlcwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2luZ2xlIHF1b3RlcyBpbnNpZGUge30gaW4gaGVyZWRvYyBhcmUgdHJlYXRlZAoJYXMgbm9ybWFsIGNoYXIKc3RkaW46Cglmb289MQoJY2F0IDw8RU9NCgkke2ZvbzorJ2JsYWggICRmb28nfQoJRU9NCmV4cGVjdGVkLXN0ZG91dDoKCSdibGFoICAxJwotLS0KbmFtZTogc2luZ2xlLXF1b3Rlcy1pbi1uZXN0ZWQtYnJhY2VzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaW5nbGUgcXVvdGVzIGluc2lkZSBuZXN0ZWQgdW5xdW90ZWQge30gYXJlCgl0cmVhdGVkIGFzIHF1b3RlcwpzdGRpbjoKCWZvbz0xCgllY2hvICR7Zm9vOiske2ZvbzorJ2JsYWggICRmb28nfX0KZXhwZWN0ZWQtc3Rkb3V0OgoJYmxhaCAgJGZvbwotLS0KbmFtZTogc2luZ2xlLXF1b3Rlcy1pbi1uZXN0ZWQtcXVvdGVkLWJyYWNlcwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2luZ2xlIHF1b3RlcyBpbnNpZGUgbmVzdGVkIHF1b3RlZCB7fSBhcmUgdHJlYXRlZAoJYXMgbm9ybWFsIGNoYXIKc3RkaW46Cglmb289MQoJZWNobyAiJHtmb286KyR7Zm9vOisnYmxhaCAgJGZvbyd9fSIKZXhwZWN0ZWQtc3Rkb3V0OgoJJ2JsYWggIDEnCi0tLQpuYW1lOiBzaW5nbGUtcXVvdGVzLWluLW5lc3RlZC1icmFjZXMtbmVzdGVkCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaW5nbGUgcXVvdGVzIGluc2lkZSBuZXN0ZWQgdW5xdW90ZWQge30gYXJlIHRyZWF0ZWQKCWFzIHF1b3RlcywgZXZlbiBpZiB0aGF0J3MgaW5zaWRlIGEgZG91YmxlLXF1b3RlZCBjb21tYW5kIGV4cGFuc2lvbgpzdGRpbjoKCWZvbz0xCgllY2hvICIkKCBlY2hvICR7Zm9vOiske2ZvbzorJ2JsYWggICRmb28nfX0pIgpleHBlY3RlZC1zdGRvdXQ6CglibGFoICAkZm9vCi0tLQpuYW1lOiBzaW5nbGUtcXVvdGVzLWluLW5lc3RlZC1icmFjZS1wYXR0ZXJuCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaW5nbGUgcXVvdGVzIGluc2lkZSBuZXN0ZWQge30gcGF0dGVybiBhcmUgdHJlYXRlZCBhcyBxdW90ZXMKc3RkaW46Cglmb289MTIzNAoJZWNobyAke2ZvbzorJHtmb28lJzInKn19ICIke2ZvbzorJHtmb28lJzInKn19IiAke2ZvbzorJHtmb28lMicqJ319ICIke2ZvbzorJHtmb28lMicqJ319IgpleHBlY3RlZC1zdGRvdXQ6CgkxIDEgMTIzNCAxMjM0Ci0tLQpuYW1lOiBzaW5nbGUtcXVvdGVzLWluLWhlcmVkb2MtbmVzdGVkLWJyYWNlcwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2luZ2xlIHF1b3RlcyBpbnNpZGUgbmVzdGVkIHt9IGluIGhlcmVkb2MgYXJlIHRyZWF0ZWQKCWFzIG5vcm1hbCBjaGFyCnN0ZGluOgoJZm9vPTEKCWNhdCA8PEVPTQoJJHtmb286KyR7Zm9vOisnYmxhaCAgJGZvbyd9fQoJRU9NCmV4cGVjdGVkLXN0ZG91dDoKCSdibGFoICAxJwotLS0KbmFtZTogc2luZ2xlLXF1b3Rlcy1pbi1oZXJlZG9jLXRyaW0KZGVzY3JpcHRpb246CglJbiBzb21lIGNhc2VzLCBzaW5nbGUgcXVvdGVzIGluc2lkZSB7fSBpbiBoZXJlZG9jIGFyZSBub3Qgbm9ybWFsCnN0ZGluOgoJeD1ub3RPSwoJY2F0IDw8RU9GCgkxOiAke3gjbm90fSAke3g6KyR7eCNub3R9fQoJMjogJHt4I1xuXG9cdH0gJHt4Oiske3gjXG5cb1x0fX0KCTM6ICR7eCMibm90In0gJHt4Oiske3gjIm5vdCJ9fQoJNDogJHt4Iydub3QnfSAke3g6KyR7eCMnbm90J319Cgk1OiAke3gjJCdub3QnfSAke3g6KyR7eCMkJ25vdCd9fQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCTE6IE9LIE9LCgkyOiBPSyBPSwoJMzogT0sgT0sKCTQ6IE9LIE9LCgk1OiBPSyBPSwotLS0KbmFtZTogaGlzdG9yeS1iYXNpYwpkZXNjcmlwdGlvbjoKCVNlZSBpZiB3ZSBjYW4gdGVzdCBoaXN0b3J5IGF0IGFsbApuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBoaQoJZmMgLWwKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCTEJZWNobyBoaQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1kdXBzCmRlc2NyaXB0aW9uOgoJVmVyaWZ5IGR1cGxpY2F0ZXMgYW5kIHNwYWNlcyBhcmUgbm90IGVudGVyZWQKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWVjaG8gaGkKCSBlY2hvIHlvCgllY2hvIGhpCglmYyAtbApleHBlY3RlZC1zdGRvdXQ6CgloaQoJeW8KCWhpCgkxCWVjaG8gaGkKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3RvcnktdW5saW5rCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYnJva2VuIEhJU1RGSUxFcyBkbyBub3QgY2F1c2UgdHJvdWJsZQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWZvby9oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApmaWxlLXNldHVwOiBkaXIgNzU1ICJmb28iCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJmb28vaGlzdC5maWxlIgoJc29tZXRleHQKdGltZS1saW1pdDogNQpwZXJsLXNldHVwOiBjaG1vZCgwNTU1LCAiZm9vIik7CnN0ZGluOgoJZWNobyBoaQoJZmMgLWwKCWNobW9kIDA3NTUgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgkxCWVjaG8gaGkKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvKC4qY2FuJ3QgdW5saW5rIEhJU1RGSUxFLipcbik/WCokLwotLS0KbmFtZTogaGlzdG9yeS1tdWx0aWxpbmUKZGVzY3JpcHRpb246CglDaGVjayBjb3JyZWN0IG11bHRpbGluZSBoaXN0b3J5LCBEZWJpYW4gIzc4Mzk3OApuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKCVBTMj1ZCnN0ZGluOgoJZm9yIGkgaW4gQSBCIEMKCWRvCgkgICBwcmludCAkaQoJICAgcHJpbnQgJGkKCWRvbmUKCWZjIC1sCmV4cGVjdGVkLXN0ZG91dDoKCUEKCUEKCUIKCUIKCUMKCUMKCTEJZm9yIGkgaW4gQSBCIEMKCQlkbwoJCSAgIHByaW50ICRpCgkJICAgcHJpbnQgJGkKCQlkb25lCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YWVlZWVhYJC8KLS0tCm5hbWU6IGhpc3RvcnktZS1taW51cy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgbW9yZSByZWNlbnQgY29tbWFuZCBpcyBleGVjdXRlZApuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBoaQoJZWNobyB0aGVyZQoJZmMgLWUgLQpleHBlY3RlZC1zdGRvdXQ6CgloaQoJdGhlcmUKCXRoZXJlCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKmVjaG8gdGhlcmVcblgqJC8KLS0tCm5hbWU6IGhpc3RvcnktZS1taW51cy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZXBlYXRlZCBjb21tYW5kIGlzIHByaW50ZWQgYmVmb3JlIGNvbW1hbmQKCWlzIHJlLWV4ZWN1dGVkLgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZXhlYyAyPiYxCgllY2hvIGhpCgllY2hvIHRoZXJlCglmYyAtZSAtCmV4cGVjdGVkLXN0ZG91dC1wYXR0ZXJuOgoJL1gqaGlcblgqdGhlcmVcblgqZWNobyB0aGVyZVxudGhlcmVcblgqLwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1lLW1pbnVzLTMKZGVzY3JpcHRpb246CglmYyAtZSAtIGZhaWxzIHdoZW4gdGhlcmUgaXMgbm8gaGlzdG9yeQoJKGtzaDkzIGhhcyBhIGJ1ZyB0aGF0IGNhdXNlcyB0aGlzIHRvIGZhaWwpCgkoa3NoODggbG9vcHMgb24gdGhpcykKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWZjIC1lIC0KCWVjaG8gb2sKZXhwZWN0ZWQtc3Rkb3V0OgoJb2sKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqLio6LipoaXN0b3J5LipcblgqJC8KLS0tCm5hbWU6IGhpc3RvcnktZS1taW51cy00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgImZjIC1lIC0iIGNvbW1hbmQgb3V0cHV0IGdvZXMgdG8gc3Rkb3V0LgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMKCWZjIC1lIC0gfCAocmVhZCB4OyBlY2hvICJBICR4IikKCWVjaG8gb2sKZXhwZWN0ZWQtc3Rkb3V0OgoJYWJjCglBIGFiYwoJb2sKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqZWNobyBhYmNcblgqLwotLS0KbmFtZTogaGlzdG9yeS1lLW1pbnVzLTUKZGVzY3JpcHRpb246CglmYyBpcyByZXBsYWNlZCBpbiBoaXN0b3J5IGJ5IG5ldyBjb21tYW5kLgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmCgllY2hvIGdoaSBqa2wKCToKCWZjIC1lIC0gZWNobwoJZmMgLWwgMiA1CmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYKCWdoaSBqa2wKCWdoaSBqa2wKCTIJZWNobyBnaGkgamtsCgkzCToKCTQJZWNobyBnaGkgamtsCgk1CWZjIC1sIDIgNQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCplY2hvIGdoaSBqa2xcblgqJC8KLS0tCm5hbWU6IGhpc3RvcnktbGlzdC0xCmRlc2NyaXB0aW9uOgoJTGlzdCBsaXN0cyBjb3JyZWN0IHJhbmdlCgkoa3NoODggZmFpbHMgJ2NhdXNlIGl0IGxpc3RzIHRoZSBmYyBjb21tYW5kKQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZmMgLWwgLS0gLTIKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJMgllY2hvIGxpbmUgMgoJMwllY2hvIGxpbmUgMwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1saXN0LTIKZGVzY3JpcHRpb246CglMaXN0cyBvbGRlc3QgaGlzdG9yeSBpZiBnaXZlbiBwcmUtaGlzdG9yaWMgbnVtYmVyCgkoa3NoOTMgaGFzIGEgYnVnIHRoYXQgY2F1c2VzIHRoaXMgdG8gZmFpbCkKCShrc2g4OCBmYWlscyAnY2F1c2UgaXQgbGlzdHMgdGhlIGZjIGNvbW1hbmQpCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIKCWVjaG8gbGluZSAzCglmYyAtbCAtLSAtNDAKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJMQllY2hvIGxpbmUgMQoJMgllY2hvIGxpbmUgMgoJMwllY2hvIGxpbmUgMwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1saXN0LTMKZGVzY3JpcHRpb246CglDYW4gZ2l2ZSBudW1iZXIgJ29wdGlvbnMnIHRvIGZjCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIKCWVjaG8gbGluZSAzCgllY2hvIGxpbmUgNAoJZmMgLWwgLTMgLTIKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJbGluZSA0CgkyCWVjaG8gbGluZSAyCgkzCWVjaG8gbGluZSAzCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWxpc3QtNApkZXNjcmlwdGlvbjoKCS0xIHJlZmVycyB0byBwcmV2aW91cyBjb21tYW5kCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIKCWVjaG8gbGluZSAzCgllY2hvIGxpbmUgNAoJZmMgLWwgLTEgLTEKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJbGluZSA0Cgk0CWVjaG8gbGluZSA0CmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWxpc3QtNQpkZXNjcmlwdGlvbjoKCUxpc3QgY29tbWFuZCBzdGF5cyBpbiBoaXN0b3J5Cm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIKCWVjaG8gbGluZSAzCgllY2hvIGxpbmUgNAoJZmMgLWwgLTEgLTEKCWZjIC1sIC0yIC0xCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMQoJbGluZSAyCglsaW5lIDMKCWxpbmUgNAoJNAllY2hvIGxpbmUgNAoJNAllY2hvIGxpbmUgNAoJNQlmYyAtbCAtMSAtMQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1saXN0LTYKZGVzY3JpcHRpb246CglISVNUU0laRSBsaW1pdHMgYWJvdXQgb2YgaGlzdG9yeSBrZXB0LgoJKGtzaDg4IGZhaWxzICdjYXVzZSBpdCBsaXN0cyB0aGUgZmMgY29tbWFuZCkKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhSElTVFNJWkU9MyEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZWNobyBsaW5lIDQKCWVjaG8gbGluZSA1CglmYyAtbApleHBlY3RlZC1zdGRvdXQ6CglsaW5lIDEKCWxpbmUgMgoJbGluZSAzCglsaW5lIDQKCWxpbmUgNQoJNAllY2hvIGxpbmUgNAoJNQllY2hvIGxpbmUgNQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1saXN0LTcKZGVzY3JpcHRpb246CglmYyBhbGxvd3MgdG9vIG9sZC9uZXcgZXJyb3JzIGluIHJhbmdlIHNwZWNpZmljYXRpb24KbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhSElTVFNJWkU9MyEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZWNobyBsaW5lIDQKCWVjaG8gbGluZSA1CglmYyAtbCAxIDMwCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMQoJbGluZSAyCglsaW5lIDMKCWxpbmUgNAoJbGluZSA1Cgk0CWVjaG8gbGluZSA0Cgk1CWVjaG8gbGluZSA1Cgk2CWZjIC1sIDEgMzAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3RvcnktbGlzdC1yLTEKZGVzY3JpcHRpb246Cgl0ZXN0IC1yIGZsYWcgaW4gaGlzdG9yeQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZWNobyBsaW5lIDQKCWVjaG8gbGluZSA1CglmYyAtbCAtciAyIDQKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJbGluZSA0CglsaW5lIDUKCTQJZWNobyBsaW5lIDQKCTMJZWNobyBsaW5lIDMKCTIJZWNobyBsaW5lIDIKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3RvcnktbGlzdC1yLTIKZGVzY3JpcHRpb246CglJZiBmaXJzdCBpcyBuZXdlciB0aGFuIGxhc3QsIC1yIGlzIGltcGxpZWQuCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIKCWVjaG8gbGluZSAzCgllY2hvIGxpbmUgNAoJZWNobyBsaW5lIDUKCWZjIC1sIDQgMgpleHBlY3RlZC1zdGRvdXQ6CglsaW5lIDEKCWxpbmUgMgoJbGluZSAzCglsaW5lIDQKCWxpbmUgNQoJNAllY2hvIGxpbmUgNAoJMwllY2hvIGxpbmUgMwoJMgllY2hvIGxpbmUgMgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1saXN0LXItMwpkZXNjcmlwdGlvbjoKCUlmIGZpcnN0IGlzIG5ld2VyIHRoYW4gbGFzdCwgLXIgaXMgY2FuY2VsbGVkLgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZWNobyBsaW5lIDQKCWVjaG8gbGluZSA1CglmYyAtbCAtciA0IDIKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJbGluZSA0CglsaW5lIDUKCTIJZWNobyBsaW5lIDIKCTMJZWNobyBsaW5lIDMKCTQJZWNobyBsaW5lIDQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3Rvcnktc3Vic3QtMQpkZXNjcmlwdGlvbjoKCUJhc2ljIHN1YnN0aXR1dGlvbgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmCgllY2hvIGdoaSBqa2wKCWZjIC1lIC0gYWJjPUFCICdlY2hvIGEnCmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYKCWdoaSBqa2wKCUFCIGRlZgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCplY2hvIEFCIGRlZlxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1zdWJzdC0yCmRlc2NyaXB0aW9uOgoJRG9lcyBzdWJzdCBmaW5kIHByZXZpb3VzIGNvbW1hbmQ/Cm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGFiYyBkZWYKCWVjaG8gZ2hpIGprbAoJZmMgLWUgLSBqa2w9WFlaUVJUICdlY2hvIGcnCmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYKCWdoaSBqa2wKCWdoaSBYWVpRUlQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqZWNobyBnaGkgWFlaUVJUXG5YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LXN1YnN0LTMKZGVzY3JpcHRpb246CglEb2VzIHN1YnN0IGZpbmQgcHJldmlvdXMgY29tbWFuZCB3aGVuIG5vIGFyZ3VtZW50cyBnaXZlbgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmCgllY2hvIGdoaSBqa2wKCWZjIC1lIC0gamtsPVhZWlFSVApleHBlY3RlZC1zdGRvdXQ6CglhYmMgZGVmCglnaGkgamtsCglnaGkgWFlaUVJUCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKmVjaG8gZ2hpIFhZWlFSVFxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1zdWJzdC00CmRlc2NyaXB0aW9uOgoJR2xvYmFsIHN1YnN0aXR1dGlvbnMgd29yawoJKGtzaDg4IGFuZCBrc2g5MyBkbyBub3QgaGF2ZSAtZyBvcHRpb24pCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGFiYyBkZWYgYXNqaiBzYWRqaGFzZGpoIGFzZGpoYXNkCglmYyAtZSAtIC1nIGE9Rm9vQkFSCmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYgYXNqaiBzYWRqaGFzZGpoIGFzZGpoYXNkCglGb29CQVJiYyBkZWYgRm9vQkFSc2pqIHNGb29CQVJkamhGb29CQVJzZGpoIEZvb0JBUnNkamhGb29CQVJzZApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCplY2hvIEZvb0JBUmJjIGRlZiBGb29CQVJzamogc0Zvb0JBUmRqaEZvb0JBUnNkamggRm9vQkFSc2RqaEZvb0JBUnNkXG5YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LXN1YnN0LTUKZGVzY3JpcHRpb246CglNYWtlIHN1cmUgc2VhcmNoZXMgZG9uJ3QgZmluZCBjdXJyZW50IChmYykgY29tbWFuZAoJKGtzaDg4L2tzaDkzIGRvbid0IGhhdmUgdGhlID8gcHJlZml4IHRoaW5nIHNvIHRoZXkgZmFpbCB0aGlzIHRlc3QpCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGFiYyBkZWYKCWVjaG8gZ2hpIGprbAoJZmMgLWUgLSBhYmM9QUIgXD9hYmMKZXhwZWN0ZWQtc3Rkb3V0OgoJYWJjIGRlZgoJZ2hpIGprbAoJQUIgZGVmCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKmVjaG8gQUIgZGVmXG5YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWVkLTEtb2xkCmRlc2NyaXB0aW9uOgoJQmFzaWMgKGVkKSBlZGl0aW5nIHdvcmtzIChhc3N1bWVzIHlvdSBoYXZlIGdlbmVyaWMgZWQgZWRpdG9yCgl0aGF0IHByaW50cyBubyBwcm9tcHRzKS4gVGhpcyBpcyBmb3Igb2xkaXNoIGVkKDEpIHdoaWNoIHdyaXRlCgl0aGUgY2hhcmFjdGVyIGNvdW50IHRvIHN0ZG91dC4KY2F0ZWdvcnk6IHN0ZG91dC1lZApuZWVkLWN0dHk6IHllcwpuZWVkLXBhc3M6IG5vCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGFiYyBkZWYKCWZjIGVjaG8KCXMvYWJjL0ZPT0JBUi8KCXcKCXEKZXhwZWN0ZWQtc3Rkb3V0OgoJYWJjIGRlZgoJMTMKCTE2CglGT09CQVIgZGVmCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKmVjaG8gRk9PQkFSIGRlZlxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1lZC0yLW9sZApkZXNjcmlwdGlvbjoKCUNvcnJlY3QgY29tbWFuZCBpcyBlZGl0ZWQgd2hlbiBudW1iZXIgZ2l2ZW4KY2F0ZWdvcnk6IHN0ZG91dC1lZApuZWVkLWN0dHk6IHllcwpuZWVkLXBhc3M6IG5vCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIgaXMgaGVyZQoJZWNobyBsaW5lIDMKCWVjaG8gbGluZSA0CglmYyAyCglzL2lzIGhlcmUvaXMgY2hhbmdlZC8KCXcKCXEKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIgaXMgaGVyZQoJbGluZSAzCglsaW5lIDQKCTIwCgkyMwoJbGluZSAyIGlzIGNoYW5nZWQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqZWNobyBsaW5lIDIgaXMgY2hhbmdlZFxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1lZC0zLW9sZApkZXNjcmlwdGlvbjoKCU5ld2x5IGNyZWF0ZWQgbXVsdGkgbGluZSBjb21tYW5kcyBzaG93IHVwIGFzIHNpbmdsZSBjb21tYW5kCglpbiBoaXN0b3J5LgoJKGtzaDg4IGZhaWxzICdjYXVzZSBpdCBsaXN0cyB0aGUgZmMgY29tbWFuZCkKY2F0ZWdvcnk6IHN0ZG91dC1lZApuZWVkLWN0dHk6IHllcwpuZWVkLXBhc3M6IG5vCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGFiYyBkZWYKCWZjIGVjaG8KCXMvYWJjL0ZPT0JBUi8KCSRhCgllY2hvIGEgbmV3IGxpbmUKCS4KCXcKCXEKCWZjIC1sCmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYKCTEzCgkzMgoJRk9PQkFSIGRlZgoJYSBuZXcgbGluZQoJMQllY2hvIGFiYyBkZWYKCTIJZWNobyBGT09CQVIgZGVmCgkJZWNobyBhIG5ldyBsaW5lCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKmVjaG8gRk9PQkFSIGRlZlxuZWNobyBhIG5ldyBsaW5lXG5YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWVkLTEKZGVzY3JpcHRpb246CglCYXNpYyAoZWQpIGVkaXRpbmcgd29ya3MgKGFzc3VtZXMgeW91IGhhdmUgZ2VuZXJpYyBlZCBlZGl0b3IKCXRoYXQgcHJpbnRzIG5vIHByb21wdHMpLiBUaGlzIGlzIGZvciBuZXdpc2ggZWQoMSkgYW5kIHN0ZGVyci4KY2F0ZWdvcnk6ICFuby1zdGRlcnItZWQKbmVlZC1jdHR5OiB5ZXMKbmVlZC1wYXNzOiBubwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmCglmYyBlY2hvCglzL2FiYy9GT09CQVIvCgl3CglxCmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYKCUZPT0JBUiBkZWYKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqMTNcbjE2XG5lY2hvIEZPT0JBUiBkZWZcblgqJC8KLS0tCm5hbWU6IGhpc3RvcnktZWQtMgpkZXNjcmlwdGlvbjoKCUNvcnJlY3QgY29tbWFuZCBpcyBlZGl0ZWQgd2hlbiBudW1iZXIgZ2l2ZW4KY2F0ZWdvcnk6ICFuby1zdGRlcnItZWQKbmVlZC1jdHR5OiB5ZXMKbmVlZC1wYXNzOiBubwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyIGlzIGhlcmUKCWVjaG8gbGluZSAzCgllY2hvIGxpbmUgNAoJZmMgMgoJcy9pcyBoZXJlL2lzIGNoYW5nZWQvCgl3CglxCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMQoJbGluZSAyIGlzIGhlcmUKCWxpbmUgMwoJbGluZSA0CglsaW5lIDIgaXMgY2hhbmdlZApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCoyMFxuMjNcbmVjaG8gbGluZSAyIGlzIGNoYW5nZWRcblgqJC8KLS0tCm5hbWU6IGhpc3RvcnktZWQtMwpkZXNjcmlwdGlvbjoKCU5ld2x5IGNyZWF0ZWQgbXVsdGkgbGluZSBjb21tYW5kcyBzaG93IHVwIGFzIHNpbmdsZSBjb21tYW5kCglpbiBoaXN0b3J5LgpjYXRlZ29yeTogIW5vLXN0ZGVyci1lZApuZWVkLWN0dHk6IHllcwpuZWVkLXBhc3M6IG5vCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGFiYyBkZWYKCWZjIGVjaG8KCXMvYWJjL0ZPT0JBUi8KCSRhCgllY2hvIGEgbmV3IGxpbmUKCS4KCXcKCXEKCWZjIC1sCmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYKCUZPT0JBUiBkZWYKCWEgbmV3IGxpbmUKCTEJZWNobyBhYmMgZGVmCgkyCWVjaG8gRk9PQkFSIGRlZgoJCWVjaG8gYSBuZXcgbGluZQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCoxM1xuMzJcbmVjaG8gRk9PQkFSIGRlZlxuZWNobyBhIG5ldyBsaW5lXG5YKiQvCi0tLQpuYW1lOiBJRlMtc3BhY2UtMQpkZXNjcmlwdGlvbjoKCVNpbXBsZSB0ZXN0LCBkZWZhdWx0IElGUwpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9CglzZXQgLS0gQSBCIEMKCXNob3dhcmdzIDEgJCoKCXNob3dhcmdzIDIgIiQqIgoJc2hvd2FyZ3MgMyAkQAoJc2hvd2FyZ3MgNCAiJEAiCmV4cGVjdGVkLXN0ZG91dDoKCTwxPiA8QT4gPEI+IDxDPiAuCgk8Mj4gPEEgQiBDPiAuCgk8Mz4gPEE+IDxCPiA8Qz4gLgoJPDQ+IDxBPiA8Qj4gPEM+IC4KLS0tCm5hbWU6IElGUy1jb2xvbi0xCmRlc2NyaXB0aW9uOgoJU2ltcGxlIHRlc3QsIElGUz06CnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCUlGUz06CglzZXQgLS0gQSBCIEMKCXNob3dhcmdzIDEgJCoKCXNob3dhcmdzIDIgIiQqIgoJc2hvd2FyZ3MgMyAkQAoJc2hvd2FyZ3MgNCAiJEAiCmV4cGVjdGVkLXN0ZG91dDoKCTwxPiA8QT4gPEI+IDxDPiAuCgk8Mj4gPEE6QjpDPiAuCgk8Mz4gPEE+IDxCPiA8Qz4gLgoJPDQ+IDxBPiA8Qj4gPEM+IC4KLS0tCm5hbWU6IElGUy1udWxsLTEKZGVzY3JpcHRpb246CglTaW1wbGUgdGVzdCwgSUZTPSIiCnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCUlGUz0iIgoJc2V0IC0tIEEgQiBDCglzaG93YXJncyAxICQqCglzaG93YXJncyAyICIkKiIKCXNob3dhcmdzIDMgJEAKCXNob3dhcmdzIDQgIiRAIgpleHBlY3RlZC1zdGRvdXQ6Cgk8MT4gPEE+IDxCPiA8Qz4gLgoJPDI+IDxBQkM+IC4KCTwzPiA8QT4gPEI+IDxDPiAuCgk8ND4gPEE+IDxCPiA8Qz4gLgotLS0KbmFtZTogSUZTLXNwYWNlLWNvbG9uLTEKZGVzY3JpcHRpb246CglTaW1wbGUgdGVzdCwgSUZTPTx3aGl0ZS1zcGFjZT46CnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCUlGUz0iJElGUzoiCglzZXQgLS0KCXNob3dhcmdzIDEgJCoKCXNob3dhcmdzIDIgIiQqIgoJc2hvd2FyZ3MgMyAkQAoJc2hvd2FyZ3MgNCAiJEAiCglzaG93YXJncyA1IDogIiRAIgpleHBlY3RlZC1zdGRvdXQ6Cgk8MT4gLgoJPDI+IDw+IC4KCTwzPiAuCgk8ND4gLgoJPDU+IDw6PiAuCi0tLQpuYW1lOiBJRlMtc3BhY2UtY29sb24tMgpkZXNjcmlwdGlvbjoKCVNpbXBsZSB0ZXN0LCBJRlM9PHdoaXRlLXNwYWNlPjoKCUFUJlQga3NoIGZhaWxzIHRoaXMsIFBPU0lYIHNheXMgdGhlIHRlc3QgaXMgY29ycmVjdC4Kc3RkaW46CglzaG93YXJncygpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIGVjaG8gLW4gIjwkc19hcmc+ICI7IGRvbmU7IGVjaG8gLjsgfQoJSUZTPSIkSUZTOiIKCXNldCAtLQoJc2hvd2FyZ3MgOiIkQCIKZXhwZWN0ZWQtc3Rkb3V0OgoJPDo+IC4KLS0tCm5hbWU6IElGUy1zcGFjZS1jb2xvbi00CmRlc2NyaXB0aW9uOgoJU2ltcGxlIHRlc3QsIElGUz08d2hpdGUtc3BhY2U+OgpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9CglJRlM9IiRJRlM6IgoJc2V0IC0tCglzaG93YXJncyAiJEAkQCIKZXhwZWN0ZWQtc3Rkb3V0OgoJLgotLS0KbmFtZTogSUZTLXNwYWNlLWNvbG9uLTUKZGVzY3JpcHRpb246CglTaW1wbGUgdGVzdCwgSUZTPTx3aGl0ZS1zcGFjZT46CglEb24ndCBrbm93IHdoYXQgUE9TSVggdGhpbmtzIG9mIHRoaXMuICBBVCZUIGtzaCBkb2VzIG5vdCBkbyB0aGlzLgpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9CglJRlM9IiRJRlM6IgoJc2V0IC0tCglzaG93YXJncyAiJHtAOi19IgpleHBlY3RlZC1zdGRvdXQ6Cgk8PiAuCi0tLQpuYW1lOiBJRlMtc3Vic3QtMQpkZXNjcmlwdGlvbjoKCVNpbXBsZSB0ZXN0LCBJRlM9PHdoaXRlLXNwYWNlPjoKc3RkaW46CglzaG93YXJncygpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIGVjaG8gLW4gIjwkc19hcmc+ICI7IGRvbmU7IGVjaG8gLjsgfQoJSUZTPSIkSUZTOiIKCXg9IjpiOiA6IgoJZWNobyAtbiAnMTonOyBmb3IgaSBpbiAkeCA7IGRvIGVjaG8gLW4gIiBbJGldIiA7IGRvbmUgOyBlY2hvCgllY2hvIC1uICcyOic7IGZvciBpIGluIDpiOjogOyBkbyBlY2hvIC1uICIgWyRpXSIgOyBkb25lIDsgZWNobwoJc2hvd2FyZ3MgMyAkeAoJc2hvd2FyZ3MgNCA6Yjo6Cgl4PSJhOmI6IgoJZWNobyAtbiAnNTonOyBmb3IgaSBpbiAkeCA7IGRvIGVjaG8gLW4gIiBbJGldIiA7IGRvbmUgOyBlY2hvCglzaG93YXJncyA2ICR4Cgl4PSJhOjpjIgoJZWNobyAtbiAnNzonOyBmb3IgaSBpbiAkeCA7IGRvIGVjaG8gLW4gIiBbJGldIiA7IGRvbmUgOyBlY2hvCglzaG93YXJncyA4ICR4CgllY2hvIC1uICc5Oic7IGZvciBpIGluICR7Rk9PLWBlY2hvIC1uIGg6aWB0aDplcmV9IDsgZG8gZWNobyAtbiAiIFskaV0iIDsgZG9uZSA7IGVjaG8KCXNob3dhcmdzIDEwICR7Rk9PLWBlY2hvIC1uIGg6aWB0aDplcmV9CglzaG93YXJncyAxMSAiJHtGT08tYGVjaG8gLW4gaDppYHRoOmVyZX0iCgl4PSIgQSA6ICBCOjpEIgoJZWNobyAtbiAnMTI6JzsgZm9yIGkgaW4gJHggOyBkbyBlY2hvIC1uICIgWyRpXSIgOyBkb25lIDsgZWNobwoJc2hvd2FyZ3MgMTMgJHgKZXhwZWN0ZWQtc3Rkb3V0OgoJMTogW10gW2JdIFtdCgkyOiBbOmI6Ol0KCTwzPiA8PiA8Yj4gPD4gLgoJPDQ+IDw6Yjo6PiAuCgk1OiBbYV0gW2JdCgk8Nj4gPGE+IDxiPiAuCgk3OiBbYV0gW10gW2NdCgk8OD4gPGE+IDw+IDxjPiAuCgk5OiBbaF0gW2l0aF0gW2VyZV0KCTwxMD4gPGg+IDxpdGg+IDxlcmU+IC4KCTwxMT4gPGg6aXRoOmVyZT4gLgoJMTI6IFtBXSBbQl0gW10gW0RdCgk8MTM+IDxBPiA8Qj4gPD4gPEQ+IC4KLS0tCm5hbWU6IElGUy1zdWJzdC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbGVhZGluZyB3aGl0ZXNwYWNlIGFmdGVyIHRyaW0gZG9lcyBub3QgbWFrZSBhIGZpZWxkCnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCXg9IlggMSAyIgoJc2hvd2FyZ3MgMSBzaGlmdCAke3gjWH0KZXhwZWN0ZWQtc3Rkb3V0OgoJPDE+IDxzaGlmdD4gPDE+IDwyPiAuCi0tLQpuYW1lOiBJRlMtc3Vic3QtMy1hcnIKZGVzY3JpcHRpb246CglDaGVjayBsZWFkaW5nIElGUyBub24td2hpdGVzcGFjZSBhZnRlciB0cmltIGRvZXMgbWFrZSBhIGZpZWxkCglidXQgbGVhZGluZyBJRlMgd2hpdGVzcGFjZSBkb2VzIG5vdCwgbm9yIGVtcHR5IHJlcGxhY2VtZW50cwpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9CglzaG93YXJncyAwICR7LSt9CglJRlM9OgoJc2hvd2FyZ3MgMSAkey0rOmZvbzpiYXJ9CglJRlM9JyAnCglzaG93YXJncyAyICR7LSsgZm9vIGJhcn0KZXhwZWN0ZWQtc3Rkb3V0OgoJPDA+IC4KCTwxPiA8PiA8Zm9vPiA8YmFyPiAuCgk8Mj4gPGZvbz4gPGJhcj4gLgotLS0KbmFtZTogSUZTLXN1YnN0LTMtYXNzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbm9uLWZpZWxkIHNlbWFudGljcwpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9CglzaG93YXJncyAwIHg9JHstK30KCUlGUz06CglzaG93YXJncyAxIHg9JHstKzpmb286YmFyfQoJSUZTPScgJwoJc2hvd2FyZ3MgMiB4PSR7LSsgZm9vIGJhcn0KZXhwZWN0ZWQtc3Rkb3V0OgoJPDA+IDx4PT4gLgoJPDE+IDx4PT4gPGZvbz4gPGJhcj4gLgoJPDI+IDx4PT4gPGZvbz4gPGJhcj4gLgotLS0KbmFtZTogSUZTLXN1YnN0LTMtbGNsCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbm9uLWZpZWxkIHNlbWFudGljcywgc21hbGxlciBjb3JuZXIgY2FzZSAoTFAjMTM4MTk2NSkKc3RkaW46CglzZXQgLXgKCWxvY2FsIHJlZ2V4PSR7MjotfQoJZXhpdCAxCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9yZWdleD0vCi0tLQpuYW1lOiBJRlMtc3Vic3QtNC0xCmRlc2NyaXB0aW9uOgoJcmVwb3J0ZWQgYnkgbWlrZXNlcnYKc3RkaW46CglwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9CglhPSdzcGFjZSBkaXZkZWQgIGFyZ3VtZW50CgloZXJlJwoJSUZTPVwgIDsgc2V0IC0tICRhCglJRlM9IDsgcT0iJCoiIDsgbnE9JCoKCXBmbiAiJCoiICQqICIkcSIgIiRucSIKCVsgIiRxIiA9ICIkbnEiIF0gJiYgZWNobyA9dHJ1ZSB8fCBlY2hvID1mYWxzZQpleHBlY3RlZC1zdGRvdXQ6Cgk8c3BhY2VkaXZkZWRhcmd1bWVudAoJaGVyZT4KCTxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Cgk8c3BhY2VkaXZkZWRhcmd1bWVudAoJaGVyZT4KCTxzcGFjZWRpdmRlZGFyZ3VtZW50CgloZXJlPgoJPXRydWUKLS0tCm5hbWU6IElGUy1zdWJzdC00LTIKZGVzY3JpcHRpb246CglleHRlbmRlZCB0ZXN0c3VpdGUgYmFzZWQgb24gcHJvYmxlbSBieSBtaWtlc2VydgpzdGRpbjoKCXBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH0KCWE9J3NwYWNlIGRpdmRlZCAgYXJndW1lbnQKCWhlcmUnCglJRlM9XCAgOyBzZXQgLS0gJGEKCUlGUz0gOyBxPSIkQCIgOyBucT0kQAoJcGZuICIkKiIgJCogIiRxIiAiJG5xIgoJWyAiJHEiID0gIiRucSIgXSAmJiBlY2hvID10cnVlIHx8IGVjaG8gPWZhbHNlCmV4cGVjdGVkLXN0ZG91dDoKCTxzcGFjZWRpdmRlZGFyZ3VtZW50CgloZXJlPgoJPHNwYWNlPgoJPGRpdmRlZD4KCTxhcmd1bWVudAoJaGVyZT4KCTxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgk8c3BhY2UgZGl2ZGVkIGFyZ3VtZW50CgloZXJlPgoJPXRydWUKLS0tCm5hbWU6IElGUy1zdWJzdC00LTMKZGVzY3JpcHRpb246CglleHRlbmRlZCB0ZXN0c3VpdGUgYmFzZWQgb24gcHJvYmxlbSBieSBtaWtlc2VydgpzdGRpbjoKCXBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH0KCWE9J3NwYWNlIGRpdmRlZCAgYXJndW1lbnQKCWhlcmUnCglJRlM9XCA7IHNldCAtLSAkYTsgSUZTPQoJcXM9IiQqIgoJbnFzPSQqCglxaz0iJEAiCglucWs9JEAKCXByaW50IC1uciAtLSAnPSBxcyAnOyBwZm4gIiRxcyIKCXByaW50IC1uciAtLSAnPW5xcyAnOyBwZm4gIiRucXMiCglwcmludCAtbnIgLS0gJz0gcWsgJzsgcGZuICIkcWsiCglwcmludCAtbnIgLS0gJz1ucWsgJzsgcGZuICIkbnFrIgoJcHJpbnQgLW5yIC0tICd+IHFzICc7IHBmbiAiJCoiCglwcmludCAtbnIgLS0gJ35ucXMgJzsgcGZuICQqCglwcmludCAtbnIgLS0gJ34gcWsgJzsgcGZuICIkQCIKCXByaW50IC1uciAtLSAnfm5xayAnOyBwZm4gJEAKZXhwZWN0ZWQtc3Rkb3V0OgoJPSBxcyA8c3BhY2VkaXZkZWRhcmd1bWVudAoJaGVyZT4KCT1ucXMgPHNwYWNlZGl2ZGVkYXJndW1lbnQKCWhlcmU+Cgk9IHFrIDxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgk9bnFrIDxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgl+IHFzIDxzcGFjZWRpdmRlZGFyZ3VtZW50CgloZXJlPgoJfm5xcyA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgoJfiBxayA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgoJfm5xayA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgotLS0KbmFtZTogSUZTLXN1YnN0LTQtNApkZXNjcmlwdGlvbjoKCWV4dGVuZGVkIHRlc3RzdWl0ZSBiYXNlZCBvbiBwcm9ibGVtIGJ5IG1pa2VzZXJ2CnN0ZGluOgoJcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfQoJYT0nc3BhY2UgZGl2ZGVkICBhcmd1bWVudAoJaGVyZScKCUlGUz1cIDsgc2V0IC0tICRhOyBJRlM9Cglxcz0iJCoiCglwcmludCAtbnIgLS0gJz0gcXMgJzsgcGZuICIkcXMiCglwcmludCAtbnIgLS0gJ34gcXMgJzsgcGZuICIkKiIKCW5xcz0kKgoJcHJpbnQgLW5yIC0tICc9bnFzICc7IHBmbiAiJG5xcyIKCXByaW50IC1uciAtLSAnfm5xcyAnOyBwZm4gJCoKCXFrPSIkQCIKCXByaW50IC1uciAtLSAnPSBxayAnOyBwZm4gIiRxayIKCXByaW50IC1uciAtLSAnfiBxayAnOyBwZm4gIiRAIgoJbnFrPSRACglwcmludCAtbnIgLS0gJz1ucWsgJzsgcGZuICIkbnFrIgoJcHJpbnQgLW5yIC0tICd+bnFrICc7IHBmbiAkQApleHBlY3RlZC1zdGRvdXQ6Cgk9IHFzIDxzcGFjZWRpdmRlZGFyZ3VtZW50CgloZXJlPgoJfiBxcyA8c3BhY2VkaXZkZWRhcmd1bWVudAoJaGVyZT4KCT1ucXMgPHNwYWNlZGl2ZGVkYXJndW1lbnQKCWhlcmU+Cgl+bnFzIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Cgk9IHFrIDxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgl+IHFrIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Cgk9bnFrIDxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgl+bnFrIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Ci0tLQpuYW1lOiBJRlMtc3Vic3QtNC00cApkZXNjcmlwdGlvbjoKCWV4dGVuZGVkIHRlc3RzdWl0ZSBiYXNlZCBvbiBwcm9ibGVtIGJ5IG1pa2VzZXJ2CnN0ZGluOgoJcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfQoJYT0nc3BhY2UgZGl2ZGVkICBhcmd1bWVudAoJaGVyZScKCUlGUz1cIDsgc2V0IC0tICRhOyBJRlM9Cgl1bnNldCB2Cglxcz0ke3Y6LSIkKiJ9CglwcmludCAtbnIgLS0gJz0gcXMgJzsgcGZuICIkcXMiCglwcmludCAtbnIgLS0gJ34gcXMgJzsgcGZuICR7djotIiQqIn0KCW5xcz0ke3Y6LSQqfQoJcHJpbnQgLW5yIC0tICc9bnFzICc7IHBmbiAiJG5xcyIKCXByaW50IC1uciAtLSAnfm5xcyAnOyBwZm4gJHt2Oi0kKn0KCXFrPSR7djotIiRAIn0KCXByaW50IC1uciAtLSAnPSBxayAnOyBwZm4gIiRxayIKCXByaW50IC1uciAtLSAnfiBxayAnOyBwZm4gJHt2Oi0iJEAifQoJbnFrPSR7djotJEB9CglwcmludCAtbnIgLS0gJz1ucWsgJzsgcGZuICIkbnFrIgoJcHJpbnQgLW5yIC0tICd+bnFrICc7IHBmbiAke3Y6LSRAfQpleHBlY3RlZC1zdGRvdXQ6Cgk9IHFzIDxzcGFjZWRpdmRlZGFyZ3VtZW50CgloZXJlPgoJfiBxcyA8c3BhY2VkaXZkZWRhcmd1bWVudAoJaGVyZT4KCT1ucXMgPHNwYWNlZGl2ZGVkYXJndW1lbnQKCWhlcmU+Cgl+bnFzIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Cgk9IHFrIDxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgl+IHFrIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Cgk9bnFrIDxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgl+bnFrIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Ci0tLQpuYW1lOiBJRlMtc3Vic3QtNC01CmRlc2NyaXB0aW9uOgoJZXh0ZW5kZWQgdGVzdHN1aXRlIGJhc2VkIG9uIHByb2JsZW0gYnkgbWlrZXNlcnYKc3RkaW46CglwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9CglhPSdzcGFjZSBkaXZkZWQgIGFyZ3VtZW50CgloZXJlJwoJSUZTPVwgOyBzZXQgLS0gJGE7IElGUz0sCglxcz0iJCoiCglwcmludCAtbnIgLS0gJz0gcXMgJzsgcGZuICIkcXMiCglwcmludCAtbnIgLS0gJ34gcXMgJzsgcGZuICIkKiIKCW5xcz0kKgoJcHJpbnQgLW5yIC0tICc9bnFzICc7IHBmbiAiJG5xcyIKCXByaW50IC1uciAtLSAnfm5xcyAnOyBwZm4gJCoKCXFrPSIkQCIKCXByaW50IC1uciAtLSAnPSBxayAnOyBwZm4gIiRxayIKCXByaW50IC1uciAtLSAnfiBxayAnOyBwZm4gIiRAIgoJbnFrPSRACglwcmludCAtbnIgLS0gJz1ucWsgJzsgcGZuICIkbnFrIgoJcHJpbnQgLW5yIC0tICd+bnFrICc7IHBmbiAkQApleHBlY3RlZC1zdGRvdXQ6Cgk9IHFzIDxzcGFjZSxkaXZkZWQsYXJndW1lbnQKCWhlcmU+Cgl+IHFzIDxzcGFjZSxkaXZkZWQsYXJndW1lbnQKCWhlcmU+Cgk9bnFzIDxzcGFjZSxkaXZkZWQsYXJndW1lbnQKCWhlcmU+Cgl+bnFzIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Cgk9IHFrIDxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgl+IHFrIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Cgk9bnFrIDxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgl+bnFrIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Ci0tLQpuYW1lOiBJRlMtc3Vic3QtNC01cApkZXNjcmlwdGlvbjoKCWV4dGVuZGVkIHRlc3RzdWl0ZSBiYXNlZCBvbiBwcm9ibGVtIGJ5IG1pa2VzZXJ2CnN0ZGluOgoJcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfQoJYT0nc3BhY2UgZGl2ZGVkICBhcmd1bWVudAoJaGVyZScKCUlGUz1cIDsgc2V0IC0tICRhOyBJRlM9LAoJdW5zZXQgdgoJcXM9JHt2Oi0iJCoifQoJcHJpbnQgLW5yIC0tICc9IHFzICc7IHBmbiAiJHFzIgoJcHJpbnQgLW5yIC0tICd+IHFzICc7IHBmbiAke3Y6LSIkKiJ9CglucXM9JHt2Oi0kKn0KCXByaW50IC1uciAtLSAnPW5xcyAnOyBwZm4gIiRucXMiCglwcmludCAtbnIgLS0gJ35ucXMgJzsgcGZuICR7djotJCp9Cglxaz0ke3Y6LSIkQCJ9CglwcmludCAtbnIgLS0gJz0gcWsgJzsgcGZuICIkcWsiCglwcmludCAtbnIgLS0gJ34gcWsgJzsgcGZuICR7djotIiRAIn0KCW5xaz0ke3Y6LSRAfQoJcHJpbnQgLW5yIC0tICc9bnFrICc7IHBmbiAiJG5xayIKCXByaW50IC1uciAtLSAnfm5xayAnOyBwZm4gJHt2Oi0kQH0KZXhwZWN0ZWQtc3Rkb3V0OgoJPSBxcyA8c3BhY2UsZGl2ZGVkLGFyZ3VtZW50CgloZXJlPgoJfiBxcyA8c3BhY2UsZGl2ZGVkLGFyZ3VtZW50CgloZXJlPgoJPW5xcyA8c3BhY2UsZGl2ZGVkLGFyZ3VtZW50CgloZXJlPgoJfm5xcyA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgoJPSBxayA8c3BhY2UgZGl2ZGVkIGFyZ3VtZW50CgloZXJlPgoJfiBxayA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgoJPW5xayA8c3BhY2UgZGl2ZGVkIGFyZ3VtZW50CgloZXJlPgoJfm5xayA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgotLS0KbmFtZTogSUZTLXN1YnN0LTUKZGVzY3JpcHRpb246CglleHRlbmRlZCB0ZXN0c3VpdGUgYmFzZWQgb24gSUZTLXN1YnN0LTMKCWRpZmZlcnMgc2xpZ2h0bHkgZnJvbSBrc2g5MzoKCS0gb21pdCB0cmFpbGluZyBmaWVsZCBpbiBhM3puYSwgYTdpbmEgKHVucXVvdGVkICRAIGV4cGFuc2lvbikKCS0gaGFzIGV4dHJhIG1pZGRsZSBmaWVsZHMgaW4gYjVpbnMsIGI3aW5hIChJRlNfTldTIHVucXVvdGVkIGV4cGFuc2lvbikKCWRpZmZlcnMgc2xpZ2h0bHkgZnJvbSBiYXNoOgoJLSBvbWl0IGxlYWRpbmcgZmllbGQgaW4gYTVpbnMsIGE3aW5hIChJRlNfTldTIHVucXVvdGVkIGV4cGFuc2lvbikKCWRpZmZlcnMgc2xpZ2h0bHkgZnJvbSB6c2g6CgktIGRpZmZlcnMgaW4gYXNzaWdubWVudCwgbm90IGV4cGFuc2lvbjsgcHJvYmFibHkgenNoIGJ1ZwoJLSBoYXMgZXh0cmEgbWlkZGxlIGZpZWxkcyBpbiBiNWlucywgYjdpbmEgKElGU19OV1MgdW5xdW90ZWQgZXhwYW5zaW9uKQoJJ2VtdWxhdGUgc2gnIHpzaCBoYXMgZXh0cmEgZmllbGRzIGluCgktIGE1aW5zIChJRlNfTldTIHVucXVvdGVkICQqKQoJLSBiNWlucywgbWF0Y2hpbmcgbWtzaOKAmXMKCSEhV0FSTklORyEhIG1vcmUgdG8gY29tZTogaHR0cDovL2F1c3Rpbmdyb3VwYnVncy5uZXQvdmlldy5waHA/aWQ9ODg4CnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9OyBzZXQgLS0gIiIgMiAiIjsgcGZiICQqOyB4PSQqOyBwZm4gIiR4IicKCWVjaG8gJz1hMXpucycKCSIkX19wcm9nbmFtZSIgLWMgJ3BmYigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICJbJHNfYXJnXSI7IGRvbmU7IH07IHBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH07CgkJSUZTPTsgc2V0IC0tICIiIDIgIiI7IHBmYiAiJCoiOyB4PSIkKiI7IHBmbiAiJHgiJwoJZWNobyAnPWEyenFzJwoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9OyBzZXQgLS0gIiIgMiAiIjsgcGZiICRAOyB4PSRAOyBwZm4gIiR4IicKCWVjaG8gJz1hM3puYScKCSIkX19wcm9nbmFtZSIgLWMgJ3BmYigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICJbJHNfYXJnXSI7IGRvbmU7IH07IHBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH07CgkJSUZTPTsgc2V0IC0tICIiIDIgIiI7IHBmYiAiJEAiOyB4PSIkQCI7IHBmbiAiJHgiJwoJZWNobyAnPWE0enFhJwoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9LDsgc2V0IC0tICIiIDIgIiI7IHBmYiAkKjsgeD0kKjsgcGZuICIkeCInCgllY2hvICc9YTVpbnMnCgkiJF9fcHJvZ25hbWUiIC1jICdwZmIoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiWyRzX2FyZ10iOyBkb25lOyB9OyBwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9OwoJCUlGUz0sOyBzZXQgLS0gIiIgMiAiIjsgcGZiICIkKiI7IHg9IiQqIjsgcGZuICIkeCInCgllY2hvICc9YTZpcXMnCgkiJF9fcHJvZ25hbWUiIC1jICdwZmIoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiWyRzX2FyZ10iOyBkb25lOyB9OyBwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9OwoJCUlGUz0sOyBzZXQgLS0gIiIgMiAiIjsgcGZiICRAOyB4PSRAOyBwZm4gIiR4IicKCWVjaG8gJz1hN2luYScKCSIkX19wcm9nbmFtZSIgLWMgJ3BmYigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICJbJHNfYXJnXSI7IGRvbmU7IH07IHBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH07CgkJSUZTPSw7IHNldCAtLSAiIiAyICIiOyBwZmIgIiRAIjsgeD0iJEAiOyBwZm4gIiR4IicKCWVjaG8gJz1hOGlxYScKCSIkX19wcm9nbmFtZSIgLWMgJ3BmYigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICJbJHNfYXJnXSI7IGRvbmU7IH07IHBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH07CgkJSUZTPTsgc2V0IC0tIEEgQiAiIiAiIiBDOyBwZmIgJCo7IHg9JCo7IHBmbiAiJHgiJwoJZWNobyAnPWIxem5zJwoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9OyBzZXQgLS0gQSBCICIiICIiIEM7IHBmYiAiJCoiOyB4PSIkKiI7IHBmbiAiJHgiJwoJZWNobyAnPWIyenFzJwoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9OyBzZXQgLS0gQSBCICIiICIiIEM7IHBmYiAkQDsgeD0kQDsgcGZuICIkeCInCgllY2hvICc9YjN6bmEnCgkiJF9fcHJvZ25hbWUiIC1jICdwZmIoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiWyRzX2FyZ10iOyBkb25lOyB9OyBwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9OwoJCUlGUz07IHNldCAtLSBBIEIgIiIgIiIgQzsgcGZiICIkQCI7IHg9IiRAIjsgcGZuICIkeCInCgllY2hvICc9YjR6cWEnCgkiJF9fcHJvZ25hbWUiIC1jICdwZmIoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiWyRzX2FyZ10iOyBkb25lOyB9OyBwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9OwoJCUlGUz0sOyBzZXQgLS0gQSBCICIiICIiIEM7IHBmYiAkKjsgeD0kKjsgcGZuICIkeCInCgllY2hvICc9YjVpbnMnCgkiJF9fcHJvZ25hbWUiIC1jICdwZmIoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiWyRzX2FyZ10iOyBkb25lOyB9OyBwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9OwoJCUlGUz0sOyBzZXQgLS0gQSBCICIiICIiIEM7IHBmYiAiJCoiOyB4PSIkKiI7IHBmbiAiJHgiJwoJZWNobyAnPWI2aXFzJwoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9LDsgc2V0IC0tIEEgQiAiIiAiIiBDOyBwZmIgJEA7IHg9JEA7IHBmbiAiJHgiJwoJZWNobyAnPWI3aW5hJwoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9LDsgc2V0IC0tIEEgQiAiIiAiIiBDOyBwZmIgIiRAIjsgeD0iJEAiOyBwZm4gIiR4IicKCWVjaG8gJz1iOGlxYScKZXhwZWN0ZWQtc3Rkb3V0OgoJWzJdCgk8Mj4KCT1hMXpucwoJWzJdCgk8Mj4KCT1hMnpxcwoJWzJdCgk8IDIgPgoJPWEzem5hCglbXQoJWzJdCglbXQoJPCAyID4KCT1hNHpxYQoJWzJdCgk8LDIsPgoJPWE1aW5zCglbLDIsXQoJPCwyLD4KCT1hNmlxcwoJWzJdCgk8IDIgPgoJPWE3aW5hCglbXQoJWzJdCglbXQoJPCAyID4KCT1hOGlxYQoJW0FdCglbQl0KCVtDXQoJPEFCQz4KCT1iMXpucwoJW0FCQ10KCTxBQkM+Cgk9YjJ6cXMKCVtBXQoJW0JdCglbQ10KCTxBIEIgICBDPgoJPWIzem5hCglbQV0KCVtCXQoJW10KCVtdCglbQ10KCTxBIEIgICBDPgoJPWI0enFhCglbQV0KCVtCXQoJW10KCVtdCglbQ10KCTxBLEIsLCxDPgoJPWI1aW5zCglbQSxCLCwsQ10KCTxBLEIsLCxDPgoJPWI2aXFzCglbQV0KCVtCXQoJW10KCVtdCglbQ10KCTxBIEIgICBDPgoJPWI3aW5hCglbQV0KCVtCXQoJW10KCVtdCglbQ10KCTxBIEIgICBDPgoJPWI4aXFhCi0tLQpuYW1lOiBJRlMtc3Vic3QtNgpkZXNjcmlwdGlvbjoKCVJlZ3Jlc3Npb24gd3J0LiB2ZWN0b3IgZXhwYW5zaW9uIGluIHRyaW0Kc3RkaW46CglzaG93YXJncygpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIGVjaG8gLW4gIjwkc19hcmc+ICI7IGRvbmU7IGVjaG8gLjsgfQoJSUZTPQoJeD1hYmMKCXNldCAtLSBhIGIKCXNob3dhcmdzICR7eCMkKn0KZXhwZWN0ZWQtc3Rkb3V0OgoJPGM+IC4KLS0tCm5hbWU6IElGUy1zdWJzdC03CmRlc2NyaXB0aW9uOgoJa3NoOTMgYnVnIHdydC4gdmVjdG9yIGV4cGFuc2lvbiBpbiB0cmltCnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCUlGUz0iKiIKCWE9YWJjZAoJc2V0IC0tICcnIGMKCXNob3dhcmdzICIkKiIgJHthIyMiJCoifQpleHBlY3RlZC1zdGRvdXQ6Cgk8KmM+IDxhYmNkPiAuCi0tLQpuYW1lOiBJRlMtc3Vic3QtOApkZXNjcmlwdGlvbjoKCWh0dHA6Ly9hdXN0aW5ncm91cGJ1Z3MubmV0L3ZpZXcucGhwP2lkPTIyMQpzdGRpbjoKCW4oKSB7IGVjaG8gIiQjIjsgfTsgbiAiJHtmb28tJEB9IgpleHBlY3RlZC1zdGRvdXQ6CgkxCi0tLQpuYW1lOiBJRlMtc3Vic3QtOQpkZXNjcmlwdGlvbjoKCVNjYWxhciBjb250ZXh0IGZvciAkKi8kQCBpbiBbWyBhbmQgY2FzZQpzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJ0lGUz07IHNldCBhIGI7IFtbICQqID0gIiQxJDIiIF1dOyBlY2hvIDEgJD8nIHNoIGEgYgoJIiRfX3Byb2duYW1lIiAtYyAnSUZTPTsgW1sgJCogPSBhYiBdXTsgZWNobyAyICIkPyInIHNoIGEgYgoJIiRfX3Byb2duYW1lIiAtYyAnSUZTPTsgW1sgIiQqIiA9IGFiIF1dOyBlY2hvIDMgIiQ/Iicgc2ggYSBiCgkiJF9fcHJvZ25hbWUiIC1jICdJRlM9OyBbWyAkKiA9IGEgXV07IGVjaG8gNCAiJD8iJyBzaCBhIGIKCSIkX19wcm9nbmFtZSIgLWMgJ0lGUz07IFtbICIkKiIgPSBhIF1dOyBlY2hvIDUgIiQ/Iicgc2ggYSBiCgkiJF9fcHJvZ25hbWUiIC1jICdJRlM9OyBbWyAiJEAiID0gYSBdXTsgZWNobyA2ICIkPyInIHNoIGEgYgoJIiRfX3Byb2duYW1lIiAtYyAnSUZTPTsgY2FzZSAiJEAiIGluIGEpIGVjaG8gNyBhOzsgYWIpIGVjaG8gNyBiOzsgYVwgYikgZWNobyA3IG9rOzsgZXNhYycgc2ggYSBiCgkiJF9fcHJvZ25hbWUiIC1jICdJRlM9OyBjYXNlICQqIGluIGEpIGVjaG8gOCBhOzsgYWIpIGVjaG8gOCBvazs7IGVzYWMnIHNoIGEgYgoJIiRfX3Byb2duYW1lIiAtYyAncGZzcCgpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1uciAtLSAiPCRzX2FyZz4gIjsgZG9uZTsgcHJpbnQgLjsgfTsgSUZTPTsgc3Rhcj0kKiBhdD0iJEAiOyBwZnNwIDkgIiRzdGFyIiAiJGF0Iicgc2ggYSBiCmV4cGVjdGVkLXN0ZG91dDoKCTEgMAoJMiAwCgkzIDAKCTQgMQoJNSAxCgk2IDEKCTcgb2sKCTggb2sKCTw5PiA8YWI+IDxhIGI+IC4KLS0tCm5hbWU6IElGUy1zdWJzdC0xMApkZXNjcmlwdGlvbjoKCVNjYWxhciBjb250ZXh0IGluICR7dmFyPSRzdWJzdH0Kc3RkaW46CglzaG93YXJncygpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIGVjaG8gLW4gIjwkc19hcmc+ICI7IGRvbmU7IGVjaG8gLjsgfQoJc2V0IC0tIG9uZSAidHdvIHRocmVlIiBmb3VyCgl1bnNldCAtdiB2YXIKCXNhdmVfSUZTPSRJRlMKCUlGUz0KCXNldCAtLSAke3Zhcj0kKn0KCUlGUz0kc2F2ZV9JRlMKCWVjaG8gInZhcj0kdmFyIgoJc2hvd2FyZ3MgIiRAIgpleHBlY3RlZC1zdGRvdXQ6Cgl2YXI9b25ldHdvIHRocmVlZm91cgoJPG9uZXR3byB0aHJlZWZvdXI+IC4KLS0tCm5hbWU6IElGUy1zdWJzdC0xMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGxlYWRpbmcgbm9uLXdoaXRlc3BhY2UgYWZ0ZXIgdHJpbSBtYWtlcyBvbmx5IG9uZSBmaWVsZApzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9Cgl2PSJmb28hb25lIXR3byF0aHJlZSIKCUlGUz0iISIKCXNob3dhcmdzIHggJHt2OjN9IHkKZXhwZWN0ZWQtc3Rkb3V0OgoJPHg+IDw+IDxvbmU+IDx0d28+IDx0aHJlZT4gPHk+IC4KLS0tCm5hbWU6IElGUy1hcml0aC0xCmRlc2NyaXB0aW9uOgoJaHR0cDovL2F1c3Rpbmdyb3VwYnVncy5uZXQvdmlldy5waHA/aWQ9ODMyCnN0ZGluOgoJJHtaU0hfVkVSU0lPTitmYWxzZX0gfHwgZW11bGF0ZSBzaAoJJHtCQVNIX1ZFUlNJT04rc2V0IC1vIHBvc2l4fQoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCUlGUz0wCglzaG93YXJncyAkKCgxMjMwNDU2KSkKZXhwZWN0ZWQtc3Rkb3V0OgoJPDEyMz4gPDQ1Nj4gLgotLS0KbmFtZTogaW50ZWdlci1iYXNlLWVyci0xCmRlc2NyaXB0aW9uOgoJQ2FuJ3QgaGF2ZSAwIGJhc2UgKGNhdXNlcyBzaGVsbCB0byBleGl0KQpleHBlY3RlZC1leGl0OiBlICE9IDAKc3RkaW46Cgl0eXBlc2V0IC1pIGkKCWk9MwoJaT0wIzQKCWVjaG8gJGkKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXi4qOi4qMCM0LipcbiQvCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtZXJyLTIKZGVzY3JpcHRpb246CglDYW4ndCBoYXZlIG11bHRpcGxlIGJhc2VzIGluIGEgJ2NvbnN0YW50JyAoY2F1c2VzIHNoZWxsIHRvIGV4aXQpCgkoa3NoODggZmFpbHMgdGhpcyB0ZXN0KQpleHBlY3RlZC1leGl0OiBlICE9IDAKc3RkaW46Cgl0eXBlc2V0IC1pIGkKCWk9MwoJaT0yIzExMCMxMQoJZWNobyAkaQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eLio6LioyIzExMCMxMS4qXG4kLwotLS0KbmFtZTogaW50ZWdlci1iYXNlLWVyci0zCmRlc2NyaXB0aW9uOgoJU3ludGF4IGVycm9ycyBpbiBleHByZXNzaW9ucyBhbmQgZWZmZWN0cyBvbiBiYXNlcwoJKGludGVyYWN0aXZlIHNvIGVycm9ycyBkb24ndCBjYXVzZSBleGl0cykKCShrc2g4OCBmYWlscyB0aGlzIHRlc3QgLSBzaGVsbCBleGl0cywgZXZlbiB3aXRoIC1pKQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKc3RkaW46CglQUzE9ICMgbWluaW1pc2UgcHJvbXB0IGhhc3NsZXMKCXR5cGVzZXQgLWk0IGE9MTAKCXR5cGVzZXQgLWkgYT0yKwoJZWNobyAkYQoJdHlwZXNldCAtaTQgYT0xMAoJdHlwZXNldCAtaTIgYT0yKwoJZWNobyAkYQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eKFsjXCRdICk/Lio6LioyKy4qXG4uKjouKjIrLipcbiQvCmV4cGVjdGVkLXN0ZG91dDoKCTQjMjIKCTQjMjIKLS0tCm5hbWU6IGludGVnZXItYmFzZS1lcnItNApkZXNjcmlwdGlvbjoKCUFyZSBpbnZhbGlkIGRpZ2l0cyAoYWNjb3JkaW5nIHRvIGJhc2UpIGVycm9ycz8KCShrc2g5MyBmYWlscyB0aGlzIHRlc3QpCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApzdGRpbjoKCXR5cGVzZXQgLWkgaTsKCWk9MyM0CmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL14oWyNcJF0gKT8uKjouKjMjNC4qXG4kLwotLS0KbmFtZTogaW50ZWdlci1iYXNlLTEKZGVzY3JpcHRpb246CglNaXNzaW5nIG51bWJlciBhZnRlciBiYXNlIGlzIHRyZWF0ZWQgYXMgMC4Kc3RkaW46Cgl0eXBlc2V0IC1pIGkKCWk9MwoJaT0yIwoJZWNobyAkaQpleHBlY3RlZC1zdGRvdXQ6CgkwCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtMgpkZXNjcmlwdGlvbjoKCUNoZWNrICdzdGlja3luZXNzJyBvZiBiYXNlIGluIHZhcmlvdXMgc2l0dWF0aW9ucwpzdGRpbjoKCXR5cGVzZXQgLWkgaT04CgllY2hvICRpCgllY2hvIC0tLS0tLS0tLS0gQQoJdHlwZXNldCAtaTQgaj04CgllY2hvICRqCgllY2hvIC0tLS0tLS0tLS0gQgoJdHlwZXNldCAtaSBrPTgKCXR5cGVzZXQgLWk0IGs9OAoJZWNobyAkawoJZWNobyAtLS0tLS0tLS0tIEMKCXR5cGVzZXQgLWk0IGwKCWw9MyMxMAoJZWNobyAkbAoJZWNobyAtLS0tLS0tLS0tIEQKCXR5cGVzZXQgLWkgbQoJbT0zIzEwCgllY2hvICRtCgllY2hvIC0tLS0tLS0tLS0gRQoJbj0yIzExCgl0eXBlc2V0IC1pIG4KCWVjaG8gJG4KCW49MTAKCWVjaG8gJG4KCWVjaG8gLS0tLS0tLS0tLSBGCgl0eXBlc2V0IC1pOCBvPTEyCgl0eXBlc2V0IC1pNCBvCgllY2hvICRvCgllY2hvIC0tLS0tLS0tLS0gRwoJdHlwZXNldCAtaSBwCglsZXQgcD04IzEyCgllY2hvICRwCmV4cGVjdGVkLXN0ZG91dDoKCTgKCS0tLS0tLS0tLS0gQQoJNCMyMAoJLS0tLS0tLS0tLSBCCgk0IzIwCgktLS0tLS0tLS0tIEMKCTQjMwoJLS0tLS0tLS0tLSBECgkzIzEwCgktLS0tLS0tLS0tIEUKCTIjMTEKCTIjMTAxMAoJLS0tLS0tLS0tLSBGCgk0IzMwCgktLS0tLS0tLS0tIEcKCTgjMTIKLS0tCm5hbWU6IGludGVnZXItYmFzZS0zCmRlc2NyaXB0aW9uOgoJTW9yZSBiYXNlIHBhcnNpbmcgKGhtbSBkb2Vzbid0IHRlc3QgbXVjaC4uKQpzdGRpbjoKCXR5cGVzZXQgLWkgYWEKCWFhPTErMTIjMTArMgoJZWNobyAkYWEKCXR5cGVzZXQgLWkgYmIKCWJiPTErJGFhCgllY2hvICRiYgoJdHlwZXNldCAtaSBiYgoJYmI9JGFhCgllY2hvICRiYgoJdHlwZXNldCAtaSBjYwoJY2M9JGFhCgllY2hvICRjYwpleHBlY3RlZC1zdGRvdXQ6CgkxNQoJMTYKCTE1CgkxNQotLS0KbmFtZTogaW50ZWdlci1iYXNlLTQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoaW5ncyBub3QgZGVjbGFyZWQgYXMgaW50ZWdlcnMgYXJlIG5vdCBtYWRlIGludGVnZXJzLAoJYWxzbywgY2hlY2sgaWYgYmFzZSBpcyBub3QgcmVzZXQgYnkgLWkgd2l0aCBubyBhcmd1bWVudHMuCgkoa3NoOTMgZmFpbHMgLSBwcmludHMgMTAjMjAgLSBnbyBmaWd1cmUpCnN0ZGluOgoJeHg9MjAKCWxldCB4eD0xMAoJdHlwZXNldCAtaSB8IGdyZXAgJ154eD0nCgl0eXBlc2V0IC1pNCBhPTEwCgl0eXBlc2V0IC1pIGE9MjAKCWVjaG8gJGEKZXhwZWN0ZWQtc3Rkb3V0OgoJNCMxMTAKLS0tCm5hbWU6IGludGVnZXItYmFzZS01CmRlc2NyaXB0aW9uOgoJTW9yZSBiYXNlIHN0dWZmCnN0ZGluOgoJdHlwZXNldCAtaTQgYT0zIzEwCgllY2hvICRhCgllY2hvIC0tCgl0eXBlc2V0IC1pIGo9MwoJaj0nfjMnCgllY2hvICRqCgllY2hvIC0tCgl0eXBlc2V0IC1pIGs9MQoJeFtrPWsrMV09MwoJZWNobyAkawoJZWNobyAtLQoJdHlwZXNldCAtaSBsCglmb3IgbCBpbiAxIDIrMyA0OyBkbyBlY2hvICRsOyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCTQjMwoJLS0KCS00CgktLQoJMgoJLS0KCTEKCTUKCTQKLS0tCm5hbWU6IGludGVnZXItYmFzZS02CmRlc2NyaXB0aW9uOgoJRXZlbiBtb3JlIGJhc2Ugc3R1ZmYKCShrc2g5MyBmYWlscyB0aGlzIHRlc3QgLSBwcmludHMgMCkKc3RkaW46Cgl0eXBlc2V0IC1pNyBpCglpPQoJZWNobyAkaQpleHBlY3RlZC1zdGRvdXQ6Cgk3IzAKLS0tCm5hbWU6IGludGVnZXItYmFzZS03CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBub24taW50ZWdlciBwYXJhbWV0ZXJzIGRvbid0IGdldCBiYXNlcyBhc3NpZ25lZApzdGRpbjoKCWVjaG8gJCgoIHp6ID0gOCMxMDAgKSkKCWVjaG8gJHp6CmV4cGVjdGVkLXN0ZG91dDoKCTY0Cgk2NAotLS0KbmFtZTogaW50ZWdlci1iYXNlLTgKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGJhc2UtMzYgd29ya3MgKGZ1bGwgc3BhbikKc3RkaW46CgllY2hvIDE6JCgoMzYjMTA5QVopKS4KCXR5cGVzZXQgLWkzNiB4PTE2OTE2NzUKCWVjaG8gMjokeC4KCXR5cGVzZXQgLVV1aTM2IHgKCWVjaG8gMzokeC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMToxNjkxNjc1LgoJMjozNiMxMDlhei4KCTM6MzYjMTA5QVouCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtY2hlY2stZmxhdApkZXNjcmlwdGlvbjoKCUNoZWNrIGJlaGF2aW91ciBkb2VzIG5vdCBtYXRjaCBQT1N1WCAoZXhjZXB0IGlmIHNldCAtbyBwb3NpeCksCgliZWNhdXNlIGEgbm90IHR5cGUtc2FmZSBzY3JpcHRpbmcgbGFuZ3VhZ2UgaGFzICpubyogYnVzaW5lc3MKCWludGVycHJldGluZyB0aGUgc3RyaW5nICIwMTAiIGFzIG9jdGFsIG51bWJlciBlaWdodCAoZGFuZ2Vyb3VzKS4Kc3RkaW46CgllY2hvIDEgIiQoIiRfX3Byb2duYW1lIiAtYyAnZWNobyA6JCgoMTApKS8kKCgwMTApKSwkKCgweDEwKSk6JykiIC4KCWVjaG8gMiAiJCgiJF9fcHJvZ25hbWUiIC1vIHBvc2l4IC1jICdlY2hvIDokKCgxMCkpLyQoKDAxMCkpLCQoKDB4MTApKTonKSIgLgoJZWNobyAzICIkKCIkX19wcm9nbmFtZSIgLW8gc2ggLWMgJ2VjaG8gOiQoKDEwKSkvJCgoMDEwKSksJCgoMHgxMCkpOicpIiAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgOjEwLzEwLDE2OiAuCgkyIDoxMC84LDE2OiAuCgkzIDoxMC8xMCwxNjogLgotLS0KbmFtZTogaW50ZWdlci1iYXNlLWNoZWNrLW51bWVyaWMtZnJvbS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYmVoYXZpb3VyIGZvciBiYXNlIG9uZQpjYXRlZ29yeTogIXNoZWxsOmViY2RpYy15ZXMKc3RkaW46CgllY2hvIDE6JCgoMSMxKSkwLgpleHBlY3RlZC1zdGRvdXQ6CgkxOjQ5MC4KLS0tCm5hbWU6IGludGVnZXItYmFzZS1jaGVjay1udW1lcmljLWZyb20tMS1lYmNkaWMKZGVzY3JpcHRpb246CglDaGVjayBiZWhhdmlvdXIgZm9yIGJhc2Ugb25lCmNhdGVnb3J5OiAhc2hlbGw6ZWJjZGljLW5vCnN0ZGluOgoJZWNobyAxOiQoKDEjMSkpMC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMToyNDEwLgotLS0KbmFtZTogaW50ZWdlci1iYXNlLWNoZWNrLW51bWVyaWMtZnJvbS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYmVoYXZpb3VyIGZvciBiYXNlIHR3byB0byAzNiwgYW5kIHRoYXQgMzcgZGVncmFkZXMgdG8gMTAKc3RkaW46CglpPTEKCXdoaWxlICgoICsraSA8PSAzNyApKTsgZG8KCQlldmFsICdlY2hvICckaSc6JCgoJyRpJyMxMCkpLicKCWRvbmUKCWVjaG8gMzc6JCgkX19wcm9nbmFtZSAtYyAnZWNobyAkKCgzNyMxMCkpJykuJD86CmV4cGVjdGVkLXN0ZG91dDoKCTI6Mi4KCTM6My4KCTQ6NC4KCTU6NS4KCTY6Ni4KCTc6Ny4KCTg6OC4KCTk6OS4KCTEwOjEwLgoJMTE6MTEuCgkxMjoxMi4KCTEzOjEzLgoJMTQ6MTQuCgkxNToxNS4KCTE2OjE2LgoJMTc6MTcuCgkxODoxOC4KCTE5OjE5LgoJMjA6MjAuCgkyMToyMS4KCTIyOjIyLgoJMjM6MjMuCgkyNDoyNC4KCTI1OjI1LgoJMjY6MjYuCgkyNzoyNy4KCTI4OjI4LgoJMjk6MjkuCgkzMDozMC4KCTMxOjMxLgoJMzI6MzIuCgkzMzozMy4KCTM0OjM0LgoJMzU6MzUuCgkzNjozNi4KCTM3OjEwLgoJMzc6MTAuMDoKLS0tCm5hbWU6IGludGVnZXItYmFzZS1jaGVjay1udW1lcmljLXRvLTEKZGVzY3JpcHRpb246CglDaGVjayBiZWhhdmlvdXIgZm9yIGJhc2Ugb25lCmNhdGVnb3J5OiAhc2hlbGw6ZWJjZGljLXllcwpzdGRpbjoKCWk9MQoJdHlwZXNldCAtVXVpJGkgeD0weDQwCglldmFsICJ0eXBlc2V0IC1pMTAgeT0keCIKCXByaW50ICRpOiR4LiR5LgpleHBlY3RlZC1zdGRvdXQ6CgkxOjEjQC42NC4KLS0tCm5hbWU6IGludGVnZXItYmFzZS1jaGVjay1udW1lcmljLXRvLTEtZWJjZGljCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYmVoYXZpb3VyIGZvciBiYXNlIG9uZQpjYXRlZ29yeTogIXNoZWxsOmViY2RpYy1ubwpzdGRpbjoKCWk9MQoJdHlwZXNldCAtVXVpJGkgeD0weDdDCglldmFsICJ0eXBlc2V0IC1pMTAgeT0keCIKCXByaW50ICRpOiR4LiR5LgpleHBlY3RlZC1zdGRvdXQ6CgkxOjEjQC4xMjQuCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtY2hlY2stbnVtZXJpYy10by0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYmVoYXZpb3VyIGZvciBiYXNlIHR3byB0byAzNiwgYW5kIHRoYXQgMzcgZGVncmFkZXMgdG8gMTAKc3RkaW46CglpPTEKCXdoaWxlICgoICsraSA8PSAzNyApKTsgZG8KCQl0eXBlc2V0IC1VdWkkaSB4PTB4NDAKCQlldmFsICJ0eXBlc2V0IC1pMTAgeT0keCIKCQlwcmludCAkaTokeC4keS4KCWRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJMjoyIzEwMDAwMDAuNjQuCgkzOjMjMjEwMS42NC4KCTQ6NCMxMDAwLjY0LgoJNTo1IzIyNC42NC4KCTY6NiMxNDQuNjQuCgk3OjcjMTIxLjY0LgoJODo4IzEwMC42NC4KCTk6OSM3MS42NC4KCTEwOjY0LjY0LgoJMTE6MTEjNTkuNjQuCgkxMjoxMiM1NC42NC4KCTEzOjEzIzRDLjY0LgoJMTQ6MTQjNDguNjQuCgkxNToxNSM0NC42NC4KCTE2OjE2IzQwLjY0LgoJMTc6MTcjM0QuNjQuCgkxODoxOCMzQS42NC4KCTE5OjE5IzM3LjY0LgoJMjA6MjAjMzQuNjQuCgkyMToyMSMzMS42NC4KCTIyOjIyIzJLLjY0LgoJMjM6MjMjMkkuNjQuCgkyNDoyNCMyRy42NC4KCTI1OjI1IzJFLjY0LgoJMjY6MjYjMkMuNjQuCgkyNzoyNyMyQS42NC4KCTI4OjI4IzI4LjY0LgoJMjk6MjkjMjYuNjQuCgkzMDozMCMyNC42NC4KCTMxOjMxIzIyLjY0LgoJMzI6MzIjMjAuNjQuCgkzMzozMyMxVi42NC4KCTM0OjM0IzFVLjY0LgoJMzU6MzUjMVQuNjQuCgkzNjozNiMxUy42NC4KCTM3OjY0LjY0LgotLS0KbmFtZTogaW50ZWdlci1hcml0aG1ldGljLXNwYW4KZGVzY3JpcHRpb246CglDaGVjayB3cmFwYXJvdW5kIGFuZCBzaXplIHRoYXQgaXMgZGVmaW5lZCBpbiBta3NoCmNhdGVnb3J5OiBpbnQ6MzIKc3RkaW46CgllY2hvIHM6JCgoMjE0NzQ4MzY0NysxKSkuJCgoKDIxNDc0ODM2NDcqMikrMSkpLiQoKCgyMTQ3NDgzNjQ3KjIpKzIpKS4KCWVjaG8gdTokKCgjMjE0NzQ4MzY0NysxKSkuJCgoIygyMTQ3NDgzNjQ3KjIpKzEpKS4kKCgjKDIxNDc0ODM2NDcqMikrMikpLgpleHBlY3RlZC1zdGRvdXQ6CglzOi0yMTQ3NDgzNjQ4Li0xLjAuCgl1OjIxNDc0ODM2NDguNDI5NDk2NzI5NS4wLgotLS0KbmFtZTogaW50ZWdlci1hcml0aG1ldGljLXNwYW4tNjQKZGVzY3JpcHRpb246CglDaGVjayB3cmFwYXJvdW5kIGFuZCBzaXplIHRoYXQgaXMgZGVmaW5lZCBpbiBta3NoCmNhdGVnb3J5OiBpbnQ6NjQKc3RkaW46CgllY2hvIHM6JCgoOTIyMzM3MjAzNjg1NDc3NTgwNysxKSkuJCgoKDkyMjMzNzIwMzY4NTQ3NzU4MDcqMikrMSkpLiQoKCg5MjIzMzcyMDM2ODU0Nzc1ODA3KjIpKzIpKS4KCWVjaG8gdTokKCgjOTIyMzM3MjAzNjg1NDc3NTgwNysxKSkuJCgoIyg5MjIzMzcyMDM2ODU0Nzc1ODA3KjIpKzEpKS4kKCgjKDkyMjMzNzIwMzY4NTQ3NzU4MDcqMikrMikpLgpleHBlY3RlZC1zdGRvdXQ6CglzOi05MjIzMzcyMDM2ODU0Nzc1ODA4Li0xLjAuCgl1OjkyMjMzNzIwMzY4NTQ3NzU4MDguMTg0NDY3NDQwNzM3MDk1NTE2MTUuMC4KLS0tCm5hbWU6IGludGVnZXItc2l6ZS1GQUlMLXRvLWRldGVjdApkZXNjcmlwdGlvbjoKCU5vdGlmeSB0aGUgdXNlciB0aGF0IHRoZWlyIGludHMgYXJlIG5vdCAzMiBvciA2NCBiaXQKY2F0ZWdvcnk6IGludDp1CnN0ZGluOgoJOgotLS0KbmFtZTogbGluZW5vLXN0ZGluCmRlc2NyaXB0aW9uOgoJU2VlIGlmICRMSU5FTk8gaXMgdXBkYXRlZCBhbmQgY2FuIGJlIG1vZGlmaWVkLgpzdGRpbjoKCWVjaG8gQSAkTElORU5PCgllY2hvIEIgJExJTkVOTwoJTElORU5PPTIwCgllY2hvIEMgJExJTkVOTwpleHBlY3RlZC1zdGRvdXQ6CglBIDEKCUIgMgoJQyAyMAotLS0KbmFtZTogbGluZW5vLWluYwpkZXNjcmlwdGlvbjoKCVNlZSBpZiAkTElORU5PIGlzIHNldCBmb3IgLidkIGZpbGVzLgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiZG90ZmlsZSIKCWVjaG8gZG90IEEgJExJTkVOTwoJZWNobyBkb3QgQiAkTElORU5PCglMSU5FTk89MjAKCWVjaG8gZG90IEMgJExJTkVOTwpzdGRpbjoKCWVjaG8gQSAkTElORU5PCgllY2hvIEIgJExJTkVOTwoJLiAuL2RvdGZpbGUKZXhwZWN0ZWQtc3Rkb3V0OgoJQSAxCglCIDIKCWRvdCBBIDEKCWRvdCBCIDIKCWRvdCBDIDIwCi0tLQpuYW1lOiBsaW5lbm8tZnVuYwpkZXNjcmlwdGlvbjoKCVNlZSBpZiAkTElORU5PIGlzIHNldCBmb3IgY29tbWFuZHMgaW4gYSBmdW5jdGlvbi4Kc3RkaW46CgllY2hvIEEgJExJTkVOTwoJZWNobyBCICRMSU5FTk8KCWJhcigpIHsKCSAgICBlY2hvIGZ1bmMgQSAkTElORU5PCgkgICAgZWNobyBmdW5jIEIgJExJTkVOTwoJfQoJYmFyCgllY2hvIEMgJExJTkVOTwpleHBlY3RlZC1zdGRvdXQ6CglBIDEKCUIgMgoJZnVuYyBBIDQKCWZ1bmMgQiA1CglDIDgKLS0tCm5hbWU6IGxpbmVuby11bnNldApkZXNjcmlwdGlvbjoKCVNlZSBpZiB1bnNldHRpbmcgTElORU5PIG1ha2VzIGl0IG5vbi1tYWdpYy4KZmlsZS1zZXR1cDogZmlsZSA2NDQgImRvdGZpbGUiCgllY2hvIGRvdCBBICRMSU5FTk8KCWVjaG8gZG90IEIgJExJTkVOTwpzdGRpbjoKCXVuc2V0IExJTkVOTwoJZWNobyBBICRMSU5FTk8KCWVjaG8gQiAkTElORU5PCgliYXIoKSB7CgkgICAgZWNobyBmdW5jIEEgJExJTkVOTwoJICAgIGVjaG8gZnVuYyBCICRMSU5FTk8KCX0KCWJhcgoJLiAuL2RvdGZpbGUKCWVjaG8gQyAkTElORU5PCmV4cGVjdGVkLXN0ZG91dDoKCUEKCUIKCWZ1bmMgQQoJZnVuYyBCCglkb3QgQQoJZG90IEIKCUMKLS0tCm5hbWU6IGxpbmVuby11bnNldC11c2UKZGVzY3JpcHRpb246CglTZWUgaWYgdW5zZXR0aW5nIExJTkVOTyBtYWtlcyBpdCBub24tbWFnaWMgZXZlbgoJd2hlbiBpdCBpcyByZS11c2VkLgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiZG90ZmlsZSIKCWVjaG8gZG90IEEgJExJTkVOTwoJZWNobyBkb3QgQiAkTElORU5PCnN0ZGluOgoJdW5zZXQgTElORU5PCglMSU5FTk89MwoJZWNobyBBICRMSU5FTk8KCWVjaG8gQiAkTElORU5PCgliYXIoKSB7CgkgICAgZWNobyBmdW5jIEEgJExJTkVOTwoJICAgIGVjaG8gZnVuYyBCICRMSU5FTk8KCX0KCWJhcgoJLiAuL2RvdGZpbGUKCWVjaG8gQyAkTElORU5PCmV4cGVjdGVkLXN0ZG91dDoKCUEgMwoJQiAzCglmdW5jIEEgMwoJZnVuYyBCIDMKCWRvdCBBIDMKCWRvdCBCIDMKCUMgMwotLS0KbmFtZTogbGluZW5vLXRyYXAKZGVzY3JpcHRpb246CglDaGVjayBpZiBMSU5FTk8gaXMgdHJhY2tlZCBpbiB0cmFwcwpzdGRpbjoKCWZhaWwoKSB7CgkJZWNobyAibGluZSA8JDE+IgoJCWV4aXQgMQoJfQoJdHJhcCAnZmFpbCAkTElORU5PJyBJTlQgRVJSCglmYWxzZQpleHBlY3RlZC1zdGRvdXQ6CglsaW5lIDw2PgpleHBlY3RlZC1leGl0OiAxCi0tLQpuYW1lOiBsaW5lbm8tZXZhbC1hbGlhcwpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIExJTkVOTyBpcyB0cmFwcGVkIGluIGV2YWwgYW5kIGFsaWFzZXMKc3RkaW46Cgkke1pTSF9WRVJTSU9OK2ZhbHNlfSB8fCBlbXVsYXRlIHNoOyBlY2hvICRMSU5FTk8KCWVjaG8gJExJTkVOTwoJZXZhbCAnCWVjaG8gJExJTkVOTwoJCWVjaG8gJExJTkVOTwoJCWVjaG8gJExJTkVOTycKCWVjaG8gJExJTkVOTwpleHBlY3RlZC1zdGRvdXQ6CgkxCgkyCgkzCgkzCgkzCgk2Ci0tLQpuYW1lOiB1bmtub3duLXRyYXAKZGVzY3JpcHRpb246CglFbnN1cmUgdW5rbm93biB0cmFwcyBhcmUgbm90IGEgc3ludGF4IGVycm9yCnN0ZGluOgoJKAoJdHJhcCAiZWNobyB0cmFwIDEgZXhlY3V0ZWQiIFVOS05PV05TSUdOQUwgfHwgZWNobyAiZm9vIgoJZWNobyA9MQoJdHJhcCAiZWNobyB0cmFwIDIgZXhlY3V0ZWQiIFVOS05PV05TSUdOQUwgRVhJVCA5OTk5OTkgRk5PUkQKCWVjaG8gPSAkPwoJKSAyPiYxIHwgc2VkICJzAV4ke19fcHJvZ25hbWUlLmV4ZX1cLiplKngqZSo6IDxzdGRpbj5cW1swLTldKl0BUFJPRwEiCmV4cGVjdGVkLXN0ZG91dDoKCVBST0c6IHRyYXA6IGJhZCBzaWduYWwgJ1VOS05PV05TSUdOQUwnCglmb28KCT0xCglQUk9HOiB0cmFwOiBiYWQgc2lnbmFsICdVTktOT1dOU0lHTkFMJwoJUFJPRzogdHJhcDogYmFkIHNpZ25hbCAnOTk5OTk5JwoJUFJPRzogdHJhcDogYmFkIHNpZ25hbCAnRk5PUkQnCgk9IDEKCXRyYXAgMiBleGVjdXRlZAotLS0KbmFtZTogcmVhZC1JRlMtMQpkZXNjcmlwdGlvbjoKCVNpbXBsZSB0ZXN0LCBkZWZhdWx0IElGUwpzdGRpbjoKCWVjaG8gIkEgQiAiID4gSU4KCXVuc2V0IHggeSB6CglyZWFkIHggeSB6IDwgSU4KCWVjaG8gMTogInhbJHhdIHlbJHldIHpbJHpdIgoJZWNobyAxYTogJHt6LXogbm90IHNldH0KCXJlYWQgeCA8IElOCgllY2hvIDI6ICJ4WyR4XSIKZXhwZWN0ZWQtc3Rkb3V0OgoJMTogeFtBXSB5W0JdIHpbXQoJMWE6CgkyOiB4W0EgQl0KLS0tCm5hbWU6IHJlYWQtSUZTLTIKZGVzY3JpcHRpb246CglDb21wbGV4IHRlc3RzLCBJRlMgZWl0aGVyIGNvbG9uIChJRlMtTldTKSBvciBiYWNrc2xhc2ggKHRyaWNreSkKc3RkaW46CgluPTAKCXNob3dhcmdzKCkgeyBwcmludCAtbnIgIiQxIjsgc2hpZnQ7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtbnIgLS0gIiBbJHNfYXJnXSI7IGRvbmU7IHByaW50OyB9CgkoSUZTPVxcIGE9XDxcXFw+OyBzaG93YXJncyAzICRhKQoJKElGUz06IGI9XDw6XD47IHNob3dhcmdzIDQgJGIpCglwcmludCAtciAnPFw+JyB8IChJRlM9XFwgcmVhZCBmIGc7IHNob3dhcmdzIDUgIiRmIiAiJGciKQoJcHJpbnQgLXIgJzxcXD4nIHwgKElGUz1cXCByZWFkIGYgZzsgc2hvd2FyZ3MgNiAiJGYiICIkZyIpCglwcmludCAnPFxcXG4+JyB8IChJRlM9XFwgcmVhZCBmIGc7IHNob3dhcmdzIDcgIiRmIiAiJGciKQoJcHJpbnQgLXIgJzxcPicgfCAoSUZTPVxcIHJlYWQgZjsgc2hvd2FyZ3MgOCAiJGYiKQoJcHJpbnQgLXIgJzxcXD4nIHwgKElGUz1cXCByZWFkIGY7IHNob3dhcmdzIDkgIiRmIikKCXByaW50ICc8XFxcbj4nIHwgKElGUz1cXCByZWFkIGY7IHNob3dhcmdzIDEwICIkZiIpCglwcmludCAtciAnPFw+JyB8IChJRlM9XFwgcmVhZCAtciBmIGc7IHNob3dhcmdzIDExICIkZiIgIiRnIikKCXByaW50IC1yICc8XFw+JyB8IChJRlM9XFwgcmVhZCAtciBmIGc7IHNob3dhcmdzIDEyICIkZiIgIiRnIikKCXByaW50ICc8XFxcbj4nIHwgKElGUz1cXCByZWFkIC1yIGYgZzsgc2hvd2FyZ3MgMTMgIiRmIiAiJGciKQoJcHJpbnQgLXIgJzxcPicgfCAoSUZTPVxcIHJlYWQgLXIgZjsgc2hvd2FyZ3MgMTQgIiRmIikKCXByaW50IC1yICc8XFw+JyB8IChJRlM9XFwgcmVhZCAtciBmOyBzaG93YXJncyAxNSAiJGYiKQoJcHJpbnQgJzxcXFxuPicgfCAoSUZTPVxcIHJlYWQgLXIgZjsgc2hvd2FyZ3MgMTYgIiRmIikKCXByaW50IC1yICc8Oj4nIHwgKElGUz06IHJlYWQgZiBnOyBzaG93YXJncyAxNyAiJGYiICIkZyIpCglwcmludCAtciAnPDo6PicgfCAoSUZTPTogcmVhZCBmIGc7IHNob3dhcmdzIDE4ICIkZiIgIiRnIikKCXByaW50ICc8OlxuPicgfCAoSUZTPTogcmVhZCBmIGc7IHNob3dhcmdzIDE5ICIkZiIgIiRnIikKCXByaW50IC1yICc8Oj4nIHwgKElGUz06IHJlYWQgZjsgc2hvd2FyZ3MgMjAgIiRmIikKCXByaW50IC1yICc8Ojo+JyB8IChJRlM9OiByZWFkIGY7IHNob3dhcmdzIDIxICIkZiIpCglwcmludCAnPDpcbj4nIHwgKElGUz06IHJlYWQgZjsgc2hvd2FyZ3MgMjIgIiRmIikKCXByaW50IC1yICc8Oj4nIHwgKElGUz06IHJlYWQgLXIgZiBnOyBzaG93YXJncyAyMyAiJGYiICIkZyIpCglwcmludCAtciAnPDo6PicgfCAoSUZTPTogcmVhZCAtciBmIGc7IHNob3dhcmdzIDI0ICIkZiIgIiRnIikKCXByaW50ICc8OlxuPicgfCAoSUZTPTogcmVhZCAtciBmIGc7IHNob3dhcmdzIDI1ICIkZiIgIiRnIikKCXByaW50IC1yICc8Oj4nIHwgKElGUz06IHJlYWQgLXIgZjsgc2hvd2FyZ3MgMjYgIiRmIikKCXByaW50IC1yICc8Ojo+JyB8IChJRlM9OiByZWFkIC1yIGY7IHNob3dhcmdzIDI3ICIkZiIpCglwcmludCAnPDpcbj4nIHwgKElGUz06IHJlYWQgLXIgZjsgc2hvd2FyZ3MgMjggIiRmIikKZXhwZWN0ZWQtc3Rkb3V0OgoJMyBbPF0gWz5dCgk0IFs8XSBbPl0KCTUgWzxdIFs+XQoJNiBbPF0gWz5dCgk3IFs8Pl0gW10KCTggWzw+XQoJOSBbPFw+XQoJMTAgWzw+XQoJMTEgWzxdIFs+XQoJMTIgWzxdIFtcPl0KCTEzIFs8XSBbXQoJMTQgWzxcPl0KCTE1IFs8XFw+XQoJMTYgWzxdCgkxNyBbPF0gWz5dCgkxOCBbPF0gWzo+XQoJMTkgWzxdIFtdCgkyMCBbPDo+XQoJMjEgWzw6Oj5dCgkyMiBbPF0KCTIzIFs8XSBbPl0KCTI0IFs8XSBbOj5dCgkyNSBbPF0gW10KCTI2IFs8Oj5dCgkyNyBbPDo6Pl0KCTI4IFs8XQotLS0KbmFtZTogcmVhZC1rc2gtMQpkZXNjcmlwdGlvbjoKCUlmIG5vIHZhciBzcGVjaWZpZWQsIFJFUExZIGlzIHVzZWQKc3RkaW46CgllY2hvICJhYmMiID4gSU4KCXJlYWQgPCBJTgoJZWNobyAiWyRSRVBMWV0iOwpleHBlY3RlZC1zdGRvdXQ6CglbYWJjXQotLS0KbmFtZTogcmVhZC1yZWdyZXNzLTEKZGVzY3JpcHRpb246CglDaGVjayBhIHJlZ3Jlc3Npb24gb2YgcmVhZApmaWxlLXNldHVwOiBmaWxlIDY0NCAiZm9vIgoJZm9vIGJhcgoJYmF6CglibGFoCnN0ZGluOgoJd2hpbGUgcmVhZCBhIGIgYzsgZG8KCQlyZWFkIGQKCQlicmVhawoJZG9uZSA8Zm9vCgllY2hvICI8JGF8JGJ8JGM+PCRkPiIKZXhwZWN0ZWQtc3Rkb3V0OgoJPGZvb3xiYXJ8PjxiYXo+Ci0tLQpuYW1lOiByZWFkLWRlbGltLTEKZGVzY3JpcHRpb246CglDaGVjayByZWFkIHdpdGggZGVsaW1pdGVycwpzdGRpbjoKCWVtaXQoKSB7CgkJcHJpbnQgLW4gJ2ZvbyBiYXJcdGJhelxuYmxhaCBcMGJsdWJcdGJsZWNoXG5teW9rIG1lY2sgXDAnCgl9CgllbWl0IHwgd2hpbGUgSUZTPSByZWFkIC1kICIiIGZvbzsgZG8gcHJpbnQgLXIgLS0gIjwkZm9vPiI7IGRvbmUKCWVtaXQgfCB3aGlsZSByZWFkIC1kICIiIGZvbzsgZG8gcHJpbnQgLXIgLS0gIjwkZm9vPiI7IGRvbmUKCWVtaXQgfCB3aGlsZSByZWFkIC1kICJlaD8iIGZvbzsgZG8gcHJpbnQgLXIgLS0gIjwkZm9vPiI7IGRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJPGZvbyBiYXIJYmF6CglibGFoID4KCTxibHViCWJsZWNoCglteW9rIG1lY2sgPgoJPGZvbyBiYXIJYmF6CglibGFoPgoJPGJsdWIJYmxlY2gKCW15b2sgbWVjaz4KCTxmb28gYmFyCWJhegoJYmxhaCBibHViCWJsPgoJPGNoCglteW9rIG0+Ci0tLQpuYW1lOiByZWFkLWV4dC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcmVhZCB3aXRoIG51bWJlciBvZiBieXRlcyBzcGVjaWZpZWQsIGFuZCAtQQpzdGRpbjoKCXByaW50ICdmb29cbmJhcicgPngxCglwcmludCAtbiB4ID54MgoJcHJpbnQgJ2Zvb1xcIGJhciBiYXonID54MwoJeDFhPXU7IHJlYWQgeDFhIDx4MQoJeDFiPXU7IHJlYWQgLU4tMSB4MWIgPHgxCgl4MmE9dTsgcmVhZCB4MmEgPHgyOyByMmE9JD8KCXgyYj11OyByZWFkIC1OMiB4MmMgPHgyOyByMmI9JD8KCXgyYz11OyByZWFkIC1uMiB4MmMgPHgyOyByMmM9JD8KCXgzYT11OyByZWFkIC1BIHgzYSA8eDMKCXByaW50IC1yICJ4MWE9PCR4MWE+IgoJcHJpbnQgLXIgIngxYj08JHgxYj4iCglwcmludCAtciAieDJhPSRyMmE8JHgyYT4iCglwcmludCAtciAieDJiPSRyMmI8JHgyYj4iCglwcmludCAtciAieDJjPSRyMmM8JHgyYz4iCglwcmludCAtciAieDNhPTwke3gzYVswXX18JHt4M2FbMV19fCR7eDNhWzJdfT4iCmV4cGVjdGVkLXN0ZG91dDoKCXgxYT08Zm9vPgoJeDFiPTxmb28KCWJhcj4KCXgyYT0xPHg+Cgl4MmI9MTx1PgoJeDJjPTA8eD4KCXgzYT08Zm9vIGJhcnxiYXp8PgotLS0KbmFtZTogcmVncmVzc2lvbi0xCmRlc2NyaXB0aW9uOgoJTGV4IGFycmF5IGNvZGUgaGFkIHByb2JsZW1zIHdpdGggdGhpcy4Kc3RkaW46CgllY2hvIGZvb1sKCW49YmFyCgllY2hvICJoaVsgJG4gXT0xIgpleHBlY3RlZC1zdGRvdXQ6Cglmb29bCgloaVsgYmFyIF09MQotLS0KbmFtZTogcmVncmVzc2lvbi0yCmRlc2NyaXB0aW9uOgoJV2hlbiBQQVRIIGlzIHNldCBiZWZvcmUgcnVubmluZyBhIGNvbW1hbmQsIHRoZSBuZXcgcGF0aCBpcwoJbm90IHVzZWQgaW4gZG9pbmcgdGhlIHBhdGggc2VhcmNoCgkJJCBlY2hvIGVjaG8gaGkgPiAvdG1wL3EgOyBjaG1vZCBhK3J4IC90bXAvcQoJCSQgUEFUSD0vdG1wIHEKCQlxOiBub3QgZm91bmQKCQkkCglpbiBjb21leGVjKCkgdGhlIHR3byBsaW5lcwoJCXdoaWxlICgqdnAgIT0gTlVMTCkKCQkJKHZvaWQpIHR5cGVzZXQoKnZwKyssIHh4eCwgMCk7CgluZWVkIHRvIGJlIG1vdmVkIG91dCBvZiB0aGUgc3dpdGNoIHRvIGJlZm9yZSBmaW5kY29tKCkgaXMKCWNhbGxlZCAtIEkgZG9uJ3Qga25vdyB3aGF0IHRoaXMgd2lsbCBicmVhay4Kc3RkaW46Cgk6ICIke1BXRDotYHB3ZCAyPiAvZGV2L251bGxgfSIKCTogIiR7UFdEOj8iUFdEIG5vdCBzZXQgLSBjYW5ub3QgZG8gdGVzdCJ9IgoJbWtkaXIgWQoJY2F0ID4gWS94eHhzY3JpcHQgPDwgRU9GCgkjIS9iaW4vc2gKCSMgTmVlZCB0byByZXN0b3JlIHBhdGggc28gZWNobyBjYW4gYmUgZm91bmQgKHNvbWUgc2hlbGxzIGRvbid0IGhhdmUKCSMgaXQgYXMgYSBidWlsdC1pbikKCVBBVEg9XCRPTERQQVRICgllY2hvIGhpCglleGl0IDAKCUVPRgoJY2htb2QgYStyeCBZL3h4eHNjcmlwdAoJZXhwb3J0IE9MRFBBVEg9IiRQQVRIIgoJUEFUSD0kUFdEL1kgeHh4c2NyaXB0CglleGl0ICQ/CmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTYKZGVzY3JpcHRpb246CglQYXJzaW5nIG9mICQoLi4pIGV4cHJlc3Npb25zIGlzIG5vbi1vcHRpbWFsLiAgSXQgaXMKCWltcG9zc2libGUgdG8gaGF2ZSBhbnkgcGFyZW50aGVzZXMgaW5zaWRlIHRoZSBleHByZXNzaW9uLgoJSS5lLiwKCQkkIGtzaCAtYyAnZWNobyAkKGVjaG8gXCggKScKCQlubyBjbG9zaW5nIHF1b3RlCgkJJCBrc2ggLWMgJ2VjaG8gJChlY2hvICIoIiApJwoJCW5vIGNsb3NpbmcgcXVvdGUKCQkkCglUaGUgc29sdXRpb24gaXMgdG8gaGFjayB0aGUgcGFyc2luZyBjbG9kZSBpbiBsZXguYywgdGhlCglxdWVzdGlvbiBpcyBob3cgdG8gaGFjayBpdDogc2hvdWxkIGFueSBwYXJlbnRoZXNlcyBiZQoJZXNjYXBlZCBieSBhIGJhY2tzbGFzaCwgb3Igc2hvdWxkIHJlY3Vyc2l2ZSBwYXJzaW5nIGJlIGRvbmUKCShzbyBxdW90ZXMgY291bGQgYWxzbyBiZSB1c2VkIHRvIGhpZGUgaGVtKS4gIFRoZSBmb3JtZXIgaXMKCWVhc2llciwgdGhlIGxhdGVyIGJldHRlci4uLgpzdGRpbjoKCWVjaG8gJChlY2hvIFwoICkKCWVjaG8gJChlY2hvICIoIiApCmV4cGVjdGVkLXN0ZG91dDoKCSgKCSgKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tOQpkZXNjcmlwdGlvbjoKCUNvbnRpbnVlIGluIGEgZm9yIGxvb3AgZG9lcyBub3Qgd29yayByaWdodDoKCQlmb3IgaSBpbiBhIGIgYyA7IGRvCgkJCWlmIFsgJGkgPSBiIF0gOyB0aGVuCgkJCQljb250aW51ZQoJCQlmaQoJCQllY2hvICRpCgkJZG9uZQoJUHJpbnRzIGEgZm9yZXZlci4uLgpzdGRpbjoKCWZpcnN0PXllcwoJZm9yIGkgaW4gYSBiIGMgOyBkbwoJCWlmIFsgJGkgPSBiIF0gOyB0aGVuCgkJCWlmIFsgJGZpcnN0ID0gbm8gXSA7IHRoZW4KCQkJCWVjaG8gJ2NvbnRpbnVlIGluIGZvciBsb29wIGJyb2tlbicKCQkJCWJyZWFrCSMgaG9wZSBicmVhayBpc24ndCBicm9rZW4gdG9vIDotKQoJCQlmaQoJCQlmaXJzdD1ubwoJCQljb250aW51ZQoJCWZpCglkb25lCgllY2hvIGJ5ZQpleHBlY3RlZC1zdGRvdXQ6CglieWUKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTAKZGVzY3JpcHRpb246CglUaGUgZm9sbG93aW5nOgoJCXNldCAtLSBgZmFsc2VgCgkJZWNobyAkPwoJc2hvdWxkIHByaW50IDAgYWNjb3JkaW5nIHRvIFBPU0lYIChkYXNoLCBiYXNoLCBrc2g5MywgcG9zaCkKCWJ1dCBub3QgMCBhY2NvcmRpbmcgdG8gdGhlIGdldG9wdCgxKSBtYW51YWwgcGFnZSwga3NoODgsIGFuZAoJQm91cm5lIHNoIChzdWNoIGFzIC9iaW4vc2ggb24gU29sYXJpcykuCglXZSBob25vdXIgUE9TSVggZXhjZXB0IHdoZW4gLW8gc2ggaXMgc2V0LgpjYXRlZ29yeTogc2hlbGw6bGVnYWN5LW5vCnN0ZGluOgoJc2hvd2YoKSB7CgkJW1sgLW8gcG9zaXggXV07IEZQT1NJWD0kKCgxLSQ/KSkKCQlbWyAtbyBzaCBdXTsgRlNIPSQoKDEtJD8pKQoJCWVjaG8gLW4gIkZQT1NJWD0kRlBPU0lYIEZTSD0kRlNIICIKCX0KCXNldCArbyBwb3NpeCArbyBzaAoJc2hvd2YKCXNldCAtLSBgZmFsc2VgCgllY2hvIHJ2PSQ/CglzZXQgLW8gc2gKCXNob3dmCglzZXQgLS0gYGZhbHNlYAoJZWNobyBydj0kPwoJc2V0IC1vIHBvc2l4CglzaG93ZgoJc2V0IC0tIGBmYWxzZWAKCWVjaG8gcnY9JD8KCXNldCAtbyBwb3NpeCAtbyBzaAoJc2hvd2YKCXNldCAtLSBgZmFsc2VgCgllY2hvIHJ2PSQ/CmV4cGVjdGVkLXN0ZG91dDoKCUZQT1NJWD0wIEZTSD0wIHJ2PTAKCUZQT1NJWD0wIEZTSD0xIHJ2PTEKCUZQT1NJWD0xIEZTSD0wIHJ2PTAKCUZQT1NJWD0xIEZTSD0xIHJ2PTAKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTAtbGVnYWN5CmRlc2NyaXB0aW9uOgoJVGhlIGZvbGxvd2luZzoKCQlzZXQgLS0gYGZhbHNlYAoJCWVjaG8gJD8KCXNob3VsZCBwcmludCAwIGFjY29yZGluZyB0byBQT1NJWCAoZGFzaCwgYmFzaCwga3NoOTMsIHBvc2gpCglidXQgbm90IDAgYWNjb3JkaW5nIHRvIHRoZSBnZXRvcHQoMSkgbWFudWFsIHBhZ2UsIGtzaDg4LCBhbmQKCUJvdXJuZSBzaCAoc3VjaCBhcyAvYmluL3NoIG9uIFNvbGFyaXMpLgpjYXRlZ29yeTogc2hlbGw6bGVnYWN5LXllcwpzdGRpbjoKCXNob3dmKCkgewoJCVtbIC1vIHBvc2l4IF1dOyBGUE9TSVg9JCgoMS0kPykpCgkJW1sgLW8gc2ggXV07IEZTSD0kKCgxLSQ/KSkKCQllY2hvIC1uICJGUE9TSVg9JEZQT1NJWCBGU0g9JEZTSCAiCgl9CglzZXQgK28gcG9zaXggK28gc2gKCXNob3dmCglzZXQgLS0gYGZhbHNlYAoJZWNobyBydj0kPwoJc2V0IC1vIHNoCglzaG93ZgoJc2V0IC0tIGBmYWxzZWAKCWVjaG8gcnY9JD8KCXNldCAtbyBwb3NpeAoJc2hvd2YKCXNldCAtLSBgZmFsc2VgCgllY2hvIHJ2PSQ/CglzZXQgLW8gcG9zaXggLW8gc2gKCXNob3dmCglzZXQgLS0gYGZhbHNlYAoJZWNobyBydj0kPwpleHBlY3RlZC1zdGRvdXQ6CglGUE9TSVg9MCBGU0g9MCBydj0xCglGUE9TSVg9MCBGU0g9MSBydj0xCglGUE9TSVg9MSBGU0g9MCBydj0wCglGUE9TSVg9MSBGU0g9MSBydj0wCi0tLQpuYW1lOiByZWdyZXNzaW9uLTExCmRlc2NyaXB0aW9uOgoJVGhlIGZvbGxvd2luZzoKCQl4PS9mb28vYmFyL2JsYWgKCQllY2hvICR7eCMjKi99CglzaG91bGQgZWNobyBibGFoIGJ1dCBvbiBzb21lIG1hY2hpbmVzIGVjaG9zIC9mb28vYmFyL2JsYWguCnN0ZGluOgoJeD0vZm9vL2Jhci9ibGFoCgllY2hvICR7eCMjKi99CmV4cGVjdGVkLXN0ZG91dDoKCWJsYWgKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTIKZGVzY3JpcHRpb246CglCb3RoIG9mIHRoZSBmb2xsb3dpbmcgZWNob3MgcHJvZHVjZSB0aGUgc2FtZSBvdXRwdXQgdW5kZXIgc2gva3NoLmF0dDoKCQkjIS9iaW4vc2gKCQl4PSJmb28JYmFyIgoJCWVjaG8gImBlY2hvIFwiJHhcImAiCgkJZWNobyAiYGVjaG8gIiR4ImAiCglwZGtzaCBwcm9kdWNlcyBkaWZmZXJlbnQgb3V0cHV0IGZvciB0aGUgZm9ybWVyIChmb28gaW5zdGVhZCBvZiBmb29cdGJhcikKc3RkaW46Cgl4PSJmb28JYmFyIgoJZWNobyAiYGVjaG8gXCIkeFwiYCIKCWVjaG8gImBlY2hvICIkeCJgIgpleHBlY3RlZC1zdGRvdXQ6Cglmb28JYmFyCglmb28JYmFyCi0tLQpuYW1lOiByZWdyZXNzaW9uLTEzCmRlc2NyaXB0aW9uOgoJVGhlIGZvbGxvd2luZyBjb21tYW5kIGhhbmdzIGZvcmV2ZXI6CgkJJCAoOiA7IGNhdCAvZXRjL3Rlcm1jYXApIHwgc2xlZXAgMgoJVGhpcyBpcyBiZWNhdXNlIHRoZSBzaGVsbCBmb3JrcyBhIHNoZWxsIHRvIHJ1biB0aGUgKC4uKSBjb21tYW5kCglhbmQgdGhpcyBzaGVsbCBoYXMgdGhlIHBpcGUgb3Blbi4gIFdoZW4gdGhlIHNsZWVwIGRpZXMsIHRoZSBjYXQKCWRvZXNuJ3QgZ2V0IGEgU0lHUElQRSAnY2F1c2UgYSBwcm9jZXNzIChpZSwgdGhlIHNlY29uZCBzaGVsbCkKCXN0aWxsIGhhcyB0aGUgcGlwZSBvcGVuLgoJCglOT1RFOiB0aGlzIHRlc3QgcHJvdm9rZXMgYSBiaXphcnJlIGJ1ZyBpbiBrc2g5MyAoc2hlbGwgc3RhcnRzIHJlYWRpbmcKCSAgICAgIGNvbW1hbmRzIGZyb20gL2V0Yy90ZXJtY2FwLi4pCnRpbWUtbGltaXQ6IDEwCnN0ZGluOgoJZWNobyBBIGxpbmUgb2YgdGV4dCB0aGF0IHdpbGwgYmUgZHVwbGljYXRlZCBxdWl0ZSBhIG51bWJlciBvZiB0aW1lcy4+IHQxCgljYXQgdDEgdDEgdDEgdDEgIHQxIHQxIHQxIHQxICB0MSB0MSB0MSB0MSAgdDEgdDEgdDEgdDEgID4gdDIKCWNhdCB0MiB0MiB0MiB0MiAgdDIgdDIgdDIgdDIgIHQyIHQyIHQyIHQyICB0MiB0MiB0MiB0MiAgPiB0MQoJY2F0IHQxIHQxIHQxIHQxID4gdDIKCSg6IDsgY2F0IHQyIDI+L2Rldi9udWxsKSB8IHNsZWVwIDEKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTQKZGVzY3JpcHRpb246CglUaGUgY29tbWFuZAoJCSQgKGZvb2JhcikgMj4gL2Rldi9udWxsCglnZW5lcmF0ZXMgbm8gb3V0cHV0IHVuZGVyIC9iaW4vc2gsIGJ1dCBwZGtzaCBwcm9kdWNlcyB0aGUgZXJyb3IKCQlmb29iYXI6IG5vdCBmb3VuZAoJQWxzbywgdGhlIGNvbW1hbmQKCQkkIGZvb2JhciAyPiAvZGV2L251bGwKCWdlbmVyYXRlcyBhbiBlcnJvciB1bmRlciAvYmluL3NoIGFuZCBwZGtzaCwgYnV0IEFUJlQga3NoODggcHJvZHVjZXMKCW5vIGVycm9yIChyZWRpcmVjdGVkIHRvIC9kZXYvbnVsbCkuCnN0ZGluOgoJKHlvdS9zaG91bGQvbm90L3NlZS90aGlzL2Vycm9yLzEpIDI+IC9kZXYvbnVsbAoJeW91L3Nob3VsZC9ub3Qvc2VlL3RoaXMvZXJyb3IvMiAyPiAvZGV2L251bGwKCXRydWUKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTUKZGVzY3JpcHRpb246CglUaGUgY29tbWFuZAoJCSQgd2hlbmNlIGZvb2JhcgoJZ2VuZXJhdGVzIGEgYmxhbmsgbGluZSB1bmRlciBwZGtzaCBhbmQgc2V0cyB0aGUgZXhpdCBzdGF0dXMgdG8gMC4KCUFUJlQga3NoODggZ2VuZXJhdGVzIG5vIG91dHB1dCBhbmQgc2V0cyB0aGUgZXhpdCBzdGF0dXMgdG8gMS4gIEFsc28sCgl0aGUgY29tbWFuZAoJCSQgd2hlbmNlIGZvb2JhciBjYXQKCWdlbmVyYXRlcyBubyBvdXRwdXQgdW5kZXIgQVQmVCBrc2g4OCAocGRrc2ggZ2VuZXJhdGVzIGEgYmxhbmsgbGluZQoJYW5kIC9iaW4vY2F0KS4Kc3RkaW46Cgl3aGVuY2UgZG9lcy9ub3QvZXhpc3QgPiAvZGV2L251bGwKCWVjaG8gMTogJD8KCWVjaG8gMjogJCh3aGVuY2UgZG9lcy9ub3QvZXhpc3QgfCB3YyAtbCkKCWVjaG8gMzogJCh3aGVuY2UgZG9lcy9ub3QvZXhpc3QgY2F0IHwgd2MgLWwpCmV4cGVjdGVkLXN0ZG91dDoKCTE6IDEKCTI6IDAKCTM6IDAKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTYKZGVzY3JpcHRpb246Cgkke3ZhciUlZXhwcn0gc2VlbXMgdG8gYmUgYnJva2VuIGluIG1hbnkgcGxhY2VzLiAgT24gdGhlIG1pcHMKCXRoZSBjb21tYW5kcwoJCSQgcmVhZCBsaW5lIDwgL2V0Yy9wYXNzd2QKCQkkIGVjaG8gJGxpbmUKCQlyb290OjA6MTouLi4KCQkkIGVjaG8gJHtsaW5lJSU6Kn0KCQlyb290CgkJJCBlY2hvICRsaW5lCgkJcm9vdAoJCSQKCWNoYW5nZSB0aGUgdmFsdWUgb2YgbGluZS4gIE9uIHN1bjRzICYgcGFzLCB0aGUgZWNobyAke2xpbmUlJToqfSBkb2Vzbid0Cgl3b3JrLiAgSGF2ZW4ndCBjaGVja2VkIGVsc2V3aGVyZS4uLgpzY3JpcHQ6CglyZWFkIHgKCXk9JHgKCWVjaG8gJHt4JSU6Kn0KCWVjaG8gJHgKc3RkaW46Cglyb290OmFzZGpoYXNkYXNqaHM6MDoxOlJvb3Q6LzovYmluL3NoCmV4cGVjdGVkLXN0ZG91dDoKCXJvb3QKCXJvb3Q6YXNkamhhc2Rhc2poczowOjE6Um9vdDovOi9iaW4vc2gKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTcKZGVzY3JpcHRpb246CglUaGUgY29tbWFuZAoJCS4gL2Zvby9iYXIKCXNob3VsZCBzZXQgdGhlIGV4aXQgc3RhdHVzIHRvIG5vbi16ZXJvIChzaCBhbmQgQVQmVCBrc2g4OCBkbykuCglYWFggZG90aW5nIGEgbm9uIGV4aXN0ZW50IGZpbGUgaXMgYSBmYXRhbCBlcnJvciBmb3IgYSBzY3JpcHQKc3RkaW46CgkuIGRvZXMvbm90L2V4aXN0CmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjogLy4/LwotLS0KbmFtZTogcmVncmVzc2lvbi0xOQpkZXNjcmlwdGlvbjoKCUJvdGggb2YgdGhlIGZvbGxvd2luZyBlY2hvcyBzaG91bGQgcHJvZHVjZSB0aGUgc2FtZSB0aGluZywgYnV0IGRvbid0OgoJCSQgeD1mb28vYmFyCgkJJCBlY2hvICR7eCUvKn0KCQlmb28KCQkkIGVjaG8gIiR7eCUvKn0iCgkJZm9vL2JhcgpzdGRpbjoKCXg9Zm9vL2JhcgoJZWNobyAiJHt4JS8qfSIKZXhwZWN0ZWQtc3Rkb3V0OgoJZm9vCi0tLQpuYW1lOiByZWdyZXNzaW9uLTIxCmRlc2NyaXB0aW9uOgoJYmFja3NsYXNoIGRvZXMgbm90IHdvcmsgYXMgZXhwZWN0ZWQgaW4gY2FzZSBsYWJlbHM6CgkkIHg9Jy14JwoJJCBjYXNlICR4IGluCgktXD8pIGVjaG8gaGkKCWVzYWMKCWhpCgkkIHg9Jy0/JwoJJCBjYXNlICR4IGluCgktXFw/KSBlY2hvIGhpCgllc2FjCgloaQoJJApzdGRpbjoKCWNhc2UgLXggaW4KCS1cPykJZWNobyBmYWlsCgllc2FjCi0tLQpuYW1lOiByZWdyZXNzaW9uLTIyCmRlc2NyaXB0aW9uOgoJUXVvdGluZyBiYWNrcXVvdGVzIGluc2lkZSBiYWNrcXVvdGVzIGRvZXNuJ3Qgd29yazoKCSQgZWNobyBgZWNobyBoaSBcYGVjaG8gdGhlcmVcYCBmb2xrc2AKCWFza3MgZm9yIG1vcmUgaW5mby4gIHNoIGFuZCBBVCZUIGtzaDg4IGJvdGggZWNobwoJaGkgdGhlcmUgZm9sa3MKc3RkaW46CgllY2hvIGBlY2hvIGhpIFxgZWNobyB0aGVyZVxgIGZvbGtzYApleHBlY3RlZC1zdGRvdXQ6CgloaSB0aGVyZSBmb2xrcwotLS0KbmFtZTogcmVncmVzc2lvbi0yMwpkZXNjcmlwdGlvbjoKCSkpIGlzIG5vdCB0cmVhdGVkIGBjb3JyZWN0bHknOgoJICAgICQgKGVjaG8gaGkgOyAoZWNobyB0aGVyZSA7IGVjaG8gZm9sa3MpKQoJICAgIG1pc3NpbmcgKCgKCSAgICAkCglpbnN0ZWFkIG9mIChhcyBzaCBhbmQga3NoLmF0dCkKCSAgICAkIChlY2hvIGhpIDsgKGVjaG8gdGhlcmUgOyBlY2hvIGZvbGtzKSkKCSAgICBoaQoJICAgIHRoZXJlCgkgICAgZm9sa3MKCSAgICAkCnN0ZGluOgoJKCA6IDsgKCA6IDsgZWNobyBoaSkpCmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTI1CmRlc2NyaXB0aW9uOgoJQ2hlY2sgcmVhZGluZyBzdGRpbiBpbiBhIHdoaWxlIGxvb3AuICBUaGUgcmVhZCBzaG91bGQgb25seSByZWFkCglhIHNpbmdsZSBsaW5lLCBub3QgYSB3aG9sZSBzdGRpbyBidWZmZXI7IHRoZSBjYXQgc2hvdWxkIGdldAoJdGhlIHJlc3QuCnN0ZGluOgoJKGVjaG8gYTsgZWNobyBiKSB8IHdoaWxlIHJlYWQgeCA7IGRvCgkgICAgZWNobyAkeAoJICAgIGNhdCA+IC9kZXYvbnVsbAoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglhCi0tLQpuYW1lOiByZWdyZXNzaW9uLTI2CmRlc2NyaXB0aW9uOgoJQ2hlY2sgcmVhZGluZyBzdGRpbiBpbiBhIHdoaWxlIGxvb3AuICBUaGUgcmVhZCBzaG91bGQgcmVhZCBib3RoCglsaW5lcywgbm90IGp1c3QgdGhlIGZpcnN0LgpzY3JpcHQ6CglhPQoJd2hpbGUgWyAiJGEiICE9IHh4eCBdIDsgZG8KCSAgICBsYXN0PSR4CgkgICAgcmVhZCB4CgkgICAgY2F0IC9kZXYvbnVsbCB8IHNlZCAncy94L3kvJwoJICAgIGE9eCRhCglkb25lCgllY2hvICRsYXN0CnN0ZGluOgoJYQoJYgpleHBlY3RlZC1zdGRvdXQ6CgliCi0tLQpuYW1lOiByZWdyZXNzaW9uLTI3CmRlc2NyaXB0aW9uOgoJVGhlIGNvbW1hbmQKCQkuIC9kb2VzL25vdC9leGlzdAoJc2hvdWxkIGNhdXNlIGEgc2NyaXB0IHRvIGV4aXQuCnN0ZGluOgoJLiBkb2VzL25vdC9leGlzdAoJZWNobyBoaQpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC9kb2VzXC9ub3RcL2V4aXN0LwotLS0KbmFtZTogcmVncmVzc2lvbi0yOApkZXNjcmlwdGlvbjoKCXZhcmlhYmxlIGFzc2lnbm1lbnRzIG5vdCBkZXRlY3RlZCB3ZWxsCnN0ZGluOgoJYS54PTEgZWNobyBoaQpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC9hXC54PTEvCi0tLQpuYW1lOiByZWdyZXNzaW9uLTI5CmRlc2NyaXB0aW9uOgoJYWxpYXMgZXhwYW5zaW9uIGRpZmZlcmVudCBmcm9tIEFUJlQga3NoODgKc3RkaW46CglhbGlhcyBhPSdmb3IgJyBiPSdpIGluJwoJYSBiIGhpIDsgZG8gZWNobyAkaSA7IGRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMzAKZGVzY3JpcHRpb246CglzdHJhbmdlIGNoYXJhY3RlcnMgYWxsb3dlZCBpbnNpZGUgJHsuLi59CnN0ZGluOgoJZWNobyAke2F7Yn19CmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjogLy4/LwotLS0KbmFtZTogcmVncmVzc2lvbi0zMQpkZXNjcmlwdGlvbjoKCURvZXMgcmVhZCBoYW5kbGUgcGFydGlhbCBsaW5lcyBjb3JyZWN0bHkKc2NyaXB0OgoJYT0gcmV0PQoJd2hpbGUgWyAiJGEiICE9IHh4eCBdIDsgZG8KCSAgICByZWFkIHggeSB6CgkgICAgcmV0PSQ/CgkgICAgYT14JGEKCWRvbmUKCWVjaG8gIlskeF0iCgllY2hvICRyZXQKc3RkaW46ICEKCWEgQSBhQQoJYiBCIEJiCgljCmV4cGVjdGVkLXN0ZG91dDoKCVtjXQoJMQotLS0KbmFtZTogcmVncmVzc2lvbi0zMgpkZXNjcmlwdGlvbjoKCURvZXMgcmVhZCBzZXQgdmFyaWFibGVzIHRvIG51bGwgYXQgZW9mPwpzY3JpcHQ6CglhPQoJd2hpbGUgWyAiJGEiICE9IHh4eCBdIDsgZG8KCSAgICByZWFkIHggeSB6CgkgICAgYT14JGEKCWRvbmUKCWVjaG8gMTogJHt4LXggbm90IHNldH0gJHt5LXkgbm90IHNldH0gJHt6LXogbm90IHNldH0KCWVjaG8gMjogJHt4Oit4IG5vdCBudWxsfSAke3k6K3kgbm90IG51bGx9ICR7ejoreiBub3QgbnVsbH0Kc3RkaW46CglhIEEgQWEKCWIgQiBCYgpleHBlY3RlZC1zdGRvdXQ6CgkxOgoJMjoKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMzMKZGVzY3JpcHRpb246CglEb2VzIHVtYXNrIHByaW50IGEgbGVhZGluZyAwIHdoZW4gdW1hc2sgaXMgMyBkaWdpdHM/CnN0ZGluOgoJIyBvbiBNaU5ULCB0aGUgZmlyc3QgdW1hc2sgY2FsbCBzZWVtcyB0byBmYWlsCgl1bWFzayAwMjIKCSMgbm93LCB0aGUgdGVzdCBwcm9wZXIKCXVtYXNrIDIyMgoJdW1hc2sKZXhwZWN0ZWQtc3Rkb3V0OgoJMDIyMgotLS0KbmFtZTogcmVncmVzc2lvbi0zNQpkZXNjcmlwdGlvbjoKCVRlbXBvcmF5IGZpbGVzIHVzZWQgZm9yIGhlcmUtZG9jcyBpbiBmdW5jdGlvbnMgZ2V0IHRyYXNoZWQgYWZ0ZXIKCXRoZSBmdW5jdGlvbiBpcyBwYXJzZWQgKGJlZm9yZSBpdCBpcyBleGVjdXRlZCkKc3RkaW46CglmMSgpIHsKCQljYXQgPDwtIEVPRgoJCQlGMQoJCUVPRgoJCWYyKCkgewoJCQljYXQgPDwtIEVPRgoJCQkJRjIKCQkJRU9GCgkJfQoJfQoJZjEKCWYyCgl1bnNldCAtZiBmMQoJZjIKZXhwZWN0ZWQtc3Rkb3V0OgoJRjEKCUYyCglGMgotLS0KbmFtZTogcmVncmVzc2lvbi0zNgpkZXNjcmlwdGlvbjoKCUNvbW1hbmQgc3Vic3RpdHV0aW9uIGJyZWFrcyByZWFkaW5nIGluIHdoaWxlIGxvb3AKCSh0ZXN0IGZyb20gPHNqZ0B2b2lkLnplbi5vei5hdT4pCnN0ZGluOgoJKGVjaG8gYWJjZGVmOyBlY2hvOyBlY2hvIDEyMykgfAoJICAgIHdoaWxlIHJlYWQgbGluZQoJICAgIGRvCgkgICAgICAjIHRoZSBmb2xsb3dpbmcgbGluZSBicmVha3MgaXQKCSAgICAgIGM9YGVjaG8gJGxpbmUgfCB3YyAtY2AKCSAgICAgIGVjaG8gJGMKCSAgICBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCTcKCTEKCTQKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMzcKZGVzY3JpcHRpb246CglNYWNoaW5lcyB3aXRoIGJyb2tlbiB0aW1lcygpIChyZXBvcnRlZCBieSA8c2pnQHZvaWQuemVuLm96LmF1PikKCXRpbWUgZG9lcyBub3QgcmVwb3J0IGNvcnJlY3QgcmVhbCB0aW1lCnN0ZGluOgoJdGltZSBzbGVlcCAxCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAhL15ccyowXC4wW1xzXGRdK3JlYWx8XlxzKnJlYWxbXHNdKzArXC4wLwotLS0KbmFtZTogcmVncmVzc2lvbi0zOApkZXNjcmlwdGlvbjoKCXNldCAtZSBkb2Vzbid0IGlnbm9yZSBleGl0IGNvZGVzIGZvciBpZi93aGlsZS91bnRpbC8mJi98fC8hLgphcmd1bWVudHM6ICEtZSEKc3RkaW46CglpZiBmYWxzZTsgdGhlbiBlY2hvIGhpIDsgZmkKCWZhbHNlIHx8IHRydWUKCWZhbHNlICYmIHRydWUKCXdoaWxlIGZhbHNlOyBkbyBlY2hvIGhpOyBkb25lCgllY2hvIG9rCmV4cGVjdGVkLXN0ZG91dDoKCW9rCi0tLQpuYW1lOiByZWdyZXNzaW9uLTM5CmRlc2NyaXB0aW9uOgoJT25seSBwb3NoIGFuZCBva3NoKDIwMTMtMDcpIHNheSDigJxoaeKAnSBiZWxvdzsgRnJlZUJTRCBzaCwKCUdOVSBiYXNoIGluIFBPU0lYIG1vZGUsIGRhc2gsIGtzaDkzLCBta3NoIGRvbuKAmXQuIEFsbCBvZgoJdGhlbSBleGl0IDAuIFRoZSBQT1NJWCBiZWhhdmlvdXIgaXMgbmVlZGVkIGJ5IEJTRCBtYWtlLgpzdGRpbjoKCXNldCAtZQoJZWNobyBgZmFsc2U7IGVjaG8gaGlgICQoPHRoaXMtZmlsZS1kb2VzLW5vdC1leGlzdCkKCWVjaG8gJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJCgkwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvdGhpcy1maWxlLWRvZXMtbm90LWV4aXN0LwotLS0KbmFtZTogcmVncmVzc2lvbi00MApkZXNjcmlwdGlvbjoKCVRoaXMgdXNlZCB0byBjYXVzZSBhIGNvcmUgZHVtcAplbnYtc2V0dXA6ICFSQU5ET009MTIhCnN0ZGluOgoJZWNobyBoaQpleHBlY3RlZC1zdGRvdXQ6CgloaQotLS0KbmFtZTogcmVncmVzc2lvbi00MQpkZXNjcmlwdGlvbjoKCWZvbyBzaG91bGQgYmUgc2V0IHRvIGJhciAoc2hvdWxkIG5vdCBiZSBlbXB0eSkKc3RkaW46Cglmb289YAoJZWNobyBiYXJgCgllY2hvICIoJGZvbykiCmV4cGVjdGVkLXN0ZG91dDoKCShiYXIpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTQyCmRlc2NyaXB0aW9uOgoJQ2FuJ3QgdXNlIGNvbW1hbmQgbGluZSBhc3NpZ25tZW50cyB0byBhc3NpZ24gcmVhZG9ubHkgcGFyYW1ldGVycy4Kc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbnVuc2V0IFJBTkRPTVxuZXhwb3J0IHwgd2hpbGUgSUZTPSByZWFkIC1yJyBcCgkgICAgJ1JBTkRPTTsgZG8gZXZhbCAnXCcncHJpbnQgLXIgLS0gIiRSQU5ET009JCdcJyciJFJBTkRPTSInXCdcIlwnXDsgXAoJICAgIGRvbmUgPmVudjsgY2htb2QgK3ggZW52OyBQQVRIPS4kUEFUSFNFUCRQQVRICglmb289YmFyCglyZWFkb25seSBmb28KCWZvbz1zdHVmZiBlbnYgfCBncmVwICdeZm9vJwpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvcmVhZC1vbmx5LwotLS0KbmFtZTogcmVncmVzc2lvbi00MwpkZXNjcmlwdGlvbjoKCUNhbiBzdWJzaGVsbHMgYmUgcHJlZml4ZWQgYnkgcmVkaXJlY3Rpb25zIChoaXN0b3JpY2FsIHNoZWxscyBhbGxvdwoJdGhpcykKc3RkaW46Cgk8IC9kZXYvbnVsbCAoc2VkICdzL14vWC8nKQotLS0KbmFtZTogcmVncmVzc2lvbi00NQpkZXNjcmlwdGlvbjoKCVBhcmFtZXRlciBhc3NpZ25tZW50cyB3aXRoIFtdIHJlY29nbmlzZWQgY29ycmVjdGx5CnN0ZGluOgoJRk9PPSpbMTJdCglCQVI9YWJjWwoJTU9SRT1bYWJjXQoJSlVOSz1hW2JjCgllY2hvICI8JEZPTz4iCgllY2hvICI8JEJBUj4iCgllY2hvICI8JE1PUkU+IgoJZWNobyAiPCRKVU5LPiIKZXhwZWN0ZWQtc3Rkb3V0OgoJPCpbMTJdPgoJPGFiY1s+Cgk8W2FiY10+Cgk8YVtiYz4KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNDYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFsaWFzIGV4cGFuc2lvbiB3b3JrcyBpbiBjb21tYW5kIHN1YnN0aXR1dGlvbnMgYW5kCglhdCB0aGUgZW5kIG9mIGZpbGUuCnN0ZGluOgoJYWxpYXMgeD0nZWNobyBoaScKCUZPTz0iYHhgICIKCWVjaG8gIlskRk9PXSIKCXgKZXhwZWN0ZWQtc3Rkb3V0OgoJW2hpIF0KCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTQ3CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhc2VzIGFyZSBmdWxseSByZWFkLgpzdGRpbjoKCWFsaWFzIHg9J2VjaG8gaGk7CgllY2hvIHRoZXJlJwoJeAoJZWNobyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgl0aGVyZQoJZG9uZQotLS0KbmFtZTogcmVncmVzc2lvbi00OApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgKGhlcmUgZG9jKSB0ZW1wIGZpbGVzIGFyZSBub3QgbGVmdCBiZWhpbmQgYWZ0ZXIgYW4gZXhlYy4Kc3RkaW46Cglta2RpciBmb28gfHwgZXhpdCAxCglUTVBESVI9JFBXRC9mb28gIiRfX3Byb2duYW1lIiA8PC0gJ0VPRicKCQl4KCkgewoJCQlzZWQgJ3MvXi9YIC8nIDw8IEVfT19GCgkJCWhpCgkJCXRoZXJlCgkJCWZvbGtzCgkJCUVfT19GCgkJCWVjaG8gImRvbmUgKCQ/KSIKCQl9CgkJZWNobz1lY2hvOyBbIC14IC9iaW4vZWNobyBdICYmIGVjaG89L2Jpbi9lY2hvCgkJZXhlYyAkZWNobyBzdWJ0ZXN0LTEgaGkKCUVPRgoJZWNobyBzdWJ0ZXN0LTEgZm9vLyoKCVRNUERJUj0kUFdEL2ZvbyAiJF9fcHJvZ25hbWUiIDw8LSAnRU9GJwoJCWVjaG89ZWNobzsgWyAteCAvYmluL2VjaG8gXSAmJiBlY2hvPS9iaW4vZWNobwoJCXNlZCAncy9eL1ggLycgPDwgRV9PX0Y7IGV4ZWMgJGVjaG8gc3VidGVzdC0yIGhpCgkJYQoJCWZldwoJCWxpbmVzCgkJRV9PX0YKCUVPRgoJZWNobyBzdWJ0ZXN0LTIgZm9vLyoKZXhwZWN0ZWQtc3Rkb3V0OgoJc3VidGVzdC0xIGhpCglzdWJ0ZXN0LTEgZm9vLyoKCVggYQoJWCBmZXcKCVggbGluZXMKCXN1YnRlc3QtMiBoaQoJc3VidGVzdC0yIGZvby8qCi0tLQpuYW1lOiByZWdyZXNzaW9uLTQ5CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB1bnNldCBwYXJhbXMgd2l0aCBhdHRyaWJ1dGVzIGFyZSByZXBvcnRlZCBieSBzZXQsIHRob3NlCglzYW5zIGF0dHJpYnV0ZXMgYXJlIG5vdC4Kc3RkaW46Cgl1bnNldCBGT08gQkFSCgllY2hvIFgkRk9PCglleHBvcnQgQkFSCgl0eXBlc2V0IC1pIEJMQUgKCXNldCB8IGdyZXAgRk9PCglzZXQgfCBncmVwIEJBUgoJc2V0IHwgZ3JlcCBCTEFICmV4cGVjdGVkLXN0ZG91dDoKCVgKCUJBUgoJQkxBSAotLS0KbmFtZTogcmVncmVzc2lvbi01MApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYWxpYXNlcyBkbyBub3QgdXNlIGNvbnRpbnVhdGlvbiBwcm9tcHQgYWZ0ZXIgdHJhaWxpbmcKCXNlbWktY29sb24uCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJlbnZmIgoJUFMxPVkKCVBTMj1YCmVudi1zZXR1cDogIUVOVj0uL2VudmYhCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQpzdGRpbjoKCWFsaWFzIGZvbz0nZWNobyBoaSA7ICcKCWZvbwoJZm9vIGVjaG8gdGhlcmUKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWhpCgl0aGVyZQpleHBlY3RlZC1zdGRlcnI6ICEKCVlZWVkKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHNldCBhbGxvd3MgYm90aCArbyBhbmQgLW8gb3B0aW9ucyBvbiBzYW1lIGNvbW1hbmQgbGluZS4Kc3RkaW46CglzZXQgYSBiIGMKCXNldCAtbyBub2dsb2IgK28gYWxsZXhwb3J0CgllY2hvIEE6ICQqLCAqCmV4cGVjdGVkLXN0ZG91dDoKCUE6IGEgYiBjLCAqCi0tLQpuYW1lOiByZWdyZXNzaW9uLTUyCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBnbG9iYmluZyB3b3JrcyBpbiBwaXBlbGluZWQgY29tbWFuZHMKZmlsZS1zZXR1cDogZmlsZSA2NDQgImVudmYiCglQUzE9UApmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjIgoJc3R1ZmYKZW52LXNldHVwOiAhRU5WPS4vZW52ZiEKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCnN0ZGluOgoJc2VkICdzL14vWCAvJyA8IGFiKgoJZWNobyBtYXJrIDEKCXNlZCAncy9eL1ggLycgPCBhYiogfCBzZWQgJ3MvXi9ZIC8nCgllY2hvIG1hcmsgMgpleHBlY3RlZC1zdGRvdXQ6CglYIHN0dWZmCgltYXJrIDEKCVkgWCBzdHVmZgoJbWFyayAyCmV4cGVjdGVkLXN0ZGVycjogIQoJUFBQUFAKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGdldG9wdHMgd29ya3MgaW4gZnVuY3Rpb25zCnN0ZGluOgoJYmZ1bmMoKSB7CgkgICAgZWNobyBiZnVuYzogZW50ZXIgIihhcmdzOiAkKjsgT1BUSU5EPSRPUFRJTkQpIgoJICAgIHdoaWxlIGdldG9wdHMgQiBvYzsgZG8KCQljYXNlICRvYyBpbgoJCSAgKEIpCgkJICAgIGVjaG8gYmZ1bmM6IEIgb3B0aW9uCgkJICAgIDs7CgkJICAoKikKCQkgICAgZWNobyBiZnVuYzogb2RkIG9wdGlvbiAiKCRvYykiCgkJICAgIDs7CgkJZXNhYwoJICAgIGRvbmUKCSAgICBlY2hvIGJmdW5jOiBsZWF2ZQoJfQoJCglmdW5jdGlvbiBrZnVuYyB7CgkgICAgZWNobyBrZnVuYzogZW50ZXIgIihhcmdzOiAkKjsgT1BUSU5EPSRPUFRJTkQpIgoJICAgIHdoaWxlIGdldG9wdHMgSyBvYzsgZG8KCQljYXNlICRvYyBpbgoJCSAgKEspCgkJICAgIGVjaG8ga2Z1bmM6IEsgb3B0aW9uCgkJICAgIDs7CgkJICAoKikKCQkgICAgZWNobyBiZnVuYzogb2RkIG9wdGlvbiAiKCRvYykiCgkJICAgIDs7CgkJZXNhYwoJICAgIGRvbmUKCSAgICBlY2hvIGtmdW5jOiBsZWF2ZQoJfQoJCglzZXQgLS0gLWYgLWIgLWsgLWwKCWVjaG8gImxpbmUgMTogT1BUSU5EPSRPUFRJTkQiCglnZXRvcHRzIGtiZmwgb3B0YwoJZWNobyAibGluZSAyOiByZXQ9JD8sIG9wdGM9JG9wdGMsIE9QVElORD0kT1BUSU5EIgoJYmZ1bmMgLUJCQiBibGFoCgllY2hvICJsaW5lIDM6IE9QVElORD0kT1BUSU5EIgoJZ2V0b3B0cyBrYmZsIG9wdGMKCWVjaG8gImxpbmUgNDogcmV0PSQ/LCBvcHRjPSRvcHRjLCBPUFRJTkQ9JE9QVElORCIKCWtmdW5jIC1LS0sgYmxhaAoJZWNobyAibGluZSA1OiBPUFRJTkQ9JE9QVElORCIKCWdldG9wdHMga2JmbCBvcHRjCgllY2hvICJsaW5lIDY6IHJldD0kPywgb3B0Yz0kb3B0YywgT1BUSU5EPSRPUFRJTkQiCgllY2hvCgkKCU9QVElORD0xCglzZXQgLS0gLWZia2wKCWVjaG8gImxpbmUgMTA6IE9QVElORD0kT1BUSU5EIgoJZ2V0b3B0cyBrYmZsIG9wdGMKCWVjaG8gImxpbmUgMjA6IHJldD0kPywgb3B0Yz0kb3B0YywgT1BUSU5EPSRPUFRJTkQiCgliZnVuYyAtQkJCIGJsYWgKCWVjaG8gImxpbmUgMzA6IE9QVElORD0kT1BUSU5EIgoJZ2V0b3B0cyBrYmZsIG9wdGMKCWVjaG8gImxpbmUgNDA6IHJldD0kPywgb3B0Yz0kb3B0YywgT1BUSU5EPSRPUFRJTkQiCglrZnVuYyAtS0tLIGJsYWgKCWVjaG8gImxpbmUgNTA6IE9QVElORD0kT1BUSU5EIgoJZ2V0b3B0cyBrYmZsIG9wdGMKCWVjaG8gImxpbmUgNjA6IHJldD0kPywgb3B0Yz0kb3B0YywgT1BUSU5EPSRPUFRJTkQiCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMTogT1BUSU5EPTEKCWxpbmUgMjogcmV0PTAsIG9wdGM9ZiwgT1BUSU5EPTIKCWJmdW5jOiBlbnRlciAoYXJnczogLUJCQiBibGFoOyBPUFRJTkQ9MikKCWJmdW5jOiBCIG9wdGlvbgoJYmZ1bmM6IEIgb3B0aW9uCgliZnVuYzogbGVhdmUKCWxpbmUgMzogT1BUSU5EPTIKCWxpbmUgNDogcmV0PTAsIG9wdGM9YiwgT1BUSU5EPTMKCWtmdW5jOiBlbnRlciAoYXJnczogLUtLSyBibGFoOyBPUFRJTkQ9MSkKCWtmdW5jOiBLIG9wdGlvbgoJa2Z1bmM6IEsgb3B0aW9uCglrZnVuYzogSyBvcHRpb24KCWtmdW5jOiBsZWF2ZQoJbGluZSA1OiBPUFRJTkQ9MwoJbGluZSA2OiByZXQ9MCwgb3B0Yz1rLCBPUFRJTkQ9NAoJCglsaW5lIDEwOiBPUFRJTkQ9MQoJbGluZSAyMDogcmV0PTAsIG9wdGM9ZiwgT1BUSU5EPTIKCWJmdW5jOiBlbnRlciAoYXJnczogLUJCQiBibGFoOyBPUFRJTkQ9MikKCWJmdW5jOiBCIG9wdGlvbgoJYmZ1bmM6IEIgb3B0aW9uCgliZnVuYzogbGVhdmUKCWxpbmUgMzA6IE9QVElORD0yCglsaW5lIDQwOiByZXQ9MSwgb3B0Yz0/LCBPUFRJTkQ9MgoJa2Z1bmM6IGVudGVyIChhcmdzOiAtS0tLIGJsYWg7IE9QVElORD0xKQoJa2Z1bmM6IEsgb3B0aW9uCglrZnVuYzogSyBvcHRpb24KCWtmdW5jOiBLIG9wdGlvbgoJa2Z1bmM6IGxlYXZlCglsaW5lIDUwOiBPUFRJTkQ9MgoJbGluZSA2MDogcmV0PTEsIG9wdGM9PywgT1BUSU5EPTIKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IDsgaXMgbm90IHJlcXVpcmVkIGJlZm9yZSB0aGUgdGhlbiBpbiBpZiAoKCAuLi4gKSkgdGhlbiAuLi4Kc3RkaW46CglpZiAoKCAxICkpIHRoZW4KCSAgICBlY2hvIG9rIGRwYXJlbgoJZmkKCWlmIFtbIC1uIDEgXV0gdGhlbgoJICAgIGVjaG8gb2sgZGJyYWNrZXRzCglmaQpleHBlY3RlZC1zdGRvdXQ6CglvayBkcGFyZW4KCW9rIGRicmFja2V0cwotLS0KbmFtZTogcmVncmVzc2lvbi01NQpkZXNjcmlwdGlvbjoKCUNoZWNrICR7Zm9vOiViYXJ9IGlzIGFsbG93ZWQgKGtzaDg4IGFsbG93cyBpdC4uLikKc3RkaW46Cgl4PWZvb1hiYXJYYmxhaAoJZWNobyAxICR7eCVYKn0KCWVjaG8gMiAke3g6JVgqfQoJZWNobyAzICR7eCUlWCp9CgllY2hvIDQgJHt4OiUlWCp9CgllY2hvIDUgJHt4IypYfQoJZWNobyA2ICR7eDojKlh9CgllY2hvIDcgJHt4IyMqWH0KCWVjaG8gOCAke3g6IyMqWH0KZXhwZWN0ZWQtc3Rkb3V0OgoJMSBmb29YYmFyCgkyIGZvb1hiYXIKCTMgZm9vCgk0IGZvbwoJNSBiYXJYYmxhaAoJNiBiYXJYYmxhaAoJNyBibGFoCgk4IGJsYWgKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTcKZGVzY3JpcHRpb246CglDaGVjayBpZiB0eXBlc2V0IG91dHB1dCBpcyBjb3JyZWN0IGZvcgoJdW5pbml0aWFsaXNlZCBhcnJheSBlbGVtZW50cy4Kc3RkaW46Cgl0eXBlc2V0IC1pIHh4eFs0XQoJZWNobyBBCgl0eXBlc2V0IC1pIHwgZ3JlcCB4eHggfCBzZWQgJ3MvXi8gICAgLycKCWVjaG8gQgoJdHlwZXNldCB8IGdyZXAgeHh4IHwgc2VkICdzL14vICAgIC8nCgkKCXh4eFsxXT0yKzUKCWVjaG8gTQoJdHlwZXNldCAtaSB8IGdyZXAgeHh4IHwgc2VkICdzL14vICAgIC8nCgllY2hvIE4KCXR5cGVzZXQgfCBncmVwIHh4eCB8IHNlZCAncy9eLyAgICAvJwpleHBlY3RlZC1zdGRvdXQ6CglBCgkgICAgeHh4CglCCgkgICAgdHlwZXNldCAtaSB4eHgKCU0KCSAgICB4eHhbMV09NwoJTgoJICAgIHNldCAtQSB4eHgKCSAgICB0eXBlc2V0IC1pIHh4eFsxXQotLS0KbmFtZTogcmVncmVzc2lvbi01OApkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIHRyYXAgZXhpdCBpcyBvayAoZXhpdCBub3QgbWlzdGFrZW4gZm9yIHNpZ25hbCBuYW1lKQpzdGRpbjoKCXRyYXAgJ2VjaG8gaGknIGV4aXQKCXRyYXAgZXhpdCAxCmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTU5CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgJHsjYXJyYXlbKl19IGlzIGNhbGN1bGF0ZWQgY29ycmVjdGx5LgpzdGRpbjoKCWFbMTJdPWhpCglhWzhdPXRoZXJlCgllY2hvICR7I2FbKl19CmV4cGVjdGVkLXN0ZG91dDoKCTIKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNjAKZGVzY3JpcHRpb246CglDaGVjayBpZiBkZWZhdWx0IGV4aXQgc3RhdHVzIGlzIHByZXZpb3VzIGNvbW1hbmQKc3RkaW46CgkodHJ1ZTsgZXhpdCkKCWVjaG8gQSAkPwoJKGZhbHNlOyBleGl0KQoJZWNobyBCICQ/CgkoIChleGl0IDEwMykgOyBleGl0KQoJZWNobyBDICQ/CmV4cGVjdGVkLXN0ZG91dDoKCUEgMAoJQiAxCglDIDEwMwotLS0KbmFtZTogcmVncmVzc2lvbi02MQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEVYSVQgdHJhcCBpcyBleGVjdXRlZCBmb3Igc3ViIHNoZWxscy4Kc3RkaW46Cgl0cmFwICdlY2hvIHBhcmVudCBleGl0JyBFWElUCgllY2hvIHN0YXJ0CgkoZWNobyBBOyBlY2hvIEEgbGFzdCkKCWVjaG8gQgoJKGVjaG8gQzsgdHJhcCAnZWNobyBzdWIgZXhpdCcgRVhJVDsgZWNobyBDIGxhc3QpCgllY2hvIHBhcmVudCBsYXN0CmV4cGVjdGVkLXN0ZG91dDoKCXN0YXJ0CglBCglBIGxhc3QKCUIKCUMKCUMgbGFzdAoJc3ViIGV4aXQKCXBhcmVudCBsYXN0CglwYXJlbnQgZXhpdAotLS0KbmFtZTogcmVncmVzc2lvbi02MgpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIHRlc3QgLW50Ly1vdCBzdWNjZWVkcyBpZiBzZWNvbmQoZmlyc3QpIGZpbGUgaXMgbWlzc2luZy4Kc3RkaW46CgltYXRyaXgoKSB7CgkJbG9jYWwgYSBiIGMgZCBlIGYgZyBoCgkJdGVzdCBhIC1udCBiOyBhPSQ/CgkJdGVzdCBiIC1udCBhOyBiPSQ/CgkJdGVzdCBhIC1vdCBiOyBjPSQ/CgkJdGVzdCBiIC1vdCBhOyBkPSQ/CgkJdGVzdCBhIC1udCBhOyBlPSQ/CgkJdGVzdCBiIC1udCBiOyBmPSQ/CgkJdGVzdCBhIC1vdCBhOyBnPSQ/CgkJdGVzdCBiIC1vdCBiOyBoPSQ/CgkJZWNobyAkMSAkYSAkYiAkYyAkZCAvICRlICRmICRnICRoIC4KCX0KCW1hdHJpeCBhCgk6PmEKCW1hdHJpeCBiCglzbGVlcCAyCQkjIG10aW1lIGdyYW51bGFyaXR5IGZvciBPUy8yIGFuZCBGQVQKCTo+YgoJbWF0cml4IGMKCXNsZWVwIDIKCWVjaG8gZHVtbXkgPmEJIyBEZWJpYW4gR05VL0h1cmQgIzk1NTI3MAoJbWF0cml4IGQKCXJtIGEKCW1hdHJpeCBlCmV4cGVjdGVkLXN0ZG91dDoKCWEgMSAxIDEgMSAvIDEgMSAxIDEgLgoJYiAwIDEgMSAwIC8gMSAxIDEgMSAuCgljIDEgMCAwIDEgLyAxIDEgMSAxIC4KCWQgMCAxIDEgMCAvIDEgMSAxIDEgLgoJZSAxIDAgMCAxIC8gMSAxIDEgMSAuCi0tLQpuYW1lOiByZWdyZXNzaW9uLTYzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgdHlwZXNldCwgZXhwb3J0LCBhbmQgcmVhZG9ubHkgd29yawpzdGRpbjoKCXsKCQllY2hvIEZOT1JELTAKCQlGTk9SRF9BPTEKCQlGTk9SRF9CPTIKCQlGTk9SRF9DPTMKCQlGTk9SRF9EPTQKCQlGTk9SRF9FPTUKCQlGTk9SRF9GPTYKCQlGTk9SRF9HPTcKCQlGTk9SRF9IPTgKCQlpbnRlZ2VyIEZOT1JEX0UgRk5PUkRfRiBGTk9SRF9HIEZOT1JEX0gKCQlleHBvcnQgRk5PUkRfQyBGTk9SRF9EIEZOT1JEX0cgRk5PUkRfSAoJCXJlYWRvbmx5IEZOT1JEX0IgRk5PUkRfRCBGTk9SRF9GIEZOT1JEX0gKCQllY2hvIEZOT1JELTEKCQlleHBvcnQKCQllY2hvIEZOT1JELTIKCQlleHBvcnQgLXAKCQllY2hvIEZOT1JELTMKCQlyZWFkb25seQoJCWVjaG8gRk5PUkQtNAoJCXJlYWRvbmx5IC1wCgkJZWNobyBGTk9SRC01CgkJdHlwZXNldAoJCWVjaG8gRk5PUkQtNgoJCXR5cGVzZXQgLXAKCQllY2hvIEZOT1JELTcKCQl0eXBlc2V0IC0KCQllY2hvIEZOT1JELTgKCX0gfCBmZ3JlcCBGTk9SRAoJZm5vcmQ9KDQyIDIzKQoJdHlwZXNldCAtcCBmbm9yZAoJZWNobyBGTk9SRC05CmV4cGVjdGVkLXN0ZG91dDoKCUZOT1JELTAKCUZOT1JELTEKCUZOT1JEX0MKCUZOT1JEX0QKCUZOT1JEX0cKCUZOT1JEX0gKCUZOT1JELTIKCWV4cG9ydCBGTk9SRF9DPTMKCWV4cG9ydCBGTk9SRF9EPTQKCWV4cG9ydCBGTk9SRF9HPTcKCWV4cG9ydCBGTk9SRF9IPTgKCUZOT1JELTMKCUZOT1JEX0IKCUZOT1JEX0QKCUZOT1JEX0YKCUZOT1JEX0gKCUZOT1JELTQKCXJlYWRvbmx5IEZOT1JEX0I9MgoJcmVhZG9ubHkgRk5PUkRfRD00CglyZWFkb25seSBGTk9SRF9GPTYKCXJlYWRvbmx5IEZOT1JEX0g9OAoJRk5PUkQtNQoJdHlwZXNldCBGTk9SRF9BCgl0eXBlc2V0IC1yIEZOT1JEX0IKCXR5cGVzZXQgLXggRk5PUkRfQwoJdHlwZXNldCAteCAtciBGTk9SRF9ECgl0eXBlc2V0IC1pIEZOT1JEX0UKCXR5cGVzZXQgLWkgLXIgRk5PUkRfRgoJdHlwZXNldCAtaSAteCBGTk9SRF9HCgl0eXBlc2V0IC1pIC14IC1yIEZOT1JEX0gKCUZOT1JELTYKCXR5cGVzZXQgRk5PUkRfQT0xCgl0eXBlc2V0IC1yIEZOT1JEX0I9MgoJdHlwZXNldCAteCBGTk9SRF9DPTMKCXR5cGVzZXQgLXggLXIgRk5PUkRfRD00Cgl0eXBlc2V0IC1pIEZOT1JEX0U9NQoJdHlwZXNldCAtaSAtciBGTk9SRF9GPTYKCXR5cGVzZXQgLWkgLXggRk5PUkRfRz03Cgl0eXBlc2V0IC1pIC14IC1yIEZOT1JEX0g9OAoJRk5PUkQtNwoJRk5PUkRfQT0xCglGTk9SRF9CPTIKCUZOT1JEX0M9MwoJRk5PUkRfRD00CglGTk9SRF9FPTUKCUZOT1JEX0Y9NgoJRk5PUkRfRz03CglGTk9SRF9IPTgKCUZOT1JELTgKCXNldCAtQSBmbm9yZAoJdHlwZXNldCBmbm9yZFswXT00MgoJdHlwZXNldCBmbm9yZFsxXT0yMwoJRk5PUkQtOQotLS0KbmFtZTogcmVncmVzc2lvbi02NApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgd2UgY2FuIHJlZGVmaW5lIGZ1bmN0aW9ucyBjYWxsaW5nIHRpbWUgYnVpbHRpbgpzdGRpbjoKCXQoKSB7CgkJdGltZSA+L2Rldi9udWxsCgl9Cgl0IDI+L2Rldi9udWxsCgl0KCkgewoJCXRpbWUKCX0KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNjUKZGVzY3JpcHRpb246CgljaGVjayBmb3IgYSByZWdyZXNzaW9uIHdpdGggc2xlZXAgYnVpbHRpbiBhbmQgc2lnbmFsIG1hc2sKY2F0ZWdvcnk6ICFub2pzaWcKdGltZS1saW1pdDogNQpzdGRpbjoKCXNsZWVwIDEKCWVjaG8gYmx1YiB8JgoJd2hpbGUgcmVhZCAtcCBsaW5lOyBkbyA6OyBkb25lCgllY2hvIG9rCmV4cGVjdGVkLXN0ZG91dDoKCW9rCi0tLQpuYW1lOiByZWdyZXNzaW9uLTY2CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBxdW90aW5nIGlzIHNhbmUKY2F0ZWdvcnk6ICFub2pzaWcKc3RkaW46CglhY19zcGFjZT0nICcKCWFjX25ld2xpbmU9JwoJJwoJc2V0IHwgZ3JlcCBeYWNfIHwmCglzZXQgLUEgbGluZXMKCXdoaWxlIElGUz0gcmVhZCAtcHIgbGluZTsgZG8KCQlpZiBbWyAkbGluZSA9ICpzcGFjZSogXV07IHRoZW4KCQkJbGluZXNbMF09JGxpbmUKCQllbHNlCgkJCWxpbmVzWzFdPSRsaW5lCgkJZmkKCWRvbmUKCWZvciBsaW5lIGluICIke2xpbmVzW0BdfSI7IGRvCgkJcHJpbnQgLXIgLS0gIiRsaW5lIgoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglhY19zcGFjZT0nICcKCWFjX25ld2xpbmU9JCdcbicKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNjcKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHdlIGNhbiBib3RoIGJyZWFrIGFuZCB1c2Ugc291cmNlIG9uIHRoZSBzYW1lIGxpbmUKc3RkaW46Cglmb3IgcyBpbiBzOyBkbyBicmVhazsgZG9uZTsgcHJpbnQgLXMgcwotLS0KbmFtZTogcmVncmVzc2lvbi02OApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYWxsIGNvbW1vbiBhcml0aG1ldGljIG9wZXJhdG9ycyB3b3JrIGFzIGV4cGVjdGVkCnN0ZGluOgoJZWNobyAxICQoKCBhID0gNSApKSAuCgllY2hvIDIgJCgoICsrYSApKSAsICQoKCBhKysgKSkgLCAkKCggYSApKSAuCgllY2hvIDMgJCgoIC0tYSApKSAsICQoKCBhLS0gKSkgLCAkKCggYSApKSAuCgllY2hvIDQgJCgoIGEgPT0gNSApKSAsICQoKCBhID09IDYgKSkgLgoJZWNobyA1ICQoKCBhICE9IDUgKSkgLCAkKCggYSAhPSA2ICkpIC4KCWVjaG8gNiAkKCggYSAqPSAzICkpIC4KCWVjaG8gNyAkKCggYSAvPSA1ICkpIC4KCWVjaG8gOCAkKCggYSAlPSAyICkpIC4KCWVjaG8gOSAkKCggYSArPSA5ICkpIC4KCWVjaG8gMTAgJCgoIGEgLT0gNCApKSAuCgllY2hvIDExICQoKCBhIDw8PSAxICkpIC4KCWVjaG8gMTIgJCgoIGEgPj49IDEgKSkgLgoJZWNobyAxMyAkKCggYSAmPSA0ICkpIC4KCWVjaG8gMTQgJCgoIGEgXj0gYSApKSAuCgllY2hvIDE1ICQoKCBhIHw9IDUgKSkgLgoJZWNobyAxNiAkKCggNSA8PCAxICkpIC4KCWVjaG8gMTcgJCgoIDUgPj4gMSApKSAuCgllY2hvIDE4ICQoKCA1IDw9IDYgKSkgLCAkKCggNSA8PSA1ICkpICwgJCgoIDUgPD0gNCApKSAuCgllY2hvIDE5ICQoKCA1ID49IDYgKSkgLCAkKCggNSA+PSA1ICkpICwgJCgoIDUgPj0gNCApKSAuCgllY2hvIDIwICQoKCA1IDwgNiApKSAsICQoKCA1IDwgNSApKSAsICQoKCA1IDwgNCApKSAuCgllY2hvIDIxICQoKCA1ID4gNiApKSAsICQoKCA1ID4gNSApKSAsICQoKCA1ID4gNCApKSAuCgllY2hvIDIyICQoKCAwICYmIDAgKSkgLCAkKCggMCAmJiAxICkpICwgJCgoIDEgJiYgMCApKSAsICQoKCAxICYmIDEgKSkgLgoJZWNobyAyMyAkKCggMCB8fCAwICkpICwgJCgoIDAgfHwgMSApKSAsICQoKCAxIHx8IDAgKSkgLCAkKCggMSB8fCAxICkpIC4KCWVjaG8gMjQgJCgoIDUgKiAzICkpIC4KCWVjaG8gMjUgJCgoIDcgLyAyICkpIC4KCWVjaG8gMjYgJCgoIDUgJSA1ICkpICwgJCgoIDUgJSA0ICkpICwgJCgoIDUgJSAxICkpICwgJCgoIDUgJSAtMSApKSAsICQoKCA1ICUgLTIgKSkgLgoJZWNobyAyNyAkKCggNSArIDIgKSkgLCAkKCggNSArIDAgKSkgLCAkKCggNSArIC0yICkpIC4KCWVjaG8gMjggJCgoIDUgLSAyICkpICwgJCgoIDUgLSAwICkpICwgJCgoIDUgLSAtMiApKSAuCgllY2hvIDI5ICQoKCA2ICYgNCApKSAsICQoKCA2ICYgOCApKSAuCgllY2hvIDMwICQoKCA0IF4gMiApKSAsICQoKCA0IF4gNCApKSAuCgllY2hvIDMxICQoKCA0IHwgMiApKSAsICQoKCA0IHwgNCApKSAsICQoKCA0IHwgMCApKSAuCgllY2hvIDMyICQoKCAwID8gMSA6IDIgKSkgLCAkKCggMyA/IDQgOiA1ICkpIC4KCWVjaG8gMzMgJCgoIDUgLCAyICwgMyApKSAuCgllY2hvIDM0ICQoKCB+MCApKSAsICQoKCB+MSApKSAsICQoKCB+fjEgKSkgLCAkKCggfn4yICkpIC4KCWVjaG8gMzUgJCgoICEwICkpICwgJCgoICExICkpICwgJCgoICEhMSApKSAsICQoKCAhITIgKSkgLgoJZWNobyAzNiAkKCggKDUpICkpIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSA1IC4KCTIgNiAsIDYgLCA3IC4KCTMgNiAsIDYgLCA1IC4KCTQgMSAsIDAgLgoJNSAwICwgMSAuCgk2IDE1IC4KCTcgMyAuCgk4IDEgLgoJOSAxMCAuCgkxMCA2IC4KCTExIDEyIC4KCTEyIDYgLgoJMTMgNCAuCgkxNCAwIC4KCTE1IDUgLgoJMTYgMTAgLgoJMTcgMiAuCgkxOCAxICwgMSAsIDAgLgoJMTkgMCAsIDEgLCAxIC4KCTIwIDEgLCAwICwgMCAuCgkyMSAwICwgMCAsIDEgLgoJMjIgMCAsIDAgLCAwICwgMSAuCgkyMyAwICwgMSAsIDEgLCAxIC4KCTI0IDE1IC4KCTI1IDMgLgoJMjYgMCAsIDEgLCAwICwgMCAsIDEgLgoJMjcgNyAsIDUgLCAzIC4KCTI4IDMgLCA1ICwgNyAuCgkyOSA0ICwgMCAuCgkzMCA2ICwgMCAuCgkzMSA2ICwgNCAsIDQgLgoJMzIgMiAsIDQgLgoJMzMgMyAuCgkzNCAtMSAsIC0yICwgMSAsIDIgLgoJMzUgMSAsIDAgLCAxICwgMSAuCgkzNiA1IC4KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNjkKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFsbCBub24tbGtzaCBhcml0aG1ldGljIG9wZXJhdG9ycyB3b3JrIGFzIGV4cGVjdGVkCmNhdGVnb3J5OiBzaGVsbDpsZWdhY3ktbm8Kc3RkaW46CglhPTUgYj0weDgwMDAwMDA1CgllY2hvIDEgJCgoIGEgXjw9IDEgKSkgLCAkKCggYiBePD0gMSApKSAuCgllY2hvIDIgJCgoIGEgXj49IDIgKSkgLCAkKCggYiBePj0gMiApKSAuCgllY2hvIDMgJCgoIDUgXjwgMSApKSAuCgllY2hvIDQgJCgoIDUgXj4gMSApKSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgMTAgLCAxMSAuCgkyIC0yMTQ3NDgzNjQ2ICwgLTEwNzM3NDE4MjIgLgoJMyAxMCAuCgk0IC0yMTQ3NDgzNjQ2IC4KLS0tCm5hbWU6IGV4cG9ydC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYWxsZXhwb3J0IHdvcmtzLCBiYXNpYwpzdGRpbjoKCXFhPTEKCXNldCAtQSBxYiAyIDMKCXNldCAtYQoJcWM9NAoJc2V0IC1BIHFkIDUgNgoJZXhwb3J0IC1wIHwgZ3JlcCAnXmV4cG9ydCBxJwpleHBlY3RlZC1zdGRvdXQ6CglleHBvcnQgcWM9NAoJZXhwb3J0IHFkWzBdPTUKCWV4cG9ydCBxZFsxXT02Ci0tLQpuYW1lOiByZWFkb25seS0wCmRlc2NyaXB0aW9uOgoJRW5zdXJlIHJlYWRvbmx5IGlzIGhvbm91cmVkIGZvciBhc3NpZ25tZW50cyBhbmQgdW5zZXQKc3RkaW46CgkiJF9fcHJvZ25hbWUiIC1jICd1PXg7IGVjaG8gJD8gJHUgLicgfHwgZWNobyBhYm9ydGVkLCAkPwoJZWNobyA9CgkiJF9fcHJvZ25hbWUiIC1jICdyZWFkb25seSB1OyB1PXg7IGVjaG8gJD8gJHUgLicgfHwgZWNobyBhYm9ydGVkLCAkPwoJZWNobyA9CgkiJF9fcHJvZ25hbWUiIC1jICd1PXg7IHJlYWRvbmx5IHU7IHVuc2V0IHU7IGVjaG8gJD8gJHUgLicgfHwgZWNobyBhYm9ydGVkLCAkPwpleHBlY3RlZC1zdGRvdXQ6CgkwIHggLgoJPQoJYWJvcnRlZCwgMgoJPQoJMSB4IC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvcmVhZC1vbmx5LwotLS0KbmFtZTogcmVhZG9ubHktMQpkZXNjcmlwdGlvbjoKCWh0dHA6Ly9hdXN0aW5ncm91cGJ1Z3MubmV0L3ZpZXcucGhwP2lkPTM2NyBmb3IgZXhwb3J0CnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAncmVhZG9ubHkgZm9vOyBleHBvcnQgZm9vPWE7IGVjaG8gJD8nIHx8IGVjaG8gYWJvcnRlZCwgJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJYWJvcnRlZCwgMgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9yZWFkLW9ubHkvCi0tLQpuYW1lOiByZWFkb25seS0yYQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZ2V0b3B0cyB3b3JrcyBhcyBpbnRlbmRlZCwgZm9yIHJlYWRvbmx5LTJiIHRvIGJlIHZhbGlkCnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAnc2V0IC0tIC1hIGI7IGdldG9wdHMgYSBjOyBlY2hvICQ/ICRjIC47IGdldG9wdHMgYSBjOyBlY2hvICQ/ICRjIC4nIHx8IGVjaG8gYWJvcnRlZCwgJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJMCBhIC4KCTEgPyAuCi0tLQpuYW1lOiByZWFkb25seS0yYgpkZXNjcmlwdGlvbjoKCWh0dHA6Ly9hdXN0aW5ncm91cGJ1Z3MubmV0L3ZpZXcucGhwP2lkPTM2NyBmb3IgZ2V0b3B0cwpzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJ3JlYWRvbmx5IGM7IHNldCAtLSAtYSBiOyBnZXRvcHRzIGEgYzsgZWNobyAkPyAkYyAuJyB8fCBlY2hvIGFib3J0ZWQsICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTIgLgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9yZWFkLW9ubHkvCi0tLQpuYW1lOiByZWFkb25seS0zCmRlc2NyaXB0aW9uOgoJaHR0cDovL2F1c3Rpbmdyb3VwYnVncy5uZXQvdmlldy5waHA/aWQ9MzY3IGZvciByZWFkCnN0ZGluOgoJZWNobyB4IHwgIiRfX3Byb2duYW1lIiAtYyAncmVhZCBzOyBlY2hvICQ/ICRzIC4nIHx8IGVjaG8gYWJvcnRlZCwgJD8KCWVjaG8geSB8ICIkX19wcm9nbmFtZSIgLWMgJ3JlYWRvbmx5IHM7IHJlYWQgczsgZWNobyAkPyAkcyAuJyB8fCBlY2hvIGFib3J0ZWQsICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTAgeCAuCgkyIC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvcmVhZC1vbmx5LwotLS0KbmFtZTogcmVhZG9ubHktNApkZXNjcmlwdGlvbjoKCURvIG5vdCBwZXJtaXQgYnlwYXNzaW5nIHJlYWRvbmx5IGZvciBmaXJzdCBhcnJheSBpdGVtCnN0ZGluOgoJc2V0IC1BIGFyciAtLSBmb28gYmFyCglyZWFkb25seSBhcnIKCWFycj1iYXoKCXByaW50IC1yIC0tICIke2FycltAXX0iCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9yZWFkWyAtXT9vbmx5LwotLS0KbmFtZTogcmVhZG9ubHktNQpkZXNjcmlwdGlvbjoKCUVuc3VyZSByZWFkb25seSBpcyBpZGVtcG90ZW50CnN0ZGluOgoJcmVhZG9ubHkgeD0xCglyZWFkb25seSB4Ci0tLQpuYW1lOiBzeW50YXgtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgbG9uZSBhbXBlcnNhbmQgaXMgYSBzeW50YXggZXJyb3IKc3RkaW46CgkgJgpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46Cgkvc3ludGF4IGVycm9yLwotLS0KbmFtZTogeHh4LXF1b3RlZC1uZXdsaW5lLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFw8bmV3bGluZT4gd29ya3MgaW5zaWRlIG9mICR7fQpzdGRpbjoKCWFiYz0yCgllY2hvICR7YWJcCgljfQpleHBlY3RlZC1zdGRvdXQ6CgkyCi0tLQpuYW1lOiB4eHgtcXVvdGVkLW5ld2xpbmUtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXDxuZXdsaW5lPiB3b3JrcyBhdCB0aGUgc3RhcnQgb2YgYSBoZXJlIGRvY3VtZW50CnN0ZGluOgoJY2F0IDw8IEVPXAoJRgoJaGkKCUVPRgpleHBlY3RlZC1zdGRvdXQ6CgloaQotLS0KbmFtZTogeHh4LXF1b3RlZC1uZXdsaW5lLTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFw8bmV3bGluZT4gd29ya3MgYXQgdGhlIGVuZCBvZiBhIGhlcmUgZG9jdW1lbnQKc3RkaW46CgljYXQgPDwgRU9GCgloaQoJRU9cCglGCmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiB4eHgtbXVsdGktYXNzaWdubWVudC1jbWQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFzc2lnbm1lbnRzIGluIGEgY29tbWFuZCBhZmZlY3Qgc3Vic2VxdWVudCBhc3NpZ25tZW50cwoJaW4gdGhlIHNhbWUgY29tbWFuZApzdGRpbjoKCUZPTz1hYmMKCUZPTz0xMjMgQkFSPSRGT08KCWVjaG8gJEJBUgpleHBlY3RlZC1zdGRvdXQ6CgkxMjMKLS0tCm5hbWU6IHh4eC1tdWx0aS1hc3NpZ25tZW50LXBvc2l4LWNtZApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIGJlaGF2aW91ciBmb3IgbXVsdGlwbGUgYXNzaWdubWVudHMgd2l0aCBhCgljb21tYW5kIG5hbWUgbWF0Y2hlcyBQT1NJWC4gU2VlOgoJaHR0cDovL3RocmVhZC5nbWFuZS5vcmcvZ21hbmUuY29tcC5zdGFuZGFyZHMucG9zaXguYXVzdGluLmdlbmVyYWwvMTkyNQpzdGRpbjoKCVg9YSBZPWI7IFg9JFkgWT0kWCAiJF9fcHJvZ25hbWUiIC1jICdlY2hvIDEgJFggJFkgLic7IGVjaG8gMiAkWCAkWSAuCgl1bnNldCBYIFkgWgoJWD1hIFk9JHtYPWJ9IFo9JFggIiRfX3Byb2duYW1lIiAtYyAnZWNobyAzICRaIC4nCgl1bnNldCBYIFkgWgoJWD1hIFk9JHtYPWJ9IFo9JFg7IGVjaG8gNCAkWiAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgYiBhIC4KCTIgYSBiIC4KCTMgYiAuCgk0IGEgLgotLS0KbmFtZTogeHh4LW11bHRpLWFzc2lnbm1lbnQtcG9zaXgtbm9jbWQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBiZWhhdmlvdXIgZm9yIG11bHRpcGxlIGFzc2lnbm1lbnRzIHdpdGggbm8KCWNvbW1hbmQgbmFtZSBtYXRjaGVzIFBPU0lYIChEZWJpYW4gIzMzNDE4MikuIFNlZToKCWh0dHA6Ly90aHJlYWQuZ21hbmUub3JnL2dtYW5lLmNvbXAuc3RhbmRhcmRzLnBvc2l4LmF1c3Rpbi5nZW5lcmFsLzE5MjUKc3RkaW46CglYPWEgWT1iOyBYPSRZIFk9JFg7IGVjaG8gMSAkWCAkWSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgYiBiIC4KLS0tCm5hbWU6IHh4eC1tdWx0aS1hc3NpZ25tZW50LXBvc2l4LXN1YmFzc2lnbgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIGJlaGF2aW91ciBmb3IgbXVsdGlwbGUgYXNzaWdubWVudHMgbWF0Y2hlcyBQT1NJWDoKCS0gVGhlIGFzc2lnbm1lbnQgd29yZHMgc2hhbGwgYmUgZXhwYW5kZWQgaW4gdGhlIGN1cnJlbnQgZXhlY3V0aW9uCgkgIGVudmlyb25tZW50LgoJLSBUaGUgYXNzaWdubWVudHMgaGFwcGVuIGluIHRoZSB0ZW1wb3JhcnkgZXhlY3V0aW9uIGVudmlyb25tZW50LgpzdGRpbjoKCXVuc2V0IFggWSBaCglaPWEgWT0ke1g6PWJ9IHNoIC1jICdlY2hvICskWCsgKyRZKyArJForJwoJZWNobyAvJFgvCgkjIE5vdyBmb3IgdGhlIHNwZWNpYWwgY2FzZToKCXVuc2V0IFggWSBaCglYPSBZPSR7WDo9Yn0gc2ggLWMgJ2VjaG8gKyRYKyArJFkrJwoJZWNobyAvJFgvCmV4cGVjdGVkLXN0ZG91dDoKCSsrICtiKyArYSsKCS9iLwoJKysgK2IrCgkvYi8KLS0tCm5hbWU6IHh4eC1leGVjLWVudmlyb25tZW50LTEKZGVzY3JpcHRpb246CglDaGVjayB0byBzZWUgaWYgZXhlYyBzZXRzIGl0J3MgZW52aXJvbm1lbnQgY29ycmVjdGx5CnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG51bnNldCBSQU5ET01cbmV4cG9ydCB8IHdoaWxlIElGUz0gcmVhZCAtcicgXAoJICAgICdSQU5ET007IGRvIGV2YWwgJ1wnJ3ByaW50IC1yIC0tICIkUkFORE9NPSQnXCcnIiRSQU5ET00iJ1wnXCJcJ1w7IFwKCSAgICBkb25lID5lbnY7IGNobW9kICt4IGVudjsgUEFUSD0uJFBBVEhTRVAkUEFUSAoJRk9PPWJhciBleGVjIGVudgpleHBlY3RlZC1zdGRvdXQtcGF0dGVybjoKCS8oXnwuKlxuKUZPTz1iYXJcbi8KLS0tCm5hbWU6IHh4eC1leGVjLWVudmlyb25tZW50LTIKZGVzY3JpcHRpb246CglDaGVjayB0byBtYWtlIHN1cmUgZXhlYyBkb2Vzbid0IGNoYW5nZSBlbnZpcm9ubWVudCBpZiBhIHByb2dyYW0KCWlzbid0IGV4ZWMtZWQKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbnVuc2V0IFJBTkRPTVxuZXhwb3J0IHwgd2hpbGUgSUZTPSByZWFkIC1yJyBcCgkgICAgJ1JBTkRPTTsgZG8gZXZhbCAnXCcncHJpbnQgLXIgLS0gIiRSQU5ET009JCdcJyciJFJBTkRPTSInXCdcIlwnXDsgXAoJICAgIGRvbmUgPmVudjsgY2htb2QgK3ggZW52OyBQQVRIPS4kUEFUSFNFUCRQQVRICgllbnYgPmJhcjEKCUZPTz1iYXIgZXhlYzsgZW52ID5iYXIyCgljbXAgLXMgYmFyMSBiYXIyCi0tLQpuYW1lOiBleGVjLWZ1bmN0aW9uLWVudmlyb25tZW50LTEKZGVzY3JpcHRpb246CglDaGVjayBhc3NpZ25tZW50cyBpbiBmdW5jdGlvbiBjYWxscyBhbmQgd2hldGhlciB0aGV5IGFmZmVjdAoJdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGVudmlyb25tZW50CnN0ZGluOgoJZigpIHsgYT0yOyB9OyBnKCkgeyBiPTM7IGVjaG8geSRjLTsgfTsgYT0xIGY7IGI9MjsgYz0xIGcKCWVjaG8geCRhLSRiLSB6JGMtCmV4cGVjdGVkLXN0ZG91dDoKCXkxLQoJeC0zLSB6LQotLS0KbmFtZTogZXhlYy1tb2Rlcm4ta29ybi1zaGVsbApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZXhlYyBjYW4gZXhlY3V0ZSBhbnkgY29tbWFuZCB0aGF0IG1ha2VzIGl0Cgl0aHJvdWdoIHN5bnRheCBhbmQgcGFyc2VyCnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG5lY2hvIHRmJyA+bHEKCWNobW9kICt4IGxxCglQQVRIPSRQV0QKCWV4ZWMgMj4mMQoJZm9vKCkgeyBwcmludCB0d287IH0KCXByaW50ID0xCgkoZXhlYyBwcmludCBvbmUpCglwcmludCA9MgoJKGV4ZWMgZm9vKQoJcHJpbnQgPTMKCShleGVjIGxzKQoJcHJpbnQgPTQKCShleGVjIGxxKQpleHBlY3RlZC1zdGRvdXQtcGF0dGVybjoKCS89MVxub25lXG49MlxudHdvXG49M1xuLio6IGxzOiBpbmFjY2Vzc2libGUgb3Igbm90IGZvdW5kXG49NFxudGZcbi8KLS0tCm5hbWU6IGV4ZWMta3NoODgKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGV4ZWMgb25seSBleGVjdXRlcyBhZnRlciBhIFBBVEggc2VhcmNoCmFyZ3VtZW50czogIS1vIXBvc2l4IQpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZWNobyB0ZicgPmxxCgljaG1vZCAreCBscQoJUEFUSD0kUFdECglleGVjIDI+JjEKCWZvbygpIHsgcHJpbnQgdHdvOyB9CglwcmludCA9MQoJKGV4ZWMgcHJpbnQgb25lKQoJcHJpbnQgPTIKCShleGVjIGZvbykKCXByaW50ID0zCgkoZXhlYyBscykKCXByaW50ID00CgkoZXhlYyBscSkKZXhwZWN0ZWQtc3Rkb3V0LXBhdHRlcm46CgkvPTFcbi4qOiBwcmludDogaW5hY2Nlc3NpYmxlIG9yIG5vdCBmb3VuZFxuPTJcbi4qOiBmb286IGluYWNjZXNzaWJsZSBvciBub3QgZm91bmRcbj0zXG4uKjogbHM6IGluYWNjZXNzaWJsZSBvciBub3QgZm91bmRcbj00XG50ZlxuLwotLS0KbmFtZTogeHh4LXdoYXQtZG8teW91LWNhbGwtdGhpcy0xCnN0ZGluOgoJZWNobyAiJHtmb286LSJhIn0qIgpleHBlY3RlZC1zdGRvdXQ6CglhKgotLS0KbmFtZTogeHh4LXByZWZpeC1zdHJpcC0xCnN0ZGluOgoJZm9vPSdhIGNkZWYnCgllY2hvICR7Zm9vI2EgY30KZXhwZWN0ZWQtc3Rkb3V0OgoJZGVmCi0tLQpuYW1lOiB4eHgtcHJlZml4LXN0cmlwLTIKc3RkaW46CglzZXQgYSBjCgl4PSdhIGNkZWYnCgllY2hvICR7eCMkKn0KZXhwZWN0ZWQtc3Rkb3V0OgoJZGVmCi0tLQpuYW1lOiB4eHgtdmFyaWFibGUtc3ludGF4LTEKc3RkaW46CgllY2hvICR7On0KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvYmFkIHN1YnN0aXR1dGlvbi8KZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogeHh4LXZhcmlhYmxlLXN5bnRheC0yCnN0ZGluOgoJc2V0IDAKCWVjaG8gJHsqOjB9CmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2JhZCBzdWJzdGl0dXRpb24vCmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IHh4eC12YXJpYWJsZS1zeW50YXgtMwpzdGRpbjoKCXNldCAtQSBmb28gMAoJZWNobyAke2Zvb1sqXTowfQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9iYWQgc3Vic3RpdHV0aW9uLwpleHBlY3RlZC1leGl0OiAxCi0tLQpuYW1lOiB4eHgtdmFyaWFibGUtc3ludGF4LTQKZGVzY3JpcHRpb246CglOb3QgYWxsIGtpbmRzIG9mIHRyaW1zIGFyZSBjdXJyZW50bHkgaW1wb3NzaWJsZSwgY2hlY2sgdGhvc2Ugd2hvIGRvCnN0ZGluOgoJZm9vKCkgewoJCWVjaG8gIjwkKj4gWCR7KjorIH1YIgoJfQoJZm9vIGEgYgoJZm9vICIiIGMKCWZvbyAiIgoJZm9vICIiICIiCglJRlM9OgoJZm9vIGEgYgoJZm9vICIiIGMKCWZvbyAiIgoJZm9vICIiICIiCglJRlM9Cglmb28gYSBiCglmb28gIiIgYwoJZm9vICIiCglmb28gIiIgIiIKZXhwZWN0ZWQtc3Rkb3V0OgoJPGEgYj4gWCBYCgk8IGM+IFggWAoJPD4gWFgKCTwgPiBYIFgKCTxhOmI+IFggWAoJPDpjPiBYIFgKCTw+IFhYCgk8Oj4gWCBYCgk8YWI+IFggWAoJPGM+IFggWAoJPD4gWFgKCTw+IFhYCi0tLQpuYW1lOiB4eHgtc3Vic3RpdHV0aW9uLWV2YWwtb3JkZXIKZGVzY3JpcHRpb246CglDaGVjayBvcmRlciBvZiBldmFsdWF0aW9uIG9mIGV4cHJlc3Npb25zCnN0ZGluOgoJaT0xIHg9IHk9CglzZXQgLUEgQSBhYmMgZGVmIEdISSBqIEcgawoJZWNobyAke0FbeD0oaSs9MSldIyR7QVt5PShpKz0yKV19fQoJZWNobyAkeCAkeQpleHBlY3RlZC1zdGRvdXQ6CglISQoJMiA0Ci0tLQpuYW1lOiB4eHgtc3Vic3RpdHV0aW9uLWV2YWwtb3JkZXItMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHNvbWUgY29ybmVyIGNhc2VzCnN0ZGluOgoJdW5zZXQgdmFyCglpPTQyCgk6ICR7dmFyKyR7cVtpPTc3N119fSByZXF1aXJlZCB0byBiZSBsYXp5IGJ5IFBPU0lYCgllY2hvIDE9JGkKCXZhcj1tZW93CglpPTQyCgk6ICR7dmFyKyR7cVtpPTc3N119fSBldmFsIHNpbmNlIHZhciBpcyBub3cgc2V0CgllY2hvIDI9JGkKCXVuc2V0IHZhcgoJaT00MgoJOiAke3ZhciMke3FbaT03NzddfX0gcGF0dGVybiBpcyBuZWVkZWQgZXZlbiBpZiB2YXIgaXMgZW1wdHkKCWVjaG8gMz0kaQoJdmFyPW1lb3cKCWk9NDIKCTogJHt2YXIjJHtxW2k9Nzc3XX19CgllY2hvIDQ9JGkKZXhwZWN0ZWQtc3Rkb3V0OgoJMT00MgoJMj03NzcKCTM9Nzc3Cgk0PTc3NwotLS0KbmFtZTogeHh4LXNldC1vcHRpb24tMQpkZXNjcmlwdGlvbjoKCUNoZWNrIG9wdGlvbiBwYXJzaW5nIGluIHNldApzdGRpbjoKCXNldCAtdnNBIGZvbyAtLSBBIDEgMyAyCgllY2hvICR7Zm9vWypdfQpleHBlY3RlZC1zdGRlcnI6CgllY2hvICR7Zm9vWypdfQpleHBlY3RlZC1zdGRvdXQ6CgkxIDIgMyBBCi0tLQpuYW1lOiB4eHgtZXhlYy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBleGVjIGV4aXRzIGZvciBidWlsdC1pbnMKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCnN0ZGluOgoJZXhlYyBlY2hvIGhpCgllY2hvIHN0aWxsIGhlcnJlCmV4cGVjdGVkLXN0ZG91dDoKCWhpCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLiovCi0tLQpuYW1lOiB4eHgtd2hpbGUtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2Ygd2hpbGUgbG9vcHMKCVhYWCBuZWVkIHRvIGRvIHNhbWUgZm9yIGZvci9zZWxlY3QvdW50aWwgbG9vcHMKc3RkaW46CglpPXgKCXdoaWxlIFsgJGkgIT0geHh4IF0gOyBkbwoJICAgIGk9eCRpCgkgICAgaWYgWyAkaSA9IHh4eCBdIDsgdGhlbgoJCWZhbHNlCgkJY29udGludWUKCSAgICBmaQoJZG9uZQoJZWNobyBsb29wMT0kPwoJCglpPXgKCXdoaWxlIFsgJGkgIT0geHh4IF0gOyBkbwoJICAgIGk9eCRpCgkgICAgaWYgWyAkaSA9IHh4eCBdIDsgdGhlbgoJCWZhbHNlCgkJYnJlYWsKCSAgICBmaQoJZG9uZQoJZWNobyBsb29wMj0kPwoJCglpPXgKCXdoaWxlIFsgJGkgIT0geHh4IF0gOyBkbwoJICAgIGk9eCRpCgkgICAgZmFsc2UKCWRvbmUKCWVjaG8gbG9vcDM9JD8KZXhwZWN0ZWQtc3Rkb3V0OgoJbG9vcDE9MAoJbG9vcDI9MAoJbG9vcDM9MQotLS0KbmFtZTogeHh4LXN0YXR1cy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBibGFuayBsaW5lcyBkb24ndCBjbGVhciAkPwpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKc3RkaW46CgkoZXhpdCAxKQoJZWNobyAkPwoJKGV4aXQgMSkKCQoJZWNobyAkPwoJdHJ1ZQpleHBlY3RlZC1zdGRvdXQ6CgkxCgkxCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLiovCi0tLQpuYW1lOiB4eHgtc3RhdHVzLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICQ/IGlzIHByZXNlcnZlZCBpbiBzdWJzaGVsbHMsIGluY2x1ZGVzLCB0cmFwcy4Kc3RkaW46CgkoZXhpdCAxKQoJCgllY2hvIGJsYW5rOiAkPwoJCgkoZXhpdCAyKQoJKGVjaG8gc3Vic2hlbGw6ICQ/KQoJCgllY2hvICdlY2hvIGluY2x1ZGU6ICQ/JyA+IGZvbwoJKGV4aXQgMykKCS4gLi9mb28KCQoJdHJhcCAnZWNobyB0cmFwOiAkPycgRVJSCgkoZXhpdCA0KQoJZWNobyBleGl0OiAkPwpleHBlY3RlZC1zdGRvdXQ6CglibGFuazogMQoJc3Vic2hlbGw6IDIKCWluY2x1ZGU6IDMKCXRyYXA6IDQKCWV4aXQ6IDQKLS0tCm5hbWU6IHh4eC1zdGF0LTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRlc3RzIG9uIGZpbGVzIGFyZSBjb25zaXN0ZW50CgkoZmFpbHMgd2hlbiBydW4gYXMgcm9vdCwgdW5mb3J0dW5hdGVseSkKY2F0ZWdvcnk6IGRpc2FibGVkCnN0ZGluOgoJbWtkaXIgYQoJZWNobyB4ID5hL2IKCXRlc3QgLWUgYS9iOyBlY2hvIDFlICQ/IC4KCXRlc3QgLWYgYS9iOyBlY2hvIDFmICQ/IC4KCWNobW9kIDAgYQoJdGVzdCAtZSBhL2I7IGVjaG8gMmUgJD8gLgoJdGVzdCAtZiBhL2I7IGVjaG8gMmYgJD8gLgoJY2htb2QgNzAwIGEKCXRlc3QgLWUgYS9iOyBlY2hvIDNlICQ/IC4KCXRlc3QgLWYgYS9iOyBlY2hvIDNmICQ/IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMWUgMCAuCgkxZiAwIC4KCTJlIDEgLgoJMmYgMSAuCgkzZSAwIC4KCTNmIDAgLgotLS0KbmFtZTogeHh4LWNsZWFuLWNoYXJzLTEKZGVzY3JpcHRpb246CglDaGVjayBNQUdJQyBjaGFyYWN0ZXIgaXMgc3R1ZmZlZCBjb3JyZWN0bHkKc3RkaW46CgllY2hvIGBlY2hvIFujYApleHBlY3RlZC1zdGRvdXQ6CglbowotLS0KbmFtZTogeHh4LXBhcmFtLXN1YnN0LXFtYXJrLTEKZGVzY3JpcHRpb246CglDaGVjayBzdXBwcmVzaW9uIG9mIGVycm9yIG1lc3NhZ2Ugd2l0aCBudWxsIHN0cmluZy4gIEFjY29yZGluZyB0bwoJUE9TSVgsIGl0IHNob3VsZG4ndCBwcmludCB0aGUgZXJyb3IgYXMgJ3dvcmQnIGlzbid0IG9taXR0ZWQuCglrc2g4OC85MywgU29sYXJpcyAvYmluL3NoIGFuZCAvdXNyL3hwZzQvYmluL3NoIGFsbCBwcmludCB0aGUgZXJyb3IuCnN0ZGluOgoJdW5zZXQgZm9vCgl4PQoJZWNobyB4JHtmb28/JHh9CmV4cGVjdGVkLWV4aXQ6IDEKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46ICEvbm90IHNldC8KLS0tCm5hbWU6IHh4eC1wYXJhbS1zdWJzdC1xbWFyay1uYW1lc3BlYwpkZXNjcmlwdGlvbjoKCUNoZWNrIHNwZWNpYWwgbmFtZXMgYXJlIG91dHB1dCBjb3JyZWN0bHkKc3RkaW46Cglkb2l0KCkgewoJCSIkX19wcm9nbmFtZSIgLWMgIiRAIiA+bzEgMj5vMgoJCXJ2PSQ/CgkJZWNobyBSRVRWQUw6ICRydgoJCXNlZCAtZSAicwFeJHtfX3Byb2duYW1lJS5leGV9XC4qZSp4KmUqOiABUFJPRzogASIgLWUgJ3MvXi9TVERPVVQ6IC9nJyA8bzEKCQlzZWQgLWUgInMBXiR7X19wcm9nbmFtZSUuZXhlfVwuKmUqeCplKjogAVBST0c6IAEiIC1lICdzL14vU1RERVJSOiAvZycgPG8yCgl9Cglkb2l0ICdlY2hvICR7MXh9JwoJZG9pdCAnZWNobyAiJHsxeH0iJwoJZG9pdCAnZWNobyAkezE/fScKCWRvaXQgJ2VjaG8gJHsxOT99JwoJZG9pdCAnZWNobyAkeyE6P30nCglkb2l0IC11ICdlY2hvICR7Kjo/fScgZm9vICIiCmV4cGVjdGVkLXN0ZG91dDoKCVJFVFZBTDogMQoJU1RERVJSOiBQUk9HOiAkezF4fTogYmFkIHN1YnN0aXR1dGlvbgoJUkVUVkFMOiAxCglTVERFUlI6IFBST0c6ICR7MXh9OiBiYWQgc3Vic3RpdHV0aW9uCglSRVRWQUw6IDEKCVNUREVSUjogUFJPRzogMTogcGFyYW1ldGVyIG51bGwgb3Igbm90IHNldAoJUkVUVkFMOiAxCglTVERFUlI6IFBST0c6IDE5OiBwYXJhbWV0ZXIgbnVsbCBvciBub3Qgc2V0CglSRVRWQUw6IDEKCVNUREVSUjogUFJPRzogITogcGFyYW1ldGVyIG51bGwgb3Igbm90IHNldAoJUkVUVkFMOiAxCglTVERFUlI6IGZvbzogJHsqOj99OiBiYWQgc3Vic3RpdHV0aW9uCi0tLQpuYW1lOiB4eHgtcGFyYW0tXy0xCiMgZmFpbHMgZHVlIHRvIHdlaXJkbmVzcyBvZiBleGVjdiBzdHVmZgpjYXRlZ29yeTogIW9zOnV3aW4tbnQKZGVzY3JpcHRpb246CglDaGVjayBjIGZsYWcgaXMgc2V0Lgphcmd1bWVudHM6ICEtYyFlY2hvICJbJC1dIiEKZXhwZWN0ZWQtc3Rkb3V0LXBhdHRlcm46IC9eXFsuKmMuKlxdJC8KLS0tCm5hbWU6IHRpbGRlLWV4cGFuZC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGlsZGUgZXhwYW5zaW9uIGFmdGVyIGVxdWFsIHNpZ25zCmVudi1zZXR1cDogIUhPTUU9L3N3ZWV0IQpzdGRpbjoKCWVjaG8gJHtBPWE9fX4gYj1+IGM9ZH4gfgoJZXhwb3J0IGU9fiBmPWR+Cgljb21tYW5kIGNvbW1hbmQgZXhwb3J0IGc9fiBoPWR+CgllY2hvICIuICRlIC4gJGYgLiIKCWVjaG8gIi4gJGcgLiAkaCAuIgoJc2V0IC1vIHBvc2l4Cgl1bnNldCBBIGUgZiBnIGgKCWVjaG8gJHtBPWE9fX4gYj1+IGM9ZH4gfgoJZXhwb3J0IGU9fiBmPWR+Cgljb21tYW5kIGNvbW1hbmQgZXhwb3J0IGc9fiBoPWR+CgllY2hvICIuICRlIC4gJGYgLiIKCWVjaG8gIi4gJGcgLiAkaCAuIgpleHBlY3RlZC1zdGRvdXQ6CglhPS9zd2VldCBiPS9zd2VldCBjPWR+IC9zd2VldAoJLiAvc3dlZXQgLiBkfiAuCgkuIC9zd2VldCAuIGR+IC4KCWE9fiBiPX4gYz1kfiAvc3dlZXQKCS4gL3N3ZWV0IC4gZH4gLgoJLiAvc3dlZXQgLiBkfiAuCi0tLQpuYW1lOiB0aWxkZS1leHBhbmQtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRpbGRlIGV4cGFuc2lvbiB3b3JrcwplbnYtc2V0dXA6ICFIT01FPS9zd2VldCEKc3RkaW46Cgk6PidjPWEnCgl0eXBlc2V0IGM9W2FiXQoJOj4nZD1hJwoJeD10eXBlc2V0OyAkeCBkPVthYl0KCWVjaG8gIjwkYz4iICI8JGQ+IgoJd2Q9JFBXRAoJY2QgLwoJcGx1cz0kKHByaW50IC1yIC0tIH4rKQoJbWludXM9JChwcmludCAtciAtLSB+LSkKCW5peD0kKHByaW50IC1yIC0tIH4pCglbWyAkcGx1cyA9IC8gXV07IGVjaG8gb25lICQ/IC4KCVtbICRtaW51cyA9ICIkd2QiIF1dOyBlY2hvIHR3byAkPyAuCglbWyAkbml4ID0gL3N3ZWV0IF1dOyBlY2hvIG5peCAkPyAuCmV4cGVjdGVkLXN0ZG91dDoKCTxbYWJdPiA8YT4KCW9uZSAwIC4KCXR3byAwIC4KCW5peCAwIC4KLS0tCm5hbWU6IHRpbGRlLWV4cGFuZC0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbW9zdGx5IEF1c3RpbiAzNTEgc3R1ZmYKc3RkaW46CglzaG93YXJncygpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIGVjaG8gLW4gIjwkc19hcmc+ICI7IGRvbmU7IGVjaG8gLjsgfQoJc2V0ICIxIGI9MiIgIjMgZD00IgoJZXhwb3J0IGE9JDEgXGM9JDIKCXNob3dhcmdzIDEgIiRhIiAiJGIiICIkYyIgIiRkIgoJdW5zZXQgYSBiIGMgZAoJSE9NRT0vdG1wCglleHBvcnQgXGE9fiBiPX4KCWNvbW1hbmQgZXhwb3J0IGM9fgoJYnVpbHRpbiBleHBvcnQgZD1+CglcXGJ1aWx0aW4gZXhwb3J0IGU9fgoJc2hvd2FyZ3MgMiAiJGEiICIkYiIgIiRjIiAiJGQiICIkZSIga3NoCgl1bnNldCBhIGIgYyBkIGUKCXNldCAtbyBwb3NpeAoJZXhwb3J0IFxhPX4gYj1+Cgljb21tYW5kIGV4cG9ydCBjPX4KCWJ1aWx0aW4gZXhwb3J0IGQ9fgoJXFxidWlsdGluIGV4cG9ydCBlPX4KCXNob3dhcmdzIDMgIiRhIiAiJGIiICIkYyIgIiRkIiAiJGUiIHBvc2l4Cgl1bnNldCBhIGIgYyBkIGUKCXNldCArbyBwb3NpeAoJZXhwb3J0IGE9JDEKCXNob3dhcmdzIDQgIiRhIiAiJGIiIGtzaAoJdW5zZXQgYSBiCglzaG93YXJncyA1IGE9JDEga3NoCglleHBvcnQgXGE9JDEKCXNob3dhcmdzIDYgIiRhIiAiJGIiIGtzaAoJdW5zZXQgYSBiCglzZXQgLW8gcG9zaXgKCWV4cG9ydCBhPSQxCglzaG93YXJncyA3ICIkYSIgIiRiIiBwb3NpeAoJdW5zZXQgYSBiCglzaG93YXJncyA4IGE9JDEgcG9zaXgKCWV4cG9ydCBcYT0kMQoJc2hvd2FyZ3MgOSAiJGEiICIkYiIgcG9zaXgKCXVuc2V0IGEgYgoJc2V0ICtvIHBvc2l4Cgljb21tYW5kIGVjaG8gMTAga3NoIGE9fgoJY29tbWFuZCBjb21tYW5kIGV4cG9ydCBhPX4KCXNob3dhcmdzIDExICIkYSIKCXVuc2V0IGEKCXNldCAtbyBwb3NpeAoJY29tbWFuZCBlY2hvIDEyIHBvc2l4IGE9fgoJY29tbWFuZCBjb21tYW5kIGV4cG9ydCBhPX4KCXNob3dhcmdzIDEzICIkYSIKCXVuc2V0IGEKCSMgdW5zcGVjaWZpZWQgd2hldGhlciAvdG1wIG9yIH4KCXZhcj1leHBvcnQ7IGNvbW1hbmQgJHZhciBhPX4KCXNob3dhcmdzIDE0ICIkYSIKCWVjaG8gJ2VjaG8gIjwkZm9vPiInID5iYXIKCSIkX19wcm9nbmFtZSIgYmFyCgl2YXI9Zm9vCglleHBvcnQgJHZhcj0xCgkiJF9fcHJvZ25hbWUiIGJhcgoJZXhwb3J0ICR2YXI9fgoJIiRfX3Byb2duYW1lIiBiYXIKCSMgdW5zcGVjaWZpZWQKCWNvbW1hbmQgLS0gZXhwb3J0IGE9fgoJc2hvd2FyZ3MgMTggIiRhIgoJc2V0IC1BIGJsYQoJdHlwZXNldCBibGFbMV09fjp+Cgl0eXBlc2V0IC1nIGdibD1+IGcyPSQxCglsb2NhbCBsY2w9fiBsMj0kMQoJcmVhZG9ubHkgcm89fiByMj0kMQoJc2hvd2FyZ3MgMTkgIiR7YmxhWzFdfSIgYT1+ICIkZ2JsIiAiJGxjbCIgIiRybyIgIiRnMiIgIiRsMiIgIiRyMiIKCXNldCArbyBwb3NpeAoJZWNobyAiMjAgc29tZSBhcmJpdHJhcnkgc3R1ZmYgIj1+CglzZXQgLW8gcG9zaXgKCWVjaG8gIjIxIHNvbWUgYXJiaXRyYXJ5IHN0dWZmICI9fgpleHBlY3RlZC1zdGRvdXQ6Cgk8MT4gPDEgYj0yPiA8PiA8Mz4gPDQ+IC4KCTwyPiA8L3RtcD4gPC90bXA+IDwvdG1wPiA8L3RtcD4gPC90bXA+IDxrc2g+IC4KCTwzPiA8fj4gPC90bXA+IDwvdG1wPiA8fj4gPC90bXA+IDxwb3NpeD4gLgoJPDQ+IDwxIGI9Mj4gPD4gPGtzaD4gLgoJPDU+IDxhPTE+IDxiPTI+IDxrc2g+IC4KCTw2PiA8MT4gPDI+IDxrc2g+IC4KCTw3PiA8MSBiPTI+IDw+IDxwb3NpeD4gLgoJPDg+IDxhPTE+IDxiPTI+IDxwb3NpeD4gLgoJPDk+IDwxPiA8Mj4gPHBvc2l4PiAuCgkxMCBrc2ggYT0vdG1wCgk8MTE+IDwvdG1wPiAuCgkxMiBwb3NpeCBhPX4KCTwxMz4gPC90bXA+IC4KCTwxND4gPH4+IC4KCTw+Cgk8MT4KCTx+PgoJPDE4PiA8fj4gLgoJPDE5PiA8L3RtcDovdG1wPiA8YT1+PiA8L3RtcD4gPC90bXA+IDwvdG1wPiA8MSBiPTI+IDwxIGI9Mj4gPDEgYj0yPiAuCgkyMCBzb21lIGFyYml0cmFyeSBzdHVmZiA9L3RtcAoJMjEgc29tZSBhcmJpdHJhcnkgc3R1ZmYgPX4KLS0tCm5hbWU6IGV4aXQtZXJyLTEKZGVzY3JpcHRpb246CglDaGVjayBzb21lICJleGl0IG9uIGVycm9yIiBjb25kaXRpb25zCnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG5leGVjICIkMSInID5lbnYKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZXhpdCAxJyA+ZmFsc2UKCWNobW9kICt4IGVudiBmYWxzZQoJUEFUSD0uJFBBVEhTRVAkUEFUSAoJc2V0IC1leAoJZW52IGZhbHNlICYmIGVjaG8gc29tZXRoaW5nCgllY2hvIEVORApleHBlY3RlZC1zdGRvdXQ6CglFTkQKZXhwZWN0ZWQtc3RkZXJyOgoJKyBlbnYgZmFsc2UKCSsgZWNobyBFTkQKLS0tCm5hbWU6IGV4aXQtZXJyLTIKZGVzY3JpcHRpb246CglDaGVjayBzb21lICJleGl0IG9uIGVycm9yIiBlZGdlIGNvbmRpdGlvbnMgKFBPU0lYbHkpCnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG5leGVjICIkMSInID5lbnYKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZXhpdCAxJyA+ZmFsc2UKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZXhpdCAwJyA+dHJ1ZQoJY2htb2QgK3ggZW52IGZhbHNlCglQQVRIPS4kUEFUSFNFUCRQQVRICglzZXQgLWV4CglpZiBlbnYgdHJ1ZTsgdGhlbgoJCWVudiBmYWxzZSAmJiBlY2hvIHNvbWV0aGluZwoJZmkKCWVjaG8gRU5ECmV4cGVjdGVkLXN0ZG91dDoKCUVORApleHBlY3RlZC1zdGRlcnI6CgkrIGVudiB0cnVlCgkrIGVudiBmYWxzZQoJKyBlY2hvIEVORAotLS0KbmFtZTogZXhpdC1lcnItMwpkZXNjcmlwdGlvbjoKCXBka3NoIHJlZ3Jlc3Npb24gd2hpY2ggQVQmVCBrc2ggZG9lcyByaWdodAoJVEZNIHNheXM6IFtzZXRdIC1lIHwgZXJyZXhpdAoJCUV4aXQgKGFmdGVyIGV4ZWN1dGluZyB0aGUgRVJSIHRyYXApIC4uLgpzdGRpbjoKCXRyYXAgJ2VjaG8gRVhJVCcgRVhJVAoJdHJhcCAnZWNobyBFUlInIEVSUgoJc2V0IC1lCgljZCAvWFhYWFggMj4vZGV2L251bGwKCWVjaG8gRE9ORQoJZXhpdCAwCmV4cGVjdGVkLXN0ZG91dDoKCUVSUgoJRVhJVApleHBlY3RlZC1leGl0OiBlICE9IDAKLS0tCm5hbWU6IGV4aXQtZXJyLTQKZGVzY3JpcHRpb246Cgkic2V0IC1lIiB0ZXN0IHN1aXRlIChQT1NJWCkKc3RkaW46CglzZXQgLWUKCWVjaG8gcHJlCglpZiB0cnVlIDsgdGhlbgoJCWZhbHNlICYmIGVjaG8gZm9vCglmaQoJZWNobyBiYXIKZXhwZWN0ZWQtc3Rkb3V0OgoJcHJlCgliYXIKLS0tCm5hbWU6IGV4aXQtZXJyLTUKZGVzY3JpcHRpb246Cgkic2V0IC1lIiB0ZXN0IHN1aXRlIChQT1NJWCkKc3RkaW46CglzZXQgLWUKCWZvbygpIHsKCQl3aGlsZSBbICIkMSIgXTsgZG8KCQkJZm9yIEUgaW4gJHg7IGRvCgkJCQlbICIkMSIgPSAiJEUiIF0gJiYgeyBzaGlmdCA7IGNvbnRpbnVlIDIgOyB9CgkJCWRvbmUKCQkJeD0iJHggJDEiCgkJCXNoaWZ0CgkJZG9uZQoJCWVjaG8gJHgKCX0KCWVjaG8gcHJlCglmb28gYSBiIGIgYwoJZWNobyBwb3N0CmV4cGVjdGVkLXN0ZG91dDoKCXByZQoJYSBiIGMKCXBvc3QKLS0tCm5hbWU6IGV4aXQtZXJyLTYKZGVzY3JpcHRpb246Cgkic2V0IC1lIiB0ZXN0IHN1aXRlIChCU0QgbWFrZSkKY2F0ZWdvcnk6IG9zOm1pcmJzZApzdGRpbjoKCW1rZGlyIHpkIHpkL2EgemQvYgoJcHJpbnQgJ2FsbDpcblx0QGVjaG8gZWluc1xuXHRAZXhpdCA0MlxuJyA+emQvYS9NYWtlZmlsZQoJcHJpbnQgJ2FsbDpcblx0QGVjaG8gendlaVxuJyA+emQvYi9NYWtlZmlsZQoJd2Q9JChwd2QpCglzZXQgLWUKCWZvciBlbnRyeSBpbiBhIGI7IGRvICggIHNldCAtZTsgIGlmIFtbIC1kICR3ZC96ZC8kZW50cnkuaTM4NiBdXTsgdGhlbiAgX25ld2Rpcl89IiRlbnRyeS5pMzg2IjsgIGVsc2UgIF9uZXdkaXJfPSIkZW50cnkiOyAgZmk7ICBpZiBbWyAteiAkX1RISVNESVJfIF1dOyB0aGVuICBfbmV4dGRpcl89IiRfbmV3ZGlyXyI7ICBlbHNlICBfbmV4dGRpcl89IiRfVEhJU0RJUl8vJF9uZXdkaXJfIjsgIGZpOyAgX21ha2VmaWxlX3NwZWNfPTsgIFtbICEgLWYgJHdkL3pkLyRfbmV3ZGlyXy9NYWtlZmlsZS5ic2Qtd3JhcHBlciBdXSAgfHwgX21ha2VmaWxlX3NwZWNfPSItZiBNYWtlZmlsZS5ic2Qtd3JhcHBlciI7ICBzdWJza2lwZGlyPTsgIGZvciBza2lwZGlyIGluIDsgZG8gIHN1YmVudHJ5PSR7c2tpcGRpciMkZW50cnl9OyAgaWYgW1sgJHN1YmVudHJ5ICE9ICRza2lwZGlyIF1dOyB0aGVuICBpZiBbWyAteiAkc3ViZW50cnkgXV07IHRoZW4gIGVjaG8gIigkX25leHRkaXJfIHNraXBwZWQpIjsgIGJyZWFrOyAgZmk7ICBzdWJza2lwZGlyPSIkc3Vic2tpcGRpciAke3N1YmVudHJ5Iy99IjsgIGZpOyAgZG9uZTsgIGlmIFtbIC16ICRza2lwZGlyIHx8IC1uICRzdWJlbnRyeSBdXTsgdGhlbiAgZWNobyAiPT09PiAkX25leHRkaXJfIjsgIGNkICR3ZC96ZC8kX25ld2Rpcl87ICBtYWtlIFNLSVBESVI9IiRzdWJza2lwZGlyIiAkX21ha2VmaWxlX3NwZWNfICBfVEhJU0RJUl89IiRfbmV4dGRpcl8iICAgYWxsOyAgZmk7ICApIGRvbmUgMj4mMSB8IHNlZCAicyEkd2QhV0QhZyIKZXhwZWN0ZWQtc3Rkb3V0OgoJPT09PiBhCgllaW5zCgkqKiogRXJyb3IgY29kZSA0MgoJCglTdG9wIGluIFdEL3pkL2EgKGxpbmUgMiBvZiBNYWtlZmlsZSkuCi0tLQpuYW1lOiBleGl0LWVyci03CmRlc2NyaXB0aW9uOgoJInNldCAtZSIgcmVncmVzc2lvbiAoTFAjMTEwNDU0MykKc3RkaW46CglzZXQgLWUKCWJsYSgpIHsKCQlbIC14ICRQV0Qvbm9uZXhpc3RhbnQgXSAmJiAkUFdEL25vbmV4aXN0YW50Cgl9CgllY2hvIHgKCWJsYQoJZWNobyB5JD8KZXhwZWN0ZWQtc3Rkb3V0OgoJeApleHBlY3RlZC1leGl0OiAxCi0tLQpuYW1lOiBleGl0LWVyci04CmRlc2NyaXB0aW9uOgoJInNldCAtZSIgcmVncmVzc2lvbiAoRGViaWFuICM3MDA1MjYpCnN0ZGluOgoJc2V0IC1lCglfZGJfY21kKCkgeyByZXR1cm4gJDE7IH0KCWRiX2lucHV0KCkgeyBfZGJfY21kIDMwOyB9CglkYl9nbygpIHsgX2RiX2NtZCAwOyB9CglkYl9pbnB1dCB8fCA6CglkYl9nbwoJZXhpdCAwCi0tLQpuYW1lOiBleGl0LWVyci05CmRlc2NyaXB0aW9uOgoJInNldCAtZSIgdmVyc3VzIGJhbmcgcGlwZWxpbmVzCnN0ZGluOgoJc2V0IC1lCgkhIGZhbHNlIHwgZmFsc2UKCWVjaG8gMSBvawoJISBmYWxzZSAmJiBmYWxzZQoJZWNobyAyIHdyb25nCmV4cGVjdGVkLXN0ZG91dDoKCTEgb2sKZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogZXhpdC1lcnItMTAKZGVzY3JpcHRpb246CglEZWJpYW4gIzI2OTA2NyAoY2YuIHJlZ3Jlc3Npb24tMzggYnV0IHdpdGggZXZhbCkKYXJndW1lbnRzOiAhLWUhCnN0ZGluOgoJZXZhbCBmYWxzZSB8fCB0cnVlCgllY2hvID0gJD8gLgpleHBlY3RlZC1zdGRvdXQ6Cgk9IDAgLgotLS0KbmFtZTogZXhpdC1lcnItMTEKZGVzY3JpcHRpb246CglGaXggLWUgaW5zaWRlIGV2YWwsIGZyb20gTWFydGlqbiBEZWtrZXI7IGV4cGVjdGVkLXN0ZG91dCBmcm9tIGtzaDkzCnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAnZXZhbCAnXCcnZWNobyAkey0vL1shZWhdfTsgZmFsc2U7IGVjaG8gcGhhbnRvbSBlJ1wnJzsgZWNobyB4JD8nCgllY2hvID0gJD8KCSIkX19wcm9nbmFtZSIgLWVjICdldmFsICdcJydlY2hvICR7LS8vWyFlaF19OyBmYWxzZTsgZWNobyBwaGFudG9tIGUnXCcnOyBlY2hvIHgkPycKCWVjaG8gPSAkPwpleHBlY3RlZC1zdGRvdXQ6CgloCglwaGFudG9tIGUKCXgwCgk9IDAKCWVoCgk9IDEKLS0tCm5hbWU6IGV4aXQtZW5vZW50LTEKZGVzY3JpcHRpb246CglTVVN2NCBzYXlzIHRoYXQgdGhlIHNoZWxsIHNob3VsZCBleGl0IHdpdGggMTI2LzEyNyBpbiBzb21lIHNpdHVhdGlvbnMKc3RkaW46CglpPTAKCShlY2hvOyBlY2hvIDopID54CgkiJF9fcHJvZ25hbWUiIC4veCA+L2Rldi9udWxsIDI+JjE7IHI9JD87IGVjaG8gJCgoaSsrKSkgJHIgLgoJIiRfX3Byb2duYW1lIiAtYyAuL3ggPi9kZXYvbnVsbCAyPiYxOyByPSQ/OyBlY2hvICQoKGkrKykpICRyIC4KCWVjaG8gZXhpdCA0MiA+eAoJIiRfX3Byb2duYW1lIiAuL3ggPi9kZXYvbnVsbCAyPiYxOyByPSQ/OyBlY2hvICQoKGkrKykpICRyIC4KCSIkX19wcm9nbmFtZSIgLWMgLi94ID4vZGV2L251bGwgMj4mMTsgcj0kPzsgZWNobyAkKChpKyspKSAkciAuCglybSAtZiB4CgkiJF9fcHJvZ25hbWUiIC4veCA+L2Rldi9udWxsIDI+JjE7IHI9JD87IGVjaG8gJCgoaSsrKSkgJHIgLgoJIiRfX3Byb2duYW1lIiAtYyAuL3ggPi9kZXYvbnVsbCAyPiYxOyByPSQ/OyBlY2hvICQoKGkrKykpICRyIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMCAwIC4KCTEgMTI2IC4KCTIgNDIgLgoJMyAxMjYgLgoJNCAxMjcgLgoJNSAxMjcgLgotLS0KbmFtZTogZXhpdC1ldmFsLTEKZGVzY3JpcHRpb246CglDaGVjayBldmFsIHZzIHN1YnN0aXR1dGlvbiBleGl0IGNvZGVzIChrc2g5MyBhbGlrZSkKc3RkaW46CgkoZXhpdCAxMikKCWV2YWwgJChmYWxzZSkKCWVjaG8gQSAkPwoJKGV4aXQgMTIpCglldmFsICcgJChmYWxzZSknCgllY2hvIEIgJD8KCShleGl0IDEyKQoJZXZhbCAiICQoZmFsc2UpIgoJZWNobyBDICQ/CgkoZXhpdCAxMikKCWV2YWwgImV2YWwgJChmYWxzZSkiCgllY2hvIEQgJD8KCShleGl0IDEyKQoJZXZhbCAnZXZhbCAnIiQoZmFsc2UpIgoJZWNobyBFICQ/CglJRlM9IiRJRlM6IgoJKGV4aXQgMTIpCglldmFsICQoZWNobyA6OyBmYWxzZSkKCWVjaG8gRiAkPwoJZWNobyAtbiAiRyAiCgkoZXhpdCAxMikKCWV2YWwgJ2VjaG8gJD8nCgllY2hvIEggJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJQSAwCglCIDEKCUMgMAoJRCAwCglFIDAKCUYgMAoJRyAxMgoJSCAwCi0tLQpuYW1lOiBleGl0LXRyYXAtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgImV4aXQiIHdpdGggbm8gYXJndW1lbnRzIGJlaGF2ZXMgU1VTdjQgY29uZm9ybWFudC4Kc3RkaW46Cgl0cmFwICdlY2hvIGhpOyBleGl0JyBFWElUCglleGl0IDkKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKZXhwZWN0ZWQtZXhpdDogOQotLS0KbmFtZTogZXhpdC10cmFwLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IEVSUiBhbmQgRVhJVCB0cmFwcyBhcmUgcnVuIGp1c3QgbGlrZSBHTlUgYmFzaCBkb2VzLgoJa3NoOTMgcnVucyBFUnRyYXAgYWZ0ZXIg4oCccGFyYW1ldGVyIG51bGwgb3Igbm90IHNldOKAnSAod2hpY2ggbWtzaAoJdXNlZCB0byBkbykgYnV0IChidWcpIGNvbnRpbnVlcyDigJxhbmQgb3V04oCdLCBleGl0IDAsIGluICtlIGV2YWwtdW5kZWYuCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJ4IgoJdj07IHVuc2V0IHYKCXRyYXAgJ2VjaG8gRVh0cmFwJyBFWElUCgl0cmFwICdlY2hvIEVSdHJhcCcgRVJSCglzZXQgJDEKCWVjaG8gImFuZCBydW4gJDIiCglldmFsICQyCgllY2hvIGFuZCBvdXQKZmlsZS1zZXR1cDogZmlsZSA2NDQgInh0IgoJdj07IHVuc2V0IHYKCXRyYXAgJ2VjaG8gRVh0cmFwJyBFWElUCgl0cmFwICdlY2hvIEVSdHJhcCcgRVJSCglzZXQgJDEKCWVjaG8gJ2FuZCBydW4gdHJ1ZScKCXRydWUKCWVjaG8gYW5kIG91dApmaWxlLXNldHVwOiBmaWxlIDY0NCAieGYiCgl2PTsgdW5zZXQgdgoJdHJhcCAnZWNobyBFWHRyYXAnIEVYSVQKCXRyYXAgJ2VjaG8gRVJ0cmFwJyBFUlIKCXNldCAkMQoJZWNobyAnYW5kIHJ1biBmYWxzZScKCWZhbHNlCgllY2hvIGFuZCBvdXQKZmlsZS1zZXR1cDogZmlsZSA2NDQgInh1IgoJdj07IHVuc2V0IHYKCXRyYXAgJ2VjaG8gRVh0cmFwJyBFWElUCgl0cmFwICdlY2hvIEVSdHJhcCcgRVJSCglzZXQgJDEKCWVjaG8gJ2FuZCBydW4gJHt2P30nCgkke3Y/fQoJZWNobyBhbmQgb3V0CnN0ZGluOgoJcnVudGVzdCgpIHsKCQlybSAtZiByYwoJCSgKCQkJIiRfX3Byb2duYW1lIiAiJEAiCgkJCWVjaG8gJD8gPnJjCgkJKSAyPiYxIHwgc2VkIFwKCQkgICAgLWUgJ3MvcGFyYW1ldGVyIG5vdCBzZXQvcGFyYW1ldGVyIG51bGwgb3Igbm90IHNldC8nIFwKCQkgICAgLWUgJ3MvW1tdNl0vLycgLWUgJ3MvOiBldmFsOiBsaW5lIDEvLycgLWUgJ3MvOiBsaW5lIDYvLycgXAoJCSAgICAtZSAicwFeJHtfX3Byb2duYW1lJS5leGV9XC4qZSp4KmUqOiA8c3RkaW4+XFtbMC05XSpdAVBST0cBIgoJfQoJeGU9LWUKCWVjaG8gOiAkeGUKCXJ1bnRlc3QgeCAkeGUgdHJ1ZQoJZWNobyA9IGV2YWwtdHJ1ZSAkKDxyYykgLgoJcnVudGVzdCB4ICR4ZSBmYWxzZQoJZWNobyA9IGV2YWwtZmFsc2UgJCg8cmMpIC4KCXJ1bnRlc3QgeCAkeGUgJyR7dj99JwoJZWNobyA9IGV2YWwtdW5kZWYgJCg8cmMpIC4KCXJ1bnRlc3QgeHQgJHhlCgllY2hvID0gbm9ldmFsLXRydWUgJCg8cmMpIC4KCXJ1bnRlc3QgeGYgJHhlCgllY2hvID0gbm9ldmFsLWZhbHNlICQoPHJjKSAuCglydW50ZXN0IHh1ICR4ZQoJZWNobyA9IG5vZXZhbC11bmRlZiAkKDxyYykgLgoJeGU9K2UKCWVjaG8gOiAkeGUKCXJ1bnRlc3QgeCAkeGUgdHJ1ZQoJZWNobyA9IGV2YWwtdHJ1ZSAkKDxyYykgLgoJcnVudGVzdCB4ICR4ZSBmYWxzZQoJZWNobyA9IGV2YWwtZmFsc2UgJCg8cmMpIC4KCXJ1bnRlc3QgeCAkeGUgJyR7dj99JwoJZWNobyA9IGV2YWwtdW5kZWYgJCg8cmMpIC4KCXJ1bnRlc3QgeHQgJHhlCgllY2hvID0gbm9ldmFsLXRydWUgJCg8cmMpIC4KCXJ1bnRlc3QgeGYgJHhlCgllY2hvID0gbm9ldmFsLWZhbHNlICQoPHJjKSAuCglydW50ZXN0IHh1ICR4ZQoJZWNobyA9IG5vZXZhbC11bmRlZiAkKDxyYykgLgpleHBlY3RlZC1zdGRvdXQ6Cgk6IC1lCglhbmQgcnVuIHRydWUKCWFuZCBvdXQKCUVYdHJhcAoJPSBldmFsLXRydWUgMCAuCglhbmQgcnVuIGZhbHNlCglFUnRyYXAKCUVYdHJhcAoJPSBldmFsLWZhbHNlIDEgLgoJYW5kIHJ1biAke3Y/fQoJeDogdjogcGFyYW1ldGVyIG51bGwgb3Igbm90IHNldAoJRVh0cmFwCgk9IGV2YWwtdW5kZWYgMSAuCglhbmQgcnVuIHRydWUKCWFuZCBvdXQKCUVYdHJhcAoJPSBub2V2YWwtdHJ1ZSAwIC4KCWFuZCBydW4gZmFsc2UKCUVSdHJhcAoJRVh0cmFwCgk9IG5vZXZhbC1mYWxzZSAxIC4KCWFuZCBydW4gJHt2P30KCXh1OiB2OiBwYXJhbWV0ZXIgbnVsbCBvciBub3Qgc2V0CglFWHRyYXAKCT0gbm9ldmFsLXVuZGVmIDEgLgoJOiArZQoJYW5kIHJ1biB0cnVlCglhbmQgb3V0CglFWHRyYXAKCT0gZXZhbC10cnVlIDAgLgoJYW5kIHJ1biBmYWxzZQoJRVJ0cmFwCglFUnRyYXAKCWFuZCBvdXQKCUVYdHJhcAoJPSBldmFsLWZhbHNlIDAgLgoJYW5kIHJ1biAke3Y/fQoJeDogdjogcGFyYW1ldGVyIG51bGwgb3Igbm90IHNldAoJRVh0cmFwCgk9IGV2YWwtdW5kZWYgMSAuCglhbmQgcnVuIHRydWUKCWFuZCBvdXQKCUVYdHJhcAoJPSBub2V2YWwtdHJ1ZSAwIC4KCWFuZCBydW4gZmFsc2UKCUVSdHJhcAoJYW5kIG91dAoJRVh0cmFwCgk9IG5vZXZhbC1mYWxzZSAwIC4KCWFuZCBydW4gJHt2P30KCXh1OiB2OiBwYXJhbWV0ZXIgbnVsbCBvciBub3Qgc2V0CglFWHRyYXAKCT0gbm9ldmFsLXVuZGVmIDEgLgotLS0KbmFtZTogZXhpdC10cmFwLTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBFWElUIHRyYXAgaXMgcnVuIGluIG1hbnkgcGxhY2VzLCBEZWJpYW4gIzkxMDI3NgpzdGRpbjoKCWZrdCgpIHsKCQl0cmFwIC0tICJlY2hvICQxID4mMiIgRVhJVAoJfQoJZmt0IHNoZWxsX2V4aXQKCSQoZmt0IGZuX2V4aXQpCgkkKHRyYXAgLS0gImVjaG8gY29tc3ViX2V4aXQgPiYyIiBFWElUKQoJKHRyYXAgLS0gImVjaG8gc3Vic2hlbGxfZXhpdCA+JjIiIEVYSVQpCmV4cGVjdGVkLXN0ZGVycjoKCWZuX2V4aXQKCWNvbXN1Yl9leGl0CglzdWJzaGVsbF9leGl0CglzaGVsbF9leGl0Ci0tLQpuYW1lOiBleGl0LXRyYXAtaW50ZXJhY3RpdmUKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGludGVyYWN0aXZlIHNoZWxsIGRvZXNuJ3QgZXhpdCB2aWEgRVhJVCB0cmFwIG9uIHN5bnRheCBlcnJvcgphcmd1bWVudHM6ICEtaSEKc3RkaW46Cgl0cmFwIC0tIEVYSVQKCWVjaG8gU3ludGF4IGVycm9yIDwKCWVjaG8gJ0FmdGVyIGVycm9yIDEnCgl0cmFwICdlY2hvIEV4aXQgdHJhcCcgRVhJVAoJZWNobyBTeW50YXggZXJyb3IgPAoJZWNobyAnQWZ0ZXIgZXJyb3IgMicKCXRyYXAgJ2VjaG8gRXhpdCB0cmFwJyBFWElUCglleGl0CgllY2hvICdBZnRlciBleGl0JwpleHBlY3RlZC1zdGRvdXQ6CglBZnRlciBlcnJvciAxCglBZnRlciBlcnJvciAyCglFeGl0IHRyYXAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46Cgkvc3ludGF4IGVycm9yOiB1bmV4cGVjdGVkICduZXdsaW5lJy8KLS0tCm5hbWU6IHRlc3Qtc3RsdC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0ZXN0IGFsc28gY2FuIGhhbmRsZSBzdHJpbmcxIDwgc3RyaW5nMiBldGMuCnN0ZGluOgoJdGVzdCAyMDA1LzEwLzA4ICc8JyAyMDA1LzA4LzIxICYmIGVjaG8gamEgfHwgZWNobyBuZWluCgl0ZXN0IDIwMDUvMDgvMjEgXDwgMjAwNS8xMC8wOCAmJiBlY2hvIGphIHx8IGVjaG8gbmVpbgoJdGVzdCAyMDA1LzEwLzA4ICc+JyAyMDA1LzA4LzIxICYmIGVjaG8gamEgfHwgZWNobyBuZWluCgl0ZXN0IDIwMDUvMDgvMjEgXD4gMjAwNS8xMC8wOCAmJiBlY2hvIGphIHx8IGVjaG8gbmVpbgpleHBlY3RlZC1zdGRvdXQ6CgluZWluCglqYQoJamEKCW5laW4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46ICEvdW5leHBlY3RlZCBvcC8KLS0tCm5hbWU6IHRlc3Qtc3RyLXBhdHRlcm4KZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFtbIHggPSAkeSBdXSBjYW4gdGFrZSBleHRnbG9icywgbGlrZSBrc2g5MwpzdGRpbjoKCVtbIC1uICRCQVNIX1ZFUlNJT04gXV0gJiYgc2hvcHQgLXMgZXh0Z2xvYgoJZnVuY3Rpb24gb25lIHsKCQluPSQxIHg9JDIgeT0kMyB6PSR7NDotJDN9CgkJW1sgJHggPSAkeSBdXTsgYT0kPwoJCVtbICR4ID0gIiR5IiBdXTsgYj0kPwoJCWV2YWwgJ1tbICR4ID0gJyIkeiInIF1dOyBjPSQ/JwoJCWV2YWwgJ1tbICR4ID0gIiciJHoiJyIgXV07IGQ9JD8nCgkJZWNobyAkbiAkYSAkYiAkYyAkZCAuCgl9Cgl4PSdhXCcKCVtbICR4ID0gYVwgIF1dOyBlY2hvIDAxICQ/IC4KCVtbICR4ID0gYVxcIF1dOyBlY2hvIDAyICQ/IC4KCW9uZSAwMyAnYVwnCSdhXCcJJ2FcXCcKCW9uZSAwNCAnYVxiJwknYVxiJwoJb25lIDA1ICdhXGInCSdhXFxiJwoJb25lIDA2ICdmb28nCSdmKyhvKScKCW9uZSAwNyAnZisobyknCSdmKyhvKScKCW9uZSAwOCAnZisobycJJ2YrKG8nCSdmK1wobycKCW9uZSAwOSBmb28JJ2YrKG8nCSdmK1wobycKCW9uZSAxMCBhYmNkZQknYVwqZScKCW9uZSAxMSAnYSplJwknYVwqZScKCW9uZSAxMiAnYVwqZScJJ2FcKmUnCgllY2hvIGV4dHJhczoKCXg9J2YrKG8nCgl6PSdmKyhvJwoJZXZhbCAnW1sgJHggPSAiJyIkeiInIiBdXTsgZWNobyAxNCAkPyAiKDA4OjQpIiAuJwoJeD1mb28KCWV2YWwgJ1tbICR4ID0gIiciJHoiJyIgXV07IGVjaG8gMTUgJD8gIigwOTo0KSIgLicKZXhwZWN0ZWQtc3Rkb3V0OgoJMDEgMSAuCgkwMiAwIC4KCTAzIDAgMCAwIDAgLgoJMDQgMSAwIDEgMCAuCgkwNSAwIDEgMCAwIC4KCTA2IDAgMSAwIDEgLgoJMDcgMSAwIDEgMCAuCgkwOCAwIDAgMCAxIC4KCTA5IDEgMSAxIDEgLgoJMTAgMSAxIDEgMSAuCgkxMSAwIDEgMCAxIC4KCTEyIDEgMCAxIDAgLgoJZXh0cmFzOgoJMTQgMCAoMDg6NCkgLgoJMTUgMSAoMDk6NCkgLgotLS0KbmFtZTogdGVzdC1wcmVjZWRlbmNlLTEKZGVzY3JpcHRpb246CglDaGVjayBhIHdlaXJkIHByZWNlZGVuY2UgY2FzZSAoYW5kIFBPU0lYIGVjaG8pCnN0ZGluOgoJdGVzdCBcKCAtZiA9IC1mIFwpCglydj0kPwoJZWNobyAkcnYKZXhwZWN0ZWQtc3Rkb3V0OgoJMAotLS0KbmFtZTogdGVzdC1vcHRpb24tMQpkZXNjcmlwdGlvbjoKCVRlc3QgdGhlIHRlc3QgLW8gb3BlcmF0b3IKc3RkaW46CglydW50ZXN0KCkgewoJCXRlc3QgLW8gJDE7IGVjaG8gJD8KCQlbIC1vICQxIF07IGVjaG8gJD8KCQlbWyAtbyAkMSBdXTsgZWNobyAkPwoJfQoJaWZfdGVzdCgpIHsKCQl0ZXN0IC1vICQxIC1vIC1vICEkMTsgZWNobyAkPwoJCVsgLW8gJDEgLW8gLW8gISQxIF07IGVjaG8gJD8KCQlbWyAtbyAkMSB8fCAtbyAhJDEgXV07IGVjaG8gJD8KCQl0ZXN0IC1vID8kMTsgZWNobyAkPwoJfQoJZWNobyAweSAkKGlmX3Rlc3QgdXRmOC1tb2RlKSA9CgllY2hvIDBuICQoaWZfdGVzdCB1dGY4LWhhY2spID0KCWVjaG8gMT0gJChydW50ZXN0IHV0ZjgtaGFjaykgPQoJZWNobyAyPSAkKHJ1bnRlc3QgIXV0ZjgtaGFjaykgPQoJZWNobyAzPSAkKHJ1bnRlc3QgP3V0ZjgtaGFjaykgPQoJc2V0ICtVCgllY2hvIDErICQocnVudGVzdCB1dGY4LW1vZGUpID0KCWVjaG8gMisgJChydW50ZXN0ICF1dGY4LW1vZGUpID0KCWVjaG8gMysgJChydW50ZXN0ID91dGY4LW1vZGUpID0KCXNldCAtVQoJZWNobyAxLSAkKHJ1bnRlc3QgdXRmOC1tb2RlKSA9CgllY2hvIDItICQocnVudGVzdCAhdXRmOC1tb2RlKSA9CgllY2hvIDMtICQocnVudGVzdCA/dXRmOC1tb2RlKSA9CgllY2hvID0gc2hvcnQgZmxhZ3MgPQoJZWNobyAweSAkKGlmX3Rlc3QgLVUpID0KCWVjaG8gMHkgJChpZl90ZXN0ICtVKSA9CgllY2hvIDBuICQoaWZfdGVzdCAtXykgPQoJZWNobyAwbiAkKGlmX3Rlc3QgLVUtKSA9CgllY2hvIDE9ICQocnVudGVzdCAtXykgPQoJZWNobyAyPSAkKHJ1bnRlc3QgIS1fKSA9CgllY2hvIDM9ICQocnVudGVzdCA/LV8pID0KCXNldCArVQoJZWNobyAxKyAkKHJ1bnRlc3QgLVUpID0KCWVjaG8gMisgJChydW50ZXN0ICEtVSkgPQoJZWNobyAzKyAkKHJ1bnRlc3QgPy1VKSA9CgllY2hvIDErICQocnVudGVzdCArVSkgPQoJZWNobyAyKyAkKHJ1bnRlc3QgIStVKSA9CgllY2hvIDMrICQocnVudGVzdCA/K1UpID0KCXNldCAtVQoJZWNobyAxLSAkKHJ1bnRlc3QgLVUpID0KCWVjaG8gMi0gJChydW50ZXN0ICEtVSkgPQoJZWNobyAzLSAkKHJ1bnRlc3QgPy1VKSA9CgllY2hvIDEtICQocnVudGVzdCArVSkgPQoJZWNobyAyLSAkKHJ1bnRlc3QgIStVKSA9CgllY2hvIDMtICQocnVudGVzdCA/K1UpID0KZXhwZWN0ZWQtc3Rkb3V0OgoJMHkgMCAwIDAgMCA9CgkwbiAxIDEgMSAxID0KCTE9IDEgMSAxID0KCTI9IDEgMSAxID0KCTM9IDEgMSAxID0KCTErIDEgMSAxID0KCTIrIDAgMCAwID0KCTMrIDAgMCAwID0KCTEtIDAgMCAwID0KCTItIDEgMSAxID0KCTMtIDAgMCAwID0KCT0gc2hvcnQgZmxhZ3MgPQoJMHkgMCAwIDAgMCA9CgkweSAwIDAgMCAwID0KCTBuIDEgMSAxIDEgPQoJMG4gMSAxIDEgMSA9CgkxPSAxIDEgMSA9CgkyPSAxIDEgMSA9CgkzPSAxIDEgMSA9CgkxKyAxIDEgMSA9CgkyKyAwIDAgMCA9CgkzKyAwIDAgMCA9CgkxKyAxIDEgMSA9CgkyKyAwIDAgMCA9CgkzKyAwIDAgMCA9CgkxLSAwIDAgMCA9CgkyLSAxIDEgMSA9CgkzLSAwIDAgMCA9CgkxLSAwIDAgMCA9CgkyLSAxIDEgMSA9CgkzLSAwIDAgMCA9Ci0tLQpuYW1lOiB0ZXN0LXZhcnNldC0xCmRlc2NyaXB0aW9uOgoJVGVzdCB0aGUgdGVzdCAtdiBvcGVyYXRvcgpzdGRpbjoKCVtbIC12IGEgXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJYT0KCVtbIC12IGEgXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJdW5zZXQgYQoJW1sgLXYgYSBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglhPXgKCVtbIC12IGEgXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJbmFtZXJlZiBiPWEKCVtbIC12IGIgXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJdW5zZXQgYQoJW1sgLXYgYiBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2Cgl4WzFdPXkKCVtbIC12IHggXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJW1sgLXYgeFswXSBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAtdiB4WzFdIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVtbIC12IHhbMl0gXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgpleHBlY3RlZC1zdGRvdXQ6CgkxIDEKCTIgMAoJMyAxCgk0IDAKCTUgMAoJNiAxCgk3IDEKCTggMQoJOSAwCgkxMCAxCi0tLQpuYW1lOiB0ZXN0LXZhcnNldC0yCmRlc2NyaXB0aW9uOgoJdGVzdCAtdiB3b3JrcyBvbmx5IG9uIHNjYWxhcnMKc3RkaW46CglbWyAtdiB4WypdIF1dCgllY2hvIG9rCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS91bmV4cGVjdGVkICdcKicvCi0tLQpuYW1lOiB0ZXN0LXN0bnplLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBzaG9ydCBmb3JtIFsgJHggXSB3b3JrcwpzdGRpbjoKCWk9MAoJWyAtbiAkeCBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVsgJHggXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbIC1uICIkeCIgXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbICIkeCIgXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2Cgl4PTAKCVsgLW4gJHggXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbICR4IF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAtbiAiJHgiIF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAiJHgiIF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJeD0nMSAtYSAxID0gMicKCVsgLW4gJHggXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbICR4IF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAtbiAiJHgiIF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAiJHgiIF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgpleHBlY3RlZC1zdGRvdXQ6CgkxIDAKCTIgMQoJMyAxCgk0IDEKCTUgMAoJNiAwCgk3IDAKCTggMAoJOSAxCgkxMCAxCgkxMSAwCgkxMiAwCi0tLQpuYW1lOiB0ZXN0LXN0bnplLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBzaG9ydCBmb3JtIFtbICR4IF1dIHdvcmtzIChrc2g5MyBleHRlbnNpb24pCnN0ZGluOgoJaT0wCglbWyAtbiAkeCBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAkeCBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAtbiAiJHgiIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVtbICIkeCIgXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJeD0wCglbWyAtbiAkeCBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAkeCBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAtbiAiJHgiIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVtbICIkeCIgXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJeD0nMSAtYSAxID0gMicKCVtbIC1uICR4IF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVtbICR4IF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVtbIC1uICIkeCIgXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJW1sgIiR4IiBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CmV4cGVjdGVkLXN0ZG91dDoKCTEgMQoJMiAxCgkzIDEKCTQgMQoJNSAwCgk2IDAKCTcgMAoJOCAwCgk5IDAKCTEwIDAKCTExIDAKCTEyIDAKLS0tCm5hbWU6IHRlc3QtbnVtZXEKZGVzY3JpcHRpb246CglDaGVjayBudW1lcmljIC1lcSB3b3JrcyAoUjQwZCByZWdyZXNzaW9uKTsgc3BvdHRlZCBieSBNYXJ0aWpuIERla2tlcgpzdGRpbjoKCXRzdCgpIHsKCQlldmFsICIkMiIKCQljYXNlICQ/IGluCgkJKDApIGVjaG8geWVwcCAwIFwjIiQqIiA7OwoJCSgxKSBlY2hvIG5vcGUgMSBcIyIkKiIgOzsKCQkoMikgZWNobyB0ZXJyIDIgXCMiJCoiIDs7CgkJKCopIGVjaG8gd3RmXD8gJD8gXCMiJCoiIDs7CgkJZXNhYwoJfQoJdHN0IDEgJ3Rlc3QgMiAtZXEgMicKCXRzdCAyICd0ZXN0IDIgLWVxIDJhJwoJdHN0IDMgJ3Rlc3QgMiAtZXEgMycKCXRzdCA0ICd0ZXN0IDIgLW5lIDInCgl0c3QgNSAndGVzdCAyIC1uZSAyYScKCXRzdCA2ICd0ZXN0IDIgLW5lIDMnCgl0c3QgNyAndGVzdCBcISAyIC1lcSAyJwoJdHN0IDggJ3Rlc3QgXCEgMiAtZXEgMmEnCgl0c3QgOSAndGVzdCBcISAyIC1lcSAzJwpleHBlY3RlZC1zdGRvdXQ6Cgl5ZXBwIDAgIzEgdGVzdCAyIC1lcSAyCgl0ZXJyIDIgIzIgdGVzdCAyIC1lcSAyYQoJbm9wZSAxICMzIHRlc3QgMiAtZXEgMwoJbm9wZSAxICM0IHRlc3QgMiAtbmUgMgoJdGVyciAyICM1IHRlc3QgMiAtbmUgMmEKCXllcHAgMCAjNiB0ZXN0IDIgLW5lIDMKCW5vcGUgMSAjNyB0ZXN0IFwhIDIgLWVxIDIKCXRlcnIgMiAjOCB0ZXN0IFwhIDIgLWVxIDJhCgl5ZXBwIDAgIzkgdGVzdCBcISAyIC1lcSAzCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2JhZCBudW1iZXIvCi0tLQpuYW1lOiBta3NocmMtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgfi8ubWtzaHJjIHdvcmtzIGNvcnJlY3RseS4KCVBhcnQgMTogdmVyaWZ5IHVzZXIgZW52aXJvbm1lbnQgaXMgbm90IHJlYWQgKGludGVybmFsKQpzdGRpbjoKCWVjaG8geCAkRk5PUkQKZXhwZWN0ZWQtc3Rkb3V0OgoJeAotLS0KbmFtZTogbWtzaHJjLTJhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB+Ly5ta3NocmMgd29ya3MgY29ycmVjdGx5LgoJUGFydCAyOiB2ZXJpZnkgbWtzaHJjIGlzIG5vdCByZWFkIChub24taW50ZXJhY3RpdmUgc2hlbGxzKQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiLm1rc2hyYyIKCUZOT1JEPTQyCmVudi1zZXR1cDogIUhPTUU9LiFFTlY9IQpzdGRpbjoKCWVjaG8geCAkRk5PUkQKZXhwZWN0ZWQtc3Rkb3V0OgoJeAotLS0KbmFtZTogbWtzaHJjLTJiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB+Ly5ta3NocmMgd29ya3MgY29ycmVjdGx5LgoJUGFydCAyOiB2ZXJpZnkgbWtzaHJjIGNhbiBiZSByZWFkIChpbnRlcmFjdGl2ZSBzaGVsbHMpCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICIubWtzaHJjIgoJRk5PUkQ9NDIKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUhPTUU9LiFFTlY9IVBTMT0hCnN0ZGluOgoJZWNobyB4ICRGTk9SRApleHBlY3RlZC1zdGRvdXQ6Cgl4IDQyCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLygjICkqLwotLS0KbmFtZTogbWtzaHJjLTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IH4vLm1rc2hyYyB3b3JrcyBjb3JyZWN0bHkuCglQYXJ0IDM6IHZlcmlmeSBta3NocmMgY2FuIGJlIHR1cm5lZCBvZmYKZmlsZS1zZXR1cDogZmlsZSA2NDQgIi5ta3NocmMiCglGTk9SRD00MgplbnYtc2V0dXA6ICFIT01FPS4hRU5WPW5vbmV4aXN0YW50IQpzdGRpbjoKCWVjaG8geCAkRk5PUkQKZXhwZWN0ZWQtc3Rkb3V0OgoJeAotLS0KbmFtZTogc2gtbW9kZS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaCBtb2RlIHR1cm5zIGJyYWNlZXhwYW5kIG9mZgoJYW5kIHRoYXQgdGhhdCB3b3JrcyBjb3JyZWN0bHkKc3RkaW46CglzZXQgLW8gYnJhY2VleHBhbmQKCXNldCArbyBzaAoJW1sgLW8gc2ggXV0gJiYgZWNobyBzaAoJW1sgLW8gIXNoIF1dICYmIGVjaG8gbm9zaAoJW1sgLW8gYnJhY2VleHBhbmQgXV0gJiYgZWNobyBicmV4CglbWyAtbyAhYnJhY2VleHBhbmQgXV0gJiYgZWNobyBub2JyZXgKCWVjaG8ge2EsYixjfQoJc2V0ICtvIGJyYWNlZXhwYW5kCgllY2hvIHthLGIsY30KCXNldCAtbyBicmFjZWV4cGFuZAoJZWNobyB7YSxiLGN9CglzZXQgLW8gc2gKCWVjaG8ge2EsYixjfQoJW1sgLW8gc2ggXV0gJiYgZWNobyBzaAoJW1sgLW8gIXNoIF1dICYmIGVjaG8gbm9zaAoJW1sgLW8gYnJhY2VleHBhbmQgXV0gJiYgZWNobyBicmV4CglbWyAtbyAhYnJhY2VleHBhbmQgXV0gJiYgZWNobyBub2JyZXgKCXNldCAtbyBicmFjZWV4cGFuZAoJZWNobyB7YSxiLGN9CglbWyAtbyBzaCBdXSAmJiBlY2hvIHNoCglbWyAtbyAhc2ggXV0gJiYgZWNobyBub3NoCglbWyAtbyBicmFjZWV4cGFuZCBdXSAmJiBlY2hvIGJyZXgKCVtbIC1vICFicmFjZWV4cGFuZCBdXSAmJiBlY2hvIG5vYnJleAoJW1sgJChleGVjIC1hIC1zZXQgIiRfX3Byb2duYW1lIiAtbykgPSAqbG9naW4rKCcgJylvbiogXV07IGVjaG8gJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJbm9zaAoJYnJleAoJYSBiIGMKCXthLGIsY30KCWEgYiBjCgl7YSxiLGN9CglzaAoJbm9icmV4CglhIGIgYwoJc2gKCWJyZXgKCTAKLS0tCm5hbWU6IHNoLW1vZGUtMmEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHBvc2l4IG9yIHNoIG1vZGUgaXMgKm5vdCogYXV0b21hdGljYWxseSB0dXJuZWQgb24KY2F0ZWdvcnk6ICFiaW5zaApzdGRpbjoKCWZvciBzaGVsbCBpbiB7LC19eyxyfXssayxta31zaCB7LC19eyxSfXssSyxNS31TSC5FWEU7IGRvCgkJbG4gLXMgIiRfX3Byb2duYW1lIiAuLyRzaGVsbCB8fCBjcCAiJF9fcHJvZ25hbWUiIC4vJHNoZWxsCgkJcHJpbnQgLS0gJHNoZWxsICQoLi8kc2hlbGwgK2wgLWMgJwoJCQlbWyAtbyBzaCB8fCAtbyBwb3NpeCBdXSAmJiBlY2hvIHNoCgkJCVtbIC1vICFzaCAmJiAtbyAhcG9zaXggXV0gJiYgZWNobyBub3NoCgkJCVtbIC1vIHJlc3RyaWN0ZWQgXV0gJiYgZWNobyBsaW0gfHwgZWNobyBvawoJCSAgICAnKQoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglzaCBub3NoIG9rCglrc2ggbm9zaCBvawoJbWtzaCBub3NoIG9rCglyc2ggbm9zaCBsaW0KCXJrc2ggbm9zaCBsaW0KCXJta3NoIG5vc2ggbGltCgktc2ggbm9zaCBvawoJLWtzaCBub3NoIG9rCgktbWtzaCBub3NoIG9rCgktcnNoIG5vc2ggbGltCgktcmtzaCBub3NoIGxpbQoJLXJta3NoIG5vc2ggbGltCglTSC5FWEUgbm9zaCBvawoJS1NILkVYRSBub3NoIG9rCglNS1NILkVYRSBub3NoIG9rCglSU0guRVhFIG5vc2ggbGltCglSS1NILkVYRSBub3NoIGxpbQoJUk1LU0guRVhFIG5vc2ggbGltCgktU0guRVhFIG5vc2ggb2sKCS1LU0guRVhFIG5vc2ggb2sKCS1NS1NILkVYRSBub3NoIG9rCgktUlNILkVYRSBub3NoIGxpbQoJLVJLU0guRVhFIG5vc2ggbGltCgktUk1LU0guRVhFIG5vc2ggbGltCi0tLQpuYW1lOiBzaC1tb2RlLTJiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBwb3NpeCBvciBzaCBtb2RlICppcyogYXV0b21hdGljYWxseSB0dXJuZWQgb24KY2F0ZWdvcnk6IGJpbnNoCnN0ZGluOgoJZm9yIHNoZWxsIGluIHssLX17LHJ9eyxrLG1rfXNoIHssLX17LFJ9eyxLLE1LfVNILkVYRTsgZG8KCQlsbiAtcyAiJF9fcHJvZ25hbWUiIC4vJHNoZWxsIHx8IGNwICIkX19wcm9nbmFtZSIgLi8kc2hlbGwKCQlwcmludCAtLSAkc2hlbGwgJCguLyRzaGVsbCArbCAtYyAnCgkJCVtbIC1vIHNoIHx8IC1vIHBvc2l4IF1dICYmIGVjaG8gc2gKCQkJW1sgLW8gIXNoICYmIC1vICFwb3NpeCBdXSAmJiBlY2hvIG5vc2gKCQkJW1sgLW8gcmVzdHJpY3RlZCBdXSAmJiBlY2hvIGxpbSB8fCBlY2hvIG9rCgkJICAgICcpCglkb25lCmV4cGVjdGVkLXN0ZG91dDoKCXNoIHNoIG9rCglrc2ggbm9zaCBvawoJbWtzaCBub3NoIG9rCglyc2ggc2ggbGltCglya3NoIG5vc2ggbGltCglybWtzaCBub3NoIGxpbQoJLXNoIHNoIG9rCgkta3NoIG5vc2ggb2sKCS1ta3NoIG5vc2ggb2sKCS1yc2ggc2ggbGltCgktcmtzaCBub3NoIGxpbQoJLXJta3NoIG5vc2ggbGltCglTSC5FWEUgc2ggb2sKCUtTSC5FWEUgbm9zaCBvawoJTUtTSC5FWEUgbm9zaCBvawoJUlNILkVYRSBzaCBsaW0KCVJLU0guRVhFIG5vc2ggbGltCglSTUtTSC5FWEUgbm9zaCBsaW0KCS1TSC5FWEUgc2ggb2sKCS1LU0guRVhFIG5vc2ggb2sKCS1NS1NILkVYRSBub3NoIG9rCgktUlNILkVYRSBzaCBsaW0KCS1SS1NILkVYRSBub3NoIGxpbQoJLVJNS1NILkVYRSBub3NoIGxpbQotLS0KbmFtZTogc2gtb3B0aW9ucwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgInNldCArbyIgRFRSVCBwZXIgUE9TSVgKc3RkaW46Cgl0KCkgewoJCVtbIC1vIHZpIF1dOyBhPSQ/CgkJW1sgLW8gcGlwZWZhaWwgXV07IGI9JD8KCQllY2hvICQoKCsraSkpICRhICRiIC4KCX0KCXNldCAtZQoJc2V0IC1vIHZpCglzZXQgK28gcGlwZWZhaWwKCXNldCArZQoJdAoJeD0kKHNldCArbykKCXNldCArbyB2aQoJc2V0IC1vIHBpcGVmYWlsCgl0CglldmFsICIkeCIKCXQKZXhwZWN0ZWQtc3Rkb3V0OgoJMSAwIDEgLgoJMiAxIDAgLgoJMyAwIDEgLgotLS0KbmFtZTogcGlwZWxpbmUtMQpkZXNjcmlwdGlvbjoKCXBka3NoIGJ1ZzogbGFzdCBjb21tYW5kIG9mIGEgcGlwZWxpbmUgaXMgZXhlY3V0ZWQgaW4gYQoJc3Vic2hlbGwgLSBtYWtlIHN1cmUgaXQgc3RpbGwgaXMsIHNjcmlwdHMgZGVwZW5kIG9uIGl0CmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmN4IgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjeSIKc3RkaW46CgllY2hvICoKCWVjaG8gYSB8IHdoaWxlIHJlYWQgZDsgZG8KCQllY2hvICRkCgkJZWNobyAkZCoKCQllY2hvICoKCQlzZXQgLW8gbm9nbG9iCgkJZWNobyAkZCoKCQllY2hvICoKCWRvbmUKCWVjaG8gKgpleHBlY3RlZC1zdGRvdXQ6CglhYmN4IGFiY3kKCWEKCWFiY3ggYWJjeQoJYWJjeCBhYmN5CglhKgoJKgoJYWJjeCBhYmN5Ci0tLQpuYW1lOiBwaXBlbGluZS0yCmRlc2NyaXB0aW9uOgoJY2hlY2sgdGhhdCBjby1wcm9jZXNzZXMgd29yayB3aXRoIFRDT01zLCBUUElQRXMgYW5kIFRQQVJFTnMKY2F0ZWdvcnk6ICFub2pzaWcKc3RkaW46CgkiJF9fcHJvZ25hbWUiIC1jICdpPTEwMDsgZWNobyBoaSB8JiB3aGlsZSByZWFkIC1wIGxpbmU7IGRvIGVjaG8gIiQoKGkrKykpICRsaW5lIjsgZG9uZScKCSIkX19wcm9nbmFtZSIgLWMgJ2k9MjAwOyBlY2hvIGhpIHwgY2F0IHwmIHdoaWxlIHJlYWQgLXAgbGluZTsgZG8gZWNobyAiJCgoaSsrKSkgJGxpbmUiOyBkb25lJwoJIiRfX3Byb2duYW1lIiAtYyAnaT0zMDA7IChlY2hvIGhpIHwgY2F0KSB8JiB3aGlsZSByZWFkIC1wIGxpbmU7IGRvIGVjaG8gIiQoKGkrKykpICRsaW5lIjsgZG9uZScKZXhwZWN0ZWQtc3Rkb3V0OgoJMTAwIGhpCgkyMDAgaGkKCTMwMCBoaQotLS0KbmFtZTogcGlwZWxpbmUtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgUElQRVNUQVRVUyBkb2VzIHdoYXQgaXQncyBzdXBwb3NlZCB0bwpzdGRpbjoKCWVjaG8gMSAkUElQRVNUQVRVUyAuCgllY2hvIDIgJHtQSVBFU1RBVFVTWzBdfSAuCgllY2hvIDMgJHtQSVBFU1RBVFVTWzFdfSAuCgkoZWNobyB4OyBleGl0IDEyKSB8IChjYXQ7IGV4aXQgMjMpIHwgKGNhdDsgZXhpdCA0MikKCWVjaG8gNSAkPyAsICRQSVBFU1RBVFVTICwgJHtQSVBFU1RBVFVTWzBdfSAsICR7UElQRVNUQVRVU1sxXX0gLCAke1BJUEVTVEFUVVNbMl19ICwgJHtQSVBFU1RBVFVTWzNdfSAuCgllY2hvIDYgJHtQSVBFU1RBVFVTWzBdfSAuCglzZXQgfCBmZ3JlcCBQSVBFU1RBVFVTCgllY2hvIDggJChzZXQgfCBmZ3JlcCBQSVBFU1RBVFVTKSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgMCAuCgkyIDAgLgoJMyAuCgl4Cgk1IDQyICwgMTIgLCAxMiAsIDIzICwgNDIgLCAuCgk2IDAgLgoJUElQRVNUQVRVU1swXT0wCgk4IFBJUEVTVEFUVVNbMF09MCBQSVBFU1RBVFVTWzFdPTAgLgotLS0KbmFtZTogcGlwZWxpbmUtNApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgInNldCAtbyBwaXBlZmFpbCIgZG9lcyB3aGF0IGl0J3Mgc3VwcG9zZWQgdG8Kc3RkaW46CgllY2hvIDEgIiQoIiRfX3Byb2duYW1lIiAtYyAnKGV4aXQgMTIpIHwgKGV4aXQgMjMpIHwgKGV4aXQgNDIpOyBlY2hvICQ/JykiIC4KCWVjaG8gMiAiJCgiJF9fcHJvZ25hbWUiIC1jICchIChleGl0IDEyKSB8IChleGl0IDIzKSB8IChleGl0IDQyKTsgZWNobyAkPycpIiAuCgllY2hvIDMgIiQoIiRfX3Byb2duYW1lIiAtbyBwaXBlZmFpbCAtYyAnKGV4aXQgMTIpIHwgKGV4aXQgMjMpIHwgKGV4aXQgNDIpOyBlY2hvICQ/JykiIC4KCWVjaG8gNCAiJCgiJF9fcHJvZ25hbWUiIC1vIHBpcGVmYWlsIC1jICchIChleGl0IDEyKSB8IChleGl0IDIzKSB8IChleGl0IDQyKTsgZWNobyAkPycpIiAuCgllY2hvIDUgIiQoIiRfX3Byb2duYW1lIiAtYyAnKGV4aXQgMjMpIHwgKGV4aXQgNDIpIHwgOjsgZWNobyAkPycpIiAuCgllY2hvIDYgIiQoIiRfX3Byb2duYW1lIiAtYyAnISAoZXhpdCAyMykgfCAoZXhpdCA0MikgfCA6OyBlY2hvICQ/JykiIC4KCWVjaG8gNyAiJCgiJF9fcHJvZ25hbWUiIC1vIHBpcGVmYWlsIC1jICcoZXhpdCAyMykgfCAoZXhpdCA0MikgfCA6OyBlY2hvICQ/JykiIC4KCWVjaG8gOCAiJCgiJF9fcHJvZ25hbWUiIC1vIHBpcGVmYWlsIC1jICchIChleGl0IDIzKSB8IChleGl0IDQyKSB8IDo7IGVjaG8gJD8nKSIgLgoJZWNobyA5ICIkKCIkX19wcm9nbmFtZSIgLW8gcGlwZWZhaWwgLWMgJ3g9JCggKGV4aXQgMjMpIHwgKGV4aXQgNDIpIHwgOik7IGVjaG8gJD8nKSIgLgpleHBlY3RlZC1zdGRvdXQ6CgkxIDQyIC4KCTIgMCAuCgkzIDQyIC4KCTQgMCAuCgk1IDAgLgoJNiAxIC4KCTcgNDIgLgoJOCAwIC4KCTkgNDIgLgotLS0KbmFtZTogcGVyc2lzdC1oaXN0b3J5LTEKZGVzY3JpcHRpb246CglDaGVjayBpZiBwZXJzaXN0ZW50IGhpc3Rvcnkgc2F2aW5nIHdvcmtzCmNhdGVnb3J5OiAhbm8taGlzdGZpbGUKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWNhdCBoaXN0LmZpbGUKZXhwZWN0ZWQtc3Rkb3V0LXBhdHRlcm46CgkvY2F0IGhpc3QuZmlsZS8KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IHR5cGVzZXQtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdHlwZXNldCAtZyB3b3JrcyBjb3JyZWN0bHkKc3RkaW46CglzZXQgLUEgYXJyZm9vIDY1Cglmb28oKSB7CgkJdHlwZXNldCAtZyAtVXVpMTYgYXJyZm9vWypdCgl9CgllY2hvIGJlZm9yZSAke2FycmZvb1swXX0gLgoJZm9vCgllY2hvIGFmdGVyICR7YXJyZm9vWzBdfSAuCglzZXQgLUEgYXJyYmFyIDY1CgliYXIoKSB7CgkJZWNobyBpbnNpZGUgYmVmb3JlICR7YXJyYmFyWzBdfSAuCgkJYXJyYmFyWzBdPTk3CgkJZWNobyBpbnNpZGUgY2hhbmdlZCAke2FycmJhclswXX0gLgoJCXR5cGVzZXQgLWcgLVV1aTE2IGFycmJhclsqXQoJCWVjaG8gaW5zaWRlIHR5cGVzZXQgJHthcnJiYXJbMF19IC4KCQlhcnJiYXJbMF09NDgKCQllY2hvIGluc2lkZSBjaGFuZ2VkICR7YXJyYmFyWzBdfSAuCgl9CgllY2hvIGJlZm9yZSAke2FycmJhclswXX0gLgoJYmFyCgllY2hvIGFmdGVyICR7YXJyYmFyWzBdfSAuCmV4cGVjdGVkLXN0ZG91dDoKCWJlZm9yZSA2NSAuCglhZnRlciAxNiM0MSAuCgliZWZvcmUgNjUgLgoJaW5zaWRlIGJlZm9yZSA2NSAuCglpbnNpZGUgY2hhbmdlZCA5NyAuCglpbnNpZGUgdHlwZXNldCAxNiM2MSAuCglpbnNpZGUgY2hhbmdlZCAxNiMzMCAuCglhZnRlciAxNiMzMCAuCi0tLQpuYW1lOiB0eXBlc2V0LTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHR5cGVzZXQgLXAgb24gYXJyYXlzIHdvcmtzIGNvcnJlY3RseQpzdGRpbjoKCXNldCAtQSB4IC0tIGEgYiBjCgllY2hvID0KCXR5cGVzZXQgLXAgeAoJZWNobyA9Cgl0eXBlc2V0IC1wIHhbMV0KZXhwZWN0ZWQtc3Rkb3V0OgoJPQoJc2V0IC1BIHgKCXR5cGVzZXQgeFswXT1hCgl0eXBlc2V0IHhbMV09YgoJdHlwZXNldCB4WzJdPWMKCT0KCXR5cGVzZXQgeFsxXT1iCi0tLQpuYW1lOiB0eXBlc2V0LXBhZGRpbmctMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGxlZnQvcmlnaHQganVzdGlmaWNhdGlvbiB3b3JrcyBhcyBwZXIgVEZNCnN0ZGluOgoJdHlwZXNldCAtTDEwIGxuPTBoYWxsMAoJdHlwZXNldCAtUjEwIHJuPTBoYWxsMAoJdHlwZXNldCAtWkwxMCBsej0waGFsbDAKCXR5cGVzZXQgLVpSMTAgcno9MGhhbGwwCgl0eXBlc2V0IC1aMTAgcng9IiBoYWxsbyAiCgllY2hvICI8JGxuPiA8JHJuPiA8JGx6PiA8JHJ6PiA8JHJ4PiIKZXhwZWN0ZWQtc3Rkb3V0OgoJPDBoYWxsMCAgICA+IDwgICAgMGhhbGwwPiA8aGFsbDAgICAgID4gPDAwMDAwaGFsbDA+IDwwMDAwIGhhbGxvPgotLS0KbmFtZTogdHlwZXNldC1wYWRkaW5nLTIKZGVzY3JpcHRpb246CglDaGVjayBpZiBiYXNlLSExMCBpbnRlZ2VycyBhcmUgcGFkZGVkIHJpZ2h0CnN0ZGluOgoJdHlwZXNldCAtVXVpMTYgLUw5IGxuPTE2IzEKCXR5cGVzZXQgLVV1aTE2IC1SOSBybj0xNiMxCgl0eXBlc2V0IC1VdWkxNiAtWjkgem49MTYjMQoJdHlwZXNldCAtTDkgbHM9MTYjMQoJdHlwZXNldCAtUjkgcnM9MTYjMQoJdHlwZXNldCAtWjkgenM9MTYjMQoJZWNobyAiPCRsbj4gPCRybj4gPCR6bj4gPCRscz4gPCRycz4gPCR6cz4iCmV4cGVjdGVkLXN0ZG91dDoKCTwxNiMxICAgICA+IDwgICAgIDE2IzE+IDwxNiMwMDAwMDE+IDwxNiMxICAgICA+IDwgICAgIDE2IzE+IDwwMDAwMDE2IzE+Ci0tLQpuYW1lOiB0eXBlc2V0LXBhZGRpbmctMwpkZXNjcmlwdGlvbjoKCUNoZWNrIGZvciBhIHJlZ3Jlc3Npb24gaW4gd2hpY2ggVVRGLTggd2FzbuKAmXQgbGVmdC1wYWRkZWQgcmlnaHQKc3RkaW46CglzZXQgLVUKCW5sPSQnXG4nCgl0eXBlc2V0IC1MMjAgeD0nLiAgYWsnCgl0eXBlc2V0IC1SMjAgeT0nLiAgYWsnCglwcmludCAtciAtLSAiPCR4PiAoMSRubDwxMjM0NTY3ODkxMCAzNDU2Nzg5MjAkbmw8JHk+IDEpIgoJdHlwZXNldCAtTDIwIHg9Jy4gIGHhup4nCgl0eXBlc2V0IC1SMjAgeT0nLiAgYeG6nicKCXByaW50IC1yIC0tICI8JHg+ICgyJG5sPDEyMzQ1Njc4OTEwIDM0NTY3ODkyMCRubDwkeT4gMikiCmV4cGVjdGVkLXN0ZG91dDoKCTwuICBhayAgICAgICAgICAgICAgID4gKDEKCTwxMjM0NTY3ODkxMCAzNDU2Nzg5MjAKCTwgICAgICAgICAgICAgICAuICBhaz4gMSkKCTwuICBh4bqeICAgICAgICAgICAgICAgPiAoMgoJPDEyMzQ1Njc4OTEwIDM0NTY3ODkyMAoJPCAgICAgICAgICAgICAgIC4gIGHhup4+IDIpCi0tLQpuYW1lOiB1dGY4Ym9tLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBVVEYtOCBCeXRlIE9yZGVyIE1hcmsgaXMgaWdub3JlZCBhcyB0aGUgZmlyc3QKCW11bHRpYnl0ZSBjaGFyYWN0ZXIgb2YgdGhlIHNoZWxsIGlucHV0ICh3aXRoIC1jLCBmcm9tIHN0YW5kYXJkCglpbnB1dCwgYXMgZmlsZSwgb3IgYXMgZXZhbCBhcmd1bWVudCksIGJ1dCBub3doZXJlIGVsc2UKIyBicmVha3Mgb24gTWFjIE9TWCAoSEZTKyBub24tc3RhbmRhcmQgVVRGLTggY2Fub25pY2FsIGRlY29tcG9zaXRpb24pCmNhdGVnb3J5OiAhb3M6ZGFyd2luLCFzaGVsbDplYmNkaWMteWVzCnN0ZGluOgoJbWtkaXIgZm9vCglwcmludCAnIyEvYmluL3NoXG5lY2hvIG9obmUnID5mb28vZm5vcmQKCXByaW50ICcjIS9iaW4vc2hcbmVjaG8gbWl0JyA+Zm9vL++7v2Zub3JkCglwcmludCAn77u/Zm5vcmRcbmZub3JkXG7vu79mbm9yZFxuZm5vcmQnID5mb28vYmFyCglwcmludCBldmFsIFwnJ++7v2Zub3JkXG5mbm9yZFxu77u/Zm5vcmRcbmZub3JkJ1wnID5mb28vem9vCglzZXQgLUEgYW56YWhsIC0tIGZvby8qCgllY2hvIGdvdCAkeyNhbnphaGxbKl19IGZpbGVzCgljaG1vZCAreCBmb28vKgoJZXhwb3J0IFBBVEg9JChwd2QpL2ZvbyRQQVRIU0VQJFBBVEgKCSIkX19wcm9nbmFtZSIgLWMgJ++7v2Zub3JkJwoJZWNobyA9CgkiJF9fcHJvZ25hbWUiIC1jICfvu79mbm9yZDsgZm5vcmQ7IO+7v2Zub3JkOyBmbm9yZCcKCWVjaG8gPQoJIiRfX3Byb2duYW1lIiBmb28vYmFyCgllY2hvID0KCSIkX19wcm9nbmFtZSIgPGZvby9iYXIKCWVjaG8gPQoJIiRfX3Byb2duYW1lIiBmb28vem9vCgllY2hvID0KCSIkX19wcm9nbmFtZSIgLWMgJ2VjaG8g77u/OiAkKO+7v2Zub3JkKScKCXJtIC1yZiBmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJZ290IDQgZmlsZXMKCW9obmUKCT0KCW9obmUKCW9obmUKCW1pdAoJb2huZQoJPQoJb2huZQoJb2huZQoJbWl0CglvaG5lCgk9CglvaG5lCglvaG5lCgltaXQKCW9obmUKCT0KCW9obmUKCW9obmUKCW1pdAoJb2huZQoJPQoJ77u/OiBvaG5lCi0tLQpuYW1lOiB1dGY4Ym9tLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHdlIGNhbiBleGVjdXRlIEJPTS1zaGViYW5ncyAoZmFpbHVyZXMgbm90IGZhdGFsKQoJWFhYIGlmIHRoZSBPUyBjYW4gYWxyZWFkeSBleGVjdXRlIHRoZW0sIHdlIGxvc2UKCW5vdGU6IGN5Z3dpbiBleGVjdmUoMikgZG9lc24ndCByZXR1cm4gdG8gdXMgd2l0aCBFTk9FWEVDLCB3ZSBsb3NlCglub3RlOiBVbHRyaXggcGVybDUgdDQgcmV0dXJucyA2NTI4MCAoZXhpdC1jb2RlIDI1NSkgYW5kIG5vIHRleHQKCW5vdGU6IEEvVVggcGVybDUgcmV0dXJucyA2NDAwIChleGl0LWNvZGUgMjUpLCBwYXNzZXMgIzEtMwoJWFhYIGZhaWxzIHdoZW4gTERfUFJFTE9BRCBpcyBzZXQgd2l0aCAtZSBhbmQgUGVybCBjaG9rZXMgaXQgKEFTYW4pCm5lZWQtcGFzczogbm8KY2F0ZWdvcnk6ICFvczphdXgsIW9zOmN5Z3dpbiwhb3M6bWlkaXBpeCwhb3M6bXN5cywhb3M6dWx0cml4LCFvczp1d2luLW50LCFzbWtzaAplbnYtc2V0dXA6ICFGT089QkFSIQpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xucHJpbnQgIjEgYT0kRU5We0ZPT30iOycgPnQxCglwcmludCAn77u/IyEnIiRfX3Byb2duYW1lIidcbnByaW50ICIyIGE9JEVOVntGT099IjsnID50MgoJcHJpbnQgJyMhJyIkX19wZXJsbmFtZSInXG5wcmludCAiMyBhPSRFTlZ7Rk9PfVxuIjsnID50MwoJcHJpbnQgJ++7vyMhJyIkX19wZXJsbmFtZSInXG5wcmludCAiNCBhPSRFTlZ7Rk9PfVxuIjsnID50NAoJY2htb2QgK3ggdD8KCS4vdDEKCS4vdDIKCS4vdDMKCS4vdDQKZXhwZWN0ZWQtc3Rkb3V0OgoJMSBhPS9ub25leGlzdGFudHtGT099CgkyIGE9L25vbmV4aXN0YW50e0ZPT30KCTMgYT1CQVIKCTQgYT1CQVIKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvKFVucmVjb2duaXplZCBjaGFyYWN0ZXIgLi4uLiBpZ25vcmVkIGF0IFwuLnQ0IGxpbmUgMSkqLwotLS0KbmFtZTogdXRmOG9wdC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgdXRmOC1tb2RlIGZsYWcgaXMgbm90IHNldCBhdCBub24taW50ZXJhY3RpdmUgc3RhcnR1cAplbnYtc2V0dXA6ICFQUzE9IVBTMj0hTENfQ1RZUEU9QHV0ZmxvY2FsZUAhCnN0ZGluOgoJaWYgW1sgJC0gPSAqVSogXV07IHRoZW4KCQllY2hvIGlzIHNldAoJZWxzZQoJCWVjaG8gaXMgbm90IHNldAoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJaXMgbm90IHNldAotLS0KbmFtZTogdXRmOG9wdC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgdXRmOC1tb2RlIGZsYWcgaXMgc2V0IGF0IGludGVyYWN0aXZlIHN0YXJ0dXAuCglJZiB5b3VyIE9TIGlzIG9sZCwgdHJ5IHBhc3NpbmcgSEFWRV9TRVRMT0NBTEVfQ1RZUEU9MCB0byBCdWlsZC5zaApuZWVkLXBhc3M6IG5vCmNhdGVnb3J5OiAhbm91dGY4Cm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFQUzE9IVBTMj0hTENfQ1RZUEU9QHV0ZmxvY2FsZUAhCnN0ZGluOgoJaWYgW1sgJC0gPSAqVSogXV07IHRoZW4KCQllY2hvIGlzIHNldAoJZWxzZQoJCWVjaG8gaXMgbm90IHNldAoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJaXMgc2V0CmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLygjICkqLwotLS0KbmFtZTogdXRmOG9wdC0zYQpkZXNjcmlwdGlvbjoKCUVuc3VyZSDCsVUgb24gdGhlIGNvbW1hbmQgbGluZSBpcyBob25vdXJlZAoJKHRoZXNlIHR3byB0ZXN0cyBtYXkgcGFzcyBmYWxzZWx5IGRlcGVuZGluZyBvbiBDUFBGTEFHUykKc3RkaW46CglleHBvcnQgaT0wCgljb2RlPSdpZiBbWyAkLSA9ICpVKiBdXTsgdGhlbiBlY2hvICRpIG9uOyBlbHNlIGVjaG8gJGkgb2ZmOyBmaScKCWxldCBpKys7ICIkX19wcm9nbmFtZSIgLVUgLWMgIiRjb2RlIgoJbGV0IGkrKzsgIiRfX3Byb2duYW1lIiArVSAtYyAiJGNvZGUiCgllY2hvICQoKCsraSkpIGRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJMSBvbgoJMiBvZmYKCTMgZG9uZQotLS0KbmFtZTogdXRmOG9wdC0zYgpkZXNjcmlwdGlvbjoKCUVuc3VyZSDCsVUgb24gdGhlIGNvbW1hbmQgbGluZSBpcyBob25vdXJlZCwgaW50ZXJhY3RpdmUgc2hlbGxzCm5lZWQtY3R0eTogeWVzCnN0ZGluOgoJZXhwb3J0IGk9MAoJY29kZT0naWYgW1sgJC0gPSAqVSogXV07IHRoZW4gZWNobyAkaSBvbjsgZWxzZSBlY2hvICRpIG9mZjsgZmknCglsZXQgaSsrOyAiJF9fcHJvZ25hbWUiIC1VIC1pYyAiJGNvZGUiCglsZXQgaSsrOyAiJF9fcHJvZ25hbWUiICtVIC1pYyAiJGNvZGUiCgllY2hvICQoKCsraSkpIGRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJMSBvbgoJMiBvZmYKCTMgZG9uZQotLS0KbmFtZTogdXRmOGJ1Zy0xCmRlc2NyaXB0aW9uOgoJRW5zdXJlIHRyYWlsaW5nIGNvbWJpbmluZyBjaGFyYWN0ZXJzIGFyZSBub3QgbG9zdApzdGRpbjoKCXNldCAtVQoJYT1hCgliPSQnXHUwMzAxJwoJeD0kYSRiCglwcmludCAtciAtLSAiPGUkeD4iCgl4PSRhCgl4Kz0kYgoJcHJpbnQgLXIgLS0gIjxlJHg+IgoJYj0kJ1x1MDMwMSdiCgl4PSRhCgl4Kz0kYgoJcHJpbnQgLXIgLS0gIjxlJHg+IgpleHBlY3RlZC1zdGRvdXQ6Cgk8ZWHMgT4KCTxlYcyBPgoJPGVhzIFiPgotLS0KbmFtZTogYWxpYXNlcy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYnVpbHQtaW4gc2hlbGwgYWxpYXNlcyBhcmUgb2theQpzdGRpbjoKCWFsaWFzCgl0eXBlc2V0IC1mCmV4cGVjdGVkLXN0ZG91dDoKCWF1dG9sb2FkPSdcXGJ1aWx0aW4gdHlwZXNldCAtZnUnCglmdW5jdGlvbnM9J1xcYnVpbHRpbiB0eXBlc2V0IC1mJwoJaGFzaD0nXFxidWlsdGluIGFsaWFzIC10JwoJaGlzdG9yeT0nXFxidWlsdGluIGZjIC1sJwoJaW50ZWdlcj0nXFxidWlsdGluIHR5cGVzZXQgLWknCglsb2NhbD0nXFxidWlsdGluIHR5cGVzZXQnCglsb2dpbj0nXFxidWlsdGluIGV4ZWMgbG9naW4nCgluYW1lcmVmPSdcXGJ1aWx0aW4gdHlwZXNldCAtbicKCW5vaHVwPSdub2h1cCAnCglyPSdcXGJ1aWx0aW4gZmMgLWUgLScKCXR5cGU9J1xcYnVpbHRpbiB3aGVuY2UgLXYnCi0tLQpuYW1lOiBhbGlhc2VzLTJiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYg4oCcc2V0IC1vIHNo4oCdIGRvZXMgbm90IGluZmx1ZW5jZSBidWlsdC1pbiBhbGlhc2VzCmFyZ3VtZW50czogIS1vIXNoIQpzdGRpbjoKCWFsaWFzCgl0eXBlc2V0IC1mCmV4cGVjdGVkLXN0ZG91dDoKCWF1dG9sb2FkPSdcXGJ1aWx0aW4gdHlwZXNldCAtZnUnCglmdW5jdGlvbnM9J1xcYnVpbHRpbiB0eXBlc2V0IC1mJwoJaGFzaD0nXFxidWlsdGluIGFsaWFzIC10JwoJaGlzdG9yeT0nXFxidWlsdGluIGZjIC1sJwoJaW50ZWdlcj0nXFxidWlsdGluIHR5cGVzZXQgLWknCglsb2NhbD0nXFxidWlsdGluIHR5cGVzZXQnCglsb2dpbj0nXFxidWlsdGluIGV4ZWMgbG9naW4nCgluYW1lcmVmPSdcXGJ1aWx0aW4gdHlwZXNldCAtbicKCW5vaHVwPSdub2h1cCAnCglyPSdcXGJ1aWx0aW4gZmMgLWUgLScKCXR5cGU9J1xcYnVpbHRpbiB3aGVuY2UgLXYnCi0tLQpuYW1lOiBhbGlhc2VzLTNiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgcnVubmluZyBhcyBzaCBkb2VzIG5vdCBpbmZsdWVuY2UgYnVpbHQtaW4gYWxpYXNlcwpzdGRpbjoKCWNwICIkX19wcm9nbmFtZSIgc2gKCS4vc2ggLWMgJ2FsaWFzOyB0eXBlc2V0IC1mJwoJcm0gLWYgc2gKZXhwZWN0ZWQtc3Rkb3V0OgoJYXV0b2xvYWQ9J1xcYnVpbHRpbiB0eXBlc2V0IC1mdScKCWZ1bmN0aW9ucz0nXFxidWlsdGluIHR5cGVzZXQgLWYnCgloYXNoPSdcXGJ1aWx0aW4gYWxpYXMgLXQnCgloaXN0b3J5PSdcXGJ1aWx0aW4gZmMgLWwnCglpbnRlZ2VyPSdcXGJ1aWx0aW4gdHlwZXNldCAtaScKCWxvY2FsPSdcXGJ1aWx0aW4gdHlwZXNldCcKCWxvZ2luPSdcXGJ1aWx0aW4gZXhlYyBsb2dpbicKCW5hbWVyZWY9J1xcYnVpbHRpbiB0eXBlc2V0IC1uJwoJbm9odXA9J25vaHVwICcKCXI9J1xcYnVpbHRpbiBmYyAtZSAtJwoJdHlwZT0nXFxidWlsdGluIHdoZW5jZSAtdicKLS0tCm5hbWU6IGFsaWFzZXMtY21kbGluZQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYWxpYXNlcyB3b3JrIGZyb20gdGhlIGNvbW1hbmQgbGluZSAoRGViaWFuICM1MTcwMDkpCglOb3RlIHRoYXQgZHVlIHRvIHRoZSBuYXR1cmUgb2YgdGhlIGxleGluZyBwcm9jZXNzLCBkZWZpbmluZwoJYWxpYXNlcyBpbiBDT01TVUJzIHRoZW4gaW1tZWRpYXRlbHkgdXNpbmcgdGhlbSwgYW5kIHRoaW5ncwoJbGlrZSAnYWxpYXMgZm9vPWJhciAmJiBmb28nLCBzdGlsbCBmYWlsLgpzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJCdhbGlhcyBhPSJlY2hvIE9LIlxuYScKZXhwZWN0ZWQtc3Rkb3V0OgoJT0sKLS0tCm5hbWU6IGFsaWFzZXMtZnVuY2RlZi0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgUE9TSVggZnVuY3Rpb25zIHRha2UgcHJlY2VkZW5jZXMgb3ZlciBhbGlhc2VzCnN0ZGluOgoJYWxpYXMgZm9vPSdlY2hvIG1ha3JvJwoJZm9vKCkgewoJCWVjaG8gZnVua3Rpb24KCX0KCWZvbwpleHBlY3RlZC1zdGRvdXQ6CgltYWtybwotLS0KbmFtZTogYWxpYXNlcy1mdW5jZGVmLTIKZGVzY3JpcHRpb246CglDaGVjayBpZiBQT1NJWCBmdW5jdGlvbnMgdGFrZSBwcmVjZWRlbmNlcyBvdmVyIGFsaWFzZXMKc3RkaW46CglhbGlhcyBmb289J2VjaG8gbWFrcm8nCglmb28gKCkgewoJCWVjaG8gZnVua3Rpb24KCX0KCWZvbwpleHBlY3RlZC1zdGRvdXQ6CgltYWtybwotLS0KbmFtZTogYWxpYXNlcy1mdW5jZGVmLTMKZGVzY3JpcHRpb246CglDaGVjayBpZiBhbGlhc2VzIHRha2UgcHJlY2VkZW5jZXMgb3ZlciBLb3JuIGZ1bmN0aW9ucwpzdGRpbjoKCWFsaWFzIGZvbz0nZWNobyBtYWtybycKCWZ1bmN0aW9uIGZvbyB7CgkJZWNobyBmdW5rdGlvbgoJfQoJZm9vCmV4cGVjdGVkLXN0ZG91dDoKCW1ha3JvCi0tLQpuYW1lOiBhbGlhc2VzLWZ1bmNkZWYtNApkZXNjcmlwdGlvbjoKCUZ1bmN0aW9ucyBzaG91bGQgb25seSB0YWtlIG92ZXIgaWYgYWN0dWFsbHkgYmVpbmcgZGVmaW5lZApzdGRpbjoKCWFsaWFzIGxvY2FsCgk6fHwgbG9jYWwoKSB7IDo7IH0KCWFsaWFzIGxvY2FsCmV4cGVjdGVkLXN0ZG91dDoKCWxvY2FsPSdcXGJ1aWx0aW4gdHlwZXNldCcKCWxvY2FsPSdcXGJ1aWx0aW4gdHlwZXNldCcKLS0tCm5hbWU6IGFycmF5cy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgS29ybiBTaGVsbCBhcnJheXMgd29yayBhcyBleHBlY3RlZApzdGRpbjoKCXY9ImMgZCIKCXNldCAtQSBmb28gLS0gYSBcJHYgIiR2IiAnJHYnIGIKCWVjaG8gIiR7I2Zvb1sqXX18JHtmb29bMF19fCR7Zm9vWzFdfXwke2Zvb1syXX18JHtmb29bM119fCR7Zm9vWzRdfXwiCmV4cGVjdGVkLXN0ZG91dDoKCTV8YXwkdnxjIGR8JHZ8YnwKLS0tCm5hbWU6IGFycmF5cy0yYQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGJhc2gtc3R5bGUgYXJyYXlzIHdvcmsgYXMgZXhwZWN0ZWQKc3RkaW46Cgl2PSJjIGQiCglmb289KGEgXCR2ICIkdiIgJyR2JyBiKQoJZWNobyAiJHsjZm9vWypdfXwke2Zvb1swXX18JHtmb29bMV19fCR7Zm9vWzJdfXwke2Zvb1szXX18JHtmb29bNF19fCIKZXhwZWN0ZWQtc3Rkb3V0OgoJNXxhfCR2fGMgZHwkdnxifAotLS0KbmFtZTogYXJyYXlzLTJiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYmFzaC1zdHlsZSBhcnJheXMgd29yayBhcyBleHBlY3RlZCwgd2l0aCBuZXdsaW5lcwpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZm9yIHggaW4gIiRAIjsgZG8gcHJpbnQgLW5yIC0tICIkeHwiOyBkb25lJyA+cGZwCgljaG1vZCAreCBwZnAKCXRlc3QgLW4gIiRaU0hfVkVSU0lPTiIgJiYgc2V0b3B0IEtTSF9BUlJBWVMKCXY9ImUgZiIKCWZvbz0oYQoJCWJjCgkJZCBcJHYgIiR2IiAnJHYnIGcKCSkKCS4vcGZwICIkeyNmb29bKl19IiAiJHtmb29bMF19IiAiJHtmb29bMV19IiAiJHtmb29bMl19IiAiJHtmb29bM119IiAiJHtmb29bNF19IiAiJHtmb29bNV19IiAiJHtmb29bNl19IjsgZWNobwoJZm9vPShhXAoJCWJjCgkJZCBcJHYgIiR2IiAnJHYnIGcKCSkKCS4vcGZwICIkeyNmb29bKl19IiAiJHtmb29bMF19IiAiJHtmb29bMV19IiAiJHtmb29bMl19IiAiJHtmb29bM119IiAiJHtmb29bNF19IiAiJHtmb29bNV19IiAiJHtmb29bNl19IjsgZWNobwoJZm9vPShhXAoJYmNcXAoJCWQgXCR2ICIkdiIgJyR2JwoJZykKCS4vcGZwICIkeyNmb29bKl19IiAiJHtmb29bMF19IiAiJHtmb29bMV19IiAiJHtmb29bMl19IiAiJHtmb29bM119IiAiJHtmb29bNF19IiAiJHtmb29bNV19IiAiJHtmb29bNl19IjsgZWNobwpleHBlY3RlZC1zdGRvdXQ6Cgk3fGF8YmN8ZHwkdnxlIGZ8JHZ8Z3wKCTd8YXxiY3xkfCR2fGUgZnwkdnxnfAoJNnxhYmNcfGR8JHZ8ZSBmfCR2fGd8fAotLS0KbmFtZTogYXJyYXlzLTMKZGVzY3JpcHRpb246CglDaGVjayBpZiBhcnJheSBib3VuZHMgYXJlIHVpbnQzMl90CnN0ZGluOgoJc2V0IC1BIGZvbyBhIGIgYwoJZm9vWzQwOTddPWQKCWZvb1syMTQ3NDgzNjM3XT1lCgllY2hvICR7Zm9vWypdfQoJZm9vWy0xXT1mCgllY2hvICR7Zm9vWzQyOTQ5NjcyOTVdfSBnICR7Zm9vWypdfQpleHBlY3RlZC1zdGRvdXQ6CglhIGIgYyBkIGUKCWYgZyBhIGIgYyBkIGUgZgotLS0KbmFtZTogYXJyYXlzLTQKZGVzY3JpcHRpb246CglDaGVjayBpZiBLb3JuIFNoZWxsIGFycmF5cyB3aXRoIHNwZWNpZmllZCBpbmRpY2VzIHdvcmsgYXMgZXhwZWN0ZWQKc3RkaW46Cgl2PSJjIGQiCglzZXQgLUEgZm9vIC0tIFsxXT1cJHYgWzJdPSIkdiIgWzRdPSckdicgWzBdPWEgWzVdPWIKCWVjaG8gIiR7I2Zvb1sqXX18JHtmb29bMF19fCR7Zm9vWzFdfXwke2Zvb1syXX18JHtmb29bM119fCR7Zm9vWzRdfXwke2Zvb1s1XX18IgoJIyB3ZSBkb24ndCB3YW50IHRoaXMgYXQgYWxsOgoJIwk1fGF8JHZ8YyBkfHwkdnxifAoJc2V0IC1BIGFyciAiWzVdPW1laCIKCWVjaG8gIjwke2FyclswXX0+PCR7YXJyWzVdfT4iCmV4cGVjdGVkLXN0ZG91dDoKCTV8WzFdPSR2fFsyXT1jIGR8WzRdPSR2fFswXT1hfFs1XT1ifHwKCTxbNV09bWVoPjw+Ci0tLQpuYW1lOiBhcnJheXMtNQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGJhc2gtc3R5bGUgYXJyYXlzIHdpdGggc3BlY2lmaWVkIGluZGljZXMgd29yayBhcyBleHBlY3RlZAoJKHRha2VuIG91dCB0ZW1wb3JhcmlseSB0byBmaXggYXJyYXlzLTQ7IHNlZSBhbHNvIGFycmF5cy05YSBjb21tZW50KQpjYXRlZ29yeTogZGlzYWJsZWQKc3RkaW46Cgl2PSJjIGQiCglmb289KFsxXT1cJHYgWzJdPSIkdiIgWzRdPSckdicgWzBdPWEgWzVdPWIpCgllY2hvICIkeyNmb29bKl19fCR7Zm9vWzBdfXwke2Zvb1sxXX18JHtmb29bMl19fCR7Zm9vWzNdfXwke2Zvb1s0XX18JHtmb29bNV19fCIKCXg9KFsxMjhdPWZvbyBiYXIgYmF6KQoJZWNobyBrPSAkeyF4WypdfSAuCgllY2hvIHY9ICR7eFsqXX0gLgoJIyBDaGVjayB0aGF0IHdlIGRvIG5vdCBicmVhayB0aGlzIGJ5IGdsb2JiaW5nCgk6PmI9YmxhaAoJYmxlaD01Cgl0eXBlc2V0IC1hIGFycgoJYXJyKz0oW2JsZWhdPWJsYWgpCgllY2hvICI8JHthcnJbMF19Pjwke2Fycls1XX0+IgpleHBlY3RlZC1zdGRvdXQ6Cgk1fGF8JHZ8YyBkfHwkdnxifAoJaz0gMTI4IDEyOSAxMzAgLgoJdj0gZm9vIGJhciBiYXogLgoJPD48YmxhaD4KLS0tCm5hbWU6IGFycmF5cy02CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgd2UgY2FuIGdldCB0aGUgYXJyYXkga2V5cyAoaW5kaWNlcykgZm9yIGluZGV4ZWQgYXJyYXlzLAoJS29ybiBzaGVsbCBzdHlsZQpzdGRpbjoKCW9mKCkgewoJCWk9MAoJCWZvciB4IGluICIkQCI7IGRvCgkJCWVjaG8gLW4gIiQoKGkrKykpPCR4PiIKCQlkb25lCgkJZWNobwoJfQoJZm9vWzFdPWVpbnMKCXNldCB8IGdyZXAgJ15mb28nCgllY2hvID0KCWZvb1swXT16d2VpCglmb29bNF09ZHJlaQoJc2V0IHwgZ3JlcCAnXmZvbycKCWVjaG8gPQoJZWNobyBhICQob2YgJHtmb29bKl19KSA9ICQob2YgJHtiYXJbKl19KSBhCgllY2hvIGIgJChvZiAiJHtmb29bKl19IikgPSAkKG9mICIke2JhclsqXX0iKSBiCgllY2hvIGMgJChvZiAke2Zvb1tAXX0pID0gJChvZiAke2JhcltAXX0pIGMKCWVjaG8gZCAkKG9mICIke2Zvb1tAXX0iKSA9ICQob2YgIiR7YmFyW0BdfSIpIGQKCWVjaG8gZSAkKG9mICR7IWZvb1sqXX0pID0gJChvZiAkeyFiYXJbKl19KSBlCgllY2hvIGYgJChvZiAiJHshZm9vWypdfSIpID0gJChvZiAiJHshYmFyWypdfSIpIGYKCWVjaG8gZyAkKG9mICR7IWZvb1tAXX0pID0gJChvZiAkeyFiYXJbQF19KSBnCgllY2hvIGggJChvZiAiJHshZm9vW0BdfSIpID0gJChvZiAiJHshYmFyW0BdfSIpIGgKZXhwZWN0ZWQtc3Rkb3V0OgoJZm9vWzFdPWVpbnMKCT0KCWZvb1swXT16d2VpCglmb29bMV09ZWlucwoJZm9vWzRdPWRyZWkKCT0KCWEgMDx6d2VpPjE8ZWlucz4yPGRyZWk+ID0gYQoJYiAwPHp3ZWkgZWlucyBkcmVpPiA9IDA8PiBiCgljIDA8endlaT4xPGVpbnM+MjxkcmVpPiA9IGMKCWQgMDx6d2VpPjE8ZWlucz4yPGRyZWk+ID0gZAoJZSAwPDA+MTwxPjI8ND4gPSBlCglmIDA8MCAxIDQ+ID0gMDw+IGYKCWcgMDwwPjE8MT4yPDQ+ID0gZwoJaCAwPDA+MTwxPjI8ND4gPSBoCi0tLQpuYW1lOiBhcnJheXMtNwpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIHdlIGNhbiBnZXQgdGhlIGFycmF5IGtleXMgKGluZGljZXMpIGZvciBpbmRleGVkIGFycmF5cywKCUtvcm4gc2hlbGwgc3R5bGUsIGluIHNvbWUgY29ybmVyIGNhc2VzCnN0ZGluOgoJZWNobyAhYXJ6OiAkeyFhcnp9CgllY2hvICFhcnpbMF06ICR7IWFyelswXX0KCWVjaG8gIWFyelsxXTogJHshYXJ6WzFdfQoJYXJ6PWZvbwoJZWNobyAhYXJ6OiAkeyFhcnp9CgllY2hvICFhcnpbMF06ICR7IWFyelswXX0KCWVjaG8gIWFyelsxXTogJHshYXJ6WzFdfQoJdW5zZXQgYXJ6CgllY2hvICFhcno6ICR7IWFyen0KCWVjaG8gIWFyelswXTogJHshYXJ6WzBdfQoJZWNobyAhYXJ6WzFdOiAkeyFhcnpbMV19CmV4cGVjdGVkLXN0ZG91dDoKCSFhcno6IGFyegoJIWFyelswXTogYXJ6WzBdCgkhYXJ6WzFdOiBhcnpbMV0KCSFhcno6IGFyegoJIWFyelswXTogYXJ6WzBdCgkhYXJ6WzFdOiBhcnpbMV0KCSFhcno6IGFyegoJIWFyelswXTogYXJ6WzBdCgkhYXJ6WzFdOiBhcnpbMV0KLS0tCm5hbWU6IGFycmF5cy04CmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBiZWhhdmlvdXJhbCBydWxlcyBmb3IgYXJyYXlzLgpzdGRpbjoKCWZuYSgpIHsKCQlzZXQgLUEgYWEgOQoJfQoJZm5iKCkgewoJCXR5cGVzZXQgYWIKCQlzZXQgLUEgYWIgOQoJfQoJZm5jKCkgewoJCXR5cGVzZXQgYWMKCQlzZXQgLUEgYWMgOTEKCQl1bnNldCBhYwoJCXNldCAtQSBhYyA5MgoJfQoJZm5kKCkgewoJCXNldCArQSBhZCA5Cgl9CglmbmUoKSB7CgkJdW5zZXQgYWUKCQlzZXQgK0EgYWUgOQoJfQoJZm5mKCkgewoJCXVuc2V0IGFmWzBdCgkJc2V0ICtBIGFmIDkKCX0KCWZuZygpIHsKCQl1bnNldCBhZ1sqXQoJCXNldCArQSBhZyA5Cgl9CglzZXQgLUEgYWEgMSAyCglzZXQgLUEgYWIgMSAyCglzZXQgLUEgYWMgMSAyCglzZXQgLUEgYWQgMSAyCglzZXQgLUEgYWUgMSAyCglzZXQgLUEgYWYgMSAyCglzZXQgLUEgYWcgMSAyCglzZXQgLUEgYWggMSAyCgl0eXBlc2V0IC1aMyBhYSBhYiBhYyBhZCBhZSBhZiBhZwoJcHJpbnQgMWEgJHthYVsqXX0gLgoJcHJpbnQgMWIgJHthYlsqXX0gLgoJcHJpbnQgMWMgJHthY1sqXX0gLgoJcHJpbnQgMWQgJHthZFsqXX0gLgoJcHJpbnQgMWUgJHthZVsqXX0gLgoJcHJpbnQgMWYgJHthZlsqXX0gLgoJcHJpbnQgMWcgJHthZ1sqXX0gLgoJcHJpbnQgMWggJHthaFsqXX0gLgoJZm5hCglmbmIKCWZuYwoJZm5kCglmbmUKCWZuZgoJZm5nCgl0eXBlc2V0IC1aNSBhaFsqXQoJcHJpbnQgMmEgJHthYVsqXX0gLgoJcHJpbnQgMmIgJHthYlsqXX0gLgoJcHJpbnQgMmMgJHthY1sqXX0gLgoJcHJpbnQgMmQgJHthZFsqXX0gLgoJcHJpbnQgMmUgJHthZVsqXX0gLgoJcHJpbnQgMmYgJHthZlsqXX0gLgoJcHJpbnQgMmcgJHthZ1sqXX0gLgoJcHJpbnQgMmggJHthaFsqXX0gLgpleHBlY3RlZC1zdGRvdXQ6CgkxYSAwMDEgMDAyIC4KCTFiIDAwMSAwMDIgLgoJMWMgMDAxIDAwMiAuCgkxZCAwMDEgMDAyIC4KCTFlIDAwMSAwMDIgLgoJMWYgMDAxIDAwMiAuCgkxZyAwMDEgMDAyIC4KCTFoIDEgMiAuCgkyYSA5IC4KCTJiIDAwMSAwMDIgLgoJMmMgOTIgLgoJMmQgMDA5IDAwMiAuCgkyZSA5IC4KCTJmIDkgMDAyIC4KCTJnIDAwOSAuCgkyaCAwMDAwMSAwMDAwMiAuCi0tLQpuYW1lOiBhcnJheXMtOWEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHdlIGNhbiBjb25jYXRlbmF0ZSBhcnJheXMKc3RkaW46Cgl1bnNldCBmb287IGZvbz0oYmFyKTsgZm9vKz0oYmF6KTsgZWNobyAxICR7IWZvb1sqXX0gOiAke2Zvb1sqXX0gLgoJdW5zZXQgZm9vOyBmb289KGZvbyBiYXIpOyBmb28rPShiYXopOyBlY2hvIDIgJHshZm9vWypdfSA6ICR7Zm9vWypdfSAuCiMJdW5zZXQgZm9vOyBmb289KFsyXT1mb28gWzBdPWJhcik7IGZvbys9KGJheiBbNV09cXV1eCk7IGVjaG8gMyAkeyFmb29bKl19IDogJHtmb29bKl19IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSAwIDEgOiBiYXIgYmF6IC4KCTIgMCAxIDIgOiBmb28gYmFyIGJheiAuCiMJMyAwIDIgMyA1IDogYmFyIGZvbyBiYXogcXV1eCAuCi0tLQpuYW1lOiBhcnJheXMtOWIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHdlIGNhbiBjb25jYXRlbmF0ZSBwYXJhbWV0ZXJzIHRvbwpzdGRpbjoKCXVuc2V0IGZvbzsgZm9vPWJhcjsgZm9vKz1iYXo7IGVjaG8gMSAkZm9vIC4KCXVuc2V0IGZvbzsgdHlwZXNldCAtaTE2IGZvbz0xMDsgZm9vKz0yMDsgZWNobyAyICRmb28gLgpleHBlY3RlZC1zdGRvdXQ6CgkxIGJhcmJheiAuCgkyIDE2I2EyMCAuCi0tLQpuYW1lOiBhcnJhc3NpZ24tYmFzaWMKZGVzY3JpcHRpb246CglDaGVjayBiYXNpYyB3aGl0ZXNwYWNlIGNvbnNlcnZpbmcgcHJvcGVydGllcyBvZiB3ZGFycmFzc2lnbgpzdGRpbjoKCWE9KCQoZWNobyBhICBiKSkKCWI9KCQoZWNobyAiYSAgYiIpKQoJYz0oIiQoZWNobyAiYSAgYiIpIikKCWQ9KCIkKGVjaG8gYSAgYikiKQoJYSs9KCQoZWNobyBjICBkKSkKCWIrPSgkKGVjaG8gImMgIGQiKSkKCWMrPSgiJChlY2hvICJjICBkIikiKQoJZCs9KCIkKGVjaG8gYyAgZCkiKQoJZWNobyAiLmE6JHthWzBdfS4ke2FbMV19LiR7YVsyXX0uJHthWzNdfToiCgllY2hvICIuYjoke2JbMF19LiR7YlsxXX0uJHtiWzJdfS4ke2JbM119OiIKCWVjaG8gIi5jOiR7Y1swXX0uJHtjWzFdfS4ke2NbMl19LiR7Y1szXX06IgoJZWNobyAiLmQ6JHtkWzBdfS4ke2RbMV19LiR7ZFsyXX0uJHtkWzNdfToiCmV4cGVjdGVkLXN0ZG91dDoKCS5hOmEuYi5jLmQ6CgkuYjphLmIuYy5kOgoJLmM6YSAgYi5jICBkLi46CgkuZDphIGIuYyBkLi46Ci0tLQpuYW1lOiBhcnJhc3NpZ24tZW9sCmRlc2NyaXB0aW9uOgoJQ29tbWFuZHMgYWZ0ZXIgYXJyYXkgYXNzaWdubWVudHMgYXJlIG5vdCBwZXJtaXR0ZWQKc3RkaW46Cglmb289KGEgYikgZW52CmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9zeW50YXggZXJyb3I6IHVuZXhwZWN0ZWQgJ2VudicvCi0tLQpuYW1lOiBhcnJhc3NpZ24tZm5jLW5vbmUKZGVzY3JpcHRpb246CglDaGVjayBsb2NhbGl0eSBvZiBhcnJheSBhY2Nlc3MgaW5zaWRlIGEgZnVuY3Rpb24Kc3RkaW46CglmdW5jdGlvbiBmbiB7CgkJeCs9KGYpCgkJZWNobyAiLmZuOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJfQoJZnVuY3Rpb24gcmZuIHsKCQlpZiBbWyAtbiAkQkFTSF9WRVJTSU9OIF1dOyB0aGVuCgkJCXk9KCkKCQllbHNlCgkJCXNldCAtQSB5CgkJZmkKCQl5Kz0oZikKCQllY2hvICIucmZuOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJfQoJeD0obSBtKQoJeT0obSBtKQoJZWNobyAiLmYwOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJZm4KCWVjaG8gIi5mMToke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCWZuCgllY2hvICIuZjI6JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCgllY2hvICIucmYwOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJcmZuCgllY2hvICIucmYxOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJcmZuCgllY2hvICIucmYyOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgpleHBlY3RlZC1zdGRvdXQ6CgkuZjA6bS5tLi46CgkuZm46bS5tLmYuOgoJLmYxOm0ubS5mLjoKCS5mbjptLm0uZi5mOgoJLmYyOm0ubS5mLmY6CgkucmYwOm0ubS4uOgoJLnJmbjpmLi4uOgoJLnJmMTpmLi4uOgoJLnJmbjpmLi4uOgoJLnJmMjpmLi4uOgotLS0KbmFtZTogYXJyYXNzaWduLWZuYy1sb2NhbApkZXNjcmlwdGlvbjoKCUNoZWNrIGxvY2FsaXR5IG9mIGFycmF5IGFjY2VzcyBpbnNpZGUgYSBmdW5jdGlvbgoJd2l0aCB0aGUgYmFzaC9ta3NoL2tzaDkzIGxvY2FsL3R5cGVzZXQga2V5d29yZAoJKG5vdGU6IGtzaDkzIGhhcyBubyBsb2NhbDsgdHlwZXNldCB3b3JrcyBvbmx5IGluIEZLU0gpCnN0ZGluOgoJZnVuY3Rpb24gZm4gewoJCXR5cGVzZXQgeAoJCXgrPShmKQoJCWVjaG8gIi5mbjoke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCX0KCWZ1bmN0aW9uIHJmbiB7CgkJaWYgW1sgLW4gJEJBU0hfVkVSU0lPTiBdXTsgdGhlbgoJCQl5PSgpCgkJZWxzZQoJCQlzZXQgLUEgeQoJCWZpCgkJdHlwZXNldCB5CgkJeSs9KGYpCgkJZWNobyAiLnJmbjoke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCX0KCWZ1bmN0aW9uIGZuciB7CgkJdHlwZXNldCB6CgkJaWYgW1sgLW4gJEJBU0hfVkVSU0lPTiBdXTsgdGhlbgoJCQl6PSgpCgkJZWxzZQoJCQlzZXQgLUEgegoJCWZpCgkJeis9KGYpCgkJZWNobyAiLmZucjoke3pbMF19LiR7elsxXX0uJHt6WzJdfS4ke3pbM119OiIKCX0KCXg9KG0gbSkKCXk9KG0gbSkKCXo9KG0gbSkKCWVjaG8gIi5mMDoke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCWZuCgllY2hvICIuZjE6JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCglmbgoJZWNobyAiLmYyOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJZWNobyAiLnJmMDoke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCXJmbgoJZWNobyAiLnJmMToke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCXJmbgoJZWNobyAiLnJmMjoke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCWVjaG8gIi5mMHI6JHt6WzBdfS4ke3pbMV19LiR7elsyXX0uJHt6WzNdfToiCglmbnIKCWVjaG8gIi5mMXI6JHt6WzBdfS4ke3pbMV19LiR7elsyXX0uJHt6WzNdfToiCglmbnIKCWVjaG8gIi5mMnI6JHt6WzBdfS4ke3pbMV19LiR7elsyXX0uJHt6WzNdfToiCmV4cGVjdGVkLXN0ZG91dDoKCS5mMDptLm0uLjoKCS5mbjpmLi4uOgoJLmYxOm0ubS4uOgoJLmZuOmYuLi46CgkuZjI6bS5tLi46CgkucmYwOm0ubS4uOgoJLnJmbjpmLi4uOgoJLnJmMTouLi46CgkucmZuOmYuLi46CgkucmYyOi4uLjoKCS5mMHI6bS5tLi46CgkuZm5yOmYuLi46CgkuZjFyOm0ubS4uOgoJLmZucjpmLi4uOgoJLmYycjptLm0uLjoKLS0tCm5hbWU6IGFycmFzc2lnbi1mbmMtZ2xvYmFsCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbG9jYWxpdHkgb2YgYXJyYXkgYWNjZXNzIGluc2lkZSBhIGZ1bmN0aW9uCgl3aXRoIHRoZSBiYXNoNC9ta3NoL3lhc2gvenNoIHR5cGVzZXQgLWcga2V5d29yZApzdGRpbjoKCWZ1bmN0aW9uIGZuIHsKCQl0eXBlc2V0IC1nIHgKCQl4Kz0oZikKCQllY2hvICIuZm46JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCgl9CglmdW5jdGlvbiByZm4gewoJCXNldCAtQSB5CgkJdHlwZXNldCAtZyB5CgkJeSs9KGYpCgkJZWNobyAiLnJmbjoke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCX0KCWZ1bmN0aW9uIGZuciB7CgkJdHlwZXNldCAtZyB6CgkJc2V0IC1BIHoKCQl6Kz0oZikKCQllY2hvICIuZm5yOiR7elswXX0uJHt6WzFdfS4ke3pbMl19LiR7elszXX06IgoJfQoJeD0obSBtKQoJeT0obSBtKQoJej0obSBtKQoJZWNobyAiLmYwOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJZm4KCWVjaG8gIi5mMToke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCWZuCgllY2hvICIuZjI6JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCgllY2hvICIucmYwOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJcmZuCgllY2hvICIucmYxOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJcmZuCgllY2hvICIucmYyOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJZWNobyAiLmYwcjoke3pbMF19LiR7elsxXX0uJHt6WzJdfS4ke3pbM119OiIKCWZucgoJZWNobyAiLmYxcjoke3pbMF19LiR7elsxXX0uJHt6WzJdfS4ke3pbM119OiIKCWZucgoJZWNobyAiLmYycjoke3pbMF19LiR7elsxXX0uJHt6WzJdfS4ke3pbM119OiIKZXhwZWN0ZWQtc3Rkb3V0OgoJLmYwOm0ubS4uOgoJLmZuOm0ubS5mLjoKCS5mMTptLm0uZi46CgkuZm46bS5tLmYuZjoKCS5mMjptLm0uZi5mOgoJLnJmMDptLm0uLjoKCS5yZm46Zi4uLjoKCS5yZjE6Zi4uLjoKCS5yZm46Zi4uLjoKCS5yZjI6Zi4uLjoKCS5mMHI6bS5tLi46CgkuZm5yOmYuLi46CgkuZjFyOmYuLi46CgkuZm5yOmYuLi46CgkuZjJyOmYuLi46Ci0tLQpuYW1lOiBzdHJhc3NpZ24tZm5jLW5vbmUKZGVzY3JpcHRpb246CglDaGVjayBsb2NhbGl0eSBvZiBzdHJpbmcgYWNjZXNzIGluc2lkZSBhIGZ1bmN0aW9uCnN0ZGluOgoJZnVuY3Rpb24gZm4gewoJCXgrPWYKCQllY2hvICIuZm46JHg6IgoJfQoJZnVuY3Rpb24gcmZuIHsKCQl5PQoJCXkrPWYKCQllY2hvICIucmZuOiR5OiIKCX0KCXg9bQoJeT1tCgllY2hvICIuZjA6JHg6IgoJZm4KCWVjaG8gIi5mMTokeDoiCglmbgoJZWNobyAiLmYyOiR4OiIKCWVjaG8gIi5yZjA6JHk6IgoJcmZuCgllY2hvICIucmYxOiR5OiIKCXJmbgoJZWNobyAiLnJmMjokeToiCmV4cGVjdGVkLXN0ZG91dDoKCS5mMDptOgoJLmZuOm1mOgoJLmYxOm1mOgoJLmZuOm1mZjoKCS5mMjptZmY6CgkucmYwOm06CgkucmZuOmY6CgkucmYxOmY6CgkucmZuOmY6CgkucmYyOmY6Ci0tLQpuYW1lOiBzdHJhc3NpZ24tZm5jLWxvY2FsCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbG9jYWxpdHkgb2Ygc3RyaW5nIGFjY2VzcyBpbnNpZGUgYSBmdW5jdGlvbgoJd2l0aCB0aGUgYmFzaC9ta3NoL2tzaDkzIGxvY2FsL3R5cGVzZXQga2V5d29yZAoJKG5vdGU6IGtzaDkzIGhhcyBubyBsb2NhbDsgdHlwZXNldCB3b3JrcyBvbmx5IGluIEZLU0gpCnN0ZGluOgoJZnVuY3Rpb24gZm4gewoJCXR5cGVzZXQgeAoJCXgrPWYKCQllY2hvICIuZm46JHg6IgoJfQoJZnVuY3Rpb24gcmZuIHsKCQl5PQoJCXR5cGVzZXQgeQoJCXkrPWYKCQllY2hvICIucmZuOiR5OiIKCX0KCWZ1bmN0aW9uIGZuciB7CgkJdHlwZXNldCB6CgkJej0KCQl6Kz1mCgkJZWNobyAiLmZucjokejoiCgl9Cgl4PW0KCXk9bQoJej1tCgllY2hvICIuZjA6JHg6IgoJZm4KCWVjaG8gIi5mMTokeDoiCglmbgoJZWNobyAiLmYyOiR4OiIKCWVjaG8gIi5yZjA6JHk6IgoJcmZuCgllY2hvICIucmYxOiR5OiIKCXJmbgoJZWNobyAiLnJmMjokeToiCgllY2hvICIuZjByOiR6OiIKCWZucgoJZWNobyAiLmYxcjokejoiCglmbnIKCWVjaG8gIi5mMnI6JHo6IgpleHBlY3RlZC1zdGRvdXQ6CgkuZjA6bToKCS5mbjpmOgoJLmYxOm06CgkuZm46ZjoKCS5mMjptOgoJLnJmMDptOgoJLnJmbjpmOgoJLnJmMTo6CgkucmZuOmY6CgkucmYyOjoKCS5mMHI6bToKCS5mbnI6ZjoKCS5mMXI6bToKCS5mbnI6ZjoKCS5mMnI6bToKLS0tCm5hbWU6IHN0cmFzc2lnbi1mbmMtZ2xvYmFsCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbG9jYWxpdHkgb2Ygc3RyaW5nIGFjY2VzcyBpbnNpZGUgYSBmdW5jdGlvbgoJd2l0aCB0aGUgYmFzaDQvbWtzaC95YXNoL3pzaCB0eXBlc2V0IC1nIGtleXdvcmQKc3RkaW46CglmdW5jdGlvbiBmbiB7CgkJdHlwZXNldCAtZyB4CgkJeCs9ZgoJCWVjaG8gIi5mbjokeDoiCgl9CglmdW5jdGlvbiByZm4gewoJCXk9CgkJdHlwZXNldCAtZyB5CgkJeSs9ZgoJCWVjaG8gIi5yZm46JHk6IgoJfQoJZnVuY3Rpb24gZm5yIHsKCQl0eXBlc2V0IC1nIHoKCQl6PQoJCXorPWYKCQllY2hvICIuZm5yOiR6OiIKCX0KCXg9bQoJeT1tCgl6PW0KCWVjaG8gIi5mMDokeDoiCglmbgoJZWNobyAiLmYxOiR4OiIKCWZuCgllY2hvICIuZjI6JHg6IgoJZWNobyAiLnJmMDokeToiCglyZm4KCWVjaG8gIi5yZjE6JHk6IgoJcmZuCgllY2hvICIucmYyOiR5OiIKCWVjaG8gIi5mMHI6JHo6IgoJZm5yCgllY2hvICIuZjFyOiR6OiIKCWZucgoJZWNobyAiLmYycjokejoiCmV4cGVjdGVkLXN0ZG91dDoKCS5mMDptOgoJLmZuOm1mOgoJLmYxOm1mOgoJLmZuOm1mZjoKCS5mMjptZmY6CgkucmYwOm06CgkucmZuOmY6CgkucmYxOmY6CgkucmZuOmY6CgkucmYyOmY6CgkuZjByOm06CgkuZm5yOmY6CgkuZjFyOmY6CgkuZm5yOmY6CgkuZjJyOmY6Ci0tLQpuYW1lOiB1bnNldC1mbmMtbG9jYWwta3NoCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCDigJx1bnNldOKAnSByZW1vdmVzIGEgcHJldmlvdXMg4oCcbG9jYWzigJ0KCShrc2g5MyBzeW50YXggY29tcGF0aWJsZSB2ZXJzaW9uKTsgYXBwYXJlbnRseSwKCXRoZXJlIGFyZSBzaGVsbHMgd2hpY2ggZmFpbCB0aGlzPwpzdGRpbjoKCWZ1bmN0aW9uIGYgewoJCWVjaG8gZjA6ICR4CgkJdHlwZXNldCB4CgkJZWNobyBmMTogJHgKCQl4PWZhCgkJZWNobyBmMjogJHgKCQl1bnNldCB4CgkJZWNobyBmMzogJHgKCQl4PWZiCgkJZWNobyBmNDogJHgKCX0KCXg9bwoJZWNobyBiZWZvcmU6ICR4CglmCgllY2hvIGFmdGVyOiAkeApleHBlY3RlZC1zdGRvdXQ6CgliZWZvcmU6IG8KCWYwOiBvCglmMToKCWYyOiBmYQoJZjM6IG8KCWY0OiBmYgoJYWZ0ZXI6IGZiCi0tLQpuYW1lOiB1bnNldC1mbmMtbG9jYWwtc2gKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IOKAnHVuc2V04oCdIHJlbW92ZXMgYSBwcmV2aW91cyDigJxsb2NhbOKAnQoJKERlYmlhbiBQb2xpY3kgwqcxMC40IHNoIHZlcnNpb24pOyBhcHBhcmVudGx5LAoJdGhlcmUgYXJlIHNoZWxscyB3aGljaCBmYWlsIHRoaXM/CnN0ZGluOgoJZigpIHsKCQllY2hvIGYwOiAkeAoJCWxvY2FsIHgKCQllY2hvIGYxOiAkeAoJCXg9ZmEKCQllY2hvIGYyOiAkeAoJCXVuc2V0IHgKCQllY2hvIGYzOiAkeAoJCXg9ZmIKCQllY2hvIGY0OiAkeAoJfQoJeD1vCgllY2hvIGJlZm9yZTogJHgKCWYKCWVjaG8gYWZ0ZXI6ICR4CmV4cGVjdGVkLXN0ZG91dDoKCWJlZm9yZTogbwoJZjA6IG8KCWYxOgoJZjI6IGZhCglmMzogbwoJZjQ6IGZiCglhZnRlcjogZmIKLS0tCm5hbWU6IHZhcmV4cGFuZC1zdWJzdHItMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGJhc2gtc3R5bGUgc3Vic3RyaW5nIGV4cGFuc2lvbiB3b3JrcwoJd2hlbiB1c2luZyBwb3NpdGl2ZSBudW1lcmljcwpzdGRpbjoKCXg9YWJjZGVmZ2hpCgl0eXBlc2V0IC1pIHk9MTIzNDU2Nzg5Cgl0eXBlc2V0IC1pIDE2IHo9MTIzNDU2Nzg5CSMgMTYjNzViY2QxNQoJZWNobyBhIHQke3g6MjoyfSAke3k6MjozfSAke3o6MjozfSBhCgllY2hvIGIgJHt4OjozfSAke3k6OjN9ICR7ejo6M30gYgoJZWNobyBjICR7eDoyOn0gJHt5OjI6fSAke3o6Mjp9IGMKCWVjaG8gZCAke3g6Mn0gJHt5OjJ9ICR7ejoyfSBkCgllY2hvIGUgJHt4OjI6Nn0gJHt5OjI6Nn0gJHt6OjI6N30gZQoJZWNobyBmICR7eDoyOjd9ICR7eToyOjd9ICR7ejoyOjh9IGYKCWVjaG8gZyAke3g6Mjo4fSAke3k6Mjo4fSAke3o6Mjo5fSBnCmV4cGVjdGVkLXN0ZG91dDoKCWEgdGNkIDM0NSAjNzUgYQoJYiBhYmMgMTIzIDE2IyBiCgljIGMKCWQgY2RlZmdoaSAzNDU2Nzg5ICM3NWJjZDE1IGQKCWUgY2RlZmdoIDM0NTY3OCAjNzViY2QxIGUKCWYgY2RlZmdoaSAzNDU2Nzg5ICM3NWJjZDE1IGYKCWcgY2RlZmdoaSAzNDU2Nzg5ICM3NWJjZDE1IGcKLS0tCm5hbWU6IHZhcmV4cGFuZC1zdWJzdHItMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGJhc2gtc3R5bGUgc3Vic3RyaW5nIGV4cGFuc2lvbiB3b3JrcwoJd2hlbiB1c2luZyBuZWdhdGl2ZSBudW1lcmljcyBvciBleHByZXNzaW9ucwpzdGRpbjoKCXg9YWJjZGVmZ2hpCgl0eXBlc2V0IC1pIHk9MTIzNDU2Nzg5Cgl0eXBlc2V0IC1pIDE2IHo9MTIzNDU2Nzg5CSMgMTYjNzViY2QxNQoJbj0yCgllY2hvIGEgJHt4OiRuOjN9ICR7eTokbjozfSAke3o6JG46M30gYQoJZWNobyBiICR7eDoobik6M30gJHt5OihuKTozfSAke3o6KG4pOjN9IGIKCWVjaG8gYyAke3g6KC0yKToxfSAke3k6KC0yKToxfSAke3o6KC0yKToxfSBjCgllY2hvIGQgdCR7eDogbjoyfSAke3k6IG46M30gJHt6OiBuOjN9IGQKZXhwZWN0ZWQtc3Rkb3V0OgoJYSBjZGUgMzQ1ICM3NSBhCgliIGNkZSAzNDUgIzc1IGIKCWMgaCA4IDEgYwoJZCB0Y2QgMzQ1ICM3NSBkCi0tLQpuYW1lOiB2YXJleHBhbmQtc3Vic3RyLTMKZGVzY3JpcHRpb246CglNYXRjaCBiYXNoNQpzdGRpbjoKCWV4cG9ydCB4PWFiY2RlZmdoaSBuPTIKCSIkX19wcm9nbmFtZSIgLWMgJ2VjaG8gdiR7eDoobil9eCcKCSIkX19wcm9nbmFtZSIgLWMgJ2VjaG8gdyR7eDogbn14JwoJIiRfX3Byb2duYW1lIiAtYyAnZWNobyB4JHt4Om59eCcKCSIkX19wcm9nbmFtZSIgLWMgJ2VjaG8geSR7eDp9eCcKCSIkX19wcm9nbmFtZSIgLWMgJ2VjaG8geiR7eH14JwoJIiRfX3Byb2duYW1lIiAtYyAneD1hYmNkZWY7eT0xMjM7ZWNobyBxJHt4OiR7eToyOjF9OjJ9cScKZXhwZWN0ZWQtc3Rkb3V0OgoJdmNkZWZnaGl4Cgl3Y2RlZmdoaXgKCXhjZGVmZ2hpeAoJemFiY2RlZmdoaXgKCXFkZXEKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkveDp9LipiYWQgc3Vic3RpdHV0aW9uLwotLS0KbmFtZTogdmFyZXhwYW5kLXN1YnN0ci00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgY29ybmVyIGNhc2VzIGZvciBzdWJzdHJpbmcgZXhwYW5zaW9uCnN0ZGluOgoJeD1hYmNkZWZnaGkKCWludGVnZXIgeT0yCgllY2hvIGEgJHt4Oih5ID09IDEgPyAyIDogMyk6NH0gYQpleHBlY3RlZC1zdGRvdXQ6CglhIGRlZmcgYQotLS0KbmFtZTogdmFyZXhwYW5kLXN1YnN0ci01QQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc3Vic3RyaW5nIGV4cGFuc2lvbnMgd29yayBvbiBjaGFyYWN0ZXJzCnN0ZGluOgoJc2V0ICtVCgl4PW3DpGgKCWVjaG8gYSAke3g6OjF9ICR7eDogLTF9IGEKCWVjaG8gYiAke3g6OjN9ICR7eDogLTN9IGIKCWVjaG8gYyAke3g6MToyfSAke3g6IC0zOjJ9IGMKCWVjaG8gZCAkeyN4fSBkCmV4cGVjdGVkLXN0ZG91dDoKCWEgbSBoIGEKCWIgbcOkIMOkaCBiCgljIMOkIMOkIGMKCWQgNCBkCi0tLQpuYW1lOiB2YXJleHBhbmQtc3Vic3RyLTVXCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzdWJzdHJpbmcgZXhwYW5zaW9ucyB3b3JrIG9uIGNoYXJhY3RlcnMKc3RkaW46CglzZXQgLVUKCXg9bcOkaAoJZWNobyBhICR7eDo6MX0gJHt4OiAtMX0gYQoJZWNobyBiICR7eDo6Mn0gJHt4OiAtMn0gYgoJZWNobyBjICR7eDoxOjF9ICR7eDogLTI6MX0gYwoJZWNobyBkICR7I3h9IGQKZXhwZWN0ZWQtc3Rkb3V0OgoJYSBtIGggYQoJYiBtw6Qgw6RoIGIKCWMgw6Qgw6QgYwoJZCAzIGQKLS0tCm5hbWU6IHZhcmV4cGFuZC1zdWJzdHItNgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc3RyaW5nIHN1YnN0aXR1dGlvbiB3b3JrcyBjb3JyZWN0bHkKc3RkaW46Cglmb289MQoJYmFyPTIKCWJhej1xd2VydHl1aW9wCgllY2hvIGEgJHtiYXo6IGZvbzogYmFyfQoJZWNobyBiICR7YmF6OiBmb286ICRiYXJ9CgllY2hvIGMgJHtiYXo6ICRmb286IGJhcn0KCWVjaG8gZCAke2JhejogJGZvbzogJGJhcn0KZXhwZWN0ZWQtc3Rkb3V0OgoJYSB3ZQoJYiB3ZQoJYyB3ZQoJZCB3ZQotLS0KbmFtZTogdmFyZXhwYW5kLXNwZWNpYWwtaGFzaApkZXNjcmlwdGlvbjoKCUNoZWNrIHNwZWNpYWwgJHt2YXJAeH0gZXhwYW5zaW9uIGZvciB4PWhhc2gKY2F0ZWdvcnk6ICFzaGVsbDplYmNkaWMteWVzCnN0ZGluOgoJdHlwZXNldCAtaTggZm9vPTEwCgliYXI9YmF6Cgl1bnNldCBiYXoKCXByaW50ICR7Zm9vQCN9ICR7YmFyQCN9ICR7YmF6QCN9IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJOUIxNUZCRkIgQ0ZCREQzMkIgMDAwMDAwMDAgLgotLS0KbmFtZTogdmFyZXhwYW5kLXNwZWNpYWwtaGFzaC1lYmNkaWMKZGVzY3JpcHRpb246CglDaGVjayBzcGVjaWFsICR7dmFyQHh9IGV4cGFuc2lvbiBmb3IgeD1oYXNoCmNhdGVnb3J5OiAhc2hlbGw6ZWJjZGljLW5vCnN0ZGluOgoJdHlwZXNldCAtaTggZm9vPTEwCgliYXI9YmF6Cgl1bnNldCBiYXoKCXByaW50ICR7Zm9vQCN9ICR7YmFyQCN9ICR7YmF6QCN9IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMDE2QUUzM0QgOTc2OUM0QUYgMDAwMDAwMDAgLgotLS0KbmFtZTogdmFyZXhwYW5kLXNwZWNpYWwtcXVvdGUKZGVzY3JpcHRpb246CglDaGVjayBzcGVjaWFsICR7dmFyQFF9IGV4cGFuc2lvbiBmb3IgcXVvdGVkIHN0cmluZ3MKY2F0ZWdvcnk6ICFzaGVsbDpmYXV4LWViY2RpYwpzdGRpbjoKCXNldCArVQoJaT14CglqPWFcIGIKCWs9JCdjCglkXHhBMCcnZeKCrGYnCglwcmludCAtciAtLSAiPGk9JGkgaj0kaiBrPSRrPiIKCXM9InU9JHtpQFF9IHY9JHtqQFF9IHc9JHtrQFF9IgoJcHJpbnQgLXIgLS0gInM9XCIkc1wiIgoJZXZhbCAiJHMiCgl0eXBlc2V0IC1wIHUgdiB3CmV4cGVjdGVkLXN0ZG91dDoKCTxpPXggaj1hIGIgaz1jCglkoGXigqxmPgoJcz0idT14IHY9J2EgYicgdz0kJ2NcbmRcMjQwZVx1MjBBQ2YnIgoJdHlwZXNldCB1PXgKCXR5cGVzZXQgdj0nYSBiJwoJdHlwZXNldCB3PSQnY1xuZFwyNDBlXHUyMEFDZicKLS0tCm5hbWU6IHZhcmV4cGFuZC1zcGVjaWFsLXF1b3RlLWZhdXgtRUJDRElDCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3BlY2lhbCAke3ZhckBRfSBleHBhbnNpb24gZm9yIHF1b3RlZCBzdHJpbmdzCmNhdGVnb3J5OiBzaGVsbDpmYXV4LWViY2RpYwpzdGRpbjoKCXNldCArVQoJaT14CglqPWFcIGIKCWs9JCdjCglkXHhBMCcnZeKCrGYnCglwcmludCAtciAtLSAiPGk9JGkgaj0kaiBrPSRrPiIKCXM9InU9JHtpQFF9IHY9JHtqQFF9IHc9JHtrQFF9IgoJcHJpbnQgLXIgLS0gInM9XCIkc1wiIgoJZXZhbCAiJHMiCgl0eXBlc2V0IC1wIHUgdiB3CmV4cGVjdGVkLXN0ZG91dDoKCTxpPXggaj1hIGIgaz1jCglkoGXigqxmPgoJcz0idT14IHY9J2EgYicgdz0kJ2NcbmSgZVx1MjBBQ2YnIgoJdHlwZXNldCB1PXgKCXR5cGVzZXQgdj0nYSBiJwoJdHlwZXNldCB3PSQnY1xuZKBlXHUyMEFDZicKLS0tCm5hbWU6IHZhcmV4cGFuZC1udWxsLTEKZGVzY3JpcHRpb246CglFbnN1cmUgZW1wdHkgc3RyaW5ncyBleHBhbmQgZW1wdGlseQpzdGRpbjoKCXByaW50IHMgJHthfSAuICR7Yn0gUwoJcHJpbnQgdCAke2EjP30gLiAke2IlP30gVAoJcHJpbnQgciAke2E9fSAuICR7Yi9jL2R9IFIKCXByaW50IHEKCXByaW50IHMgIiR7YX0iIC4gIiR7Yn0iIFMKCXByaW50IHQgIiR7YSM/fSIgLiAiJHtiJT99IiBUCglwcmludCByICIke2E9fSIgLiAiJHtiL2MvZH0iIFIKZXhwZWN0ZWQtc3Rkb3V0OgoJcyAuIFMKCXQgLiBUCglyIC4gUgoJcQoJcyAgLiAgUwoJdCAgLiAgVAoJciAgLiAgUgotLS0KbmFtZTogdmFyZXhwYW5kLW51bGwtMgpkZXNjcmlwdGlvbjoKCUVuc3VyZSBlbXB0eSBzdHJpbmdzLCB3aGVuIHF1b3RlZCwgYXJlIGV4cGFuZGVkIGFzIGVtcHR5IHN0cmluZ3MKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmZvciB4IGluICIkQCI7IGRvIHByaW50IC1uciAtLSAiPCR4PiAiOyBkb25lJyA+cGZzCgljaG1vZCAreCBwZnMKCS4vcGZzIDEgIiR7YX0iIDIgIiR7YSM/fSIgKyAiJHtiJT99IiAzICIke2E9fSIgKyAiJHtiL2MvZH0iCgllY2hvIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJPDE+IDw+IDwyPiA8PiA8Kz4gPD4gPDM+IDw+IDwrPiA8PiAuCi0tLQpuYW1lOiB2YXJleHBhbmQtbnVsbC0zCmRlc2NyaXB0aW9uOgoJRW5zdXJlIGNvbmNhdGVuYXRpbmcgYmVoYXZpb3VyIG1hdGNoZXMgb3RoZXIgc2hlbGxzCnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCXNob3dhcmdzIDAgIiIkQAoJeD07IHNob3dhcmdzIDEgIiR4IiRACglzZXQgQTsgc2hvd2FyZ3MgMiAiJHtAOit9IgoJbigpIHsgZWNobyAiJCMiOyB9Cgl1bnNldCBlCglzZXQgLS0gYSBiCgluICIiIiRAIgoJbiAiJEAiCgluICIkQCIiIgoJbiAiJGUiIiRAIgoJbiAiJEAiCgluICIkQCIiJGUiCglzZXQgLS0KCW4gIiIiJEAiCgluICIkQCIKCW4gIiRAIiIiCgluICIkZSIiJEAiCgluICIkQCIKCW4gIiRAIiIkZSIKZXhwZWN0ZWQtc3Rkb3V0OgoJPDA+IDw+IC4KCTwxPiA8PiAuCgk8Mj4gPD4gLgoJMgoJMgoJMgoJMgoJMgoJMgoJMQoJMAoJMQoJMQoJMAoJMQotLS0KbmFtZTogdmFyZXhwYW5kLWZ1bm55LWNoYXJzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBjaGFyYWN0ZXJzCglYWFggXHVFRjgwIGlzIGFzeW1tZXRyaWMsIHBvc3NpYmx5IGJ1Z2d5IHNvIHdlIGRvbuKAmXQgY2hlY2sgdGhpcwpzdGRpbjoKCXg9JCc8XHgwMD4nOyB0eXBlc2V0IC1wIHgKCXg9JCc8XHgwMT4nOyB0eXBlc2V0IC1wIHgKCXg9JCc8XHUwMDAwPic7IHR5cGVzZXQgLXAgeAoJeD0kJzxcdTAwMDE+JzsgdHlwZXNldCAtcCB4CmV4cGVjdGVkLXN0ZG91dDoKCXR5cGVzZXQgeD0nPCcKCXR5cGVzZXQgeD0kJzxcMDAxPicKCXR5cGVzZXQgeD0nPCcKCXR5cGVzZXQgeD0kJzxcMDAxPicKLS0tCm5hbWU6IHByaW50LWZ1bm55LWNoYXJzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcHJpbnQgYnVpbHRpbidzIGNhcGFiaWxpdHkgdG8gb3V0cHV0IGRlc2lnbmF0ZWQgY2hhcmFjdGVycwpzdGRpbjoKCXsKCQlwcmludCAnPFwwMTQ0XDAzNDRceERCXHUwMERCXHUyMEFDXHVEQlx4NDA+JwoJCXByaW50ICc8XHgwMD4nCgkJcHJpbnQgJzxceDAxPicKCQlwcmludCAnPFx1MDAwMD4nCgkJcHJpbnQgJzxcdTAwMDE+JwoJfSB8IHsKCQkjIGludGVnZXItYmFzZS1vbmUtM0FyCgkJdHlwZXNldCAtVXVpMTYgLVoxMSBwb3M9MAoJCXR5cGVzZXQgLVV1aTE2IC1aNSBodj0yMTQ3NDgzNjQ3CgkJZGFzYz0KCQlpZiByZWFkIC1hck4gLTEgbGluZTsgdGhlbgoJCQl0eXBlc2V0IC1pMSBsaW5lCgkJCWk9MAoJCQl3aGlsZSAoKCBpIDwgJHsjbGluZVsqXX0gKSk7IGRvCgkJCQlodj0ke2xpbmVbaSsrXX0KCQkJCWlmICgoIChwb3MgJiAxNSkgPT0gMCApKTsgdGhlbgoJCQkJCSgoIHBvcyApKSAmJiBwcmludCAtciAtLSAiJGRhc2N8IgoJCQkJCXByaW50IC1uICIke3BvcyMxNiN9ICAiCgkJCQkJZGFzYz0nIHwnCgkJCQlmaQoJCQkJcHJpbnQgLW4gIiR7aHYjMTYjfSAiCgkJCQlpZiAoKCAoaHYgPCAzMikgfHwgKGh2ID4gMTI2KSApKTsgdGhlbgoJCQkJCWRhc2M9JGRhc2MuCgkJCQllbHNlCgkJCQkJZGFzYz0kZGFzYyR7bGluZVtpLTFdIzEjfQoJCQkJZmkKCQkJCSgoIChwb3MrKyAmIDE1KSA9PSA3ICkpICYmIHByaW50IC1uIC0tICctICcKCQkJZG9uZQoJCWZpCgkJd2hpbGUgKCggcG9zICYgMTUgKSk7IGRvCgkJCXByaW50IC1uICcgICAnCgkJCSgoIChwb3MrKyAmIDE1KSA9PSA3ICkpICYmIHByaW50IC1uIC0tICctICcKCQlkb25lCgkJKCggaHYgPT0gMjE0NzQ4MzY0NyApKSB8fCBwcmludCAtciAtLSAiJGRhc2N8IgoJfQpleHBlY3RlZC1zdGRvdXQ6CgkwMDAwMDAwMCAgM0MgNjQgRTQgREIgQzMgOUIgRTIgODIgLSBBQyBDMyA5QiA0MCAzRSAwQSAzQyAwMCAgfDxkLi4uLi4uLi4uQD4uPC58CgkwMDAwMDAxMCAgM0UgMEEgM0MgMDEgM0UgMEEgM0MgMDAgLSAzRSAwQSAzQyAwMSAzRSAwQSAgICAgICAgfD4uPC4+LjwuPi48Lj4ufAotLS0KbmFtZTogcHJpbnQtYmtzbC1jCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcHJpbnQgYnVpbHRpbidzIFxjIGVzY2FwZQpzdGRpbjoKCXByaW50ICdcY2EnOyBwcmludCBiCmV4cGVjdGVkLXN0ZG91dDoKCWFiCi0tLQpuYW1lOiBwcmludC1jcgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgQ1IrTEYgaXMgbm90IGNvbGxhcHNlZCBpbnRvIExGIGFzIHNvbWUgTVNZUyBzaGVsbHMgd3JvbmdseSBkbwpzdGRpbjoKCWVjaG8gJyMhJyIkX19wcm9nbmFtZSIgPmZvbwoJY2F0ID4+Zm9vIDw8LSdFT0YnCgkJcHJpbnQgLW4gLS0gJzIyMC1ibGF1Lm1pcmJzZC5vcmcgRVNNVFAgcmVhZHkgYXQgVGh1LCAyNSBKdWwgMjAxMyAxNTo1Nzo1NyBHTVRcclxuMjIwLT4+IEJpdHRlIGtlaW5lIFdlcmJ1bmcgZWlud2VyZmVuISA8PFxyXHJcbjIyMCBXaG8gZG8geW91IHdhbm5hIHByZXRlbmQgdG8gYmUgdG9kYXknCgkJcHJpbnQgXD8NCglFT0YKCWNobW9kICt4IGZvbwoJZWNobyAiWyQoLi9mb28pXSIKCS4vZm9vIHwgd2hpbGUgSUZTPSByZWFkIC1yIGxpbmU7IGRvCgkJcHJpbnQgLXIgLS0gInskbGluZX0iCglkb25lCmV4cGVjdGVkLXN0ZG91dDoKCVsyMjAtYmxhdS5taXJic2Qub3JnIEVTTVRQIHJlYWR5IGF0IFRodSwgMjUgSnVsIDIwMTMgMTU6NTc6NTcgR01UDQoJMjIwLT4+IEJpdHRlIGtlaW5lIFdlcmJ1bmcgZWlud2VyZmVuISA8PA0NCgkyMjAgV2hvIGRvIHlvdSB3YW5uYSBwcmV0ZW5kIHRvIGJlIHRvZGF5Pw1dCgl7MjIwLWJsYXUubWlyYnNkLm9yZyBFU01UUCByZWFkeSBhdCBUaHUsIDI1IEp1bCAyMDEzIDE1OjU3OjU3IEdNVA19Cgl7MjIwLT4+IEJpdHRlIGtlaW5lIFdlcmJ1bmcgZWlud2VyZmVuISA8PA0NfQoJezIyMCBXaG8gZG8geW91IHdhbm5hIHByZXRlbmQgdG8gYmUgdG9kYXk/DX0KLS0tCm5hbWU6IHByaW50LWNybGYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IENSK0xGIGlzIHNob3duIGFuZCByZWFkIGFzLWlzCmNhdGVnb3J5OiBzaGVsbDp0ZXh0bW9kZS1ubwpzdGRpbjoKCWNhdCA+Zm9vIDw8LSdFT0YnCgkJeD0nYmFyDQoJCScgIw0KCQllY2hvIC4keyN4fSAjDQoJCWlmIHRlc3QgeCIkS1NIX1ZFUlNJT04iID0geCIiOyB0aGVuICMNCgkJCXByaW50ZiAnPCVzPicgIiR4IiAjDQoJCWVsc2UgIw0KCQkJcHJpbnQgLW5yIC0tICI8JHg+IiAjDQoJCWZpICMNCglFT0YKCWVjaG8gIlskKCIkX19wcm9nbmFtZSIgZm9vKV0iCgkiJF9fcHJvZ25hbWUiIGZvbyB8IHdoaWxlIElGUz0gcmVhZCAtciBsaW5lOyBkbwoJCXByaW50IC1yIC0tICJ7JGxpbmV9IgoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglbLjUKCTxiYXINCgk+XQoJey41fQoJezxiYXINfQotLS0KbmFtZTogcHJpbnQtY3JsZi10ZXh0bW9kZQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgQ1IrTEYgaXMgdHJlYXRlZCBhcyBuZXdsaW5lCmNhdGVnb3J5OiBzaGVsbDp0ZXh0bW9kZS15ZXMKc3RkaW46CgljYXQgPmZvbyA8PC0nRU9GJwoJCXg9J2Jhcg0KCQknICMNCgkJZWNobyAuJHsjeH0gIw0KCQlpZiB0ZXN0IHgiJEtTSF9WRVJTSU9OIiA9IHgiIjsgdGhlbiAjDQoJCQlwcmludGYgJzwlcz4nICIkeCIgIw0KCQllbHNlICMNCgkJCXByaW50IC1uciAtLSAiPCR4PiIgIw0KCQlmaSAjDQoJRU9GCgllY2hvICJbJCgiJF9fcHJvZ25hbWUiIGZvbyldIgoJIiRfX3Byb2duYW1lIiBmb28gfCB3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KCQlwcmludCAtciAtLSAieyRsaW5lfSIKCWRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJWy40Cgk8YmFyCgk+XQoJey40fQoJezxiYXJ9Ci0tLQpuYW1lOiBwcmludC1sZgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgTEYtb25seSBpcyBzaG93biBhbmQgcmVhZCBhcy1pcwpzdGRpbjoKCWNhdCA+Zm9vIDw8LSdFT0YnCgkJeD0nYmFyCgkJJyAjCgkJZWNobyAuJHsjeH0gIwoJCWlmIHRlc3QgeCIkS1NIX1ZFUlNJT04iID0geCIiOyB0aGVuICMKCQkJcHJpbnRmICc8JXM+JyAiJHgiICMKCQllbHNlICMKCQkJcHJpbnQgLW5yIC0tICI8JHg+IiAjCgkJZmkgIwoJRU9GCgllY2hvICJbJCgiJF9fcHJvZ25hbWUiIGZvbyldIgoJIiRfX3Byb2duYW1lIiBmb28gfCB3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KCQlwcmludCAtciAtLSAieyRsaW5lfSIKCWRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJWy40Cgk8YmFyCgk+XQoJey40fQoJezxiYXJ9Ci0tLQpuYW1lOiBwcmludC1udWwtY2hhcnMKZGVzY3JpcHRpb246CglDaGVjayBoYW5kbGluZyBvZiBOVUwgY2hhcmFjdGVycyBmb3IgcHJpbnQgYW5kIENPTVNVQgpzdGRpbjoKCXg9JChwcmludCAnPFwwPicpCglwcmludCAkKCgkKHByaW50ICc8XDA+JyB8IHdjIC1jKSkpICQoKCQocHJpbnQgIiR4IiB8IHdjIC1jKSkpIFwKCSAgICAkeyN4fSAiJHgiICc8XDA+JwpleHBlY3RlZC1zdGRvdXQtcGF0dGVybjoKCS9eNCAzIDIgPD4gPFwwPiQvCi0tLQpuYW1lOiBwcmludC1hcnJheQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgcHJpbnQgLUEgd29ya3MgYXMgZXhwZWN0ZWQKc3RkaW46CglwcmludCAtQW4gMHgyMEFDIDB4QzMgMHhCQyA4IzEwMQoJc2V0IC1VCglwcmludCAtQSAweDIwQUMgMHhDMyAweEJDIDgjMTAyCmV4cGVjdGVkLXN0ZG91dDoKCazDvEHigqzDg8K8QgotLS0KbmFtZTogcHJpbnQtZXNjYXBlcwpkZXNjcmlwdGlvbjoKCUNoZWNrIGJhY2tzbGFzaCBleHBhbnNpb24gYnkgdGhlIHByaW50IGJ1aWx0aW4Kc3RkaW46CglwcmludCAnXCBcIVwiXCNcJFwlXCYnXFxcJydcKFwpXCpcK1wsXC1cLlwvXDBcMVwyXDNcNFw1XDZcN1w4JyBcCgkgICAgJ1w5XDpcO1w8XD1cPlw/XEBcQVxCXENcRFxFXEZcR1xIXElcSlxLXExcTVxOXE9cUFxRXFJcU1xUJyBcCgkgICAgJ1xVXFZcV1xYXFlcWlxbXFxcXVxeXF9cYFxhXGIgIFxkXGVcZlxnXGhcaVxqXGtcbFxtXG5cb1xwJyBcCgkgICAgJ1xxXHJcc1x0XHVcdlx3XHhceVx6XHtcfFx9XH4nICdcdTIwYWNkJyAnXFUyMGFjZCcgJ1x4MTIzJyBcCgkgICAgJ1wweCcgJ1wwMTIzJyAnXDAxMjM0JyB8IHsKCQkjIGludGVnZXItYmFzZS1vbmUtM0FzCgkJdHlwZXNldCAtVXVpMTYgLVoxMSBwb3M9MAoJCXR5cGVzZXQgLVV1aTE2IC1aNSBodj0yMTQ3NDgzNjQ3CgkJdHlwZXNldCAtaTEgd2M9MHgwQQoJCWRhc2M9CgkJbmw9JHt3YyMxI30KCQl3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KCQkJbGluZT0kbGluZSRubAoJCQl3aGlsZSBbWyAtbiAkbGluZSBdXTsgZG8KCQkJCWh2PTEjJHtsaW5lOjoxfQoJCQkJaWYgKCggKHBvcyAmIDE1KSA9PSAwICkpOyB0aGVuCgkJCQkJKCggcG9zICkpICYmIHByaW50IC1yIC0tICIkZGFzY3wiCgkJCQkJcHJpbnQgLW4gIiR7cG9zIzE2I30gICIKCQkJCQlkYXNjPScgfCcKCQkJCWZpCgkJCQlwcmludCAtbiAiJHtodiMxNiN9ICIKCQkJCWlmICgoIChodiA8IDMyKSB8fCAoaHYgPiAxMjYpICkpOyB0aGVuCgkJCQkJZGFzYz0kZGFzYy4KCQkJCWVsc2UKCQkJCQlkYXNjPSRkYXNjJHtsaW5lOjoxfQoJCQkJZmkKCQkJCSgoIChwb3MrKyAmIDE1KSA9PSA3ICkpICYmIHByaW50IC1uIC0tICctICcKCQkJCWxpbmU9JHtsaW5lOjF9CgkJCWRvbmUKCQlkb25lCgkJd2hpbGUgKCggcG9zICYgMTUgKSk7IGRvCgkJCXByaW50IC1uICcgICAnCgkJCSgoIChwb3MrKyAmIDE1KSA9PSA3ICkpICYmIHByaW50IC1uIC0tICctICcKCQlkb25lCgkJKCggaHYgPT0gMjE0NzQ4MzY0NyApKSB8fCBwcmludCAtciAtLSAiJGRhc2N8IgoJfQpleHBlY3RlZC1zdGRvdXQ6CgkwMDAwMDAwMCAgNUMgMjAgNUMgMjEgNUMgMjIgNUMgMjMgLSA1QyAyNCA1QyAyNSA1QyAyNiA1QyAyNyAgfFwgXCFcIlwjXCRcJVwmXCd8CgkwMDAwMDAxMCAgNUMgMjggNUMgMjkgNUMgMkEgNUMgMkIgLSA1QyAyQyA1QyAyRCA1QyAyRSA1QyAyRiAgfFwoXClcKlwrXCxcLVwuXC98CgkwMDAwMDAyMCAgNUMgMzEgNUMgMzIgNUMgMzMgNUMgMzQgLSA1QyAzNSA1QyAzNiA1QyAzNyA1QyAzOCAgfFwxXDJcM1w0XDVcNlw3XDh8CgkwMDAwMDAzMCAgMjAgNUMgMzkgNUMgM0EgNUMgM0IgNUMgLSAzQyA1QyAzRCA1QyAzRSA1QyAzRiA1QyAgfCBcOVw6XDtcPFw9XD5cP1x8CgkwMDAwMDA0MCAgNDAgNUMgNDEgNUMgNDIgNUMgNDMgNUMgLSA0NCAxQiA1QyA0NiA1QyA0NyA1QyA0OCAgfEBcQVxCXENcRC5cRlxHXEh8CgkwMDAwMDA1MCAgNUMgNDkgNUMgNEEgNUMgNEIgNUMgNEMgLSA1QyA0RCA1QyA0RSA1QyA0RiA1QyA1MCAgfFxJXEpcS1xMXE1cTlxPXFB8CgkwMDAwMDA2MCAgNUMgNTEgNUMgNTIgNUMgNTMgNUMgNTQgLSAyMCA1QyA1NSA1QyA1NiA1QyA1NyA1QyAgfFxRXFJcU1xUIFxVXFZcV1x8CgkwMDAwMDA3MCAgNTggNUMgNTkgNUMgNUEgNUMgNUIgNUMgLSA1QyA1RCA1QyA1RSA1QyA1RiA1QyA2MCAgfFhcWVxaXFtcXF1cXlxfXGB8CgkwMDAwMDA4MCAgMDcgMDggMjAgMjAgNUMgNjQgMUIgMEMgLSA1QyA2NyA1QyA2OCA1QyA2OSA1QyA2QSAgfC4uICBcZC4uXGdcaFxpXGp8CgkwMDAwMDA5MCAgNUMgNkIgNUMgNkMgNUMgNkQgMEEgNUMgLSA2RiA1QyA3MCAyMCA1QyA3MSAwRCA1QyAgfFxrXGxcbS5cb1xwIFxxLlx8CgkwMDAwMDBBMCAgNzMgMDkgNUMgNzUgMEIgNUMgNzcgNUMgLSA3OCA1QyA3OSA1QyA3QSA1QyA3QiA1QyAgfHMuXHUuXHdceFx5XHpce1x8CgkwMDAwMDBCMCAgN0MgNUMgN0QgNUMgN0UgMjAgRTIgODIgLSBBQyA2NCAyMCBFRiBCRiBCRCAyMCAxMiAgfHxcfVx+IC4uLmQgLi4uIC58CgkwMDAwMDBDMCAgMzMgMjAgNzggMjAgNTMgMjAgNTMgMzQgLSAwQSAgICAgICAgICAgICAgICAgICAgICAgfDMgeCBTIFM0LnwKLS0tCm5hbWU6IGRvbGxhci1kb3VibGVxdW90ZWQtc3RyaW5ncwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYSAkIHByZWNlZGluZyAi4oCmIiBpcyBpZ25vcmVkCnN0ZGluOgoJZWNobyAkIkxvY2FsaXNlIG1lISIKCWNhdCA8PDwkIk1lIHRvbyEiCglWPVgKCWFvbD1hb2wKCWNhdCA8PC0kImFvbCIKCQlJIGRvIG5vdCB0YWtlIGEgJFYgZm9yIGEgViEKCWFvbApleHBlY3RlZC1zdGRvdXQ6CglMb2NhbGlzZSBtZSEKCU1lIHRvbyEKCUkgZG8gbm90IHRha2UgYSAkViBmb3IgYSBWIQotLS0KbmFtZTogZG9sbGFyLXF1b3RlZC1zdHJpbmdzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYmFja3NsYXNoIGV4cGFuc2lvbiBieSAkJ+KApicgc3RyaW5ncwpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZm9yIHggaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIiR4IjsgZG9uZScgPnBmbgoJY2htb2QgK3ggcGZuCgkuL3BmbiAkJ1wgXCFcIlwjXCRcJVwmXCdcKFwpXCpcK1wsXC1cLlwvIFwxXDJcM1w0XDVcNicgXAoJICAgICQnYVwwYicgJCdhXDAxYicgJCdcN1w4XDlcOlw7XDxcPVw+XD9cQFxBXEJcQ1xEXEVcRlxHXEhcSScgXAoJICAgICQnXEpcS1xMXE1cTlxPXFBcUVxSXFNcVFxVMVxWXFdcWFxZXFpcW1xcXF1cXlxfXGBcYVxiXGRcZScgXAoJICAgICQnXGZcZ1xoXGlcalxrXGxcbVxuXG9ccFxxXHJcc1x0XHUxXHZcd1x4MVx5XHpce1x8XH1cfiAkeCcgXAoJICAgICQnXHUyMGFjZCcgJCdcVTIwYWNkJyAkJ1x4MTIzJyAkJ2ZuXHgwcmQnICQnXDAyMzQnICQnXDIzNCcgXAoJICAgICQnXDIzNDUnICQnXGNhJyAkJ1xjIScgJCdcYz8nICQnXGPigKYnICQnYVwKCWInIHwgewoJCSMgaW50ZWdlci1iYXNlLW9uZS0zQXMKCQl0eXBlc2V0IC1VdWkxNiAtWjExIHBvcz0wCgkJdHlwZXNldCAtVXVpMTYgLVo1IGh2PTIxNDc0ODM2NDcKCQl0eXBlc2V0IC1pMSB3Yz0weDBBCgkJZGFzYz0KCQlubD0ke3djIzEjfQoJCXdoaWxlIElGUz0gcmVhZCAtciBsaW5lOyBkbwoJCQlsaW5lPSRsaW5lJG5sCgkJCXdoaWxlIFtbIC1uICRsaW5lIF1dOyBkbwoJCQkJaHY9MSMke2xpbmU6OjF9CgkJCQlpZiAoKCAocG9zICYgMTUpID09IDAgKSk7IHRoZW4KCQkJCQkoKCBwb3MgKSkgJiYgcHJpbnQgLXIgLS0gIiRkYXNjfCIKCQkJCQlwcmludCAtbiAiJHtwb3MjMTYjfSAgIgoJCQkJCWRhc2M9JyB8JwoJCQkJZmkKCQkJCXByaW50IC1uICIke2h2IzE2I30gIgoJCQkJaWYgKCggKGh2IDwgMzIpIHx8IChodiA+IDEyNikgKSk7IHRoZW4KCQkJCQlkYXNjPSRkYXNjLgoJCQkJZWxzZQoJCQkJCWRhc2M9JGRhc2Mke2xpbmU6OjF9CgkJCQlmaQoJCQkJKCggKHBvcysrICYgMTUpID09IDcgKSkgJiYgcHJpbnQgLW4gLS0gJy0gJwoJCQkJbGluZT0ke2xpbmU6MX0KCQkJZG9uZQoJCWRvbmUKCQl3aGlsZSAoKCBwb3MgJiAxNSApKTsgZG8KCQkJcHJpbnQgLW4gJyAgICcKCQkJKCggKHBvcysrICYgMTUpID09IDcgKSkgJiYgcHJpbnQgLW4gLS0gJy0gJwoJCWRvbmUKCQkoKCBodiA9PSAyMTQ3NDgzNjQ3ICkpIHx8IHByaW50IC1yIC0tICIkZGFzY3wiCgl9CmV4cGVjdGVkLXN0ZG91dDoKCTAwMDAwMDAwICAyMCAyMSAyMiAyMyAyNCAyNSAyNiAyNyAtIDI4IDI5IDJBIDJCIDJDIDJEIDJFIDJGICB8ICEiIyQlJicoKSorLC0uL3wKCTAwMDAwMDEwICAyMCAwMSAwMiAwMyAwNCAwNSAwNiAwQSAtIDYxIDBBIDYxIDAxIDYyIDBBIDA3IDM4ICB8IC4uLi4uLi5hLmEuYi4uOHwKCTAwMDAwMDIwICAzOSAzQSAzQiAzQyAzRCAzRSAzRiA0MCAtIDQxIDQyIDQzIDQ0IDFCIDQ2IDQ3IDQ4ICB8OTo7PD0+P0BBQkNELkZHSHwKCTAwMDAwMDMwICA0OSAwQSA0QSA0QiA0QyA0RCA0RSA0RiAtIDUwIDUxIDUyIDUzIDU0IDAxIDU2IDU3ICB8SS5KS0xNTk9QUVJTVC5WV3wKCTAwMDAwMDQwICA1OCA1OSA1QSA1QiA1QyA1RCA1RSA1RiAtIDYwIDA3IDA4IDY0IDFCIDBBIDBDIDY3ICB8WFlaW1xdXl9gLi5kLi4uZ3wKCTAwMDAwMDUwICA2OCA2OSA2QSA2QiA2QyA2RCAwQSA2RiAtIDcwIDcxIDBEIDczIDA5IDAxIDBCIDc3ICB8aGlqa2xtLm9wcS5zLi4ud3wKCTAwMDAwMDYwICAwMSA3OSA3QSA3QiA3QyA3RCA3RSAyMCAtIDI0IDc4IDBBIEUyIDgyIEFDIDY0IDBBICB8Lnl6e3x9fiAkeC4uLi5kLnwKCTAwMDAwMDcwICBFRiBCRiBCRCAwQSBDNCBBMyAwQSA2NiAtIDZFIDBBIDEzIDM0IDBBIDlDIDBBIDlDICB8Li4uLi4uLmZuLi40Li4uLnwKCTAwMDAwMDgwICAzNSAwQSAwMSAwQSAwMSAwQSA3RiAwQSAtIDgyIDgwIEE2IDBBIDYxIDBBIDYyIDBBICB8NS4uLi4uLi4uLi4uYS5iLnwKLS0tCm5hbWU6IGRvbGxhci1xdW90ZXMtaW4taGVyZWRvY3Mtc3RyaW5ncwpkZXNjcmlwdGlvbjoKCVRoZXkgYXJlLCBob3dldmVyLCBub3QgcGFyc2VkIGluIGhlcmUgZG9jdW1lbnRzLCBoZXJlIHN0cmluZ3MKCShvdXRzaWRlIG9mIHN0cmluZyBkZWxpbWl0ZXJzKSBvciByZWd1bGFyIHN0cmluZ3MsIGJ1dCBpbgoJcGFyYW1ldGVyIHN1YnN0aXR1dGlvbnMuCnN0ZGluOgoJY2F0IDw8RU9GCgkJZG9sbGFyID0gc3RyY2hyKHMsICckJyk7CS8qICcgKi8KCQlmb28gIiBiYXIgXCIgYmF6CglFT0YKCWNhdCA8PCQnYVx0YicKCWFcdGIKCWEJYgoJY2F0IDw8PCJkb2xsYXIgPSBzdHJjaHIocywgJyQnKTsJLyogJyAqLyIKCWNhdCA8PDwnZG9sbGFyID0gc3RyY2hyKHMsICdcJyckJ1wnJyk7CS8qICdcJycgKi8nCgl4PSJkb2xsYXIgPSBzdHJjaHIocywgJyQnKTsJLyogJyAqLyIKCWNhdCA8PDwiJHgiCgljYXQgPDw8JCdhXEVbMG1cdGInCgl1bnNldCBubDsgcHJpbnQgLXIgLS0gIngke25sOj0kJ1xuJ315IgoJZWNobyAiMSBmb29cImJhciIKCSMgY2YgJiBIRVJFRE9DCgljYXQgPDxFT0YKCTIgZm9vXCJiYXIKCUVPRgoJIyBwcm9iYWJseSBuZXZlciByZWFjaGVkIGZvciBoZXJlIHN0cmluZ3M/CgljYXQgPDw8IjMgZm9vXCJiYXIiCgljYXQgPDw8IjQgZm9vXFxcImJhciIKCWNhdCA8PDwnNSBmb29cImJhcicKCSMgb2xkIHNjcmlwdHMgdXNlIHRoaXMgKGUuZy4gbmN1cnNlcykKCWVjaG8gIl4kIgoJIyBtYWtlIHN1cmUgdGhpcyB3b3Jrcywgb3V0c2lkZSBvZiBxdW90ZXMKCWNhdCA8PDwnNyckJ1x0JycuJwpleHBlY3RlZC1zdGRvdXQ6CgkJZG9sbGFyID0gc3RyY2hyKHMsICckJyk7CS8qICcgKi8KCQlmb28gIiBiYXIgXCIgYmF6CglhXHRiCglkb2xsYXIgPSBzdHJjaHIocywgJyQnKTsJLyogJyAqLwoJZG9sbGFyID0gc3RyY2hyKHMsICckJyk7CS8qICcgKi8KCWRvbGxhciA9IHN0cmNocihzLCAnJCcpOwkvKiAnICovCglhG1swbQliCgl4Cgl5CgkxIGZvbyJiYXIKCTIgZm9vXCJiYXIKCTMgZm9vImJhcgoJNCBmb29cImJhcgoJNSBmb29cImJhcgoJXiQKCTcJLgotLS0KbmFtZTogZG90LW5lZWRzLWFyZ3VtZW50CmRlc2NyaXB0aW9uOgoJY2hlY2sgRGViaWFuICM0MTUxNjcgc29sdXRpb246ICcuJyB3aXRob3V0IGFyZ3VtZW50cyBzaG91bGQgZmFpbApzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgLgoJIiRfX3Byb2duYW1lIiAtYyBzb3VyY2UKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL1wuOiBtaXNzaW5nIGFyZ3VtZW50Lipcbi4qc291cmNlOiBtaXNzaW5nIGFyZ3VtZW50LwotLS0KbmFtZTogZG90LWVycm9ybGV2ZWwKZGVzY3JpcHRpb246CglFbnN1cmUgZG90IHJlc2V0cyAkPwpzdGRpbjoKCTo+ZG90ZmlsZQoJKGV4aXQgNDIpCgkuIC4vZG90ZmlsZQoJZWNobyAxICQ/IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSAwIC4KLS0tCm5hbWU6IGFsaWFzLWZ1bmN0aW9uLW5vLWNvbmZsaWN0CmRlc2NyaXB0aW9uOgoJbWFrZSBhbGlhc2VzIG5vdCBjb25mbGljdCB3aXRoIGZ1bmN0aW9uIGRlZmluaXRpb25zCnN0ZGluOgoJIyBQT1NJWCBmdW5jdGlvbiBjYW4gYmUgZGVmaW5lZCwgYnV0IGFsaWFzIG92ZXJyaWRlcyBpdAoJYWxpYXMgZm9vPSdlY2hvIGJhcicKCWZvbwoJZm9vKCkgewoJCWVjaG8gYmF6Cgl9Cglmb28KCXVuc2V0IC1mIGZvbwoJZm9vIDI+L2Rldi9udWxsIHx8IGVjaG8gcmFiCgkjIGFsaWFzIG92ZXJyaWRlcyBrc2ggZnVuY3Rpb24KCWFsaWFzIGtvcm49J2VjaG8gYmFyJwoJa29ybgoJZnVuY3Rpb24ga29ybiB7CgkJZWNobyBiYXoKCX0KCWtvcm4KCSMgYWxpYXMgdGVtcG9yYXJpbHkgb3ZlcnJpZGVzIFBPU0lYIGZ1bmN0aW9uCglibGEoKSB7CgkJZWNobyBiZm4KCX0KCWJsYQoJYWxpYXMgYmxhPSdlY2hvIGJhbCcKCWJsYQoJdW5hbGlhcyBibGEKCWJsYQpleHBlY3RlZC1zdGRvdXQ6CgliYXIKCWJhcgoJYmFyCgliYXIKCWJhcgoJYmZuCgliYWwKCWJmbgotLS0KbmFtZTogYmFzaC1mdW5jdGlvbi1wYXJlbnMKZGVzY3JpcHRpb246CgllbnN1cmUgdGhlIGtleXdvcmQgZnVuY3Rpb24gaXMgaWdub3JlZCB3aGVuIHByZWNlZGluZwoJUE9TSVggc3R5bGUgZnVuY3Rpb24gZGVjbGFyYXRpb25zIChiYXNoaXNtKQpzdGRpbjoKCW1rKCkgewoJCWVjaG8gJyMhJyIkX19wcm9nbmFtZSIKCQllY2hvICIkMSB7IgoJCWVjaG8gJwllY2hvICJiYXI9J1wnJyQwJ1wnXCIKCQllY2hvICd9JwoJCXByaW50IC1yIC0tICIkezI6LWZvb30iCgl9CgltayAnZnVuY3Rpb24gZm9vJyA+Zi1rb3JuCgltayAnZm9vICgpJyA+Zi1kYXNoCgltayAnZnVuY3Rpb24gZm9vICgpJyA+Zi1iYXNoCglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbnByaW50IC1yIC0tICIkezAlL2YtYXJnaH0iJyA+Zi1hcmdoCgljaG1vZCAreCBmLSoKCXU9JCguL2YtYXJnaCkKCXg9Imtvcm46ICQoLi9mLWtvcm4pIjsgZWNobyAiJHt4L0AoIiR1IikvLn0iCgl4PSJkYXNoOiAkKC4vZi1kYXNoKSI7IGVjaG8gIiR7eC9AKCIkdSIpLy59IgoJeD0iYmFzaDogJCguL2YtYmFzaCkiOyBlY2hvICIke3gvQCgiJHUiKS8ufSIKZXhwZWN0ZWQtc3Rkb3V0OgoJa29ybjogYmFyPSdmb28nCglkYXNoOiBiYXI9Jy4vZi1kYXNoJwoJYmFzaDogYmFyPScuL2YtYmFzaCcKLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtMQpkZXNjcmlwdGlvbjoKCWNoZWNrIGlmIHRoZSB1c2Ugb2YgZmFrZSBpbnRlZ2VyIGJhc2UgMSB3b3JrcwpzdGRpbjoKCXNldCAtVQoJdHlwZXNldCAtVXVpMTYgaTA9MSPvIGkxPTEj4oKsCgl0eXBlc2V0IC1pMSBvMGE9NjQKCXR5cGVzZXQgLWkxIG8xYT0weDI2M0EKCXR5cGVzZXQgLVV1aTEgbzBiPTB4N0UKCXR5cGVzZXQgLVV1aTEgbzFiPTB4RkREMAoJaW50ZWdlciBweD0weENBRkUgJ3AwPTEjICcgcDE9MSPigKYgcGw9MSNmCgllY2hvICJpbiA8JGkwPiA8JGkxPiIKCWVjaG8gIm91dCA8JHtvMGEjMSN9fCR7bzBiIzEjfT4gPCR7bzFhIzEjfXwke28xYiMxI30+IgoJdHlwZXNldCAtVXVpMSBpMCBpMQoJZWNobyAicGFzcyA8JHB4PiA8JHAwPiA8JHAxPiA8JHBsPiA8JHtpMCMxI318JHtpMSMxI30+IgoJdHlwZXNldCAtVXVpMTYgdHYxPTEjfiB0djI9MSN/IHR2Mz0xI4AgdHY0PTEjgSB0djU9MSPAIHR2Nj0xI8EgdHY3PTEjwqAgdHY4PTEjwoAKCWVjaG8gInNwZWNYIDwke3R2MSMxNiN9PiA8JHt0djIjMTYjfT4gPCR7dHYzIzE2I30+IDwke3R2NCMxNiN9PiA8JHt0djUjMTYjfT4gPCR7dHY2IzE2I30+IDwke3R2NyMxNiN9PiA8JHt0djgjMTYjfT4iCgl0eXBlc2V0IC1pMSB0djEgdHYyIHR2MyB0djQgdHY1IHR2NiB0djcgdHY4CgllY2hvICJzcGVjVyA8JHt0djEjMSN9PiA8JHt0djIjMSN9PiA8JHt0djMjMSN9PiA8JHt0djQjMSN9PiA8JHt0djUjMSN9PiA8JHt0djYjMSN9PiA8JHt0djcjMSN9PiA8JHt0djgjMSN9PiIKCXR5cGVzZXQgLWkxIHhzMT0weEVGN0YgeHMyPTB4RUY4MCB4czM9MHhGREQwCgllY2hvICJzcGVjVSA8JHt4czEjMSN9PiA8JHt4czIjMSN9PiA8JHt4czMjMSN9PiIKZXhwZWN0ZWQtc3Rkb3V0OgoJaW4gPDE2I0VGRUY+IDwxNiMyMEFDPgoJb3V0IDxAfH4+IDzimLp877eQPgoJcGFzcyA8MTYjY2FmZT4gPDEjID4gPDEj4oCmPiA8MSNmPiA873zigqw+CglzcGVjWCA8N0U+IDw3Rj4gPEVGODA+IDxFRjgxPiA8RUZDMD4gPEVGQzE+IDxBMD4gPDgwPgoJc3BlY1cgPH4+IDx/PiA8gD4gPIE+IDzAPiA8wT4gPMKgPiA8woA+CglzcGVjVSA87r2/PiA8gD4gPO+3kD4KLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtMmEKZGVzY3JpcHRpb246CgljaGVjayBpZiB0aGUgdXNlIG9mIGZha2UgaW50ZWdlciBiYXNlIDEgc3RvcHMgYXQgY29ycmVjdCBjaGFyYWN0ZXJzCnN0ZGluOgoJc2V0IC1VCglpbnRlZ2VyIHg9MSNmb28KCWVjaG8gLyR4LwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8xI2ZvbzogdW5leHBlY3RlZCAnb28nLwpleHBlY3RlZC1leGl0OiBlICE9IDAKLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtMmIKZGVzY3JpcHRpb246CgljaGVjayBpZiB0aGUgdXNlIG9mIGZha2UgaW50ZWdlciBiYXNlIDEgc3RvcHMgYXQgY29ycmVjdCBjaGFyYWN0ZXJzCnN0ZGluOgoJc2V0IC1VCglpbnRlZ2VyIHg9MSPAgAoJZWNobyAvJHgvCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLzEjwIA6IHVuZXhwZWN0ZWQgJ4AnLwpleHBlY3RlZC1leGl0OiBlICE9IDAKLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtMmMxCmRlc2NyaXB0aW9uOgoJY2hlY2sgaWYgdGhlIHVzZSBvZiBmYWtlIGludGVnZXIgYmFzZSAxIHN0b3BzIGF0IGNvcnJlY3QgY2hhcmFjdGVycwpzdGRpbjoKCXNldCAtVQoJaW50ZWdlciB4PTEj4oCmCgllY2hvIC8keC8KZXhwZWN0ZWQtc3Rkb3V0OgoJLzEj4oCmLwotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0yYzIKZGVzY3JpcHRpb246CgljaGVjayBpZiB0aGUgdXNlIG9mIGZha2UgaW50ZWdlciBiYXNlIDEgc3RvcHMgYXQgY29ycmVjdCBjaGFyYWN0ZXJzCnN0ZGluOgoJc2V0ICtVCglpbnRlZ2VyIHg9MSPigKYKCWVjaG8gLyR4LwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8xI+KApjogdW5leHBlY3RlZCAngCcvCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMAotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0yZDEKZGVzY3JpcHRpb246CgljaGVjayBpZiB0aGUgdXNlIG9mIGZha2UgaW50ZWdlciBiYXNlIDEgaGFuZGxlcyBvY3RldHMgb2theQpzdGRpbjoKCXNldCAtVQoJdHlwZXNldCAtaTE2IHg9MSP/CgllY2hvIC8keC8JIyBpbnZhbGlkIHV0Zi04CmV4cGVjdGVkLXN0ZG91dDoKCS8xNiNlZmZmLwotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0yZDIKZGVzY3JpcHRpb246CgljaGVjayBpZiB0aGUgdXNlIG9mIGZha2UgaW50ZWdlciBiYXNlIDEgaGFuZGxlcyBvY3RldHMKc3RkaW46CglzZXQgLVUKCXR5cGVzZXQgLWkxNiB4PTEjwgoJZWNobyAvJHgvCSMgaW52YWxpZCAyLWJ5dGUKZXhwZWN0ZWQtc3Rkb3V0OgoJLzE2I2VmYzIvCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTJkMwpkZXNjcmlwdGlvbjoKCWNoZWNrIGlmIHRoZSB1c2Ugb2YgZmFrZSBpbnRlZ2VyIGJhc2UgMSBoYW5kbGVzIG9jdGV0cwpzdGRpbjoKCXNldCAtVQoJdHlwZXNldCAtaTE2IHg9MSPvCgllY2hvIC8keC8JIyBpbnZhbGlkIDItYnl0ZQpleHBlY3RlZC1zdGRvdXQ6CgkvMTYjZWZlZi8KLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtMmQ0CmRlc2NyaXB0aW9uOgoJY2hlY2sgaWYgdGhlIHVzZSBvZiBmYWtlIGludGVnZXIgYmFzZSAxIHN0b3BzIGF0IGludmFsaWQgaW5wdXQKc3RkaW46CglzZXQgLVUKCXR5cGVzZXQgLWkxNiB4PTEj77/ACgllY2hvIC8keC8JIyBpbnZhbGlkIDMtYnl0ZQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8xI++/wDogdW5leHBlY3RlZCAnvycvCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMAotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0yZDUKZGVzY3JpcHRpb246CgljaGVjayBpZiB0aGUgdXNlIG9mIGZha2UgaW50ZWdlciBiYXNlIDEgc3RvcHMgYXQgaW52YWxpZCBpbnB1dApzdGRpbjoKCXNldCAtVQoJdHlwZXNldCAtaTE2IHg9MSPAgAoJZWNobyAvJHgvCSMgbm9uLW1pbmltYWxpc3RpYwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8xI8CAOiB1bmV4cGVjdGVkICeAJy8KZXhwZWN0ZWQtZXhpdDogZSAhPSAwCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTJkNgpkZXNjcmlwdGlvbjoKCWNoZWNrIGlmIHRoZSB1c2Ugb2YgZmFrZSBpbnRlZ2VyIGJhc2UgMSBzdG9wcyBhdCBpbnZhbGlkIGlucHV0CnN0ZGluOgoJc2V0IC1VCgl0eXBlc2V0IC1pMTYgeD0xI+CAgAoJZWNobyAvJHgvCSMgbm9uLW1pbmltYWxpc3RpYwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8xI+CAgDogdW5leHBlY3RlZCAngCcvCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMAotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0zQXMKZGVzY3JpcHRpb246Cglzb21lIHNhbXBsZSBjb2RlIGZvciBoZXhkdW1waW5nCglub3QgTlVMIHNhZmU7IGlucHV0IGxpbmVzIG11c3QgYmUgTkwgdGVybWluYXRlZApzdGRpbjoKCXsKCQlwcmludCAnSGVsbG8sIFdvcmxkIVxcXG7jgZPjgpPjgavjgaHjga/vvIEnCgkJdHlwZXNldCAtVXVpMTYgaT0weDEwMAoJCSMgY2hhbmdlIHRoYXQgdG8gMHhGRiBvbmNlIHdlIGNhbiBoYW5kbGUgZW1iZWRkZWQKCQkjIE5VTCBjaGFyYWN0ZXJzIGluIHN0cmluZ3MgLyBoZXJlIGRvY3VtZW50cwoJCXdoaWxlICgoIGkrKyA8IDB4MUZGICkpOyBkbwoJCQlwcmludCAtbiAiXHgke2kjMTYjMX0iCgkJZG9uZQoJCXByaW50ICdcMHonCgl9IHwgewoJCSMgaW50ZWdlci1iYXNlLW9uZS0zQXMKCQl0eXBlc2V0IC1VdWkxNiAtWjExIHBvcz0wCgkJdHlwZXNldCAtVXVpMTYgLVo1IGh2PTIxNDc0ODM2NDcKCQl0eXBlc2V0IC1pMSB3Yz0weDBBCgkJZGFzYz0KCQlubD0ke3djIzEjfQoJCXdoaWxlIElGUz0gcmVhZCAtciBsaW5lOyBkbwoJCQlsaW5lPSRsaW5lJG5sCgkJCXdoaWxlIFtbIC1uICRsaW5lIF1dOyBkbwoJCQkJaHY9MSMke2xpbmU6OjF9CgkJCQlpZiAoKCAocG9zICYgMTUpID09IDAgKSk7IHRoZW4KCQkJCQkoKCBwb3MgKSkgJiYgcHJpbnQgLXIgLS0gIiRkYXNjfCIKCQkJCQlwcmludCAtbiAiJHtwb3MjMTYjfSAgIgoJCQkJCWRhc2M9JyB8JwoJCQkJZmkKCQkJCXByaW50IC1uICIke2h2IzE2I30gIgoJCQkJaWYgKCggKGh2IDwgMzIpIHx8IChodiA+IDEyNikgKSk7IHRoZW4KCQkJCQlkYXNjPSRkYXNjLgoJCQkJZWxzZQoJCQkJCWRhc2M9JGRhc2Mke2xpbmU6OjF9CgkJCQlmaQoJCQkJKCggKHBvcysrICYgMTUpID09IDcgKSkgJiYgcHJpbnQgLW4gLS0gJy0gJwoJCQkJbGluZT0ke2xpbmU6MX0KCQkJZG9uZQoJCWRvbmUKCQl3aGlsZSAoKCBwb3MgJiAxNSApKTsgZG8KCQkJcHJpbnQgLW4gJyAgICcKCQkJKCggKHBvcysrICYgMTUpID09IDcgKSkgJiYgcHJpbnQgLW4gLS0gJy0gJwoJCWRvbmUKCQkoKCBodiA9PSAyMTQ3NDgzNjQ3ICkpIHx8IHByaW50IC1yIC0tICIkZGFzY3wiCgl9CmV4cGVjdGVkLXN0ZG91dDoKCTAwMDAwMDAwICA0OCA2NSA2QyA2QyA2RiAyQyAyMCA1NyAtIDZGIDcyIDZDIDY0IDIxIDVDIDBBIEUzICB8SGVsbG8sIFdvcmxkIVwuLnwKCTAwMDAwMDEwICA4MSA5MyBFMyA4MiA5MyBFMyA4MSBBQiAtIEUzIDgxIEExIEUzIDgxIEFGIEVGIEJDICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMDIwICA4MSAwQSAwMSAwMiAwMyAwNCAwNSAwNiAtIDA3IDA4IDA5IDBBIDBCIDBDIDBEIDBFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMDMwICAwRiAxMCAxMSAxMiAxMyAxNCAxNSAxNiAtIDE3IDE4IDE5IDFBIDFCIDFDIDFEIDFFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMDQwICAxRiAyMCAyMSAyMiAyMyAyNCAyNSAyNiAtIDI3IDI4IDI5IDJBIDJCIDJDIDJEIDJFICB8LiAhIiMkJSYnKCkqKywtLnwKCTAwMDAwMDUwICAyRiAzMCAzMSAzMiAzMyAzNCAzNSAzNiAtIDM3IDM4IDM5IDNBIDNCIDNDIDNEIDNFICB8LzAxMjM0NTY3ODk6Ozw9PnwKCTAwMDAwMDYwICAzRiA0MCA0MSA0MiA0MyA0NCA0NSA0NiAtIDQ3IDQ4IDQ5IDRBIDRCIDRDIDREIDRFICB8P0BBQkNERUZHSElKS0xNTnwKCTAwMDAwMDcwICA0RiA1MCA1MSA1MiA1MyA1NCA1NSA1NiAtIDU3IDU4IDU5IDVBIDVCIDVDIDVEIDVFICB8T1BRUlNUVVZXWFlaW1xdXnwKCTAwMDAwMDgwICA1RiA2MCA2MSA2MiA2MyA2NCA2NSA2NiAtIDY3IDY4IDY5IDZBIDZCIDZDIDZEIDZFICB8X2BhYmNkZWZnaGlqa2xtbnwKCTAwMDAwMDkwICA2RiA3MCA3MSA3MiA3MyA3NCA3NSA3NiAtIDc3IDc4IDc5IDdBIDdCIDdDIDdEIDdFICB8b3BxcnN0dXZ3eHl6e3x9fnwKCTAwMDAwMEEwICA3RiA4MCA4MSA4MiA4MyA4NCA4NSA4NiAtIDg3IDg4IDg5IDhBIDhCIDhDIDhEIDhFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMEIwICA4RiA5MCA5MSA5MiA5MyA5NCA5NSA5NiAtIDk3IDk4IDk5IDlBIDlCIDlDIDlEIDlFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMEMwICA5RiBBMCBBMSBBMiBBMyBBNCBBNSBBNiAtIEE3IEE4IEE5IEFBIEFCIEFDIEFEIEFFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMEQwICBBRiBCMCBCMSBCMiBCMyBCNCBCNSBCNiAtIEI3IEI4IEI5IEJBIEJCIEJDIEJEIEJFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMEUwICBCRiBDMCBDMSBDMiBDMyBDNCBDNSBDNiAtIEM3IEM4IEM5IENBIENCIENDIENEIENFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMEYwICBDRiBEMCBEMSBEMiBEMyBENCBENSBENiAtIEQ3IEQ4IEQ5IERBIERCIERDIEREIERFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMTAwICBERiBFMCBFMSBFMiBFMyBFNCBFNSBFNiAtIEU3IEU4IEU5IEVBIEVCIEVDIEVEIEVFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMTEwICBFRiBGMCBGMSBGMiBGMyBGNCBGNSBGNiAtIEY3IEY4IEY5IEZBIEZCIEZDIEZEIEZFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMTIwICBGRiA3QSAwQSAgICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgICAgICAgICB8LnoufAotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0zV3MKZGVzY3JpcHRpb246Cglzb21lIHNhbXBsZSBjb2RlIGZvciBoZXhkdW1waW5nIFVDUy0yCglub3QgTlVMIHNhZmU7IGlucHV0IGxpbmVzIG11c3QgYmUgTkwgdGVybWluYXRlZApzdGRpbjoKCXNldCAtVQoJewoJCXByaW50ICdIZWxsbywgV29ybGQhXFxcbuOBk+OCk+OBq+OBoeOBr++8gScKCQl0eXBlc2V0IC1VdWkxNiBpPTB4MTAwCgkJIyBjaGFuZ2UgdGhhdCB0byAweEZGIG9uY2Ugd2UgY2FuIGhhbmRsZSBlbWJlZGRlZAoJCSMgTlVMIGNoYXJhY3RlcnMgaW4gc3RyaW5ncyAvIGhlcmUgZG9jdW1lbnRzCgkJd2hpbGUgKCggaSsrIDwgMHgxRkYgKSk7IGRvCgkJCXByaW50IC1uICJcdSR7aSMxNiMxfSIKCQlkb25lCgkJcHJpbnQKCQlwcmludCBcXHhmZgkJIyBpbnZhbGlkIHV0Zi04CgkJcHJpbnQgXFx4YzIJCSMgaW52YWxpZCAyLWJ5dGUKCQlwcmludCBcXHhlZlxceGJmXFx4YzAJIyBpbnZhbGlkIDMtYnl0ZQoJCXByaW50IFxceGMwXFx4ODAJIyBub24tbWluaW1hbGlzdGljCgkJcHJpbnQgXFx4ZTBcXHg4MFxceDgwCSMgbm9uLW1pbmltYWxpc3RpYwoJCXByaW50ICfvv73vv77vv78nCSMgZW5kIG9mIHJhbmdlCgkJcHJpbnQgJ1wweicJCSMgZW1iZWRkZWQgTlVMCgl9IHwgewoJCSMgaW50ZWdlci1iYXNlLW9uZS0zV3MKCQl0eXBlc2V0IC1VdWkxNiAtWjExIHBvcz0wCgkJdHlwZXNldCAtVXVpMTYgLVo3IGh2CgkJdHlwZXNldCAtaTEgd2M9MHgwQQoJCXR5cGVzZXQgLWkgbHBvcwoJCWRhc2M9CgkJbmw9JHt3YyMxI30KCQl3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KCQkJbGluZT0kbGluZSRubAoJCQlscG9zPTAKCQkJd2hpbGUgKCggbHBvcyA8ICR7I2xpbmV9ICkpOyBkbwoJCQkJd2M9MSMke2xpbmU6KGxwb3MrKyk6MX0KCQkJCWlmICgoICh3YyA8IDMyKSB8fCBcCgkJCQkgICAgKCh3YyA+IDEyNikgJiYgKHdjIDwgMTYwKSkgKSk7IHRoZW4KCQkJCQlkY2g9LgoJCQkJZWxpZiAoKCAod2MgJiAweEZGODApID09IDB4RUY4MCApKTsgdGhlbgoJCQkJCWRjaD3vv70KCQkJCWVsc2UKCQkJCQlkY2g9JHt3YyMxI30KCQkJCWZpCgkJCQlpZiAoKCAocG9zICYgNykgPT0gNyApKTsgdGhlbgoJCQkJCWRhc2M9JGRhc2MkZGNoCgkJCQkJZGNoPQoJCQkJZWxpZiAoKCAocG9zICYgNykgPT0gMCApKTsgdGhlbgoJCQkJCSgoIHBvcyApKSAmJiBwcmludCAtciAtLSAiJGRhc2N8IgoJCQkJCXByaW50IC1uICIke3BvcyMxNiN9ICAiCgkJCQkJZGFzYz0nIHwnCgkJCQlmaQoJCQkJbGV0IGh2PXdjCgkJCQlwcmludCAtbiAiJHtodiMxNiN9ICIKCQkJCSgoIChwb3MrKyAmIDcpID09IDMgKSkgJiYgXAoJCQkJICAgIHByaW50IC1uIC0tICctICcKCQkJCWRhc2M9JGRhc2MkZGNoCgkJCWRvbmUKCQlkb25lCgkJd2hpbGUgKCggcG9zICYgNyApKTsgZG8KCQkJcHJpbnQgLW4gJyAgICAgJwoJCQkoKCAocG9zKysgJiA3KSA9PSAzICkpICYmIHByaW50IC1uIC0tICctICcKCQlkb25lCgkJKCggaHYgPT0gMjE0NzQ4MzY0NyApKSB8fCBwcmludCAtciAtLSAiJGRhc2N8IgoJfQpleHBlY3RlZC1zdGRvdXQ6CgkwMDAwMDAwMCAgMDA0OCAwMDY1IDAwNkMgMDA2QyAtIDAwNkYgMDAyQyAwMDIwIDAwNTcgIHxIZWxsbywgV3wKCTAwMDAwMDA4ICAwMDZGIDAwNzIgMDA2QyAwMDY0IC0gMDAyMSAwMDVDIDAwMEEgMzA1MyAgfG9ybGQhXC7jgZN8CgkwMDAwMDAxMCAgMzA5MyAzMDZCIDMwNjEgMzA2RiAtIEZGMDEgMDAwQSAwMDAxIDAwMDIgIHzjgpPjgavjgaHjga/vvIEuLi58CgkwMDAwMDAxOCAgMDAwMyAwMDA0IDAwMDUgMDAwNiAtIDAwMDcgMDAwOCAwMDA5IDAwMEEgIHwuLi4uLi4uLnwKCTAwMDAwMDIwICAwMDBCIDAwMEMgMDAwRCAwMDBFIC0gMDAwRiAwMDEwIDAwMTEgMDAxMiAgfC4uLi4uLi4ufAoJMDAwMDAwMjggIDAwMTMgMDAxNCAwMDE1IDAwMTYgLSAwMDE3IDAwMTggMDAxOSAwMDFBICB8Li4uLi4uLi58CgkwMDAwMDAzMCAgMDAxQiAwMDFDIDAwMUQgMDAxRSAtIDAwMUYgMDAyMCAwMDIxIDAwMjIgIHwuLi4uLiAhInwKCTAwMDAwMDM4ICAwMDIzIDAwMjQgMDAyNSAwMDI2IC0gMDAyNyAwMDI4IDAwMjkgMDAyQSAgfCMkJSYnKCkqfAoJMDAwMDAwNDAgIDAwMkIgMDAyQyAwMDJEIDAwMkUgLSAwMDJGIDAwMzAgMDAzMSAwMDMyICB8KywtLi8wMTJ8CgkwMDAwMDA0OCAgMDAzMyAwMDM0IDAwMzUgMDAzNiAtIDAwMzcgMDAzOCAwMDM5IDAwM0EgIHwzNDU2Nzg5OnwKCTAwMDAwMDUwICAwMDNCIDAwM0MgMDAzRCAwMDNFIC0gMDAzRiAwMDQwIDAwNDEgMDA0MiAgfDs8PT4/QEFCfAoJMDAwMDAwNTggIDAwNDMgMDA0NCAwMDQ1IDAwNDYgLSAwMDQ3IDAwNDggMDA0OSAwMDRBICB8Q0RFRkdISUp8CgkwMDAwMDA2MCAgMDA0QiAwMDRDIDAwNEQgMDA0RSAtIDAwNEYgMDA1MCAwMDUxIDAwNTIgIHxLTE1OT1BRUnwKCTAwMDAwMDY4ICAwMDUzIDAwNTQgMDA1NSAwMDU2IC0gMDA1NyAwMDU4IDAwNTkgMDA1QSAgfFNUVVZXWFlafAoJMDAwMDAwNzAgIDAwNUIgMDA1QyAwMDVEIDAwNUUgLSAwMDVGIDAwNjAgMDA2MSAwMDYyICB8W1xdXl9gYWJ8CgkwMDAwMDA3OCAgMDA2MyAwMDY0IDAwNjUgMDA2NiAtIDAwNjcgMDA2OCAwMDY5IDAwNkEgIHxjZGVmZ2hpanwKCTAwMDAwMDgwICAwMDZCIDAwNkMgMDA2RCAwMDZFIC0gMDA2RiAwMDcwIDAwNzEgMDA3MiAgfGtsbW5vcHFyfAoJMDAwMDAwODggIDAwNzMgMDA3NCAwMDc1IDAwNzYgLSAwMDc3IDAwNzggMDA3OSAwMDdBICB8c3R1dnd4eXp8CgkwMDAwMDA5MCAgMDA3QiAwMDdDIDAwN0QgMDA3RSAtIDAwN0YgMDA4MCAwMDgxIDAwODIgIHx7fH1+Li4uLnwKCTAwMDAwMDk4ICAwMDgzIDAwODQgMDA4NSAwMDg2IC0gMDA4NyAwMDg4IDAwODkgMDA4QSAgfC4uLi4uLi4ufAoJMDAwMDAwQTAgIDAwOEIgMDA4QyAwMDhEIDAwOEUgLSAwMDhGIDAwOTAgMDA5MSAwMDkyICB8Li4uLi4uLi58CgkwMDAwMDBBOCAgMDA5MyAwMDk0IDAwOTUgMDA5NiAtIDAwOTcgMDA5OCAwMDk5IDAwOUEgIHwuLi4uLi4uLnwKCTAwMDAwMEIwICAwMDlCIDAwOUMgMDA5RCAwMDlFIC0gMDA5RiAwMEEwIDAwQTEgMDBBMiAgfC4uLi4uwqDCocKifAoJMDAwMDAwQjggIDAwQTMgMDBBNCAwMEE1IDAwQTYgLSAwMEE3IDAwQTggMDBBOSAwMEFBICB8wqPCpMKlwqbCp8KowqnCqnwKCTAwMDAwMEMwICAwMEFCIDAwQUMgMDBBRCAwMEFFIC0gMDBBRiAwMEIwIDAwQjEgMDBCMiAgfMKrwqzCrcKuwq/CsMKxwrJ8CgkwMDAwMDBDOCAgMDBCMyAwMEI0IDAwQjUgMDBCNiAtIDAwQjcgMDBCOCAwMEI5IDAwQkEgIHzCs8K0wrXCtsK3wrjCucK6fAoJMDAwMDAwRDAgIDAwQkIgMDBCQyAwMEJEIDAwQkUgLSAwMEJGIDAwQzAgMDBDMSAwMEMyICB8wrvCvMK9wr7Cv8OAw4HDgnwKCTAwMDAwMEQ4ICAwMEMzIDAwQzQgMDBDNSAwMEM2IC0gMDBDNyAwMEM4IDAwQzkgMDBDQSAgfMODw4TDhcOGw4fDiMOJw4p8CgkwMDAwMDBFMCAgMDBDQiAwMENDIDAwQ0QgMDBDRSAtIDAwQ0YgMDBEMCAwMEQxIDAwRDIgIHzDi8OMw43DjsOPw5DDkcOSfAoJMDAwMDAwRTggIDAwRDMgMDBENCAwMEQ1IDAwRDYgLSAwMEQ3IDAwRDggMDBEOSAwMERBICB8w5PDlMOVw5bDl8OYw5nDmnwKCTAwMDAwMEYwICAwMERCIDAwREMgMDBERCAwMERFIC0gMDBERiAwMEUwIDAwRTEgMDBFMiAgfMObw5zDncOew5/DoMOhw6J8CgkwMDAwMDBGOCAgMDBFMyAwMEU0IDAwRTUgMDBFNiAtIDAwRTcgMDBFOCAwMEU5IDAwRUEgIHzDo8Okw6XDpsOnw6jDqcOqfAoJMDAwMDAxMDAgIDAwRUIgMDBFQyAwMEVEIDAwRUUgLSAwMEVGIDAwRjAgMDBGMSAwMEYyICB8w6vDrMOtw67Dr8Oww7HDsnwKCTAwMDAwMTA4ICAwMEYzIDAwRjQgMDBGNSAwMEY2IC0gMDBGNyAwMEY4IDAwRjkgMDBGQSAgfMOzw7TDtcO2w7fDuMO5w7p8CgkwMDAwMDExMCAgMDBGQiAwMEZDIDAwRkQgMDBGRSAtIDAwRkYgMDAwQSBFRkZGIDAwMEEgIHzDu8O8w73DvsO/Lu+/vS58CgkwMDAwMDExOCAgRUZDMiAwMDBBIEVGRUYgRUZCRiAtIEVGQzAgMDAwQSBFRkMwIEVGODAgIHzvv70u77+977+977+9Lu+/ve+/vXwKCTAwMDAwMTIwICAwMDBBIEVGRTAgRUY4MCBFRjgwIC0gMDAwQSBGRkZEIEVGRUYgRUZCRiAgfC7vv73vv73vv70u77+977+977+9fAoJMDAwMDAxMjggIEVGQkUgRUZFRiBFRkJGIEVGQkYgLSAwMDBBIDAwN0EgMDAwQSAgICAgICB877+977+977+977+9LnoufAotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0zQXIKZGVzY3JpcHRpb246Cglzb21lIHNhbXBsZSBjb2RlIGZvciBoZXhkdW1waW5nOyBOVUwgYW5kIGJpbmFyeSBzYWZlCnN0ZGluOgoJewoJCXByaW50ICdIZWxsbywgV29ybGQhXFxcbuOBk+OCk+OBq+OBoeOBr++8gScKCQl0eXBlc2V0IC1VdWkxNiBpPTB4MTAwCgkJIyBjaGFuZ2UgdGhhdCB0byAweEZGIG9uY2Ugd2UgY2FuIGhhbmRsZSBlbWJlZGRlZAoJCSMgTlVMIGNoYXJhY3RlcnMgaW4gc3RyaW5ncyAvIGhlcmUgZG9jdW1lbnRzCgkJd2hpbGUgKCggaSsrIDwgMHgxRkYgKSk7IGRvCgkJCXByaW50IC1uICJceCR7aSMxNiMxfSIKCQlkb25lCgkJcHJpbnQgJ1wweicKCX0gfCB7CgkJIyBpbnRlZ2VyLWJhc2Utb25lLTNBcgoJCXR5cGVzZXQgLVV1aTE2IC1aMTEgcG9zPTAKCQl0eXBlc2V0IC1VdWkxNiAtWjUgaHY9MjE0NzQ4MzY0NwoJCWRhc2M9CgkJaWYgcmVhZCAtYXJOIC0xIGxpbmU7IHRoZW4KCQkJdHlwZXNldCAtaTEgbGluZQoJCQlpPTAKCQkJd2hpbGUgKCggaSA8ICR7I2xpbmVbKl19ICkpOyBkbwoJCQkJaHY9JHtsaW5lW2krK119CgkJCQlpZiAoKCAocG9zICYgMTUpID09IDAgKSk7IHRoZW4KCQkJCQkoKCBwb3MgKSkgJiYgcHJpbnQgLXIgLS0gIiRkYXNjfCIKCQkJCQlwcmludCAtbiAiJHtwb3MjMTYjfSAgIgoJCQkJCWRhc2M9JyB8JwoJCQkJZmkKCQkJCXByaW50IC1uICIke2h2IzE2I30gIgoJCQkJaWYgKCggKGh2IDwgMzIpIHx8IChodiA+IDEyNikgKSk7IHRoZW4KCQkJCQlkYXNjPSRkYXNjLgoJCQkJZWxzZQoJCQkJCWRhc2M9JGRhc2Mke2xpbmVbaS0xXSMxI30KCQkJCWZpCgkJCQkoKCAocG9zKysgJiAxNSkgPT0gNyApKSAmJiBwcmludCAtbiAtLSAnLSAnCgkJCWRvbmUKCQlmaQoJCXdoaWxlICgoIHBvcyAmIDE1ICkpOyBkbwoJCQlwcmludCAtbiAnICAgJwoJCQkoKCAocG9zKysgJiAxNSkgPT0gNyApKSAmJiBwcmludCAtbiAtLSAnLSAnCgkJZG9uZQoJCSgoIGh2ID09IDIxNDc0ODM2NDcgKSkgfHwgcHJpbnQgLXIgLS0gIiRkYXNjfCIKCX0KZXhwZWN0ZWQtc3Rkb3V0OgoJMDAwMDAwMDAgIDQ4IDY1IDZDIDZDIDZGIDJDIDIwIDU3IC0gNkYgNzIgNkMgNjQgMjEgNUMgMEEgRTMgIHxIZWxsbywgV29ybGQhXC4ufAoJMDAwMDAwMTAgIDgxIDkzIEUzIDgyIDkzIEUzIDgxIEFCIC0gRTMgODEgQTEgRTMgODEgQUYgRUYgQkMgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwMjAgIDgxIDBBIDAxIDAyIDAzIDA0IDA1IDA2IC0gMDcgMDggMDkgMEEgMEIgMEMgMEQgMEUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwMzAgIDBGIDEwIDExIDEyIDEzIDE0IDE1IDE2IC0gMTcgMTggMTkgMUEgMUIgMUMgMUQgMUUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwNDAgIDFGIDIwIDIxIDIyIDIzIDI0IDI1IDI2IC0gMjcgMjggMjkgMkEgMkIgMkMgMkQgMkUgIHwuICEiIyQlJicoKSorLC0ufAoJMDAwMDAwNTAgIDJGIDMwIDMxIDMyIDMzIDM0IDM1IDM2IC0gMzcgMzggMzkgM0EgM0IgM0MgM0QgM0UgIHwvMDEyMzQ1Njc4OTo7PD0+fAoJMDAwMDAwNjAgIDNGIDQwIDQxIDQyIDQzIDQ0IDQ1IDQ2IC0gNDcgNDggNDkgNEEgNEIgNEMgNEQgNEUgIHw/QEFCQ0RFRkdISUpLTE1OfAoJMDAwMDAwNzAgIDRGIDUwIDUxIDUyIDUzIDU0IDU1IDU2IC0gNTcgNTggNTkgNUEgNUIgNUMgNUQgNUUgIHxPUFFSU1RVVldYWVpbXF1efAoJMDAwMDAwODAgIDVGIDYwIDYxIDYyIDYzIDY0IDY1IDY2IC0gNjcgNjggNjkgNkEgNkIgNkMgNkQgNkUgIHxfYGFiY2RlZmdoaWprbG1ufAoJMDAwMDAwOTAgIDZGIDcwIDcxIDcyIDczIDc0IDc1IDc2IC0gNzcgNzggNzkgN0EgN0IgN0MgN0QgN0UgIHxvcHFyc3R1dnd4eXp7fH1+fAoJMDAwMDAwQTAgIDdGIDgwIDgxIDgyIDgzIDg0IDg1IDg2IC0gODcgODggODkgOEEgOEIgOEMgOEQgOEUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwQjAgIDhGIDkwIDkxIDkyIDkzIDk0IDk1IDk2IC0gOTcgOTggOTkgOUEgOUIgOUMgOUQgOUUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwQzAgIDlGIEEwIEExIEEyIEEzIEE0IEE1IEE2IC0gQTcgQTggQTkgQUEgQUIgQUMgQUQgQUUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwRDAgIEFGIEIwIEIxIEIyIEIzIEI0IEI1IEI2IC0gQjcgQjggQjkgQkEgQkIgQkMgQkQgQkUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwRTAgIEJGIEMwIEMxIEMyIEMzIEM0IEM1IEM2IC0gQzcgQzggQzkgQ0EgQ0IgQ0MgQ0QgQ0UgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwRjAgIENGIEQwIEQxIEQyIEQzIEQ0IEQ1IEQ2IC0gRDcgRDggRDkgREEgREIgREMgREQgREUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAxMDAgIERGIEUwIEUxIEUyIEUzIEU0IEU1IEU2IC0gRTcgRTggRTkgRUEgRUIgRUMgRUQgRUUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAxMTAgIEVGIEYwIEYxIEYyIEYzIEY0IEY1IEY2IC0gRjcgRjggRjkgRkEgRkIgRkMgRkQgRkUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAxMjAgIEZGIDAwIDdBIDBBICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgICAgICAgIHwuLnoufAotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0zV3IKZGVzY3JpcHRpb246Cglzb21lIHNhbXBsZSBjb2RlIGZvciBoZXhkdW1waW5nIFVDUy0yOyBOVUwgYW5kIGJpbmFyeSBzYWZlCnN0ZGluOgoJc2V0IC1VCgl7CgkJcHJpbnQgJ0hlbGxvLCBXb3JsZCFcXFxu44GT44KT44Gr44Gh44Gv77yBJwoJCXR5cGVzZXQgLVV1aTE2IGk9MHgxMDAKCQkjIGNoYW5nZSB0aGF0IHRvIDB4RkYgb25jZSB3ZSBjYW4gaGFuZGxlIGVtYmVkZGVkCgkJIyBOVUwgY2hhcmFjdGVycyBpbiBzdHJpbmdzIC8gaGVyZSBkb2N1bWVudHMKCQl3aGlsZSAoKCBpKysgPCAweDFGRiApKTsgZG8KCQkJcHJpbnQgLW4gIlx1JHtpIzE2IzF9IgoJCWRvbmUKCQlwcmludAoJCXByaW50IFxceGZmCQkjIGludmFsaWQgdXRmLTgKCQlwcmludCBcXHhjMgkJIyBpbnZhbGlkIDItYnl0ZQoJCXByaW50IFxceGVmXFx4YmZcXHhjMAkjIGludmFsaWQgMy1ieXRlCgkJcHJpbnQgXFx4YzBcXHg4MAkjIG5vbi1taW5pbWFsaXN0aWMKCQlwcmludCBcXHhlMFxceDgwXFx4ODAJIyBub24tbWluaW1hbGlzdGljCgkJcHJpbnQgJ++/ve+/vu+/vycJIyBlbmQgb2YgcmFuZ2UKCQlwcmludCAnXDB6JwkJIyBlbWJlZGRlZCBOVUwKCX0gfCB7CgkJIyBpbnRlZ2VyLWJhc2Utb25lLTNXcgoJCXR5cGVzZXQgLVV1aTE2IC1aMTEgcG9zPTAKCQl0eXBlc2V0IC1VdWkxNiAtWjcgaHY9MjE0NzQ4MzY0NwoJCWRhc2M9CgkJaWYgcmVhZCAtYXJOIC0xIGxpbmU7IHRoZW4KCQkJdHlwZXNldCAtaTEgbGluZQoJCQlpPTAKCQkJd2hpbGUgKCggaSA8ICR7I2xpbmVbKl19ICkpOyBkbwoJCQkJaHY9JHtsaW5lW2krK119CgkJCQlpZiAoKCAoaHYgPCAzMikgfHwgXAoJCQkJICAgICgoaHYgPiAxMjYpICYmIChodiA8IDE2MCkpICkpOyB0aGVuCgkJCQkJZGNoPS4KCQkJCWVsaWYgKCggKGh2ICYgMHhGRjgwKSA9PSAweEVGODAgKSk7IHRoZW4KCQkJCQlkY2g977+9CgkJCQllbHNlCgkJCQkJZGNoPSR7bGluZVtpLTFdIzEjfQoJCQkJZmkKCQkJCWlmICgoIChwb3MgJiA3KSA9PSA3ICkpOyB0aGVuCgkJCQkJZGFzYz0kZGFzYyRkY2gKCQkJCQlkY2g9CgkJCQllbGlmICgoIChwb3MgJiA3KSA9PSAwICkpOyB0aGVuCgkJCQkJKCggcG9zICkpICYmIHByaW50IC1yIC0tICIkZGFzY3wiCgkJCQkJcHJpbnQgLW4gIiR7cG9zIzE2I30gICIKCQkJCQlkYXNjPScgfCcKCQkJCWZpCgkJCQlwcmludCAtbiAiJHtodiMxNiN9ICIKCQkJCSgoIChwb3MrKyAmIDcpID09IDMgKSkgJiYgXAoJCQkJICAgIHByaW50IC1uIC0tICctICcKCQkJCWRhc2M9JGRhc2MkZGNoCgkJCWRvbmUKCQlmaQoJCXdoaWxlICgoIHBvcyAmIDcgKSk7IGRvCgkJCXByaW50IC1uICcgICAgICcKCQkJKCggKHBvcysrICYgNykgPT0gMyApKSAmJiBwcmludCAtbiAtLSAnLSAnCgkJZG9uZQoJCSgoIGh2ID09IDIxNDc0ODM2NDcgKSkgfHwgcHJpbnQgLXIgLS0gIiRkYXNjfCIKCX0KZXhwZWN0ZWQtc3Rkb3V0OgoJMDAwMDAwMDAgIDAwNDggMDA2NSAwMDZDIDAwNkMgLSAwMDZGIDAwMkMgMDAyMCAwMDU3ICB8SGVsbG8sIFd8CgkwMDAwMDAwOCAgMDA2RiAwMDcyIDAwNkMgMDA2NCAtIDAwMjEgMDA1QyAwMDBBIDMwNTMgIHxvcmxkIVwu44GTfAoJMDAwMDAwMTAgIDMwOTMgMzA2QiAzMDYxIDMwNkYgLSBGRjAxIDAwMEEgMDAwMSAwMDAyICB844KT44Gr44Gh44Gv77yBLi4ufAoJMDAwMDAwMTggIDAwMDMgMDAwNCAwMDA1IDAwMDYgLSAwMDA3IDAwMDggMDAwOSAwMDBBICB8Li4uLi4uLi58CgkwMDAwMDAyMCAgMDAwQiAwMDBDIDAwMEQgMDAwRSAtIDAwMEYgMDAxMCAwMDExIDAwMTIgIHwuLi4uLi4uLnwKCTAwMDAwMDI4ICAwMDEzIDAwMTQgMDAxNSAwMDE2IC0gMDAxNyAwMDE4IDAwMTkgMDAxQSAgfC4uLi4uLi4ufAoJMDAwMDAwMzAgIDAwMUIgMDAxQyAwMDFEIDAwMUUgLSAwMDFGIDAwMjAgMDAyMSAwMDIyICB8Li4uLi4gISJ8CgkwMDAwMDAzOCAgMDAyMyAwMDI0IDAwMjUgMDAyNiAtIDAwMjcgMDAyOCAwMDI5IDAwMkEgIHwjJCUmJygpKnwKCTAwMDAwMDQwICAwMDJCIDAwMkMgMDAyRCAwMDJFIC0gMDAyRiAwMDMwIDAwMzEgMDAzMiAgfCssLS4vMDEyfAoJMDAwMDAwNDggIDAwMzMgMDAzNCAwMDM1IDAwMzYgLSAwMDM3IDAwMzggMDAzOSAwMDNBICB8MzQ1Njc4OTp8CgkwMDAwMDA1MCAgMDAzQiAwMDNDIDAwM0QgMDAzRSAtIDAwM0YgMDA0MCAwMDQxIDAwNDIgIHw7PD0+P0BBQnwKCTAwMDAwMDU4ICAwMDQzIDAwNDQgMDA0NSAwMDQ2IC0gMDA0NyAwMDQ4IDAwNDkgMDA0QSAgfENERUZHSElKfAoJMDAwMDAwNjAgIDAwNEIgMDA0QyAwMDREIDAwNEUgLSAwMDRGIDAwNTAgMDA1MSAwMDUyICB8S0xNTk9QUVJ8CgkwMDAwMDA2OCAgMDA1MyAwMDU0IDAwNTUgMDA1NiAtIDAwNTcgMDA1OCAwMDU5IDAwNUEgIHxTVFVWV1hZWnwKCTAwMDAwMDcwICAwMDVCIDAwNUMgMDA1RCAwMDVFIC0gMDA1RiAwMDYwIDAwNjEgMDA2MiAgfFtcXV5fYGFifAoJMDAwMDAwNzggIDAwNjMgMDA2NCAwMDY1IDAwNjYgLSAwMDY3IDAwNjggMDA2OSAwMDZBICB8Y2RlZmdoaWp8CgkwMDAwMDA4MCAgMDA2QiAwMDZDIDAwNkQgMDA2RSAtIDAwNkYgMDA3MCAwMDcxIDAwNzIgIHxrbG1ub3BxcnwKCTAwMDAwMDg4ICAwMDczIDAwNzQgMDA3NSAwMDc2IC0gMDA3NyAwMDc4IDAwNzkgMDA3QSAgfHN0dXZ3eHl6fAoJMDAwMDAwOTAgIDAwN0IgMDA3QyAwMDdEIDAwN0UgLSAwMDdGIDAwODAgMDA4MSAwMDgyICB8e3x9fi4uLi58CgkwMDAwMDA5OCAgMDA4MyAwMDg0IDAwODUgMDA4NiAtIDAwODcgMDA4OCAwMDg5IDAwOEEgIHwuLi4uLi4uLnwKCTAwMDAwMEEwICAwMDhCIDAwOEMgMDA4RCAwMDhFIC0gMDA4RiAwMDkwIDAwOTEgMDA5MiAgfC4uLi4uLi4ufAoJMDAwMDAwQTggIDAwOTMgMDA5NCAwMDk1IDAwOTYgLSAwMDk3IDAwOTggMDA5OSAwMDlBICB8Li4uLi4uLi58CgkwMDAwMDBCMCAgMDA5QiAwMDlDIDAwOUQgMDA5RSAtIDAwOUYgMDBBMCAwMEExIDAwQTIgIHwuLi4uLsKgwqHConwKCTAwMDAwMEI4ICAwMEEzIDAwQTQgMDBBNSAwMEE2IC0gMDBBNyAwMEE4IDAwQTkgMDBBQSAgfMKjwqTCpcKmwqfCqMKpwqp8CgkwMDAwMDBDMCAgMDBBQiAwMEFDIDAwQUQgMDBBRSAtIDAwQUYgMDBCMCAwMEIxIDAwQjIgIHzCq8Kswq3CrsKvwrDCscKyfAoJMDAwMDAwQzggIDAwQjMgMDBCNCAwMEI1IDAwQjYgLSAwMEI3IDAwQjggMDBCOSAwMEJBICB8wrPCtMK1wrbCt8K4wrnCunwKCTAwMDAwMEQwICAwMEJCIDAwQkMgMDBCRCAwMEJFIC0gMDBCRiAwMEMwIDAwQzEgMDBDMiAgfMK7wrzCvcK+wr/DgMOBw4J8CgkwMDAwMDBEOCAgMDBDMyAwMEM0IDAwQzUgMDBDNiAtIDAwQzcgMDBDOCAwMEM5IDAwQ0EgIHzDg8OEw4XDhsOHw4jDicOKfAoJMDAwMDAwRTAgIDAwQ0IgMDBDQyAwMENEIDAwQ0UgLSAwMENGIDAwRDAgMDBEMSAwMEQyICB8w4vDjMONw47Dj8OQw5HDknwKCTAwMDAwMEU4ICAwMEQzIDAwRDQgMDBENSAwMEQ2IC0gMDBENyAwMEQ4IDAwRDkgMDBEQSAgfMOTw5TDlcOWw5fDmMOZw5p8CgkwMDAwMDBGMCAgMDBEQiAwMERDIDAwREQgMDBERSAtIDAwREYgMDBFMCAwMEUxIDAwRTIgIHzDm8Ocw53DnsOfw6DDocOifAoJMDAwMDAwRjggIDAwRTMgMDBFNCAwMEU1IDAwRTYgLSAwMEU3IDAwRTggMDBFOSAwMEVBICB8w6PDpMOlw6bDp8Oow6nDqnwKCTAwMDAwMTAwICAwMEVCIDAwRUMgMDBFRCAwMEVFIC0gMDBFRiAwMEYwIDAwRjEgMDBGMiAgfMOrw6zDrcOuw6/DsMOxw7J8CgkwMDAwMDEwOCAgMDBGMyAwMEY0IDAwRjUgMDBGNiAtIDAwRjcgMDBGOCAwMEY5IDAwRkEgIHzDs8O0w7XDtsO3w7jDucO6fAoJMDAwMDAxMTAgIDAwRkIgMDBGQyAwMEZEIDAwRkUgLSAwMEZGIDAwMEEgRUZGRiAwMDBBICB8w7vDvMO9w77Dvy7vv70ufAoJMDAwMDAxMTggIEVGQzIgMDAwQSBFRkVGIEVGQkYgLSBFRkMwIDAwMEEgRUZDMCBFRjgwICB877+9Lu+/ve+/ve+/vS7vv73vv718CgkwMDAwMDEyMCAgMDAwQSBFRkUwIEVGODAgRUY4MCAtIDAwMEEgRkZGRCBFRkVGIEVGQkYgIHwu77+977+977+9Lu+/ve+/ve+/vXwKCTAwMDAwMTI4ICBFRkJFIEVGRUYgRUZCRiBFRkJGIC0gMDAwQSAwMDAwIDAwN0EgMDAwQSAgfO+/ve+/ve+/ve+/vS4uei58Ci0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTQKZGVzY3JpcHRpb246CglDaGVjayBpZiBrc2g5My1zdHlsZSBiYXNlLW9uZSBpbnRlZ2VycyB3b3JrCmNhdGVnb3J5OiAhc21rc2gKc3RkaW46CglzZXQgLVUKCWVjaG8gMSAkKCgnYScpKQoJKGVjaG8gMmYgJCgoJ2FhJykpKSAyPiYxIHwgc2VkICJzL15bXiddKicvMnAgJy8iCgllY2hvIDMgJCgoJ+KApicpKQoJeD0iJ2EnIgoJZWNobyAiNCA8JHg+IgoJZWNobyA1ICQoKCR4KSkKCWVjaG8gNiAkKCh4KSkKZXhwZWN0ZWQtc3Rkb3V0OgoJMSA5NwoJMnAgJ2FhJzogbXVsdGktY2hhcmFjdGVyIGNoYXJhY3RlciBjb25zdGFudAoJMyA4MjMwCgk0IDwnYSc+Cgk1IDk3Cgk2IDk3Ci0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTVBCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdG8gc2VlIHRoYXQgd2XigJlyZSBOVUwgYW5kIFVDUyBzYWZlCmNhdGVnb3J5OiAhc2hlbGw6ZWJjZGljLXllcwpzdGRpbjoKCXNldCArVQoJcHJpbnQgJ2FcMGJceGZkeicgPngKCXJlYWQgLWEgeSA8eAoJc2V0IC1VCgl0eXBlc2V0IC1VdWkxNiB5CglwcmludCAke3lbKl19IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMTYjNjEgMTYjMCAxNiM2MiAxNiNGRCAxNiM3QSAuCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTVFCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdG8gc2VlIHRoYXQgd2XigJlyZSBOVUwgYW5kIFVDUyBzYWZlCmNhdGVnb3J5OiAhc2hlbGw6ZWJjZGljLW5vCnN0ZGluOgoJc2V0ICtVCglwcmludCAnYVwwYlx4ZmR6JyA+eAoJcmVhZCAtYSB5IDx4CglzZXQgLVUKCXR5cGVzZXQgLVV1aTE2IHkKCXByaW50ICR7eVsqXX0gLgpleHBlY3RlZC1zdGRvdXQ6CgkxNiM4MSAxNiMwIDE2IzgyIDE2I0ZEIDE2I0E5IC4KLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtNVcKZGVzY3JpcHRpb246CglDaGVjayB0byBzZWUgdGhhdCB3ZeKAmXJlIE5VTCBhbmQgVUNTIHNhZmUKc3RkaW46CglzZXQgLVUKCXByaW50ICdhXDBi4oKsYycgPngKCXJlYWQgLWEgeSA8eAoJc2V0ICtVCgl0eXBlc2V0IC1VdWkxNiB5CglwcmludCAke3lbKl19IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMTYjNjEgMTYjMCAxNiM2MiAxNiMyMEFDIDE2IzYzIC4KLS0tCm5hbWU6IHVsaW1pdC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB1bGltaXQgYXMgdXNlZCBpbiBkb3QubWtzaCB3b3JrcyBvciBpcyBzdHViYmVkCnN0ZGluOgoJdWxpbWl0IC1jIDAKLS0tCm5hbWU6IHVsaW1pdC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgd2UgY2FuIHVzZSBhIHNwZWNpZmljIHN5bnRheCBpZGlvbSBmb3IgdWxpbWl0CglYWFggSGFpa3Ugd29ya3MsIGJ1dCBvbmx5IGZvciAtbiBhbmQgLVYKY2F0ZWdvcnk6ICFvczpoYWlrdSwhb3M6c3lsbGFibGUKc3RkaW46CglpZiAhIHg9JCh1bGltaXQgLWQpIHx8IFtbICR4ID0gdW5rbm93biBdXTsgdGhlbgoJCSNlY2hvIGV4cGVjdGVkIHRvIGZhaWwgb24gdGhpcyBPUwoJCWVjaG8gb2theQoJZWxzZQoJCXVsaW1pdCAtZFMgJHggJiYgZWNobyBva2F5CglmaQpleHBlY3RlZC1zdGRvdXQ6Cglva2F5Ci0tLQpuYW1lOiB1bGltaXQtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBsaW1pdHMgKGlmIHRoaXMgZmFpbHMsCglpbW1lZGlhdGVseSBjb250YWN0IHdpdGggc3lzdGVtIGluZm9ybWF0aW9uIHRoZSBkZXZlbG9wZXJzKQpzdGRpbjoKCVtbIC16ICQoc2V0IHwgZ3JlcCBeb3B0KSBdXTsgbWlzPSQ/CglzZXQgfCBncmVwIF5vcHQgfCBzZWQgJ3MvXi91bmV4cGVjdGVkbHkgc2V0IGluIGVudmlyb25tZW50OiAvJwoJb3B0YT0nPHVzZWQgZm9yIHNob3dpbmcgYWxsIGxpbWl0cz4nCglvcHRIPSc8dXNlZCB0byBzZXQgaGFyZCBsaW1pdHM+JwoJb3B0Uz0nPHVzZWQgdG8gc2V0IHNvZnQgbGltaXRzPicKCXVsaW1pdCAtYSA+dG1wZgoJc2V0IC1vIG5vZ2xvYgoJd2hpbGUgSUZTPSByZWFkIC1yIGxpbmU7IGRvCgkJeD0ke2xpbmU6MToxfQoJCWlmIFtbIC16ICR4IHx8ICR7I3h9LyR7JXh9ICE9IDEvMSBdXTsgdGhlbgoJCQlwcmludCAtciAtLSAid2VpcmQgbGluZTogJGxpbmUiCgkJCSgoIG1pcyB8PSAxICkpCgkJCWNvbnRpbnVlCgkJZmkKCQlzZXQgLS0gJGxpbmUKCQluYW1lcmVmIHY9b3B0JHgKCQlpZiBbWyAtbiAkdiBdXTsgdGhlbgoJCQlwcmludCAtciAtLSAiZHVwbGljYXRlIC0keCBcIiQyXCIgYWxyZWFkeSBzZWVuIGFzIFwiJHZcIiIKCQkJKCggbWlzIHw9IDIgKSkKCQlmaQoJCXY9JDIKCWRvbmUgPHRtcGYKCWlmICgoIG1pcyAmIDIgKSk7IHRoZW4KCQllY2hvIGZhaWxlZAoJZWxpZiAoKCBtaXMgJiAxICkpOyB0aGVuCgkJZWNobyBpbmNvbmNsdXNpdmUKCWVsc2UKCQllY2hvIGRvbmUKCWZpCmV4cGVjdGVkLXN0ZG91dDoKCWRvbmUKLS0tCm5hbWU6IHJlZGlyLTEKZGVzY3JpcHRpb246CglDaGVjayBzb21lIG9mIHRoZSBtb3N0IGJhc2ljIGludmFyaWFudHMgb2YgSS9PIHJlZGlyZWN0aW9uCnN0ZGluOgoJaT0wCglmdW5jdGlvbiBkIHsKCQlwcmludCBvJGkuCgkJcHJpbnQgLXUyIGUkKChpKyspKS4KCX0KCWQgPmEgMj5iCgllY2hvID0xPQoJY2F0IGEKCWVjaG8gPTI9CgljYXQgYgoJZWNobyA9Mz0KCWQgMj4mMSA+YwoJZWNobyA9ND0KCWNhdCBjCgllY2hvID01PQpleHBlY3RlZC1zdGRvdXQ6Cgk9MT0KCW8wLgoJPTI9CgllMC4KCT0zPQoJZTEuCgk9ND0KCW8xLgoJPTU9Ci0tLQpuYW1lOiBiYXNoaW9wLTEKZGVzY3JpcHRpb246CglDaGVjayBpZiBHTlUgYmFzaC1saWtlIEkvTyByZWRpcmVjdGlvbiB3b3JrcwoJUGFydCAxOiB0aGlzIGlzIGFsc28gc3VwcG9ydGVkIGJ5IEdOVSBiYXNoCnN0ZGluOgoJZXhlYyAzPiYxCglmdW5jdGlvbiB0aHJlZW91dCB7CgkJZWNobyByYXMKCQllY2hvIGR3YSA+JjIKCQllY2hvIHRyaSA+JjMKCX0KCXRocmVlb3V0ICY+Zm9vCgllY2hvID09PQoJY2F0IGZvbwpleHBlY3RlZC1zdGRvdXQ6Cgl0cmkKCT09PQoJcmFzCglkd2EKLS0tCm5hbWU6IGJhc2hpb3AtMmEKZGVzY3JpcHRpb246CglDaGVjayBpZiBHTlUgYmFzaC1saWtlIEkvTyByZWRpcmVjdGlvbiB3b3JrcwoJUGFydCAyOiB0aGlzIGlzICpub3QqIHN1cHBvcnRlZCBieSBHTlUgYmFzaApzdGRpbjoKCWV4ZWMgMz4mMQoJZnVuY3Rpb24gdGhyZWVvdXQgewoJCWVjaG8gcmFzCgkJZWNobyBkd2EgPiYyCgkJZWNobyB0cmkgPiYzCgl9Cgl0aHJlZW91dCAzJj5mb28KCWVjaG8gPT09CgljYXQgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCXJhcwoJPT09Cglkd2EKCXRyaQotLS0KbmFtZTogYmFzaGlvcC0yYgpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEdOVSBiYXNoLWxpa2UgSS9PIHJlZGlyZWN0aW9uIHdvcmtzCglQYXJ0IDI6IHRoaXMgaXMgKm5vdCogc3VwcG9ydGVkIGJ5IEdOVSBiYXNoCnN0ZGluOgoJZXhlYyAzPiYxCglmdW5jdGlvbiB0aHJlZW91dCB7CgkJZWNobyByYXMKCQllY2hvIGR3YSA+JjIKCQllY2hvIHRyaSA+JjMKCX0KCXRocmVlb3V0IDM+Zm9vICY+JjMKCWVjaG8gPT09CgljYXQgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCT09PQoJcmFzCglkd2EKCXRyaQotLS0KbmFtZTogYmFzaGlvcC0yYwpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEdOVSBiYXNoLWxpa2UgSS9PIHJlZGlyZWN0aW9uIHdvcmtzCglQYXJ0IDI6IHRoaXMgaXMgc3VwcG9ydGVkIGJ5IEdOVSBiYXNoIDQgb25seQpzdGRpbjoKCWVjaG8gbWlyID5mb28KCXNldCAtbyBub2Nsb2JiZXIKCWV4ZWMgMz4mMQoJZnVuY3Rpb24gdGhyZWVvdXQgewoJCWVjaG8gcmFzCgkJZWNobyBkd2EgPiYyCgkJZWNobyB0cmkgPiYzCgl9Cgl0aHJlZW91dCAmPj5mb28KCWVjaG8gPT09CgljYXQgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCXRyaQoJPT09CgltaXIKCXJhcwoJZHdhCi0tLQpuYW1lOiBiYXNoaW9wLTNhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgR05VIGJhc2gtbGlrZSBJL08gcmVkaXJlY3Rpb24gZmFpbHMgY29ycmVjdGx5CglQYXJ0IDE6IHRoaXMgaXMgYWxzbyBzdXBwb3J0ZWQgYnkgR05VIGJhc2gKc3RkaW46CgllY2hvIG1pciA+Zm9vCglzZXQgLW8gbm9jbG9iYmVyCglleGVjIDM+JjEKCWZ1bmN0aW9uIHRocmVlb3V0IHsKCQllY2hvIHJhcwoJCWVjaG8gZHdhID4mMgoJCWVjaG8gdHJpID4mMwoJfQoJdGhyZWVvdXQgJj5mb28KCWVjaG8gPT09CgljYXQgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCT09PQoJbWlyCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLio6IGNhbid0IChjcmVhdGV8b3ZlcndyaXRlKSAuKi8KLS0tCm5hbWU6IGJhc2hpb3AtM2IKZGVzY3JpcHRpb246CglDaGVjayBpZiBHTlUgYmFzaC1saWtlIEkvTyByZWRpcmVjdGlvbiBmYWlscyBjb3JyZWN0bHkKCVBhcnQgMjogdGhpcyBpcyAqbm90KiBzdXBwb3J0ZWQgYnkgR05VIGJhc2gKc3RkaW46CgllY2hvIG1pciA+Zm9vCglzZXQgLW8gbm9jbG9iYmVyCglleGVjIDM+JjEKCWZ1bmN0aW9uIHRocmVlb3V0IHsKCQllY2hvIHJhcwoJCWVjaG8gZHdhID4mMgoJCWVjaG8gdHJpID4mMwoJfQoJdGhyZWVvdXQgJj58Zm9vCgllY2hvID09PQoJY2F0IGZvbwpleHBlY3RlZC1zdGRvdXQ6Cgl0cmkKCT09PQoJcmFzCglkd2EKLS0tCm5hbWU6IGJhc2hpb3AtNApkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEdOVSBiYXNoLWxpa2UgSS9PIHJlZGlyZWN0aW9uIHdvcmtzCglQYXJ0IDQ6IHRoaXMgaXMgYWxzbyBzdXBwb3J0ZWQgYnkgR05VIGJhc2gsCglidXQgZmFpbGVkIGluIHNvbWUgbWtzaCB2ZXJzaW9ucwpzdGRpbjoKCWV4ZWMgMz4mMQoJZnVuY3Rpb24gdGhyZWVvdXQgewoJCWVjaG8gcmFzCgkJZWNobyBkd2EgPiYyCgkJZWNobyB0cmkgPiYzCgl9CglmdW5jdGlvbiBibHViYiB7CgkJW1sgLWUgYmFyIF1dICYmIHRocmVlb3V0ICIkYmYiICY+Zm9vCgl9CglibHViYgoJZWNobyAtbiA+YmFyCglibHViYgoJZWNobyA9PT0KCWNhdCBmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJdHJpCgk9PT0KCXJhcwoJZHdhCi0tLQpuYW1lOiBiYXNoaW9wLTUKZGVzY3JpcHRpb246CglDaGVjayBpZiBHTlUgYmFzaC1saWtlIEkvTyByZWRpcmVjdGlvbiBpcyBvbmx5IHN1cHBvcnRlZAoJaW4gIVBPU0lYICFzaCBtb2RlIGFzIGl0IGJyZWFrcyBleGlzdGluZyBzY3JpcHRzJyBzeW50YXgKc3RkaW46Cgk6Png7IGVjaG8gMSAiJCgiJF9fcHJvZ25hbWUiIC1jICdlY2hvIGZvbz4vZGV2L251bGwmPnggZWNobyBiYXInKSIgPSAiJCg8eCkiIC4KCTo+eDsgZWNobyAyICIkKCIkX19wcm9nbmFtZSIgLW8gcG9zaXggLWMgJ2VjaG8gZm9vPi9kZXYvbnVsbCY+eCBlY2hvIGJhcicpIiA9ICIkKDx4KSIgLgoJOj54OyBlY2hvIDMgIiQoIiRfX3Byb2duYW1lIiAtbyBzaCAtYyAnZWNobyBmb28+L2Rldi9udWxsJj54IGVjaG8gYmFyJykiID0gIiQoPHgpIiAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgID0gZm9vIGVjaG8gYmFyIC4KCTIgID0gYmFyIC4KCTMgID0gYmFyIC4KLS0tCm5hbWU6IG9rc2gtZXZhbApkZXNjcmlwdGlvbjoKCUNoZWNrIGV4cGFuc2lvbnMuCnN0ZGluOgoJYT0KCWZvciBuIGluICR7YSMqPX07IGRvIGVjaG8gMWh1ICR7bn0gLjsgZG9uZQoJZm9yIG4gaW4gIiR7YSMqPX0iOyBkbyBlY2hvIDFocSAke259IC47IGRvbmUKCWZvciBuIGluICR7YSMjKj19OyBkbyBlY2hvIDJodSAke259IC47IGRvbmUKCWZvciBuIGluICIke2EjIyo9fSI7IGRvIGVjaG8gMmhxICR7bn0gLjsgZG9uZQoJZm9yIG4gaW4gJHthJT0qfTsgZG8gZWNobyAxcHUgJHtufSAuOyBkb25lCglmb3IgbiBpbiAiJHthJT0qfSI7IGRvIGVjaG8gMXBxICR7bn0gLjsgZG9uZQoJZm9yIG4gaW4gJHthJSU9Kn07IGRvIGVjaG8gMnB1ICR7bn0gLjsgZG9uZQoJZm9yIG4gaW4gIiR7YSUlPSp9IjsgZG8gZWNobyAycHEgJHtufSAuOyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCTFocSAuCgkyaHEgLgoJMXBxIC4KCTJwcSAuCi0tLQpuYW1lOiBva3NoLWFuZC1saXN0LWVycm9yLTEKZGVzY3JpcHRpb246CglUZXN0IGV4aXQgc3RhdHVzIG9mIHJpZ2h0bW9zdCBlbGVtZW50IGluIDIgZWxlbWVudCAmJiBsaXN0IGluIC1lIG1vZGUKc3RkaW46Cgl0cnVlICYmIGZhbHNlCgllY2hvICJzaG91bGQgbm90IHByaW50Igphcmd1bWVudHM6ICEtZSEKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCi0tLQpuYW1lOiBva3NoLWFuZC1saXN0LWVycm9yLTIKZGVzY3JpcHRpb246CglUZXN0IGV4aXQgc3RhdHVzIG9mIHJpZ2h0bW9zdCBlbGVtZW50IGluIDMgZWxlbWVudCAmJiBsaXN0IGluIC1lIG1vZGUKc3RkaW46Cgl0cnVlICYmIHRydWUgJiYgZmFsc2UKCWVjaG8gInNob3VsZCBub3QgcHJpbnQiCmFyZ3VtZW50czogIS1lIQpleHBlY3RlZC1leGl0OiBlICE9IDAKLS0tCm5hbWU6IG9rc2gtb3ItbGlzdC1lcnJvci0xCmRlc2NyaXB0aW9uOgoJVGVzdCBleGl0IHN0YXR1cyBvZiB8fCBsaXN0IGluIC1lIG1vZGUKc3RkaW46CglmYWxzZSB8fCBmYWxzZQoJZWNobyAic2hvdWxkIG5vdCBwcmludCIKYXJndW1lbnRzOiAhLWUhCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMAotLS0KbmFtZTogb2tzaC1sb25nbGluZS1jcmFzaApkZXNjcmlwdGlvbjoKCVRoaXMgdXNlZCB0byBjYXVzZSBhIGNvcmUgZHVtcApzdGRpbjoKCXVsaW1pdCAtYyAwCglkZXBsaWJzPSItbHogLWxwbmcgL3Vzci9sb2NhbC9saWIvbGlianBlZy5sYSAtbHRpZmYgLWxtIC1sWDExIC1sWGV4dCAvdXNyL2xvY2FsL2xpYi9saWJpY29udi5sYSAtTC91c3IvbG9jYWwvbGliIC1ML3Vzci9wb3J0cy9kZXZlbC9nZXR0ZXh0L3ctZ2V0dGV4dC0wLjEwLjQwL2dldHRleHQtMC4xMC40MC9pbnRsLy5saWJzIC91c3IvbG9jYWwvbGliL2xpYmludGwubGEgL3Vzci9sb2NhbC9saWIvbGliZ2xpYi5sYSAvdXNyL2xvY2FsL2xpYi9saWJnbW9kdWxlLmxhIC1saW50bCAtbG0gLWxYMTEgLWxYZXh0IC1ML3Vzci9YMTFSNi9saWIgLWxnbGliIC1sZ21vZHVsZSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdkay5sYSAtbGludGwgLWxtIC1sWDExIC1sWGV4dCAtTC91c3IvWDExUjYvbGliIC1sZ2xpYiAtbGdtb2R1bGUgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJndGsubGEgLWx0aWZmIC1sanBlZyAtbHogLWxwbmcgLWxtIC1sWDExIC1sWGV4dCAtbGludGwgLWxnbGliIC1sZ21vZHVsZSAtbGdkayAtbGd0ayAtTC91c3IvWDExUjYvbGliIC1sZ2xpYiAtbGdtb2R1bGUgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnZGtfcGl4YnVmLmxhIC1seiAtbHBuZyAvdXNyL2xvY2FsL2xpYi9saWJpY29udi5sYSAtTC91c3IvbG9jYWwvbGliIC1ML3Vzci9wb3J0cy9kZXZlbC9nZXR0ZXh0L3ctZ2V0dGV4dC0wLjEwLjQwL2dldHRleHQtMC4xMC40MC9pbnRsLy5saWJzIC91c3IvbG9jYWwvbGliL2xpYmludGwubGEgL3Vzci9sb2NhbC9saWIvbGliZ2xpYi5sYSAtbG0gLWxtIC91c3IvbG9jYWwvbGliL2xpYmF1ZGlvZmlsZS5sYSAtbG0gLWxtIC1sYXVkaW9maWxlIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZXNkLmxhIC1sbSAtbHogLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnbm9tZXN1cHBvcnQubGEgLWxtIC1seiAtbG0gLWxnbGliIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ25vbWUubGEgLWxYMTEgLWxYZXh0IC91c3IvbG9jYWwvbGliL2xpYmljb252LmxhIC1ML3Vzci9sb2NhbC9saWIgLUwvdXNyL3BvcnRzL2RldmVsL2dldHRleHQvdy1nZXR0ZXh0LTAuMTAuNDAvZ2V0dGV4dC0wLjEwLjQwL2ludGwvLmxpYnMgL3Vzci9sb2NhbC9saWIvbGliaW50bC5sYSAvdXNyL2xvY2FsL2xpYi9saWJnbW9kdWxlLmxhIC1saW50bCAtbG0gLWxYMTEgLWxYZXh0IC1ML3Vzci9YMTFSNi9saWIgLWxnbGliIC1sZ21vZHVsZSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdkay5sYSAtbGludGwgLWxtIC1sWDExIC1sWGV4dCAtTC91c3IvWDExUjYvbGliIC1sZ2xpYiAtbGdtb2R1bGUgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJndGsubGEgLWxJQ0UgLWxTTSAtbHogLWxwbmcgL3Vzci9sb2NhbC9saWIvbGlidW5naWYubGEgL3Vzci9sb2NhbC9saWIvbGlianBlZy5sYSAtbHRpZmYgLWxtIC1seiAtbHBuZyAvdXNyL2xvY2FsL2xpYi9saWJ1bmdpZi5sYSAtbHogL3Vzci9sb2NhbC9saWIvbGlianBlZy5sYSAtbHRpZmYgLUwvdXNyL2xvY2FsL2xpYiAtTC91c3IvWDExUjYvbGliIC91c3IvbG9jYWwvbGliL2xpYmdka19pbWxpYi5sYSAtbG0gLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJhcnRfbGdwbC5sYSAtbG0gLWx6IC1sbSAtbFgxMSAtbFhleHQgLWxpbnRsIC1sZ2xpYiAtbGdtb2R1bGUgLWxnZGsgLWxndGsgLWxJQ0UgLWxTTSAtbG0gLWxYMTEgLWxYZXh0IC1saW50bCAtbGdsaWIgLWxnbW9kdWxlIC1sZ2RrIC1sZ3RrIC1ML3Vzci9YMTFSNi9saWIgLWxtIC1seiAtbHBuZyAtbHVuZ2lmIC1seiAtbGpwZWcgLWx0aWZmIC1sanBlZyAtbGdka19pbWxpYiAtbGdsaWIgLWxtIC1sYXVkaW9maWxlIC1sbSAtbGF1ZGlvZmlsZSAtbGVzZCAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdub21ldWkubGEgLWx6IC1seiAvdXNyL2xvY2FsL2xpYi9saWJ4bWwubGEgLWx6IC1seiAtbHogL3Vzci9sb2NhbC9saWIvbGlieG1sLmxhIC1sbSAtbFgxMSAtbFhleHQgL3Vzci9sb2NhbC9saWIvbGliaWNvbnYubGEgLUwvdXNyL3BvcnRzL2RldmVsL2dldHRleHQvdy1nZXR0ZXh0LTAuMTAuNDAvZ2V0dGV4dC0wLjEwLjQwL2ludGwvLmxpYnMgL3Vzci9sb2NhbC9saWIvbGliaW50bC5sYSAvdXNyL2xvY2FsL2xpYi9saWJnbGliLmxhIC91c3IvbG9jYWwvbGliL2xpYmdtb2R1bGUubGEgLWxpbnRsIC1sZ2xpYiAtbGdtb2R1bGUgL3Vzci9sb2NhbC9saWIvbGliZ2RrLmxhIC91c3IvbG9jYWwvbGliL2xpYmd0ay5sYSAtTC91c3IvWDExUjYvbGliIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ2xhZGUubGEgLWx6IC1seiAtbHogL3Vzci9sb2NhbC9saWIvbGlieG1sLmxhIC91c3IvbG9jYWwvbGliL2xpYmdsaWIubGEgLWxtIC1sbSAvdXNyL2xvY2FsL2xpYi9saWJhdWRpb2ZpbGUubGEgLWxtIC1sbSAtbGF1ZGlvZmlsZSAvdXNyL2xvY2FsL2xpYi9saWJlc2QubGEgLWxtIC1seiAvdXNyL2xvY2FsL2xpYi9saWJnbm9tZXN1cHBvcnQubGEgLWxtIC1seiAtbG0gLWxnbGliIC91c3IvbG9jYWwvbGliL2xpYmdub21lLmxhIC1sWDExIC1sWGV4dCAvdXNyL2xvY2FsL2xpYi9saWJpY29udi5sYSAtTC91c3IvcG9ydHMvZGV2ZWwvZ2V0dGV4dC93LWdldHRleHQtMC4xMC40MC9nZXR0ZXh0LTAuMTAuNDAvaW50bC8ubGlicyAvdXNyL2xvY2FsL2xpYi9saWJpbnRsLmxhIC91c3IvbG9jYWwvbGliL2xpYmdtb2R1bGUubGEgLWxpbnRsIC1sbSAtbFgxMSAtbFhleHQgLWxnbGliIC1sZ21vZHVsZSAvdXNyL2xvY2FsL2xpYi9saWJnZGsubGEgLWxpbnRsIC1sbSAtbFgxMSAtbFhleHQgLWxnbGliIC1sZ21vZHVsZSAvdXNyL2xvY2FsL2xpYi9saWJndGsubGEgLWxJQ0UgLWxTTSAtbHogLWxwbmcgL3Vzci9sb2NhbC9saWIvbGlidW5naWYubGEgL3Vzci9sb2NhbC9saWIvbGlianBlZy5sYSAtbHRpZmYgLWxtIC1seiAtbHogL3Vzci9sb2NhbC9saWIvbGliZ2RrX2ltbGliLmxhIC91c3IvbG9jYWwvbGliL2xpYmFydF9sZ3BsLmxhIC1sbSAtbHogLWxtIC1sWDExIC1sWGV4dCAtbGludGwgLWxnbGliIC1sZ21vZHVsZSAtbGdkayAtbGd0ayAtbG0gLWxYMTEgLWxYZXh0IC1saW50bCAtbGdsaWIgLWxnbW9kdWxlIC1sZ2RrIC1sZ3RrIC1sbSAtbHogLWx1bmdpZiAtbHogLWxqcGVnIC1sanBlZyAtbGdka19pbWxpYiAtbGdsaWIgLWxtIC1sYXVkaW9maWxlIC1sbSAtbGF1ZGlvZmlsZSAtbGVzZCAvdXNyL2xvY2FsL2xpYi9saWJnbm9tZXVpLmxhIC1ML3Vzci9YMTFSNi9saWIgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnbGFkZS1nbm9tZS5sYSAvdXNyL2xvY2FsL2xpYi9saWJnbGliLmxhIC1sbSAtbG0gL3Vzci9sb2NhbC9saWIvbGliYXVkaW9maWxlLmxhIC1sbSAtbG0gLWxhdWRpb2ZpbGUgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJlc2QubGEgLWxtIC1seiAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdub21lc3VwcG9ydC5sYSAtbG0gLWx6IC1sbSAtbGdsaWIgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnbm9tZS5sYSAtbFgxMSAtbFhleHQgL3Vzci9sb2NhbC9saWIvbGliaWNvbnYubGEgLUwvdXNyL2xvY2FsL2xpYiAtTC91c3IvcG9ydHMvZGV2ZWwvZ2V0dGV4dC93LWdldHRleHQtMC4xMC40MC9nZXR0ZXh0LTAuMTAuNDAvaW50bC8ubGlicyAvdXNyL2xvY2FsL2xpYi9saWJpbnRsLmxhIC91c3IvbG9jYWwvbGliL2xpYmdtb2R1bGUubGEgLWxpbnRsIC1sbSAtbFgxMSAtbFhleHQgLUwvdXNyL1gxMVI2L2xpYiAtbGdsaWIgLWxnbW9kdWxlIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ2RrLmxhIC1saW50bCAtbG0gLWxYMTEgLWxYZXh0IC1ML3Vzci9YMTFSNi9saWIgLWxnbGliIC1sZ21vZHVsZSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmd0ay5sYSAtbElDRSAtbFNNIC1seiAtbHBuZyAvdXNyL2xvY2FsL2xpYi9saWJ1bmdpZi5sYSAvdXNyL2xvY2FsL2xpYi9saWJqcGVnLmxhIC1sdGlmZiAtbG0gLWx6IC1scG5nIC91c3IvbG9jYWwvbGliL2xpYnVuZ2lmLmxhIC1seiAvdXNyL2xvY2FsL2xpYi9saWJqcGVnLmxhIC1sdGlmZiAtTC91c3IvbG9jYWwvbGliIC1ML3Vzci9YMTFSNi9saWIgL3Vzci9sb2NhbC9saWIvbGliZ2RrX2ltbGliLmxhIC1sbSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmFydF9sZ3BsLmxhIC1sbSAtbHogLWxtIC1sWDExIC1sWGV4dCAtbGludGwgLWxnbGliIC1sZ21vZHVsZSAtbGdkayAtbGd0ayAtbElDRSAtbFNNIC1sbSAtbFgxMSAtbFhleHQgLWxpbnRsIC1sZ2xpYiAtbGdtb2R1bGUgLWxnZGsgLWxndGsgLUwvdXNyL1gxMVI2L2xpYiAtbG0gLWx6IC1scG5nIC1sdW5naWYgLWx6IC1sanBlZyAtbHRpZmYgLWxqcGVnIC1sZ2RrX2ltbGliIC1sZ2xpYiAtbG0gLWxhdWRpb2ZpbGUgLWxtIC1sYXVkaW9maWxlIC1sZXNkIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ25vbWV1aS5sYSAtTC91c3IvWDExUjYvbGliIC1ML3Vzci9sb2NhbC9saWIiCglzcGVjaWFsZGVwbGlicz0iLWxnbm9tZXVpIC1sYXJ0X2xncGwgLWxnZGtfaW1saWIgLWx0aWZmIC1sanBlZyAtbHVuZ2lmIC1scG5nIC1seiAtbFNNIC1sSUNFIC1sZ3RrIC1sZ2RrIC1sZ21vZHVsZSAtbGludGwgLWxYZXh0IC1sWDExIC1sZ25vbWUgLWxnbm9tZXN1cHBvcnQgLWxlc2QgLWxhdWRpb2ZpbGUgLWxtIC1sZ2xpYiIKCWZvciBkZXBsaWIgaW4gJGRlcGxpYnM7IGRvCgkJY2FzZSAkZGVwbGliIGluCgkJLUwqKQoJCQluZXdfbGlicz0iJGRlcGxpYiAkbmV3X2xpYnMiCgkJCTs7CgkJKikKCQkJY2FzZSAiICRzcGVjaWFsZGVwbGlicyAiIGluCgkJCSoiICRkZXBsaWIgIiopCgkJCQluZXdfbGlicz0iJGRlcGxpYiAkbmV3X2xpYnMiOzsKCQkJZXNhYwoJCQk7OwoJCWVzYWMKCWRvbmUKLS0tCm5hbWU6IG9rc2gtc2V0ZXJyb3ItMQpkZXNjcmlwdGlvbjoKCVRoZSAtZSBmbGFnIHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gZXhlY3V0aW5nIGEgY29tcG91bmQgbGlzdAoJZm9sbG93ZWQgYnkgYW4gaWYgc3RhdGVtZW50LgpzdGRpbjoKCWlmIHRydWU7IHRoZW4gZmFsc2UgJiYgZmFsc2U7IGZpCgl0cnVlCmFyZ3VtZW50czogIS1lIQpleHBlY3RlZC1leGl0OiBlID09IDAKLS0tCm5hbWU6IG9rc2gtc2V0ZXJyb3ItMgpkZXNjcmlwdGlvbjoKCVRoZSAtZSBmbGFnIHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gZXhlY3V0aW5nIGEgY29tcG91bmQgbGlzdAoJZm9sbG93ZWQgYnkgYW4gaWYgc3RhdGVtZW50LgpzdGRpbjoKCWlmIHRydWU7IHRoZW4gaWYgdHJ1ZTsgdGhlbiBmYWxzZSAmJiBmYWxzZTsgZmk7IGZpCgl0cnVlCmFyZ3VtZW50czogIS1lIQpleHBlY3RlZC1leGl0OiBlID09IDAKLS0tCm5hbWU6IG9rc2gtc2V0ZXJyb3ItMwpkZXNjcmlwdGlvbjoKCVRoZSAtZSBmbGFnIHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gZXhlY3V0aW5nIGEgY29tcG91bmQgbGlzdAoJZm9sbG93ZWQgYnkgYW4gZWxpZiBzdGF0ZW1lbnQuCnN0ZGluOgoJaWYgdHJ1ZTsgdGhlbiA6OyBlbGlmIHRydWU7IHRoZW4gZmFsc2UgJiYgZmFsc2U7IGZpCmFyZ3VtZW50czogIS1lIQpleHBlY3RlZC1leGl0OiBlID09IDAKLS0tCm5hbWU6IG9rc2gtc2V0ZXJyb3ItNApkZXNjcmlwdGlvbjoKCVRoZSAtZSBmbGFnIHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gZXhlY3V0aW5nIGEgcGlwZWxpbmUKCWJlZ2lubmluZyB3aXRoICchJwpzdGRpbjoKCWZvciBpIGluIDEgMiAzCglkbwoJCWZhbHNlICYmIGZhbHNlCgkJdHJ1ZSB8fCBmYWxzZQoJZG9uZQphcmd1bWVudHM6ICEtZSEKZXhwZWN0ZWQtZXhpdDogZSA9PSAwCi0tLQpuYW1lOiBva3NoLXNldGVycm9yLTUKZGVzY3JpcHRpb246CglUaGUgLWUgZmxhZyBzaG91bGQgYmUgaWdub3JlZCB3aGVuIGV4ZWN1dGluZyBhIHBpcGVsaW5lCgliZWdpbm5pbmcgd2l0aCAnIScKc3RkaW46CgkhIHRydWUgfCBmYWxzZQoJdHJ1ZQphcmd1bWVudHM6ICEtZSEKZXhwZWN0ZWQtZXhpdDogZSA9PSAwCi0tLQpuYW1lOiBva3NoLXNldGVycm9yLTYKZGVzY3JpcHRpb246CglXaGVuIHRyYXBwaW5nIEVSUiBhbmQgRVhJVCwgYm90aCB0cmFwcyBzaG91bGQgcnVuIGluIC1lIG1vZGUKCXdoZW4gYW4gZXJyb3Igb2NjdXJzLgpzdGRpbjoKCXRyYXAgJ2VjaG8gRVhJVCcgRVhJVAoJdHJhcCAnZWNobyBFUlInIEVSUgoJc2V0IC1lCglmYWxzZQoJZWNobyBET05FCglleGl0IDAKYXJndW1lbnRzOiAhLWUhCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRvdXQ6CglFUlIKCUVYSVQKLS0tCm5hbWU6IG9rc2gtc2V0ZXJyb3ItNwpkZXNjcmlwdGlvbjoKCVRoZSAtZSBmbGFnIHdpdGhpbiBhIGNvbW1hbmQgc3Vic3RpdHV0aW9uIHNob3VsZCBiZSBob25vcmVkCnN0ZGluOgoJZWNobyAkKCBzZXQgLWU7IGZhbHNlOyBlY2hvIGZvbyApCmFyZ3VtZW50czogIS1lIQpleHBlY3RlZC1zdGRvdXQ6CgkKLS0tCm5hbWU6IG9rc2gtaW5wdXQtY29tc3ViCmRlc2NyaXB0aW9uOgoJQSBjb21tYW5kIHN1YnN0aXR1dGlvbiB1c2luZyBpbnB1dCByZWRpcmVjdGlvbiBzaG91bGQgZXhpdCB3aXRoCglmYWlsdXJlIGlmIHRoZSBpbnB1dCBmaWxlIGRvZXMgbm90IGV4aXN0LgpzdGRpbjoKCXZhcj0kKDwgbm9uLWV4aXN0ZW50KQpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC9ub24tZXhpc3RlbnQvCi0tLQpuYW1lOiBva3NoLWVtcHR5LWZvci1saXN0CmRlc2NyaXB0aW9uOgoJQSBmb3IgbGlzdCB3aGljaCBleHBhbmRzIHRvIHplcm8gaXRlbXMgc2hvdWxkIG5vdCBleGVjdXRlIHRoZSBib2R5LgpzdGRpbjoKCXNldCBmb28gYmFyIGJheiA7IGZvciBvdXQgaW4gOyBkbyBlY2hvICRvdXQgOyBkb25lCi0tLQpuYW1lOiBva3NoLXZhcmZ1bmN0aW9uLW1vZDEKZGVzY3JpcHRpb246CgkoSW5zcGlyZWQgYnkgUFIgMjQ1MCBvbiBPcGVuQlNELikgQ2FsbGluZwoJCUZPTz1iYXIgZgoJd2hlcmUgZiBpcyBhIGtzaCBzdHlsZSBmdW5jdGlvbiwgc2hvdWxkIG5vdCBzZXQgRk9PIGluIHRoZSBjdXJyZW50CgllbnYuIElmIGYgaXMgYSBCb3VybmUgc3R5bGUgZnVuY3Rpb24sIChuZXcpIGFsc28gbm90LiBGdXJ0aGVybW9yZSwKCXRoZSBmdW5jdGlvbiBzaG91bGQgcmVjZWl2ZSBhIGNvcnJlY3QgdmFsdWUgb2YgRk9PLiBIb3dldmVyLCBkaWZmZXJpbmcKCWZyb20gb2tzaCwgc2V0dGluZyBGT08gaW4gdGhlIGZ1bmN0aW9uIGl0c2VsZiBtdXN0IGNoYW5nZSB0aGUgdmFsdWUgaW4KCXNldHRpbmcgRk9PIGluIHRoZSBmdW5jdGlvbiBpdHNlbGYgc2hvdWxkIG5vdCBjaGFuZ2UgdGhlIHZhbHVlIGluCglnbG9iYWwgZW52aXJvbm1lbnQuCnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG51bnNldCBSQU5ET01cbmV4cG9ydCB8IHdoaWxlIElGUz0gcmVhZCAtcicgXAoJICAgICdSQU5ET007IGRvIGV2YWwgJ1wnJ3ByaW50IC1yIC0tICIkUkFORE9NPSQnXCcnIiRSQU5ET00iJ1wnXCJcJ1w7IFwKCSAgICBkb25lID5lbnY7IGNobW9kICt4IGVudjsgUEFUSD0uJFBBVEhTRVAkUEFUSAoJZnVuY3Rpb24gayB7CgkJaWYgWyB4JEZPTyAhPSB4YmFyIF07IHRoZW4KCQkJZWNobyAxCgkJCXJldHVybiAxCgkJZmkKCQl4PSQoZW52IHwgZ3JlcCBGT08pCgkJaWYgWyAieCR4IiAhPSAieEZPTz1iYXIiIF07IHRoZW4KCQkJZWNobyAyCgkJCXJldHVybiAxOwoJCWZpCgkJRk9PPWZvbwoJCXJldHVybiAwCgl9CgliICgpIHsKCQlpZiBbIHgkRk9PICE9IHhiYXIgXTsgdGhlbgoJCQllY2hvIDMKCQkJcmV0dXJuIDEKCQlmaQoJCXg9JChlbnYgfCBncmVwIEZPTykKCQlpZiBbICJ4JHgiICE9ICJ4Rk9PPWJhciIgXTsgdGhlbgoJCQllY2hvIDQKCQkJcmV0dXJuIDE7CgkJZmkKCQlGT089Zm9vCgkJcmV0dXJuIDAKCX0KCUZPTz1iYXIgawoJaWYgWyAkPyAhPSAwIF07IHRoZW4KCQlleGl0IDEKCWZpCglpZiBbIHgkRk9PICE9IHggXTsgdGhlbgoJCWV4aXQgMQoJZmkKCUZPTz1iYXIgYgoJaWYgWyAkPyAhPSAwIF07IHRoZW4KCQlleGl0IDEKCWZpCglpZiBbIHgkRk9PICE9IHggXTsgdGhlbgoJCWV4aXQgMQoJZmkKCUZPTz1iYXJiYXIKCUZPTz1iYXIgawoJaWYgWyAkPyAhPSAwIF07IHRoZW4KCQlleGl0IDEKCWZpCglpZiBbIHgkRk9PICE9IHhiYXJiYXIgXTsgdGhlbgoJCWV4aXQgMQoJZmkKCUZPTz1iYXIgYgoJaWYgWyAkPyAhPSAwIF07IHRoZW4KCQlleGl0IDEKCWZpCglpZiBbIHgkRk9PICE9IHhiYXJiYXIgXTsgdGhlbgoJCWV4aXQgMQoJZmkKLS0tCm5hbWU6IGZkLWNsb2V4ZWMtMQpkZXNjcmlwdGlvbjoKCVZlcmlmeSB0aGF0IGZpbGUgZGVzY3JpcHRvcnMgPiAyIGFyZSBwcml2YXRlIGZvciBLb3JuIHNoZWxscwoJQVQmVCBrc2g5MyBkb2VzIHRoaXMgc3RpbGwsIHdoaWNoIG1lYW5zIHdlIG11c3Qga2VlcCBpdCBhcyB3ZWxsCnN0ZGluOgoJY2F0ID5jbGQgPDwtRU9GCgkJIyEkX19wZXJsbmFtZQoJCW9wZW4oRkgsICI+JjkiKSBvciBkaWUgIkU6IG9wZW4gXCQhIjsKCQlzeXN3cml0ZShGSCwgIkZvd2xcXG4iLCA1KSBvciBkaWUgIkU6IHdyaXRlIFwkISI7CglFT0YKCWNobW9kICt4IGNsZAoJZXhlYyA5PiYxCgkuL2NsZApleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvRTogb3BlbiAvCi0tLQpuYW1lOiBmZC1jbG9leGVjLTIKZGVzY3JpcHRpb246CglWZXJpZnkgdGhhdCBmaWxlIGRlc2NyaXB0b3JzID4gMiBhcmUgbm90IHByaXZhdGUgZm9yIFBPU0lYIHNoZWxscwoJU2VlIERlYmlhbiBCdWcgIzE1NDU0MCwgQ2xvc2VzOiAjNDk5MTM5CnN0ZGluOgoJY2F0ID5jbGQgPDwtRU9GCgkJIyEkX19wZXJsbmFtZQoJCW9wZW4oRkgsICI+JjkiKSBvciBkaWUgIkU6IG9wZW4gXCQhIjsKCQlzeXN3cml0ZShGSCwgIkZvd2xcXG4iLCA1KSBvciBkaWUgIkU6IHdyaXRlIFwkISI7CglFT0YKCWNobW9kICt4IGNsZAoJdGVzdCAtbiAiJFBPU0hfVkVSU0lPTiIgfHwgc2V0IC1vIHBvc2l4CglleGVjIDk+JjEKCS4vY2xkCmV4cGVjdGVkLXN0ZG91dDoKCUZvd2wKLS0tCm5hbWU6IGZkLWNsb2V4ZWMtMwpkZXNjcmlwdGlvbjoKCUFub3RoZXIgY2hlY2sgZm9yIGNsb3NlLW9uLWV4ZWMKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIiA+dHMKCWNhdCA+PnRzIDw8J0VPRicKCXM9RVJSCglyZWFkIC1yTi0xIC11JDEgcyAyPi9kZXYvbnVsbDsgZT0kPwoJcHJpbnQgLXIgLS0gIigkMSwgJCgoIWUpKSwgJHMpIgoJRU9GCgljaG1vZCAreCB0cwoJcHJpbnQgZm9vID50eAoJcnVudGVzdCgpIHsKCQlzPSQxOyBzaGlmdAoJCXByaW50IC1yIC0tICQoIiRfX3Byb2duYW1lIiAiJEAiIC1jICIkcyIpICIkQCIgLgoJfQoJcnVudGVzdCAnZXhlYyAzPHR4OyAuL3RzIDMgMzwmMzsgLi90cyAzJwoJcnVudGVzdCAnZXhlYyAzPHR4OyAuL3RzIDMgMzwmMzsgLi90cyAzJyAtbyBwb3NpeAoJcnVudGVzdCAnZXhlYyAzPHR4OyAuL3RzIDMgMzwmMzsgLi90cyAzJyAtbyBzaAoJcnVudGVzdCAnZXhlYyAzPHR4OyAuL3RzIDQgNDwmMzsgLi90cyA0IDQ8JjMnCglydW50ZXN0ICdleGVjIDM8dHg7IC4vdHMgMyAzPCYzOyAuL3RzIDMgMzwmMycKZXhwZWN0ZWQtc3Rkb3V0OgoJKDMsIDEsIGZvbykgKDMsIDAsIEVSUikgLgoJKDMsIDEsIGZvbykgKDMsIDEsICkgLW8gcG9zaXggLgoJKDMsIDEsIGZvbykgKDMsIDEsICkgLW8gc2ggLgoJKDQsIDEsIGZvbykgKDQsIDEsICkgLgoJKDMsIDEsIGZvbykgKDMsIDEsICkgLgotLS0KbmFtZTogY29tc3ViLTFhCmRlc2NyaXB0aW9uOgoJQ09NU1VCIGFyZSBub3cgcGFyc2VkIHJlY3Vyc2l2ZWx5LCBzbyB0aGlzIHdvcmtzCglzZWUgYWxzbyByZWdyZXNzaW9uLTY6IG1hdGNoaW5nIHBhcmVudGhlc8STcyBidWcKCUZhaWxzIG9uOiBwZGtzaCBiYXNoMiBiYXNoMyB6c2gKCVBhc3NlcyBvbjogYmFzaDQga3NoOTMgbWtzaCgyMDExMDMxMyspCnN0ZGluOgoJZWNobyAxICQoY2FzZSAxIGluICgxKSBlY2hvIHllczs7ICgyKSBlY2hvIG5vOzsgZXNhYykgLgoJZWNobyAyICQoY2FzZSAxIGluIDEpIGVjaG8geWVzOzsgMikgZWNobyBubzs7IGVzYWMpIC4KCVRFU1Q9MTIzNDsgZWNobyAzICR7VEVTVDogJChjYXNlIDEgaW4gKDEpIGVjaG8gMTs7ICgqKSBlY2hvIDI7OyBlc2FjKX0gLgoJVEVTVD01Njc4OyBlY2hvIDQgJHtURVNUOiAkKGNhc2UgMSBpbiAxKSBlY2hvIDE7OyAqKSBlY2hvIDI7OyBlc2FjKX0gLgoJYT0oJChjYXNlIDEgaW4gKDEpIGVjaG8gMTs7ICgqKSBlY2hvIDI7OyBlc2FjKSk7IGVjaG8gNSAke2FbMF19IC4KCWE9KCQoY2FzZSAxIGluIDEpIGVjaG8gMTs7ICopIGVjaG8gMjs7IGVzYWMpKTsgZWNobyA2ICR7YVswXX0gLgpleHBlY3RlZC1zdGRvdXQ6CgkxIHllcyAuCgkyIHllcyAuCgkzIDIzNCAuCgk0IDY3OCAuCgk1IDEgLgoJNiAxIC4KLS0tCm5hbWU6IGNvbXN1Yi0xYgpkZXNjcmlwdGlvbjoKCUNPTVNVQiBhcmUgbm93IHBhcnNlZCByZWN1cnNpdmVseSwgc28gdGhpcyB3b3JrcwoJRmFpbHMgb246IHBka3NoIGJhc2gyIGJhc2gzIGJhc2g0IHpzaAoJUGFzc2VzIG9uOiBrc2g5MyBta3NoKDIwMTEwMzEzKykKc3RkaW46CgllY2hvIDEgJCgoJChjYXNlIDEgaW4gKDEpIGVjaG8gMTs7ICgqKSBlY2hvIDI7OyBlc2FjKSsxMCkpIC4KCWVjaG8gMiAkKCgkKGNhc2UgMSBpbiAxKSBlY2hvIDE7OyAqKSBlY2hvIDI7OyBlc2FjKSsyMCkpIC4KCSgoIGEgPSAkKGNhc2UgMSBpbiAoMSkgZWNobyAxOzsgKCopIGVjaG8gMjs7IGVzYWMpICkpOyBlY2hvIDMgJGEgLgoJKCggYSA9ICQoY2FzZSAxIGluIDEpIGVjaG8gMTs7ICopIGVjaG8gMjs7IGVzYWMpICkpOyBlY2hvIDQgJGEgLgoJYT0oJCgoJChjYXNlIDEgaW4gKDEpIGVjaG8gMTs7ICgqKSBlY2hvIDI7OyBlc2FjKSsxMCkpKTsgZWNobyA1ICR7YVswXX0gLgoJYT0oJCgoJChjYXNlIDEgaW4gMSkgZWNobyAxOzsgKikgZWNobyAyOzsgZXNhYykrMjApKSk7IGVjaG8gNiAke2FbMF19IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSAxMSAuCgkyIDIxIC4KCTMgMSAuCgk0IDEgLgoJNSAxMSAuCgk2IDIxIC4KLS0tCm5hbWU6IGNvbXN1Yi0yCmRlc2NyaXB0aW9uOgoJUmVkSGF0IEJaIzQ5Njc5MSDigJMgYW5vdGhlciBjYXNlIG9mIG1pc3NpbmcgcmVjdXJzaW9uCglpbiBwYXJzaW5nIENPTVNVQiBleHByZXNzaW9ucwoJRmFpbHMgb246IHBka3NoIGJhc2gyIGJhc2gzwrkgYmFzaDTCuSB6c2gKCVBhc3NlcyBvbjoga3NoOTMgbWtzaCgyMDExMDMwNSspCgnikaAgYmFzaFszNF0gc2VlbSB0byBjaG9rZSBvbiBjb21tZW50IGVuZGluZyB3aXRoIGJhY2tzbGFzaC1uZXdsaW5lCnN0ZGluOgoJIyBhIGNvbW1lbnQgd2l0aCAiICcgXAoJeD0kKAoJZWNobyB5ZXMKCSMgYSBjb21tZW50IHdpdGggIiAnIFwKCSkKCWVjaG8gJHgKZXhwZWN0ZWQtc3Rkb3V0OgoJeWVzCi0tLQpuYW1lOiBjb21zdWItMwpkZXNjcmlwdGlvbjoKCUV4dGVuZGVkIHRlc3QgZm9yIENPTVNVQiBleHBsYWluaW5nIHdoeSBhIHJlY3Vyc2l2ZSBwYXJzZXIKCWlzIGEgbXVzdCAoYSBub24tcmVjdXJzaXZlIHBhcnNlciBjYW5ub3QgcGFzcyBhbGwgdGhyZWUgb2YKCXRoZXNlIHRlc3QgY2FzZXMsIGVzcGVjaWFsbHkgdGhlIOKAmCPigJkgaXMgZGlmZmljdWx0KQpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZWNobyAxMjM0JyA+aWQ7IGNobW9kICt4IGlkOyBQQVRIPS4kUEFUSFNFUCRQQVRICgllY2hvICQodHlwZXNldCAtaTEwIHg9MTYjMjA7IGVjaG8gJHgpCgllY2hvICQodHlwZXNldCAtVXVpMTYgeD0xNiMkKGlkIC11KQoJKSAuCgllY2hvICQoYz0xOyBkPTEKCXR5cGVzZXQgLVV1aTE2IGE9MzYjZm9vOyBjPTIKCXR5cGVzZXQgLVV1aTE2IGI9MzYgI2ZvbzsgZD0yCgllY2hvICRhICRiICRjICRkKQpleHBlY3RlZC1zdGRvdXQ6CgkzMgoJLgoJMTYjNEY2OCAxNiMyNCAyIDEKLS0tCm5hbWU6IGNvbXN1Yi00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhlIHRyZWUgZHVtcCBmdW5jdGlvbnMgZm9yICFNS1NIX1NNQUxMIGZ1bmN0aW9uYWxpdHkKY2F0ZWdvcnk6ICFzbWtzaApzdGRpbjoKCXgoKSB7IGNhc2UgJDEgaW4gdSkgZWNobyB4IDs7JiAqKSBlY2hvICQxIDs7IGVzYWM7IH0KCXR5cGVzZXQgLWYgeApleHBlY3RlZC1zdGRvdXQ6Cgl4KCkgewoJCWNhc2UgJDEgaW4KCQkodSkKCQkJXGVjaG8geCAKCQkJO3wKCQkoKikKCQkJXGVjaG8gJDEgCgkJCTs7CgkJZXNhYyAKCX0gCi0tLQpuYW1lOiBjb21zdWItNQpkZXNjcmlwdGlvbjoKCUNoZWNrIENPTVNVQiB3b3JrcyB3aXRoIGFsaWFzZXMgKGRvZXMgbm90IGV4cGFuZCB0aGVtIHR3aWNlKQoJYW5kIHJlZW50cmFuY3kgc2FmZXR5CnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG5mb3IgeCBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiJHgiOyBkb25lJyA+cGZuCgljaG1vZCAreCBwZm4KCWFsaWFzIGVjaG89J2VjaG8gYScKCWZvbygpIHsKCQllY2hvIG1vbwoJCS4vcGZuICIkKGVjaG8gZm9vKSIKCX0KCS4vcGZuICIkKGVjaG8gYikiCgl0eXBlc2V0IC1mIGZvbyA+eAoJY2F0IHgKCWZvbwoJLiAuL3gKCXR5cGVzZXQgLWYgZm9vCglmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJYSBiCglmb28oKSB7CgkJXGVjaG8gYSBtb28gCgkJLi9wZm4gIiQoXGVjaG8gYSBmb28gKSIgCgl9IAoJYSBtb28KCWEgZm9vCglmb28oKSB7CgkJXGVjaG8gYSBtb28gCgkJLi9wZm4gIiQoXGVjaG8gYSBmb28gKSIgCgl9IAoJYSBtb28KCWEgZm9vCi0tLQpuYW1lOiBjb21zdWItdG9ydHVyZQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoZSB0cmVlIGR1bXAgZnVuY3Rpb25zIHdvcmsgY29ycmVjdGx5CnN0ZGluOgoJaWYgW1sgLXogJF9fcHJvZ25hbWUgXV07IHRoZW4gZWNobyA+JjIgY2FsbCBtZSB3aXRoIF9fcHJvZ25hbWU7IGV4aXQgMTsgZmkKCXdoaWxlIElGUz0gcmVhZCAtciBsaW5lOyBkbwoJCWlmIFtbICRsaW5lID0gJyMxJyBdXTsgdGhlbgoJCQlsYXN0Zj0wCgkJCWNvbnRpbnVlCgkJZWxpZiBbWyAkbGluZSA9IEVPRk4qIF1dOyB0aGVuCgkJCWZib2R5PSRmYm9keSQnXG4nJGxpbmUKCQkJY29udGludWUKCQllbGlmIFtbICRsaW5lICE9ICcjJyogXV07IHRoZW4KCQkJZmJvZHk9JGZib2R5JCdcblx0JyRsaW5lCgkJCWNvbnRpbnVlCgkJZmkKCQlpZiAoKCBsYXN0ZiApKTsgdGhlbgoJCQl4PSJpbmxpbmVfJHtuZXh0Zn0oKSB7IiRmYm9keSQnXG59XG4nCgkJCXByaW50IC1uciAtLSAiJHgiCgkJCXByaW50IC1yIC0tICIke3h9dHlwZXNldCAtZiBpbmxpbmVfJG5leHRmIiB8ICIkX19wcm9nbmFtZSIKCQkJeD0iZnVuY3Rpb24gY29tc3ViXyRuZXh0ZiB7IHg9XCQoIiRmYm9keSQnXG4pOyB9XG4nCgkJCXByaW50IC1uciAtLSAiJHgiCgkJCXByaW50IC1yIC0tICIke3h9dHlwZXNldCAtZiBjb21zdWJfJG5leHRmIiB8ICIkX19wcm9nbmFtZSIKCQkJeD0iZnVuY3Rpb24gcmVyZWFkXyRuZXh0ZiB7IHg9XCQoKCIkZmJvZHkkJ1xuKXx0ciB1IHgpOyB9XG4nCgkJCXByaW50IC1uciAtLSAiJHgiCgkJCXByaW50IC1yIC0tICIke3h9dHlwZXNldCAtZiByZXJlYWRfJG5leHRmIiB8ICIkX19wcm9nbmFtZSIKCQlmaQoJCWxhc3RmPTEKCQlmYm9keT0KCQluZXh0Zj0ke2xpbmUjP30KCWRvbmUgPDwnRU9EJwoJIzEKCSNUQ09NCgl2YXJhPTEgIHZhcmI9JzIgIDMnICBjbWQgIGFyZzEgICRhcmcyICAiJGFyZzMgIDQiCgkjVFBBUkVOX1RQSVBFX1RMSVNUCgkoZWNobyAkZm9vICB8ICB0ciAtZGMgMC05OyBlY2hvKQoJI1RBTkRfVE9SCgljbWQgICYmICBlY2hvIGphICB8fCAgZWNobyBuZWluCgkjVFNFTEVDVAoJc2VsZWN0ICBmaWxlICBpbiAgKjsgIGRvICBlY2hvICAiPCRmaWxlPiIgOyAgYnJlYWsgOyAgZG9uZQoJI1RGT1JfVFRJTUUKCXRpbWUgIGZvciAgaSAgaW4gIHsxLDIsM30gIDsgIGRvICBlY2hvICAkaSA7ICBkb25lCgkjVENBU0UKCWNhc2UgICRmb28gIGluICAxKSAgZWNobyBlaW5zOyYgMikgZWNobyB6d2VpICA7fCAqKSBlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW47OyAgZXNhYwoJI1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYKCWlmICAhICBbWyAgMSAgPSAgMSAgXV0gIDsgIHRoZW4gIGVjaG8gZWluczsgIGVsaWYgW1sgMSA9IDIgXV07IHRoZW4gZWNobyB6d2VpICA7ZWxzZSBlY2hvIGRyZWk7IGZpCgkjVFdISUxFCglpPTE7IHdoaWxlICgoIGkgPCAxMCApKTsgZG8gZWNobyAkaTsgbGV0ICsraTsgZG9uZQoJI1RVTlRJTAoJaT0xMDsgdW50aWwgICgoICEtLWkgKSkgOyBkbyBlY2hvICRpOyBkb25lCgkjVENPUFJPQwoJY2F0ICAqICB8JiAgbHMKCSNURlVOQ1RfVEJSQUNFX1RBU1lOQwoJZnVuY3Rpb24gIGtvcm4gIHsgIGVjaG8gZWluczsgZWNobyB6d2VpIDsgIH0KCWJvdXJuZSAgKCkgIHsgIGxvZ2dlciAqICAmICB9CgkjSU9SRUFEX0lPQ0FUCgl0ciAgeCAgdSAgMDxmb28gID4+YmFyCgkjSU9XUklURV9JT0NMT0JfSU9IRVJFX25vSU9TS0lQCgljYXQgID58YmFyICA8PCdFT0ZOJwoJZm9vCglFT0ZOCgkjSU9XUklURV9ub0lPQ0xPQl9JT0hFUkVfSU9TS0lQCgljYXQgIDE+YmFyICA8PC1FT0ZJCglmb28KCUVPRkkKCSNJT1JEV1JfSU9EVVAKCXNoICAxPD4vZGV2L2NvbnNvbGUgIDA8JjEgIDI+JjEKCSNDT01TVUJfRVhQUlNVQl9GVU5TVUJfVkFMU1VCCgllY2hvICQodHJ1ZSkgJCgoMSsgMikpICR7ICA6O30gJHt8IFJFUExZPXg7fQoJI1FDSEFSX09RVU9URV9DUVVPVEUKCWVjaG8gZm9cb2JcImFcYHJcJ2JcJGF6CgllY2hvICJmb1xvYlwiYVxgclwnYlwkYXoiCgllY2hvICdmb1xvYlwiYVxgcidcJydiXCRheicKCSNPU1VCU1RfQ1NVQlNUX09QQVRfU1BBVF9DUEFUCglbWyAke2ZvbyNibFwodVwpYn0gPSBAKGJhcnxiYXopIF1dCgkjaGVyZWRvY19jbG9zZWQKCXg9JChjYXQgPDxFT0ZOCglub3RlIHRoZXJlIG11c3QgYmUgbm8gc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApCglFT0ZOKTsgZWNobyAkeAoJI2hlcmVkb2Nfc3BhY2UKCXg9JChjYXQgPDxFT0ZOXCAKCW5vdGUgdGhlIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKSBpcyBhY3R1YWxseSBwYXJ0IG9mIHRoZSBoZXJlIGRvY3VtZW50IG1hcmtlcgoJRU9GTiApOyBlY2hvICR4CgkjcGF0Y2hfbW90ZAoJeD0kKHN5c2N0bCAtbiBrZXJuLnZlcnNpb24gfCBzZWQgMXEpCglbWyAtcyAvZXRjL21vdGQgJiYgIiQoW1sgIiQoaGVhZCAtMSAvZXRjL21vdGQpIiAhPSAkeCBdXSAmJiBcCgkgICAgZWQgLXMgL2V0Yy9tb3RkIDI+JjEgPDwtRU9GCgkJMSwvXlwkL2QKCQkwYQoJCQkkeAoJCgkJLgoJCXdxCglFT0YpIiA9IEAoPykgXV0gJiYgcm0gLWYgL2V0Yy9tb3RkCglpZiBbWyAhIC1zIC9ldGMvbW90ZCBdXTsgdGhlbgoJCWluc3RhbGwgLWMgLW8gcm9vdCAtZyB3aGVlbCAtbSA2NjQgL2Rldi9udWxsIC9ldGMvbW90ZAoJCXByaW50IC0tICIkeFxuIiA+L2V0Yy9tb3RkCglmaQoJI3dkYXJyYXNzaWduCgljYXNlIHggaW4KCXgpIGErPWI7IGMrPShkIGUpCgllc2FjCgkjMAoJRU9ECmV4cGVjdGVkLXN0ZG91dDoKCWlubGluZV9UQ09NKCkgewoJCXZhcmE9MSAgdmFyYj0nMiAgMycgIGNtZCAgYXJnMSAgJGFyZzIgICIkYXJnMyAgNCIKCX0KCWlubGluZV9UQ09NKCkgewoJCXZhcmE9MSB2YXJiPSIyICAzIiBcY21kIGFyZzEgJGFyZzIgIiRhcmczICA0IiAKCX0gCglmdW5jdGlvbiBjb21zdWJfVENPTSB7IHg9JCgKCQl2YXJhPTEgIHZhcmI9JzIgIDMnICBjbWQgIGFyZzEgICRhcmcyICAiJGFyZzMgIDQiCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVENPTSB7CgkJeD0kKHZhcmE9MSB2YXJiPSIyICAzIiBcY21kIGFyZzEgJGFyZzIgIiRhcmczICA0IiApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UQ09NIHsgeD0kKCgKCQl2YXJhPTEgIHZhcmI9JzIgIDMnICBjbWQgIGFyZzEgICRhcmcyICAiJGFyZzMgIDQiCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UQ09NIHsKCQl4PSQoICggdmFyYT0xIHZhcmI9IjIgIDMiIFxjbWQgYXJnMSAkYXJnMiAiJGFyZzMgIDQiICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RQQVJFTl9UUElQRV9UTElTVCgpIHsKCQkoZWNobyAkZm9vICB8ICB0ciAtZGMgMC05OyBlY2hvKQoJfQoJaW5saW5lX1RQQVJFTl9UUElQRV9UTElTVCgpIHsKCQkoIFxlY2hvICRmb28gfCBcdHIgLWRjIDAtOSAKCQkgIFxlY2hvICkgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RQQVJFTl9UUElQRV9UTElTVCB7IHg9JCgKCQkoZWNobyAkZm9vICB8ICB0ciAtZGMgMC05OyBlY2hvKQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RQQVJFTl9UUElQRV9UTElTVCB7CgkJeD0kKCAoIFxlY2hvICRmb28gfCBcdHIgLWRjIDAtOSA7IFxlY2hvICkgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVFBBUkVOX1RQSVBFX1RMSVNUIHsgeD0kKCgKCQkoZWNobyAkZm9vICB8ICB0ciAtZGMgMC05OyBlY2hvKQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVFBBUkVOX1RQSVBFX1RMSVNUIHsKCQl4PSQoICggKCBcZWNobyAkZm9vIHwgXHRyIC1kYyAwLTkgOyBcZWNobyApICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RBTkRfVE9SKCkgewoJCWNtZCAgJiYgIGVjaG8gamEgIHx8ICBlY2hvIG5laW4KCX0KCWlubGluZV9UQU5EX1RPUigpIHsKCQlcY21kICYmIFxlY2hvIGphIHx8IFxlY2hvIG5laW4gCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RBTkRfVE9SIHsgeD0kKAoJCWNtZCAgJiYgIGVjaG8gamEgIHx8ICBlY2hvIG5laW4KCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UQU5EX1RPUiB7CgkJeD0kKFxjbWQgJiYgXGVjaG8gamEgfHwgXGVjaG8gbmVpbiApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UQU5EX1RPUiB7IHg9JCgoCgkJY21kICAmJiAgZWNobyBqYSAgfHwgIGVjaG8gbmVpbgoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVEFORF9UT1IgewoJCXg9JCggKCBcY21kICYmIFxlY2hvIGphIHx8IFxlY2hvIG5laW4gKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVFNFTEVDVCgpIHsKCQlzZWxlY3QgIGZpbGUgIGluICAqOyAgZG8gIGVjaG8gICI8JGZpbGU+IiA7ICBicmVhayA7ICBkb25lCgl9CglpbmxpbmVfVFNFTEVDVCgpIHsKCQlzZWxlY3QgZmlsZSBpbiAqIAoJCWRvCgkJCVxlY2hvICI8JGZpbGU+IiAKCQkJXGJyZWFrIAoJCWRvbmUgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RTRUxFQ1QgeyB4PSQoCgkJc2VsZWN0ICBmaWxlICBpbiAgKjsgIGRvICBlY2hvICAiPCRmaWxlPiIgOyAgYnJlYWsgOyAgZG9uZQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RTRUxFQ1QgewoJCXg9JChzZWxlY3QgZmlsZSBpbiAqIDsgZG8gXGVjaG8gIjwkZmlsZT4iIDsgXGJyZWFrIDsgZG9uZSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UU0VMRUNUIHsgeD0kKCgKCQlzZWxlY3QgIGZpbGUgIGluICAqOyAgZG8gIGVjaG8gICI8JGZpbGU+IiA7ICBicmVhayA7ICBkb25lCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UU0VMRUNUIHsKCQl4PSQoICggc2VsZWN0IGZpbGUgaW4gKiA7IGRvIFxlY2hvICI8JGZpbGU+IiA7IFxicmVhayA7IGRvbmUgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVEZPUl9UVElNRSgpIHsKCQl0aW1lICBmb3IgIGkgIGluICB7MSwyLDN9ICA7ICBkbyAgZWNobyAgJGkgOyAgZG9uZQoJfQoJaW5saW5lX1RGT1JfVFRJTUUoKSB7CgkJdGltZSBmb3IgaSBpbiB7MSwyLDN9IAoJCWRvCgkJCVxlY2hvICRpIAoJCWRvbmUgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RGT1JfVFRJTUUgeyB4PSQoCgkJdGltZSAgZm9yICBpICBpbiAgezEsMiwzfSAgOyAgZG8gIGVjaG8gICRpIDsgIGRvbmUKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9URk9SX1RUSU1FIHsKCQl4PSQodGltZSBmb3IgaSBpbiB7MSwyLDN9IDsgZG8gXGVjaG8gJGkgOyBkb25lICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RGT1JfVFRJTUUgeyB4PSQoKAoJCXRpbWUgIGZvciAgaSAgaW4gIHsxLDIsM30gIDsgIGRvICBlY2hvICAkaSA7ICBkb25lCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9URk9SX1RUSU1FIHsKCQl4PSQoICggdGltZSBmb3IgaSBpbiB7MSwyLDN9IDsgZG8gXGVjaG8gJGkgOyBkb25lICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RDQVNFKCkgewoJCWNhc2UgICRmb28gIGluICAxKSAgZWNobyBlaW5zOyYgMikgZWNobyB6d2VpICA7fCAqKSBlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW47OyAgZXNhYwoJfQoJaW5saW5lX1RDQVNFKCkgewoJCWNhc2UgJGZvbyBpbgoJCSgxKQoJCQlcZWNobyBlaW5zIAoJCQk7JgoJCSgyKQoJCQlcZWNobyB6d2VpIAoJCQk7fAoJCSgqKQoJCQlcZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuIAoJCQk7OwoJCWVzYWMgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RDQVNFIHsgeD0kKAoJCWNhc2UgICRmb28gIGluICAxKSAgZWNobyBlaW5zOyYgMikgZWNobyB6d2VpICA7fCAqKSBlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW47OyAgZXNhYwoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RDQVNFIHsKCQl4PSQoY2FzZSAkZm9vIGluICgxKSBcZWNobyBlaW5zICA7JiAoMikgXGVjaG8gendlaSAgO3wgKCopIFxlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gIDs7IGVzYWMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVENBU0UgeyB4PSQoKAoJCWNhc2UgICRmb28gIGluICAxKSAgZWNobyBlaW5zOyYgMikgZWNobyB6d2VpICA7fCAqKSBlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW47OyAgZXNhYwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVENBU0UgewoJCXg9JCggKCBjYXNlICRmb28gaW4gKDEpIFxlY2hvIGVpbnMgIDsmICgyKSBcZWNobyB6d2VpICA7fCAoKikgXGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbiAgOzsgZXNhYyApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGKCkgewoJCWlmICAhICBbWyAgMSAgPSAgMSAgXV0gIDsgIHRoZW4gIGVjaG8gZWluczsgIGVsaWYgW1sgMSA9IDIgXV07IHRoZW4gZWNobyB6d2VpICA7ZWxzZSBlY2hvIGRyZWk7IGZpCgl9CglpbmxpbmVfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRigpIHsKCQlpZiAhIFtbIDEgPSAxIF1dIAoJCXRoZW4KCQkJXGVjaG8gZWlucyAKCQllbGlmIFtbIDEgPSAyIF1dIAoJCXRoZW4KCQkJXGVjaG8gendlaSAKCQllbHNlCgkJCVxlY2hvIGRyZWkgCgkJZmkgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYgeyB4PSQoCgkJaWYgICEgIFtbICAxICA9ICAxICBdXSAgOyAgdGhlbiAgZWNobyBlaW5zOyAgZWxpZiBbWyAxID0gMiBdXTsgdGhlbiBlY2hvIHp3ZWkgIDtlbHNlIGVjaG8gZHJlaTsgZmkKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGIHsKCQl4PSQoaWYgISBbWyAxID0gMSBdXSA7IHRoZW4gXGVjaG8gZWlucyA7IGVsaWYgW1sgMSA9IDIgXV0gOyB0aGVuIFxlY2hvIHp3ZWkgOyBlbHNlIFxlY2hvIGRyZWkgOyBmaSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGIHsgeD0kKCgKCQlpZiAgISAgW1sgIDEgID0gIDEgIF1dICA7ICB0aGVuICBlY2hvIGVpbnM7ICBlbGlmIFtbIDEgPSAyIF1dOyB0aGVuIGVjaG8gendlaSAgO2Vsc2UgZWNobyBkcmVpOyBmaQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRiB7CgkJeD0kKCAoIGlmICEgW1sgMSA9IDEgXV0gOyB0aGVuIFxlY2hvIGVpbnMgOyBlbGlmIFtbIDEgPSAyIF1dIDsgdGhlbiBcZWNobyB6d2VpIDsgZWxzZSBcZWNobyBkcmVpIDsgZmkgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVFdISUxFKCkgewoJCWk9MTsgd2hpbGUgKCggaSA8IDEwICkpOyBkbyBlY2hvICRpOyBsZXQgKytpOyBkb25lCgl9CglpbmxpbmVfVFdISUxFKCkgewoJCWk9MSAKCQl3aGlsZSB7CgkJCSAgICAgIFxcYnVpbHRpbiBsZXQgIiBpIDwgMTAgIiAKCQkgICAgICB9IAoJCWRvCgkJCVxlY2hvICRpIAoJCQlcbGV0ICsraSAKCQlkb25lIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UV0hJTEUgeyB4PSQoCgkJaT0xOyB3aGlsZSAoKCBpIDwgMTAgKSk7IGRvIGVjaG8gJGk7IGxldCArK2k7IGRvbmUKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UV0hJTEUgewoJCXg9JChpPTEgOyB3aGlsZSB7IFxcYnVpbHRpbiBsZXQgIiBpIDwgMTAgIiA7IH0gOyBkbyBcZWNobyAkaSA7IFxsZXQgKytpIDsgZG9uZSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UV0hJTEUgeyB4PSQoKAoJCWk9MTsgd2hpbGUgKCggaSA8IDEwICkpOyBkbyBlY2hvICRpOyBsZXQgKytpOyBkb25lCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UV0hJTEUgewoJCXg9JCggKCBpPTEgOyB3aGlsZSB7IFxcYnVpbHRpbiBsZXQgIiBpIDwgMTAgIiA7IH0gOyBkbyBcZWNobyAkaSA7IFxsZXQgKytpIDsgZG9uZSApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9UVU5USUwoKSB7CgkJaT0xMDsgdW50aWwgICgoICEtLWkgKSkgOyBkbyBlY2hvICRpOyBkb25lCgl9CglpbmxpbmVfVFVOVElMKCkgewoJCWk9MTAgCgkJdW50aWwgewoJCQkgICAgICBcXGJ1aWx0aW4gbGV0ICIgIS0taSAiIAoJCSAgICAgIH0gCgkJZG8KCQkJXGVjaG8gJGkgCgkJZG9uZSAKCX0gCglmdW5jdGlvbiBjb21zdWJfVFVOVElMIHsgeD0kKAoJCWk9MTA7IHVudGlsICAoKCAhLS1pICkpIDsgZG8gZWNobyAkaTsgZG9uZQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RVTlRJTCB7CgkJeD0kKGk9MTAgOyB1bnRpbCB7IFxcYnVpbHRpbiBsZXQgIiAhLS1pICIgOyB9IDsgZG8gXGVjaG8gJGkgOyBkb25lICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RVTlRJTCB7IHg9JCgoCgkJaT0xMDsgdW50aWwgICgoICEtLWkgKSkgOyBkbyBlY2hvICRpOyBkb25lCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UVU5USUwgewoJCXg9JCggKCBpPTEwIDsgdW50aWwgeyBcXGJ1aWx0aW4gbGV0ICIgIS0taSAiIDsgfSA7IGRvIFxlY2hvICRpIDsgZG9uZSApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9UQ09QUk9DKCkgewoJCWNhdCAgKiAgfCYgIGxzCgl9CglpbmxpbmVfVENPUFJPQygpIHsKCQlcY2F0ICogfCYgCgkJXGxzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UQ09QUk9DIHsgeD0kKAoJCWNhdCAgKiAgfCYgIGxzCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVENPUFJPQyB7CgkJeD0kKFxjYXQgKiB8JiAgXGxzICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RDT1BST0MgeyB4PSQoKAoJCWNhdCAgKiAgfCYgIGxzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UQ09QUk9DIHsKCQl4PSQoICggXGNhdCAqIHwmICBcbHMgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVEZVTkNUX1RCUkFDRV9UQVNZTkMoKSB7CgkJZnVuY3Rpb24gIGtvcm4gIHsgIGVjaG8gZWluczsgZWNobyB6d2VpIDsgIH0KCQlib3VybmUgICgpICB7ICBsb2dnZXIgKiAgJiAgfQoJfQoJaW5saW5lX1RGVU5DVF9UQlJBQ0VfVEFTWU5DKCkgewoJCWZ1bmN0aW9uIGtvcm4gewoJCQlcZWNobyBlaW5zIAoJCQlcZWNobyB6d2VpIAoJCX0gCgkJYm91cm5lKCkgewoJCQlcbG9nZ2VyICogJiAKCQl9IAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9URlVOQ1RfVEJSQUNFX1RBU1lOQyB7IHg9JCgKCQlmdW5jdGlvbiAga29ybiAgeyAgZWNobyBlaW5zOyBlY2hvIHp3ZWkgOyAgfQoJCWJvdXJuZSAgKCkgIHsgIGxvZ2dlciAqICAmICB9CgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVEZVTkNUX1RCUkFDRV9UQVNZTkMgewoJCXg9JChmdW5jdGlvbiBrb3JuIHsgXGVjaG8gZWlucyA7IFxlY2hvIHp3ZWkgOyB9IDsgYm91cm5lKCkgeyBcbG9nZ2VyICogJiAgfSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9URlVOQ1RfVEJSQUNFX1RBU1lOQyB7IHg9JCgoCgkJZnVuY3Rpb24gIGtvcm4gIHsgIGVjaG8gZWluczsgZWNobyB6d2VpIDsgIH0KCQlib3VybmUgICgpICB7ICBsb2dnZXIgKiAgJiAgfQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVEZVTkNUX1RCUkFDRV9UQVNZTkMgewoJCXg9JCggKCBmdW5jdGlvbiBrb3JuIHsgXGVjaG8gZWlucyA7IFxlY2hvIHp3ZWkgOyB9IDsgYm91cm5lKCkgeyBcbG9nZ2VyICogJiAgfSApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9JT1JFQURfSU9DQVQoKSB7CgkJdHIgIHggIHUgIDA8Zm9vICA+PmJhcgoJfQoJaW5saW5lX0lPUkVBRF9JT0NBVCgpIHsKCQlcdHIgeCB1IDxmb28gPj5iYXIgCgl9IAoJZnVuY3Rpb24gY29tc3ViX0lPUkVBRF9JT0NBVCB7IHg9JCgKCQl0ciAgeCAgdSAgMDxmb28gID4+YmFyCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfSU9SRUFEX0lPQ0FUIHsKCQl4PSQoXHRyIHggdSA8Zm9vID4+YmFyICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX0lPUkVBRF9JT0NBVCB7IHg9JCgoCgkJdHIgIHggIHUgIDA8Zm9vICA+PmJhcgoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfSU9SRUFEX0lPQ0FUIHsKCQl4PSQoICggXHRyIHggdSA8Zm9vID4+YmFyICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX0lPV1JJVEVfSU9DTE9CX0lPSEVSRV9ub0lPU0tJUCgpIHsKCQljYXQgID58YmFyICA8PCdFT0ZOJwoJCWZvbwoJRU9GTgoJfQoJaW5saW5lX0lPV1JJVEVfSU9DTE9CX0lPSEVSRV9ub0lPU0tJUCgpIHsKCQlcY2F0ID58YmFyIDw8IkVPRk4iIAoJCWZvbwoJRU9GTgoJCgl9IAoJZnVuY3Rpb24gY29tc3ViX0lPV1JJVEVfSU9DTE9CX0lPSEVSRV9ub0lPU0tJUCB7IHg9JCgKCQljYXQgID58YmFyICA8PCdFT0ZOJwoJCWZvbwoJRU9GTgoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX0lPV1JJVEVfSU9DTE9CX0lPSEVSRV9ub0lPU0tJUCB7CgkJeD0kKFxjYXQgPnxiYXIgPDwiRU9GTiIgCgkJZm9vCglFT0ZOCgkpIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9JT1dSSVRFX0lPQ0xPQl9JT0hFUkVfbm9JT1NLSVAgeyB4PSQoKAoJCWNhdCAgPnxiYXIgIDw8J0VPRk4nCgkJZm9vCglFT0ZOCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9JT1dSSVRFX0lPQ0xPQl9JT0hFUkVfbm9JT1NLSVAgewoJCXg9JCggKCBcY2F0ID58YmFyIDw8IkVPRk4iICkgfCBcdHIgdSB4IAoJCWZvbwoJRU9GTgoJKSAKCX0gCglpbmxpbmVfSU9XUklURV9ub0lPQ0xPQl9JT0hFUkVfSU9TS0lQKCkgewoJCWNhdCAgMT5iYXIgIDw8LUVPRkkKCQlmb28KCQlFT0ZJCgl9CglpbmxpbmVfSU9XUklURV9ub0lPQ0xPQl9JT0hFUkVfSU9TS0lQKCkgewoJCVxjYXQgPmJhciA8PC1FT0ZJIAoJZm9vCglFT0ZJCgkKCX0gCglmdW5jdGlvbiBjb21zdWJfSU9XUklURV9ub0lPQ0xPQl9JT0hFUkVfSU9TS0lQIHsgeD0kKAoJCWNhdCAgMT5iYXIgIDw8LUVPRkkKCQlmb28KCQlFT0ZJCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfSU9XUklURV9ub0lPQ0xPQl9JT0hFUkVfSU9TS0lQIHsKCQl4PSQoXGNhdCA+YmFyIDw8LUVPRkkgCglmb28KCUVPRkkKCSkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX0lPV1JJVEVfbm9JT0NMT0JfSU9IRVJFX0lPU0tJUCB7IHg9JCgoCgkJY2F0ICAxPmJhciAgPDwtRU9GSQoJCWZvbwoJCUVPRkkKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX0lPV1JJVEVfbm9JT0NMT0JfSU9IRVJFX0lPU0tJUCB7CgkJeD0kKCAoIFxjYXQgPmJhciA8PC1FT0ZJICkgfCBcdHIgdSB4IAoJZm9vCglFT0ZJCgkpIAoJfSAKCWlubGluZV9JT1JEV1JfSU9EVVAoKSB7CgkJc2ggIDE8Pi9kZXYvY29uc29sZSAgMDwmMSAgMj4mMQoJfQoJaW5saW5lX0lPUkRXUl9JT0RVUCgpIHsKCQlcc2ggMTw+L2Rldi9jb25zb2xlIDwmMSAyPiYxIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9JT1JEV1JfSU9EVVAgeyB4PSQoCgkJc2ggIDE8Pi9kZXYvY29uc29sZSAgMDwmMSAgMj4mMQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX0lPUkRXUl9JT0RVUCB7CgkJeD0kKFxzaCAxPD4vZGV2L2NvbnNvbGUgPCYxIDI+JjEgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfSU9SRFdSX0lPRFVQIHsgeD0kKCgKCQlzaCAgMTw+L2Rldi9jb25zb2xlICAwPCYxICAyPiYxCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9JT1JEV1JfSU9EVVAgewoJCXg9JCggKCBcc2ggMTw+L2Rldi9jb25zb2xlIDwmMSAyPiYxICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX0NPTVNVQl9FWFBSU1VCX0ZVTlNVQl9WQUxTVUIoKSB7CgkJZWNobyAkKHRydWUpICQoKDErIDIpKSAkeyAgOjt9ICR7fCBSRVBMWT14O30KCX0KCWlubGluZV9DT01TVUJfRVhQUlNVQl9GVU5TVUJfVkFMU1VCKCkgewoJCVxlY2hvICQoXHRydWUgKSAkKCgxKyAyKSkgJHsgXDogO30gJHt8UkVQTFk9eCA7fSAKCX0gCglmdW5jdGlvbiBjb21zdWJfQ09NU1VCX0VYUFJTVUJfRlVOU1VCX1ZBTFNVQiB7IHg9JCgKCQllY2hvICQodHJ1ZSkgJCgoMSsgMikpICR7ICA6O30gJHt8IFJFUExZPXg7fQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX0NPTVNVQl9FWFBSU1VCX0ZVTlNVQl9WQUxTVUIgewoJCXg9JChcZWNobyAkKFx0cnVlICkgJCgoMSsgMikpICR7IFw6IDt9ICR7fFJFUExZPXggO30gKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfQ09NU1VCX0VYUFJTVUJfRlVOU1VCX1ZBTFNVQiB7IHg9JCgoCgkJZWNobyAkKHRydWUpICQoKDErIDIpKSAkeyAgOjt9ICR7fCBSRVBMWT14O30KCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX0NPTVNVQl9FWFBSU1VCX0ZVTlNVQl9WQUxTVUIgewoJCXg9JCggKCBcZWNobyAkKFx0cnVlICkgJCgoMSsgMikpICR7IFw6IDt9ICR7fFJFUExZPXggO30gKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfUUNIQVJfT1FVT1RFX0NRVU9URSgpIHsKCQllY2hvIGZvXG9iXCJhXGByXCdiXCRhegoJCWVjaG8gImZvXG9iXCJhXGByXCdiXCRheiIKCQllY2hvICdmb1xvYlwiYVxgcidcJydiXCRheicKCX0KCWlubGluZV9RQ0hBUl9PUVVPVEVfQ1FVT1RFKCkgewoJCVxlY2hvIGZvXG9iXCJhXGByXCdiXCRheiAKCQlcZWNobyAiZm9cb2JcImFcYHJcJ2JcJGF6IiAKCQlcZWNobyAiZm9cXG9iXFxcImFcXFxgciJcJyJiXFxcJGF6IiAKCX0gCglmdW5jdGlvbiBjb21zdWJfUUNIQVJfT1FVT1RFX0NRVU9URSB7IHg9JCgKCQllY2hvIGZvXG9iXCJhXGByXCdiXCRhegoJCWVjaG8gImZvXG9iXCJhXGByXCdiXCRheiIKCQllY2hvICdmb1xvYlwiYVxgcidcJydiXCRheicKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9RQ0hBUl9PUVVPVEVfQ1FVT1RFIHsKCQl4PSQoXGVjaG8gZm9cb2JcImFcYHJcJ2JcJGF6IDsgXGVjaG8gImZvXG9iXCJhXGByXCdiXCRheiIgOyBcZWNobyAiZm9cXG9iXFxcImFcXFxgciJcJyJiXFxcJGF6IiApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9RQ0hBUl9PUVVPVEVfQ1FVT1RFIHsgeD0kKCgKCQllY2hvIGZvXG9iXCJhXGByXCdiXCRhegoJCWVjaG8gImZvXG9iXCJhXGByXCdiXCRheiIKCQllY2hvICdmb1xvYlwiYVxgcidcJydiXCRheicKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1FDSEFSX09RVU9URV9DUVVPVEUgewoJCXg9JCggKCBcZWNobyBmb1xvYlwiYVxgclwnYlwkYXogOyBcZWNobyAiZm9cb2JcImFcYHJcJ2JcJGF6IiA7IFxlY2hvICJmb1xcb2JcXFwiYVxcXGByIlwnImJcXFwkYXoiICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX09TVUJTVF9DU1VCU1RfT1BBVF9TUEFUX0NQQVQoKSB7CgkJW1sgJHtmb28jYmxcKHVcKWJ9ID0gQChiYXJ8YmF6KSBdXQoJfQoJaW5saW5lX09TVUJTVF9DU1VCU1RfT1BBVF9TUEFUX0NQQVQoKSB7CgkJW1sgJHtmb28jYmxcKHVcKWJ9ID0gQChiYXJ8YmF6KSBdXSAKCX0gCglmdW5jdGlvbiBjb21zdWJfT1NVQlNUX0NTVUJTVF9PUEFUX1NQQVRfQ1BBVCB7IHg9JCgKCQlbWyAke2ZvbyNibFwodVwpYn0gPSBAKGJhcnxiYXopIF1dCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfT1NVQlNUX0NTVUJTVF9PUEFUX1NQQVRfQ1BBVCB7CgkJeD0kKFtbICR7Zm9vI2JsXCh1XClifSA9IEAoYmFyfGJheikgXV0gKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfT1NVQlNUX0NTVUJTVF9PUEFUX1NQQVRfQ1BBVCB7IHg9JCgoCgkJW1sgJHtmb28jYmxcKHVcKWJ9ID0gQChiYXJ8YmF6KSBdXQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfT1NVQlNUX0NTVUJTVF9PUEFUX1NQQVRfQ1BBVCB7CgkJeD0kKCAoIFtbICR7Zm9vI2JsXCh1XClifSA9IEAoYmFyfGJheikgXV0gKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfaGVyZWRvY19jbG9zZWQoKSB7CgkJeD0kKGNhdCA8PEVPRk4KCQlub3RlIHRoZXJlIG11c3QgYmUgbm8gc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApCglFT0ZOKTsgZWNobyAkeAoJfQoJaW5saW5lX2hlcmVkb2NfY2xvc2VkKCkgewoJCXg9JChcY2F0IDw8RU9GTiAKCQlub3RlIHRoZXJlIG11c3QgYmUgbm8gc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApCglFT0ZOCgkpIAoJCVxlY2hvICR4IAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9oZXJlZG9jX2Nsb3NlZCB7IHg9JCgKCQl4PSQoY2F0IDw8RU9GTgoJCW5vdGUgdGhlcmUgbXVzdCBiZSBubyBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkKCUVPRk4pOyBlY2hvICR4CgkpOyB9CglmdW5jdGlvbiBjb21zdWJfaGVyZWRvY19jbG9zZWQgewoJCXg9JCh4PSQoXGNhdCA8PEVPRk4gCgkJbm90ZSB0aGVyZSBtdXN0IGJlIG5vIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKQoJRU9GTgoJKSA7IFxlY2hvICR4ICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX2hlcmVkb2NfY2xvc2VkIHsgeD0kKCgKCQl4PSQoY2F0IDw8RU9GTgoJCW5vdGUgdGhlcmUgbXVzdCBiZSBubyBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkKCUVPRk4pOyBlY2hvICR4CgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9oZXJlZG9jX2Nsb3NlZCB7CgkJeD0kKCAoIHg9JChcY2F0IDw8RU9GTiAKCQlub3RlIHRoZXJlIG11c3QgYmUgbm8gc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApCglFT0ZOCgkpIDsgXGVjaG8gJHggKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfaGVyZWRvY19zcGFjZSgpIHsKCQl4PSQoY2F0IDw8RU9GTlwgCgkJbm90ZSB0aGUgc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApIGlzIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGhlcmUgZG9jdW1lbnQgbWFya2VyCglFT0ZOICk7IGVjaG8gJHgKCX0KCWlubGluZV9oZXJlZG9jX3NwYWNlKCkgewoJCXg9JChcY2F0IDw8RU9GTlwgIAoJCW5vdGUgdGhlIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKSBpcyBhY3R1YWxseSBwYXJ0IG9mIHRoZSBoZXJlIGRvY3VtZW50IG1hcmtlcgoJRU9GTiAKCSkgCgkJXGVjaG8gJHggCgl9IAoJZnVuY3Rpb24gY29tc3ViX2hlcmVkb2Nfc3BhY2UgeyB4PSQoCgkJeD0kKGNhdCA8PEVPRk5cIAoJCW5vdGUgdGhlIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKSBpcyBhY3R1YWxseSBwYXJ0IG9mIHRoZSBoZXJlIGRvY3VtZW50IG1hcmtlcgoJRU9GTiApOyBlY2hvICR4CgkpOyB9CglmdW5jdGlvbiBjb21zdWJfaGVyZWRvY19zcGFjZSB7CgkJeD0kKHg9JChcY2F0IDw8RU9GTlwgIAoJCW5vdGUgdGhlIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKSBpcyBhY3R1YWxseSBwYXJ0IG9mIHRoZSBoZXJlIGRvY3VtZW50IG1hcmtlcgoJRU9GTiAKCSkgOyBcZWNobyAkeCApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9oZXJlZG9jX3NwYWNlIHsgeD0kKCgKCQl4PSQoY2F0IDw8RU9GTlwgCgkJbm90ZSB0aGUgc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApIGlzIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGhlcmUgZG9jdW1lbnQgbWFya2VyCglFT0ZOICk7IGVjaG8gJHgKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX2hlcmVkb2Nfc3BhY2UgewoJCXg9JCggKCB4PSQoXGNhdCA8PEVPRk5cICAKCQlub3RlIHRoZSBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkgaXMgYWN0dWFsbHkgcGFydCBvZiB0aGUgaGVyZSBkb2N1bWVudCBtYXJrZXIKCUVPRk4gCgkpIDsgXGVjaG8gJHggKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfcGF0Y2hfbW90ZCgpIHsKCQl4PSQoc3lzY3RsIC1uIGtlcm4udmVyc2lvbiB8IHNlZCAxcSkKCQlbWyAtcyAvZXRjL21vdGQgJiYgIiQoW1sgIiQoaGVhZCAtMSAvZXRjL21vdGQpIiAhPSAkeCBdXSAmJiBcCgkJICAgIGVkIC1zIC9ldGMvbW90ZCAyPiYxIDw8LUVPRgoJCQkxLC9eXCQvZAoJCQkwYQoJCQkJJHgKCQkKCQkJLgoJCQl3cQoJCUVPRikiID0gQCg/KSBdXSAmJiBybSAtZiAvZXRjL21vdGQKCQlpZiBbWyAhIC1zIC9ldGMvbW90ZCBdXTsgdGhlbgoJCQlpbnN0YWxsIC1jIC1vIHJvb3QgLWcgd2hlZWwgLW0gNjY0IC9kZXYvbnVsbCAvZXRjL21vdGQKCQkJcHJpbnQgLS0gIiR4XG4iID4vZXRjL21vdGQKCQlmaQoJfQoJaW5saW5lX3BhdGNoX21vdGQoKSB7CgkJeD0kKFxzeXNjdGwgLW4ga2Vybi52ZXJzaW9uIHwgXHNlZCAxcSApIAoJCVtbIC1zIC9ldGMvbW90ZCAmJiAiJChbWyAiJChcaGVhZCAtMSAvZXRjL21vdGQgKSIgIT0gJHggXV0gJiYgXGVkIC1zIC9ldGMvbW90ZCAyPiYxIDw8LUVPRiAKCTEsL15cJC9kCgkwYQoJJHgKCQoJLgoJd3EKCUVPRgoJKSIgPSBAKD8pIF1dICYmIFxybSAtZiAvZXRjL21vdGQgCgkJaWYgW1sgISAtcyAvZXRjL21vdGQgXV0gCgkJdGhlbgoJCQlcaW5zdGFsbCAtYyAtbyByb290IC1nIHdoZWVsIC1tIDY2NCAvZGV2L251bGwgL2V0Yy9tb3RkIAoJCQlccHJpbnQgLS0gIiR4XG4iID4vZXRjL21vdGQgCgkJZmkgCgl9IAoJZnVuY3Rpb24gY29tc3ViX3BhdGNoX21vdGQgeyB4PSQoCgkJeD0kKHN5c2N0bCAtbiBrZXJuLnZlcnNpb24gfCBzZWQgMXEpCgkJW1sgLXMgL2V0Yy9tb3RkICYmICIkKFtbICIkKGhlYWQgLTEgL2V0Yy9tb3RkKSIgIT0gJHggXV0gJiYgXAoJCSAgICBlZCAtcyAvZXRjL21vdGQgMj4mMSA8PC1FT0YKCQkJMSwvXlwkL2QKCQkJMGEKCQkJCSR4CgkJCgkJCS4KCQkJd3EKCQlFT0YpIiA9IEAoPykgXV0gJiYgcm0gLWYgL2V0Yy9tb3RkCgkJaWYgW1sgISAtcyAvZXRjL21vdGQgXV07IHRoZW4KCQkJaW5zdGFsbCAtYyAtbyByb290IC1nIHdoZWVsIC1tIDY2NCAvZGV2L251bGwgL2V0Yy9tb3RkCgkJCXByaW50IC0tICIkeFxuIiA+L2V0Yy9tb3RkCgkJZmkKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9wYXRjaF9tb3RkIHsKCQl4PSQoeD0kKFxzeXNjdGwgLW4ga2Vybi52ZXJzaW9uIHwgXHNlZCAxcSApIDsgW1sgLXMgL2V0Yy9tb3RkICYmICIkKFtbICIkKFxoZWFkIC0xIC9ldGMvbW90ZCApIiAhPSAkeCBdXSAmJiBcZWQgLXMgL2V0Yy9tb3RkIDI+JjEgPDwtRU9GIAoJMSwvXlwkL2QKCTBhCgkkeAoJCgkuCgl3cQoJRU9GCgkpIiA9IEAoPykgXV0gJiYgXHJtIC1mIC9ldGMvbW90ZCA7IGlmIFtbICEgLXMgL2V0Yy9tb3RkIF1dIDsgdGhlbiBcaW5zdGFsbCAtYyAtbyByb290IC1nIHdoZWVsIC1tIDY2NCAvZGV2L251bGwgL2V0Yy9tb3RkIDsgXHByaW50IC0tICIkeFxuIiA+L2V0Yy9tb3RkIDsgZmkgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfcGF0Y2hfbW90ZCB7IHg9JCgoCgkJeD0kKHN5c2N0bCAtbiBrZXJuLnZlcnNpb24gfCBzZWQgMXEpCgkJW1sgLXMgL2V0Yy9tb3RkICYmICIkKFtbICIkKGhlYWQgLTEgL2V0Yy9tb3RkKSIgIT0gJHggXV0gJiYgXAoJCSAgICBlZCAtcyAvZXRjL21vdGQgMj4mMSA8PC1FT0YKCQkJMSwvXlwkL2QKCQkJMGEKCQkJCSR4CgkJCgkJCS4KCQkJd3EKCQlFT0YpIiA9IEAoPykgXV0gJiYgcm0gLWYgL2V0Yy9tb3RkCgkJaWYgW1sgISAtcyAvZXRjL21vdGQgXV07IHRoZW4KCQkJaW5zdGFsbCAtYyAtbyByb290IC1nIHdoZWVsIC1tIDY2NCAvZGV2L251bGwgL2V0Yy9tb3RkCgkJCXByaW50IC0tICIkeFxuIiA+L2V0Yy9tb3RkCgkJZmkKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX3BhdGNoX21vdGQgewoJCXg9JCggKCB4PSQoXHN5c2N0bCAtbiBrZXJuLnZlcnNpb24gfCBcc2VkIDFxICkgOyBbWyAtcyAvZXRjL21vdGQgJiYgIiQoW1sgIiQoXGhlYWQgLTEgL2V0Yy9tb3RkICkiICE9ICR4IF1dICYmIFxlZCAtcyAvZXRjL21vdGQgMj4mMSA8PC1FT0YgCgkxLC9eXCQvZAoJMGEKCSR4CgkKCS4KCXdxCglFT0YKCSkiID0gQCg/KSBdXSAmJiBccm0gLWYgL2V0Yy9tb3RkIDsgaWYgW1sgISAtcyAvZXRjL21vdGQgXV0gOyB0aGVuIFxpbnN0YWxsIC1jIC1vIHJvb3QgLWcgd2hlZWwgLW0gNjY0IC9kZXYvbnVsbCAvZXRjL21vdGQgOyBccHJpbnQgLS0gIiR4XG4iID4vZXRjL21vdGQgOyBmaSApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV93ZGFycmFzc2lnbigpIHsKCQljYXNlIHggaW4KCQl4KSBhKz1iOyBjKz0oZCBlKQoJCWVzYWMKCX0KCWlubGluZV93ZGFycmFzc2lnbigpIHsKCQljYXNlIHggaW4KCQkoeCkKCQkJYSs9YiAKCQkJXFxidWlsdGluIHNldCAtQSBjKyAtLSBkIGUgCgkJCTs7CgkJZXNhYyAKCX0gCglmdW5jdGlvbiBjb21zdWJfd2RhcnJhc3NpZ24geyB4PSQoCgkJY2FzZSB4IGluCgkJeCkgYSs9YjsgYys9KGQgZSkKCQllc2FjCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfd2RhcnJhc3NpZ24gewoJCXg9JChjYXNlIHggaW4gKHgpIGErPWIgOyBcXGJ1aWx0aW4gc2V0IC1BIGMrIC0tIGQgZSAgOzsgZXNhYyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF93ZGFycmFzc2lnbiB7IHg9JCgoCgkJY2FzZSB4IGluCgkJeCkgYSs9YjsgYys9KGQgZSkKCQllc2FjCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF93ZGFycmFzc2lnbiB7CgkJeD0kKCAoIGNhc2UgeCBpbiAoeCkgYSs9YiA7IFxcYnVpbHRpbiBzZXQgLUEgYysgLS0gZCBlICA7OyBlc2FjICkgfCBcdHIgdSB4ICkgCgl9IAotLS0KbmFtZTogY29tc3ViLXRvcnR1cmUtaW8KZGVzY3JpcHRpb246CglDaGVjayB0aGUgdHJlZSBkdW1wIGZ1bmN0aW9ucyB3b3JrIGNvcnJlY3RseSB3aXRoIEkvTyByZWRpcmVjdGlvbgpzdGRpbjoKCWlmIFtbIC16ICRfX3Byb2duYW1lIF1dOyB0aGVuIGVjaG8gPiYyIGNhbGwgbWUgd2l0aCBfX3Byb2duYW1lOyBleGl0IDE7IGZpCgl3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KCQlpZiBbWyAkbGluZSA9ICcjMScgXV07IHRoZW4KCQkJbGFzdGY9MAoJCQljb250aW51ZQoJCWVsaWYgW1sgJGxpbmUgPSBFT0ZOKiBdXTsgdGhlbgoJCQlmYm9keT0kZmJvZHkkJ1xuJyRsaW5lCgkJCWNvbnRpbnVlCgkJZWxpZiBbWyAkbGluZSAhPSAnIycqIF1dOyB0aGVuCgkJCWZib2R5PSRmYm9keSQnXG5cdCckbGluZQoJCQljb250aW51ZQoJCWZpCgkJaWYgKCggbGFzdGYgKSk7IHRoZW4KCQkJeD0iaW5saW5lXyR7bmV4dGZ9KCkgeyIkZmJvZHkkJ1xufVxuJwoJCQlwcmludCAtbnIgLS0gIiR4IgoJCQlwcmludCAtciAtLSAiJHt4fXR5cGVzZXQgLWYgaW5saW5lXyRuZXh0ZiIgfCAiJF9fcHJvZ25hbWUiCgkJCXg9ImZ1bmN0aW9uIGNvbXN1Yl8kbmV4dGYgeyB4PVwkKCIkZmJvZHkkJ1xuKTsgfVxuJwoJCQlwcmludCAtbnIgLS0gIiR4IgoJCQlwcmludCAtciAtLSAiJHt4fXR5cGVzZXQgLWYgY29tc3ViXyRuZXh0ZiIgfCAiJF9fcHJvZ25hbWUiCgkJCXg9ImZ1bmN0aW9uIHJlcmVhZF8kbmV4dGYgeyB4PVwkKCgiJGZib2R5JCdcbil8dHIgdSB4KTsgfVxuJwoJCQlwcmludCAtbnIgLS0gIiR4IgoJCQlwcmludCAtciAtLSAiJHt4fXR5cGVzZXQgLWYgcmVyZWFkXyRuZXh0ZiIgfCAiJF9fcHJvZ25hbWUiCgkJZmkKCQlsYXN0Zj0xCgkJZmJvZHk9CgkJbmV4dGY9JHtsaW5lIz99Cglkb25lIDw8J0VPRCcKCSMxCgkjVENPTQoJdmFyYT0xICB2YXJiPScyICAzJyAgY21kICBhcmcxICAkYXJnMiAgIiRhcmczICA0IiA+JjMKCSNUUEFSRU5fVFBJUEVfVExJU1QKCShlY2hvICRmb28gIHwgIHRyIC1kYyAwLTkgPiYzOyBlY2hvID4mMykgPiYzCgkjVEFORF9UT1IKCWNtZCAgPiYzICYmICA+JjMgZWNobyBqYSAgfHwgIGVjaG8gPiYzIG5laW4KCSNUU0VMRUNUCglzZWxlY3QgIGZpbGUgIGluICAqOyAgZG8gIGVjaG8gICI8JGZpbGU+IiA7ICBicmVhayA+JjMgOyAgZG9uZSA+JjMKCSNURk9SX1RUSU1FCglmb3IgIGkgIGluICB7MSwyLDN9ICA7ICBkbyAgdGltZSAgPiYzIGVjaG8gICRpIDsgIGRvbmUgPiYzCgkjVENBU0UKCWNhc2UgICRmb28gIGluICAxKSAgZWNobyBlaW5zID4mMzsmIDIpIGVjaG8gendlaSA+JjMgIDt8ICopIGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbiA+JjM7OyAgZXNhYyA+JjMKCSNUSUZfVEJBTkdfVERCUkFDS0VUX1RFTElGCglpZiAgISAgW1sgIDEgID0gIDEgIF1dICA+JjMgOyAgdGhlbiAgZWNobyBlaW5zOyAgZWxpZiBbWyAxID0gMiBdXSA+JjM7IHRoZW4gZWNobyB6d2VpICA7ZWxzZSBlY2hvIGRyZWk7IGZpID4mMwoJI1RXSElMRQoJaT0xOyB3aGlsZSAoKCBpIDwgMTAgKSkgPiYzOyBkbyBlY2hvICRpOyBsZXQgKytpOyBkb25lID4mMwoJI1RVTlRJTAoJaT0xMDsgdW50aWwgICgoICEtLWkgKSkgPiYzIDsgZG8gZWNobyAkaTsgZG9uZSA+JjMKCSNUQ09QUk9DCgljYXQgICogID4mMyB8JiAgPiYzIGxzCgkjVEZVTkNUX1RCUkFDRV9UQVNZTkMKCWZ1bmN0aW9uICBrb3JuICB7ICBlY2hvIGVpbnM7IGVjaG8gPiYzIHp3ZWkgOyAgfQoJYm91cm5lICAoKSAgeyAgbG9nZ2VyICogID4mMyAmICB9CgkjQ09NU1VCX0VYUFJTVUIKCWVjaG8gJCh0cnVlID4mMykgJCgoMSsgMikpCgkjMAoJRU9ECmV4cGVjdGVkLXN0ZG91dDoKCWlubGluZV9UQ09NKCkgewoJCXZhcmE9MSAgdmFyYj0nMiAgMycgIGNtZCAgYXJnMSAgJGFyZzIgICIkYXJnMyAgNCIgPiYzCgl9CglpbmxpbmVfVENPTSgpIHsKCQl2YXJhPTEgdmFyYj0iMiAgMyIgXGNtZCBhcmcxICRhcmcyICIkYXJnMyAgNCIgPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UQ09NIHsgeD0kKAoJCXZhcmE9MSAgdmFyYj0nMiAgMycgIGNtZCAgYXJnMSAgJGFyZzIgICIkYXJnMyAgNCIgPiYzCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVENPTSB7CgkJeD0kKHZhcmE9MSB2YXJiPSIyICAzIiBcY21kIGFyZzEgJGFyZzIgIiRhcmczICA0IiA+JjMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVENPTSB7IHg9JCgoCgkJdmFyYT0xICB2YXJiPScyICAzJyAgY21kICBhcmcxICAkYXJnMiAgIiRhcmczICA0IiA+JjMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RDT00gewoJCXg9JCggKCB2YXJhPTEgdmFyYj0iMiAgMyIgXGNtZCBhcmcxICRhcmcyICIkYXJnMyAgNCIgPiYzICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RQQVJFTl9UUElQRV9UTElTVCgpIHsKCQkoZWNobyAkZm9vICB8ICB0ciAtZGMgMC05ID4mMzsgZWNobyA+JjMpID4mMwoJfQoJaW5saW5lX1RQQVJFTl9UUElQRV9UTElTVCgpIHsKCQkoIFxlY2hvICRmb28gfCBcdHIgLWRjIDAtOSA+JjMgCgkJICBcZWNobyA+JjMgKSA+JjMgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RQQVJFTl9UUElQRV9UTElTVCB7IHg9JCgKCQkoZWNobyAkZm9vICB8ICB0ciAtZGMgMC05ID4mMzsgZWNobyA+JjMpID4mMwoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RQQVJFTl9UUElQRV9UTElTVCB7CgkJeD0kKCAoIFxlY2hvICRmb28gfCBcdHIgLWRjIDAtOSA+JjMgOyBcZWNobyA+JjMgKSA+JjMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVFBBUkVOX1RQSVBFX1RMSVNUIHsgeD0kKCgKCQkoZWNobyAkZm9vICB8ICB0ciAtZGMgMC05ID4mMzsgZWNobyA+JjMpID4mMwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVFBBUkVOX1RQSVBFX1RMSVNUIHsKCQl4PSQoICggKCBcZWNobyAkZm9vIHwgXHRyIC1kYyAwLTkgPiYzIDsgXGVjaG8gPiYzICkgPiYzICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RBTkRfVE9SKCkgewoJCWNtZCAgPiYzICYmICA+JjMgZWNobyBqYSAgfHwgIGVjaG8gPiYzIG5laW4KCX0KCWlubGluZV9UQU5EX1RPUigpIHsKCQlcY21kID4mMyAmJiBcZWNobyBqYSA+JjMgfHwgXGVjaG8gbmVpbiA+JjMgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RBTkRfVE9SIHsgeD0kKAoJCWNtZCAgPiYzICYmICA+JjMgZWNobyBqYSAgfHwgIGVjaG8gPiYzIG5laW4KCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UQU5EX1RPUiB7CgkJeD0kKFxjbWQgPiYzICYmIFxlY2hvIGphID4mMyB8fCBcZWNobyBuZWluID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UQU5EX1RPUiB7IHg9JCgoCgkJY21kICA+JjMgJiYgID4mMyBlY2hvIGphICB8fCAgZWNobyA+JjMgbmVpbgoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVEFORF9UT1IgewoJCXg9JCggKCBcY21kID4mMyAmJiBcZWNobyBqYSA+JjMgfHwgXGVjaG8gbmVpbiA+JjMgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVFNFTEVDVCgpIHsKCQlzZWxlY3QgIGZpbGUgIGluICAqOyAgZG8gIGVjaG8gICI8JGZpbGU+IiA7ICBicmVhayA+JjMgOyAgZG9uZSA+JjMKCX0KCWlubGluZV9UU0VMRUNUKCkgewoJCXNlbGVjdCBmaWxlIGluICogCgkJZG8KCQkJXGVjaG8gIjwkZmlsZT4iIAoJCQlcYnJlYWsgPiYzIAoJCWRvbmUgPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UU0VMRUNUIHsgeD0kKAoJCXNlbGVjdCAgZmlsZSAgaW4gICo7ICBkbyAgZWNobyAgIjwkZmlsZT4iIDsgIGJyZWFrID4mMyA7ICBkb25lID4mMwoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RTRUxFQ1QgewoJCXg9JChzZWxlY3QgZmlsZSBpbiAqIDsgZG8gXGVjaG8gIjwkZmlsZT4iIDsgXGJyZWFrID4mMyA7IGRvbmUgPiYzICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RTRUxFQ1QgeyB4PSQoKAoJCXNlbGVjdCAgZmlsZSAgaW4gICo7ICBkbyAgZWNobyAgIjwkZmlsZT4iIDsgIGJyZWFrID4mMyA7ICBkb25lID4mMwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVFNFTEVDVCB7CgkJeD0kKCAoIHNlbGVjdCBmaWxlIGluICogOyBkbyBcZWNobyAiPCRmaWxlPiIgOyBcYnJlYWsgPiYzIDsgZG9uZSA+JjMgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVEZPUl9UVElNRSgpIHsKCQlmb3IgIGkgIGluICB7MSwyLDN9ICA7ICBkbyAgdGltZSAgPiYzIGVjaG8gICRpIDsgIGRvbmUgPiYzCgl9CglpbmxpbmVfVEZPUl9UVElNRSgpIHsKCQlmb3IgaSBpbiB7MSwyLDN9IAoJCWRvCgkJCXRpbWUgXGVjaG8gJGkgPiYzIAoJCWRvbmUgPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9URk9SX1RUSU1FIHsgeD0kKAoJCWZvciAgaSAgaW4gIHsxLDIsM30gIDsgIGRvICB0aW1lICA+JjMgZWNobyAgJGkgOyAgZG9uZSA+JjMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9URk9SX1RUSU1FIHsKCQl4PSQoZm9yIGkgaW4gezEsMiwzfSA7IGRvIHRpbWUgXGVjaG8gJGkgPiYzIDsgZG9uZSA+JjMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVEZPUl9UVElNRSB7IHg9JCgoCgkJZm9yICBpICBpbiAgezEsMiwzfSAgOyAgZG8gIHRpbWUgID4mMyBlY2hvICAkaSA7ICBkb25lID4mMwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVEZPUl9UVElNRSB7CgkJeD0kKCAoIGZvciBpIGluIHsxLDIsM30gOyBkbyB0aW1lIFxlY2hvICRpID4mMyA7IGRvbmUgPiYzICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RDQVNFKCkgewoJCWNhc2UgICRmb28gIGluICAxKSAgZWNobyBlaW5zID4mMzsmIDIpIGVjaG8gendlaSA+JjMgIDt8ICopIGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbiA+JjM7OyAgZXNhYyA+JjMKCX0KCWlubGluZV9UQ0FTRSgpIHsKCQljYXNlICRmb28gaW4KCQkoMSkKCQkJXGVjaG8gZWlucyA+JjMgCgkJCTsmCgkJKDIpCgkJCVxlY2hvIHp3ZWkgPiYzIAoJCQk7fAoJCSgqKQoJCQlcZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuID4mMyAKCQkJOzsKCQllc2FjID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVENBU0UgeyB4PSQoCgkJY2FzZSAgJGZvbyAgaW4gIDEpICBlY2hvIGVpbnMgPiYzOyYgMikgZWNobyB6d2VpID4mMyAgO3wgKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuID4mMzs7ICBlc2FjID4mMwoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RDQVNFIHsKCQl4PSQoY2FzZSAkZm9vIGluICgxKSBcZWNobyBlaW5zID4mMyAgOyYgKDIpIFxlY2hvIHp3ZWkgPiYzICA7fCAoKikgXGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbiA+JjMgIDs7IGVzYWMgPiYzICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RDQVNFIHsgeD0kKCgKCQljYXNlICAkZm9vICBpbiAgMSkgIGVjaG8gZWlucyA+JjM7JiAyKSBlY2hvIHp3ZWkgPiYzICA7fCAqKSBlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gPiYzOzsgIGVzYWMgPiYzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UQ0FTRSB7CgkJeD0kKCAoIGNhc2UgJGZvbyBpbiAoMSkgXGVjaG8gZWlucyA+JjMgIDsmICgyKSBcZWNobyB6d2VpID4mMyAgO3wgKCopIFxlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gPiYzICA7OyBlc2FjID4mMyApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGKCkgewoJCWlmICAhICBbWyAgMSAgPSAgMSAgXV0gID4mMyA7ICB0aGVuICBlY2hvIGVpbnM7ICBlbGlmIFtbIDEgPSAyIF1dID4mMzsgdGhlbiBlY2hvIHp3ZWkgIDtlbHNlIGVjaG8gZHJlaTsgZmkgPiYzCgl9CglpbmxpbmVfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRigpIHsKCQlpZiAhIFtbIDEgPSAxIF1dID4mMyAKCQl0aGVuCgkJCVxlY2hvIGVpbnMgCgkJZWxpZiBbWyAxID0gMiBdXSA+JjMgCgkJdGhlbgoJCQlcZWNobyB6d2VpIAoJCWVsc2UKCQkJXGVjaG8gZHJlaSAKCQlmaSA+JjMgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYgeyB4PSQoCgkJaWYgICEgIFtbICAxICA9ICAxICBdXSAgPiYzIDsgIHRoZW4gIGVjaG8gZWluczsgIGVsaWYgW1sgMSA9IDIgXV0gPiYzOyB0aGVuIGVjaG8gendlaSAgO2Vsc2UgZWNobyBkcmVpOyBmaSA+JjMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGIHsKCQl4PSQoaWYgISBbWyAxID0gMSBdXSA+JjMgOyB0aGVuIFxlY2hvIGVpbnMgOyBlbGlmIFtbIDEgPSAyIF1dID4mMyA7IHRoZW4gXGVjaG8gendlaSA7IGVsc2UgXGVjaG8gZHJlaSA7IGZpID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGIHsgeD0kKCgKCQlpZiAgISAgW1sgIDEgID0gIDEgIF1dICA+JjMgOyAgdGhlbiAgZWNobyBlaW5zOyAgZWxpZiBbWyAxID0gMiBdXSA+JjM7IHRoZW4gZWNobyB6d2VpICA7ZWxzZSBlY2hvIGRyZWk7IGZpID4mMwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRiB7CgkJeD0kKCAoIGlmICEgW1sgMSA9IDEgXV0gPiYzIDsgdGhlbiBcZWNobyBlaW5zIDsgZWxpZiBbWyAxID0gMiBdXSA+JjMgOyB0aGVuIFxlY2hvIHp3ZWkgOyBlbHNlIFxlY2hvIGRyZWkgOyBmaSA+JjMgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVFdISUxFKCkgewoJCWk9MTsgd2hpbGUgKCggaSA8IDEwICkpID4mMzsgZG8gZWNobyAkaTsgbGV0ICsraTsgZG9uZSA+JjMKCX0KCWlubGluZV9UV0hJTEUoKSB7CgkJaT0xIAoJCXdoaWxlIHsKCQkJICAgICAgXFxidWlsdGluIGxldCAiIGkgPCAxMCAiIAoJCSAgICAgIH0gPiYzIAoJCWRvCgkJCVxlY2hvICRpIAoJCQlcbGV0ICsraSAKCQlkb25lID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVFdISUxFIHsgeD0kKAoJCWk9MTsgd2hpbGUgKCggaSA8IDEwICkpID4mMzsgZG8gZWNobyAkaTsgbGV0ICsraTsgZG9uZSA+JjMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UV0hJTEUgewoJCXg9JChpPTEgOyB3aGlsZSB7IFxcYnVpbHRpbiBsZXQgIiBpIDwgMTAgIiA7IH0gPiYzIDsgZG8gXGVjaG8gJGkgOyBcbGV0ICsraSA7IGRvbmUgPiYzICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RXSElMRSB7IHg9JCgoCgkJaT0xOyB3aGlsZSAoKCBpIDwgMTAgKSkgPiYzOyBkbyBlY2hvICRpOyBsZXQgKytpOyBkb25lID4mMwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVFdISUxFIHsKCQl4PSQoICggaT0xIDsgd2hpbGUgeyBcXGJ1aWx0aW4gbGV0ICIgaSA8IDEwICIgOyB9ID4mMyA7IGRvIFxlY2hvICRpIDsgXGxldCArK2kgOyBkb25lID4mMyApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9UVU5USUwoKSB7CgkJaT0xMDsgdW50aWwgICgoICEtLWkgKSkgPiYzIDsgZG8gZWNobyAkaTsgZG9uZSA+JjMKCX0KCWlubGluZV9UVU5USUwoKSB7CgkJaT0xMCAKCQl1bnRpbCB7CgkJCSAgICAgIFxcYnVpbHRpbiBsZXQgIiAhLS1pICIgCgkJICAgICAgfSA+JjMgCgkJZG8KCQkJXGVjaG8gJGkgCgkJZG9uZSA+JjMgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RVTlRJTCB7IHg9JCgKCQlpPTEwOyB1bnRpbCAgKCggIS0taSApKSA+JjMgOyBkbyBlY2hvICRpOyBkb25lID4mMwoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RVTlRJTCB7CgkJeD0kKGk9MTAgOyB1bnRpbCB7IFxcYnVpbHRpbiBsZXQgIiAhLS1pICIgOyB9ID4mMyA7IGRvIFxlY2hvICRpIDsgZG9uZSA+JjMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVFVOVElMIHsgeD0kKCgKCQlpPTEwOyB1bnRpbCAgKCggIS0taSApKSA+JjMgOyBkbyBlY2hvICRpOyBkb25lID4mMwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVFVOVElMIHsKCQl4PSQoICggaT0xMCA7IHVudGlsIHsgXFxidWlsdGluIGxldCAiICEtLWkgIiA7IH0gPiYzIDsgZG8gXGVjaG8gJGkgOyBkb25lID4mMyApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9UQ09QUk9DKCkgewoJCWNhdCAgKiAgPiYzIHwmICA+JjMgbHMKCX0KCWlubGluZV9UQ09QUk9DKCkgewoJCVxjYXQgKiA+JjMgfCYgCgkJXGxzID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVENPUFJPQyB7IHg9JCgKCQljYXQgICogID4mMyB8JiAgPiYzIGxzCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVENPUFJPQyB7CgkJeD0kKFxjYXQgKiA+JjMgfCYgIFxscyA+JjMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVENPUFJPQyB7IHg9JCgoCgkJY2F0ICAqICA+JjMgfCYgID4mMyBscwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVENPUFJPQyB7CgkJeD0kKCAoIFxjYXQgKiA+JjMgfCYgIFxscyA+JjMgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVEZVTkNUX1RCUkFDRV9UQVNZTkMoKSB7CgkJZnVuY3Rpb24gIGtvcm4gIHsgIGVjaG8gZWluczsgZWNobyA+JjMgendlaSA7ICB9CgkJYm91cm5lICAoKSAgeyAgbG9nZ2VyICogID4mMyAmICB9Cgl9CglpbmxpbmVfVEZVTkNUX1RCUkFDRV9UQVNZTkMoKSB7CgkJZnVuY3Rpb24ga29ybiB7CgkJCVxlY2hvIGVpbnMgCgkJCVxlY2hvIHp3ZWkgPiYzIAoJCX0gCgkJYm91cm5lKCkgewoJCQlcbG9nZ2VyICogPiYzICYgCgkJfSAKCX0gCglmdW5jdGlvbiBjb21zdWJfVEZVTkNUX1RCUkFDRV9UQVNZTkMgeyB4PSQoCgkJZnVuY3Rpb24gIGtvcm4gIHsgIGVjaG8gZWluczsgZWNobyA+JjMgendlaSA7ICB9CgkJYm91cm5lICAoKSAgeyAgbG9nZ2VyICogID4mMyAmICB9CgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVEZVTkNUX1RCUkFDRV9UQVNZTkMgewoJCXg9JChmdW5jdGlvbiBrb3JuIHsgXGVjaG8gZWlucyA7IFxlY2hvIHp3ZWkgPiYzIDsgfSA7IGJvdXJuZSgpIHsgXGxvZ2dlciAqID4mMyAmICB9ICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RGVU5DVF9UQlJBQ0VfVEFTWU5DIHsgeD0kKCgKCQlmdW5jdGlvbiAga29ybiAgeyAgZWNobyBlaW5zOyBlY2hvID4mMyB6d2VpIDsgIH0KCQlib3VybmUgICgpICB7ICBsb2dnZXIgKiAgPiYzICYgIH0KCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RGVU5DVF9UQlJBQ0VfVEFTWU5DIHsKCQl4PSQoICggZnVuY3Rpb24ga29ybiB7IFxlY2hvIGVpbnMgOyBcZWNobyB6d2VpID4mMyA7IH0gOyBib3VybmUoKSB7IFxsb2dnZXIgKiA+JjMgJiAgfSApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9DT01TVUJfRVhQUlNVQigpIHsKCQllY2hvICQodHJ1ZSA+JjMpICQoKDErIDIpKQoJfQoJaW5saW5lX0NPTVNVQl9FWFBSU1VCKCkgewoJCVxlY2hvICQoXHRydWUgPiYzICkgJCgoMSsgMikpIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9DT01TVUJfRVhQUlNVQiB7IHg9JCgKCQllY2hvICQodHJ1ZSA+JjMpICQoKDErIDIpKQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX0NPTVNVQl9FWFBSU1VCIHsKCQl4PSQoXGVjaG8gJChcdHJ1ZSA+JjMgKSAkKCgxKyAyKSkgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfQ09NU1VCX0VYUFJTVUIgeyB4PSQoKAoJCWVjaG8gJCh0cnVlID4mMykgJCgoMSsgMikpCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9DT01TVUJfRVhQUlNVQiB7CgkJeD0kKCAoIFxlY2hvICQoXHRydWUgPiYzICkgJCgoMSsgMikpICkgfCBcdHIgdSB4ICkgCgl9IAotLS0KbmFtZTogZnVuc3ViLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IG5vbi1zdWJlbnZpcm9ubWVudCBjb21tYW5kIHN1YnN0aXR1dGlvbiB3b3JrcwpzdGRpbjoKCXNldCAtZQoJZm9vPWJhcgoJZWNobyAib2IgJGZvbyAuIgoJZWNobyAiJHsKCQllY2hvICJpYiAkZm9vIDoiCgkJZm9vPWJhegoJCWVjaG8gImlhICRmb28gOiIKCQlmYWxzZQoJfSIgLgoJZWNobyAib2EgJGZvbyAuIgpleHBlY3RlZC1zdGRvdXQ6CglvYiBiYXIgLgoJaWIgYmFyIDoKCWlhIGJheiA6IC4KCW9hIGJheiAuCi0tLQpuYW1lOiBmdW5zdWItMgpkZXNjcmlwdGlvbjoKCVlvdSBjYW4gbm93IHJlbGlhYmx5IHVzZSBsb2NhbCBhbmQgcmV0dXJuIGluIGZ1bnN1YnMKCShub3QgZXhpdCB0aG91Z2gpCnN0ZGluOgoJeD1xOyBlPTE7IHg9JHsgZWNobyBhOyBlPTI7IGVjaG8geCRlO307IGVjaG8gMTp5JHgsJGUsJD8uCgl4PXE7IGU9MTsgeD0keyBlY2hvIGE7IHR5cGVzZXQgZT0yOyBlY2hvIHgkZTt9OyBlY2hvIDI6eSR4LCRlLCQ/LgoJeD1xOyBlPTE7IHg9JHsgZWNobyBhOyB0eXBlc2V0IGU9MjsgcmV0dXJuIDM7IGVjaG8geCRlO307IGVjaG8gMzp5JHgsJGUsJD8uCmV4cGVjdGVkLXN0ZG91dDoKCTE6eWEgeDIsMiwwLgoJMjp5YSB4MiwxLDAuCgkzOnlhLDEsMy4KLS0tCm5hbWU6IHZhbHN1Yi0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAidmFsdWUgc3Vic3RpdHV0aW9ucyIgd29yayBhcyBhZHZlcnRpc2VkCnN0ZGluOgoJeD0xCgl5PTIKCXo9MwoJUkVQTFk9NAoJZWNobyAiYmVmb3JlOgl4PCR4PiB5PCR5PiB6PCR6PiBSPCRSRVBMWT4iCgl4PSR7fAoJCWxvY2FsIHkKCQllY2hvICJzdGFydDoJeDwkeD4geTwkeT4gejwkej4gUjwkUkVQTFk+IgoJCXg9NQoJCXk9NgoJCXo9NwoJCVJFUExZPTgKCQllY2hvICJlbmQ6CXg8JHg+IHk8JHk+IHo8JHo+IFI8JFJFUExZPiIKCX0KCWVjaG8gImFmdGVyOgl4PCR4PiB5PCR5PiB6PCR6PiBSPCRSRVBMWT4iCgkjIGVuc3VyZSB0cmFpbGluZyBuZXdsaW5lcyBhcmUga2VwdAoJdD0ke3xSRVBMWT0kJ2Zvb1xuXG4nO30KCXR5cGVzZXQgLXAgdAoJZWNobyAtbiB0aGlzIHVzZWQgdG8gc2VnZmF1bHQKCWVjaG8gJHt8dHJ1ZTt9JCh0cnVlKS4KZXhwZWN0ZWQtc3Rkb3V0OgoJYmVmb3JlOgl4PDE+IHk8Mj4gejwzPiBSPDQ+CglzdGFydDoJeDwxPiB5PD4gejwzPiBSPD4KCWVuZDoJeDw1PiB5PDY+IHo8Nz4gUjw4PgoJYWZ0ZXI6CXg8OD4geTwyPiB6PDc+IFI8ND4KCXR5cGVzZXQgdD0kJ2Zvb1xuXG4nCgl0aGlzIHVzZWQgdG8gc2VnZmF1bHQuCi0tLQpuYW1lOiBldmVudC1zdWJzdC0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAnIScgc3Vic3RpdHV0aW9uIGluIG5vbmludGVyYWN0aXZlIG1vZGUgaXMgaWdub3JlZApmaWxlLXNldHVwOiBmaWxlIDc1NSAiZmFsc2V0dG8iCgkjISAvYmluL3NoCgllY2hvIG1vbHRvIGJlbmUKCWV4aXQgNDIKZmlsZS1zZXR1cDogZmlsZSA3NTUgIiFmYWxzZSIKCSMhIC9iaW4vc2gKCWVjaG8gc2kKc3RkaW46CglleHBvcnQgUEFUSD0uJFBBVEhTRVAkUEFUSAoJZmFsc2V0dG8KCWVjaG8geWVhcAoJIWZhbHNlCgllY2hvIG1lb3cKCSEgZmFsc2UKCWVjaG8gPSAkPwoJaWYKCSEgZmFsc2U7IHRoZW4gZWNobyBmb287IGVsc2UgZWNobyBiYXI7IGZpCmV4cGVjdGVkLXN0ZG91dDoKCW1vbHRvIGJlbmUKCXllYXAKCXNpCgltZW93Cgk9IDAKCWZvbwotLS0KbmFtZTogZXZlbnQtc3Vic3QtMApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgJyEnIHN1YnN0aXR1dGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlIGlzIGlnbm9yZWQKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmZpbGUtc2V0dXA6IGZpbGUgNzU1ICJmYWxzZXR0byIKCSMhIC9iaW4vc2gKCWVjaG8gbW9sdG8gYmVuZQoJZXhpdCA0MgpmaWxlLXNldHVwOiBmaWxlIDc1NSAiIWZhbHNlIgoJIyEgL2Jpbi9zaAoJZWNobyBzaQpzdGRpbjoKCWV4cG9ydCBQQVRIPS4kUEFUSFNFUCRQQVRICglmYWxzZXR0bwoJZWNobyB5ZWFwCgkhZmFsc2UKCWVjaG8gbWVvdwoJISBmYWxzZQoJZWNobyA9ICQ/CglpZgoJISBmYWxzZTsgdGhlbiBlY2hvIGZvbzsgZWxzZSBlY2hvIGJhcjsgZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJbW9sdG8gYmVuZQoJeWVhcAoJc2kKCW1lb3cKCT0gMAoJZm9vCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLy4qLwotLS0KbmFtZTogbm91bnNldC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAic2V0IC11IiBtYXRjaGVzIChmdXR1cmUpIFNVU3Y0IHJlcXVpcmVtZW50CnN0ZGluOgoJKHNldCAtdQoJdHJ5KCkgewoJCWxvY2FsIHYKCQlldmFsIHY9XCQkMQoJCWlmIFtbIC1uICR2IF1dOyB0aGVuCgkJCWVjaG8gJDE9bnoKCQllbHNlCgkJCWVjaG8gJDE9emYKCQlmaQoJfQoJeD15CgkoZWNobyAkeCkKCWVjaG8gPTEKCShlY2hvICR5KQoJZWNobyA9MgoJKHRyeSB4KQoJZWNobyA9MwoJKHRyeSB5KQoJZWNobyA9NAoJKHRyeSAwKQoJZWNobyA9NQoJKHRyeSAyKQoJZWNobyA9NgoJKHRyeSkKCWVjaG8gPTcKCShlY2hvIGF0PSRAKQoJZWNobyA9OAoJKGVjaG8gYXN0ZXJpc2s9JCopCgllY2hvID05CgkoZWNobyAkPykKCWVjaG8gPTEwCgkoZWNobyAkISkKCWVjaG8gPTExCgkoZWNobyAkLSkKCWVjaG8gPTEyCgkjKGVjaG8gJF8pCgkjZWNobyA9MTMKCShlY2hvICQjKQoJZWNobyA9MTQKCShteXBpZD0kJDsgdHJ5IG15cGlkKQoJZWNobyA9MTUKCSkgMj4mMSB8IHNlZCAtZSAncy9eW0EtWmEtel06Ly8nIC1lICdzL15bXl1dKl0vLycgLWUgJ3MvXlteOl0qOiAqLy8nCglleGl0ICR7UElQRVNUQVRVU1swXX0KZXhwZWN0ZWQtc3Rkb3V0OgoJeQoJPTEKCXk6IHBhcmFtZXRlciBub3Qgc2V0Cgk9MgoJeD1uegoJPTMKCXk6IHBhcmFtZXRlciBub3Qgc2V0Cgk9NAoJMD1uegoJPTUKCTI6IHBhcmFtZXRlciBub3Qgc2V0Cgk9NgoJMTogcGFyYW1ldGVyIG5vdCBzZXQKCT03CglhdD0KCT04Cglhc3Rlcmlzaz0KCT05CgkwCgk9MTAKCSE6IHBhcmFtZXRlciBub3Qgc2V0Cgk9MTEKCXVzaAoJPTEyCgkwCgk9MTQKCW15cGlkPW56Cgk9MTUKLS0tCm5hbWU6IG5hbWVyZWYtMQpkZXNjcmlwdGlvbjoKCVRlc3RzdWl0ZSBmb3IgbmFtZXJlZiAoYm91bmQgdmFyaWFibGVzKQpzdGRpbjoKCWJhcj1nbG9iYWwKCXR5cGVzZXQgLW4gaXIyPWJhcgoJdHlwZXNldCAtbiBpbmQ9aXIyCgllY2hvICFpbmQ6ICR7IWluZH0KCWVjaG8gaW5kOiAkaW5kCgllY2hvICFpcjI6ICR7IWlyMn0KCWVjaG8gaXIyOiAkaXIyCgl0eXBlc2V0ICtuIGluZAoJZWNobyAhaW5kOiAkeyFpbmR9CgllY2hvIGluZDogJGluZAoJdHlwZXNldCAtbiBpcjI9aW5kCgllY2hvICFpcjI6ICR7IWlyMn0KCWVjaG8gaXIyOiAkaXIyCglzZXR8Z3JlcCBeaXIyfHNlZCAncy9eL3MxOiAvJwoJdHlwZXNldHxncmVwICcgaXIyJ3xzZWQgLWUgJ3MvXi9zMjogLycgLWUgJ3MvbmFtZXJlZi90eXBlc2V0IC1uLycKCXNldCAtQSBibHViIC0tIGUxIGUyIGUzCgl0eXBlc2V0IC1uIGluZD1ibHViCgl0eXBlc2V0IC1uIGlyMj1ibHViWzJdCgllY2hvICFpbmRbMV06ICR7IWluZFsxXX0KCWVjaG8gIWlyMjogJCFpcjIKCWVjaG8gaW5kWzFdOiAke2luZFsxXX0KCWVjaG8gaXIyOiAkaXIyCmV4cGVjdGVkLXN0ZG91dDoKCSFpbmQ6IGJhcgoJaW5kOiBnbG9iYWwKCSFpcjI6IGJhcgoJaXIyOiBnbG9iYWwKCSFpbmQ6IGluZAoJaW5kOiBpcjIKCSFpcjI6IGluZAoJaXIyOiBpcjIKCXMxOiBpcjI9aW5kCglzMjogdHlwZXNldCAtbiBpcjIKCSFpbmRbMV06IGJsdWJbMV0KCSFpcjI6IGlyMgoJaW5kWzFdOiBlMgoJaXIyOiBlMwotLS0KbmFtZTogbmFtZXJlZi0yZGEKZGVzY3JpcHRpb246CglUZXN0c3VpdGUgZm9yIG5hbWVyZWYgKGJvdW5kIHZhcmlhYmxlcykKCUZ1bmN0aW9ucywgYXJndW1lbnQgZ2l2ZW4gZGlyZWN0bHksIGFmdGVyIGxvY2FsCnN0ZGluOgoJZnVuY3Rpb24gZm9vIHsKCQl0eXBlc2V0IGJhcj1sb2thbCBiYXo9YXVjaAoJCXR5cGVzZXQgLW4gdj1iYXIKCQllY2hvIGVudGVyaW5nCgkJZWNobyAhdjogJHshdn0KCQllY2hvICFiYXI6ICR7IWJhcn0KCQllY2hvICFiYXo6ICR7IWJhen0KCQllY2hvIGJhcjogJGJhcgoJCWVjaG8gdjogJHYKCQl2PTEyMwoJCWVjaG8gYmFyOiAkYmFyCgkJZWNobyB2OiAkdgoJCWVjaG8gZXhpdGluZwoJfQoJYmFyPWdsb2JhbAoJZWNobyBiYXI6ICRiYXIKCWZvbyBiYXIKCWVjaG8gYmFyOiAkYmFyCmV4cGVjdGVkLXN0ZG91dDoKCWJhcjogZ2xvYmFsCgllbnRlcmluZwoJIXY6IGJhcgoJIWJhcjogYmFyCgkhYmF6OiBiYXoKCWJhcjogbG9rYWwKCXY6IGxva2FsCgliYXI6IDEyMwoJdjogMTIzCglleGl0aW5nCgliYXI6IGdsb2JhbAotLS0KbmFtZTogbmFtZXJlZi0zCmRlc2NyaXB0aW9uOgoJQWR2YW5jZWQgdGVzdHN1aXRlIGZvciBib3VuZCB2YXJpYWJsZXMgKGtzaDkzIGZhaWxzIHRoaXMpCnN0ZGluOgoJdHlwZXNldCAtbiBmb289YmFyW2ldCglzZXQgLUEgYmFyIC0tIGIgYyBhCglmb3IgaSBpbiAwIDEgMiAzOyBkbwoJCXByaW50ICRpICRmb28gLgoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CgkwIGIgLgoJMSBjIC4KCTIgYSAuCgkzIC4KLS0tCm5hbWU6IG5hbWVyZWYtNApkZXNjcmlwdGlvbjoKCUVuc3VyZSB3ZSBkb24ndCBydW4gaW4gYW4gaW5maW5pdGUgbG9vcAp0aW1lLWxpbWl0OiAzCnN0ZGluOgoJYmF6KCkgewoJCXR5cGVzZXQgLW4gZm9vPWZub3JkIGZub3JkPWZvbwoJCWZvb1swXT1iYXIKCX0KCXNldCAtQSBmb28gYmFkCgllY2hvIHNpbmQgJGZvbyAuCgliYXoKCWVjaG8gYmxhaCAkZm9vIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJc2luZCBiYWQgLgoJYmxhaCBiYWQgLgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9mbm9yZDogZXhwcmVzc2lvbiByZWN1cnNlcyBvbiBwYXJhbWV0ZXIvCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTFhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWlmICggKGVjaG8gZnViYXIpfHRyIHUgeCk7IHRoZW4KCQllY2hvIGphCgllbHNlCgkJZWNobyBuZWluCglmaQpleHBlY3RlZC1zdGRvdXQ6CglmeGJhcgoJamEKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtMWIKZGVzY3JpcHRpb246CglDaGVjayBzdXBwb3J0IGZvciAoKOKApikpIGFuZCAkKCjigKYpKSB2cyAo4oCmKSBhbmQgJCjigKYpCnN0ZGluOgoJZWNobyAkKCAoZWNobyBmdWJhcil8dHIgdSB4KSAkPwpleHBlY3RlZC1zdGRvdXQ6CglmeGJhciAwCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTFjCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCXg9JCggKGVjaG8gZnViYXIpfHRyIHUgeCk7IGVjaG8gJHggJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIgMAotLS0KbmFtZTogYmV0dGVyLXBhcmVucy0yYQpkZXNjcmlwdGlvbjoKCUNoZWNrIHN1cHBvcnQgZm9yICgo4oCmKSkgYW5kICQoKOKApikpIHZzICjigKYpIGFuZCAkKOKApikKc3RkaW46CglpZiAoKGVjaG8gZnViYXIpfHRyIHUgeCk7IHRoZW4KCQllY2hvIGphCgllbHNlCgkJZWNobyBuZWluCglmaQpleHBlY3RlZC1zdGRvdXQ6CglmeGJhcgoJamEKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtMmIKZGVzY3JpcHRpb246CglDaGVjayBzdXBwb3J0IGZvciAoKOKApikpIGFuZCAkKCjigKYpKSB2cyAo4oCmKSBhbmQgJCjigKYpCnN0ZGluOgoJZWNobyAkKChlY2hvIGZ1YmFyKXx0ciB1IHgpICQ/CmV4cGVjdGVkLXN0ZG91dDoKCWZ4YmFyIDAKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtMmMKZGVzY3JpcHRpb246CglDaGVjayBzdXBwb3J0IGZvciAoKOKApikpIGFuZCAkKCjigKYpKSB2cyAo4oCmKSBhbmQgJCjigKYpCnN0ZGluOgoJeD0kKChlY2hvIGZ1YmFyKXx0ciB1IHgpOyBlY2hvICR4ICQ/CmV4cGVjdGVkLXN0ZG91dDoKCWZ4YmFyIDAKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtM2EKZGVzY3JpcHRpb246CglDaGVjayBzdXBwb3J0IGZvciAoKOKApikpIGFuZCAkKCjigKYpKSB2cyAo4oCmKSBhbmQgJCjigKYpCnN0ZGluOgoJaWYgKCAoZWNobyBmdWJhcil8KHRyIHUgeCkpOyB0aGVuCgkJZWNobyBqYQoJZWxzZQoJCWVjaG8gbmVpbgoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIKCWphCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTNiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWVjaG8gJCggKGVjaG8gZnViYXIpfCh0ciB1IHgpKSAkPwpleHBlY3RlZC1zdGRvdXQ6CglmeGJhciAwCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTNjCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCXg9JCggKGVjaG8gZnViYXIpfCh0ciB1IHgpKTsgZWNobyAkeCAkPwpleHBlY3RlZC1zdGRvdXQ6CglmeGJhciAwCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTRhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWlmICgoZWNobyBmdWJhcil8KHRyIHUgeCkpOyB0aGVuCgkJZWNobyBqYQoJZWxzZQoJCWVjaG8gbmVpbgoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIKCWphCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTRiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWVjaG8gJCgoZWNobyBmdWJhcil8KHRyIHUgeCkpICQ/CmV4cGVjdGVkLXN0ZG91dDoKCWZ4YmFyIDAKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtNGMKZGVzY3JpcHRpb246CglDaGVjayBzdXBwb3J0IGZvciAoKOKApikpIGFuZCAkKCjigKYpKSB2cyAo4oCmKSBhbmQgJCjigKYpCnN0ZGluOgoJeD0kKChlY2hvIGZ1YmFyKXwodHIgdSB4KSk7IGVjaG8gJHggJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIgMAotLS0KbmFtZTogYmV0dGVyLXBhcmVucy01CmRlc2NyaXB0aW9uOgoJQW5vdGhlciBjb3JuZXIgY2FzZQpzdGRpbjoKCSggKGVjaG8gJ2ZvCW8kYmFyJyAiYmF6XCRibGFcIiIgbVwkZWgpIHwgdHIgYSBBKQoJKChlY2hvICdmbwlvJGJhcicgImJhelwkYmxhXCIiIG1cJGVoKSB8IHRyIGEgQSkKZXhwZWN0ZWQtc3Rkb3V0OgoJZm8JbyRiQXIgYkF6JGJsQSIgbSRlaAoJZm8JbyRiQXIgYkF6JGJsQSIgbSRlaAotLS0KbmFtZTogZWNoby10ZXN0LTEKZGVzY3JpcHRpb246CglUZXN0IHdoYXQgdGhlIGVjaG8gYnVpbHRpbiBkb2VzIChta3NoKQpjYXRlZ29yeTogIXNoZWxsOmViY2RpYy15ZXMKc3RkaW46CgllY2hvIC1uICdmb29ceDQwYmFyJwoJZWNobyAtZSAnXHRiYXonCmV4cGVjdGVkLXN0ZG91dDoKCWZvb0BiYXIJYmF6Ci0tLQpuYW1lOiBlY2hvLXRlc3QtMS1lYmNkaWMKZGVzY3JpcHRpb246CglUZXN0IHdoYXQgdGhlIGVjaG8gYnVpbHRpbiBkb2VzIChta3NoKQpjYXRlZ29yeTogIXNoZWxsOmViY2RpYy1ubwpzdGRpbjoKCWVjaG8gLW4gJ2Zvb1x4N0NiYXInCgllY2hvIC1lICdcdGJheicKZXhwZWN0ZWQtc3Rkb3V0OgoJZm9vQGJhcgliYXoKLS0tCm5hbWU6IGVjaG8tdGVzdC0yCmRlc2NyaXB0aW9uOgoJVGVzdCB3aGF0IHRoZSBlY2hvIGJ1aWx0aW4gZG9lcyAoUE9TSVgpCglOb3RlOiB0aGlzIGZvbGxvd3MgRGViaWFuIFBvbGljeSAxMC40IHdoaWNoIG1hbmRhdGVzCgl0aGF0IC1uIHNoYWxsIGJlIHRyZWF0ZWQgYXMgYW4gb3B0aW9uLCBub3QgWFNJIHdoaWNoCgltYW5kYXRlcyBpdCBzaGFsbCBiZSB0cmVhdGVkIGFzIHN0cmluZyBidXQgZXNjYXBlcwoJc2hhbGwgYmUgZXhwYW5kZWQuCnN0ZGluOgoJdGVzdCAtbiAiJFBPU0hfVkVSU0lPTiIgfHwgc2V0IC1vIHBvc2l4CgllY2hvIC1uICdmb29ceDQwYmFyJwoJZWNobyAtZSAnXHRiYXonCmV4cGVjdGVkLXN0ZG91dDoKCWZvb1x4NDBiYXItZSBcdGJhegotLS0KbmFtZTogZWNoby10ZXN0LTMtbW5ic2QKZGVzY3JpcHRpb246CglUZXN0IHdoYXQgdGhlIGVjaG8gYnVpbHRpbiBkb2VzLCBhbmQgdGVzdCBhIGNvbXBhdGliaWxpdHkgZmxhZy4KY2F0ZWdvcnk6IG1uYnNkYXNoCnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAnZWNobyAtbiAxPVxceDQwJDE7IGVjaG8gLWUgXFx4MkUnIC0tIGZvbyBiYXIKCSIkX19wcm9nbmFtZSIgLW8gcG9zaXggLWMgJ2VjaG8gLW4gMj1cXHg0MCQxOyBlY2hvIC1lIFxceDJFJyAtLSBmb28gYmFyCgkiJF9fcHJvZ25hbWUiIC1vIHNoIC1jICdlY2hvIC1uIDM9XFx4NDAkMTsgZWNobyAtZSBcXHgyRScgLS0gZm9vIGJhcgpleHBlY3RlZC1zdGRvdXQ6CgkxPUBmb28uCgkyPVx4NDBmb28tZSBceDJFCgkzPVx4NDBiYXIuCi0tLQpuYW1lOiBlY2hvLXRlc3QtMy1ub3JtYWwKZGVzY3JpcHRpb246CglUZXN0IHdoYXQgdGhlIGVjaG8gYnVpbHRpbiBkb2VzLCBhbmQgdGVzdCBhIGNvbXBhdGliaWxpdHkgZmxhZy4KY2F0ZWdvcnk6ICFtbmJzZGFzaCwhc2hlbGw6ZWJjZGljLXllcwpzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJ2VjaG8gLW4gMT1cXHg0MCQxOyBlY2hvIC1lIFxceDJFJyAtLSBmb28gYmFyCgkiJF9fcHJvZ25hbWUiIC1vIHBvc2l4IC1jICdlY2hvIC1uIDI9XFx4NDAkMTsgZWNobyAtZSBcXHgyRScgLS0gZm9vIGJhcgoJIiRfX3Byb2duYW1lIiAtbyBzaCAtYyAnZWNobyAtbiAzPVxceDQwJDE7IGVjaG8gLWUgXFx4MkUnIC0tIGZvbyBiYXIKZXhwZWN0ZWQtc3Rkb3V0OgoJMT1AZm9vLgoJMj1ceDQwZm9vLWUgXHgyRQoJMz1ceDQwZm9vLWUgXHgyRQotLS0KbmFtZTogZWNoby10ZXN0LTMtZWJjZGljCmRlc2NyaXB0aW9uOgoJVGVzdCB3aGF0IHRoZSBlY2hvIGJ1aWx0aW4gZG9lcywgYW5kIHRlc3QgYSBjb21wYXRpYmlsaXR5IGZsYWcuCmNhdGVnb3J5OiAhbW5ic2Rhc2gsIXNoZWxsOmViY2RpYy1ubwpzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJ2VjaG8gLW4gMT1cXHg3QyQxOyBlY2hvIC1lIFxceDRCJyAtLSBmb28gYmFyCgkiJF9fcHJvZ25hbWUiIC1vIHBvc2l4IC1jICdlY2hvIC1uIDI9XFx4N0MkMTsgZWNobyAtZSBcXHg0QicgLS0gZm9vIGJhcgoJIiRfX3Byb2duYW1lIiAtbyBzaCAtYyAnZWNobyAtbiAzPVxceDdDJDE7IGVjaG8gLWUgXFx4NEInIC0tIGZvbyBiYXIKZXhwZWN0ZWQtc3Rkb3V0OgoJMT1AZm9vLgoJMj1ceDdDZm9vLWUgXHg0QgoJMz1ceDdDZm9vLWUgXHg0QgotLS0KbmFtZTogdXRpbGl0aWVzLWdldG9wdHMtMQpkZXNjcmlwdGlvbjoKCWdldG9wdHMgc2V0cyBPUFRJTkQgY29ycmVjdGx5IGZvciB1bnBhcnNlZCBvcHRpb24Kc3RkaW46CglzZXQgLS0gLWEgLWEgLXgKCXdoaWxlIGdldG9wdHMgOmEgb3B0YzsgZG8KCSAgICBlY2hvICJPUFRBUkc9JE9QVEFSRywgT1BUSU5EPSRPUFRJTkQsIG9wdGM9JG9wdGMuIgoJZG9uZQoJZWNobyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCU9QVEFSRz0sIE9QVElORD0yLCBvcHRjPWEuCglPUFRBUkc9LCBPUFRJTkQ9Mywgb3B0Yz1hLgoJT1BUQVJHPXgsIE9QVElORD00LCBvcHRjPT8uCglkb25lCi0tLQpuYW1lOiB1dGlsaXRpZXMtZ2V0b3B0cy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgT1BUQVJHCnN0ZGluOgoJc2V0IC0tIC1hIE1hcnkgLXgKCXdoaWxlIGdldG9wdHMgYTogb3B0YzsgZG8KCSAgICBlY2hvICJPUFRBUkc9JE9QVEFSRywgT1BUSU5EPSRPUFRJTkQsIG9wdGM9JG9wdGMuIgoJZG9uZQoJZWNobyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCU9QVEFSRz1NYXJ5LCBPUFRJTkQ9Mywgb3B0Yz1hLgoJT1BUQVJHPSwgT1BUSU5EPTQsIG9wdGM9Py4KCWRvbmUKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC8uKi14LipvcHRpb24vCi0tLQpuYW1lOiB1dGlsaXRpZXMtZ2V0b3B0cy0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdW5zZXR0aW5nIE9QVEFSRwpzdGRpbjoKCXNldCAtLSAteCBhcmcgLXkKCWdldG9wdHMgeDp5IG9wdCAmJiBlY2hvICIke09QVEFSRy11bnNldH0iCglnZXRvcHRzIHg6eSBvcHQgJiYgZWNobyAiJHtPUFRBUkctdW5zZXR9IgpleHBlY3RlZC1zdGRvdXQ6CglhcmcKCXVuc2V0Ci0tLQpuYW1lOiB3Y3N3aWR0aC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhlIG5ldyB3Y3N3aWR0aCBmZWF0dXJlCnN0ZGluOgoJcz3kvZUKCXNldCArVQoJcHJpbnQgb2N0ZXRzOiAkeyNzfSAuCglwcmludCA4LWJpdCB3aWR0aDogJHslc30gLgoJc2V0IC1VCglwcmludCBjaGFyYWN0ZXJzOiAkeyNzfSAuCglwcmludCBjb2x1bW5zOiAkeyVzfSAuCglzPe+/vQoJc2V0ICtVCglwcmludCBvY3RldHM6ICR7I3N9IC4KCXByaW50IDgtYml0IHdpZHRoOiAkeyVzfSAuCglzZXQgLVUKCXByaW50IGNoYXJhY3RlcnM6ICR7I3N9IC4KCXByaW50IGNvbHVtbnM6ICR7JXN9IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJb2N0ZXRzOiAzIC4KCTgtYml0IHdpZHRoOiAtMSAuCgljaGFyYWN0ZXJzOiAxIC4KCWNvbHVtbnM6IDIgLgoJb2N0ZXRzOiAzIC4KCTgtYml0IHdpZHRoOiAzIC4KCWNoYXJhY3RlcnM6IDEgLgoJY29sdW1uczogMSAuCi0tLQpuYW1lOiB3Y3N3aWR0aC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBjb3JuZXIgY2FzZXMKc3RkaW46CglwcmludCAlICQlIC4KCXNldCAtVQoJeD0nYQliJwoJcHJpbnQgYyAkeyV4fSAuCglzZXQgK1UKCXg9J2EJYicKCXByaW50IGQgJHsleH0gLgpleHBlY3RlZC1zdGRvdXQ6CgklICQlIC4KCWMgLTEgLgoJZCAtMSAuCi0tLQpuYW1lOiB3Y3N3aWR0aC0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBjb3JuZXIgY2FzZXMKc3RkaW46CglwcmludCAkeyV9IC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvYmFkIHN1YnN0aXR1dGlvbi8KZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogd2Nzd2lkdGgtNGEKZGVzY3JpcHRpb246CglDaGVjayBzb21lIGNvcm5lciBjYXNlcwpzdGRpbjoKCXByaW50ICR7JSp9IC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvYmFkIHN1YnN0aXR1dGlvbi8KZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogd2Nzd2lkdGgtNGIKZGVzY3JpcHRpb246CglDaGVjayBzb21lIGNvcm5lciBjYXNlcwpzdGRpbjoKCXByaW50ICR7JUB9IC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvYmFkIHN1YnN0aXR1dGlvbi8KZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogd2Nzd2lkdGgtNGMKZGVzY3JpcHRpb246CglDaGVjayBzb21lIGNvcm5lciBjYXNlcwpzdGRpbjoKCToKCXByaW50ICR7JT99IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSAuCi0tLQpuYW1lOiByZWFscGF0aC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcHJvcGVyIHJldHVybiB2YWx1ZXMgZm9yIHJlYWxwYXRoCmNhdGVnb3J5OiBvczptaXJic2QKc3RkaW46Cgl3ZD0kKHJlYWxwYXRoIC4pCglta2RpciBkaXIKCTo+ZmlsZQoJOj5kaXIvZmlsZQoJbG4gLXMgZGlyIGxuZGlyCglsbiAtcyBmaWxlIGxuZmlsZQoJbG4gLXMgbml4IGxubml4CglsbiAtcyAuIGxuc2VsZgoJaT0wCgljaGsoKSB7CgkJdHlwZXNldCB4IHkKCQl4PSQocmVhbHBhdGggIiR3ZC8kMSIgMj4mMSk7IHk9JD8KCQlwcmludCAkKCgrK2kpKSAiPyQxIiA9JHt4IyMqJHdkL30gISR5Cgl9CgljaGsgZGlyCgljaGsgZGlyLwoJY2hrIGRpci9maWxlCgljaGsgZGlyL25peAoJY2hrIGZpbGUKCWNoayBmaWxlLwoJY2hrIGZpbGUvZmlsZQoJY2hrIGZpbGUvbml4CgljaGsgbml4CgljaGsgbml4LwoJY2hrIG5peC9maWxlCgljaGsgbml4L25peAoJY2hrIGxuZGlyCgljaGsgbG5kaXIvCgljaGsgbG5kaXIvZmlsZQoJY2hrIGxuZGlyL25peAoJY2hrIGxuZmlsZQoJY2hrIGxuZmlsZS8KCWNoayBsbmZpbGUvZmlsZQoJY2hrIGxuZmlsZS9uaXgKCWNoayBsbm5peAoJY2hrIGxubml4LwoJY2hrIGxubml4L2ZpbGUKCWNoayBsbm5peC9uaXgKCWNoayBsbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYKCXJtIGxuc2VsZgpleHBlY3RlZC1zdGRvdXQ6CgkxID9kaXIgPWRpciAhMAoJMiA/ZGlyLyA9ZGlyICEwCgkzID9kaXIvZmlsZSA9ZGlyL2ZpbGUgITAKCTQgP2Rpci9uaXggPWRpci9uaXggITAKCTUgP2ZpbGUgPWZpbGUgITAKCTYgP2ZpbGUvID1maWxlLzogTm90IGEgZGlyZWN0b3J5ICEyMAoJNyA/ZmlsZS9maWxlID1maWxlL2ZpbGU6IE5vdCBhIGRpcmVjdG9yeSAhMjAKCTggP2ZpbGUvbml4ID1maWxlL25peDogTm90IGEgZGlyZWN0b3J5ICEyMAoJOSA/bml4ID1uaXggITAKCTEwID9uaXgvID1uaXggITAKCTExID9uaXgvZmlsZSA9bml4L2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgITIKCTEyID9uaXgvbml4ID1uaXgvbml4OiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5ICEyCgkxMyA/bG5kaXIgPWRpciAhMAoJMTQgP2xuZGlyLyA9ZGlyICEwCgkxNSA/bG5kaXIvZmlsZSA9ZGlyL2ZpbGUgITAKCTE2ID9sbmRpci9uaXggPWRpci9uaXggITAKCTE3ID9sbmZpbGUgPWZpbGUgITAKCTE4ID9sbmZpbGUvID1sbmZpbGUvOiBOb3QgYSBkaXJlY3RvcnkgITIwCgkxOSA/bG5maWxlL2ZpbGUgPWxuZmlsZS9maWxlOiBOb3QgYSBkaXJlY3RvcnkgITIwCgkyMCA/bG5maWxlL25peCA9bG5maWxlL25peDogTm90IGEgZGlyZWN0b3J5ICEyMAoJMjEgP2xubml4ID1uaXggITAKCTIyID9sbm5peC8gPW5peCAhMAoJMjMgP2xubml4L2ZpbGUgPWxubml4L2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgITIKCTI0ID9sbm5peC9uaXggPWxubml4L25peDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSAhMgoJMjUgP2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZiA9bG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmOiBUb28gbWFueSBsZXZlbHMgb2Ygc3ltYm9saWMgbGlua3MgITYyCi0tLQpuYW1lOiByZWFscGF0aC0yCmRlc2NyaXB0aW9uOgoJRW5zdXJlIHRoYXQgZXhhY3RseSB0d28gbGVhZGluZyBzbGFzaGVzIGFyZSBub3QgY29sbGFwc2VkCglQT1NJWCBndWFyYW50ZWVzIHRoaXMgZXhjZXB0aW9uLCBlLmcuIGZvciBVTkMgcGF0aHMgb24gQ3lnd2luCmNhdGVnb3J5OiBvczptaXJic2QKc3RkaW46CglsbiAtcyAvYmluIHQxCglsbiAtcyAvL2JpbiB0MgoJbG4gLXMgLy8vYmluIHQzCglyZWFscGF0aCAvYmluCglyZWFscGF0aCAvL2JpbgoJcmVhbHBhdGggLy8vYmluCglyZWFscGF0aCAvdXNyL2JpbgoJcmVhbHBhdGggL3Vzci8vYmluCglyZWFscGF0aCAvdXNyLy8vYmluCglyZWFscGF0aCB0MQoJcmVhbHBhdGggdDIKCXJlYWxwYXRoIHQzCglybSAtZiB0MSB0MiB0MwoJY2QgLy91c3IvYmluCglwd2QKCWNkIC4uL2xpYgoJcHdkCglyZWFscGF0aCAvL3Vzci9pbmNsdWRlLy4uL2JpbgpleHBlY3RlZC1zdGRvdXQ6CgkvYmluCgkvL2JpbgoJL2JpbgoJL3Vzci9iaW4KCS91c3IvYmluCgkvdXNyL2JpbgoJL2JpbgoJLy9iaW4KCS9iaW4KCS8vdXNyL2JpbgoJLy91c3IvbGliCgkvL3Vzci9iaW4KLS0tCm5hbWU6IGNyYXNoLTEKZGVzY3JpcHRpb246CglDcmFzaGVkIGR1cmluZyBNYXJjaCAyMDExLCBmaXhlZCBvbiB2ZXJuYWwgZXF1aW7FjXgg4pi6CmNhdGVnb3J5OiBvczptaXJic2Qsb3M6b3BlbmJzZApzdGRpbjoKCWV4cG9ydCBNQUxMT0NfT1BUSU9OUz1GR0pSU1gKCSIkX19wcm9nbmFtZSIgLWMgJ3g9JCh0ciB6IHIgPDw8YmF6KTsgZWNobyAkeCcKZXhwZWN0ZWQtc3Rkb3V0OgoJYmFyCi0tLQpuYW1lOiBkZWJpYW4tMTE3LTEKZGVzY3JpcHRpb246CglDaGVjayB0ZXN0IC0gYnVnIzQ2NTI1MApzdGRpbjoKCXRlc3QgXCggISAtZSBcKSA7IGVjaG8gJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJMQotLS0KbmFtZTogZGViaWFuLTExNy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGVzdCAtIGJ1ZyM0NjUyNTAKc3RkaW46Cgl0ZXN0IFwoICAtZSBcKSA7IGVjaG8gJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJMAotLS0KbmFtZTogZGViaWFuLTExNy0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGVzdCAtIGJ1ZyM0NjUyNTAKc3RkaW46Cgl0ZXN0ICEgLWUgIDsgZWNobyAkPwpleHBlY3RlZC1zdGRvdXQ6CgkxCi0tLQpuYW1lOiBkZWJpYW4tMTE3LTQKZGVzY3JpcHRpb246CglDaGVjayB0ZXN0IC0gYnVnIzQ2NTI1MApzdGRpbjoKCXRlc3QgIC1lICA7IGVjaG8gJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJMAotLS0KbmFtZTogY2FzZS16c2gKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHpzaCBjYXNlIHZhcmlhbnRzIHdvcmsKc3RkaW46CgljYXNlICdiJyBpbgoJICBhKSBlY2hvIGEgOzsKCSAgYikgZWNobyBiIDs7CgkgIGMpIGVjaG8gYyA7OwoJICAqKSBlY2hvIHggOzsKCWVzYWMKCWVjaG8gPQoJY2FzZSAnYicgaW4KCSAgYSkgZWNobyBhIDsmCgkgIGIpIGVjaG8gYiA7JgoJICBjKSBlY2hvIGMgOyYKCSAgKikgZWNobyB4IDsmCgllc2FjCgllY2hvID0KCWNhc2UgJ2InIGluCgkgIGEpIGVjaG8gYSA7fAoJICBiKSBlY2hvIGIgO3wKCSAgYykgZWNobyBjIDt8CgkgICopIGVjaG8geCA7fAoJZXNhYwpleHBlY3RlZC1zdGRvdXQ6CgliCgk9CgliCgljCgl4Cgk9CgliCgl4Ci0tLQpuYW1lOiBjYXNlLWJyYWNlcwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgY2FzZSBlbmQgdG9rZW5zIGFyZSBub3QgbWl4ZWQgdXAgKERlYmlhbiAjMjIwMjcyKQpzdGRpbjoKCWk9MAoJZm9yIHZhbHVlIGluICd4JyAnfScgJ2VzYWMnOyBkbwoJCXByaW50IC1uICIkKCgrK2kpKSgkdmFsdWUpYm91cm5lICIKCQljYXNlICR2YWx1ZSBpbgoJCX0pIGVjaG8gYnJhY2UgOzsKCQkqKSBlY2hvIG5vIDs7CgkJZXNhYwoJCXByaW50IC1uICIkKCgrK2kpKSgkdmFsdWUpa29ybiAiCgkJY2FzZSAkdmFsdWUgewoJCWVzYWMpIGVjaG8gZXNhYyA7OwoJCSopIGVjaG8gbm8gOzsKCQl9Cglkb25lCmV4cGVjdGVkLXN0ZG91dDoKCTEoeClib3VybmUgbm8KCTIoeClrb3JuIG5vCgkzKH0pYm91cm5lIGJyYWNlCgk0KH0pa29ybiBubwoJNShlc2FjKWJvdXJuZSBubwoJNihlc2FjKWtvcm4gZXNhYwotLS0KbmFtZTogY29tbWFuZC1zaGlmdApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgJ2NvbW1hbmQgc2hpZnQnIHdvcmtzCnN0ZGluOgoJZnVuY3Rpb24gc25jIHsKCQllY2hvICJiZWZvcmUJMD0nJDAnIDE9JyQxJyAyPSckMiciCgkJc2hpZnQKCQllY2hvICJhZnRlcgkwPSckMCcgMT0nJDEnIDI9JyQyJyIKCX0KCWZ1bmN0aW9uIHN3YyB7CgkJZWNobyAiYmVmb3JlCTA9JyQwJyAxPSckMScgMj0nJDInIgoJCWNvbW1hbmQgc2hpZnQKCQllY2hvICJhZnRlcgkwPSckMCcgMT0nJDEnIDI9JyQyJyIKCX0KCWVjaG8gPSB3aXRob3V0IGNvbW1hbmQKCXNuYyDkuIAg5LqMCgllY2hvID0gd2l0aCBjb21tYW5kCglzd2Mg5LiAIOS6jAoJZWNobyA9IGRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJPSB3aXRob3V0IGNvbW1hbmQKCWJlZm9yZQkwPSdzbmMnIDE9J+S4gCcgMj0n5LqMJwoJYWZ0ZXIJMD0nc25jJyAxPSfkuownIDI9JycKCT0gd2l0aCBjb21tYW5kCgliZWZvcmUJMD0nc3djJyAxPSfkuIAnIDI9J+S6jCcKCWFmdGVyCTA9J3N3YycgMT0n5LqMJyAyPScnCgk9IGRvbmUKLS0tCm5hbWU6IGNvbW1hbmQtc2V0CmRlc2NyaXB0aW9uOgoJU2FtZSBidXQgd2l0aCBzZXQKc3RkaW46CglzaG93YXJncygpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIGVjaG8gLW4gIjwkc19hcmc+ICI7IGRvbmU7IGVjaG8gLjsgfQoJc2hvd2FyZ3MgMSAiJEAiCglzZXQgLS0gZm9vIGJhciBiYXoKCXNob3dhcmdzIDIgIiRAIgoJY29tbWFuZCBzZXQgLS0gbWlhdSAnbWVvdyBueWFvJwoJc2hvd2FyZ3MgMyAiJEAiCmV4cGVjdGVkLXN0ZG91dDoKCTwxPiAuCgk8Mj4gPGZvbz4gPGJhcj4gPGJhej4gLgoJPDM+IDxtaWF1PiA8bWVvdyBueWFvPiAuCi0tLQpuYW1lOiBjb21tYW5kLXJlYWRvbmx5CmRlc2NyaXB0aW9uOgoJVGhlc2Ugc2hvdWxkIG5vdCBleGl0IG9uIGVycm9yIHdoZW4gcHJlZml4ZWQKc3RkaW46CglleGVjIDI+L2Rldi9udWxsCgkiJF9fcHJvZ25hbWUiIC1jICdyZWFkb25seSB2OyBleHBvcnQgdj1mb28gfHwgZWNobyBvaycKCWVjaG8gZWY9JD8KCSIkX19wcm9nbmFtZSIgLWMgJ3JlYWRvbmx5IHY7IGNvbW1hbmQgZXhwb3J0IHY9Zm9vIHx8IGVjaG8gb2snCgllY2hvIGVuPSQ/CgkiJF9fcHJvZ25hbWUiIC1jICdyZWFkb25seSB2OyByZWFkb25seSB2PWZvbyB8fCBlY2hvIG9rJwoJZWNobyByZj0kPwoJIiRfX3Byb2duYW1lIiAtYyAncmVhZG9ubHkgdjsgY29tbWFuZCByZWFkb25seSB2PWZvbyB8fCBlY2hvIG9rJwoJZWNobyBybj0kPwpleHBlY3RlZC1zdGRvdXQ6CgllZj0yCglvawoJZW49MAoJcmY9MgoJb2sKCXJuPTAKLS0tCm5hbWU6IGNvbW1hbmQtZG90LXJlZ3Jlc3Npb24KZGVzY3JpcHRpb246CglDaGVjayBhIHJlZ3Jlc3Npb24gaW4gZml4aW5nIHRoZSBhYm92ZSBkb2VzIG5vdCBhcHBlYXIKc3RkaW46CgljYXQgPnRlc3QubWtzaCA8PFxFT0YKCXNldCAtLSBvbmUgdHdvCglzaGlmdAoJZm9yIHNfYXJnIGluICIkIyIgIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuCglFT0YKCSIkX19wcm9nbmFtZSIgLWMgJy4gLi90ZXN0Lm1rc2gnIGR1bW15IG9oIGRlYXIgdGhpcyBpcyBub3QgZ29vZAoJZWNobyA9CgkiJF9fcHJvZ25hbWUiIC1jICdjb21tYW5kIC4gLi90ZXN0Lm1rc2gnIGR1bW15IG9oIGRlYXIgdGhpcyBpcyBub3QgZ29vZApleHBlY3RlZC1zdGRvdXQ6Cgk8MT4gPHR3bz4gLgoJPQoJPDE+IDx0d28+IC4KLS0tCm5hbWU6IGNvbW1hbmQtcHZWLXBvc2l4LXByaW9yaXRpZXMKZGVzY3JpcHRpb246CglGb3IgUE9TSVggY29tcGF0aWJpbGl0eSwgY29tbWFuZCAtdiBzaG91bGQgZmluZCBhbGlhc2VzIGFuZCByZXNlcnZlZAoJd29yZHMsIGFuZCBjb21tYW5kIC1wW3ZWXSBzaG91bGQgZmluZCBhbGlhc2VzLCByZXNlcnZlZCB3b3JkcywgYW5kCglidWlsdGlucyBvdmVyIGV4dGVybmFsIGNvbW1hbmRzLgpzdGRpbjoKCSMgZXh0cmEgY2hlY2tzIHByZXAKCW1rZGlyIG1ycgoJOj5tcnIvbWlhdQoJY2htb2QgK3ggbXJyL21pYXUKCSMgcHJpb3JpdGllcwoJUEFUSD0vYmluOi91c3IvYmluCglhbGlhcyBmb289ImJhciBiYXoiCglhbGlhcyAnW2FiXT06JwoJYmFyKCkgeyA6OyB9Cglmb3Igd29yZCBpbiAnaWYnICdmb28nICdiYXInICdzZXQnICd0cnVlJyAnW2FiXSc7IGRvCgkJY29tbWFuZCAtdiAiJHdvcmQiCgkJY29tbWFuZCAtcHYgIiR3b3JkIgoJCWNvbW1hbmQgLVYgIiR3b3JkIgoJCWNvbW1hbmQgLXBWICIkd29yZCIKCWRvbmUKCSMgZXh0cmEgY2hlY2tzCglhbGlhcyAnW2FiXScKCXdoZW5jZSAnW2FiXScKCVBBVEg9bXJyCgljYXNlICQoY29tbWFuZCAtdiBtaWF1KSB7CgkobXJyL21pYXUpIGVjaG8gZmFpbCA7OwoJKCEoLyp8W0EtWl06LyopKSBlY2hvIGZhaWwyIDs7CgkoJFBXRC9tcnIvbWlhdSkgZWNobyBvayA7OwoJKC8qfFtBLVpdOi8qKSBlY2hvIHB3ZCBiYWQ/IDs7CgkoKikgZWNobyBub3QgcmVhY2hlZCA7OwoJfQpleHBlY3RlZC1zdGRvdXQ6CglpZgoJaWYKCWlmIGlzIGEgcmVzZXJ2ZWQgd29yZAoJaWYgaXMgYSByZXNlcnZlZCB3b3JkCglhbGlhcyBmb289J2JhciBiYXonCglhbGlhcyBmb289J2JhciBiYXonCglmb28gaXMgYW4gYWxpYXMgZm9yICdiYXIgYmF6JwoJZm9vIGlzIGFuIGFsaWFzIGZvciAnYmFyIGJheicKCWJhcgoJYmFyCgliYXIgaXMgYSBmdW5jdGlvbgoJYmFyIGlzIGEgZnVuY3Rpb24KCXNldAoJc2V0CglzZXQgaXMgYSBzcGVjaWFsIHNoZWxsIGJ1aWx0aW4KCXNldCBpcyBhIHNwZWNpYWwgc2hlbGwgYnVpbHRpbgoJdHJ1ZQoJdHJ1ZQoJdHJ1ZSBpcyBhIHNoZWxsIGJ1aWx0aW4KCXRydWUgaXMgYSBzaGVsbCBidWlsdGluCglhbGlhcyAnW2FiXSc9OgoJYWxpYXMgJ1thYl0nPToKCSdbYWJdJyBpcyBhbiBhbGlhcyBmb3IgOgoJJ1thYl0nIGlzIGFuIGFsaWFzIGZvciA6CgknW2FiXSc9OgoJOgoJb2sKLS0tCm5hbWU6IHdoZW5jZS1wcmVzZXJ2ZS10cmFkaXRpb24KZGVzY3JpcHRpb246CglUaGlzIHJlZ3Jlc3Npb24gdGVzdCBpcyB0byBlbnN1cmUgdGhhdCB0aGUgUE9TSVggY29tcGF0aWJpbGl0eQoJY2hhbmdlcyBmb3IgJ2NvbW1hbmQnIChzZWUgcHJldmlvdXMgdGVzdCkgZG8gbm90IGFmZmVjdCB0cmFkaXRpb25hbAoJJ3doZW5jZScgYmVoYXZpb3VyLgpjYXRlZ29yeTogb3M6bWlyYnNkCnN0ZGluOgoJUEFUSD0vYmluOi91c3IvYmluCglhbGlhcyBmb289ImJhciBiYXoiCgliYXIoKSB7IDo7IH0KCWZvciB3b3JkIGluICdpZicgJ2ZvbycgJ2JhcicgJ3NldCcgJ3RydWUnOyBkbwoJCXdoZW5jZSAiJHdvcmQiCgkJd2hlbmNlIC1wICIkd29yZCIKCQl3aGVuY2UgLXYgIiR3b3JkIgoJCXdoZW5jZSAtcHYgIiR3b3JkIgoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglpZgoJaWYgaXMgYSByZXNlcnZlZCB3b3JkCglpZiBub3QgZm91bmQKCSdiYXIgYmF6JwoJZm9vIGlzIGFuIGFsaWFzIGZvciAnYmFyIGJheicKCWZvbyBub3QgZm91bmQKCWJhcgoJYmFyIGlzIGEgZnVuY3Rpb24KCWJhciBub3QgZm91bmQKCXNldAoJc2V0IGlzIGEgc3BlY2lhbCBzaGVsbCBidWlsdGluCglzZXQgbm90IGZvdW5kCgl0cnVlCgkvYmluL3RydWUKCXRydWUgaXMgYSBzaGVsbCBidWlsdGluCgl0cnVlIGlzIGEgdHJhY2tlZCBhbGlhcyBmb3IgL2Jpbi90cnVlCi0tLQpuYW1lOiBkdWZmcy1kZXZpY2UKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBjb21waWxlciBkaWQgbm90IG9wdGltaXNlLWJyZWFrIHRoZW0KCShsZXguYyBoYXMgZ290IGEgc2ltaWxhciBvbmUgaW4gU0hFUkVERUxJTSkKY2F0ZWdvcnk6ICFzaGVsbDpmYXV4LWViY2RpYywhc2hlbGw6ZWJjZGljLXllcwpzdGRpbjoKCXNldCArVQoJcz0KCXR5cGVzZXQgLWkxIGk9MAoJd2hpbGUgKCggKytpIDwgMjU2ICkpOyBkbwoJCXMrPSR7aSMxI30KCWRvbmUKCXMrPSQnXHhDMlx4QTBceEUyXHg4Mlx4QUNceEVGXHhCRlx4QkRceEVGXHhCRlx4QkVceEVGXHhCRlx4QkZceEYwXHg5MFx4ODBceDgwLicKCXR5cGVzZXQgLXAgcwpleHBlY3RlZC1zdGRvdXQ6Cgl0eXBlc2V0IHM9JCdcMDAxXDAwMlwwMDNcMDA0XDAwNVwwMDZcYVxiXHRcblx2XGZcclwwMTZcMDE3XDAyMFwwMjFcMDIyXDAyM1wwMjRcMDI1XDAyNlwwMjdcMDMwXDAzMVwwMzJcRVwwMzRcMDM1XDAzNlwwMzcgISIjJCUmXDA0NygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5cMTc3XDIwMFwyMDFcMjAyXDIwM1wyMDRcMjA1XDIwNlwyMDdcMjEwXDIxMVwyMTJcMjEzXDIxNFwyMTVcMjE2XDIxN1wyMjBcMjIxXDIyMlwyMjNcMjI0XDIyNVwyMjZcMjI3XDIzMFwyMzFcMjMyXDIzM1wyMzRcMjM1XDIzNlwyMzdcMjQwXDI0MVwyNDJcMjQzXDI0NFwyNDVcMjQ2XDI0N1wyNTBcMjUxXDI1MlwyNTNcMjU0XDI1NVwyNTZcMjU3XDI2MFwyNjFcMjYyXDI2M1wyNjRcMjY1XDI2NlwyNjdcMjcwXDI3MVwyNzJcMjczXDI3NFwyNzVcMjc2XDI3N1wzMDBcMzAxXDMwMlwzMDNcMzA0XDMwNVwzMDZcMzA3XDMxMFwzMTFcMzEyXDMxM1wzMTRcMzE1XDMxNlwzMTdcMzIwXDMyMVwzMjJcMzIzXDMyNFwzMjVcMzI2XDMyN1wzMzBcMzMxXDMzMlwzMzNcMzM0XDMzNVwzMzZcMzM3XDM0MFwzNDFcMzQyXDM0M1wzNDRcMzQ1XDM0NlwzNDdcMzUwXDM1MVwzNTJcMzUzXDM1NFwzNTVcMzU2XDM1N1wzNjBcMzYxXDM2MlwzNjNcMzY0XDM2NVwzNjZcMzY3XDM3MFwzNzFcMzcyXDM3M1wzNzRcMzc1XDM3NlwzNzdcdTAwQTBcdTIwQUNcdUZGRkRcMzU3XDI3N1wyNzZcMzU3XDI3N1wyNzdcMzYwXDIyMFwyMDBcMjAwLicKLS0tCm5hbWU6IGR1ZmZzLWRldmljZS1lYmNkaWMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBjb21waWxlciBkaWQgbm90IG9wdGltaXNlLWJyZWFrIHRoZW0KY2F0ZWdvcnk6ICFzaGVsbDplYmNkaWMtbm8Kc3RkaW46CglzZXQgK1UKCXM9Cgl0eXBlc2V0IC1pMSBpPTAKCXdoaWxlICgoICsraSA8IDI1NiApKTsgZG8KCQlzKz0ke2kjMSN9Cglkb25lCgkjcys9JCdceEMyXHhBMFx4RTJceDgyXHhBQ1x4RUZceEJGXHhCRFx4RUZceEJGXHhCRVx4RUZceEJGXHhCRlx4RjBceDkwXHg4MFx4ODAuJyAjWFhYCgl0eXBlc2V0IC1wIHMKZXhwZWN0ZWQtc3Rkb3V0OgoJdHlwZXNldCBzPSQnXDAwMVwwMDJcMDAzXDAwNFx0XDAwNlwwMDdcMDEwXDAxMVwwMTJcdlxmXHJcMDE2XDAxN1wwMjBcMDIxXDAyMlwwMjNcMDI0XG5cYlwwMjdcMDMwXDAzMVwwMzJcMDMzXDAzNFwwMzVcMDM2XDAzN1wwNDBcMDQxXDA0MlwwNDNcMDQ0XDA0NVwwNDZcRVwwNTBcMDUxXDA1MlwwNTNcMDU0XDA1NVwwNTZcYVwwNjBcMDYxXDA2MlwwNjNcMDY0XDA2NVwwNjZcMDY3XDA3MFwwNzFcMDcyXDA3M1wwNzRcMDc1XDA3NlwwNzcgoOLk4OHj5efxoi48KCt8Junq6+jt7u/s3yEkKik7Xi0vwsTAwcPFx9GmLCVfPj/4ycrLyM3Oz8xgOiNAXDE3NT0i2GFiY2RlZmdoaau78P3+sbBqa2xtbm9wcXKquua4xqS1fnN0dXZ3eHl6ob/QW96urKOlt6mntry9vt2or12013tBQkNERUZHSEmt9Pby8/V9SktMTU5PUFFSufv8+fr/XFz3U1RVVldYWVqy1NbS09UwMTIzNDU2Nzg5s9vc2dpcMzc3JwotLS0KbmFtZTogZHVmZnMtZGV2aWNlLWZhdXgtRUJDRElDCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgY29tcGlsZXIgZGlkIG5vdCBvcHRpbWlzZS1icmVhayB0aGVtCmNhdGVnb3J5OiBzaGVsbDpmYXV4LWViY2RpYwpzdGRpbjoKCXNldCArVQoJcz0KCXR5cGVzZXQgLWkxIGk9MAoJd2hpbGUgKCggKytpIDwgMjU2ICkpOyBkbwoJCXMrPSR7aSMxI30KCWRvbmUKCXMrPSQnXHhDMlx4QTBceEUyXHg4Mlx4QUNceEVGXHhCRlx4QkRceEVGXHhCRlx4QkVceEVGXHhCRlx4QkZceEYwXHg5MFx4ODBceDgwLicKCXR5cGVzZXQgLXAgcwpleHBlY3RlZC1zdGRvdXQ6Cgl0eXBlc2V0IHM9JCdcMDAxXDAwMlwwMDNcMDA0XDAwNVwwMDZcYVxiXHRcblx2XGZcclwwMTZcMDE3XDAyMFwwMjFcMDIyXDAyM1wwMjRcMDI1XDAyNlwwMjdcMDMwXDAzMVwwMzJcRVwwMzRcMDM1XDAzNlwwMzcgISIjJCUmXDA0NygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5cMTc3XDIwMFwyMDFcMjAyXDIwM1wyMDRcMjA1XDIwNlwyMDdcMjEwXDIxMVwyMTJcMjEzXDIxNFwyMTVcMjE2XDIxN1wyMjBcMjIxXDIyMlwyMjNcMjI0XDIyNVwyMjZcMjI3XDIzMFwyMzFcMjMyXDIzM1wyMzRcMjM1XDIzNlwyMzegoaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v9cdTAwQTBcdTIwQUNcdUZGRkTvv77vv7/wXDIyMFwyMDBcMjAwLicKLS0tCm5hbWU6IHN0YXRlcHRyLXVuZGVyZmxvdwpkZXNjcmlwdGlvbjoKCVRoaXMgY2hlY2sgb3ZlcmZsb3dzIGFuIFhyZXN0cG9zIHN0b3JlZCBpbiBhIHNob3J0IGluIFI0MApjYXRlZ29yeTogZmFzdGJveApzdGRpbjoKCWZ1bmN0aW9uIExiNjRkZWNvZGUgewoJCVtbIC1vIHV0ZjgtbW9kZSBdXTsgbG9jYWwgdT0kPwoJCXNldCArVQoJCWxvY2FsIGMgcz0iJCoiIHQ9CgkJW1sgLW4gJHMgXV0gfHwgeyBzPSQoY2F0O3ByaW50IHgpOyBzPSR7cyV4fTsgfQoJCWxvY2FsIC1pIGk9MCBuPSR7I3N9IHA9MCB2IHgKCQlsb2NhbCAtaTE2IG8KCQoJCXdoaWxlICgoIGkgPCBuICkpOyBkbwoJCQljPSR7czooaSsrKToxfQoJCQljYXNlICRjIHsKCQkJKD0pCWJyZWFrIDs7CgkJCShbQS1aXSkJKCggdiA9IDEjJGMgLSA2NSApKSA7OwoJCQkoW2Etel0pCSgoIHYgPSAxIyRjIC0gNzEgKSkgOzsKCQkJKFswLTldKQkoKCB2ID0gMSMkYyArIDQgKSkgOzsKCQkJKCspCXY9NjIgOzsKCQkJKC8pCXY9NjMgOzsKCQkJKCopCWNvbnRpbnVlIDs7CgkJCX0KCQkJKCggeCA9ICh4IDw8IDYpIHwgdiApKQoJCQljYXNlICQoKHArKykpIHsKCQkJKDApCWNvbnRpbnVlIDs7CgkJCSgxKQkoKCBvID0gKHggPj4gNCkgJiAyNTUgKSkgOzsKCQkJKDIpCSgoIG8gPSAoeCA+PiAyKSAmIDI1NSApKSA7OwoJCQkoMykJKCggbyA9IHggJiAyNTUgKSkKCQkJCXA9MAoJCQkJOzsKCQkJfQoJCQl0PSR0XFx4JHtvIzE2I30KCQlkb25lCgkJcHJpbnQgLW4gJHQKCQkoKCB1ICkpIHx8IHNldCAtVQoJfQoJCglpPS0xCglzPQoJd2hpbGUgKCggKytpIDwgMTIxMjAgKSk7IGRvCgkJcys9YQoJZG9uZQoJTGI2NGRlY29kZSAkcyA+L2Rldi9udWxsCi0tLQpuYW1lOiB4dHJhY2UtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgInNldCAteCIgZG9lc24ndCByZWRpcmVjdCB0b28gcXVpY2tseQpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiID5iYXNoCgljYXQgPj5iYXNoIDw8J0VPRicKCWVjaG8gJ0dOVSBiYXNoLCB2ZXJzaW9uIDIuMDViLjAoMSktcmVsZWFzZSAoaTM4Ni1lY2NlLW1pcmJzZDEwKQoJQ29weXJpZ2h0IChDKSAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLicKCUVPRgoJY2htb2QgK3ggYmFzaAoJIiRfX3Byb2duYW1lIiAteGMgJ2Zvbz0kKC4vYmFzaCAtLXZlcnNpb24gMj4mMSB8IHNlZCBxKTsgZWNobyAiPSRmb289IicKZXhwZWN0ZWQtc3Rkb3V0OgoJPUdOVSBiYXNoLCB2ZXJzaW9uIDIuMDViLjAoMSktcmVsZWFzZSAoaTM4Ni1lY2NlLW1pcmJzZDEwKT0KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvLiovCi0tLQpuYW1lOiB4dHJhY2UtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgInNldCAteCIgaXMgb2ZmIGR1cmluZyBQUzQgZXhwYW5zaW9uCnN0ZGluOgoJZigpIHsKCQlwcmludCAtbiAiKGYxOiQtKSIKCQlzZXQgLXgKCQlwcmludCAtbiAiKGYyOiQtKSIKCX0KCVBTND0nWyhwOiQtKSQoZildICcKCXByaW50ICIobzA6JC0pIgoJc2V0IC14IC1vIGluaGVyaXQteHRyYWNlCglwcmludCAiKG8xOiQtKSIKCXNldCAreAoJcHJpbnQgIihvMjokLSkiCmV4cGVjdGVkLXN0ZG91dDoKCShvMDpzaCkKCShvMTpzaHgpCgkobzI6c2gpCmV4cGVjdGVkLXN0ZGVycjoKCVsocDpzaCkoZjE6c2gpKGYyOnNoKV0gcHJpbnQgJyhvMTpzaHgpJwoJWyhwOnNoKShmMTpzaCkoZjI6c2gpXSBzZXQgK3gKLS0tCm5hbWU6IGZrc2gtZmxhZ3MKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IEZLU0ggZnVuY3Rpb25zIGhhdmUgdGhlaXIgb3duIHNoZWxsIGZsYWdzCmNhdGVnb3J5OiBzaGVsbDpsZWdhY3ktbm8Kc3RkaW46CglbWyAkS1NIX1ZFUlNJT04gPSBWZXJzaW9uKiBdXSAmJiBzZXQgK0IKCWZ1bmN0aW9uIGZvbyB7CgkJc2V0ICtmCgkJc2V0IC1lCgkJZWNobyAyICIkey0vc30iIC4KCX0KCXNldCAtZmgKCWVjaG8gMSAiJHstL3N9IiAuCglmb28KCWVjaG8gMyAiJHstL3N9IiAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgZmggLgoJMiBlaCAuCgkzIGZoIC4KLS0tCm5hbWU6IGZrc2gtZmxhZ3MtbGVnYWN5CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBldmVuIEZLU0ggZnVuY3Rpb25zIHNoYXJlIHRoZSBzaGVsbCBmbGFncwpjYXRlZ29yeTogc2hlbGw6bGVnYWN5LXllcwpzdGRpbjoKCVtbICRLU0hfVkVSU0lPTiA9IFZlcnNpb24qIF1dICYmIHNldCArQgoJZm9vKCkgewoJCXNldCArZgoJCXNldCAtZQoJCWVjaG8gMiAiJHstL3N9IiAuCgl9CglzZXQgLWZoCgllY2hvIDEgIiR7LS9zfSIgLgoJZm9vCgllY2hvIDMgIiR7LS9zfSIgLgpleHBlY3RlZC1zdGRvdXQ6CgkxIGZoIC4KCTIgZWggLgoJMyBlaCAuCi0tLQpuYW1lOiBmc2gtZmxhZ3MKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICFGS1NIIGZ1bmN0aW9ucyBzaGFyZSB0aGUgc2hlbGwgZmxhZ3MKc3RkaW46CglbWyAkS1NIX1ZFUlNJT04gPSBWZXJzaW9uKiBdXSAmJiBzZXQgK0IKCWZvbygpIHsKCQlzZXQgK2YKCQlzZXQgLWUKCQllY2hvIDIgIiR7LS9zfSIgLgoJfQoJc2V0IC1maAoJZWNobyAxICIkey0vc30iIC4KCWZvbwoJZWNobyAzICIkey0vc30iIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSBmaCAuCgkyIGVoIC4KCTMgZWggLgotLS0K