IyEgL2Jpbi9zaAouICIke3NyY2Rpcj0ufS9pbml0LnNoIjsgcGF0aF9wcmVwZW5kXyAuIC4uL3NyYwoKIyBUZXN0IG11bHRpcGxlIC1lIGFuZCBtdWx0aXBsZSAtZiBvcHRpb25zLgoKY2F0IDw8XEVPRiA+IG1nLXRlc3Q0LnBvCiMgR2VybWFuIHRyYW5zbGF0aW9ucyBmb3IgR05VIGdldHRleHQgcGFja2FnZS4KIyBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcsIDIwMDEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCm1zZ2lkICIiCm1zZ3N0ciAiIgoiUHJvamVjdC1JZC1WZXJzaW9uOiBHTlUgZ2V0dGV4dCAwLjExLXByZTFcbiIKIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDAxLTEyLTA4IDIwOjMzKzAxMDBcbiIKIlBPLVJldmlzaW9uLURhdGU6IDIwMDEtMTEtMDQgMTI6MjUrMDEwMFxuIgoiTGFzdC1UcmFuc2xhdG9yOiBLYXJsIEVpY2h3YWxkZXIgPGtlQHN1c2UuZGU+XG4iCiJMYW5ndWFnZS1UZWFtOiBHZXJtYW4gPGRlQGxpLm9yZz5cbiIKIk1JTUUtVmVyc2lvbjogMS4wXG4iCiJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMVxuIgoiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgoiUGx1cmFsLUZvcm1zOiBucGx1cmFscz0yOyBwbHVyYWw9KG4gIT0gMSk7XG4iCgojOiBhcmdtYXRjaC5jOjE0MQojLCBjLWZvcm1hdAptc2dpZCAiaW52YWxpZCBhcmd1bWVudCBgJXMnIGZvciBgJXMnIgptc2dzdHIgInVuZ/xsdGlnZXMgQXJndW1lbnQguyVzqyBm/HIguyVzqyIKCiM6IGFyZ21hdGNoLmM6MTQyCiMsIGMtZm9ybWF0Cm1zZ2lkICJhbWJpZ3VvdXMgYXJndW1lbnQgYCVzJyBmb3IgYCVzJyIKbXNnc3RyICJtZWhyZGV1dGlnZXMgQXJndW1lbnQguyVzqyBm/HIguyVzqyIKCiM6IGFyZ21hdGNoLmM6MTYyCm1zZ2lkICJWYWxpZCBhcmd1bWVudHMgYXJlOiIKbXNnc3RyICJH/Gx0aWdlIEFyZ3VtZW50ZSBzaW5kOiIKCiM6IGNvcHktZmlsZS5jOjYwCiMsIGMtZm9ybWF0Cm1zZ2lkICJlcnJvciB3aGlsZSBvcGVuaW5nIFwiJXNcIiBmb3IgcmVhZGluZyIKbXNnc3RyICLWZmZuZW4gZGVyIERhdGVpILslc6sgenVtIExlc2VuIGZlaGxnZXNjaGxhZ2VuIgoKIzogY29weS1maWxlLmM6NjcKIywgYy1mb3JtYXQKbXNnaWQgImNhbm5vdCBvcGVuIGJhY2t1cCBmaWxlIFwiJXNcIiBmb3Igd3JpdGluZyIKbXNnc3RyICLWZmZuZW4gZGVyIFNpY2hlcnVuZ3NkYXRlaSC7JXOrIHp1bSBTY2hyZWliZW4gZmVobGdlc2NobGFnZW4iCgojOiBjb3B5LWZpbGUuYzo4MAojLCBjLWZvcm1hdAptc2dpZCAiZXJyb3IgcmVhZGluZyBcIiVzXCIiCm1zZ3N0ciAiRmVobGVyIGJlaW0gTGVzZW4gdm9uILslc6siCgojOiBjb3B5LWZpbGUuYzo4NiBjb3B5LWZpbGUuYzo5MAojLCBjLWZvcm1hdAptc2dpZCAiZXJyb3Igd3JpdGluZyBcIiVzXCIiCm1zZ3N0ciAiRmVobGVyIGJlaW0gU2NocmVpYmVuIHZvbiC7JXOrIgoKIzogY29weS1maWxlLmM6OTIKIywgYy1mb3JtYXQKbXNnaWQgImVycm9yIGFmdGVyIHJlYWRpbmcgXCIlc1wiIgptc2dzdHIgIkZlaGxlciBuYWNoIGRlbSBMZXNlbiB2b24guyVzqyIKCiM6IGVycm9yLmM6MTE1Cm1zZ2lkICJVbmtub3duIHN5c3RlbSBlcnJvciIKbXNnc3RyICJVbmJla2FubnRlciBTeXN0ZW1mZWhsZXIiCgojOiBleGVjdXRlLmM6MTcwIGV4ZWN1dGUuYzoyMDUgcGlwZS1iaWRpLmM6MTU2IHBpcGUtYmlkaS5jOjE5MSBwaXBlLWluLmM6MTY5CiM6IHBpcGUtaW4uYzoyMDUgcGlwZS1vdXQuYzoxNjkgcGlwZS1vdXQuYzoyMDUgd2FpdC1wcm9jZXNzLmM6MTM2CiMsIGMtZm9ybWF0Cm1zZ2lkICIlcyBzdWJwcm9jZXNzIGZhaWxlZCIKbXNnc3RyICJTdWJwcm96ZXNzICVzIGZlaGxnZXNjaGxhZ2VuIgoKIzogZ2V0b3B0LmM6NjkxCiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogb3B0aW9uIGAlcycgaXMgYW1iaWd1b3VzXG4iCm1zZ3N0ciAiJXM6IE9wdGlvbiC7JXOrIGlzdCBtZWhyZGV1dGlnXG4iCgojOiBnZXRvcHQuYzo3MTYKIywgYy1mb3JtYXQKbXNnaWQgIiVzOiBvcHRpb24gYC0tJXMnIGRvZXNuJ3QgYWxsb3cgYW4gYXJndW1lbnRcbiIKbXNnc3RyICIlczogT3B0aW9uILstLSVzqyBlcndhcnRldCBrZWluIEFyZ3VtZW50XG4iCgojOiBnZXRvcHQuYzo3MjEKIywgYy1mb3JtYXQKbXNnaWQgIiVzOiBvcHRpb24gYCVjJXMnIGRvZXNuJ3QgYWxsb3cgYW4gYXJndW1lbnRcbiIKbXNnc3RyICIlczogT3B0aW9uILslYyVzqyBlcndhcnRldCBrZWluIEFyZ3VtZW50XG4iCgojOiBnZXRvcHQuYzo3MzkgZ2V0b3B0LmM6OTEyCiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogb3B0aW9uIGAlcycgcmVxdWlyZXMgYW4gYXJndW1lbnRcbiIKbXNnc3RyICIlczogT3B0aW9uILslc6sgZXJ3YXJ0ZXQgZWluIEFyZ3VtZW50XG4iCgojOiBnZXRvcHQuYzo3NjgKIywgYy1mb3JtYXQKbXNnaWQgIiVzOiB1bnJlY29nbml6ZWQgb3B0aW9uIGAtLSVzJ1xuIgptc2dzdHIgIiVzOiB1bmJla2FubnRlIE9wdGlvbiC7LS0lc6tcbiIKCiM6IGdldG9wdC5jOjc3MgojLCBjLWZvcm1hdAptc2dpZCAiJXM6IHVucmVjb2duaXplZCBvcHRpb24gYCVjJXMnXG4iCm1zZ3N0ciAiJXM6IHVuYmVrYW5udGUgT3B0aW9uILslYyVzq1xuIgoKIzogZ2V0b3B0LmM6Nzk4CiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogaWxsZWdhbCBvcHRpb24gLS0gJWNcbiIKbXNnc3RyICIlczogdW56dWzkc3NpZ2UgT3B0aW9uIC0tICVjXG4iCgojOiBnZXRvcHQuYzo4MDEKIywgYy1mb3JtYXQKbXNnaWQgIiVzOiBpbnZhbGlkIG9wdGlvbiAtLSAlY1xuIgptc2dzdHIgIiVzOiB1bmf8bHRpZ2UgT3B0aW9uIC0tICVjXG4iCgojOiBnZXRvcHQuYzo4MzEgZ2V0b3B0LmM6OTYxCiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IC0tICVjXG4iCm1zZ3N0ciAiJXM6IE9wdGlvbiBlcndhcnRldCBlaW4gQXJndW1lbnQgLS0gJWNcbiIKCiM6IGdldG9wdC5jOjg3OAojLCBjLWZvcm1hdAptc2dpZCAiJXM6IG9wdGlvbiBgLVcgJXMnIGlzIGFtYmlndW91c1xuIgptc2dzdHIgIiVzOiBPcHRpb24guy1XICVzqyBpc3QgbWVocmRldXRpZ1xuIgoKIzogZ2V0b3B0LmM6ODk2CiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogb3B0aW9uIGAtVyAlcycgZG9lc24ndCBhbGxvdyBhbiBhcmd1bWVudFxuIgptc2dzdHIgIiVzOiBPcHRpb24guy1XICVzqyBlcndhcnRldCBrZWluIEFyZ3VtZW50XG4iCgojOiBqYXZhY29tcC5jOjQ2NQptc2dpZCAiSmF2YSBjb21waWxlciBub3QgZm91bmQsIHRyeSBpbnN0YWxsaW5nIGdjaiBvciBzZXQgJEpBVkFDIgptc2dzdHIgIiIKIkphdmEtQ29tcGlsZXIgbmljaHQgZ2VmdW5kZW47IGJpdHRlILtnY2qrIGluc3RhbGxpZXJlbiBvZGVyICRKQVZBQyBzZXR6ZW4iCgojOiBqYXZhZXhlYy5jOjQwNAptc2dpZCAiSmF2YSB2aXJ0dWFsIG1hY2hpbmUgbm90IGZvdW5kLCB0cnkgaW5zdGFsbGluZyBnaWogb3Igc2V0ICRKQVZBIgptc2dzdHIgIiIKIlZpcnR1ZWxsZSBKYXZhLU1hc2NoaW5lIG5pY2h0IGdlZnVuZGVuOyBiaXR0ZSC7Z2NqqyBpbnN0YWxsaWVyZW4gb2RlclxuIgoiJEpBVkEgc2V0emVuIgoKIzogb2JzdGFjay5jOjQ3NCB4ZXJyb3IuYzo3NSB4bWFsbG9jLmM6NTYKbXNnaWQgIm1lbW9yeSBleGhhdXN0ZWQiCm1zZ3N0ciAidmlydHVlbGxlciBTcGVpY2hlciBlcnNjaPZwZnQiCgojOiBwaXBlLWJpZGkuYzoxMTkgcGlwZS1iaWRpLmM6MTIxIHBpcGUtaW4uYzoxMzYgcGlwZS1vdXQuYzoxMzYKbXNnaWQgImNhbm5vdCBjcmVhdGUgcGlwZSIKbXNnc3RyICJFcyBpc3QgbmljaHQgbfZnbGljaCwgZWluZSBQaXBlIHp1IGVyemV1Z2VuIgoKIzogd2FpdC1wcm9jZXNzLmM6MTE3CiMsIGMtZm9ybWF0Cm1zZ2lkICIlcyBzdWJwcm9jZXNzIgptc2dzdHIgIlN1YnByb3plc3MgJXMiCgojOiB3YWl0LXByb2Nlc3MuYzoxMjkKIywgYy1mb3JtYXQKbXNnaWQgIiVzIHN1YnByb2Nlc3MgZ290IGZhdGFsIHNpZ25hbCIKbXNnc3RyICJTdWJwcm96ZXNzICVzIGhhdCBlaW4gZmF0YWxlcyBTaWduYWwgZXJoYWx0ZW4iCkVPRgoKZWNobyAnaW52YWxpZCcgPiBtZy10ZXN0NC5pbjEKCmVjaG8gJ2lsbGVnYWwnID4gbWctdGVzdDQuaW4yCgo6ICR7TVNHR1JFUD1tc2dncmVwfQpMQ19NRVNTQUdFUz1DIExDX0FMTD0gXAoke01TR0dSRVB9IC1LIC1lIGVycm9yIC1mIG1nLXRlc3Q0LmluMSAtZiBtZy10ZXN0NC5pbjIgLWUgY2Fubm90IC1vIG1nLXRlc3Q0LnRtcCBtZy10ZXN0NC5wbyA+IG1nLXRlc3Q0LmVyciAyPiYxCnJlc3VsdD0kPwpjYXQgbWctdGVzdDQuZXJyIHwgZ3JlcCAtdiAnd2FybmluZzogTG9jYWxlIGNoYXJzZXQnIHwgZ3JlcCAtdiAnXiAnCnRlc3QgJHJlc3VsdCA9IDAgfHwgeyBFeGl0IDE7IH0KTENfQUxMPUMgdHIgLWQgJ1xyJyA8IG1nLXRlc3Q0LnRtcCA+IG1nLXRlc3Q0Lm91dCB8fCBFeGl0IDEKCmNhdCA8PFxFT0YgPiBtZy10ZXN0NC5vawojIEdlcm1hbiB0cmFuc2xhdGlvbnMgZm9yIEdOVSBnZXR0ZXh0IHBhY2thZ2UuCiMgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3LCAyMDAxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogR05VIGdldHRleHQgMC4xMS1wcmUxXG4iCiJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwMS0xMi0wOCAyMDozMyswMTAwXG4iCiJQTy1SZXZpc2lvbi1EYXRlOiAyMDAxLTExLTA0IDEyOjI1KzAxMDBcbiIKIkxhc3QtVHJhbnNsYXRvcjogS2FybCBFaWNod2FsZGVyIDxrZUBzdXNlLmRlPlxuIgoiTGFuZ3VhZ2UtVGVhbTogR2VybWFuIDxkZUBsaS5vcmc+XG4iCiJNSU1FLVZlcnNpb246IDEuMFxuIgoiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTFcbiIKIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPShuICE9IDEpO1xuIgoKIzogYXJnbWF0Y2guYzoxNDEKIywgYy1mb3JtYXQKbXNnaWQgImludmFsaWQgYXJndW1lbnQgYCVzJyBmb3IgYCVzJyIKbXNnc3RyICJ1bmf8bHRpZ2VzIEFyZ3VtZW50ILslc6sgZvxyILslc6siCgojOiBjb3B5LWZpbGUuYzo2MAojLCBjLWZvcm1hdAptc2dpZCAiZXJyb3Igd2hpbGUgb3BlbmluZyBcIiVzXCIgZm9yIHJlYWRpbmciCm1zZ3N0ciAi1mZmbmVuIGRlciBEYXRlaSC7JXOrIHp1bSBMZXNlbiBmZWhsZ2VzY2hsYWdlbiIKCiM6IGNvcHktZmlsZS5jOjY3CiMsIGMtZm9ybWF0Cm1zZ2lkICJjYW5ub3Qgb3BlbiBiYWNrdXAgZmlsZSBcIiVzXCIgZm9yIHdyaXRpbmciCm1zZ3N0ciAi1mZmbmVuIGRlciBTaWNoZXJ1bmdzZGF0ZWkguyVzqyB6dW0gU2NocmVpYmVuIGZlaGxnZXNjaGxhZ2VuIgoKIzogY29weS1maWxlLmM6ODAKIywgYy1mb3JtYXQKbXNnaWQgImVycm9yIHJlYWRpbmcgXCIlc1wiIgptc2dzdHIgIkZlaGxlciBiZWltIExlc2VuIHZvbiC7JXOrIgoKIzogY29weS1maWxlLmM6ODYgY29weS1maWxlLmM6OTAKIywgYy1mb3JtYXQKbXNnaWQgImVycm9yIHdyaXRpbmcgXCIlc1wiIgptc2dzdHIgIkZlaGxlciBiZWltIFNjaHJlaWJlbiB2b24guyVzqyIKCiM6IGNvcHktZmlsZS5jOjkyCiMsIGMtZm9ybWF0Cm1zZ2lkICJlcnJvciBhZnRlciByZWFkaW5nIFwiJXNcIiIKbXNnc3RyICJGZWhsZXIgbmFjaCBkZW0gTGVzZW4gdm9uILslc6siCgojOiBlcnJvci5jOjExNQptc2dpZCAiVW5rbm93biBzeXN0ZW0gZXJyb3IiCm1zZ3N0ciAiVW5iZWthbm50ZXIgU3lzdGVtZmVobGVyIgoKIzogZ2V0b3B0LmM6Nzk4CiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogaWxsZWdhbCBvcHRpb24gLS0gJWNcbiIKbXNnc3RyICIlczogdW56dWzkc3NpZ2UgT3B0aW9uIC0tICVjXG4iCgojOiBnZXRvcHQuYzo4MDEKIywgYy1mb3JtYXQKbXNnaWQgIiVzOiBpbnZhbGlkIG9wdGlvbiAtLSAlY1xuIgptc2dzdHIgIiVzOiB1bmf8bHRpZ2UgT3B0aW9uIC0tICVjXG4iCgojOiBwaXBlLWJpZGkuYzoxMTkgcGlwZS1iaWRpLmM6MTIxIHBpcGUtaW4uYzoxMzYgcGlwZS1vdXQuYzoxMzYKbXNnaWQgImNhbm5vdCBjcmVhdGUgcGlwZSIKbXNnc3RyICJFcyBpc3QgbmljaHQgbfZnbGljaCwgZWluZSBQaXBlIHp1IGVyemV1Z2VuIgpFT0YKCjogJHtESUZGPWRpZmZ9CiR7RElGRn0gbWctdGVzdDQub2sgbWctdGVzdDQub3V0CnJlc3VsdD0kPwoKZXhpdCAkcmVzdWx0Cg==