IyEgL2Jpbi9zaAouICIke3NyY2Rpcj0ufS9pbml0LnNoIjsgcGF0aF9wcmVwZW5kXyAuIC4uL3NyYwoKIyBUZXN0IC0tZG9tYWluIG9wdGlvbi4KCmNhdCA8PFxFT0YgPiBtZy10ZXN0Mi5wbwpkb21haW4gImRlIgoKIyBHZXJtYW4gdHJhbnNsYXRpb25zIGZvciBHTlUgZ2V0dGV4dCBwYWNrYWdlLgojIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NywgMjAwMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KbXNnaWQgIiIKbXNnc3RyICIiCiJQcm9qZWN0LUlkLVZlcnNpb246IEdOVSBnZXR0ZXh0IDAuMTEtcHJlMVxuIgoiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDEtMTItMDggMjA6MzMrMDEwMFxuIgoiUE8tUmV2aXNpb24tRGF0ZTogMjAwMS0xMS0wNCAxMjoyNSswMTAwXG4iCiJMYXN0LVRyYW5zbGF0b3I6IEthcmwgRWljaHdhbGRlciA8a2VAc3VzZS5kZT5cbiIKIkxhbmd1YWdlLVRlYW06IEdlcm1hbiA8ZGVAbGkub3JnPlxuIgoiTUlNRS1WZXJzaW9uOiAxLjBcbiIKIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xXG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiJQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD0obiAhPSAxKTtcbiIKCiM6IGdldG9wdC5jOjY5MQojLCBjLWZvcm1hdAptc2dpZCAiJXM6IG9wdGlvbiBgJXMnIGlzIGFtYmlndW91c1xuIgptc2dzdHIgIiVzOiBPcHRpb24guyVzqyBpc3QgbWVocmRldXRpZ1xuIgoKIzogZ2V0b3B0LmM6NzE2CiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogb3B0aW9uIGAtLSVzJyBkb2Vzbid0IGFsbG93IGFuIGFyZ3VtZW50XG4iCm1zZ3N0ciAiJXM6IE9wdGlvbiC7LS0lc6sgZXJ3YXJ0ZXQga2VpbiBBcmd1bWVudFxuIgoKIzogZ2V0b3B0LmM6NzIxCiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogb3B0aW9uIGAlYyVzJyBkb2Vzbid0IGFsbG93IGFuIGFyZ3VtZW50XG4iCm1zZ3N0ciAiJXM6IE9wdGlvbiC7JWMlc6sgZXJ3YXJ0ZXQga2VpbiBBcmd1bWVudFxuIgoKIzogZ2V0b3B0LmM6NzM5IGdldG9wdC5jOjkxMgojLCBjLWZvcm1hdAptc2dpZCAiJXM6IG9wdGlvbiBgJXMnIHJlcXVpcmVzIGFuIGFyZ3VtZW50XG4iCm1zZ3N0ciAiJXM6IE9wdGlvbiC7JXOrIGVyd2FydGV0IGVpbiBBcmd1bWVudFxuIgoKIzogZ2V0b3B0LmM6NzY4CiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogdW5yZWNvZ25pemVkIG9wdGlvbiBgLS0lcydcbiIKbXNnc3RyICIlczogdW5iZWthbm50ZSBPcHRpb24guy0tJXOrXG4iCgojOiBnZXRvcHQuYzo3NzIKIywgYy1mb3JtYXQKbXNnaWQgIiVzOiB1bnJlY29nbml6ZWQgb3B0aW9uIGAlYyVzJ1xuIgptc2dzdHIgIiVzOiB1bmJla2FubnRlIE9wdGlvbiC7JWMlc6tcbiIKCiM6IGdldG9wdC5jOjc5OAojLCBjLWZvcm1hdAptc2dpZCAiJXM6IGlsbGVnYWwgb3B0aW9uIC0tICVjXG4iCm1zZ3N0ciAiJXM6IHVuenVs5HNzaWdlIE9wdGlvbiAtLSAlY1xuIgoKIzogZ2V0b3B0LmM6ODAxCiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogaW52YWxpZCBvcHRpb24gLS0gJWNcbiIKbXNnc3RyICIlczogdW5n/Gx0aWdlIE9wdGlvbiAtLSAlY1xuIgoKIzogZ2V0b3B0LmM6ODMxIGdldG9wdC5jOjk2MQojLCBjLWZvcm1hdAptc2dpZCAiJXM6IG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCAtLSAlY1xuIgptc2dzdHIgIiVzOiBPcHRpb24gZXJ3YXJ0ZXQgZWluIEFyZ3VtZW50IC0tICVjXG4iCgojOiBnZXRvcHQuYzo4NzgKIywgYy1mb3JtYXQKbXNnaWQgIiVzOiBvcHRpb24gYC1XICVzJyBpcyBhbWJpZ3VvdXNcbiIKbXNnc3RyICIlczogT3B0aW9uILstVyAlc6sgaXN0IG1laHJkZXV0aWdcbiIKCiM6IGdldG9wdC5jOjg5NgojLCBjLWZvcm1hdAptc2dpZCAiJXM6IG9wdGlvbiBgLVcgJXMnIGRvZXNuJ3QgYWxsb3cgYW4gYXJndW1lbnRcbiIKbXNnc3RyICIlczogT3B0aW9uILstVyAlc6sgZXJ3YXJ0ZXQga2VpbiBBcmd1bWVudFxuIgoKZG9tYWluICJmciIKCiMgTWVzc2FnZXMgZnJhbudhaXMgcG91ciBHTlUgZ2V0dGV4dC4KIyBDb3B5cmlnaHQgqSAxOTk2LCAxOTk3LCAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgojIEZyYW7nb2lzIFBpbmFyZCA8cGluYXJkQGlyby51bW9udHJlYWwuY2E+LCAxOTk2LgojCm1zZ2lkICIiCm1zZ3N0ciAiIgoiUHJvamVjdC1JZC1WZXJzaW9uOiBHTlUgZ2V0dGV4dCAwLjEwLjM1XG4iCiJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwMS0xMi0wOCAyMDozMyswMTAwXG4iCiJQTy1SZXZpc2lvbi1EYXRlOiAxOTk4LTA1LTA0IDEwOjAzLTA0OjAwXG4iCiJMYXN0LVRyYW5zbGF0b3I6IEZyYW7nb2lzIFBpbmFyZCA8cGluYXJkQGlyby51bW9udHJlYWwuY2E+XG4iCiJMYW5ndWFnZS1UZWFtOiBGcmVuY2ggPGZyQGxpLm9yZz5cbiIKIk1JTUUtVmVyc2lvbjogMS4wXG4iCiJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMVxuIgoiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgoiUGx1cmFsLUZvcm1zOiBucGx1cmFscz0yOyBwbHVyYWw9KG4gPiAxKTtcbiIKCiM6IGdldG9wdC5jOjY5MQojLCBjLWZvcm1hdAptc2dpZCAiJXM6IG9wdGlvbiBgJXMnIGlzIGFtYmlndW91c1xuIgptc2dzdHIgIiVzOiBsJ29wdGlvbiCrICVzILsgZXN0IGFtYmlndetcbiIKCiM6IGdldG9wdC5jOjcxNgojLCBjLWZvcm1hdAptc2dpZCAiJXM6IG9wdGlvbiBgLS0lcycgZG9lc24ndCBhbGxvdyBhbiBhcmd1bWVudFxuIgptc2dzdHIgIiVzOiBsJ29wdGlvbiCrIC0tJXMguyBuZSB0b2zocmUgcGFzIGQnYXJndW1lbnRcbiIKCiM6IGdldG9wdC5jOjcyMQojLCBjLWZvcm1hdAptc2dpZCAiJXM6IG9wdGlvbiBgJWMlcycgZG9lc24ndCBhbGxvdyBhbiBhcmd1bWVudFxuIgptc2dzdHIgIiVzOiBsJ29wdGlvbiCrICVjJXMguyBuZSB0b2zocmUgcGFzIGQnYXJndW1lbnRcbiIKCiM6IGdldG9wdC5jOjczOSBnZXRvcHQuYzo5MTIKIywgYy1mb3JtYXQKbXNnaWQgIiVzOiBvcHRpb24gYCVzJyByZXF1aXJlcyBhbiBhcmd1bWVudFxuIgptc2dzdHIgIiVzOiBsJ29wdGlvbiCrICVzILsgZXhpZ2UgdW4gYXJndW1lbnRcbiIKCiM6IGdldG9wdC5jOjc2OAojLCBjLWZvcm1hdAptc2dpZCAiJXM6IHVucmVjb2duaXplZCBvcHRpb24gYC0tJXMnXG4iCm1zZ3N0ciAiJXM6IGwnb3B0aW9uIKsgLS0lcyC7IG4nZXN0IHBhcyByZWNvbm51ZVxuIgoKIzogZ2V0b3B0LmM6NzcyCiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogdW5yZWNvZ25pemVkIG9wdGlvbiBgJWMlcydcbiIKbXNnc3RyICIlczogbCdvcHRpb24gqyAlYyVzILsgbidlc3QgcGFzIHJlY29ubnVlXG4iCgojOiBnZXRvcHQuYzo3OTgKIywgYy1mb3JtYXQKbXNnaWQgIiVzOiBpbGxlZ2FsIG9wdGlvbiAtLSAlY1xuIgptc2dzdHIgIiVzOiBsJ29wdGlvbiCrICVjILsgbidlc3QgcGFzIHBlcm1pc2VcbiIKCiM6IGdldG9wdC5jOjgwMQojLCBjLWZvcm1hdAptc2dpZCAiJXM6IGludmFsaWQgb3B0aW9uIC0tICVjXG4iCm1zZ3N0ciAiJXM6IGwnb3B0aW9uIKsgJWMguyBuJ2VzdCBwYXMgdmFsaWRlXG4iCgojOiBnZXRvcHQuYzo4MzEgZ2V0b3B0LmM6OTYxCiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IC0tICVjXG4iCm1zZ3N0ciAiJXM6IGwnb3B0aW9uIKsgJWMguyBleGlnZSB1biBhcmd1bWVudFxuIgoKIzogZ2V0b3B0LmM6ODc4CiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogb3B0aW9uIGAtVyAlcycgaXMgYW1iaWd1b3VzXG4iCm1zZ3N0ciAiJXM6IGwnb3B0aW9uIKsgLVcgJXMguyBlc3QgYW1iaWd161xuIgoKIzogZ2V0b3B0LmM6ODk2CiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogb3B0aW9uIGAtVyAlcycgZG9lc24ndCBhbGxvdyBhbiBhcmd1bWVudFxuIgptc2dzdHIgIiVzOiBsJ29wdGlvbiCrIC1XICVzILsgbmUgdG9s6HJlIHBhcyBkJ2FyZ3VtZW50XG4iCkVPRgoKOiAke01TR0dSRVA9bXNnZ3JlcH0KJHtNU0dHUkVQfSAtTSBmciAtbyBtZy10ZXN0Mi50bXAgbWctdGVzdDIucG8gfHwgRXhpdCAxCkxDX0FMTD1DIHRyIC1kICdccicgPCBtZy10ZXN0Mi50bXAgPiBtZy10ZXN0Mi5vdXQgfHwgRXhpdCAxCgpjYXQgPDxcRU9GID4gbWctdGVzdDIub2sKZG9tYWluICJkZSIKCiMgR2VybWFuIHRyYW5zbGF0aW9ucyBmb3IgR05VIGdldHRleHQgcGFja2FnZS4KIyBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcsIDIwMDEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCm1zZ2lkICIiCm1zZ3N0ciAiIgoiUHJvamVjdC1JZC1WZXJzaW9uOiBHTlUgZ2V0dGV4dCAwLjExLXByZTFcbiIKIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDAxLTEyLTA4IDIwOjMzKzAxMDBcbiIKIlBPLVJldmlzaW9uLURhdGU6IDIwMDEtMTEtMDQgMTI6MjUrMDEwMFxuIgoiTGFzdC1UcmFuc2xhdG9yOiBLYXJsIEVpY2h3YWxkZXIgPGtlQHN1c2UuZGU+XG4iCiJMYW5ndWFnZS1UZWFtOiBHZXJtYW4gPGRlQGxpLm9yZz5cbiIKIk1JTUUtVmVyc2lvbjogMS4wXG4iCiJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMVxuIgoiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgoiUGx1cmFsLUZvcm1zOiBucGx1cmFscz0yOyBwbHVyYWw9KG4gIT0gMSk7XG4iCgpkb21haW4gImZyIgoKIyBNZXNzYWdlcyBmcmFu52FpcyBwb3VyIEdOVSBnZXR0ZXh0LgojIENvcHlyaWdodCCpIDE5OTYsIDE5OTcsIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiMgRnJhbudvaXMgUGluYXJkIDxwaW5hcmRAaXJvLnVtb250cmVhbC5jYT4sIDE5OTYuCiMKbXNnaWQgIiIKbXNnc3RyICIiCiJQcm9qZWN0LUlkLVZlcnNpb246IEdOVSBnZXR0ZXh0IDAuMTAuMzVcbiIKIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDAxLTEyLTA4IDIwOjMzKzAxMDBcbiIKIlBPLVJldmlzaW9uLURhdGU6IDE5OTgtMDUtMDQgMTA6MDMtMDQ6MDBcbiIKIkxhc3QtVHJhbnNsYXRvcjogRnJhbudvaXMgUGluYXJkIDxwaW5hcmRAaXJvLnVtb250cmVhbC5jYT5cbiIKIkxhbmd1YWdlLVRlYW06IEZyZW5jaCA8ZnJAbGkub3JnPlxuIgoiTUlNRS1WZXJzaW9uOiAxLjBcbiIKIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xXG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiJQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD0obiA+IDEpO1xuIgoKIzogZ2V0b3B0LmM6NjkxCiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogb3B0aW9uIGAlcycgaXMgYW1iaWd1b3VzXG4iCm1zZ3N0ciAiJXM6IGwnb3B0aW9uIKsgJXMguyBlc3QgYW1iaWd161xuIgoKIzogZ2V0b3B0LmM6NzE2CiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogb3B0aW9uIGAtLSVzJyBkb2Vzbid0IGFsbG93IGFuIGFyZ3VtZW50XG4iCm1zZ3N0ciAiJXM6IGwnb3B0aW9uIKsgLS0lcyC7IG5lIHRvbOhyZSBwYXMgZCdhcmd1bWVudFxuIgoKIzogZ2V0b3B0LmM6NzIxCiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogb3B0aW9uIGAlYyVzJyBkb2Vzbid0IGFsbG93IGFuIGFyZ3VtZW50XG4iCm1zZ3N0ciAiJXM6IGwnb3B0aW9uIKsgJWMlcyC7IG5lIHRvbOhyZSBwYXMgZCdhcmd1bWVudFxuIgoKIzogZ2V0b3B0LmM6NzM5IGdldG9wdC5jOjkxMgojLCBjLWZvcm1hdAptc2dpZCAiJXM6IG9wdGlvbiBgJXMnIHJlcXVpcmVzIGFuIGFyZ3VtZW50XG4iCm1zZ3N0ciAiJXM6IGwnb3B0aW9uIKsgJXMguyBleGlnZSB1biBhcmd1bWVudFxuIgoKIzogZ2V0b3B0LmM6NzY4CiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogdW5yZWNvZ25pemVkIG9wdGlvbiBgLS0lcydcbiIKbXNnc3RyICIlczogbCdvcHRpb24gqyAtLSVzILsgbidlc3QgcGFzIHJlY29ubnVlXG4iCgojOiBnZXRvcHQuYzo3NzIKIywgYy1mb3JtYXQKbXNnaWQgIiVzOiB1bnJlY29nbml6ZWQgb3B0aW9uIGAlYyVzJ1xuIgptc2dzdHIgIiVzOiBsJ29wdGlvbiCrICVjJXMguyBuJ2VzdCBwYXMgcmVjb25udWVcbiIKCiM6IGdldG9wdC5jOjc5OAojLCBjLWZvcm1hdAptc2dpZCAiJXM6IGlsbGVnYWwgb3B0aW9uIC0tICVjXG4iCm1zZ3N0ciAiJXM6IGwnb3B0aW9uIKsgJWMguyBuJ2VzdCBwYXMgcGVybWlzZVxuIgoKIzogZ2V0b3B0LmM6ODAxCiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogaW52YWxpZCBvcHRpb24gLS0gJWNcbiIKbXNnc3RyICIlczogbCdvcHRpb24gqyAlYyC7IG4nZXN0IHBhcyB2YWxpZGVcbiIKCiM6IGdldG9wdC5jOjgzMSBnZXRvcHQuYzo5NjEKIywgYy1mb3JtYXQKbXNnaWQgIiVzOiBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQgLS0gJWNcbiIKbXNnc3RyICIlczogbCdvcHRpb24gqyAlYyC7IGV4aWdlIHVuIGFyZ3VtZW50XG4iCgojOiBnZXRvcHQuYzo4NzgKIywgYy1mb3JtYXQKbXNnaWQgIiVzOiBvcHRpb24gYC1XICVzJyBpcyBhbWJpZ3VvdXNcbiIKbXNnc3RyICIlczogbCdvcHRpb24gqyAtVyAlcyC7IGVzdCBhbWJpZ3XrXG4iCgojOiBnZXRvcHQuYzo4OTYKIywgYy1mb3JtYXQKbXNnaWQgIiVzOiBvcHRpb24gYC1XICVzJyBkb2Vzbid0IGFsbG93IGFuIGFyZ3VtZW50XG4iCm1zZ3N0ciAiJXM6IGwnb3B0aW9uIKsgLVcgJXMguyBuZSB0b2zocmUgcGFzIGQnYXJndW1lbnRcbiIKRU9GCgo6ICR7RElGRj1kaWZmfQoke0RJRkZ9IG1nLXRlc3QyLm9rIG1nLXRlc3QyLm91dApyZXN1bHQ9JD8KCmV4aXQgJHJlc3VsdAo=