IyBUcmFuc2xhdGlvbiBvZiB0b29scy5wb3QgdG8gRnJlbmNoCiMgQ29weXJpZ2h0IChDKSAyMDA1IFRoZSBSIEZvdW5kYXRpb24KIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgdG9vbHMgUiBwYWNrYWdlLgojIFBoaWxpcHBlIEdyb3NqZWFuIDxwaGdyb3NqZWFuQHNjaXZpZXdzLm9yZz4sIDIwMDUuCiMKbXNnaWQgIiIKbXNnc3RyICIiCiJQcm9qZWN0LUlkLVZlcnNpb246IFIgMi4xMi4wXG4iCiJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCiJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxOC0wMy0yOSAwNzowNi0wNzAwXG4iCiJQTy1SZXZpc2lvbi1EYXRlOiAyMDEzLTAzLTE5IDIwOjM0KzAxMDBcbiIKIkxhc3QtVHJhbnNsYXRvcjogUGhpbGlwcGUgR3Jvc2plYW4gPHBoZ3Jvc2plYW5Ac2Npdmlld3Mub3JnPlxuIgoiTGFuZ3VhZ2UtVGVhbTogRnJlbmNoIDxSLWNvcmVAci1wcm9qZWN0Lm9yZz5cbiIKIkxhbmd1YWdlOiBmclxuIgoiTUlNRS1WZXJzaW9uOiAxLjBcbiIKIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xXG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiJQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD0obiA+IDEpO1xuIgoiWC1HZW5lcmF0b3I6IFBvZWRpdCAxLjUuNVxuIgoKIzogUm1kNS5jOjM2Cm1zZ2lkICJhcmd1bWVudCAnZmlsZXMnIG11c3QgYmUgY2hhcmFjdGVyIgptc2dzdHIgImwnYXJndW1lbnQgJ2ZpbGVzJyBkb2l0IOp0cmUgdW5lIGNoYe5uZSBkZSBjYXJhY3TocmVzIgoKIzogUm1kNS5jOjUwCiMsIGMtZm9ybWF0Cm1zZ2lkICJtZDUgZmFpbGVkIG9uIGZpbGUgJyVzJyIKbXNnc3RyICJtZDUgYSDpY2hvdekgc3VyIGxlIGZpY2hpZXIgJyVzJyIKCiM6IGdldGZtdHMuYzo2MQojLCBjLWZvcm1hdAptc2dpZCAib25seSAlZCBhcmd1bWVudHMgYXJlIGFsbG93ZWQiCm1zZ3N0ciAic2V1bHMgJWQgYXJndW1lbnRzIHNvbnQgYXV0b3Jpc+lzIgoKIzogZ2V0Zm10cy5jOjY2Cm1zZ2lkICInZm10JyBpcyBub3QgYSBjaGFyYWN0ZXIgdmVjdG9yIgptc2dzdHIgIidmbXQnIG4nZXN0IHBhcyB1biB2ZWN0ZXVyIGRlIGNoYe5uZXMgZGUgY2FyYWN06HJlcyIKCiM6IGdldGZtdHMuYzo2OQptc2dpZCAiJ2ZtdCcgbXVzdCBiZSBsZW5ndGggMSIKbXNnc3RyICInZm10JyBkb2l0IGF2b2lyIHVuZSBsb25ndWV1ciAxIgoKIzogZ2V0Zm10cy5jOjc1CiMsIGMtZm9ybWF0Cm1zZ2lkICInZm10JyBsZW5ndGggZXhjZWVkcyBtYXhpbWFsIGZvcm1hdCBsZW5ndGggJWQiCm1zZ3N0ciAibGEgbG9uZ3VldXIgZGUgJ2ZtdCcgZOlwYXNzZSBsZSBmb3JtYXQgbWF4aW1hbCBkZSBsb25ndWV1ciAlZCIKCiM6IGdldGZtdHMuYzo5NgojLCBjLWZvcm1hdAptc2dpZCAidW5yZWNvZ25pc2VkIGZvcm1hdCBzcGVjaWZpY2F0aW9uICclcyciCm1zZ3N0ciAic3DpY2lmaWNhdGlvbiBkZSBmb3JtYXQgaW5jb25udSAnJXMnIgoKIzogZ2V0Zm10cy5jOjEzNgptc2dpZCAiYXQgbW9zdCBvbmUgYXN0ZXJpc2sgJyonIGlzIHN1cHBvcnRlZCBpbiBlYWNoIGNvbnZlcnNpb24gc3BlY2lmaWNhdGlvbiIKbXNnc3RyICIiCiJ1bmUgc2V1bGUgYXN06XJpc3F1ZSAnKicgZXN0IHN1cHBvcnTpZSBhdSBtYXhpbXVtIGRhbnMgY2hhcXVlIHNw6WNpZmljYXRpb24gIgoiZGUgY29udmVyc2lvbiAiCgojOiBncmFtTGF0ZXguYzoyMzc2IGdyYW1SZC5jOjM4OTgKIywgYy1mb3JtYXQKbXNnaWQgInVuYWJsZSB0byBhbGxvY2F0ZSBidWZmZXIgZm9yIGxvbmcgc3RyaW5nIGF0IGxpbmUgJWQiCm1zZ3N0ciAiIgoiaW1wb3NzaWJpbGl06SBkJ2FsbG91ZXIgdW5lIHpvbmUgdGFtcG9uIHBvdXIgdW5lIGNoYe5uZSBsb25ndWUg4CBsYSBsaWduZSAlZCIKCiM6IGdyYW1MYXRleC5jOjI2MTMgZ3JhbVJkLmM6NDM4NyBncmFtUmQuYzo0MzkzCiMsIGMtZm9ybWF0Cm1zZ2lkICJpbnZhbGlkICclcycgdmFsdWUiCm1zZ3N0ciAidmFsZXVyICclcycgaW5jb3JyZWN0ZSIKCiM6IGdyYW1SZC5jOjI1MzEgZ3JhbVJkLmM6MjUzNAojLCBjLWZvcm1hdAptc2dpZCAiYmFkIG1hcmt1cCAoZXh0cmEgc3BhY2U/KSBhdCAlczolZDolZCIKbXNnc3RyICJtYXJxdWUgZXJyb27pZSAoZXNwYWNlIGFkZGl0aW9uZWwgPykg4CAlczolZDolZCIKCiM6IGdyYW1SZC5jOjMxMTMKIywgYy1mb3JtYXQKbXNnaWQgIk1hY3JvICclcycgcHJldmlvdXNseSBkZWZpbmVkLiIKbXNnc3RyICJMYSBtYWNybyAnJXMnIGVzdCBk6WrgIHBy6WPpZGVtbWVudCBk6WZpbmllLiIKCiM6IGdyYW1SZC5jOjMxMjMKIywgYy1mb3JtYXQKbXNnaWQgIkF0IG1vc3QgNCBhcmd1bWVudHMgYXJlIGFsbG93ZWQgZm9yIHVzZXIgZGVmaW5lZCBtYWNyb3MuIgptc2dzdHIgIiIKIlVuIG1heGltdW0gZGUgNCBhcmd1bWVudHMgZXN0IGF1dG9yaXPpIHBvdXIgbGVzIG1hY3JvcyBk6WZpbmllcyBwYXIgIgoibCd1dGlsaXNhdGV1ci4iCgojOiBncmFtUmQuYzozMTU3CiMsIGMtZm9ybWF0Cm1zZ2lkICJObyBtYWNybyBkZWZpbml0aW9uIGZvciAnJXMnLiIKbXNnc3RyICJQYXMgZGUgZOlmaW5pdGlvbiBkZSBtYWNybyBwb3VyICclcycuIgoKIzogZ3JhbVJkLmM6MzMxMyBncmFtUmQuYzozMzE3CiMsIGMtZm9ybWF0Cm1zZ2lkICJuZXdsaW5lIHdpdGhpbiBxdW90ZWQgc3RyaW5nIGF0ICVzOiVkIgptc2dzdHIgIiIKInJldG91ciBkZSBsaWduZSDgIGwnaW506XJpZXVyIGQndW5lIGNoYe5uZSBkZSBjYXJhY3TocmVzIGVudHJlIGd1aWxsZW1ldHMg4CAiCiIlczolZCIKCiM6IGdyYW1SZC5jOjMzMzYKIywgYy1mb3JtYXQKbXNnaWQgInVuYWJsZSB0byBhbGxvY2F0ZSBidWZmZXIgZm9yIGxvbmcgbWFjcm8gYXQgbGluZSAlZCIKbXNnc3RyICIiCiJpbXBvc3NpYmxlIGQnYWxsb3VlciBkZSBsYSBt6W1vaXJlIHRhbXBvbiBwb3VyIHVuZSBsb25ndWUgbWFjcm8g4CBsYSBsaWduICVkIgoKIzogZ3JhbVJkLmM6MzM2Ngptc2dpZCAibWFjcm9zIG5lc3RlZCB0b28gZGVlcGx5OiBpbmZpbml0ZSByZWN1cnNpb24/Igptc2dzdHIgIm1hY3JvcyBpbWJyaXF16WVzIHRyb3AgcHJvZm9uZOltZW50IDogculjdXJzaW9uIGluZmluaWUgPyIKCiM6IGdyYW1SZC5jOjM3NjAKIywgYy1mb3JtYXQKbXNnaWQgIlVuYWJsZSB0byBmaW5kIG1hY3JvICVzIgptc2dzdHIgIk1hY3JvICVzIGludHJvdXZhYmxlIgoKIzogZ3JhbVJkLmM6Mzk1OAojLCBjLWZvcm1hdAptc2dpZCAiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgKGluICVjIHF1b3RlZCBzdHJpbmcgb3BlbmVkIGF0ICVzOiVkOiVkKSIKbXNnc3RyICIiCiJGaW4gZCdlbnRy6WUgaW5hdHRlbmR1ZSAoZGFucyBsYSBjaGHubmUgZW50cmUgZ3VpbGxlbWVudHMgJWMgb3V2ZXJ0ZXMg4CAlczoiCiIlZDolZCkiCgojOiBncmFtUmQuYzo0NDAwCm1zZ2lkICJjYW5ub3Qgb3BlbiB0aGUgY29ubmVjdGlvbiIKbXNnc3RyICJpbXBvc3NpYmxlIGQnb3V2cmlyIGxhIGNvbm5leGlvbiIKCiM6IGdyYW1SZC5jOjQ0MDcKbXNnaWQgImNhbm5vdCByZWFkIGZyb20gdGhpcyBjb25uZWN0aW9uIgptc2dzdHIgImltcG9zc2libGUgZGUgbGlyZSBkZXB1aXMgY2V0dGUgY29ubmV4aW9uIgoKIzogZ3JhbVJkLmM6NDQxNQptc2dpZCAiaW52YWxpZCBSZCBmaWxlIgptc2dzdHIgImZpY2hpZXIgUmQgaW5jb3JyZWN0IgoKIzogZ3JhbVJkLmM6NDQzNAptc2dpZCAiJ2RlcGFyc2VSZCcgb25seSBzdXBwb3J0cyBkZXBhcnNpbmcgY2hhcmFjdGVyIGVsZW1lbnRzIgptc2dzdHIgIidkZXBhcnNlUmQnIG5lIHBldXQgZOljb2RlciBxdWUgZGVzIOls6W1lbnRzIHRleHR1ZWxzIgoKIzogZ3JhbVJkLmM6NDQzNwptc2dpZCAiYmFkIHN0YXRlIgptc2dzdHIgIul0YXQgaW5jb3JyZWN0IgoKIzogZ3JhbVJkLmM6NDQ1MAojLCBjLWZvcm1hdAptc2dpZCAiYmFkIHRleHQgbW9kZSAlZCBpbiAnZGVwYXJzZVJkJyIKbXNnc3RyICJtb2RlIGRlIHRleHRlICVkIGVycm9u6SBkYW5zICdkZXBhcnNlUmQnIgoKIzogaHR0cC5jOjMyCm1zZ2lkICJpbnZhbGlkIGJpbmQgYWRkcmVzcyBzcGVjaWZpY2F0aW9uIgptc2dzdHIgInNw6WNpZmljYXRpb24gZCdhZHJlc3NlIGRlIGxpZW4gaW5jb3JyZWN0ZSIKCiM6IGluc3RhbGwuYzoxMTIgaW5zdGFsbC5jOjEzMSBpbnN0YWxsLmM6MTMzCiMsIGMtZm9ybWF0Cm1zZ2lkICJpbnZhbGlkICclcycgYXJndW1lbnQiCm1zZ3N0ciAiYXJndW1lbnQgJyVzJyBpbmNvcnJlY3QiCgojOiBpbnN0YWxsLmM6MTYyCm1zZ2lkICJ3cml0ZSBlcnJvciBkdXJpbmcgZmlsZSBhcHBlbmQiCm1zZ3N0ciAiZXJyZXVyIGVuIOljcml0dXJlIGxvcnMgZHUgcmFqb3V0IGRhbnMgdW4gZmljaGllciIKCiM6IHNpZ25hbHMuYzo0Mgptc2dpZCAicHNraWxsKCkgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIgptc2dzdHIgInBza2lsbCgpIG4nZXN0IHBhcyBzdXBwb3J06SBzdXIgY2V0dGUgcGxhdGVmb3JtZSIKCiM6IHNpZ25hbHMuYzoxNDAKbXNnaWQgInBzbmljZSgpIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIKbXNnc3RyICJwc25pY2UoKSBuJ2VzdCBwYXMgc3VwcG9ydOkgc3VyIGNldHRlIHBsYXRlZm9ybWUiCgojOiB0ZXh0LmM6NjcKbXNnaWQgImludmFsaWQgYXJndW1lbnQgdHlwZSIKbXNnc3RyICJ0eXBlIGQnYXJndW1lbnQgaW5jb3JyZWN0IgoKIzogdGV4dC5jOjIyNSB0ZXh0LmM6MjQ3Cm1zZ2lkICJvdXQgb2YgbWVtb3J5Igptc2dzdHIgInBsdXMgZGUgbeltb2lyZSBkaXNwb25pYmxlIgo=