IyBUcmFuc2xhdGlvbiBvZiBSLWNvbXBpbGVyLnBvdCB0byBGcmVuY2gKIyBDb3B5cmlnaHQgKEMpIDIwMTEgVGhlIFIgRm91bmRhdGlvbgojIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBjb21waWxlciBSIHBhY2thZ2UuCiMgUGhpbGlwcGUgR3Jvc2plYW4gPHBoZ3Jvc2plYW5Ac2Npdmlld3Mub3JnPiwgMjAxMS4KIwptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogUiAyLjEzLjBcbiIKIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBidWdzLnItcHJvamVjdC5vcmdcbiIKIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE4LTAzLTI5IDA3OjA2XG4iCiJQTy1SZXZpc2lvbi1EYXRlOiAyMDEzLTAzLTE4IDIyOjAwKzAxMDBcbiIKIkxhc3QtVHJhbnNsYXRvcjogUGhpbGlwcGUgR3Jvc2plYW4gPHBoZ3Jvc2plYW5Ac2Npdmlld3Mub3JnPlxuIgoiTGFuZ3VhZ2UtVGVhbTogRnJlbmNoIDxSLWNvcmVAci1wcm9qZWN0Lm9yZz5cbiIKIkxhbmd1YWdlOiBmclxuIgoiTUlNRS1WZXJzaW9uOiAxLjBcbiIKIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xXG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiJQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD0obiA+IDEpO1xuIgoiWC1HZW5lcmF0b3I6IFBvZWRpdCAxLjUuNVxuIgoKbXNnaWQgIm5hbWVzcGFjZSBmb3VuZCB3aXRoaW4gbG9jYWwgZW52aXJvbm1lbnRzIgptc2dzdHIgIiIKCm1zZ2lkICJub3QgYSBwcm9wZXIgZXZhbHVhdGlvbiBlbnZpcm9ubWVudCIKbXNnc3RyICJjZWNpIG4nZXN0IHBhcyB1biBlbnZpcm9ubmVtZW50IGFk6XF1YXQgcG91ciBsJ+l2YWx1YXRpb24iCgojLCBmdXp6eQptc2dpZCAibm9uLW5hbWVzcGFjZSBmb3VuZCB3aXRoaW4gbmFtZXNwYWNlIGVudmlyb25tZW50cyIKbXNnc3RyICIiCiInbnMnIGRvaXQg6nRyZSDqdHJlIHVuIGVzcGFjZSBkZSBub21zIChuYW1lc3BhY2UpIG91IHVuIGVudmlyb25uZW1lbnQgIgoiZCdpbXBvcnRhdGlvbiBkJ2VzcGFjZSBkZSBub21zIgoKbXNnaWQgIm5hbWVzcGFjZSBmb3VuZCB3aXRoaW4gZ2xvYmFsIGVudmlyb25tZW50cyIKbXNnc3RyICIiCgptc2dpZCAiYmFkIGFzc2lnbm1lbnQ6ICVzIgptc2dzdHIgImFmZmVjdGF0aW9uIGluY29ycmVjdGU6ICVzIgoKbXNnaWQgImNhbm5vdCBjb25zdGFudCBmb2xkIGxpdGVyYWwgcHJvbWlzZXMiCm1zZ3N0ciAiIgoibGVzIHByb21lc3NlcyBsaXR06XJhbGVzIG5lIHBldXZlbnQgcmVwbGnpZXMgZGUgbWFuaehyZSBjb25zdGFudGUgKD9jb25zdGFudCAiCiJmb2xkKSIKCm1zZ2lkICJjYW5ub3QgY29uc3RhbnQgZm9sZCBsaXRlcmFsIGJ5dGVjb2RlIG9iamVjdHMiCm1zZ3N0ciAiIgoibGVzIG9iamVjdHMgJ2J5dGVjb2RlJyBsaXR06XJhdXggbmUgcGV1dmVudCByZXBsaelzIGRlIG1hbmnocmUgY29uc3RhbnRlICg/IgoiY29uc3RhbnQgZm9sZCkiCgptc2dpZCAibm8gb2Zmc2V0IHJlY29yZGVkIGZvciBsYWJlbCBcIiVzXCIiCm1zZ3N0ciAiYXVjdW4gZOljYWxsYWdlIGVucmVnaXN0cukgcG91ciBsZSBsaWJlbGzpIFwiJXNcIiIKCm1zZ2lkICJjYW5ub3QgY29tcGlsZSBieXRlIGNvZGUgbGl0ZXJhbHMgaW4gY29kZSIKbXNnc3RyICJpbXBvc3NpYmxlIGRlIGNvbXBpbGVyIGRlcyBsaXR06XJhdXggZW4gYnl0ZSBjb2RlIGRhbnMgbGUgY29kZSIKCm1zZ2lkICJjYW5ub3QgY29tcGlsZSBwcm9taXNlIGxpdGVyYWxzIGluIGNvZGUiCm1zZ3N0ciAiaW1wb3NzaWJsZSBkZSBjb21waWxlciBkZXMgcHJvbWVzc2VzIGxpdHTpcmFsZXMgZGFucyBsZSBjb2RlIgoKbXNnaWQgInBvc3NpYmxlIGVycm9yIGluICclcyc6ICVzIgptc2dzdHIgImVycmV1ciBwb3NzaWJsZSBkYW5zICclcycgOiAlcyIKCm1zZ2lkICJiYWQgbmFtZXNwYWNlIGltcG9ydCBmcmFtZSIKbXNnc3RyICJjYWRyZSBkJ2ltcG9ydGF0aW9uIGVycm9u6SBwb3VyIGwnZXNwYWNlIGRlIG5vbXMiCgptc2dpZCAiYmFkIGFzc2lnbm1lbnQgMSIKbXNnc3RyICJtYXV2YWlzZSBhZmZlY3RhdGlvbiAxIgoKbXNnaWQgImJhZCBhc3NpZ25tZW50IDIiCm1zZ3N0ciAibWF1dmFpc2UgYWZmZWN0YXRpb24gMSIKCm1zZ2lkICJpbnZhbGlkIGZ1bmN0aW9uIGluIGNvbXBsZXggYXNzaWdubWVudCIKbXNnc3RyICJmdW5jdGlvbiBpbmNvcnJlY3RlIGRhbnMgdW5lIGFmZmVjdGF0aW9uIGNvbXBsZXhlIgoKbXNnaWQgIm1pc3NpbmcgYXJndW1lbnRzIGFyZSBub3QgYWxsb3dlZCIKbXNnc3RyICJsZXMgYXJndW1lbnRzIG1hbnF1YW50cyBuZSBzb250IHBhcyBhdXRvcmlz6XMiCgptc2dpZCAiZW1wdHkgYWx0ZXJuYXRpdmUgaW4gbnVtZXJpYyBzd2l0Y2giCm1zZ3N0ciAiYWx0ZXJuYXRpdmUgdmlkZSBkYW5zIHVuZSBjb25zdHJ1Y3Rpb24gJ3N3aXRjaCcgbnVt6XJpcXVlIgoKbXNnaWQgIm5vIHZpc2libGUgZ2xvYmFsIGZ1bmN0aW9uIGRlZmluaXRpb24gZm9yICclcyciCm1zZ3N0ciAicGFzIGRlIGTpZmluaXRpb24gZ2xvYmFsZSBkZSBmb25jdGlvbiB2aXNpYmxlIHBvdXIgJyVzJyIKCm1zZ2lkICJubyB2aXNpYmxlIGJpbmRpbmcgZm9yIGdsb2JhbCB2YXJpYWJsZSAnJXMnIgptc2dzdHIgInBhcyBkZSBsaWVuIHBvdXIgbGEgdmFyaWFibGUgZ2xvYmFsZSAnJXMnIgoKbXNnaWQgIm5vIHZpc2libGUgYmluZGluZyBmb3IgJzw8LScgYXNzaWdubWVudCB0byAnJXMnIgptc2dzdHIgInBhcyBkZSBsaWVuIHZpc2libGUgcG91ciBsJ2FmZmVjdGF0aW9uICc8PC0nIOAgJyVzJyIKCm1zZ2lkICJ3cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIHRvICclcyciCm1zZ3N0ciAibm9tYnJlIGluY29ycmVjdCBkJ2FyZ3VtZW50cyBwb3VyICclcyciCgptc2dpZCAibW9yZSB0aGFuIG9uZSBkZWZhdWx0IHByb3ZpZGVkIGluIHN3aXRjaCgpIGNhbGwiCm1zZ3N0ciAicGx1cyBkJ3VuZSB2YWxldXIgcGFyIGTpZmF1dCBmb3VybmllIGRhbnMgdW5lIGNvbnN0cnVjdGlvbiBzd2l0Y2goKSIKCm1zZ2lkICInc3dpdGNoJyB3aXRoIG5vIGFsdGVybmF0aXZlcyIKbXNnc3RyICIiCgptc2dpZCAiRXJyb3I6IGNvbXBpbGF0aW9uIGZhaWxlZCAtIgptc2dzdHIgIiIKCm1zZ2lkICJjYW5ub3QgY29tcGlsZSBhIG5vbi1mdW5jdGlvbiIKbXNnc3RyICJpbXBvc3NpYmxlIGRlIGNvbXBpbGVyIGF1dHJlIGNob3NlIHF1J3VuZSBmb25jdGlvbiIKCm1zZ2lkICJjb21waWxpbmcgJyVzJyIKbXNnc3RyICJjb21waWxhdGlvbiBkZSAnJXMnIgoKbXNnaWQgInNhdmluZyB0byBmaWxlIFwiJXNcIiAuLi4iCm1zZ3N0ciAic2F1dmVnYXJkZSBkYW5zIGxlIGZpY2hpZXIgXCIlc1wiIC4uLiIKCm1zZ2lkICJkb25lIgptc2dzdHIgImZpbmkiCgptc2dpZCAiJ2VudicgbXVzdCBiZSBhIHRvcCBsZXZlbCBlbnZpcm9ubWVudCIKbXNnc3RyICInZW52JyBkb2l0IOp0cmUgdW4gZW52aXJvbm5lbWVudCBkZSBwcmVtaWVyIG5pdmVhdSIKCm1zZ2lkICJpbnB1dCBhbmQgb3V0cHV0IGZpbGUgbmFtZXMgYXJlIHRoZSBzYW1lIgptc2dzdHIgImxlcyBub21zIGRlIGZpY2hpZXIgZCdlbnRy6WUgZXQgZGUgc29ydGllIHNvbnQgbGVzIG3qbWVzIgoKbXNnaWQgImVtcHR5IGlucHV0IGZpbGU7IG5vIG91dHB1dCB3cml0dGVuIgptc2dzdHIgImZpY2hpZXIgZCdlbnRy6WUgdmlkZSA7IHJpZW4gbidlc3Qg6WNyaXQgZW4gc29ydGllIgoKbXNnaWQgImZpbGUgJyVzJyBkb2VzIG5vdCBleGlzdCIKbXNnc3RyICJsZSBmaWNoaWVyICclcycgbidleGlzdGUgcGFzIgoKbXNnaWQgIiclcycgaXMgbm90IGEgdmFsaWQgY29tcGlsZXIgb3B0aW9uIgptc2dzdHIgIiclcycgbidlc3QgcGFzIHVuZSBvcHRpb24gZGUgY29tcGlsYXRpb24gcmVjb25udWUiCgptc2dpZCAiaW52YWxpZCBlbnZpcm9ubWVudCB2YXJpYWJsZSB2YWx1ZTogJXM9PSVzIgptc2dzdHIgIiIKCm1zZ2lkICJpbnZhbGlkIGNvbXBpbGVyIG9wdGlvbnM6IG9wdGltaXplKD09JWQpPDIgYW5kIGppdEVuYWJsZWQoPT0lZCk+MiIKbXNnc3RyICIiCgptc2dpZCAiZnVuY3Rpb24gaXMgbm90IGNvbXBpbGVkIgptc2dzdHIgImxhIGZvbmN0aW9uIG4nZXN0IHBhcyBjb21waWzpZSIKCiMsIGZ1enp5Cm1zZ2lkICJjYW5ub3QgY29tcGlsZSB0aGlzIGV4cHJlc3Npb24iCm1zZ3N0ciAiaW1wb3NzaWJsZSBkZSBjb21waWxlciBkZXMgcHJvbWVzc2VzIGxpdHTpcmFsZXMgZGFucyBsZSBjb2RlIgoKbXNnaWQgImxvY2FsIGFzc2lnbm1lbnQgdG8gc3ludGFjdGljIGZ1bmN0aW9uOiAiCm1zZ2lkX3BsdXJhbCAibG9jYWwgYXNzaWdubWVudHMgdG8gc3ludGFjdGljIGZ1bmN0aW9uczogIgptc2dzdHJbMF0gImFmZmVjdGF0aW9uIGxvY2FsZSB2ZXJzIHVuZSBmb25jdGlvbiBzeW50YXhpcXVlIDoiCm1zZ3N0clsxXSAiYWZmZWN0YXRpb25zIGxvY2FsZXMgdmVycyBkZXMgZm9uY3Rpb25zIHN5bnRheGlxdWVzIDoiCgojfiBtc2dpZCAiJ25zJyBtdXN0IGJlIGEgbmFtZXNwYWNlIG9yIGEgbmFtZXNwYWNlIGltcG9ydHMgZW52aXJvbm1lbnQiCiN+IG1zZ3N0ciAiIgojfiAiJ25zJyBkb2l0IOp0cmUg6nRyZSB1biBlc3BhY2UgZGUgbm9tcyAobmFtZXNwYWNlKSBvdSB1biBlbnZpcm9ubmVtZW50ICIKI34gImQnaW1wb3J0YXRpb24gZCdlc3BhY2UgZGUgbm9tcyIKCiN+IG1zZ2lkICJleHBlY3RlZCBhIHNpbmdsZSBsb2dpY2FsIHZhbHVlIGZvciB0aGUgUzQgc3RhdGUgZmxhZyIKI34gbXNnc3RyICIiCiN+ICJ1bmUgdmFsZXVyIGJvb2zpZW5uZSB1bmlxdWUgKGxvZ2ljYWwpIGVzdCBhdHRlbmR1ZSBwb3VyIGxlIGRyYXBlYXUgZCfpdGF0ICIKI34gIlM0Igo=