IyAkTWlyT1M6IHNyYy9iaW4vbWtzaC9jaGVjay50LHYgMS44MTIgMjAxOS8wMy8wMSAxNjoxNzoyOSB0ZyBFeHAgJAojIC0qLSBtb2RlOiBzaCAtKi0KIy0KIyBDb3B5cmlnaHQgwqkgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwKIwkgICAgICAyMDExLCAyMDEyLCAyMDEzLCAyMDE0LCAyMDE1LCAyMDE2LCAyMDE3LCAyMDE4LAojCSAgICAgIDIwMTkKIwltaXJhYmlsb3MgPG1AbWlyYnNkLm9yZz4KIwojIFByb3ZpZGVkIHRoYXQgdGhlc2UgdGVybXMgYW5kIGRpc2NsYWltZXIgYW5kIGFsbCBjb3B5cmlnaHQgbm90aWNlcwojIGFyZSByZXRhaW5lZCBvciByZXByb2R1Y2VkIGluIGFuIGFjY29tcGFueWluZyBkb2N1bWVudCwgcGVybWlzc2lvbgojIGlzIGdyYW50ZWQgdG8gZGVhbCBpbiB0aGlzIHdvcmsgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHVu4oCQCiMgbGltaXRlZCByaWdodHMgdG8gdXNlLCBwdWJsaWNseSBwZXJmb3JtLCBkaXN0cmlidXRlLCBzZWxsLCBtb2RpZnksCiMgbWVyZ2UsIGdpdmUgYXdheSwgb3Igc3VibGljZW5jZS4KIwojIFRoaXMgd29yayBpcyBwcm92aWRlZCDigJxBUyBJU+KAnSBhbmQgV0lUSE9VVCBXQVJSQU5UWSBvZiBhbnkga2luZCwgdG8KIyB0aGUgdXRtb3N0IGV4dGVudCBwZXJtaXR0ZWQgYnkgYXBwbGljYWJsZSBsYXcsIG5laXRoZXIgZXhwcmVzcyBub3IKIyBpbXBsaWVkOyB3aXRob3V0IG1hbGljaW91cyBpbnRlbnQgb3IgZ3Jvc3MgbmVnbGlnZW5jZS4gSW4gbm8gZXZlbnQKIyBtYXkgYSBsaWNlbnNvciwgYXV0aG9yIG9yIGNvbnRyaWJ1dG9yIGJlIGhlbGQgbGlhYmxlIGZvciBpbmRpcmVjdCwKIyBkaXJlY3QsIG90aGVyIGRhbWFnZSwgbG9zcywgb3Igb3RoZXIgaXNzdWVzIGFyaXNpbmcgaW4gYW55IHdheSBvdXQKIyBvZiBkZWFsaW5nIGluIHRoZSB3b3JrLCBldmVuIGlmIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2gKIyBkYW1hZ2Ugb3IgZXhpc3RlbmNlIG9mIGEgZGVmZWN0LCBleGNlcHQgcHJvdmVuIHRoYXQgaXQgcmVzdWx0cyBvdXQKIyBvZiBzYWlkIHBlcnNvbuKAmXMgaW1tZWRpYXRlIGZhdWx0IHdoZW4gdXNpbmcgdGhlIHdvcmsgYXMgaW50ZW5kZWQuCiMtCiMgWW91IG1heSBhbHNvIHdhbnQgdG8gdGVzdCBJRlMgd2l0aCB0aGUgc2NyaXB0IGF0CiMgaHR0cDovL3d3dy5yZXNlYXJjaC5hdHQuY29tL35nc2YvcHVibGljL2lmcy5zaAojCiMgTW9yZSB0ZXN0c3VpdGVzIGF0OgojIGh0dHA6Ly9zdm53ZWIuZnJlZWJzZC5vcmcvYmFzZS9oZWFkL2Jpbi90ZXN0L3Rlc3RzL2xlZ2FjeV90ZXN0LnNoP3ZpZXc9Y28mY29udGVudC10eXBlPXRleHQlMkZwbGFpbgojCiMgSW50ZWdyYXRlZCB0ZXN0c3VpdGVzIGZyb206CiMgKDIwMTMvMTIvMDIgMjA6Mzk6NDQpIGh0dHA6Ly9jdnN3ZWIub3BlbmJzZC5vcmcvY2dpLWJpbi9jdnN3ZWIvc3JjL3JlZ3Jlc3MvYmluL2tzaC8/c29ydGJ5PWRhdGUKCmV4cGVjdGVkLXN0ZG91dDoKCUAoIylNSVJCU0QgS1NIIFI1NyAyMDE5LzAzLzAxCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYmFzZSB2ZXJzaW9uIG9mIGZ1bGwgc2hlbGwKc3RkaW46CgllY2hvICR7S1NIX1ZFUlNJT04lJScgKycqfQpuYW1lOiBLU0hfVkVSU0lPTgpjYXRlZ29yeTogIXNoZWxsOmxlZ2FjeS15ZXMKLS0tCmV4cGVjdGVkLXN0ZG91dDoKCUAoIylMRUdBQ1kgS1NIIFI1NyAyMDE5LzAzLzAxCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYmFzZSB2ZXJzaW9uIG9mIGxlZ2FjeSBzaGVsbApzdGRpbjoKCWVjaG8gJHtLU0hfVkVSU0lPTiUlJyArJyp9Cm5hbWU6IEtTSF9WRVJTSU9OLWxlZ2FjeQpjYXRlZ29yeTogIXNoZWxsOmxlZ2FjeS1ubwotLS0KbmFtZTogS1NIX1ZFUlNJT04tYXNjaWkKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBzaGVsbCB2ZXJzaW9uIHRhZyBkb2VzIG5vdCBpbmNsdWRlIEVCQ0RJQwpjYXRlZ29yeTogIXNoZWxsOmViY2RpYy15ZXMKc3RkaW46Cglmb3IgeCBpbiAkS1NIX1ZFUlNJT047IGRvCgkJW1sgJHggPSAnK0VCQ0RJQycgXV0gJiYgZXhpdCAxCglkb25lCglleGl0IDAKLS0tCm5hbWU6IEtTSF9WRVJTSU9OLWViY2RpYwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIHNoZWxsIHZlcnNpb24gdGFnIGluY2x1ZGVzIEVCQ0RJQwpjYXRlZ29yeTogIXNoZWxsOmViY2RpYy1ubwpzdGRpbjoKCWZvciB4IGluICRLU0hfVkVSU0lPTjsgZG8KCQlbWyAkeCA9ICcrRUJDRElDJyBdXSAmJiBleGl0IDAKCWRvbmUKCWV4aXQgMQotLS0KbmFtZTogS1NIX1ZFUlNJT04tYmlubW9kZQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIHNoZWxsIHZlcnNpb24gdGFnIGRvZXMgbm90IGluY2x1ZGUgVEVYVE1PREUKY2F0ZWdvcnk6ICFzaGVsbDp0ZXh0bW9kZS15ZXMKc3RkaW46Cglmb3IgeCBpbiAkS1NIX1ZFUlNJT047IGRvCgkJW1sgJHggPSAnK1RFWFRNT0RFJyBdXSAmJiBleGl0IDEKCWRvbmUKCWV4aXQgMAotLS0KbmFtZTogS1NIX1ZFUlNJT04tdGV4dG1vZGUKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBzaGVsbCB2ZXJzaW9uIHRhZyBpbmNsdWRlcyBURVhUTU9ERQpjYXRlZ29yeTogIXNoZWxsOnRleHRtb2RlLW5vCnN0ZGluOgoJZm9yIHggaW4gJEtTSF9WRVJTSU9OOyBkbwoJCVtbICR4ID0gJytURVhUTU9ERScgXV0gJiYgZXhpdCAwCglkb25lCglleGl0IDEKLS0tCm5hbWU6IHNlbGZ0ZXN0LTEKZGVzY3JpcHRpb246CglSZWdyZXNzaW9uIHRlc3Qgc2VsZi10ZXN0aW5nCnN0ZGluOgoJZWNobyAke2ZvbzotYmF6fQpleHBlY3RlZC1zdGRvdXQ6CgliYXoKLS0tCm5hbWU6IHNlbGZ0ZXN0LTIKZGVzY3JpcHRpb246CglSZWdyZXNzaW9uIHRlc3Qgc2VsZi10ZXN0aW5nCmVudi1zZXR1cDogIWZvbz1iYXIhCnN0ZGluOgoJZWNobyAke2ZvbzotYmF6fQpleHBlY3RlZC1zdGRvdXQ6CgliYXIKLS0tCm5hbWU6IHNlbGZ0ZXN0LTMKZGVzY3JpcHRpb246CglSZWdyZXNzaW9uIHRlc3Qgc2VsZi10ZXN0aW5nCmVudi1zZXR1cDogIUVOVj1mbm9yZCEKc3RkaW46CgllY2hvICI8JEVOVj4iCmV4cGVjdGVkLXN0ZG91dDoKCTxmbm9yZD4KLS0tCm5hbWU6IHNlbGZ0ZXN0LWV4ZWMKZGVzY3JpcHRpb246CglFbnN1cmUgdGhhdCB0aGUgdGVzdCBydW4gZGlyZWN0b3J5IChkZWZhdWx0IC90bXAgYnV0IGNhbiBiZSBjaGFuZ2VkCgl3aXRoIGNoZWNrLnBsIGZsYWcgLVQgb3IgdGVzdC5zaCAkVE1QRElSKSBpcyBub3QgbW91bnRlZCBub2V4ZWMsIGFzCgl3ZSBleGVjdXRlIHNjcmlwdHMgZnJvbSB0aGUgc2NyYXRjaCBkaXJlY3RvcnkgZHVyaW5nIHNldmVyYWwgdGVzdHMuCnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG5lY2hvIHRmJyA+bHEKCWNobW9kICt4IGxxCgkuL2xxCmV4cGVjdGVkLXN0ZG91dDoKCXRmCi0tLQpuYW1lOiBzZWxmdGVzdC1lbnYKZGVzY3JpcHRpb246CglKdXN0IG91dHB1dCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHNldCAoYWx3YXlzIGZhaWxzKQpjYXRlZ29yeTogZGlzYWJsZWQKc3RkaW46CglzZXQKLS0tCm5hbWU6IHNlbGZ0ZXN0LWRpcmVjdC1idWlsdGluLWNhbGwKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGRpcmVjdCBidWlsdGluIGNhbGxzIHdvcmsKc3RkaW46CglsbiAtcyAiJF9fcHJvZ25hbWUiIGNhdCB8fCBjcCAiJF9fcHJvZ25hbWUiIGNhdAoJbG4gLXMgIiRfX3Byb2duYW1lIiBlY2hvIHx8IGNwICIkX19wcm9nbmFtZSIgZWNobwoJLi9lY2hvIC1jICdlY2hvICBmb28nIHwgLi9jYXQgLXUKZXhwZWN0ZWQtc3Rkb3V0OgoJLWMgZWNobyAgZm9vCi0tLQpuYW1lOiBzZWxmdGVzdC1wYXRoc2VwLXVuaXgKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICRQQVRIU0VQIGlzIHNldCBjb3JyZWN0bHkuCmNhdGVnb3J5OiAhb3M6b3MyCnN0ZGluOgoJUEFUSFNFUD0uOyBleHBvcnQgUEFUSFNFUAoJIiRfX3Byb2duYW1lIiAtYyAncHJpbnQgLXIgLS0gJFBBVEhTRVAnCmV4cGVjdGVkLXN0ZG91dDoKCToKLS0tCm5hbWU6IHNlbGZ0ZXN0LXBhdGhzZXAtZG9zcGF0aApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgJFBBVEhTRVAgaXMgc2V0IGNvcnJlY3RseS4KY2F0ZWdvcnk6IG9zOm9zMgpzdGRpbjoKCVBBVEhTRVA9LjsgZXhwb3J0IFBBVEhTRVAKCSIkX19wcm9nbmFtZSIgLWMgJ3ByaW50IC1yIC0tICRQQVRIU0VQJwpleHBlY3RlZC1zdGRvdXQ6Cgk7Ci0tLQpuYW1lOiBzZWxmdGVzdC10dHktYWJzZW50CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhIGNvbnRyb2xsaW5nIHR0eSBpcyBub3QgcHJlc2VudCBhcyByZWdyZXNzOm5vLWN0dHkgd2FzIHVzZWQKCShpZiB0aGlzIHRlc3QgZmFpbHMgZm9yIHlvdSBETyBOT1QgUEFTUyByZWdyZXNzOm5vLWN0dHkgYW5kIGZpeCBldmVyeQoJb3RoZXIgdGVzdCB0aGF0IGZhaWxzOiB3aHkgdSB1c2UgaXQgaWYgdSBoYXogY3R0eT8pCmNhdGVnb3J5OiByZWdyZXNzOm5vLWN0dHkKZW52LXNldHVwOiAhRU5WPS4vZW52ZiEKZmlsZS1zZXR1cDogZmlsZSA2NDQgImVudmYiCglQUzE9WAphcmd1bWVudHM6ICEtaSEKc3RkaW46CgllY2hvIG9rCmV4cGVjdGVkLXN0ZG91dDoKCW9rCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL21rc2g6IHdhcm5pbmc6IHdvbid0IGhhdmUgZnVsbCBqb2IgY29udHJvbFxuWFgvCi0tLQpuYW1lOiBzZWxmdGVzdC10dHktcHJlc2VudApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYSBjb250cm9sbGluZyB0dHkgaXMgcHJlc2VudCBhcyByZWdyZXNzOm5vLWN0dHkgd2FzIG5vdCB1c2VkCm5lZWQtY3R0eTogeWVzCmVudi1zZXR1cDogIUVOVj0uL2VudmYhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJlbnZmIgoJUFMxPVgKYXJndW1lbnRzOiAhLWkhCnN0ZGluOgoJZWNobyBvawpleHBlY3RlZC1zdGRvdXQ6CglvawpleHBlY3RlZC1zdGRlcnI6ICEKCVhYCi0tLQpuYW1lOiBhbGlhcy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZWN1cnNpb24gaXMgZGV0ZWN0ZWQvYXZvaWRlZCBpbiBhbGlhc2VzLgpzdGRpbjoKCWFsaWFzIGZvb0Jhcj1mb29CYXIKCWZvb0JhcgoJZXhpdCAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2Zvb0Jhci4qbm90IGZvdW5kLiovCi0tLQpuYW1lOiBhbGlhcy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZWN1cnNpb24gaXMgZGV0ZWN0ZWQvYXZvaWRlZCBpbiBhbGlhc2VzLgpzdGRpbjoKCWFsaWFzIGZvb0Jhcj1iYXJGb28KCWFsaWFzIGJhckZvbz1mb29CYXIKCWZvb0JhcgoJYmFyRm9vCglleGl0IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvZm9vQmFyLipub3QgZm91bmQuKlxuLipiYXJGb28uKm5vdCBmb3VuZC8KLS0tCm5hbWU6IGFsaWFzLTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHJlY3Vyc2lvbiBpcyBkZXRlY3RlZC9hdm9pZGVkIGluIGFsaWFzZXMuCnN0ZGluOgoJYWxpYXMgRWNobz0nZWNobyAnCglhbGlhcyBmb29CYXI9YmFyRm9vCglhbGlhcyBiYXJGb289Zm9vQmFyCglFY2hvIGZvb0JhcgoJdW5hbGlhcyBiYXJGb28KCUVjaG8gZm9vQmFyCmV4cGVjdGVkLXN0ZG91dDoKCWZvb0JhcgoJYmFyRm9vCi0tLQpuYW1lOiBhbGlhcy00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhcyBleHBhbnNpb24gaXNuJ3QgZG9uZSBvbiBrZXl3b3JkcyAoaW4ga2V5d29yZAoJcG9zdGl0aW9ucykuCnN0ZGluOgoJYWxpYXMgRWNobz0nZWNobyAnCglhbGlhcyB3aGlsZT1XaGlsZQoJd2hpbGUgZmFsc2U7IGRvIGVjaG8gaGkgOyBkb25lCglFY2hvIHdoaWxlCmV4cGVjdGVkLXN0ZG91dDoKCVdoaWxlCi0tLQpuYW1lOiBhbGlhcy01CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhcyBleHBhbnNpb24gZG9uZSBhZnRlciBhbGlhcyB3aXRoIHRyYWlsaW5nIHNwYWNlLgpzdGRpbjoKCWFsaWFzIEVjaG89J2VjaG8gJwoJYWxpYXMgZm9vPSdiYXIgc3R1ZmYgJwoJYWxpYXMgYmFyPSdCYXIxIEJhcjIgJwoJYWxpYXMgc3R1ZmY9J1N0dWZmJwoJYWxpYXMgYmxhaD0nQmxhaCcKCUVjaG8gZm9vIGJsYWgKZXhwZWN0ZWQtc3Rkb3V0OgoJQmFyMSBCYXIyIFN0dWZmIEJsYWgKLS0tCm5hbWU6IGFsaWFzLTYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFsaWFzIGV4cGFuc2lvbiBkb25lIGFmdGVyIGFsaWFzIHdpdGggdHJhaWxpbmcgc3BhY2UuCnN0ZGluOgoJYWxpYXMgRWNobz0nZWNobyAnCglhbGlhcyBmb289J2JhciBiYXInCglhbGlhcyBiYXI9J0JhciAnCglhbGlhcyBibGFoPUJsYWgKCUVjaG8gZm9vIGJsYWgKZXhwZWN0ZWQtc3Rkb3V0OgoJQmFyIEJhciBCbGFoCi0tLQpuYW1lOiBhbGlhcy03CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhcyBleHBhbnNpb24gZG9uZSBhZnRlciBhbGlhcyB3aXRoIHRyYWlsaW5nIHNwYWNlCglhZnRlciBhIGtleXdvcmQuCnN0ZGluOgoJYWxpYXMgWD0nY2FzZSAnCglhbGlhcyBZPVoKCVggWSBpbiAnWScpIGVjaG8gaXMgeSA7OyBaKSBlY2hvIGlzIHogOzsgZXNhYwpleHBlY3RlZC1zdGRvdXQ6CglpcyB6Ci0tLQpuYW1lOiBhbGlhcy04CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBuZXdsaW5lcyBpbiBhbiBhbGlhcyBkb24ndCBjYXVzZSB0aGUgY29tbWFuZCB0byBiZSBsb3N0LgpzdGRpbjoKCWFsaWFzIGZvbz0nCgkKCQoJZWNobyBoaQoJCgkKCQoJZWNobyB0aGVyZQoJCgkKCScKCWZvbwpleHBlY3RlZC1zdGRvdXQ6CgloaQoJdGhlcmUKLS0tCm5hbWU6IGFsaWFzLTkKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHJlY3Vyc2lvbiBpcyBkZXRlY3RlZC9hdm9pZGVkIGluIGFsaWFzZXMuCglUaGlzIGNoZWNrIGZhaWxzIGZvciBzbG93IG1hY2hpbmVzIG9yIEN5Z3dpbiwgcmFpc2UKCXRoZSB0aW1lLWxpbWl0IGNsYXVzZSAoZS5nLiB0byA3KSBpZiB0aGlzIG9jY3Vycy4KdGltZS1saW1pdDogMwpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZWNobyB0ZicgPmxxCgljaG1vZCAreCBscQoJUEFUSD0kUFdEJFBBVEhTRVAkUEFUSAoJYWxpYXMgbHE9bHEKCWxxCgllY2hvID0gbm93CglpPWBscWAKCXByaW50IC1yIC0tICRpCgllY2hvID0gb3V0CglleGl0IDAKZXhwZWN0ZWQtc3Rkb3V0OgoJdGYKCT0gbm93Cgl0ZgoJPSBvdXQKLS0tCm5hbWU6IGFsaWFzLTEwCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZWN1cnNpb24gaXMgZGV0ZWN0ZWQvYXZvaWRlZCBpbiBhbGlhc2VzLgoJUmVncmVzc2lvbiwgaW50cm9kdWNlZCBkdXJpbmcgYW4gb2xkIGJ1Z2ZpeC4Kc3RkaW46CglhbGlhcyBmb289J3ByaW50IGhlbGxvICcKCWFsaWFzIGJhcj0nZm9vIHdvcmxkJwoJZWNobyAkKGJhcikKZXhwZWN0ZWQtc3Rkb3V0OgoJaGVsbG8gd29ybGQKLS0tCm5hbWU6IGFsaWFzLTExCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzcGVjaWFsIGFyZ3VtZW50IGhhbmRsaW5nIHN0aWxsIGFwcGxpZXMgd2l0aCBlc2NhcGVkIGFsaWFzZXMKc3RkaW46CglhbGlhcyBsb2NhbDE9J1x0eXBlc2V0JwoJYWxpYXMgbG9jYWwyPSdcXGJ1aWx0aW4gdHlwZXNldCcKCWZ1bmN0aW9uIGZvb2EgewoJCWxvY2FsMSB4PSQxIHk9egoJCXByaW50IC1yIC0tICIkeCwkeSIKCX0KCWZ1bmN0aW9uIGZvb2IgewoJCWxvY2FsMiB4PSQxIHk9egoJCXByaW50IC1yIC0tICIkeCwkeSIKCX0KCXg9MSB5PTI7IGZvb2EgJ2JhciAtIGJheicKCXg9MSB5PTI7IGZvb2IgJ2JhciAtIGJheicKZXhwZWN0ZWQtc3Rkb3V0OgoJYmFyIC0gYmF6LHoKCWJhciAtIGJheix6Ci0tLQpuYW1lOiBhbGlhcy0xMgpkZXNjcmlwdGlvbjoKCVNvbWV0aGluZyB3ZWlyZCBmcm9tIE1hcnRpam4gRGVra2VyCnN0ZGluOgoJYWxpYXMgZWNobz1wcmludAoJeCgpIHsgZWNobyBhOyAoZWNobyBiKTsgeD0kKGVjaG8gYyk7IH0KCXR5cGVzZXQgLWYgeAoJYWxpYXMgT1BFTj0neycgQ0xPU0U9J307JwoJeyBPUEVOIGVjaG8gaGkxOyBDTE9TRSB9Cgl2YXI9YHsgT1BFTiBlY2hvIGhpMjsgQ0xPU0UgfWAgJiYgZWNobyAiJHZhciIKCXZhcj0kKHsgT1BFTiBlY2hvIGhpMzsgQ0xPU0UgfSkgJiYgZWNobyAiJHZhciIKZXhwZWN0ZWQtc3Rkb3V0OgoJeCgpIHsKCQlccHJpbnQgYSAKCQkoIFxwcmludCBiICkgCgkJeD0kKFxwcmludCBjICkgCgl9IAoJaGkxCgloaTIKCWhpMwotLS0KbmFtZTogYXJpdGgtY29tcG91bmQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFyaXRobWV0aWMgZXhwcmVzc2lvbnMgYXJlIGNvbXBvdW5kIGNvbnN0cnVjdHMKc3RkaW46Cgl7ICEgKCggMCQoY2F0ID4mMikgKSkgPDw8MTsgfSA8PDwyCmV4cGVjdGVkLXN0ZGVycjoKCTEKLS0tCm5hbWU6IGFyaXRoLWxhenktMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgb25seSBvbmUgc2lkZSBvZiB0ZXJuYXJ5IG9wZXJhdG9yIGlzIGV2YWx1YXRlZApzdGRpbjoKCXg9aSs9MgoJeT1qKz0yCgl0eXBlc2V0IC1pIGk9MSBqPTEKCWVjaG8gJCgoMSA/IDIwIDogKHgrPTIpKSkKCWVjaG8gJGksJHgKCWVjaG8gJCgoMCA/ICh5Kz0yKSA6IDMwKSkKCWVjaG8gJGosJHkKZXhwZWN0ZWQtc3Rkb3V0OgoJMjAKCTEsaSs9MgoJMzAKCTEsais9MgotLS0KbmFtZTogYXJpdGgtbGF6eS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhc3NpZ25tZW50cyBub3QgZG9uZSBvbiBub24tZXZhbHVhdGVkIHNpZGUgb2YgdGVybmFyeQoJb3BlcmF0b3IKc3RkaW46Cgl4PWkrPTIKCXk9ais9MgoJdHlwZXNldCAtaSBpPTEgaj0xCgllY2hvICQoKDEgPyAyMCA6ICh4Kz0yKSkpCgllY2hvICRpLCR4CgllY2hvICQoKDAgPyAoeSs9MikgOiAzMCkpCgllY2hvICRpLCR5CmV4cGVjdGVkLXN0ZG91dDoKCTIwCgkxLGkrPTIKCTMwCgkxLGorPTIKLS0tCm5hbWU6IGFyaXRoLWxhenktMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYXNzaWdubWVudHMgbm90IGRvbmUgb24gbm9uLWV2YWx1YXRlZCBzaWRlIG9mIHRlcm5hcnkKCW9wZXJhdG9yIGFuZCB0aGlzIGNvbnN0cnVjdCBpcyBwYXJzZWQgY29ycmVjdGx5IChEZWJpYW4gIzQ0NTY1MSkKc3RkaW46Cgl4PTQKCXk9JCgoMCA/IHg9MSA6IDIpKQoJZWNobyA9ICR4ICR5ID0KZXhwZWN0ZWQtc3Rkb3V0OgoJPSA0IDIgPQotLS0KbmFtZTogYXJpdGgtbGF6eS00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBwcmV1bi9wb3N0dW4gbm90IGRvbmUgb24gbm9uLWV2YWx1YXRlZCBzaWRlIG9mIHRlcm5hcnkKCW9wZXJhdG9yCnN0ZGluOgoJKCggbSA9IG4gPSAwLCAxID8gbisrIDogbSsrID8gMiA6IDMgKSkKCWVjaG8gIigkbiwgJG0pIgoJbT0wOyBlY2hvICQoKCAwID8gKyttIDogMiApKTsgZWNobyAkbQoJbT0wOyBlY2hvICQoKCAwID8gbSsrIDogMiApKTsgZWNobyAkbQpleHBlY3RlZC1zdGRvdXQ6CgkoMSwgMCkKCTIKCTAKCTIKCTAKLS0tCm5hbWU6IGFyaXRoLWxhenktNS1hcnItbgpkZXNjcmlwdGlvbjogQ2hlY2sgbGF6eSBldmFsdWF0aW9uIHdpdGggc2lkZSBlZmZlY3RzCnN0ZGluOgoJYT0wOyBlY2hvICIkKCgwJiZiW2ErK10sYSkpIgpleHBlY3RlZC1zdGRvdXQ6CgkwCi0tLQpuYW1lOiBhcml0aC1sYXp5LTUtYXJyLXAKZGVzY3JpcHRpb246IENoZWNrIGxhenkgZXZhbHVhdGlvbiB3aXRoIHNpZGUgZWZmZWN0cwpzdGRpbjoKCWE9MDsgZWNobyAiJCgoMCYmKGJbYSsrXSksYSkpIgpleHBlY3RlZC1zdGRvdXQ6CgkwCi0tLQpuYW1lOiBhcml0aC1sYXp5LTUtc3RyLW4KZGVzY3JpcHRpb246IENoZWNrIGxhenkgZXZhbHVhdGlvbiB3aXRoIHNpZGUgZWZmZWN0cwpzdGRpbjoKCWE9MCBiPWErKzsgKCgwJiZiKSk7IGVjaG8gJGEKZXhwZWN0ZWQtc3Rkb3V0OgoJMAotLS0KbmFtZTogYXJpdGgtbGF6eS01LXN0ci1wCmRlc2NyaXB0aW9uOiBDaGVjayBsYXp5IGV2YWx1YXRpb24gd2l0aCBzaWRlIGVmZmVjdHMKc3RkaW46CglhPTAgYj1hKys7ICgoMCYmKGIpKSk7IGVjaG8gJGEKZXhwZWN0ZWQtc3Rkb3V0OgoJMAotLS0KbmFtZTogYXJpdGgtbGF6eS01LXRlcm4tbC1uCmRlc2NyaXB0aW9uOiBDaGVjayBsYXp5IGV2YWx1YXRpb24gd2l0aCBzaWRlIGVmZmVjdHMKc3RkaW46CglhPTA7IGVjaG8gIiQoKDA/YlthKytdOjk5OSxhKSkiCmV4cGVjdGVkLXN0ZG91dDoKCTAKLS0tCm5hbWU6IGFyaXRoLWxhenktNS10ZXJuLWwtcApkZXNjcmlwdGlvbjogQ2hlY2sgbGF6eSBldmFsdWF0aW9uIHdpdGggc2lkZSBlZmZlY3RzCnN0ZGluOgoJYT0wOyBlY2hvICIkKCgwPyhiW2ErK10pOjk5OSxhKSkiCmV4cGVjdGVkLXN0ZG91dDoKCTAKLS0tCm5hbWU6IGFyaXRoLWxhenktNS10ZXJuLXItbgpkZXNjcmlwdGlvbjogQ2hlY2sgbGF6eSBldmFsdWF0aW9uIHdpdGggc2lkZSBlZmZlY3RzCnN0ZGluOgoJYT0wOyBlY2hvICIkKCgxPzk5OTpiW2ErK10sYSkpIgpleHBlY3RlZC1zdGRvdXQ6CgkwCi0tLQpuYW1lOiBhcml0aC1sYXp5LTUtdGVybi1yLXAKZGVzY3JpcHRpb246IENoZWNrIGxhenkgZXZhbHVhdGlvbiB3aXRoIHNpZGUgZWZmZWN0cwpzdGRpbjoKCWE9MDsgZWNobyAiJCgoMT85OTk6KGJbYSsrXSksYSkpIgpleHBlY3RlZC1zdGRvdXQ6CgkwCi0tLQpuYW1lOiBhcml0aC10ZXJuYXJ5LXByZWMtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHByZWNlZGVuY2Ugb2YgdGVybmFyeSBvcGVyYXRvciB2cyBhc3NpZ25tZW50CnN0ZGluOgoJdHlwZXNldCAtaSB4PTIKCXk9JCgoMSA/IDIwIDogeCs9MikpCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKjouKjEgXD8gMjAgOiB4XCs9Mi4qbHZhbHVlLipcbiQvCi0tLQpuYW1lOiBhcml0aC10ZXJuYXJ5LXByZWMtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHByZWNlZGVuY2Ugb2YgdGVybmFyeSBvcGVyYXRvciB2cyBhc3NpZ25tZW50CnN0ZGluOgoJdHlwZXNldCAtaSB4PTIKCWVjaG8gJCgoMCA/IHgrPTIgOiAyMCkpCmV4cGVjdGVkLXN0ZG91dDoKCTIwCi0tLQpuYW1lOiBhcml0aC1wcmVjLTEKZGVzY3JpcHRpb246CglQcm92ZSBhcml0aG1ldGljIGV4cHJlc3Npb25zIHdpdGggZW1iZWRkZWQgcGFyYW1ldGVyCglzdWJzdGl0dXRpb25zIGNhbm5vdCBiZSBwYXJzZWQgYWhlYWQgb2YgdGltZQpzdGRpbjoKCWE9JzMgKyA0JwoJcHJpbnQgMSAkKCgyICogYSkpIC4KCXByaW50IDIgJCgoMiAqICRhKSkgLgpleHBlY3RlZC1zdGRvdXQ6CgkxIDE0IC4KCTIgMTAgLgotLS0KbmFtZTogYXJpdGgtZGl2LWFzc29jLTEKZGVzY3JpcHRpb246CglDaGVjayBhc3NvY2lhdGl2aXR5IG9mIGRpdmlzaW9uIG9wZXJhdG9yCnN0ZGluOgoJZWNobyAkKCgyMCAvIDIgLyAyKSkKZXhwZWN0ZWQtc3Rkb3V0OgoJNQotLS0KbmFtZTogYXJpdGgtZGl2LWJ5emVybwpkZXNjcmlwdGlvbjoKCUNoZWNrIGRpdmlzaW9uIGJ5IHplcm8gZXJyb3JzIG91dApzdGRpbjoKCXg9JChlY2hvICQoKDEgLyAwKSkpCgllY2hvID0kPzokeC4KZXhwZWN0ZWQtc3Rkb3V0OgoJPTE6LgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmRpdmlzb3IvCi0tLQpuYW1lOiBhcml0aC1kaXYtaW50bWluLWJ5LW1pbnVzb25lCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZGl2aXNpb24gb3ZlcmZsb3cgd3JhcHMgYXJvdW5kIHNpbGVudGx5CmNhdGVnb3J5OiBpbnQ6MzIKc3RkaW46CgllY2hvIHNpZ25lZDokKCgtMjE0NzQ4MzY0OCAvIC0xKSlyJCgoLTIxNDc0ODM2NDggJSAtMSkpLgoJZWNobyB1bnNpZ25lZDokKCgjIC0yMTQ3NDgzNjQ4IC8gLTEpKXIkKCgjIC0yMTQ3NDgzNjQ4ICUgLTEpKS4KZXhwZWN0ZWQtc3Rkb3V0OgoJc2lnbmVkOi0yMTQ3NDgzNjQ4cjAuCgl1bnNpZ25lZDowcjIxNDc0ODM2NDguCi0tLQpuYW1lOiBhcml0aC1kaXYtaW50bWluLWJ5LW1pbnVzb25lLTY0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgZGl2aXNpb24gb3ZlcmZsb3cgd3JhcHMgYXJvdW5kIHNpbGVudGx5CmNhdGVnb3J5OiBpbnQ6NjQKc3RkaW46CgllY2hvIHNpZ25lZDokKCgtOTIyMzM3MjAzNjg1NDc3NTgwOCAvIC0xKSlyJCgoLTkyMjMzNzIwMzY4NTQ3NzU4MDggJSAtMSkpLgoJZWNobyB1bnNpZ25lZDokKCgjIC05MjIzMzcyMDM2ODU0Nzc1ODA4IC8gLTEpKXIkKCgjIC05MjIzMzcyMDM2ODU0Nzc1ODA4ICUgLTEpKS4KZXhwZWN0ZWQtc3Rkb3V0OgoJc2lnbmVkOi05MjIzMzcyMDM2ODU0Nzc1ODA4cjAuCgl1bnNpZ25lZDowcjkyMjMzNzIwMzY4NTQ3NzU4MDguCi0tLQpuYW1lOiBhcml0aC1hc3NvcC1hc3NvYy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYXNzb2NpYXRpdml0eSBvZiBhc3NpZ25tZW50LW9wZXJhdG9yIG9wZXJhdG9yCnN0ZGluOgoJdHlwZXNldCAtaSBpPTEgaj0yIGs9MwoJZWNobyAkKChpICs9IGogKz0gaykpCgllY2hvICRpLCRqLCRrCmV4cGVjdGVkLXN0ZG91dDoKCTYKCTYsNSwzCi0tLQpuYW1lOiBhcml0aC1tYW5kYXRvcnkKZGVzY3JpcHRpb246CglQYXNzaW5nIG9mIHRoaXMgdGVzdCBpcyAqbWFuZGF0b3J5KiBmb3IgYSB2YWxpZCBta3NoIGV4ZWN1dGFibGUhCmNhdGVnb3J5OiBzaGVsbDpsZWdhY3ktbm8Kc3RkaW46Cgl0eXBlc2V0IC1pIHNhcmk9MAoJdHlwZXNldCAtVWkgdWFyaT0wCgl0eXBlc2V0IC1pIHg9MAoJcHJpbnQgLXIgLS0gJCgoeCsrKSk6JHNhcmk9JHVhcmkuICMwCglsZXQgLS1zYXJpIC0tdWFyaQoJcHJpbnQgLXIgLS0gJCgoeCsrKSk6JHNhcmk9JHVhcmkuICMxCglzYXJpPTIxNDc0ODM2NDcgdWFyaT0yMTQ3NDgzNjQ3CglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzIKCWxldCArK3NhcmkgKyt1YXJpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzMKCWxldCAtLXNhcmkgLS11YXJpCglsZXQgJ3NhcmkgKj0gMicgJ3VhcmkgKj0gMicKCWxldCArK3NhcmkgKyt1YXJpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzQKCWxldCArK3NhcmkgKyt1YXJpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzUKCXNhcmk9LTIxNDc0ODM2NDggdWFyaT0tMjE0NzQ4MzY0OAoJcHJpbnQgLXIgLS0gJCgoeCsrKSk6JHNhcmk9JHVhcmkuICM2CglsZXQgLS1zYXJpIC0tdWFyaQoJcHJpbnQgLXIgLS0gJCgoeCsrKSk6JHNhcmk9JHVhcmkuICM3CgkoKCBzYXJpID0gLTUgPj4gMSApKQoJKCgjIHVhcmkgPSAtNSA+PiAxICkpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzgKCSgoIHNhcmkgPSAtMiApKQoJKCgjIHVhcmkgPSBzYXJpICkpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzkKZXhwZWN0ZWQtc3Rkb3V0OgoJMDowPTAuCgkxOi0xPTQyOTQ5NjcyOTUuCgkyOjIxNDc0ODM2NDc9MjE0NzQ4MzY0Ny4KCTM6LTIxNDc0ODM2NDg9MjE0NzQ4MzY0OC4KCTQ6LTE9NDI5NDk2NzI5NS4KCTU6MD0wLgoJNjotMjE0NzQ4MzY0OD0yMTQ3NDgzNjQ4LgoJNzoyMTQ3NDgzNjQ3PTIxNDc0ODM2NDcuCgk4Oi0zPTIxNDc0ODM2NDUuCgk5Oi0yPTQyOTQ5NjcyOTQuCi0tLQpuYW1lOiBhcml0aC11bnNpZ25lZC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgdW5zaWduZWQgYXJpdGhtZXRpY3Mgd29yawpjYXRlZ29yeTogaW50OjMyCnN0ZGluOgoJIyBzaWduZWQgdnMgdW5zaWduZWQKCWVjaG8geDEgJCgoLTEpKSAkKCgjLTEpKQoJIyBjYWxjdWxhdGluZwoJdHlwZXNldCAtaSB2cwoJdHlwZXNldCAtVWkgdnUKCXZzPTQxMjM0NTY3ODk7IHZ1PTQxMjM0NTY3ODkKCWVjaG8geDIgJHZzICR2dQoJKCggdnMgJT0gMjE0NzQ4MzY0NyApKQoJKCggdnUgJT0gMjE0NzQ4MzY0NyApKQoJZWNobyB4MyAkdnMgJHZ1Cgl2cz00MTIzNDU2Nzg5OyB2dT00MTIzNDU2Nzg5CgkoKCAjIHZzICU9IDIxNDc0ODM2NDcgKSkKCSgoICMgdnUgJT0gMjE0NzQ4MzY0NyApKQoJZWNobyB4NCAkdnMgJHZ1CgkjIG1ha2Ugc3VyZSB0aGUgY2FsY3VsYXRpb24gZG9lcyBub3QgY2hhbmdlIHVuc2lnbmVkIGZsYWcKCXZzPTQxMjM0NTY3ODk7IHZ1PTQxMjM0NTY3ODkKCWVjaG8geDUgJHZzICR2dQoJIyBzaG9ydCBmb3JtCgllY2hvIHg2ICQoKCMgdnMgJSAyMTQ3NDgzNjQ3KSkgJCgoIyB2dSAlIDIxNDc0ODM2NDcpKQoJIyBhcnJheSByZWZzCglzZXQgLUEgdmEKCXZhWzE5NzU5NzMxNDJdPXJpZ2h0Cgl2YVs0MTIzNDU2Nzg5XT13cm9uZwoJZWNobyB4NyAke3ZhWyM0MTIzNDU2Nzg5JTIxNDc0ODM2NDddfQoJIyBtYWtlIHN1cmUgbXVsdGlwbGUgY2FsY3VsYXRpb25zIGRvbid0IGludGVyZmVyZSB3aXRoIGVhY2ggb3RoZXIKCWxldCAnIyBtY2EgPSAtNCAlIC0yJyAnIG1jYiA9IC00ICUgLTInCgllY2hvIHg4ICRtY2EgJG1jYgpleHBlY3RlZC1zdGRvdXQ6Cgl4MSAtMSA0Mjk0OTY3Mjk1Cgl4MiAtMTcxNTEwNTA3IDQxMjM0NTY3ODkKCXgzIC0xNzE1MTA1MDcgNDEyMzQ1Njc4OQoJeDQgMTk3NTk3MzE0MiAxOTc1OTczMTQyCgl4NSAtMTcxNTEwNTA3IDQxMjM0NTY3ODkKCXg2IDE5NzU5NzMxNDIgMTk3NTk3MzE0MgoJeDcgcmlnaHQKCXg4IC00IDAKLS0tCm5hbWU6IGFyaXRoLWxpbWl0MzItMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGFyaXRobWV0aWNzIGFyZSAzMiBiaXQKY2F0ZWdvcnk6IGludDozMgpzdGRpbjoKCSMgc2lnbmVkIHZzIHVuc2lnbmVkCgllY2hvIHgxICQoKC0xKSkgJCgoIy0xKSkKCSMgY2FsY3VsYXRpbmcKCXR5cGVzZXQgLWkgdnMKCXR5cGVzZXQgLVVpIHZ1Cgl2cz0yMTQ3NDgzNjQ3OyB2dT0yMTQ3NDgzNjQ3CgllY2hvIHgyICR2cyAkdnUKCWxldCB2cysrIHZ1KysKCWVjaG8geDMgJHZzICR2dQoJdnM9NDI5NDk2NzI5NTsgdnU9NDI5NDk2NzI5NQoJZWNobyB4NCAkdnMgJHZ1CglsZXQgdnMrKyB2dSsrCgllY2hvIHg1ICR2cyAkdnUKCWxldCB2cysrIHZ1KysKCWVjaG8geDYgJHZzICR2dQpleHBlY3RlZC1zdGRvdXQ6Cgl4MSAtMSA0Mjk0OTY3Mjk1Cgl4MiAyMTQ3NDgzNjQ3IDIxNDc0ODM2NDcKCXgzIC0yMTQ3NDgzNjQ4IDIxNDc0ODM2NDgKCXg0IC0xIDQyOTQ5NjcyOTUKCXg1IDAgMAoJeDYgMSAxCi0tLQpuYW1lOiBhcml0aC1saW1pdDY0LTEKZGVzY3JpcHRpb246CglDaGVjayBpZiBhcml0aG1ldGljcyBhcmUgNjQgYml0CmNhdGVnb3J5OiBpbnQ6NjQKc3RkaW46CgkjIHNpZ25lZCB2cyB1bnNpZ25lZAoJZWNobyB4MSAkKCgtMSkpICQoKCMtMSkpCgkjIGNhbGN1bGF0aW5nCgl0eXBlc2V0IC1pIHZzCgl0eXBlc2V0IC1VaSB2dQoJdnM9OTIyMzM3MjAzNjg1NDc3NTgwNzsgdnU9OTIyMzM3MjAzNjg1NDc3NTgwNwoJZWNobyB4MiAkdnMgJHZ1CglsZXQgdnMrKyB2dSsrCgllY2hvIHgzICR2cyAkdnUKCXZzPTE4NDQ2NzQ0MDczNzA5NTUxNjE1OyB2dT0xODQ0Njc0NDA3MzcwOTU1MTYxNQoJZWNobyB4NCAkdnMgJHZ1CglsZXQgdnMrKyB2dSsrCgllY2hvIHg1ICR2cyAkdnUKCWxldCB2cysrIHZ1KysKCWVjaG8geDYgJHZzICR2dQpleHBlY3RlZC1zdGRvdXQ6Cgl4MSAtMSAxODQ0Njc0NDA3MzcwOTU1MTYxNQoJeDIgOTIyMzM3MjAzNjg1NDc3NTgwNyA5MjIzMzcyMDM2ODU0Nzc1ODA3Cgl4MyAtOTIyMzM3MjAzNjg1NDc3NTgwOCA5MjIzMzcyMDM2ODU0Nzc1ODA4Cgl4NCAtMSAxODQ0Njc0NDA3MzcwOTU1MTYxNQoJeDUgMCAwCgl4NiAxIDEKLS0tCm5hbWU6IGJrc2wtbmwtaWduLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGlzIG5vdCBjb2xsYXBzZWQgYWZ0ZXIgIwpzdGRpbjoKCWVjaG8gaGkgI3RoZXJlIFwKCWVjaG8gZm9sa3MKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWZvbGtzCi0tLQpuYW1lOiBia3NsLW5sLWlnbi0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBub3QgY29sbGFwc2VkIGluc2lkZSBzaW5nbGUgcXVvdGVzCnN0ZGluOgoJZWNobyAnaGkgXAoJdGhlcmUnCgllY2hvIGZvbGtzCmV4cGVjdGVkLXN0ZG91dDoKCWhpIFwKCXRoZXJlCglmb2xrcwotLS0KbmFtZTogYmtzbC1ubC1pZ24tMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgbm90IGNvbGxhcHNlZCBpbnNpZGUgc2luZ2xlIHF1b3RlcwpzdGRpbjoKCWNhdCA8PCBcRU9GCgloaSBcCgl0aGVyZQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWhpIFwKCXRoZXJlCi0tLQpuYW1lOiBia3NsLW5sLWlnbi00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaW50ZXJhY3Rpb24gb2YgYWxpYXNlcywgc2luZ2xlIHF1b3RlcyBhbmQgaGVyZS1kb2N1bWVudHMKCXdpdGggYmFja3NsYXNoLW5ld2xpbmUKCShkb24ndCBrbm93IHdoYXQgUE9TSVggaGFzIHRvIHNheSBhYm91dCB0aGlzKQpzdGRpbjoKCWE9MgoJYWxpYXMgeD0nZWNobyBoaQoJY2F0IDw8ICJFT0YiCglmb29cCgliYXIKCXNvbWUnCgl4Cgltb3JlXAoJc3R1ZmYkYQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWhpCglmb29cCgliYXIKCXNvbWUKCW1vcmVcCglzdHVmZiRhCi0tLQpuYW1lOiBia3NsLW5sLWlnbi01CmRlc2NyaXB0aW9uOgoJQ2hlY2sgd2hhdCBoYXBwZW5zIHdpdGggYmFja3NsYXNoIGF0IGVuZCBvZiBpbnB1dAoJKHRoZSBvbGQgQm91cm5lIHNoZWxsIHRyYXNoZXMgdGhlbTsgc28gZG8gd2UpCnN0ZGluOiAhCgllY2hvIGBlY2hvIGZvb1xcYGJhcgoJZWNobyBoaVwKZXhwZWN0ZWQtc3Rkb3V0OgoJZm9vYmFyCgloaQotLS0KIwojIFBsYWNlcyBcbmV3bGluZSBzaG91bGQgYmUgY29sbGFwc2VkCiMKbmFtZTogYmtzbC1ubC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgYmVmb3JlLCBpbiB0aGUgbWlkZGxlIG9mLCBhbmQKCWFmdGVyIHdvcmRzCnN0ZGluOgoJIAkgCVwKCQkJIGVjaG8gaGlcCglUaGVyZSwgXAoJZm9sa3MKZXhwZWN0ZWQtc3Rkb3V0OgoJaGlUaGVyZSwgZm9sa3MKLS0tCm5hbWU6IGJrc2wtbmwtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluICQgc2VxdWVuY2VzCgkoa3NoOTMgZmFpbHMgdGhpcykKc3RkaW46CglhPTEyCglhYj0xOQoJZWNobyAkXAoJYQoJZWNobyAkYVwKCWIKCWVjaG8gJFwKCXthfQoJZWNobyAke2FcCglifQoJZWNobyAke2FiXAoJfQpleHBlY3RlZC1zdGRvdXQ6CgkxMgoJMTkKCTEyCgkxOQoJMTkKLS0tCm5hbWU6IGJrc2wtbmwtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluICQoLi4pIGFuZCBgLi4uYCBzZXF1ZW5jZXMKCShrc2g5MyBmYWlscyB0aGlzKQpzdGRpbjoKCWVjaG8gJFwKCShlY2hvIGZvb2JhcjEpCgllY2hvICQoXAoJZWNobyBmb29iYXIyKQoJZWNobyAkKGVjaG8gZm9vXAoJYmFyMykKCWVjaG8gJChlY2hvIGZvb2JhcjRcCgkpCgllY2hvIGAKCWVjaG8gc3R1ZmYxYAoJZWNobyBgZWNobyBzdFwKCXVmZjJgCmV4cGVjdGVkLXN0ZG91dDoKCWZvb2JhcjEKCWZvb2JhcjIKCWZvb2JhcjMKCWZvb2JhcjQKCXN0dWZmMQoJc3R1ZmYyCi0tLQpuYW1lOiBia3NsLW5sLTQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGlzIGNvbGxhcHNlZCBpbiAkKCguLikpIHNlcXVlbmNlcwoJKGtzaDkzIGZhaWxzIHRoaXMpCnN0ZGluOgoJZWNobyAkXAoJKCgxKzIpKQoJZWNobyAkKFwKCSgxKzIrMykpCgllY2hvICQoKFwKCTErMiszKzQpKQoJZWNobyAkKCgxK1wKCTIrMys0KzUpKQoJZWNobyAkKCgxKzIrMys0KzUrNilcCgkpCmV4cGVjdGVkLXN0ZG91dDoKCTMKCTYKCTEwCgkxNQoJMjEKLS0tCm5hbWU6IGJrc2wtbmwtNQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluIGRvdWJsZSBxdW90ZWQgc3RyaW5ncwpzdGRpbjoKCWVjaG8gIlwKCWhpIgoJZWNobyAiZm9vXAoJYmFyIgoJZWNobyAiZm9sa3NcCgkiCmV4cGVjdGVkLXN0ZG91dDoKCWhpCglmb29iYXIKCWZvbGtzCi0tLQpuYW1lOiBia3NsLW5sLTYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGlzIGNvbGxhcHNlZCBpbiBoZXJlIGRvY3VtZW50IGRlbGltaXRlcnMKCShrc2g5MyBmYWlscyBzZWNvbmQgcGFydCBvZiB0aGlzKQpzdGRpbjoKCWE9MTIKCWNhdCA8PCBFT1wKCUYKCWE9JGEKCWZvb1wKCWJhcgoJRU9GCgljYXQgPDwgRV9PX0YKCWZvbwoJRV9PX1wKCUYKCWVjaG8gZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglhPTEyCglmb29iYXIKCWZvbwoJZG9uZQotLS0KbmFtZTogYmtzbC1ubC03CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgaW4gZG91YmxlLXF1b3RlZCBoZXJlLWRvY3VtZW50CglkZWxpbWl0ZXIuCnN0ZGluOgoJYT0xMgoJY2F0IDw8ICJFT1wKCUYiCglhPSRhCglmb29cCgliYXIKCUVPRgoJZWNobyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCWE9JGEKCWZvb1wKCWJhcgoJZG9uZQotLS0KbmFtZTogYmtzbC1ubC04CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgaW4gdmFyaW91cyAyKyBjaGFyYWN0ZXIgdG9rZW5zCglkZWxpbWl0ZXIuCgkoa3NoOTMgZmFpbHMgdGhpcykKc3RkaW46CgllY2hvIGhpICZcCgkmIGVjaG8gdGhlcmUKCWVjaG8gZm9vIHxcCgl8IGVjaG8gYmFyCgljYXQgPFwKCTwgRU9GCglzdHVmZgoJRU9GCgljYXQgPFwKCTxcCgktIEVPRgoJCW1vcmUgc3R1ZmYKCUVPRgoJY2F0IDw8XAoJRU9GCglhYmNkZWYKCUVPRgoJZWNobyBoaSA+XAoJPiAvZGV2L251bGwKCWVjaG8gJD8KCWk9MQoJY2FzZSAkaSBpbgoJKFwKCXh8XAoJMVwKCSkgZWNobyBoaTtcCgk7CgkoKikgZWNobyBvb3BzCgllc2FjCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgl0aGVyZQoJZm9vCglzdHVmZgoJbW9yZSBzdHVmZgoJYWJjZGVmCgkwCgloaQotLS0KbmFtZTogYmtzbC1ubC05CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcIGF0IHRoZSBlbmQgb2YgYW4gYWxpYXMgaXMgY29sbGFwc2VkIHdoZW4gZm9sbG93ZWQKCWJ5IGEgbmV3bGluZQoJKGRvbid0IGtub3cgd2hhdCBQT1NJWCBoYXMgdG8gc2F5IGFib3V0IHRoaXMpCnN0ZGluOgoJYWxpYXMgeD0nZWNobyBoaVwnCgl4CgllY2hvIHRoZXJlCmV4cGVjdGVkLXN0ZG91dDoKCWhpZWNobyB0aGVyZQotLS0KbmFtZTogYmtzbC1ubC0xMApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaW4gYSBrZXl3b3JkIGlzIGNvbGxhcHNlZApzdGRpbjoKCWlcCglmIHRydWU7IHRoZW5cCgkgZWNobyBwYXNzOyBlbFwKCXNlIGVjaG8gZmFpbDsgZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJcGFzcwotLS0KIwojIFBsYWNlcyBcbmV3bGluZSBzaG91bGQgYmUgY29sbGFwc2VkIChrc2ggZXh0ZW5zaW9ucykKIwpuYW1lOiBia3NsLW5sLWtzaC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgaW4gZXh0ZW5kZWQgZ2xvYmJpbmcKCShrc2g5MyBmYWlscyB0aGlzKQpzdGRpbjoKCXh4eD1mb28KCWNhc2UgJHh4eCBpbgoJKGYqXAoJKFwKCW9cCgkpXAoJKSBlY2hvIG9rIDs7CgkqKSBlY2hvIGJhZAoJZXNhYwpleHBlY3RlZC1zdGRvdXQ6CglvawotLS0KbmFtZTogYmtzbC1ubC1rc2gtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluICgoLi4uKSkgZXhwcmVzc2lvbnMKCShrc2g5MyBmYWlscyB0aGlzKQpzdGRpbjoKCWk9MQoJKFwKCShcCglpPWkrMlwKCSlcCgkpCgllY2hvICRpCmV4cGVjdGVkLXN0ZG91dDoKCTMKLS0tCm5hbWU6IGJyZWFrLTEKZGVzY3JpcHRpb246CglTZWUgaWYgYnJlYWsgYnJlYWtzIG91dCBvZiBsb29wcwpzdGRpbjoKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBicmVhazsgZWNobyBiYWQtJGk7IGRvbmUKCWVjaG8gZW5kLTEKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBicmVhayAxOyBlY2hvIGJhZC0kaTsgZG9uZQoJZWNobyBlbmQtMgoJZm9yIGkgaW4gYSBiIGM7IGRvCgkgICAgZm9yIGogaW4geCB5IHo7IGRvCgkJZWNobyAkaTokagoJCWJyZWFrCgkJZWNobyBiYWQtJGkKCSAgICBkb25lCgkgICAgZWNobyBlbmQtJGkKCWRvbmUKCWVjaG8gZW5kLTMKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBldmFsIGJyZWFrOyBlY2hvIGJhZC0kaTsgZG9uZQoJZWNobyBlbmQtNApleHBlY3RlZC1zdGRvdXQ6CglhCgllbmQtMQoJYQoJZW5kLTIKCWE6eAoJZW5kLWEKCWI6eAoJZW5kLWIKCWM6eAoJZW5kLWMKCWVuZC0zCglhCgllbmQtNAotLS0KbmFtZTogYnJlYWstMgpkZXNjcmlwdGlvbjoKCVNlZSBpZiBicmVhayBicmVha3Mgb3V0IG9mIG5lc3RlZCBsb29wcwpzdGRpbjoKCWZvciBpIGluIGEgYiBjOyBkbwoJICAgIGZvciBqIGluIHggeSB6OyBkbwoJCWVjaG8gJGk6JGoKCQlicmVhayAyCgkJZWNobyBiYWQtJGkKCSAgICBkb25lCgkgICAgZWNobyBlbmQtJGkKCWRvbmUKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCWE6eAoJZW5kCi0tLQpuYW1lOiBicmVhay0zCmRlc2NyaXB0aW9uOgoJV2hhdCBpZiBicmVhayB1c2VkIG91dHNpZGUgb2YgYW55IGxvb3BzCgkoa3NoODgsa3NoOTMgZG9uJ3QgcHJpbnQgZXJyb3IgbWVzc2FnZXMgaGVyZSkKc3RkaW46CglicmVhawpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmJyZWFrLiovCi0tLQpuYW1lOiBicmVhay00CmRlc2NyaXB0aW9uOgoJV2hhdCBpZiBicmVhayBOIHVzZWQgd2hlbiBvbmx5IE4tMSBsb29wcwoJKGtzaDg4LGtzaDkzIGRvbid0IHByaW50IGVycm9yIG1lc3NhZ2VzIGhlcmUpCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvIGVjaG8gJGk7IGJyZWFrIDI7IGVjaG8gYmFkLSRpOyBkb25lCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CglhCgllbmQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvLipicmVhay4qLwotLS0KbmFtZTogYnJlYWstNQpkZXNjcmlwdGlvbjoKCUVycm9yIGlmIGJyZWFrIGFyZ3VtZW50IGlzbid0IGEgbnVtYmVyCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvIGVjaG8gJGk7IGJyZWFrIGFiYzsgZWNobyBtb3JlLSRpOyBkb25lCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CglhCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmJyZWFrLiovCi0tLQpuYW1lOiBjb250aW51ZS0xCmRlc2NyaXB0aW9uOgoJU2VlIGlmIGNvbnRpbnVlIGNvbnRpbnVlcyBsb29wcwpzdGRpbjoKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBjb250aW51ZTsgZWNobyBiYWQtJGkgOyBkb25lCgllY2hvIGVuZC0xCglmb3IgaSBpbiBhIGIgYzsgZG8gZWNobyAkaTsgY29udGludWUgMTsgZWNobyBiYWQtJGk7IGRvbmUKCWVjaG8gZW5kLTIKCWZvciBpIGluIGEgYiBjOyBkbwoJICAgIGZvciBqIGluIHggeSB6OyBkbwoJCWVjaG8gJGk6JGoKCQljb250aW51ZQoJCWVjaG8gYmFkLSRpLSRqCgkgICAgZG9uZQoJICAgIGVjaG8gZW5kLSRpCglkb25lCgllY2hvIGVuZC0zCglmb3IgaSBpbiBhIGIgYzsgZG8gZWNobyAkaTsgZXZhbCBjb250aW51ZTsgZWNobyBiYWQtJGkgOyBkb25lCgllY2hvIGVuZC00CmV4cGVjdGVkLXN0ZG91dDoKCWEKCWIKCWMKCWVuZC0xCglhCgliCgljCgllbmQtMgoJYTp4CglhOnkKCWE6egoJZW5kLWEKCWI6eAoJYjp5CgliOnoKCWVuZC1iCgljOngKCWM6eQoJYzp6CgllbmQtYwoJZW5kLTMKCWEKCWIKCWMKCWVuZC00Ci0tLQpuYW1lOiBjb250aW51ZS0yCmRlc2NyaXB0aW9uOgoJU2VlIGlmIGNvbnRpbnVlIGJyZWFrcyBvdXQgb2YgbmVzdGVkIGxvb3BzCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvCgkgICAgZm9yIGogaW4geCB5IHo7IGRvCgkJZWNobyAkaTokagoJCWNvbnRpbnVlIDIKCQllY2hvIGJhZC0kaS0kagoJICAgIGRvbmUKCSAgICBlY2hvIGVuZC0kaQoJZG9uZQoJZWNobyBlbmQKZXhwZWN0ZWQtc3Rkb3V0OgoJYTp4CgliOngKCWM6eAoJZW5kCi0tLQpuYW1lOiBjb250aW51ZS0zCmRlc2NyaXB0aW9uOgoJV2hhdCBpZiBjb250aW51ZSB1c2VkIG91dHNpZGUgb2YgYW55IGxvb3BzCgkoa3NoODgsa3NoOTMgZG9uJ3QgcHJpbnQgZXJyb3IgbWVzc2FnZXMgaGVyZSkKc3RkaW46Cgljb250aW51ZQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmNvbnRpbnVlLiovCi0tLQpuYW1lOiBjb250aW51ZS00CmRlc2NyaXB0aW9uOgoJV2hhdCBpZiBjb250aW51ZSBOIHVzZWQgd2hlbiBvbmx5IE4tMSBsb29wcwoJKGtzaDg4LGtzaDkzIGRvbid0IHByaW50IGVycm9yIG1lc3NhZ2VzIGhlcmUpCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvIGVjaG8gJGk7IGNvbnRpbnVlIDI7IGVjaG8gYmFkLSRpOyBkb25lCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CglhCgliCgljCgllbmQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvLipjb250aW51ZS4qLwotLS0KbmFtZTogY29udGludWUtNQpkZXNjcmlwdGlvbjoKCUVycm9yIGlmIGNvbnRpbnVlIGFyZ3VtZW50IGlzbid0IGEgbnVtYmVyCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvIGVjaG8gJGk7IGNvbnRpbnVlIGFiYzsgZWNobyBtb3JlLSRpOyBkb25lCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CglhCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmNvbnRpbnVlLiovCi0tLQpuYW1lOiBjZC1oaXN0b3J5CmRlc2NyaXB0aW9uOgoJVGVzdCBzb21lb25lJ3MgQ0QgaGlzdG9yeSBwYWNrYWdlICh1c2VzIGFycmF5cykKc3RkaW46CgkjIGdvIHRvIGtub3duIHBsYWNlIGJlZm9yZSBkb2luZyBhbnl0aGluZwoJY2QgLwoJCglhbGlhcyBjZD1fY2QKCWZ1bmN0aW9uIF9jZAoJewoJCXR5cGVzZXQgLWkgY2RsZW4gaQoJCXR5cGVzZXQgdAoJCgkJaWYgWyAkIyAtZXEgMCBdCgkJdGhlbgoJCQlzZXQgLS0gJEhPTUUKCQlmaQoJCgkJaWYgWyAiJENESElTVEZJTEUiIC1hIC1yICIkQ0RISVNURklMRSIgXSAjIGlmIGRpcmVjdG9yeSBoaXN0b3J5IGV4aXN0cwoJCXRoZW4KCQkJdHlwZXNldCBDREhJU1QKCQkJaT0tMQoJCQl3aGlsZSByZWFkIC1yIHQJCQkjIHJlYWQgZGlyZWN0b3J5IGhpc3RvcnkgZmlsZQoJCQlkbwoJCQkJQ0RISVNUW2k9aSsxXT0kdAoJCQlkb25lIDwkQ0RISVNURklMRQoJCWZpCgkKCQlpZiBbICIke0NESElTVFswXX0iICE9ICIkUFdEIiAtYSAiJFBXRCIgIT0gIiIgXQoJCXRoZW4KCQkJX2NkaW5zCQkJCSMgaW5zZXJ0ICRQV0QgaW50byBjZCBoaXN0b3J5CgkJZmkKCQoJCWNkbGVuPSR7I0NESElTVFsqXX0JCQkjIG51bWJlciBvZiBlbGVtZW50cyBpbiBoaXN0b3J5CgkKCQljYXNlICIkQCIgaW4KCQktKQkJCQkJIyBjZCB0byBuZXcgZGlyCgkJCWlmIFsgIiRPTERQV0QiID0gIiIgXSAmJiAoKGNkbGVuPjEpKQoJCQl0aGVuCgkJCQkncHJpbnQnICR7Q0RISVNUWzFdfQoJCQkJJ2NkJyAke0NESElTVFsxXX0KCQkJCV9wd2QKCQkJZWxzZQoJCQkJJ2NkJyAkQAoJCQkJX3B3ZAoJCQlmaQoJCQk7OwoJCS1sKQkJCQkJIyBwcmludCBkaXJlY3RvcnkgbGlzdAoJCQl0eXBlc2V0IC1SMyBudW0KCQkJKChpPWNkbGVuKSkKCQkJd2hpbGUgKCgoaT1pLTEpPj0wKSkKCQkJZG8KCQkJCW51bT0kaQoJCQkJJ3ByaW50JyAiJG51bSAke0NESElTVFtpXX0iCgkJCWRvbmUKCQkJcmV0dXJuCgkJCTs7CgkJLVswLTldfC1bMC05XVswLTldKQkJCSMgY2QgdG8gZGlyIGluIGxpc3QKCQkJaWYgKCgoaT0kezEjLX0pPGNkbGVuKSkKCQkJdGhlbgoJCQkJJ3ByaW50JyAke0NESElTVFtpXX0KCQkJCSdjZCcgJHtDREhJU1RbaV19CgkJCQlfcHdkCgkJCWVsc2UKCQkJCSdjZCcgJEAKCQkJCV9wd2QKCQkJZmkKCQkJOzsKCQktKikJCQkJCSMgY2QgdG8gbWF0Y2hlZCBkaXIgaW4gbGlzdAoJCQl0PSR7MSMtfQoJCQlpPTEKCQkJd2hpbGUgKChpPGNkbGVuKSkKCQkJZG8KCQkJCWNhc2UgJHtDREhJU1RbaV19IGluCgkJCQkqJHQqKQoJCQkJCSdwcmludCcgJHtDREhJU1RbaV19CgkJCQkJJ2NkJyAke0NESElTVFtpXX0KCQkJCQlfcHdkCgkJCQkJYnJlYWsKCQkJCQk7OwoJCQkJZXNhYwoJCQkJKChpPWkrMSkpCgkJCWRvbmUKCQkJaWYgKChpPj1jZGxlbikpCgkJCXRoZW4KCQkJCSdjZCcgJEAKCQkJCV9wd2QKCQkJZmkKCQkJOzsKCQkqKQkJCQkJIyBjZCB0byBuZXcgZGlyCgkJCSdjZCcgJEAKCQkJX3B3ZAoJCQk7OwoJCWVzYWMKCQoJCV9jZGlucwkJCQkJIyBpbnNlcnQgJFBXRCBpbnRvIGNkIGhpc3RvcnkKCQoJCWlmIFsgIiRDREhJU1RGSUxFIiBdCgkJdGhlbgoJCQljZGxlbj0keyNDREhJU1RbKl19CQkjIG51bWJlciBvZiBlbGVtZW50cyBpbiBoaXN0b3J5CgkKCQkJaT0wCgkJCXdoaWxlICgoaTxjZGxlbikpCgkJCWRvCgkJCQkncHJpbnQnIC1yICR7Q0RISVNUW2ldfQkjIHVwZGF0ZSBkaXJlY3RvcnkgaGlzdG9yeQoJCQkJKChpPWkrMSkpCgkJCWRvbmUgPiRDREhJU1RGSUxFCgkJZmkKCX0KCQoJZnVuY3Rpb24gX2NkaW5zCQkJCQkjIGluc2VydCAkUFdEIGludG8gY2QgaGlzdG9yeQoJewkJCQkJCSMgbWVhbnQgdG8gYmUgY2FsbGVkIG9ubHkgYnkgX2NkCgkJdHlwZXNldCAtaSBpCgkKCQkoKGk9MCkpCgkJd2hpbGUgKChpPCR7I0NESElTVFsqXX0pKQkJIyBzZWUgaWYgZGlyIGlzIGFscmVhZHkgaW4gbGlzdAoJCWRvCgkJCWlmIFsgIiR7Q0RISVNUWyRpXX0iID0gIiRQV0QiIF0KCQkJdGhlbgoJCQkJYnJlYWsKCQkJZmkKCQkJKChpPWkrMSkpCgkJZG9uZQoJCgkJaWYgKChpPjIyKSkJCQkJIyBsaW1pdCBtYXggc2l6ZSBvZiBsaXN0CgkJdGhlbgoJCQlpPTIyCgkJZmkKCQoJCXdoaWxlICgoKGk9aS0xKT49MCkpCQkJIyBidW1wIG9sZCBkaXJzIGluIGxpc3QKCQlkbwoJCQlDREhJU1RbaSsxXT0ke0NESElTVFtpXX0KCQlkb25lCgkKCQlDREhJU1RbMF09JFBXRAkJCQkjIGluc2VydCBuZXcgZGlyZWN0b3J5IGluIGxpc3QKCX0KCQoJCglmdW5jdGlvbiBfcHdkCgl7CgkJaWYgWyAtbiAiJEVDRCIgXQoJCXRoZW4KCQkJcHdkIDE+JjYKCQlmaQoJfQoJIyBTdGFydCBvZiB0ZXN0CgljZCAvdG1wCgljZCAvYmluCgljZCAvZXRjCgljZCAtCgljZCAtMgoJY2QgLWwKZXhwZWN0ZWQtc3Rkb3V0OgoJL2JpbgoJL3RtcAoJICAzIC8KCSAgMiAvZXRjCgkgIDEgL2JpbgoJICAwIC90bXAKLS0tCm5hbWU6IGNkLXBlCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcGFja2FnZSBmb3IgY2QgLVBlCm5lZWQtcGFzczogbm8KIyB0aGUgbXYgY29tbWFuZCBmYWlscyBvbiBDeWd3aW4gYW5kIHovT1MKIyBIdXJkIGFib3J0cyB0aGUgdGVzdHN1aXRlIChwZXJtaXNzaW9uIGRlbmllZCkKIyBRTlggZG9lcyBub3QgZmluZCBzdWJkaXIgdG8gY2QgaW50bwpjYXRlZ29yeTogIW9zOmN5Z3dpbiwhb3M6Z251LCFvczptc3lzLCFvczpudG8sIW9zOm9zMzkwLCFub3N5bWxpbmsKZmlsZS1zZXR1cDogZmlsZSA2NDQgIngiCglta2RpciBub3JlYWQgbm9yZWFkL3RhcmdldCBub3JlYWQvdGFyZ2V0L3N1YmRpcgoJbG4gLXMgbm9yZWFkIGxpbmsKCWNobW9kIDMxMSBub3JlYWQKCWNkIC1QJDEgLgoJZWNobyAwPSQ/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/IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSAuCgkyIC4KCTMgLgoJNCBmb28gLgoJNSAwIC4KCTYgMCAuCgk3IDAgLgoJOCAwIC4KCTkgMCAuCi0tLQpuYW1lOiBleHBhbmQtbnVtYmVyLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHBvc2l0aW9uYWwgYXJndW1lbnRzIGRvIG5vdCBvdmVyZmxvdwpzdGRpbjoKCWVjaG8gIjEgJHsxMjM0NTY3ODkwMTIzNDU2Nzg5MH0gLiIKZXhwZWN0ZWQtc3Rkb3V0OgoJMSAgLgotLS0KbmFtZTogZXhwYW5kLXNsYXNoZXMtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2lkZSBlZmZlY3RzIGluIHN1YnN0cmluZyByZXBsYWNlbWVudCBhcmUgaGFuZGxlZCBjb3JyZWN0bHkKc3RkaW46Cglmb289bjFuMW4xbjJuMwoJaT0yCgluPTEKCWVjaG8gMSAke2Zvby8vbiQoKG4rKykpL1skKCgrK2kpKV19IC4KCWVjaG8gMiAkbiAsICRpIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSBbM11bM11bM11uMm4zIC4KCTIgMiAsIDMgLgotLS0KbmFtZTogZXhwYW5kLXNsYXNoZXMtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2lkZSBlZmZlY3RzIGluIHN1YnN0cmluZyByZXBsYWNlbWVudCBhcmUgaGFuZGxlZCBjb3JyZWN0bHkKc3RkaW46Cglmb289bjFuMW4xbjJuMwoJaT0yCgluPTEKCWVjaG8gMSAke2Zvb0AvbiQoKG4rKykpL1skKCgrK2kpKV19IC4KCWVjaG8gMiAkbiAsICRpIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSBbM11uMW4xWzRdWzVdIC4KCTIgNSAsIDUgLgotLS0KbmFtZTogZXhwYW5kLXNsYXNoZXMtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgd2UgY2FuIGFjY2VzcyB0aGUgcmVwbGFjZWQgc3RyaW5nCnN0ZGluOgoJZm9vPW4xbjFuMW4ybjMKCWVjaG8gMSAke2Zvb0AvblsxMl0vWyRLU0hfTUFUQ0hdfSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgW24xXVtuMV1bbjFdW24yXW4zIC4KLS0tCm5hbWU6IGVnbG9iLWJhZC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBnbG9iYmluZyBpc24ndCBkb25lIHdoZW4gZ2xvYiBoYXMgc3ludGF4IGVycm9yCmNhdGVnb3J5OiAhb3M6Y3lnd2luLCFvczptc3lzLCFvczpvczIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkAoYVtifCljXWZvbyIKc3RkaW46CgllY2hvIEAoYVtifCljXSoKZXhwZWN0ZWQtc3Rkb3V0OgoJQChhW2J8KWNdKgotLS0KbmFtZTogZWdsb2ItYmFkLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGdsb2JiaW5nIGlzbid0IGRvbmUgd2hlbiBnbG9iIGhhcyBzeW50YXggZXJyb3IKCShBVCZUIGtzaCBmYWlscyB0aGlzIHRlc3QpCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmN4IgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjeiIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImJiYyIKc3RkaW46CgllY2hvIFthKihdKil6CmV4cGVjdGVkLXN0ZG91dDoKCVthKihdKil6Ci0tLQpuYW1lOiBlZ2xvYi1pbmZpbml0ZS1wbHVzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaGVsbCBkb2Vzbid0IGdvIGludG8gaW5maW5pdGUgbG9vcCBleHBhbmRpbmcgKyguLi4pCglleHByZXNzaW9ucy4KZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiYyIKdGltZS1saW1pdDogMwpzdGRpbjoKCWVjaG8gKygpYwoJZWNobyArKCl4CgllY2hvICsoKiljCgllY2hvICsoKil4CmV4cGVjdGVkLXN0ZG91dDoKCSsoKWMKCSsoKXgKCWFiYwoJKygqKXgKLS0tCm5hbWU6IGVnbG9iLXN1YnN0LTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGVnbG9iYmluZyBpc24ndCBkb25lIG9uIHN1YnN0aXR1dGlvbiByZXN1bHRzCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmMiCnN0ZGluOgoJeD0nQCgqKScKCWVjaG8gJHgKZXhwZWN0ZWQtc3Rkb3V0OgoJQCgqKQotLS0KbmFtZTogZWdsb2Itbm9tYXRjaC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgcGF0dGVybiBkb2Vzbid0IG1hdGNoCnN0ZGluOgoJZWNobyAxOiBuby1maWxlKyhhfGIpc3R1ZmYKCWVjaG8gMjogbm8tZmlsZSsoYSooYyl8YilzdHVmZgoJZWNobyAzOiBuby1maWxlKygoKChjKSkpfGIpc3R1ZmYKZXhwZWN0ZWQtc3Rkb3V0OgoJMTogbm8tZmlsZSsoYXxiKXN0dWZmCgkyOiBuby1maWxlKyhhKihjKXxiKXN0dWZmCgkzOiBuby1maWxlKygoKChjKSkpfGIpc3R1ZmYKLS0tCm5hbWU6IGVnbG9iLW1hdGNoLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBwYXR0ZXJuIG1hdGNoZXMgY29ycmVjdGx5CmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmQiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhY2QiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmFjIgpzdGRpbjoKCWVjaG8gMTogYSsoYnxjKWQKCWVjaG8gMjogYSEoQChifEIpKWQKCWVjaG8gMzogKihhKGJ8YykpCQkjICguLi58Li4uKSBjYW4gYmUgdXNlZCB3aXRoaW4gWCguLikKCWVjaG8gNDogYVtiKihmb298YmFyKV1kCQkjIHBhdHRlcm5zIG5vdCBzcGVjaWFsIGluc2lkZSBbLi4uXQpleHBlY3RlZC1zdGRvdXQ6CgkxOiBhYmQgYWNkCgkyOiBhY2QKCTM6IGFiYWMKCTQ6IGFiZAotLS0KbmFtZTogZWdsb2ItY2FzZS0xCmRlc2NyaXB0aW9uOgoJU2ltcGxlIG5lZ2F0aW9uIHRlc3RzCnN0ZGluOgoJY2FzZSBmb28gaW4gIShmb298YmFyKSkgZWNobyB5ZXM7OyAqKSBlY2hvIG5vOzsgZXNhYwoJY2FzZSBiYXIgaW4gIShmb298YmFyKSkgZWNobyB5ZXM7OyAqKSBlY2hvIG5vOzsgZXNhYwpleHBlY3RlZC1zdGRvdXQ6CglubwoJbm8KLS0tCm5hbWU6IGVnbG9iLWNhc2UtMgpkZXNjcmlwdGlvbjoKCVNpbXBsZSBrbGVlbmUgdGVzdHMKc3RkaW46CgljYXNlIGZvbyBpbiAqKGF8YlspKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCgljYXNlIGZvbyBpbiAqKGF8YlspfGYqKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCgljYXNlICcqKGF8YlspJyBpbiAqKGF8YlspKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCgljYXNlICdhYWJbYlthYlthJyBpbiAqKGF8YlspKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCmV4cGVjdGVkLXN0ZG91dDoKCW5vCgl5ZXMKCW5vCgl5ZXMKLS0tCm5hbWU6IGVnbG9iLXRyaW0tMQpkZXNjcmlwdGlvbjoKCUVnbG9iYmluZyBpbiB0cmltIGV4cHJlc3Npb25zLi4uCgkoQVQmVCBrc2ggZmFpbHMgdGhpcyAtIGRvY3Mgc2F5ICMgbWF0Y2hlcyBzaG9ydGVzdCBzdHJpbmcsICMjIG1hdGNoZXMKCWxvbmdlc3QuLi4pCnN0ZGluOgoJeD1hYmNkZWYKCWVjaG8gMTogJHt4I2F8YWJjfQoJZWNobyAyOiAke3gjI2F8YWJjfQoJZWNobyAzOiAke3glZGVmfGZ9CgllY2hvIDQ6ICR7eCUlZnxkZWZ9CmV4cGVjdGVkLXN0ZG91dDoKCTE6IGJjZGVmCgkyOiBkZWYKCTM6IGFiY2RlCgk0OiBhYmMKLS0tCm5hbWU6IGVnbG9iLXRyaW0tMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGVnbG9iYmluZyB3b3JrcyBpbiB0cmltcy4uLgpzdGRpbjoKCXg9YWJjZGVmCgllY2hvIDE6ICR7eCMqKGF8YiljZH0KCWVjaG8gMjogIiR7eCMqKGF8YiljZH0iCgllY2hvIDM6ICR7eCMiKihhfGIpY2QifQoJZWNobyA0OiAke3gjYShifGMpfQpleHBlY3RlZC1zdGRvdXQ6CgkxOiBlZgoJMjogZWYKCTM6IGFiY2RlZgoJNDogY2RlZgotLS0KbmFtZTogZWdsb2ItdHJpbS0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZWdsb2JiaW5nIHdvcmtzIGluIHRyaW1zLCBmb3IgS29ybiBTaGVsbAoJRW5zdXJlIGVnbG9iYmluZyBkb2VzIG5vdCB3b3JrIGZvciByZWR1Y2VkLWZlYXR1cmUgL2Jpbi9zaApzdGRpbjoKCXNldCArbyBzaAoJeD1mb29iYXIKCXk9Zm9vYmF6Cgl6PWZvb2JhXD8KCWVjaG8gIjwke3glYmFyfGJhen0sJHt5JWJhcnxiYXp9LCR7eiVcP30+IgoJZWNobyAiPCR7eCViYShyfHopfSwke3klYmEocnx6KX0+IgoJc2V0IC1vIHNoCgllY2hvICI8JHt4JWJhcnxiYXp9LCR7eSViYXJ8YmF6fSwke3olXD99PiIKCXo9J2ZvbyhiYXInCgllY2hvICI8JHt6JSgqfT4iCmV4cGVjdGVkLXN0ZG91dDoKCTxmb28sZm9vLGZvb2JhPgoJPGZvbyxmb28+Cgk8Zm9vYmFyLGZvb2Jheixmb29iYT4KCTxmb28+Ci0tLQpuYW1lOiBlZ2xvYi1zdWJzdHJwbC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZWdsb2JiaW5nIHdvcmtzIGluIHN1YnN0cy4uLiBhbmQgdGhleSB3b3JrIGF0IGFsbApzdGRpbjoKCVtbIC1uICRCQVNIX1ZFUlNJT04gXV0gJiYgc2hvcHQgLXMgZXh0Z2xvYgoJeD0xMjIyMzIxX2FiL2NkZV9iL2NfMTIyMQoJeT14eXoKCWVjaG8gMTogJHt4LzJ9IC4gJHt4L30KCWVjaG8gMjogJHt4Ly8yfQoJZWNobyAzOiAke3gvKygyKX0KCWVjaG8gNDogJHt4Ly8rKDIpfQoJZWNobyA1OiAke3gvMi80fQoJZWNobyA2OiAke3gvLzIvNH0KCWVjaG8gNzogJHt4LysoMikvNH0KCWVjaG8gODogJHt4Ly8rKDIpLzR9CgllY2hvIDk6ICR7eC9iL2MvZS9mfQoJZWNobyAxMDogJHt4L2JcL2MvZS9mfQoJZWNobyAxMTogJHt4L2JcL2MvZVwvZn0KCWVjaG8gMTI6ICR7eC9iXC9jL2VcXC9mfQoJZWNobyAxMzogJHt4L2JcXC9jL2VcXC9mfQoJZWNobyAxNDogJHt4Ly9iL2MvZS9mfQoJZWNobyAxNTogJHt4Ly9iXC9jL2UvZn0KCWVjaG8gMTY6ICR7eC8vYlwvYy9lXC9mfQoJZWNobyAxNzogJHt4Ly9iXC9jL2VcXC9mfQoJZWNobyAxODogJHt4Ly9iXFwvYy9lXFwvZn0KCWVjaG8gMTk6ICR7eC9iXC8qXC9jL3h9CgllY2hvIDIwOiAke3gvXC8vLn0KCWVjaG8gMjE6ICR7eC8vXC8vLn0KCWVjaG8gMjI6ICR7eC8vLy59CgllY2hvIDIzOiAke3gvIzEvOX0KCWVjaG8gMjQ6ICR7eC8vIzEvOX0KCWVjaG8gMjU6ICR7eC8lMS85fQoJZWNobyAyNjogJHt4Ly8lMS85fQoJZWNobyAyNzogJHt4Ly9cJTEvOX0KCWVjaG8gMjg6ICR7eC8vXFwlMS85fQoJZWNobyAyOTogJHt4Ly9cYS85fQoJZWNobyAzMDogJHt4Ly9cXGEvOX0KCWVjaG8gMzE6ICR7eC8yLyR5fQpleHBlY3RlZC1zdGRvdXQ6CgkxOiAxMjIzMjFfYWIvY2RlX2IvY18xMjIxIC4gMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjEKCTI6IDEzMV9hYi9jZGVfYi9jXzExCgkzOiAxMzIxX2FiL2NkZV9iL2NfMTIyMQoJNDogMTMxX2FiL2NkZV9iL2NfMTEKCTU6IDE0MjIzMjFfYWIvY2RlX2IvY18xMjIxCgk2OiAxNDQ0MzQxX2FiL2NkZV9iL2NfMTQ0MQoJNzogMTQzMjFfYWIvY2RlX2IvY18xMjIxCgk4OiAxNDM0MV9hYi9jZGVfYi9jXzE0MQoJOTogMTIyMjMyMV9hYy9lL2YvY2RlX2IvY18xMjIxCgkxMDogMTIyMjMyMV9hZS9mZGVfYi9jXzEyMjEKCTExOiAxMjIyMzIxX2FlL2ZkZV9iL2NfMTIyMQoJMTI6IDEyMjIzMjFfYWVcL2ZkZV9iL2NfMTIyMQoJMTM6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgkxNDogMTIyMjMyMV9hYy9lL2YvY2RlX2MvZS9mL2NfMTIyMQoJMTU6IDEyMjIzMjFfYWUvZmRlX2UvZl8xMjIxCgkxNjogMTIyMjMyMV9hZS9mZGVfZS9mXzEyMjEKCTE3OiAxMjIyMzIxX2FlXC9mZGVfZVwvZl8xMjIxCgkxODogMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjEKCTE5OiAxMjIyMzIxX2F4XzEyMjEKCTIwOiAxMjIyMzIxX2FiLmNkZV9iL2NfMTIyMQoJMjE6IDEyMjIzMjFfYWIuY2RlX2IuY18xMjIxCgkyMjogMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjEKCTIzOiA5MjIyMzIxX2FiL2NkZV9iL2NfMTIyMQoJMjQ6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgkyNTogMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjkKCTI2OiAxMjIyMzIxX2FiL2NkZV9iL2NfMTIyMQoJMjc6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgkyODogMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjEKCTI5OiAxMjIyMzIxXzliL2NkZV9iL2NfMTIyMQoJMzA6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgkzMTogMXh5ejIyMzIxX2FiL2NkZV9iL2NfMTIyMQotLS0KbmFtZTogZWdsb2Itc3Vic3RycGwtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGFuY2hvcmVkIHN1YnN0cmluZyByZXBsYWNlbWVudCB3b3JrcywgY29ybmVyIGNhc2VzCnN0ZGluOgoJZm9vPTEyMwoJZWNobyAxOiAke2Zvby8jL3h9CgllY2hvIDI6ICR7Zm9vLyUveH0KCWVjaG8gMzogJHtmb28vIy99CgllY2hvIDQ6ICR7Zm9vLyN9CgllY2hvIDU6ICR7Zm9vLyUvfQoJZWNobyA2OiAke2Zvby8lfQpleHBlY3RlZC1zdGRvdXQ6CgkxOiB4MTIzCgkyOiAxMjN4CgkzOiAxMjMKCTQ6IDEyMwoJNTogMTIzCgk2OiAxMjMKLS0tCm5hbWU6IGVnbG9iLXN1YnN0cnBsLTNhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3Vic3RyaW5nIHJlcGxhY2VtZW50IHdvcmtzIHdpdGggdmFyaWFibGVzIGFuZCBzbGFzaGVzLCB0b28Kc3RkaW46CglIT01FPS9ldGMKCXBmeD0vaG9tZS91c2VyCgl3ZD0vaG9tZS91c2VyL3RtcAoJZWNobyAiJHt3ZC8jJHBmeC9+fSIKCWVjaG8gIiR7d2QvI1wkcGZ4L359IgoJZWNobyAiJHt3ZC8jIiRwZngiL359IgoJZWNobyAiJHt3ZC8jJyRwZngnL359IgoJZWNobyAiJHt3ZC8jIlwkcGZ4Ii9+fSIKCWVjaG8gIiR7d2QvIydcJHBmeCcvfn0iCmV4cGVjdGVkLXN0ZG91dDoKCS9ldGMvdG1wCgkvaG9tZS91c2VyL3RtcAoJL2V0Yy90bXAKCS9ob21lL3VzZXIvdG1wCgkvaG9tZS91c2VyL3RtcAoJL2hvbWUvdXNlci90bXAKLS0tCm5hbWU6IGVnbG9iLXN1YnN0cnBsLTNiCmRlc2NyaXB0aW9uOgoJTW9yZSBvZiB0aGlzLCBiYXNoIGZhaWxzIGl0IChiYXNoNCBwYXNzZXMpCnN0ZGluOgoJSE9NRT0vZXRjCglwZng9L2hvbWUvdXNlcgoJd2Q9L2hvbWUvdXNlci90bXAKCWVjaG8gIiR7d2QvIyQoZWNobyAvaG9tZS91c2VyKS9+fSIKCWVjaG8gIiR7d2QvIyIkKGVjaG8gL2hvbWUvdXNlcikiL359IgoJZWNobyAiJHt3ZC8jJyQoZWNobyAvaG9tZS91c2VyKScvfn0iCmV4cGVjdGVkLXN0ZG91dDoKCS9ldGMvdG1wCgkvZXRjL3RtcAoJL2hvbWUvdXNlci90bXAKLS0tCm5hbWU6IGVnbG9iLXN1YnN0cnBsLTNjCmRlc2NyaXB0aW9uOgoJRXZlbiBtb3JlIHdlaXJkIGNhc2VzCnN0ZGluOgoJSE9NRT0vZXRjCglwZng9L2hvbWUvdXNlcgoJd2Q9JyRwZngvdG1wJwoJZWNobyAxOiAke3dkLyMkcGZ4L359CgllY2hvIDI6ICR7d2QvI1wkcGZ4L359CgllY2hvIDM6ICR7d2QvIyIkcGZ4Ii9+fQoJZWNobyA0OiAke3dkLyMnJHBmeCcvfn0KCWVjaG8gNTogJHt3ZC8jIlwkcGZ4Ii9+fQoJZWNobyA2OiAke3dkLyMnXCRwZngnL359Cgl0cz0nYS9iYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApJwoJdHA9YS9iCgl0cj1jL2QKCVtbIC1uICRCQVNIX1ZFUlNJT04gXV0gJiYgc2hvcHQgLXMgZXh0Z2xvYgoJZWNobyA3OiAke3RzL2FcL2IvJHRyfQoJZWNobyA4OiAke3RzL2FcL2IvXCR0cn0KCWVjaG8gOTogJHt0cy8kdHAvJHRyfQoJZWNobyAxMDogJHt0cy9cJHRwLyR0cn0KCWVjaG8gMTE6ICR7dHMvXFwkdHAvJHRyfQoJZWNobyAxMjogJHt0cy8kdHAvYy9kfQoJZWNobyAxMzogJHt0cy8kdHAvY1wvZH0KCWVjaG8gMTQ6ICR7dHMvJHRwL2NcXC9kfQoJZWNobyAxNTogJHt0cy8rKGFcL2IpLyR0cn0KCWVjaG8gMTY6ICR7dHMvKyhhXC9iKS9cJHRyfQoJZWNobyAxNzogJHt0cy8rKCR0cCkvJHRyfQoJZWNobyAxODogJHt0cy8rKCR0cCkvYy9kfQoJZWNobyAxOTogJHt0cy8rKCR0cCkvY1wvZH0KCWVjaG8gMjA6ICR7dHMvL2FcL2IvJHRyfQoJZWNobyAyMTogJHt0cy8vYVwvYi9cJHRyfQoJZWNobyAyMjogJHt0cy8vJHRwLyR0cn0KCWVjaG8gMjM6ICR7dHMvLyR0cC9jL2R9CgllY2hvIDI0OiAke3RzLy8kdHAvY1wvZH0KCWVjaG8gMjU6ICR7dHMvLysoYVwvYikvJHRyfQoJZWNobyAyNjogJHt0cy8vKyhhXC9iKS9cJHRyfQoJZWNobyAyNzogJHt0cy8vKygkdHApLyR0cn0KCWVjaG8gMjg6ICR7dHMvLysoJHRwKS9jL2R9CgllY2hvIDI5OiAke3RzLy8rKCR0cCkvY1wvZH0KCXRwPSIrKCR0cCkiCgllY2hvIDMwOiAke3RzLyR0cC8kdHJ9CgllY2hvIDMxOiAke3RzLy8kdHAvJHRyfQpleHBlY3RlZC1zdGRvdXQ6CgkxOiAkcGZ4L3RtcAoJMjogL2V0Yy90bXAKCTM6ICRwZngvdG1wCgk0OiAvZXRjL3RtcAoJNTogL2V0Yy90bXAKCTY6ICRwZngvdG1wCgk3OiBjL2RhL2IkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKCTg6ICR0cmEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJOTogYy9kYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxMDogYS9iYS9iYy9kJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxMTogYS9iYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxMjogYy9kYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxMzogYy9kYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxNDogY1wvZGEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTU6IGMvZCR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTY6ICR0ciR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTc6IGMvZCR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTg6IGMvZCR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTk6IGMvZCR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMjA6IGMvZGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjE6ICR0ciR0ciR0cCR0cF8kdHIkdHBfKigkdHIpXyooJHRwKQoJMjI6IGMvZGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjM6IGMvZGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjQ6IGMvZGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjU6IGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjY6ICR0ciR0cCR0cF8kdHIkdHBfKigkdHIpXyooJHRwKQoJMjc6IGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjg6IGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjk6IGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMzA6IGEvYmEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMzE6IGEvYmEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQojCVRoaXMgaXMgd2hhdCBHTlUgYmFzaCBkb2VzOgojCTMwOiBjL2QkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKIwkzMTogYy9kJHRwJHRwX2MvZCR0cF8qKGMvZClfKigkdHApCi0tLQpuYW1lOiBlZ2xvYi11dGY4LTEKZGVzY3JpcHRpb246CglVVEYtOCBtb2RlIGRpZmZlcmVuY2VzIGZvciBlZ2xvYmJpbmcKY2F0ZWdvcnk6ICFzaGVsbDplYmNkaWMteWVzCnN0ZGluOgoJcz1ibMO2ZAoJc2V0ICtVCglwcmludCAxOiAke3MlPz8/fSAuCglwcmludCAyOiAke3MvYj8/P2QveH0gLgoJc2V0IC1VCglwcmludCAzOiAke3MlPz8/fSAuCglwcmludCA0OiAke3MvYj8/ZC94fSAuCgl4PW7DtgoJcHJpbnQgNTogJHt4JT99ICR7eCUlP30gLgoJeD3DpGgKCXByaW50IDY6ICR7eCM/fSAke3gjIz99IC4KCXg9gYIKCXByaW50IDc6ICR7eCU/fSAke3glJT99IC4KCXg9bcOkgAoJcHJpbnQgODogJHt4JT99ICR7eCUlP30gLgoJeD3kvZUKCXByaW50IDk6ICR7eCU/fSAke3glJT99IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMTogYmwgLgoJMjogeCAuCgkzOiBiIC4KCTQ6IHggLgoJNTogbiBuIC4KCTY6IGggaCAuCgk3OiCBIIEgLgoJODogbcOkIG3DpCAuCgk5OiAuCi0tLQpuYW1lOiBnbG9iLWJhZC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBbIG1hdGNoZXMgaXRzZWxmIGlmIGl0J3Mgbm90IGEgdmFsaWQgYnJhY2tldCBleHByCglidXQgZG9lcyBub3QgcHJldmVudCBnbG9iYmluZywgd2hpbGUgYmFja3NsYXNoLWVzY2FwaW5nIGRvZXMKZmlsZS1zZXR1cDogZGlyIDc1NSAiW3giCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJbeC9mb28iCnN0ZGluOgoJZWNobyBbKgoJZWNobyAqW3gKCWVjaG8gW3gvKgoJOj4nYWJbeCcKCTo+J2FbYS16XVt4JwoJZWNobyBhW2Etel1bKgoJZWNobyBhW2Etel0qCgllY2hvIGFbYVwtel0qCmV4cGVjdGVkLXN0ZG91dDoKCVt4CglbeAoJW3gvZm9vCglhYlt4CglhYlt4CglhW2Etel0qCi0tLQpuYW1lOiBnbG9iLWJhZC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzeW1ib2xpYyBsaW5rcyBhcmVuJ3Qgc3RhdCgpJ2QKIyBicmVha3Mgb24gRGVsbCBVTklYIDQuMCBSMi4yIChTVlI0KSB3aGVyZSB1bmxpbmsgYWxzbyBmYWlscwojIGJyZWFrcyBvbiBGcmVlTWlOVCAoY2Fubm90IHVubGluayBkYW5nbGluZyBzeW1saW5rcykKIyBicmVha3Mgb24gTVNZUywgT1MvMiAoZG8gbm90IHN1cHBvcnQgc3ltbGlua3MpCmNhdGVnb3J5OiAhb3M6bWludCwhb3M6bXN5cywhb3M6c3ZyNC4wLCFub3N5bWxpbmsKZmlsZS1zZXR1cDogZGlyIDc1NSAiZGlyIgpmaWxlLXNldHVwOiBzeW1saW5rIDY0NCAiZGlyL2FiYyIKCW5vbi1leGlzdGVudC1maWxlCnN0ZGluOgoJZWNobyBkKi8qCgllY2hvIGQqL2FiYwpleHBlY3RlZC1zdGRvdXQ6CglkaXIvYWJjCglkaXIvYWJjCi0tLQpuYW1lOiBnbG9iLWJhZC0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgc2xhc2ggaXMgcGFyc2VkIGJlZm9yZSB0aGUgZ2xvYgpzdGRpbjoKCW1rZGlyIGEgJ2FbYicKCShjZCAnYVtiJzsgZWNobyBvayA+J2NdZCcpCgllY2hvIG5vayA+YWJkCgllY2hvIGZhaWwgPmEvZAoJY2F0IGFbYi9jXWQKZXhwZWN0ZWQtc3Rkb3V0OgoJb2sKLS0tCm5hbWU6IGdsb2ItcmFuZ2UtMQpkZXNjcmlwdGlvbjoKCVRlc3QgcmFuZ2UgbWF0Y2hpbmcKZmlsZS1zZXR1cDogZmlsZSA2NDQgIi5iYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImJiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImNiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIi1iYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIiFiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIl5iYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIitiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIixiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIjBiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIjFiYyIKc3RkaW46CgllY2hvIFthYi1dKgoJZWNobyBbLWFiXSoKCWVjaG8gWyEtYWJdKgoJZWNobyBbIWFiXSoKCWVjaG8gW11hYl0qCgllY2hvIFteYWJdKgoJZWNobyBbKy0tXSoKCWVjaG8gWy0tMV0qCgpleHBlY3RlZC1zdGRvdXQ6CgktYmMgYWJjIGJiYwoJLWJjIGFiYyBiYmMKCSFiYyArYmMgLGJjIDBiYyAxYmMgXmJjIGNiYwoJIWJjICtiYyAsYmMgLWJjIDBiYyAxYmMgXmJjIGNiYwoJYWJjIGJiYwoJXmJjIGFiYyBiYmMKCStiYyAsYmMgLWJjCgktYmMgMGJjIDFiYwotLS0KbmFtZTogZ2xvYi1yYW5nZS0yCmRlc2NyaXB0aW9uOgoJVGVzdCByYW5nZSBtYXRjaGluZwoJKEFUJlQga3NoIGZhaWxzIHRoaXM7IFBPU0lYIHNheXMgaW52YWxpZCkKZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiYyIKc3RkaW46CgllY2hvIFthLS1dKgpleHBlY3RlZC1zdGRvdXQ6CglbYS0tXSoKLS0tCm5hbWU6IGdsb2ItcmFuZ2UtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZ2xvYmJpbmcgbWF0Y2hlcyB0aGUgcmlnaHQgdGhpbmdzLi4uCiMgYnJlYWtzIG9uIE1hYyBPU1ggKEhGUysgbm9uLXN0YW5kYXJkIFVURi04IGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uKQojIGJyZWFrcyBvbiBDeWd3aW4gMS43IChmaWxlcyBhcmUgbm93IFVURi0xNiBvciBzb21ldGhpbmcpCiMgYnJlYWtzIG9uIFFOWCA2LjQuMSAoc2F5cyBSVCkKY2F0ZWdvcnk6ICFvczpjeWd3aW4sIW9zOmRhcndpbiwhb3M6bXN5cywhb3M6bnRvLCFvczpvczIsIW9zOm9zMzkwCm5lZWQtcGFzczogbm8KZmlsZS1zZXR1cDogZmlsZSA2NDQgImHCYyIKc3RkaW46CgllY2hvIGFbwS3aXSoKZXhwZWN0ZWQtc3Rkb3V0OgoJYcJjCi0tLQpuYW1lOiBnbG9iLXJhbmdlLTQKZGVzY3JpcHRpb246CglSZXN1bHRzIHVuc3BlY2lmaWVkIGFjY29yZGluZyB0byBQT1NJWApmaWxlLXNldHVwOiBmaWxlIDY0NCAiLmJjIgpzdGRpbjoKCWVjaG8gW2EuXSoKZXhwZWN0ZWQtc3Rkb3V0OgoJW2EuXSoKLS0tCm5hbWU6IGdsb2ItcmFuZ2UtNQpkZXNjcmlwdGlvbjoKCVJlc3VsdHMgdW5zcGVjaWZpZWQgYWNjb3JkaW5nIHRvIFBPU0lYCgkoQVQmVCBrc2ggdHJlYXRzIHRoaXMgbGlrZSBbYS1jYy1lXSopCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJiYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJjYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJkYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJlYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICItYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJAYmMiCnN0ZGluOgoJZWNobyBbYS1jLWVdKgoJZWNobyBbYS0tQF0qCmV4cGVjdGVkLXN0ZG91dDoKCS1iYyBhYmMgYmJjIGNiYyBlYmMKCUBiYwotLS0KbmFtZTogZ2xvYi13b3JkLTEKZGVzY3JpcHRpb246CglDaGVjayBCU0Qgd29yZCBib3VuZGFyeSBtYXRjaGVzCnN0ZGluOgoJdCgpIHsgW1sgJDEgPSAqW1s6XDw6XV1iYXJbWzpcPjpdXSogXV07IGVjaG8gPSQ/OyB9Cgl0ICdmb28gYmFyIGJheicKCXQgJ2Zvb2JhciBiYXonCgl0ICdmb28gYmFyYmF6JwoJdCAnYmFyJwoJdCAnX2JhcicKCXQgJ2Jhcl8nCmV4cGVjdGVkLXN0ZG91dDoKCT0wCgk9MQoJPTEKCT0wCgk9MQoJPTEKLS0tCm5hbWU6IGdsb2ItdHJpbS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYWdhaW5zdCBhIHJlZ3Jlc3Npb24gZnJvbSBmaXhpbmcgSUZTLXN1YnN0LTIKc3RkaW46Cgl4PScjZm9vJwoJcHJpbnQgLXIgImJlZm9yZT0nJHgnIgoJeD0ke3glJSMqfQoJcHJpbnQgLXIgImFmdGVyID0nJHgnIgpleHBlY3RlZC1zdGRvdXQ6CgliZWZvcmU9JyNmb28nCglhZnRlciA9JycKLS0tCm5hbWU6IGhlcmVkb2MtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIG9yZGVyaW5nL2NvbnRlbnQgb2YgcmVkdW5kZW50IGhlcmUgZG9jdW1lbnRzLgpzdGRpbjoKCWNhdCA8PCBFT0YxIDw8IEVPRjIKCWhpCglFT0YxCgl0aGVyZQoJRU9GMgpleHBlY3RlZC1zdGRvdXQ6Cgl0aGVyZQotLS0KbmFtZTogaGVyZWRvYy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcXVvdGVkIGhlcmUtZG9jIGlzIHByb3RlY3RlZC4Kc3RkaW46CglhPWZvbwoJY2F0IDw8ICdFT0YnCgloaVwKCXRoZXJlJGEKCXN0dWZmCglFT1wKCUYKCUVPRgpleHBlY3RlZC1zdGRvdXQ6CgloaVwKCXRoZXJlJGEKCXN0dWZmCglFT1wKCUYKLS0tCm5hbWU6IGhlcmVkb2MtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgbmV3bGluZSBpc24ndCBuZWVkZWQgYWZ0ZXIgaGVyZWRvYy1kZWxpbWl0ZXIgbWFya2VyLgpzdGRpbjogIQoJY2F0IDw8IEVPRgoJaGkKCXRoZXJlCglFT0YKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCXRoZXJlCi0tLQpuYW1lOiBoZXJlZG9jLTRhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbiBlcnJvciBvY2N1cnMgaWYgdGhlIGhlcmVkb2MtZGVsaW1pdGVyIGlzIG1pc3NpbmcuCnN0ZGluOiAhCgljYXQgPDwgRU9GCgloaQoJdGhlcmUKZXhwZWN0ZWQtZXhpdDogZSA+IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC8uKi8KLS0tCm5hbWU6IGhlcmVkb2MtNGFuCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbiBlcnJvciBvY2N1cnMgaWYgdGhlIGhlcmVkb2MtZGVsaW1pdGVyIGlzIG1pc3NpbmcuCmFyZ3VtZW50czogIS1uIQpzdGRpbjogIQoJY2F0IDw8IEVPRgoJaGkKCXRoZXJlCmV4cGVjdGVkLWV4aXQ6IGUgPiAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLiovCi0tLQpuYW1lOiBoZXJlZG9jLTRiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbiBlcnJvciBvY2N1cnMgaWYgdGhlIGhlcmVkb2MgaXMgbWlzc2luZy4Kc3RkaW46ICEKCWNhdCA8PCBFT0YKZXhwZWN0ZWQtZXhpdDogZSA+IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC8uKi8KLS0tCm5hbWU6IGhlcmVkb2MtNGJuCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbiBlcnJvciBvY2N1cnMgaWYgdGhlIGhlcmVkb2MgaXMgbWlzc2luZy4KYXJndW1lbnRzOiAhLW4hCnN0ZGluOiAhCgljYXQgPDwgRU9GCmV4cGVjdGVkLWV4aXQ6IGUgPiAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLiovCi0tLQpuYW1lOiBoZXJlZG9jLTUKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGJhY2tzbGFzaCBxdW90ZXMgYSAkLCBgIGFuZCBcIGFuZCBraWxscyBhIFxuZXdsaW5lCnN0ZGluOgoJYT1CQUQKCWI9b2sKCWNhdCA8PCBFT0YKCWhcJHthfWkKCWhcXCR7Yn1pCgl0aFxgZWNobyBub3QtcnVuXGBlcmUKCXRoXFxgZWNobyBpcy1ydW5gZXJlCglmb2xcXGtzCgltb3JlXFwKCWxhc3QgXAoJbGluZQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWgke2F9aQoJaFxva2kKCXRoYGVjaG8gbm90LXJ1bmBlcmUKCXRoXGlzLXJ1bmVyZQoJZm9sXGtzCgltb3JlXAoJbGFzdCBsaW5lCi0tLQpuYW1lOiBoZXJlZG9jLTYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGluIGluaXRpYWwgaGVyZS1kZWxpbSB3b3JkIGRvZXNuJ3QgaW1wbHkKCWEgcXVvdGVkIGhlcmUtZG9jLgpzdGRpbjoKCWE9aQoJY2F0IDw8IEVPXAoJRgoJaCRhCgl0aGVyZQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgl0aGVyZQotLS0KbmFtZTogaGVyZWRvYy03CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBkb3VibGUgcXVvdGVkICQgZXhwcmVzc2lvbnMgaW4gaGVyZSBkZWxpbWl0ZXJzIGFyZQoJbm90IGV4cGFuZGVkIGFuZCBtYXRjaCB0aGUgZGVsaW1pdGVyLgoJUE9TSVggc2F5cyBvbmx5IHF1b3RlIHJlbW92YWwgaXMgYXBwbGllZCB0byB0aGUgZGVsaW1pdGVyLgpzdGRpbjoKCWE9YgoJY2F0IDw8ICJFJGEiCgloaQoJaCRhCgloYgoJRSRhCgllY2hvIGRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWgkYQoJaGIKCWRvbmUKLS0tCm5hbWU6IGhlcmVkb2MtOApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZG91YmxlIHF1b3RlZCBlc2NhcGVkICQgZXhwcmVzc2lvbnMgaW4gaGVyZQoJZGVsaW1pdGVycyBhcmUgbm90IGV4cGFuZGVkIGFuZCBtYXRjaCB0aGUgZGVsaW1pdGVyLgoJUE9TSVggc2F5cyBvbmx5IHF1b3RlIHJlbW92YWwgaXMgYXBwbGllZCB0byB0aGUgZGVsaW1pdGVyCgkoXCBjb3VudHMgYXMgYSBxdW90ZSkuCnN0ZGluOgoJYT1iCgljYXQgPDwgIkVcJGEiCgloaQoJaCRhCgloXCRhCgloYgoJaFxiCglFJGEKCWVjaG8gZG9uZQpleHBlY3RlZC1zdGRvdXQ6CgloaQoJaCRhCgloXCRhCgloYgoJaFxiCglkb25lCi0tLQpuYW1lOiBoZXJlZG9jLTlhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBoZXJlIHN0cmluZ3Mgd29yay4Kc3RkaW46CgliYXI9ImJhcgoJCWJheiIKCXRyIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IG5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtIDw8PGZvbwoJIiRfX3Byb2duYW1lIiAtYyAidHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8Zm9vIgoJdHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8IiRiYXIiCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDwnJGJhcicKCXRyIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IG5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtIDw8PFwkYmFyCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDwtZm9vCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDwiJChlY2hvICJmb28gYmFyIikiCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDwiQSAkKGVjaG8gImZvbyBiYXIiKSBCIgoJdHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8XCRiXCRiJGJhcgpleHBlY3RlZC1zdGRvdXQ6CglzYmIKCXNiYgoJb25lCgkJb25tCgkkb25lCgkkb25lCgktc2JiCglzYmIgb25lCglBIHNiYiBvbmUgQgoJJG8kb29uZQoJCW9ubQotLS0KbmFtZTogaGVyZWRvYy05YgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYSBjb3JuZXIgY2FzZSBvZiBoZXJlIHN0cmluZ3Mgd29ya3MgbGlrZSBiYXNoCnN0ZGluOgoJZm5vcmQ9NDIKCWJhcj0iYmFyCgkJIFwkZm5vcmQgYmF6IgoJdHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8JGJhcgpleHBlY3RlZC1zdGRvdXQ6CglvbmUgJHNhYmVxIG9ubQpjYXRlZ29yeTogYmFzaAotLS0KbmFtZTogaGVyZWRvYy05YwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYSBjb3JuZXIgY2FzZSBvZiBoZXJlIHN0cmluZ3Mgd29ya3MgbGlrZSBrc2g5MywgenNoCnN0ZGluOgoJZm5vcmQ9NDIKCWJhcj0iYmFyCgkJIFwkZm5vcmQgYmF6IgoJdHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8JGJhcgpleHBlY3RlZC1zdGRvdXQ6CglvbmUKCQkgJHNhYmVxIG9ubQotLS0KbmFtZTogaGVyZWRvYy05ZApkZXNjcmlwdGlvbjoKCUNoZWNrIGFub3RoZXIgY29ybmVyIGNhc2Ugb2YgaGVyZSBzdHJpbmdzCnN0ZGluOgoJdHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8IGJhcgpleHBlY3RlZC1zdGRvdXQ6CglvbmUKLS0tCm5hbWU6IGhlcmVkb2MtOWUKZGVzY3JpcHRpb246CglDaGVjayBoZXJlIHN0cmluZyByZWxhdGVkIHJlZ3Jlc3Npb24gd2l0aCBtdWx0aXBsZSBpb3BzCnN0ZGluOgoJZWNobyAkKHRyIHIgeiA8PDwnYmFyJyAyPi9kZXYvbnVsbCkKZXhwZWN0ZWQtc3Rkb3V0OgoJYmF6Ci0tLQpuYW1lOiBoZXJlZG9jLTlmCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbG9uZyBoZXJlIHN0cmluZ3MKc3RkaW46CgljYXQgPDw8ICIkKCAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApYWEiCmV4cGVjdGVkLXN0ZG91dDoKCWFhCi0tLQpuYW1lOiBoZXJlZG9jLTEwCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZGlyZWN0IGhlcmUgZG9jdW1lbnQgYXNzaWdubWVudApjYXRlZ29yeTogIXNoZWxsOmViY2RpYy15ZXMKc3RkaW46Cgl4PXUKCXZhPTw8RU9GCgk9YSAkeCBceDQwPQoJRU9GCgl2Yj08PCdFT0YnCgk9YiAkeCBceDQwPQoJRU9GCglmdW5jdGlvbiBmb28gewoJCXZjPTw8LUVPRgoJCQk9YyAkeCBceDQwPQoJCUVPRgoJfQoJZm5kPSQodHlwZXNldCAtZiBmb28pCglwcmludCAtciAtLSAiJGZuZCIKCWZ1bmN0aW9uIGZvbyB7CgkJZWNobyBibHViCgl9Cglmb28KCWV2YWwgIiRmbmQiCglmb28KCSMgcmF0aGVyIG5vbnNlbnNpY2FsLCBidXTigKYKCXZkPTw8PCI9ZCAkeCBceDQwPSIKCXZlPTw8PCc9ZSAkeCBceDQwPScKCXZmPTw8PCQnPWYgJHggXHg0MD0nCgkjIG5vdyBjaGVjawoJcHJpbnQgLXIgLS0gInwgdmE9eyR2YX0gdmI9eyR2Yn0gdmM9eyR2Y30gdmQ9eyR2ZH0gdmU9eyR2ZX0gdmY9eyR2Zn0gfCIKCSMgY2hlY2sgYXBwZW5kCgl2PTw8LUVPRgoJCXZhcHAxCglFT0YKCXYrPTw8LUVPRgoJCXZhcHAyCglFT0YKCXByaW50IC1yIC0tICJ8ICR7di8vJCdcbicvXn0gfCIKZXhwZWN0ZWQtc3Rkb3V0OgoJZnVuY3Rpb24gZm9vIHsKCQl2Yz08PC1FT0YgCgk9YyAkeCBceDQwPQoJRU9GCgkKCX0gCglibHViCgl8IHZhPXs9YSB1IFx4NDA9Cgl9IHZiPXs9YiAkeCBceDQwPQoJfSB2Yz17PWMgdSBceDQwPQoJfSB2ZD17PWQgdSBceDQwPQoJfSB2ZT17PWUgJHggXHg0MD0KCX0gdmY9ez1mICR4IEA9Cgl9IHwKCXwgdmFwcDFedmFwcDJeIHwKLS0tCm5hbWU6IGhlcmVkb2MtMTAtZWJjZGljCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZGlyZWN0IGhlcmUgZG9jdW1lbnQgYXNzaWdubWVudApjYXRlZ29yeTogIXNoZWxsOmViY2RpYy1ubwpzdGRpbjoKCXg9dQoJdmE9PDxFT0YKCT1hICR4IFx4N0M9CglFT0YKCXZiPTw8J0VPRicKCT1iICR4IFx4N0M9CglFT0YKCWZ1bmN0aW9uIGZvbyB7CgkJdmM9PDwtRU9GCgkJCT1jICR4IFx4N0M9CgkJRU9GCgl9CglmbmQ9JCh0eXBlc2V0IC1mIGZvbykKCXByaW50IC1yIC0tICIkZm5kIgoJZnVuY3Rpb24gZm9vIHsKCQllY2hvIGJsdWIKCX0KCWZvbwoJZXZhbCAiJGZuZCIKCWZvbwoJIyByYXRoZXIgbm9uc2Vuc2ljYWwsIGJ1dOKApgoJdmQ9PDw8Ij1kICR4IFx4N0M9IgoJdmU9PDw8Jz1lICR4IFx4N0M9JwoJdmY9PDw8JCc9ZiAkeCBceDdDPScKCSMgbm93IGNoZWNrCglwcmludCAtciAtLSAifCB2YT17JHZhfSB2Yj17JHZifSB2Yz17JHZjfSB2ZD17JHZkfSB2ZT17JHZlfSB2Zj17JHZmfSB8IgoJIyBjaGVjayBhcHBlbmQKCXY9PDwtRU9GCgkJdmFwcDEKCUVPRgoJdis9PDwtRU9GCgkJdmFwcDIKCUVPRgoJcHJpbnQgLXIgLS0gInwgJHt2Ly8kJ1xuJy9efSB8IgpleHBlY3RlZC1zdGRvdXQ6CglmdW5jdGlvbiBmb28gewoJCXZjPTw8LUVPRiAKCT1jICR4IFx4N0M9CglFT0YKCQoJfSAKCWJsdWIKCXwgdmE9ez1hIHUgXHg3Qz0KCX0gdmI9ez1iICR4IFx4N0M9Cgl9IHZjPXs9YyB1IFx4N0M9Cgl9IHZkPXs9ZCB1IFx4N0M9Cgl9IHZlPXs9ZSAkeCBceDdDPQoJfSB2Zj17PWYgJHggQD0KCX0gfAoJfCB2YXBwMV52YXBwMl4gfAotLS0KbmFtZTogaGVyZWRvYy0xMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGhlcmUgZG9jdW1lbnRzIHdpdGggbm8gb3IgZW1wdHkgZGVsaW1pdGVyCnN0ZGluOgoJeD11Cgl2YT08PAoJPWEgJHggXHg0MD0KCTw8Cgl2Yj08PCcnCgk9YiAkeCBceDQwPQoJCglmdW5jdGlvbiBmb28gewoJCXZjPTw8LQoJCQk9YyAkeCBceDQwPQoJCTw8CgkJdmQ9PDwtJycKCQkJPWQgJHggXHg0MD0KCQoJfQoJZm5kPSQodHlwZXNldCAtZiBmb28pCglwcmludCAtciAtLSAiJGZuZCIKCWZ1bmN0aW9uIGZvbyB7CgkJZWNobyBibHViCgl9Cglmb28KCWV2YWwgIiRmbmQiCglmb28KCXByaW50IC1yIC0tICJ8IHZhPXskdmF9IHZiPXskdmJ9IHZjPXskdmN9IHZkPXskdmR9IHwiCgl4PXkKCWZvbwoJdHlwZXNldCAtZiBmb28KCXByaW50IC1yIC0tICJ8IHZjPXskdmN9IHZkPXskdmR9IHwiCgkjIGNoZWNrIGFwcGVuZAoJdj08PC0KCQl2YXBwMQoJPDwKCXYrPTw8LScnCgkJdmFwcDIKCQoJcHJpbnQgLXIgLS0gInwgJHt2Ly8kJ1xuJy9efSB8IgpleHBlY3RlZC1zdGRvdXQ6CglmdW5jdGlvbiBmb28gewoJCXZjPTw8LSAKCT1jICR4IFx4NDA9Cgk8PAoJCgkJdmQ9PDwtIiIgCgk9ZCAkeCBceDQwPQoJCgkKCX0gCglibHViCgl8IHZhPXs9YSB1IFx4NDA9Cgl9IHZiPXs9YiAkeCBceDQwPQoJfSB2Yz17PWMgdSBceDQwPQoJfSB2ZD17PWQgJHggXHg0MD0KCX0gfAoJZnVuY3Rpb24gZm9vIHsKCQl2Yz08PC0gCgk9YyAkeCBceDQwPQoJPDwKCQoJCXZkPTw8LSIiIAoJPWQgJHggXHg0MD0KCQoJCgl9IAoJfCB2Yz17PWMgeSBceDQwPQoJfSB2ZD17PWQgJHggXHg0MD0KCX0gfAoJfCB2YXBwMV52YXBwMl4gfAotLS0KbmFtZTogaGVyZWRvYy0xMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGhlcmUgZG9jdW1lbnRzIGNhbiB1c2UgJCogYW5kICRAOyBub3RlIHNoZWxscyB2YXJ5OgoJ4oCiIHBka3NoIDUuMi4xNCBhY3RzIHRoZSBzYW1lCgnigKIgZGFzaCBoYXMgMSBhbmQgMiB0aGUgc2FtZSBidXQgMyBsYWNrcyB0aGUgc3BhY2UKCeKAoiBrc2g5MywgYmFzaDQgZGlmZmVyIGluIDIgYnkgdXNpbmcgc3BhY2UgaXB2IGNvbG9uCnN0ZGluOgoJc2V0IC0tIGEgYgoJbmw9JwoJJwoJSUZTPSIgCSRubCI7IG49MQoJY2F0IDw8RU9GCgkkbiBmb28gJCogZm9vCgkkbiBiYXIgIiQqIiBiYXIKCSRuIGJheiAkQCBiYXoKCSRuIGJsYSAiJEAiIGJsYQoJRU9GCglJRlM9IjoiOyBuPTIKCWNhdCA8PEVPRgoJJG4gZm9vICQqIGZvbwoJJG4gYmFyICIkKiIgYmFyCgkkbiBiYXogJEAgYmF6CgkkbiBibGEgIiRAIiBibGEKCUVPRgoJSUZTPTsgbj0zCgljYXQgPDxFT0YKCSRuIGZvbyAkKiBmb28KCSRuIGJhciAiJCoiIGJhcgoJJG4gYmF6ICRAIGJhegoJJG4gYmxhICIkQCIgYmxhCglFT0YKZXhwZWN0ZWQtc3Rkb3V0OgoJMSBmb28gYSBiIGZvbwoJMSBiYXIgImEgYiIgYmFyCgkxIGJheiBhIGIgYmF6CgkxIGJsYSAiYSBiIiBibGEKCTIgZm9vIGE6YiBmb28KCTIgYmFyICJhOmIiIGJhcgoJMiBiYXogYTpiIGJhegoJMiBibGEgImE6YiIgYmxhCgkzIGZvbyBhIGIgZm9vCgkzIGJhciAiYSBiIiBiYXIKCTMgYmF6IGEgYiBiYXoKCTMgYmxhICJhIGIiIGJsYQotLS0KbmFtZTogaGVyZWRvYy0xNApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdXNpbmcgbXVsdGlwbGUgaGVyZSBkb2N1bWVudHMgd29ya3MKc3RkaW46Cglmb28oKSB7CgkJZWNobyAiZ290ICQoY2F0KSBvbiBzdGRpbiIKCQllY2hvICJnb3QgJChjYXQgPCY0KSBvbiBmZCM0IgoJCWVjaG8gImdvdCAkKGNhdCA8JjUpIG9uIGZkIzUiCgl9CgliYXIoKSB7CgkJZm9vIDQ8PC1hIDw8LWIgNTw8LWMKCQlmb3VyCgkJYQoJCXplcm8KCQliCgkJZml2ZQoJCWMKCX0KCXg9JCh0eXBlc2V0IC1mIGJhcikKCWV2YWwgIiR4IgoJeT0kKHR5cGVzZXQgLWYgYmFyKQoJW1sgJHggPSAiJHkiIF1dOyBlY2hvICQ/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+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+IC9kZXYvbnVsbAoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglhCi0tLQpuYW1lOiByZWdyZXNzaW9uLTI2CmRlc2NyaXB0aW9uOgoJQ2hlY2sgcmVhZGluZyBzdGRpbiBpbiBhIHdoaWxlIGxvb3AuICBUaGUgcmVhZCBzaG91bGQgcmVhZCBib3RoCglsaW5lcywgbm90IGp1c3QgdGhlIGZpcnN0LgpzY3JpcHQ6CglhPQoJd2hpbGUgWyAiJGEiICE9IHh4eCBdIDsgZG8KCSAgICBsYXN0PSR4CgkgICAgcmVhZCB4CgkgICAgY2F0IC9kZXYvbnVsbCB8IHNlZCAncy94L3kvJwoJICAgIGE9eCRhCglkb25lCgllY2hvICRsYXN0CnN0ZGluOgoJYQoJYgpleHBlY3RlZC1zdGRvdXQ6CgliCi0tLQpuYW1lOiByZWdyZXNzaW9uLTI3CmRlc2NyaXB0aW9uOgoJVGhlIGNvbW1hbmQKCQkuIC9kb2VzL25vdC9leGlzdAoJc2hvdWxkIGNhdXNlIGEgc2NyaXB0IHRvIGV4aXQuCnN0ZGluOgoJLiBkb2VzL25vdC9leGlzdAoJZWNobyBoaQpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC9kb2VzXC9ub3RcL2V4aXN0LwotLS0KbmFtZTogcmVncmVzc2lvbi0yOApkZXNjcmlwdGlvbjoKCXZhcmlhYmxlIGFzc2lnbmVtZW50cyBub3QgZGV0ZWN0ZWQgd2VsbApzdGRpbjoKCWEueD0xIGVjaG8gaGkKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvYVwueD0xLwotLS0KbmFtZTogcmVncmVzc2lvbi0yOQpkZXNjcmlwdGlvbjoKCWFsaWFzIGV4cGFuc2lvbiBkaWZmZXJlbnQgZnJvbSBBVCZUIGtzaDg4CnN0ZGluOgoJYWxpYXMgYT0nZm9yICcgYj0naSBpbicKCWEgYiBoaSA7IGRvIGVjaG8gJGkgOyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTMwCmRlc2NyaXB0aW9uOgoJc3RyYW5nZSBjaGFyYWN0ZXJzIGFsbG93ZWQgaW5zaWRlICR7Li4ufQpzdGRpbjoKCWVjaG8gJHthe2J9fQpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC8uPy8KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMzEKZGVzY3JpcHRpb246CglEb2VzIHJlYWQgaGFuZGxlIHBhcnRpYWwgbGluZXMgY29ycmVjdGx5CnNjcmlwdDoKCWE9IHJldD0KCXdoaWxlIFsgIiRhIiAhPSB4eHggXSA7IGRvCgkgICAgcmVhZCB4IHkgegoJICAgIHJldD0kPwoJICAgIGE9eCRhCglkb25lCgllY2hvICJbJHhdIgoJZWNobyAkcmV0CnN0ZGluOiAhCglhIEEgYUEKCWIgQiBCYgoJYwpleHBlY3RlZC1zdGRvdXQ6CglbY10KCTEKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMzIKZGVzY3JpcHRpb246CglEb2VzIHJlYWQgc2V0IHZhcmlhYmxlcyB0byBudWxsIGF0IGVvZj8Kc2NyaXB0OgoJYT0KCXdoaWxlIFsgIiRhIiAhPSB4eHggXSA7IGRvCgkgICAgcmVhZCB4IHkgegoJICAgIGE9eCRhCglkb25lCgllY2hvIDE6ICR7eC14IG5vdCBzZXR9ICR7eS15IG5vdCBzZXR9ICR7ei16IG5vdCBzZXR9CgllY2hvIDI6ICR7eDoreCBub3QgbnVsbH0gJHt5Oit5IG5vdCBudWxsfSAke3o6K3ogbm90IG51bGx9CnN0ZGluOgoJYSBBIEFhCgliIEIgQmIKZXhwZWN0ZWQtc3Rkb3V0OgoJMToKCTI6Ci0tLQpuYW1lOiByZWdyZXNzaW9uLTMzCmRlc2NyaXB0aW9uOgoJRG9lcyB1bWFzayBwcmludCBhIGxlYWRpbmcgMCB3aGVuIHVtYXNrIGlzIDMgZGlnaXRzPwpzdGRpbjoKCSMgb24gTWlOVCwgdGhlIGZpcnN0IHVtYXNrIGNhbGwgc2VlbXMgdG8gZmFpbAoJdW1hc2sgMDIyCgkjIG5vdywgdGhlIHRlc3QgcHJvcGVyCgl1bWFzayAyMjIKCXVtYXNrCmV4cGVjdGVkLXN0ZG91dDoKCTAyMjIKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMzUKZGVzY3JpcHRpb246CglUZW1wb3J5IGZpbGVzIHVzZWQgZm9yIGhlcmUtZG9jcyBpbiBmdW5jdGlvbnMgZ2V0IHRyYXNoZWQgYWZ0ZXIKCXRoZSBmdW5jdGlvbiBpcyBwYXJzZWQgKGJlZm9yZSBpdCBpcyBleGVjdXRlZCkKc3RkaW46CglmMSgpIHsKCQljYXQgPDwtIEVPRgoJCQlGMQoJCUVPRgoJCWYyKCkgewoJCQljYXQgPDwtIEVPRgoJCQkJRjIKCQkJRU9GCgkJfQoJfQoJZjEKCWYyCgl1bnNldCAtZiBmMQoJZjIKZXhwZWN0ZWQtc3Rkb3V0OgoJRjEKCUYyCglGMgotLS0KbmFtZTogcmVncmVzc2lvbi0zNgpkZXNjcmlwdGlvbjoKCUNvbW1hbmQgc3Vic3RpdHV0aW9uIGJyZWFrcyByZWFkaW5nIGluIHdoaWxlIGxvb3AKCSh0ZXN0IGZyb20gPHNqZ0B2b2lkLnplbi5vei5hdT4pCnN0ZGluOgoJKGVjaG8gYWJjZGVmOyBlY2hvOyBlY2hvIDEyMykgfAoJICAgIHdoaWxlIHJlYWQgbGluZQoJICAgIGRvCgkgICAgICAjIHRoZSBmb2xsb3dpbmcgbGluZSBicmVha3MgaXQKCSAgICAgIGM9YGVjaG8gJGxpbmUgfCB3YyAtY2AKCSAgICAgIGVjaG8gJGMKCSAgICBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCTcKCTEKCTQKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMzcKZGVzY3JpcHRpb246CglNYWNoaW5lcyB3aXRoIGJyb2tlbiB0aW1lcygpIChyZXBvcnRlZCBieSA8c2pnQHZvaWQuemVuLm96LmF1PikKCXRpbWUgZG9lcyBub3QgcmVwb3J0IGNvcnJlY3QgcmVhbCB0aW1lCnN0ZGluOgoJdGltZSBzbGVlcCAxCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAhL15ccyowXC4wW1xzXGRdK3JlYWx8XlxzKnJlYWxbXHNdKzArXC4wLwotLS0KbmFtZTogcmVncmVzc2lvbi0zOApkZXNjcmlwdGlvbjoKCXNldCAtZSBkb2Vzbid0IGlnbm9yZSBleGl0IGNvZGVzIGZvciBpZi93aGlsZS91bnRpbC8mJi98fC8hLgphcmd1bWVudHM6ICEtZSEKc3RkaW46CglpZiBmYWxzZTsgdGhlbiBlY2hvIGhpIDsgZmkKCWZhbHNlIHx8IHRydWUKCWZhbHNlICYmIHRydWUKCXdoaWxlIGZhbHNlOyBkbyBlY2hvIGhpOyBkb25lCgllY2hvIG9rCmV4cGVjdGVkLXN0ZG91dDoKCW9rCi0tLQpuYW1lOiByZWdyZXNzaW9uLTM5CmRlc2NyaXB0aW9uOgoJT25seSBwb3NoIGFuZCBva3NoKDIwMTMtMDcpIHNheSDigJxoaeKAnSBiZWxvdzsgRnJlZUJTRCBzaCwKCUdOVSBiYXNoIGluIFBPU0lYIG1vZGUsIGRhc2gsIGtzaDkzLCBta3NoIGRvbuKAmXQuIEFsbCBvZgoJdGhlbSBleGl0IDAuIFRoZSBQT1NJWCBiZWhhdmlvdXIgaXMgbmVlZGVkIGJ5IEJTRCBtYWtlLgpzdGRpbjoKCXNldCAtZQoJZWNobyBgZmFsc2U7IGVjaG8gaGlgICQoPHRoaXMtZmlsZS1kb2VzLW5vdC1leGlzdCkKCWVjaG8gJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJCgkwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvdGhpcy1maWxlLWRvZXMtbm90LWV4aXN0LwotLS0KbmFtZTogcmVncmVzc2lvbi00MApkZXNjcmlwdGlvbjoKCVRoaXMgdXNlZCB0byBjYXVzZSBhIGNvcmUgZHVtcAplbnYtc2V0dXA6ICFSQU5ET009MTIhCnN0ZGluOgoJZWNobyBoaQpleHBlY3RlZC1zdGRvdXQ6CgloaQotLS0KbmFtZTogcmVncmVzc2lvbi00MQpkZXNjcmlwdGlvbjoKCWZvbyBzaG91bGQgYmUgc2V0IHRvIGJhciAoc2hvdWxkIG5vdCBiZSBlbXB0eSkKc3RkaW46Cglmb289YAoJZWNobyBiYXJgCgllY2hvICIoJGZvbykiCmV4cGVjdGVkLXN0ZG91dDoKCShiYXIpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTQyCmRlc2NyaXB0aW9uOgoJQ2FuJ3QgdXNlIGNvbW1hbmQgbGluZSBhc3NpZ25tZW50cyB0byBhc3NpZ24gcmVhZG9ubHkgcGFyYW1ldGVycy4Kc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbnVuc2V0IFJBTkRPTVxuZXhwb3J0IHwgd2hpbGUgSUZTPSByZWFkIC1yJyBcCgkgICAgJ1JBTkRPTTsgZG8gZXZhbCAnXCcncHJpbnQgLXIgLS0gIiRSQU5ET009JCdcJyciJFJBTkRPTSInXCdcIlwnXDsgXAoJICAgIGRvbmUgPmVudjsgY2htb2QgK3ggZW52OyBQQVRIPS4kUEFUSFNFUCRQQVRICglmb289YmFyCglyZWFkb25seSBmb28KCWZvbz1zdHVmZiBlbnYgfCBncmVwICdeZm9vJwpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvcmVhZC1vbmx5LwotLS0KbmFtZTogcmVncmVzc2lvbi00MwpkZXNjcmlwdGlvbjoKCUNhbiBzdWJzaGVsbHMgYmUgcHJlZml4ZWQgYnkgcmVkaXJlY3Rpb25zIChoaXN0b3JpY2FsIHNoZWxscyBhbGxvdwoJdGhpcykKc3RkaW46Cgk8IC9kZXYvbnVsbCAoc2VkICdzL14vWC8nKQotLS0KbmFtZTogcmVncmVzc2lvbi00NQpkZXNjcmlwdGlvbjoKCVBhcmFtZXRlciBhc3NpZ25tZW50cyB3aXRoIFtdIHJlY29nbmlzZWQgY29ycmVjdGx5CnN0ZGluOgoJRk9PPSpbMTJdCglCQVI9YWJjWwoJTU9SRT1bYWJjXQoJSlVOSz1hW2JjCgllY2hvICI8JEZPTz4iCgllY2hvICI8JEJBUj4iCgllY2hvICI8JE1PUkU+IgoJZWNobyAiPCRKVU5LPiIKZXhwZWN0ZWQtc3Rkb3V0OgoJPCpbMTJdPgoJPGFiY1s+Cgk8W2FiY10+Cgk8YVtiYz4KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNDYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFsaWFzIGV4cGFuc2lvbiB3b3JrcyBpbiBjb21tYW5kIHN1YnN0aXR1dGlvbnMgYW5kCglhdCB0aGUgZW5kIG9mIGZpbGUuCnN0ZGluOgoJYWxpYXMgeD0nZWNobyBoaScKCUZPTz0iYHhgICIKCWVjaG8gIlskRk9PXSIKCXgKZXhwZWN0ZWQtc3Rkb3V0OgoJW2hpIF0KCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTQ3CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhc2VzIGFyZSBmdWxseSByZWFkLgpzdGRpbjoKCWFsaWFzIHg9J2VjaG8gaGk7CgllY2hvIHRoZXJlJwoJeAoJZWNobyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgl0aGVyZQoJZG9uZQotLS0KbmFtZTogcmVncmVzc2lvbi00OApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgKGhlcmUgZG9jKSB0ZW1wIGZpbGVzIGFyZSBub3QgbGVmdCBiZWhpbmQgYWZ0ZXIgYW4gZXhlYy4Kc3RkaW46Cglta2RpciBmb28gfHwgZXhpdCAxCglUTVBESVI9JFBXRC9mb28gIiRfX3Byb2duYW1lIiA8PC0gJ0VPRicKCQl4KCkgewoJCQlzZWQgJ3MvXi9YIC8nIDw8IEVfT19GCgkJCWhpCgkJCXRoZXJlCgkJCWZvbGtzCgkJCUVfT19GCgkJCWVjaG8gImRvbmUgKCQ/KSIKCQl9CgkJZWNobz1lY2hvOyBbIC14IC9iaW4vZWNobyBdICYmIGVjaG89L2Jpbi9lY2hvCgkJZXhlYyAkZWNobyBzdWJ0ZXN0LTEgaGkKCUVPRgoJZWNobyBzdWJ0ZXN0LTEgZm9vLyoKCVRNUERJUj0kUFdEL2ZvbyAiJF9fcHJvZ25hbWUiIDw8LSAnRU9GJwoJCWVjaG89ZWNobzsgWyAteCAvYmluL2VjaG8gXSAmJiBlY2hvPS9iaW4vZWNobwoJCXNlZCAncy9eL1ggLycgPDwgRV9PX0Y7IGV4ZWMgJGVjaG8gc3VidGVzdC0yIGhpCgkJYQoJCWZldwoJCWxpbmVzCgkJRV9PX0YKCUVPRgoJZWNobyBzdWJ0ZXN0LTIgZm9vLyoKZXhwZWN0ZWQtc3Rkb3V0OgoJc3VidGVzdC0xIGhpCglzdWJ0ZXN0LTEgZm9vLyoKCVggYQoJWCBmZXcKCVggbGluZXMKCXN1YnRlc3QtMiBoaQoJc3VidGVzdC0yIGZvby8qCi0tLQpuYW1lOiByZWdyZXNzaW9uLTQ5CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB1bnNldCBwYXJhbXMgd2l0aCBhdHRyaWJ1dGVzIGFyZSByZXBvcnRlZCBieSBzZXQsIHRob3NlCglzYW5zIGF0dHJpYnV0ZXMgYXJlIG5vdC4Kc3RkaW46Cgl1bnNldCBGT08gQkFSCgllY2hvIFgkRk9PCglleHBvcnQgQkFSCgl0eXBlc2V0IC1pIEJMQUgKCXNldCB8IGdyZXAgRk9PCglzZXQgfCBncmVwIEJBUgoJc2V0IHwgZ3JlcCBCTEFICmV4cGVjdGVkLXN0ZG91dDoKCVgKCUJBUgoJQkxBSAotLS0KbmFtZTogcmVncmVzc2lvbi01MApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYWxpYXNlcyBkbyBub3QgdXNlIGNvbnRpbnVhdGlvbiBwcm9tcHQgYWZ0ZXIgdHJhaWxpbmcKCXNlbWktY29sb24uCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJlbnZmIgoJUFMxPVkKCVBTMj1YCmVudi1zZXR1cDogIUVOVj0uL2VudmYhCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQpzdGRpbjoKCWFsaWFzIGZvbz0nZWNobyBoaSA7ICcKCWZvbwoJZm9vIGVjaG8gdGhlcmUKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWhpCgl0aGVyZQpleHBlY3RlZC1zdGRlcnI6ICEKCVlZWVkKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHNldCBhbGxvd3MgYm90aCArbyBhbmQgLW8gb3B0aW9ucyBvbiBzYW1lIGNvbW1hbmQgbGluZS4Kc3RkaW46CglzZXQgYSBiIGMKCXNldCAtbyBub2dsb2IgK28gYWxsZXhwb3J0CgllY2hvIEE6ICQqLCAqCmV4cGVjdGVkLXN0ZG91dDoKCUE6IGEgYiBjLCAqCi0tLQpuYW1lOiByZWdyZXNzaW9uLTUyCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBnbG9iYmluZyB3b3JrcyBpbiBwaXBlbGluZWQgY29tbWFuZHMKZmlsZS1zZXR1cDogZmlsZSA2NDQgImVudmYiCglQUzE9UApmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjIgoJc3R1ZmYKZW52LXNldHVwOiAhRU5WPS4vZW52ZiEKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCnN0ZGluOgoJc2VkICdzL14vWCAvJyA8IGFiKgoJZWNobyBtYXJrIDEKCXNlZCAncy9eL1ggLycgPCBhYiogfCBzZWQgJ3MvXi9ZIC8nCgllY2hvIG1hcmsgMgpleHBlY3RlZC1zdGRvdXQ6CglYIHN0dWZmCgltYXJrIDEKCVkgWCBzdHVmZgoJbWFyayAyCmV4cGVjdGVkLXN0ZGVycjogIQoJUFBQUFAKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGdldG9wdHMgd29ya3MgaW4gZnVuY3Rpb25zCnN0ZGluOgoJYmZ1bmMoKSB7CgkgICAgZWNobyBiZnVuYzogZW50ZXIgIihhcmdzOiAkKjsgT1BUSU5EPSRPUFRJTkQpIgoJICAgIHdoaWxlIGdldG9wdHMgQiBvYzsgZG8KCQljYXNlICRvYyBpbgoJCSAgKEIpCgkJICAgIGVjaG8gYmZ1bmM6IEIgb3B0aW9uCgkJICAgIDs7CgkJICAoKikKCQkgICAgZWNobyBiZnVuYzogb2RkIG9wdGlvbiAiKCRvYykiCgkJICAgIDs7CgkJZXNhYwoJICAgIGRvbmUKCSAgICBlY2hvIGJmdW5jOiBsZWF2ZQoJfQoJCglmdW5jdGlvbiBrZnVuYyB7CgkgICAgZWNobyBrZnVuYzogZW50ZXIgIihhcmdzOiAkKjsgT1BUSU5EPSRPUFRJTkQpIgoJICAgIHdoaWxlIGdldG9wdHMgSyBvYzsgZG8KCQljYXNlICRvYyBpbgoJCSAgKEspCgkJICAgIGVjaG8ga2Z1bmM6IEsgb3B0aW9uCgkJICAgIDs7CgkJICAoKikKCQkgICAgZWNobyBiZnVuYzogb2RkIG9wdGlvbiAiKCRvYykiCgkJICAgIDs7CgkJZXNhYwoJICAgIGRvbmUKCSAgICBlY2hvIGtmdW5jOiBsZWF2ZQoJfQoJCglzZXQgLS0gLWYgLWIgLWsgLWwKCWVjaG8gImxpbmUgMTogT1BUSU5EPSRPUFRJTkQiCglnZXRvcHRzIGtiZmwgb3B0YwoJZWNobyAibGluZSAyOiByZXQ9JD8sIG9wdGM9JG9wdGMsIE9QVElORD0kT1BUSU5EIgoJYmZ1bmMgLUJCQiBibGFoCgllY2hvICJsaW5lIDM6IE9QVElORD0kT1BUSU5EIgoJZ2V0b3B0cyBrYmZsIG9wdGMKCWVjaG8gImxpbmUgNDogcmV0PSQ/LCBvcHRjPSRvcHRjLCBPUFRJTkQ9JE9QVElORCIKCWtmdW5jIC1LS0sgYmxhaAoJZWNobyAibGluZSA1OiBPUFRJTkQ9JE9QVElORCIKCWdldG9wdHMga2JmbCBvcHRjCgllY2hvICJsaW5lIDY6IHJldD0kPywgb3B0Yz0kb3B0YywgT1BUSU5EPSRPUFRJTkQiCgllY2hvCgkKCU9QVElORD0xCglzZXQgLS0gLWZia2wKCWVjaG8gImxpbmUgMTA6IE9QVElORD0kT1BUSU5EIgoJZ2V0b3B0cyBrYmZsIG9wdGMKCWVjaG8gImxpbmUgMjA6IHJldD0kPywgb3B0Yz0kb3B0YywgT1BUSU5EPSRPUFRJTkQiCgliZnVuYyAtQkJCIGJsYWgKCWVjaG8gImxpbmUgMzA6IE9QVElORD0kT1BUSU5EIgoJZ2V0b3B0cyBrYmZsIG9wdGMKCWVjaG8gImxpbmUgNDA6IHJldD0kPywgb3B0Yz0kb3B0YywgT1BUSU5EPSRPUFRJTkQiCglrZnVuYyAtS0tLIGJsYWgKCWVjaG8gImxpbmUgNTA6IE9QVElORD0kT1BUSU5EIgoJZ2V0b3B0cyBrYmZsIG9wdGMKCWVjaG8gImxpbmUgNjA6IHJldD0kPywgb3B0Yz0kb3B0YywgT1BUSU5EPSRPUFRJTkQiCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMTogT1BUSU5EPTEKCWxpbmUgMjogcmV0PTAsIG9wdGM9ZiwgT1BUSU5EPTIKCWJmdW5jOiBlbnRlciAoYXJnczogLUJCQiBibGFoOyBPUFRJTkQ9MikKCWJmdW5jOiBCIG9wdGlvbgoJYmZ1bmM6IEIgb3B0aW9uCgliZnVuYzogbGVhdmUKCWxpbmUgMzogT1BUSU5EPTIKCWxpbmUgNDogcmV0PTAsIG9wdGM9YiwgT1BUSU5EPTMKCWtmdW5jOiBlbnRlciAoYXJnczogLUtLSyBibGFoOyBPUFRJTkQ9MSkKCWtmdW5jOiBLIG9wdGlvbgoJa2Z1bmM6IEsgb3B0aW9uCglrZnVuYzogSyBvcHRpb24KCWtmdW5jOiBsZWF2ZQoJbGluZSA1OiBPUFRJTkQ9MwoJbGluZSA2OiByZXQ9MCwgb3B0Yz1rLCBPUFRJTkQ9NAoJCglsaW5lIDEwOiBPUFRJTkQ9MQoJbGluZSAyMDogcmV0PTAsIG9wdGM9ZiwgT1BUSU5EPTIKCWJmdW5jOiBlbnRlciAoYXJnczogLUJCQiBibGFoOyBPUFRJTkQ9MikKCWJmdW5jOiBCIG9wdGlvbgoJYmZ1bmM6IEIgb3B0aW9uCgliZnVuYzogbGVhdmUKCWxpbmUgMzA6IE9QVElORD0yCglsaW5lIDQwOiByZXQ9MSwgb3B0Yz0/LCBPUFRJTkQ9MgoJa2Z1bmM6IGVudGVyIChhcmdzOiAtS0tLIGJsYWg7IE9QVElORD0xKQoJa2Z1bmM6IEsgb3B0aW9uCglrZnVuYzogSyBvcHRpb24KCWtmdW5jOiBLIG9wdGlvbgoJa2Z1bmM6IGxlYXZlCglsaW5lIDUwOiBPUFRJTkQ9MgoJbGluZSA2MDogcmV0PTEsIG9wdGM9PywgT1BUSU5EPTIKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IDsgaXMgbm90IHJlcXVpcmVkIGJlZm9yZSB0aGUgdGhlbiBpbiBpZiAoKCAuLi4gKSkgdGhlbiAuLi4Kc3RkaW46CglpZiAoKCAxICkpIHRoZW4KCSAgICBlY2hvIG9rIGRwYXJlbgoJZmkKCWlmIFtbIC1uIDEgXV0gdGhlbgoJICAgIGVjaG8gb2sgZGJyYWNrZXRzCglmaQpleHBlY3RlZC1zdGRvdXQ6CglvayBkcGFyZW4KCW9rIGRicmFja2V0cwotLS0KbmFtZTogcmVncmVzc2lvbi01NQpkZXNjcmlwdGlvbjoKCUNoZWNrICR7Zm9vOiViYXJ9IGlzIGFsbG93ZWQgKGtzaDg4IGFsbG93cyBpdC4uLikKc3RkaW46Cgl4PWZvb1hiYXJYYmxhaAoJZWNobyAxICR7eCVYKn0KCWVjaG8gMiAke3g6JVgqfQoJZWNobyAzICR7eCUlWCp9CgllY2hvIDQgJHt4OiUlWCp9CgllY2hvIDUgJHt4IypYfQoJZWNobyA2ICR7eDojKlh9CgllY2hvIDcgJHt4IyMqWH0KCWVjaG8gOCAke3g6IyMqWH0KZXhwZWN0ZWQtc3Rkb3V0OgoJMSBmb29YYmFyCgkyIGZvb1hiYXIKCTMgZm9vCgk0IGZvbwoJNSBiYXJYYmxhaAoJNiBiYXJYYmxhaAoJNyBibGFoCgk4IGJsYWgKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTcKZGVzY3JpcHRpb246CglDaGVjayBpZiB0eXBlc2V0IG91dHB1dCBpcyBjb3JyZWN0IGZvcgoJdW5pbml0aWFsaXNlZCBhcnJheSBlbGVtZW50cy4Kc3RkaW46Cgl0eXBlc2V0IC1pIHh4eFs0XQoJZWNobyBBCgl0eXBlc2V0IC1pIHwgZ3JlcCB4eHggfCBzZWQgJ3MvXi8gICAgLycKCWVjaG8gQgoJdHlwZXNldCB8IGdyZXAgeHh4IHwgc2VkICdzL14vICAgIC8nCgkKCXh4eFsxXT0yKzUKCWVjaG8gTQoJdHlwZXNldCAtaSB8IGdyZXAgeHh4IHwgc2VkICdzL14vICAgIC8nCgllY2hvIE4KCXR5cGVzZXQgfCBncmVwIHh4eCB8IHNlZCAncy9eLyAgICAvJwpleHBlY3RlZC1zdGRvdXQ6CglBCgkgICAgeHh4CglCCgkgICAgdHlwZXNldCAtaSB4eHgKCU0KCSAgICB4eHhbMV09NwoJTgoJICAgIHNldCAtQSB4eHgKCSAgICB0eXBlc2V0IC1pIHh4eFsxXQotLS0KbmFtZTogcmVncmVzc2lvbi01OApkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIHRyYXAgZXhpdCBpcyBvayAoZXhpdCBub3QgbWlzdGFrZW4gZm9yIHNpZ25hbCBuYW1lKQpzdGRpbjoKCXRyYXAgJ2VjaG8gaGknIGV4aXQKCXRyYXAgZXhpdCAxCmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTU5CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgJHsjYXJyYXlbKl19IGlzIGNhbGN1bGF0ZWQgY29ycmVjdGx5LgpzdGRpbjoKCWFbMTJdPWhpCglhWzhdPXRoZXJlCgllY2hvICR7I2FbKl19CmV4cGVjdGVkLXN0ZG91dDoKCTIKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNjAKZGVzY3JpcHRpb246CglDaGVjayBpZiBkZWZhdWx0IGV4aXQgc3RhdHVzIGlzIHByZXZpb3VzIGNvbW1hbmQKc3RkaW46CgkodHJ1ZTsgZXhpdCkKCWVjaG8gQSAkPwoJKGZhbHNlOyBleGl0KQoJZWNobyBCICQ/CgkoIChleGl0IDEwMykgOyBleGl0KQoJZWNobyBDICQ/CmV4cGVjdGVkLXN0ZG91dDoKCUEgMAoJQiAxCglDIDEwMwotLS0KbmFtZTogcmVncmVzc2lvbi02MQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEVYSVQgdHJhcCBpcyBleGVjdXRlZCBmb3Igc3ViIHNoZWxscy4Kc3RkaW46Cgl0cmFwICdlY2hvIHBhcmVudCBleGl0JyBFWElUCgllY2hvIHN0YXJ0CgkoZWNobyBBOyBlY2hvIEEgbGFzdCkKCWVjaG8gQgoJKGVjaG8gQzsgdHJhcCAnZWNobyBzdWIgZXhpdCcgRVhJVDsgZWNobyBDIGxhc3QpCgllY2hvIHBhcmVudCBsYXN0CmV4cGVjdGVkLXN0ZG91dDoKCXN0YXJ0CglBCglBIGxhc3QKCUIKCUMKCUMgbGFzdAoJc3ViIGV4aXQKCXBhcmVudCBsYXN0CglwYXJlbnQgZXhpdAotLS0KbmFtZTogcmVncmVzc2lvbi02MgpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIHRlc3QgLW50Ly1vdCBzdWNjZWVkcyBpZiBzZWNvbmQoZmlyc3QpIGZpbGUgaXMgbWlzc2luZy4Kc3RkaW46Cgk6PmEKCXRlc3QgYSAtbnQgYiAmJiBlY2hvIG50IE9LIHx8IGVjaG8gbnQgQkFECgl0ZXN0IGIgLW90IGEgJiYgZWNobyBvdCBPSyB8fCBlY2hvIG90IEJBRApleHBlY3RlZC1zdGRvdXQ6CgludCBPSwoJb3QgT0sKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNjMKZGVzY3JpcHRpb246CglDaGVjayBpZiB0eXBlc2V0LCBleHBvcnQsIGFuZCByZWFkb25seSB3b3JrCnN0ZGluOgoJewoJCWVjaG8gRk5PUkQtMAoJCUZOT1JEX0E9MQoJCUZOT1JEX0I9MgoJCUZOT1JEX0M9MwoJCUZOT1JEX0Q9NAoJCUZOT1JEX0U9NQoJCUZOT1JEX0Y9NgoJCUZOT1JEX0c9NwoJCUZOT1JEX0g9OAoJCWludGVnZXIgRk5PUkRfRSBGTk9SRF9GIEZOT1JEX0cgRk5PUkRfSAoJCWV4cG9ydCBGTk9SRF9DIEZOT1JEX0QgRk5PUkRfRyBGTk9SRF9ICgkJcmVhZG9ubHkgRk5PUkRfQiBGTk9SRF9EIEZOT1JEX0YgRk5PUkRfSAoJCWVjaG8gRk5PUkQtMQoJCWV4cG9ydAoJCWVjaG8gRk5PUkQtMgoJCWV4cG9ydCAtcAoJCWVjaG8gRk5PUkQtMwoJCXJlYWRvbmx5CgkJZWNobyBGTk9SRC00CgkJcmVhZG9ubHkgLXAKCQllY2hvIEZOT1JELTUKCQl0eXBlc2V0CgkJZWNobyBGTk9SRC02CgkJdHlwZXNldCAtcAoJCWVjaG8gRk5PUkQtNwoJCXR5cGVzZXQgLQoJCWVjaG8gRk5PUkQtOAoJfSB8IGZncmVwIEZOT1JECglmbm9yZD0oNDIgMjMpCgl0eXBlc2V0IC1wIGZub3JkCgllY2hvIEZOT1JELTkKZXhwZWN0ZWQtc3Rkb3V0OgoJRk5PUkQtMAoJRk5PUkQtMQoJRk5PUkRfQwoJRk5PUkRfRAoJRk5PUkRfRwoJRk5PUkRfSAoJRk5PUkQtMgoJZXhwb3J0IEZOT1JEX0M9MwoJZXhwb3J0IEZOT1JEX0Q9NAoJZXhwb3J0IEZOT1JEX0c9NwoJZXhwb3J0IEZOT1JEX0g9OAoJRk5PUkQtMwoJRk5PUkRfQgoJRk5PUkRfRAoJRk5PUkRfRgoJRk5PUkRfSAoJRk5PUkQtNAoJcmVhZG9ubHkgRk5PUkRfQj0yCglyZWFkb25seSBGTk9SRF9EPTQKCXJlYWRvbmx5IEZOT1JEX0Y9NgoJcmVhZG9ubHkgRk5PUkRfSD04CglGTk9SRC01Cgl0eXBlc2V0IEZOT1JEX0EKCXR5cGVzZXQgLXIgRk5PUkRfQgoJdHlwZXNldCAteCBGTk9SRF9DCgl0eXBlc2V0IC14IC1yIEZOT1JEX0QKCXR5cGVzZXQgLWkgRk5PUkRfRQoJdHlwZXNldCAtaSAtciBGTk9SRF9GCgl0eXBlc2V0IC1pIC14IEZOT1JEX0cKCXR5cGVzZXQgLWkgLXggLXIgRk5PUkRfSAoJRk5PUkQtNgoJdHlwZXNldCBGTk9SRF9BPTEKCXR5cGVzZXQgLXIgRk5PUkRfQj0yCgl0eXBlc2V0IC14IEZOT1JEX0M9MwoJdHlwZXNldCAteCAtciBGTk9SRF9EPTQKCXR5cGVzZXQgLWkgRk5PUkRfRT01Cgl0eXBlc2V0IC1pIC1yIEZOT1JEX0Y9NgoJdHlwZXNldCAtaSAteCBGTk9SRF9HPTcKCXR5cGVzZXQgLWkgLXggLXIgRk5PUkRfSD04CglGTk9SRC03CglGTk9SRF9BPTEKCUZOT1JEX0I9MgoJRk5PUkRfQz0zCglGTk9SRF9EPTQKCUZOT1JEX0U9NQoJRk5PUkRfRj02CglGTk9SRF9HPTcKCUZOT1JEX0g9OAoJRk5PUkQtOAoJc2V0IC1BIGZub3JkCgl0eXBlc2V0IGZub3JkWzBdPTQyCgl0eXBlc2V0IGZub3JkWzFdPTIzCglGTk9SRC05Ci0tLQpuYW1lOiByZWdyZXNzaW9uLTY0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB3ZSBjYW4gcmVkZWZpbmUgZnVuY3Rpb25zIGNhbGxpbmcgdGltZSBidWlsdGluCnN0ZGluOgoJdCgpIHsKCQl0aW1lID4vZGV2L251bGwKCX0KCXQgMj4vZGV2L251bGwKCXQoKSB7CgkJdGltZQoJfQotLS0KbmFtZTogcmVncmVzc2lvbi02NQpkZXNjcmlwdGlvbjoKCWNoZWNrIGZvciBhIHJlZ3Jlc3Npb24gd2l0aCBzbGVlcCBidWlsdGluIGFuZCBzaWduYWwgbWFzawpjYXRlZ29yeTogIW5vanNpZwp0aW1lLWxpbWl0OiA1CnN0ZGluOgoJc2xlZXAgMQoJZWNobyBibHViIHwmCgl3aGlsZSByZWFkIC1wIGxpbmU7IGRvIDo7IGRvbmUKCWVjaG8gb2sKZXhwZWN0ZWQtc3Rkb3V0OgoJb2sKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNjYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHF1b3RpbmcgaXMgc2FuZQpjYXRlZ29yeTogIW5vanNpZwpzdGRpbjoKCWFjX3NwYWNlPScgJwoJYWNfbmV3bGluZT0nCgknCglzZXQgfCBncmVwIF5hY18gfCYKCXNldCAtQSBsaW5lcwoJd2hpbGUgSUZTPSByZWFkIC1wciBsaW5lOyBkbwoJCWlmIFtbICRsaW5lID0gKnNwYWNlKiBdXTsgdGhlbgoJCQlsaW5lc1swXT0kbGluZQoJCWVsc2UKCQkJbGluZXNbMV09JGxpbmUKCQlmaQoJZG9uZQoJZm9yIGxpbmUgaW4gIiR7bGluZXNbQF19IjsgZG8KCQlwcmludCAtciAtLSAiJGxpbmUiCglkb25lCmV4cGVjdGVkLXN0ZG91dDoKCWFjX3NwYWNlPScgJwoJYWNfbmV3bGluZT0kJ1xuJwotLS0KbmFtZTogcmVncmVzc2lvbi02NwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgd2UgY2FuIGJvdGggYnJlYWsgYW5kIHVzZSBzb3VyY2Ugb24gdGhlIHNhbWUgbGluZQpzdGRpbjoKCWZvciBzIGluIHM7IGRvIGJyZWFrOyBkb25lOyBwcmludCAtcyBzCi0tLQpuYW1lOiByZWdyZXNzaW9uLTY4CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGwgY29tbW9uIGFyaXRobWV0aWMgb3BlcmF0b3JzIHdvcmsgYXMgZXhwZWN0ZWQKc3RkaW46CgllY2hvIDEgJCgoIGEgPSA1ICkpIC4KCWVjaG8gMiAkKCggKythICkpICwgJCgoIGErKyApKSAsICQoKCBhICkpIC4KCWVjaG8gMyAkKCggLS1hICkpICwgJCgoIGEtLSApKSAsICQoKCBhICkpIC4KCWVjaG8gNCAkKCggYSA9PSA1ICkpICwgJCgoIGEgPT0gNiApKSAuCgllY2hvIDUgJCgoIGEgIT0gNSApKSAsICQoKCBhICE9IDYgKSkgLgoJZWNobyA2ICQoKCBhICo9IDMgKSkgLgoJZWNobyA3ICQoKCBhIC89IDUgKSkgLgoJZWNobyA4ICQoKCBhICU9IDIgKSkgLgoJZWNobyA5ICQoKCBhICs9IDkgKSkgLgoJZWNobyAxMCAkKCggYSAtPSA0ICkpIC4KCWVjaG8gMTEgJCgoIGEgPDw9IDEgKSkgLgoJZWNobyAxMiAkKCggYSA+Pj0gMSApKSAuCgllY2hvIDEzICQoKCBhICY9IDQgKSkgLgoJZWNobyAxNCAkKCggYSBePSBhICkpIC4KCWVjaG8gMTUgJCgoIGEgfD0gNSApKSAuCgllY2hvIDE2ICQoKCA1IDw8IDEgKSkgLgoJZWNobyAxNyAkKCggNSA+PiAxICkpIC4KCWVjaG8gMTggJCgoIDUgPD0gNiApKSAsICQoKCA1IDw9IDUgKSkgLCAkKCggNSA8PSA0ICkpIC4KCWVjaG8gMTkgJCgoIDUgPj0gNiApKSAsICQoKCA1ID49IDUgKSkgLCAkKCggNSA+PSA0ICkpIC4KCWVjaG8gMjAgJCgoIDUgPCA2ICkpICwgJCgoIDUgPCA1ICkpICwgJCgoIDUgPCA0ICkpIC4KCWVjaG8gMjEgJCgoIDUgPiA2ICkpICwgJCgoIDUgPiA1ICkpICwgJCgoIDUgPiA0ICkpIC4KCWVjaG8gMjIgJCgoIDAgJiYgMCApKSAsICQoKCAwICYmIDEgKSkgLCAkKCggMSAmJiAwICkpICwgJCgoIDEgJiYgMSApKSAuCgllY2hvIDIzICQoKCAwIHx8IDAgKSkgLCAkKCggMCB8fCAxICkpICwgJCgoIDEgfHwgMCApKSAsICQoKCAxIHx8IDEgKSkgLgoJZWNobyAyNCAkKCggNSAqIDMgKSkgLgoJZWNobyAyNSAkKCggNyAvIDIgKSkgLgoJZWNobyAyNiAkKCggNSAlIDUgKSkgLCAkKCggNSAlIDQgKSkgLCAkKCggNSAlIDEgKSkgLCAkKCggNSAlIC0xICkpICwgJCgoIDUgJSAtMiApKSAuCgllY2hvIDI3ICQoKCA1ICsgMiApKSAsICQoKCA1ICsgMCApKSAsICQoKCA1ICsgLTIgKSkgLgoJZWNobyAyOCAkKCggNSAtIDIgKSkgLCAkKCggNSAtIDAgKSkgLCAkKCggNSAtIC0yICkpIC4KCWVjaG8gMjkgJCgoIDYgJiA0ICkpICwgJCgoIDYgJiA4ICkpIC4KCWVjaG8gMzAgJCgoIDQgXiAyICkpICwgJCgoIDQgXiA0ICkpIC4KCWVjaG8gMzEgJCgoIDQgfCAyICkpICwgJCgoIDQgfCA0ICkpICwgJCgoIDQgfCAwICkpIC4KCWVjaG8gMzIgJCgoIDAgPyAxIDogMiApKSAsICQoKCAzID8gNCA6IDUgKSkgLgoJZWNobyAzMyAkKCggNSAsIDIgLCAzICkpIC4KCWVjaG8gMzQgJCgoIH4wICkpICwgJCgoIH4xICkpICwgJCgoIH5+MSApKSAsICQoKCB+fjIgKSkgLgoJZWNobyAzNSAkKCggITAgKSkgLCAkKCggITEgKSkgLCAkKCggISExICkpICwgJCgoICEhMiApKSAuCgllY2hvIDM2ICQoKCAoNSkgKSkgLgpleHBlY3RlZC1zdGRvdXQ6CgkxIDUgLgoJMiA2ICwgNiAsIDcgLgoJMyA2ICwgNiAsIDUgLgoJNCAxICwgMCAuCgk1IDAgLCAxIC4KCTYgMTUgLgoJNyAzIC4KCTggMSAuCgk5IDEwIC4KCTEwIDYgLgoJMTEgMTIgLgoJMTIgNiAuCgkxMyA0IC4KCTE0IDAgLgoJMTUgNSAuCgkxNiAxMCAuCgkxNyAyIC4KCTE4IDEgLCAxICwgMCAuCgkxOSAwICwgMSAsIDEgLgoJMjAgMSAsIDAgLCAwIC4KCTIxIDAgLCAwICwgMSAuCgkyMiAwICwgMCAsIDAgLCAxIC4KCTIzIDAgLCAxICwgMSAsIDEgLgoJMjQgMTUgLgoJMjUgMyAuCgkyNiAwICwgMSAsIDAgLCAwICwgMSAuCgkyNyA3ICwgNSAsIDMgLgoJMjggMyAsIDUgLCA3IC4KCTI5IDQgLCAwIC4KCTMwIDYgLCAwIC4KCTMxIDYgLCA0ICwgNCAuCgkzMiAyICwgNCAuCgkzMyAzIC4KCTM0IC0xICwgLTIgLCAxICwgMiAuCgkzNSAxICwgMCAsIDEgLCAxIC4KCTM2IDUgLgotLS0KbmFtZTogcmVncmVzc2lvbi02OQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYWxsIG5vbi1sa3NoIGFyaXRobWV0aWMgb3BlcmF0b3JzIHdvcmsgYXMgZXhwZWN0ZWQKY2F0ZWdvcnk6IHNoZWxsOmxlZ2FjeS1ubwpzdGRpbjoKCWE9NSBiPTB4ODAwMDAwMDUKCWVjaG8gMSAkKCggYSBePD0gMSApKSAsICQoKCBiIF48PSAxICkpIC4KCWVjaG8gMiAkKCggYSBePj0gMiApKSAsICQoKCBiIF4+PSAyICkpIC4KCWVjaG8gMyAkKCggNSBePCAxICkpIC4KCWVjaG8gNCAkKCggNSBePiAxICkpIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSAxMCAsIDExIC4KCTIgLTIxNDc0ODM2NDYgLCAtMTA3Mzc0MTgyMiAuCgkzIDEwIC4KCTQgLTIxNDc0ODM2NDYgLgotLS0KbmFtZTogZXhwb3J0LTEKZGVzY3JpcHRpb246CglDaGVjayBhbGxleHBvcnQgd29ya3MsIGJhc2ljCnN0ZGluOgoJcWE9MQoJc2V0IC1BIHFiIDIgMwoJc2V0IC1hCglxYz00CglzZXQgLUEgcWQgNSA2CglleHBvcnQgLXAgfCBncmVwICdeZXhwb3J0IHEnCmV4cGVjdGVkLXN0ZG91dDoKCWV4cG9ydCBxYz00CglleHBvcnQgcWRbMF09NQoJZXhwb3J0IHFkWzFdPTYKLS0tCm5hbWU6IHJlYWRvbmx5LTAKZGVzY3JpcHRpb246CglFbnN1cmUgcmVhZG9ubHkgaXMgaG9ub3VyZWQgZm9yIGFzc2lnbm1lbnRzIGFuZCB1bnNldApzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJ3U9eDsgZWNobyAkPyAkdSAuJyB8fCBlY2hvIGFib3J0ZWQsICQ/CgllY2hvID0KCSIkX19wcm9nbmFtZSIgLWMgJ3JlYWRvbmx5IHU7IHU9eDsgZWNobyAkPyAkdSAuJyB8fCBlY2hvIGFib3J0ZWQsICQ/CgllY2hvID0KCSIkX19wcm9nbmFtZSIgLWMgJ3U9eDsgcmVhZG9ubHkgdTsgdW5zZXQgdTsgZWNobyAkPyAkdSAuJyB8fCBlY2hvIGFib3J0ZWQsICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTAgeCAuCgk9CglhYm9ydGVkLCAyCgk9CgkxIHggLgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9yZWFkLW9ubHkvCi0tLQpuYW1lOiByZWFkb25seS0xCmRlc2NyaXB0aW9uOgoJaHR0cDovL2F1c3Rpbmdyb3VwYnVncy5uZXQvdmlldy5waHA/aWQ9MzY3IGZvciBleHBvcnQKc3RkaW46CgkiJF9fcHJvZ25hbWUiIC1jICdyZWFkb25seSBmb287IGV4cG9ydCBmb289YTsgZWNobyAkPycgfHwgZWNobyBhYm9ydGVkLCAkPwpleHBlY3RlZC1zdGRvdXQ6CglhYm9ydGVkLCAyCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL3JlYWQtb25seS8KLS0tCm5hbWU6IHJlYWRvbmx5LTJhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBnZXRvcHRzIHdvcmtzIGFzIGludGVuZGVkLCBmb3IgcmVhZG9ubHktMmIgdG8gYmUgdmFsaWQKc3RkaW46CgkiJF9fcHJvZ25hbWUiIC1jICdzZXQgLS0gLWEgYjsgZ2V0b3B0cyBhIGM7IGVjaG8gJD8gJGMgLjsgZ2V0b3B0cyBhIGM7IGVjaG8gJD8gJGMgLicgfHwgZWNobyBhYm9ydGVkLCAkPwpleHBlY3RlZC1zdGRvdXQ6CgkwIGEgLgoJMSA/IC4KLS0tCm5hbWU6IHJlYWRvbmx5LTJiCmRlc2NyaXB0aW9uOgoJaHR0cDovL2F1c3Rpbmdyb3VwYnVncy5uZXQvdmlldy5waHA/aWQ9MzY3IGZvciBnZXRvcHRzCnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAncmVhZG9ubHkgYzsgc2V0IC0tIC1hIGI7IGdldG9wdHMgYSBjOyBlY2hvICQ/ICRjIC4nIHx8IGVjaG8gYWJvcnRlZCwgJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJMiAuCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL3JlYWQtb25seS8KLS0tCm5hbWU6IHJlYWRvbmx5LTMKZGVzY3JpcHRpb246CglodHRwOi8vYXVzdGluZ3JvdXBidWdzLm5ldC92aWV3LnBocD9pZD0zNjcgZm9yIHJlYWQKc3RkaW46CgllY2hvIHggfCAiJF9fcHJvZ25hbWUiIC1jICdyZWFkIHM7IGVjaG8gJD8gJHMgLicgfHwgZWNobyBhYm9ydGVkLCAkPwoJZWNobyB5IHwgIiRfX3Byb2duYW1lIiAtYyAncmVhZG9ubHkgczsgcmVhZCBzOyBlY2hvICQ/ICRzIC4nIHx8IGVjaG8gYWJvcnRlZCwgJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJMCB4IC4KCTIgLgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9yZWFkLW9ubHkvCi0tLQpuYW1lOiByZWFkb25seS00CmRlc2NyaXB0aW9uOgoJRG8gbm90IHBlcm1pdCBieXBhc3NpbmcgcmVhZG9ubHkgZm9yIGZpcnN0IGFycmF5IGl0ZW0Kc3RkaW46CglzZXQgLUEgYXJyIC0tIGZvbyBiYXIKCXJlYWRvbmx5IGFycgoJYXJyPWJhegoJcHJpbnQgLXIgLS0gIiR7YXJyW0BdfSIKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL3JlYWRbIC1dP29ubHkvCi0tLQpuYW1lOiByZWFkb25seS01CmRlc2NyaXB0aW9uOgoJRW5zdXJlIHJlYWRvbmx5IGlzIGlkZW1wb3RlbnQKc3RkaW46CglyZWFkb25seSB4PTEKCXJlYWRvbmx5IHgKLS0tCm5hbWU6IHN5bnRheC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBsb25lIGFtcGVyc2FuZCBpcyBhIHN5bnRheCBlcnJvcgpzdGRpbjoKCSAmCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9zeW50YXggZXJyb3IvCi0tLQpuYW1lOiB4eHgtcXVvdGVkLW5ld2xpbmUtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXDxuZXdsaW5lPiB3b3JrcyBpbnNpZGUgb2YgJHt9CnN0ZGluOgoJYWJjPTIKCWVjaG8gJHthYlwKCWN9CmV4cGVjdGVkLXN0ZG91dDoKCTIKLS0tCm5hbWU6IHh4eC1xdW90ZWQtbmV3bGluZS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcPG5ld2xpbmU+IHdvcmtzIGF0IHRoZSBzdGFydCBvZiBhIGhlcmUgZG9jdW1lbnQKc3RkaW46CgljYXQgPDwgRU9cCglGCgloaQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiB4eHgtcXVvdGVkLW5ld2xpbmUtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXDxuZXdsaW5lPiB3b3JrcyBhdCB0aGUgZW5kIG9mIGEgaGVyZSBkb2N1bWVudApzdGRpbjoKCWNhdCA8PCBFT0YKCWhpCglFT1wKCUYKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKLS0tCm5hbWU6IHh4eC1tdWx0aS1hc3NpZ25tZW50LWNtZApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYXNzaWdubWVudHMgaW4gYSBjb21tYW5kIGFmZmVjdCBzdWJzZXF1ZW50IGFzc2lnbm1lbnRzCglpbiB0aGUgc2FtZSBjb21tYW5kCnN0ZGluOgoJRk9PPWFiYwoJRk9PPTEyMyBCQVI9JEZPTwoJZWNobyAkQkFSCmV4cGVjdGVkLXN0ZG91dDoKCTEyMwotLS0KbmFtZTogeHh4LW11bHRpLWFzc2lnbm1lbnQtcG9zaXgtY21kCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgYmVoYXZpb3VyIGZvciBtdWx0aXBsZSBhc3NpZ25tZW50cyB3aXRoIGEKCWNvbW1hbmQgbmFtZSBtYXRjaGVzIFBPU0lYLiBTZWU6CglodHRwOi8vdGhyZWFkLmdtYW5lLm9yZy9nbWFuZS5jb21wLnN0YW5kYXJkcy5wb3NpeC5hdXN0aW4uZ2VuZXJhbC8xOTI1CnN0ZGluOgoJWD1hIFk9YjsgWD0kWSBZPSRYICIkX19wcm9nbmFtZSIgLWMgJ2VjaG8gMSAkWCAkWSAuJzsgZWNobyAyICRYICRZIC4KCXVuc2V0IFggWSBaCglYPWEgWT0ke1g9Yn0gWj0kWCAiJF9fcHJvZ25hbWUiIC1jICdlY2hvIDMgJFogLicKCXVuc2V0IFggWSBaCglYPWEgWT0ke1g9Yn0gWj0kWDsgZWNobyA0ICRaIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSBiIGEgLgoJMiBhIGIgLgoJMyBiIC4KCTQgYSAuCi0tLQpuYW1lOiB4eHgtbXVsdGktYXNzaWdubWVudC1wb3NpeC1ub2NtZApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIGJlaGF2aW91ciBmb3IgbXVsdGlwbGUgYXNzaWdubWVudHMgd2l0aCBubwoJY29tbWFuZCBuYW1lIG1hdGNoZXMgUE9TSVggKERlYmlhbiAjMzM0MTgyKS4gU2VlOgoJaHR0cDovL3RocmVhZC5nbWFuZS5vcmcvZ21hbmUuY29tcC5zdGFuZGFyZHMucG9zaXguYXVzdGluLmdlbmVyYWwvMTkyNQpzdGRpbjoKCVg9YSBZPWI7IFg9JFkgWT0kWDsgZWNobyAxICRYICRZIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSBiIGIgLgotLS0KbmFtZTogeHh4LW11bHRpLWFzc2lnbm1lbnQtcG9zaXgtc3ViYXNzaWduCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgYmVoYXZpb3VyIGZvciBtdWx0aXBsZSBhc3NpZ25tZW50cyBtYXRjaGVzIFBPU0lYOgoJLSBUaGUgYXNzaWdubWVudCB3b3JkcyBzaGFsbCBiZSBleHBhbmRlZCBpbiB0aGUgY3VycmVudCBleGVjdXRpb24KCSAgZW52aXJvbm1lbnQuCgktIFRoZSBhc3NpZ25tZW50cyBoYXBwZW4gaW4gdGhlIHRlbXBvcmFyeSBleGVjdXRpb24gZW52aXJvbm1lbnQuCnN0ZGluOgoJdW5zZXQgWCBZIFoKCVo9YSBZPSR7WDo9Yn0gc2ggLWMgJ2VjaG8gKyRYKyArJFkrICskWisnCgllY2hvIC8kWC8KCSMgTm93IGZvciB0aGUgc3BlY2lhbCBjYXNlOgoJdW5zZXQgWCBZIFoKCVg9IFk9JHtYOj1ifSBzaCAtYyAnZWNobyArJFgrICskWSsnCgllY2hvIC8kWC8KZXhwZWN0ZWQtc3Rkb3V0OgoJKysgK2IrICthKwoJL2IvCgkrKyArYisKCS9iLwotLS0KbmFtZTogeHh4LWV4ZWMtZW52aXJvbm1lbnQtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRvIHNlZSBpZiBleGVjIHNldHMgaXQncyBlbnZpcm9ubWVudCBjb3JyZWN0bHkKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbnVuc2V0IFJBTkRPTVxuZXhwb3J0IHwgd2hpbGUgSUZTPSByZWFkIC1yJyBcCgkgICAgJ1JBTkRPTTsgZG8gZXZhbCAnXCcncHJpbnQgLXIgLS0gIiRSQU5ET009JCdcJyciJFJBTkRPTSInXCdcIlwnXDsgXAoJICAgIGRvbmUgPmVudjsgY2htb2QgK3ggZW52OyBQQVRIPS4kUEFUSFNFUCRQQVRICglGT089YmFyIGV4ZWMgZW52CmV4cGVjdGVkLXN0ZG91dC1wYXR0ZXJuOgoJLyhefC4qXG4pRk9PPWJhclxuLwotLS0KbmFtZTogeHh4LWV4ZWMtZW52aXJvbm1lbnQtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRvIG1ha2Ugc3VyZSBleGVjIGRvZXNuJ3QgY2hhbmdlIGVudmlyb25tZW50IGlmIGEgcHJvZ3JhbQoJaXNuJ3QgZXhlYy1lZApzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xudW5zZXQgUkFORE9NXG5leHBvcnQgfCB3aGlsZSBJRlM9IHJlYWQgLXInIFwKCSAgICAnUkFORE9NOyBkbyBldmFsICdcJydwcmludCAtciAtLSAiJFJBTkRPTT0kJ1wnJyIkUkFORE9NIidcJ1wiXCdcOyBcCgkgICAgZG9uZSA+ZW52OyBjaG1vZCAreCBlbnY7IFBBVEg9LiRQQVRIU0VQJFBBVEgKCWVudiA+YmFyMQoJRk9PPWJhciBleGVjOyBlbnYgPmJhcjIKCWNtcCAtcyBiYXIxIGJhcjIKLS0tCm5hbWU6IGV4ZWMtZnVuY3Rpb24tZW52aXJvbm1lbnQtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGFzc2lnbm1lbnRzIGluIGZ1bmN0aW9uIGNhbGxzIGFuZCB3aGV0aGVyIHRoZXkgYWZmZWN0Cgl0aGUgY3VycmVudCBleGVjdXRpb24gZW52aXJvbm1lbnQgKGtzaDkzLCBTVVN2NCkKc3RkaW46CglmKCkgeyBhPTI7IH07IGcoKSB7IGI9MzsgZWNobyB5JGMtOyB9OyBhPTEgZjsgYj0yOyBjPTEgZwoJZWNobyB4JGEtJGItIHokYy0KZXhwZWN0ZWQtc3Rkb3V0OgoJeTEtCgl4Mi0zLSB6MS0KLS0tCm5hbWU6IGV4ZWMtbW9kZXJuLWtvcm4tc2hlbGwKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGV4ZWMgY2FuIGV4ZWN1dGUgYW55IGNvbW1hbmQgdGhhdCBtYWtlcyBpdAoJdGhyb3VnaCBzeW50YXggYW5kIHBhcnNlcgpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZWNobyB0ZicgPmxxCgljaG1vZCAreCBscQoJUEFUSD0kUFdECglleGVjIDI+JjEKCWZvbygpIHsgcHJpbnQgdHdvOyB9CglwcmludCA9MQoJKGV4ZWMgcHJpbnQgb25lKQoJcHJpbnQgPTIKCShleGVjIGZvbykKCXByaW50ID0zCgkoZXhlYyBscykKCXByaW50ID00CgkoZXhlYyBscSkKZXhwZWN0ZWQtc3Rkb3V0LXBhdHRlcm46CgkvPTFcbm9uZVxuPTJcbnR3b1xuPTNcbi4qOiBsczogaW5hY2Nlc3NpYmxlIG9yIG5vdCBmb3VuZFxuPTRcbnRmXG4vCi0tLQpuYW1lOiBleGVjLWtzaDg4CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBleGVjIG9ubHkgZXhlY3V0ZXMgYWZ0ZXIgYSBQQVRIIHNlYXJjaAphcmd1bWVudHM6ICEtbyFwb3NpeCEKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmVjaG8gdGYnID5scQoJY2htb2QgK3ggbHEKCVBBVEg9JFBXRAoJZXhlYyAyPiYxCglmb28oKSB7IHByaW50IHR3bzsgfQoJcHJpbnQgPTEKCShleGVjIHByaW50IG9uZSkKCXByaW50ID0yCgkoZXhlYyBmb28pCglwcmludCA9MwoJKGV4ZWMgbHMpCglwcmludCA9NAoJKGV4ZWMgbHEpCmV4cGVjdGVkLXN0ZG91dC1wYXR0ZXJuOgoJLz0xXG4uKjogcHJpbnQ6IGluYWNjZXNzaWJsZSBvciBub3QgZm91bmRcbj0yXG4uKjogZm9vOiBpbmFjY2Vzc2libGUgb3Igbm90IGZvdW5kXG49M1xuLio6IGxzOiBpbmFjY2Vzc2libGUgb3Igbm90IGZvdW5kXG49NFxudGZcbi8KLS0tCm5hbWU6IHh4eC13aGF0LWRvLXlvdS1jYWxsLXRoaXMtMQpzdGRpbjoKCWVjaG8gIiR7Zm9vOi0iYSJ9KiIKZXhwZWN0ZWQtc3Rkb3V0OgoJYSoKLS0tCm5hbWU6IHh4eC1wcmVmaXgtc3RyaXAtMQpzdGRpbjoKCWZvbz0nYSBjZGVmJwoJZWNobyAke2ZvbyNhIGN9CmV4cGVjdGVkLXN0ZG91dDoKCWRlZgotLS0KbmFtZTogeHh4LXByZWZpeC1zdHJpcC0yCnN0ZGluOgoJc2V0IGEgYwoJeD0nYSBjZGVmJwoJZWNobyAke3gjJCp9CmV4cGVjdGVkLXN0ZG91dDoKCWRlZgotLS0KbmFtZTogeHh4LXZhcmlhYmxlLXN5bnRheC0xCnN0ZGluOgoJZWNobyAkezp9CmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2JhZCBzdWJzdGl0dXRpb24vCmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IHh4eC12YXJpYWJsZS1zeW50YXgtMgpzdGRpbjoKCXNldCAwCgllY2hvICR7KjowfQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9iYWQgc3Vic3RpdHV0aW9uLwpleHBlY3RlZC1leGl0OiAxCi0tLQpuYW1lOiB4eHgtdmFyaWFibGUtc3ludGF4LTMKc3RkaW46CglzZXQgLUEgZm9vIDAKCWVjaG8gJHtmb29bKl06MH0KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvYmFkIHN1YnN0aXR1dGlvbi8KZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogeHh4LXZhcmlhYmxlLXN5bnRheC00CmRlc2NyaXB0aW9uOgoJTm90IGFsbCBraW5kcyBvZiB0cmltcyBhcmUgY3VycmVudGx5IGltcG9zc2libGUsIGNoZWNrIHRob3NlIHdobyBkbwpzdGRpbjoKCWZvbygpIHsKCQllY2hvICI8JCo+IFgkeyo6KyB9WCIKCX0KCWZvbyBhIGIKCWZvbyAiIiBjCglmb28gIiIKCWZvbyAiIiAiIgoJSUZTPToKCWZvbyBhIGIKCWZvbyAiIiBjCglmb28gIiIKCWZvbyAiIiAiIgoJSUZTPQoJZm9vIGEgYgoJZm9vICIiIGMKCWZvbyAiIgoJZm9vICIiICIiCmV4cGVjdGVkLXN0ZG91dDoKCTxhIGI+IFggWAoJPCBjPiBYIFgKCTw+IFhYCgk8ID4gWCBYCgk8YTpiPiBYIFgKCTw6Yz4gWCBYCgk8PiBYWAoJPDo+IFggWAoJPGFiPiBYIFgKCTxjPiBYIFgKCTw+IFhYCgk8PiBYWAotLS0KbmFtZTogeHh4LXN1YnN0aXR1dGlvbi1ldmFsLW9yZGVyCmRlc2NyaXB0aW9uOgoJQ2hlY2sgb3JkZXIgb2YgZXZhbHVhdGlvbiBvZiBleHByZXNzaW9ucwpzdGRpbjoKCWk9MSB4PSB5PQoJc2V0IC1BIEEgYWJjIGRlZiBHSEkgaiBHIGsKCWVjaG8gJHtBW3g9KGkrPTEpXSMke0FbeT0oaSs9MildfX0KCWVjaG8gJHggJHkKZXhwZWN0ZWQtc3Rkb3V0OgoJSEkKCTIgNAotLS0KbmFtZTogeHh4LXN1YnN0aXR1dGlvbi1ldmFsLW9yZGVyLTIKZGVzY3JpcHRpb246CglDaGVjayBzb21lIGNvcm5lciBjYXNlcwpzdGRpbjoKCXVuc2V0IHZhcgoJaT00MgoJOiAke3Zhciske3FbaT03NzddfX0gcmVxdWlyZWQgdG8gYmUgbGF6eSBieSBQT1NJWAoJZWNobyAxPSRpCgl2YXI9bWVvdwoJaT00MgoJOiAke3Zhciske3FbaT03NzddfX0gZXZhbCBzaW5jZSB2YXIgaXMgbm93IHNldAoJZWNobyAyPSRpCgl1bnNldCB2YXIKCWk9NDIKCTogJHt2YXIjJHtxW2k9Nzc3XX19IHBhdHRlcm4gaXMgbmVlZGVkIGV2ZW4gaWYgdmFyIGlzIGVtcHR5CgllY2hvIDM9JGkKCXZhcj1tZW93CglpPTQyCgk6ICR7dmFyIyR7cVtpPTc3N119fQoJZWNobyA0PSRpCmV4cGVjdGVkLXN0ZG91dDoKCTE9NDIKCTI9Nzc3CgkzPTc3NwoJND03NzcKLS0tCm5hbWU6IHh4eC1zZXQtb3B0aW9uLTEKZGVzY3JpcHRpb246CglDaGVjayBvcHRpb24gcGFyc2luZyBpbiBzZXQKc3RkaW46CglzZXQgLXZzQSBmb28gLS0gQSAxIDMgMgoJZWNobyAke2Zvb1sqXX0KZXhwZWN0ZWQtc3RkZXJyOgoJZWNobyAke2Zvb1sqXX0KZXhwZWN0ZWQtc3Rkb3V0OgoJMSAyIDMgQQotLS0KbmFtZTogeHh4LWV4ZWMtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZXhlYyBleGl0cyBmb3IgYnVpbHQtaW5zCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQpzdGRpbjoKCWV4ZWMgZWNobyBoaQoJZWNobyBzdGlsbCBoZXJyZQpleHBlY3RlZC1zdGRvdXQ6CgloaQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjogLy4qLwotLS0KbmFtZTogeHh4LXdoaWxlLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIHdoaWxlIGxvb3BzCglYWFggbmVlZCB0byBkbyBzYW1lIGZvciBmb3Ivc2VsZWN0L3VudGlsIGxvb3BzCnN0ZGluOgoJaT14Cgl3aGlsZSBbICRpICE9IHh4eCBdIDsgZG8KCSAgICBpPXgkaQoJICAgIGlmIFsgJGkgPSB4eHggXSA7IHRoZW4KCQlmYWxzZQoJCWNvbnRpbnVlCgkgICAgZmkKCWRvbmUKCWVjaG8gbG9vcDE9JD8KCQoJaT14Cgl3aGlsZSBbICRpICE9IHh4eCBdIDsgZG8KCSAgICBpPXgkaQoJICAgIGlmIFsgJGkgPSB4eHggXSA7IHRoZW4KCQlmYWxzZQoJCWJyZWFrCgkgICAgZmkKCWRvbmUKCWVjaG8gbG9vcDI9JD8KCQoJaT14Cgl3aGlsZSBbICRpICE9IHh4eCBdIDsgZG8KCSAgICBpPXgkaQoJICAgIGZhbHNlCglkb25lCgllY2hvIGxvb3AzPSQ/CmV4cGVjdGVkLXN0ZG91dDoKCWxvb3AxPTAKCWxvb3AyPTAKCWxvb3AzPTEKLS0tCm5hbWU6IHh4eC1zdGF0dXMtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYmxhbmsgbGluZXMgZG9uJ3QgY2xlYXIgJD8KbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCnN0ZGluOgoJKGV4aXQgMSkKCWVjaG8gJD8KCShleGl0IDEpCgkKCWVjaG8gJD8KCXRydWUKZXhwZWN0ZWQtc3Rkb3V0OgoJMQoJMQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjogLy4qLwotLS0KbmFtZTogeHh4LXN0YXR1cy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAkPyBpcyBwcmVzZXJ2ZWQgaW4gc3Vic2hlbGxzLCBpbmNsdWRlcywgdHJhcHMuCnN0ZGluOgoJKGV4aXQgMSkKCQoJZWNobyBibGFuazogJD8KCQoJKGV4aXQgMikKCShlY2hvIHN1YnNoZWxsOiAkPykKCQoJZWNobyAnZWNobyBpbmNsdWRlOiAkPycgPiBmb28KCShleGl0IDMpCgkuIC4vZm9vCgkKCXRyYXAgJ2VjaG8gdHJhcDogJD8nIEVSUgoJKGV4aXQgNCkKCWVjaG8gZXhpdDogJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJYmxhbms6IDEKCXN1YnNoZWxsOiAyCglpbmNsdWRlOiAzCgl0cmFwOiA0CglleGl0OiA0Ci0tLQpuYW1lOiB4eHgtc3RhdC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0ZXN0cyBvbiBmaWxlcyBhcmUgY29uc2lzdGVudApzdGRpbjoKCW1rZGlyIGEKCWVjaG8geCA+YS9iCgl0ZXN0IC1lIGEvYjsgZWNobyAxZSAkPyAuCgl0ZXN0IC1mIGEvYjsgZWNobyAxZiAkPyAuCgljaG1vZCAwIGEKCXRlc3QgLWUgYS9iOyBlY2hvIDJlICQ/IC4KCXRlc3QgLWYgYS9iOyBlY2hvIDJmICQ/IC4KCWNobW9kIDcwMCBhCgl0ZXN0IC1lIGEvYjsgZWNobyAzZSAkPyAuCgl0ZXN0IC1mIGEvYjsgZWNobyAzZiAkPyAuCmV4cGVjdGVkLXN0ZG91dDoKCTFlIDAgLgoJMWYgMCAuCgkyZSAxIC4KCTJmIDEgLgoJM2UgMCAuCgkzZiAwIC4KLS0tCm5hbWU6IHh4eC1jbGVhbi1jaGFycy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgTUFHSUMgY2hhcmFjdGVyIGlzIHN0dWZmZWQgY29ycmVjdGx5CnN0ZGluOgoJZWNobyBgZWNobyBbo2AKZXhwZWN0ZWQtc3Rkb3V0OgoJW6MKLS0tCm5hbWU6IHh4eC1wYXJhbS1zdWJzdC1xbWFyay0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcHJlc2lvbiBvZiBlcnJvciBtZXNzYWdlIHdpdGggbnVsbCBzdHJpbmcuICBBY2NvcmRpbmcgdG8KCVBPU0lYLCBpdCBzaG91bGRuJ3QgcHJpbnQgdGhlIGVycm9yIGFzICd3b3JkJyBpc24ndCBvbW1pdHRlZC4KCWtzaDg4LzkzLCBTb2xhcmlzIC9iaW4vc2ggYW5kIC91c3IveHBnNC9iaW4vc2ggYWxsIHByaW50IHRoZSBlcnJvci4Kc3RkaW46Cgl1bnNldCBmb28KCXg9CgllY2hvIHgke2Zvbz8keH0KZXhwZWN0ZWQtZXhpdDogMQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjogIS9ub3Qgc2V0LwotLS0KbmFtZTogeHh4LXBhcmFtLXN1YnN0LXFtYXJrLW5hbWVzcGVjCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3BlY2lhbCBuYW1lcyBhcmUgb3V0cHV0IGNvcnJlY3RseQpzdGRpbjoKCWRvaXQoKSB7CgkJIiRfX3Byb2duYW1lIiAtYyAiJEAiID5vMSAyPm8yCgkJcnY9JD8KCQllY2hvIFJFVFZBTDogJHJ2CgkJc2VkIC1lICJzAV4ke19fcHJvZ25hbWUlLmV4ZX1cLiplKngqZSo6IAFQUk9HOiABIiAtZSAncy9eL1NURE9VVDogL2cnIDxvMQoJCXNlZCAtZSAicwFeJHtfX3Byb2duYW1lJS5leGV9XC4qZSp4KmUqOiABUFJPRzogASIgLWUgJ3MvXi9TVERFUlI6IC9nJyA8bzIKCX0KCWRvaXQgJ2VjaG8gJHsxeH0nCglkb2l0ICdlY2hvICIkezF4fSInCglkb2l0ICdlY2hvICR7MT99JwoJZG9pdCAnZWNobyAkezE5P30nCglkb2l0ICdlY2hvICR7ITo/fScKCWRvaXQgLXUgJ2VjaG8gJHsqOj99JyBmb28gIiIKZXhwZWN0ZWQtc3Rkb3V0OgoJUkVUVkFMOiAxCglTVERFUlI6IFBST0c6ICR7MXh9OiBiYWQgc3Vic3RpdHV0aW9uCglSRVRWQUw6IDEKCVNUREVSUjogUFJPRzogJHsxeH06IGJhZCBzdWJzdGl0dXRpb24KCVJFVFZBTDogMQoJU1RERVJSOiBQUk9HOiAxOiBwYXJhbWV0ZXIgbnVsbCBvciBub3Qgc2V0CglSRVRWQUw6IDEKCVNUREVSUjogUFJPRzogMTk6IHBhcmFtZXRlciBudWxsIG9yIG5vdCBzZXQKCVJFVFZBTDogMQoJU1RERVJSOiBQUk9HOiAhOiBwYXJhbWV0ZXIgbnVsbCBvciBub3Qgc2V0CglSRVRWQUw6IDEKCVNUREVSUjogZm9vOiAkeyo6P306IGJhZCBzdWJzdGl0dXRpb24KLS0tCm5hbWU6IHh4eC1wYXJhbS1fLTEKIyBmYWlscyBkdWUgdG8gd2VpcmRuZXNzIG9mIGV4ZWN2IHN0dWZmCmNhdGVnb3J5OiAhb3M6dXdpbi1udApkZXNjcmlwdGlvbjoKCUNoZWNrIGMgZmxhZyBpcyBzZXQuCmFyZ3VtZW50czogIS1jIWVjaG8gIlskLV0iIQpleHBlY3RlZC1zdGRvdXQtcGF0dGVybjogL15cWy4qYy4qXF0kLwotLS0KbmFtZTogdGlsZGUtZXhwYW5kLTEKZGVzY3JpcHRpb246CglDaGVjayB0aWxkZSBleHBhbnNpb24gYWZ0ZXIgZXF1YWwgc2lnbnMKZW52LXNldHVwOiAhSE9NRT0vc3dlZXQhCnN0ZGluOgoJZWNobyAke0E9YT19fiBiPX4gYz1kfiB+CglleHBvcnQgZT1+IGY9ZH4KCWNvbW1hbmQgY29tbWFuZCBleHBvcnQgZz1+IGg9ZH4KCWVjaG8gIi4gJGUgLiAkZiAuIgoJZWNobyAiLiAkZyAuICRoIC4iCglzZXQgLW8gcG9zaXgKCXVuc2V0IEEgZSBmIGcgaAoJZWNobyAke0E9YT19fiBiPX4gYz1kfiB+CglleHBvcnQgZT1+IGY9ZH4KCWNvbW1hbmQgY29tbWFuZCBleHBvcnQgZz1+IGg9ZH4KCWVjaG8gIi4gJGUgLiAkZiAuIgoJZWNobyAiLiAkZyAuICRoIC4iCmV4cGVjdGVkLXN0ZG91dDoKCWE9L3N3ZWV0IGI9L3N3ZWV0IGM9ZH4gL3N3ZWV0CgkuIC9zd2VldCAuIGR+IC4KCS4gL3N3ZWV0IC4gZH4gLgoJYT1+IGI9fiBjPWR+IC9zd2VldAoJLiAvc3dlZXQgLiBkfiAuCgkuIC9zd2VldCAuIGR+IC4KLS0tCm5hbWU6IHRpbGRlLWV4cGFuZC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGlsZGUgZXhwYW5zaW9uIHdvcmtzCmVudi1zZXR1cDogIUhPTUU9L3N3ZWV0IQpzdGRpbjoKCTo+J2M9YScKCXR5cGVzZXQgYz1bYWJdCgk6PidkPWEnCgl4PXR5cGVzZXQ7ICR4IGQ9W2FiXQoJZWNobyAiPCRjPiIgIjwkZD4iCgl3ZD0kUFdECgljZCAvCglwbHVzPSQocHJpbnQgLXIgLS0gfispCgltaW51cz0kKHByaW50IC1yIC0tIH4tKQoJbml4PSQocHJpbnQgLXIgLS0gfikKCVtbICRwbHVzID0gLyBdXTsgZWNobyBvbmUgJD8gLgoJW1sgJG1pbnVzID0gIiR3ZCIgXV07IGVjaG8gdHdvICQ/IC4KCVtbICRuaXggPSAvc3dlZXQgXV07IGVjaG8gbml4ICQ/IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJPFthYl0+IDxhPgoJb25lIDAgLgoJdHdvIDAgLgoJbml4IDAgLgotLS0KbmFtZTogdGlsZGUtZXhwYW5kLTMKZGVzY3JpcHRpb246CglDaGVjayBtb3N0bHkgQXVzdGluIDM1MSBzdHVmZgpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9CglzZXQgIjEgYj0yIiAiMyBkPTQiCglleHBvcnQgYT0kMSBcYz0kMgoJc2hvd2FyZ3MgMSAiJGEiICIkYiIgIiRjIiAiJGQiCgl1bnNldCBhIGIgYyBkCglIT01FPS90bXAKCWV4cG9ydCBcYT1+IGI9fgoJY29tbWFuZCBleHBvcnQgYz1+CglidWlsdGluIGV4cG9ydCBkPX4KCVxcYnVpbHRpbiBleHBvcnQgZT1+CglzaG93YXJncyAyICIkYSIgIiRiIiAiJGMiICIkZCIgIiRlIiBrc2gKCXVuc2V0IGEgYiBjIGQgZQoJc2V0IC1vIHBvc2l4CglleHBvcnQgXGE9fiBiPX4KCWNvbW1hbmQgZXhwb3J0IGM9fgoJYnVpbHRpbiBleHBvcnQgZD1+CglcXGJ1aWx0aW4gZXhwb3J0IGU9fgoJc2hvd2FyZ3MgMyAiJGEiICIkYiIgIiRjIiAiJGQiICIkZSIgcG9zaXgKCXVuc2V0IGEgYiBjIGQgZQoJc2V0ICtvIHBvc2l4CglleHBvcnQgYT0kMQoJc2hvd2FyZ3MgNCAiJGEiICIkYiIga3NoCgl1bnNldCBhIGIKCXNob3dhcmdzIDUgYT0kMSBrc2gKCWV4cG9ydCBcYT0kMQoJc2hvd2FyZ3MgNiAiJGEiICIkYiIga3NoCgl1bnNldCBhIGIKCXNldCAtbyBwb3NpeAoJZXhwb3J0IGE9JDEKCXNob3dhcmdzIDcgIiRhIiAiJGIiIHBvc2l4Cgl1bnNldCBhIGIKCXNob3dhcmdzIDggYT0kMSBwb3NpeAoJZXhwb3J0IFxhPSQxCglzaG93YXJncyA5ICIkYSIgIiRiIiBwb3NpeAoJdW5zZXQgYSBiCglzZXQgK28gcG9zaXgKCWNvbW1hbmQgZWNobyAxMCBrc2ggYT1+Cgljb21tYW5kIGNvbW1hbmQgZXhwb3J0IGE9fgoJc2hvd2FyZ3MgMTEgIiRhIgoJdW5zZXQgYQoJc2V0IC1vIHBvc2l4Cgljb21tYW5kIGVjaG8gMTIgcG9zaXggYT1+Cgljb21tYW5kIGNvbW1hbmQgZXhwb3J0IGE9fgoJc2hvd2FyZ3MgMTMgIiRhIgoJdW5zZXQgYQoJIyB1bnNwZWNpZmllZCB3aGV0aGVyIC90bXAgb3IgfgoJdmFyPWV4cG9ydDsgY29tbWFuZCAkdmFyIGE9fgoJc2hvd2FyZ3MgMTQgIiRhIgoJZWNobyAnZWNobyAiPCRmb28+IicgPmJhcgoJIiRfX3Byb2duYW1lIiBiYXIKCXZhcj1mb28KCWV4cG9ydCAkdmFyPTEKCSIkX19wcm9nbmFtZSIgYmFyCglleHBvcnQgJHZhcj1+CgkiJF9fcHJvZ25hbWUiIGJhcgoJIyB1bnNwZWNpZmllZAoJY29tbWFuZCAtLSBleHBvcnQgYT1+CglzaG93YXJncyAxOCAiJGEiCglzZXQgLUEgYmxhCgl0eXBlc2V0IGJsYVsxXT1+On4KCWdsb2JhbCBnYmw9fiBnMj0kMQoJbG9jYWwgbGNsPX4gbDI9JDEKCXJlYWRvbmx5IHJvPX4gcjI9JDEKCXNob3dhcmdzIDE5ICIke2JsYVsxXX0iIGE9fiAiJGdibCIgIiRsY2wiICIkcm8iICIkZzIiICIkbDIiICIkcjIiCglzZXQgK28gcG9zaXgKCWVjaG8gIjIwIHNvbWUgYXJiaXRyYXJ5IHN0dWZmICI9fgoJc2V0IC1vIHBvc2l4CgllY2hvICIyMSBzb21lIGFyYml0cmFyeSBzdHVmZiAiPX4KZXhwZWN0ZWQtc3Rkb3V0OgoJPDE+IDwxIGI9Mj4gPD4gPDM+IDw0PiAuCgk8Mj4gPC90bXA+IDwvdG1wPiA8L3RtcD4gPC90bXA+IDwvdG1wPiA8a3NoPiAuCgk8Mz4gPH4+IDwvdG1wPiA8L3RtcD4gPH4+IDwvdG1wPiA8cG9zaXg+IC4KCTw0PiA8MSBiPTI+IDw+IDxrc2g+IC4KCTw1PiA8YT0xPiA8Yj0yPiA8a3NoPiAuCgk8Nj4gPDE+IDwyPiA8a3NoPiAuCgk8Nz4gPDEgYj0yPiA8PiA8cG9zaXg+IC4KCTw4PiA8YT0xPiA8Yj0yPiA8cG9zaXg+IC4KCTw5PiA8MT4gPDI+IDxwb3NpeD4gLgoJMTAga3NoIGE9L3RtcAoJPDExPiA8L3RtcD4gLgoJMTIgcG9zaXggYT1+Cgk8MTM+IDwvdG1wPiAuCgk8MTQ+IDx+PiAuCgk8PgoJPDE+Cgk8fj4KCTwxOD4gPH4+IC4KCTwxOT4gPC90bXA6L3RtcD4gPGE9fj4gPC90bXA+IDwvdG1wPiA8L3RtcD4gPDEgYj0yPiA8MSBiPTI+IDwxIGI9Mj4gLgoJMjAgc29tZSBhcmJpdHJhcnkgc3R1ZmYgPS90bXAKCTIxIHNvbWUgYXJiaXRyYXJ5IHN0dWZmID1+Ci0tLQpuYW1lOiBleGl0LWVyci0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSAiZXhpdCBvbiBlcnJvciIgY29uZGl0aW9ucwpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZXhlYyAiJDEiJyA+ZW52CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmV4aXQgMScgPmZhbHNlCgljaG1vZCAreCBlbnYgZmFsc2UKCVBBVEg9LiRQQVRIU0VQJFBBVEgKCXNldCAtZXgKCWVudiBmYWxzZSAmJiBlY2hvIHNvbWV0aGluZwoJZWNobyBFTkQKZXhwZWN0ZWQtc3Rkb3V0OgoJRU5ECmV4cGVjdGVkLXN0ZGVycjoKCSsgZW52IGZhbHNlCgkrIGVjaG8gRU5ECi0tLQpuYW1lOiBleGl0LWVyci0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSAiZXhpdCBvbiBlcnJvciIgZWRnZSBjb25kaXRpb25zIChQT1NJWGx5KQpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZXhlYyAiJDEiJyA+ZW52CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmV4aXQgMScgPmZhbHNlCglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmV4aXQgMCcgPnRydWUKCWNobW9kICt4IGVudiBmYWxzZQoJUEFUSD0uJFBBVEhTRVAkUEFUSAoJc2V0IC1leAoJaWYgZW52IHRydWU7IHRoZW4KCQllbnYgZmFsc2UgJiYgZWNobyBzb21ldGhpbmcKCWZpCgllY2hvIEVORApleHBlY3RlZC1zdGRvdXQ6CglFTkQKZXhwZWN0ZWQtc3RkZXJyOgoJKyBlbnYgdHJ1ZQoJKyBlbnYgZmFsc2UKCSsgZWNobyBFTkQKLS0tCm5hbWU6IGV4aXQtZXJyLTMKZGVzY3JpcHRpb246CglwZGtzaCByZWdyZXNzaW9uIHdoaWNoIEFUJlQga3NoIGRvZXMgcmlnaHQKCVRGTSBzYXlzOiBbc2V0XSAtZSB8IGVycmV4aXQKCQlFeGl0IChhZnRlciBleGVjdXRpbmcgdGhlIEVSUiB0cmFwKSAuLi4Kc3RkaW46Cgl0cmFwICdlY2hvIEVYSVQnIEVYSVQKCXRyYXAgJ2VjaG8gRVJSJyBFUlIKCXNldCAtZQoJY2QgL1hYWFhYIDI+L2Rldi9udWxsCgllY2hvIERPTkUKCWV4aXQgMApleHBlY3RlZC1zdGRvdXQ6CglFUlIKCUVYSVQKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCi0tLQpuYW1lOiBleGl0LWVyci00CmRlc2NyaXB0aW9uOgoJInNldCAtZSIgdGVzdCBzdWl0ZSAoUE9TSVgpCnN0ZGluOgoJc2V0IC1lCgllY2hvIHByZQoJaWYgdHJ1ZSA7IHRoZW4KCQlmYWxzZSAmJiBlY2hvIGZvbwoJZmkKCWVjaG8gYmFyCmV4cGVjdGVkLXN0ZG91dDoKCXByZQoJYmFyCi0tLQpuYW1lOiBleGl0LWVyci01CmRlc2NyaXB0aW9uOgoJInNldCAtZSIgdGVzdCBzdWl0ZSAoUE9TSVgpCnN0ZGluOgoJc2V0IC1lCglmb28oKSB7CgkJd2hpbGUgWyAiJDEiIF07IGRvCgkJCWZvciBFIGluICR4OyBkbwoJCQkJWyAiJDEiID0gIiRFIiBdICYmIHsgc2hpZnQgOyBjb250aW51ZSAyIDsgfQoJCQlkb25lCgkJCXg9IiR4ICQxIgoJCQlzaGlmdAoJCWRvbmUKCQllY2hvICR4Cgl9CgllY2hvIHByZQoJZm9vIGEgYiBiIGMKCWVjaG8gcG9zdApleHBlY3RlZC1zdGRvdXQ6CglwcmUKCWEgYiBjCglwb3N0Ci0tLQpuYW1lOiBleGl0LWVyci02CmRlc2NyaXB0aW9uOgoJInNldCAtZSIgdGVzdCBzdWl0ZSAoQlNEIG1ha2UpCmNhdGVnb3J5OiBvczptaXJic2QKc3RkaW46Cglta2RpciB6ZCB6ZC9hIHpkL2IKCXByaW50ICdhbGw6XG5cdEBlY2hvIGVpbnNcblx0QGV4aXQgNDJcbicgPnpkL2EvTWFrZWZpbGUKCXByaW50ICdhbGw6XG5cdEBlY2hvIHp3ZWlcbicgPnpkL2IvTWFrZWZpbGUKCXdkPSQocHdkKQoJc2V0IC1lCglmb3IgZW50cnkgaW4gYSBiOyBkbyAoICBzZXQgLWU7ICBpZiBbWyAtZCAkd2QvemQvJGVudHJ5LmkzODYgXV07IHRoZW4gIF9uZXdkaXJfPSIkZW50cnkuaTM4NiI7ICBlbHNlICBfbmV3ZGlyXz0iJGVudHJ5IjsgIGZpOyAgaWYgW1sgLXogJF9USElTRElSXyBdXTsgdGhlbiAgX25leHRkaXJfPSIkX25ld2Rpcl8iOyAgZWxzZSAgX25leHRkaXJfPSIkX1RISVNESVJfLyRfbmV3ZGlyXyI7ICBmaTsgIF9tYWtlZmlsZV9zcGVjXz07ICBbWyAhIC1mICR3ZC96ZC8kX25ld2Rpcl8vTWFrZWZpbGUuYnNkLXdyYXBwZXIgXV0gIHx8IF9tYWtlZmlsZV9zcGVjXz0iLWYgTWFrZWZpbGUuYnNkLXdyYXBwZXIiOyAgc3Vic2tpcGRpcj07ICBmb3Igc2tpcGRpciBpbiA7IGRvICBzdWJlbnRyeT0ke3NraXBkaXIjJGVudHJ5fTsgIGlmIFtbICRzdWJlbnRyeSAhPSAkc2tpcGRpciBdXTsgdGhlbiAgaWYgW1sgLXogJHN1YmVudHJ5IF1dOyB0aGVuICBlY2hvICIoJF9uZXh0ZGlyXyBza2lwcGVkKSI7ICBicmVhazsgIGZpOyAgc3Vic2tpcGRpcj0iJHN1YnNraXBkaXIgJHtzdWJlbnRyeSMvfSI7ICBmaTsgIGRvbmU7ICBpZiBbWyAteiAkc2tpcGRpciB8fCAtbiAkc3ViZW50cnkgXV07IHRoZW4gIGVjaG8gIj09PT4gJF9uZXh0ZGlyXyI7ICBjZCAkd2QvemQvJF9uZXdkaXJfOyAgbWFrZSBTS0lQRElSPSIkc3Vic2tpcGRpciIgJF9tYWtlZmlsZV9zcGVjXyAgX1RISVNESVJfPSIkX25leHRkaXJfIiAgIGFsbDsgIGZpOyAgKSBkb25lIDI+JjEgfCBzZWQgInMhJHdkIVdEIWciCmV4cGVjdGVkLXN0ZG91dDoKCT09PT4gYQoJZWlucwoJKioqIEVycm9yIGNvZGUgNDIKCQoJU3RvcCBpbiBXRC96ZC9hIChsaW5lIDIgb2YgTWFrZWZpbGUpLgotLS0KbmFtZTogZXhpdC1lcnItNwpkZXNjcmlwdGlvbjoKCSJzZXQgLWUiIHJlZ3Jlc3Npb24gKExQIzExMDQ1NDMpCnN0ZGluOgoJc2V0IC1lCglibGEoKSB7CgkJWyAteCAkUFdEL25vbmV4aXN0YW50IF0gJiYgJFBXRC9ub25leGlzdGFudAoJfQoJZWNobyB4CglibGEKCWVjaG8geSQ/CmV4cGVjdGVkLXN0ZG91dDoKCXgKZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogZXhpdC1lcnItOApkZXNjcmlwdGlvbjoKCSJzZXQgLWUiIHJlZ3Jlc3Npb24gKERlYmlhbiAjNzAwNTI2KQpzdGRpbjoKCXNldCAtZQoJX2RiX2NtZCgpIHsgcmV0dXJuICQxOyB9CglkYl9pbnB1dCgpIHsgX2RiX2NtZCAzMDsgfQoJZGJfZ28oKSB7IF9kYl9jbWQgMDsgfQoJZGJfaW5wdXQgfHwgOgoJZGJfZ28KCWV4aXQgMAotLS0KbmFtZTogZXhpdC1lcnItOQpkZXNjcmlwdGlvbjoKCSJzZXQgLWUiIHZlcnN1cyBiYW5nIHBpcGVsaW5lcwpzdGRpbjoKCXNldCAtZQoJISBmYWxzZSB8IGZhbHNlCgllY2hvIDEgb2sKCSEgZmFsc2UgJiYgZmFsc2UKCWVjaG8gMiB3cm9uZwpleHBlY3RlZC1zdGRvdXQ6CgkxIG9rCmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IGV4aXQtZW5vZW50LTEKZGVzY3JpcHRpb246CglTVVN2NCBzYXlzIHRoYXQgdGhlIHNoZWxsIHNob3VsZCBleGl0IHdpdGggMTI2LzEyNyBpbiBzb21lIHNpdHVhdGlvbnMKc3RkaW46CglpPTAKCShlY2hvOyBlY2hvIDopID54CgkiJF9fcHJvZ25hbWUiIC4veCA+L2Rldi9udWxsIDI+JjE7IHI9JD87IGVjaG8gJCgoaSsrKSkgJHIgLgoJIiRfX3Byb2duYW1lIiAtYyAuL3ggPi9kZXYvbnVsbCAyPiYxOyByPSQ/OyBlY2hvICQoKGkrKykpICRyIC4KCWVjaG8gZXhpdCA0MiA+eAoJIiRfX3Byb2duYW1lIiAuL3ggPi9kZXYvbnVsbCAyPiYxOyByPSQ/OyBlY2hvICQoKGkrKykpICRyIC4KCSIkX19wcm9nbmFtZSIgLWMgLi94ID4vZGV2L251bGwgMj4mMTsgcj0kPzsgZWNobyAkKChpKyspKSAkciAuCglybSAtZiB4CgkiJF9fcHJvZ25hbWUiIC4veCA+L2Rldi9udWxsIDI+JjE7IHI9JD87IGVjaG8gJCgoaSsrKSkgJHIgLgoJIiRfX3Byb2duYW1lIiAtYyAuL3ggPi9kZXYvbnVsbCAyPiYxOyByPSQ/OyBlY2hvICQoKGkrKykpICRyIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMCAwIC4KCTEgMTI2IC4KCTIgNDIgLgoJMyAxMjYgLgoJNCAxMjcgLgoJNSAxMjcgLgotLS0KbmFtZTogZXhpdC1ldmFsLTEKZGVzY3JpcHRpb246CglDaGVjayBldmFsIHZzIHN1YnN0aXR1dGlvbiBleGl0IGNvZGVzIChrc2g5MyBhbGlrZSkKc3RkaW46CgkoZXhpdCAxMikKCWV2YWwgJChmYWxzZSkKCWVjaG8gQSAkPwoJKGV4aXQgMTIpCglldmFsICcgJChmYWxzZSknCgllY2hvIEIgJD8KCShleGl0IDEyKQoJZXZhbCAiICQoZmFsc2UpIgoJZWNobyBDICQ/CgkoZXhpdCAxMikKCWV2YWwgImV2YWwgJChmYWxzZSkiCgllY2hvIEQgJD8KCShleGl0IDEyKQoJZXZhbCAnZXZhbCAnIiQoZmFsc2UpIgoJZWNobyBFICQ/CglJRlM9IiRJRlM6IgoJKGV4aXQgMTIpCglldmFsICQoZWNobyA6OyBmYWxzZSkKCWVjaG8gRiAkPwoJZWNobyAtbiAiRyAiCgkoZXhpdCAxMikKCWV2YWwgJ2VjaG8gJD8nCgllY2hvIEggJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJQSAwCglCIDEKCUMgMAoJRCAwCglFIDAKCUYgMAoJRyAxMgoJSCAwCi0tLQpuYW1lOiBleGl0LXRyYXAtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgImV4aXQiIHdpdGggbm8gYXJndW1lbnRzIGJlaGF2ZXMgU1VTdjQgY29uZm9ybWFudC4Kc3RkaW46Cgl0cmFwICdlY2hvIGhpOyBleGl0JyBFWElUCglleGl0IDkKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKZXhwZWN0ZWQtZXhpdDogOQotLS0KbmFtZTogZXhpdC10cmFwLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IEVSUiBhbmQgRVhJVCB0cmFwcyBhcmUgcnVuIGp1c3QgbGlrZSBrc2g5MyBkb2VzLgoJR05VIGJhc2ggZG9lcyBub3QgcnVuIEVSdHJhcCBpbiDCsWUgZXZhbC11bmRlZiBidXQgcnVucyBpdAoJdHdpY2UgKGJ1Zz8pIGluICtlIGV2YWwtZmFsc2UsIHNvIGRvZXMga3NoOTMgKGJ1Zz8pLCB3aGljaAoJYWxzbyBoYXMgYSBidWcgdG8gY29udGludWUgZXhlY3V0aW9uIChlY2hvaW5nICJhbmQgb3V0IiBhbmQKCXJldHVybmluZyAwKSBpbiArZSBldmFsLXVuZGVmLgpmaWxlLXNldHVwOiBmaWxlIDY0NCAieCIKCXY9OyB1bnNldCB2Cgl0cmFwICdlY2hvIEVYdHJhcCcgRVhJVAoJdHJhcCAnZWNobyBFUnRyYXAnIEVSUgoJc2V0ICQxCgllY2hvICJhbmQgcnVuICQyIgoJZXZhbCAkMgoJZWNobyBhbmQgb3V0CmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJ4dCIKCXY9OyB1bnNldCB2Cgl0cmFwICdlY2hvIEVYdHJhcCcgRVhJVAoJdHJhcCAnZWNobyBFUnRyYXAnIEVSUgoJc2V0ICQxCgllY2hvICdhbmQgcnVuIHRydWUnCgl0cnVlCgllY2hvIGFuZCBvdXQKZmlsZS1zZXR1cDogZmlsZSA2NDQgInhmIgoJdj07IHVuc2V0IHYKCXRyYXAgJ2VjaG8gRVh0cmFwJyBFWElUCgl0cmFwICdlY2hvIEVSdHJhcCcgRVJSCglzZXQgJDEKCWVjaG8gJ2FuZCBydW4gZmFsc2UnCglmYWxzZQoJZWNobyBhbmQgb3V0CmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJ4dSIKCXY9OyB1bnNldCB2Cgl0cmFwICdlY2hvIEVYdHJhcCcgRVhJVAoJdHJhcCAnZWNobyBFUnRyYXAnIEVSUgoJc2V0ICQxCgllY2hvICdhbmQgcnVuICR7dj99JwoJJHt2P30KCWVjaG8gYW5kIG91dApzdGRpbjoKCXJ1bnRlc3QoKSB7CgkJcm0gLWYgcmMKCQkoCgkJCSIkX19wcm9nbmFtZSIgIiRAIgoJCQllY2hvICQ/ID5yYwoJCSkgMj4mMSB8IHNlZCBcCgkJICAgIC1lICdzL3BhcmFtZXRlciBub3Qgc2V0L3BhcmFtZXRlciBudWxsIG9yIG5vdCBzZXQvJyBcCgkJICAgIC1lICdzL1tbXTZdLy8nIC1lICdzLzogZXZhbDogbGluZSAxLy8nIC1lICdzLzogbGluZSA2Ly8nIFwKCQkgICAgLWUgInMBXiR7X19wcm9nbmFtZSUuZXhlfVwuKmUqeCplKjogPHN0ZGluPlxbWzAtOV0qXQFQUk9HASIKCX0KCXhlPS1lCgllY2hvIDogJHhlCglydW50ZXN0IHggJHhlIHRydWUKCWVjaG8gPSBldmFsLXRydWUgJCg8cmMpIC4KCXJ1bnRlc3QgeCAkeGUgZmFsc2UKCWVjaG8gPSBldmFsLWZhbHNlICQoPHJjKSAuCglydW50ZXN0IHggJHhlICcke3Y/fScKCWVjaG8gPSBldmFsLXVuZGVmICQoPHJjKSAuCglydW50ZXN0IHh0ICR4ZQoJZWNobyA9IG5vZXZhbC10cnVlICQoPHJjKSAuCglydW50ZXN0IHhmICR4ZQoJZWNobyA9IG5vZXZhbC1mYWxzZSAkKDxyYykgLgoJcnVudGVzdCB4dSAkeGUKCWVjaG8gPSBub2V2YWwtdW5kZWYgJCg8cmMpIC4KCXhlPStlCgllY2hvIDogJHhlCglydW50ZXN0IHggJHhlIHRydWUKCWVjaG8gPSBldmFsLXRydWUgJCg8cmMpIC4KCXJ1bnRlc3QgeCAkeGUgZmFsc2UKCWVjaG8gPSBldmFsLWZhbHNlICQoPHJjKSAuCglydW50ZXN0IHggJHhlICcke3Y/fScKCWVjaG8gPSBldmFsLXVuZGVmICQoPHJjKSAuCglydW50ZXN0IHh0ICR4ZQoJZWNobyA9IG5vZXZhbC10cnVlICQoPHJjKSAuCglydW50ZXN0IHhmICR4ZQoJZWNobyA9IG5vZXZhbC1mYWxzZSAkKDxyYykgLgoJcnVudGVzdCB4dSAkeGUKCWVjaG8gPSBub2V2YWwtdW5kZWYgJCg8cmMpIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJOiAtZQoJYW5kIHJ1biB0cnVlCglhbmQgb3V0CglFWHRyYXAKCT0gZXZhbC10cnVlIDAgLgoJYW5kIHJ1biBmYWxzZQoJRVJ0cmFwCglFWHRyYXAKCT0gZXZhbC1mYWxzZSAxIC4KCWFuZCBydW4gJHt2P30KCXg6IHY6IHBhcmFtZXRlciBudWxsIG9yIG5vdCBzZXQKCUVSdHJhcAoJRVh0cmFwCgk9IGV2YWwtdW5kZWYgMSAuCglhbmQgcnVuIHRydWUKCWFuZCBvdXQKCUVYdHJhcAoJPSBub2V2YWwtdHJ1ZSAwIC4KCWFuZCBydW4gZmFsc2UKCUVSdHJhcAoJRVh0cmFwCgk9IG5vZXZhbC1mYWxzZSAxIC4KCWFuZCBydW4gJHt2P30KCXh1OiB2OiBwYXJhbWV0ZXIgbnVsbCBvciBub3Qgc2V0CglFWHRyYXAKCT0gbm9ldmFsLXVuZGVmIDEgLgoJOiArZQoJYW5kIHJ1biB0cnVlCglhbmQgb3V0CglFWHRyYXAKCT0gZXZhbC10cnVlIDAgLgoJYW5kIHJ1biBmYWxzZQoJRVJ0cmFwCglhbmQgb3V0CglFWHRyYXAKCT0gZXZhbC1mYWxzZSAwIC4KCWFuZCBydW4gJHt2P30KCXg6IHY6IHBhcmFtZXRlciBudWxsIG9yIG5vdCBzZXQKCUVSdHJhcAoJRVh0cmFwCgk9IGV2YWwtdW5kZWYgMSAuCglhbmQgcnVuIHRydWUKCWFuZCBvdXQKCUVYdHJhcAoJPSBub2V2YWwtdHJ1ZSAwIC4KCWFuZCBydW4gZmFsc2UKCUVSdHJhcAoJYW5kIG91dAoJRVh0cmFwCgk9IG5vZXZhbC1mYWxzZSAwIC4KCWFuZCBydW4gJHt2P30KCXh1OiB2OiBwYXJhbWV0ZXIgbnVsbCBvciBub3Qgc2V0CglFWHRyYXAKCT0gbm9ldmFsLXVuZGVmIDEgLgotLS0KbmFtZTogZXhpdC10cmFwLTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBFWElUIHRyYXAgaXMgcnVuIGluIG1hbnkgcGxhY2VzLCBEZWJpYW4gIzkxMDI3NgpzdGRpbjoKCWZrdCgpIHsKCQl0cmFwIC0tICJlY2hvICQxID4mMiIgRVhJVAoJfQoJZmt0IHNoZWxsX2V4aXQKCSQoZmt0IGZuX2V4aXQpCgkkKHRyYXAgLS0gImVjaG8gY29tc3ViX2V4aXQgPiYyIiBFWElUKQoJKHRyYXAgLS0gImVjaG8gc3Vic2hlbGxfZXhpdCA+JjIiIEVYSVQpCmV4cGVjdGVkLXN0ZGVycjoKCWZuX2V4aXQKCWNvbXN1Yl9leGl0CglzdWJzaGVsbF9leGl0CglzaGVsbF9leGl0Ci0tLQpuYW1lOiBleGl0LXRyYXAtaW50ZXJhY3RpdmUKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGludGVyYWN0aXZlIHNoZWxsIGRvZXNuJ3QgZXhpdCB2aWEgRVhJVCB0cmFwIG9uIHN5bnRheCBlcnJvcgphcmd1bWVudHM6ICEtaSEKc3RkaW46Cgl0cmFwIC0tIEVYSVQKCWVjaG8gU3ludGF4IGVycm9yIDwKCWVjaG8gJ0FmdGVyIGVycm9yIDEnCgl0cmFwICdlY2hvIEV4aXQgdHJhcCcgRVhJVAoJZWNobyBTeW50YXggZXJyb3IgPAoJZWNobyAnQWZ0ZXIgZXJyb3IgMicKCXRyYXAgJ2VjaG8gRXhpdCB0cmFwJyBFWElUCglleGl0CgllY2hvICdBZnRlciBleGl0JwpleHBlY3RlZC1zdGRvdXQ6CglBZnRlciBlcnJvciAxCglBZnRlciBlcnJvciAyCglFeGl0IHRyYXAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46Cgkvc3ludGF4IGVycm9yOiB1bmV4cGVjdGVkICduZXdsaW5lJy8KLS0tCm5hbWU6IHRlc3Qtc3RsdC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0ZXN0IGFsc28gY2FuIGhhbmRsZSBzdHJpbmcxIDwgc3RyaW5nMiBldGMuCnN0ZGluOgoJdGVzdCAyMDA1LzEwLzA4ICc8JyAyMDA1LzA4LzIxICYmIGVjaG8gamEgfHwgZWNobyBuZWluCgl0ZXN0IDIwMDUvMDgvMjEgXDwgMjAwNS8xMC8wOCAmJiBlY2hvIGphIHx8IGVjaG8gbmVpbgoJdGVzdCAyMDA1LzEwLzA4ICc+JyAyMDA1LzA4LzIxICYmIGVjaG8gamEgfHwgZWNobyBuZWluCgl0ZXN0IDIwMDUvMDgvMjEgXD4gMjAwNS8xMC8wOCAmJiBlY2hvIGphIHx8IGVjaG8gbmVpbgpleHBlY3RlZC1zdGRvdXQ6CgluZWluCglqYQoJamEKCW5laW4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46ICEvdW5leHBlY3RlZCBvcC8KLS0tCm5hbWU6IHRlc3QtcHJlY2VkZW5jZS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYSB3ZWlyZCBwcmVjZWRlbmNlIGNhc2UgKGFuZCBQT1NJWCBlY2hvKQpzdGRpbjoKCXRlc3QgXCggLWYgPSAtZiBcKQoJcnY9JD8KCWVjaG8gJHJ2CmV4cGVjdGVkLXN0ZG91dDoKCTAKLS0tCm5hbWU6IHRlc3Qtb3B0aW9uLTEKZGVzY3JpcHRpb246CglUZXN0IHRoZSB0ZXN0IC1vIG9wZXJhdG9yCnN0ZGluOgoJcnVudGVzdCgpIHsKCQl0ZXN0IC1vICQxOyBlY2hvICQ/CgkJWyAtbyAkMSBdOyBlY2hvICQ/CgkJW1sgLW8gJDEgXV07IGVjaG8gJD8KCX0KCWlmX3Rlc3QoKSB7CgkJdGVzdCAtbyAkMSAtbyAtbyAhJDE7IGVjaG8gJD8KCQlbIC1vICQxIC1vIC1vICEkMSBdOyBlY2hvICQ/CgkJW1sgLW8gJDEgfHwgLW8gISQxIF1dOyBlY2hvICQ/CgkJdGVzdCAtbyA/JDE7IGVjaG8gJD8KCX0KCWVjaG8gMHkgJChpZl90ZXN0IHV0ZjgtbW9kZSkgPQoJZWNobyAwbiAkKGlmX3Rlc3QgdXRmOC1oYWNrKSA9CgllY2hvIDE9ICQocnVudGVzdCB1dGY4LWhhY2spID0KCWVjaG8gMj0gJChydW50ZXN0ICF1dGY4LWhhY2spID0KCWVjaG8gMz0gJChydW50ZXN0ID91dGY4LWhhY2spID0KCXNldCArVQoJZWNobyAxKyAkKHJ1bnRlc3QgdXRmOC1tb2RlKSA9CgllY2hvIDIrICQocnVudGVzdCAhdXRmOC1tb2RlKSA9CgllY2hvIDMrICQocnVudGVzdCA/dXRmOC1tb2RlKSA9CglzZXQgLVUKCWVjaG8gMS0gJChydW50ZXN0IHV0ZjgtbW9kZSkgPQoJZWNobyAyLSAkKHJ1bnRlc3QgIXV0ZjgtbW9kZSkgPQoJZWNobyAzLSAkKHJ1bnRlc3QgP3V0ZjgtbW9kZSkgPQoJZWNobyA9IHNob3J0IGZsYWdzID0KCWVjaG8gMHkgJChpZl90ZXN0IC1VKSA9CgllY2hvIDB5ICQoaWZfdGVzdCArVSkgPQoJZWNobyAwbiAkKGlmX3Rlc3QgLV8pID0KCWVjaG8gMG4gJChpZl90ZXN0IC1VLSkgPQoJZWNobyAxPSAkKHJ1bnRlc3QgLV8pID0KCWVjaG8gMj0gJChydW50ZXN0ICEtXykgPQoJZWNobyAzPSAkKHJ1bnRlc3QgPy1fKSA9CglzZXQgK1UKCWVjaG8gMSsgJChydW50ZXN0IC1VKSA9CgllY2hvIDIrICQocnVudGVzdCAhLVUpID0KCWVjaG8gMysgJChydW50ZXN0ID8tVSkgPQoJZWNobyAxKyAkKHJ1bnRlc3QgK1UpID0KCWVjaG8gMisgJChydW50ZXN0ICErVSkgPQoJZWNobyAzKyAkKHJ1bnRlc3QgPytVKSA9CglzZXQgLVUKCWVjaG8gMS0gJChydW50ZXN0IC1VKSA9CgllY2hvIDItICQocnVudGVzdCAhLVUpID0KCWVjaG8gMy0gJChydW50ZXN0ID8tVSkgPQoJZWNobyAxLSAkKHJ1bnRlc3QgK1UpID0KCWVjaG8gMi0gJChydW50ZXN0ICErVSkgPQoJZWNobyAzLSAkKHJ1bnRlc3QgPytVKSA9CmV4cGVjdGVkLXN0ZG91dDoKCTB5IDAgMCAwIDAgPQoJMG4gMSAxIDEgMSA9CgkxPSAxIDEgMSA9CgkyPSAxIDEgMSA9CgkzPSAxIDEgMSA9CgkxKyAxIDEgMSA9CgkyKyAwIDAgMCA9CgkzKyAwIDAgMCA9CgkxLSAwIDAgMCA9CgkyLSAxIDEgMSA9CgkzLSAwIDAgMCA9Cgk9IHNob3J0IGZsYWdzID0KCTB5IDAgMCAwIDAgPQoJMHkgMCAwIDAgMCA9CgkwbiAxIDEgMSAxID0KCTBuIDEgMSAxIDEgPQoJMT0gMSAxIDEgPQoJMj0gMSAxIDEgPQoJMz0gMSAxIDEgPQoJMSsgMSAxIDEgPQoJMisgMCAwIDAgPQoJMysgMCAwIDAgPQoJMSsgMSAxIDEgPQoJMisgMCAwIDAgPQoJMysgMCAwIDAgPQoJMS0gMCAwIDAgPQoJMi0gMSAxIDEgPQoJMy0gMCAwIDAgPQoJMS0gMCAwIDAgPQoJMi0gMSAxIDEgPQoJMy0gMCAwIDAgPQotLS0KbmFtZTogdGVzdC12YXJzZXQtMQpkZXNjcmlwdGlvbjoKCVRlc3QgdGhlIHRlc3QgLXYgb3BlcmF0b3IKc3RkaW46CglbWyAtdiBhIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCWE9CglbWyAtdiBhIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCXVuc2V0IGEKCVtbIC12IGEgXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJYT14CglbWyAtdiBhIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCW5hbWVyZWYgYj1hCglbWyAtdiBiIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCXVuc2V0IGEKCVtbIC12IGIgXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJeFsxXT15CglbWyAtdiB4IF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVtbIC12IHhbMF0gXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJW1sgLXYgeFsxXSBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAtdiB4WzJdIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKZXhwZWN0ZWQtc3Rkb3V0OgoJMSAxCgkyIDAKCTMgMQoJNCAwCgk1IDAKCTYgMQoJNyAxCgk4IDEKCTkgMAoJMTAgMQotLS0KbmFtZTogdGVzdC12YXJzZXQtMgpkZXNjcmlwdGlvbjoKCXRlc3QgLXYgd29ya3Mgb25seSBvbiBzY2FsYXJzCnN0ZGluOgoJW1sgLXYgeFsqXSBdXQoJZWNobyBvawpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvdW5leHBlY3RlZCAnXConLwotLS0KbmFtZTogdGVzdC1zdG56ZS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgc2hvcnQgZm9ybSBbICR4IF0gd29ya3MKc3RkaW46CglpPTAKCVsgLW4gJHggXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbICR4IF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAtbiAiJHgiIF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAiJHgiIF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJeD0wCglbIC1uICR4IF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAkeCBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVsgLW4gIiR4IiBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVsgIiR4IiBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCXg9JzEgLWEgMSA9IDInCglbIC1uICR4IF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAkeCBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVsgLW4gIiR4IiBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVsgIiR4IiBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKZXhwZWN0ZWQtc3Rkb3V0OgoJMSAwCgkyIDEKCTMgMQoJNCAxCgk1IDAKCTYgMAoJNyAwCgk4IDAKCTkgMQoJMTAgMQoJMTEgMAoJMTIgMAotLS0KbmFtZTogdGVzdC1zdG56ZS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgc2hvcnQgZm9ybSBbWyAkeCBdXSB3b3JrcyAoa3NoOTMgZXh0ZW5zaW9uKQpzdGRpbjoKCWk9MAoJW1sgLW4gJHggXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJW1sgJHggXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJW1sgLW4gIiR4IiBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAiJHgiIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCXg9MAoJW1sgLW4gJHggXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJW1sgJHggXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJW1sgLW4gIiR4IiBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAiJHgiIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCXg9JzEgLWEgMSA9IDInCglbWyAtbiAkeCBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAkeCBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAtbiAiJHgiIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVtbICIkeCIgXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgpleHBlY3RlZC1zdGRvdXQ6CgkxIDEKCTIgMQoJMyAxCgk0IDEKCTUgMAoJNiAwCgk3IDAKCTggMAoJOSAwCgkxMCAwCgkxMSAwCgkxMiAwCi0tLQpuYW1lOiB0ZXN0LW51bWVxCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbnVtZXJpYyAtZXEgd29ya3MgKFI0MGQgcmVncmVzc2lvbik7IHNwb3R0ZWQgYnkgTWFydGlqbiBEZWtrZXIKc3RkaW46Cgl0c3QoKSB7CgkJZXZhbCAiJDIiCgkJY2FzZSAkPyBpbgoJCSgwKSBlY2hvIHllcHAgMCBcIyIkKiIgOzsKCQkoMSkgZWNobyBub3BlIDEgXCMiJCoiIDs7CgkJKDIpIGVjaG8gdGVyciAyIFwjIiQqIiA7OwoJCSgqKSBlY2hvIHd0Zlw/ICQ/IFwjIiQqIiA7OwoJCWVzYWMKCX0KCXRzdCAxICd0ZXN0IDIgLWVxIDInCgl0c3QgMiAndGVzdCAyIC1lcSAyYScKCXRzdCAzICd0ZXN0IDIgLWVxIDMnCgl0c3QgNCAndGVzdCAyIC1uZSAyJwoJdHN0IDUgJ3Rlc3QgMiAtbmUgMmEnCgl0c3QgNiAndGVzdCAyIC1uZSAzJwoJdHN0IDcgJ3Rlc3QgXCEgMiAtZXEgMicKCXRzdCA4ICd0ZXN0IFwhIDIgLWVxIDJhJwoJdHN0IDkgJ3Rlc3QgXCEgMiAtZXEgMycKZXhwZWN0ZWQtc3Rkb3V0OgoJeWVwcCAwICMxIHRlc3QgMiAtZXEgMgoJdGVyciAyICMyIHRlc3QgMiAtZXEgMmEKCW5vcGUgMSAjMyB0ZXN0IDIgLWVxIDMKCW5vcGUgMSAjNCB0ZXN0IDIgLW5lIDIKCXRlcnIgMiAjNSB0ZXN0IDIgLW5lIDJhCgl5ZXBwIDAgIzYgdGVzdCAyIC1uZSAzCglub3BlIDEgIzcgdGVzdCBcISAyIC1lcSAyCgl0ZXJyIDIgIzggdGVzdCBcISAyIC1lcSAyYQoJeWVwcCAwICM5IHRlc3QgXCEgMiAtZXEgMwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9iYWQgbnVtYmVyLwotLS0KbmFtZTogbWtzaHJjLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IH4vLm1rc2hyYyB3b3JrcyBjb3JyZWN0bHkuCglQYXJ0IDE6IHZlcmlmeSB1c2VyIGVudmlyb25tZW50IGlzIG5vdCByZWFkIChpbnRlcm5hbCkKc3RkaW46CgllY2hvIHggJEZOT1JECmV4cGVjdGVkLXN0ZG91dDoKCXgKLS0tCm5hbWU6IG1rc2hyYy0yYQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgfi8ubWtzaHJjIHdvcmtzIGNvcnJlY3RseS4KCVBhcnQgMjogdmVyaWZ5IG1rc2hyYyBpcyBub3QgcmVhZCAobm9uLWludGVyYWN0aXZlIHNoZWxscykKZmlsZS1zZXR1cDogZmlsZSA2NDQgIi5ta3NocmMiCglGTk9SRD00MgplbnYtc2V0dXA6ICFIT01FPS4hRU5WPSEKc3RkaW46CgllY2hvIHggJEZOT1JECmV4cGVjdGVkLXN0ZG91dDoKCXgKLS0tCm5hbWU6IG1rc2hyYy0yYgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgfi8ubWtzaHJjIHdvcmtzIGNvcnJlY3RseS4KCVBhcnQgMjogdmVyaWZ5IG1rc2hyYyBjYW4gYmUgcmVhZCAoaW50ZXJhY3RpdmUgc2hlbGxzKQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiLm1rc2hyYyIKCUZOT1JEPTQyCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFIT01FPS4hRU5WPSFQUzE9IQpzdGRpbjoKCWVjaG8geCAkRk5PUkQKZXhwZWN0ZWQtc3Rkb3V0OgoJeCA0MgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8oIyApKi8KLS0tCm5hbWU6IG1rc2hyYy0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB+Ly5ta3NocmMgd29ya3MgY29ycmVjdGx5LgoJUGFydCAzOiB2ZXJpZnkgbWtzaHJjIGNhbiBiZSB0dXJuZWQgb2ZmCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICIubWtzaHJjIgoJRk5PUkQ9NDIKZW52LXNldHVwOiAhSE9NRT0uIUVOVj1ub25leGlzdGFudCEKc3RkaW46CgllY2hvIHggJEZOT1JECmV4cGVjdGVkLXN0ZG91dDoKCXgKLS0tCm5hbWU6IHNoLW1vZGUtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2ggbW9kZSB0dXJucyBicmFjZWV4cGFuZCBvZmYKCWFuZCB0aGF0IHRoYXQgd29ya3MgY29ycmVjdGx5CnN0ZGluOgoJc2V0IC1vIGJyYWNlZXhwYW5kCglzZXQgK28gc2gKCVtbICQoc2V0ICtvKSA9PSAqQCgtbyBzaClAKHwgKikgXV0gJiYgZWNobyBzaCB8fCBlY2hvIG5vc2gKCVtbICQoc2V0ICtvKSA9PSAqQCgtbyBicmFjZWV4cGFuZClAKHwgKikgXV0gJiYgZWNobyBicmV4IHx8IGVjaG8gbm9icmV4CgllY2hvIHthLGIsY30KCXNldCArbyBicmFjZWV4cGFuZAoJZWNobyB7YSxiLGN9CglzZXQgLW8gYnJhY2VleHBhbmQKCWVjaG8ge2EsYixjfQoJc2V0IC1vIHNoCgllY2hvIHthLGIsY30KCVtbICQoc2V0ICtvKSA9PSAqQCgtbyBzaClAKHwgKikgXV0gJiYgZWNobyBzaCB8fCBlY2hvIG5vc2gKCVtbICQoc2V0ICtvKSA9PSAqQCgtbyBicmFjZWV4cGFuZClAKHwgKikgXV0gJiYgZWNobyBicmV4IHx8IGVjaG8gbm9icmV4CglzZXQgLW8gYnJhY2VleHBhbmQKCWVjaG8ge2EsYixjfQoJW1sgJChzZXQgK28pID09ICpAKC1vIHNoKUAofCAqKSBdXSAmJiBlY2hvIHNoIHx8IGVjaG8gbm9zaAoJW1sgJChzZXQgK28pID09ICpAKC1vIGJyYWNlZXhwYW5kKUAofCAqKSBdXSAmJiBlY2hvIGJyZXggfHwgZWNobyBub2JyZXgKZXhwZWN0ZWQtc3Rkb3V0OgoJbm9zaAoJYnJleAoJYSBiIGMKCXthLGIsY30KCWEgYiBjCgl7YSxiLGN9CglzaAoJbm9icmV4CglhIGIgYwoJc2gKCWJyZXgKLS0tCm5hbWU6IHNoLW1vZGUtMmEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHBvc2l4IG9yIHNoIG1vZGUgaXMgKm5vdCogYXV0b21hdGljYWxseSB0dXJuZWQgb24KY2F0ZWdvcnk6ICFiaW5zaApzdGRpbjoKCWxuIC1zICIkX19wcm9nbmFtZSIga3NoIHx8IGNwICIkX19wcm9nbmFtZSIga3NoCglsbiAtcyAiJF9fcHJvZ25hbWUiIHNoIHx8IGNwICIkX19wcm9nbmFtZSIgc2gKCWxuIC1zICIkX19wcm9nbmFtZSIgLi8ta3NoIHx8IGNwICIkX19wcm9nbmFtZSIgLi8ta3NoCglsbiAtcyAiJF9fcHJvZ25hbWUiIC4vLXNoIHx8IGNwICIkX19wcm9nbmFtZSIgLi8tc2gKCWZvciBzaGVsbCBpbiB7LC19eyxrfXNoOyBkbwoJCXByaW50IC0tICRzaGVsbCAkKC4vJHNoZWxsICtsIC1jIFwKCQkgICAgJ1tbICQoc2V0ICtvKSA9PSAqIi1vICJAKHNofHBvc2l4KUAofCAqKSBdXSAmJiBlY2hvIHNoIHx8IGVjaG8gbm9zaCcpCglkb25lCmV4cGVjdGVkLXN0ZG91dDoKCXNoIG5vc2gKCWtzaCBub3NoCgktc2ggbm9zaAoJLWtzaCBub3NoCi0tLQpuYW1lOiBzaC1tb2RlLTJiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBwb3NpeCBvciBzaCBtb2RlICppcyogYXV0b21hdGljYWxseSB0dXJuZWQgb24KY2F0ZWdvcnk6IGJpbnNoCnN0ZGluOgoJbG4gLXMgIiRfX3Byb2duYW1lIiBrc2ggfHwgY3AgIiRfX3Byb2duYW1lIiBrc2gKCWxuIC1zICIkX19wcm9nbmFtZSIgc2ggfHwgY3AgIiRfX3Byb2duYW1lIiBzaAoJbG4gLXMgIiRfX3Byb2duYW1lIiAuLy1rc2ggfHwgY3AgIiRfX3Byb2duYW1lIiAuLy1rc2gKCWxuIC1zICIkX19wcm9nbmFtZSIgLi8tc2ggfHwgY3AgIiRfX3Byb2duYW1lIiAuLy1zaAoJZm9yIHNoZWxsIGluIHssLX17LGt9c2g7IGRvCgkJcHJpbnQgLS0gJHNoZWxsICQoLi8kc2hlbGwgK2wgLWMgXAoJCSAgICAnW1sgJChzZXQgK28pID09ICoiLW8gIkAoc2h8cG9zaXgpQCh8ICopIF1dICYmIGVjaG8gc2ggfHwgZWNobyBub3NoJykKCWRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJc2ggc2gKCWtzaCBub3NoCgktc2ggc2gKCS1rc2ggbm9zaAotLS0KbmFtZTogcGlwZWxpbmUtMQpkZXNjcmlwdGlvbjoKCXBka3NoIGJ1ZzogbGFzdCBjb21tYW5kIG9mIGEgcGlwZWxpbmUgaXMgZXhlY3V0ZWQgaW4gYQoJc3Vic2hlbGwgLSBtYWtlIHN1cmUgaXQgc3RpbGwgaXMsIHNjcmlwdHMgZGVwZW5kIG9uIGl0CmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmN4IgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjeSIKc3RkaW46CgllY2hvICoKCWVjaG8gYSB8IHdoaWxlIHJlYWQgZDsgZG8KCQllY2hvICRkCgkJZWNobyAkZCoKCQllY2hvICoKCQlzZXQgLW8gbm9nbG9iCgkJZWNobyAkZCoKCQllY2hvICoKCWRvbmUKCWVjaG8gKgpleHBlY3RlZC1zdGRvdXQ6CglhYmN4IGFiY3kKCWEKCWFiY3ggYWJjeQoJYWJjeCBhYmN5CglhKgoJKgoJYWJjeCBhYmN5Ci0tLQpuYW1lOiBwaXBlbGluZS0yCmRlc2NyaXB0aW9uOgoJY2hlY2sgdGhhdCBjby1wcm9jZXNzZXMgd29yayB3aXRoIFRDT01zLCBUUElQRXMgYW5kIFRQQVJFTnMKY2F0ZWdvcnk6ICFub2pzaWcKc3RkaW46CgkiJF9fcHJvZ25hbWUiIC1jICdpPTEwMDsgZWNobyBoaSB8JiB3aGlsZSByZWFkIC1wIGxpbmU7IGRvIGVjaG8gIiQoKGkrKykpICRsaW5lIjsgZG9uZScKCSIkX19wcm9nbmFtZSIgLWMgJ2k9MjAwOyBlY2hvIGhpIHwgY2F0IHwmIHdoaWxlIHJlYWQgLXAgbGluZTsgZG8gZWNobyAiJCgoaSsrKSkgJGxpbmUiOyBkb25lJwoJIiRfX3Byb2duYW1lIiAtYyAnaT0zMDA7IChlY2hvIGhpIHwgY2F0KSB8JiB3aGlsZSByZWFkIC1wIGxpbmU7IGRvIGVjaG8gIiQoKGkrKykpICRsaW5lIjsgZG9uZScKZXhwZWN0ZWQtc3Rkb3V0OgoJMTAwIGhpCgkyMDAgaGkKCTMwMCBoaQotLS0KbmFtZTogcGlwZWxpbmUtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgUElQRVNUQVRVUyBkb2VzIHdoYXQgaXQncyBzdXBwb3NlZCB0bwpzdGRpbjoKCWVjaG8gMSAkUElQRVNUQVRVUyAuCgllY2hvIDIgJHtQSVBFU1RBVFVTWzBdfSAuCgllY2hvIDMgJHtQSVBFU1RBVFVTWzFdfSAuCgkoZWNobyB4OyBleGl0IDEyKSB8IChjYXQ7IGV4aXQgMjMpIHwgKGNhdDsgZXhpdCA0MikKCWVjaG8gNSAkPyAsICRQSVBFU1RBVFVTICwgJHtQSVBFU1RBVFVTWzBdfSAsICR7UElQRVNUQVRVU1sxXX0gLCAke1BJUEVTVEFUVVNbMl19ICwgJHtQSVBFU1RBVFVTWzNdfSAuCgllY2hvIDYgJHtQSVBFU1RBVFVTWzBdfSAuCglzZXQgfCBmZ3JlcCBQSVBFU1RBVFVTCgllY2hvIDggJChzZXQgfCBmZ3JlcCBQSVBFU1RBVFVTKSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgMCAuCgkyIDAgLgoJMyAuCgl4Cgk1IDQyICwgMTIgLCAxMiAsIDIzICwgNDIgLCAuCgk2IDAgLgoJUElQRVNUQVRVU1swXT0wCgk4IFBJUEVTVEFUVVNbMF09MCBQSVBFU1RBVFVTWzFdPTAgLgotLS0KbmFtZTogcGlwZWxpbmUtNApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgInNldCAtbyBwaXBlZmFpbCIgZG9lcyB3aGF0IGl0J3Mgc3VwcG9zZWQgdG8Kc3RkaW46CgllY2hvIDEgIiQoIiRfX3Byb2duYW1lIiAtYyAnKGV4aXQgMTIpIHwgKGV4aXQgMjMpIHwgKGV4aXQgNDIpOyBlY2hvICQ/JykiIC4KCWVjaG8gMiAiJCgiJF9fcHJvZ25hbWUiIC1jICchIChleGl0IDEyKSB8IChleGl0IDIzKSB8IChleGl0IDQyKTsgZWNobyAkPycpIiAuCgllY2hvIDMgIiQoIiRfX3Byb2duYW1lIiAtbyBwaXBlZmFpbCAtYyAnKGV4aXQgMTIpIHwgKGV4aXQgMjMpIHwgKGV4aXQgNDIpOyBlY2hvICQ/JykiIC4KCWVjaG8gNCAiJCgiJF9fcHJvZ25hbWUiIC1vIHBpcGVmYWlsIC1jICchIChleGl0IDEyKSB8IChleGl0IDIzKSB8IChleGl0IDQyKTsgZWNobyAkPycpIiAuCgllY2hvIDUgIiQoIiRfX3Byb2duYW1lIiAtYyAnKGV4aXQgMjMpIHwgKGV4aXQgNDIpIHwgOjsgZWNobyAkPycpIiAuCgllY2hvIDYgIiQoIiRfX3Byb2duYW1lIiAtYyAnISAoZXhpdCAyMykgfCAoZXhpdCA0MikgfCA6OyBlY2hvICQ/JykiIC4KCWVjaG8gNyAiJCgiJF9fcHJvZ25hbWUiIC1vIHBpcGVmYWlsIC1jICcoZXhpdCAyMykgfCAoZXhpdCA0MikgfCA6OyBlY2hvICQ/JykiIC4KCWVjaG8gOCAiJCgiJF9fcHJvZ25hbWUiIC1vIHBpcGVmYWlsIC1jICchIChleGl0IDIzKSB8IChleGl0IDQyKSB8IDo7IGVjaG8gJD8nKSIgLgoJZWNobyA5ICIkKCIkX19wcm9nbmFtZSIgLW8gcGlwZWZhaWwgLWMgJ3g9JCggKGV4aXQgMjMpIHwgKGV4aXQgNDIpIHwgOik7IGVjaG8gJD8nKSIgLgpleHBlY3RlZC1zdGRvdXQ6CgkxIDQyIC4KCTIgMCAuCgkzIDQyIC4KCTQgMCAuCgk1IDAgLgoJNiAxIC4KCTcgNDIgLgoJOCAwIC4KCTkgNDIgLgotLS0KbmFtZTogcGVyc2lzdC1oaXN0b3J5LTEKZGVzY3JpcHRpb246CglDaGVjayBpZiBwZXJzaXN0ZW50IGhpc3Rvcnkgc2F2aW5nIHdvcmtzCmNhdGVnb3J5OiAhbm8taGlzdGZpbGUKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWNhdCBoaXN0LmZpbGUKZXhwZWN0ZWQtc3Rkb3V0LXBhdHRlcm46CgkvY2F0IGhpc3QuZmlsZS8KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IHR5cGVzZXQtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdHlwZXNldCAtZyB3b3JrcyBjb3JyZWN0bHkKc3RkaW46CglzZXQgLUEgYXJyZm9vIDY1Cglmb28oKSB7CgkJdHlwZXNldCAtZyAtVXVpMTYgYXJyZm9vWypdCgl9CgllY2hvIGJlZm9yZSAke2FycmZvb1swXX0gLgoJZm9vCgllY2hvIGFmdGVyICR7YXJyZm9vWzBdfSAuCglzZXQgLUEgYXJyYmFyIDY1CgliYXIoKSB7CgkJZWNobyBpbnNpZGUgYmVmb3JlICR7YXJyYmFyWzBdfSAuCgkJYXJyYmFyWzBdPTk3CgkJZWNobyBpbnNpZGUgY2hhbmdlZCAke2FycmJhclswXX0gLgoJCXR5cGVzZXQgLWcgLVV1aTE2IGFycmJhclsqXQoJCWVjaG8gaW5zaWRlIHR5cGVzZXQgJHthcnJiYXJbMF19IC4KCQlhcnJiYXJbMF09NDgKCQllY2hvIGluc2lkZSBjaGFuZ2VkICR7YXJyYmFyWzBdfSAuCgl9CgllY2hvIGJlZm9yZSAke2FycmJhclswXX0gLgoJYmFyCgllY2hvIGFmdGVyICR7YXJyYmFyWzBdfSAuCmV4cGVjdGVkLXN0ZG91dDoKCWJlZm9yZSA2NSAuCglhZnRlciAxNiM0MSAuCgliZWZvcmUgNjUgLgoJaW5zaWRlIGJlZm9yZSA2NSAuCglpbnNpZGUgY2hhbmdlZCA5NyAuCglpbnNpZGUgdHlwZXNldCAxNiM2MSAuCglpbnNpZGUgY2hhbmdlZCAxNiMzMCAuCglhZnRlciAxNiMzMCAuCi0tLQpuYW1lOiB0eXBlc2V0LTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHR5cGVzZXQgLXAgb24gYXJyYXlzIHdvcmtzIGNvcnJlY3RseQpzdGRpbjoKCXNldCAtQSB4IC0tIGEgYiBjCgllY2hvID0KCXR5cGVzZXQgLXAgeAoJZWNobyA9Cgl0eXBlc2V0IC1wIHhbMV0KZXhwZWN0ZWQtc3Rkb3V0OgoJPQoJc2V0IC1BIHgKCXR5cGVzZXQgeFswXT1hCgl0eXBlc2V0IHhbMV09YgoJdHlwZXNldCB4WzJdPWMKCT0KCXR5cGVzZXQgeFsxXT1iCi0tLQpuYW1lOiB0eXBlc2V0LXBhZGRpbmctMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGxlZnQvcmlnaHQganVzdGlmaWNhdGlvbiB3b3JrcyBhcyBwZXIgVEZNCnN0ZGluOgoJdHlwZXNldCAtTDEwIGxuPTBoYWxsMAoJdHlwZXNldCAtUjEwIHJuPTBoYWxsMAoJdHlwZXNldCAtWkwxMCBsej0waGFsbDAKCXR5cGVzZXQgLVpSMTAgcno9MGhhbGwwCgl0eXBlc2V0IC1aMTAgcng9IiBoYWxsbyAiCgllY2hvICI8JGxuPiA8JHJuPiA8JGx6PiA8JHJ6PiA8JHJ4PiIKZXhwZWN0ZWQtc3Rkb3V0OgoJPDBoYWxsMCAgICA+IDwgICAgMGhhbGwwPiA8aGFsbDAgICAgID4gPDAwMDAwaGFsbDA+IDwwMDAwIGhhbGxvPgotLS0KbmFtZTogdHlwZXNldC1wYWRkaW5nLTIKZGVzY3JpcHRpb246CglDaGVjayBpZiBiYXNlLSExMCBpbnRlZ2VycyBhcmUgcGFkZGVkIHJpZ2h0CnN0ZGluOgoJdHlwZXNldCAtVXVpMTYgLUw5IGxuPTE2IzEKCXR5cGVzZXQgLVV1aTE2IC1SOSBybj0xNiMxCgl0eXBlc2V0IC1VdWkxNiAtWjkgem49MTYjMQoJdHlwZXNldCAtTDkgbHM9MTYjMQoJdHlwZXNldCAtUjkgcnM9MTYjMQoJdHlwZXNldCAtWjkgenM9MTYjMQoJZWNobyAiPCRsbj4gPCRybj4gPCR6bj4gPCRscz4gPCRycz4gPCR6cz4iCmV4cGVjdGVkLXN0ZG91dDoKCTwxNiMxICAgICA+IDwgICAgIDE2IzE+IDwxNiMwMDAwMDE+IDwxNiMxICAgICA+IDwgICAgIDE2IzE+IDwwMDAwMDE2IzE+Ci0tLQpuYW1lOiB0eXBlc2V0LXBhZGRpbmctMwpkZXNjcmlwdGlvbjoKCUNoZWNrIGZvciBhIHJlZ3Jlc3Npb24gaW4gd2hpY2ggVVRGLTggd2FzbuKAmXQgbGVmdC1wYWRkZWQgcmlnaHQKc3RkaW46CglzZXQgLVUKCW5sPSQnXG4nCgl0eXBlc2V0IC1MMjAgeD0nLiAgYWsnCgl0eXBlc2V0IC1SMjAgeT0nLiAgYWsnCglwcmludCAtciAtLSAiPCR4PiAoMSRubDwxMjM0NTY3ODkxMCAzNDU2Nzg5MjAkbmw8JHk+IDEpIgoJdHlwZXNldCAtTDIwIHg9Jy4gIGHhup4nCgl0eXBlc2V0IC1SMjAgeT0nLiAgYeG6nicKCXByaW50IC1yIC0tICI8JHg+ICgyJG5sPDEyMzQ1Njc4OTEwIDM0NTY3ODkyMCRubDwkeT4gMikiCmV4cGVjdGVkLXN0ZG91dDoKCTwuICBhayAgICAgICAgICAgICAgID4gKDEKCTwxMjM0NTY3ODkxMCAzNDU2Nzg5MjAKCTwgICAgICAgICAgICAgICAuICBhaz4gMSkKCTwuICBh4bqeICAgICAgICAgICAgICAgPiAoMgoJPDEyMzQ1Njc4OTEwIDM0NTY3ODkyMAoJPCAgICAgICAgICAgICAgIC4gIGHhup4+IDIpCi0tLQpuYW1lOiB1dGY4Ym9tLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBVVEYtOCBCeXRlIE9yZGVyIE1hcmsgaXMgaWdub3JlZCBhcyB0aGUgZmlyc3QKCW11bHRpYnl0ZSBjaGFyYWN0ZXIgb2YgdGhlIHNoZWxsIGlucHV0ICh3aXRoIC1jLCBmcm9tIHN0YW5kYXJkCglpbnB1dCwgYXMgZmlsZSwgb3IgYXMgZXZhbCBhcmd1bWVudCksIGJ1dCBub3doZXJlIGVsc2UKIyBicmVha3Mgb24gTWFjIE9TWCAoSEZTKyBub24tc3RhbmRhcmQgVVRGLTggY2Fub25pY2FsIGRlY29tcG9zaXRpb24pCmNhdGVnb3J5OiAhb3M6ZGFyd2luLCFzaGVsbDplYmNkaWMteWVzCnN0ZGluOgoJbWtkaXIgZm9vCglwcmludCAnIyEvYmluL3NoXG5lY2hvIG9obmUnID5mb28vZm5vcmQKCXByaW50ICcjIS9iaW4vc2hcbmVjaG8gbWl0JyA+Zm9vL++7v2Zub3JkCglwcmludCAn77u/Zm5vcmRcbmZub3JkXG7vu79mbm9yZFxuZm5vcmQnID5mb28vYmFyCglwcmludCBldmFsIFwnJ++7v2Zub3JkXG5mbm9yZFxu77u/Zm5vcmRcbmZub3JkJ1wnID5mb28vem9vCglzZXQgLUEgYW56YWhsIC0tIGZvby8qCgllY2hvIGdvdCAkeyNhbnphaGxbKl19IGZpbGVzCgljaG1vZCAreCBmb28vKgoJZXhwb3J0IFBBVEg9JChwd2QpL2ZvbyRQQVRIU0VQJFBBVEgKCSIkX19wcm9nbmFtZSIgLWMgJ++7v2Zub3JkJwoJZWNobyA9CgkiJF9fcHJvZ25hbWUiIC1jICfvu79mbm9yZDsgZm5vcmQ7IO+7v2Zub3JkOyBmbm9yZCcKCWVjaG8gPQoJIiRfX3Byb2duYW1lIiBmb28vYmFyCgllY2hvID0KCSIkX19wcm9nbmFtZSIgPGZvby9iYXIKCWVjaG8gPQoJIiRfX3Byb2duYW1lIiBmb28vem9vCgllY2hvID0KCSIkX19wcm9nbmFtZSIgLWMgJ2VjaG8g77u/OiAkKO+7v2Zub3JkKScKCXJtIC1yZiBmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJZ290IDQgZmlsZXMKCW9obmUKCT0KCW9obmUKCW9obmUKCW1pdAoJb2huZQoJPQoJb2huZQoJb2huZQoJbWl0CglvaG5lCgk9CglvaG5lCglvaG5lCgltaXQKCW9obmUKCT0KCW9obmUKCW9obmUKCW1pdAoJb2huZQoJPQoJ77u/OiBvaG5lCi0tLQpuYW1lOiB1dGY4Ym9tLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHdlIGNhbiBleGVjdXRlIEJPTS1zaGViYW5ncyAoZmFpbHVyZXMgbm90IGZhdGFsKQoJWFhYIGlmIHRoZSBPUyBjYW4gYWxyZWFkeSBleGVjdXRlIHRoZW0sIHdlIGxvc2UKCW5vdGU6IGN5Z3dpbiBleGVjdmUoMikgZG9lc24ndCByZXR1cm4gdG8gdXMgd2l0aCBFTk9FWEVDLCB3ZSBsb3NlCglub3RlOiBVbHRyaXggcGVybDUgdDQgcmV0dXJucyA2NTI4MCAoZXhpdC1jb2RlIDI1NSkgYW5kIG5vIHRleHQKCVhYWCBmYWlscyB3aGVuIExEX1BSRUxPQUQgaXMgc2V0IHdpdGggLWUgYW5kIFBlcmwgY2hva2VzIGl0IChBU2FuKQpuZWVkLXBhc3M6IG5vCmNhdGVnb3J5OiAhb3M6Y3lnd2luLCFvczptc3lzLCFvczp1bHRyaXgsIW9zOnV3aW4tbnQsIXNta3NoCmVudi1zZXR1cDogIUZPTz1CQVIhCnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG5wcmludCAiMSBhPSRFTlZ7Rk9PfSI7JyA+dDEKCXByaW50ICfvu78jISciJF9fcHJvZ25hbWUiJ1xucHJpbnQgIjIgYT0kRU5We0ZPT30iOycgPnQyCglwcmludCAnIyEnIiRfX3BlcmxuYW1lIidcbnByaW50ICIzIGE9JEVOVntGT099XG4iOycgPnQzCglwcmludCAn77u/IyEnIiRfX3BlcmxuYW1lIidcbnByaW50ICI0IGE9JEVOVntGT099XG4iOycgPnQ0CgljaG1vZCAreCB0PwoJLi90MQoJLi90MgoJLi90MwoJLi90NApleHBlY3RlZC1zdGRvdXQ6CgkxIGE9L25vbmV4aXN0YW50e0ZPT30KCTIgYT0vbm9uZXhpc3RhbnR7Rk9PfQoJMyBhPUJBUgoJNCBhPUJBUgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8oVW5yZWNvZ25pemVkIGNoYXJhY3RlciAuLi4uIGlnbm9yZWQgYXQgXC4udDQgbGluZSAxKSovCi0tLQpuYW1lOiB1dGY4b3B0LTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSB1dGY4LW1vZGUgZmxhZyBpcyBub3Qgc2V0IGF0IG5vbi1pbnRlcmFjdGl2ZSBzdGFydHVwCmVudi1zZXR1cDogIVBTMT0hUFMyPSFMQ19DVFlQRT1AdXRmbG9jYWxlQCEKc3RkaW46CglpZiBbWyAkLSA9ICpVKiBdXTsgdGhlbgoJCWVjaG8gaXMgc2V0CgllbHNlCgkJZWNobyBpcyBub3Qgc2V0CglmaQpleHBlY3RlZC1zdGRvdXQ6CglpcyBub3Qgc2V0Ci0tLQpuYW1lOiB1dGY4b3B0LTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSB1dGY4LW1vZGUgZmxhZyBpcyBzZXQgYXQgaW50ZXJhY3RpdmUgc3RhcnR1cC4KCUlmIHlvdXIgT1MgaXMgb2xkLCB0cnkgcGFzc2luZyBIQVZFX1NFVExPQ0FMRV9DVFlQRT0wIHRvIEJ1aWxkLnNoCm5lZWQtcGFzczogbm8KY2F0ZWdvcnk6ICFub3V0ZjgKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIVBTMT0hUFMyPSFMQ19DVFlQRT1AdXRmbG9jYWxlQCEKc3RkaW46CglpZiBbWyAkLSA9ICpVKiBdXTsgdGhlbgoJCWVjaG8gaXMgc2V0CgllbHNlCgkJZWNobyBpcyBub3Qgc2V0CglmaQpleHBlY3RlZC1zdGRvdXQ6CglpcyBzZXQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvKCMgKSovCi0tLQpuYW1lOiB1dGY4b3B0LTNhCmRlc2NyaXB0aW9uOgoJRW5zdXJlIMKxVSBvbiB0aGUgY29tbWFuZCBsaW5lIGlzIGhvbm91cmVkCgkodGhlc2UgdHdvIHRlc3RzIG1heSBwYXNzIGZhbHNlbHkgZGVwZW5kaW5nIG9uIENQUEZMQUdTKQpzdGRpbjoKCWV4cG9ydCBpPTAKCWNvZGU9J2lmIFtbICQtID0gKlUqIF1dOyB0aGVuIGVjaG8gJGkgb247IGVsc2UgZWNobyAkaSBvZmY7IGZpJwoJbGV0IGkrKzsgIiRfX3Byb2duYW1lIiAtVSAtYyAiJGNvZGUiCglsZXQgaSsrOyAiJF9fcHJvZ25hbWUiICtVIC1jICIkY29kZSIKCWVjaG8gJCgoKytpKSkgZG9uZQpleHBlY3RlZC1zdGRvdXQ6CgkxIG9uCgkyIG9mZgoJMyBkb25lCi0tLQpuYW1lOiB1dGY4b3B0LTNiCmRlc2NyaXB0aW9uOgoJRW5zdXJlIMKxVSBvbiB0aGUgY29tbWFuZCBsaW5lIGlzIGhvbm91cmVkLCBpbnRlcmFjdGl2ZSBzaGVsbHMKbmVlZC1jdHR5OiB5ZXMKc3RkaW46CglleHBvcnQgaT0wCgljb2RlPSdpZiBbWyAkLSA9ICpVKiBdXTsgdGhlbiBlY2hvICRpIG9uOyBlbHNlIGVjaG8gJGkgb2ZmOyBmaScKCWxldCBpKys7ICIkX19wcm9nbmFtZSIgLVUgLWljICIkY29kZSIKCWxldCBpKys7ICIkX19wcm9nbmFtZSIgK1UgLWljICIkY29kZSIKCWVjaG8gJCgoKytpKSkgZG9uZQpleHBlY3RlZC1zdGRvdXQ6CgkxIG9uCgkyIG9mZgoJMyBkb25lCi0tLQpuYW1lOiB1dGY4YnVnLTEKZGVzY3JpcHRpb246CglFbnN1cmUgdHJhaWxpbmcgY29tYmluaW5nIGNoYXJhY3RlcnMgYXJlIG5vdCBsb3N0CnN0ZGluOgoJc2V0IC1VCglhPWEKCWI9JCdcdTAzMDEnCgl4PSRhJGIKCXByaW50IC1yIC0tICI8ZSR4PiIKCXg9JGEKCXgrPSRiCglwcmludCAtciAtLSAiPGUkeD4iCgliPSQnXHUwMzAxJ2IKCXg9JGEKCXgrPSRiCglwcmludCAtciAtLSAiPGUkeD4iCmV4cGVjdGVkLXN0ZG91dDoKCTxlYcyBPgoJPGVhzIE+Cgk8ZWHMgWI+Ci0tLQpuYW1lOiBhbGlhc2VzLTEKZGVzY3JpcHRpb246CglDaGVjayBpZiBidWlsdC1pbiBzaGVsbCBhbGlhc2VzIGFyZSBva2F5CnN0ZGluOgoJYWxpYXMKCXR5cGVzZXQgLWYKZXhwZWN0ZWQtc3Rkb3V0OgoJYXV0b2xvYWQ9J1xcYnVpbHRpbiB0eXBlc2V0IC1mdScKCWZ1bmN0aW9ucz0nXFxidWlsdGluIHR5cGVzZXQgLWYnCgloYXNoPSdcXGJ1aWx0aW4gYWxpYXMgLXQnCgloaXN0b3J5PSdcXGJ1aWx0aW4gZmMgLWwnCglpbnRlZ2VyPSdcXGJ1aWx0aW4gdHlwZXNldCAtaScKCWxvY2FsPSdcXGJ1aWx0aW4gdHlwZXNldCcKCWxvZ2luPSdcXGJ1aWx0aW4gZXhlYyBsb2dpbicKCW5hbWVyZWY9J1xcYnVpbHRpbiB0eXBlc2V0IC1uJwoJbm9odXA9J25vaHVwICcKCXI9J1xcYnVpbHRpbiBmYyAtZSAtJwoJdHlwZT0nXFxidWlsdGluIHdoZW5jZSAtdicKLS0tCm5hbWU6IGFsaWFzZXMtMmIKZGVzY3JpcHRpb246CglDaGVjayBpZiDigJxzZXQgLW8gc2jigJ0gZG9lcyBub3QgaW5mbHVlbmNlIGJ1aWx0LWluIGFsaWFzZXMKYXJndW1lbnRzOiAhLW8hc2ghCnN0ZGluOgoJYWxpYXMKCXR5cGVzZXQgLWYKZXhwZWN0ZWQtc3Rkb3V0OgoJYXV0b2xvYWQ9J1xcYnVpbHRpbiB0eXBlc2V0IC1mdScKCWZ1bmN0aW9ucz0nXFxidWlsdGluIHR5cGVzZXQgLWYnCgloYXNoPSdcXGJ1aWx0aW4gYWxpYXMgLXQnCgloaXN0b3J5PSdcXGJ1aWx0aW4gZmMgLWwnCglpbnRlZ2VyPSdcXGJ1aWx0aW4gdHlwZXNldCAtaScKCWxvY2FsPSdcXGJ1aWx0aW4gdHlwZXNldCcKCWxvZ2luPSdcXGJ1aWx0aW4gZXhlYyBsb2dpbicKCW5hbWVyZWY9J1xcYnVpbHRpbiB0eXBlc2V0IC1uJwoJbm9odXA9J25vaHVwICcKCXI9J1xcYnVpbHRpbiBmYyAtZSAtJwoJdHlwZT0nXFxidWlsdGluIHdoZW5jZSAtdicKLS0tCm5hbWU6IGFsaWFzZXMtM2IKZGVzY3JpcHRpb246CglDaGVjayBpZiBydW5uaW5nIGFzIHNoIGRvZXMgbm90IGluZmx1ZW5jZSBidWlsdC1pbiBhbGlhc2VzCnN0ZGluOgoJY3AgIiRfX3Byb2duYW1lIiBzaAoJLi9zaCAtYyAnYWxpYXM7IHR5cGVzZXQgLWYnCglybSAtZiBzaApleHBlY3RlZC1zdGRvdXQ6CglhdXRvbG9hZD0nXFxidWlsdGluIHR5cGVzZXQgLWZ1JwoJZnVuY3Rpb25zPSdcXGJ1aWx0aW4gdHlwZXNldCAtZicKCWhhc2g9J1xcYnVpbHRpbiBhbGlhcyAtdCcKCWhpc3Rvcnk9J1xcYnVpbHRpbiBmYyAtbCcKCWludGVnZXI9J1xcYnVpbHRpbiB0eXBlc2V0IC1pJwoJbG9jYWw9J1xcYnVpbHRpbiB0eXBlc2V0JwoJbG9naW49J1xcYnVpbHRpbiBleGVjIGxvZ2luJwoJbmFtZXJlZj0nXFxidWlsdGluIHR5cGVzZXQgLW4nCglub2h1cD0nbm9odXAgJwoJcj0nXFxidWlsdGluIGZjIC1lIC0nCgl0eXBlPSdcXGJ1aWx0aW4gd2hlbmNlIC12JwotLS0KbmFtZTogYWxpYXNlcy1jbWRsaW5lCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhc2VzIHdvcmsgZnJvbSB0aGUgY29tbWFuZCBsaW5lIChEZWJpYW4gIzUxNzAwOSkKCU5vdGUgdGhhdCBkdWUgdG8gdGhlIG5hdHVyZSBvZiB0aGUgbGV4aW5nIHByb2Nlc3MsIGRlZmluaW5nCglhbGlhc2VzIGluIENPTVNVQnMgdGhlbiBpbW1lZGlhdGVseSB1c2luZyB0aGVtLCBhbmQgdGhpbmdzCglsaWtlICdhbGlhcyBmb289YmFyICYmIGZvbycsIHN0aWxsIGZhaWwuCnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAkJ2FsaWFzIGE9ImVjaG8gT0siXG5hJwpleHBlY3RlZC1zdGRvdXQ6CglPSwotLS0KbmFtZTogYWxpYXNlcy1mdW5jZGVmLTEKZGVzY3JpcHRpb246CglDaGVjayBpZiBQT1NJWCBmdW5jdGlvbnMgdGFrZSBwcmVjZWRlbmNlcyBvdmVyIGFsaWFzZXMKc3RkaW46CglhbGlhcyBmb289J2VjaG8gbWFrcm8nCglmb28oKSB7CgkJZWNobyBmdW5rdGlvbgoJfQoJZm9vCmV4cGVjdGVkLXN0ZG91dDoKCW1ha3JvCi0tLQpuYW1lOiBhbGlhc2VzLWZ1bmNkZWYtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIFBPU0lYIGZ1bmN0aW9ucyB0YWtlIHByZWNlZGVuY2VzIG92ZXIgYWxpYXNlcwpzdGRpbjoKCWFsaWFzIGZvbz0nZWNobyBtYWtybycKCWZvbyAoKSB7CgkJZWNobyBmdW5rdGlvbgoJfQoJZm9vCmV4cGVjdGVkLXN0ZG91dDoKCW1ha3JvCi0tLQpuYW1lOiBhbGlhc2VzLWZ1bmNkZWYtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGFsaWFzZXMgdGFrZSBwcmVjZWRlbmNlcyBvdmVyIEtvcm4gZnVuY3Rpb25zCnN0ZGluOgoJYWxpYXMgZm9vPSdlY2hvIG1ha3JvJwoJZnVuY3Rpb24gZm9vIHsKCQllY2hvIGZ1bmt0aW9uCgl9Cglmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJbWFrcm8KLS0tCm5hbWU6IGFsaWFzZXMtZnVuY2RlZi00CmRlc2NyaXB0aW9uOgoJRnVuY3Rpb25zIHNob3VsZCBvbmx5IHRha2Ugb3ZlciBpZiBhY3R1YWxseSBiZWluZyBkZWZpbmVkCnN0ZGluOgoJYWxpYXMgbG9jYWwKCTp8fCBsb2NhbCgpIHsgOjsgfQoJYWxpYXMgbG9jYWwKZXhwZWN0ZWQtc3Rkb3V0OgoJbG9jYWw9J1xcYnVpbHRpbiB0eXBlc2V0JwoJbG9jYWw9J1xcYnVpbHRpbiB0eXBlc2V0JwotLS0KbmFtZTogYXJyYXlzLTEKZGVzY3JpcHRpb246CglDaGVjayBpZiBLb3JuIFNoZWxsIGFycmF5cyB3b3JrIGFzIGV4cGVjdGVkCnN0ZGluOgoJdj0iYyBkIgoJc2V0IC1BIGZvbyAtLSBhIFwkdiAiJHYiICckdicgYgoJZWNobyAiJHsjZm9vWypdfXwke2Zvb1swXX18JHtmb29bMV19fCR7Zm9vWzJdfXwke2Zvb1szXX18JHtmb29bNF19fCIKZXhwZWN0ZWQtc3Rkb3V0OgoJNXxhfCR2fGMgZHwkdnxifAotLS0KbmFtZTogYXJyYXlzLTJhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYmFzaC1zdHlsZSBhcnJheXMgd29yayBhcyBleHBlY3RlZApzdGRpbjoKCXY9ImMgZCIKCWZvbz0oYSBcJHYgIiR2IiAnJHYnIGIpCgllY2hvICIkeyNmb29bKl19fCR7Zm9vWzBdfXwke2Zvb1sxXX18JHtmb29bMl19fCR7Zm9vWzNdfXwke2Zvb1s0XX18IgpleHBlY3RlZC1zdGRvdXQ6Cgk1fGF8JHZ8YyBkfCR2fGJ8Ci0tLQpuYW1lOiBhcnJheXMtMmIKZGVzY3JpcHRpb246CglDaGVjayBpZiBiYXNoLXN0eWxlIGFycmF5cyB3b3JrIGFzIGV4cGVjdGVkLCB3aXRoIG5ld2xpbmVzCnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG5mb3IgeCBpbiAiJEAiOyBkbyBwcmludCAtbnIgLS0gIiR4fCI7IGRvbmUnID5wZnAKCWNobW9kICt4IHBmcAoJdGVzdCAtbiAiJFpTSF9WRVJTSU9OIiAmJiBzZXRvcHQgS1NIX0FSUkFZUwoJdj0iZSBmIgoJZm9vPShhCgkJYmMKCQlkIFwkdiAiJHYiICckdicgZwoJKQoJLi9wZnAgIiR7I2Zvb1sqXX0iICIke2Zvb1swXX0iICIke2Zvb1sxXX0iICIke2Zvb1syXX0iICIke2Zvb1szXX0iICIke2Zvb1s0XX0iICIke2Zvb1s1XX0iICIke2Zvb1s2XX0iOyBlY2hvCglmb289KGFcCgkJYmMKCQlkIFwkdiAiJHYiICckdicgZwoJKQoJLi9wZnAgIiR7I2Zvb1sqXX0iICIke2Zvb1swXX0iICIke2Zvb1sxXX0iICIke2Zvb1syXX0iICIke2Zvb1szXX0iICIke2Zvb1s0XX0iICIke2Zvb1s1XX0iICIke2Zvb1s2XX0iOyBlY2hvCglmb289KGFcCgliY1xcCgkJZCBcJHYgIiR2IiAnJHYnCglnKQoJLi9wZnAgIiR7I2Zvb1sqXX0iICIke2Zvb1swXX0iICIke2Zvb1sxXX0iICIke2Zvb1syXX0iICIke2Zvb1szXX0iICIke2Zvb1s0XX0iICIke2Zvb1s1XX0iICIke2Zvb1s2XX0iOyBlY2hvCmV4cGVjdGVkLXN0ZG91dDoKCTd8YXxiY3xkfCR2fGUgZnwkdnxnfAoJN3xhfGJjfGR8JHZ8ZSBmfCR2fGd8Cgk2fGFiY1x8ZHwkdnxlIGZ8JHZ8Z3x8Ci0tLQpuYW1lOiBhcnJheXMtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGFycmF5IGJvdW5kcyBhcmUgdWludDMyX3QKc3RkaW46CglzZXQgLUEgZm9vIGEgYiBjCglmb29bNDA5N109ZAoJZm9vWzIxNDc0ODM2MzddPWUKCWVjaG8gJHtmb29bKl19Cglmb29bLTFdPWYKCWVjaG8gJHtmb29bNDI5NDk2NzI5NV19IGcgJHtmb29bKl19CmV4cGVjdGVkLXN0ZG91dDoKCWEgYiBjIGQgZQoJZiBnIGEgYiBjIGQgZSBmCi0tLQpuYW1lOiBhcnJheXMtNApkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEtvcm4gU2hlbGwgYXJyYXlzIHdpdGggc3BlY2lmaWVkIGluZGljZXMgd29yayBhcyBleHBlY3RlZApzdGRpbjoKCXY9ImMgZCIKCXNldCAtQSBmb28gLS0gWzFdPVwkdiBbMl09IiR2IiBbNF09JyR2JyBbMF09YSBbNV09YgoJZWNobyAiJHsjZm9vWypdfXwke2Zvb1swXX18JHtmb29bMV19fCR7Zm9vWzJdfXwke2Zvb1szXX18JHtmb29bNF19fCR7Zm9vWzVdfXwiCgkjIHdlIGRvbid0IHdhbnQgdGhpcyBhdCBhbGw6CgkjCTV8YXwkdnxjIGR8fCR2fGJ8CglzZXQgLUEgYXJyICJbNV09bWVoIgoJZWNobyAiPCR7YXJyWzBdfT48JHthcnJbNV19PiIKZXhwZWN0ZWQtc3Rkb3V0OgoJNXxbMV09JHZ8WzJdPWMgZHxbNF09JHZ8WzBdPWF8WzVdPWJ8fAoJPFs1XT1tZWg+PD4KLS0tCm5hbWU6IGFycmF5cy01CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYmFzaC1zdHlsZSBhcnJheXMgd2l0aCBzcGVjaWZpZWQgaW5kaWNlcyB3b3JrIGFzIGV4cGVjdGVkCgkodGFrZW4gb3V0IHRlbXBvcmFyaWx5IHRvIGZpeCBhcnJheXMtNDsgc2VlIGFsc28gYXJyYXlzLTlhIGNvbW1lbnQpCmNhdGVnb3J5OiBkaXNhYmxlZApzdGRpbjoKCXY9ImMgZCIKCWZvbz0oWzFdPVwkdiBbMl09IiR2IiBbNF09JyR2JyBbMF09YSBbNV09YikKCWVjaG8gIiR7I2Zvb1sqXX18JHtmb29bMF19fCR7Zm9vWzFdfXwke2Zvb1syXX18JHtmb29bM119fCR7Zm9vWzRdfXwke2Zvb1s1XX18IgoJeD0oWzEyOF09Zm9vIGJhciBiYXopCgllY2hvIGs9ICR7IXhbKl19IC4KCWVjaG8gdj0gJHt4WypdfSAuCgkjIENoZWNrIHRoYXQgd2UgZG8gbm90IGJyZWFrIHRoaXMgYnkgZ2xvYmJpbmcKCTo+Yj1ibGFoCglibGVoPTUKCXR5cGVzZXQgLWEgYXJyCglhcnIrPShbYmxlaF09YmxhaCkKCWVjaG8gIjwke2FyclswXX0+PCR7YXJyWzVdfT4iCmV4cGVjdGVkLXN0ZG91dDoKCTV8YXwkdnxjIGR8fCR2fGJ8CglrPSAxMjggMTI5IDEzMCAuCgl2PSBmb28gYmFyIGJheiAuCgk8PjxibGFoPgotLS0KbmFtZTogYXJyYXlzLTYKZGVzY3JpcHRpb246CglDaGVjayBpZiB3ZSBjYW4gZ2V0IHRoZSBhcnJheSBrZXlzIChpbmRpY2VzKSBmb3IgaW5kZXhlZCBhcnJheXMsCglLb3JuIHNoZWxsIHN0eWxlCnN0ZGluOgoJb2YoKSB7CgkJaT0wCgkJZm9yIHggaW4gIiRAIjsgZG8KCQkJZWNobyAtbiAiJCgoaSsrKSk8JHg+IgoJCWRvbmUKCQllY2hvCgl9Cglmb29bMV09ZWlucwoJc2V0IHwgZ3JlcCAnXmZvbycKCWVjaG8gPQoJZm9vWzBdPXp3ZWkKCWZvb1s0XT1kcmVpCglzZXQgfCBncmVwICdeZm9vJwoJZWNobyA9CgllY2hvIGEgJChvZiAke2Zvb1sqXX0pID0gJChvZiAke2JhclsqXX0pIGEKCWVjaG8gYiAkKG9mICIke2Zvb1sqXX0iKSA9ICQob2YgIiR7YmFyWypdfSIpIGIKCWVjaG8gYyAkKG9mICR7Zm9vW0BdfSkgPSAkKG9mICR7YmFyW0BdfSkgYwoJZWNobyBkICQob2YgIiR7Zm9vW0BdfSIpID0gJChvZiAiJHtiYXJbQF19IikgZAoJZWNobyBlICQob2YgJHshZm9vWypdfSkgPSAkKG9mICR7IWJhclsqXX0pIGUKCWVjaG8gZiAkKG9mICIkeyFmb29bKl19IikgPSAkKG9mICIkeyFiYXJbKl19IikgZgoJZWNobyBnICQob2YgJHshZm9vW0BdfSkgPSAkKG9mICR7IWJhcltAXX0pIGcKCWVjaG8gaCAkKG9mICIkeyFmb29bQF19IikgPSAkKG9mICIkeyFiYXJbQF19IikgaApleHBlY3RlZC1zdGRvdXQ6Cglmb29bMV09ZWlucwoJPQoJZm9vWzBdPXp3ZWkKCWZvb1sxXT1laW5zCglmb29bNF09ZHJlaQoJPQoJYSAwPHp3ZWk+MTxlaW5zPjI8ZHJlaT4gPSBhCgliIDA8endlaSBlaW5zIGRyZWk+ID0gMDw+IGIKCWMgMDx6d2VpPjE8ZWlucz4yPGRyZWk+ID0gYwoJZCAwPHp3ZWk+MTxlaW5zPjI8ZHJlaT4gPSBkCgllIDA8MD4xPDE+Mjw0PiA9IGUKCWYgMDwwIDEgND4gPSAwPD4gZgoJZyAwPDA+MTwxPjI8ND4gPSBnCgloIDA8MD4xPDE+Mjw0PiA9IGgKLS0tCm5hbWU6IGFycmF5cy03CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgd2UgY2FuIGdldCB0aGUgYXJyYXkga2V5cyAoaW5kaWNlcykgZm9yIGluZGV4ZWQgYXJyYXlzLAoJS29ybiBzaGVsbCBzdHlsZSwgaW4gc29tZSBjb3JuZXIgY2FzZXMKc3RkaW46CgllY2hvICFhcno6ICR7IWFyen0KCWVjaG8gIWFyelswXTogJHshYXJ6WzBdfQoJZWNobyAhYXJ6WzFdOiAkeyFhcnpbMV19Cglhcno9Zm9vCgllY2hvICFhcno6ICR7IWFyen0KCWVjaG8gIWFyelswXTogJHshYXJ6WzBdfQoJZWNobyAhYXJ6WzFdOiAkeyFhcnpbMV19Cgl1bnNldCBhcnoKCWVjaG8gIWFyejogJHshYXJ6fQoJZWNobyAhYXJ6WzBdOiAkeyFhcnpbMF19CgllY2hvICFhcnpbMV06ICR7IWFyelsxXX0KZXhwZWN0ZWQtc3Rkb3V0OgoJIWFyejogYXJ6CgkhYXJ6WzBdOiBhcnpbMF0KCSFhcnpbMV06IGFyelsxXQoJIWFyejogYXJ6CgkhYXJ6WzBdOiBhcnpbMF0KCSFhcnpbMV06IGFyelsxXQoJIWFyejogYXJ6CgkhYXJ6WzBdOiBhcnpbMF0KCSFhcnpbMV06IGFyelsxXQotLS0KbmFtZTogYXJyYXlzLTgKZGVzY3JpcHRpb246CglDaGVjayBzb21lIGJlaGF2aW91cmFsIHJ1bGVzIGZvciBhcnJheXMuCnN0ZGluOgoJZm5hKCkgewoJCXNldCAtQSBhYSA5Cgl9CglmbmIoKSB7CgkJdHlwZXNldCBhYgoJCXNldCAtQSBhYiA5Cgl9CglmbmMoKSB7CgkJdHlwZXNldCBhYwoJCXNldCAtQSBhYyA5MQoJCXVuc2V0IGFjCgkJc2V0IC1BIGFjIDkyCgl9CglmbmQoKSB7CgkJc2V0ICtBIGFkIDkKCX0KCWZuZSgpIHsKCQl1bnNldCBhZQoJCXNldCArQSBhZSA5Cgl9CglmbmYoKSB7CgkJdW5zZXQgYWZbMF0KCQlzZXQgK0EgYWYgOQoJfQoJZm5nKCkgewoJCXVuc2V0IGFnWypdCgkJc2V0ICtBIGFnIDkKCX0KCXNldCAtQSBhYSAxIDIKCXNldCAtQSBhYiAxIDIKCXNldCAtQSBhYyAxIDIKCXNldCAtQSBhZCAxIDIKCXNldCAtQSBhZSAxIDIKCXNldCAtQSBhZiAxIDIKCXNldCAtQSBhZyAxIDIKCXNldCAtQSBhaCAxIDIKCXR5cGVzZXQgLVozIGFhIGFiIGFjIGFkIGFlIGFmIGFnCglwcmludCAxYSAke2FhWypdfSAuCglwcmludCAxYiAke2FiWypdfSAuCglwcmludCAxYyAke2FjWypdfSAuCglwcmludCAxZCAke2FkWypdfSAuCglwcmludCAxZSAke2FlWypdfSAuCglwcmludCAxZiAke2FmWypdfSAuCglwcmludCAxZyAke2FnWypdfSAuCglwcmludCAxaCAke2FoWypdfSAuCglmbmEKCWZuYgoJZm5jCglmbmQKCWZuZQoJZm5mCglmbmcKCXR5cGVzZXQgLVo1IGFoWypdCglwcmludCAyYSAke2FhWypdfSAuCglwcmludCAyYiAke2FiWypdfSAuCglwcmludCAyYyAke2FjWypdfSAuCglwcmludCAyZCAke2FkWypdfSAuCglwcmludCAyZSAke2FlWypdfSAuCglwcmludCAyZiAke2FmWypdfSAuCglwcmludCAyZyAke2FnWypdfSAuCglwcmludCAyaCAke2FoWypdfSAuCmV4cGVjdGVkLXN0ZG91dDoKCTFhIDAwMSAwMDIgLgoJMWIgMDAxIDAwMiAuCgkxYyAwMDEgMDAyIC4KCTFkIDAwMSAwMDIgLgoJMWUgMDAxIDAwMiAuCgkxZiAwMDEgMDAyIC4KCTFnIDAwMSAwMDIgLgoJMWggMSAyIC4KCTJhIDkgLgoJMmIgMDAxIDAwMiAuCgkyYyA5MiAuCgkyZCAwMDkgMDAyIC4KCTJlIDkgLgoJMmYgOSAwMDIgLgoJMmcgMDA5IC4KCTJoIDAwMDAxIDAwMDAyIC4KLS0tCm5hbWU6IGFycmF5cy05YQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgd2UgY2FuIGNvbmNhdGVuYXRlIGFycmF5cwpzdGRpbjoKCXVuc2V0IGZvbzsgZm9vPShiYXIpOyBmb28rPShiYXopOyBlY2hvIDEgJHshZm9vWypdfSA6ICR7Zm9vWypdfSAuCgl1bnNldCBmb287IGZvbz0oZm9vIGJhcik7IGZvbys9KGJheik7IGVjaG8gMiAkeyFmb29bKl19IDogJHtmb29bKl19IC4KIwl1bnNldCBmb287IGZvbz0oWzJdPWZvbyBbMF09YmFyKTsgZm9vKz0oYmF6IFs1XT1xdXV4KTsgZWNobyAzICR7IWZvb1sqXX0gOiAke2Zvb1sqXX0gLgpleHBlY3RlZC1zdGRvdXQ6CgkxIDAgMSA6IGJhciBiYXogLgoJMiAwIDEgMiA6IGZvbyBiYXIgYmF6IC4KIwkzIDAgMiAzIDUgOiBiYXIgZm9vIGJheiBxdXV4IC4KLS0tCm5hbWU6IGFycmF5cy05YgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgd2UgY2FuIGNvbmNhdGVuYXRlIHBhcmFtZXRlcnMgdG9vCnN0ZGluOgoJdW5zZXQgZm9vOyBmb289YmFyOyBmb28rPWJhejsgZWNobyAxICRmb28gLgoJdW5zZXQgZm9vOyB0eXBlc2V0IC1pMTYgZm9vPTEwOyBmb28rPTIwOyBlY2hvIDIgJGZvbyAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgYmFyYmF6IC4KCTIgMTYjYTIwIC4KLS0tCm5hbWU6IGFycmFzc2lnbi1iYXNpYwpkZXNjcmlwdGlvbjoKCUNoZWNrIGJhc2ljIHdoaXRlc3BhY2UgY29uc2VydmluZyBwcm9wZXJ0aWVzIG9mIHdkYXJyYXNzaWduCnN0ZGluOgoJYT0oJChlY2hvIGEgIGIpKQoJYj0oJChlY2hvICJhICBiIikpCgljPSgiJChlY2hvICJhICBiIikiKQoJZD0oIiQoZWNobyBhICBiKSIpCglhKz0oJChlY2hvIGMgIGQpKQoJYis9KCQoZWNobyAiYyAgZCIpKQoJYys9KCIkKGVjaG8gImMgIGQiKSIpCglkKz0oIiQoZWNobyBjICBkKSIpCgllY2hvICIuYToke2FbMF19LiR7YVsxXX0uJHthWzJdfS4ke2FbM119OiIKCWVjaG8gIi5iOiR7YlswXX0uJHtiWzFdfS4ke2JbMl19LiR7YlszXX06IgoJZWNobyAiLmM6JHtjWzBdfS4ke2NbMV19LiR7Y1syXX0uJHtjWzNdfToiCgllY2hvICIuZDoke2RbMF19LiR7ZFsxXX0uJHtkWzJdfS4ke2RbM119OiIKZXhwZWN0ZWQtc3Rkb3V0OgoJLmE6YS5iLmMuZDoKCS5iOmEuYi5jLmQ6CgkuYzphICBiLmMgIGQuLjoKCS5kOmEgYi5jIGQuLjoKLS0tCm5hbWU6IGFycmFzc2lnbi1lb2wKZGVzY3JpcHRpb246CglDb21tYW5kcyBhZnRlciBhcnJheSBhc3NpZ25tZW50cyBhcmUgbm90IHBlcm1pdHRlZApzdGRpbjoKCWZvbz0oYSBiKSBlbnYKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL3N5bnRheCBlcnJvcjogdW5leHBlY3RlZCAnZW52Jy8KLS0tCm5hbWU6IGFycmFzc2lnbi1mbmMtbm9uZQpkZXNjcmlwdGlvbjoKCUNoZWNrIGxvY2FsaXR5IG9mIGFycmF5IGFjY2VzcyBpbnNpZGUgYSBmdW5jdGlvbgpzdGRpbjoKCWZ1bmN0aW9uIGZuIHsKCQl4Kz0oZikKCQllY2hvICIuZm46JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCgl9CglmdW5jdGlvbiByZm4gewoJCWlmIFtbIC1uICRCQVNIX1ZFUlNJT04gXV07IHRoZW4KCQkJeT0oKQoJCWVsc2UKCQkJc2V0IC1BIHkKCQlmaQoJCXkrPShmKQoJCWVjaG8gIi5yZm46JHt5WzBdfS4ke3lbMV19LiR7eVsyXX0uJHt5WzNdfToiCgl9Cgl4PShtIG0pCgl5PShtIG0pCgllY2hvICIuZjA6JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCglmbgoJZWNobyAiLmYxOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJZm4KCWVjaG8gIi5mMjoke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCWVjaG8gIi5yZjA6JHt5WzBdfS4ke3lbMV19LiR7eVsyXX0uJHt5WzNdfToiCglyZm4KCWVjaG8gIi5yZjE6JHt5WzBdfS4ke3lbMV19LiR7eVsyXX0uJHt5WzNdfToiCglyZm4KCWVjaG8gIi5yZjI6JHt5WzBdfS4ke3lbMV19LiR7eVsyXX0uJHt5WzNdfToiCmV4cGVjdGVkLXN0ZG91dDoKCS5mMDptLm0uLjoKCS5mbjptLm0uZi46CgkuZjE6bS5tLmYuOgoJLmZuOm0ubS5mLmY6CgkuZjI6bS5tLmYuZjoKCS5yZjA6bS5tLi46CgkucmZuOmYuLi46CgkucmYxOmYuLi46CgkucmZuOmYuLi46CgkucmYyOmYuLi46Ci0tLQpuYW1lOiBhcnJhc3NpZ24tZm5jLWxvY2FsCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbG9jYWxpdHkgb2YgYXJyYXkgYWNjZXNzIGluc2lkZSBhIGZ1bmN0aW9uCgl3aXRoIHRoZSBiYXNoL21rc2gva3NoOTMgbG9jYWwvdHlwZXNldCBrZXl3b3JkCgkobm90ZToga3NoOTMgaGFzIG5vIGxvY2FsOyB0eXBlc2V0IHdvcmtzIG9ubHkgaW4gRktTSCkKc3RkaW46CglmdW5jdGlvbiBmbiB7CgkJdHlwZXNldCB4CgkJeCs9KGYpCgkJZWNobyAiLmZuOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJfQoJZnVuY3Rpb24gcmZuIHsKCQlpZiBbWyAtbiAkQkFTSF9WRVJTSU9OIF1dOyB0aGVuCgkJCXk9KCkKCQllbHNlCgkJCXNldCAtQSB5CgkJZmkKCQl0eXBlc2V0IHkKCQl5Kz0oZikKCQllY2hvICIucmZuOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJfQoJZnVuY3Rpb24gZm5yIHsKCQl0eXBlc2V0IHoKCQlpZiBbWyAtbiAkQkFTSF9WRVJTSU9OIF1dOyB0aGVuCgkJCXo9KCkKCQllbHNlCgkJCXNldCAtQSB6CgkJZmkKCQl6Kz0oZikKCQllY2hvICIuZm5yOiR7elswXX0uJHt6WzFdfS4ke3pbMl19LiR7elszXX06IgoJfQoJeD0obSBtKQoJeT0obSBtKQoJej0obSBtKQoJZWNobyAiLmYwOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJZm4KCWVjaG8gIi5mMToke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCWZuCgllY2hvICIuZjI6JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCgllY2hvICIucmYwOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJcmZuCgllY2hvICIucmYxOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJcmZuCgllY2hvICIucmYyOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJZWNobyAiLmYwcjoke3pbMF19LiR7elsxXX0uJHt6WzJdfS4ke3pbM119OiIKCWZucgoJZWNobyAiLmYxcjoke3pbMF19LiR7elsxXX0uJHt6WzJdfS4ke3pbM119OiIKCWZucgoJZWNobyAiLmYycjoke3pbMF19LiR7elsxXX0uJHt6WzJdfS4ke3pbM119OiIKZXhwZWN0ZWQtc3Rkb3V0OgoJLmYwOm0ubS4uOgoJLmZuOmYuLi46CgkuZjE6bS5tLi46CgkuZm46Zi4uLjoKCS5mMjptLm0uLjoKCS5yZjA6bS5tLi46CgkucmZuOmYuLi46CgkucmYxOi4uLjoKCS5yZm46Zi4uLjoKCS5yZjI6Li4uOgoJLmYwcjptLm0uLjoKCS5mbnI6Zi4uLjoKCS5mMXI6bS5tLi46CgkuZm5yOmYuLi46CgkuZjJyOm0ubS4uOgotLS0KbmFtZTogYXJyYXNzaWduLWZuYy1nbG9iYWwKZGVzY3JpcHRpb246CglDaGVjayBsb2NhbGl0eSBvZiBhcnJheSBhY2Nlc3MgaW5zaWRlIGEgZnVuY3Rpb24KCXdpdGggdGhlIGJhc2g0L21rc2gveWFzaC96c2ggdHlwZXNldCAtZyBrZXl3b3JkCnN0ZGluOgoJZnVuY3Rpb24gZm4gewoJCXR5cGVzZXQgLWcgeAoJCXgrPShmKQoJCWVjaG8gIi5mbjoke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCX0KCWZ1bmN0aW9uIHJmbiB7CgkJc2V0IC1BIHkKCQl0eXBlc2V0IC1nIHkKCQl5Kz0oZikKCQllY2hvICIucmZuOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJfQoJZnVuY3Rpb24gZm5yIHsKCQl0eXBlc2V0IC1nIHoKCQlzZXQgLUEgegoJCXorPShmKQoJCWVjaG8gIi5mbnI6JHt6WzBdfS4ke3pbMV19LiR7elsyXX0uJHt6WzNdfToiCgl9Cgl4PShtIG0pCgl5PShtIG0pCgl6PShtIG0pCgllY2hvICIuZjA6JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCglmbgoJZWNobyAiLmYxOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJZm4KCWVjaG8gIi5mMjoke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCWVjaG8gIi5yZjA6JHt5WzBdfS4ke3lbMV19LiR7eVsyXX0uJHt5WzNdfToiCglyZm4KCWVjaG8gIi5yZjE6JHt5WzBdfS4ke3lbMV19LiR7eVsyXX0uJHt5WzNdfToiCglyZm4KCWVjaG8gIi5yZjI6JHt5WzBdfS4ke3lbMV19LiR7eVsyXX0uJHt5WzNdfToiCgllY2hvICIuZjByOiR7elswXX0uJHt6WzFdfS4ke3pbMl19LiR7elszXX06IgoJZm5yCgllY2hvICIuZjFyOiR7elswXX0uJHt6WzFdfS4ke3pbMl19LiR7elszXX06IgoJZm5yCgllY2hvICIuZjJyOiR7elswXX0uJHt6WzFdfS4ke3pbMl19LiR7elszXX06IgpleHBlY3RlZC1zdGRvdXQ6CgkuZjA6bS5tLi46CgkuZm46bS5tLmYuOgoJLmYxOm0ubS5mLjoKCS5mbjptLm0uZi5mOgoJLmYyOm0ubS5mLmY6CgkucmYwOm0ubS4uOgoJLnJmbjpmLi4uOgoJLnJmMTpmLi4uOgoJLnJmbjpmLi4uOgoJLnJmMjpmLi4uOgoJLmYwcjptLm0uLjoKCS5mbnI6Zi4uLjoKCS5mMXI6Zi4uLjoKCS5mbnI6Zi4uLjoKCS5mMnI6Zi4uLjoKLS0tCm5hbWU6IHN0cmFzc2lnbi1mbmMtbm9uZQpkZXNjcmlwdGlvbjoKCUNoZWNrIGxvY2FsaXR5IG9mIHN0cmluZyBhY2Nlc3MgaW5zaWRlIGEgZnVuY3Rpb24Kc3RkaW46CglmdW5jdGlvbiBmbiB7CgkJeCs9ZgoJCWVjaG8gIi5mbjokeDoiCgl9CglmdW5jdGlvbiByZm4gewoJCXk9CgkJeSs9ZgoJCWVjaG8gIi5yZm46JHk6IgoJfQoJeD1tCgl5PW0KCWVjaG8gIi5mMDokeDoiCglmbgoJZWNobyAiLmYxOiR4OiIKCWZuCgllY2hvICIuZjI6JHg6IgoJZWNobyAiLnJmMDokeToiCglyZm4KCWVjaG8gIi5yZjE6JHk6IgoJcmZuCgllY2hvICIucmYyOiR5OiIKZXhwZWN0ZWQtc3Rkb3V0OgoJLmYwOm06CgkuZm46bWY6CgkuZjE6bWY6CgkuZm46bWZmOgoJLmYyOm1mZjoKCS5yZjA6bToKCS5yZm46ZjoKCS5yZjE6ZjoKCS5yZm46ZjoKCS5yZjI6ZjoKLS0tCm5hbWU6IHN0cmFzc2lnbi1mbmMtbG9jYWwKZGVzY3JpcHRpb246CglDaGVjayBsb2NhbGl0eSBvZiBzdHJpbmcgYWNjZXNzIGluc2lkZSBhIGZ1bmN0aW9uCgl3aXRoIHRoZSBiYXNoL21rc2gva3NoOTMgbG9jYWwvdHlwZXNldCBrZXl3b3JkCgkobm90ZToga3NoOTMgaGFzIG5vIGxvY2FsOyB0eXBlc2V0IHdvcmtzIG9ubHkgaW4gRktTSCkKc3RkaW46CglmdW5jdGlvbiBmbiB7CgkJdHlwZXNldCB4CgkJeCs9ZgoJCWVjaG8gIi5mbjokeDoiCgl9CglmdW5jdGlvbiByZm4gewoJCXk9CgkJdHlwZXNldCB5CgkJeSs9ZgoJCWVjaG8gIi5yZm46JHk6IgoJfQoJZnVuY3Rpb24gZm5yIHsKCQl0eXBlc2V0IHoKCQl6PQoJCXorPWYKCQllY2hvICIuZm5yOiR6OiIKCX0KCXg9bQoJeT1tCgl6PW0KCWVjaG8gIi5mMDokeDoiCglmbgoJZWNobyAiLmYxOiR4OiIKCWZuCgllY2hvICIuZjI6JHg6IgoJZWNobyAiLnJmMDokeToiCglyZm4KCWVjaG8gIi5yZjE6JHk6IgoJcmZuCgllY2hvICIucmYyOiR5OiIKCWVjaG8gIi5mMHI6JHo6IgoJZm5yCgllY2hvICIuZjFyOiR6OiIKCWZucgoJZWNobyAiLmYycjokejoiCmV4cGVjdGVkLXN0ZG91dDoKCS5mMDptOgoJLmZuOmY6CgkuZjE6bToKCS5mbjpmOgoJLmYyOm06CgkucmYwOm06CgkucmZuOmY6CgkucmYxOjoKCS5yZm46ZjoKCS5yZjI6OgoJLmYwcjptOgoJLmZucjpmOgoJLmYxcjptOgoJLmZucjpmOgoJLmYycjptOgotLS0KbmFtZTogc3RyYXNzaWduLWZuYy1nbG9iYWwKZGVzY3JpcHRpb246CglDaGVjayBsb2NhbGl0eSBvZiBzdHJpbmcgYWNjZXNzIGluc2lkZSBhIGZ1bmN0aW9uCgl3aXRoIHRoZSBiYXNoNC9ta3NoL3lhc2gvenNoIHR5cGVzZXQgLWcga2V5d29yZApzdGRpbjoKCWZ1bmN0aW9uIGZuIHsKCQl0eXBlc2V0IC1nIHgKCQl4Kz1mCgkJZWNobyAiLmZuOiR4OiIKCX0KCWZ1bmN0aW9uIHJmbiB7CgkJeT0KCQl0eXBlc2V0IC1nIHkKCQl5Kz1mCgkJZWNobyAiLnJmbjokeToiCgl9CglmdW5jdGlvbiBmbnIgewoJCXR5cGVzZXQgLWcgegoJCXo9CgkJeis9ZgoJCWVjaG8gIi5mbnI6JHo6IgoJfQoJeD1tCgl5PW0KCXo9bQoJZWNobyAiLmYwOiR4OiIKCWZuCgllY2hvICIuZjE6JHg6IgoJZm4KCWVjaG8gIi5mMjokeDoiCgllY2hvICIucmYwOiR5OiIKCXJmbgoJZWNobyAiLnJmMTokeToiCglyZm4KCWVjaG8gIi5yZjI6JHk6IgoJZWNobyAiLmYwcjokejoiCglmbnIKCWVjaG8gIi5mMXI6JHo6IgoJZm5yCgllY2hvICIuZjJyOiR6OiIKZXhwZWN0ZWQtc3Rkb3V0OgoJLmYwOm06CgkuZm46bWY6CgkuZjE6bWY6CgkuZm46bWZmOgoJLmYyOm1mZjoKCS5yZjA6bToKCS5yZm46ZjoKCS5yZjE6ZjoKCS5yZm46ZjoKCS5yZjI6ZjoKCS5mMHI6bToKCS5mbnI6ZjoKCS5mMXI6ZjoKCS5mbnI6ZjoKCS5mMnI6ZjoKLS0tCm5hbWU6IHVuc2V0LWZuYy1sb2NhbC1rc2gKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IOKAnHVuc2V04oCdIHJlbW92ZXMgYSBwcmV2aW91cyDigJxsb2NhbOKAnQoJKGtzaDkzIHN5bnRheCBjb21wYXRpYmxlIHZlcnNpb24pOyBhcHBhcmVudGx5LAoJdGhlcmUgYXJlIHNoZWxscyB3aGljaCBmYWlsIHRoaXM/CnN0ZGluOgoJZnVuY3Rpb24gZiB7CgkJZWNobyBmMDogJHgKCQl0eXBlc2V0IHgKCQllY2hvIGYxOiAkeAoJCXg9ZmEKCQllY2hvIGYyOiAkeAoJCXVuc2V0IHgKCQllY2hvIGYzOiAkeAoJCXg9ZmIKCQllY2hvIGY0OiAkeAoJfQoJeD1vCgllY2hvIGJlZm9yZTogJHgKCWYKCWVjaG8gYWZ0ZXI6ICR4CmV4cGVjdGVkLXN0ZG91dDoKCWJlZm9yZTogbwoJZjA6IG8KCWYxOgoJZjI6IGZhCglmMzogbwoJZjQ6IGZiCglhZnRlcjogZmIKLS0tCm5hbWU6IHVuc2V0LWZuYy1sb2NhbC1zaApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQg4oCcdW5zZXTigJ0gcmVtb3ZlcyBhIHByZXZpb3VzIOKAnGxvY2Fs4oCdCgkoRGViaWFuIFBvbGljeSDCpzEwLjQgc2ggdmVyc2lvbik7IGFwcGFyZW50bHksCgl0aGVyZSBhcmUgc2hlbGxzIHdoaWNoIGZhaWwgdGhpcz8Kc3RkaW46CglmKCkgewoJCWVjaG8gZjA6ICR4CgkJbG9jYWwgeAoJCWVjaG8gZjE6ICR4CgkJeD1mYQoJCWVjaG8gZjI6ICR4CgkJdW5zZXQgeAoJCWVjaG8gZjM6ICR4CgkJeD1mYgoJCWVjaG8gZjQ6ICR4Cgl9Cgl4PW8KCWVjaG8gYmVmb3JlOiAkeAoJZgoJZWNobyBhZnRlcjogJHgKZXhwZWN0ZWQtc3Rkb3V0OgoJYmVmb3JlOiBvCglmMDogbwoJZjE6CglmMjogZmEKCWYzOiBvCglmNDogZmIKCWFmdGVyOiBmYgotLS0KbmFtZTogdmFyZXhwYW5kLXN1YnN0ci0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYmFzaC1zdHlsZSBzdWJzdHJpbmcgZXhwYW5zaW9uIHdvcmtzCgl3aGVuIHVzaW5nIHBvc2l0aXZlIG51bWVyaWNzCnN0ZGluOgoJeD1hYmNkZWZnaGkKCXR5cGVzZXQgLWkgeT0xMjM0NTY3ODkKCXR5cGVzZXQgLWkgMTYgej0xMjM0NTY3ODkJIyAxNiM3NWJjZDE1CgllY2hvIGEgdCR7eDoyOjJ9ICR7eToyOjN9ICR7ejoyOjN9IGEKCWVjaG8gYiAke3g6OjN9ICR7eTo6M30gJHt6OjozfSBiCgllY2hvIGMgJHt4OjI6fSAke3k6Mjp9ICR7ejoyOn0gYwoJZWNobyBkICR7eDoyfSAke3k6Mn0gJHt6OjJ9IGQKCWVjaG8gZSAke3g6Mjo2fSAke3k6Mjo2fSAke3o6Mjo3fSBlCgllY2hvIGYgJHt4OjI6N30gJHt5OjI6N30gJHt6OjI6OH0gZgoJZWNobyBnICR7eDoyOjh9ICR7eToyOjh9ICR7ejoyOjl9IGcKZXhwZWN0ZWQtc3Rkb3V0OgoJYSB0Y2QgMzQ1ICM3NSBhCgliIGFiYyAxMjMgMTYjIGIKCWMgYwoJZCBjZGVmZ2hpIDM0NTY3ODkgIzc1YmNkMTUgZAoJZSBjZGVmZ2ggMzQ1Njc4ICM3NWJjZDEgZQoJZiBjZGVmZ2hpIDM0NTY3ODkgIzc1YmNkMTUgZgoJZyBjZGVmZ2hpIDM0NTY3ODkgIzc1YmNkMTUgZwotLS0KbmFtZTogdmFyZXhwYW5kLXN1YnN0ci0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYmFzaC1zdHlsZSBzdWJzdHJpbmcgZXhwYW5zaW9uIHdvcmtzCgl3aGVuIHVzaW5nIG5lZ2F0aXZlIG51bWVyaWNzIG9yIGV4cHJlc3Npb25zCnN0ZGluOgoJeD1hYmNkZWZnaGkKCXR5cGVzZXQgLWkgeT0xMjM0NTY3ODkKCXR5cGVzZXQgLWkgMTYgej0xMjM0NTY3ODkJIyAxNiM3NWJjZDE1CgluPTIKCWVjaG8gYSAke3g6JG46M30gJHt5OiRuOjN9ICR7ejokbjozfSBhCgllY2hvIGIgJHt4OihuKTozfSAke3k6KG4pOjN9ICR7ejoobik6M30gYgoJZWNobyBjICR7eDooLTIpOjF9ICR7eTooLTIpOjF9ICR7ejooLTIpOjF9IGMKCWVjaG8gZCB0JHt4OiBuOjJ9ICR7eTogbjozfSAke3o6IG46M30gZApleHBlY3RlZC1zdGRvdXQ6CglhIGNkZSAzNDUgIzc1IGEKCWIgY2RlIDM0NSAjNzUgYgoJYyBoIDggMSBjCglkIHRjZCAzNDUgIzc1IGQKLS0tCm5hbWU6IHZhcmV4cGFuZC1zdWJzdHItMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc29tZSB0aGluZ3MgdGhhdCB3b3JrIGluIGJhc2ggZmFpbC4KCVRoaXMgaXMgYnkgZGVzaWduLiBPaCBhbmQgdmljZSB2ZXJzYSwgbm93YWRheXMuCnN0ZGluOgoJZXhwb3J0IHg9YWJjZGVmZ2hpIG49MgoJIiRfX3Byb2duYW1lIiAtYyAnZWNobyB2JHt4OihuKX14JwoJIiRfX3Byb2duYW1lIiAtYyAnZWNobyB3JHt4OiBufXgnCgkiJF9fcHJvZ25hbWUiIC1jICdlY2hvIHgke3g6bn14JwoJIiRfX3Byb2duYW1lIiAtYyAnZWNobyB5JHt4On14JwoJIiRfX3Byb2duYW1lIiAtYyAnZWNobyB6JHt4fXgnCgkjIG5leHQgZmFpbHMgb25seSBpbiBiYXNoCgkiJF9fcHJvZ25hbWUiIC1jICd4PWFiY2RlZjt5PTEyMztlY2hvICR7eDoke3k6MjoxfToyfScgPi9kZXYvbnVsbCAyPiYxOyBlY2hvICQ/CmV4cGVjdGVkLXN0ZG91dDoKCXZjZGVmZ2hpeAoJd2NkZWZnaGl4Cgl6YWJjZGVmZ2hpeAoJMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS94Om4uKmJhZCBzdWJzdGl0dXRpb24uKlxuLipiYWQgc3Vic3RpdHV0aW9uLwotLS0KbmFtZTogdmFyZXhwYW5kLXN1YnN0ci00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgY29ybmVyIGNhc2VzIGZvciBzdWJzdHJpbmcgZXhwYW5zaW9uCnN0ZGluOgoJeD1hYmNkZWZnaGkKCWludGVnZXIgeT0yCgllY2hvIGEgJHt4Oih5ID09IDEgPyAyIDogMyk6NH0gYQpleHBlY3RlZC1zdGRvdXQ6CglhIGRlZmcgYQotLS0KbmFtZTogdmFyZXhwYW5kLXN1YnN0ci01QQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc3Vic3RyaW5nIGV4cGFuc2lvbnMgd29yayBvbiBjaGFyYWN0ZXJzCnN0ZGluOgoJc2V0ICtVCgl4PW3DpGgKCWVjaG8gYSAke3g6OjF9ICR7eDogLTF9IGEKCWVjaG8gYiAke3g6OjN9ICR7eDogLTN9IGIKCWVjaG8gYyAke3g6MToyfSAke3g6IC0zOjJ9IGMKCWVjaG8gZCAkeyN4fSBkCmV4cGVjdGVkLXN0ZG91dDoKCWEgbSBoIGEKCWIgbcOkIMOkaCBiCgljIMOkIMOkIGMKCWQgNCBkCi0tLQpuYW1lOiB2YXJleHBhbmQtc3Vic3RyLTVXCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzdWJzdHJpbmcgZXhwYW5zaW9ucyB3b3JrIG9uIGNoYXJhY3RlcnMKc3RkaW46CglzZXQgLVUKCXg9bcOkaAoJZWNobyBhICR7eDo6MX0gJHt4OiAtMX0gYQoJZWNobyBiICR7eDo6Mn0gJHt4OiAtMn0gYgoJZWNobyBjICR7eDoxOjF9ICR7eDogLTI6MX0gYwoJZWNobyBkICR7I3h9IGQKZXhwZWN0ZWQtc3Rkb3V0OgoJYSBtIGggYQoJYiBtw6Qgw6RoIGIKCWMgw6Qgw6QgYwoJZCAzIGQKLS0tCm5hbWU6IHZhcmV4cGFuZC1zdWJzdHItNgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc3RyaW5nIHN1YnN0aXR1dGlvbiB3b3JrcyBjb3JyZWN0bHkKc3RkaW46Cglmb289MQoJYmFyPTIKCWJhej1xd2VydHl1aW9wCgllY2hvIGEgJHtiYXo6IGZvbzogYmFyfQoJZWNobyBiICR7YmF6OiBmb286ICRiYXJ9CgllY2hvIGMgJHtiYXo6ICRmb286IGJhcn0KCWVjaG8gZCAke2JhejogJGZvbzogJGJhcn0KZXhwZWN0ZWQtc3Rkb3V0OgoJYSB3ZQoJYiB3ZQoJYyB3ZQoJZCB3ZQotLS0KbmFtZTogdmFyZXhwYW5kLXNwZWNpYWwtaGFzaApkZXNjcmlwdGlvbjoKCUNoZWNrIHNwZWNpYWwgJHt2YXJAeH0gZXhwYW5zaW9uIGZvciB4PWhhc2gKY2F0ZWdvcnk6ICFzaGVsbDplYmNkaWMteWVzCnN0ZGluOgoJdHlwZXNldCAtaTggZm9vPTEwCgliYXI9YmF6Cgl1bnNldCBiYXoKCXByaW50ICR7Zm9vQCN9ICR7YmFyQCN9ICR7YmF6QCN9IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJOUIxNUZCRkIgQ0ZCREQzMkIgMDAwMDAwMDAgLgotLS0KbmFtZTogdmFyZXhwYW5kLXNwZWNpYWwtaGFzaC1lYmNkaWMKZGVzY3JpcHRpb246CglDaGVjayBzcGVjaWFsICR7dmFyQHh9IGV4cGFuc2lvbiBmb3IgeD1oYXNoCmNhdGVnb3J5OiAhc2hlbGw6ZWJjZGljLW5vCnN0ZGluOgoJdHlwZXNldCAtaTggZm9vPTEwCgliYXI9YmF6Cgl1bnNldCBiYXoKCXByaW50ICR7Zm9vQCN9ICR7YmFyQCN9ICR7YmF6QCN9IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMDE2QUUzM0QgOTc2OUM0QUYgMDAwMDAwMDAgLgotLS0KbmFtZTogdmFyZXhwYW5kLXNwZWNpYWwtcXVvdGUKZGVzY3JpcHRpb246CglDaGVjayBzcGVjaWFsICR7dmFyQFF9IGV4cGFuc2lvbiBmb3IgcXVvdGVkIHN0cmluZ3MKY2F0ZWdvcnk6ICFzaGVsbDpmYXV4LWViY2RpYwpzdGRpbjoKCXNldCArVQoJaT14CglqPWFcIGIKCWs9JCdjCglkXHhBMCcnZeKCrGYnCglwcmludCAtciAtLSAiPGk9JGkgaj0kaiBrPSRrPiIKCXM9InU9JHtpQFF9IHY9JHtqQFF9IHc9JHtrQFF9IgoJcHJpbnQgLXIgLS0gInM9XCIkc1wiIgoJZXZhbCAiJHMiCgl0eXBlc2V0IC1wIHUgdiB3CmV4cGVjdGVkLXN0ZG91dDoKCTxpPXggaj1hIGIgaz1jCglkoGXigqxmPgoJcz0idT14IHY9J2EgYicgdz0kJ2NcbmRcMjQwZVx1MjBBQ2YnIgoJdHlwZXNldCB1PXgKCXR5cGVzZXQgdj0nYSBiJwoJdHlwZXNldCB3PSQnY1xuZFwyNDBlXHUyMEFDZicKLS0tCm5hbWU6IHZhcmV4cGFuZC1zcGVjaWFsLXF1b3RlLWZhdXgtRUJDRElDCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3BlY2lhbCAke3ZhckBRfSBleHBhbnNpb24gZm9yIHF1b3RlZCBzdHJpbmdzCmNhdGVnb3J5OiBzaGVsbDpmYXV4LWViY2RpYwpzdGRpbjoKCXNldCArVQoJaT14CglqPWFcIGIKCWs9JCdjCglkXHhBMCcnZeKCrGYnCglwcmludCAtciAtLSAiPGk9JGkgaj0kaiBrPSRrPiIKCXM9InU9JHtpQFF9IHY9JHtqQFF9IHc9JHtrQFF9IgoJcHJpbnQgLXIgLS0gInM9XCIkc1wiIgoJZXZhbCAiJHMiCgl0eXBlc2V0IC1wIHUgdiB3CmV4cGVjdGVkLXN0ZG91dDoKCTxpPXggaj1hIGIgaz1jCglkoGXigqxmPgoJcz0idT14IHY9J2EgYicgdz0kJ2NcbmSgZVx1MjBBQ2YnIgoJdHlwZXNldCB1PXgKCXR5cGVzZXQgdj0nYSBiJwoJdHlwZXNldCB3PSQnY1xuZKBlXHUyMEFDZicKLS0tCm5hbWU6IHZhcmV4cGFuZC1udWxsLTEKZGVzY3JpcHRpb246CglFbnN1cmUgZW1wdHkgc3RyaW5ncyBleHBhbmQgZW1wdGlseQpzdGRpbjoKCXByaW50IHMgJHthfSAuICR7Yn0gUwoJcHJpbnQgdCAke2EjP30gLiAke2IlP30gVAoJcHJpbnQgciAke2E9fSAuICR7Yi9jL2R9IFIKCXByaW50IHEKCXByaW50IHMgIiR7YX0iIC4gIiR7Yn0iIFMKCXByaW50IHQgIiR7YSM/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+eAoJcmVhZCAtYSB5IDx4CglzZXQgLVUKCXR5cGVzZXQgLVV1aTE2IHkKCXByaW50ICR7eVsqXX0gLgpleHBlY3RlZC1zdGRvdXQ6CgkxNiM4MSAxNiMwIDE2IzgyIDE2I0ZEIDE2I0E5IC4KLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtNVcKZGVzY3JpcHRpb246CglDaGVjayB0byBzZWUgdGhhdCB3ZeKAmXJlIE5VTCBhbmQgVUNTIHNhZmUKc3RkaW46CglzZXQgLVUKCXByaW50ICdhXDBi4oKsYycgPngKCXJlYWQgLWEgeSA8eAoJc2V0ICtVCgl0eXBlc2V0IC1VdWkxNiB5CglwcmludCAke3lbKl19IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMTYjNjEgMTYjMCAxNiM2MiAxNiMyMEFDIDE2IzYzIC4KLS0tCm5hbWU6IHVsaW1pdC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB1bGltaXQgYXMgdXNlZCBpbiBkb3QubWtzaCB3b3JrcyBvciBpcyBzdHViYmVkCnN0ZGluOgoJdWxpbWl0IC1jIDAKLS0tCm5hbWU6IHVsaW1pdC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgd2UgY2FuIHVzZSBhIHNwZWNpZmljIHN5bnRheCBpZGlvbSBmb3IgdWxpbWl0CglYWFggSGFpa3Ugd29ya3MsIGJ1dCBvbmx5IGZvciAtbiBhbmQgLVYKY2F0ZWdvcnk6ICFvczpoYWlrdSwhb3M6c3lsbGFibGUKc3RkaW46CglpZiAhIHg9JCh1bGltaXQgLWQpIHx8IFtbICR4ID0gdW5rbm93biBdXTsgdGhlbgoJCSNlY2hvIGV4cGVjdGVkIHRvIGZhaWwgb24gdGhpcyBPUwoJCWVjaG8gb2theQoJZWxzZQoJCXVsaW1pdCAtZFMgJHggJiYgZWNobyBva2F5CglmaQpleHBlY3RlZC1zdGRvdXQ6Cglva2F5Ci0tLQpuYW1lOiByZWRpci0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBvZiB0aGUgbW9zdCBiYXNpYyBpbnZhcmlhbnRzIG9mIEkvTyByZWRpcmVjdGlvbgpzdGRpbjoKCWk9MAoJZnVuY3Rpb24gZCB7CgkJcHJpbnQgbyRpLgoJCXByaW50IC11MiBlJCgoaSsrKSkuCgl9CglkID5hIDI+YgoJZWNobyA9MT0KCWNhdCBhCgllY2hvID0yPQoJY2F0IGIKCWVjaG8gPTM9CglkIDI+JjEgPmMKCWVjaG8gPTQ9CgljYXQgYwoJZWNobyA9NT0KZXhwZWN0ZWQtc3Rkb3V0OgoJPTE9CglvMC4KCT0yPQoJZTAuCgk9Mz0KCWUxLgoJPTQ9CglvMS4KCT01PQotLS0KbmFtZTogYmFzaGlvcC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgR05VIGJhc2gtbGlrZSBJL08gcmVkaXJlY3Rpb24gd29ya3MKCVBhcnQgMTogdGhpcyBpcyBhbHNvIHN1cHBvcnRlZCBieSBHTlUgYmFzaApzdGRpbjoKCWV4ZWMgMz4mMQoJZnVuY3Rpb24gdGhyZWVvdXQgewoJCWVjaG8gcmFzCgkJZWNobyBkd2EgPiYyCgkJZWNobyB0cmkgPiYzCgl9Cgl0aHJlZW91dCAmPmZvbwoJZWNobyA9PT0KCWNhdCBmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJdHJpCgk9PT0KCXJhcwoJZHdhCi0tLQpuYW1lOiBiYXNoaW9wLTJhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgR05VIGJhc2gtbGlrZSBJL08gcmVkaXJlY3Rpb24gd29ya3MKCVBhcnQgMjogdGhpcyBpcyAqbm90KiBzdXBwb3J0ZWQgYnkgR05VIGJhc2gKc3RkaW46CglleGVjIDM+JjEKCWZ1bmN0aW9uIHRocmVlb3V0IHsKCQllY2hvIHJhcwoJCWVjaG8gZHdhID4mMgoJCWVjaG8gdHJpID4mMwoJfQoJdGhyZWVvdXQgMyY+Zm9vCgllY2hvID09PQoJY2F0IGZvbwpleHBlY3RlZC1zdGRvdXQ6CglyYXMKCT09PQoJZHdhCgl0cmkKLS0tCm5hbWU6IGJhc2hpb3AtMmIKZGVzY3JpcHRpb246CglDaGVjayBpZiBHTlUgYmFzaC1saWtlIEkvTyByZWRpcmVjdGlvbiB3b3JrcwoJUGFydCAyOiB0aGlzIGlzICpub3QqIHN1cHBvcnRlZCBieSBHTlUgYmFzaApzdGRpbjoKCWV4ZWMgMz4mMQoJZnVuY3Rpb24gdGhyZWVvdXQgewoJCWVjaG8gcmFzCgkJZWNobyBkd2EgPiYyCgkJZWNobyB0cmkgPiYzCgl9Cgl0aHJlZW91dCAzPmZvbyAmPiYzCgllY2hvID09PQoJY2F0IGZvbwpleHBlY3RlZC1zdGRvdXQ6Cgk9PT0KCXJhcwoJZHdhCgl0cmkKLS0tCm5hbWU6IGJhc2hpb3AtMmMKZGVzY3JpcHRpb246CglDaGVjayBpZiBHTlUgYmFzaC1saWtlIEkvTyByZWRpcmVjdGlvbiB3b3JrcwoJUGFydCAyOiB0aGlzIGlzIHN1cHBvcnRlZCBieSBHTlUgYmFzaCA0IG9ubHkKc3RkaW46CgllY2hvIG1pciA+Zm9vCglzZXQgLW8gbm9jbG9iYmVyCglleGVjIDM+JjEKCWZ1bmN0aW9uIHRocmVlb3V0IHsKCQllY2hvIHJhcwoJCWVjaG8gZHdhID4mMgoJCWVjaG8gdHJpID4mMwoJfQoJdGhyZWVvdXQgJj4+Zm9vCgllY2hvID09PQoJY2F0IGZvbwpleHBlY3RlZC1zdGRvdXQ6Cgl0cmkKCT09PQoJbWlyCglyYXMKCWR3YQotLS0KbmFtZTogYmFzaGlvcC0zYQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEdOVSBiYXNoLWxpa2UgSS9PIHJlZGlyZWN0aW9uIGZhaWxzIGNvcnJlY3RseQoJUGFydCAxOiB0aGlzIGlzIGFsc28gc3VwcG9ydGVkIGJ5IEdOVSBiYXNoCnN0ZGluOgoJZWNobyBtaXIgPmZvbwoJc2V0IC1vIG5vY2xvYmJlcgoJZXhlYyAzPiYxCglmdW5jdGlvbiB0aHJlZW91dCB7CgkJZWNobyByYXMKCQllY2hvIGR3YSA+JjIKCQllY2hvIHRyaSA+JjMKCX0KCXRocmVlb3V0ICY+Zm9vCgllY2hvID09PQoJY2F0IGZvbwpleHBlY3RlZC1zdGRvdXQ6Cgk9PT0KCW1pcgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjogLy4qOiBjYW4ndCAoY3JlYXRlfG92ZXJ3cml0ZSkgLiovCi0tLQpuYW1lOiBiYXNoaW9wLTNiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgR05VIGJhc2gtbGlrZSBJL08gcmVkaXJlY3Rpb24gZmFpbHMgY29ycmVjdGx5CglQYXJ0IDI6IHRoaXMgaXMgKm5vdCogc3VwcG9ydGVkIGJ5IEdOVSBiYXNoCnN0ZGluOgoJZWNobyBtaXIgPmZvbwoJc2V0IC1vIG5vY2xvYmJlcgoJZXhlYyAzPiYxCglmdW5jdGlvbiB0aHJlZW91dCB7CgkJZWNobyByYXMKCQllY2hvIGR3YSA+JjIKCQllY2hvIHRyaSA+JjMKCX0KCXRocmVlb3V0ICY+fGZvbwoJZWNobyA9PT0KCWNhdCBmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJdHJpCgk9PT0KCXJhcwoJZHdhCi0tLQpuYW1lOiBiYXNoaW9wLTQKZGVzY3JpcHRpb246CglDaGVjayBpZiBHTlUgYmFzaC1saWtlIEkvTyByZWRpcmVjdGlvbiB3b3JrcwoJUGFydCA0OiB0aGlzIGlzIGFsc28gc3VwcG9ydGVkIGJ5IEdOVSBiYXNoLAoJYnV0IGZhaWxlZCBpbiBzb21lIG1rc2ggdmVyc2lvbnMKc3RkaW46CglleGVjIDM+JjEKCWZ1bmN0aW9uIHRocmVlb3V0IHsKCQllY2hvIHJhcwoJCWVjaG8gZHdhID4mMgoJCWVjaG8gdHJpID4mMwoJfQoJZnVuY3Rpb24gYmx1YmIgewoJCVtbIC1lIGJhciBdXSAmJiB0aHJlZW91dCAiJGJmIiAmPmZvbwoJfQoJYmx1YmIKCWVjaG8gLW4gPmJhcgoJYmx1YmIKCWVjaG8gPT09CgljYXQgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCXRyaQoJPT09CglyYXMKCWR3YQotLS0KbmFtZTogYmFzaGlvcC01CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgR05VIGJhc2gtbGlrZSBJL08gcmVkaXJlY3Rpb24gaXMgb25seSBzdXBwb3J0ZWQKCWluICFQT1NJWCAhc2ggbW9kZSBhcyBpdCBicmVha3MgZXhpc3Rpbmcgc2NyaXB0cycgc3ludGF4CnN0ZGluOgoJOj54OyBlY2hvIDEgIiQoIiRfX3Byb2duYW1lIiAtYyAnZWNobyBmb28+L2Rldi9udWxsJj54IGVjaG8gYmFyJykiID0gIiQoPHgpIiAuCgk6Png7IGVjaG8gMiAiJCgiJF9fcHJvZ25hbWUiIC1vIHBvc2l4IC1jICdlY2hvIGZvbz4vZGV2L251bGwmPnggZWNobyBiYXInKSIgPSAiJCg8eCkiIC4KCTo+eDsgZWNobyAzICIkKCIkX19wcm9nbmFtZSIgLW8gc2ggLWMgJ2VjaG8gZm9vPi9kZXYvbnVsbCY+eCBlY2hvIGJhcicpIiA9ICIkKDx4KSIgLgpleHBlY3RlZC1zdGRvdXQ6CgkxICA9IGZvbyBlY2hvIGJhciAuCgkyICA9IGJhciAuCgkzICA9IGJhciAuCi0tLQpuYW1lOiBva3NoLWV2YWwKZGVzY3JpcHRpb246CglDaGVjayBleHBhbnNpb25zLgpzdGRpbjoKCWE9Cglmb3IgbiBpbiAke2EjKj19OyBkbyBlY2hvIDFodSAke259IC47IGRvbmUKCWZvciBuIGluICIke2EjKj19IjsgZG8gZWNobyAxaHEgJHtufSAuOyBkb25lCglmb3IgbiBpbiAke2EjIyo9fTsgZG8gZWNobyAyaHUgJHtufSAuOyBkb25lCglmb3IgbiBpbiAiJHthIyMqPX0iOyBkbyBlY2hvIDJocSAke259IC47IGRvbmUKCWZvciBuIGluICR7YSU9Kn07IGRvIGVjaG8gMXB1ICR7bn0gLjsgZG9uZQoJZm9yIG4gaW4gIiR7YSU9Kn0iOyBkbyBlY2hvIDFwcSAke259IC47IGRvbmUKCWZvciBuIGluICR7YSUlPSp9OyBkbyBlY2hvIDJwdSAke259IC47IGRvbmUKCWZvciBuIGluICIke2ElJT0qfSI7IGRvIGVjaG8gMnBxICR7bn0gLjsgZG9uZQpleHBlY3RlZC1zdGRvdXQ6CgkxaHEgLgoJMmhxIC4KCTFwcSAuCgkycHEgLgotLS0KbmFtZTogb2tzaC1hbmQtbGlzdC1lcnJvci0xCmRlc2NyaXB0aW9uOgoJVGVzdCBleGl0IHN0YXR1cyBvZiByaWdodG1vc3QgZWxlbWVudCBpbiAyIGVsZW1lbnQgJiYgbGlzdCBpbiAtZSBtb2RlCnN0ZGluOgoJdHJ1ZSAmJiBmYWxzZQoJZWNobyAic2hvdWxkIG5vdCBwcmludCIKYXJndW1lbnRzOiAhLWUhCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMAotLS0KbmFtZTogb2tzaC1hbmQtbGlzdC1lcnJvci0yCmRlc2NyaXB0aW9uOgoJVGVzdCBleGl0IHN0YXR1cyBvZiByaWdodG1vc3QgZWxlbWVudCBpbiAzIGVsZW1lbnQgJiYgbGlzdCBpbiAtZSBtb2RlCnN0ZGluOgoJdHJ1ZSAmJiB0cnVlICYmIGZhbHNlCgllY2hvICJzaG91bGQgbm90IHByaW50Igphcmd1bWVudHM6ICEtZSEKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCi0tLQpuYW1lOiBva3NoLW9yLWxpc3QtZXJyb3ItMQpkZXNjcmlwdGlvbjoKCVRlc3QgZXhpdCBzdGF0dXMgb2YgfHwgbGlzdCBpbiAtZSBtb2RlCnN0ZGluOgoJZmFsc2UgfHwgZmFsc2UKCWVjaG8gInNob3VsZCBub3QgcHJpbnQiCmFyZ3VtZW50czogIS1lIQpleHBlY3RlZC1leGl0OiBlICE9IDAKLS0tCm5hbWU6IG9rc2gtbG9uZ2xpbmUtY3Jhc2gKZGVzY3JpcHRpb246CglUaGlzIHVzZWQgdG8gY2F1c2UgYSBjb3JlIGR1bXAKc3RkaW46Cgl1bGltaXQgLWMgMAoJZGVwbGlicz0iLWx6IC1scG5nIC91c3IvbG9jYWwvbGliL2xpYmpwZWcubGEgLWx0aWZmIC1sbSAtbFgxMSAtbFhleHQgL3Vzci9sb2NhbC9saWIvbGliaWNvbnYubGEgLUwvdXNyL2xvY2FsL2xpYiAtTC91c3IvcG9ydHMvZGV2ZWwvZ2V0dGV4dC93LWdldHRleHQtMC4xMC40MC9nZXR0ZXh0LTAuMTAuNDAvaW50bC8ubGlicyAvdXNyL2xvY2FsL2xpYi9saWJpbnRsLmxhIC91c3IvbG9jYWwvbGliL2xpYmdsaWIubGEgL3Vzci9sb2NhbC9saWIvbGliZ21vZHVsZS5sYSAtbGludGwgLWxtIC1sWDExIC1sWGV4dCAtTC91c3IvWDExUjYvbGliIC1sZ2xpYiAtbGdtb2R1bGUgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnZGsubGEgLWxpbnRsIC1sbSAtbFgxMSAtbFhleHQgLUwvdXNyL1gxMVI2L2xpYiAtbGdsaWIgLWxnbW9kdWxlIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ3RrLmxhIC1sdGlmZiAtbGpwZWcgLWx6IC1scG5nIC1sbSAtbFgxMSAtbFhleHQgLWxpbnRsIC1sZ2xpYiAtbGdtb2R1bGUgLWxnZGsgLWxndGsgLUwvdXNyL1gxMVI2L2xpYiAtbGdsaWIgLWxnbW9kdWxlIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ2RrX3BpeGJ1Zi5sYSAtbHogLWxwbmcgL3Vzci9sb2NhbC9saWIvbGliaWNvbnYubGEgLUwvdXNyL2xvY2FsL2xpYiAtTC91c3IvcG9ydHMvZGV2ZWwvZ2V0dGV4dC93LWdldHRleHQtMC4xMC40MC9nZXR0ZXh0LTAuMTAuNDAvaW50bC8ubGlicyAvdXNyL2xvY2FsL2xpYi9saWJpbnRsLmxhIC91c3IvbG9jYWwvbGliL2xpYmdsaWIubGEgLWxtIC1sbSAvdXNyL2xvY2FsL2xpYi9saWJhdWRpb2ZpbGUubGEgLWxtIC1sbSAtbGF1ZGlvZmlsZSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmVzZC5sYSAtbG0gLWx6IC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ25vbWVzdXBwb3J0LmxhIC1sbSAtbHogLWxtIC1sZ2xpYiAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdub21lLmxhIC1sWDExIC1sWGV4dCAvdXNyL2xvY2FsL2xpYi9saWJpY29udi5sYSAtTC91c3IvbG9jYWwvbGliIC1ML3Vzci9wb3J0cy9kZXZlbC9nZXR0ZXh0L3ctZ2V0dGV4dC0wLjEwLjQwL2dldHRleHQtMC4xMC40MC9pbnRsLy5saWJzIC91c3IvbG9jYWwvbGliL2xpYmludGwubGEgL3Vzci9sb2NhbC9saWIvbGliZ21vZHVsZS5sYSAtbGludGwgLWxtIC1sWDExIC1sWGV4dCAtTC91c3IvWDExUjYvbGliIC1sZ2xpYiAtbGdtb2R1bGUgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnZGsubGEgLWxpbnRsIC1sbSAtbFgxMSAtbFhleHQgLUwvdXNyL1gxMVI2L2xpYiAtbGdsaWIgLWxnbW9kdWxlIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ3RrLmxhIC1sSUNFIC1sU00gLWx6IC1scG5nIC91c3IvbG9jYWwvbGliL2xpYnVuZ2lmLmxhIC91c3IvbG9jYWwvbGliL2xpYmpwZWcubGEgLWx0aWZmIC1sbSAtbHogLWxwbmcgL3Vzci9sb2NhbC9saWIvbGlidW5naWYubGEgLWx6IC91c3IvbG9jYWwvbGliL2xpYmpwZWcubGEgLWx0aWZmIC1ML3Vzci9sb2NhbC9saWIgLUwvdXNyL1gxMVI2L2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnZGtfaW1saWIubGEgLWxtIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliYXJ0X2xncGwubGEgLWxtIC1seiAtbG0gLWxYMTEgLWxYZXh0IC1saW50bCAtbGdsaWIgLWxnbW9kdWxlIC1sZ2RrIC1sZ3RrIC1sSUNFIC1sU00gLWxtIC1sWDExIC1sWGV4dCAtbGludGwgLWxnbGliIC1sZ21vZHVsZSAtbGdkayAtbGd0ayAtTC91c3IvWDExUjYvbGliIC1sbSAtbHogLWxwbmcgLWx1bmdpZiAtbHogLWxqcGVnIC1sdGlmZiAtbGpwZWcgLWxnZGtfaW1saWIgLWxnbGliIC1sbSAtbGF1ZGlvZmlsZSAtbG0gLWxhdWRpb2ZpbGUgLWxlc2QgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnbm9tZXVpLmxhIC1seiAtbHogL3Vzci9sb2NhbC9saWIvbGlieG1sLmxhIC1seiAtbHogLWx6IC91c3IvbG9jYWwvbGliL2xpYnhtbC5sYSAtbG0gLWxYMTEgLWxYZXh0IC91c3IvbG9jYWwvbGliL2xpYmljb252LmxhIC1ML3Vzci9wb3J0cy9kZXZlbC9nZXR0ZXh0L3ctZ2V0dGV4dC0wLjEwLjQwL2dldHRleHQtMC4xMC40MC9pbnRsLy5saWJzIC91c3IvbG9jYWwvbGliL2xpYmludGwubGEgL3Vzci9sb2NhbC9saWIvbGliZ2xpYi5sYSAvdXNyL2xvY2FsL2xpYi9saWJnbW9kdWxlLmxhIC1saW50bCAtbGdsaWIgLWxnbW9kdWxlIC91c3IvbG9jYWwvbGliL2xpYmdkay5sYSAvdXNyL2xvY2FsL2xpYi9saWJndGsubGEgLUwvdXNyL1gxMVI2L2xpYiAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdsYWRlLmxhIC1seiAtbHogLWx6IC91c3IvbG9jYWwvbGliL2xpYnhtbC5sYSAvdXNyL2xvY2FsL2xpYi9saWJnbGliLmxhIC1sbSAtbG0gL3Vzci9sb2NhbC9saWIvbGliYXVkaW9maWxlLmxhIC1sbSAtbG0gLWxhdWRpb2ZpbGUgL3Vzci9sb2NhbC9saWIvbGliZXNkLmxhIC1sbSAtbHogL3Vzci9sb2NhbC9saWIvbGliZ25vbWVzdXBwb3J0LmxhIC1sbSAtbHogLWxtIC1sZ2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnbm9tZS5sYSAtbFgxMSAtbFhleHQgL3Vzci9sb2NhbC9saWIvbGliaWNvbnYubGEgLUwvdXNyL3BvcnRzL2RldmVsL2dldHRleHQvdy1nZXR0ZXh0LTAuMTAuNDAvZ2V0dGV4dC0wLjEwLjQwL2ludGwvLmxpYnMgL3Vzci9sb2NhbC9saWIvbGliaW50bC5sYSAvdXNyL2xvY2FsL2xpYi9saWJnbW9kdWxlLmxhIC1saW50bCAtbG0gLWxYMTEgLWxYZXh0IC1sZ2xpYiAtbGdtb2R1bGUgL3Vzci9sb2NhbC9saWIvbGliZ2RrLmxhIC1saW50bCAtbG0gLWxYMTEgLWxYZXh0IC1sZ2xpYiAtbGdtb2R1bGUgL3Vzci9sb2NhbC9saWIvbGliZ3RrLmxhIC1sSUNFIC1sU00gLWx6IC1scG5nIC91c3IvbG9jYWwvbGliL2xpYnVuZ2lmLmxhIC91c3IvbG9jYWwvbGliL2xpYmpwZWcubGEgLWx0aWZmIC1sbSAtbHogLWx6IC91c3IvbG9jYWwvbGliL2xpYmdka19pbWxpYi5sYSAvdXNyL2xvY2FsL2xpYi9saWJhcnRfbGdwbC5sYSAtbG0gLWx6IC1sbSAtbFgxMSAtbFhleHQgLWxpbnRsIC1sZ2xpYiAtbGdtb2R1bGUgLWxnZGsgLWxndGsgLWxtIC1sWDExIC1sWGV4dCAtbGludGwgLWxnbGliIC1sZ21vZHVsZSAtbGdkayAtbGd0ayAtbG0gLWx6IC1sdW5naWYgLWx6IC1sanBlZyAtbGpwZWcgLWxnZGtfaW1saWIgLWxnbGliIC1sbSAtbGF1ZGlvZmlsZSAtbG0gLWxhdWRpb2ZpbGUgLWxlc2QgL3Vzci9sb2NhbC9saWIvbGliZ25vbWV1aS5sYSAtTC91c3IvWDExUjYvbGliIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ2xhZGUtZ25vbWUubGEgL3Vzci9sb2NhbC9saWIvbGliZ2xpYi5sYSAtbG0gLWxtIC91c3IvbG9jYWwvbGliL2xpYmF1ZGlvZmlsZS5sYSAtbG0gLWxtIC1sYXVkaW9maWxlIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZXNkLmxhIC1sbSAtbHogLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnbm9tZXN1cHBvcnQubGEgLWxtIC1seiAtbG0gLWxnbGliIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ25vbWUubGEgLWxYMTEgLWxYZXh0IC91c3IvbG9jYWwvbGliL2xpYmljb252LmxhIC1ML3Vzci9sb2NhbC9saWIgLUwvdXNyL3BvcnRzL2RldmVsL2dldHRleHQvdy1nZXR0ZXh0LTAuMTAuNDAvZ2V0dGV4dC0wLjEwLjQwL2ludGwvLmxpYnMgL3Vzci9sb2NhbC9saWIvbGliaW50bC5sYSAvdXNyL2xvY2FsL2xpYi9saWJnbW9kdWxlLmxhIC1saW50bCAtbG0gLWxYMTEgLWxYZXh0IC1ML3Vzci9YMTFSNi9saWIgLWxnbGliIC1sZ21vZHVsZSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdkay5sYSAtbGludGwgLWxtIC1sWDExIC1sWGV4dCAtTC91c3IvWDExUjYvbGliIC1sZ2xpYiAtbGdtb2R1bGUgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJndGsubGEgLWxJQ0UgLWxTTSAtbHogLWxwbmcgL3Vzci9sb2NhbC9saWIvbGlidW5naWYubGEgL3Vzci9sb2NhbC9saWIvbGlianBlZy5sYSAtbHRpZmYgLWxtIC1seiAtbHBuZyAvdXNyL2xvY2FsL2xpYi9saWJ1bmdpZi5sYSAtbHogL3Vzci9sb2NhbC9saWIvbGlianBlZy5sYSAtbHRpZmYgLUwvdXNyL2xvY2FsL2xpYiAtTC91c3IvWDExUjYvbGliIC91c3IvbG9jYWwvbGliL2xpYmdka19pbWxpYi5sYSAtbG0gLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJhcnRfbGdwbC5sYSAtbG0gLWx6IC1sbSAtbFgxMSAtbFhleHQgLWxpbnRsIC1sZ2xpYiAtbGdtb2R1bGUgLWxnZGsgLWxndGsgLWxJQ0UgLWxTTSAtbG0gLWxYMTEgLWxYZXh0IC1saW50bCAtbGdsaWIgLWxnbW9kdWxlIC1sZ2RrIC1sZ3RrIC1ML3Vzci9YMTFSNi9saWIgLWxtIC1seiAtbHBuZyAtbHVuZ2lmIC1seiAtbGpwZWcgLWx0aWZmIC1sanBlZyAtbGdka19pbWxpYiAtbGdsaWIgLWxtIC1sYXVkaW9maWxlIC1sbSAtbGF1ZGlvZmlsZSAtbGVzZCAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdub21ldWkubGEgLUwvdXNyL1gxMVI2L2xpYiAtTC91c3IvbG9jYWwvbGliIgoJc3BlY2lhbGRlcGxpYnM9Ii1sZ25vbWV1aSAtbGFydF9sZ3BsIC1sZ2RrX2ltbGliIC1sdGlmZiAtbGpwZWcgLWx1bmdpZiAtbHBuZyAtbHogLWxTTSAtbElDRSAtbGd0ayAtbGdkayAtbGdtb2R1bGUgLWxpbnRsIC1sWGV4dCAtbFgxMSAtbGdub21lIC1sZ25vbWVzdXBwb3J0IC1sZXNkIC1sYXVkaW9maWxlIC1sbSAtbGdsaWIiCglmb3IgZGVwbGliIGluICRkZXBsaWJzOyBkbwoJCWNhc2UgJGRlcGxpYiBpbgoJCS1MKikKCQkJbmV3X2xpYnM9IiRkZXBsaWIgJG5ld19saWJzIgoJCQk7OwoJCSopCgkJCWNhc2UgIiAkc3BlY2lhbGRlcGxpYnMgIiBpbgoJCQkqIiAkZGVwbGliICIqKQoJCQkJbmV3X2xpYnM9IiRkZXBsaWIgJG5ld19saWJzIjs7CgkJCWVzYWMKCQkJOzsKCQllc2FjCglkb25lCi0tLQpuYW1lOiBva3NoLXNldGVycm9yLTEKZGVzY3JpcHRpb246CglUaGUgLWUgZmxhZyBzaG91bGQgYmUgaWdub3JlZCB3aGVuIGV4ZWN1dGluZyBhIGNvbXBvdW5kIGxpc3QKCWZvbGxvd2VkIGJ5IGFuIGlmIHN0YXRlbWVudC4Kc3RkaW46CglpZiB0cnVlOyB0aGVuIGZhbHNlICYmIGZhbHNlOyBmaQoJdHJ1ZQphcmd1bWVudHM6ICEtZSEKZXhwZWN0ZWQtZXhpdDogZSA9PSAwCi0tLQpuYW1lOiBva3NoLXNldGVycm9yLTIKZGVzY3JpcHRpb246CglUaGUgLWUgZmxhZyBzaG91bGQgYmUgaWdub3JlZCB3aGVuIGV4ZWN1dGluZyBhIGNvbXBvdW5kIGxpc3QKCWZvbGxvd2VkIGJ5IGFuIGlmIHN0YXRlbWVudC4Kc3RkaW46CglpZiB0cnVlOyB0aGVuIGlmIHRydWU7IHRoZW4gZmFsc2UgJiYgZmFsc2U7IGZpOyBmaQoJdHJ1ZQphcmd1bWVudHM6ICEtZSEKZXhwZWN0ZWQtZXhpdDogZSA9PSAwCi0tLQpuYW1lOiBva3NoLXNldGVycm9yLTMKZGVzY3JpcHRpb246CglUaGUgLWUgZmxhZyBzaG91bGQgYmUgaWdub3JlZCB3aGVuIGV4ZWN1dGluZyBhIGNvbXBvdW5kIGxpc3QKCWZvbGxvd2VkIGJ5IGFuIGVsaWYgc3RhdGVtZW50LgpzdGRpbjoKCWlmIHRydWU7IHRoZW4gOjsgZWxpZiB0cnVlOyB0aGVuIGZhbHNlICYmIGZhbHNlOyBmaQphcmd1bWVudHM6ICEtZSEKZXhwZWN0ZWQtZXhpdDogZSA9PSAwCi0tLQpuYW1lOiBva3NoLXNldGVycm9yLTQKZGVzY3JpcHRpb246CglUaGUgLWUgZmxhZyBzaG91bGQgYmUgaWdub3JlZCB3aGVuIGV4ZWN1dGluZyBhIHBpcGVsaW5lCgliZWdpbm5pbmcgd2l0aCAnIScKc3RkaW46Cglmb3IgaSBpbiAxIDIgMwoJZG8KCQlmYWxzZSAmJiBmYWxzZQoJCXRydWUgfHwgZmFsc2UKCWRvbmUKYXJndW1lbnRzOiAhLWUhCmV4cGVjdGVkLWV4aXQ6IGUgPT0gMAotLS0KbmFtZTogb2tzaC1zZXRlcnJvci01CmRlc2NyaXB0aW9uOgoJVGhlIC1lIGZsYWcgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBleGVjdXRpbmcgYSBwaXBlbGluZQoJYmVnaW5uaW5nIHdpdGggJyEnCnN0ZGluOgoJISB0cnVlIHwgZmFsc2UKCXRydWUKYXJndW1lbnRzOiAhLWUhCmV4cGVjdGVkLWV4aXQ6IGUgPT0gMAotLS0KbmFtZTogb2tzaC1zZXRlcnJvci02CmRlc2NyaXB0aW9uOgoJV2hlbiB0cmFwcGluZyBFUlIgYW5kIEVYSVQsIGJvdGggdHJhcHMgc2hvdWxkIHJ1biBpbiAtZSBtb2RlCgl3aGVuIGFuIGVycm9yIG9jY3Vycy4Kc3RkaW46Cgl0cmFwICdlY2hvIEVYSVQnIEVYSVQKCXRyYXAgJ2VjaG8gRVJSJyBFUlIKCXNldCAtZQoJZmFsc2UKCWVjaG8gRE9ORQoJZXhpdCAwCmFyZ3VtZW50czogIS1lIQpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3Rkb3V0OgoJRVJSCglFWElUCi0tLQpuYW1lOiBva3NoLXNldGVycm9yLTcKZGVzY3JpcHRpb246CglUaGUgLWUgZmxhZyB3aXRoaW4gYSBjb21tYW5kIHN1YnN0aXR1dGlvbiBzaG91bGQgYmUgaG9ub3JlZApzdGRpbjoKCWVjaG8gJCggc2V0IC1lOyBmYWxzZTsgZWNobyBmb28gKQphcmd1bWVudHM6ICEtZSEKZXhwZWN0ZWQtc3Rkb3V0OgoJCi0tLQpuYW1lOiBva3NoLWlucHV0LWNvbXN1YgpkZXNjcmlwdGlvbjoKCUEgY29tbWFuZCBzdWJzdGl0dXRpb24gdXNpbmcgaW5wdXQgcmVkaXJlY3Rpb24gc2hvdWxkIGV4aXQgd2l0aAoJZmFpbHVyZSBpZiB0aGUgaW5wdXQgZmlsZSBkb2VzIG5vdCBleGlzdC4Kc3RkaW46Cgl2YXI9JCg8IG5vbi1leGlzdGVudCkKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvbm9uLWV4aXN0ZW50LwotLS0KbmFtZTogb2tzaC1lbXB0eS1mb3ItbGlzdApkZXNjcmlwdGlvbjoKCUEgZm9yIGxpc3Qgd2hpY2ggZXhwYW5kcyB0byB6ZXJvIGl0ZW1zIHNob3VsZCBub3QgZXhlY3V0ZSB0aGUgYm9keS4Kc3RkaW46CglzZXQgZm9vIGJhciBiYXogOyBmb3Igb3V0IGluIDsgZG8gZWNobyAkb3V0IDsgZG9uZQotLS0KbmFtZTogb2tzaC12YXJmdW5jdGlvbi1tb2QxCmRlc2NyaXB0aW9uOgoJKEluc3BpcmVkIGJ5IFBSIDI0NTAgb24gT3BlbkJTRC4pIENhbGxpbmcKCQlGT089YmFyIGYKCXdoZXJlIGYgaXMgYSBrc2ggc3R5bGUgZnVuY3Rpb24sIHNob3VsZCBub3Qgc2V0IEZPTyBpbiB0aGUgY3VycmVudAoJZW52LiBJZiBmIGlzIGEgQm91cm5lIHN0eWxlIGZ1bmN0aW9uLCBGT08gc2hvdWxkIGJlIHNldC4gRnVydGhlcm1vcmUsCgl0aGUgZnVuY3Rpb24gc2hvdWxkIHJlY2VpdmUgYSBjb3JyZWN0IHZhbHVlIG9mIEZPTy4gSG93ZXZlciwgZGlmZmVyaW5nCglmcm9tIG9rc2gsIHNldHRpbmcgRk9PIGluIHRoZSBmdW5jdGlvbiBpdHNlbGYgbXVzdCBjaGFuZ2UgdGhlIHZhbHVlIGluCglzZXR0aW5nIEZPTyBpbiB0aGUgZnVuY3Rpb24gaXRzZWxmIHNob3VsZCBub3QgY2hhbmdlIHRoZSB2YWx1ZSBpbgoJZ2xvYmFsIGVudmlyb25tZW50LgpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xudW5zZXQgUkFORE9NXG5leHBvcnQgfCB3aGlsZSBJRlM9IHJlYWQgLXInIFwKCSAgICAnUkFORE9NOyBkbyBldmFsICdcJydwcmludCAtciAtLSAiJFJBTkRPTT0kJ1wnJyIkUkFORE9NIidcJ1wiXCdcOyBcCgkgICAgZG9uZSA+ZW52OyBjaG1vZCAreCBlbnY7IFBBVEg9LiRQQVRIU0VQJFBBVEgKCWZ1bmN0aW9uIGsgewoJCWlmIFsgeCRGT08gIT0geGJhciBdOyB0aGVuCgkJCWVjaG8gMQoJCQlyZXR1cm4gMQoJCWZpCgkJeD0kKGVudiB8IGdyZXAgRk9PKQoJCWlmIFsgIngkeCIgIT0gInhGT089YmFyIiBdOyB0aGVuCgkJCWVjaG8gMgoJCQlyZXR1cm4gMTsKCQlmaQoJCUZPTz1mb28KCQlyZXR1cm4gMAoJfQoJYiAoKSB7CgkJaWYgWyB4JEZPTyAhPSB4YmFyIF07IHRoZW4KCQkJZWNobyAzCgkJCXJldHVybiAxCgkJZmkKCQl4PSQoZW52IHwgZ3JlcCBGT08pCgkJaWYgWyAieCR4IiAhPSAieEZPTz1iYXIiIF07IHRoZW4KCQkJZWNobyA0CgkJCXJldHVybiAxOwoJCWZpCgkJRk9PPWZvbwoJCXJldHVybiAwCgl9CglGT089YmFyIGsKCWlmIFsgJD8gIT0gMCBdOyB0aGVuCgkJZXhpdCAxCglmaQoJaWYgWyB4JEZPTyAhPSB4IF07IHRoZW4KCQlleGl0IDEKCWZpCglGT089YmFyIGIKCWlmIFsgJD8gIT0gMCBdOyB0aGVuCgkJZXhpdCAxCglmaQoJaWYgWyB4JEZPTyAhPSB4Zm9vIF07IHRoZW4KCQlleGl0IDEKCWZpCglGT089YmFyYmFyCglGT089YmFyIGsKCWlmIFsgJD8gIT0gMCBdOyB0aGVuCgkJZXhpdCAxCglmaQoJaWYgWyB4JEZPTyAhPSB4YmFyYmFyIF07IHRoZW4KCQlleGl0IDEKCWZpCglGT089YmFyIGIKCWlmIFsgJD8gIT0gMCBdOyB0aGVuCgkJZXhpdCAxCglmaQoJaWYgWyB4JEZPTyAhPSB4Zm9vIF07IHRoZW4KCQlleGl0IDEKCWZpCi0tLQpuYW1lOiBmZC1jbG9leGVjLTEKZGVzY3JpcHRpb246CglWZXJpZnkgdGhhdCBmaWxlIGRlc2NyaXB0b3JzID4gMiBhcmUgcHJpdmF0ZSBmb3IgS29ybiBzaGVsbHMKCUFUJlQga3NoOTMgZG9lcyB0aGlzIHN0aWxsLCB3aGljaCBtZWFucyB3ZSBtdXN0IGtlZXAgaXQgYXMgd2VsbAoJWFhYIGZhaWxzIG9uIHNvbWUgb2xkIFBlcmwgaW5zdGFsbGF0aW9ucwpuZWVkLXBhc3M6IG5vCnN0ZGluOgoJY2F0ID5jbGQgPDwtRU9GCgkJIyEkX19wZXJsbmFtZQoJCW9wZW4obXkgXCRmaCwgIj4mIiwgOSkgb3IgZGllICJFOiBvcGVuIFwkISI7CgkJc3lzd3JpdGUoXCRmaCwgIkZvd2xcXG4iLCA1KSBvciBkaWUgIkU6IHdyaXRlIFwkISI7CglFT0YKCWNobW9kICt4IGNsZAoJZXhlYyA5PiYxCgkuL2NsZApleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvRTogb3BlbiAvCi0tLQpuYW1lOiBmZC1jbG9leGVjLTIKZGVzY3JpcHRpb246CglWZXJpZnkgdGhhdCBmaWxlIGRlc2NyaXB0b3JzID4gMiBhcmUgbm90IHByaXZhdGUgZm9yIFBPU0lYIHNoZWxscwoJU2VlIERlYmlhbiBCdWcgIzE1NDU0MCwgQ2xvc2VzOiAjNDk5MTM5CglYWFggZmFpbHMgb24gc29tZSBvbGQgUGVybCBpbnN0YWxsYXRpb25zCm5lZWQtcGFzczogbm8Kc3RkaW46CgljYXQgPmNsZCA8PC1FT0YKCQkjISRfX3BlcmxuYW1lCgkJb3BlbihteSBcJGZoLCAiPiYiLCA5KSBvciBkaWUgIkU6IG9wZW4gXCQhIjsKCQlzeXN3cml0ZShcJGZoLCAiRm93bFxcbiIsIDUpIG9yIGRpZSAiRTogd3JpdGUgXCQhIjsKCUVPRgoJY2htb2QgK3ggY2xkCgl0ZXN0IC1uICIkUE9TSF9WRVJTSU9OIiB8fCBzZXQgLW8gcG9zaXgKCWV4ZWMgOT4mMQoJLi9jbGQKZXhwZWN0ZWQtc3Rkb3V0OgoJRm93bAotLS0KbmFtZTogZmQtY2xvZXhlYy0zCmRlc2NyaXB0aW9uOgoJQW5vdGhlciBjaGVjayBmb3IgY2xvc2Utb24tZXhlYwpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiID50cwoJY2F0ID4+dHMgPDwnRU9GJwoJcz1FUlIKCXJlYWQgLXJOLTEgLXUkMSBzIDI+L2Rldi9udWxsOyBlPSQ/CglwcmludCAtciAtLSAiKCQxLCAkKCghZSkpLCAkcykiCglFT0YKCWNobW9kICt4IHRzCglwcmludCBmb28gPnR4CglydW50ZXN0KCkgewoJCXM9JDE7IHNoaWZ0CgkJcHJpbnQgLXIgLS0gJCgiJF9fcHJvZ25hbWUiICIkQCIgLWMgIiRzIikgIiRAIiAuCgl9CglydW50ZXN0ICdleGVjIDM8dHg7IC4vdHMgMyAzPCYzOyAuL3RzIDMnCglydW50ZXN0ICdleGVjIDM8dHg7IC4vdHMgMyAzPCYzOyAuL3RzIDMnIC1vIHBvc2l4CglydW50ZXN0ICdleGVjIDM8dHg7IC4vdHMgMyAzPCYzOyAuL3RzIDMnIC1vIHNoCglydW50ZXN0ICdleGVjIDM8dHg7IC4vdHMgNCA0PCYzOyAuL3RzIDQgNDwmMycKCXJ1bnRlc3QgJ2V4ZWMgMzx0eDsgLi90cyAzIDM8JjM7IC4vdHMgMyAzPCYzJwpleHBlY3RlZC1zdGRvdXQ6CgkoMywgMSwgZm9vKSAoMywgMCwgRVJSKSAuCgkoMywgMSwgZm9vKSAoMywgMSwgKSAtbyBwb3NpeCAuCgkoMywgMSwgZm9vKSAoMywgMSwgKSAtbyBzaCAuCgkoNCwgMSwgZm9vKSAoNCwgMSwgKSAuCgkoMywgMSwgZm9vKSAoMywgMSwgKSAuCi0tLQpuYW1lOiBjb21zdWItMWEKZGVzY3JpcHRpb246CglDT01TVUIgYXJlIG5vdyBwYXJzZWQgcmVjdXJzaXZlbHksIHNvIHRoaXMgd29ya3MKCXNlZSBhbHNvIHJlZ3Jlc3Npb24tNjogbWF0Y2hpbmcgcGFyZW50aGVzxJNzIGJ1ZwoJRmFpbHMgb246IHBka3NoIGJhc2gyIGJhc2gzIHpzaAoJUGFzc2VzIG9uOiBiYXNoNCBrc2g5MyBta3NoKDIwMTEwMzEzKykKc3RkaW46CgllY2hvIDEgJChjYXNlIDEgaW4gKDEpIGVjaG8geWVzOzsgKDIpIGVjaG8gbm87OyBlc2FjKSAuCgllY2hvIDIgJChjYXNlIDEgaW4gMSkgZWNobyB5ZXM7OyAyKSBlY2hvIG5vOzsgZXNhYykgLgoJVEVTVD0xMjM0OyBlY2hvIDMgJHtURVNUOiAkKGNhc2UgMSBpbiAoMSkgZWNobyAxOzsgKCopIGVjaG8gMjs7IGVzYWMpfSAuCglURVNUPTU2Nzg7IGVjaG8gNCAke1RFU1Q6ICQoY2FzZSAxIGluIDEpIGVjaG8gMTs7ICopIGVjaG8gMjs7IGVzYWMpfSAuCglhPSgkKGNhc2UgMSBpbiAoMSkgZWNobyAxOzsgKCopIGVjaG8gMjs7IGVzYWMpKTsgZWNobyA1ICR7YVswXX0gLgoJYT0oJChjYXNlIDEgaW4gMSkgZWNobyAxOzsgKikgZWNobyAyOzsgZXNhYykpOyBlY2hvIDYgJHthWzBdfSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgeWVzIC4KCTIgeWVzIC4KCTMgMjM0IC4KCTQgNjc4IC4KCTUgMSAuCgk2IDEgLgotLS0KbmFtZTogY29tc3ViLTFiCmRlc2NyaXB0aW9uOgoJQ09NU1VCIGFyZSBub3cgcGFyc2VkIHJlY3Vyc2l2ZWx5LCBzbyB0aGlzIHdvcmtzCglGYWlscyBvbjogcGRrc2ggYmFzaDIgYmFzaDMgYmFzaDQgenNoCglQYXNzZXMgb246IGtzaDkzIG1rc2goMjAxMTAzMTMrKQpzdGRpbjoKCWVjaG8gMSAkKCgkKGNhc2UgMSBpbiAoMSkgZWNobyAxOzsgKCopIGVjaG8gMjs7IGVzYWMpKzEwKSkgLgoJZWNobyAyICQoKCQoY2FzZSAxIGluIDEpIGVjaG8gMTs7ICopIGVjaG8gMjs7IGVzYWMpKzIwKSkgLgoJKCggYSA9ICQoY2FzZSAxIGluICgxKSBlY2hvIDE7OyAoKikgZWNobyAyOzsgZXNhYykgKSk7IGVjaG8gMyAkYSAuCgkoKCBhID0gJChjYXNlIDEgaW4gMSkgZWNobyAxOzsgKikgZWNobyAyOzsgZXNhYykgKSk7IGVjaG8gNCAkYSAuCglhPSgkKCgkKGNhc2UgMSBpbiAoMSkgZWNobyAxOzsgKCopIGVjaG8gMjs7IGVzYWMpKzEwKSkpOyBlY2hvIDUgJHthWzBdfSAuCglhPSgkKCgkKGNhc2UgMSBpbiAxKSBlY2hvIDE7OyAqKSBlY2hvIDI7OyBlc2FjKSsyMCkpKTsgZWNobyA2ICR7YVswXX0gLgpleHBlY3RlZC1zdGRvdXQ6CgkxIDExIC4KCTIgMjEgLgoJMyAxIC4KCTQgMSAuCgk1IDExIC4KCTYgMjEgLgotLS0KbmFtZTogY29tc3ViLTIKZGVzY3JpcHRpb246CglSZWRIYXQgQlojNDk2NzkxIOKAkyBhbm90aGVyIGNhc2Ugb2YgbWlzc2luZyByZWN1cnNpb24KCWluIHBhcnNpbmcgQ09NU1VCIGV4cHJlc3Npb25zCglGYWlscyBvbjogcGRrc2ggYmFzaDIgYmFzaDPCuSBiYXNoNMK5IHpzaAoJUGFzc2VzIG9uOiBrc2g5MyBta3NoKDIwMTEwMzA1KykKCeKRoCBiYXNoWzM0XSBzZWVtIHRvIGNob2tlIG9uIGNvbW1lbnQgZW5kaW5nIHdpdGggYmFja3NsYXNoLW5ld2xpbmUKc3RkaW46CgkjIGEgY29tbWVudCB3aXRoICIgJyBcCgl4PSQoCgllY2hvIHllcwoJIyBhIGNvbW1lbnQgd2l0aCAiICcgXAoJKQoJZWNobyAkeApleHBlY3RlZC1zdGRvdXQ6Cgl5ZXMKLS0tCm5hbWU6IGNvbXN1Yi0zCmRlc2NyaXB0aW9uOgoJRXh0ZW5kZWQgdGVzdCBmb3IgQ09NU1VCIGV4cGxhaW5pbmcgd2h5IGEgcmVjdXJzaXZlIHBhcnNlcgoJaXMgYSBtdXN0IChhIG5vbi1yZWN1cnNpdmUgcGFyc2VyIGNhbm5vdCBwYXNzIGFsbCB0aHJlZSBvZgoJdGhlc2UgdGVzdCBjYXNlcywgZXNwZWNpYWxseSB0aGUg4oCYI+KAmSBpcyBkaWZmaWN1bHQpCnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG5lY2hvIDEyMzQnID5pZDsgY2htb2QgK3ggaWQ7IFBBVEg9LiRQQVRIU0VQJFBBVEgKCWVjaG8gJCh0eXBlc2V0IC1pMTAgeD0xNiMyMDsgZWNobyAkeCkKCWVjaG8gJCh0eXBlc2V0IC1VdWkxNiB4PTE2IyQoaWQgLXUpCgkpIC4KCWVjaG8gJChjPTE7IGQ9MQoJdHlwZXNldCAtVXVpMTYgYT0zNiNmb287IGM9MgoJdHlwZXNldCAtVXVpMTYgYj0zNiAjZm9vOyBkPTIKCWVjaG8gJGEgJGIgJGMgJGQpCmV4cGVjdGVkLXN0ZG91dDoKCTMyCgkuCgkxNiM0RjY4IDE2IzI0IDIgMQotLS0KbmFtZTogY29tc3ViLTQKZGVzY3JpcHRpb246CglDaGVjayB0aGUgdHJlZSBkdW1wIGZ1bmN0aW9ucyBmb3IgIU1LU0hfU01BTEwgZnVuY3Rpb25hbGl0eQpjYXRlZ29yeTogIXNta3NoCnN0ZGluOgoJeCgpIHsgY2FzZSAkMSBpbiB1KSBlY2hvIHggOzsmICopIGVjaG8gJDEgOzsgZXNhYzsgfQoJdHlwZXNldCAtZiB4CmV4cGVjdGVkLXN0ZG91dDoKCXgoKSB7CgkJY2FzZSAkMSBpbgoJCSh1KQoJCQlcZWNobyB4IAoJCQk7fAoJCSgqKQoJCQlcZWNobyAkMSAKCQkJOzsKCQllc2FjIAoJfSAKLS0tCm5hbWU6IGNvbXN1Yi01CmRlc2NyaXB0aW9uOgoJQ2hlY2sgQ09NU1VCIHdvcmtzIHdpdGggYWxpYXNlcyAoZG9lcyBub3QgZXhwYW5kIHRoZW0gdHdpY2UpCglhbmQgcmVlbnRyYW5jeSBzYWZldHkKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmZvciB4IGluICIkQCI7IGRvIHByaW50IC1yIC0tICIkeCI7IGRvbmUnID5wZm4KCWNobW9kICt4IHBmbgoJYWxpYXMgZWNobz0nZWNobyBhJwoJZm9vKCkgewoJCWVjaG8gbW9vCgkJLi9wZm4gIiQoZWNobyBmb28pIgoJfQoJLi9wZm4gIiQoZWNobyBiKSIKCXR5cGVzZXQgLWYgZm9vID54CgljYXQgeAoJZm9vCgkuIC4veAoJdHlwZXNldCAtZiBmb28KCWZvbwpleHBlY3RlZC1zdGRvdXQ6CglhIGIKCWZvbygpIHsKCQlcZWNobyBhIG1vbyAKCQkuL3BmbiAiJChcZWNobyBhIGZvbyApIiAKCX0gCglhIG1vbwoJYSBmb28KCWZvbygpIHsKCQlcZWNobyBhIG1vbyAKCQkuL3BmbiAiJChcZWNobyBhIGZvbyApIiAKCX0gCglhIG1vbwoJYSBmb28KLS0tCm5hbWU6IGNvbXN1Yi10b3J0dXJlCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhlIHRyZWUgZHVtcCBmdW5jdGlvbnMgd29yayBjb3JyZWN0bHkKc3RkaW46CglpZiBbWyAteiAkX19wcm9nbmFtZSBdXTsgdGhlbiBlY2hvID4mMiBjYWxsIG1lIHdpdGggX19wcm9nbmFtZTsgZXhpdCAxOyBmaQoJd2hpbGUgSUZTPSByZWFkIC1yIGxpbmU7IGRvCgkJaWYgW1sgJGxpbmUgPSAnIzEnIF1dOyB0aGVuCgkJCWxhc3RmPTAKCQkJY29udGludWUKCQllbGlmIFtbICRsaW5lID0gRU9GTiogXV07IHRoZW4KCQkJZmJvZHk9JGZib2R5JCdcbickbGluZQoJCQljb250aW51ZQoJCWVsaWYgW1sgJGxpbmUgIT0gJyMnKiBdXTsgdGhlbgoJCQlmYm9keT0kZmJvZHkkJ1xuXHQnJGxpbmUKCQkJY29udGludWUKCQlmaQoJCWlmICgoIGxhc3RmICkpOyB0aGVuCgkJCXg9ImlubGluZV8ke25leHRmfSgpIHsiJGZib2R5JCdcbn1cbicKCQkJcHJpbnQgLW5yIC0tICIkeCIKCQkJcHJpbnQgLXIgLS0gIiR7eH10eXBlc2V0IC1mIGlubGluZV8kbmV4dGYiIHwgIiRfX3Byb2duYW1lIgoJCQl4PSJmdW5jdGlvbiBjb21zdWJfJG5leHRmIHsgeD1cJCgiJGZib2R5JCdcbik7IH1cbicKCQkJcHJpbnQgLW5yIC0tICIkeCIKCQkJcHJpbnQgLXIgLS0gIiR7eH10eXBlc2V0IC1mIGNvbXN1Yl8kbmV4dGYiIHwgIiRfX3Byb2duYW1lIgoJCQl4PSJmdW5jdGlvbiByZXJlYWRfJG5leHRmIHsgeD1cJCgoIiRmYm9keSQnXG4pfHRyIHUgeCk7IH1cbicKCQkJcHJpbnQgLW5yIC0tICIkeCIKCQkJcHJpbnQgLXIgLS0gIiR7eH10eXBlc2V0IC1mIHJlcmVhZF8kbmV4dGYiIHwgIiRfX3Byb2duYW1lIgoJCWZpCgkJbGFzdGY9MQoJCWZib2R5PQoJCW5leHRmPSR7bGluZSM/fQoJZG9uZSA8PCdFT0QnCgkjMQoJI1RDT00KCXZhcmE9MSAgdmFyYj0nMiAgMycgIGNtZCAgYXJnMSAgJGFyZzIgICIkYXJnMyAgNCIKCSNUUEFSRU5fVFBJUEVfVExJU1QKCShlY2hvICRmb28gIHwgIHRyIC1kYyAwLTk7IGVjaG8pCgkjVEFORF9UT1IKCWNtZCAgJiYgIGVjaG8gamEgIHx8ICBlY2hvIG5laW4KCSNUU0VMRUNUCglzZWxlY3QgIGZpbGUgIGluICAqOyAgZG8gIGVjaG8gICI8JGZpbGU+IiA7ICBicmVhayA7ICBkb25lCgkjVEZPUl9UVElNRQoJdGltZSAgZm9yICBpICBpbiAgezEsMiwzfSAgOyAgZG8gIGVjaG8gICRpIDsgIGRvbmUKCSNUQ0FTRQoJY2FzZSAgJGZvbyAgaW4gIDEpICBlY2hvIGVpbnM7JiAyKSBlY2hvIHp3ZWkgIDt8ICopIGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbjs7ICBlc2FjCgkjVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRgoJaWYgICEgIFtbICAxICA9ICAxICBdXSAgOyAgdGhlbiAgZWNobyBlaW5zOyAgZWxpZiBbWyAxID0gMiBdXTsgdGhlbiBlY2hvIHp3ZWkgIDtlbHNlIGVjaG8gZHJlaTsgZmkKCSNUV0hJTEUKCWk9MTsgd2hpbGUgKCggaSA8IDEwICkpOyBkbyBlY2hvICRpOyBsZXQgKytpOyBkb25lCgkjVFVOVElMCglpPTEwOyB1bnRpbCAgKCggIS0taSApKSA7IGRvIGVjaG8gJGk7IGRvbmUKCSNUQ09QUk9DCgljYXQgICogIHwmICBscwoJI1RGVU5DVF9UQlJBQ0VfVEFTWU5DCglmdW5jdGlvbiAga29ybiAgeyAgZWNobyBlaW5zOyBlY2hvIHp3ZWkgOyAgfQoJYm91cm5lICAoKSAgeyAgbG9nZ2VyICogICYgIH0KCSNJT1JFQURfSU9DQVQKCXRyICB4ICB1ICAwPGZvbyAgPj5iYXIKCSNJT1dSSVRFX0lPQ0xPQl9JT0hFUkVfbm9JT1NLSVAKCWNhdCAgPnxiYXIgIDw8J0VPRk4nCglmb28KCUVPRk4KCSNJT1dSSVRFX25vSU9DTE9CX0lPSEVSRV9JT1NLSVAKCWNhdCAgMT5iYXIgIDw8LUVPRkkKCWZvbwoJRU9GSQoJI0lPUkRXUl9JT0RVUAoJc2ggIDE8Pi9kZXYvY29uc29sZSAgMDwmMSAgMj4mMQoJI0NPTVNVQl9FWFBSU1VCX0ZVTlNVQl9WQUxTVUIKCWVjaG8gJCh0cnVlKSAkKCgxKyAyKSkgJHsgIDo7fSAke3wgUkVQTFk9eDt9CgkjUUNIQVJfT1FVT1RFX0NRVU9URQoJZWNobyBmb1xvYlwiYVxgclwnYlwkYXoKCWVjaG8gImZvXG9iXCJhXGByXCdiXCRheiIKCWVjaG8gJ2ZvXG9iXCJhXGByJ1wnJ2JcJGF6JwoJI09TVUJTVF9DU1VCU1RfT1BBVF9TUEFUX0NQQVQKCVtbICR7Zm9vI2JsXCh1XClifSA9IEAoYmFyfGJheikgXV0KCSNoZXJlZG9jX2Nsb3NlZAoJeD0kKGNhdCA8PEVPRk4KCW5vdGUgdGhlcmUgbXVzdCBiZSBubyBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkKCUVPRk4pOyBlY2hvICR4CgkjaGVyZWRvY19zcGFjZQoJeD0kKGNhdCA8PEVPRk5cIAoJbm90ZSB0aGUgc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApIGlzIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGhlcmUgZG9jdW1lbnQgbWFya2VyCglFT0ZOICk7IGVjaG8gJHgKCSNwYXRjaF9tb3RkCgl4PSQoc3lzY3RsIC1uIGtlcm4udmVyc2lvbiB8IHNlZCAxcSkKCVtbIC1zIC9ldGMvbW90ZCAmJiAiJChbWyAiJChoZWFkIC0xIC9ldGMvbW90ZCkiICE9ICR4IF1dICYmIFwKCSAgICBlZCAtcyAvZXRjL21vdGQgMj4mMSA8PC1FT0YKCQkxLC9eXCQvZAoJCTBhCgkJCSR4CgkKCQkuCgkJd3EKCUVPRikiID0gQCg/KSBdXSAmJiBybSAtZiAvZXRjL21vdGQKCWlmIFtbICEgLXMgL2V0Yy9tb3RkIF1dOyB0aGVuCgkJaW5zdGFsbCAtYyAtbyByb290IC1nIHdoZWVsIC1tIDY2NCAvZGV2L251bGwgL2V0Yy9tb3RkCgkJcHJpbnQgLS0gIiR4XG4iID4vZXRjL21vdGQKCWZpCgkjd2RhcnJhc3NpZ24KCWNhc2UgeCBpbgoJeCkgYSs9YjsgYys9KGQgZSkKCWVzYWMKCSMwCglFT0QKZXhwZWN0ZWQtc3Rkb3V0OgoJaW5saW5lX1RDT00oKSB7CgkJdmFyYT0xICB2YXJiPScyICAzJyAgY21kICBhcmcxICAkYXJnMiAgIiRhcmczICA0IgoJfQoJaW5saW5lX1RDT00oKSB7CgkJdmFyYT0xIHZhcmI9IjIgIDMiIFxjbWQgYXJnMSAkYXJnMiAiJGFyZzMgIDQiIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UQ09NIHsgeD0kKAoJCXZhcmE9MSAgdmFyYj0nMiAgMycgIGNtZCAgYXJnMSAgJGFyZzIgICIkYXJnMyAgNCIKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UQ09NIHsKCQl4PSQodmFyYT0xIHZhcmI9IjIgIDMiIFxjbWQgYXJnMSAkYXJnMiAiJGFyZzMgIDQiICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RDT00geyB4PSQoKAoJCXZhcmE9MSAgdmFyYj0nMiAgMycgIGNtZCAgYXJnMSAgJGFyZzIgICIkYXJnMyAgNCIKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RDT00gewoJCXg9JCggKCB2YXJhPTEgdmFyYj0iMiAgMyIgXGNtZCBhcmcxICRhcmcyICIkYXJnMyAgNCIgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVFBBUkVOX1RQSVBFX1RMSVNUKCkgewoJCShlY2hvICRmb28gIHwgIHRyIC1kYyAwLTk7IGVjaG8pCgl9CglpbmxpbmVfVFBBUkVOX1RQSVBFX1RMSVNUKCkgewoJCSggXGVjaG8gJGZvbyB8IFx0ciAtZGMgMC05IAoJCSAgXGVjaG8gKSAKCX0gCglmdW5jdGlvbiBjb21zdWJfVFBBUkVOX1RQSVBFX1RMSVNUIHsgeD0kKAoJCShlY2hvICRmb28gIHwgIHRyIC1kYyAwLTk7IGVjaG8pCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVFBBUkVOX1RQSVBFX1RMSVNUIHsKCQl4PSQoICggXGVjaG8gJGZvbyB8IFx0ciAtZGMgMC05IDsgXGVjaG8gKSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UUEFSRU5fVFBJUEVfVExJU1QgeyB4PSQoKAoJCShlY2hvICRmb28gIHwgIHRyIC1kYyAwLTk7IGVjaG8pCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UUEFSRU5fVFBJUEVfVExJU1QgewoJCXg9JCggKCAoIFxlY2hvICRmb28gfCBcdHIgLWRjIDAtOSA7IFxlY2hvICkgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVEFORF9UT1IoKSB7CgkJY21kICAmJiAgZWNobyBqYSAgfHwgIGVjaG8gbmVpbgoJfQoJaW5saW5lX1RBTkRfVE9SKCkgewoJCVxjbWQgJiYgXGVjaG8gamEgfHwgXGVjaG8gbmVpbiAKCX0gCglmdW5jdGlvbiBjb21zdWJfVEFORF9UT1IgeyB4PSQoCgkJY21kICAmJiAgZWNobyBqYSAgfHwgIGVjaG8gbmVpbgoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RBTkRfVE9SIHsKCQl4PSQoXGNtZCAmJiBcZWNobyBqYSB8fCBcZWNobyBuZWluICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RBTkRfVE9SIHsgeD0kKCgKCQljbWQgICYmICBlY2hvIGphICB8fCAgZWNobyBuZWluCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UQU5EX1RPUiB7CgkJeD0kKCAoIFxjbWQgJiYgXGVjaG8gamEgfHwgXGVjaG8gbmVpbiApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9UU0VMRUNUKCkgewoJCXNlbGVjdCAgZmlsZSAgaW4gICo7ICBkbyAgZWNobyAgIjwkZmlsZT4iIDsgIGJyZWFrIDsgIGRvbmUKCX0KCWlubGluZV9UU0VMRUNUKCkgewoJCXNlbGVjdCBmaWxlIGluICogCgkJZG8KCQkJXGVjaG8gIjwkZmlsZT4iIAoJCQlcYnJlYWsgCgkJZG9uZSAKCX0gCglmdW5jdGlvbiBjb21zdWJfVFNFTEVDVCB7IHg9JCgKCQlzZWxlY3QgIGZpbGUgIGluICAqOyAgZG8gIGVjaG8gICI8JGZpbGU+IiA7ICBicmVhayA7ICBkb25lCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVFNFTEVDVCB7CgkJeD0kKHNlbGVjdCBmaWxlIGluICogOyBkbyBcZWNobyAiPCRmaWxlPiIgOyBcYnJlYWsgOyBkb25lICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RTRUxFQ1QgeyB4PSQoKAoJCXNlbGVjdCAgZmlsZSAgaW4gICo7ICBkbyAgZWNobyAgIjwkZmlsZT4iIDsgIGJyZWFrIDsgIGRvbmUKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RTRUxFQ1QgewoJCXg9JCggKCBzZWxlY3QgZmlsZSBpbiAqIDsgZG8gXGVjaG8gIjwkZmlsZT4iIDsgXGJyZWFrIDsgZG9uZSApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9URk9SX1RUSU1FKCkgewoJCXRpbWUgIGZvciAgaSAgaW4gIHsxLDIsM30gIDsgIGRvICBlY2hvICAkaSA7ICBkb25lCgl9CglpbmxpbmVfVEZPUl9UVElNRSgpIHsKCQl0aW1lIGZvciBpIGluIHsxLDIsM30gCgkJZG8KCQkJXGVjaG8gJGkgCgkJZG9uZSAKCX0gCglmdW5jdGlvbiBjb21zdWJfVEZPUl9UVElNRSB7IHg9JCgKCQl0aW1lICBmb3IgIGkgIGluICB7MSwyLDN9ICA7ICBkbyAgZWNobyAgJGkgOyAgZG9uZQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RGT1JfVFRJTUUgewoJCXg9JCh0aW1lIGZvciBpIGluIHsxLDIsM30gOyBkbyBcZWNobyAkaSA7IGRvbmUgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVEZPUl9UVElNRSB7IHg9JCgoCgkJdGltZSAgZm9yICBpICBpbiAgezEsMiwzfSAgOyAgZG8gIGVjaG8gICRpIDsgIGRvbmUKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RGT1JfVFRJTUUgewoJCXg9JCggKCB0aW1lIGZvciBpIGluIHsxLDIsM30gOyBkbyBcZWNobyAkaSA7IGRvbmUgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVENBU0UoKSB7CgkJY2FzZSAgJGZvbyAgaW4gIDEpICBlY2hvIGVpbnM7JiAyKSBlY2hvIHp3ZWkgIDt8ICopIGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbjs7ICBlc2FjCgl9CglpbmxpbmVfVENBU0UoKSB7CgkJY2FzZSAkZm9vIGluCgkJKDEpCgkJCVxlY2hvIGVpbnMgCgkJCTsmCgkJKDIpCgkJCVxlY2hvIHp3ZWkgCgkJCTt8CgkJKCopCgkJCVxlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gCgkJCTs7CgkJZXNhYyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVENBU0UgeyB4PSQoCgkJY2FzZSAgJGZvbyAgaW4gIDEpICBlY2hvIGVpbnM7JiAyKSBlY2hvIHp3ZWkgIDt8ICopIGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbjs7ICBlc2FjCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVENBU0UgewoJCXg9JChjYXNlICRmb28gaW4gKDEpIFxlY2hvIGVpbnMgIDsmICgyKSBcZWNobyB6d2VpICA7fCAoKikgXGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbiAgOzsgZXNhYyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UQ0FTRSB7IHg9JCgoCgkJY2FzZSAgJGZvbyAgaW4gIDEpICBlY2hvIGVpbnM7JiAyKSBlY2hvIHp3ZWkgIDt8ICopIGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbjs7ICBlc2FjCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UQ0FTRSB7CgkJeD0kKCAoIGNhc2UgJGZvbyBpbiAoMSkgXGVjaG8gZWlucyAgOyYgKDIpIFxlY2hvIHp3ZWkgIDt8ICgqKSBcZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuICA7OyBlc2FjICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYoKSB7CgkJaWYgICEgIFtbICAxICA9ICAxICBdXSAgOyAgdGhlbiAgZWNobyBlaW5zOyAgZWxpZiBbWyAxID0gMiBdXTsgdGhlbiBlY2hvIHp3ZWkgIDtlbHNlIGVjaG8gZHJlaTsgZmkKCX0KCWlubGluZV9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGKCkgewoJCWlmICEgW1sgMSA9IDEgXV0gCgkJdGhlbgoJCQlcZWNobyBlaW5zIAoJCWVsaWYgW1sgMSA9IDIgXV0gCgkJdGhlbgoJCQlcZWNobyB6d2VpIAoJCWVsc2UKCQkJXGVjaG8gZHJlaSAKCQlmaSAKCX0gCglmdW5jdGlvbiBjb21zdWJfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRiB7IHg9JCgKCQlpZiAgISAgW1sgIDEgID0gIDEgIF1dICA7ICB0aGVuICBlY2hvIGVpbnM7ICBlbGlmIFtbIDEgPSAyIF1dOyB0aGVuIGVjaG8gendlaSAgO2Vsc2UgZWNobyBkcmVpOyBmaQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYgewoJCXg9JChpZiAhIFtbIDEgPSAxIF1dIDsgdGhlbiBcZWNobyBlaW5zIDsgZWxpZiBbWyAxID0gMiBdXSA7IHRoZW4gXGVjaG8gendlaSA7IGVsc2UgXGVjaG8gZHJlaSA7IGZpICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYgeyB4PSQoKAoJCWlmICAhICBbWyAgMSAgPSAgMSAgXV0gIDsgIHRoZW4gIGVjaG8gZWluczsgIGVsaWYgW1sgMSA9IDIgXV07IHRoZW4gZWNobyB6d2VpICA7ZWxzZSBlY2hvIGRyZWk7IGZpCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGIHsKCQl4PSQoICggaWYgISBbWyAxID0gMSBdXSA7IHRoZW4gXGVjaG8gZWlucyA7IGVsaWYgW1sgMSA9IDIgXV0gOyB0aGVuIFxlY2hvIHp3ZWkgOyBlbHNlIFxlY2hvIGRyZWkgOyBmaSApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9UV0hJTEUoKSB7CgkJaT0xOyB3aGlsZSAoKCBpIDwgMTAgKSk7IGRvIGVjaG8gJGk7IGxldCArK2k7IGRvbmUKCX0KCWlubGluZV9UV0hJTEUoKSB7CgkJaT0xIAoJCXdoaWxlIHsKCQkJICAgICAgXFxidWlsdGluIGxldCAiIGkgPCAxMCAiIAoJCSAgICAgIH0gCgkJZG8KCQkJXGVjaG8gJGkgCgkJCVxsZXQgKytpIAoJCWRvbmUgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RXSElMRSB7IHg9JCgKCQlpPTE7IHdoaWxlICgoIGkgPCAxMCApKTsgZG8gZWNobyAkaTsgbGV0ICsraTsgZG9uZQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RXSElMRSB7CgkJeD0kKGk9MSA7IHdoaWxlIHsgXFxidWlsdGluIGxldCAiIGkgPCAxMCAiIDsgfSA7IGRvIFxlY2hvICRpIDsgXGxldCArK2kgOyBkb25lICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RXSElMRSB7IHg9JCgoCgkJaT0xOyB3aGlsZSAoKCBpIDwgMTAgKSk7IGRvIGVjaG8gJGk7IGxldCArK2k7IGRvbmUKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RXSElMRSB7CgkJeD0kKCAoIGk9MSA7IHdoaWxlIHsgXFxidWlsdGluIGxldCAiIGkgPCAxMCAiIDsgfSA7IGRvIFxlY2hvICRpIDsgXGxldCArK2kgOyBkb25lICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RVTlRJTCgpIHsKCQlpPTEwOyB1bnRpbCAgKCggIS0taSApKSA7IGRvIGVjaG8gJGk7IGRvbmUKCX0KCWlubGluZV9UVU5USUwoKSB7CgkJaT0xMCAKCQl1bnRpbCB7CgkJCSAgICAgIFxcYnVpbHRpbiBsZXQgIiAhLS1pICIgCgkJICAgICAgfSAKCQlkbwoJCQlcZWNobyAkaSAKCQlkb25lIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UVU5USUwgeyB4PSQoCgkJaT0xMDsgdW50aWwgICgoICEtLWkgKSkgOyBkbyBlY2hvICRpOyBkb25lCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVFVOVElMIHsKCQl4PSQoaT0xMCA7IHVudGlsIHsgXFxidWlsdGluIGxldCAiICEtLWkgIiA7IH0gOyBkbyBcZWNobyAkaSA7IGRvbmUgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVFVOVElMIHsgeD0kKCgKCQlpPTEwOyB1bnRpbCAgKCggIS0taSApKSA7IGRvIGVjaG8gJGk7IGRvbmUKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RVTlRJTCB7CgkJeD0kKCAoIGk9MTAgOyB1bnRpbCB7IFxcYnVpbHRpbiBsZXQgIiAhLS1pICIgOyB9IDsgZG8gXGVjaG8gJGkgOyBkb25lICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RDT1BST0MoKSB7CgkJY2F0ICAqICB8JiAgbHMKCX0KCWlubGluZV9UQ09QUk9DKCkgewoJCVxjYXQgKiB8JiAKCQlcbHMgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RDT1BST0MgeyB4PSQoCgkJY2F0ICAqICB8JiAgbHMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UQ09QUk9DIHsKCQl4PSQoXGNhdCAqIHwmICBcbHMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVENPUFJPQyB7IHg9JCgoCgkJY2F0ICAqICB8JiAgbHMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RDT1BST0MgewoJCXg9JCggKCBcY2F0ICogfCYgIFxscyApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9URlVOQ1RfVEJSQUNFX1RBU1lOQygpIHsKCQlmdW5jdGlvbiAga29ybiAgeyAgZWNobyBlaW5zOyBlY2hvIHp3ZWkgOyAgfQoJCWJvdXJuZSAgKCkgIHsgIGxvZ2dlciAqICAmICB9Cgl9CglpbmxpbmVfVEZVTkNUX1RCUkFDRV9UQVNZTkMoKSB7CgkJZnVuY3Rpb24ga29ybiB7CgkJCVxlY2hvIGVpbnMgCgkJCVxlY2hvIHp3ZWkgCgkJfSAKCQlib3VybmUoKSB7CgkJCVxsb2dnZXIgKiAmIAoJCX0gCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RGVU5DVF9UQlJBQ0VfVEFTWU5DIHsgeD0kKAoJCWZ1bmN0aW9uICBrb3JuICB7ICBlY2hvIGVpbnM7IGVjaG8gendlaSA7ICB9CgkJYm91cm5lICAoKSAgeyAgbG9nZ2VyICogICYgIH0KCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9URlVOQ1RfVEJSQUNFX1RBU1lOQyB7CgkJeD0kKGZ1bmN0aW9uIGtvcm4geyBcZWNobyBlaW5zIDsgXGVjaG8gendlaSA7IH0gOyBib3VybmUoKSB7IFxsb2dnZXIgKiAmICB9ICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RGVU5DVF9UQlJBQ0VfVEFTWU5DIHsgeD0kKCgKCQlmdW5jdGlvbiAga29ybiAgeyAgZWNobyBlaW5zOyBlY2hvIHp3ZWkgOyAgfQoJCWJvdXJuZSAgKCkgIHsgIGxvZ2dlciAqICAmICB9CgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9URlVOQ1RfVEJSQUNFX1RBU1lOQyB7CgkJeD0kKCAoIGZ1bmN0aW9uIGtvcm4geyBcZWNobyBlaW5zIDsgXGVjaG8gendlaSA7IH0gOyBib3VybmUoKSB7IFxsb2dnZXIgKiAmICB9ICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX0lPUkVBRF9JT0NBVCgpIHsKCQl0ciAgeCAgdSAgMDxmb28gID4+YmFyCgl9CglpbmxpbmVfSU9SRUFEX0lPQ0FUKCkgewoJCVx0ciB4IHUgPGZvbyA+PmJhciAKCX0gCglmdW5jdGlvbiBjb21zdWJfSU9SRUFEX0lPQ0FUIHsgeD0kKAoJCXRyICB4ICB1ICAwPGZvbyAgPj5iYXIKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9JT1JFQURfSU9DQVQgewoJCXg9JChcdHIgeCB1IDxmb28gPj5iYXIgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfSU9SRUFEX0lPQ0FUIHsgeD0kKCgKCQl0ciAgeCAgdSAgMDxmb28gID4+YmFyCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9JT1JFQURfSU9DQVQgewoJCXg9JCggKCBcdHIgeCB1IDxmb28gPj5iYXIgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfSU9XUklURV9JT0NMT0JfSU9IRVJFX25vSU9TS0lQKCkgewoJCWNhdCAgPnxiYXIgIDw8J0VPRk4nCgkJZm9vCglFT0ZOCgl9CglpbmxpbmVfSU9XUklURV9JT0NMT0JfSU9IRVJFX25vSU9TS0lQKCkgewoJCVxjYXQgPnxiYXIgPDwiRU9GTiIgCgkJZm9vCglFT0ZOCgkKCX0gCglmdW5jdGlvbiBjb21zdWJfSU9XUklURV9JT0NMT0JfSU9IRVJFX25vSU9TS0lQIHsgeD0kKAoJCWNhdCAgPnxiYXIgIDw8J0VPRk4nCgkJZm9vCglFT0ZOCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfSU9XUklURV9JT0NMT0JfSU9IRVJFX25vSU9TS0lQIHsKCQl4PSQoXGNhdCA+fGJhciA8PCJFT0ZOIiAKCQlmb28KCUVPRk4KCSkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX0lPV1JJVEVfSU9DTE9CX0lPSEVSRV9ub0lPU0tJUCB7IHg9JCgoCgkJY2F0ICA+fGJhciAgPDwnRU9GTicKCQlmb28KCUVPRk4KCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX0lPV1JJVEVfSU9DTE9CX0lPSEVSRV9ub0lPU0tJUCB7CgkJeD0kKCAoIFxjYXQgPnxiYXIgPDwiRU9GTiIgCgkJZm9vCglFT0ZOCgkpIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9JT1dSSVRFX25vSU9DTE9CX0lPSEVSRV9JT1NLSVAoKSB7CgkJY2F0ICAxPmJhciAgPDwtRU9GSQoJCWZvbwoJCUVPRkkKCX0KCWlubGluZV9JT1dSSVRFX25vSU9DTE9CX0lPSEVSRV9JT1NLSVAoKSB7CgkJXGNhdCA+YmFyIDw8LUVPRkkgCglmb28KCUVPRkkKCQoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9JT1dSSVRFX25vSU9DTE9CX0lPSEVSRV9JT1NLSVAgeyB4PSQoCgkJY2F0ICAxPmJhciAgPDwtRU9GSQoJCWZvbwoJCUVPRkkKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9JT1dSSVRFX25vSU9DTE9CX0lPSEVSRV9JT1NLSVAgewoJCXg9JChcY2F0ID5iYXIgPDwtRU9GSSAKCWZvbwoJRU9GSQoJKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfSU9XUklURV9ub0lPQ0xPQl9JT0hFUkVfSU9TS0lQIHsgeD0kKCgKCQljYXQgIDE+YmFyICA8PC1FT0ZJCgkJZm9vCgkJRU9GSQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfSU9XUklURV9ub0lPQ0xPQl9JT0hFUkVfSU9TS0lQIHsKCQl4PSQoICggXGNhdCA+YmFyIDw8LUVPRkkgCglmb28KCUVPRkkKCSkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX0lPUkRXUl9JT0RVUCgpIHsKCQlzaCAgMTw+L2Rldi9jb25zb2xlICAwPCYxICAyPiYxCgl9CglpbmxpbmVfSU9SRFdSX0lPRFVQKCkgewoJCVxzaCAxPD4vZGV2L2NvbnNvbGUgPCYxIDI+JjEgCgl9IAoJZnVuY3Rpb24gY29tc3ViX0lPUkRXUl9JT0RVUCB7IHg9JCgKCQlzaCAgMTw+L2Rldi9jb25zb2xlICAwPCYxICAyPiYxCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfSU9SRFdSX0lPRFVQIHsKCQl4PSQoXHNoIDE8Pi9kZXYvY29uc29sZSA8JjEgMj4mMSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9JT1JEV1JfSU9EVVAgeyB4PSQoKAoJCXNoICAxPD4vZGV2L2NvbnNvbGUgIDA8JjEgIDI+JjEKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX0lPUkRXUl9JT0RVUCB7CgkJeD0kKCAoIFxzaCAxPD4vZGV2L2NvbnNvbGUgPCYxIDI+JjEgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfQ09NU1VCX0VYUFJTVUJfRlVOU1VCX1ZBTFNVQigpIHsKCQllY2hvICQodHJ1ZSkgJCgoMSsgMikpICR7ICA6O30gJHt8IFJFUExZPXg7fQoJfQoJaW5saW5lX0NPTVNVQl9FWFBSU1VCX0ZVTlNVQl9WQUxTVUIoKSB7CgkJXGVjaG8gJChcdHJ1ZSApICQoKDErIDIpKSAkeyBcOiA7fSAke3xSRVBMWT14IDt9IAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9DT01TVUJfRVhQUlNVQl9GVU5TVUJfVkFMU1VCIHsgeD0kKAoJCWVjaG8gJCh0cnVlKSAkKCgxKyAyKSkgJHsgIDo7fSAke3wgUkVQTFk9eDt9CgkpOyB9CglmdW5jdGlvbiBjb21zdWJfQ09NU1VCX0VYUFJTVUJfRlVOU1VCX1ZBTFNVQiB7CgkJeD0kKFxlY2hvICQoXHRydWUgKSAkKCgxKyAyKSkgJHsgXDogO30gJHt8UkVQTFk9eCA7fSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9DT01TVUJfRVhQUlNVQl9GVU5TVUJfVkFMU1VCIHsgeD0kKCgKCQllY2hvICQodHJ1ZSkgJCgoMSsgMikpICR7ICA6O30gJHt8IFJFUExZPXg7fQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfQ09NU1VCX0VYUFJTVUJfRlVOU1VCX1ZBTFNVQiB7CgkJeD0kKCAoIFxlY2hvICQoXHRydWUgKSAkKCgxKyAyKSkgJHsgXDogO30gJHt8UkVQTFk9eCA7fSApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9RQ0hBUl9PUVVPVEVfQ1FVT1RFKCkgewoJCWVjaG8gZm9cb2JcImFcYHJcJ2JcJGF6CgkJZWNobyAiZm9cb2JcImFcYHJcJ2JcJGF6IgoJCWVjaG8gJ2ZvXG9iXCJhXGByJ1wnJ2JcJGF6JwoJfQoJaW5saW5lX1FDSEFSX09RVU9URV9DUVVPVEUoKSB7CgkJXGVjaG8gZm9cb2JcImFcYHJcJ2JcJGF6IAoJCVxlY2hvICJmb1xvYlwiYVxgclwnYlwkYXoiIAoJCVxlY2hvICJmb1xcb2JcXFwiYVxcXGByIlwnImJcXFwkYXoiIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9RQ0hBUl9PUVVPVEVfQ1FVT1RFIHsgeD0kKAoJCWVjaG8gZm9cb2JcImFcYHJcJ2JcJGF6CgkJZWNobyAiZm9cb2JcImFcYHJcJ2JcJGF6IgoJCWVjaG8gJ2ZvXG9iXCJhXGByJ1wnJ2JcJGF6JwoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1FDSEFSX09RVU9URV9DUVVPVEUgewoJCXg9JChcZWNobyBmb1xvYlwiYVxgclwnYlwkYXogOyBcZWNobyAiZm9cb2JcImFcYHJcJ2JcJGF6IiA7IFxlY2hvICJmb1xcb2JcXFwiYVxcXGByIlwnImJcXFwkYXoiICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1FDSEFSX09RVU9URV9DUVVPVEUgeyB4PSQoKAoJCWVjaG8gZm9cb2JcImFcYHJcJ2JcJGF6CgkJZWNobyAiZm9cb2JcImFcYHJcJ2JcJGF6IgoJCWVjaG8gJ2ZvXG9iXCJhXGByJ1wnJ2JcJGF6JwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfUUNIQVJfT1FVT1RFX0NRVU9URSB7CgkJeD0kKCAoIFxlY2hvIGZvXG9iXCJhXGByXCdiXCRheiA7IFxlY2hvICJmb1xvYlwiYVxgclwnYlwkYXoiIDsgXGVjaG8gImZvXFxvYlxcXCJhXFxcYHIiXCciYlxcXCRheiIgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfT1NVQlNUX0NTVUJTVF9PUEFUX1NQQVRfQ1BBVCgpIHsKCQlbWyAke2ZvbyNibFwodVwpYn0gPSBAKGJhcnxiYXopIF1dCgl9CglpbmxpbmVfT1NVQlNUX0NTVUJTVF9PUEFUX1NQQVRfQ1BBVCgpIHsKCQlbWyAke2ZvbyNibFwodVwpYn0gPSBAKGJhcnxiYXopIF1dIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9PU1VCU1RfQ1NVQlNUX09QQVRfU1BBVF9DUEFUIHsgeD0kKAoJCVtbICR7Zm9vI2JsXCh1XClifSA9IEAoYmFyfGJheikgXV0KCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9PU1VCU1RfQ1NVQlNUX09QQVRfU1BBVF9DUEFUIHsKCQl4PSQoW1sgJHtmb28jYmxcKHVcKWJ9ID0gQChiYXJ8YmF6KSBdXSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9PU1VCU1RfQ1NVQlNUX09QQVRfU1BBVF9DUEFUIHsgeD0kKCgKCQlbWyAke2ZvbyNibFwodVwpYn0gPSBAKGJhcnxiYXopIF1dCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9PU1VCU1RfQ1NVQlNUX09QQVRfU1BBVF9DUEFUIHsKCQl4PSQoICggW1sgJHtmb28jYmxcKHVcKWJ9ID0gQChiYXJ8YmF6KSBdXSApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9oZXJlZG9jX2Nsb3NlZCgpIHsKCQl4PSQoY2F0IDw8RU9GTgoJCW5vdGUgdGhlcmUgbXVzdCBiZSBubyBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkKCUVPRk4pOyBlY2hvICR4Cgl9CglpbmxpbmVfaGVyZWRvY19jbG9zZWQoKSB7CgkJeD0kKFxjYXQgPDxFT0ZOIAoJCW5vdGUgdGhlcmUgbXVzdCBiZSBubyBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkKCUVPRk4KCSkgCgkJXGVjaG8gJHggCgl9IAoJZnVuY3Rpb24gY29tc3ViX2hlcmVkb2NfY2xvc2VkIHsgeD0kKAoJCXg9JChjYXQgPDxFT0ZOCgkJbm90ZSB0aGVyZSBtdXN0IGJlIG5vIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKQoJRU9GTik7IGVjaG8gJHgKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9oZXJlZG9jX2Nsb3NlZCB7CgkJeD0kKHg9JChcY2F0IDw8RU9GTiAKCQlub3RlIHRoZXJlIG11c3QgYmUgbm8gc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApCglFT0ZOCgkpIDsgXGVjaG8gJHggKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfaGVyZWRvY19jbG9zZWQgeyB4PSQoKAoJCXg9JChjYXQgPDxFT0ZOCgkJbm90ZSB0aGVyZSBtdXN0IGJlIG5vIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKQoJRU9GTik7IGVjaG8gJHgKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX2hlcmVkb2NfY2xvc2VkIHsKCQl4PSQoICggeD0kKFxjYXQgPDxFT0ZOIAoJCW5vdGUgdGhlcmUgbXVzdCBiZSBubyBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkKCUVPRk4KCSkgOyBcZWNobyAkeCApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9oZXJlZG9jX3NwYWNlKCkgewoJCXg9JChjYXQgPDxFT0ZOXCAKCQlub3RlIHRoZSBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkgaXMgYWN0dWFsbHkgcGFydCBvZiB0aGUgaGVyZSBkb2N1bWVudCBtYXJrZXIKCUVPRk4gKTsgZWNobyAkeAoJfQoJaW5saW5lX2hlcmVkb2Nfc3BhY2UoKSB7CgkJeD0kKFxjYXQgPDxFT0ZOXCAgCgkJbm90ZSB0aGUgc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApIGlzIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGhlcmUgZG9jdW1lbnQgbWFya2VyCglFT0ZOIAoJKSAKCQlcZWNobyAkeCAKCX0gCglmdW5jdGlvbiBjb21zdWJfaGVyZWRvY19zcGFjZSB7IHg9JCgKCQl4PSQoY2F0IDw8RU9GTlwgCgkJbm90ZSB0aGUgc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApIGlzIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGhlcmUgZG9jdW1lbnQgbWFya2VyCglFT0ZOICk7IGVjaG8gJHgKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9oZXJlZG9jX3NwYWNlIHsKCQl4PSQoeD0kKFxjYXQgPDxFT0ZOXCAgCgkJbm90ZSB0aGUgc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApIGlzIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGhlcmUgZG9jdW1lbnQgbWFya2VyCglFT0ZOIAoJKSA7IFxlY2hvICR4ICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX2hlcmVkb2Nfc3BhY2UgeyB4PSQoKAoJCXg9JChjYXQgPDxFT0ZOXCAKCQlub3RlIHRoZSBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkgaXMgYWN0dWFsbHkgcGFydCBvZiB0aGUgaGVyZSBkb2N1bWVudCBtYXJrZXIKCUVPRk4gKTsgZWNobyAkeAoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfaGVyZWRvY19zcGFjZSB7CgkJeD0kKCAoIHg9JChcY2F0IDw8RU9GTlwgIAoJCW5vdGUgdGhlIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKSBpcyBhY3R1YWxseSBwYXJ0IG9mIHRoZSBoZXJlIGRvY3VtZW50IG1hcmtlcgoJRU9GTiAKCSkgOyBcZWNobyAkeCApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9wYXRjaF9tb3RkKCkgewoJCXg9JChzeXNjdGwgLW4ga2Vybi52ZXJzaW9uIHwgc2VkIDFxKQoJCVtbIC1zIC9ldGMvbW90ZCAmJiAiJChbWyAiJChoZWFkIC0xIC9ldGMvbW90ZCkiICE9ICR4IF1dICYmIFwKCQkgICAgZWQgLXMgL2V0Yy9tb3RkIDI+JjEgPDwtRU9GCgkJCTEsL15cJC9kCgkJCTBhCgkJCQkkeAoJCQoJCQkuCgkJCXdxCgkJRU9GKSIgPSBAKD8pIF1dICYmIHJtIC1mIC9ldGMvbW90ZAoJCWlmIFtbICEgLXMgL2V0Yy9tb3RkIF1dOyB0aGVuCgkJCWluc3RhbGwgLWMgLW8gcm9vdCAtZyB3aGVlbCAtbSA2NjQgL2Rldi9udWxsIC9ldGMvbW90ZAoJCQlwcmludCAtLSAiJHhcbiIgPi9ldGMvbW90ZAoJCWZpCgl9CglpbmxpbmVfcGF0Y2hfbW90ZCgpIHsKCQl4PSQoXHN5c2N0bCAtbiBrZXJuLnZlcnNpb24gfCBcc2VkIDFxICkgCgkJW1sgLXMgL2V0Yy9tb3RkICYmICIkKFtbICIkKFxoZWFkIC0xIC9ldGMvbW90ZCApIiAhPSAkeCBdXSAmJiBcZWQgLXMgL2V0Yy9tb3RkIDI+JjEgPDwtRU9GIAoJMSwvXlwkL2QKCTBhCgkkeAoJCgkuCgl3cQoJRU9GCgkpIiA9IEAoPykgXV0gJiYgXHJtIC1mIC9ldGMvbW90ZCAKCQlpZiBbWyAhIC1zIC9ldGMvbW90ZCBdXSAKCQl0aGVuCgkJCVxpbnN0YWxsIC1jIC1vIHJvb3QgLWcgd2hlZWwgLW0gNjY0IC9kZXYvbnVsbCAvZXRjL21vdGQgCgkJCVxwcmludCAtLSAiJHhcbiIgPi9ldGMvbW90ZCAKCQlmaSAKCX0gCglmdW5jdGlvbiBjb21zdWJfcGF0Y2hfbW90ZCB7IHg9JCgKCQl4PSQoc3lzY3RsIC1uIGtlcm4udmVyc2lvbiB8IHNlZCAxcSkKCQlbWyAtcyAvZXRjL21vdGQgJiYgIiQoW1sgIiQoaGVhZCAtMSAvZXRjL21vdGQpIiAhPSAkeCBdXSAmJiBcCgkJICAgIGVkIC1zIC9ldGMvbW90ZCAyPiYxIDw8LUVPRgoJCQkxLC9eXCQvZAoJCQkwYQoJCQkJJHgKCQkKCQkJLgoJCQl3cQoJCUVPRikiID0gQCg/KSBdXSAmJiBybSAtZiAvZXRjL21vdGQKCQlpZiBbWyAhIC1zIC9ldGMvbW90ZCBdXTsgdGhlbgoJCQlpbnN0YWxsIC1jIC1vIHJvb3QgLWcgd2hlZWwgLW0gNjY0IC9kZXYvbnVsbCAvZXRjL21vdGQKCQkJcHJpbnQgLS0gIiR4XG4iID4vZXRjL21vdGQKCQlmaQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX3BhdGNoX21vdGQgewoJCXg9JCh4PSQoXHN5c2N0bCAtbiBrZXJuLnZlcnNpb24gfCBcc2VkIDFxICkgOyBbWyAtcyAvZXRjL21vdGQgJiYgIiQoW1sgIiQoXGhlYWQgLTEgL2V0Yy9tb3RkICkiICE9ICR4IF1dICYmIFxlZCAtcyAvZXRjL21vdGQgMj4mMSA8PC1FT0YgCgkxLC9eXCQvZAoJMGEKCSR4CgkKCS4KCXdxCglFT0YKCSkiID0gQCg/KSBdXSAmJiBccm0gLWYgL2V0Yy9tb3RkIDsgaWYgW1sgISAtcyAvZXRjL21vdGQgXV0gOyB0aGVuIFxpbnN0YWxsIC1jIC1vIHJvb3QgLWcgd2hlZWwgLW0gNjY0IC9kZXYvbnVsbCAvZXRjL21vdGQgOyBccHJpbnQgLS0gIiR4XG4iID4vZXRjL21vdGQgOyBmaSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9wYXRjaF9tb3RkIHsgeD0kKCgKCQl4PSQoc3lzY3RsIC1uIGtlcm4udmVyc2lvbiB8IHNlZCAxcSkKCQlbWyAtcyAvZXRjL21vdGQgJiYgIiQoW1sgIiQoaGVhZCAtMSAvZXRjL21vdGQpIiAhPSAkeCBdXSAmJiBcCgkJICAgIGVkIC1zIC9ldGMvbW90ZCAyPiYxIDw8LUVPRgoJCQkxLC9eXCQvZAoJCQkwYQoJCQkJJHgKCQkKCQkJLgoJCQl3cQoJCUVPRikiID0gQCg/KSBdXSAmJiBybSAtZiAvZXRjL21vdGQKCQlpZiBbWyAhIC1zIC9ldGMvbW90ZCBdXTsgdGhlbgoJCQlpbnN0YWxsIC1jIC1vIHJvb3QgLWcgd2hlZWwgLW0gNjY0IC9kZXYvbnVsbCAvZXRjL21vdGQKCQkJcHJpbnQgLS0gIiR4XG4iID4vZXRjL21vdGQKCQlmaQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfcGF0Y2hfbW90ZCB7CgkJeD0kKCAoIHg9JChcc3lzY3RsIC1uIGtlcm4udmVyc2lvbiB8IFxzZWQgMXEgKSA7IFtbIC1zIC9ldGMvbW90ZCAmJiAiJChbWyAiJChcaGVhZCAtMSAvZXRjL21vdGQgKSIgIT0gJHggXV0gJiYgXGVkIC1zIC9ldGMvbW90ZCAyPiYxIDw8LUVPRiAKCTEsL15cJC9kCgkwYQoJJHgKCQoJLgoJd3EKCUVPRgoJKSIgPSBAKD8pIF1dICYmIFxybSAtZiAvZXRjL21vdGQgOyBpZiBbWyAhIC1zIC9ldGMvbW90ZCBdXSA7IHRoZW4gXGluc3RhbGwgLWMgLW8gcm9vdCAtZyB3aGVlbCAtbSA2NjQgL2Rldi9udWxsIC9ldGMvbW90ZCA7IFxwcmludCAtLSAiJHhcbiIgPi9ldGMvbW90ZCA7IGZpICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX3dkYXJyYXNzaWduKCkgewoJCWNhc2UgeCBpbgoJCXgpIGErPWI7IGMrPShkIGUpCgkJZXNhYwoJfQoJaW5saW5lX3dkYXJyYXNzaWduKCkgewoJCWNhc2UgeCBpbgoJCSh4KQoJCQlhKz1iIAoJCQlcXGJ1aWx0aW4gc2V0IC1BIGMrIC0tIGQgZSAKCQkJOzsKCQllc2FjIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl93ZGFycmFzc2lnbiB7IHg9JCgKCQljYXNlIHggaW4KCQl4KSBhKz1iOyBjKz0oZCBlKQoJCWVzYWMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl93ZGFycmFzc2lnbiB7CgkJeD0kKGNhc2UgeCBpbiAoeCkgYSs9YiA7IFxcYnVpbHRpbiBzZXQgLUEgYysgLS0gZCBlICA7OyBlc2FjICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX3dkYXJyYXNzaWduIHsgeD0kKCgKCQljYXNlIHggaW4KCQl4KSBhKz1iOyBjKz0oZCBlKQoJCWVzYWMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX3dkYXJyYXNzaWduIHsKCQl4PSQoICggY2FzZSB4IGluICh4KSBhKz1iIDsgXFxidWlsdGluIHNldCAtQSBjKyAtLSBkIGUgIDs7IGVzYWMgKSB8IFx0ciB1IHggKSAKCX0gCi0tLQpuYW1lOiBjb21zdWItdG9ydHVyZS1pbwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoZSB0cmVlIGR1bXAgZnVuY3Rpb25zIHdvcmsgY29ycmVjdGx5IHdpdGggSS9PIHJlZGlyZWN0aW9uCnN0ZGluOgoJaWYgW1sgLXogJF9fcHJvZ25hbWUgXV07IHRoZW4gZWNobyA+JjIgY2FsbCBtZSB3aXRoIF9fcHJvZ25hbWU7IGV4aXQgMTsgZmkKCXdoaWxlIElGUz0gcmVhZCAtciBsaW5lOyBkbwoJCWlmIFtbICRsaW5lID0gJyMxJyBdXTsgdGhlbgoJCQlsYXN0Zj0wCgkJCWNvbnRpbnVlCgkJZWxpZiBbWyAkbGluZSA9IEVPRk4qIF1dOyB0aGVuCgkJCWZib2R5PSRmYm9keSQnXG4nJGxpbmUKCQkJY29udGludWUKCQllbGlmIFtbICRsaW5lICE9ICcjJyogXV07IHRoZW4KCQkJZmJvZHk9JGZib2R5JCdcblx0JyRsaW5lCgkJCWNvbnRpbnVlCgkJZmkKCQlpZiAoKCBsYXN0ZiApKTsgdGhlbgoJCQl4PSJpbmxpbmVfJHtuZXh0Zn0oKSB7IiRmYm9keSQnXG59XG4nCgkJCXByaW50IC1uciAtLSAiJHgiCgkJCXByaW50IC1yIC0tICIke3h9dHlwZXNldCAtZiBpbmxpbmVfJG5leHRmIiB8ICIkX19wcm9nbmFtZSIKCQkJeD0iZnVuY3Rpb24gY29tc3ViXyRuZXh0ZiB7IHg9XCQoIiRmYm9keSQnXG4pOyB9XG4nCgkJCXByaW50IC1uciAtLSAiJHgiCgkJCXByaW50IC1yIC0tICIke3h9dHlwZXNldCAtZiBjb21zdWJfJG5leHRmIiB8ICIkX19wcm9nbmFtZSIKCQkJeD0iZnVuY3Rpb24gcmVyZWFkXyRuZXh0ZiB7IHg9XCQoKCIkZmJvZHkkJ1xuKXx0ciB1IHgpOyB9XG4nCgkJCXByaW50IC1uciAtLSAiJHgiCgkJCXByaW50IC1yIC0tICIke3h9dHlwZXNldCAtZiByZXJlYWRfJG5leHRmIiB8ICIkX19wcm9nbmFtZSIKCQlmaQoJCWxhc3RmPTEKCQlmYm9keT0KCQluZXh0Zj0ke2xpbmUjP30KCWRvbmUgPDwnRU9EJwoJIzEKCSNUQ09NCgl2YXJhPTEgIHZhcmI9JzIgIDMnICBjbWQgIGFyZzEgICRhcmcyICAiJGFyZzMgIDQiID4mMwoJI1RQQVJFTl9UUElQRV9UTElTVAoJKGVjaG8gJGZvbyAgfCAgdHIgLWRjIDAtOSA+JjM7IGVjaG8gPiYzKSA+JjMKCSNUQU5EX1RPUgoJY21kICA+JjMgJiYgID4mMyBlY2hvIGphICB8fCAgZWNobyA+JjMgbmVpbgoJI1RTRUxFQ1QKCXNlbGVjdCAgZmlsZSAgaW4gICo7ICBkbyAgZWNobyAgIjwkZmlsZT4iIDsgIGJyZWFrID4mMyA7ICBkb25lID4mMwoJI1RGT1JfVFRJTUUKCWZvciAgaSAgaW4gIHsxLDIsM30gIDsgIGRvICB0aW1lICA+JjMgZWNobyAgJGkgOyAgZG9uZSA+JjMKCSNUQ0FTRQoJY2FzZSAgJGZvbyAgaW4gIDEpICBlY2hvIGVpbnMgPiYzOyYgMikgZWNobyB6d2VpID4mMyAgO3wgKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuID4mMzs7ICBlc2FjID4mMwoJI1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYKCWlmICAhICBbWyAgMSAgPSAgMSAgXV0gID4mMyA7ICB0aGVuICBlY2hvIGVpbnM7ICBlbGlmIFtbIDEgPSAyIF1dID4mMzsgdGhlbiBlY2hvIHp3ZWkgIDtlbHNlIGVjaG8gZHJlaTsgZmkgPiYzCgkjVFdISUxFCglpPTE7IHdoaWxlICgoIGkgPCAxMCApKSA+JjM7IGRvIGVjaG8gJGk7IGxldCArK2k7IGRvbmUgPiYzCgkjVFVOVElMCglpPTEwOyB1bnRpbCAgKCggIS0taSApKSA+JjMgOyBkbyBlY2hvICRpOyBkb25lID4mMwoJI1RDT1BST0MKCWNhdCAgKiAgPiYzIHwmICA+JjMgbHMKCSNURlVOQ1RfVEJSQUNFX1RBU1lOQwoJZnVuY3Rpb24gIGtvcm4gIHsgIGVjaG8gZWluczsgZWNobyA+JjMgendlaSA7ICB9Cglib3VybmUgICgpICB7ICBsb2dnZXIgKiAgPiYzICYgIH0KCSNDT01TVUJfRVhQUlNVQgoJZWNobyAkKHRydWUgPiYzKSAkKCgxKyAyKSkKCSMwCglFT0QKZXhwZWN0ZWQtc3Rkb3V0OgoJaW5saW5lX1RDT00oKSB7CgkJdmFyYT0xICB2YXJiPScyICAzJyAgY21kICBhcmcxICAkYXJnMiAgIiRhcmczICA0IiA+JjMKCX0KCWlubGluZV9UQ09NKCkgewoJCXZhcmE9MSB2YXJiPSIyICAzIiBcY21kIGFyZzEgJGFyZzIgIiRhcmczICA0IiA+JjMgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RDT00geyB4PSQoCgkJdmFyYT0xICB2YXJiPScyICAzJyAgY21kICBhcmcxICAkYXJnMiAgIiRhcmczICA0IiA+JjMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UQ09NIHsKCQl4PSQodmFyYT0xIHZhcmI9IjIgIDMiIFxjbWQgYXJnMSAkYXJnMiAiJGFyZzMgIDQiID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UQ09NIHsgeD0kKCgKCQl2YXJhPTEgIHZhcmI9JzIgIDMnICBjbWQgIGFyZzEgICRhcmcyICAiJGFyZzMgIDQiID4mMwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVENPTSB7CgkJeD0kKCAoIHZhcmE9MSB2YXJiPSIyICAzIiBcY21kIGFyZzEgJGFyZzIgIiRhcmczICA0IiA+JjMgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVFBBUkVOX1RQSVBFX1RMSVNUKCkgewoJCShlY2hvICRmb28gIHwgIHRyIC1kYyAwLTkgPiYzOyBlY2hvID4mMykgPiYzCgl9CglpbmxpbmVfVFBBUkVOX1RQSVBFX1RMSVNUKCkgewoJCSggXGVjaG8gJGZvbyB8IFx0ciAtZGMgMC05ID4mMyAKCQkgIFxlY2hvID4mMyApID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVFBBUkVOX1RQSVBFX1RMSVNUIHsgeD0kKAoJCShlY2hvICRmb28gIHwgIHRyIC1kYyAwLTkgPiYzOyBlY2hvID4mMykgPiYzCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVFBBUkVOX1RQSVBFX1RMSVNUIHsKCQl4PSQoICggXGVjaG8gJGZvbyB8IFx0ciAtZGMgMC05ID4mMyA7IFxlY2hvID4mMyApID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UUEFSRU5fVFBJUEVfVExJU1QgeyB4PSQoKAoJCShlY2hvICRmb28gIHwgIHRyIC1kYyAwLTkgPiYzOyBlY2hvID4mMykgPiYzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UUEFSRU5fVFBJUEVfVExJU1QgewoJCXg9JCggKCAoIFxlY2hvICRmb28gfCBcdHIgLWRjIDAtOSA+JjMgOyBcZWNobyA+JjMgKSA+JjMgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVEFORF9UT1IoKSB7CgkJY21kICA+JjMgJiYgID4mMyBlY2hvIGphICB8fCAgZWNobyA+JjMgbmVpbgoJfQoJaW5saW5lX1RBTkRfVE9SKCkgewoJCVxjbWQgPiYzICYmIFxlY2hvIGphID4mMyB8fCBcZWNobyBuZWluID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVEFORF9UT1IgeyB4PSQoCgkJY21kICA+JjMgJiYgID4mMyBlY2hvIGphICB8fCAgZWNobyA+JjMgbmVpbgoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RBTkRfVE9SIHsKCQl4PSQoXGNtZCA+JjMgJiYgXGVjaG8gamEgPiYzIHx8IFxlY2hvIG5laW4gPiYzICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RBTkRfVE9SIHsgeD0kKCgKCQljbWQgID4mMyAmJiAgPiYzIGVjaG8gamEgIHx8ICBlY2hvID4mMyBuZWluCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UQU5EX1RPUiB7CgkJeD0kKCAoIFxjbWQgPiYzICYmIFxlY2hvIGphID4mMyB8fCBcZWNobyBuZWluID4mMyApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9UU0VMRUNUKCkgewoJCXNlbGVjdCAgZmlsZSAgaW4gICo7ICBkbyAgZWNobyAgIjwkZmlsZT4iIDsgIGJyZWFrID4mMyA7ICBkb25lID4mMwoJfQoJaW5saW5lX1RTRUxFQ1QoKSB7CgkJc2VsZWN0IGZpbGUgaW4gKiAKCQlkbwoJCQlcZWNobyAiPCRmaWxlPiIgCgkJCVxicmVhayA+JjMgCgkJZG9uZSA+JjMgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RTRUxFQ1QgeyB4PSQoCgkJc2VsZWN0ICBmaWxlICBpbiAgKjsgIGRvICBlY2hvICAiPCRmaWxlPiIgOyAgYnJlYWsgPiYzIDsgIGRvbmUgPiYzCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVFNFTEVDVCB7CgkJeD0kKHNlbGVjdCBmaWxlIGluICogOyBkbyBcZWNobyAiPCRmaWxlPiIgOyBcYnJlYWsgPiYzIDsgZG9uZSA+JjMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVFNFTEVDVCB7IHg9JCgoCgkJc2VsZWN0ICBmaWxlICBpbiAgKjsgIGRvICBlY2hvICAiPCRmaWxlPiIgOyAgYnJlYWsgPiYzIDsgIGRvbmUgPiYzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UU0VMRUNUIHsKCQl4PSQoICggc2VsZWN0IGZpbGUgaW4gKiA7IGRvIFxlY2hvICI8JGZpbGU+IiA7IFxicmVhayA+JjMgOyBkb25lID4mMyApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9URk9SX1RUSU1FKCkgewoJCWZvciAgaSAgaW4gIHsxLDIsM30gIDsgIGRvICB0aW1lICA+JjMgZWNobyAgJGkgOyAgZG9uZSA+JjMKCX0KCWlubGluZV9URk9SX1RUSU1FKCkgewoJCWZvciBpIGluIHsxLDIsM30gCgkJZG8KCQkJdGltZSBcZWNobyAkaSA+JjMgCgkJZG9uZSA+JjMgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RGT1JfVFRJTUUgeyB4PSQoCgkJZm9yICBpICBpbiAgezEsMiwzfSAgOyAgZG8gIHRpbWUgID4mMyBlY2hvICAkaSA7ICBkb25lID4mMwoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RGT1JfVFRJTUUgewoJCXg9JChmb3IgaSBpbiB7MSwyLDN9IDsgZG8gdGltZSBcZWNobyAkaSA+JjMgOyBkb25lID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9URk9SX1RUSU1FIHsgeD0kKCgKCQlmb3IgIGkgIGluICB7MSwyLDN9ICA7ICBkbyAgdGltZSAgPiYzIGVjaG8gICRpIDsgIGRvbmUgPiYzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9URk9SX1RUSU1FIHsKCQl4PSQoICggZm9yIGkgaW4gezEsMiwzfSA7IGRvIHRpbWUgXGVjaG8gJGkgPiYzIDsgZG9uZSA+JjMgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVENBU0UoKSB7CgkJY2FzZSAgJGZvbyAgaW4gIDEpICBlY2hvIGVpbnMgPiYzOyYgMikgZWNobyB6d2VpID4mMyAgO3wgKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuID4mMzs7ICBlc2FjID4mMwoJfQoJaW5saW5lX1RDQVNFKCkgewoJCWNhc2UgJGZvbyBpbgoJCSgxKQoJCQlcZWNobyBlaW5zID4mMyAKCQkJOyYKCQkoMikKCQkJXGVjaG8gendlaSA+JjMgCgkJCTt8CgkJKCopCgkJCVxlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gPiYzIAoJCQk7OwoJCWVzYWMgPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UQ0FTRSB7IHg9JCgKCQljYXNlICAkZm9vICBpbiAgMSkgIGVjaG8gZWlucyA+JjM7JiAyKSBlY2hvIHp3ZWkgPiYzICA7fCAqKSBlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gPiYzOzsgIGVzYWMgPiYzCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVENBU0UgewoJCXg9JChjYXNlICRmb28gaW4gKDEpIFxlY2hvIGVpbnMgPiYzICA7JiAoMikgXGVjaG8gendlaSA+JjMgIDt8ICgqKSBcZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuID4mMyAgOzsgZXNhYyA+JjMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVENBU0UgeyB4PSQoKAoJCWNhc2UgICRmb28gIGluICAxKSAgZWNobyBlaW5zID4mMzsmIDIpIGVjaG8gendlaSA+JjMgIDt8ICopIGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbiA+JjM7OyAgZXNhYyA+JjMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RDQVNFIHsKCQl4PSQoICggY2FzZSAkZm9vIGluICgxKSBcZWNobyBlaW5zID4mMyAgOyYgKDIpIFxlY2hvIHp3ZWkgPiYzICA7fCAoKikgXGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbiA+JjMgIDs7IGVzYWMgPiYzICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYoKSB7CgkJaWYgICEgIFtbICAxICA9ICAxICBdXSAgPiYzIDsgIHRoZW4gIGVjaG8gZWluczsgIGVsaWYgW1sgMSA9IDIgXV0gPiYzOyB0aGVuIGVjaG8gendlaSAgO2Vsc2UgZWNobyBkcmVpOyBmaSA+JjMKCX0KCWlubGluZV9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGKCkgewoJCWlmICEgW1sgMSA9IDEgXV0gPiYzIAoJCXRoZW4KCQkJXGVjaG8gZWlucyAKCQllbGlmIFtbIDEgPSAyIF1dID4mMyAKCQl0aGVuCgkJCVxlY2hvIHp3ZWkgCgkJZWxzZQoJCQlcZWNobyBkcmVpIAoJCWZpID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRiB7IHg9JCgKCQlpZiAgISAgW1sgIDEgID0gIDEgIF1dICA+JjMgOyAgdGhlbiAgZWNobyBlaW5zOyAgZWxpZiBbWyAxID0gMiBdXSA+JjM7IHRoZW4gZWNobyB6d2VpICA7ZWxzZSBlY2hvIGRyZWk7IGZpID4mMwoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYgewoJCXg9JChpZiAhIFtbIDEgPSAxIF1dID4mMyA7IHRoZW4gXGVjaG8gZWlucyA7IGVsaWYgW1sgMSA9IDIgXV0gPiYzIDsgdGhlbiBcZWNobyB6d2VpIDsgZWxzZSBcZWNobyBkcmVpIDsgZmkgPiYzICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYgeyB4PSQoKAoJCWlmICAhICBbWyAgMSAgPSAgMSAgXV0gID4mMyA7ICB0aGVuICBlY2hvIGVpbnM7ICBlbGlmIFtbIDEgPSAyIF1dID4mMzsgdGhlbiBlY2hvIHp3ZWkgIDtlbHNlIGVjaG8gZHJlaTsgZmkgPiYzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGIHsKCQl4PSQoICggaWYgISBbWyAxID0gMSBdXSA+JjMgOyB0aGVuIFxlY2hvIGVpbnMgOyBlbGlmIFtbIDEgPSAyIF1dID4mMyA7IHRoZW4gXGVjaG8gendlaSA7IGVsc2UgXGVjaG8gZHJlaSA7IGZpID4mMyApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9UV0hJTEUoKSB7CgkJaT0xOyB3aGlsZSAoKCBpIDwgMTAgKSkgPiYzOyBkbyBlY2hvICRpOyBsZXQgKytpOyBkb25lID4mMwoJfQoJaW5saW5lX1RXSElMRSgpIHsKCQlpPTEgCgkJd2hpbGUgewoJCQkgICAgICBcXGJ1aWx0aW4gbGV0ICIgaSA8IDEwICIgCgkJICAgICAgfSA+JjMgCgkJZG8KCQkJXGVjaG8gJGkgCgkJCVxsZXQgKytpIAoJCWRvbmUgPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UV0hJTEUgeyB4PSQoCgkJaT0xOyB3aGlsZSAoKCBpIDwgMTAgKSkgPiYzOyBkbyBlY2hvICRpOyBsZXQgKytpOyBkb25lID4mMwoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RXSElMRSB7CgkJeD0kKGk9MSA7IHdoaWxlIHsgXFxidWlsdGluIGxldCAiIGkgPCAxMCAiIDsgfSA+JjMgOyBkbyBcZWNobyAkaSA7IFxsZXQgKytpIDsgZG9uZSA+JjMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVFdISUxFIHsgeD0kKCgKCQlpPTE7IHdoaWxlICgoIGkgPCAxMCApKSA+JjM7IGRvIGVjaG8gJGk7IGxldCArK2k7IGRvbmUgPiYzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UV0hJTEUgewoJCXg9JCggKCBpPTEgOyB3aGlsZSB7IFxcYnVpbHRpbiBsZXQgIiBpIDwgMTAgIiA7IH0gPiYzIDsgZG8gXGVjaG8gJGkgOyBcbGV0ICsraSA7IGRvbmUgPiYzICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RVTlRJTCgpIHsKCQlpPTEwOyB1bnRpbCAgKCggIS0taSApKSA+JjMgOyBkbyBlY2hvICRpOyBkb25lID4mMwoJfQoJaW5saW5lX1RVTlRJTCgpIHsKCQlpPTEwIAoJCXVudGlsIHsKCQkJICAgICAgXFxidWlsdGluIGxldCAiICEtLWkgIiAKCQkgICAgICB9ID4mMyAKCQlkbwoJCQlcZWNobyAkaSAKCQlkb25lID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVFVOVElMIHsgeD0kKAoJCWk9MTA7IHVudGlsICAoKCAhLS1pICkpID4mMyA7IGRvIGVjaG8gJGk7IGRvbmUgPiYzCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVFVOVElMIHsKCQl4PSQoaT0xMCA7IHVudGlsIHsgXFxidWlsdGluIGxldCAiICEtLWkgIiA7IH0gPiYzIDsgZG8gXGVjaG8gJGkgOyBkb25lID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UVU5USUwgeyB4PSQoKAoJCWk9MTA7IHVudGlsICAoKCAhLS1pICkpID4mMyA7IGRvIGVjaG8gJGk7IGRvbmUgPiYzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UVU5USUwgewoJCXg9JCggKCBpPTEwIDsgdW50aWwgeyBcXGJ1aWx0aW4gbGV0ICIgIS0taSAiIDsgfSA+JjMgOyBkbyBcZWNobyAkaSA7IGRvbmUgPiYzICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RDT1BST0MoKSB7CgkJY2F0ICAqICA+JjMgfCYgID4mMyBscwoJfQoJaW5saW5lX1RDT1BST0MoKSB7CgkJXGNhdCAqID4mMyB8JiAKCQlcbHMgPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UQ09QUk9DIHsgeD0kKAoJCWNhdCAgKiAgPiYzIHwmICA+JjMgbHMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UQ09QUk9DIHsKCQl4PSQoXGNhdCAqID4mMyB8JiAgXGxzID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UQ09QUk9DIHsgeD0kKCgKCQljYXQgICogID4mMyB8JiAgPiYzIGxzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UQ09QUk9DIHsKCQl4PSQoICggXGNhdCAqID4mMyB8JiAgXGxzID4mMyApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9URlVOQ1RfVEJSQUNFX1RBU1lOQygpIHsKCQlmdW5jdGlvbiAga29ybiAgeyAgZWNobyBlaW5zOyBlY2hvID4mMyB6d2VpIDsgIH0KCQlib3VybmUgICgpICB7ICBsb2dnZXIgKiAgPiYzICYgIH0KCX0KCWlubGluZV9URlVOQ1RfVEJSQUNFX1RBU1lOQygpIHsKCQlmdW5jdGlvbiBrb3JuIHsKCQkJXGVjaG8gZWlucyAKCQkJXGVjaG8gendlaSA+JjMgCgkJfSAKCQlib3VybmUoKSB7CgkJCVxsb2dnZXIgKiA+JjMgJiAKCQl9IAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9URlVOQ1RfVEJSQUNFX1RBU1lOQyB7IHg9JCgKCQlmdW5jdGlvbiAga29ybiAgeyAgZWNobyBlaW5zOyBlY2hvID4mMyB6d2VpIDsgIH0KCQlib3VybmUgICgpICB7ICBsb2dnZXIgKiAgPiYzICYgIH0KCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9URlVOQ1RfVEJSQUNFX1RBU1lOQyB7CgkJeD0kKGZ1bmN0aW9uIGtvcm4geyBcZWNobyBlaW5zIDsgXGVjaG8gendlaSA+JjMgOyB9IDsgYm91cm5lKCkgeyBcbG9nZ2VyICogPiYzICYgIH0gKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVEZVTkNUX1RCUkFDRV9UQVNZTkMgeyB4PSQoKAoJCWZ1bmN0aW9uICBrb3JuICB7ICBlY2hvIGVpbnM7IGVjaG8gPiYzIHp3ZWkgOyAgfQoJCWJvdXJuZSAgKCkgIHsgIGxvZ2dlciAqICA+JjMgJiAgfQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVEZVTkNUX1RCUkFDRV9UQVNZTkMgewoJCXg9JCggKCBmdW5jdGlvbiBrb3JuIHsgXGVjaG8gZWlucyA7IFxlY2hvIHp3ZWkgPiYzIDsgfSA7IGJvdXJuZSgpIHsgXGxvZ2dlciAqID4mMyAmICB9ICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX0NPTVNVQl9FWFBSU1VCKCkgewoJCWVjaG8gJCh0cnVlID4mMykgJCgoMSsgMikpCgl9CglpbmxpbmVfQ09NU1VCX0VYUFJTVUIoKSB7CgkJXGVjaG8gJChcdHJ1ZSA+JjMgKSAkKCgxKyAyKSkgCgl9IAoJZnVuY3Rpb24gY29tc3ViX0NPTVNVQl9FWFBSU1VCIHsgeD0kKAoJCWVjaG8gJCh0cnVlID4mMykgJCgoMSsgMikpCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfQ09NU1VCX0VYUFJTVUIgewoJCXg9JChcZWNobyAkKFx0cnVlID4mMyApICQoKDErIDIpKSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9DT01TVUJfRVhQUlNVQiB7IHg9JCgoCgkJZWNobyAkKHRydWUgPiYzKSAkKCgxKyAyKSkKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX0NPTVNVQl9FWFBSU1VCIHsKCQl4PSQoICggXGVjaG8gJChcdHJ1ZSA+JjMgKSAkKCgxKyAyKSkgKSB8IFx0ciB1IHggKSAKCX0gCi0tLQpuYW1lOiBmdW5zdWItMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgbm9uLXN1YmVudmlyb25tZW50IGNvbW1hbmQgc3Vic3RpdHV0aW9uIHdvcmtzCnN0ZGluOgoJc2V0IC1lCglmb289YmFyCgllY2hvICJvYiAkZm9vIC4iCgllY2hvICIkewoJCWVjaG8gImliICRmb28gOiIKCQlmb289YmF6CgkJZWNobyAiaWEgJGZvbyA6IgoJCWZhbHNlCgl9IiAuCgllY2hvICJvYSAkZm9vIC4iCmV4cGVjdGVkLXN0ZG91dDoKCW9iIGJhciAuCglpYiBiYXIgOgoJaWEgYmF6IDogLgoJb2EgYmF6IC4KLS0tCm5hbWU6IGZ1bnN1Yi0yCmRlc2NyaXB0aW9uOgoJWW91IGNhbiBub3cgcmVsaWFibHkgdXNlIGxvY2FsIGFuZCByZXR1cm4gaW4gZnVuc3VicwoJKG5vdCBleGl0IHRob3VnaCkKc3RkaW46Cgl4PXE7IGU9MTsgeD0keyBlY2hvIGE7IGU9MjsgZWNobyB4JGU7fTsgZWNobyAxOnkkeCwkZSwkPy4KCXg9cTsgZT0xOyB4PSR7IGVjaG8gYTsgdHlwZXNldCBlPTI7IGVjaG8geCRlO307IGVjaG8gMjp5JHgsJGUsJD8uCgl4PXE7IGU9MTsgeD0keyBlY2hvIGE7IHR5cGVzZXQgZT0yOyByZXR1cm4gMzsgZWNobyB4JGU7fTsgZWNobyAzOnkkeCwkZSwkPy4KZXhwZWN0ZWQtc3Rkb3V0OgoJMTp5YSB4MiwyLDAuCgkyOnlhIHgyLDEsMC4KCTM6eWEsMSwzLgotLS0KbmFtZTogdmFsc3ViLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICJ2YWx1ZSBzdWJzdGl0dXRpb25zIiB3b3JrIGFzIGFkdmVydGlzZWQKc3RkaW46Cgl4PTEKCXk9MgoJej0zCglSRVBMWT00CgllY2hvICJiZWZvcmU6CXg8JHg+IHk8JHk+IHo8JHo+IFI8JFJFUExZPiIKCXg9JHt8CgkJbG9jYWwgeQoJCWVjaG8gInN0YXJ0Ogl4PCR4PiB5PCR5PiB6PCR6PiBSPCRSRVBMWT4iCgkJeD01CgkJeT02CgkJej03CgkJUkVQTFk9OAoJCWVjaG8gImVuZDoJeDwkeD4geTwkeT4gejwkej4gUjwkUkVQTFk+IgoJfQoJZWNobyAiYWZ0ZXI6CXg8JHg+IHk8JHk+IHo8JHo+IFI8JFJFUExZPiIKCSMgZW5zdXJlIHRyYWlsaW5nIG5ld2xpbmVzIGFyZSBrZXB0Cgl0PSR7fFJFUExZPSQnZm9vXG5cbic7fQoJdHlwZXNldCAtcCB0CgllY2hvIC1uIHRoaXMgdXNlZCB0byBzZWdmYXVsdAoJZWNobyAke3x0cnVlO30kKHRydWUpLgpleHBlY3RlZC1zdGRvdXQ6CgliZWZvcmU6CXg8MT4geTwyPiB6PDM+IFI8ND4KCXN0YXJ0Ogl4PDE+IHk8PiB6PDM+IFI8PgoJZW5kOgl4PDU+IHk8Nj4gejw3PiBSPDg+CglhZnRlcjoJeDw4PiB5PDI+IHo8Nz4gUjw0PgoJdHlwZXNldCB0PSQnZm9vXG5cbicKCXRoaXMgdXNlZCB0byBzZWdmYXVsdC4KLS0tCm5hbWU6IGV2ZW50LXN1YnN0LTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICchJyBzdWJzdGl0dXRpb24gaW4gbm9uaW50ZXJhY3RpdmUgbW9kZSBpcyBpZ25vcmVkCmZpbGUtc2V0dXA6IGZpbGUgNzU1ICJmYWxzZXR0byIKCSMhIC9iaW4vc2gKCWVjaG8gbW9sdG8gYmVuZQoJZXhpdCA0MgpmaWxlLXNldHVwOiBmaWxlIDc1NSAiIWZhbHNlIgoJIyEgL2Jpbi9zaAoJZWNobyBzaQpzdGRpbjoKCWV4cG9ydCBQQVRIPS4kUEFUSFNFUCRQQVRICglmYWxzZXR0bwoJZWNobyB5ZWFwCgkhZmFsc2UKCWVjaG8gbWVvdwoJISBmYWxzZQoJZWNobyA9ICQ/CglpZgoJISBmYWxzZTsgdGhlbiBlY2hvIGZvbzsgZWxzZSBlY2hvIGJhcjsgZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJbW9sdG8gYmVuZQoJeWVhcAoJc2kKCW1lb3cKCT0gMAoJZm9vCi0tLQpuYW1lOiBldmVudC1zdWJzdC0wCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAnIScgc3Vic3RpdHV0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgaXMgaWdub3JlZApuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZmlsZS1zZXR1cDogZmlsZSA3NTUgImZhbHNldHRvIgoJIyEgL2Jpbi9zaAoJZWNobyBtb2x0byBiZW5lCglleGl0IDQyCmZpbGUtc2V0dXA6IGZpbGUgNzU1ICIhZmFsc2UiCgkjISAvYmluL3NoCgllY2hvIHNpCnN0ZGluOgoJZXhwb3J0IFBBVEg9LiRQQVRIU0VQJFBBVEgKCWZhbHNldHRvCgllY2hvIHllYXAKCSFmYWxzZQoJZWNobyBtZW93CgkhIGZhbHNlCgllY2hvID0gJD8KCWlmCgkhIGZhbHNlOyB0aGVuIGVjaG8gZm9vOyBlbHNlIGVjaG8gYmFyOyBmaQpleHBlY3RlZC1zdGRvdXQ6Cgltb2x0byBiZW5lCgl5ZWFwCglzaQoJbWVvdwoJPSAwCglmb28KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvLiovCi0tLQpuYW1lOiBub3Vuc2V0LTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICJzZXQgLXUiIG1hdGNoZXMgKGZ1dHVyZSkgU1VTdjQgcmVxdWlyZW1lbnQKc3RkaW46Cgkoc2V0IC11Cgl0cnkoKSB7CgkJbG9jYWwgdgoJCWV2YWwgdj1cJCQxCgkJaWYgW1sgLW4gJHYgXV07IHRoZW4KCQkJZWNobyAkMT1uegoJCWVsc2UKCQkJZWNobyAkMT16ZgoJCWZpCgl9Cgl4PXkKCShlY2hvICR4KQoJZWNobyA9MQoJKGVjaG8gJHkpCgllY2hvID0yCgkodHJ5IHgpCgllY2hvID0zCgkodHJ5IHkpCgllY2hvID00CgkodHJ5IDApCgllY2hvID01CgkodHJ5IDIpCgllY2hvID02CgkodHJ5KQoJZWNobyA9NwoJKGVjaG8gYXQ9JEApCgllY2hvID04CgkoZWNobyBhc3Rlcmlzaz0kKikKCWVjaG8gPTkKCShlY2hvICQ/KQoJZWNobyA9MTAKCShlY2hvICQhKQoJZWNobyA9MTEKCShlY2hvICQtKQoJZWNobyA9MTIKCSMoZWNobyAkXykKCSNlY2hvID0xMwoJKGVjaG8gJCMpCgllY2hvID0xNAoJKG15cGlkPSQkOyB0cnkgbXlwaWQpCgllY2hvID0xNQoJKSAyPiYxIHwgc2VkIC1lICdzL15bXl1dKl0vLycgLWUgJ3MvXlteOl0qOiAqLy8nCglleGl0ICR7UElQRVNUQVRVU1swXX0KZXhwZWN0ZWQtc3Rkb3V0OgoJeQoJPTEKCXk6IHBhcmFtZXRlciBub3Qgc2V0Cgk9MgoJeD1uegoJPTMKCXk6IHBhcmFtZXRlciBub3Qgc2V0Cgk9NAoJMD1uegoJPTUKCTI6IHBhcmFtZXRlciBub3Qgc2V0Cgk9NgoJMTogcGFyYW1ldGVyIG5vdCBzZXQKCT03CglhdD0KCT04Cglhc3Rlcmlzaz0KCT05CgkwCgk9MTAKCSE6IHBhcmFtZXRlciBub3Qgc2V0Cgk9MTEKCXVzaAoJPTEyCgkwCgk9MTQKCW15cGlkPW56Cgk9MTUKLS0tCm5hbWU6IG5hbWVyZWYtMQpkZXNjcmlwdGlvbjoKCVRlc3RzdWl0ZSBmb3IgbmFtZXJlZiAoYm91bmQgdmFyaWFibGVzKQpzdGRpbjoKCWJhcj1nbG9iYWwKCXR5cGVzZXQgLW4gaXIyPWJhcgoJdHlwZXNldCAtbiBpbmQ9aXIyCgllY2hvICFpbmQ6ICR7IWluZH0KCWVjaG8gaW5kOiAkaW5kCgllY2hvICFpcjI6ICR7IWlyMn0KCWVjaG8gaXIyOiAkaXIyCgl0eXBlc2V0ICtuIGluZAoJZWNobyAhaW5kOiAkeyFpbmR9CgllY2hvIGluZDogJGluZAoJdHlwZXNldCAtbiBpcjI9aW5kCgllY2hvICFpcjI6ICR7IWlyMn0KCWVjaG8gaXIyOiAkaXIyCglzZXR8Z3JlcCBeaXIyfHNlZCAncy9eL3MxOiAvJwoJdHlwZXNldHxncmVwICcgaXIyJ3xzZWQgLWUgJ3MvXi9zMjogLycgLWUgJ3MvbmFtZXJlZi90eXBlc2V0IC1uLycKCXNldCAtQSBibHViIC0tIGUxIGUyIGUzCgl0eXBlc2V0IC1uIGluZD1ibHViCgl0eXBlc2V0IC1uIGlyMj1ibHViWzJdCgllY2hvICFpbmRbMV06ICR7IWluZFsxXX0KCWVjaG8gIWlyMjogJCFpcjIKCWVjaG8gaW5kWzFdOiAke2luZFsxXX0KCWVjaG8gaXIyOiAkaXIyCmV4cGVjdGVkLXN0ZG91dDoKCSFpbmQ6IGJhcgoJaW5kOiBnbG9iYWwKCSFpcjI6IGJhcgoJaXIyOiBnbG9iYWwKCSFpbmQ6IGluZAoJaW5kOiBpcjIKCSFpcjI6IGluZAoJaXIyOiBpcjIKCXMxOiBpcjI9aW5kCglzMjogdHlwZXNldCAtbiBpcjIKCSFpbmRbMV06IGJsdWJbMV0KCSFpcjI6IGlyMgoJaW5kWzFdOiBlMgoJaXIyOiBlMwotLS0KbmFtZTogbmFtZXJlZi0yZGEKZGVzY3JpcHRpb246CglUZXN0c3VpdGUgZm9yIG5hbWVyZWYgKGJvdW5kIHZhcmlhYmxlcykKCUZ1bmN0aW9ucywgYXJndW1lbnQgZ2l2ZW4gZGlyZWN0bHksIGFmdGVyIGxvY2FsCnN0ZGluOgoJZnVuY3Rpb24gZm9vIHsKCQl0eXBlc2V0IGJhcj1sb2thbCBiYXo9YXVjaAoJCXR5cGVzZXQgLW4gdj1iYXIKCQllY2hvIGVudGVyaW5nCgkJZWNobyAhdjogJHshdn0KCQllY2hvICFiYXI6ICR7IWJhcn0KCQllY2hvICFiYXo6ICR7IWJhen0KCQllY2hvIGJhcjogJGJhcgoJCWVjaG8gdjogJHYKCQl2PTEyMwoJCWVjaG8gYmFyOiAkYmFyCgkJZWNobyB2OiAkdgoJCWVjaG8gZXhpdGluZwoJfQoJYmFyPWdsb2JhbAoJZWNobyBiYXI6ICRiYXIKCWZvbyBiYXIKCWVjaG8gYmFyOiAkYmFyCmV4cGVjdGVkLXN0ZG91dDoKCWJhcjogZ2xvYmFsCgllbnRlcmluZwoJIXY6IGJhcgoJIWJhcjogYmFyCgkhYmF6OiBiYXoKCWJhcjogbG9rYWwKCXY6IGxva2FsCgliYXI6IDEyMwoJdjogMTIzCglleGl0aW5nCgliYXI6IGdsb2JhbAotLS0KbmFtZTogbmFtZXJlZi0zCmRlc2NyaXB0aW9uOgoJQWR2YW5jZWQgdGVzdHN1aXRlIGZvciBib3VuZCB2YXJpYWJsZXMgKGtzaDkzIGZhaWxzIHRoaXMpCnN0ZGluOgoJdHlwZXNldCAtbiBmb289YmFyW2ldCglzZXQgLUEgYmFyIC0tIGIgYyBhCglmb3IgaSBpbiAwIDEgMiAzOyBkbwoJCXByaW50ICRpICRmb28gLgoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CgkwIGIgLgoJMSBjIC4KCTIgYSAuCgkzIC4KLS0tCm5hbWU6IG5hbWVyZWYtNApkZXNjcmlwdGlvbjoKCUVuc3VyZSB3ZSBkb24ndCBydW4gaW4gYW4gaW5maW5pdGUgbG9vcAp0aW1lLWxpbWl0OiAzCnN0ZGluOgoJYmF6KCkgewoJCXR5cGVzZXQgLW4gZm9vPWZub3JkIGZub3JkPWZvbwoJCWZvb1swXT1iYXIKCX0KCXNldCAtQSBmb28gYmFkCgllY2hvIHNpbmQgJGZvbyAuCgliYXoKCWVjaG8gYmxhaCAkZm9vIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJc2luZCBiYWQgLgoJYmxhaCBiYWQgLgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9mbm9yZDogZXhwcmVzc2lvbiByZWN1cnNlcyBvbiBwYXJhbWV0ZXIvCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTFhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWlmICggKGVjaG8gZnViYXIpfHRyIHUgeCk7IHRoZW4KCQllY2hvIGphCgllbHNlCgkJZWNobyBuZWluCglmaQpleHBlY3RlZC1zdGRvdXQ6CglmeGJhcgoJamEKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtMWIKZGVzY3JpcHRpb246CglDaGVjayBzdXBwb3J0IGZvciAoKOKApikpIGFuZCAkKCjigKYpKSB2cyAo4oCmKSBhbmQgJCjigKYpCnN0ZGluOgoJZWNobyAkKCAoZWNobyBmdWJhcil8dHIgdSB4KSAkPwpleHBlY3RlZC1zdGRvdXQ6CglmeGJhciAwCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTFjCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCXg9JCggKGVjaG8gZnViYXIpfHRyIHUgeCk7IGVjaG8gJHggJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIgMAotLS0KbmFtZTogYmV0dGVyLXBhcmVucy0yYQpkZXNjcmlwdGlvbjoKCUNoZWNrIHN1cHBvcnQgZm9yICgo4oCmKSkgYW5kICQoKOKApikpIHZzICjigKYpIGFuZCAkKOKApikKc3RkaW46CglpZiAoKGVjaG8gZnViYXIpfHRyIHUgeCk7IHRoZW4KCQllY2hvIGphCgllbHNlCgkJZWNobyBuZWluCglmaQpleHBlY3RlZC1zdGRvdXQ6CglmeGJhcgoJamEKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtMmIKZGVzY3JpcHRpb246CglDaGVjayBzdXBwb3J0IGZvciAoKOKApikpIGFuZCAkKCjigKYpKSB2cyAo4oCmKSBhbmQgJCjigKYpCnN0ZGluOgoJZWNobyAkKChlY2hvIGZ1YmFyKXx0ciB1IHgpICQ/CmV4cGVjdGVkLXN0ZG91dDoKCWZ4YmFyIDAKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtMmMKZGVzY3JpcHRpb246CglDaGVjayBzdXBwb3J0IGZvciAoKOKApikpIGFuZCAkKCjigKYpKSB2cyAo4oCmKSBhbmQgJCjigKYpCnN0ZGluOgoJeD0kKChlY2hvIGZ1YmFyKXx0ciB1IHgpOyBlY2hvICR4ICQ/CmV4cGVjdGVkLXN0ZG91dDoKCWZ4YmFyIDAKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtM2EKZGVzY3JpcHRpb246CglDaGVjayBzdXBwb3J0IGZvciAoKOKApikpIGFuZCAkKCjigKYpKSB2cyAo4oCmKSBhbmQgJCjigKYpCnN0ZGluOgoJaWYgKCAoZWNobyBmdWJhcil8KHRyIHUgeCkpOyB0aGVuCgkJZWNobyBqYQoJZWxzZQoJCWVjaG8gbmVpbgoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIKCWphCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTNiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWVjaG8gJCggKGVjaG8gZnViYXIpfCh0ciB1IHgpKSAkPwpleHBlY3RlZC1zdGRvdXQ6CglmeGJhciAwCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTNjCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCXg9JCggKGVjaG8gZnViYXIpfCh0ciB1IHgpKTsgZWNobyAkeCAkPwpleHBlY3RlZC1zdGRvdXQ6CglmeGJhciAwCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTRhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWlmICgoZWNobyBmdWJhcil8KHRyIHUgeCkpOyB0aGVuCgkJZWNobyBqYQoJZWxzZQoJCWVjaG8gbmVpbgoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIKCWphCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTRiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWVjaG8gJCgoZWNobyBmdWJhcil8KHRyIHUgeCkpICQ/CmV4cGVjdGVkLXN0ZG91dDoKCWZ4YmFyIDAKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtNGMKZGVzY3JpcHRpb246CglDaGVjayBzdXBwb3J0IGZvciAoKOKApikpIGFuZCAkKCjigKYpKSB2cyAo4oCmKSBhbmQgJCjigKYpCnN0ZGluOgoJeD0kKChlY2hvIGZ1YmFyKXwodHIgdSB4KSk7IGVjaG8gJHggJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIgMAotLS0KbmFtZTogYmV0dGVyLXBhcmVucy01CmRlc2NyaXB0aW9uOgoJQW5vdGhlciBjb3JuZXIgY2FzZQpzdGRpbjoKCSggKGVjaG8gJ2ZvCW8kYmFyJyAiYmF6XCRibGFcIiIgbVwkZWgpIHwgdHIgYSBBKQoJKChlY2hvICdmbwlvJGJhcicgImJhelwkYmxhXCIiIG1cJGVoKSB8IHRyIGEgQSkKZXhwZWN0ZWQtc3Rkb3V0OgoJZm8JbyRiQXIgYkF6JGJsQSIgbSRlaAoJZm8JbyRiQXIgYkF6JGJsQSIgbSRlaAotLS0KbmFtZTogZWNoby10ZXN0LTEKZGVzY3JpcHRpb246CglUZXN0IHdoYXQgdGhlIGVjaG8gYnVpbHRpbiBkb2VzIChta3NoKQpjYXRlZ29yeTogIXNoZWxsOmViY2RpYy15ZXMKc3RkaW46CgllY2hvIC1uICdmb29ceDQwYmFyJwoJZWNobyAtZSAnXHRiYXonCmV4cGVjdGVkLXN0ZG91dDoKCWZvb0BiYXIJYmF6Ci0tLQpuYW1lOiBlY2hvLXRlc3QtMS1lYmNkaWMKZGVzY3JpcHRpb246CglUZXN0IHdoYXQgdGhlIGVjaG8gYnVpbHRpbiBkb2VzIChta3NoKQpjYXRlZ29yeTogIXNoZWxsOmViY2RpYy1ubwpzdGRpbjoKCWVjaG8gLW4gJ2Zvb1x4N0NiYXInCgllY2hvIC1lICdcdGJheicKZXhwZWN0ZWQtc3Rkb3V0OgoJZm9vQGJhcgliYXoKLS0tCm5hbWU6IGVjaG8tdGVzdC0yCmRlc2NyaXB0aW9uOgoJVGVzdCB3aGF0IHRoZSBlY2hvIGJ1aWx0aW4gZG9lcyAoUE9TSVgpCglOb3RlOiB0aGlzIGZvbGxvd3MgRGViaWFuIFBvbGljeSAxMC40IHdoaWNoIG1hbmRhdGVzCgl0aGF0IC1uIHNoYWxsIGJlIHRyZWF0ZWQgYXMgYW4gb3B0aW9uLCBub3QgWFNJIHdoaWNoCgltYW5kYXRlcyBpdCBzaGFsbCBiZSB0cmVhdGVkIGFzIHN0cmluZyBidXQgZXNjYXBlcwoJc2hhbGwgYmUgZXhwYW5kZWQuCnN0ZGluOgoJdGVzdCAtbiAiJFBPU0hfVkVSU0lPTiIgfHwgc2V0IC1vIHBvc2l4CgllY2hvIC1uICdmb29ceDQwYmFyJwoJZWNobyAtZSAnXHRiYXonCmV4cGVjdGVkLXN0ZG91dDoKCWZvb1x4NDBiYXItZSBcdGJhegotLS0KbmFtZTogZWNoby10ZXN0LTMtbW5ic2QKZGVzY3JpcHRpb246CglUZXN0IHdoYXQgdGhlIGVjaG8gYnVpbHRpbiBkb2VzLCBhbmQgdGVzdCBhIGNvbXBhdGliaWxpdHkgZmxhZy4KY2F0ZWdvcnk6IG1uYnNkYXNoCnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAnZWNobyAtbiAxPVxceDQwJDE7IGVjaG8gLWUgXFx4MkUnIC0tIGZvbyBiYXIKCSIkX19wcm9nbmFtZSIgLW8gcG9zaXggLWMgJ2VjaG8gLW4gMj1cXHg0MCQxOyBlY2hvIC1lIFxceDJFJyAtLSBmb28gYmFyCgkiJF9fcHJvZ25hbWUiIC1vIHNoIC1jICdlY2hvIC1uIDM9XFx4NDAkMTsgZWNobyAtZSBcXHgyRScgLS0gZm9vIGJhcgpleHBlY3RlZC1zdGRvdXQ6CgkxPUBmb28uCgkyPVx4NDBmb28tZSBceDJFCgkzPVx4NDBiYXIuCi0tLQpuYW1lOiBlY2hvLXRlc3QtMy1ub3JtYWwKZGVzY3JpcHRpb246CglUZXN0IHdoYXQgdGhlIGVjaG8gYnVpbHRpbiBkb2VzLCBhbmQgdGVzdCBhIGNvbXBhdGliaWxpdHkgZmxhZy4KY2F0ZWdvcnk6ICFtbmJzZGFzaCwhc2hlbGw6ZWJjZGljLXllcwpzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJ2VjaG8gLW4gMT1cXHg0MCQxOyBlY2hvIC1lIFxceDJFJyAtLSBmb28gYmFyCgkiJF9fcHJvZ25hbWUiIC1vIHBvc2l4IC1jICdlY2hvIC1uIDI9XFx4NDAkMTsgZWNobyAtZSBcXHgyRScgLS0gZm9vIGJhcgoJIiRfX3Byb2duYW1lIiAtbyBzaCAtYyAnZWNobyAtbiAzPVxceDQwJDE7IGVjaG8gLWUgXFx4MkUnIC0tIGZvbyBiYXIKZXhwZWN0ZWQtc3Rkb3V0OgoJMT1AZm9vLgoJMj1ceDQwZm9vLWUgXHgyRQoJMz1ceDQwZm9vLWUgXHgyRQotLS0KbmFtZTogZWNoby10ZXN0LTMtZWJjZGljCmRlc2NyaXB0aW9uOgoJVGVzdCB3aGF0IHRoZSBlY2hvIGJ1aWx0aW4gZG9lcywgYW5kIHRlc3QgYSBjb21wYXRpYmlsaXR5IGZsYWcuCmNhdGVnb3J5OiAhbW5ic2Rhc2gsIXNoZWxsOmViY2RpYy1ubwpzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJ2VjaG8gLW4gMT1cXHg3QyQxOyBlY2hvIC1lIFxceDRCJyAtLSBmb28gYmFyCgkiJF9fcHJvZ25hbWUiIC1vIHBvc2l4IC1jICdlY2hvIC1uIDI9XFx4N0MkMTsgZWNobyAtZSBcXHg0QicgLS0gZm9vIGJhcgoJIiRfX3Byb2duYW1lIiAtbyBzaCAtYyAnZWNobyAtbiAzPVxceDdDJDE7IGVjaG8gLWUgXFx4NEInIC0tIGZvbyBiYXIKZXhwZWN0ZWQtc3Rkb3V0OgoJMT1AZm9vLgoJMj1ceDdDZm9vLWUgXHg0QgoJMz1ceDdDZm9vLWUgXHg0QgotLS0KbmFtZTogdXRpbGl0aWVzLWdldG9wdHMtMQpkZXNjcmlwdGlvbjoKCWdldG9wdHMgc2V0cyBPUFRJTkQgY29ycmVjdGx5IGZvciB1bnBhcnNlZCBvcHRpb24Kc3RkaW46CglzZXQgLS0gLWEgLWEgLXgKCXdoaWxlIGdldG9wdHMgOmEgb3B0YzsgZG8KCSAgICBlY2hvICJPUFRBUkc9JE9QVEFSRywgT1BUSU5EPSRPUFRJTkQsIG9wdGM9JG9wdGMuIgoJZG9uZQoJZWNobyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCU9QVEFSRz0sIE9QVElORD0yLCBvcHRjPWEuCglPUFRBUkc9LCBPUFRJTkQ9Mywgb3B0Yz1hLgoJT1BUQVJHPXgsIE9QVElORD00LCBvcHRjPT8uCglkb25lCi0tLQpuYW1lOiB1dGlsaXRpZXMtZ2V0b3B0cy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgT1BUQVJHCnN0ZGluOgoJc2V0IC0tIC1hIE1hcnkgLXgKCXdoaWxlIGdldG9wdHMgYTogb3B0YzsgZG8KCSAgICBlY2hvICJPUFRBUkc9JE9QVEFSRywgT1BUSU5EPSRPUFRJTkQsIG9wdGM9JG9wdGMuIgoJZG9uZQoJZWNobyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCU9QVEFSRz1NYXJ5LCBPUFRJTkQ9Mywgb3B0Yz1hLgoJT1BUQVJHPSwgT1BUSU5EPTQsIG9wdGM9Py4KCWRvbmUKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC8uKi14LipvcHRpb24vCi0tLQpuYW1lOiB1dGlsaXRpZXMtZ2V0b3B0cy0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdW5zZXR0aW5nIE9QVEFSRwpzdGRpbjoKCXNldCAtLSAteCBhcmcgLXkKCWdldG9wdHMgeDp5IG9wdCAmJiBlY2hvICIke09QVEFSRy11bnNldH0iCglnZXRvcHRzIHg6eSBvcHQgJiYgZWNobyAiJHtPUFRBUkctdW5zZXR9IgpleHBlY3RlZC1zdGRvdXQ6CglhcmcKCXVuc2V0Ci0tLQpuYW1lOiB3Y3N3aWR0aC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhlIG5ldyB3Y3N3aWR0aCBmZWF0dXJlCnN0ZGluOgoJcz3kvZUKCXNldCArVQoJcHJpbnQgb2N0ZXRzOiAkeyNzfSAuCglwcmludCA4LWJpdCB3aWR0aDogJHslc30gLgoJc2V0IC1VCglwcmludCBjaGFyYWN0ZXJzOiAkeyNzfSAuCglwcmludCBjb2x1bW5zOiAkeyVzfSAuCglzPe+/vQoJc2V0ICtVCglwcmludCBvY3RldHM6ICR7I3N9IC4KCXByaW50IDgtYml0IHdpZHRoOiAkeyVzfSAuCglzZXQgLVUKCXByaW50IGNoYXJhY3RlcnM6ICR7I3N9IC4KCXByaW50IGNvbHVtbnM6ICR7JXN9IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJb2N0ZXRzOiAzIC4KCTgtYml0IHdpZHRoOiAtMSAuCgljaGFyYWN0ZXJzOiAxIC4KCWNvbHVtbnM6IDIgLgoJb2N0ZXRzOiAzIC4KCTgtYml0IHdpZHRoOiAzIC4KCWNoYXJhY3RlcnM6IDEgLgoJY29sdW1uczogMSAuCi0tLQpuYW1lOiB3Y3N3aWR0aC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBjb3JuZXIgY2FzZXMKc3RkaW46CglwcmludCAlICQlIC4KCXNldCAtVQoJeD0nYQliJwoJcHJpbnQgYyAkeyV4fSAuCglzZXQgK1UKCXg9J2EJYicKCXByaW50IGQgJHsleH0gLgpleHBlY3RlZC1zdGRvdXQ6CgklICQlIC4KCWMgLTEgLgoJZCAtMSAuCi0tLQpuYW1lOiB3Y3N3aWR0aC0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBjb3JuZXIgY2FzZXMKc3RkaW46CglwcmludCAkeyV9IC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvYmFkIHN1YnN0aXR1dGlvbi8KZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogd2Nzd2lkdGgtNGEKZGVzY3JpcHRpb246CglDaGVjayBzb21lIGNvcm5lciBjYXNlcwpzdGRpbjoKCXByaW50ICR7JSp9IC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvYmFkIHN1YnN0aXR1dGlvbi8KZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogd2Nzd2lkdGgtNGIKZGVzY3JpcHRpb246CglDaGVjayBzb21lIGNvcm5lciBjYXNlcwpzdGRpbjoKCXByaW50ICR7JUB9IC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvYmFkIHN1YnN0aXR1dGlvbi8KZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogd2Nzd2lkdGgtNGMKZGVzY3JpcHRpb246CglDaGVjayBzb21lIGNvcm5lciBjYXNlcwpzdGRpbjoKCToKCXByaW50ICR7JT99IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSAuCi0tLQpuYW1lOiByZWFscGF0aC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcHJvcGVyIHJldHVybiB2YWx1ZXMgZm9yIHJlYWxwYXRoCmNhdGVnb3J5OiBvczptaXJic2QKc3RkaW46Cgl3ZD0kKHJlYWxwYXRoIC4pCglta2RpciBkaXIKCTo+ZmlsZQoJOj5kaXIvZmlsZQoJbG4gLXMgZGlyIGxuZGlyCglsbiAtcyBmaWxlIGxuZmlsZQoJbG4gLXMgbml4IGxubml4CglsbiAtcyAuIGxuc2VsZgoJaT0wCgljaGsoKSB7CgkJdHlwZXNldCB4IHkKCQl4PSQocmVhbHBhdGggIiR3ZC8kMSIgMj4mMSk7IHk9JD8KCQlwcmludCAkKCgrK2kpKSAiPyQxIiA9JHt4IyMqJHdkL30gISR5Cgl9CgljaGsgZGlyCgljaGsgZGlyLwoJY2hrIGRpci9maWxlCgljaGsgZGlyL25peAoJY2hrIGZpbGUKCWNoayBmaWxlLwoJY2hrIGZpbGUvZmlsZQoJY2hrIGZpbGUvbml4CgljaGsgbml4CgljaGsgbml4LwoJY2hrIG5peC9maWxlCgljaGsgbml4L25peAoJY2hrIGxuZGlyCgljaGsgbG5kaXIvCgljaGsgbG5kaXIvZmlsZQoJY2hrIGxuZGlyL25peAoJY2hrIGxuZmlsZQoJY2hrIGxuZmlsZS8KCWNoayBsbmZpbGUvZmlsZQoJY2hrIGxuZmlsZS9uaXgKCWNoayBsbm5peAoJY2hrIGxubml4LwoJY2hrIGxubml4L2ZpbGUKCWNoayBsbm5peC9uaXgKCWNoayBsbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYKCXJtIGxuc2VsZgpleHBlY3RlZC1zdGRvdXQ6CgkxID9kaXIgPWRpciAhMAoJMiA/ZGlyLyA9ZGlyICEwCgkzID9kaXIvZmlsZSA9ZGlyL2ZpbGUgITAKCTQgP2Rpci9uaXggPWRpci9uaXggITAKCTUgP2ZpbGUgPWZpbGUgITAKCTYgP2ZpbGUvID1maWxlLzogTm90IGEgZGlyZWN0b3J5ICEyMAoJNyA/ZmlsZS9maWxlID1maWxlL2ZpbGU6IE5vdCBhIGRpcmVjdG9yeSAhMjAKCTggP2ZpbGUvbml4ID1maWxlL25peDogTm90IGEgZGlyZWN0b3J5ICEyMAoJOSA/bml4ID1uaXggITAKCTEwID9uaXgvID1uaXggITAKCTExID9uaXgvZmlsZSA9bml4L2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgITIKCTEyID9uaXgvbml4ID1uaXgvbml4OiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5ICEyCgkxMyA/bG5kaXIgPWRpciAhMAoJMTQgP2xuZGlyLyA9ZGlyICEwCgkxNSA/bG5kaXIvZmlsZSA9ZGlyL2ZpbGUgITAKCTE2ID9sbmRpci9uaXggPWRpci9uaXggITAKCTE3ID9sbmZpbGUgPWZpbGUgITAKCTE4ID9sbmZpbGUvID1sbmZpbGUvOiBOb3QgYSBkaXJlY3RvcnkgITIwCgkxOSA/bG5maWxlL2ZpbGUgPWxuZmlsZS9maWxlOiBOb3QgYSBkaXJlY3RvcnkgITIwCgkyMCA/bG5maWxlL25peCA9bG5maWxlL25peDogTm90IGEgZGlyZWN0b3J5ICEyMAoJMjEgP2xubml4ID1uaXggITAKCTIyID9sbm5peC8gPW5peCAhMAoJMjMgP2xubml4L2ZpbGUgPWxubml4L2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgITIKCTI0ID9sbm5peC9uaXggPWxubml4L25peDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSAhMgoJMjUgP2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZiA9bG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmOiBUb28gbWFueSBsZXZlbHMgb2Ygc3ltYm9saWMgbGlua3MgITYyCi0tLQpuYW1lOiByZWFscGF0aC0yCmRlc2NyaXB0aW9uOgoJRW5zdXJlIHRoYXQgZXhhY3RseSB0d28gbGVhZGluZyBzbGFzaGVzIGFyZSBub3QgY29sbGFwc2VkCglQT1NJWCBndWFyYW50ZWVzIHRoaXMgZXhjZXB0aW9uLCBlLmcuIGZvciBVTkMgcGF0aHMgb24gQ3lnd2luCmNhdGVnb3J5OiBvczptaXJic2QKc3RkaW46CglsbiAtcyAvYmluIHQxCglsbiAtcyAvL2JpbiB0MgoJbG4gLXMgLy8vYmluIHQzCglyZWFscGF0aCAvYmluCglyZWFscGF0aCAvL2JpbgoJcmVhbHBhdGggLy8vYmluCglyZWFscGF0aCAvdXNyL2JpbgoJcmVhbHBhdGggL3Vzci8vYmluCglyZWFscGF0aCAvdXNyLy8vYmluCglyZWFscGF0aCB0MQoJcmVhbHBhdGggdDIKCXJlYWxwYXRoIHQzCglybSAtZiB0MSB0MiB0MwoJY2QgLy91c3IvYmluCglwd2QKCWNkIC4uL2xpYgoJcHdkCglyZWFscGF0aCAvL3Vzci9pbmNsdWRlLy4uL2JpbgpleHBlY3RlZC1zdGRvdXQ6CgkvYmluCgkvL2JpbgoJL2JpbgoJL3Vzci9iaW4KCS91c3IvYmluCgkvdXNyL2JpbgoJL2JpbgoJLy9iaW4KCS9iaW4KCS8vdXNyL2JpbgoJLy91c3IvbGliCgkvL3Vzci9iaW4KLS0tCm5hbWU6IGNyYXNoLTEKZGVzY3JpcHRpb246CglDcmFzaGVkIGR1cmluZyBNYXJjaCAyMDExLCBmaXhlZCBvbiB2ZXJuYWwgZXF1aW7FjXgg4pi6CmNhdGVnb3J5OiBvczptaXJic2Qsb3M6b3BlbmJzZApzdGRpbjoKCWV4cG9ydCBNQUxMT0NfT1BUSU9OUz1GR0pQUlNYCgkiJF9fcHJvZ25hbWUiIC1jICd4PSQodHIgeiByIDw8PGJheik7IGVjaG8gJHgnCmV4cGVjdGVkLXN0ZG91dDoKCWJhcgotLS0KbmFtZTogZGViaWFuLTExNy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGVzdCAtIGJ1ZyM0NjUyNTAKc3RkaW46Cgl0ZXN0IFwoICEgLWUgXCkgOyBlY2hvICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTEKLS0tCm5hbWU6IGRlYmlhbi0xMTctMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRlc3QgLSBidWcjNDY1MjUwCnN0ZGluOgoJdGVzdCBcKCAgLWUgXCkgOyBlY2hvICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTAKLS0tCm5hbWU6IGRlYmlhbi0xMTctMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRlc3QgLSBidWcjNDY1MjUwCnN0ZGluOgoJdGVzdCAhIC1lICA7IGVjaG8gJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJMQotLS0KbmFtZTogZGViaWFuLTExNy00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGVzdCAtIGJ1ZyM0NjUyNTAKc3RkaW46Cgl0ZXN0ICAtZSAgOyBlY2hvICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTAKLS0tCm5hbWU6IGNhc2UtenNoCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB6c2ggY2FzZSB2YXJpYW50cyB3b3JrCnN0ZGluOgoJY2FzZSAnYicgaW4KCSAgYSkgZWNobyBhIDs7CgkgIGIpIGVjaG8gYiA7OwoJICBjKSBlY2hvIGMgOzsKCSAgKikgZWNobyB4IDs7Cgllc2FjCgllY2hvID0KCWNhc2UgJ2InIGluCgkgIGEpIGVjaG8gYSA7JgoJICBiKSBlY2hvIGIgOyYKCSAgYykgZWNobyBjIDsmCgkgICopIGVjaG8geCA7JgoJZXNhYwoJZWNobyA9CgljYXNlICdiJyBpbgoJICBhKSBlY2hvIGEgO3wKCSAgYikgZWNobyBiIDt8CgkgIGMpIGVjaG8gYyA7fAoJICAqKSBlY2hvIHggO3wKCWVzYWMKZXhwZWN0ZWQtc3Rkb3V0OgoJYgoJPQoJYgoJYwoJeAoJPQoJYgoJeAotLS0KbmFtZTogY2FzZS1icmFjZXMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGNhc2UgZW5kIHRva2VucyBhcmUgbm90IG1peGVkIHVwIChEZWJpYW4gIzIyMDI3MikKc3RkaW46CglpPTAKCWZvciB2YWx1ZSBpbiAneCcgJ30nICdlc2FjJzsgZG8KCQlwcmludCAtbiAiJCgoKytpKSkoJHZhbHVlKWJvdXJuZSAiCgkJY2FzZSAkdmFsdWUgaW4KCQl9KSBlY2hvIGJyYWNlIDs7CgkJKikgZWNobyBubyA7OwoJCWVzYWMKCQlwcmludCAtbiAiJCgoKytpKSkoJHZhbHVlKWtvcm4gIgoJCWNhc2UgJHZhbHVlIHsKCQllc2FjKSBlY2hvIGVzYWMgOzsKCQkqKSBlY2hvIG5vIDs7CgkJfQoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CgkxKHgpYm91cm5lIG5vCgkyKHgpa29ybiBubwoJMyh9KWJvdXJuZSBicmFjZQoJNCh9KWtvcm4gbm8KCTUoZXNhYylib3VybmUgbm8KCTYoZXNhYylrb3JuIGVzYWMKLS0tCm5hbWU6IGNvbW1hbmQtc2hpZnQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICdjb21tYW5kIHNoaWZ0JyB3b3JrcwpzdGRpbjoKCWZ1bmN0aW9uIHNuYyB7CgkJZWNobyAiYmVmb3JlCTA9JyQwJyAxPSckMScgMj0nJDInIgoJCXNoaWZ0CgkJZWNobyAiYWZ0ZXIJMD0nJDAnIDE9JyQxJyAyPSckMiciCgl9CglmdW5jdGlvbiBzd2MgewoJCWVjaG8gImJlZm9yZQkwPSckMCcgMT0nJDEnIDI9JyQyJyIKCQljb21tYW5kIHNoaWZ0CgkJZWNobyAiYWZ0ZXIJMD0nJDAnIDE9JyQxJyAyPSckMiciCgl9CgllY2hvID0gd2l0aG91dCBjb21tYW5kCglzbmMg5LiAIOS6jAoJZWNobyA9IHdpdGggY29tbWFuZAoJc3djIOS4gCDkuowKCWVjaG8gPSBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCT0gd2l0aG91dCBjb21tYW5kCgliZWZvcmUJMD0nc25jJyAxPSfkuIAnIDI9J+S6jCcKCWFmdGVyCTA9J3NuYycgMT0n5LqMJyAyPScnCgk9IHdpdGggY29tbWFuZAoJYmVmb3JlCTA9J3N3YycgMT0n5LiAJyAyPSfkuownCglhZnRlcgkwPSdzd2MnIDE9J+S6jCcgMj0nJwoJPSBkb25lCi0tLQpuYW1lOiBjb21tYW5kLXB2Vi1wb3NpeC1wcmlvcml0aWVzCmRlc2NyaXB0aW9uOgoJRm9yIFBPU0lYIGNvbXBhdGliaWxpdHksIGNvbW1hbmQgLXYgc2hvdWxkIGZpbmQgYWxpYXNlcyBhbmQgcmVzZXJ2ZWQKCXdvcmRzLCBhbmQgY29tbWFuZCAtcFt2Vl0gc2hvdWxkIGZpbmQgYWxpYXNlcywgcmVzZXJ2ZWQgd29yZHMsIGFuZAoJYnVpbHRpbnMgb3ZlciBleHRlcm5hbCBjb21tYW5kcy4Kc3RkaW46CglQQVRIPS9iaW46L3Vzci9iaW4KCWFsaWFzIGZvbz0iYmFyIGJheiIKCWJhcigpIHsgOjsgfQoJZm9yIHdvcmQgaW4gJ2lmJyAnZm9vJyAnYmFyJyAnc2V0JyAndHJ1ZSc7IGRvCgkJY29tbWFuZCAtdiAiJHdvcmQiCgkJY29tbWFuZCAtcHYgIiR3b3JkIgoJCWNvbW1hbmQgLVYgIiR3b3JkIgoJCWNvbW1hbmQgLXBWICIkd29yZCIKCWRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJaWYKCWlmCglpZiBpcyBhIHJlc2VydmVkIHdvcmQKCWlmIGlzIGEgcmVzZXJ2ZWQgd29yZAoJYWxpYXMgZm9vPSdiYXIgYmF6JwoJYWxpYXMgZm9vPSdiYXIgYmF6JwoJZm9vIGlzIGFuIGFsaWFzIGZvciAnYmFyIGJheicKCWZvbyBpcyBhbiBhbGlhcyBmb3IgJ2JhciBiYXonCgliYXIKCWJhcgoJYmFyIGlzIGEgZnVuY3Rpb24KCWJhciBpcyBhIGZ1bmN0aW9uCglzZXQKCXNldAoJc2V0IGlzIGEgc3BlY2lhbCBzaGVsbCBidWlsdGluCglzZXQgaXMgYSBzcGVjaWFsIHNoZWxsIGJ1aWx0aW4KCXRydWUKCXRydWUKCXRydWUgaXMgYSBzaGVsbCBidWlsdGluCgl0cnVlIGlzIGEgc2hlbGwgYnVpbHRpbgotLS0KbmFtZTogd2hlbmNlLXByZXNlcnZlLXRyYWRpdGlvbgpkZXNjcmlwdGlvbjoKCVRoaXMgcmVncmVzc2lvbiB0ZXN0IGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBQT1NJWCBjb21wYXRpYmlsaXR5CgljaGFuZ2VzIGZvciAnY29tbWFuZCcgKHNlZSBwcmV2aW91cyB0ZXN0KSBkbyBub3QgYWZmZWN0IHRyYWRpdGlvbmFsCgknd2hlbmNlJyBiZWhhdmlvdXIuCmNhdGVnb3J5OiBvczptaXJic2QKc3RkaW46CglQQVRIPS9iaW46L3Vzci9iaW4KCWFsaWFzIGZvbz0iYmFyIGJheiIKCWJhcigpIHsgOjsgfQoJZm9yIHdvcmQgaW4gJ2lmJyAnZm9vJyAnYmFyJyAnc2V0JyAndHJ1ZSc7IGRvCgkJd2hlbmNlICIkd29yZCIKCQl3aGVuY2UgLXAgIiR3b3JkIgoJCXdoZW5jZSAtdiAiJHdvcmQiCgkJd2hlbmNlIC1wdiAiJHdvcmQiCglkb25lCmV4cGVjdGVkLXN0ZG91dDoKCWlmCglpZiBpcyBhIHJlc2VydmVkIHdvcmQKCWlmIG5vdCBmb3VuZAoJJ2JhciBiYXonCglmb28gaXMgYW4gYWxpYXMgZm9yICdiYXIgYmF6JwoJZm9vIG5vdCBmb3VuZAoJYmFyCgliYXIgaXMgYSBmdW5jdGlvbgoJYmFyIG5vdCBmb3VuZAoJc2V0CglzZXQgaXMgYSBzcGVjaWFsIHNoZWxsIGJ1aWx0aW4KCXNldCBub3QgZm91bmQKCXRydWUKCS9iaW4vdHJ1ZQoJdHJ1ZSBpcyBhIHNoZWxsIGJ1aWx0aW4KCXRydWUgaXMgYSB0cmFja2VkIGFsaWFzIGZvciAvYmluL3RydWUKLS0tCm5hbWU6IGR1ZmZzLWRldmljZQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIGNvbXBpbGVyIGRpZCBub3Qgb3B0aW1pc2UtYnJlYWsgdGhlbQoJKGxleC5jIGhhcyBnb3QgYSBzaW1pbGFyIG9uZSBpbiBTSEVSRURFTElNKQpjYXRlZ29yeTogIXNoZWxsOmZhdXgtZWJjZGljLCFzaGVsbDplYmNkaWMteWVzCnN0ZGluOgoJc2V0ICtVCglzPQoJdHlwZXNldCAtaTEgaT0wCgl3aGlsZSAoKCArK2kgPCAyNTYgKSk7IGRvCgkJcys9JHtpIzEjfQoJZG9uZQoJcys9JCdceEMyXHhBMFx4RTJceDgyXHhBQ1x4RUZceEJGXHhCRFx4RUZceEJGXHhCRVx4RUZceEJGXHhCRlx4RjBceDkwXHg4MFx4ODAuJwoJdHlwZXNldCAtcCBzCmV4cGVjdGVkLXN0ZG91dDoKCXR5cGVzZXQgcz0kJ1wwMDFcMDAyXDAwM1wwMDRcMDA1XDAwNlxhXGJcdFxuXHZcZlxyXDAxNlwwMTdcMDIwXDAyMVwwMjJcMDIzXDAyNFwwMjVcMDI2XDAyN1wwMzBcMDMxXDAzMlxFXDAzNFwwMzVcMDM2XDAzNyAhIiMkJSZcMDQ3KCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flwxNzdcMjAwXDIwMVwyMDJcMjAzXDIwNFwyMDVcMjA2XDIwN1wyMTBcMjExXDIxMlwyMTNcMjE0XDIxNVwyMTZcMjE3XDIyMFwyMjFcMjIyXDIyM1wyMjRcMjI1XDIyNlwyMjdcMjMwXDIzMVwyMzJcMjMzXDIzNFwyMzVcMjM2XDIzN1wyNDBcMjQxXDI0MlwyNDNcMjQ0XDI0NVwyNDZcMjQ3XDI1MFwyNTFcMjUyXDI1M1wyNTRcMjU1XDI1NlwyNTdcMjYwXDI2MVwyNjJcMjYzXDI2NFwyNjVcMjY2XDI2N1wyNzBcMjcxXDI3MlwyNzNcMjc0XDI3NVwyNzZcMjc3XDMwMFwzMDFcMzAyXDMwM1wzMDRcMzA1XDMwNlwzMDdcMzEwXDMxMVwzMTJcMzEzXDMxNFwzMTVcMzE2XDMxN1wzMjBcMzIxXDMyMlwzMjNcMzI0XDMyNVwzMjZcMzI3XDMzMFwzMzFcMzMyXDMzM1wzMzRcMzM1XDMzNlwzMzdcMzQwXDM0MVwzNDJcMzQzXDM0NFwzNDVcMzQ2XDM0N1wzNTBcMzUxXDM1MlwzNTNcMzU0XDM1NVwzNTZcMzU3XDM2MFwzNjFcMzYyXDM2M1wzNjRcMzY1XDM2NlwzNjdcMzcwXDM3MVwzNzJcMzczXDM3NFwzNzVcMzc2XDM3N1x1MDBBMFx1MjBBQ1x1RkZGRFwzNTdcMjc3XDI3NlwzNTdcMjc3XDI3N1wzNjBcMjIwXDIwMFwyMDAuJwotLS0KbmFtZTogZHVmZnMtZGV2aWNlLWViY2RpYwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIGNvbXBpbGVyIGRpZCBub3Qgb3B0aW1pc2UtYnJlYWsgdGhlbQpjYXRlZ29yeTogIXNoZWxsOmViY2RpYy1ubwpzdGRpbjoKCXNldCArVQoJcz0KCXR5cGVzZXQgLWkxIGk9MAoJd2hpbGUgKCggKytpIDwgMjU2ICkpOyBkbwoJCXMrPSR7aSMxI30KCWRvbmUKCSNzKz0kJ1x4QzJceEEwXHhFMlx4ODJceEFDXHhFRlx4QkZceEJEXHhFRlx4QkZceEJFXHhFRlx4QkZceEJGXHhGMFx4OTBceDgwXHg4MC4nICNYWFgKCXR5cGVzZXQgLXAgcwpleHBlY3RlZC1zdGRvdXQ6Cgl0eXBlc2V0IHM9JCdcMDAxXDAwMlwwMDNcMDA0XHRcMDA2XDAwN1wwMTBcMDExXDAxMlx2XGZcclwwMTZcMDE3XDAyMFwwMjFcMDIyXDAyM1wwMjRcblxiXDAyN1wwMzBcMDMxXDAzMlwwMzNcMDM0XDAzNVwwMzZcMDM3XDA0MFwwNDFcMDQyXDA0M1wwNDRcMDQ1XDA0NlxFXDA1MFwwNTFcMDUyXDA1M1wwNTRcMDU1XDA1NlxhXDA2MFwwNjFcMDYyXDA2M1wwNjRcMDY1XDA2NlwwNjdcMDcwXDA3MVwwNzJcMDczXDA3NFwwNzVcMDc2XDA3NyCg4uTg4ePl5/GiLjwoK3wm6err6O3u7+zfISQqKTteLS/CxMDBw8XH0aYsJV8+P/jJysvIzc7PzGA6I0BcMTc1PSLYYWJjZGVmZ2hpq7vw/f6xsGprbG1ub3Bxcqq65rjGpLV+c3R1dnd4eXqhv9Bb3q6so6W3qae2vL2+3aivXbTXe0FCQ0RFRkdISa309vLz9X1KS0xNTk9QUVK5+/z5+v9cXPdTVFVWV1hZWrLU1tLT1TAxMjM0NTY3ODmz29zZ2lwzNzcnCi0tLQpuYW1lOiBkdWZmcy1kZXZpY2UtZmF1eC1FQkNESUMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBjb21waWxlciBkaWQgbm90IG9wdGltaXNlLWJyZWFrIHRoZW0KY2F0ZWdvcnk6IHNoZWxsOmZhdXgtZWJjZGljCnN0ZGluOgoJc2V0ICtVCglzPQoJdHlwZXNldCAtaTEgaT0wCgl3aGlsZSAoKCArK2kgPCAyNTYgKSk7IGRvCgkJcys9JHtpIzEjfQoJZG9uZQoJcys9JCdceEMyXHhBMFx4RTJceDgyXHhBQ1x4RUZceEJGXHhCRFx4RUZceEJGXHhCRVx4RUZceEJGXHhCRlx4RjBceDkwXHg4MFx4ODAuJwoJdHlwZXNldCAtcCBzCmV4cGVjdGVkLXN0ZG91dDoKCXR5cGVzZXQgcz0kJ1wwMDFcMDAyXDAwM1wwMDRcMDA1XDAwNlxhXGJcdFxuXHZcZlxyXDAxNlwwMTdcMDIwXDAyMVwwMjJcMDIzXDAyNFwwMjVcMDI2XDAyN1wwMzBcMDMxXDAzMlxFXDAzNFwwMzVcMDM2XDAzNyAhIiMkJSZcMDQ3KCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flwxNzdcMjAwXDIwMVwyMDJcMjAzXDIwNFwyMDVcMjA2XDIwN1wyMTBcMjExXDIxMlwyMTNcMjE0XDIxNVwyMTZcMjE3XDIyMFwyMjFcMjIyXDIyM1wyMjRcMjI1XDIyNlwyMjdcMjMwXDIzMVwyMzJcMjMzXDIzNFwyMzVcMjM2XDIzN6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/1x1MDBBMFx1MjBBQ1x1RkZGRO+/vu+/v/BcMjIwXDIwMFwyMDAuJwotLS0KbmFtZTogc3RhdGVwdHItdW5kZXJmbG93CmRlc2NyaXB0aW9uOgoJVGhpcyBjaGVjayBvdmVyZmxvd3MgYW4gWHJlc3Rwb3Mgc3RvcmVkIGluIGEgc2hvcnQgaW4gUjQwCmNhdGVnb3J5OiBmYXN0Ym94CnN0ZGluOgoJZnVuY3Rpb24gTGI2NGRlY29kZSB7CgkJW1sgLW8gdXRmOC1tb2RlIF1dOyBsb2NhbCB1PSQ/CgkJc2V0ICtVCgkJbG9jYWwgYyBzPSIkKiIgdD0KCQlbWyAtbiAkcyBdXSB8fCB7IHM9JChjYXQ7cHJpbnQgeCk7IHM9JHtzJXh9OyB9CgkJbG9jYWwgLWkgaT0wIG49JHsjc30gcD0wIHYgeAoJCWxvY2FsIC1pMTYgbwoJCgkJd2hpbGUgKCggaSA8IG4gKSk7IGRvCgkJCWM9JHtzOihpKyspOjF9CgkJCWNhc2UgJGMgewoJCQkoPSkJYnJlYWsgOzsKCQkJKFtBLVpdKQkoKCB2ID0gMSMkYyAtIDY1ICkpIDs7CgkJCShbYS16XSkJKCggdiA9IDEjJGMgLSA3MSApKSA7OwoJCQkoWzAtOV0pCSgoIHYgPSAxIyRjICsgNCApKSA7OwoJCQkoKykJdj02MiA7OwoJCQkoLykJdj02MyA7OwoJCQkoKikJY29udGludWUgOzsKCQkJfQoJCQkoKCB4ID0gKHggPDwgNikgfCB2ICkpCgkJCWNhc2UgJCgocCsrKSkgewoJCQkoMCkJY29udGludWUgOzsKCQkJKDEpCSgoIG8gPSAoeCA+PiA0KSAmIDI1NSApKSA7OwoJCQkoMikJKCggbyA9ICh4ID4+IDIpICYgMjU1ICkpIDs7CgkJCSgzKQkoKCBvID0geCAmIDI1NSApKQoJCQkJcD0wCgkJCQk7OwoJCQl9CgkJCXQ9JHRcXHgke28jMTYjfQoJCWRvbmUKCQlwcmludCAtbiAkdAoJCSgoIHUgKSkgfHwgc2V0IC1VCgl9CgkKCWk9LTEKCXM9Cgl3aGlsZSAoKCArK2kgPCAxMjEyMCApKTsgZG8KCQlzKz1hCglkb25lCglMYjY0ZGVjb2RlICRzID4vZGV2L251bGwKLS0tCm5hbWU6IHh0cmFjZS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAic2V0IC14IiBkb2Vzbid0IHJlZGlyZWN0IHRvbyBxdWlja2x5CnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSIgPmJhc2gKCWNhdCA+PmJhc2ggPDwnRU9GJwoJZWNobyAnR05VIGJhc2gsIHZlcnNpb24gMi4wNWIuMCgxKS1yZWxlYXNlIChpMzg2LWVjY2UtbWlyYnNkMTApCglDb3B5cmlnaHQgKEMpIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuJwoJRU9GCgljaG1vZCAreCBiYXNoCgkiJF9fcHJvZ25hbWUiIC14YyAnZm9vPSQoLi9iYXNoIC0tdmVyc2lvbiAyPiYxIHwgc2VkIHEpOyBlY2hvICI9JGZvbz0iJwpleHBlY3RlZC1zdGRvdXQ6Cgk9R05VIGJhc2gsIHZlcnNpb24gMi4wNWIuMCgxKS1yZWxlYXNlIChpMzg2LWVjY2UtbWlyYnNkMTApPQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKi8KLS0tCm5hbWU6IHh0cmFjZS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAic2V0IC14IiBpcyBvZmYgZHVyaW5nIFBTNCBleHBhbnNpb24Kc3RkaW46CglmKCkgewoJCXByaW50IC1uICIoZjE6JC0pIgoJCXNldCAteAoJCXByaW50IC1uICIoZjI6JC0pIgoJfQoJUFM0PSdbKHA6JC0pJChmKV0gJwoJcHJpbnQgIihvMDokLSkiCglzZXQgLXggLW8gaW5oZXJpdC14dHJhY2UKCXByaW50ICIobzE6JC0pIgoJc2V0ICt4CglwcmludCAiKG8yOiQtKSIKZXhwZWN0ZWQtc3Rkb3V0OgoJKG8wOnNoKQoJKG8xOnNoeCkKCShvMjpzaCkKZXhwZWN0ZWQtc3RkZXJyOgoJWyhwOnNoKShmMTpzaCkoZjI6c2gpXSBwcmludCAnKG8xOnNoeCknCglbKHA6c2gpKGYxOnNoKShmMjpzaCldIHNldCAreAotLS0KbmFtZTogZmtzaC1mbGFncwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgRktTSCBmdW5jdGlvbnMgaGF2ZSB0aGVpciBvd24gc2hlbGwgZmxhZ3MKY2F0ZWdvcnk6IHNoZWxsOmxlZ2FjeS1ubwpzdGRpbjoKCVtbICRLU0hfVkVSU0lPTiA9IFZlcnNpb24qIF1dICYmIHNldCArQgoJZnVuY3Rpb24gZm9vIHsKCQlzZXQgK2YKCQlzZXQgLWUKCQllY2hvIDIgIiR7LS9zfSIgLgoJfQoJc2V0IC1maAoJZWNobyAxICIkey0vc30iIC4KCWZvbwoJZWNobyAzICIkey0vc30iIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSBmaCAuCgkyIGVoIC4KCTMgZmggLgotLS0KbmFtZTogZmtzaC1mbGFncy1sZWdhY3kKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGV2ZW4gRktTSCBmdW5jdGlvbnMgc2hhcmUgdGhlIHNoZWxsIGZsYWdzCmNhdGVnb3J5OiBzaGVsbDpsZWdhY3kteWVzCnN0ZGluOgoJW1sgJEtTSF9WRVJTSU9OID0gVmVyc2lvbiogXV0gJiYgc2V0ICtCCglmb28oKSB7CgkJc2V0ICtmCgkJc2V0IC1lCgkJZWNobyAyICIkey0vc30iIC4KCX0KCXNldCAtZmgKCWVjaG8gMSAiJHstL3N9IiAuCglmb28KCWVjaG8gMyAiJHstL3N9IiAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgZmggLgoJMiBlaCAuCgkzIGVoIC4KLS0tCm5hbWU6IGZzaC1mbGFncwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgIUZLU0ggZnVuY3Rpb25zIHNoYXJlIHRoZSBzaGVsbCBmbGFncwpzdGRpbjoKCVtbICRLU0hfVkVSU0lPTiA9IFZlcnNpb24qIF1dICYmIHNldCArQgoJZm9vKCkgewoJCXNldCArZgoJCXNldCAtZQoJCWVjaG8gMiAiJHstL3N9IiAuCgl9CglzZXQgLWZoCgllY2hvIDEgIiR7LS9zfSIgLgoJZm9vCgllY2hvIDMgIiR7LS9zfSIgLgpleHBlY3RlZC1zdGRvdXQ6CgkxIGZoIC4KCTIgZWggLgoJMyBlaCAuCi0tLQo=