IiBWaW0gc3ludGF4IGZpbGUKIiBMYW5ndWFnZTogICAgRk9SVEgKIiBNYWludGFpbmVyOiAgQ2hyaXN0aWFuIFYuIEouIEJy/HNzb3cgPGN2amJAY3ZqYi5kZT4KIiBMYXN0IENoYW5nZTogU28gMjcgTWFpIDIwMTIgMTU6NTY6MjggQ0VTVAoiIEZpbGVuYW1lczogICAqLmZzLCouZnQKIiBVUkw6CSAgICAgICBodHRwOi8vd3d3LmN2amIuZGUvY29tcC92aW0vZm9ydGgudmltCgoiICRJZDogZm9ydGgudmltLHYgMS4xNCAyMDEyLzA1LzI3IDE1OjU3OjIyIGJydWVzc293IEV4cCAkCgoiIFRoZSBsaXN0IG9mIGtleXdvcmRzIGlzIGluY29tcGxldGUsIGNvbXBhcmVkIHdpdGggdGhlIG9mZmljaWFsIEFOUwoiIHdvcmRsaXN0LiBJZiB5b3UgdXNlIHRoaXMgbGFuZ3VhZ2UsIHBsZWFzZSBpbXByb3ZlIGl0LCBhbmQgc2VuZCBtZQoiIHRoZSBwYXRjaGVzLgoiCiIgQmVmb3JlIHNlbmRpbmcgbWUgcGF0Y2hlcywgcGxlYXNlIGRvd25sb2FkIHRoZSBuZXdlc3QgdmVyc2lvbiBvZiB0aGlzIGZpbGUKIiBmcm9tIGh0dHA6Ly93d3cuY3ZqYi5kZS9jb21wL3ZpbS9mb3J0aC52aW0gb3IgaHR0cDovL3d3dy52aW0ub3JnLyAoc2VhcmNoCiIgZm9yIGZvcnRoLnZpbSkuCgoiIE1hbnkgVGhhbmtzIHRvLi4uCiIKIiAyMDEyLTA1LTEzOgoiIERvbWluaXF1ZSBQZWxs6SA8ZG9taW5pcXVlIGRvdCBwZWxsZSBhdCBnbWFpbCBkb3QgY29tPiBmb3Igc2VuZGluZyB0aGUKIiBwYXRjaCB0byBhbGxvdyBzcGVsbGNoZWNraW5nIG9mIHN0cmluZ3MsIGNvbW1lbnRzLCAuLi4KIiAKIiAyMDEyLTAxLTA3OgoiIFRoaWxvIFNpeCA8VC5TaXggYXQgZ214IGRvdCBkZT4gc2VuZCBhIHBhdGNoIGZvciBjcG9wdGlvbnMuCiIgU2VlIHRoZSBkaXNjdXNzaW9uIGF0IGh0dHA6Ly90aHJlYWQuZ21hbmUub3JnL2dtYW5lLmVkaXRvcnMudmltLmRldmVsLzMyMTUxCiIKIiAyMDA5LTA2LTI4OgoiIEpvc2ggR3JhbXMgc2VuZCBhIHBhdGNoIHRvIGFsbG93IHRoZSBwYXJlbnRoZXNpcyBjb21tZW50cyBhdCB0aGUKIiBiZWdpbm5pbmcgb2YgYSBsaW5lLiBUaGF0IHBhdGNoIGFsc28gZml4ZWQgYSB0eXBvIGluIG9uZSBvZiB0aGUKIiBjb21tZW50cy4KIgoiIDIwMDgtMDItMDk6CiIgU2hhd24gSy4gUXVpbm4gPHNqcXVpbm4gYXQgc3BlYWtlYXN5IGRvdCBuZXQ+IHNlbmQgYSBiaWcgcGF0Y2ggd2l0aAoiIG5ldyB3b3JkcyBjb21tb25seSB1c2VkIGluIEZvcnRoIHByb2dyYW1zIG9yIGRlZmluZWQgYnkgR05VIEZvcnRoLgoiCiIgMjAwNy0wNy0xMToKIiBCZW5qYW1pbiBLcmlsbCA8YmVuIGF0IGNvZGllcnQgZG90IG9yZz4gc2VuZCBtZSBhIHBhdGNoCiIgdG8gaGlnaGxpZ2h0IHNwYWNlIGVycm9ycy4KIiBZb3UgY2FuIHRvZ2dsZSB0aGlzIGZlYXR1cmUgb24gdGhyb3VnaCBzZXR0aW5nIHRoZQoiIGZsYWcgZm9ydGhfc3BhY2VfZXJyb3JzIGluIHlvdSB2aW1yYy4gSWYgeW91IGhhdmUgc3dpdGNoZWQgaXQgb24sCiIgeW91IGNhbiB0dXJuIG9mZiBoaWdobGlnaHRpbmcgb2YgdHJhaWxpbmcgc3BhY2VzIGluIGNvbW1lbnRzIGJ5CiIgc2V0dGluZyBmb3J0aF9ub190cmFpbF9zcGFjZV9lcnJvciBpbiB5b3VyIHZpbXJjLiBJZiB5b3UgZG8gbm90IHdhbnQKIiB0aGUgaGlnaGxpZ2h0aW5nIG9mIGEgdGFidWxhdG9yIGZvbGxvd2luZyBhIHNwYWNlIGluIGNvbW1lbnRzLCB5b3UKIiBjYW4gdHVybiB0aGlzIG9mZiBieSBzZXR0aW5nIGZvcnRoX25vX3RhYl9zcGFjZV9lcnJvci4KIgoiIDIwMDYtMDUtMjU6CiIgQmlsbCBNY0NhcnRoeSA8V0pNY0AuLi4+IGFuZCBJbHlhIFNoZXIgPGlseWEtdmltQC4uLj4KIiBXaG8gZm91bmQgYSBidWcgaW4gdGhlIGNjb21tZW50IGxpbmUgaW4gMjAwNCEhIQoiIEknbSByZWFsbHkgdmVyeSBzb3JyeSwgdGhhdCBpdCBoYXMgdGFrZW4gdHdvIHllYXJzIHRvIGZpeCB0aGF0CiIgaW4gdGhlIG9mZmljaWFsIHZlcnNpb24gb2YgdGhpcyBmaWxlLiBTaGFtZSBvbiBtZS4KIiBJIHRoaW5rIG15IGZhY2Ugd2lsbCBiZSByZWQgdGhlIG5leHQgdGVuIHllYXJzLi4uCiIKIiAyMDA2LTA1LTIxOgoiIFRob21hcyBFLiBWYXVnaGFuIDx0ZXZhdWdoYSBhdCBiYWxsIGRvdCBjb20+IHNlbmQgbWUgYSBwYXRjaAoiIGZvciB0aGUgcGFyZW50aGVzaXMgY29tbWVudCB3b3JkLCBzbyB3b3JkcyB3aXRoIGEgdHJhaWxpbmcKIiBwYXJlbnRoZXNpcyB3aWxsIG5vdCBzdGFydCB0aGUgaGlnaGxpZ2h0aW5nIGZvciBzdWNoIGNvbW1lbnRzLgoiCiIgMjAwMy0wNS0xMDoKIiBBbmRyZXcgR2F1bCA8YW5kcmV3IGF0IGdhdWwub3JnPiBzZW5kIG1lIGEgcGF0Y2ggZm9yCiIgZm9ydGhPcGVyYXRvcnMuCiIKIiAyMDAzLTA0LTAzOgoiIFJvbiBBYXJvbiA8cm9uIGF0IHJvbndhcmUgZG90IG9yZz4gbWFkZSB1cGRhdGVzIGZvciBhbgoiIGltcHJvdmVkIFdpbjMyRm9ydGggc3VwcG9ydC4KIgoiIDIwMDItMDQtMjI6CiIgQ2hhcmxlcyBTaGF0dHVjayA8Y2hhcmxleSBhdCBmb3J0aCBkb3Qgb3JnPiBoZWxwZWQgbWUgdG8gc2V0dGxlIHVwIHdpdGggdGhlCiIgYmluYXJ5IGFuZCBoZXggbnVtYmVyIGhpZ2hsaWdodGluZy4KIgoiIDIwMDItMDQtMjA6CiIgQ2hhcmxlcyBTaGF0dHVjayA8Y2hhcmxleSBhdCBmb3J0aCBkb3Qgb3JnPiBzZW5kIG1lIHNvbWUgY29kZSBmb3IgY29ycmVjdGx5CiIgaGlnaGxpZ2h0aW5nIGNoYXIgYW5kIFtjaGFyXSBmb2xsb3dlZCBieSBhbiBvcGVuaW5nIHBhcmVuLiBIZSBhbHNvIGFkZGVkCiIgc29tZSB3b3JkcyBmb3Igb3BlcmF0b3JzLCBjb25kaXRpb25hbHMsIGFuZCBkZWZpbml0aW9uczsgYW5kIGFkZGVkIHRoZQoiIGhpZ2hsaWdodGluZyBmb3IgcyIgYW5kIGMiLgoiCiIgMjAwMC0wMy0yODoKIiBKb2huIFByb3ZpZGVuemEgPGpvaG4gYXQgcHJvYm8gZG90IGNvbT4gbWFkZSBpbXByb3ZlbWVudHMgZm9yIHRoZQoiIGhpZ2hsaWdodGluZyBvZiBzdHJpbmdzLCBhbmQgYWRkZWQgdGhlIGNvZGUgZm9yIGhpZ2hsaWdodGluZyBoZXggbnVtYmVycy4KIgoKCiIgRm9yIHZlcnNpb24gNS54OiBDbGVhciBhbGwgc3ludGF4IGl0ZW1zCiIgRm9yIHZlcnNpb24gNi54OiBRdWl0IHdoZW4gYSBzeW50YXggZmlsZSB3YXMgYWxyZWFkeSBsb2FkZWQKaWYgdmVyc2lvbiA8IDYwMAogICAgc3ludGF4IGNsZWFyCmVsc2VpZiBleGlzdHMoImI6Y3VycmVudF9zeW50YXgiKQogICAgZmluaXNoCmVuZGlmCgpsZXQgczpjcG9fc2F2ZSA9ICZjcG8Kc2V0IGNwbyZ2aW0KCiIgU3luY2hyb25pemF0aW9uIG1ldGhvZApzeW4gc3luYyBjY29tbWVudApzeW4gc3luYyBtYXhsaW5lcz0yMDAKCiIgSSB1c2UgZ2ZvcnRoLCBzbyBJIHNldCB0aGlzIHRvIGNhc2UgaWdub3JlCnN5biBjYXNlIGlnbm9yZQoKIiBTb21lIHNwZWNpYWwsIG5vbi1GT1JUSCBrZXl3b3JkcwpzeW4ga2V5d29yZCBmb3J0aFRvZG8gY29udGFpbmVkIFRPRE8gRklYTUUgWFhYCnN5biBtYXRjaCBmb3J0aFRvZG8gY29udGFpbmVkICdDb3B5cmlnaHRcKFxzKFtDY10pXClcPVwoXHNbMC05XVx7Miw0fVwpXD0nCgoiIENoYXJhY3RlcnMgYWxsb3dlZCBpbiBrZXl3b3JkcwoiIEkgZG9uJ3Qga25vdyBpZiAxMjgtMjU1IGFyZSBhbGxvd2VkIGluIEFOUy1GT1JUSAppZiB2ZXJzaW9uID49IDYwMAogICAgc2V0bG9jYWwgaXNrZXl3b3JkPSEsQCwzMy0zNSwlLCQsMzgtNjQsQS1aLDkxLTk2LGEteiwxMjMtMTI2LDEyOC0yNTUKZWxzZQogICAgc2V0IGlza2V5d29yZD0hLEAsMzMtMzUsJSwkLDM4LTY0LEEtWiw5MS05NixhLXosMTIzLTEyNiwxMjgtMjU1CmVuZGlmCgoiIHdoZW4gd2FudGVkLCBoaWdobGlnaHQgdHJhaWxpbmcgd2hpdGUgc3BhY2UKaWYgZXhpc3RzKCJmb3J0aF9zcGFjZV9lcnJvcnMiKQogICAgaWYgIWV4aXN0cygiZm9ydGhfbm9fdHJhaWxfc3BhY2VfZXJyb3IiKQogICAgICAgIHN5biBtYXRjaCBmb3J0aFNwYWNlRXJyb3IgZGlzcGxheSBleGNsdWRlbmwgIlxzXCskIgogICAgZW5kaWYKICAgIGlmICFleGlzdHMoImZvcnRoX25vX3RhYl9zcGFjZV9lcnJvciIpCiAgICAgICAgc3luIG1hdGNoIGZvcnRoU3BhY2VFcnJvciBkaXNwbGF5ICIgXCtcdCJtZT1lLTEKICAgIGVuZGlmCmVuZGlmCgoiIEtleXdvcmRzCgoiIGJhc2ljIG1hdGhlbWF0aWNhbCBhbmQgbG9naWNhbCBvcGVyYXRvcnMKc3luIGtleXdvcmQgZm9ydGhPcGVyYXRvcnMgKyAtICogLyBNT0QgL01PRCBORUdBVEUgQUJTIE1JTiBNQVgKc3luIGtleXdvcmQgZm9ydGhPcGVyYXRvcnMgQU5EIE9SIFhPUiBOT1QgTFNISUZUIFJTSElGVCBJTlZFUlQgMiogMi8gMSsKc3luIGtleXdvcmQgZm9ydGhPcGVyYXRvcnMgMS0gMisgMi0gOCogVU5ERVIrCnN5biBrZXl3b3JkIGZvcnRoT3BlcmF0b3JzIE0rICovICovTU9EIE0qIFVNKiBNKi8gVU0vTU9EIEZNL01PRCBTTS9SRU0Kc3luIGtleXdvcmQgZm9ydGhPcGVyYXRvcnMgRCsgRC0gRE5FR0FURSBEQUJTIERNSU4gRE1BWCBEMiogRDIvCnN5biBrZXl3b3JkIGZvcnRoT3BlcmF0b3JzIEYrIEYtIEYqIEYvIEZORUdBVEUgRkFCUyBGTUFYIEZNSU4gRkxPT1IgRlJPVU5ECnN5biBrZXl3b3JkIGZvcnRoT3BlcmF0b3JzIEYqKiBGU1FSVCBGRVhQIEZFWFBNMSBGTE4gRkxOUDEgRkxPRyBGQUxPRyBGU0lOCnN5biBrZXl3b3JkIGZvcnRoT3BlcmF0b3JzIEZDT1MgRlNJTkNPUyBGVEFOIEZBU0lOIEZBQ09TIEZBVEFOIEZBVEFOMiBGU0lOSApzeW4ga2V5d29yZCBmb3J0aE9wZXJhdG9ycyBGQ09TSCBGVEFOSCBGQVNJTkggRkFDT1NIIEZBVEFOSCBGMiogRjIvIDEvRgpzeW4ga2V5d29yZCBmb3J0aE9wZXJhdG9ycyBGflJFTCBGfkFCUyBGfgpzeW4ga2V5d29yZCBmb3J0aE9wZXJhdG9ycyAwPCAwPD0gMDw+IDA9IDA+IDA+PSA8IDw9IDw+ID0gPiA+PSBVPCBVPD0Kc3luIGtleXdvcmQgZm9ydGhPcGVyYXRvcnMgVT4gVT49IEQwPCBEMDw9IEQwPD4gRDA9IEQwPiBEMD49IEQ8IEQ8PSBEPD4Kc3luIGtleXdvcmQgZm9ydGhPcGVyYXRvcnMgRD0gRD4gRD49IERVPCBEVTw9IERVPiBEVT49IFdJVEhJTiA/TkVHQVRFCnN5biBrZXl3b3JkIGZvcnRoT3BlcmF0b3JzID9ETkVHQVRFCgoiIHN0YWNrIG1hbmlwdWxhdGlvbnMKc3luIGtleXdvcmQgZm9ydGhTdGFjayBEUk9QIE5JUCBEVVAgT1ZFUiBUVUNLIFNXQVAgUk9UIC1ST1QgP0RVUCBQSUNLIFJPTEwKc3luIGtleXdvcmQgZm9ydGhTdGFjayAyRFJPUCAyTklQIDJEVVAgMk9WRVIgMlRVQ0sgMlNXQVAgMlJPVCAyLVJPVApzeW4ga2V5d29yZCBmb3J0aFN0YWNrIDNEVVAgNERVUCA1RFVQIDNEUk9QIDREUk9QIDVEUk9QIDhEUk9QIDRTV0FQIDRST1QKc3luIGtleXdvcmQgZm9ydGhTdGFjayA0LVJPVCA0VFVDSyA4U1dBUCA4RFVQCnN5biBrZXl3b3JkIGZvcnRoUlN0YWNrID5SIFI+IFJAIFJEUk9QIDI+UiAyUj4gMlJAIDJSRFJPUApzeW4ga2V5d29yZCBmb3J0aFJzdGFjayA0PlIgNFI+IDRSQCA0UkRST1AKc3luIGtleXdvcmQgZm9ydGhGU3RhY2sgRkRST1AgRk5JUCBGRFVQIEZPVkVSIEZUVUNLIEZTV0FQIEZST1QKCiIgc3RhY2sgcG9pbnRlciBtYW5pcHVsYXRpb25zCnN5biBrZXl3b3JkIGZvcnRoU1AgU1BAIFNQISBGUEAgRlAhIFJQQCBSUCEgTFBAIExQIQoKIiBhZGRyZXNzIG9wZXJhdGlvbnMKc3luIGtleXdvcmQgZm9ydGhNZW1vcnkgQCAhICshIENAIEMhIDJAIDIhIEZAIEYhIFNGQCBTRiEgREZAIERGIQpzeW4ga2V5d29yZCBmb3J0aEFkckFyaXRoIENIQVJTIENIQVIrIENFTExTIENFTEwrIENFTEwgQUxJR04gQUxJR05FRCBGTE9BVFMKc3luIGtleXdvcmQgZm9ydGhBZHJBcml0aCBGTE9BVCsgRkxPQVQgRkFMSUdOIEZBTElHTkVEIFNGTE9BVFMgU0ZMT0FUKwpzeW4ga2V5d29yZCBmb3J0aEFkckFyaXRoIFNGQUxJR04gU0ZBTElHTkVEIERGTE9BVFMgREZMT0FUKyBERkFMSUdOIERGQUxJR05FRApzeW4ga2V5d29yZCBmb3J0aEFkckFyaXRoIE1BWEFMSUdOIE1BWEFMSUdORUQgQ0ZBTElHTiBDRkFMSUdORUQKc3luIGtleXdvcmQgZm9ydGhBZHJBcml0aCBBRERSRVNTLVVOSVQtQklUUyBBTExPVCBBTExPQ0FURSBIRVJFCnN5biBrZXl3b3JkIGZvcnRoTWVtQmxrcyBNT1ZFIEVSQVNFIENNT1ZFIENNT1ZFPiBGSUxMIEJMQU5LCgoiIGNvbmRpdGlvbmFscwpzeW4ga2V5d29yZCBmb3J0aENvbmQgSUYgRUxTRSBFTkRJRiBUSEVOIENBU0UgT0YgRU5ET0YgRU5EQ0FTRSA/RFVQLUlGCnN5biBrZXl3b3JkIGZvcnRoQ29uZCA/RFVQLTA9LUlGIEFIRUFEIENTLVBJQ0sgQ1MtUk9MTCBDQVRDSCBUSFJPVyBXSVRISU4KCiIgaXRlcmF0aW9ucwpzeW4ga2V5d29yZCBmb3J0aExvb3AgQkVHSU4gV0hJTEUgUkVQRUFUIFVOVElMIEFHQUlOCnN5biBrZXl3b3JkIGZvcnRoTG9vcCA/RE8gTE9PUCBJIEogSyArRE8gVStETyAtRE8gVS1ETyBETyArTE9PUCAtTE9PUApzeW4ga2V5d29yZCBmb3J0aExvb3AgVU5MT09QIExFQVZFID9MRUFWRSBFWElUIERPTkUgRk9SIE5FWFQKCiIgbmV3IHdvcmRzCnN5biBtYXRjaCBmb3J0aENsYXNzRGVmICdcPDpjbGFzc1xzKlteIFx0XVwrXD4nCnN5biBtYXRjaCBmb3J0aE9iamVjdERlZiAnXDw6b2JqZWN0XHMqW14gXHRdXCtcPicKc3luIG1hdGNoIGZvcnRoQ29sb25EZWYgJ1w8Om1cP1xzKlteIFx0XVwrXD4nCnN5biBrZXl3b3JkIGZvcnRoRW5kT2ZDb2xvbkRlZiA7IDtNIDttCnN5biBrZXl3b3JkIGZvcnRoRW5kT2ZDbGFzc0RlZiA7Y2xhc3MKc3luIGtleXdvcmQgZm9ydGhFbmRPZk9iamVjdERlZiA7b2JqZWN0CnN5biBrZXl3b3JkIGZvcnRoRGVmaW5lIENPTlNUQU5UIDJDT05TVEFOVCBGQ09OU1RBTlQgVkFSSUFCTEUgMlZBUklBQkxFCnN5biBrZXl3b3JkIGZvcnRoRGVmaW5lIEZWQVJJQUJMRSBDUkVBVEUgVVNFUiBWQUxVRSBUTyBERUZFUiBJUyBET0VTPiBJTU1FRElBVEUKc3luIGtleXdvcmQgZm9ydGhEZWZpbmUgQ09NUElMRS1PTkxZIENPTVBJTEUgUkVTVFJJQ1QgSU5URVJQUkVUIFBPU1RQT05FIEVYRUNVVEUKc3luIGtleXdvcmQgZm9ydGhEZWZpbmUgTElURVJBTCBDUkVBVEUtSU5URVJQUkVUL0NPTVBJTEUgSU5URVJQUkVUQVRJT04+CnN5biBrZXl3b3JkIGZvcnRoRGVmaW5lIDxJTlRFUlBSRVRBVElPTiBDT01QSUxBVElPTj4gPENPTVBJTEFUSU9OIF0gTEFTVFhUCnN5biBrZXl3b3JkIGZvcnRoRGVmaW5lIENPTVAnIFBPU1RQT05FLCBGSU5ELU5BTUUgTkFNRT5JTlQgTkFNRT9JTlQgTkFNRT5DT01QCnN5biBrZXl3b3JkIGZvcnRoRGVmaW5lIE5BTUU+U1RSSU5HIFNUQVRFIEM7IENWQVJJQUJMRQpzeW4ga2V5d29yZCBmb3J0aERlZmluZSAsIDIsIEYsIEMsCnN5biBtYXRjaCBmb3J0aERlZmluZSAiXFtJRkRFRl0iCnN5biBtYXRjaCBmb3J0aERlZmluZSAiXFtJRlVOREVGXSIKc3luIG1hdGNoIGZvcnRoRGVmaW5lICJcW1RIRU5dIgpzeW4gbWF0Y2ggZm9ydGhEZWZpbmUgIlxbRU5ESUZdIgpzeW4gbWF0Y2ggZm9ydGhEZWZpbmUgIlxbRUxTRV0iCnN5biBtYXRjaCBmb3J0aERlZmluZSAiXFs/RE9dIgpzeW4gbWF0Y2ggZm9ydGhEZWZpbmUgIlxbRE9dIgpzeW4gbWF0Y2ggZm9ydGhEZWZpbmUgIlxbTE9PUF0iCnN5biBtYXRjaCBmb3J0aERlZmluZSAiXFsrTE9PUF0iCnN5biBtYXRjaCBmb3J0aERlZmluZSAiXFtORVhUXSIKc3luIG1hdGNoIGZvcnRoRGVmaW5lICJcW0JFR0lOXSIKc3luIG1hdGNoIGZvcnRoRGVmaW5lICJcW1VOVElMXSIKc3luIG1hdGNoIGZvcnRoRGVmaW5lICJcW0FHQUlOXSIKc3luIG1hdGNoIGZvcnRoRGVmaW5lICJcW1dISUxFXSIKc3luIG1hdGNoIGZvcnRoRGVmaW5lICJcW1JFUEVBVF0iCnN5biBtYXRjaCBmb3J0aERlZmluZSAiXFtDT01QJ10iCnN5biBtYXRjaCBmb3J0aERlZmluZSAiJyIKc3luIG1hdGNoIGZvcnRoRGVmaW5lICdcPFxbXD4nCnN5biBtYXRjaCBmb3J0aERlZmluZSAiXFsnXSIKc3luIG1hdGNoIGZvcnRoRGVmaW5lICdcW0NPTVBJTEVdJwoKIiBkZWJ1Z2dpbmcKc3luIGtleXdvcmQgZm9ydGhEZWJ1ZyBQUklOVERFQlVHREFUQSBQUklOVERFQlVHTElORQpzeW4gbWF0Y2ggZm9ydGhEZWJ1ZyAiXDxcflx+XD4iCgoiIEFzc2VtYmxlcgpzeW4ga2V5d29yZCBmb3J0aEFzc2VtYmxlciBBU1NFTUJMRVIgQ09ERSBFTkQtQ09ERSA7Q09ERSBGTFVTSC1JQ0FDSEUgQywKCiIgYmFzaWMgY2hhcmFjdGVyIG9wZXJhdGlvbnMKc3luIGtleXdvcmQgZm9ydGhDaGFyT3BzICguKSBDSEFSIEVYUEVDVCBGSU5EIFdPUkQgVFlQRSAtVFJBSUxJTkcgRU1JVCBLRVkKc3luIGtleXdvcmQgZm9ydGhDaGFyT3BzIEtFWT8gVElCIENSCiIgcmVjb2duaXplICdjaGFyICgnIG9yICdbY2hhcl0gKCcgY29ycmVjdGx5LCBzbyBpdCBkb2Vzbid0CiIgaGlnaGxpZ2h0IGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIHBhcmVuIGFzIGEgY29tbWVudCB0aWxsIGEgY2xvc2luZyAnKScKc3luIG1hdGNoIGZvcnRoQ2hhck9wcyAnXDxjaGFyXHNcU1xzJwpzeW4gbWF0Y2ggZm9ydGhDaGFyT3BzICdcPFxbY2hhclxdXHNcU1xzJwpzeW4gcmVnaW9uIGZvcnRoQ2hhck9wcyBzdGFydD0rLiJccysgc2tpcD0rXFwiKyBlbmQ9KyIrCgoiIGNoYXItbnVtYmVyIGNvbnZlcnNpb24Kc3luIGtleXdvcmQgZm9ydGhDb252ZXJzaW9uIDw8IyA8IyAjICM+ICM+PiAjUyAoTlVNQkVSKSAoTlVNQkVSPykgQ09OVkVSVCBEPkYKc3luIGtleXdvcmQgZm9ydGhDb252ZXJzaW9uIEQ+UyBESUdJVCBEUEwgRj5EIEhMRCBIT0xEIE5VTUJFUiBTPkQgU0lHTiA+TlVNQkVSCnN5biBrZXl3b3JkIGZvcnRoQ29udmVyc2lvbiBGPlMgUz5GCgoiIGludGVycHJldGVyLCB3b3JkYm9vaywgY29tcGlsZXIKc3luIGtleXdvcmQgZm9ydGhGb3J0aCAoTE9DQUwpIEJZRSBDT0xEIEFCT1JUID5CT0RZID5ORVhUID5MSU5LIENGQSA+VklFVyBIRVJFCnN5biBrZXl3b3JkIGZvcnRoRm9ydGggUEFEIFdPUkRTIFZJRVcgVklFVz4gTj5MSU5LIE5BTUU+IExJTks+IEw+TkFNRSBGT1JHRVQKc3luIGtleXdvcmQgZm9ydGhGb3J0aCBCT0RZPiBBU1NFUlQoIEFTU0VSVDAoIEFTU0VSVDEoIEFTU0VSVDIoIEFTU0VSVDMoICkKc3luIHJlZ2lvbiBmb3J0aEZvcnRoIHN0YXJ0PStBQk9SVCJccysgc2tpcD0rXFwiKyBlbmQ9KyIrCgoiIHZvY2FidWxhcmllcwpzeW4ga2V5d29yZCBmb3J0aFZvY3MgT05MWSBGT1JUSCBBTFNPIFJPT1QgU0VBTCBWT0NTIE9SREVSIENPTlRFWFQgI1ZPQ1MKc3luIGtleXdvcmQgZm9ydGhWb2NzIFZPQ0FCVUxBUlkgREVGSU5JVElPTlMKCiIgRmlsZSBrZXl3b3JkcwpzeW4ga2V5d29yZCBmb3J0aEZpbGVNb2RlIFIvTyBSL1cgVy9PIEJJTgpzeW4ga2V5d29yZCBmb3J0aEZpbGVXb3JkcyBPUEVOLUZJTEUgQ1JFQVRFLUZJTEUgQ0xPU0UtRklMRSBERUxFVEUtRklMRQpzeW4ga2V5d29yZCBmb3J0aEZpbGVXb3JkcyBSRU5BTUUtRklMRSBSRUFELUZJTEUgUkVBRC1MSU5FIEtFWS1GSUxFCnN5biBrZXl3b3JkIGZvcnRoRmlsZVdvcmRzIEtFWT8tRklMRSBXUklURS1GSUxFIFdSSVRFLUxJTkUgRU1JVC1GSUxFCnN5biBrZXl3b3JkIGZvcnRoRmlsZVdvcmRzIEZMVVNILUZJTEUgRklMRS1TVEFUVVMgRklMRS1QT1NJVElPTgpzeW4ga2V5d29yZCBmb3J0aEZpbGVXb3JkcyBSRVBPU0lUSU9OLUZJTEUgRklMRS1TSVpFIFJFU0laRS1GSUxFCnN5biBrZXl3b3JkIGZvcnRoRmlsZVdvcmRzIFNMVVJQLUZJTEUgU0xVUlAtRklEIFNURElOIFNURE9VVCBTVERFUlIKc3luIGtleXdvcmQgZm9ydGhCbG9ja3MgT1BFTi1CTE9DS1MgVVNFIExPQUQgLS0+IEJMT0NLLU9GRlNFVApzeW4ga2V5d29yZCBmb3J0aEJsb2NrcyBHRVQtQkxPQ0stRklEIEJMT0NLLVBPU0lUSU9OIExJU1QgU0NSIEJMT0NLCnN5biBrZXl3b3JkIGZvcnRoQmxvY2tzIEJVRkVSIEVNUFRZLUJVRkZFUlMgRU1QVFktQlVGRkVSIFVQREFURSBVUERBVEVEPwpzeW4ga2V5d29yZCBmb3J0aEJsb2NrcyBTQVZFLUJVRkZFUlMgU0FWRS1CVUZGRVIgRkxVU0ggVEhSVSArTE9BRCArVEhSVQpzeW4ga2V5d29yZCBmb3J0aEJsb2NrcyBCTE9DSy1JTkNMVURFRAoKIiBudW1iZXJzCnN5biBrZXl3b3JkIGZvcnRoTWF0aCBERUNJTUFMIEhFWCBCQVNFCnN5biBtYXRjaCBmb3J0aEludGVnZXIgJ1w8LVw9WzAtOS5dKlswLTkuXVwrXD4nCnN5biBtYXRjaCBmb3J0aEludGVnZXIgJ1w8Ji1cPVswLTkuXSpbMC05Ll1cK1w+JwoiIHJlY29nbml6ZSBoZXggYW5kIGJpbmFyeSBudW1iZXJzLCB0aGUgJyQnIGFuZCAnJScgbm90YXRpb24gaXMgZm9yIGdmb3J0aApzeW4gbWF0Y2ggZm9ydGhJbnRlZ2VyICdcPFwkXHgqXHhcK1w+JyAiICoxKiAtLS0gZG9udCd0IG1lc3MKc3luIG1hdGNoIGZvcnRoSW50ZWdlciAnXDxceCpcZFx4Klw+JyAgIiAqMiogLS0tIHRoaXMgb3JkZXIhCnN5biBtYXRjaCBmb3J0aEludGVnZXIgJ1w8JVswLTFdKlswLTFdXCtcPicKc3luIG1hdGNoIGZvcnRoRmxvYXQgJ1w8LVw9XGQqWy5dXD1cZFwrW0RkRWVdXGRcK1w+JwpzeW4gbWF0Y2ggZm9ydGhGbG9hdCAnXDwtXD1cZCpbLl1cPVxkXCtbRGRFZV1bLStdXGRcK1w+JwoKIiBYWFggSWYgeW91IGZpbmQgdGhpcyBvdmVya2lsbCB5b3UgY2FuIHJlbW92ZSBpdC4gVGhpcyBoYXMgdG8gY29tZSBhZnRlciB0aGUKIiBoaWdobGlnaHRpbmcgZm9yIG51bWJlcnMgb3RoZXJ3aXNlIGl0IGhhcyBubyBlZmZlY3QuCnN5biByZWdpb24gZm9ydGhDb21tZW50IHN0YXJ0PScwIFxbaWZcXScgZW5kPSdcW2VuZGlmXF0nIGVuZD0nXFt0aGVuXF0nIGNvbnRhaW5zPWZvcnRoVG9kbwoKIiBTdHJpbmdzCnN5biByZWdpb24gZm9ydGhTdHJpbmcgc3RhcnQ9K1wuKlwiKyBlbmQ9KyIrIGVuZD0rJCsgY29udGFpbnM9QFNwZWxsCiIgWFhYCnN5biByZWdpb24gZm9ydGhTdHJpbmcgc3RhcnQ9K3NcIisgZW5kPSsiKyBlbmQ9KyQrIGNvbnRhaW5zPUBTcGVsbApzeW4gcmVnaW9uIGZvcnRoU3RyaW5nIHN0YXJ0PStjXCIrIGVuZD0rIisgZW5kPSskKyBjb250YWlucz1AU3BlbGwKCiIgQ29tbWVudHMKc3luIG1hdGNoIGZvcnRoQ29tbWVudCAnXFxccy4qJCcgY29udGFpbnM9QFNwZWxsLGZvcnRoVG9kbyxmb3J0aFNwYWNlRXJyb3IKc3luIHJlZ2lvbiBmb3J0aENvbW1lbnQgc3RhcnQ9J1xcU1xzJyBlbmQ9Jy4qJyBjb250YWlucz1AU3BlbGwsZm9ydGhUb2RvLGZvcnRoU3BhY2VFcnJvcgpzeW4gbWF0Y2ggZm9ydGhDb21tZW50ICdcLihcc1teKV0qKScgY29udGFpbnM9QFNwZWxsLGZvcnRoVG9kbyxmb3J0aFNwYWNlRXJyb3IKc3luIHJlZ2lvbiBmb3J0aENvbW1lbnQgc3RhcnQ9J1woXlx8XHNcKVx6cyhccycgc2tpcD0nXFwpJyBlbmQ9JyknIGNvbnRhaW5zPUBTcGVsbCxmb3J0aFRvZG8sZm9ydGhTcGFjZUVycm9yCnN5biByZWdpb24gZm9ydGhDb21tZW50IHN0YXJ0PScvXConIGVuZD0nXCovJyBjb250YWlucz1AU3BlbGwsZm9ydGhUb2RvLGZvcnRoU3BhY2VFcnJvcgoKIiBJbmNsdWRlIGZpbGVzCnN5biBtYXRjaCBmb3J0aEluY2x1ZGUgJ15JTkNMVURFXHNcK1xrXCsnCnN5biBtYXRjaCBmb3J0aEluY2x1ZGUgJ15yZXF1aXJlXHNcK1xrXCsnCnN5biBtYXRjaCBmb3J0aEluY2x1ZGUgJ15mbG9hZFxzXCsnCnN5biBtYXRjaCBmb3J0aEluY2x1ZGUgJ15uZWVkc1xzXCsnCgoiIExvY2FscyBkZWZpbml0aW9ucwpzeW4gcmVnaW9uIGZvcnRoTG9jYWxzIHN0YXJ0PSd7XHMnIHN0YXJ0PSd7JCcgZW5kPSdcc30nIGVuZD0nXn0nCnN5biBtYXRjaCBmb3J0aExvY2FscyAneyB9JyAiIG90aGVyd2lzZSwgYXQgbGVhc3QgdHdvIHNwYWNlcyBiZXR3ZWVuCnN5biByZWdpb24gZm9ydGhEZXByZWNhdGVkIHN0YXJ0PSdsb2NhbHN8JyBlbmQ9J3wnCgoiIERlZmluZSB0aGUgZGVmYXVsdCBoaWdobGlnaHRpbmcuCiIgRm9yIHZlcnNpb24gNS43IGFuZCBlYXJsaWVyOiBvbmx5IHdoZW4gbm90IGRvbmUgYWxyZWFkeQoiIEZvciB2ZXJzaW9uIDUuOCBhbmQgbGF0ZXI6IG9ubHkgd2hlbiBhbiBpdGVtIGRvZXNuJ3QgaGF2ZSBoaWdobGlnaHRpbmcgeWV0CmlmIHZlcnNpb24gPj0gNTA4IHx8ICFleGlzdHMoImRpZF9mb3J0aF9zeW5faW5pdHMiKQogICAgaWYgdmVyc2lvbiA8IDUwOAoJbGV0IGRpZF9mb3J0aF9zeW5faW5pdHMgPSAxCgljb21tYW5kIC1uYXJncz0rIEhpTGluayBoaSBsaW5rIDxhcmdzPgogICAgZWxzZQoJY29tbWFuZCAtbmFyZ3M9KyBIaUxpbmsgaGkgZGVmIGxpbmsgPGFyZ3M+CiAgICBlbmRpZgoKICAgICIgVGhlIGRlZmF1bHQgbWV0aG9kcyBmb3IgaGlnaGxpZ2h0aW5nLiBDYW4gYmUgb3ZlcnJpZGRlbiBsYXRlci4KICAgIEhpTGluayBmb3J0aFRvZG8gVG9kbwogICAgSGlMaW5rIGZvcnRoT3BlcmF0b3JzIE9wZXJhdG9yCiAgICBIaUxpbmsgZm9ydGhNYXRoIE51bWJlcgogICAgSGlMaW5rIGZvcnRoSW50ZWdlciBOdW1iZXIKICAgIEhpTGluayBmb3J0aEZsb2F0IEZsb2F0CiAgICBIaUxpbmsgZm9ydGhTdGFjayBTcGVjaWFsCiAgICBIaUxpbmsgZm9ydGhSc3RhY2sgU3BlY2lhbAogICAgSGlMaW5rIGZvcnRoRlN0YWNrIFNwZWNpYWwKICAgIEhpTGluayBmb3J0aFNQIFNwZWNpYWwKICAgIEhpTGluayBmb3J0aE1lbW9yeSBGdW5jdGlvbgogICAgSGlMaW5rIGZvcnRoQWRyQXJpdGggRnVuY3Rpb24KICAgIEhpTGluayBmb3J0aE1lbUJsa3MgRnVuY3Rpb24KICAgIEhpTGluayBmb3J0aENvbmQgQ29uZGl0aW9uYWwKICAgIEhpTGluayBmb3J0aExvb3AgUmVwZWF0CiAgICBIaUxpbmsgZm9ydGhDb2xvbkRlZiBEZWZpbmUKICAgIEhpTGluayBmb3J0aEVuZE9mQ29sb25EZWYgRGVmaW5lCiAgICBIaUxpbmsgZm9ydGhEZWZpbmUgRGVmaW5lCiAgICBIaUxpbmsgZm9ydGhEZWJ1ZyBEZWJ1ZwogICAgSGlMaW5rIGZvcnRoQXNzZW1ibGVyIEluY2x1ZGUKICAgIEhpTGluayBmb3J0aENoYXJPcHMgQ2hhcmFjdGVyCiAgICBIaUxpbmsgZm9ydGhDb252ZXJzaW9uIFN0cmluZwogICAgSGlMaW5rIGZvcnRoRm9ydGggU3RhdGVtZW50CiAgICBIaUxpbmsgZm9ydGhWb2NzIFN0YXRlbWVudAogICAgSGlMaW5rIGZvcnRoU3RyaW5nIFN0cmluZwogICAgSGlMaW5rIGZvcnRoQ29tbWVudCBDb21tZW50CiAgICBIaUxpbmsgZm9ydGhDbGFzc0RlZiBEZWZpbmUKICAgIEhpTGluayBmb3J0aEVuZE9mQ2xhc3NEZWYgRGVmaW5lCiAgICBIaUxpbmsgZm9ydGhPYmplY3REZWYgRGVmaW5lCiAgICBIaUxpbmsgZm9ydGhFbmRPZk9iamVjdERlZiBEZWZpbmUKICAgIEhpTGluayBmb3J0aEluY2x1ZGUgSW5jbHVkZQogICAgSGlMaW5rIGZvcnRoTG9jYWxzIFR5cGUgIiBub3RoaW5nIGVsc2UgdXNlcyB0eXBlIGFuZCBsb2NhbHMgbXVzdCBzdGFuZCBvdXQKICAgIEhpTGluayBmb3J0aERlcHJlY2F0ZWQgRXJyb3IgIiBpZiB5b3UgbXVzdCwgY2hhbmdlIHRvIFR5cGUKICAgIEhpTGluayBmb3J0aEZpbGVNb2RlIEZ1bmN0aW9uCiAgICBIaUxpbmsgZm9ydGhGaWxlV29yZHMgU3RhdGVtZW50CiAgICBIaUxpbmsgZm9ydGhCbG9ja3MgU3RhdGVtZW50CiAgICBIaUxpbmsgZm9ydGhTcGFjZUVycm9yIEVycm9yCgogICAgZGVsY29tbWFuZCBIaUxpbmsKZW5kaWYKCmxldCBiOmN1cnJlbnRfc3ludGF4ID0gImZvcnRoIgoKbGV0ICZjcG8gPSBzOmNwb19zYXZlCnVubGV0IHM6Y3BvX3NhdmUKIiB2aW06dHM9ODpzdz00Om5vY2luZGVudDpzbWFydGluZGVudDoK