Geometrie Master: Unterschied zwischen den Versionen
Erscheinungsbild
Glanz (Diskussion | Beiträge) K Schützte „Geometrie Master“: Automatischer Schutz für MOOCwiki-Spiele: nur Admins dürfen bearbeiten ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt)) |
Glanz (Diskussion | Beiträge) Spiele-ZIP kontrolliert geprüft und als neue Version hochgeladen |
||
| Zeile 3: | Zeile 3: | ||
Interaktives Geometrie-Lernspiel für Klasse 5/6 mit Formel-Labor, Umfang-, Flächen- und Volumenaufgaben. | Interaktives Geometrie-Lernspiel für Klasse 5/6 mit Formel-Labor, Umfang-, Flächen- und Volumenaufgaben. | ||
<aimoocgame title="Geometrie Master" cover="data:image/png;base64, | <aimoocgame title="Geometrie Master" cover="data:image/png;base64,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" manifest="eyJmb3JtYXQiOiJTcGllbGUiLCJ0aXRsZSI6Ikdlb01laXN0ZXI6IEZsw6RjaGVuIHVuZCBLw7ZycGVyIiwic2hvcnREZXNjcmlwdGlvbiI6IkludGVyYWt0aXZlcyBHZW9tZXRyaWUtTGVybnNwaWVsIGbDvHIgS2xhc3NlIDUvNiBtaXQgRm9ybWVsLUxhYm9yLCBVbWZhbmctLCBGbMOkY2hlbi0gdW5kIFZvbHVtZW5hdWZnYWJlbi4iLCJzdWJqZWN0IjoiTWF0aGVtYXRpayIsImNsYXNzUmFuZ2UiOiJLbGFzc2UgNS02IiwiY2F0ZWdvcmllcyI6WyJNYXRoZW1hdGlrIiwiR2VvbWV0cmllIiwiU3BpZWxlIl0sInRhZ3MiOlsiTGVybnNwaWVsIiwiSW50ZXJha3RpdiIsIkdlb21ldHJpZSIsIkZsw6RjaGVuaW5oYWx0IiwiVW1mYW5nIiwiVm9sdW1lbiJdLCJjb250cm9scyI6WyJNYXVzIiwiVG91Y2giLCJUYXN0YXR1ciJdLCJmdWxsc2NyZWVuIjp0cnVlLCJlbnRyeUZpbGUiOiJpbmRleC5odG1sIiwic3R5bGVGaWxlIjoic3R5bGUuY3NzIiwic2NyaXB0RmlsZSI6InNjcmlwdC5qcyIsImNvdmVyRmlsZSI6ImFzc2V0cy9jb3Zlci5wbmciLCJ2ZXJzaW9uIjoiMS4wLjAiLCJsYW5ndWFnZSI6ImRlIiwiYWNjZXNzaWJpbGl0eSI6ImtleWJvYXJkLXRvdWNoLW1vdXNlIiwiY29tbW9uc1NvdXJjZXMiOltdfQ==" ziphash="41f2ac4f95db7058e8ae8b2b34af16a54345a2d1bac6bd3c96e7db27fa316743"> | ||
PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImRlIj4KPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CiAgPHRpdGxlPkdlb01laXN0ZXI6IEZsw6RjaGVuIHVuZCBLw7ZycGVyPC90aXRsZT4KICAKPHN0eWxlPgo6cm9vdCB7CiAgLS1wYXBlcjogI2Y3ZmJmZjsKICAtLXBhcGVyLXN0cm9uZzogI2ZmZmZmZjsKICAtLWluazogIzExMjAzMzsKICAtLW11dGVkOiAjNTM2NzdkOwogIC0tbGluZTogI2M5ZDhlNzsKICAtLWxpbmUtc3Ryb25nOiAjOTBhOGJmOwogIC0tYWNjZW50OiAjMGY3NjZlOwogIC0tYWNjZW50LXNvZnQ6ICNkOWY1ZjE7CiAgLS1ibHVlOiAjMjQ1NGE2OwogIC0tYmx1ZS1zb2Z0OiAjZTdlZWZjOwogIC0tZ29sZDogIzlhNmEwNTsKICAtLWdvbGQtc29mdDogI2ZmZjRkMjsKICAtLWdyZWVuOiAjMTk2YjM3OwogIC0tZ3JlZW4tc29mdDogI2UyZjdlOTsKICAtLXJlZDogIzlmMjQzMzsKICAtLXJlZC1zb2Z0OiAjZmRlNWU4OwogIC0tc2hhZG93OiAwIDE4cHggNTBweCByZ2JhKDI0LCA0NCwgNjgsIDAuMTYpOwogIC0tcmFkaXVzOiAyNHB4OwogIGNvbG9yLXNjaGVtZTogbGlnaHQ7Cn0KCiogewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCmh0bWwsCmJvZHkgewogIG1pbi1oZWlnaHQ6IDEwMCU7CiAgbWFyZ2luOiAwOwp9Cgpib2R5IHsKICBmb250LWZhbWlseTogc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIHNhbnMtc2VyaWY7CiAgY29sb3I6IHZhcigtLWluayk7CiAgYmFja2dyb3VuZDoKICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTAlIDAlLCByZ2JhKDE1LCAxMTgsIDExMCwgMC4xNiksIHRyYW5zcGFyZW50IDI2cmVtKSwKICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgODglIDQlLCByZ2JhKDM2LCA4NCwgMTY2LCAwLjE0KSwgdHJhbnNwYXJlbnQgMjhyZW0pLAogICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI2YyZjhmZiAwJSwgI2VkZjVmYiA0NiUsICNmOGZiZmYgMTAwJSk7CiAgb3ZlcmZsb3cteDogaGlkZGVuOwp9CgpidXR0b24sCmlucHV0IHsKICBmb250OiBpbmhlcml0Owp9CgpidXR0b24gewogIGJvcmRlcjogMDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247Cn0KCmJ1dHRvbjpmb2N1cy12aXNpYmxlLAppbnB1dDpmb2N1cy12aXNpYmxlIHsKICBvdXRsaW5lOiA0cHggc29saWQgcmdiYSgxNSwgMTE4LCAxMTAsIDAuNDUpOwogIG91dGxpbmUtb2Zmc2V0OiA0cHg7Cn0KCmJ1dHRvbjpkaXNhYmxlZCwKaW5wdXQ6ZGlzYWJsZWQgewogIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgb3BhY2l0eTogMC42NDsKfQoKW2hpZGRlbl0gewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKLmdhbWUtcm9vdCB7CiAgbWluLWhlaWdodDogMTAwc3ZoOwogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IGNsYW1wKDEycHgsIDJ2dywgMjhweCk7Cn0KCi5nYW1lLXJvb3Quc29mdC1mdWxsIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgaW5zZXQ6IDA7CiAgei1pbmRleDogMjA7CiAgb3ZlcmZsb3c6IGF1dG87CiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI2VlZjhmZiwgI2Y4ZmJmZik7Cn0KCi5zY3JlZW4gewogIHdpZHRoOiBtaW4oMTQ4MHB4LCAxMDAlKTsKICBtYXJnaW46IDAgYXV0bzsKfQoKLm1lbnUtc2NyZWVuIHsKICBkaXNwbGF5OiBncmlkOwogIGdhcDogY2xhbXAoMThweCwgM3Z3LCAzMnB4KTsKfQoKLmhlcm8tcGFuZWwsCi5wYXRoLXNlY3Rpb24sCi5wYW5lbC1jYXJkLAouZW5kLXBhbmVsIHsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE0NCwgMTY4LCAxOTEsIDAuMzgpOwogIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44OCk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93KTsKICBib3JkZXItcmFkaXVzOiBjbGFtcCgyMnB4LCAzdncsIDM0cHgpOwp9CgouaGVyby1wYW5lbCB7CiAgbWluLWhlaWdodDogY2xhbXAoMjYwcHgsIDQydmgsIDQzMHB4KTsKICBwYWRkaW5nOiBjbGFtcCgyMnB4LCA0dncsIDU2cHgpOwogIGRpc3BsYXk6IGdyaWQ7CiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMjYwcHgsIDAuOTJmcikgbWlubWF4KDI2MHB4LCAwLjcyZnIpOwogIGdhcDogY2xhbXAoMjJweCwgNXZ3LCA3MHB4KTsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIG92ZXJmbG93OiBoaWRkZW47CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouaGVyby1wYW5lbDo6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgaW5zZXQ6IDA7CiAgYmFja2dyb3VuZDoKICAgIGxpbmVhci1ncmFkaWVudCgxMjBkZWcsIHJnYmEoMTUsIDExOCwgMTEwLCAwLjA4KSwgdHJhbnNwYXJlbnQgNDIlKSwKICAgIGxpbmVhci1ncmFkaWVudCgzMDBkZWcsIHJnYmEoMzYsIDg0LCAxNjYsIDAuMDgpLCB0cmFuc3BhcmVudCA1MCUpOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9CgouaGVyby1jb3B5LAouaGVyby12aXN1YWwgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmV5ZWJyb3cgewogIG1hcmdpbjogMCAwIDdweDsKICBjb2xvcjogdmFyKC0tYWNjZW50KTsKICBmb250LXNpemU6IDAuODJyZW07CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBsZXR0ZXItc3BhY2luZzogMC4xMmVtOwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cn0KCmgxLApoMiwKaDMsCnAgewogIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlOwp9CgpoMSB7CiAgbWFyZ2luOiAwOwogIGZvbnQtc2l6ZTogY2xhbXAoMy4ycmVtLCAxMHZ3LCA4LjhyZW0pOwogIGxpbmUtaGVpZ2h0OiAwLjg4OwogIGxldHRlci1zcGFjaW5nOiAtMC4wODVlbTsKfQoKaDIgewogIG1hcmdpbjogMDsKICBmb250LXNpemU6IGNsYW1wKDEuN3JlbSwgMy4ydncsIDMuMXJlbSk7CiAgbGluZS1oZWlnaHQ6IDE7CiAgbGV0dGVyLXNwYWNpbmc6IC0wLjA0NWVtOwp9CgpoMyB7CiAgbWFyZ2luOiAwOwogIGZvbnQtc2l6ZTogY2xhbXAoMS4xcmVtLCAxLjd2dywgMS40NXJlbSk7Cn0KCi5oZXJvLXN1YnRpdGxlIHsKICBtYXJnaW46IDhweCAwIDA7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBjb2xvcjogdmFyKC0tYmx1ZSk7CiAgZm9udC1zaXplOiBjbGFtcCgxLjE1cmVtLCAyLjJ2dywgMS43NXJlbSk7Cn0KCi5oZXJvLXRleHQsCi5lbmQtc3VtbWFyeSwKLmNhbnZhcy1kZXNjcmlwdGlvbiwKLmxlYXJuaW5nLXRpcCwKLmZvcm11bGEtbm90ZSwKLnRhc2stcHJvbXB0LAouY2FyZC10ZXh0IHsKICBjb2xvcjogdmFyKC0tbXV0ZWQpOwogIGxpbmUtaGVpZ2h0OiAxLjU1Owp9CgouaGVyby10ZXh0IHsKICBtYXgtd2lkdGg6IDY0Y2g7CiAgZm9udC1zaXplOiBjbGFtcCgxLjAycmVtLCAxLjd2dywgMS4zMnJlbSk7Cn0KCi5oZXJvLWJhZGdlcywKLmdsb2JhbC10b29sYmFyLAouYXBwLWFjdGlvbnMsCi50YXNrLWFjdGlvbnMsCi5lbmQtYWN0aW9ucyB7CiAgZGlzcGxheTogZmxleDsKICBnYXA6IDEwcHg7CiAgZmxleC13cmFwOiB3cmFwOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5oZXJvLWJhZGdlcyBzcGFuLAoucGlsbCwKLnZhbHVlLWNoaXAgewogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgbWluLWhlaWdodDogMzRweDsKICBib3JkZXItcmFkaXVzOiA5OTlweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtc29mdCk7CiAgY29sb3I6ICMwYjVjNTY7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxNSwgMTE4LCAxMTAsIDAuMjIpOwogIHBhZGRpbmc6IDZweCAxMnB4OwogIGZvbnQtc2l6ZTogMC44OHJlbTsKICBmb250LXdlaWdodDogNzUwOwp9CgouaGVyby12aXN1YWwgewogIG1pbi1oZWlnaHQ6IDMyMHB4OwogIGRpc3BsYXk6IGdyaWQ7CiAgcGxhY2UtaXRlbXM6IGNlbnRlcjsKfQoKLm1pbmktZ3JpZCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiBtaW4oNDAwcHgsIDg2JSk7CiAgYXNwZWN0LXJhdGlvOiAxLjQ1OwogIGJvcmRlci1yYWRpdXM6IDI2cHg7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgzNiwgODQsIDE2NiwgMC4xOCk7CiAgYmFja2dyb3VuZDoKICAgIGxpbmVhci1ncmFkaWVudChyZ2JhKDM2LCA4NCwgMTY2LCAwLjEyKSAxcHgsIHRyYW5zcGFyZW50IDFweCksCiAgICBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMzYsIDg0LCAxNjYsIDAuMTIpIDFweCwgdHJhbnNwYXJlbnQgMXB4KSwKICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTsKICBiYWNrZ3JvdW5kLXNpemU6IDI4cHggMjhweDsKfQoKLm1pbmktc2hhcGUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3JkZXI6IDNweCBzb2xpZCB2YXIoLS1ibHVlKTsKICBiYWNrZ3JvdW5kOiByZ2JhKDM2LCA4NCwgMTY2LCAwLjEyKTsKICBib3gtc2hhZG93OiAwIDE4cHggNDBweCByZ2JhKDM2LCA4NCwgMTY2LCAwLjE2KTsKfQoKLm1pbmktc3F1YXJlIHsKICB3aWR0aDogMTI4cHg7CiAgaGVpZ2h0OiAxMjhweDsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtODhweCwgMThweCk7CiAgYm9yZGVyLXJhZGl1czogMThweDsKfQoKLm1pbmktdHJpYW5nbGUgewogIHdpZHRoOiAxNTBweDsKICBoZWlnaHQ6IDEzMHB4OwogIGJvcmRlcjogMDsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg5NnB4LCAtNTRweCk7Cn0KCi5taW5pLXRyaWFuZ2xlOjpiZWZvcmUgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBpbnNldDogMDsKICBiYWNrZ3JvdW5kOiByZ2JhKDE1LCAxMTgsIDExMCwgMC4xOCk7CiAgY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwLCAxMDAlIDEwMCUsIDAgMTAwJSk7CiAgYm9yZGVyOiAzcHggc29saWQgdmFyKC0tYWNjZW50KTsKfQoKLm1pbmktY3ViZSB7CiAgd2lkdGg6IDEzMnB4OwogIGhlaWdodDogOTRweDsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg5MHB4LCA5NHB4KSBza2V3WSgtMTBkZWcpOwogIGJvcmRlci1jb2xvcjogdmFyKC0tZ29sZCk7CiAgYmFja2dyb3VuZDogcmdiYSgxNTQsIDEwNiwgNSwgMC4xMyk7Cn0KCi5wYXRoLXNlY3Rpb24gewogIHBhZGRpbmc6IGNsYW1wKDE4cHgsIDN2dywgMzRweCk7Cn0KCi5zZWN0aW9uLWhlYWRpbmcgewogIG1hcmdpbi1ib3R0b206IDE4cHg7Cn0KCi5wYXRoLWdyaWQgewogIGRpc3BsYXk6IGdyaWQ7CiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNywgbWlubWF4KDAsIDFmcikpOwogIGdhcDogMTRweDsKfQoKLnBhdGgtY2FyZCB7CiAgbWluLWhlaWdodDogMTc4cHg7CiAgYm9yZGVyLXJhZGl1czogMjJweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci1zdHJvbmcpOwogIGNvbG9yOiB2YXIoLS1pbmspOwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTQ0LCAxNjgsIDE5MSwgMC41Mik7CiAgcGFkZGluZzogMThweDsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDE2MG1zIGVhc2UsIGJvcmRlci1jb2xvciAxNjBtcyBlYXNlLCBib3gtc2hhZG93IDE2MG1zIGVhc2U7Cn0KCi5wYXRoLWNhcmQ6aG92ZXIgewogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTsKICBib3JkZXItY29sb3I6IHJnYmEoMTUsIDExOCwgMTEwLCAwLjU1KTsKICBib3gtc2hhZG93OiAwIDE2cHggMzhweCByZ2JhKDI0LCA0NCwgNjgsIDAuMTMpOwp9CgoubWFpbi1jYXJkIHsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZTVmYmY3LCAjZmZmZmZmIDYyJSk7CiAgYm9yZGVyLWNvbG9yOiByZ2JhKDE1LCAxMTgsIDExMCwgMC4zOCk7Cn0KCi5jYXJkLWtpY2tlciB7CiAgY29sb3I6IHZhcigtLWFjY2VudCk7CiAgZm9udC13ZWlnaHQ6IDg1MDsKICBmb250LXNpemU6IDAuOHJlbTsKICBsZXR0ZXItc3BhY2luZzogMC4wOGVtOwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cn0KCi5jYXJkLXRpdGxlIHsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW46IDEwcHggMCA4cHg7CiAgZm9udC1zaXplOiBjbGFtcCgxLjEycmVtLCAxLjR2dywgMS40MnJlbSk7CiAgZm9udC13ZWlnaHQ6IDg1MDsKICBsaW5lLWhlaWdodDogMS4xMjsKfQoKLmNhcmQtdGV4dCB7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAwLjk3cmVtOwp9CgouZ2xvYmFsLXRvb2xiYXIgewogIGp1c3RpZnktY29udGVudDogY2VudGVyOwp9CgoudG9vbC1idXR0b24sCi5tb2RlLXRhYnMgYnV0dG9uLAouYW5zd2VyLWJ1dHRvbiwKLnN0ZXAtYnV0dG9uLAouc3VibWl0LWJ1dHRvbiwKLnNoYXBlLWJ1dHRvbiwKLmRpZmYtYnV0dG9uIHsKICBtaW4taGVpZ2h0OiA0NnB4OwogIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50KTsKICBjb2xvcjogI2ZmZmZmZjsKICBwYWRkaW5nOiAxMHB4IDE2cHg7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMDQpOwp9CgoudG9vbC1idXR0b24uc2Vjb25kYXJ5LAoubW9kZS10YWJzIGJ1dHRvbiwKLnNoYXBlLWJ1dHRvbiwKLmRpZmYtYnV0dG9uLAouc3RlcC1idXR0b24gewogIGJhY2tncm91bmQ6ICNmZmZmZmY7CiAgY29sb3I6IHZhcigtLWluayk7CiAgYm9yZGVyLWNvbG9yOiByZ2JhKDE0NCwgMTY4LCAxOTEsIDAuNik7Cn0KCi50b29sLWJ1dHRvbjpob3ZlciwKLnN1Ym1pdC1idXR0b246aG92ZXIsCi5hbnN3ZXItYnV0dG9uOmhvdmVyIHsKICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4wNCk7Cn0KCi5wbGF5LXNjcmVlbiB7CiAgZGlzcGxheTogZ3JpZDsKICBnYXA6IDE2cHg7Cn0KCi5hcHAtYmFyIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIGdhcDogMTRweDsKICBwYWRkaW5nOiAxNnB4IDE4cHg7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxNDQsIDE2OCwgMTkxLCAwLjM4KTsKICBib3JkZXItcmFkaXVzOiAyNnB4OwogIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3cpOwp9CgoubW9kZS10YWJzIHsKICBkaXNwbGF5OiBmbGV4OwogIGdhcDogOHB4OwogIG92ZXJmbG93LXg6IGF1dG87CiAgcGFkZGluZzogNHB4IDJweCA4cHg7CiAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluOwp9CgoubW9kZS10YWJzIGJ1dHRvbiB7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBtaW4taGVpZ2h0OiA0NHB4Owp9CgoubW9kZS10YWJzIGJ1dHRvbi5pcy1hY3RpdmUsCi5zaGFwZS1idXR0b24uaXMtYWN0aXZlLAouZGlmZi1idXR0b24uaXMtYWN0aXZlIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1ibHVlKTsKICBjb2xvcjogI2ZmZmZmZjsKICBib3JkZXItY29sb3I6IHZhcigtLWJsdWUpOwp9CgouZGFzaGJvYXJkIHsKICBkaXNwbGF5OiBncmlkOwogIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMC44ZnIgMC43ZnIgMC44ZnIgMmZyOwogIGdhcDogMTJweDsKfQoKLnNjb3JlLXRpbGUgewogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTQ0LCAxNjgsIDE5MSwgMC40Mik7CiAgYm9yZGVyLXJhZGl1czogMjBweDsKICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7CiAgcGFkZGluZzogMTRweCAxNnB4OwogIG1pbi1oZWlnaHQ6IDc4cHg7Cn0KCi5zY29yZS1sYWJlbCB7CiAgZGlzcGxheTogYmxvY2s7CiAgY29sb3I6IHZhcigtLW11dGVkKTsKICBmb250LXdlaWdodDogNzgwOwogIGZvbnQtc2l6ZTogMC45cmVtOwogIG1hcmdpbi1ib3R0b206IDVweDsKfQoKLnNjb3JlLXRpbGUgc3Ryb25nIHsKICBmb250LXNpemU6IGNsYW1wKDEuMzhyZW0sIDIuNHZ3LCAyLjFyZW0pOwp9CgoucHJvZ3Jlc3Mtc2hlbGwsCi5za2lsbC1iYXIgewogIGhlaWdodDogMTFweDsKICBiYWNrZ3JvdW5kOiAjZTRlZGY2OwogIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgbWFyZ2luOiA4cHggMCA2cHg7Cn0KCi5wcm9ncmVzcy1zaGVsbCBzcGFuLAouc2tpbGwtYmFyIHNwYW4gewogIGRpc3BsYXk6IGJsb2NrOwogIGhlaWdodDogMTAwJTsKICB3aWR0aDogMCU7CiAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWFjY2VudCksIHZhcigtLWJsdWUpKTsKICB0cmFuc2l0aW9uOiB3aWR0aCAxODBtcyBlYXNlOwp9CgouY29udGVudC1ncmlkIHsKICBkaXNwbGF5OiBncmlkOwogIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDEuMzVmcikgbWlubWF4KDMyMHB4LCAwLjlmcik7CiAgZ3JpZC10ZW1wbGF0ZS1hcmVhczoKICAgICJ2aXN1YWwgZm9ybXVsYSIKICAgICJ0YXNrIHNjb3JlIjsKICBnYXA6IDE2cHg7CiAgYWxpZ24taXRlbXM6IHN0YXJ0Owp9CgoudmlzdWFsLWNhcmQgeyBncmlkLWFyZWE6IHZpc3VhbDsgfQouZm9ybXVsYS1jYXJkIHsgZ3JpZC1hcmVhOiBmb3JtdWxhOyB9Ci50YXNrLWNhcmQgeyBncmlkLWFyZWE6IHRhc2s7IH0KLnNjb3JlLWNhcmQgeyBncmlkLWFyZWE6IHNjb3JlOyB9CgoucGFuZWwtY2FyZCB7CiAgcGFkZGluZzogY2xhbXAoMTZweCwgMnZ3LCAyNHB4KTsKfQoKLnBhbmVsLWhlYWRpbmcgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIGdhcDogMTJweDsKICBtYXJnaW4tYm90dG9tOiAxNHB4Owp9CgpjYW52YXMgewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogbWluKDU0dmgsIDUyMHB4KTsKICBtaW4taGVpZ2h0OiAzMTBweDsKICBkaXNwbGF5OiBibG9jazsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAjZmZmZmZmLCAjZjdmYmZmKTsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE0NCwgMTY4LCAxOTEsIDAuNTUpOwogIGJvcmRlci1yYWRpdXM6IDIycHg7CiAgdG91Y2gtYWN0aW9uOiBub25lOwp9CgouY2FudmFzLWRlc2NyaXB0aW9uIHsKICBtYXJnaW46IDEwcHggMnB4IDA7CiAgZm9udC1zaXplOiAwLjk2cmVtOwp9CgouZGltZW5zaW9uLWNvbnRyb2xzIHsKICBkaXNwbGF5OiBncmlkOwogIGdhcDogMTJweDsKICBtYXJnaW4tdG9wOiAxNHB4Owp9CgouZGltZW5zaW9uLXJvdyB7CiAgZGlzcGxheTogZ3JpZDsKICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG8gYXV0bzsKICBnYXA6IDEwcHg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBwYWRkaW5nOiAxMnB4OwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTQ0LCAxNjgsIDE5MSwgMC40Mik7CiAgYm9yZGVyLXJhZGl1czogMThweDsKICBiYWNrZ3JvdW5kOiAjZmJmZGZmOwp9CgouZGltZW5zaW9uLWxhYmVsIHsKICBkaXNwbGF5OiBncmlkOwogIGdhcDogNnB4OwogIG1pbi13aWR0aDogMDsKICBmb250LXdlaWdodDogODAwOwp9CgouZGltZW5zaW9uLXZhbHVlIHsKICBjb2xvcjogdmFyKC0tYmx1ZSk7CiAgZm9udC13ZWlnaHQ6IDg1MDsKfQoKaW5wdXRbdHlwZT0icmFuZ2UiXSB7CiAgd2lkdGg6IDEwMCU7CiAgYWNjZW50LWNvbG9yOiB2YXIoLS1hY2NlbnQpOwp9Cgouc3RlcC1idXR0b24gewogIHdpZHRoOiA0NnB4OwogIHBhZGRpbmc6IDA7CiAgZm9udC1zaXplOiAxLjI1cmVtOwp9Cgouc2hhcGUtcGlja2VyIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtd3JhcDogd3JhcDsKICBnYXA6IDhweDsKICBtYXJnaW4tYm90dG9tOiAxNHB4Owp9Cgouc2hhcGUtYnV0dG9uIHsKICBtaW4taGVpZ2h0OiA0MnB4OwogIHBhZGRpbmc6IDlweCAxMnB4OwogIGZvbnQtc2l6ZTogMC45MnJlbTsKfQoKLnNoYXBlLWJ1dHRvbi5leHRlbnNpb246OmFmdGVyIHsKICBjb250ZW50OiAiIFp1c2F0eiI7CiAgbWFyZ2luLWxlZnQ6IDVweDsKICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgZm9udC1zaXplOiAwLjc4cmVtOwp9CgouZm9ybXVsYS1jb250ZW50IHsKICBkaXNwbGF5OiBncmlkOwogIGdhcDogMTJweDsKfQoKLmZvcm11bGEtYm94IHsKICBwYWRkaW5nOiAxNHB4OwogIGJvcmRlci1yYWRpdXM6IDE4cHg7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxNDQsIDE2OCwgMTkxLCAwLjQ1KTsKICBiYWNrZ3JvdW5kOiAjZmJmZGZmOwp9CgouZm9ybXVsYS1uYW1lIHsKICBtYXJnaW46IDAgMCA3cHg7CiAgZm9udC13ZWlnaHQ6IDg1MDsKICBjb2xvcjogdmFyKC0tYmx1ZSk7Cn0KCi5mb3JtdWxhLWdlbmVyYWwsCi5mb3JtdWxhLWxpbmUgewogIG1hcmdpbjogMCAwIDZweDsKICBmb250LXdlaWdodDogODIwOwogIGZvbnQtc2l6ZTogY2xhbXAoMXJlbSwgMS42dncsIDEuMThyZW0pOwp9CgouZm9ybXVsYS1ub3RlIHsKICBtYXJnaW46IDhweCAwIDEwcHg7CiAgZm9udC1zaXplOiAwLjk2cmVtOwp9CgoudGFzay1wcm9tcHQgewogIG1hcmdpbjogMCAwIDE0cHg7CiAgZm9udC1zaXplOiBjbGFtcCgxLjA1cmVtLCAxLjV2dywgMS4yOHJlbSk7CiAgY29sb3I6IHZhcigtLWluayk7CiAgZm9udC13ZWlnaHQ6IDcyMDsKfQoKLmFuc3dlci1hcmVhIHsKICBkaXNwbGF5OiBncmlkOwogIGdhcDogMTBweDsKfQoKLmFuc3dlci1ncmlkIHsKICBkaXNwbGF5OiBncmlkOwogIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTsKICBnYXA6IDEwcHg7Cn0KCi5hbnN3ZXItYnV0dG9uIHsKICBtaW4taGVpZ2h0OiA1OHB4OwogIHRleHQtYWxpZ246IGxlZnQ7CiAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICBjb2xvcjogdmFyKC0taW5rKTsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE0NCwgMTY4LCAxOTEsIDAuNTgpOwogIHBhZGRpbmc6IDE0cHg7Cn0KCi5hbnN3ZXItYnV0dG9uLmlzLWNvcnJlY3QgewogIGJhY2tncm91bmQ6IHZhcigtLWdyZWVuLXNvZnQpOwogIGJvcmRlci1jb2xvcjogcmdiYSgyNSwgMTA3LCA1NSwgMC40OCk7CiAgY29sb3I6ICMwZjRhMjU7Cn0KCi5hbnN3ZXItYnV0dG9uLmlzLXdyb25nIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1yZWQtc29mdCk7CiAgYm9yZGVyLWNvbG9yOiByZ2JhKDE1OSwgMzYsIDUxLCAwLjQ4KTsKICBjb2xvcjogIzdiMWIyODsKfQoKLm51bWJlci1hbnN3ZXItcm93IHsKICBkaXNwbGF5OiBncmlkOwogIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcikgYXV0byBhdXRvOwogIGdhcDogMTBweDsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9CgoubnVtYmVyLWlucHV0IHsKICBtaW4taGVpZ2h0OiA1MnB4OwogIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxNDQsIDE2OCwgMTkxLCAwLjcpOwogIHBhZGRpbmc6IDEwcHggMTRweDsKICBmb250LXdlaWdodDogODAwOwogIGNvbG9yOiB2YXIoLS1pbmspOwogIGJhY2tncm91bmQ6ICNmZmZmZmY7Cn0KCi51bml0LWxhYmVsIHsKICBjb2xvcjogdmFyKC0tYmx1ZSk7CiAgZm9udC13ZWlnaHQ6IDg1MDsKICBtaW4td2lkdGg6IDUycHg7Cn0KCi5mZWVkYmFjay1ib3ggewogIG1pbi1oZWlnaHQ6IDY0cHg7CiAgbWFyZ2luLXRvcDogMTJweDsKICBwYWRkaW5nOiAxMnB4IDE0cHg7CiAgYm9yZGVyLXJhZGl1czogMThweDsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE0NCwgMTY4LCAxOTEsIDAuNDUpOwogIGJhY2tncm91bmQ6ICNmOGZiZmY7CiAgY29sb3I6IHZhcigtLW11dGVkKTsKICBsaW5lLWhlaWdodDogMS40ODsKfQoKLmZlZWRiYWNrLWJveC5nb29kIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmVlbi1zb2Z0KTsKICBjb2xvcjogIzBmNGEyNTsKICBib3JkZXItY29sb3I6IHJnYmEoMjUsIDEwNywgNTUsIDAuMzgpOwp9CgouZmVlZGJhY2stYm94LmJhZCB7CiAgYmFja2dyb3VuZDogdmFyKC0tcmVkLXNvZnQpOwogIGNvbG9yOiAjN2IxYjI4OwogIGJvcmRlci1jb2xvcjogcmdiYSgxNTksIDM2LCA1MSwgMC4zOCk7Cn0KCi5mZWVkYmFjay1ib3gud2FybiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZ29sZC1zb2Z0KTsKICBjb2xvcjogIzZmNGIwMDsKICBib3JkZXItY29sb3I6IHJnYmEoMTU0LCAxMDYsIDUsIDAuMzIpOwp9CgoudGFzay1hY3Rpb25zIHsKICBtYXJnaW4tdG9wOiAxMnB4Owp9Cgouc2tpbGwtc2NvcmVzIHsKICBkaXNwbGF5OiBncmlkOwogIGdhcDogMTBweDsKfQoKLnNraWxsLXJvdyB7CiAgcGFkZGluZzogMTJweDsKICBib3JkZXItcmFkaXVzOiAxNnB4OwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTQ0LCAxNjgsIDE5MSwgMC40Mik7CiAgYmFja2dyb3VuZDogI2ZiZmRmZjsKfQoKLnNraWxsLXJvdy1oZWFkIHsKICBkaXNwbGF5OiBmbGV4OwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBnYXA6IDEwcHg7CiAgZm9udC13ZWlnaHQ6IDgyMDsKfQoKLmxlYXJuaW5nLXRpcCB7CiAgbWFyZ2luLXRvcDogMTJweDsKICBwYWRkaW5nOiAxM3B4OwogIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgYmFja2dyb3VuZDogdmFyKC0tYmx1ZS1zb2Z0KTsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDM2LCA4NCwgMTY2LCAwLjIpOwp9CgouZW5kLXNjcmVlbiB7CiAgbWluLWhlaWdodDogY2FsYygxMDBzdmggLSA1NnB4KTsKICBkaXNwbGF5OiBncmlkOwogIHBsYWNlLWl0ZW1zOiBjZW50ZXI7Cn0KCi5lbmQtcGFuZWwgewogIHdpZHRoOiBtaW4oOTIwcHgsIDEwMCUpOwogIHBhZGRpbmc6IGNsYW1wKDIycHgsIDR2dywgNDhweCk7Cn0KCi5lbmQtc2NvcmVzIHsKICBkaXNwbGF5OiBncmlkOwogIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTsKICBnYXA6IDEycHg7CiAgbWFyZ2luOiAyMHB4IDA7Cn0KCi5lbmQtc2NvcmUgewogIHBhZGRpbmc6IDE2cHg7CiAgYm9yZGVyLXJhZGl1czogMThweDsKICBiYWNrZ3JvdW5kOiAjZmJmZGZmOwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTQ0LCAxNjgsIDE5MSwgMC40NCk7Cn0KCi5lbmQtc2NvcmUgc3BhbiwKLmVuZC1zY29yZSBzdHJvbmcgewogIGRpc3BsYXk6IGJsb2NrOwp9CgouZW5kLXNjb3JlIHN0cm9uZyB7CiAgbWFyZ2luLXRvcDogNnB4OwogIGZvbnQtc2l6ZTogMS4zOHJlbTsKfQoKLmVuZC1hZHZpY2UgewogIHBhZGRpbmc6IDE0cHg7CiAgYm9yZGVyLXJhZGl1czogMThweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtc29mdCk7CiAgY29sb3I6ICMwYjVjNTY7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxNSwgMTE4LCAxMTAsIDAuMjIpOwogIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KCi5lbmQtYWN0aW9ucyB7CiAgbWFyZ2luLXRvcDogMThweDsKfQoKLnRvYXN0IHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgbGVmdDogNTAlOwogIGJvdHRvbTogMThweDsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgyNHB4KTsKICBtYXgtd2lkdGg6IG1pbig2NDBweCwgY2FsYygxMDAlIC0gMjhweCkpOwogIHBhZGRpbmc6IDEycHggMTZweDsKICBiYWNrZ3JvdW5kOiAjMTEyMDMzOwogIGNvbG9yOiAjZmZmZmZmOwogIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogIGJveC1zaGFkb3c6IDAgMThweCA0NHB4IHJnYmEoMTcsIDMyLCA1MSwgMC4yOCk7CiAgb3BhY2l0eTogMDsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICB0cmFuc2l0aW9uOiBvcGFjaXR5IDE2MG1zIGVhc2UsIHRyYW5zZm9ybSAxNjBtcyBlYXNlOwogIGZvbnQtd2VpZ2h0OiA3ODA7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHotaW5kZXg6IDYwOwp9CgoudG9hc3Quc2hvdyB7CiAgb3BhY2l0eTogMTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgwKTsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDEyODBweCkgewogIC5wYXRoLWdyaWQgewogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpOwogIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDk4MHB4KSB7CiAgLmhlcm8tcGFuZWwgewogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgfQoKICAuaGVyby12aXN1YWwgewogICAgbWluLWhlaWdodDogMjMwcHg7CiAgfQoKICAuZGFzaGJvYXJkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTsKICB9CgogIC5kYXNoYm9hcmQgLndpZGUgewogICAgZ3JpZC1jb2x1bW46IDEgLyAtMTsKICB9CgogIC5jb250ZW50LWdyaWQgewogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOgogICAgICAidmlzdWFsIgogICAgICAiZm9ybXVsYSIKICAgICAgInRhc2siCiAgICAgICJzY29yZSI7CiAgfQoKICAuYXBwLWJhciB7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNzIwcHgpIHsKICAuZ2FtZS1yb290IHsKICAgIHBhZGRpbmc6IDEwcHg7CiAgfQoKICAuaGVyby1wYW5lbCwKICAucGF0aC1zZWN0aW9uLAogIC5wYW5lbC1jYXJkLAogIC5lbmQtcGFuZWwgewogICAgYm9yZGVyLXJhZGl1czogMjJweDsKICB9CgogIC5wYXRoLWdyaWQsCiAgLmFuc3dlci1ncmlkLAogIC5lbmQtc2NvcmVzIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogIH0KCiAgLnBhdGgtY2FyZCB7CiAgICBtaW4taGVpZ2h0OiAxMzhweDsKICB9CgogIC5kYXNoYm9hcmQgewogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgfQoKICAuZGltZW5zaW9uLXJvdywKICAubnVtYmVyLWFuc3dlci1yb3cgewogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgYXV0byBhdXRvOwogIH0KCiAgY2FudmFzIHsKICAgIG1pbi1oZWlnaHQ6IDI4MHB4OwogICAgaGVpZ2h0OiA0NHZoOwogIH0KCiAgLnRvb2wtYnV0dG9uLAogIC5tb2RlLXRhYnMgYnV0dG9uLAogIC5hbnN3ZXItYnV0dG9uLAogIC5zdWJtaXQtYnV0dG9uLAogIC5zaGFwZS1idXR0b24sCiAgLmRpZmYtYnV0dG9uIHsKICAgIG1pbi1oZWlnaHQ6IDQ4cHg7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNDQwcHgpIHsKICBoMSB7CiAgICBmb250LXNpemU6IGNsYW1wKDIuODVyZW0sIDE5dncsIDVyZW0pOwogIH0KCiAgLmhlcm8tYmFkZ2VzIHNwYW4gewogICAgd2lkdGg6IDEwMCU7CiAgfQoKICAuYXBwLWFjdGlvbnMsCiAgLmdsb2JhbC10b29sYmFyLAogIC50YXNrLWFjdGlvbnMsCiAgLmVuZC1hY3Rpb25zIHsKICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICB9CgogIC50b29sLWJ1dHRvbiwKICAuYXBwLWFjdGlvbnMgLnRvb2wtYnV0dG9uLAogIC5nbG9iYWwtdG9vbGJhciAudG9vbC1idXR0b24sCiAgLnRhc2stYWN0aW9ucyAudG9vbC1idXR0b24sCiAgLmVuZC1hY3Rpb25zIC50b29sLWJ1dHRvbiB7CiAgICB3aWR0aDogMTAwJTsKICB9CgogIC5wYW5lbC1oZWFkaW5nIHsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgfQp9CgpAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogICosCiAgKjo6YmVmb3JlLAogICo6OmFmdGVyIHsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMDFtcyAhaW1wb3J0YW50OwogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjAxbXMgIWltcG9ydGFudDsKICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDEgIWltcG9ydGFudDsKICB9Cn0KCjwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+CiAgPGRpdiBpZD0iZ2FtZVJvb3QiIGNsYXNzPSJnYW1lLXJvb3QiPgogICAgPHNlY3Rpb24gaWQ9Im1lbnVTY3JlZW4iIGNsYXNzPSJzY3JlZW4gbWVudS1zY3JlZW4iIGFyaWEtbGFiZWxsZWRieT0ibWVudVRpdGxlIj4KICAgICAgPGRpdiBjbGFzcz0iaGVyby1wYW5lbCI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVyby1jb3B5Ij4KICAgICAgICAgIDxwIGNsYXNzPSJleWVicm93Ij5NYXRoZW1hdGlrIMK3IEtsYXNzZSA1IHVuZCA2PC9wPgogICAgICAgICAgPGgxIGlkPSJtZW51VGl0bGUiPkdlb01laXN0ZXI8L2gxPgogICAgICAgICAgPHAgY2xhc3M9Imhlcm8tc3VidGl0bGUiPkZsw6RjaGVuIMK3IFVtZmFuZyDCtyBWb2x1bWVuPC9wPgogICAgICAgICAgPHAgY2xhc3M9Imhlcm8tdGV4dCI+VmVyw6RuZGVyZSBNYcOfZSwgYmVvYmFjaHRlIGRpZSBaZWljaG51bmcgdW5kIHNpZWggbGl2ZSwgd2llIEZvcm1lbCwgZWluZ2VzZXR6dGUgV2VydGUsIFJlY2hlbndlZyB1bmQgRWluaGVpdCB6dXNhbW1lbnBhc3Nlbi48L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZXJvLWJhZGdlcyIgYXJpYS1sYWJlbD0iRWlnZW5zY2hhZnRlbiBkZXMgU3BpZWxzIj4KICAgICAgICAgICAgPHNwYW4+Q2FudmFzLVZpc3VhbGlzaWVydW5nZW48L3NwYW4+CiAgICAgICAgICAgIDxzcGFuPkZvcm1lbC1MYWJvcjwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4+UHVua3RlIGplIExlcm5iZXJlaWNoPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVyby12aXN1YWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im1pbmktZ3JpZCI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJtaW5pLXNoYXBlIG1pbmktc3F1YXJlIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im1pbmktc2hhcGUgbWluaS10cmlhbmdsZSI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJtaW5pLXNoYXBlIG1pbmktY3ViZSI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPHNlY3Rpb24gY2xhc3M9InBhdGgtc2VjdGlvbiIgYXJpYS1sYWJlbGxlZGJ5PSJwYXRoc1RpdGxlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWhlYWRpbmciPgogICAgICAgICAgPHAgY2xhc3M9ImV5ZWJyb3ciPlfDpGhsZSBkZWluZW4gTGVybndlZzwvcD4KICAgICAgICAgIDxoMiBpZD0icGF0aHNUaXRsZSI+TWVocmVyZSBXZWdlIHp1bSBHZW8tVmVyc3TDpG5kbmlzPC9oMj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwYXRoLWdyaWQiPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icGF0aC1jYXJkIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0aW9uPSJzdGFydC1tb2RlIiBkYXRhLW1vZGU9ImV4cGxvcmUiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2FyZC1raWNrZXIiPkVudGRlY2tlbjwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQtdGl0bGUiPkZvcm1lbiBlbnRkZWNrZW48L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXJkLXRleHQiPkZyZWllcyBFcmt1bmRlbiB2b24gRmzDpGNoZW4gdW5kIEvDtnJwZXJuIG1pdCBNYcOfcmVnbGVybi48L3NwYW4+CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9InBhdGgtY2FyZCBtYWluLWNhcmQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Rpb249InN0YXJ0LW1vZGUiIGRhdGEtbW9kZT0ibGFiIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQta2lja2VyIj5MaXZlIHZlcnN0ZWhlbjwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQtdGl0bGUiPkZvcm1lbC1MYWJvcjwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQtdGV4dCI+Rm9ybWVsIGFsbGdlbWVpbiwgV2VydGUsIFJlY2hlbndlZyB1bmQgRXJnZWJuaXMgc2ljaHRiYXIgdmVyYmluZGVuLjwvc3Bhbj4KICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icGF0aC1jYXJkIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0aW9uPSJzdGFydC1tb2RlIiBkYXRhLW1vZGU9InBlcmltZXRlciI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXJkLWtpY2tlciI+VHJhaW5pbmc8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXJkLXRpdGxlIj5VbWZhbmcgdHJhaW5pZXJlbjwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQtdGV4dCI+UsOkbmRlciBhZGRpZXJlbjogUXVhZHJhdCwgUmVjaHRlY2ssIERyZWllY2ssIFZpZWxlY2tlIHVuZCBLcmVpcy1BdXNibGljay48L3NwYW4+CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9InBhdGgtY2FyZCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdGlvbj0ic3RhcnQtbW9kZSIgZGF0YS1tb2RlPSJhcmVhIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQta2lja2VyIj5UcmFpbmluZzwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQtdGl0bGUiPkZsw6RjaGVuIHRyYWluaWVyZW48L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXJkLXRleHQiPlplcmxlZ2VuLCBlcmfDpG56ZW4sIEdydW5kc2VpdGUgbWFsIEjDtmhlLCBEcmVpZWNrIGFscyBoYWxiZXMgUmVjaHRlY2suPC9zcGFuPgogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwYXRoLWNhcmQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Rpb249InN0YXJ0LW1vZGUiIGRhdGEtbW9kZT0idm9sdW1lIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQta2lja2VyIj5UcmFpbmluZzwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQtdGl0bGUiPlZvbHVtZW4gdHJhaW5pZXJlbjwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQtdGV4dCI+V8O8cmZlbCwgUXVhZGVyIHVuZCBQcmlzbWEgbWl0IFNjaGljaHRlbiB1bmQgR3J1bmRmbMOkY2hlIHZlcnN0ZWhlbi48L3NwYW4+CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9InBhdGgtY2FyZCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdGlvbj0ic3RhcnQtbW9kZSIgZGF0YS1tb2RlPSJleGFtIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQta2lja2VyIj5DaGFsbGVuZ2U8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXJkLXRpdGxlIj5HZW8tTWVpc3RlcnByw7xmdW5nPC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2FyZC10ZXh0Ij5HZW1pc2NodGUgQXVmZ2FiZW4gbWl0IE11bHRpcGxlIENob2ljZSB1bmQgRWluZ2FiZWF1ZmdhYmVuLjwvc3Bhbj4KICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icGF0aC1jYXJkIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0aW9uPSJzdGFydC1tb2RlIiBkYXRhLW1vZGU9InNjb3JlIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQta2lja2VyIj5Qcm9maWw8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXJkLXRpdGxlIj5NZWluZSBMZXJuYmVyZWljaGU8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXJkLXRleHQiPlNpdHp1bmdzZm9ydHNjaHJpdHQgZsO8ciBVbWZhbmcsIEZsw6RjaGUsIFZvbHVtZW4sIEZvcm1lbG4sIEVpbmhlaXRlbiB1bmQgU3RyYXRlZ2llLjwvc3Bhbj4KICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L3NlY3Rpb24+CgogICAgICA8ZGl2IGNsYXNzPSJnbG9iYWwtdG9vbGJhciIgYXJpYS1sYWJlbD0iR2xvYmFsZSBBa3Rpb25lbiI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9vbC1idXR0b24iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Rpb249ImZ1bGxzY3JlZW4iPlZvbGxiaWxkPC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9vbC1idXR0b24gc2Vjb25kYXJ5IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0aW9uPSJyZXNldC1nYW1lIj5OZXVzdGFydDwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8bWFpbiBpZD0icGxheVNjcmVlbiIgY2xhc3M9InNjcmVlbiBwbGF5LXNjcmVlbiIgaGlkZGVuPgogICAgICA8aGVhZGVyIGNsYXNzPSJhcHAtYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZS1ibG9jayI+CiAgICAgICAgICA8cCBpZD0ibW9kZUxhYmVsIiBjbGFzcz0iZXllYnJvdyI+Rm9ybWVsLUxhYm9yPC9wPgogICAgICAgICAgPGgyIGlkPSJzY3JlZW5UaXRsZSI+R2VvTWVpc3RlcjwvaDI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYXBwLWFjdGlvbnMiPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9vbC1idXR0b24iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Rpb249ImZ1bGxzY3JlZW4iPlZvbGxiaWxkPC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0b29sLWJ1dHRvbiBzZWNvbmRhcnkiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Rpb249InNob3ctbWVudSI+U3RhcnRzZWl0ZTwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9vbC1idXR0b24gc2Vjb25kYXJ5IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0aW9uPSJyZXNldC1nYW1lIj5OZXVzdGFydDwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2hlYWRlcj4KCiAgICAgIDxuYXYgY2xhc3M9Im1vZGUtdGFicyIgYXJpYS1sYWJlbD0iTGVybndlZ2UiPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLWFjdGlvbj0ic3dpdGNoLW1vZGUiIGRhdGEtbW9kZT0iZXhwbG9yZSI+RW50ZGVja2VuPC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtYWN0aW9uPSJzd2l0Y2gtbW9kZSIgZGF0YS1tb2RlPSJsYWIiPkxhYm9yPC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtYWN0aW9uPSJzd2l0Y2gtbW9kZSIgZGF0YS1tb2RlPSJwZXJpbWV0ZXIiPlVtZmFuZzwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLWFjdGlvbj0ic3dpdGNoLW1vZGUiIGRhdGEtbW9kZT0iYXJlYSI+RmzDpGNoZTwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLWFjdGlvbj0ic3dpdGNoLW1vZGUiIGRhdGEtbW9kZT0idm9sdW1lIj5Wb2x1bWVuPC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtYWN0aW9uPSJzd2l0Y2gtbW9kZSIgZGF0YS1tb2RlPSJleGFtIj5QcsO8ZnVuZzwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLWFjdGlvbj0ic3dpdGNoLW1vZGUiIGRhdGEtbW9kZT0ic2NvcmUiPkxlcm5iZXJlaWNoZTwvYnV0dG9uPgogICAgICA8L25hdj4KCiAgICAgIDxzZWN0aW9uIGNsYXNzPSJkYXNoYm9hcmQiIGFyaWEtbGFiZWw9IlNwaWVsc3RhbmQiPgogICAgICAgIDxkaXYgY2xhc3M9InNjb3JlLXRpbGUiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InNjb3JlLWxhYmVsIj5HZXNhbXRwdW5rdGU8L3NwYW4+CiAgICAgICAgICA8c3Ryb25nIGlkPSJ0b3RhbFNjb3JlIj4wPC9zdHJvbmc+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2NvcmUtdGlsZSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0ic2NvcmUtbGFiZWwiPlNlcmllPC9zcGFuPgogICAgICAgICAgPHN0cm9uZyBpZD0ic3RyZWFrU2NvcmUiPjA8L3N0cm9uZz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzY29yZS10aWxlIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJzY29yZS1sYWJlbCI+U2Nod2llcmlna2VpdDwvc3Bhbj4KICAgICAgICAgIDxzdHJvbmcgaWQ9ImRpZmZpY3VsdHlUZXh0Ij5TdHVmZSAxPC9zdHJvbmc+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2NvcmUtdGlsZSB3aWRlIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJzY29yZS1sYWJlbCI+Rm9ydHNjaHJpdHQ8L3NwYW4+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1zaGVsbCIgYXJpYS1oaWRkZW49InRydWUiPjxzcGFuIGlkPSJwcm9ncmVzc0JhciI+PC9zcGFuPjwvZGl2PgogICAgICAgICAgPHNwYW4gaWQ9InByb2dyZXNzVGV4dCI+RnJlaWVzIEVya3VuZGVuPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICA8L3NlY3Rpb24+CgogICAgICA8c2VjdGlvbiBjbGFzcz0iY29udGVudC1ncmlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0idmlzdWFsLWNhcmQgcGFuZWwtY2FyZCIgYXJpYS1sYWJlbGxlZGJ5PSJ2aXN1YWxUaXRsZSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwYW5lbC1oZWFkaW5nIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8cCBjbGFzcz0iZXllYnJvdyI+SW50ZXJha3RpdmUgRGFyc3RlbGx1bmc8L3A+CiAgICAgICAgICAgICAgPGgzIGlkPSJ2aXN1YWxUaXRsZSI+Rm9ybSB2ZXLDpG5kZXJuPC9oMz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxzcGFuIGlkPSJzaGFwZUtpbmQiIGNsYXNzPSJwaWxsIj5GbMOkY2hlPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8Y2FudmFzIGlkPSJzaGFwZUNhbnZhcyIgd2lkdGg9IjkyMCIgaGVpZ2h0PSI1NjAiIGFyaWEtbGFiZWw9IkludGVyYWt0aXZlIFplaWNobnVuZyBkZXIgZ2V3w6RobHRlbiBnZW9tZXRyaXNjaGVuIEZvcm0iPkludGVyYWt0aXZlIEdlb21ldHJpZS1aZWljaG51bmc8L2NhbnZhcz4KICAgICAgICAgIDxwIGlkPSJjYW52YXNEZXNjcmlwdGlvbiIgY2xhc3M9ImNhbnZhcy1kZXNjcmlwdGlvbiI+RGllIFplaWNobnVuZyB3aXJkIGR1cmNoIFRleHQsIEZvcm1lbCB1bmQgUmVnbGVyIGVya2zDpHJ0LjwvcD4KICAgICAgICAgIDxkaXYgaWQ9ImRpbWVuc2lvbkNvbnRyb2xzIiBjbGFzcz0iZGltZW5zaW9uLWNvbnRyb2xzIiBhcmlhLWxhYmVsPSJNYcOfZSB2ZXLDpG5kZXJuIj48L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDxhc2lkZSBjbGFzcz0iZm9ybXVsYS1jYXJkIHBhbmVsLWNhcmQiIGFyaWEtbGFiZWxsZWRieT0iZm9ybXVsYVRpdGxlIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsLWhlYWRpbmciPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxwIGNsYXNzPSJleWVicm93Ij5Gb3JtZWwtV2Vya3N0YXR0PC9wPgogICAgICAgICAgICAgIDxoMyBpZD0iZm9ybXVsYVRpdGxlIj5XZXJ0ZSBpbiBkZXIgRm9ybWVsPC9oMz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgaWQ9InNoYXBlUGlja2VyIiBjbGFzcz0ic2hhcGUtcGlja2VyIiBhcmlhLWxhYmVsPSJGb3JtIGF1c3fDpGhsZW4iPjwvZGl2PgogICAgICAgICAgPGRpdiBpZD0iZm9ybXVsYUNvbnRlbnQiIGNsYXNzPSJmb3JtdWxhLWNvbnRlbnQiPjwvZGl2PgogICAgICAgIDwvYXNpZGU+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJ0YXNrLWNhcmQgcGFuZWwtY2FyZCIgYXJpYS1sYWJlbGxlZGJ5PSJ0YXNrVGl0bGUiPgogICAgICAgICAgPGRpdiBjbGFzcz0icGFuZWwtaGVhZGluZyI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPHAgaWQ9InRhc2tTa2lsbCIgY2xhc3M9ImV5ZWJyb3ciPkF1ZmdhYmU8L3A+CiAgICAgICAgICAgICAgPGgzIGlkPSJ0YXNrVGl0bGUiPkxlcm5hdWZ0cmFnPC9oMz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxzcGFuIGlkPSJ0YXNrUmV3YXJkIiBjbGFzcz0icGlsbCI+KzAgUHVua3RlPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cCBpZD0idGFza1Byb21wdCIgY2xhc3M9InRhc2stcHJvbXB0Ij5Xw6RobGUgZWluZW4gTGVybndlZy48L3A+CiAgICAgICAgICA8ZGl2IGlkPSJhbnN3ZXJBcmVhIiBjbGFzcz0iYW5zd2VyLWFyZWEiIGFyaWEtbGFiZWw9IkFudHdvcnRiZXJlaWNoIj48L2Rpdj4KICAgICAgICAgIDxkaXYgaWQ9ImZlZWRiYWNrQm94IiBjbGFzcz0iZmVlZGJhY2stYm94IiByb2xlPSJzdGF0dXMiIGFyaWEtbGl2ZT0icG9saXRlIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRhc2stYWN0aW9ucyI+CiAgICAgICAgICAgIDxidXR0b24gaWQ9ImhpbnRCdXR0b24iIGNsYXNzPSJ0b29sLWJ1dHRvbiBzZWNvbmRhcnkiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Rpb249InNob3ctaGludCI+VGlwcDwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIGlkPSJuZXh0QnV0dG9uIiBjbGFzcz0idG9vbC1idXR0b24iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Rpb249Im5leHQtdGFzayI+TsOkY2hzdGUgQXVmZ2FiZTwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8YXNpZGUgY2xhc3M9InNjb3JlLWNhcmQgcGFuZWwtY2FyZCIgYXJpYS1sYWJlbGxlZGJ5PSJzY29yZVRpdGxlIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsLWhlYWRpbmciPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxwIGNsYXNzPSJleWVicm93Ij5NZWluZSBMZXJuYmVyZWljaGU8L3A+CiAgICAgICAgICAgICAgPGgzIGlkPSJzY29yZVRpdGxlIj5HZW8tUHJvZmlsIGRlciBTaXR6dW5nPC9oMz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgaWQ9InNraWxsU2NvcmVzIiBjbGFzcz0ic2tpbGwtc2NvcmVzIj48L2Rpdj4KICAgICAgICAgIDxkaXYgaWQ9ImxlYXJuaW5nVGlwIiBjbGFzcz0ibGVhcm5pbmctdGlwIj48L2Rpdj4KICAgICAgICA8L2FzaWRlPgogICAgICA8L3NlY3Rpb24+CiAgICA8L21haW4+CgogICAgPHNlY3Rpb24gaWQ9ImVuZFNjcmVlbiIgY2xhc3M9InNjcmVlbiBlbmQtc2NyZWVuIiBoaWRkZW4gYXJpYS1sYWJlbGxlZGJ5PSJlbmRUaXRsZSI+CiAgICAgIDxkaXYgY2xhc3M9ImVuZC1wYW5lbCI+CiAgICAgICAgPHAgY2xhc3M9ImV5ZWJyb3ciPkF1c3dlcnR1bmc8L3A+CiAgICAgICAgPGgyIGlkPSJlbmRUaXRsZSI+R2VvLU1pc3Npb24gYWJnZXNjaGxvc3NlbjwvaDI+CiAgICAgICAgPHAgaWQ9ImVuZFN1bW1hcnkiIGNsYXNzPSJlbmQtc3VtbWFyeSI+RHUgaGFzdCBlaW5lIFJ1bmRlIGJlZW5kZXQuPC9wPgogICAgICAgIDxkaXYgaWQ9ImVuZFNjb3JlcyIgY2xhc3M9ImVuZC1zY29yZXMiPjwvZGl2PgogICAgICAgIDxkaXYgaWQ9ImVuZEFkdmljZSIgY2xhc3M9ImVuZC1hZHZpY2UiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImVuZC1hY3Rpb25zIj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9InRvb2wtYnV0dG9uIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0aW9uPSJzd2l0Y2gtbW9kZSIgZGF0YS1tb2RlPSJleGFtIj5OZXVlIE1laXN0ZXJwcsO8ZnVuZzwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9vbC1idXR0b24gc2Vjb25kYXJ5IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0aW9uPSJzd2l0Y2gtbW9kZSIgZGF0YS1tb2RlPSJsYWIiPlp1csO8Y2sgaW5zIExhYm9yPC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0b29sLWJ1dHRvbiBzZWNvbmRhcnkiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Rpb249InNob3ctbWVudSI+U3RhcnRzZWl0ZTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8ZGl2IGlkPSJ0b2FzdCIgY2xhc3M9InRvYXN0IiByb2xlPSJzdGF0dXMiIGFyaWEtbGl2ZT0icG9saXRlIj48L2Rpdj4KICA8L2Rpdj4KICAKPHNjcmlwdD4KKGZ1bmN0aW9uICgpIHsKICAidXNlIHN0cmljdCI7CgogIHZhciBQSSA9IDMuMTQ7CiAgdmFyIGNhdGVnb3JpZXMgPSBbIlVtZmFuZyIsICJGbMOkY2hlIiwgIlZvbHVtZW4iLCAiRm9ybWVsbiIsICJFaW5oZWl0ZW4iLCAiU3RyYXRlZ2llIiwgIktub2JlbGF1ZmdhYmVuIl07CiAgdmFyIG1vZGVTZXR0aW5ncyA9IHsKICAgIGV4cGxvcmU6IHsKICAgICAgbGFiZWw6ICJFbnRkZWNrZW4iLAogICAgICB0aXRsZTogIkZvcm1lbiBlbnRkZWNrZW4iLAogICAgICBnb2FsOiAwLAogICAgICBmaWx0ZXJzOiBbXSwKICAgICAgcHJlZmVycmVkU2hhcGVzOiBbInNxdWFyZSIsICJyZWN0YW5nbGUiLCAidHJpYW5nbGUiLCAicmlnaHRUcmlhbmdsZSIsICJwYXJhbGxlbG9ncmFtIiwgInJob21idXMiLCAidHJhcGV6b2lkIiwgImNvbXBvc2l0ZSIsICJjdWJlIiwgImN1Ym9pZCIsICJwcmlzbSJdLAogICAgICB0aXA6ICJFbnRkZWNrZW4gaGVpw590OiBNYcOfZSB2ZXLDpG5kZXJuLCBaZWljaG51bmcgYmVvYmFjaHRlbiB1bmQgaW4gZWlnZW5lbiBXb3J0ZW4gYmVzY2hyZWliZW4sIHdhcyBnbGVpY2ggYmxlaWJ0IHVuZCB3YXMgc2ljaCDDpG5kZXJ0LiIKICAgIH0sCiAgICBsYWI6IHsKICAgICAgbGFiZWw6ICJGb3JtZWwtTGFib3IiLAogICAgICB0aXRsZTogIkZvcm1lbC1MYWJvciIsCiAgICAgIGdvYWw6IDAsCiAgICAgIGZpbHRlcnM6IFsiRm9ybWVsbiIsICJFaW5oZWl0ZW4iLCAiU3RyYXRlZ2llIl0sCiAgICAgIHByZWZlcnJlZFNoYXBlczogW10sCiAgICAgIHRpcDogIkltIExhYm9yIHNpZWhzdCBkdSBkaWUgYWxsZ2VtZWluZSBGb3JtZWwsIGRhbm4gZGllIGVpbmdlc2V0enRlbiBXZXJ0ZSB1bmQgYW0gRW5kZSBkaWUgcGFzc2VuZGUgRWluaGVpdC4iCiAgICB9LAogICAgcGVyaW1ldGVyOiB7CiAgICAgIGxhYmVsOiAiVHJhaW5pbmciLAogICAgICB0aXRsZTogIlVtZmFuZyB0cmFpbmllcmVuIiwKICAgICAgZ29hbDogMTAsCiAgICAgIGZpbHRlcnM6IFsiVW1mYW5nIiwgIkVpbmhlaXRlbiIsICJGb3JtZWxuIiwgIlN0cmF0ZWdpZSJdLAogICAgICBwcmVmZXJyZWRTaGFwZXM6IFsic3F1YXJlIiwgInJlY3RhbmdsZSIsICJ0cmlhbmdsZSIsICJyaWdodFRyaWFuZ2xlIiwgImNvbXBvc2l0ZSIsICJjaXJjbGUiXSwKICAgICAgdGlwOiAiQmVpbSBVbWZhbmcgZ2Voc3QgZHUgZGVuIFJhbmQgZW50bGFuZy4gRHUgYWRkaWVyc3QgTMOkbmdlbiB1bmQgc2NocmVpYnN0IGNtIG9kZXIgbSwgbmljaHQgY23Csi4iCiAgICB9LAogICAgYXJlYTogewogICAgICBsYWJlbDogIlRyYWluaW5nIiwKICAgICAgdGl0bGU6ICJGbMOkY2hlbiB0cmFpbmllcmVuIiwKICAgICAgZ29hbDogMTIsCiAgICAgIGZpbHRlcnM6IFsiRmzDpGNoZSIsICJFaW5oZWl0ZW4iLCAiRm9ybWVsbiIsICJTdHJhdGVnaWUiLCAiS25vYmVsYXVmZ2FiZW4iXSwKICAgICAgcHJlZmVycmVkU2hhcGVzOiBbInNxdWFyZSIsICJyZWN0YW5nbGUiLCAidHJpYW5nbGUiLCAicmlnaHRUcmlhbmdsZSIsICJwYXJhbGxlbG9ncmFtIiwgInJob21idXMiLCAidHJhcGV6b2lkIiwgImNvbXBvc2l0ZSIsICJjaXJjbGUiXSwKICAgICAgdGlwOiAiRmzDpGNoZW4gbGFzc2VuIHNpY2ggb2Z0IGluIFJlY2h0ZWNrZSBvZGVyIERyZWllY2tlIHplcmxlZ2VuLiBEaWUgRWluaGVpdCBpc3QgaW1tZXIgcXVhZHJhdGlzY2gsIHp1bSBCZWlzcGllbCBjbcKyLiIKICAgIH0sCiAgICB2b2x1bWU6IHsKICAgICAgbGFiZWw6ICJUcmFpbmluZyIsCiAgICAgIHRpdGxlOiAiVm9sdW1lbiB0cmFpbmllcmVuIiwKICAgICAgZ29hbDogMTAsCiAgICAgIGZpbHRlcnM6IFsiVm9sdW1lbiIsICJFaW5oZWl0ZW4iLCAiRm9ybWVsbiIsICJTdHJhdGVnaWUiLCAiS25vYmVsYXVmZ2FiZW4iXSwKICAgICAgcHJlZmVycmVkU2hhcGVzOiBbImN1YmUiLCAiY3Vib2lkIiwgInByaXNtIiwgImN5bGluZGVyIiwgInB5cmFtaWQiLCAiY29uZSIsICJzcGhlcmUiXSwKICAgICAgdGlwOiAiVm9sdW1lbiBiZXNjaHJlaWJ0IFJhdW1mw7xsbHVuZy4gRXJzdCB3aXJkIGVpbmUgR3J1bmRmbMOkY2hlIGdlYmlsZGV0LCBkYW5uIHdpcmQgc2llIGluIGRpZSBIw7ZoZSBvZGVyIFRpZWZlIGdlc3RhcGVsdC4iCiAgICB9LAogICAgZXhhbTogewogICAgICBsYWJlbDogIkNoYWxsZW5nZSIsCiAgICAgIHRpdGxlOiAiR2VvLU1laXN0ZXJwcsO8ZnVuZyIsCiAgICAgIGdvYWw6IDE0LAogICAgICBmaWx0ZXJzOiBbIlVtZmFuZyIsICJGbMOkY2hlIiwgIlZvbHVtZW4iLCAiRm9ybWVsbiIsICJFaW5oZWl0ZW4iLCAiU3RyYXRlZ2llIiwgIktub2JlbGF1ZmdhYmVuIl0sCiAgICAgIHByZWZlcnJlZFNoYXBlczogW10sCiAgICAgIHRpcDogIkluIGRlciBNZWlzdGVycHLDvGZ1bmcgZW50c2NoZWlkZXQgenVlcnN0IGRpZSBGcmFnZTogUmFuZCwgRmzDpGNoZSBvZGVyIFJhdW0/IERhbmFjaCB3w6RobHN0IGR1IEZvcm1lbCB1bmQgRWluaGVpdC4iCiAgICB9LAogICAgc2NvcmU6IHsKICAgICAgbGFiZWw6ICJQcm9maWwiLAogICAgICB0aXRsZTogIk1laW5lIExlcm5iZXJlaWNoZSIsCiAgICAgIGdvYWw6IDAsCiAgICAgIGZpbHRlcnM6IFtdLAogICAgICBwcmVmZXJyZWRTaGFwZXM6IFtdLAogICAgICB0aXA6ICJEaWUgUHVua3RlIGdlbHRlbiBudXIgaW4gZGllc2VyIFNpdHp1bmcuIFNpZSB6ZWlnZW4sIHdlbGNoZSBMZXJuYmVyZWljaGUgZHUgZ2VyYWRlIHNpY2hlcmVyIGJlaGVycnNjaHN0LiIKICAgIH0KICB9OwoKICB2YXIgc2hhcGVzID0gWwogICAgewogICAgICBpZDogInNxdWFyZSIsCiAgICAgIG5hbWU6ICJRdWFkcmF0IiwKICAgICAgdHlwZTogIkZsw6RjaGUiLAogICAgICBjbGFzc0xldmVsOiAiS2VybiBLbGFzc2UgNS82IiwKICAgICAgcGFyYW1ldGVyczogWwogICAgICAgIHsga2V5OiAiYSIsIGxhYmVsOiAiU2VpdGVubMOkbmdlIGEiLCBtaW46IDEsIG1heDogMTgsIHN0ZXA6IDEsIHZhbHVlOiA2LCB1bml0OiAiY20iIH0KICAgICAgXSwKICAgICAgZm9ybXVsYUxhYmVsczogWyJVID0gNCDCtyBhIiwgIkEgPSBhIMK3IGEiXSwKICAgICAgY2FsY3VsYXRpb25GdW5jdGlvbjogY2FsY1NxdWFyZSwKICAgICAgcmVuZGVyRnVuY3Rpb246IGRyYXdTcXVhcmUsCiAgICAgIHRhc2tHZW5lcmF0b3JzOiBbIlVtZmFuZyIsICJGbMOkY2hlIiwgIkZvcm1lbG4iLCAiRWluaGVpdGVuIl0sCiAgICAgIGV4cGxhbmF0aW9uOiAiQmVpbSBRdWFkcmF0IHNpbmQgYWxsZSB2aWVyIFNlaXRlbiBnbGVpY2ggbGFuZy4gRsO8ciBkaWUgRmzDpGNoZSB6w6RobHN0IGR1IEvDpHN0Y2hlbiBpbiBSZWloZW4gdW5kIFNwYWx0ZW4uIgogICAgfSwKICAgIHsKICAgICAgaWQ6ICJyZWN0YW5nbGUiLAogICAgICBuYW1lOiAiUmVjaHRlY2siLAogICAgICB0eXBlOiAiRmzDpGNoZSIsCiAgICAgIGNsYXNzTGV2ZWw6ICJLZXJuIEtsYXNzZSA1LzYiLAogICAgICBwYXJhbWV0ZXJzOiBbCiAgICAgICAgeyBrZXk6ICJhIiwgbGFiZWw6ICJMw6RuZ2UgYSIsIG1pbjogMiwgbWF4OiAyNCwgc3RlcDogMSwgdmFsdWU6IDksIHVuaXQ6ICJjbSIgfSwKICAgICAgICB7IGtleTogImIiLCBsYWJlbDogIkJyZWl0ZSBiIiwgbWluOiAyLCBtYXg6IDE4LCBzdGVwOiAxLCB2YWx1ZTogNSwgdW5pdDogImNtIiB9CiAgICAgIF0sCiAgICAgIGZvcm11bGFMYWJlbHM6IFsiVSA9IDIgwrcgYSArIDIgwrcgYiIsICJBID0gYSDCtyBiIl0sCiAgICAgIGNhbGN1bGF0aW9uRnVuY3Rpb246IGNhbGNSZWN0YW5nbGUsCiAgICAgIHJlbmRlckZ1bmN0aW9uOiBkcmF3UmVjdGFuZ2xlLAogICAgICB0YXNrR2VuZXJhdG9yczogWyJVbWZhbmciLCAiRmzDpGNoZSIsICJGb3JtZWxuIiwgIkVpbmhlaXRlbiIsICJTdHJhdGVnaWUiXSwKICAgICAgZXhwbGFuYXRpb246ICJFaW4gUmVjaHRlY2sgaGF0IHp3ZWkgZ2xlaWNoZSBMw6RuZ2VuIHVuZCB6d2VpIGdsZWljaGUgQnJlaXRlbi4gRGllIEZsw6RjaGUgZW50c3RlaHQgYXVzIFJlaWhlbiBtYWwgU3BhbHRlbi4iCiAgICB9LAogICAgewogICAgICBpZDogInRyaWFuZ2xlIiwKICAgICAgbmFtZTogIkRyZWllY2siLAogICAgICB0eXBlOiAiRmzDpGNoZSIsCiAgICAgIGNsYXNzTGV2ZWw6ICJLZXJuIEtsYXNzZSA1LzYiLAogICAgICBwYXJhbWV0ZXJzOiBbCiAgICAgICAgeyBrZXk6ICJnIiwgbGFiZWw6ICJHcnVuZHNlaXRlIGciLCBtaW46IDMsIG1heDogMjIsIHN0ZXA6IDEsIHZhbHVlOiAxMCwgdW5pdDogImNtIiB9LAogICAgICAgIHsga2V5OiAiaCIsIGxhYmVsOiAiSMO2aGUgaCIsIG1pbjogMiwgbWF4OiAxNiwgc3RlcDogMSwgdmFsdWU6IDcsIHVuaXQ6ICJjbSIgfSwKICAgICAgICB7IGtleTogInMiLCBsYWJlbDogIlNjaHLDpGdzZWl0ZSBzIiwgbWluOiAzLCBtYXg6IDIwLCBzdGVwOiAxLCB2YWx1ZTogOSwgdW5pdDogImNtIiB9CiAgICAgIF0sCiAgICAgIGZvcm11bGFMYWJlbHM6IFsiQSA9IGcgwrcgaCA6IDIiLCAiVSA9IGEgKyBiICsgYyJdLAogICAgICBjYWxjdWxhdGlvbkZ1bmN0aW9uOiBjYWxjVHJpYW5nbGUsCiAgICAgIHJlbmRlckZ1bmN0aW9uOiBkcmF3VHJpYW5nbGUsCiAgICAgIHRhc2tHZW5lcmF0b3JzOiBbIlVtZmFuZyIsICJGbMOkY2hlIiwgIkZvcm1lbG4iLCAiU3RyYXRlZ2llIl0sCiAgICAgIGV4cGxhbmF0aW9uOiAiRWluIERyZWllY2sgbWl0IEdydW5kc2VpdGUgdW5kIEjDtmhlIGlzdCBoYWxiIHNvIGdyb8OfIHdpZSBlaW4gcGFzc2VuZGVzIFJlY2h0ZWNrLiIKICAgIH0sCiAgICB7CiAgICAgIGlkOiAicmlnaHRUcmlhbmdsZSIsCiAgICAgIG5hbWU6ICJSZWNodHdpbmtsaWdlcyBEcmVpZWNrIiwKICAgICAgdHlwZTogIkZsw6RjaGUiLAogICAgICBjbGFzc0xldmVsOiAiS2VybiBLbGFzc2UgNS82IiwKICAgICAgcGFyYW1ldGVyczogWwogICAgICAgIHsga2V5OiAiYSIsIGxhYmVsOiAiS2F0aGV0ZSBhIiwgbWluOiAzLCBtYXg6IDIwLCBzdGVwOiAxLCB2YWx1ZTogOCwgdW5pdDogImNtIiB9LAogICAgICAgIHsga2V5OiAiYiIsIGxhYmVsOiAiS2F0aGV0ZSBiIiwgbWluOiAzLCBtYXg6IDE4LCBzdGVwOiAxLCB2YWx1ZTogNiwgdW5pdDogImNtIiB9LAogICAgICAgIHsga2V5OiAiYyIsIGxhYmVsOiAiU2VpdGUgYyIsIG1pbjogNCwgbWF4OiAyNCwgc3RlcDogMSwgdmFsdWU6IDEwLCB1bml0OiAiY20iIH0KICAgICAgXSwKICAgICAgZm9ybXVsYUxhYmVsczogWyJBID0gYSDCtyBiIDogMiIsICJVID0gYSArIGIgKyBjIl0sCiAgICAgIGNhbGN1bGF0aW9uRnVuY3Rpb246IGNhbGNSaWdodFRyaWFuZ2xlLAogICAgICByZW5kZXJGdW5jdGlvbjogZHJhd1JpZ2h0VHJpYW5nbGUsCiAgICAgIHRhc2tHZW5lcmF0b3JzOiBbIlVtZmFuZyIsICJGbMOkY2hlIiwgIkZvcm1lbG4iLCAiU3RyYXRlZ2llIl0sCiAgICAgIGV4cGxhbmF0aW9uOiAiRGllIGJlaWRlbiBLYXRoZXRlbiBzdGVoZW4gc2Vua3JlY2h0IGF1ZmVpbmFuZGVyLiBEYWR1cmNoIHNpZWh0IG1hbiBkYXMgaGFsYmUgUmVjaHRlY2sgYmVzb25kZXJzIGd1dC4iCiAgICB9LAogICAgewogICAgICBpZDogInBhcmFsbGVsb2dyYW0iLAogICAgICBuYW1lOiAiUGFyYWxsZWxvZ3JhbW0iLAogICAgICB0eXBlOiAiRmzDpGNoZSIsCiAgICAgIGNsYXNzTGV2ZWw6ICJLZXJuIEtsYXNzZSA1LzYiLAogICAgICBwYXJhbWV0ZXJzOiBbCiAgICAgICAgeyBrZXk6ICJnIiwgbGFiZWw6ICJHcnVuZHNlaXRlIGciLCBtaW46IDMsIG1heDogMjIsIHN0ZXA6IDEsIHZhbHVlOiAxMCwgdW5pdDogImNtIiB9LAogICAgICAgIHsga2V5OiAiaCIsIGxhYmVsOiAiSMO2aGUgaCIsIG1pbjogMiwgbWF4OiAxNiwgc3RlcDogMSwgdmFsdWU6IDYsIHVuaXQ6ICJjbSIgfSwKICAgICAgICB7IGtleTogInMiLCBsYWJlbDogIlNlaXRlIHMiLCBtaW46IDMsIG1heDogMTgsIHN0ZXA6IDEsIHZhbHVlOiA3LCB1bml0OiAiY20iIH0KICAgICAgXSwKICAgICAgZm9ybXVsYUxhYmVsczogWyJBID0gZyDCtyBoIiwgIlUgPSAyIMK3IGcgKyAyIMK3IHMiXSwKICAgICAgY2FsY3VsYXRpb25GdW5jdGlvbjogY2FsY1BhcmFsbGVsb2dyYW0sCiAgICAgIHJlbmRlckZ1bmN0aW9uOiBkcmF3UGFyYWxsZWxvZ3JhbSwKICAgICAgdGFza0dlbmVyYXRvcnM6IFsiVW1mYW5nIiwgIkZsw6RjaGUiLCAiRm9ybWVsbiIsICJTdHJhdGVnaWUiXSwKICAgICAgZXhwbGFuYXRpb246ICJFaW4gUGFyYWxsZWxvZ3JhbW0ga2FubiBtYW4gZ2VkYW5rbGljaCB6dSBlaW5lbSBSZWNodGVjayB1bWxlZ2VuLiBFbnRzY2hlaWRlbmQgZsO8ciBkaWUgRmzDpGNoZSBzaW5kIEdydW5kc2VpdGUgdW5kIHNlbmtyZWNodGUgSMO2aGUuIgogICAgfSwKICAgIHsKICAgICAgaWQ6ICJyaG9tYnVzIiwKICAgICAgbmFtZTogIlJhdXRlIiwKICAgICAgdHlwZTogIkZsw6RjaGUiLAogICAgICBjbGFzc0xldmVsOiAiS2VybiBLbGFzc2UgNS82IiwKICAgICAgcGFyYW1ldGVyczogWwogICAgICAgIHsga2V5OiAiYSIsIGxhYmVsOiAiU2VpdGVubMOkbmdlIGEiLCBtaW46IDMsIG1heDogMTgsIHN0ZXA6IDEsIHZhbHVlOiA3LCB1bml0OiAiY20iIH0sCiAgICAgICAgeyBrZXk6ICJlIiwgbGFiZWw6ICJEaWFnb25hbGUgZSIsIG1pbjogNCwgbWF4OiAyMiwgc3RlcDogMSwgdmFsdWU6IDEyLCB1bml0OiAiY20iIH0sCiAgICAgICAgeyBrZXk6ICJmIiwgbGFiZWw6ICJEaWFnb25hbGUgZiIsIG1pbjogNCwgbWF4OiAxOCwgc3RlcDogMSwgdmFsdWU6IDgsIHVuaXQ6ICJjbSIgfQogICAgICBdLAogICAgICBmb3JtdWxhTGFiZWxzOiBbIlUgPSA0IMK3IGEiLCAiQSA9IGUgwrcgZiA6IDIiXSwKICAgICAgY2FsY3VsYXRpb25GdW5jdGlvbjogY2FsY1Job21idXMsCiAgICAgIHJlbmRlckZ1bmN0aW9uOiBkcmF3UmhvbWJ1cywKICAgICAgdGFza0dlbmVyYXRvcnM6IFsiVW1mYW5nIiwgIkZsw6RjaGUiLCAiRm9ybWVsbiJdLAogICAgICBleHBsYW5hdGlvbjogIkJlaSBkZXIgUmF1dGUgc2luZCBhbGxlIFNlaXRlbiBnbGVpY2ggbGFuZy4gRGllIERpYWdvbmFsZW4gemVybGVnZW4gZGllIFJhdXRlIGluIHZpZXIgcmVjaHR3aW5rbGlnZSBEcmVpZWNrZS4iCiAgICB9LAogICAgewogICAgICBpZDogInRyYXBlem9pZCIsCiAgICAgIG5hbWU6ICJUcmFwZXoiLAogICAgICB0eXBlOiAiRmzDpGNoZSIsCiAgICAgIGNsYXNzTGV2ZWw6ICJLZXJuIEtsYXNzZSA1LzYiLAogICAgICBwYXJhbWV0ZXJzOiBbCiAgICAgICAgeyBrZXk6ICJhIiwgbGFiZWw6ICJwYXJhbGxlbGUgU2VpdGUgYSIsIG1pbjogNSwgbWF4OiAyNCwgc3RlcDogMSwgdmFsdWU6IDE0LCB1bml0OiAiY20iIH0sCiAgICAgICAgeyBrZXk6ICJjIiwgbGFiZWw6ICJwYXJhbGxlbGUgU2VpdGUgYyIsIG1pbjogMywgbWF4OiAyMCwgc3RlcDogMSwgdmFsdWU6IDgsIHVuaXQ6ICJjbSIgfSwKICAgICAgICB7IGtleTogImgiLCBsYWJlbDogIkjDtmhlIGgiLCBtaW46IDIsIG1heDogMTYsIHN0ZXA6IDEsIHZhbHVlOiA2LCB1bml0OiAiY20iIH0sCiAgICAgICAgeyBrZXk6ICJzIiwgbGFiZWw6ICJTY2hlbmtlbCBzIiwgbWluOiAzLCBtYXg6IDE4LCBzdGVwOiAxLCB2YWx1ZTogNywgdW5pdDogImNtIiB9CiAgICAgIF0sCiAgICAgIGZvcm11bGFMYWJlbHM6IFsiQSA9IChhICsgYykgwrcgaCA6IDIiLCAiVSA9IGEgKyBiICsgYyArIGQiXSwKICAgICAgY2FsY3VsYXRpb25GdW5jdGlvbjogY2FsY1RyYXBlem9pZCwKICAgICAgcmVuZGVyRnVuY3Rpb246IGRyYXdUcmFwZXpvaWQsCiAgICAgIHRhc2tHZW5lcmF0b3JzOiBbIlVtZmFuZyIsICJGbMOkY2hlIiwgIkZvcm1lbG4iLCAiU3RyYXRlZ2llIl0sCiAgICAgIGV4cGxhbmF0aW9uOiAiQmVpbSBUcmFwZXogd2VyZGVuIGRpZSBiZWlkZW4gcGFyYWxsZWxlbiBTZWl0ZW4gZ2VtaXR0ZWx0IHVuZCBtaXQgZGVyIEjDtmhlIG11bHRpcGxpemllcnQuIgogICAgfSwKICAgIHsKICAgICAgaWQ6ICJjb21wb3NpdGUiLAogICAgICBuYW1lOiAiWnVzYW1tZW5nZXNldHp0ZSBGbMOkY2hlIiwKICAgICAgdHlwZTogIkZsw6RjaGUiLAogICAgICBjbGFzc0xldmVsOiAiS2VybiBLbGFzc2UgNS82IiwKICAgICAgcGFyYW1ldGVyczogWwogICAgICAgIHsga2V5OiAiYSIsIGxhYmVsOiAiQXXDn2VubMOkbmdlIGEiLCBtaW46IDYsIG1heDogMjQsIHN0ZXA6IDEsIHZhbHVlOiAxNCwgdW5pdDogImNtIiB9LAogICAgICAgIHsga2V5OiAiYiIsIGxhYmVsOiAiQXXDn2VuYnJlaXRlIGIiLCBtaW46IDYsIG1heDogMTgsIHN0ZXA6IDEsIHZhbHVlOiAxMCwgdW5pdDogImNtIiB9LAogICAgICAgIHsga2V5OiAiYyIsIGxhYmVsOiAiQXVzc2Nobml0dCBjIiwgbWluOiAyLCBtYXg6IDEwLCBzdGVwOiAxLCB2YWx1ZTogNSwgdW5pdDogImNtIiB9LAogICAgICAgIHsga2V5OiAiZCIsIGxhYmVsOiAiQXVzc2Nobml0dCBkIiwgbWluOiAyLCBtYXg6IDksIHN0ZXA6IDEsIHZhbHVlOiA0LCB1bml0OiAiY20iIH0KICAgICAgXSwKICAgICAgZm9ybXVsYUxhYmVsczogWyJBID0gYSDCtyBiIC0gYyDCtyBkIiwgIlplcmxlZ2VuIG9kZXIgZXJnw6RuemVuIl0sCiAgICAgIGNhbGN1bGF0aW9uRnVuY3Rpb246IGNhbGNDb21wb3NpdGUsCiAgICAgIHJlbmRlckZ1bmN0aW9uOiBkcmF3Q29tcG9zaXRlLAogICAgICB0YXNrR2VuZXJhdG9yczogWyJGbMOkY2hlIiwgIlN0cmF0ZWdpZSIsICJLbm9iZWxhdWZnYWJlbiJdLAogICAgICBleHBsYW5hdGlvbjogIlp1c2FtbWVuZ2VzZXR6dGUgRmzDpGNoZW4gYmVyZWNobmVzdCBkdSBzaWNoZXIsIHdlbm4gZHUgc2llIGluIGVpbmZhY2hlIFJlY2h0ZWNrZSB6ZXJsZWdzdCBvZGVyIGVpbmVuIEF1c3NjaG5pdHQgYWJ6aWVoc3QuIgogICAgfSwKICAgIHsKICAgICAgaWQ6ICJjaXJjbGUiLAogICAgICBuYW1lOiAiS3JlaXMiLAogICAgICB0eXBlOiAiRmzDpGNoZSIsCiAgICAgIGNsYXNzTGV2ZWw6ICJBdXNibGljayIsCiAgICAgIHBhcmFtZXRlcnM6IFsKICAgICAgICB7IGtleTogInIiLCBsYWJlbDogIlJhZGl1cyByIiwgbWluOiAxLCBtYXg6IDEyLCBzdGVwOiAxLCB2YWx1ZTogNSwgdW5pdDogImNtIiB9CiAgICAgIF0sCiAgICAgIGZvcm11bGFMYWJlbHM6IFsiVSA9IDIgwrcgz4AgwrcgciIsICJBID0gz4AgwrcgcsKyIl0sCiAgICAgIGNhbGN1bGF0aW9uRnVuY3Rpb246IGNhbGNDaXJjbGUsCiAgICAgIHJlbmRlckZ1bmN0aW9uOiBkcmF3Q2lyY2xlLAogICAgICB0YXNrR2VuZXJhdG9yczogWyJVbWZhbmciLCAiRmzDpGNoZSIsICJGb3JtZWxuIiwgIkVpbmhlaXRlbiJdLAogICAgICBleHBsYW5hdGlvbjogIkRlciBLcmVpcyBpc3QgZWluIEF1c2JsaWNrLiBXaXIgcmVjaG5lbiBtaXQgz4Ag4omIIDMsMTQgdW5kIHIgYmVkZXV0ZXQgUmFkaXVzIHZvbSBNaXR0ZWxwdW5rdCB6dW0gUmFuZC4iCiAgICB9LAogICAgewogICAgICBpZDogImN1YmUiLAogICAgICBuYW1lOiAiV8O8cmZlbCIsCiAgICAgIHR5cGU6ICJLw7ZycGVyIiwKICAgICAgY2xhc3NMZXZlbDogIktlcm4gS2xhc3NlIDUvNiIsCiAgICAgIHBhcmFtZXRlcnM6IFsKICAgICAgICB7IGtleTogImEiLCBsYWJlbDogIkthbnRlbmzDpG5nZSBhIiwgbWluOiAxLCBtYXg6IDEyLCBzdGVwOiAxLCB2YWx1ZTogNSwgdW5pdDogImNtIiB9CiAgICAgIF0sCiAgICAgIGZvcm11bGFMYWJlbHM6IFsiViA9IGEgwrcgYSDCtyBhIiwgIk8gPSA2IMK3IGEgwrcgYSJdLAogICAgICBjYWxjdWxhdGlvbkZ1bmN0aW9uOiBjYWxjQ3ViZSwKICAgICAgcmVuZGVyRnVuY3Rpb246IGRyYXdDdWJlLAogICAgICB0YXNrR2VuZXJhdG9yczogWyJWb2x1bWVuIiwgIkZsw6RjaGUiLCAiRm9ybWVsbiIsICJFaW5oZWl0ZW4iXSwKICAgICAgZXhwbGFuYXRpb246ICJFaW4gV8O8cmZlbCBiZXN0ZWh0IGF1cyBnbGVpY2ggZ3Jvw59lbiBXw7xyZmVsLVNjaGljaHRlbi4gVm9sdW1lbiB6w6RobHQga2xlaW5lIEVpbmhlaXRzd8O8cmZlbCwgYWxzbyBjbcKzLiIKICAgIH0sCiAgICB7CiAgICAgIGlkOiAiY3Vib2lkIiwKICAgICAgbmFtZTogIlF1YWRlciIsCiAgICAgIHR5cGU6ICJLw7ZycGVyIiwKICAgICAgY2xhc3NMZXZlbDogIktlcm4gS2xhc3NlIDUvNiIsCiAgICAgIHBhcmFtZXRlcnM6IFsKICAgICAgICB7IGtleTogImwiLCBsYWJlbDogIkzDpG5nZSBsIiwgbWluOiAyLCBtYXg6IDE4LCBzdGVwOiAxLCB2YWx1ZTogOSwgdW5pdDogImNtIiB9LAogICAgICAgIHsga2V5OiAiYiIsIGxhYmVsOiAiQnJlaXRlIGIiLCBtaW46IDIsIG1heDogMTQsIHN0ZXA6IDEsIHZhbHVlOiA1LCB1bml0OiAiY20iIH0sCiAgICAgICAgeyBrZXk6ICJoIiwgbGFiZWw6ICJIw7ZoZSBoIiwgbWluOiAyLCBtYXg6IDEyLCBzdGVwOiAxLCB2YWx1ZTogNCwgdW5pdDogImNtIiB9CiAgICAgIF0sCiAgICAgIGZvcm11bGFMYWJlbHM6IFsiViA9IGwgwrcgYiDCtyBoIiwgIk8gPSAyIMK3IChswrdiICsgbMK3aCArIGLCt2gpIl0sCiAgICAgIGNhbGN1bGF0aW9uRnVuY3Rpb246IGNhbGNDdWJvaWQsCiAgICAgIHJlbmRlckZ1bmN0aW9uOiBkcmF3Q3Vib2lkLAogICAgICB0YXNrR2VuZXJhdG9yczogWyJWb2x1bWVuIiwgIkZsw6RjaGUiLCAiRm9ybWVsbiIsICJFaW5oZWl0ZW4iLCAiU3RyYXRlZ2llIl0sCiAgICAgIGV4cGxhbmF0aW9uOiAiQmVpbSBRdWFkZXIgYmVyZWNobmVzdCBkdSBkaWUgR3J1bmRmbMOkY2hlIGwgwrcgYiB1bmQgc3RhcGVsc3Qgc2llIGgtbWFsIGluIGRpZSBIw7ZoZS4iCiAgICB9LAogICAgewogICAgICBpZDogInByaXNtIiwKICAgICAgbmFtZTogIkRyZWllY2tzcHJpc21hIiwKICAgICAgdHlwZTogIkvDtnJwZXIiLAogICAgICBjbGFzc0xldmVsOiAiS2VybiBLbGFzc2UgNS82IiwKICAgICAgcGFyYW1ldGVyczogWwogICAgICAgIHsga2V5OiAiZyIsIGxhYmVsOiAiR3J1bmRzZWl0ZSBnIiwgbWluOiAzLCBtYXg6IDE2LCBzdGVwOiAxLCB2YWx1ZTogOCwgdW5pdDogImNtIiB9LAogICAgICAgIHsga2V5OiAiaCIsIGxhYmVsOiAiRHJlaWVja3Now7ZoZSBoIiwgbWluOiAyLCBtYXg6IDEyLCBzdGVwOiAxLCB2YWx1ZTogNiwgdW5pdDogImNtIiB9LAogICAgICAgIHsga2V5OiAiayIsIGxhYmVsOiAiS8O2cnBlcmjDtmhlIGsiLCBtaW46IDIsIG1heDogMTgsIHN0ZXA6IDEsIHZhbHVlOiA5LCB1bml0OiAiY20iIH0KICAgICAgXSwKICAgICAgZm9ybXVsYUxhYmVsczogWyJHID0gZyDCtyBoIDogMiIsICJWID0gRyDCtyBrIl0sCiAgICAgIGNhbGN1bGF0aW9uRnVuY3Rpb246IGNhbGNQcmlzbSwKICAgICAgcmVuZGVyRnVuY3Rpb246IGRyYXdQcmlzbSwKICAgICAgdGFza0dlbmVyYXRvcnM6IFsiVm9sdW1lbiIsICJGbMOkY2hlIiwgIkZvcm1lbG4iLCAiU3RyYXRlZ2llIiwgIktub2JlbGF1ZmdhYmVuIl0sCiAgICAgIGV4cGxhbmF0aW9uOiAiRWluIFByaXNtYSBoYXQgdm9ybmUgdW5kIGhpbnRlbiBkaWVzZWxiZSBHcnVuZGZsw6RjaGUuIERpZXNlIEdydW5kZmzDpGNoZSB3aXJkIGluIGRpZSBUaWVmZSBnZXN0YXBlbHQuIgogICAgfSwKICAgIHsKICAgICAgaWQ6ICJjeWxpbmRlciIsCiAgICAgIG5hbWU6ICJaeWxpbmRlciIsCiAgICAgIHR5cGU6ICJLw7ZycGVyIiwKICAgICAgY2xhc3NMZXZlbDogIkF1c2JsaWNrIiwKICAgICAgcGFyYW1ldGVyczogWwogICAgICAgIHsga2V5OiAiciIsIGxhYmVsOiAiUmFkaXVzIHIiLCBtaW46IDEsIG1heDogMTAsIHN0ZXA6IDEsIHZhbHVlOiA0LCB1bml0OiAiY20iIH0sCiAgICAgICAgeyBrZXk6ICJoIiwgbGFiZWw6ICJLw7ZycGVyaMO2aGUgaCIsIG1pbjogMiwgbWF4OiAxNiwgc3RlcDogMSwgdmFsdWU6IDgsIHVuaXQ6ICJjbSIgfQogICAgICBdLAogICAgICBmb3JtdWxhTGFiZWxzOiBbIkcgPSDPgCDCtyBywrIiLCAiViA9IM+AIMK3IHLCsiDCtyBoIl0sCiAgICAgIGNhbGN1bGF0aW9uRnVuY3Rpb246IGNhbGNDeWxpbmRlciwKICAgICAgcmVuZGVyRnVuY3Rpb246IGRyYXdDeWxpbmRlciwKICAgICAgdGFza0dlbmVyYXRvcnM6IFsiVm9sdW1lbiIsICJGb3JtZWxuIiwgIkVpbmhlaXRlbiJdLAogICAgICBleHBsYW5hdGlvbjogIkRlciBaeWxpbmRlciBpc3QgZWluIEF1c2JsaWNrLiBEaWUgS3JlaXMtR3J1bmRmbMOkY2hlIHdpcmQgaW4gZGllIEjDtmhlIGdlc3RhcGVsdC4gV2lyIG51dHplbiDPgCDiiYggMywxNC4iCiAgICB9LAogICAgewogICAgICBpZDogInB5cmFtaWQiLAogICAgICBuYW1lOiAiUHlyYW1pZGUiLAogICAgICB0eXBlOiAiS8O2cnBlciIsCiAgICAgIGNsYXNzTGV2ZWw6ICJBdXNibGljayIsCiAgICAgIHBhcmFtZXRlcnM6IFsKICAgICAgICB7IGtleTogImEiLCBsYWJlbDogIkdydW5ka2FudGUgYSIsIG1pbjogMiwgbWF4OiAxMiwgc3RlcDogMSwgdmFsdWU6IDYsIHVuaXQ6ICJjbSIgfSwKICAgICAgICB7IGtleTogImgiLCBsYWJlbDogIkvDtnJwZXJow7ZoZSBoIiwgbWluOiAyLCBtYXg6IDE0LCBzdGVwOiAxLCB2YWx1ZTogOCwgdW5pdDogImNtIiB9CiAgICAgIF0sCiAgICAgIGZvcm11bGFMYWJlbHM6IFsiRyA9IGEgwrcgYSIsICJWID0gRyDCtyBoIDogMyJdLAogICAgICBjYWxjdWxhdGlvbkZ1bmN0aW9uOiBjYWxjUHlyYW1pZCwKICAgICAgcmVuZGVyRnVuY3Rpb246IGRyYXdQeXJhbWlkLAogICAgICB0YXNrR2VuZXJhdG9yczogWyJWb2x1bWVuIiwgIkZvcm1lbG4iLCAiRWluaGVpdGVuIl0sCiAgICAgIGV4cGxhbmF0aW9uOiAiRGllIFB5cmFtaWRlIGlzdCBlaW4gQXVzYmxpY2suIEdlZ2Vuw7xiZXIgZWluZW0gUHJpc21hIG1pdCBnbGVpY2hlciBHcnVuZGZsw6RjaGUgdW5kIEjDtmhlIHdpcmQgZHVyY2ggMyBnZXRlaWx0LiIKICAgIH0sCiAgICB7CiAgICAgIGlkOiAiY29uZSIsCiAgICAgIG5hbWU6ICJLZWdlbCIsCiAgICAgIHR5cGU6ICJLw7ZycGVyIiwKICAgICAgY2xhc3NMZXZlbDogIkF1c2JsaWNrIiwKICAgICAgcGFyYW1ldGVyczogWwogICAgICAgIHsga2V5OiAiciIsIGxhYmVsOiAiUmFkaXVzIHIiLCBtaW46IDEsIG1heDogMTAsIHN0ZXA6IDEsIHZhbHVlOiA0LCB1bml0OiAiY20iIH0sCiAgICAgICAgeyBrZXk6ICJoIiwgbGFiZWw6ICJLw7ZycGVyaMO2aGUgaCIsIG1pbjogMiwgbWF4OiAxNSwgc3RlcDogMSwgdmFsdWU6IDksIHVuaXQ6ICJjbSIgfQogICAgICBdLAogICAgICBmb3JtdWxhTGFiZWxzOiBbIkcgPSDPgCDCtyBywrIiLCAiViA9IM+AIMK3IHLCsiDCtyBoIDogMyJdLAogICAgICBjYWxjdWxhdGlvbkZ1bmN0aW9uOiBjYWxjQ29uZSwKICAgICAgcmVuZGVyRnVuY3Rpb246IGRyYXdDb25lLAogICAgICB0YXNrR2VuZXJhdG9yczogWyJWb2x1bWVuIiwgIkZvcm1lbG4iLCAiRWluaGVpdGVuIl0sCiAgICAgIGV4cGxhbmF0aW9uOiAiRGVyIEtlZ2VsIGlzdCBlaW4gQXVzYmxpY2suIEVyIHBhc3N0IHp1IGVpbmVtIFp5bGluZGVyIG1pdCBnbGVpY2hlciBHcnVuZGZsw6RjaGUgdW5kIEjDtmhlLCBhYmVyIGRhcyBWb2x1bWVuIHdpcmQgZHVyY2ggMyBnZXRlaWx0LiIKICAgIH0sCiAgICB7CiAgICAgIGlkOiAic3BoZXJlIiwKICAgICAgbmFtZTogIkt1Z2VsIiwKICAgICAgdHlwZTogIkvDtnJwZXIiLAogICAgICBjbGFzc0xldmVsOiAiQXVzYmxpY2siLAogICAgICBwYXJhbWV0ZXJzOiBbCiAgICAgICAgeyBrZXk6ICJyIiwgbGFiZWw6ICJSYWRpdXMgciIsIG1pbjogMSwgbWF4OiA5LCBzdGVwOiAxLCB2YWx1ZTogNCwgdW5pdDogImNtIiB9CiAgICAgIF0sCiAgICAgIGZvcm11bGFMYWJlbHM6IFsiViA9IDQgOiAzIMK3IM+AIMK3IHLCsyIsICJPID0gNCDCtyDPgCDCtyBywrIiXSwKICAgICAgY2FsY3VsYXRpb25GdW5jdGlvbjogY2FsY1NwaGVyZSwKICAgICAgcmVuZGVyRnVuY3Rpb246IGRyYXdTcGhlcmUsCiAgICAgIHRhc2tHZW5lcmF0b3JzOiBbIlZvbHVtZW4iLCAiRm9ybWVsbiIsICJFaW5oZWl0ZW4iXSwKICAgICAgZXhwbGFuYXRpb246ICJEaWUgS3VnZWwgaXN0IGVpbiBBdXNibGljay4gV2ljaHRpZyBpc3QgaGllciB2b3IgYWxsZW06IERlciBSYWRpdXMga29tbXQgbWVocmZhY2ggdm9yLCBkZXNoYWxiIHfDpGNoc3QgZGFzIFZvbHVtZW4gc2VociBzdGFyay4iCiAgICB9CiAgXTsKCiAgdmFyIHN0YXRlID0gewogICAgY3VycmVudFNjcmVlbjogIm1lbnUiLAogICAgY3VycmVudE1vZGU6ICJsYWIiLAogICAgc2VsZWN0ZWRTaGFwZTogInJlY3RhbmdsZSIsCiAgICBjdXJyZW50VGFzazogbnVsbCwKICAgIHNjb3JlOiAwLAogICAgY2F0ZWdvcnlTY29yZXM6IHt9LAogICAgc3RyZWFrOiAwLAogICAgYXR0ZW1wdHM6IDAsCiAgICBzaGFwZVBhcmFtZXRlcnM6IHt9LAogICAgZGlmZmljdWx0eTogMSwKICAgIGNvbXBsZXRlZFRhc2tzOiAwLAogICAgbW9kZVRhc2tOdW1iZXI6IDAsCiAgICBjb3JyZWN0SW5Nb2RlOiAwLAogICAgYW5zd2VyTG9ja2VkOiBmYWxzZSwKICAgIGNob3NlbkFuc3dlcjogLTEsCiAgICBkcmFnZ2luZ0NhbnZhczogZmFsc2UKICB9OwoKICB2YXIgZWxlbWVudHMgPSB7fTsKICB2YXIgdGFza0ZhY3RvcmllcyA9IFtdOwoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgaW5pdCk7CgogIGZ1bmN0aW9uIGluaXQoKSB7CiAgICBjb2xsZWN0RWxlbWVudHMoKTsKICAgIHByZXBhcmVTdGF0ZSgpOwogICAgcHJlcGFyZVRhc2tzKCk7CiAgICBiaW5kRXZlbnRzKCk7CiAgICByZW5kZXJBcHAoKTsKICB9CgogIGZ1bmN0aW9uIGNvbGxlY3RFbGVtZW50cygpIHsKICAgIGVsZW1lbnRzLnJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ2FtZVJvb3QiKTsKICAgIGVsZW1lbnRzLm1lbnVTY3JlZW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWVudVNjcmVlbiIpOwogICAgZWxlbWVudHMucGxheVNjcmVlbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbGF5U2NyZWVuIik7CiAgICBlbGVtZW50cy5lbmRTY3JlZW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZW5kU2NyZWVuIik7CiAgICBlbGVtZW50cy5tb2RlTGFiZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9kZUxhYmVsIik7CiAgICBlbGVtZW50cy5zY3JlZW5UaXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3JlZW5UaXRsZSIpOwogICAgZWxlbWVudHMudG90YWxTY29yZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b3RhbFNjb3JlIik7CiAgICBlbGVtZW50cy5zdHJlYWtTY29yZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdHJlYWtTY29yZSIpOwogICAgZWxlbWVudHMuZGlmZmljdWx0eVRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGlmZmljdWx0eVRleHQiKTsKICAgIGVsZW1lbnRzLnByb2dyZXNzQmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb2dyZXNzQmFyIik7CiAgICBlbGVtZW50cy5wcm9ncmVzc1RleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJvZ3Jlc3NUZXh0Iik7CiAgICBlbGVtZW50cy5jYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hhcGVDYW52YXMiKTsKICAgIGVsZW1lbnRzLmNhbnZhc0Rlc2NyaXB0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhc0Rlc2NyaXB0aW9uIik7CiAgICBlbGVtZW50cy5kaW1lbnNpb25Db250cm9scyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaW1lbnNpb25Db250cm9scyIpOwogICAgZWxlbWVudHMuc2hhcGVLaW5kID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNoYXBlS2luZCIpOwogICAgZWxlbWVudHMuc2hhcGVQaWNrZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hhcGVQaWNrZXIiKTsKICAgIGVsZW1lbnRzLmZvcm11bGFDb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvcm11bGFDb250ZW50Iik7CiAgICBlbGVtZW50cy50YXNrU2tpbGwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFza1NraWxsIik7CiAgICBlbGVtZW50cy50YXNrVGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFza1RpdGxlIik7CiAgICBlbGVtZW50cy50YXNrUmV3YXJkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhc2tSZXdhcmQiKTsKICAgIGVsZW1lbnRzLnRhc2tQcm9tcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFza1Byb21wdCIpOwogICAgZWxlbWVudHMuYW5zd2VyQXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbnN3ZXJBcmVhIik7CiAgICBlbGVtZW50cy5mZWVkYmFja0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmZWVkYmFja0JveCIpOwogICAgZWxlbWVudHMubmV4dEJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuZXh0QnV0dG9uIik7CiAgICBlbGVtZW50cy5oaW50QnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhpbnRCdXR0b24iKTsKICAgIGVsZW1lbnRzLnNraWxsU2NvcmVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNraWxsU2NvcmVzIik7CiAgICBlbGVtZW50cy5sZWFybmluZ1RpcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsZWFybmluZ1RpcCIpOwogICAgZWxlbWVudHMudG9hc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9hc3QiKTsKICAgIGVsZW1lbnRzLmVuZFN1bW1hcnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZW5kU3VtbWFyeSIpOwogICAgZWxlbWVudHMuZW5kU2NvcmVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVuZFNjb3JlcyIpOwogICAgZWxlbWVudHMuZW5kQWR2aWNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVuZEFkdmljZSIpOwogIH0KCiAgZnVuY3Rpb24gcHJlcGFyZVN0YXRlKCkgewogICAgY2F0ZWdvcmllcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXRlZ29yeSkgewogICAgICBzdGF0ZS5jYXRlZ29yeVNjb3Jlc1tjYXRlZ29yeV0gPSAwOwogICAgfSk7CiAgICBzaGFwZXMuZm9yRWFjaChmdW5jdGlvbiAoc2hhcGUpIHsKICAgICAgdmFyIHZhbHVlcyA9IHt9OwogICAgICBzaGFwZS5wYXJhbWV0ZXJzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICB2YWx1ZXNbaXRlbS5rZXldID0gaXRlbS52YWx1ZTsKICAgICAgfSk7CiAgICAgIHN0YXRlLnNoYXBlUGFyYW1ldGVyc1tzaGFwZS5pZF0gPSB2YWx1ZXM7CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIGJpbmRFdmVudHMoKSB7CiAgICBlbGVtZW50cy5yb290LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgaGFuZGxlQ2xpY2spOwogICAgZWxlbWVudHMucm9vdC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIGhhbmRsZUlucHV0KTsKICAgIGVsZW1lbnRzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsIGhhbmRsZVBvaW50ZXJEb3duKTsKICAgIGVsZW1lbnRzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsIGhhbmRsZVBvaW50ZXJNb3ZlKTsKICAgIGVsZW1lbnRzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLCBoYW5kbGVQb2ludGVyVXApOwogICAgZWxlbWVudHMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJjYW5jZWwiLCBoYW5kbGVQb2ludGVyVXApOwogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIGhhbmRsZUtleURvd24pOwogIH0KCiAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpIHsKICAgIHZhciBidXR0b24gPSBmaW5kQnV0dG9uKGV2ZW50LnRhcmdldCk7CiAgICBpZiAoIWJ1dHRvbikgewogICAgICByZXR1cm47CiAgICB9CiAgICB2YXIgYWN0aW9uID0gYnV0dG9uLmdldEF0dHJpYnV0ZSgiZGF0YS1hY3Rpb24iKTsKICAgIGlmICghYWN0aW9uKSB7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChhY3Rpb24gPT09ICJzdGFydC1tb2RlIikgewogICAgICBzdGFydE1vZGUoYnV0dG9uLmdldEF0dHJpYnV0ZSgiZGF0YS1tb2RlIikgfHwgImxhYiIpOwogICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICJzd2l0Y2gtbW9kZSIpIHsKICAgICAgc3RhcnRNb2RlKGJ1dHRvbi5nZXRBdHRyaWJ1dGUoImRhdGEtbW9kZSIpIHx8ICJsYWIiKTsKICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSAic2hvdy1tZW51IikgewogICAgICBzdGF0ZS5jdXJyZW50U2NyZWVuID0gIm1lbnUiOwogICAgICByZW5kZXJBcHAoKTsKICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSAiZnVsbHNjcmVlbiIpIHsKICAgICAgdG9nZ2xlRnVsbFNjcmVlbigpOwogICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICJyZXNldC1nYW1lIikgewogICAgICByZXNldEdhbWUoKTsKICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSAic2VsZWN0LXNoYXBlIikgewogICAgICBzZWxlY3RTaGFwZShidXR0b24uZ2V0QXR0cmlidXRlKCJkYXRhLXNoYXBlIikgfHwgInJlY3RhbmdsZSIpOwogICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICJzdGVwLWRpbWVuc2lvbiIpIHsKICAgICAgc3RlcERpbWVuc2lvbihidXR0b24uZ2V0QXR0cmlidXRlKCJkYXRhLWRpbWVuc2lvbiIpLCBOdW1iZXIoYnV0dG9uLmdldEF0dHJpYnV0ZSgiZGF0YS1zdGVwIikpKTsKICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSAiYW5zd2VyLWNob2ljZSIpIHsKICAgICAgY2hlY2tBbnN3ZXIoTnVtYmVyKGJ1dHRvbi5nZXRBdHRyaWJ1dGUoImRhdGEtaW5kZXgiKSkpOwogICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICJzdWJtaXQtbnVtYmVyIikgewogICAgICBjaGVja051bWJlckFuc3dlcigpOwogICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICJzaG93LWhpbnQiKSB7CiAgICAgIHNob3dIaW50KCk7CiAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PT0gIm5leHQtdGFzayIpIHsKICAgICAgbmV4dFRhc2soKTsKICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSAic2V0LWRpZmZpY3VsdHkiKSB7CiAgICAgIHNldERpZmZpY3VsdHkoTnVtYmVyKGJ1dHRvbi5nZXRBdHRyaWJ1dGUoImRhdGEtZGlmZmljdWx0eSIpKSk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBoYW5kbGVJbnB1dChldmVudCkgewogICAgdmFyIHRhcmdldCA9IGV2ZW50LnRhcmdldDsKICAgIGlmICghdGFyZ2V0IHx8IHR5cGVvZiB0YXJnZXQuZ2V0QXR0cmlidXRlICE9PSAiZnVuY3Rpb24iKSB7CiAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciBrZXkgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKCJkYXRhLWRpbWVuc2lvbiIpOwogICAgaWYgKCFrZXkpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgc2V0RGltZW5zaW9uKGtleSwgTnVtYmVyKHRhcmdldC52YWx1ZSkpOwogIH0KCiAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkgewogICAgaWYgKHN0YXRlLmN1cnJlbnRTY3JlZW4gIT09ICJwbGF5IikgewogICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoZXZlbnQua2V5ID49ICIxIiAmJiBldmVudC5rZXkgPD0gIjQiICYmIHN0YXRlLmN1cnJlbnRUYXNrICYmIHN0YXRlLmN1cnJlbnRUYXNrLmtpbmQgPT09ICJjaG9pY2UiICYmICFzdGF0ZS5hbnN3ZXJMb2NrZWQpIHsKICAgICAgY2hlY2tBbnN3ZXIoTnVtYmVyKGV2ZW50LmtleSkgLSAxKTsKICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKGV2ZW50LmtleSA9PT0gIkVudGVyIiAmJiBzdGF0ZS5jdXJyZW50VGFzayAmJiBzdGF0ZS5jdXJyZW50VGFzay5raW5kID09PSAibnVtYmVyIiAmJiAhc3RhdGUuYW5zd2VyTG9ja2VkKSB7CiAgICAgIGNoZWNrTnVtYmVyQW5zd2VyKCk7CiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChldmVudC5rZXkgPT09ICJFbnRlciIgJiYgc3RhdGUuY3VycmVudFRhc2sgJiYgc3RhdGUuYW5zd2VyTG9ja2VkKSB7CiAgICAgIG5leHRUYXNrKCk7CiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBoYW5kbGVQb2ludGVyRG93bihldmVudCkgewogICAgaWYgKHN0YXRlLmN1cnJlbnRTY3JlZW4gIT09ICJwbGF5IikgewogICAgICByZXR1cm47CiAgICB9CiAgICBzdGF0ZS5kcmFnZ2luZ0NhbnZhcyA9IHRydWU7CiAgICBpZiAoZWxlbWVudHMuY2FudmFzLnNldFBvaW50ZXJDYXB0dXJlKSB7CiAgICAgIGVsZW1lbnRzLmNhbnZhcy5zZXRQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpOwogICAgfQogICAgYXBwbHlDYW52YXNNZWFzdXJlKGV2ZW50KTsKICB9CgogIGZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50KSB7CiAgICBpZiAoIXN0YXRlLmRyYWdnaW5nQ2FudmFzIHx8IHN0YXRlLmN1cnJlbnRTY3JlZW4gIT09ICJwbGF5IikgewogICAgICByZXR1cm47CiAgICB9CiAgICBhcHBseUNhbnZhc01lYXN1cmUoZXZlbnQpOwogIH0KCiAgZnVuY3Rpb24gaGFuZGxlUG9pbnRlclVwKGV2ZW50KSB7CiAgICBzdGF0ZS5kcmFnZ2luZ0NhbnZhcyA9IGZhbHNlOwogICAgaWYgKGVsZW1lbnRzLmNhbnZhcy5yZWxlYXNlUG9pbnRlckNhcHR1cmUpIHsKICAgICAgdHJ5IHsKICAgICAgICBlbGVtZW50cy5jYW52YXMucmVsZWFzZVBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCk7CiAgICAgIH0gY2F0Y2ggKGlnbm9yZSkgewogICAgICAgIHN0YXRlLmRyYWdnaW5nQ2FudmFzID0gZmFsc2U7CiAgICAgIH0KICAgIH0KICB9CgogIGZ1bmN0aW9uIGZpbmRCdXR0b24obm9kZSkgewogICAgaWYgKCFub2RlIHx8IHR5cGVvZiBub2RlLmNsb3Nlc3QgIT09ICJmdW5jdGlvbiIpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgICB2YXIgYnV0dG9uID0gbm9kZS5jbG9zZXN0KCJidXR0b24iKTsKICAgIGlmIChidXR0b24gJiYgZWxlbWVudHMucm9vdC5jb250YWlucyhidXR0b24pKSB7CiAgICAgIHJldHVybiBidXR0b247CiAgICB9CiAgICByZXR1cm4gbnVsbDsKICB9CgogIGZ1bmN0aW9uIHN0YXJ0TW9kZShtb2RlKSB7CiAgICBpZiAoIW1vZGVTZXR0aW5nc1ttb2RlXSkgewogICAgICBtb2RlID0gImxhYiI7CiAgICB9CiAgICBzdGF0ZS5jdXJyZW50U2NyZWVuID0gInBsYXkiOwogICAgc3RhdGUuY3VycmVudE1vZGUgPSBtb2RlOwogICAgc3RhdGUubW9kZVRhc2tOdW1iZXIgPSAwOwogICAgc3RhdGUuY29ycmVjdEluTW9kZSA9IDA7CiAgICBzdGF0ZS5hbnN3ZXJMb2NrZWQgPSBmYWxzZTsKICAgIHN0YXRlLmNob3NlbkFuc3dlciA9IC0xOwogICAgc3RhdGUuYXR0ZW1wdHMgPSAwOwogICAgc2VsZWN0RGVmYXVsdFNoYXBlRm9yTW9kZShtb2RlKTsKICAgIGlmIChtb2RlID09PSAiZXhwbG9yZSIgfHwgbW9kZSA9PT0gInNjb3JlIikgewogICAgICBzdGF0ZS5jdXJyZW50VGFzayA9IG51bGw7CiAgICB9IGVsc2UgewogICAgICBjcmVhdGVOZXh0VGFzaygpOwogICAgfQogICAgcmVuZGVyQXBwKCk7CiAgICBzaG93VG9hc3QobW9kZVNldHRpbmdzW21vZGVdLnRpdGxlICsgIiBnZcO2ZmZuZXQuIik7CiAgfQoKICBmdW5jdGlvbiByZXNldEdhbWUoKSB7CiAgICBzdGF0ZS5jdXJyZW50U2NyZWVuID0gIm1lbnUiOwogICAgc3RhdGUuY3VycmVudE1vZGUgPSAibGFiIjsKICAgIHN0YXRlLnNlbGVjdGVkU2hhcGUgPSAicmVjdGFuZ2xlIjsKICAgIHN0YXRlLmN1cnJlbnRUYXNrID0gbnVsbDsKICAgIHN0YXRlLnNjb3JlID0gMDsKICAgIGNhdGVnb3JpZXMuZm9yRWFjaChmdW5jdGlvbiAoY2F0ZWdvcnkpIHsKICAgICAgc3RhdGUuY2F0ZWdvcnlTY29yZXNbY2F0ZWdvcnldID0gMDsKICAgIH0pOwogICAgc3RhdGUuc3RyZWFrID0gMDsKICAgIHN0YXRlLmF0dGVtcHRzID0gMDsKICAgIHN0YXRlLmRpZmZpY3VsdHkgPSAxOwogICAgc3RhdGUuY29tcGxldGVkVGFza3MgPSAwOwogICAgc3RhdGUubW9kZVRhc2tOdW1iZXIgPSAwOwogICAgc3RhdGUuY29ycmVjdEluTW9kZSA9IDA7CiAgICBzdGF0ZS5hbnN3ZXJMb2NrZWQgPSBmYWxzZTsKICAgIHN0YXRlLmNob3NlbkFuc3dlciA9IC0xOwogICAgc3RhdGUuc2hhcGVQYXJhbWV0ZXJzID0ge307CiAgICBzaGFwZXMuZm9yRWFjaChmdW5jdGlvbiAoc2hhcGUpIHsKICAgICAgdmFyIHZhbHVlcyA9IHt9OwogICAgICBzaGFwZS5wYXJhbWV0ZXJzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICB2YWx1ZXNbaXRlbS5rZXldID0gaXRlbS52YWx1ZTsKICAgICAgfSk7CiAgICAgIHN0YXRlLnNoYXBlUGFyYW1ldGVyc1tzaGFwZS5pZF0gPSB2YWx1ZXM7CiAgICB9KTsKICAgIHJlbmRlckFwcCgpOwogICAgc2hvd1RvYXN0KCJOZXVzdGFydCBhdXNnZWbDvGhydC4gQWxsZXMgd3VyZGUgaW50ZXJuIHp1csO8Y2tnZXNldHp0LiIpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyQXBwKCkgewogICAgZWxlbWVudHMubWVudVNjcmVlbi5oaWRkZW4gPSBzdGF0ZS5jdXJyZW50U2NyZWVuICE9PSAibWVudSI7CiAgICBlbGVtZW50cy5wbGF5U2NyZWVuLmhpZGRlbiA9IHN0YXRlLmN1cnJlbnRTY3JlZW4gIT09ICJwbGF5IjsKICAgIGVsZW1lbnRzLmVuZFNjcmVlbi5oaWRkZW4gPSBzdGF0ZS5jdXJyZW50U2NyZWVuICE9PSAiZW5kIjsKICAgIGlmIChzdGF0ZS5jdXJyZW50U2NyZWVuID09PSAicGxheSIpIHsKICAgICAgcmVuZGVyTW9kZVRhYnMoKTsKICAgICAgcmVuZGVyRGFzaGJvYXJkKCk7CiAgICAgIHJlbmRlclNoYXBlUGlja2VyKCk7CiAgICAgIGlmIChzdGF0ZS5jdXJyZW50TW9kZSA9PT0gImV4cGxvcmUiKSB7CiAgICAgICAgcmVuZGVyRXhwbG9yZXIoKTsKICAgICAgfSBlbHNlIGlmIChzdGF0ZS5jdXJyZW50TW9kZSA9PT0gImxhYiIpIHsKICAgICAgICByZW5kZXJGb3JtdWxhTGFiKCk7CiAgICAgIH0gZWxzZSBpZiAoc3RhdGUuY3VycmVudE1vZGUgPT09ICJzY29yZSIpIHsKICAgICAgICByZW5kZXJTY29yZU1vZGUoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZW5kZXJUcmFpbmluZygpOwogICAgICB9CiAgICAgIHJlbmRlclNjb3JlKCk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiByZW5kZXJNZW51KCkgewogICAgc3RhdGUuY3VycmVudFNjcmVlbiA9ICJtZW51IjsKICAgIHJlbmRlckFwcCgpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyRXhwbG9yZXIoKSB7CiAgICB2YXIgc2V0dGluZyA9IG1vZGVTZXR0aW5nc1tzdGF0ZS5jdXJyZW50TW9kZV07CiAgICBlbGVtZW50cy5tb2RlTGFiZWwudGV4dENvbnRlbnQgPSBzZXR0aW5nLmxhYmVsOwogICAgZWxlbWVudHMuc2NyZWVuVGl0bGUudGV4dENvbnRlbnQgPSBzZXR0aW5nLnRpdGxlOwogICAgcmVuZGVyTGFiUGFydHMoKTsKICAgIHJlbmRlckV4cGxvcmVUYXNrKCk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJGb3JtdWxhTGFiKCkgewogICAgdmFyIHNldHRpbmcgPSBtb2RlU2V0dGluZ3Nbc3RhdGUuY3VycmVudE1vZGVdOwogICAgZWxlbWVudHMubW9kZUxhYmVsLnRleHRDb250ZW50ID0gc2V0dGluZy5sYWJlbDsKICAgIGVsZW1lbnRzLnNjcmVlblRpdGxlLnRleHRDb250ZW50ID0gc2V0dGluZy50aXRsZTsKICAgIHJlbmRlckxhYlBhcnRzKCk7CiAgICByZW5kZXJUYXNrKCk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJUcmFpbmluZygpIHsKICAgIHZhciBzZXR0aW5nID0gbW9kZVNldHRpbmdzW3N0YXRlLmN1cnJlbnRNb2RlXTsKICAgIGVsZW1lbnRzLm1vZGVMYWJlbC50ZXh0Q29udGVudCA9IHNldHRpbmcubGFiZWw7CiAgICBlbGVtZW50cy5zY3JlZW5UaXRsZS50ZXh0Q29udGVudCA9IHNldHRpbmcudGl0bGU7CiAgICByZW5kZXJMYWJQYXJ0cygpOwogICAgcmVuZGVyVGFzaygpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyU2NvcmVNb2RlKCkgewogICAgdmFyIHNldHRpbmcgPSBtb2RlU2V0dGluZ3Nbc3RhdGUuY3VycmVudE1vZGVdOwogICAgZWxlbWVudHMubW9kZUxhYmVsLnRleHRDb250ZW50ID0gc2V0dGluZy5sYWJlbDsKICAgIGVsZW1lbnRzLnNjcmVlblRpdGxlLnRleHRDb250ZW50ID0gc2V0dGluZy50aXRsZTsKICAgIHJlbmRlckxhYlBhcnRzKCk7CiAgICByZW5kZXJTY29yZVRhc2soKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlck1vZGVUYWJzKCkgewogICAgdmFyIGJ1dHRvbnMgPSBlbGVtZW50cy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5tb2RlLXRhYnMgYnV0dG9uIik7CiAgICBidXR0b25zLmZvckVhY2goZnVuY3Rpb24gKGJ1dHRvbikgewogICAgICB2YXIgYWN0aXZlID0gYnV0dG9uLmdldEF0dHJpYnV0ZSgiZGF0YS1tb2RlIikgPT09IHN0YXRlLmN1cnJlbnRNb2RlOwogICAgICBidXR0b24uY2xhc3NMaXN0LnRvZ2dsZSgiaXMtYWN0aXZlIiwgYWN0aXZlKTsKICAgICAgaWYgKGFjdGl2ZSkgewogICAgICAgIGJ1dHRvbi5zZXRBdHRyaWJ1dGUoImFyaWEtY3VycmVudCIsICJwYWdlIik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgYnV0dG9uLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1jdXJyZW50Iik7CiAgICAgIH0KICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyRGFzaGJvYXJkKCkgewogICAgdmFyIHNldHRpbmcgPSBtb2RlU2V0dGluZ3Nbc3RhdGUuY3VycmVudE1vZGVdOwogICAgZWxlbWVudHMudG90YWxTY29yZS50ZXh0Q29udGVudCA9IFN0cmluZyhzdGF0ZS5zY29yZSk7CiAgICBlbGVtZW50cy5zdHJlYWtTY29yZS50ZXh0Q29udGVudCA9IFN0cmluZyhzdGF0ZS5zdHJlYWspOwogICAgZWxlbWVudHMuZGlmZmljdWx0eVRleHQudGV4dENvbnRlbnQgPSAiU3R1ZmUgIiArIFN0cmluZyhzdGF0ZS5kaWZmaWN1bHR5KTsKICAgIGlmIChzZXR0aW5nLmdvYWwgPiAwKSB7CiAgICAgIHZhciBwZXJjZW50ID0gTWF0aC5taW4oMTAwLCBNYXRoLnJvdW5kKHN0YXRlLm1vZGVUYXNrTnVtYmVyIC8gc2V0dGluZy5nb2FsICogMTAwKSk7CiAgICAgIGVsZW1lbnRzLnByb2dyZXNzQmFyLnN0eWxlLndpZHRoID0gU3RyaW5nKHBlcmNlbnQpICsgIiUiOwogICAgICBlbGVtZW50cy5wcm9ncmVzc1RleHQudGV4dENvbnRlbnQgPSAiQXVmZ2FiZSAiICsgU3RyaW5nKE1hdGgubWluKHNldHRpbmcuZ29hbCwgc3RhdGUubW9kZVRhc2tOdW1iZXIpKSArICIgdm9uICIgKyBTdHJpbmcoc2V0dGluZy5nb2FsKSArICIgwrcgcmljaHRpZzogIiArIFN0cmluZyhzdGF0ZS5jb3JyZWN0SW5Nb2RlKTsKICAgIH0gZWxzZSB7CiAgICAgIGVsZW1lbnRzLnByb2dyZXNzQmFyLnN0eWxlLndpZHRoID0gIjAlIjsKICAgICAgZWxlbWVudHMucHJvZ3Jlc3NUZXh0LnRleHRDb250ZW50ID0gc3RhdGUuY3VycmVudE1vZGUgPT09ICJzY29yZSIgPyAiU2l0enVuZ3NhdXN3ZXJ0dW5nIiA6ICJGcmVpZXMgQXJiZWl0ZW4gb2huZSBTcGVpY2hlcm4iOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcmVuZGVyTGFiUGFydHMoKSB7CiAgICB2YXIgc2hhcGUgPSBnZXRTaGFwZShzdGF0ZS5zZWxlY3RlZFNoYXBlKTsKICAgIHZhciB2YWx1ZXMgPSBnZXRWYWx1ZXMoc2hhcGUuaWQpOwogICAgZWxlbWVudHMuc2hhcGVLaW5kLnRleHRDb250ZW50ID0gc2hhcGUudHlwZSArICIgwrcgIiArIHNoYXBlLmNsYXNzTGV2ZWw7CiAgICBlbGVtZW50cy5jYW52YXNEZXNjcmlwdGlvbi50ZXh0Q29udGVudCA9IHNoYXBlLmV4cGxhbmF0aW9uICsgIiBQYXNzZSBkaWUgTWHDn2UgbWl0IFJlZ2xlcm4sIFBsdXMvTWludXMgb2RlciBkdXJjaCBaaWVoZW4gaW4gZGVyIFplaWNobnVuZyBhbi4iOwogICAgcmVuZGVyRGltZW5zaW9uQ29udHJvbHMoc2hhcGUsIHZhbHVlcyk7CiAgICByZW5kZXJGb3JtdWxhQ29udGVudChzaGFwZSwgdmFsdWVzKTsKICAgIGRyYXdTaGFwZUNhbnZhcygpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyU2hhcGVQaWNrZXIoKSB7CiAgICB2YXIgY3VycmVudCA9IHN0YXRlLnNlbGVjdGVkU2hhcGU7CiAgICBlbGVtZW50cy5zaGFwZVBpY2tlci5yZXBsYWNlQ2hpbGRyZW4oKTsKICAgIHNoYXBlcy5mb3JFYWNoKGZ1bmN0aW9uIChzaGFwZSkgewogICAgICB2YXIgYnV0dG9uID0gbWFrZU5vZGUoImJ1dHRvbiIsICJzaGFwZS1idXR0b24iLCBzaGFwZS5uYW1lKTsKICAgICAgYnV0dG9uLnR5cGUgPSAiYnV0dG9uIjsKICAgICAgYnV0dG9uLnNldEF0dHJpYnV0ZSgiZGF0YS1hY3Rpb24iLCAic2VsZWN0LXNoYXBlIik7CiAgICAgIGJ1dHRvbi5zZXRBdHRyaWJ1dGUoImRhdGEtc2hhcGUiLCBzaGFwZS5pZCk7CiAgICAgIGlmIChzaGFwZS5jbGFzc0xldmVsID09PSAiQXVzYmxpY2siKSB7CiAgICAgICAgYnV0dG9uLmNsYXNzTGlzdC5hZGQoImV4dGVuc2lvbiIpOwogICAgICB9CiAgICAgIGlmIChzaGFwZS5pZCA9PT0gY3VycmVudCkgewogICAgICAgIGJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJpcy1hY3RpdmUiKTsKICAgICAgICBidXR0b24uc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLCAidHJ1ZSIpOwogICAgICB9IGVsc2UgewogICAgICAgIGJ1dHRvbi5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsICJmYWxzZSIpOwogICAgICB9CiAgICAgIGVsZW1lbnRzLnNoYXBlUGlja2VyLmFwcGVuZENoaWxkKGJ1dHRvbik7CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlckRpbWVuc2lvbkNvbnRyb2xzKHNoYXBlLCB2YWx1ZXMpIHsKICAgIGVsZW1lbnRzLmRpbWVuc2lvbkNvbnRyb2xzLnJlcGxhY2VDaGlsZHJlbigpOwogICAgc2hhcGUucGFyYW1ldGVycy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgIHZhciByb3cgPSBtYWtlTm9kZSgiZGl2IiwgImRpbWVuc2lvbi1yb3ciKTsKICAgICAgdmFyIGxhYmVsID0gbWFrZU5vZGUoImxhYmVsIiwgImRpbWVuc2lvbi1sYWJlbCIpOwogICAgICB2YXIgbGFiZWxUZXh0ID0gbWFrZU5vZGUoInNwYW4iLCAiIiwgaXRlbS5sYWJlbCk7CiAgICAgIHZhciB2YWx1ZVRleHQgPSBtYWtlTm9kZSgic3BhbiIsICJkaW1lbnNpb24tdmFsdWUiLCBmb3JtYXROdW1iZXIodmFsdWVzW2l0ZW0ua2V5XSkgKyAiICIgKyBpdGVtLnVuaXQpOwogICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwogICAgICB2YXIgbWludXMgPSBtYWtlTm9kZSgiYnV0dG9uIiwgInN0ZXAtYnV0dG9uIiwgIuKIkiIpOwogICAgICB2YXIgcGx1cyA9IG1ha2VOb2RlKCJidXR0b24iLCAic3RlcC1idXR0b24iLCAiKyIpOwogICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgaW5wdXQubWluID0gU3RyaW5nKGl0ZW0ubWluKTsKICAgICAgaW5wdXQubWF4ID0gU3RyaW5nKGl0ZW0ubWF4KTsKICAgICAgaW5wdXQuc3RlcCA9IFN0cmluZyhpdGVtLnN0ZXApOwogICAgICBpbnB1dC52YWx1ZSA9IFN0cmluZyh2YWx1ZXNbaXRlbS5rZXldKTsKICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJkYXRhLWRpbWVuc2lvbiIsIGl0ZW0ua2V5KTsKICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgaXRlbS5sYWJlbCArICIgdmVyw6RuZGVybiIpOwogICAgICBtaW51cy50eXBlID0gImJ1dHRvbiI7CiAgICAgIG1pbnVzLnNldEF0dHJpYnV0ZSgiZGF0YS1hY3Rpb24iLCAic3RlcC1kaW1lbnNpb24iKTsKICAgICAgbWludXMuc2V0QXR0cmlidXRlKCJkYXRhLWRpbWVuc2lvbiIsIGl0ZW0ua2V5KTsKICAgICAgbWludXMuc2V0QXR0cmlidXRlKCJkYXRhLXN0ZXAiLCBTdHJpbmcoLWl0ZW0uc3RlcCkpOwogICAgICBtaW51cy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBpdGVtLmxhYmVsICsgIiB2ZXJrbGVpbmVybiIpOwogICAgICBwbHVzLnR5cGUgPSAiYnV0dG9uIjsKICAgICAgcGx1cy5zZXRBdHRyaWJ1dGUoImRhdGEtYWN0aW9uIiwgInN0ZXAtZGltZW5zaW9uIik7CiAgICAgIHBsdXMuc2V0QXR0cmlidXRlKCJkYXRhLWRpbWVuc2lvbiIsIGl0ZW0ua2V5KTsKICAgICAgcGx1cy5zZXRBdHRyaWJ1dGUoImRhdGEtc3RlcCIsIFN0cmluZyhpdGVtLnN0ZXApKTsKICAgICAgcGx1cy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBpdGVtLmxhYmVsICsgIiB2ZXJncsO2w59lcm4iKTsKICAgICAgbGFiZWwuYXBwZW5kQ2hpbGQobGFiZWxUZXh0KTsKICAgICAgbGFiZWwuYXBwZW5kQ2hpbGQodmFsdWVUZXh0KTsKICAgICAgbGFiZWwuYXBwZW5kQ2hpbGQoaW5wdXQpOwogICAgICByb3cuYXBwZW5kQ2hpbGQobGFiZWwpOwogICAgICByb3cuYXBwZW5kQ2hpbGQobWludXMpOwogICAgICByb3cuYXBwZW5kQ2hpbGQocGx1cyk7CiAgICAgIGVsZW1lbnRzLmRpbWVuc2lvbkNvbnRyb2xzLmFwcGVuZENoaWxkKHJvdyk7CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlckZvcm11bGFDb250ZW50KHNoYXBlLCB2YWx1ZXMpIHsKICAgIHZhciByZXN1bHRzID0gc2hhcGUuY2FsY3VsYXRpb25GdW5jdGlvbih2YWx1ZXMpOwogICAgZWxlbWVudHMuZm9ybXVsYUNvbnRlbnQucmVwbGFjZUNoaWxkcmVuKCk7CiAgICByZXN1bHRzLmZvcm11bGFzLmZvckVhY2goZnVuY3Rpb24gKGZvcm11bGEpIHsKICAgICAgdmFyIGJveCA9IG1ha2VOb2RlKCJhcnRpY2xlIiwgImZvcm11bGEtYm94Iik7CiAgICAgIHZhciBuYW1lID0gbWFrZU5vZGUoInAiLCAiZm9ybXVsYS1uYW1lIiwgZm9ybXVsYS5uYW1lKTsKICAgICAgdmFyIGdlbmVyYWwgPSBtYWtlTm9kZSgicCIsICJmb3JtdWxhLWdlbmVyYWwiLCBmb3JtdWxhLmdlbmVyYWwpOwogICAgICB2YXIgbGluZSA9IG1ha2VOb2RlKCJwIiwgImZvcm11bGEtbGluZSIsIGZvcm11bGEubGluZSk7CiAgICAgIHZhciBub3RlID0gbWFrZU5vZGUoInAiLCAiZm9ybXVsYS1ub3RlIiwgZm9ybXVsYS5ub3RlKTsKICAgICAgdmFyIHVuaXQgPSBtYWtlTm9kZSgic3BhbiIsICJ2YWx1ZS1jaGlwIiwgIkVpbmhlaXQ6ICIgKyBmb3JtdWxhLnVuaXQpOwogICAgICBib3guYXBwZW5kQ2hpbGQobmFtZSk7CiAgICAgIGJveC5hcHBlbmRDaGlsZChnZW5lcmFsKTsKICAgICAgYm94LmFwcGVuZENoaWxkKGxpbmUpOwogICAgICBib3guYXBwZW5kQ2hpbGQobm90ZSk7CiAgICAgIGJveC5hcHBlbmRDaGlsZCh1bml0KTsKICAgICAgZWxlbWVudHMuZm9ybXVsYUNvbnRlbnQuYXBwZW5kQ2hpbGQoYm94KTsKICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyRXhwbG9yZVRhc2soKSB7CiAgICBlbGVtZW50cy50YXNrU2tpbGwudGV4dENvbnRlbnQgPSAiRW50ZGVja2VyYXVmdHJhZyI7CiAgICBlbGVtZW50cy50YXNrVGl0bGUudGV4dENvbnRlbnQgPSAiQmVvYmFjaHRlbiBzdGF0dCByYXRlbiI7CiAgICBlbGVtZW50cy50YXNrUmV3YXJkLnRleHRDb250ZW50ID0gIiswIFB1bmt0ZSI7CiAgICBlbGVtZW50cy50YXNrUHJvbXB0LnRleHRDb250ZW50ID0gbWFrZUV4cGxvcmVQcm9tcHQoKTsKICAgIGVsZW1lbnRzLmFuc3dlckFyZWEucmVwbGFjZUNoaWxkcmVuKCk7CiAgICBlbGVtZW50cy5mZWVkYmFja0JveC5jbGFzc05hbWUgPSAiZmVlZGJhY2stYm94IjsKICAgIGVsZW1lbnRzLmZlZWRiYWNrQm94LnRleHRDb250ZW50ID0gIkJlc2NocmVpYmUgbWl0IFdvcnRlbjogV2VsY2hlIEdyw7bDn2UgdmVyw6RuZGVydCBzaWNoPyBXZWxjaGUgRWluaGVpdCBibGVpYnQgcGFzc2VuZD8iOwogICAgZWxlbWVudHMuaGludEJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlOwogICAgZWxlbWVudHMubmV4dEJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyU2NvcmVUYXNrKCkgewogICAgZWxlbWVudHMudGFza1NraWxsLnRleHRDb250ZW50ID0gIkxlcm5wcm9maWwiOwogICAgZWxlbWVudHMudGFza1RpdGxlLnRleHRDb250ZW50ID0gIlN0w6Rya2VuIHVuZCBuw6RjaHN0ZSBTY2hyaXR0ZSI7CiAgICBlbGVtZW50cy50YXNrUmV3YXJkLnRleHRDb250ZW50ID0gIlNpdHp1bmciOwogICAgZWxlbWVudHMudGFza1Byb21wdC50ZXh0Q29udGVudCA9ICJEaWVzZSDDnGJlcnNpY2h0IGdpbHQgbnVyIGbDvHIgZGllIGFrdHVlbGxlIFNpdHp1bmcuIEVzIHdpcmQgbmljaHRzIGltIEJyb3dzZXIgZ2VzcGVpY2hlcnQuIjsKICAgIGVsZW1lbnRzLmFuc3dlckFyZWEucmVwbGFjZUNoaWxkcmVuKCk7CiAgICB2YXIgYm94ID0gbWFrZU5vZGUoImRpdiIsICJmb3JtdWxhLWJveCIpOwogICAgdmFyIHRpdGxlID0gbWFrZU5vZGUoInAiLCAiZm9ybXVsYS1uYW1lIiwgIkVtcGZlaGx1bmciKTsKICAgIHZhciB0ZXh0ID0gbWFrZU5vZGUoInAiLCAiZm9ybXVsYS1ub3RlIiwgYnVpbGRBZHZpY2UoKSk7CiAgICBib3guYXBwZW5kQ2hpbGQodGl0bGUpOwogICAgYm94LmFwcGVuZENoaWxkKHRleHQpOwogICAgZWxlbWVudHMuYW5zd2VyQXJlYS5hcHBlbmRDaGlsZChib3gpOwogICAgZWxlbWVudHMuZmVlZGJhY2tCb3guY2xhc3NOYW1lID0gImZlZWRiYWNrLWJveCI7CiAgICBlbGVtZW50cy5mZWVkYmFja0JveC50ZXh0Q29udGVudCA9ICJOdXR6ZSBkaWUgVHJhaW5pbmdzcGZhZGUsIHVtIGdlemllbHQgUHVua3RlIGluIGVpbnplbG5lbiBMZXJuYmVyZWljaGVuIHp1IHNhbW1lbG4uIjsKICAgIGVsZW1lbnRzLmhpbnRCdXR0b24uZGlzYWJsZWQgPSB0cnVlOwogICAgZWxlbWVudHMubmV4dEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJUYXNrKCkgewogICAgaWYgKCFzdGF0ZS5jdXJyZW50VGFzaykgewogICAgICBjcmVhdGVOZXh0VGFzaygpOwogICAgfQogICAgdmFyIHRhc2sgPSBzdGF0ZS5jdXJyZW50VGFzazsKICAgIGVsZW1lbnRzLnRhc2tTa2lsbC50ZXh0Q29udGVudCA9IHRhc2suc2tpbGwgKyAiIMK3IFN0dWZlICIgKyBTdHJpbmcodGFzay5kaWZmaWN1bHR5KTsKICAgIGVsZW1lbnRzLnRhc2tUaXRsZS50ZXh0Q29udGVudCA9IHRhc2sudGl0bGU7CiAgICBlbGVtZW50cy50YXNrUmV3YXJkLnRleHRDb250ZW50ID0gc3RhdGUuYW5zd2VyTG9ja2VkID8gImF1c2dld2VydGV0IiA6ICIrIiArIFN0cmluZyh0YXNrLnBvaW50cykgKyAiIFB1bmt0ZSI7CiAgICBlbGVtZW50cy50YXNrUHJvbXB0LnRleHRDb250ZW50ID0gdGFzay5wcm9tcHQ7CiAgICBlbGVtZW50cy5hbnN3ZXJBcmVhLnJlcGxhY2VDaGlsZHJlbigpOwogICAgaWYgKHRhc2sua2luZCA9PT0gImNob2ljZSIpIHsKICAgICAgcmVuZGVyQ2hvaWNlVGFzayh0YXNrKTsKICAgIH0gZWxzZSB7CiAgICAgIHJlbmRlck51bWJlclRhc2sodGFzayk7CiAgICB9CiAgICByZW5kZXJGZWVkYmFjaygpOwogICAgZWxlbWVudHMuaGludEJ1dHRvbi5kaXNhYmxlZCA9IHN0YXRlLmFuc3dlckxvY2tlZDsKICAgIGVsZW1lbnRzLm5leHRCdXR0b24uZGlzYWJsZWQgPSAhc3RhdGUuYW5zd2VyTG9ja2VkOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyQ2hvaWNlVGFzayh0YXNrKSB7CiAgICB2YXIgZ3JpZCA9IG1ha2VOb2RlKCJkaXYiLCAiYW5zd2VyLWdyaWQiKTsKICAgIHRhc2sub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChvcHRpb24sIGluZGV4KSB7CiAgICAgIHZhciBidXR0b24gPSBtYWtlTm9kZSgiYnV0dG9uIiwgImFuc3dlci1idXR0b24iLCBTdHJpbmcoaW5kZXggKyAxKSArICIuICIgKyBvcHRpb24pOwogICAgICBidXR0b24udHlwZSA9ICJidXR0b24iOwogICAgICBidXR0b24uc2V0QXR0cmlidXRlKCJkYXRhLWFjdGlvbiIsICJhbnN3ZXItY2hvaWNlIik7CiAgICAgIGJ1dHRvbi5zZXRBdHRyaWJ1dGUoImRhdGEtaW5kZXgiLCBTdHJpbmcoaW5kZXgpKTsKICAgICAgaWYgKHN0YXRlLmFuc3dlckxvY2tlZCkgewogICAgICAgIGJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgaWYgKGluZGV4ID09PSB0YXNrLmNvcnJlY3RJbmRleCkgewogICAgICAgICAgYnV0dG9uLmNsYXNzTGlzdC5hZGQoImlzLWNvcnJlY3QiKTsKICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09PSBzdGF0ZS5jaG9zZW5BbnN3ZXIpIHsKICAgICAgICAgIGJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJpcy13cm9uZyIpOwogICAgICAgIH0KICAgICAgfQogICAgICBncmlkLmFwcGVuZENoaWxkKGJ1dHRvbik7CiAgICB9KTsKICAgIGVsZW1lbnRzLmFuc3dlckFyZWEuYXBwZW5kQ2hpbGQoZ3JpZCk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJOdW1iZXJUYXNrKHRhc2spIHsKICAgIHZhciByb3cgPSBtYWtlTm9kZSgiZGl2IiwgIm51bWJlci1hbnN3ZXItcm93Iik7CiAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwogICAgdmFyIHVuaXQgPSBtYWtlTm9kZSgic3BhbiIsICJ1bml0LWxhYmVsIiwgdGFzay51bml0KTsKICAgIHZhciBzdWJtaXQgPSBtYWtlTm9kZSgiYnV0dG9uIiwgInN1Ym1pdC1idXR0b24iLCAiUHLDvGZlbiIpOwogICAgaW5wdXQudHlwZSA9ICJudW1iZXIiOwogICAgaW5wdXQuaW5wdXRNb2RlID0gImRlY2ltYWwiOwogICAgaW5wdXQuY2xhc3NOYW1lID0gIm51bWJlci1pbnB1dCI7CiAgICBpbnB1dC5pZCA9ICJudW1iZXJBbnN3ZXIiOwogICAgaW5wdXQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgIlphaGwgYWxzIEFudHdvcnQgZWluZ2ViZW4iKTsKICAgIGlucHV0LnZhbHVlID0gdGFzay5sYXN0SW5wdXQgfHwgIiI7CiAgICBpbnB1dC5kaXNhYmxlZCA9IHN0YXRlLmFuc3dlckxvY2tlZDsKICAgIHN1Ym1pdC50eXBlID0gImJ1dHRvbiI7CiAgICBzdWJtaXQuc2V0QXR0cmlidXRlKCJkYXRhLWFjdGlvbiIsICJzdWJtaXQtbnVtYmVyIik7CiAgICBzdWJtaXQuZGlzYWJsZWQgPSBzdGF0ZS5hbnN3ZXJMb2NrZWQ7CiAgICByb3cuYXBwZW5kQ2hpbGQoaW5wdXQpOwogICAgcm93LmFwcGVuZENoaWxkKHVuaXQpOwogICAgcm93LmFwcGVuZENoaWxkKHN1Ym1pdCk7CiAgICBlbGVtZW50cy5hbnN3ZXJBcmVhLmFwcGVuZENoaWxkKHJvdyk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJGZWVkYmFjaygpIHsKICAgIHZhciB0YXNrID0gc3RhdGUuY3VycmVudFRhc2s7CiAgICBlbGVtZW50cy5mZWVkYmFja0JveC5jbGFzc05hbWUgPSAiZmVlZGJhY2stYm94IjsKICAgIGlmICghdGFzaykgewogICAgICBlbGVtZW50cy5mZWVkYmFja0JveC50ZXh0Q29udGVudCA9ICIiOwogICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoc3RhdGUuYW5zd2VyTG9ja2VkICYmIHRhc2suc29sdmVkKSB7CiAgICAgIGVsZW1lbnRzLmZlZWRiYWNrQm94LmNsYXNzTGlzdC5hZGQoImdvb2QiKTsKICAgICAgZWxlbWVudHMuZmVlZGJhY2tCb3gudGV4dENvbnRlbnQgPSAiUmljaHRpZy4gIiArIHRhc2suZXhwbGFuYXRpb247CiAgICB9IGVsc2UgaWYgKHN0YXRlLmFuc3dlckxvY2tlZCkgewogICAgICBlbGVtZW50cy5mZWVkYmFja0JveC5jbGFzc0xpc3QuYWRkKCJiYWQiKTsKICAgICAgZWxlbWVudHMuZmVlZGJhY2tCb3gudGV4dENvbnRlbnQgPSAiRGllIEVya2zDpHJ1bmc6ICIgKyBjb3JyZWN0VGV4dCh0YXNrKSArICIuICIgKyB0YXNrLmV4cGxhbmF0aW9uOwogICAgfSBlbHNlIGlmIChzdGF0ZS5hdHRlbXB0cyA+IDApIHsKICAgICAgZWxlbWVudHMuZmVlZGJhY2tCb3guY2xhc3NMaXN0LmFkZCgid2FybiIpOwogICAgICBlbGVtZW50cy5mZWVkYmFja0JveC50ZXh0Q29udGVudCA9ICJOb2NoIGVpbm1hbCB2ZXJzdWNoZW4uIFRpcHA6ICIgKyB0YXNrLmhpbnQ7CiAgICB9IGVsc2UgewogICAgICBlbGVtZW50cy5mZWVkYmFja0JveC50ZXh0Q29udGVudCA9ICJXw6RobGUgZWluZSBBbnR3b3J0IG9kZXIgZ2liIGVpbmUgWmFobCBlaW4uIER1IGhhc3QgYmVpIEZlaGxlcm4gZWluZSB6d2VpdGUgQ2hhbmNlLiI7CiAgICB9CiAgfQoKICBmdW5jdGlvbiByZW5kZXJTY29yZSgpIHsKICAgIGVsZW1lbnRzLnNraWxsU2NvcmVzLnJlcGxhY2VDaGlsZHJlbigpOwogICAgY2F0ZWdvcmllcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXRlZ29yeSkgewogICAgICB2YXIgcG9pbnRzID0gc3RhdGUuY2F0ZWdvcnlTY29yZXNbY2F0ZWdvcnldIHx8IDA7CiAgICAgIHZhciByb3cgPSBtYWtlTm9kZSgiZGl2IiwgInNraWxsLXJvdyIpOwogICAgICB2YXIgaGVhZCA9IG1ha2VOb2RlKCJkaXYiLCAic2tpbGwtcm93LWhlYWQiKTsKICAgICAgdmFyIG5hbWUgPSBtYWtlTm9kZSgic3BhbiIsICIiLCBjYXRlZ29yeSk7CiAgICAgIHZhciB2YWx1ZSA9IG1ha2VOb2RlKCJzcGFuIiwgIiIsIFN0cmluZyhwb2ludHMpICsgIiBQIik7CiAgICAgIHZhciBiYXIgPSBtYWtlTm9kZSgiZGl2IiwgInNraWxsLWJhciIpOwogICAgICB2YXIgZmlsbCA9IG1ha2VOb2RlKCJzcGFuIik7CiAgICAgIGZpbGwuc3R5bGUud2lkdGggPSBTdHJpbmcoTWF0aC5taW4oMTAwLCBNYXRoLnJvdW5kKHBvaW50cyAvIDEuMikpKSArICIlIjsKICAgICAgaGVhZC5hcHBlbmRDaGlsZChuYW1lKTsKICAgICAgaGVhZC5hcHBlbmRDaGlsZCh2YWx1ZSk7CiAgICAgIGJhci5hcHBlbmRDaGlsZChmaWxsKTsKICAgICAgcm93LmFwcGVuZENoaWxkKGhlYWQpOwogICAgICByb3cuYXBwZW5kQ2hpbGQoYmFyKTsKICAgICAgZWxlbWVudHMuc2tpbGxTY29yZXMuYXBwZW5kQ2hpbGQocm93KTsKICAgIH0pOwogICAgZWxlbWVudHMubGVhcm5pbmdUaXAudGV4dENvbnRlbnQgPSBtb2RlU2V0dGluZ3Nbc3RhdGUuY3VycmVudE1vZGVdLnRpcDsKICB9CgogIGZ1bmN0aW9uIHNlbGVjdFNoYXBlKHNoYXBlSWQpIHsKICAgIGlmICghZ2V0U2hhcGUoc2hhcGVJZCkpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgc3RhdGUuc2VsZWN0ZWRTaGFwZSA9IHNoYXBlSWQ7CiAgICByZW5kZXJBcHAoKTsKICB9CgogIGZ1bmN0aW9uIHNlbGVjdERlZmF1bHRTaGFwZUZvck1vZGUobW9kZSkgewogICAgdmFyIHNldHRpbmcgPSBtb2RlU2V0dGluZ3NbbW9kZV07CiAgICBpZiAoIXNldHRpbmcgfHwgIXNldHRpbmcucHJlZmVycmVkU2hhcGVzIHx8IHNldHRpbmcucHJlZmVycmVkU2hhcGVzLmxlbmd0aCA9PT0gMCkgewogICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoc2V0dGluZy5wcmVmZXJyZWRTaGFwZXMuaW5kZXhPZihzdGF0ZS5zZWxlY3RlZFNoYXBlKSA8IDApIHsKICAgICAgc3RhdGUuc2VsZWN0ZWRTaGFwZSA9IHNldHRpbmcucHJlZmVycmVkU2hhcGVzWzBdOwogICAgfQogIH0KCiAgZnVuY3Rpb24gc3RlcERpbWVuc2lvbihrZXksIGRlbHRhKSB7CiAgICBpZiAoIWtleSB8fCAhZGVsdGEpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIHNoYXBlID0gZ2V0U2hhcGUoc3RhdGUuc2VsZWN0ZWRTaGFwZSk7CiAgICB2YXIgcGFyYW0gPSBnZXRQYXJhbWV0ZXIoc2hhcGUsIGtleSk7CiAgICBpZiAoIXBhcmFtKSB7CiAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciB2YWx1ZXMgPSBnZXRWYWx1ZXMoc2hhcGUuaWQpOwogICAgc2V0RGltZW5zaW9uKGtleSwgY2xhbXBUb1N0ZXAodmFsdWVzW2tleV0gKyBkZWx0YSwgcGFyYW0pKTsKICB9CgogIGZ1bmN0aW9uIHNldERpbWVuc2lvbihrZXksIHZhbHVlKSB7CiAgICB2YXIgc2hhcGUgPSBnZXRTaGFwZShzdGF0ZS5zZWxlY3RlZFNoYXBlKTsKICAgIHZhciBwYXJhbSA9IGdldFBhcmFtZXRlcihzaGFwZSwga2V5KTsKICAgIGlmICghcGFyYW0pIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIHZhbHVlcyA9IGdldFZhbHVlcyhzaGFwZS5pZCk7CiAgICB2YWx1ZXNba2V5XSA9IGNsYW1wVG9TdGVwKHZhbHVlLCBwYXJhbSk7CiAgICByZW5kZXJMYWJQYXJ0cygpOwogIH0KCiAgZnVuY3Rpb24gYXBwbHlDYW52YXNNZWFzdXJlKGV2ZW50KSB7CiAgICB2YXIgc2hhcGUgPSBnZXRTaGFwZShzdGF0ZS5zZWxlY3RlZFNoYXBlKTsKICAgIGlmICghc2hhcGUgfHwgc2hhcGUucGFyYW1ldGVycy5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIHBhcmFtID0gc2hhcGUucGFyYW1ldGVyc1swXTsKICAgIHZhciBib3ggPSBlbGVtZW50cy5jYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgcmF0aW8gPSAoZXZlbnQuY2xpZW50WCAtIGJveC5sZWZ0KSAvIE1hdGgubWF4KDEsIGJveC53aWR0aCk7CiAgICByYXRpbyA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHJhdGlvKSk7CiAgICB2YXIgcmF3ID0gcGFyYW0ubWluICsgcmF0aW8gKiAocGFyYW0ubWF4IC0gcGFyYW0ubWluKTsKICAgIHNldERpbWVuc2lvbihwYXJhbS5rZXksIHJhdyk7CiAgfQoKICBmdW5jdGlvbiBzZXREaWZmaWN1bHR5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSA1KSB7CiAgICAgIHN0YXRlLmRpZmZpY3VsdHkgPSB2YWx1ZTsKICAgICAgaWYgKHN0YXRlLmN1cnJlbnRNb2RlICE9PSAiZXhwbG9yZSIgJiYgc3RhdGUuY3VycmVudE1vZGUgIT09ICJzY29yZSIpIHsKICAgICAgICBjcmVhdGVOZXh0VGFzaygpOwogICAgICB9CiAgICAgIHJlbmRlckFwcCgpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gY3JlYXRlTmV4dFRhc2soKSB7CiAgICBzdGF0ZS5tb2RlVGFza051bWJlciArPSAxOwogICAgc3RhdGUuYXR0ZW1wdHMgPSAwOwogICAgc3RhdGUuYW5zd2VyTG9ja2VkID0gZmFsc2U7CiAgICBzdGF0ZS5jaG9zZW5BbnN3ZXIgPSAtMTsKICAgIHN0YXRlLmN1cnJlbnRUYXNrID0gZ2VuZXJhdGVUYXNrKHN0YXRlLmN1cnJlbnRNb2RlLCBzdGF0ZS5kaWZmaWN1bHR5KTsKICAgIGlmIChzdGF0ZS5jdXJyZW50VGFzayAmJiBzdGF0ZS5jdXJyZW50VGFzay5zaGFwZUlkKSB7CiAgICAgIHN0YXRlLnNlbGVjdGVkU2hhcGUgPSBzdGF0ZS5jdXJyZW50VGFzay5zaGFwZUlkOwogICAgfQogIH0KCiAgZnVuY3Rpb24gZ2VuZXJhdGVUYXNrKGNhdGVnb3J5LCBkaWZmaWN1bHR5KSB7CiAgICB2YXIgc2V0dGluZyA9IG1vZGVTZXR0aW5nc1tjYXRlZ29yeV0gfHwgbW9kZVNldHRpbmdzLmV4YW07CiAgICB2YXIgYWxsb3dlZCA9IHRhc2tGYWN0b3JpZXMuZmlsdGVyKGZ1bmN0aW9uIChmYWN0b3J5KSB7CiAgICAgIHJldHVybiBzZXR0aW5nLmZpbHRlcnMuaW5kZXhPZihmYWN0b3J5LnNraWxsKSA+PSAwOwogICAgfSk7CiAgICBpZiAoc2V0dGluZy5wcmVmZXJyZWRTaGFwZXMubGVuZ3RoID4gMCkgewogICAgICB2YXIgc2hhcGVGaWx0ZXJlZCA9IGFsbG93ZWQuZmlsdGVyKGZ1bmN0aW9uIChmYWN0b3J5KSB7CiAgICAgICAgcmV0dXJuIHNldHRpbmcucHJlZmVycmVkU2hhcGVzLmluZGV4T2YoZmFjdG9yeS5zaGFwZUlkKSA+PSAwOwogICAgICB9KTsKICAgICAgaWYgKHNoYXBlRmlsdGVyZWQubGVuZ3RoID4gMCkgewogICAgICAgIGFsbG93ZWQgPSBzaGFwZUZpbHRlcmVkOwogICAgICB9CiAgICB9CiAgICB2YXIgbmVhciA9IGFsbG93ZWQuZmlsdGVyKGZ1bmN0aW9uIChmYWN0b3J5KSB7CiAgICAgIHJldHVybiBmYWN0b3J5Lm1pbkRpZmZpY3VsdHkgPD0gZGlmZmljdWx0eSAmJiBmYWN0b3J5Lm1heERpZmZpY3VsdHkgPj0gZGlmZmljdWx0eTsKICAgIH0pOwogICAgaWYgKG5lYXIubGVuZ3RoID4gMCkgewogICAgICBhbGxvd2VkID0gbmVhcjsKICAgIH0KICAgIHZhciBmYWN0b3J5ID0gcGljayhhbGxvd2VkLmxlbmd0aCA+IDAgPyBhbGxvd2VkIDogdGFza0ZhY3Rvcmllcyk7CiAgICB2YXIgdGFzayA9IGZhY3RvcnkubWFrZShkaWZmaWN1bHR5KTsKICAgIHRhc2suc2tpbGwgPSBmYWN0b3J5LnNraWxsOwogICAgdGFzay5zaGFwZUlkID0gZmFjdG9yeS5zaGFwZUlkOwogICAgdGFzay5kaWZmaWN1bHR5ID0gTWF0aC5tYXgoMSwgTWF0aC5taW4oNSwgdGFzay5kaWZmaWN1bHR5IHx8IGRpZmZpY3VsdHkpKTsKICAgIHRhc2sucG9pbnRzID0gdGFzay5wb2ludHMgfHwgcG9pbnRzRm9yRGlmZmljdWx0eSh0YXNrLmRpZmZpY3VsdHkpOwogICAgcmV0dXJuIHRhc2s7CiAgfQoKICBmdW5jdGlvbiBjcmVhdGVNdWx0aXBsZUNob2ljZVRhc2soKSB7CiAgICByZXR1cm4gZ2VuZXJhdGVUYXNrKHN0YXRlLmN1cnJlbnRNb2RlLCBzdGF0ZS5kaWZmaWN1bHR5KTsKICB9CgogIGZ1bmN0aW9uIGNyZWF0ZUZvcm11bGFUYXNrKCkgewogICAgcmV0dXJuIHBpY2sodGFza0ZhY3Rvcmllcy5maWx0ZXIoZnVuY3Rpb24gKGZhY3RvcnkpIHsgcmV0dXJuIGZhY3Rvcnkuc2tpbGwgPT09ICJGb3JtZWxuIjsgfSkpLm1ha2Uoc3RhdGUuZGlmZmljdWx0eSk7CiAgfQoKICBmdW5jdGlvbiBjcmVhdGVVbml0VGFzaygpIHsKICAgIHJldHVybiBwaWNrKHRhc2tGYWN0b3JpZXMuZmlsdGVyKGZ1bmN0aW9uIChmYWN0b3J5KSB7IHJldHVybiBmYWN0b3J5LnNraWxsID09PSAiRWluaGVpdGVuIjsgfSkpLm1ha2Uoc3RhdGUuZGlmZmljdWx0eSk7CiAgfQoKICBmdW5jdGlvbiBjcmVhdGVDaGFuZ2VUYXNrKCkgewogICAgdmFyIGxpc3QgPSB0YXNrRmFjdG9yaWVzLmZpbHRlcihmdW5jdGlvbiAoZmFjdG9yeSkgeyByZXR1cm4gZmFjdG9yeS50aXRsZSA9PT0gIlZlcsOkbmRlcnVuZyIgfHwgZmFjdG9yeS5za2lsbCA9PT0gIlN0cmF0ZWdpZSI7IH0pOwogICAgcmV0dXJuIHBpY2sobGlzdCkubWFrZShzdGF0ZS5kaWZmaWN1bHR5KTsKICB9CgogIGZ1bmN0aW9uIGNoZWNrQW5zd2VyKGluZGV4KSB7CiAgICB2YXIgdGFzayA9IHN0YXRlLmN1cnJlbnRUYXNrOwogICAgaWYgKCF0YXNrIHx8IHRhc2sua2luZCAhPT0gImNob2ljZSIgfHwgc3RhdGUuYW5zd2VyTG9ja2VkKSB7CiAgICAgIHJldHVybjsKICAgIH0KICAgIHN0YXRlLmNob3NlbkFuc3dlciA9IGluZGV4OwogICAgaWYgKGluZGV4ID09PSB0YXNrLmNvcnJlY3RJbmRleCkgewogICAgICBmaW5pc2hUYXNrKHRydWUpOwogICAgfSBlbHNlIHsKICAgICAgaGFuZGxlV3JvbmdBbnN3ZXIoKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGNoZWNrTnVtYmVyQW5zd2VyKCkgewogICAgdmFyIHRhc2sgPSBzdGF0ZS5jdXJyZW50VGFzazsKICAgIGlmICghdGFzayB8fCB0YXNrLmtpbmQgIT09ICJudW1iZXIiIHx8IHN0YXRlLmFuc3dlckxvY2tlZCkgewogICAgICByZXR1cm47CiAgICB9CiAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibnVtYmVyQW5zd2VyIik7CiAgICB2YXIgcmF3ID0gaW5wdXQgPyBpbnB1dC52YWx1ZSA6ICIiOwogICAgdGFzay5sYXN0SW5wdXQgPSByYXc7CiAgICB2YXIgcGFyc2VkID0gcGFyc2VHZXJtYW5OdW1iZXIocmF3KTsKICAgIHZhciB0b2xlcmFuY2UgPSB0YXNrLnRvbGVyYW5jZSA9PT0gdW5kZWZpbmVkID8gMC4wNSA6IHRhc2sudG9sZXJhbmNlOwogICAgaWYgKE51bWJlci5pc0Zpbml0ZShwYXJzZWQpICYmIE1hdGguYWJzKHBhcnNlZCAtIHRhc2suY29ycmVjdE51bWJlcikgPD0gdG9sZXJhbmNlKSB7CiAgICAgIGZpbmlzaFRhc2sodHJ1ZSk7CiAgICB9IGVsc2UgewogICAgICBoYW5kbGVXcm9uZ0Fuc3dlcigpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gaGFuZGxlV3JvbmdBbnN3ZXIoKSB7CiAgICBzdGF0ZS5hdHRlbXB0cyArPSAxOwogICAgc3RhdGUuc3RyZWFrID0gMDsKICAgIGlmIChzdGF0ZS5hdHRlbXB0cyA+PSAyKSB7CiAgICAgIGZpbmlzaFRhc2soZmFsc2UpOwogICAgfSBlbHNlIHsKICAgICAgcmVuZGVyVGFzaygpOwogICAgICByZW5kZXJEYXNoYm9hcmQoKTsKICAgICAgcmVuZGVyU2NvcmUoKTsKICAgICAgc2hvd1RvYXN0KCJEYXMgd2FyIG5vY2ggbmljaHQgcmljaHRpZy4gRHUgYmVrb21tc3QgZWluZSB6d2VpdGUgQ2hhbmNlLiIpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gZmluaXNoVGFzayhzdWNjZXNzKSB7CiAgICB2YXIgdGFzayA9IHN0YXRlLmN1cnJlbnRUYXNrOwogICAgdGFzay5zb2x2ZWQgPSBzdWNjZXNzOwogICAgc3RhdGUuYW5zd2VyTG9ja2VkID0gdHJ1ZTsKICAgIHN0YXRlLmNvbXBsZXRlZFRhc2tzICs9IDE7CiAgICBpZiAoc3VjY2VzcykgewogICAgICBzdGF0ZS5jb3JyZWN0SW5Nb2RlICs9IDE7CiAgICAgIHN0YXRlLnN0cmVhayArPSAxOwogICAgICB2YXIgZ2FpbmVkID0gc3RhdGUuYXR0ZW1wdHMgPT09IDAgPyB0YXNrLnBvaW50cyA6IE1hdGgubWF4KDEsIE1hdGgucm91bmQodGFzay5wb2ludHMgKiAwLjU1KSk7CiAgICAgIGlmIChzdGF0ZS5zdHJlYWsgPiAwICYmIHN0YXRlLnN0cmVhayAlIDQgPT09IDApIHsKICAgICAgICBnYWluZWQgKz0gMzsKICAgICAgfQogICAgICBzdGF0ZS5zY29yZSArPSBnYWluZWQ7CiAgICAgIHN0YXRlLmNhdGVnb3J5U2NvcmVzW3Rhc2suc2tpbGxdID0gKHN0YXRlLmNhdGVnb3J5U2NvcmVzW3Rhc2suc2tpbGxdIHx8IDApICsgZ2FpbmVkOwogICAgICBzaG93VG9hc3QoIlJpY2h0aWc6ICsiICsgU3RyaW5nKGdhaW5lZCkgKyAiIFB1bmt0ZSBmw7xyICIgKyB0YXNrLnNraWxsICsgIi4iKTsKICAgIH0gZWxzZSB7CiAgICAgIHNob3dUb2FzdCgiS2VpbmUgUHVua3RlLCBhYmVyIGVpbmUgRXJrbMOkcnVuZy4gV2VpdGVyIGdlaHQgZXMgbWl0IGRlciBuw6RjaHN0ZW4gQXVmZ2FiZS4iKTsKICAgIH0KICAgIGlmIChzdGF0ZS5jb21wbGV0ZWRUYXNrcyA+IDAgJiYgc3RhdGUuY29tcGxldGVkVGFza3MgJSA1ID09PSAwKSB7CiAgICAgIHN0YXRlLmRpZmZpY3VsdHkgPSBNYXRoLm1pbig1LCBzdGF0ZS5kaWZmaWN1bHR5ICsgMSk7CiAgICB9CiAgICByZW5kZXJEYXNoYm9hcmQoKTsKICAgIHJlbmRlclRhc2soKTsKICAgIHJlbmRlclNjb3JlKCk7CiAgfQoKICBmdW5jdGlvbiBuZXh0VGFzaygpIHsKICAgIGlmIChzdGF0ZS5jdXJyZW50TW9kZSA9PT0gImV4cGxvcmUiKSB7CiAgICAgIHJlbmRlckV4cGxvcmVUYXNrKCk7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChzdGF0ZS5jdXJyZW50TW9kZSA9PT0gInNjb3JlIikgewogICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoIXN0YXRlLmFuc3dlckxvY2tlZCkgewogICAgICBzaG93VG9hc3QoIkJpdHRlIGzDtnNlIGRpZSBha3R1ZWxsZSBBdWZnYWJlIHp1ZXJzdC4iKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIHNldHRpbmcgPSBtb2RlU2V0dGluZ3Nbc3RhdGUuY3VycmVudE1vZGVdOwogICAgaWYgKHNldHRpbmcuZ29hbCA+IDAgJiYgc3RhdGUubW9kZVRhc2tOdW1iZXIgPj0gc2V0dGluZy5nb2FsKSB7CiAgICAgIHNob3dFbmRTY3JlZW4oKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgY3JlYXRlTmV4dFRhc2soKTsKICAgIHJlbmRlckFwcCgpOwogIH0KCiAgZnVuY3Rpb24gc2hvd0hpbnQoKSB7CiAgICBpZiAoc3RhdGUuY3VycmVudE1vZGUgPT09ICJleHBsb3JlIikgewogICAgICBlbGVtZW50cy5mZWVkYmFja0JveC5jbGFzc05hbWUgPSAiZmVlZGJhY2stYm94IHdhcm4iOwogICAgICBlbGVtZW50cy5mZWVkYmFja0JveC50ZXh0Q29udGVudCA9ICJUaXBwOiBWZXLDpG5kZXJlIG51ciBlaW4gTWHDny4gRGFubiBlcmtlbm5zdCBkdSBsZWljaHRlciwgb2Igc2ljaCBVbWZhbmcsIEZsw6RjaGUgb2RlciBWb2x1bWVuIGdsZWljaG3DpMOfaWcgb2RlciBzdMOkcmtlciB2ZXLDpG5kZXJ0LiI7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGlmICghc3RhdGUuY3VycmVudFRhc2sgfHwgc3RhdGUuYW5zd2VyTG9ja2VkKSB7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGVsZW1lbnRzLmZlZWRiYWNrQm94LmNsYXNzTmFtZSA9ICJmZWVkYmFjay1ib3ggd2FybiI7CiAgICBlbGVtZW50cy5mZWVkYmFja0JveC50ZXh0Q29udGVudCA9ICJUaXBwOiAiICsgc3RhdGUuY3VycmVudFRhc2suaGludDsKICB9CgogIGZ1bmN0aW9uIGV4cGxhaW5Tb2x1dGlvbigpIHsKICAgIGlmICghc3RhdGUuY3VycmVudFRhc2spIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogICAgcmV0dXJuIHN0YXRlLmN1cnJlbnRUYXNrLmV4cGxhbmF0aW9uOwogIH0KCiAgZnVuY3Rpb24gc2hvd0VuZFNjcmVlbigpIHsKICAgIHN0YXRlLmN1cnJlbnRTY3JlZW4gPSAiZW5kIjsKICAgIGVsZW1lbnRzLm1lbnVTY3JlZW4uaGlkZGVuID0gdHJ1ZTsKICAgIGVsZW1lbnRzLnBsYXlTY3JlZW4uaGlkZGVuID0gdHJ1ZTsKICAgIGVsZW1lbnRzLmVuZFNjcmVlbi5oaWRkZW4gPSBmYWxzZTsKICAgIHZhciBzZXR0aW5nID0gbW9kZVNldHRpbmdzW3N0YXRlLmN1cnJlbnRNb2RlXTsKICAgIHZhciBnb2FsID0gc2V0dGluZy5nb2FsIHx8IHN0YXRlLm1vZGVUYXNrTnVtYmVyOwogICAgdmFyIHBlcmNlbnQgPSBnb2FsID4gMCA/IE1hdGgucm91bmQoc3RhdGUuY29ycmVjdEluTW9kZSAvIGdvYWwgKiAxMDApIDogMDsKICAgIGVsZW1lbnRzLmVuZFN1bW1hcnkudGV4dENvbnRlbnQgPSAiRHUgaGFzdCAiICsgU3RyaW5nKHN0YXRlLmNvcnJlY3RJbk1vZGUpICsgIiB2b24gIiArIFN0cmluZyhnb2FsKSArICIgQXVmZ2FiZW4gcmljaHRpZyBnZWzDtnN0LiBUcmVmZmVycXVvdGU6ICIgKyBTdHJpbmcocGVyY2VudCkgKyAiICUuIEdlc2FtdHB1bmt0ZTogIiArIFN0cmluZyhzdGF0ZS5zY29yZSkgKyAiLiI7CiAgICBlbGVtZW50cy5lbmRTY29yZXMucmVwbGFjZUNoaWxkcmVuKCk7CiAgICBjYXRlZ29yaWVzLmZvckVhY2goZnVuY3Rpb24gKGNhdGVnb3J5KSB7CiAgICAgIHZhciB0aWxlID0gbWFrZU5vZGUoImRpdiIsICJlbmQtc2NvcmUiKTsKICAgICAgdmFyIGxhYmVsID0gbWFrZU5vZGUoInNwYW4iLCAiIiwgY2F0ZWdvcnkpOwogICAgICB2YXIgdmFsdWUgPSBtYWtlTm9kZSgic3Ryb25nIiwgIiIsIFN0cmluZyhzdGF0ZS5jYXRlZ29yeVNjb3Jlc1tjYXRlZ29yeV0gfHwgMCkgKyAiIFAiKTsKICAgICAgdGlsZS5hcHBlbmRDaGlsZChsYWJlbCk7CiAgICAgIHRpbGUuYXBwZW5kQ2hpbGQodmFsdWUpOwogICAgICBlbGVtZW50cy5lbmRTY29yZXMuYXBwZW5kQ2hpbGQodGlsZSk7CiAgICB9KTsKICAgIGVsZW1lbnRzLmVuZEFkdmljZS50ZXh0Q29udGVudCA9IGJ1aWxkQWR2aWNlKCk7CiAgfQoKICBmdW5jdGlvbiB0b2dnbGVGdWxsU2NyZWVuKCkgewogICAgdmFyIHJvb3QgPSBlbGVtZW50cy5yb290OwogICAgaWYgKGRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50ICYmIGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKSB7CiAgICAgIGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKCkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgcm9vdC5jbGFzc0xpc3QucmVtb3ZlKCJzb2Z0LWZ1bGwiKTsKICAgICAgICBzaG93VG9hc3QoIlZvbGxiaWxkIGJlZW5kZXQuIik7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHsKICAgICAgICByb290LmNsYXNzTGlzdC5yZW1vdmUoInNvZnQtZnVsbCIpOwogICAgICAgIHNob3dUb2FzdCgiQXBwLVZvbGxiaWxkIGJlZW5kZXQuIik7CiAgICAgIH0pOwogICAgICByZXR1cm47CiAgICB9CiAgICBpZiAocm9vdC5yZXF1ZXN0RnVsbHNjcmVlbikgewogICAgICByb290LnJlcXVlc3RGdWxsc2NyZWVuKCkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgc2hvd1RvYXN0KCJWb2xsYmlsZCBha3Rpdi4iKTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkgewogICAgICAgIHJvb3QuY2xhc3NMaXN0LnRvZ2dsZSgic29mdC1mdWxsIik7CiAgICAgICAgc2hvd1RvYXN0KHJvb3QuY2xhc3NMaXN0LmNvbnRhaW5zKCJzb2Z0LWZ1bGwiKSA/ICJBcHAtVm9sbGJpbGQgYWt0aXYuIiA6ICJBcHAtVm9sbGJpbGQgYmVlbmRldC4iKTsKICAgICAgfSk7CiAgICB9IGVsc2UgewogICAgICByb290LmNsYXNzTGlzdC50b2dnbGUoInNvZnQtZnVsbCIpOwogICAgICBzaG93VG9hc3Qocm9vdC5jbGFzc0xpc3QuY29udGFpbnMoInNvZnQtZnVsbCIpID8gIkFwcC1Wb2xsYmlsZCBha3Rpdi4iIDogIkFwcC1Wb2xsYmlsZCBiZWVuZGV0LiIpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gc2hvd1RvYXN0KG1lc3NhZ2UpIHsKICAgIGVsZW1lbnRzLnRvYXN0LnRleHRDb250ZW50ID0gbWVzc2FnZTsKICAgIGVsZW1lbnRzLnRvYXN0LmNsYXNzTGlzdC5hZGQoInNob3ciKTsKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICBlbGVtZW50cy50b2FzdC5jbGFzc0xpc3QucmVtb3ZlKCJzaG93Iik7CiAgICB9LCAyMjAwKTsKICB9CgogIGZ1bmN0aW9uIGNhbGNTcXVhcmUoZCkgewogICAgdmFyIHUgPSA0ICogZC5hOwogICAgdmFyIGEgPSBkLmEgKiBkLmE7CiAgICByZXR1cm4gewogICAgICBwZXJpbWV0ZXI6IHUsCiAgICAgIGFyZWE6IGEsCiAgICAgIGZvcm11bGFzOiBbCiAgICAgICAgeyBuYW1lOiAiVW1mYW5nIiwgZ2VuZXJhbDogIlUgPSA0IMK3IGEiLCBsaW5lOiAiVSA9IDQgwrcgIiArIG4oZC5hKSArICIgPSAiICsgbih1KSArICIgY20iLCB1bml0OiAiY20iLCBub3RlOiAiQWxsZSB2aWVyIFNlaXRlbiBzaW5kIGdsZWljaCBsYW5nLiBEZXNoYWxiIHdpcmQgYSB2aWVybWFsIGdlesOkaGx0LiIgfSwKICAgICAgICB7IG5hbWU6ICJGbMOkY2hlbmluaGFsdCIsIGdlbmVyYWw6ICJBID0gYSDCtyBhIiwgbGluZTogIkEgPSAiICsgbihkLmEpICsgIiDCtyAiICsgbihkLmEpICsgIiA9ICIgKyBuKGEpICsgIiBjbcKyIiwgdW5pdDogImNtwrIiLCBub3RlOiAiRGFzIFF1YWRyYXQgaGF0IGEgUmVpaGVuIHVuZCBhIFNwYWx0ZW4uIERhcnVtIGVudHN0ZWhlbiBRdWFkcmF0emVudGltZXRlci4iIH0KICAgICAgXQogICAgfTsKICB9CgogIGZ1bmN0aW9uIGNhbGNSZWN0YW5nbGUoZCkgewogICAgdmFyIHUgPSAyICogZC5hICsgMiAqIGQuYjsKICAgIHZhciBhID0gZC5hICogZC5iOwogICAgcmV0dXJuIHsKICAgICAgcGVyaW1ldGVyOiB1LAogICAgICBhcmVhOiBhLAogICAgICBmb3JtdWxhczogWwogICAgICAgIHsgbmFtZTogIlVtZmFuZyIsIGdlbmVyYWw6ICJVID0gMiDCtyBhICsgMiDCtyBiIiwgbGluZTogIlUgPSAyIMK3ICIgKyBuKGQuYSkgKyAiICsgMiDCtyAiICsgbihkLmIpICsgIiA9ICIgKyBuKHUpICsgIiBjbSIsIHVuaXQ6ICJjbSIsIG5vdGU6ICJMw6RuZ2UgdW5kIEJyZWl0ZSBrb21tZW4gYW0gUmFuZCBqZXdlaWxzIHp3ZWltYWwgdm9yLiIgfSwKICAgICAgICB7IG5hbWU6ICJGbMOkY2hlbmluaGFsdCIsIGdlbmVyYWw6ICJBID0gYSDCtyBiIiwgbGluZTogIkEgPSAiICsgbihkLmEpICsgIiDCtyAiICsgbihkLmIpICsgIiA9ICIgKyBuKGEpICsgIiBjbcKyIiwgdW5pdDogImNtwrIiLCBub3RlOiAiRGllIEZsw6RjaGUgesOkaGx0IEvDpHN0Y2hlbjogUmVpaGVuIG1hbCBTcGFsdGVuLiIgfQogICAgICBdCiAgICB9OwogIH0KCiAgZnVuY3Rpb24gY2FsY1RyaWFuZ2xlKGQpIHsKICAgIHZhciBhcmVhID0gZC5nICogZC5oIC8gMjsKICAgIHZhciBwZXJpbWV0ZXIgPSBkLmcgKyAyICogZC5zOwogICAgcmV0dXJuIHsKICAgICAgcGVyaW1ldGVyOiBwZXJpbWV0ZXIsCiAgICAgIGFyZWE6IGFyZWEsCiAgICAgIGZvcm11bGFzOiBbCiAgICAgICAgeyBuYW1lOiAiRmzDpGNoZW5pbmhhbHQiLCBnZW5lcmFsOiAiQSA9IGcgwrcgaCA6IDIiLCBsaW5lOiAiQSA9ICIgKyBuKGQuZykgKyAiIMK3ICIgKyBuKGQuaCkgKyAiIDogMiA9ICIgKyBuKGFyZWEpICsgIiBjbcKyIiwgdW5pdDogImNtwrIiLCBub3RlOiAiRGFzIERyZWllY2sgaXN0IGhhbGIgc28gZ3Jvw58gd2llIGRhcyBSZWNodGVjayBtaXQgZGVyc2VsYmVuIEdydW5kc2VpdGUgdW5kIEjDtmhlLiIgfSwKICAgICAgICB7IG5hbWU6ICJVbWZhbmciLCBnZW5lcmFsOiAiVSA9IGEgKyBiICsgYyIsIGxpbmU6ICJVID0gIiArIG4oZC5nKSArICIgKyAiICsgbihkLnMpICsgIiArICIgKyBuKGQucykgKyAiID0gIiArIG4ocGVyaW1ldGVyKSArICIgY20iLCB1bml0OiAiY20iLCBub3RlOiAiRsO8ciBkZW4gVW1mYW5nIHdlcmRlbiBkaWUgZHJlaSBSYW5kc2VpdGVuIGFkZGllcnQuIiB9CiAgICAgIF0KICAgIH07CiAgfQoKICBmdW5jdGlvbiBjYWxjUmlnaHRUcmlhbmdsZShkKSB7CiAgICB2YXIgYXJlYSA9IGQuYSAqIGQuYiAvIDI7CiAgICB2YXIgcGVyaW1ldGVyID0gZC5hICsgZC5iICsgZC5jOwogICAgcmV0dXJuIHsKICAgICAgcGVyaW1ldGVyOiBwZXJpbWV0ZXIsCiAgICAgIGFyZWE6IGFyZWEsCiAgICAgIGZvcm11bGFzOiBbCiAgICAgICAgeyBuYW1lOiAiRmzDpGNoZW5pbmhhbHQiLCBnZW5lcmFsOiAiQSA9IGEgwrcgYiA6IDIiLCBsaW5lOiAiQSA9ICIgKyBuKGQuYSkgKyAiIMK3ICIgKyBuKGQuYikgKyAiIDogMiA9ICIgKyBuKGFyZWEpICsgIiBjbcKyIiwgdW5pdDogImNtwrIiLCBub3RlOiAiRGllIHJlY2h0d2lua2xpZ2VuIFNlaXRlbiBiaWxkZW4gZWluIFJlY2h0ZWNrLiBEYXMgRHJlaWVjayBpc3QgZGF2b24gZGllIEjDpGxmdGUuIiB9LAogICAgICAgIHsgbmFtZTogIlVtZmFuZyIsIGdlbmVyYWw6ICJVID0gYSArIGIgKyBjIiwgbGluZTogIlUgPSAiICsgbihkLmEpICsgIiArICIgKyBuKGQuYikgKyAiICsgIiArIG4oZC5jKSArICIgPSAiICsgbihwZXJpbWV0ZXIpICsgIiBjbSIsIHVuaXQ6ICJjbSIsIG5vdGU6ICJBbGxlIGRyZWkgU2VpdGVuIGxpZWdlbiBhbSBSYW5kLiIgfQogICAgICBdCiAgICB9OwogIH0KCiAgZnVuY3Rpb24gY2FsY1BhcmFsbGVsb2dyYW0oZCkgewogICAgdmFyIGFyZWEgPSBkLmcgKiBkLmg7CiAgICB2YXIgcGVyaW1ldGVyID0gMiAqIGQuZyArIDIgKiBkLnM7CiAgICByZXR1cm4gewogICAgICBwZXJpbWV0ZXI6IHBlcmltZXRlciwKICAgICAgYXJlYTogYXJlYSwKICAgICAgZm9ybXVsYXM6IFsKICAgICAgICB7IG5hbWU6ICJGbMOkY2hlbmluaGFsdCIsIGdlbmVyYWw6ICJBID0gZyDCtyBoIiwgbGluZTogIkEgPSAiICsgbihkLmcpICsgIiDCtyAiICsgbihkLmgpICsgIiA9ICIgKyBuKGFyZWEpICsgIiBjbcKyIiwgdW5pdDogImNtwrIiLCBub3RlOiAiTmljaHQgZGllIHNjaHLDpGdlIFNlaXRlLCBzb25kZXJuIGRpZSBzZW5rcmVjaHRlIEjDtmhlIHrDpGhsdCBmw7xyIGRpZSBGbMOkY2hlLiIgfSwKICAgICAgICB7IG5hbWU6ICJVbWZhbmciLCBnZW5lcmFsOiAiVSA9IDIgwrcgZyArIDIgwrcgcyIsIGxpbmU6ICJVID0gMiDCtyAiICsgbihkLmcpICsgIiArIDIgwrcgIiArIG4oZC5zKSArICIgPSAiICsgbihwZXJpbWV0ZXIpICsgIiBjbSIsIHVuaXQ6ICJjbSIsIG5vdGU6ICJKZSB6d2VpIGdlZ2Vuw7xiZXJsaWVnZW5kZSBTZWl0ZW4gc2luZCBnbGVpY2ggbGFuZy4iIH0KICAgICAgXQogICAgfTsKICB9CgogIGZ1bmN0aW9uIGNhbGNSaG9tYnVzKGQpIHsKICAgIHZhciBhcmVhID0gZC5lICogZC5mIC8gMjsKICAgIHZhciBwZXJpbWV0ZXIgPSA0ICogZC5hOwogICAgcmV0dXJuIHsKICAgICAgcGVyaW1ldGVyOiBwZXJpbWV0ZXIsCiAgICAgIGFyZWE6IGFyZWEsCiAgICAgIGZvcm11bGFzOiBbCiAgICAgICAgeyBuYW1lOiAiVW1mYW5nIiwgZ2VuZXJhbDogIlUgPSA0IMK3IGEiLCBsaW5lOiAiVSA9IDQgwrcgIiArIG4oZC5hKSArICIgPSAiICsgbihwZXJpbWV0ZXIpICsgIiBjbSIsIHVuaXQ6ICJjbSIsIG5vdGU6ICJBbGxlIHZpZXIgU2VpdGVuIGVpbmVyIFJhdXRlIHNpbmQgZ2xlaWNoIGxhbmcuIiB9LAogICAgICAgIHsgbmFtZTogIkZsw6RjaGVuaW5oYWx0IiwgZ2VuZXJhbDogIkEgPSBlIMK3IGYgOiAyIiwgbGluZTogIkEgPSAiICsgbihkLmUpICsgIiDCtyAiICsgbihkLmYpICsgIiA6IDIgPSAiICsgbihhcmVhKSArICIgY23CsiIsIHVuaXQ6ICJjbcKyIiwgbm90ZTogIkRpZSBEaWFnb25hbGVuIHplcmxlZ2VuIGRpZSBSYXV0ZSBpbiBwYXNzZW5kZSBEcmVpZWNrZS4iIH0KICAgICAgXQogICAgfTsKICB9CgogIGZ1bmN0aW9uIGNhbGNUcmFwZXpvaWQoZCkgewogICAgdmFyIGFyZWEgPSAoZC5hICsgZC5jKSAqIGQuaCAvIDI7CiAgICB2YXIgcGVyaW1ldGVyID0gZC5hICsgZC5jICsgMiAqIGQuczsKICAgIHJldHVybiB7CiAgICAgIHBlcmltZXRlcjogcGVyaW1ldGVyLAogICAgICBhcmVhOiBhcmVhLAogICAgICBmb3JtdWxhczogWwogICAgICAgIHsgbmFtZTogIkZsw6RjaGVuaW5oYWx0IiwgZ2VuZXJhbDogIkEgPSAoYSArIGMpIMK3IGggOiAyIiwgbGluZTogIkEgPSAoIiArIG4oZC5hKSArICIgKyAiICsgbihkLmMpICsgIikgwrcgIiArIG4oZC5oKSArICIgOiAyID0gIiArIG4oYXJlYSkgKyAiIGNtwrIiLCB1bml0OiAiY23CsiIsIG5vdGU6ICJEaWUgcGFyYWxsZWxlbiBTZWl0ZW4gYSB1bmQgYyB3ZXJkZW4genVlcnN0IHp1c2FtbWVuIGJldHJhY2h0ZXQuIiB9LAogICAgICAgIHsgbmFtZTogIlVtZmFuZyIsIGdlbmVyYWw6ICJVID0gYSArIGIgKyBjICsgZCIsIGxpbmU6ICJVID0gIiArIG4oZC5hKSArICIgKyAiICsgbihkLnMpICsgIiArICIgKyBuKGQuYykgKyAiICsgIiArIG4oZC5zKSArICIgPSAiICsgbihwZXJpbWV0ZXIpICsgIiBjbSIsIHVuaXQ6ICJjbSIsIG5vdGU6ICJCZWltIFVtZmFuZyB6w6RobHQgZGVyIGdhbnplIFJhbmQuIiB9CiAgICAgIF0KICAgIH07CiAgfQoKICBmdW5jdGlvbiBjYWxjQ29tcG9zaXRlKGQpIHsKICAgIHZhciBjdXRDID0gTWF0aC5taW4oZC5jLCBkLmEgLSAxKTsKICAgIHZhciBjdXREID0gTWF0aC5taW4oZC5kLCBkLmIgLSAxKTsKICAgIHZhciBhcmVhID0gZC5hICogZC5iIC0gY3V0QyAqIGN1dEQ7CiAgICB2YXIgcGVyaW1ldGVyID0gMiAqIGQuYSArIDIgKiBkLmI7CiAgICByZXR1cm4gewogICAgICBwZXJpbWV0ZXI6IHBlcmltZXRlciwKICAgICAgYXJlYTogYXJlYSwKICAgICAgZm9ybXVsYXM6IFsKICAgICAgICB7IG5hbWU6ICJGbMOkY2hlbmluaGFsdCIsIGdlbmVyYWw6ICJBID0gYSDCtyBiIC0gYyDCtyBkIiwgbGluZTogIkEgPSAiICsgbihkLmEpICsgIiDCtyAiICsgbihkLmIpICsgIiAtICIgKyBuKGN1dEMpICsgIiDCtyAiICsgbihjdXREKSArICIgPSAiICsgbihhcmVhKSArICIgY23CsiIsIHVuaXQ6ICJjbcKyIiwgbm90ZTogIkVyZ8OkbnplIHp1bSBncm/Dn2VuIFJlY2h0ZWNrIHVuZCB6aWVoZSBkZW4gZmVobGVuZGVuIEF1c3NjaG5pdHQgYWIuIiB9LAogICAgICAgIHsgbmFtZTogIlN0cmF0ZWdpZSIsIGdlbmVyYWw6ICJaZXJsZWdlbiBvZGVyIGVyZ8OkbnplbiIsIGxpbmU6ICJHcm/Dn2VzIFJlY2h0ZWNrOiAiICsgbihkLmEgKiBkLmIpICsgIiBjbcKyLCBBdXNzY2huaXR0OiAiICsgbihjdXRDICogY3V0RCkgKyAiIGNtwrIiLCB1bml0OiAiY23CsiIsIG5vdGU6ICJCZWlkZSBXZWdlIHNpbmQgZXJsYXVidCwgd2ljaHRpZyBpc3QgZWluIMO8YmVyc2ljaHRsaWNoZXIgUGxhbi4iIH0KICAgICAgXQogICAgfTsKICB9CgogIGZ1bmN0aW9uIGNhbGNDaXJjbGUoZCkgewogICAgdmFyIHBlcmltZXRlciA9IDIgKiBQSSAqIGQucjsKICAgIHZhciBhcmVhID0gUEkgKiBkLnIgKiBkLnI7CiAgICByZXR1cm4gewogICAgICBwZXJpbWV0ZXI6IHBlcmltZXRlciwKICAgICAgYXJlYTogYXJlYSwKICAgICAgZm9ybXVsYXM6IFsKICAgICAgICB7IG5hbWU6ICJVbWZhbmciLCBnZW5lcmFsOiAiVSA9IDIgwrcgz4AgwrcgciIsIGxpbmU6ICJVID0gMiDCtyAzLDE0IMK3ICIgKyBuKGQucikgKyAiID0gIiArIG4ocGVyaW1ldGVyKSArICIgY20iLCB1bml0OiAiY20iLCBub3RlOiAiQXVzYmxpY2s6IERlciBVbWZhbmcgbGllZ3QgYW0gS3JlaXNyYW5kLiDPgCBpc3QgdW5nZWbDpGhyIDMsMTQuIiB9LAogICAgICAgIHsgbmFtZTogIkZsw6RjaGVuaW5oYWx0IiwgZ2VuZXJhbDogIkEgPSDPgCDCtyBywrIiLCBsaW5lOiAiQSA9IDMsMTQgwrcgIiArIG4oZC5yKSArICLCsiA9ICIgKyBuKGFyZWEpICsgIiBjbcKyIiwgdW5pdDogImNtwrIiLCBub3RlOiAiRGVyIFJhZGl1cyBzdGVja3QgendlaW1hbCBpbiBywrIuIiB9CiAgICAgIF0KICAgIH07CiAgfQoKICBmdW5jdGlvbiBjYWxjQ3ViZShkKSB7CiAgICB2YXIgdm9sdW1lID0gZC5hICogZC5hICogZC5hOwogICAgdmFyIHN1cmZhY2UgPSA2ICogZC5hICogZC5hOwogICAgcmV0dXJuIHsKICAgICAgdm9sdW1lOiB2b2x1bWUsCiAgICAgIHN1cmZhY2U6IHN1cmZhY2UsCiAgICAgIGZvcm11bGFzOiBbCiAgICAgICAgeyBuYW1lOiAiVm9sdW1lbiIsIGdlbmVyYWw6ICJWID0gYSDCtyBhIMK3IGEiLCBsaW5lOiAiViA9ICIgKyBuKGQuYSkgKyAiIMK3ICIgKyBuKGQuYSkgKyAiIMK3ICIgKyBuKGQuYSkgKyAiID0gIiArIG4odm9sdW1lKSArICIgY23CsyIsIHVuaXQ6ICJjbcKzIiwgbm90ZTogIkR1IHrDpGhsc3QgRWluaGVpdHN3w7xyZmVsOiBMw6RuZ2UgbWFsIEJyZWl0ZSBtYWwgSMO2aGUuIiB9LAogICAgICAgIHsgbmFtZTogIk9iZXJmbMOkY2hlIGFscyBadXNhdHoiLCBnZW5lcmFsOiAiTyA9IDYgwrcgYSDCtyBhIiwgbGluZTogIk8gPSA2IMK3ICIgKyBuKGQuYSkgKyAiIMK3ICIgKyBuKGQuYSkgKyAiID0gIiArIG4oc3VyZmFjZSkgKyAiIGNtwrIiLCB1bml0OiAiY23CsiIsIG5vdGU6ICJEaWUgT2JlcmZsw6RjaGUgYmVzdGVodCBhdXMgc2VjaHMgUXVhZHJhdGZsw6RjaGVuLiIgfQogICAgICBdCiAgICB9OwogIH0KCiAgZnVuY3Rpb24gY2FsY0N1Ym9pZChkKSB7CiAgICB2YXIgdm9sdW1lID0gZC5sICogZC5iICogZC5oOwogICAgdmFyIHN1cmZhY2UgPSAyICogKGQubCAqIGQuYiArIGQubCAqIGQuaCArIGQuYiAqIGQuaCk7CiAgICByZXR1cm4gewogICAgICB2b2x1bWU6IHZvbHVtZSwKICAgICAgc3VyZmFjZTogc3VyZmFjZSwKICAgICAgZm9ybXVsYXM6IFsKICAgICAgICB7IG5hbWU6ICJWb2x1bWVuIiwgZ2VuZXJhbDogIlYgPSBsIMK3IGIgwrcgaCIsIGxpbmU6ICJWID0gIiArIG4oZC5sKSArICIgwrcgIiArIG4oZC5iKSArICIgwrcgIiArIG4oZC5oKSArICIgPSAiICsgbih2b2x1bWUpICsgIiBjbcKzIiwgdW5pdDogImNtwrMiLCBub3RlOiAiRGllIEdydW5kZmzDpGNoZSBsIMK3IGIgd2lyZCBoLW1hbCBnZXN0YXBlbHQuIiB9LAogICAgICAgIHsgbmFtZTogIk9iZXJmbMOkY2hlIGFscyBadXNhdHoiLCBnZW5lcmFsOiAiTyA9IDIgwrcgKGzCt2IgKyBswrdoICsgYsK3aCkiLCBsaW5lOiAiTyA9IDIgwrcgKCIgKyBuKGQubCAqIGQuYikgKyAiICsgIiArIG4oZC5sICogZC5oKSArICIgKyAiICsgbihkLmIgKiBkLmgpICsgIikgPSAiICsgbihzdXJmYWNlKSArICIgY23CsiIsIHVuaXQ6ICJjbcKyIiwgbm90ZTogIkplIHp3ZWkgZ2VnZW7DvGJlcmxpZWdlbmRlIFJlY2h0ZWNrc2Zsw6RjaGVuIHNpbmQgZ2xlaWNoIGdyb8OfLiIgfQogICAgICBdCiAgICB9OwogIH0KCiAgZnVuY3Rpb24gY2FsY1ByaXNtKGQpIHsKICAgIHZhciBiYXNlID0gZC5nICogZC5oIC8gMjsKICAgIHZhciB2b2x1bWUgPSBiYXNlICogZC5rOwogICAgcmV0dXJuIHsKICAgICAgYmFzZUFyZWE6IGJhc2UsCiAgICAgIHZvbHVtZTogdm9sdW1lLAogICAgICBmb3JtdWxhczogWwogICAgICAgIHsgbmFtZTogIkdydW5kZmzDpGNoZSIsIGdlbmVyYWw6ICJHID0gZyDCtyBoIDogMiIsIGxpbmU6ICJHID0gIiArIG4oZC5nKSArICIgwrcgIiArIG4oZC5oKSArICIgOiAyID0gIiArIG4oYmFzZSkgKyAiIGNtwrIiLCB1bml0OiAiY23CsiIsIG5vdGU6ICJEaWUgR3J1bmRmbMOkY2hlIGlzdCBoaWVyIGVpbiBEcmVpZWNrLiIgfSwKICAgICAgICB7IG5hbWU6ICJWb2x1bWVuIiwgZ2VuZXJhbDogIlYgPSBHIMK3IGsiLCBsaW5lOiAiViA9ICIgKyBuKGJhc2UpICsgIiDCtyAiICsgbihkLmspICsgIiA9ICIgKyBuKHZvbHVtZSkgKyAiIGNtwrMiLCB1bml0OiAiY23CsyIsIG5vdGU6ICJEaWUgR3J1bmRmbMOkY2hlIHdpcmQgayBjbSBpbiBkaWUgVGllZmUgZ2VzdGFwZWx0LiIgfQogICAgICBdCiAgICB9OwogIH0KCiAgZnVuY3Rpb24gY2FsY0N5bGluZGVyKGQpIHsKICAgIHZhciBiYXNlID0gUEkgKiBkLnIgKiBkLnI7CiAgICB2YXIgdm9sdW1lID0gYmFzZSAqIGQuaDsKICAgIHJldHVybiB7CiAgICAgIGJhc2VBcmVhOiBiYXNlLAogICAgICB2b2x1bWU6IHZvbHVtZSwKICAgICAgZm9ybXVsYXM6IFsKICAgICAgICB7IG5hbWU6ICJHcnVuZGZsw6RjaGUiLCBnZW5lcmFsOiAiRyA9IM+AIMK3IHLCsiIsIGxpbmU6ICJHID0gMywxNCDCtyAiICsgbihkLnIpICsgIsKyID0gIiArIG4oYmFzZSkgKyAiIGNtwrIiLCB1bml0OiAiY23CsiIsIG5vdGU6ICJBdXNibGljazogRGllIEdydW5kZmzDpGNoZSBpc3QgZWluIEtyZWlzLiIgfSwKICAgICAgICB7IG5hbWU6ICJWb2x1bWVuIiwgZ2VuZXJhbDogIlYgPSDPgCDCtyBywrIgwrcgaCIsIGxpbmU6ICJWID0gIiArIG4oYmFzZSkgKyAiIMK3ICIgKyBuKGQuaCkgKyAiID0gIiArIG4odm9sdW1lKSArICIgY23CsyIsIHVuaXQ6ICJjbcKzIiwgbm90ZTogIkRlciBLcmVpcyB3aXJkIHdpZSBlaW5lIFJvbGxlIGluIGRpZSBIw7ZoZSBnZXN0YXBlbHQuIiB9CiAgICAgIF0KICAgIH07CiAgfQoKICBmdW5jdGlvbiBjYWxjUHlyYW1pZChkKSB7CiAgICB2YXIgYmFzZSA9IGQuYSAqIGQuYTsKICAgIHZhciB2b2x1bWUgPSBiYXNlICogZC5oIC8gMzsKICAgIHJldHVybiB7CiAgICAgIGJhc2VBcmVhOiBiYXNlLAogICAgICB2b2x1bWU6IHZvbHVtZSwKICAgICAgZm9ybXVsYXM6IFsKICAgICAgICB7IG5hbWU6ICJHcnVuZGZsw6RjaGUiLCBnZW5lcmFsOiAiRyA9IGEgwrcgYSIsIGxpbmU6ICJHID0gIiArIG4oZC5hKSArICIgwrcgIiArIG4oZC5hKSArICIgPSAiICsgbihiYXNlKSArICIgY23CsiIsIHVuaXQ6ICJjbcKyIiwgbm90ZTogIkF1c2JsaWNrOiBEaWUgR3J1bmRmbMOkY2hlIGlzdCBlaW4gUXVhZHJhdC4iIH0sCiAgICAgICAgeyBuYW1lOiAiVm9sdW1lbiIsIGdlbmVyYWw6ICJWID0gRyDCtyBoIDogMyIsIGxpbmU6ICJWID0gIiArIG4oYmFzZSkgKyAiIMK3ICIgKyBuKGQuaCkgKyAiIDogMyA9ICIgKyBuKHZvbHVtZSkgKyAiIGNtwrMiLCB1bml0OiAiY23CsyIsIG5vdGU6ICJJbSBWZXJnbGVpY2ggenVtIFByaXNtYSBtaXQgZ2xlaWNoZXIgR3J1bmRmbMOkY2hlIHVuZCBIw7ZoZSB3aXJkIGR1cmNoIDMgZ2V0ZWlsdC4iIH0KICAgICAgXQogICAgfTsKICB9CgogIGZ1bmN0aW9uIGNhbGNDb25lKGQpIHsKICAgIHZhciBiYXNlID0gUEkgKiBkLnIgKiBkLnI7CiAgICB2YXIgdm9sdW1lID0gYmFzZSAqIGQuaCAvIDM7CiAgICByZXR1cm4gewogICAgICBiYXNlQXJlYTogYmFzZSwKICAgICAgdm9sdW1lOiB2b2x1bWUsCiAgICAgIGZvcm11bGFzOiBbCiAgICAgICAgeyBuYW1lOiAiR3J1bmRmbMOkY2hlIiwgZ2VuZXJhbDogIkcgPSDPgCDCtyBywrIiLCBsaW5lOiAiRyA9IDMsMTQgwrcgIiArIG4oZC5yKSArICLCsiA9ICIgKyBuKGJhc2UpICsgIiBjbcKyIiwgdW5pdDogImNtwrIiLCBub3RlOiAiQXVzYmxpY2s6IERpZSBHcnVuZGZsw6RjaGUgaXN0IGVpbiBLcmVpcy4iIH0sCiAgICAgICAgeyBuYW1lOiAiVm9sdW1lbiIsIGdlbmVyYWw6ICJWID0gz4AgwrcgcsKyIMK3IGggOiAzIiwgbGluZTogIlYgPSAiICsgbihiYXNlKSArICIgwrcgIiArIG4oZC5oKSArICIgOiAzID0gIiArIG4odm9sdW1lKSArICIgY23CsyIsIHVuaXQ6ICJjbcKzIiwgbm90ZTogIkRlciBLZWdlbCBwYXNzdCBnZWRhbmtsaWNoIGluIGVpbmVuIFp5bGluZGVyIHVuZCB3aXJkIGR1cmNoIDMgZ2VyZWNobmV0LiIgfQogICAgICBdCiAgICB9OwogIH0KCiAgZnVuY3Rpb24gY2FsY1NwaGVyZShkKSB7CiAgICB2YXIgc3VyZmFjZSA9IDQgKiBQSSAqIGQuciAqIGQucjsKICAgIHZhciB2b2x1bWUgPSA0ICogUEkgKiBkLnIgKiBkLnIgKiBkLnIgLyAzOwogICAgcmV0dXJuIHsKICAgICAgdm9sdW1lOiB2b2x1bWUsCiAgICAgIHN1cmZhY2U6IHN1cmZhY2UsCiAgICAgIGZvcm11bGFzOiBbCiAgICAgICAgeyBuYW1lOiAiVm9sdW1lbiIsIGdlbmVyYWw6ICJWID0gNCA6IDMgwrcgz4AgwrcgcsKzIiwgbGluZTogIlYgPSA0IDogMyDCtyAzLDE0IMK3ICIgKyBuKGQucikgKyAiwrMgPSAiICsgbih2b2x1bWUpICsgIiBjbcKzIiwgdW5pdDogImNtwrMiLCBub3RlOiAiQXVzYmxpY2s6IFdlaWwgciBkcmVpbWFsIHZvcmtvbW10LCB3w6RjaHN0IGRhcyBWb2x1bWVuIHNlaHIgc3RhcmsuIiB9LAogICAgICAgIHsgbmFtZTogIk9iZXJmbMOkY2hlIGFscyBadXNhdHoiLCBnZW5lcmFsOiAiTyA9IDQgwrcgz4AgwrcgcsKyIiwgbGluZTogIk8gPSA0IMK3IDMsMTQgwrcgIiArIG4oZC5yKSArICLCsiA9ICIgKyBuKHN1cmZhY2UpICsgIiBjbcKyIiwgdW5pdDogImNtwrIiLCBub3RlOiAiRGllIEt1Z2Vsb2JlcmZsw6RjaGUgaXN0IGtlaW5lIGViZW5lIEZsw6RjaGUsIGFiZXIgZGllIEVpbmhlaXQgYmxlaWJ0IGNtwrIuIiB9CiAgICAgIF0KICAgIH07CiAgfQoKICBmdW5jdGlvbiBkcmF3U2hhcGVDYW52YXMoKSB7CiAgICB2YXIgc2hhcGUgPSBnZXRTaGFwZShzdGF0ZS5zZWxlY3RlZFNoYXBlKTsKICAgIGlmICghc2hhcGUgfHwgIWVsZW1lbnRzLmNhbnZhcykgewogICAgICByZXR1cm47CiAgICB9CiAgICB2YXIgY2FudmFzID0gZWxlbWVudHMuY2FudmFzOwogICAgdmFyIGJveCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciB3aWR0aCA9IE1hdGgubWF4KDMyMCwgTWF0aC5yb3VuZChib3gud2lkdGggfHwgOTIwKSk7CiAgICB2YXIgaGVpZ2h0ID0gTWF0aC5tYXgoMjgwLCBNYXRoLnJvdW5kKGJveC5oZWlnaHQgfHwgNTYwKSk7CiAgICB2YXIgcmF0aW8gPSAxOwogICAgaWYgKHR5cGVvZiBkZXZpY2VQaXhlbFJhdGlvID09PSAibnVtYmVyIikgewogICAgICByYXRpbyA9IE1hdGgubWF4KDEsIE1hdGgubWluKDIuNSwgZGV2aWNlUGl4ZWxSYXRpbykpOwogICAgfQogICAgdmFyIHBpeGVsV2lkdGggPSBNYXRoLnJvdW5kKHdpZHRoICogcmF0aW8pOwogICAgdmFyIHBpeGVsSGVpZ2h0ID0gTWF0aC5yb3VuZChoZWlnaHQgKiByYXRpbyk7CiAgICBpZiAoY2FudmFzLndpZHRoICE9PSBwaXhlbFdpZHRoIHx8IGNhbnZhcy5oZWlnaHQgIT09IHBpeGVsSGVpZ2h0KSB7CiAgICAgIGNhbnZhcy53aWR0aCA9IHBpeGVsV2lkdGg7CiAgICAgIGNhbnZhcy5oZWlnaHQgPSBwaXhlbEhlaWdodDsKICAgIH0KICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKICAgIGN0eC5zZXRUcmFuc2Zvcm0ocmF0aW8sIDAsIDAsIHJhdGlvLCAwLCAwKTsKICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7CiAgICBkcmF3UGFwZXJHcmlkKGN0eCwgd2lkdGgsIGhlaWdodCk7CiAgICBzaGFwZS5yZW5kZXJGdW5jdGlvbihjdHgsIHdpZHRoLCBoZWlnaHQsIGdldFZhbHVlcyhzaGFwZS5pZCksIHNoYXBlLmNhbGN1bGF0aW9uRnVuY3Rpb24oZ2V0VmFsdWVzKHNoYXBlLmlkKSkpOwogIH0KCiAgZnVuY3Rpb24gZHJhd1BhcGVyR3JpZChjdHgsIHcsIGgpIHsKICAgIGN0eC5maWxsU3R5bGUgPSAiI2ZmZmZmZiI7CiAgICBjdHguZmlsbFJlY3QoMCwgMCwgdywgaCk7CiAgICBjdHguc3Ryb2tlU3R5bGUgPSAiI2UzZWRmNiI7CiAgICBjdHgubGluZVdpZHRoID0gMTsKICAgIGZvciAodmFyIHggPSAyNDsgeCA8IHc7IHggKz0gMjQpIHsKICAgICAgY3R4LmJlZ2luUGF0aCgpOwogICAgICBjdHgubW92ZVRvKHgsIDApOwogICAgICBjdHgubGluZVRvKHgsIGgpOwogICAgICBjdHguc3Ryb2tlKCk7CiAgICB9CiAgICBmb3IgKHZhciB5ID0gMjQ7IHkgPCBoOyB5ICs9IDI0KSB7CiAgICAgIGN0eC5iZWdpblBhdGgoKTsKICAgICAgY3R4Lm1vdmVUbygwLCB5KTsKICAgICAgY3R4LmxpbmVUbyh3LCB5KTsKICAgICAgY3R4LnN0cm9rZSgpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gZHJhd1NxdWFyZShjdHgsIHcsIGgsIGQpIHsKICAgIHZhciBzaXplID0gTWF0aC5taW4odyAtIDE3MCwgaCAtIDE1MCwgZC5hICogMzgpOwogICAgdmFyIHggPSAodyAtIHNpemUpIC8gMjsKICAgIHZhciB5ID0gKGggLSBzaXplKSAvIDI7CiAgICBkcmF3R3JpZEluc2lkZShjdHgsIHgsIHksIHNpemUsIHNpemUsIGQuYSwgZC5hKTsKICAgIGZpbGxBbmRTdHJva2UoY3R4LCBmdW5jdGlvbiAoKSB7CiAgICAgIGN0eC5yZWN0KHgsIHksIHNpemUsIHNpemUpOwogICAgfSwgIiNkOWY1ZjEiLCAiIzBmNzY2ZSIsIDQpOwogICAgZHJhd0RpbWVuc2lvbihjdHgsIHgsIHkgKyBzaXplICsgMzQsIHggKyBzaXplLCB5ICsgc2l6ZSArIDM0LCAiYSA9ICIgKyBuKGQuYSkgKyAiIGNtIik7CiAgICBkcmF3RGltZW5zaW9uKGN0eCwgeCAtIDMyLCB5LCB4IC0gMzIsIHkgKyBzaXplLCAiYSIpOwogICAgZHJhd0xhYmVsKGN0eCwgeCArIHNpemUgLyAyLCB5ICsgc2l6ZSAvIDIsICJBID0gIiArIG4oZC5hICogZC5hKSArICIgY23CsiIpOwogIH0KCiAgZnVuY3Rpb24gZHJhd1JlY3RhbmdsZShjdHgsIHcsIGgsIGQpIHsKICAgIHZhciBzY2FsZSA9IE1hdGgubWluKCh3IC0gMTkwKSAvIGQuYSwgKGggLSAxNjApIC8gZC5iLCAzNCk7CiAgICB2YXIgcncgPSBkLmEgKiBzY2FsZTsKICAgIHZhciByaCA9IGQuYiAqIHNjYWxlOwogICAgdmFyIHggPSAodyAtIHJ3KSAvIDI7CiAgICB2YXIgeSA9IChoIC0gcmgpIC8gMjsKICAgIGRyYXdHcmlkSW5zaWRlKGN0eCwgeCwgeSwgcncsIHJoLCBkLmEsIGQuYik7CiAgICBmaWxsQW5kU3Ryb2tlKGN0eCwgZnVuY3Rpb24gKCkgewogICAgICBjdHgucmVjdCh4LCB5LCBydywgcmgpOwogICAgfSwgIiNlN2VlZmMiLCAiIzI0NTRhNiIsIDQpOwogICAgZHJhd0RpbWVuc2lvbihjdHgsIHgsIHkgKyByaCArIDM0LCB4ICsgcncsIHkgKyByaCArIDM0LCAiYSA9ICIgKyBuKGQuYSkgKyAiIGNtIik7CiAgICBkcmF3RGltZW5zaW9uKGN0eCwgeCAtIDMyLCB5LCB4IC0gMzIsIHkgKyByaCwgImIgPSAiICsgbihkLmIpICsgIiBjbSIpOwogICAgZHJhd0xhYmVsKGN0eCwgeCArIHJ3IC8gMiwgeSArIHJoIC8gMiwgIkEgPSAiICsgbihkLmEgKiBkLmIpICsgIiBjbcKyIik7CiAgfQoKICBmdW5jdGlvbiBkcmF3VHJpYW5nbGUoY3R4LCB3LCBoLCBkKSB7CiAgICB2YXIgc2NhbGUgPSBNYXRoLm1pbigodyAtIDE5MCkgLyBkLmcsIChoIC0gMTcwKSAvIGQuaCwgMzQpOwogICAgdmFyIGJhc2UgPSBkLmcgKiBzY2FsZTsKICAgIHZhciB0YWxsID0gZC5oICogc2NhbGU7CiAgICB2YXIgeCA9ICh3IC0gYmFzZSkgLyAyOwogICAgdmFyIHkgPSAoaCArIHRhbGwpIC8gMiAtIDMyOwogICAgdmFyIGFwZXhYID0geCArIGJhc2UgKiAwLjU4OwogICAgdmFyIGFwZXhZID0geSAtIHRhbGw7CiAgICBmaWxsQW5kU3Ryb2tlKGN0eCwgZnVuY3Rpb24gKCkgewogICAgICBjdHgucmVjdCh4LCBhcGV4WSwgYmFzZSwgdGFsbCk7CiAgICB9LCAicmdiYSgzNiw4NCwxNjYsMC4wNCkiLCAiIzkwYThiZiIsIDEpOwogICAgZHJhd0Rhc2hlZChjdHgsIGFwZXhYLCBhcGV4WSwgYXBleFgsIHksICIjOWE2YTA1Iik7CiAgICBmaWxsQW5kU3Ryb2tlKGN0eCwgZnVuY3Rpb24gKCkgewogICAgICBjdHgubW92ZVRvKHgsIHkpOwogICAgICBjdHgubGluZVRvKHggKyBiYXNlLCB5KTsKICAgICAgY3R4LmxpbmVUbyhhcGV4WCwgYXBleFkpOwogICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICB9LCAiI2Q5ZjVmMSIsICIjMGY3NjZlIiwgNCk7CiAgICBkcmF3RGltZW5zaW9uKGN0eCwgeCwgeSArIDM0LCB4ICsgYmFzZSwgeSArIDM0LCAiZyA9ICIgKyBuKGQuZykgKyAiIGNtIik7CiAgICBkcmF3RGltZW5zaW9uKGN0eCwgYXBleFggKyAyOCwgYXBleFksIGFwZXhYICsgMjgsIHksICJoID0gIiArIG4oZC5oKSArICIgY20iKTsKICAgIGRyYXdMYWJlbChjdHgsIHggKyBiYXNlICogMC41LCB5IC0gdGFsbCAqIDAuMzcsICJBID0gZyDCtyBoIDogMiIpOwogIH0KCiAgZnVuY3Rpb24gZHJhd1JpZ2h0VHJpYW5nbGUoY3R4LCB3LCBoLCBkKSB7CiAgICB2YXIgc2NhbGUgPSBNYXRoLm1pbigodyAtIDE5MCkgLyBkLmEsIChoIC0gMTYwKSAvIGQuYiwgMzQpOwogICAgdmFyIHJ3ID0gZC5hICogc2NhbGU7CiAgICB2YXIgcmggPSBkLmIgKiBzY2FsZTsKICAgIHZhciB4ID0gKHcgLSBydykgLyAyOwogICAgdmFyIHkgPSAoaCArIHJoKSAvIDIgLSAyNDsKICAgIGZpbGxBbmRTdHJva2UoY3R4LCBmdW5jdGlvbiAoKSB7CiAgICAgIGN0eC5yZWN0KHgsIHkgLSByaCwgcncsIHJoKTsKICAgIH0sICJyZ2JhKDM2LDg0LDE2NiwwLjA0KSIsICIjOTBhOGJmIiwgMSk7CiAgICBmaWxsQW5kU3Ryb2tlKGN0eCwgZnVuY3Rpb24gKCkgewogICAgICBjdHgubW92ZVRvKHgsIHkpOwogICAgICBjdHgubGluZVRvKHggKyBydywgeSk7CiAgICAgIGN0eC5saW5lVG8oeCwgeSAtIHJoKTsKICAgICAgY3R4LmNsb3NlUGF0aCgpOwogICAgfSwgIiNlN2VlZmMiLCAiIzI0NTRhNiIsIDQpOwogICAgZHJhd1JpZ2h0QW5nbGUoY3R4LCB4LCB5LCAyOCk7CiAgICBkcmF3RGltZW5zaW9uKGN0eCwgeCwgeSArIDM0LCB4ICsgcncsIHkgKyAzNCwgImEgPSAiICsgbihkLmEpICsgIiBjbSIpOwogICAgZHJhd0RpbWVuc2lvbihjdHgsIHggLSAzMiwgeSAtIHJoLCB4IC0gMzIsIHksICJiID0gIiArIG4oZC5iKSArICIgY20iKTsKICAgIGRyYXdMYWJlbChjdHgsIHggKyBydyAqIDAuMzgsIHkgLSByaCAqIDAuMzIsICJoYWxiZXMgUmVjaHRlY2siKTsKICB9CgogIGZ1bmN0aW9uIGRyYXdQYXJhbGxlbG9ncmFtKGN0eCwgdywgaCwgZCkgewogICAgdmFyIHNjYWxlID0gTWF0aC5taW4oKHcgLSAyMjApIC8gZC5nLCAoaCAtIDE3MCkgLyBkLmgsIDM0KTsKICAgIHZhciBiYXNlID0gZC5nICogc2NhbGU7CiAgICB2YXIgdGFsbCA9IGQuaCAqIHNjYWxlOwogICAgdmFyIHNrZXcgPSBNYXRoLm1pbig5MCwgTWF0aC5tYXgoMzYsIGJhc2UgKiAwLjI0KSk7CiAgICB2YXIgeCA9ICh3IC0gYmFzZSAtIHNrZXcpIC8gMjsKICAgIHZhciB5ID0gKGggKyB0YWxsKSAvIDIgLSAyNjsKICAgIGZpbGxBbmRTdHJva2UoY3R4LCBmdW5jdGlvbiAoKSB7CiAgICAgIGN0eC5tb3ZlVG8oeCwgeSk7CiAgICAgIGN0eC5saW5lVG8oeCArIGJhc2UsIHkpOwogICAgICBjdHgubGluZVRvKHggKyBiYXNlICsgc2tldywgeSAtIHRhbGwpOwogICAgICBjdHgubGluZVRvKHggKyBza2V3LCB5IC0gdGFsbCk7CiAgICAgIGN0eC5jbG9zZVBhdGgoKTsKICAgIH0sICIjZmZmNGQyIiwgIiM5YTZhMDUiLCA0KTsKICAgIGRyYXdEYXNoZWQoY3R4LCB4ICsgc2tldywgeSAtIHRhbGwsIHggKyBza2V3LCB5LCAiIzlhNmEwNSIpOwogICAgZHJhd0RpbWVuc2lvbihjdHgsIHgsIHkgKyAzNCwgeCArIGJhc2UsIHkgKyAzNCwgImcgPSAiICsgbihkLmcpICsgIiBjbSIpOwogICAgZHJhd0RpbWVuc2lvbihjdHgsIHggKyBza2V3ICsgMjgsIHkgLSB0YWxsLCB4ICsgc2tldyArIDI4LCB5LCAiaCA9ICIgKyBuKGQuaCkgKyAiIGNtIik7CiAgICBkcmF3TGFiZWwoY3R4LCB4ICsgYmFzZSAqIDAuNTQsIHkgLSB0YWxsICogMC41MiwgIkEgPSBnIMK3IGgiKTsKICB9CgogIGZ1bmN0aW9uIGRyYXdSaG9tYnVzKGN0eCwgdywgaCwgZCkgewogICAgdmFyIHNjYWxlID0gTWF0aC5taW4oKHcgLSAxOTApIC8gZC5lLCAoaCAtIDE2MCkgLyBkLmYsIDMyKTsKICAgIHZhciBydyA9IGQuZSAqIHNjYWxlOwogICAgdmFyIHJoID0gZC5mICogc2NhbGU7CiAgICB2YXIgY3ggPSB3IC8gMjsKICAgIHZhciBjeSA9IGggLyAyOwogICAgZmlsbEFuZFN0cm9rZShjdHgsIGZ1bmN0aW9uICgpIHsKICAgICAgY3R4Lm1vdmVUbyhjeCwgY3kgLSByaCAvIDIpOwogICAgICBjdHgubGluZVRvKGN4ICsgcncgLyAyLCBjeSk7CiAgICAgIGN0eC5saW5lVG8oY3gsIGN5ICsgcmggLyAyKTsKICAgICAgY3R4LmxpbmVUbyhjeCAtIHJ3IC8gMiwgY3kpOwogICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICB9LCAiI2Q5ZjVmMSIsICIjMGY3NjZlIiwgNCk7CiAgICBkcmF3RGFzaGVkKGN0eCwgY3ggLSBydyAvIDIsIGN5LCBjeCArIHJ3IC8gMiwgY3ksICIjMjQ1NGE2Iik7CiAgICBkcmF3RGFzaGVkKGN0eCwgY3gsIGN5IC0gcmggLyAyLCBjeCwgY3kgKyByaCAvIDIsICIjMjQ1NGE2Iik7CiAgICBkcmF3RGltZW5zaW9uKGN0eCwgY3ggLSBydyAvIDIsIGN5ICsgcmggLyAyICsgMzQsIGN4ICsgcncgLyAyLCBjeSArIHJoIC8gMiArIDM0LCAiZSA9ICIgKyBuKGQuZSkgKyAiIGNtIik7CiAgICBkcmF3RGltZW5zaW9uKGN0eCwgY3ggKyBydyAvIDIgKyAzMiwgY3kgLSByaCAvIDIsIGN4ICsgcncgLyAyICsgMzIsIGN5ICsgcmggLyAyLCAiZiA9ICIgKyBuKGQuZikgKyAiIGNtIik7CiAgICBkcmF3TGFiZWwoY3R4LCBjeCwgY3ksICJBID0gZSDCtyBmIDogMiIpOwogIH0KCiAgZnVuY3Rpb24gZHJhd1RyYXBlem9pZChjdHgsIHcsIGgsIGQpIHsKICAgIHZhciBzY2FsZSA9IE1hdGgubWluKCh3IC0gMjEwKSAvIE1hdGgubWF4KGQuYSwgZC5jKSwgKGggLSAxNzApIC8gZC5oLCAzMik7CiAgICB2YXIgYm90dG9tID0gZC5hICogc2NhbGU7CiAgICB2YXIgdXBwZXIgPSBkLmMgKiBzY2FsZTsKICAgIHZhciB0YWxsID0gZC5oICogc2NhbGU7CiAgICB2YXIgeCA9ICh3IC0gYm90dG9tKSAvIDI7CiAgICB2YXIgeSA9IChoICsgdGFsbCkgLyAyIC0gMjg7CiAgICB2YXIgdXBwZXJYID0geCArIChib3R0b20gLSB1cHBlcikgLyAyOwogICAgZmlsbEFuZFN0cm9rZShjdHgsIGZ1bmN0aW9uICgpIHsKICAgICAgY3R4Lm1vdmVUbyh4LCB5KTsKICAgICAgY3R4LmxpbmVUbyh4ICsgYm90dG9tLCB5KTsKICAgICAgY3R4LmxpbmVUbyh1cHBlclggKyB1cHBlciwgeSAtIHRhbGwpOwogICAgICBjdHgubGluZVRvKHVwcGVyWCwgeSAtIHRhbGwpOwogICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICB9LCAiI2U3ZWVmYyIsICIjMjQ1NGE2IiwgNCk7CiAgICBkcmF3RGFzaGVkKGN0eCwgdXBwZXJYLCB5IC0gdGFsbCwgdXBwZXJYLCB5LCAiIzlhNmEwNSIpOwogICAgZHJhd0RpbWVuc2lvbihjdHgsIHgsIHkgKyAzNCwgeCArIGJvdHRvbSwgeSArIDM0LCAiYSA9ICIgKyBuKGQuYSkgKyAiIGNtIik7CiAgICBkcmF3RGltZW5zaW9uKGN0eCwgdXBwZXJYLCB5IC0gdGFsbCAtIDMwLCB1cHBlclggKyB1cHBlciwgeSAtIHRhbGwgLSAzMCwgImMgPSAiICsgbihkLmMpICsgIiBjbSIpOwogICAgZHJhd0RpbWVuc2lvbihjdHgsIHVwcGVyWCArIDMwLCB5IC0gdGFsbCwgdXBwZXJYICsgMzAsIHksICJoID0gIiArIG4oZC5oKSArICIgY20iKTsKICAgIGRyYXdMYWJlbChjdHgsIHcgLyAyLCB5IC0gdGFsbCAqIDAuNSwgIkEgPSAoYSArIGMpIMK3IGggOiAyIik7CiAgfQoKICBmdW5jdGlvbiBkcmF3Q29tcG9zaXRlKGN0eCwgdywgaCwgZCkgewogICAgdmFyIGMgPSBNYXRoLm1pbihkLmMsIGQuYSAtIDEpOwogICAgdmFyIGN1dEggPSBNYXRoLm1pbihkLmQsIGQuYiAtIDEpOwogICAgdmFyIHNjYWxlID0gTWF0aC5taW4oKHcgLSAxOTApIC8gZC5hLCAoaCAtIDE2MCkgLyBkLmIsIDMyKTsKICAgIHZhciBydyA9IGQuYSAqIHNjYWxlOwogICAgdmFyIHJoID0gZC5iICogc2NhbGU7CiAgICB2YXIgY3V0VyA9IGMgKiBzY2FsZTsKICAgIHZhciBjdXRZID0gY3V0SCAqIHNjYWxlOwogICAgdmFyIHggPSAodyAtIHJ3KSAvIDI7CiAgICB2YXIgeSA9IChoIC0gcmgpIC8gMjsKICAgIGRyYXdHcmlkSW5zaWRlKGN0eCwgeCwgeSwgcncsIHJoLCBkLmEsIGQuYik7CiAgICBmaWxsQW5kU3Ryb2tlKGN0eCwgZnVuY3Rpb24gKCkgewogICAgICBjdHgubW92ZVRvKHgsIHkgKyByaCk7CiAgICAgIGN0eC5saW5lVG8oeCArIHJ3LCB5ICsgcmgpOwogICAgICBjdHgubGluZVRvKHggKyBydywgeSArIGN1dFkpOwogICAgICBjdHgubGluZVRvKHggKyBydyAtIGN1dFcsIHkgKyBjdXRZKTsKICAgICAgY3R4LmxpbmVUbyh4ICsgcncgLSBjdXRXLCB5KTsKICAgICAgY3R4LmxpbmVUbyh4LCB5KTsKICAgICAgY3R4LmNsb3NlUGF0aCgpOwogICAgfSwgIiNmZmY0ZDIiLCAiIzlhNmEwNSIsIDQpOwogICAgZmlsbEFuZFN0cm9rZShjdHgsIGZ1bmN0aW9uICgpIHsKICAgICAgY3R4LnJlY3QoeCArIHJ3IC0gY3V0VywgeSwgY3V0VywgY3V0WSk7CiAgICB9LCAicmdiYSgxNTksMzYsNTEsMC4xMikiLCAiIzlmMjQzMyIsIDIpOwogICAgZHJhd0RpbWVuc2lvbihjdHgsIHgsIHkgKyByaCArIDM0LCB4ICsgcncsIHkgKyByaCArIDM0LCAiYSA9ICIgKyBuKGQuYSkpOwogICAgZHJhd0RpbWVuc2lvbihjdHgsIHggLSAzMiwgeSwgeCAtIDMyLCB5ICsgcmgsICJiID0gIiArIG4oZC5iKSk7CiAgICBkcmF3TGFiZWwoY3R4LCB4ICsgcncgKiAwLjQ1LCB5ICsgcmggKiAwLjU1LCAiZ3Jvw58g4oiSIEF1c3NjaG5pdHQiKTsKICB9CgogIGZ1bmN0aW9uIGRyYXdDaXJjbGUoY3R4LCB3LCBoLCBkKSB7CiAgICB2YXIgciA9IE1hdGgubWluKCh3IC0gMTcwKSAvIDIsIChoIC0gMTUwKSAvIDIsIGQuciAqIDMwKTsKICAgIHZhciBjeCA9IHcgLyAyOwogICAgdmFyIGN5ID0gaCAvIDI7CiAgICBmaWxsQW5kU3Ryb2tlKGN0eCwgZnVuY3Rpb24gKCkgewogICAgICBjdHguYXJjKGN4LCBjeSwgciwgMCwgTWF0aC5QSSAqIDIpOwogICAgfSwgIiNkOWY1ZjEiLCAiIzBmNzY2ZSIsIDQpOwogICAgZHJhd0Rhc2hlZChjdHgsIGN4LCBjeSwgY3ggKyByLCBjeSwgIiMyNDU0YTYiKTsKICAgIGRyYXdMYWJlbChjdHgsIGN4ICsgciAvIDIsIGN5IC0gMTgsICJyID0gIiArIG4oZC5yKSArICIgY20iKTsKICAgIGRyYXdMYWJlbChjdHgsIGN4LCBjeSArIHIgKyAzNSwgIs+AIOKJiCAzLDE0IMK3IEF1c2JsaWNrIik7CiAgfQoKICBmdW5jdGlvbiBkcmF3Q3ViZShjdHgsIHcsIGgsIGQpIHsKICAgIHZhciBzaXplID0gTWF0aC5taW4odyAtIDIyMCwgaCAtIDE5MCwgZC5hICogMzQpOwogICAgdmFyIHggPSB3IC8gMiAtIHNpemUgKiAwLjU4OwogICAgdmFyIHkgPSBoIC8gMiAtIHNpemUgKiAwLjM1OwogICAgZHJhd0JveDNkKGN0eCwgeCwgeSwgc2l6ZSwgc2l6ZSwgc2l6ZSAqIDAuNDQsICIjZDlmNWYxIiwgIiMwZjc2NmUiKTsKICAgIGRyYXdMYXllckxpbmVzKGN0eCwgeCwgeSwgc2l6ZSwgc2l6ZSwgc2l6ZSAqIDAuNDQsIE1hdGgubWluKDcsIGQuYSkpOwogICAgZHJhd0RpbWVuc2lvbihjdHgsIHgsIHkgKyBzaXplICsgMzQsIHggKyBzaXplLCB5ICsgc2l6ZSArIDM0LCAiYSA9ICIgKyBuKGQuYSkgKyAiIGNtIik7CiAgICBkcmF3TGFiZWwoY3R4LCB4ICsgc2l6ZSAqIDAuNSwgeSArIHNpemUgKiAwLjQ4LCAiViA9IGEgwrcgYSDCtyBhIik7CiAgfQoKICBmdW5jdGlvbiBkcmF3Q3Vib2lkKGN0eCwgdywgaCwgZCkgewogICAgdmFyIHNjYWxlID0gTWF0aC5taW4oKHcgLSAyNDApIC8gZC5sLCAoaCAtIDE5MCkgLyAoZC5oICsgZC5iICogMC4zNCksIDMwKTsKICAgIHZhciBidyA9IGQubCAqIHNjYWxlOwogICAgdmFyIGJoID0gZC5oICogc2NhbGU7CiAgICB2YXIgZGVwdGggPSBkLmIgKiBzY2FsZSAqIDAuNDY7CiAgICB2YXIgeCA9ICh3IC0gYncgLSBkZXB0aCkgLyAyOwogICAgdmFyIHkgPSAoaCAtIGJoKSAvIDI7CiAgICBkcmF3Qm94M2QoY3R4LCB4LCB5LCBidywgYmgsIGRlcHRoLCAiI2U3ZWVmYyIsICIjMjQ1NGE2Iik7CiAgICBkcmF3TGF5ZXJMaW5lcyhjdHgsIHgsIHksIGJ3LCBiaCwgZGVwdGgsIE1hdGgubWluKDcsIGQuaCkpOwogICAgZHJhd0RpbWVuc2lvbihjdHgsIHgsIHkgKyBiaCArIDM0LCB4ICsgYncsIHkgKyBiaCArIDM0LCAibCA9ICIgKyBuKGQubCkpOwogICAgZHJhd0RpbWVuc2lvbihjdHgsIHggKyBidyArIDE2LCB5ICsgYmgsIHggKyBidyArIGRlcHRoICsgMTYsIHkgKyBiaCAtIGRlcHRoLCAiYiA9ICIgKyBuKGQuYikpOwogICAgZHJhd0RpbWVuc2lvbihjdHgsIHggLSAzMiwgeSwgeCAtIDMyLCB5ICsgYmgsICJoID0gIiArIG4oZC5oKSk7CiAgICBkcmF3TGFiZWwoY3R4LCB4ICsgYncgKiAwLjUsIHkgKyBiaCAqIDAuNDgsICJHcnVuZGZsw6RjaGUgwrcgSMO2aGUiKTsKICB9CgogIGZ1bmN0aW9uIGRyYXdQcmlzbShjdHgsIHcsIGgsIGQpIHsKICAgIHZhciBzY2FsZSA9IE1hdGgubWluKCh3IC0gMjQwKSAvIGQuZywgKGggLSAxOTApIC8gZC5oLCAyOCk7CiAgICB2YXIgYmFzZSA9IGQuZyAqIHNjYWxlOwogICAgdmFyIHRhbGwgPSBkLmggKiBzY2FsZTsKICAgIHZhciBkZXB0aCA9IGQuayAqIHNjYWxlICogMC4zNjsKICAgIHZhciB4ID0gKHcgLSBiYXNlIC0gZGVwdGgpIC8gMjsKICAgIHZhciB5ID0gKGggKyB0YWxsKSAvIDIgLSAyMjsKICAgIHZhciBwMSA9IFt4LCB5XTsKICAgIHZhciBwMiA9IFt4ICsgYmFzZSwgeV07CiAgICB2YXIgcDMgPSBbeCArIGJhc2UgKiAwLjUsIHkgLSB0YWxsXTsKICAgIHZhciBxMSA9IFtwMVswXSArIGRlcHRoLCBwMVsxXSAtIGRlcHRoXTsKICAgIHZhciBxMiA9IFtwMlswXSArIGRlcHRoLCBwMlsxXSAtIGRlcHRoXTsKICAgIHZhciBxMyA9IFtwM1swXSArIGRlcHRoLCBwM1sxXSAtIGRlcHRoXTsKICAgIGZpbGxBbmRTdHJva2UoY3R4LCBmdW5jdGlvbiAoKSB7CiAgICAgIGN0eC5tb3ZlVG8ocDFbMF0sIHAxWzFdKTsgY3R4LmxpbmVUbyhwMlswXSwgcDJbMV0pOyBjdHgubGluZVRvKHAzWzBdLCBwM1sxXSk7IGN0eC5jbG9zZVBhdGgoKTsKICAgIH0sICIjZDlmNWYxIiwgIiMwZjc2NmUiLCA0KTsKICAgIGZpbGxBbmRTdHJva2UoY3R4LCBmdW5jdGlvbiAoKSB7CiAgICAgIGN0eC5tb3ZlVG8ocTFbMF0sIHExWzFdKTsgY3R4LmxpbmVUbyhxMlswXSwgcTJbMV0pOyBjdHgubGluZVRvKHEzWzBdLCBxM1sxXSk7IGN0eC5jbG9zZVBhdGgoKTsKICAgIH0sICJyZ2JhKDE1LDExOCwxMTAsMC4xMCkiLCAiIzBmNzY2ZSIsIDIpOwogICAgZHJhd1NlZ21lbnQoY3R4LCBwMVswXSwgcDFbMV0sIHExWzBdLCBxMVsxXSwgIiMwZjc2NmUiLCAzKTsKICAgIGRyYXdTZWdtZW50KGN0eCwgcDJbMF0sIHAyWzFdLCBxMlswXSwgcTJbMV0sICIjMGY3NjZlIiwgMyk7CiAgICBkcmF3U2VnbWVudChjdHgsIHAzWzBdLCBwM1sxXSwgcTNbMF0sIHEzWzFdLCAiIzBmNzY2ZSIsIDMpOwogICAgZHJhd0Rhc2hlZChjdHgsIHAzWzBdLCBwM1sxXSwgcDNbMF0sIHksICIjOWE2YTA1Iik7CiAgICBkcmF3RGltZW5zaW9uKGN0eCwgeCwgeSArIDM0LCB4ICsgYmFzZSwgeSArIDM0LCAiZyA9ICIgKyBuKGQuZykpOwogICAgZHJhd0RpbWVuc2lvbihjdHgsIHAyWzBdICsgMTgsIHAyWzFdLCBxMlswXSArIDE4LCBxMlsxXSwgImsgPSAiICsgbihkLmspKTsKICAgIGRyYXdMYWJlbChjdHgsIHggKyBiYXNlICogMC41MiwgeSAtIHRhbGwgKiAwLjM1LCAiRyA9IGcgwrcgaCA6IDIiKTsKICB9CgogIGZ1bmN0aW9uIGRyYXdDeWxpbmRlcihjdHgsIHcsIGgsIGQpIHsKICAgIHZhciByYWRpdXMgPSBNYXRoLm1pbigodyAtIDE5MCkgLyA0LCBkLnIgKiAyNik7CiAgICB2YXIgdGFsbCA9IE1hdGgubWluKGggLSAxNzAsIGQuaCAqIDI4KTsKICAgIHZhciBjeCA9IHcgLyAyOwogICAgdmFyIHkgPSAoaCAtIHRhbGwpIC8gMjsKICAgIGRyYXdDeWxpbmRlckJvZHkoY3R4LCBjeCwgeSwgcmFkaXVzLCB0YWxsLCAiI2U3ZWVmYyIsICIjMjQ1NGE2Iik7CiAgICBkcmF3RGFzaGVkKGN0eCwgY3gsIHkgKyAxOCwgY3ggKyByYWRpdXMsIHkgKyAxOCwgIiMwZjc2NmUiKTsKICAgIGRyYXdEaW1lbnNpb24oY3R4LCBjeCArIHJhZGl1cyArIDMwLCB5LCBjeCArIHJhZGl1cyArIDMwLCB5ICsgdGFsbCwgImggPSAiICsgbihkLmgpKTsKICAgIGRyYXdMYWJlbChjdHgsIGN4LCB5ICsgdGFsbCArIDM2LCAiViA9IM+AIMK3IHLCsiDCtyBoIik7CiAgfQoKICBmdW5jdGlvbiBkcmF3UHlyYW1pZChjdHgsIHcsIGgsIGQpIHsKICAgIHZhciBiYXNlID0gTWF0aC5taW4odyAtIDI0MCwgZC5hICogMzQpOwogICAgdmFyIHRhbGwgPSBNYXRoLm1pbihoIC0gMTcwLCBkLmggKiAzMCk7CiAgICB2YXIgY3ggPSB3IC8gMjsKICAgIHZhciB5ID0gaCAvIDIgKyBiYXNlICogMC4yMjsKICAgIHZhciBkZXB0aCA9IGJhc2UgKiAwLjQyOwogICAgdmFyIGFwZXhZID0geSAtIHRhbGw7CiAgICB2YXIgbGVmdCA9IGN4IC0gYmFzZSAvIDI7CiAgICB2YXIgcmlnaHQgPSBjeCArIGJhc2UgLyAyOwogICAgZmlsbEFuZFN0cm9rZShjdHgsIGZ1bmN0aW9uICgpIHsKICAgICAgY3R4Lm1vdmVUbyhsZWZ0LCB5KTsKICAgICAgY3R4LmxpbmVUbyhjeCAtIGJhc2UgLyAyICsgZGVwdGgsIHkgLSBkZXB0aCk7CiAgICAgIGN0eC5saW5lVG8ocmlnaHQgKyBkZXB0aCwgeSAtIGRlcHRoKTsKICAgICAgY3R4LmxpbmVUbyhyaWdodCwgeSk7CiAgICAgIGN0eC5jbG9zZVBhdGgoKTsKICAgIH0sICIjZmZmNGQyIiwgIiM5YTZhMDUiLCAzKTsKICAgIGRyYXdTZWdtZW50KGN0eCwgY3gsIGFwZXhZLCBsZWZ0LCB5LCAiIzlhNmEwNSIsIDQpOwogICAgZHJhd1NlZ21lbnQoY3R4LCBjeCwgYXBleFksIHJpZ2h0LCB5LCAiIzlhNmEwNSIsIDQpOwogICAgZHJhd1NlZ21lbnQoY3R4LCBjeCwgYXBleFksIHJpZ2h0ICsgZGVwdGgsIHkgLSBkZXB0aCwgIiM5YTZhMDUiLCAzKTsKICAgIGRyYXdTZWdtZW50KGN0eCwgY3gsIGFwZXhZLCBjeCAtIGJhc2UgLyAyICsgZGVwdGgsIHkgLSBkZXB0aCwgIiM5YTZhMDUiLCAzKTsKICAgIGRyYXdEYXNoZWQoY3R4LCBjeCwgYXBleFksIGN4LCB5IC0gZGVwdGggKiAwLjUsICIjMjQ1NGE2Iik7CiAgICBkcmF3RGltZW5zaW9uKGN0eCwgcmlnaHQgKyAyOCwgYXBleFksIHJpZ2h0ICsgMjgsIHksICJoID0gIiArIG4oZC5oKSk7CiAgICBkcmF3TGFiZWwoY3R4LCBjeCwgeSArIDM2LCAiQXVzYmxpY2s6IFYgPSBHIMK3IGggOiAzIik7CiAgfQoKICBmdW5jdGlvbiBkcmF3Q29uZShjdHgsIHcsIGgsIGQpIHsKICAgIHZhciByYWRpdXMgPSBNYXRoLm1pbigodyAtIDE5MCkgLyA0LCBkLnIgKiAyOCk7CiAgICB2YXIgdGFsbCA9IE1hdGgubWluKGggLSAxNzAsIGQuaCAqIDMwKTsKICAgIHZhciBjeCA9IHcgLyAyOwogICAgdmFyIHkgPSBoIC8gMiArIHRhbGwgLyAyIC0gMTI7CiAgICB2YXIgYXBleFkgPSB5IC0gdGFsbDsKICAgIGZpbGxBbmRTdHJva2UoY3R4LCBmdW5jdGlvbiAoKSB7CiAgICAgIGN0eC5tb3ZlVG8oY3gsIGFwZXhZKTsKICAgICAgY3R4LmxpbmVUbyhjeCAtIHJhZGl1cywgeSk7CiAgICAgIGN0eC5lbGxpcHNlKGN4LCB5LCByYWRpdXMsIHJhZGl1cyAqIDAuMjgsIDAsIE1hdGguUEksIDAsIHRydWUpOwogICAgICBjdHgubGluZVRvKGN4ICsgcmFkaXVzLCB5KTsKICAgICAgY3R4LmNsb3NlUGF0aCgpOwogICAgfSwgIiNlN2VlZmMiLCAiIzI0NTRhNiIsIDQpOwogICAgZHJhd0Rhc2hlZChjdHgsIGN4LCBhcGV4WSwgY3gsIHksICIjMGY3NjZlIik7CiAgICBkcmF3RGltZW5zaW9uKGN0eCwgY3ggKyByYWRpdXMgKyAzMCwgYXBleFksIGN4ICsgcmFkaXVzICsgMzAsIHksICJoID0gIiArIG4oZC5oKSk7CiAgICBkcmF3TGFiZWwoY3R4LCBjeCwgeSArIDM2LCAiQXVzYmxpY2s6IDogMyB3aWUgUHlyYW1pZGUiKTsKICB9CgogIGZ1bmN0aW9uIGRyYXdTcGhlcmUoY3R4LCB3LCBoLCBkKSB7CiAgICB2YXIgciA9IE1hdGgubWluKCh3IC0gMTgwKSAvIDIsIChoIC0gMTUwKSAvIDIsIGQuciAqIDMwKTsKICAgIHZhciBjeCA9IHcgLyAyOwogICAgdmFyIGN5ID0gaCAvIDI7CiAgICBmaWxsQW5kU3Ryb2tlKGN0eCwgZnVuY3Rpb24gKCkgewogICAgICBjdHguYXJjKGN4LCBjeSwgciwgMCwgTWF0aC5QSSAqIDIpOwogICAgfSwgIiNkOWY1ZjEiLCAiIzBmNzY2ZSIsIDQpOwogICAgZHJhd1NlZ21lbnQoY3R4LCBjeCwgY3ksIGN4ICsgciwgY3ksICIjMjQ1NGE2IiwgMyk7CiAgICBjdHguc3Ryb2tlU3R5bGUgPSAicmdiYSgzNiw4NCwxNjYsMC4zOCkiOwogICAgY3R4LmxpbmVXaWR0aCA9IDI7CiAgICBjdHguYmVnaW5QYXRoKCk7CiAgICBjdHguZWxsaXBzZShjeCwgY3ksIHIsIHIgKiAwLjMyLCAwLCAwLCBNYXRoLlBJICogMik7CiAgICBjdHguc3Ryb2tlKCk7CiAgICBkcmF3TGFiZWwoY3R4LCBjeCArIHIgLyAyLCBjeSAtIDE4LCAiciA9ICIgKyBuKGQucikgKyAiIGNtIik7CiAgICBkcmF3TGFiZWwoY3R4LCBjeCwgY3kgKyByICsgMzQsICJBdXNibGljazogViA9IDQgOiAzIMK3IM+AIMK3IHLCsyIpOwogIH0KCiAgZnVuY3Rpb24gZHJhd0dyaWRJbnNpZGUoY3R4LCB4LCB5LCB3LCBoLCBjb2xzLCByb3dzKSB7CiAgICBjdHguc2F2ZSgpOwogICAgY3R4LnN0cm9rZVN0eWxlID0gInJnYmEoMzYsODQsMTY2LDAuMTYpIjsKICAgIGN0eC5saW5lV2lkdGggPSAxOwogICAgdmFyIG1heENvbHMgPSBNYXRoLm1pbigyNCwgTWF0aC5tYXgoMSwgTWF0aC5yb3VuZChjb2xzKSkpOwogICAgdmFyIG1heFJvd3MgPSBNYXRoLm1pbigyMCwgTWF0aC5tYXgoMSwgTWF0aC5yb3VuZChyb3dzKSkpOwogICAgZm9yICh2YXIgaSA9IDE7IGkgPCBtYXhDb2xzOyBpICs9IDEpIHsKICAgICAgdmFyIGd4ID0geCArIHcgKiBpIC8gbWF4Q29sczsKICAgICAgY3R4LmJlZ2luUGF0aCgpOwogICAgICBjdHgubW92ZVRvKGd4LCB5KTsKICAgICAgY3R4LmxpbmVUbyhneCwgeSArIGgpOwogICAgICBjdHguc3Ryb2tlKCk7CiAgICB9CiAgICBmb3IgKHZhciBqID0gMTsgaiA8IG1heFJvd3M7IGogKz0gMSkgewogICAgICB2YXIgZ3kgPSB5ICsgaCAqIGogLyBtYXhSb3dzOwogICAgICBjdHguYmVnaW5QYXRoKCk7CiAgICAgIGN0eC5tb3ZlVG8oeCwgZ3kpOwogICAgICBjdHgubGluZVRvKHggKyB3LCBneSk7CiAgICAgIGN0eC5zdHJva2UoKTsKICAgIH0KICAgIGN0eC5yZXN0b3JlKCk7CiAgfQoKICBmdW5jdGlvbiBkcmF3Qm94M2QoY3R4LCB4LCB5LCBidywgYmgsIGRlcHRoLCBmaWxsLCBzdHJva2UpIHsKICAgIGZpbGxBbmRTdHJva2UoY3R4LCBmdW5jdGlvbiAoKSB7CiAgICAgIGN0eC5yZWN0KHgsIHksIGJ3LCBiaCk7CiAgICB9LCBmaWxsLCBzdHJva2UsIDQpOwogICAgZmlsbEFuZFN0cm9rZShjdHgsIGZ1bmN0aW9uICgpIHsKICAgICAgY3R4Lm1vdmVUbyh4LCB5KTsKICAgICAgY3R4LmxpbmVUbyh4ICsgZGVwdGgsIHkgLSBkZXB0aCk7CiAgICAgIGN0eC5saW5lVG8oeCArIGJ3ICsgZGVwdGgsIHkgLSBkZXB0aCk7CiAgICAgIGN0eC5saW5lVG8oeCArIGJ3LCB5KTsKICAgICAgY3R4LmNsb3NlUGF0aCgpOwogICAgfSwgInJnYmEoMjU1LDI1NSwyNTUsMC43MikiLCBzdHJva2UsIDMpOwogICAgZmlsbEFuZFN0cm9rZShjdHgsIGZ1bmN0aW9uICgpIHsKICAgICAgY3R4Lm1vdmVUbyh4ICsgYncsIHkpOwogICAgICBjdHgubGluZVRvKHggKyBidyArIGRlcHRoLCB5IC0gZGVwdGgpOwogICAgICBjdHgubGluZVRvKHggKyBidyArIGRlcHRoLCB5ICsgYmggLSBkZXB0aCk7CiAgICAgIGN0eC5saW5lVG8oeCArIGJ3LCB5ICsgYmgpOwogICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICB9LCAicmdiYSgzNiw4NCwxNjYsMC4xMCkiLCBzdHJva2UsIDMpOwogIH0KCiAgZnVuY3Rpb24gZHJhd0xheWVyTGluZXMoY3R4LCB4LCB5LCBidywgYmgsIGRlcHRoLCBjb3VudCkgewogICAgY3R4LnNhdmUoKTsKICAgIGN0eC5zdHJva2VTdHlsZSA9ICJyZ2JhKDM2LDg0LDE2NiwwLjE4KSI7CiAgICBjdHgubGluZVdpZHRoID0gMTsKICAgIHZhciBzdGVwcyA9IE1hdGgubWF4KDIsIGNvdW50KTsKICAgIGZvciAodmFyIGkgPSAxOyBpIDwgc3RlcHM7IGkgKz0gMSkgewogICAgICB2YXIgeXkgPSB5ICsgYmggKiBpIC8gc3RlcHM7CiAgICAgIGN0eC5iZWdpblBhdGgoKTsKICAgICAgY3R4Lm1vdmVUbyh4LCB5eSk7CiAgICAgIGN0eC5saW5lVG8oeCArIGJ3LCB5eSk7CiAgICAgIGN0eC5saW5lVG8oeCArIGJ3ICsgZGVwdGgsIHl5IC0gZGVwdGgpOwogICAgICBjdHguc3Ryb2tlKCk7CiAgICB9CiAgICBjdHgucmVzdG9yZSgpOwogIH0KCiAgZnVuY3Rpb24gZHJhd0N5bGluZGVyQm9keShjdHgsIGN4LCB5LCByLCB0YWxsLCBmaWxsLCBzdHJva2UpIHsKICAgIGN0eC5zYXZlKCk7CiAgICBjdHguZmlsbFN0eWxlID0gZmlsbDsKICAgIGN0eC5zdHJva2VTdHlsZSA9IHN0cm9rZTsKICAgIGN0eC5saW5lV2lkdGggPSA0OwogICAgY3R4LmJlZ2luUGF0aCgpOwogICAgY3R4LmVsbGlwc2UoY3gsIHksIHIsIHIgKiAwLjI4LCAwLCAwLCBNYXRoLlBJICogMik7CiAgICBjdHguZmlsbCgpOwogICAgY3R4LnN0cm9rZSgpOwogICAgY3R4LmJlZ2luUGF0aCgpOwogICAgY3R4Lm1vdmVUbyhjeCAtIHIsIHkpOwogICAgY3R4LmxpbmVUbyhjeCAtIHIsIHkgKyB0YWxsKTsKICAgIGN0eC5lbGxpcHNlKGN4LCB5ICsgdGFsbCwgciwgciAqIDAuMjgsIDAsIE1hdGguUEksIDAsIHRydWUpOwogICAgY3R4LmxpbmVUbyhjeCArIHIsIHkpOwogICAgY3R4LnN0cm9rZSgpOwogICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDM2LDg0LDE2NiwwLjA4KSI7CiAgICBjdHguYmVnaW5QYXRoKCk7CiAgICBjdHgubW92ZVRvKGN4IC0gciwgeSk7CiAgICBjdHgubGluZVRvKGN4IC0gciwgeSArIHRhbGwpOwogICAgY3R4LmVsbGlwc2UoY3gsIHkgKyB0YWxsLCByLCByICogMC4yOCwgMCwgMCwgTWF0aC5QSSk7CiAgICBjdHgubGluZVRvKGN4ICsgciwgeSk7CiAgICBjdHguY2xvc2VQYXRoKCk7CiAgICBjdHguZmlsbCgpOwogICAgY3R4LnJlc3RvcmUoKTsKICB9CgogIGZ1bmN0aW9uIGZpbGxBbmRTdHJva2UoY3R4LCBwYXRoTWFrZXIsIGZpbGwsIHN0cm9rZSwgbGluZVdpZHRoKSB7CiAgICBjdHguc2F2ZSgpOwogICAgY3R4LmJlZ2luUGF0aCgpOwogICAgcGF0aE1ha2VyKCk7CiAgICBjdHguZmlsbFN0eWxlID0gZmlsbDsKICAgIGN0eC5maWxsKCk7CiAgICBjdHguc3Ryb2tlU3R5bGUgPSBzdHJva2U7CiAgICBjdHgubGluZVdpZHRoID0gbGluZVdpZHRoOwogICAgY3R4LmxpbmVKb2luID0gInJvdW5kIjsKICAgIGN0eC5saW5lQ2FwID0gInJvdW5kIjsKICAgIGN0eC5zdHJva2UoKTsKICAgIGN0eC5yZXN0b3JlKCk7CiAgfQoKICBmdW5jdGlvbiBkcmF3U2VnbWVudChjdHgsIHgxLCB5MSwgeDIsIHkyLCBjb2xvciwgd2lkdGgpIHsKICAgIGN0eC5zYXZlKCk7CiAgICBjdHguc3Ryb2tlU3R5bGUgPSBjb2xvcjsKICAgIGN0eC5saW5lV2lkdGggPSB3aWR0aDsKICAgIGN0eC5saW5lQ2FwID0gInJvdW5kIjsKICAgIGN0eC5iZWdpblBhdGgoKTsKICAgIGN0eC5tb3ZlVG8oeDEsIHkxKTsKICAgIGN0eC5saW5lVG8oeDIsIHkyKTsKICAgIGN0eC5zdHJva2UoKTsKICAgIGN0eC5yZXN0b3JlKCk7CiAgfQoKICBmdW5jdGlvbiBkcmF3RGFzaGVkKGN0eCwgeDEsIHkxLCB4MiwgeTIsIGNvbG9yKSB7CiAgICBjdHguc2F2ZSgpOwogICAgY3R4LnN0cm9rZVN0eWxlID0gY29sb3I7CiAgICBjdHgubGluZVdpZHRoID0gMjsKICAgIGN0eC5zZXRMaW5lRGFzaChbNywgNl0pOwogICAgY3R4LmJlZ2luUGF0aCgpOwogICAgY3R4Lm1vdmVUbyh4MSwgeTEpOwogICAgY3R4LmxpbmVUbyh4MiwgeTIpOwogICAgY3R4LnN0cm9rZSgpOwogICAgY3R4LnJlc3RvcmUoKTsKICB9CgogIGZ1bmN0aW9uIGRyYXdEaW1lbnNpb24oY3R4LCB4MSwgeTEsIHgyLCB5MiwgbGFiZWwpIHsKICAgIGRyYXdTZWdtZW50KGN0eCwgeDEsIHkxLCB4MiwgeTIsICIjMTEyMDMzIiwgMik7CiAgICBkcmF3QXJyb3dIZWFkKGN0eCwgeDEsIHkxLCB4MiwgeTIpOwogICAgZHJhd0Fycm93SGVhZChjdHgsIHgyLCB5MiwgeDEsIHkxKTsKICAgIGRyYXdMYWJlbChjdHgsICh4MSArIHgyKSAvIDIsICh5MSArIHkyKSAvIDIsIGxhYmVsKTsKICB9CgogIGZ1bmN0aW9uIGRyYXdBcnJvd0hlYWQoY3R4LCB4LCB5LCB0b3dhcmRYLCB0b3dhcmRZKSB7CiAgICB2YXIgYW5nbGUgPSBNYXRoLmF0YW4yKHRvd2FyZFkgLSB5LCB0b3dhcmRYIC0geCk7CiAgICB2YXIgbGVuZ3RoID0gOTsKICAgIGN0eC5zYXZlKCk7CiAgICBjdHguZmlsbFN0eWxlID0gIiMxMTIwMzMiOwogICAgY3R4LmJlZ2luUGF0aCgpOwogICAgY3R4Lm1vdmVUbyh4LCB5KTsKICAgIGN0eC5saW5lVG8oeCArIE1hdGguY29zKGFuZ2xlICsgMC41NSkgKiBsZW5ndGgsIHkgKyBNYXRoLnNpbihhbmdsZSArIDAuNTUpICogbGVuZ3RoKTsKICAgIGN0eC5saW5lVG8oeCArIE1hdGguY29zKGFuZ2xlIC0gMC41NSkgKiBsZW5ndGgsIHkgKyBNYXRoLnNpbihhbmdsZSAtIDAuNTUpICogbGVuZ3RoKTsKICAgIGN0eC5jbG9zZVBhdGgoKTsKICAgIGN0eC5maWxsKCk7CiAgICBjdHgucmVzdG9yZSgpOwogIH0KCiAgZnVuY3Rpb24gZHJhd1JpZ2h0QW5nbGUoY3R4LCB4LCB5LCBzaXplKSB7CiAgICBjdHguc2F2ZSgpOwogICAgY3R4LnN0cm9rZVN0eWxlID0gIiM5YTZhMDUiOwogICAgY3R4LmxpbmVXaWR0aCA9IDM7CiAgICBjdHguYmVnaW5QYXRoKCk7CiAgICBjdHgubW92ZVRvKHggKyBzaXplLCB5KTsKICAgIGN0eC5saW5lVG8oeCArIHNpemUsIHkgLSBzaXplKTsKICAgIGN0eC5saW5lVG8oeCwgeSAtIHNpemUpOwogICAgY3R4LnN0cm9rZSgpOwogICAgY3R4LnJlc3RvcmUoKTsKICB9CgogIGZ1bmN0aW9uIGRyYXdMYWJlbChjdHgsIHgsIHksIHRleHQpIHsKICAgIGN0eC5zYXZlKCk7CiAgICBjdHguZm9udCA9ICI3MDAgMTVweCBzeXN0ZW0tdWksIHNhbnMtc2VyaWYiOwogICAgY3R4LnRleHRBbGlnbiA9ICJjZW50ZXIiOwogICAgY3R4LnRleHRCYXNlbGluZSA9ICJtaWRkbGUiOwogICAgdmFyIG1ldHJpY3MgPSBjdHgubWVhc3VyZVRleHQodGV4dCk7CiAgICB2YXIgcGFkWCA9IDg7CiAgICB2YXIgcGFkWSA9IDU7CiAgICBjdHguZmlsbFN0eWxlID0gInJnYmEoMjU1LDI1NSwyNTUsMC45MikiOwogICAgY3R4LnN0cm9rZVN0eWxlID0gInJnYmEoMTQ0LDE2OCwxOTEsMC41NSkiOwogICAgY3R4LmxpbmVXaWR0aCA9IDE7CiAgICBjdHguYmVnaW5QYXRoKCk7CiAgICBjdHgucmVjdCh4IC0gbWV0cmljcy53aWR0aCAvIDIgLSBwYWRYLCB5IC0gMTEgLSBwYWRZLCBtZXRyaWNzLndpZHRoICsgcGFkWCAqIDIsIDIyICsgcGFkWSAqIDIpOwogICAgY3R4LmZpbGwoKTsKICAgIGN0eC5zdHJva2UoKTsKICAgIGN0eC5maWxsU3R5bGUgPSAiIzExMjAzMyI7CiAgICBjdHguZmlsbFRleHQodGV4dCwgeCwgeSk7CiAgICBjdHgucmVzdG9yZSgpOwogIH0KCiAgZnVuY3Rpb24gcHJlcGFyZVRhc2tzKCkgewogICAgdGFza0ZhY3RvcmllcyA9IFsKICAgICAgeyBza2lsbDogIlVtZmFuZyIsIHNoYXBlSWQ6ICJyZWN0YW5nbGUiLCB0aXRsZTogIkVyZ2VibmlzIiwgbWluRGlmZmljdWx0eTogMSwgbWF4RGlmZmljdWx0eTogMywgbWFrZTogdGFza1JlY3RhbmdsZVBlcmltZXRlciB9LAogICAgICB7IHNraWxsOiAiRmzDpGNoZSIsIHNoYXBlSWQ6ICJyZWN0YW5nbGUiLCB0aXRsZTogIkVyZ2VibmlzIiwgbWluRGlmZmljdWx0eTogMSwgbWF4RGlmZmljdWx0eTogMywgbWFrZTogdGFza1JlY3RhbmdsZUFyZWEgfSwKICAgICAgeyBza2lsbDogIlVtZmFuZyIsIHNoYXBlSWQ6ICJzcXVhcmUiLCB0aXRsZTogIkVyZ2VibmlzIiwgbWluRGlmZmljdWx0eTogMSwgbWF4RGlmZmljdWx0eTogMywgbWFrZTogdGFza1NxdWFyZVBlcmltZXRlciB9LAogICAgICB7IHNraWxsOiAiRmzDpGNoZSIsIHNoYXBlSWQ6ICJzcXVhcmUiLCB0aXRsZTogIlVta2VocmF1ZmdhYmUiLCBtaW5EaWZmaWN1bHR5OiAzLCBtYXhEaWZmaWN1bHR5OiA1LCBtYWtlOiB0YXNrU3F1YXJlUmV2ZXJzZUFyZWEgfSwKICAgICAgeyBza2lsbDogIkZsw6RjaGUiLCBzaGFwZUlkOiAidHJpYW5nbGUiLCB0aXRsZTogIkRyZWllY2siLCBtaW5EaWZmaWN1bHR5OiAxLCBtYXhEaWZmaWN1bHR5OiA0LCBtYWtlOiB0YXNrVHJpYW5nbGVBcmVhIH0sCiAgICAgIHsgc2tpbGw6ICJVbWZhbmciLCBzaGFwZUlkOiAidHJpYW5nbGUiLCB0aXRsZTogIkRyZWllY2siLCBtaW5EaWZmaWN1bHR5OiAxLCBtYXhEaWZmaWN1bHR5OiAzLCBtYWtlOiB0YXNrVHJpYW5nbGVQZXJpbWV0ZXIgfSwKICAgICAgeyBza2lsbDogIkZsw6RjaGUiLCBzaGFwZUlkOiAicmlnaHRUcmlhbmdsZSIsIHRpdGxlOiAiaGFsYmVzIFJlY2h0ZWNrIiwgbWluRGlmZmljdWx0eTogMSwgbWF4RGlmZmljdWx0eTogNCwgbWFrZTogdGFza1JpZ2h0VHJpYW5nbGVBcmVhIH0sCiAgICAgIHsgc2tpbGw6ICJGbMOkY2hlIiwgc2hhcGVJZDogInBhcmFsbGVsb2dyYW0iLCB0aXRsZTogIlZlcsOkbmRlcnVuZyIsIG1pbkRpZmZpY3VsdHk6IDIsIG1heERpZmZpY3VsdHk6IDUsIG1ha2U6IHRhc2tQYXJhbGxlbG9ncmFtQ2hhbmdlIH0sCiAgICAgIHsgc2tpbGw6ICJGbMOkY2hlIiwgc2hhcGVJZDogInRyYXBlem9pZCIsIHRpdGxlOiAiVHJhcGV6IiwgbWluRGlmZmljdWx0eTogMiwgbWF4RGlmZmljdWx0eTogNSwgbWFrZTogdGFza1RyYXBlem9pZEFyZWEgfSwKICAgICAgeyBza2lsbDogIkZsw6RjaGUiLCBzaGFwZUlkOiAicmhvbWJ1cyIsIHRpdGxlOiAiUmF1dGUiLCBtaW5EaWZmaWN1bHR5OiAyLCBtYXhEaWZmaWN1bHR5OiA0LCBtYWtlOiB0YXNrUmhvbWJ1c0FyZWEgfSwKICAgICAgeyBza2lsbDogIlN0cmF0ZWdpZSIsIHNoYXBlSWQ6ICJjb21wb3NpdGUiLCB0aXRsZTogIlplcmxlZ2VuIiwgbWluRGlmZmljdWx0eTogMiwgbWF4RGlmZmljdWx0eTogNSwgbWFrZTogdGFza0NvbXBvc2l0ZUFyZWEgfSwKICAgICAgeyBza2lsbDogIktub2JlbGF1ZmdhYmVuIiwgc2hhcGVJZDogImNvbXBvc2l0ZSIsIHRpdGxlOiAiTWVpc3RlcmF1ZmdhYmUiLCBtaW5EaWZmaWN1bHR5OiA0LCBtYXhEaWZmaWN1bHR5OiA1LCBtYWtlOiB0YXNrQ29tcG9zaXRlUHV6emxlIH0sCiAgICAgIHsgc2tpbGw6ICJVbWZhbmciLCBzaGFwZUlkOiAiY2lyY2xlIiwgdGl0bGU6ICJLcmVpcy1BdXNibGljayIsIG1pbkRpZmZpY3VsdHk6IDIsIG1heERpZmZpY3VsdHk6IDUsIG1ha2U6IHRhc2tDaXJjbGVQZXJpbWV0ZXIgfSwKICAgICAgeyBza2lsbDogIkZsw6RjaGUiLCBzaGFwZUlkOiAiY2lyY2xlIiwgdGl0bGU6ICJLcmVpcy1BdXNibGljayIsIG1pbkRpZmZpY3VsdHk6IDIsIG1heERpZmZpY3VsdHk6IDUsIG1ha2U6IHRhc2tDaXJjbGVBcmVhIH0sCiAgICAgIHsgc2tpbGw6ICJWb2x1bWVuIiwgc2hhcGVJZDogImN1YmUiLCB0aXRsZTogIlfDvHJmZWwiLCBtaW5EaWZmaWN1bHR5OiAxLCBtYXhEaWZmaWN1bHR5OiA0LCBtYWtlOiB0YXNrQ3ViZVZvbHVtZSB9LAogICAgICB7IHNraWxsOiAiVm9sdW1lbiIsIHNoYXBlSWQ6ICJjdWJvaWQiLCB0aXRsZTogIlF1YWRlciIsIG1pbkRpZmZpY3VsdHk6IDEsIG1heERpZmZpY3VsdHk6IDUsIG1ha2U6IHRhc2tDdWJvaWRWb2x1bWUgfSwKICAgICAgeyBza2lsbDogIlZvbHVtZW4iLCBzaGFwZUlkOiAiY3Vib2lkIiwgdGl0bGU6ICJVbWtlaHJhdWZnYWJlIiwgbWluRGlmZmljdWx0eTogNCwgbWF4RGlmZmljdWx0eTogNSwgbWFrZTogdGFza0N1Ym9pZFJldmVyc2VIZWlnaHQgfSwKICAgICAgeyBza2lsbDogIlZvbHVtZW4iLCBzaGFwZUlkOiAicHJpc20iLCB0aXRsZTogIlByaXNtYSIsIG1pbkRpZmZpY3VsdHk6IDIsIG1heERpZmZpY3VsdHk6IDUsIG1ha2U6IHRhc2tQcmlzbVZvbHVtZSB9LAogICAgICB7IHNraWxsOiAiS25vYmVsYXVmZ2FiZW4iLCBzaGFwZUlkOiAicHJpc20iLCB0aXRsZTogIk1laXN0ZXJhdWZnYWJlIiwgbWluRGlmZmljdWx0eTogNCwgbWF4RGlmZmljdWx0eTogNSwgbWFrZTogdGFza1ByaXNtUHV6emxlIH0sCiAgICAgIHsgc2tpbGw6ICJWb2x1bWVuIiwgc2hhcGVJZDogImN5bGluZGVyIiwgdGl0bGU6ICJaeWxpbmRlci1BdXNibGljayIsIG1pbkRpZmZpY3VsdHk6IDIsIG1heERpZmZpY3VsdHk6IDUsIG1ha2U6IHRhc2tDeWxpbmRlclZvbHVtZSB9LAogICAgICB7IHNraWxsOiAiVm9sdW1lbiIsIHNoYXBlSWQ6ICJweXJhbWlkIiwgdGl0bGU6ICJQeXJhbWlkZW4tQXVzYmxpY2siLCBtaW5EaWZmaWN1bHR5OiAzLCBtYXhEaWZmaWN1bHR5OiA1LCBtYWtlOiB0YXNrUHlyYW1pZFZvbHVtZSB9LAogICAgICB7IHNraWxsOiAiVm9sdW1lbiIsIHNoYXBlSWQ6ICJjb25lIiwgdGl0bGU6ICJLZWdlbC1BdXNibGljayIsIG1pbkRpZmZpY3VsdHk6IDMsIG1heERpZmZpY3VsdHk6IDUsIG1ha2U6IHRhc2tDb25lVm9sdW1lIH0sCiAgICAgIHsgc2tpbGw6ICJWb2x1bWVuIiwgc2hhcGVJZDogInNwaGVyZSIsIHRpdGxlOiAiS3VnZWwtQXVzYmxpY2siLCBtaW5EaWZmaWN1bHR5OiAzLCBtYXhEaWZmaWN1bHR5OiA1LCBtYWtlOiB0YXNrU3BoZXJlVm9sdW1lIH0sCiAgICAgIHsgc2tpbGw6ICJGb3JtZWxuIiwgc2hhcGVJZDogInJlY3RhbmdsZSIsIHRpdGxlOiAiRm9ybWVsIHfDpGhsZW4iLCBtaW5EaWZmaWN1bHR5OiAxLCBtYXhEaWZmaWN1bHR5OiA0LCBtYWtlOiB0YXNrRm9ybXVsYVJlY3RhbmdsZUFyZWEgfSwKICAgICAgeyBza2lsbDogIkZvcm1lbG4iLCBzaGFwZUlkOiAidHJpYW5nbGUiLCB0aXRsZTogIkZvcm1lbCB3w6RobGVuIiwgbWluRGlmZmljdWx0eTogMSwgbWF4RGlmZmljdWx0eTogNCwgbWFrZTogdGFza0Zvcm11bGFUcmlhbmdsZUFyZWEgfSwKICAgICAgeyBza2lsbDogIkZvcm1lbG4iLCBzaGFwZUlkOiAiY3Vib2lkIiwgdGl0bGU6ICJGb3JtZWwgd8OkaGxlbiIsIG1pbkRpZmZpY3VsdHk6IDEsIG1heERpZmZpY3VsdHk6IDQsIG1ha2U6IHRhc2tGb3JtdWxhQ3Vib2lkVm9sdW1lIH0sCiAgICAgIHsgc2tpbGw6ICJGb3JtZWxuIiwgc2hhcGVJZDogInByaXNtIiwgdGl0bGU6ICJGb3JtZWwgenVvcmRuZW4iLCBtaW5EaWZmaWN1bHR5OiAyLCBtYXhEaWZmaWN1bHR5OiA1LCBtYWtlOiB0YXNrRm9ybXVsYVByaXNtIH0sCiAgICAgIHsgc2tpbGw6ICJFaW5oZWl0ZW4iLCBzaGFwZUlkOiAicmVjdGFuZ2xlIiwgdGl0bGU6ICJFaW5oZWl0IHfDpGhsZW4iLCBtaW5EaWZmaWN1bHR5OiAxLCBtYXhEaWZmaWN1bHR5OiA1LCBtYWtlOiB0YXNrVW5pdEFyZWEgfSwKICAgICAgeyBza2lsbDogIkVpbmhlaXRlbiIsIHNoYXBlSWQ6ICJjdWJvaWQiLCB0aXRsZTogIkVpbmhlaXQgd8OkaGxlbiIsIG1pbkRpZmZpY3VsdHk6IDEsIG1heERpZmZpY3VsdHk6IDUsIG1ha2U6IHRhc2tVbml0Vm9sdW1lIH0sCiAgICAgIHsgc2tpbGw6ICJFaW5oZWl0ZW4iLCBzaGFwZUlkOiAic3F1YXJlIiwgdGl0bGU6ICJFaW5oZWl0IHfDpGhsZW4iLCBtaW5EaWZmaWN1bHR5OiAxLCBtYXhEaWZmaWN1bHR5OiA1LCBtYWtlOiB0YXNrVW5pdFBlcmltZXRlciB9LAogICAgICB7IHNraWxsOiAiU3RyYXRlZ2llIiwgc2hhcGVJZDogInJlY3RhbmdsZSIsIHRpdGxlOiAiRmVobGVyIGZpbmRlbiIsIG1pbkRpZmZpY3VsdHk6IDIsIG1heERpZmZpY3VsdHk6IDUsIG1ha2U6IHRhc2tGaW5kV3JvbmdSZWN0YW5nbGUgfSwKICAgICAgeyBza2lsbDogIlN0cmF0ZWdpZSIsIHNoYXBlSWQ6ICJjdWJvaWQiLCB0aXRsZTogIlZlcsOkbmRlcnVuZyIsIG1pbkRpZmZpY3VsdHk6IDIsIG1heERpZmZpY3VsdHk6IDUsIG1ha2U6IHRhc2tDdWJvaWRDaGFuZ2UgfSwKICAgICAgeyBza2lsbDogIlN0cmF0ZWdpZSIsIHNoYXBlSWQ6ICJyZWN0YW5nbGUiLCB0aXRsZTogIlNhY2hhdWZnYWJlIiwgbWluRGlmZmljdWx0eTogMiwgbWF4RGlmZmljdWx0eTogNSwgbWFrZTogdGFza1Jvb21GbG9vciB9LAogICAgICB7IHNraWxsOiAiVW1mYW5nIiwgc2hhcGVJZDogInJlY3RhbmdsZSIsIHRpdGxlOiAiU2FjaGF1ZmdhYmUiLCBtaW5EaWZmaWN1bHR5OiAyLCBtYXhEaWZmaWN1bHR5OiA1LCBtYWtlOiB0YXNrR2FyZGVuRmVuY2UgfSwKICAgICAgeyBza2lsbDogIlZvbHVtZW4iLCBzaGFwZUlkOiAiY3Vib2lkIiwgdGl0bGU6ICJTYWNoYXVmZ2FiZSIsIG1pbkRpZmZpY3VsdHk6IDIsIG1heERpZmZpY3VsdHk6IDUsIG1ha2U6IHRhc2tBcXVhcml1bSB9CiAgICBdOwogIH0KCiAgZnVuY3Rpb24gdGFza1JlY3RhbmdsZVBlcmltZXRlcihkaWZmaWN1bHR5KSB7CiAgICB2YXIgYSA9IHJuZCg0LCAxOCk7CiAgICB2YXIgYiA9IHJuZCgzLCAxMik7CiAgICB2YXIgYW5zd2VyID0gMiAqIGEgKyAyICogYjsKICAgIHJldHVybiBudW1iZXJDaG9pY2VUYXNrKCJVbWZhbmcgYmVyZWNobmVuIiwgIkVpbiBSZWNodGVjayBpc3QgIiArIG4oYSkgKyAiIGNtIGxhbmcgdW5kICIgKyBuKGIpICsgIiBjbSBicmVpdC4gV2llIGdyb8OfIGlzdCBkZXIgVW1mYW5nPyIsIGFuc3dlciwgImNtIiwgIlUgPSAyIMK3IGEgKyAyIMK3IGIgPSAyIMK3ICIgKyBuKGEpICsgIiArIDIgwrcgIiArIG4oYikgKyAiID0gIiArIG4oYW5zd2VyKSArICIgY20uIiwgIkJlaW0gVW1mYW5nIHdpcmQgZGVyIFJhbmQgYWRkaWVydDogTMOkbmdlIHVuZCBCcmVpdGUga29tbWVuIGpld2VpbHMgendlaW1hbCB2b3IuIiwgW2EgKyBiLCBhICogYiwgMiAqIGEgKyBiXSwgZGlmZmljdWx0eSwgMSk7CiAgfQoKICBmdW5jdGlvbiB0YXNrUmVjdGFuZ2xlQXJlYShkaWZmaWN1bHR5KSB7CiAgICB2YXIgYSA9IHJuZCg0LCAxOCk7CiAgICB2YXIgYiA9IHJuZCgzLCAxMik7CiAgICB2YXIgYW5zd2VyID0gYSAqIGI7CiAgICByZXR1cm4gbnVtYmVySW5wdXRUYXNrKCJGbMOkY2hlbmluaGFsdCBiZXJlY2huZW4iLCAiRWluIFppbW1lciBpc3QgIiArIG4oYSkgKyAiIG0gbGFuZyB1bmQgIiArIG4oYikgKyAiIG0gYnJlaXQuIEdpYiBkZW4gRmzDpGNoZW5pbmhhbHQgZWluLiIsIGFuc3dlciwgIm3CsiIsICJBID0gYSDCtyBiID0gIiArIG4oYSkgKyAiIMK3ICIgKyBuKGIpICsgIiA9ICIgKyBuKGFuc3dlcikgKyAiIG3Csi4iLCAiRmzDpGNoZW5pbmhhbHQgYmVkZXV0ZXQgUmVpaGVuIG1hbCBTcGFsdGVuLiBEaWUgRWluaGVpdCBpc3QgbcKyLiIsIGRpZmZpY3VsdHksIDEpOwogIH0KCiAgZnVuY3Rpb24gdGFza1NxdWFyZVBlcmltZXRlcihkaWZmaWN1bHR5KSB7CiAgICB2YXIgYSA9IHJuZCgzLCAxNCk7CiAgICB2YXIgYW5zd2VyID0gNCAqIGE7CiAgICByZXR1cm4gbnVtYmVyQ2hvaWNlVGFzaygiUXVhZHJhdC1VbWZhbmciLCAiRWluIFF1YWRyYXQgaGF0IGRpZSBTZWl0ZW5sw6RuZ2UgIiArIG4oYSkgKyAiIGNtLiBXaWUgZ3Jvw58gaXN0IGRlciBVbWZhbmc/IiwgYW5zd2VyLCAiY20iLCAiVSA9IDQgwrcgYSA9IDQgwrcgIiArIG4oYSkgKyAiID0gIiArIG4oYW5zd2VyKSArICIgY20uIiwgIkJlaW0gUXVhZHJhdCBzaW5kIGFsbGUgU2VpdGVuIGdsZWljaCBsYW5nLiIsIFthICogYSwgMiAqIGEsIDMgKiBhXSwgZGlmZmljdWx0eSwgMSk7CiAgfQoKICBmdW5jdGlvbiB0YXNrU3F1YXJlUmV2ZXJzZUFyZWEoZGlmZmljdWx0eSkgewogICAgdmFyIGEgPSBybmQoNCwgMTIpOwogICAgdmFyIGFyZWEgPSBhICogYTsKICAgIHJldHVybiBudW1iZXJJbnB1dFRhc2soIlVta2VocmF1ZmdhYmUiLCAiRWluIFF1YWRyYXQgaGF0IGRlbiBGbMOkY2hlbmluaGFsdCAiICsgbihhcmVhKSArICIgY23Csi4gV2llIGxhbmcgaXN0IGVpbmUgU2VpdGU/IiwgYSwgImNtIiwgIkdlc3VjaHQgaXN0IGEgbWl0IGEgwrcgYSA9ICIgKyBuKGFyZWEpICsgIi4gQWxzbyBpc3QgYSA9ICIgKyBuKGEpICsgIiBjbS4iLCAiV2VsY2hlIFphaGwgbWFsIHNpY2ggc2VsYnN0IGVyZ2lidCBkZW4gRmzDpGNoZW5pbmhhbHQ/IiwgZGlmZmljdWx0eSwgNCk7CiAgfQoKICBmdW5jdGlvbiB0YXNrVHJpYW5nbGVBcmVhKGRpZmZpY3VsdHkpIHsKICAgIHZhciBnID0gcm5kKDQsIDE2KTsKICAgIHZhciBoID0gcGljayhbNCwgNiwgOCwgMTAsIDEyXSk7CiAgICB2YXIgYW5zd2VyID0gZyAqIGggLyAyOwogICAgcmV0dXJuIG51bWJlckNob2ljZVRhc2soIkRyZWllY2tzZmzDpGNoZSIsICJFaW4gRHJlaWVjayBoYXQgZGllIEdydW5kc2VpdGUgZyA9ICIgKyBuKGcpICsgIiBjbSB1bmQgZGllIEjDtmhlIGggPSAiICsgbihoKSArICIgY20uIFdpZSBncm/DnyBpc3QgZGllIEZsw6RjaGU/IiwgYW5zd2VyLCAiY23CsiIsICJBID0gZyDCtyBoIDogMiA9ICIgKyBuKGcpICsgIiDCtyAiICsgbihoKSArICIgOiAyID0gIiArIG4oYW5zd2VyKSArICIgY23Csi4iLCAiRGFzIERyZWllY2sgaXN0IGhhbGIgc28gZ3Jvw58gd2llIGRhcyBwYXNzZW5kZSBSZWNodGVjay4iLCBbZyAqIGgsIGcgKyBoLCAoZyArIGgpICogMl0sIGRpZmZpY3VsdHksIDIpOwogIH0KCiAgZnVuY3Rpb24gdGFza1RyaWFuZ2xlUGVyaW1ldGVyKGRpZmZpY3VsdHkpIHsKICAgIHZhciBhID0gcm5kKDQsIDEyKTsKICAgIHZhciBiID0gcm5kKDQsIDEyKTsKICAgIHZhciBjID0gcm5kKDQsIDEyKTsKICAgIHZhciBhbnN3ZXIgPSBhICsgYiArIGM7CiAgICByZXR1cm4gbnVtYmVyQ2hvaWNlVGFzaygiRHJlaWVja3MtVW1mYW5nIiwgIkVpbiBEcmVpZWNrIGhhdCBkaWUgU2VpdGVuICIgKyBuKGEpICsgIiBjbSwgIiArIG4oYikgKyAiIGNtIHVuZCAiICsgbihjKSArICIgY20uIFdpZSBncm/DnyBpc3QgZGVyIFVtZmFuZz8iLCBhbnN3ZXIsICJjbSIsICJVID0gYSArIGIgKyBjID0gIiArIG4oYSkgKyAiICsgIiArIG4oYikgKyAiICsgIiArIG4oYykgKyAiID0gIiArIG4oYW5zd2VyKSArICIgY20uIiwgIkJlaW0gVW1mYW5nIHrDpGhsdCBqZWRlIFJhbmRzZWl0ZSBnZW5hdSBlaW5tYWwuIiwgW2EgKiBiLCAyICogKGEgKyBiKSwgYSArIGJdLCBkaWZmaWN1bHR5LCAxKTsKICB9CgogIGZ1bmN0aW9uIHRhc2tSaWdodFRyaWFuZ2xlQXJlYShkaWZmaWN1bHR5KSB7CiAgICB2YXIgYSA9IHBpY2soWzQsIDYsIDgsIDEwLCAxMiwgMTRdKTsKICAgIHZhciBiID0gcGljayhbNCwgNiwgOCwgMTBdKTsKICAgIHZhciBhbnN3ZXIgPSBhICogYiAvIDI7CiAgICByZXR1cm4gbnVtYmVySW5wdXRUYXNrKCJSZWNodHdpbmtsaWdlcyBEcmVpZWNrIiwgIkVpbiByZWNodHdpbmtsaWdlcyBEcmVpZWNrIGhhdCBLYXRoZXRlbiB2b24gIiArIG4oYSkgKyAiIGNtIHVuZCAiICsgbihiKSArICIgY20uIEdpYiBkZW4gRmzDpGNoZW5pbmhhbHQgZWluLiIsIGFuc3dlciwgImNtwrIiLCAiQSA9IGEgwrcgYiA6IDIgPSAiICsgbihhKSArICIgwrcgIiArIG4oYikgKyAiIDogMiA9ICIgKyBuKGFuc3dlcikgKyAiIGNtwrIuIiwgIkRpZSBLYXRoZXRlbiBiaWxkZW4gZWluIFJlY2h0ZWNrLiBEYXMgRHJlaWVjayBpc3QgZGllIEjDpGxmdGUgZGF2b24uIiwgZGlmZmljdWx0eSwgMik7CiAgfQoKICBmdW5jdGlvbiB0YXNrUGFyYWxsZWxvZ3JhbUNoYW5nZShkaWZmaWN1bHR5KSB7CiAgICByZXR1cm4gY2hvaWNlVGFzaygiVmVyw6RuZGVydW5nIiwgIkJlaSBlaW5lbSBQYXJhbGxlbG9ncmFtbSBibGVpYnQgZGllIEjDtmhlIGdsZWljaC4gRGllIEdydW5kc2VpdGUgd2lyZCB2ZXJkb3BwZWx0LiBXYXMgcGFzc2llcnQgbWl0IGRlbSBGbMOkY2hlbmluaGFsdD8iLCBbIkVyIHZlcmRvcHBlbHQgc2ljaC4iLCAiRXIgaGFsYmllcnQgc2ljaC4iLCAiRXIgYmxlaWJ0IGdsZWljaC4iLCAiRXIgdmVydmllcmZhY2h0IHNpY2guIl0sIDAsICJBID0gZyDCtyBoLiBXZW5uIG51ciBnIHZlcmRvcHBlbHQgd2lyZCB1bmQgaCBnbGVpY2ggYmxlaWJ0LCB3aXJkIGF1Y2ggQSB2ZXJkb3BwZWx0LiIsICJTY2hhdSBhdWYgZGllIEZvcm1lbCBBID0gZyDCtyBoLiIsIGRpZmZpY3VsdHksIDMpOwogIH0KCiAgZnVuY3Rpb24gdGFza1RyYXBlem9pZEFyZWEoZGlmZmljdWx0eSkgewogICAgdmFyIGEgPSBybmQoMTAsIDIwKTsKICAgIHZhciBjID0gcm5kKDQsIDEyKTsKICAgIHZhciBoID0gcGljayhbNCwgNiwgOCwgMTBdKTsKICAgIHZhciBhbnN3ZXIgPSAoYSArIGMpICogaCAvIDI7CiAgICByZXR1cm4gbnVtYmVyQ2hvaWNlVGFzaygiVHJhcGV6ZmzDpGNoZSIsICJFaW4gVHJhcGV6IGhhdCBwYXJhbGxlbGUgU2VpdGVuIGEgPSAiICsgbihhKSArICIgY20gdW5kIGMgPSAiICsgbihjKSArICIgY20uIERpZSBIw7ZoZSBiZXRyw6RndCAiICsgbihoKSArICIgY20uIFdpZSBncm/DnyBpc3QgQT8iLCBhbnN3ZXIsICJjbcKyIiwgIkEgPSAoYSArIGMpIMK3IGggOiAyID0gKCIgKyBuKGEpICsgIiArICIgKyBuKGMpICsgIikgwrcgIiArIG4oaCkgKyAiIDogMiA9ICIgKyBuKGFuc3dlcikgKyAiIGNtwrIuIiwgIkFkZGllcmUgenVlcnN0IGRpZSBwYXJhbGxlbGVuIFNlaXRlbiB1bmQgcmVjaG5lIGRhbm4gbWl0IGRlciBIw7ZoZS4iLCBbKGEgKyBjKSAqIGgsIGEgKiBjLCBhICsgYyArIGhdLCBkaWZmaWN1bHR5LCAzKTsKICB9CgogIGZ1bmN0aW9uIHRhc2tSaG9tYnVzQXJlYShkaWZmaWN1bHR5KSB7CiAgICB2YXIgZSA9IHBpY2soWzgsIDEwLCAxMiwgMTQsIDE2XSk7CiAgICB2YXIgZiA9IHBpY2soWzYsIDgsIDEwLCAxMl0pOwogICAgdmFyIGFuc3dlciA9IGUgKiBmIC8gMjsKICAgIHJldHVybiBudW1iZXJDaG9pY2VUYXNrKCJSYXV0ZSIsICJFaW5lIFJhdXRlIGhhdCBkaWUgRGlhZ29uYWxlbiBlID0gIiArIG4oZSkgKyAiIGNtIHVuZCBmID0gIiArIG4oZikgKyAiIGNtLiBXaWUgZ3Jvw58gaXN0IGRlciBGbMOkY2hlbmluaGFsdD8iLCBhbnN3ZXIsICJjbcKyIiwgIkEgPSBlIMK3IGYgOiAyID0gIiArIG4oZSkgKyAiIMK3ICIgKyBuKGYpICsgIiA6IDIgPSAiICsgbihhbnN3ZXIpICsgIiBjbcKyLiIsICJEaWUgRGlhZ29uYWxlbiBoZWxmZW4gYmVpbSBaZXJsZWdlbiBpbiBEcmVpZWNrZS4iLCBbZSAqIGYsIGUgKyBmLCAyICogKGUgKyBmKV0sIGRpZmZpY3VsdHksIDMpOwogIH0KCiAgZnVuY3Rpb24gdGFza0NvbXBvc2l0ZUFyZWEoZGlmZmljdWx0eSkgewogICAgdmFyIGEgPSBybmQoMTAsIDE4KTsKICAgIHZhciBiID0gcm5kKDgsIDE0KTsKICAgIHZhciBjID0gcm5kKDMsIDYpOwogICAgdmFyIGQgPSBybmQoMiwgNSk7CiAgICB2YXIgYW5zd2VyID0gYSAqIGIgLSBjICogZDsKICAgIHJldHVybiBudW1iZXJJbnB1dFRhc2soIlplcmxlZ3VuZ3NhdWZnYWJlIiwgIkVpbmUgTC1GbMOkY2hlIGVudHN0ZWh0IGF1cyBlaW5lbSBSZWNodGVjayAiICsgbihhKSArICIgY20gw5cgIiArIG4oYikgKyAiIGNtLiBPYmVuIHJlY2h0cyBmZWhsdCBlaW4gUmVjaHRlY2sgIiArIG4oYykgKyAiIGNtIMOXICIgKyBuKGQpICsgIiBjbS4gR2liIGRpZSBGbMOkY2hlIGVpbi4iLCBhbnN3ZXIsICJjbcKyIiwgIkdyb8OfZXMgUmVjaHRlY2s6ICIgKyBuKGEgKiBiKSArICIgY23Csi4gQXVzc2Nobml0dDogIiArIG4oYyAqIGQpICsgIiBjbcKyLiBBbHNvIEEgPSAiICsgbihhbnN3ZXIpICsgIiBjbcKyLiIsICJFcmfDpG56ZSB6dWVyc3QgenVtIGdyb8OfZW4gUmVjaHRlY2sgdW5kIHppZWhlIGRlbiBmZWhsZW5kZW4gVGVpbCBhYi4iLCBkaWZmaWN1bHR5LCAzKTsKICB9CgogIGZ1bmN0aW9uIHRhc2tDb21wb3NpdGVQdXp6bGUoZGlmZmljdWx0eSkgewogICAgdmFyIGEgPSAxNjsKICAgIHZhciBiID0gMTA7CiAgICB2YXIgYyA9IDU7CiAgICB2YXIgZCA9IDQ7CiAgICB2YXIgYW5zd2VyID0gYSAqIGIgLSBjICogZDsKICAgIHJldHVybiBudW1iZXJDaG9pY2VUYXNrKCJNZWlzdGVyYXVmZ2FiZSIsICJFaW4gR2FydGVuYmVldCBpc3QgTC1mw7ZybWlnLiBHcm/Dn2VzIFJlY2h0ZWNrOiAxNiBtIMOXIDEwIG0uIEF1c3NjaG5pdHQ6IDUgbSDDlyA0IG0uIFdpZSB2aWVsZSBRdWFkcmF0bWV0ZXIgRXJkZSB3ZXJkZW4gZ2VicmF1Y2h0PyIsIGFuc3dlciwgIm3CsiIsICJBID0gMTYgwrcgMTAgLSA1IMK3IDQgPSAxNjAgLSAyMCA9IDE0MCBtwrIuIiwgIlp1ZXJzdCBkYXMgZ3Jvw59lIFJlY2h0ZWNrLCBkYW5uIGRlbiBBdXNzY2huaXR0IGFiemllaGVuLiIsIFthICogYiwgYyAqIGQsIDIgKiBhICsgMiAqIGJdLCBkaWZmaWN1bHR5LCA1KTsKICB9CgogIGZ1bmN0aW9uIHRhc2tDaXJjbGVQZXJpbWV0ZXIoZGlmZmljdWx0eSkgewogICAgdmFyIHIgPSBwaWNrKFsyLCAzLCA0LCA1LCA2LCA4XSk7CiAgICB2YXIgYW5zd2VyID0gMiAqIFBJICogcjsKICAgIHJldHVybiBudW1iZXJDaG9pY2VUYXNrKCJLcmVpc3VtZmFuZyIsICJBdXNibGljayBLcmVpczogciA9ICIgKyBuKHIpICsgIiBjbS4gTnV0emUgz4Ag4omIIDMsMTQuIFdpZSBncm/DnyBpc3QgZGVyIFVtZmFuZyB1bmdlZsOkaHI/IiwgYW5zd2VyLCAiY20iLCAiVSA9IDIgwrcgz4AgwrcgciA9IDIgwrcgMywxNCDCtyAiICsgbihyKSArICIgPSAiICsgbihhbnN3ZXIpICsgIiBjbS4iLCAiVW1mYW5nIGlzdCBkZXIgUmFuZDogQmVpbSBLcmVpcyBudXR6dCBkdSAyIMK3IM+AIMK3IHIuIiwgW1BJICogciAqIHIsIDIgKiByLCBQSSAqIHJdLCBkaWZmaWN1bHR5LCAzKTsKICB9CgogIGZ1bmN0aW9uIHRhc2tDaXJjbGVBcmVhKGRpZmZpY3VsdHkpIHsKICAgIHZhciByID0gcGljayhbMiwgMywgNCwgNSwgNl0pOwogICAgdmFyIGFuc3dlciA9IFBJICogciAqIHI7CiAgICByZXR1cm4gbnVtYmVyQ2hvaWNlVGFzaygiS3JlaXNmbMOkY2hlIiwgIkF1c2JsaWNrIEtyZWlzOiByID0gIiArIG4ocikgKyAiIGNtLiBOdXR6ZSDPgCDiiYggMywxNC4gV2llIGdyb8OfIGlzdCBkaWUgRmzDpGNoZSB1bmdlZsOkaHI/IiwgYW5zd2VyLCAiY23CsiIsICJBID0gz4AgwrcgcsKyID0gMywxNCDCtyAiICsgbihyKSArICLCsiA9ICIgKyBuKGFuc3dlcikgKyAiIGNtwrIuIiwgIkbDvHIgZGllIEtyZWlzZmzDpGNoZSBrb21tdCBkZXIgUmFkaXVzIHp3ZWltYWwgdm9yOiBywrIuIiwgWzIgKiBQSSAqIHIsIHIgKiByLCBQSSAqIHJdLCBkaWZmaWN1bHR5LCAzKTsKICB9CgogIGZ1bmN0aW9uIHRhc2tDdWJlVm9sdW1lKGRpZmZpY3VsdHkpIHsKICAgIHZhciBhID0gcm5kKDIsIDkpOwogICAgdmFyIGFuc3dlciA9IGEgKiBhICogYTsKICAgIHJldHVybiBudW1iZXJDaG9pY2VUYXNrKCJXw7xyZmVsdm9sdW1lbiIsICJFaW4gV8O8cmZlbCBoYXQgZGllIEthbnRlbmzDpG5nZSAiICsgbihhKSArICIgY20uIFdpZSBncm/DnyBpc3QgZGFzIFZvbHVtZW4/IiwgYW5zd2VyLCAiY23CsyIsICJWID0gYSDCtyBhIMK3IGEgPSAiICsgbihhKSArICIgwrcgIiArIG4oYSkgKyAiIMK3ICIgKyBuKGEpICsgIiA9ICIgKyBuKGFuc3dlcikgKyAiIGNtwrMuIiwgIlZvbHVtZW4gesOkaGx0IEVpbmhlaXRzd8O8cmZlbCwgZGVzaGFsYiBjbcKzLiIsIFthICogYSwgNiAqIGEgKiBhLCA0ICogYV0sIGRpZmZpY3VsdHksIDEpOwogIH0KCiAgZnVuY3Rpb24gdGFza0N1Ym9pZFZvbHVtZShkaWZmaWN1bHR5KSB7CiAgICB2YXIgbCA9IHJuZCg0LCAxNCk7CiAgICB2YXIgYiA9IHJuZCgzLCAxMCk7CiAgICB2YXIgaCA9IHJuZCgyLCA4KTsKICAgIHZhciBhbnN3ZXIgPSBsICogYiAqIGg7CiAgICByZXR1cm4gbnVtYmVySW5wdXRUYXNrKCJRdWFkZXJ2b2x1bWVuIiwgIkVpbiBRdWFkZXIgaXN0ICIgKyBuKGwpICsgIiBjbSBsYW5nLCAiICsgbihiKSArICIgY20gYnJlaXQgdW5kICIgKyBuKGgpICsgIiBjbSBob2NoLiBHaWIgZGFzIFZvbHVtZW4gZWluLiIsIGFuc3dlciwgImNtwrMiLCAiViA9IGwgwrcgYiDCtyBoID0gIiArIG4obCkgKyAiIMK3ICIgKyBuKGIpICsgIiDCtyAiICsgbihoKSArICIgPSAiICsgbihhbnN3ZXIpICsgIiBjbcKzLiIsICJFcnN0IEdydW5kZmzDpGNoZSBsIMK3IGIsIGRhbm4gbWFsIEjDtmhlLiIsIGRpZmZpY3VsdHksIDEpOwogIH0KCiAgZnVuY3Rpb24gdGFza0N1Ym9pZFJldmVyc2VIZWlnaHQoZGlmZmljdWx0eSkgewogICAgdmFyIGwgPSBybmQoNCwgMTApOwogICAgdmFyIGIgPSBybmQoMywgOCk7CiAgICB2YXIgaCA9IHJuZCgyLCA5KTsKICAgIHZhciB2b2x1bWUgPSBsICogYiAqIGg7CiAgICByZXR1cm4gbnVtYmVySW5wdXRUYXNrKCJGZWhsZW5kZSBIw7ZoZSIsICJFaW4gUXVhZGVyIGhhdCBWID0gIiArIG4odm9sdW1lKSArICIgY23CsywgbCA9ICIgKyBuKGwpICsgIiBjbSB1bmQgYiA9ICIgKyBuKGIpICsgIiBjbS4gV2llIGhvY2ggaXN0IGVyPyIsIGgsICJjbSIsICJoID0gViA6IChsIMK3IGIpID0gIiArIG4odm9sdW1lKSArICIgOiAoIiArIG4obCkgKyAiIMK3ICIgKyBuKGIpICsgIikgPSAiICsgbihoKSArICIgY20uIiwgIlRlaWxlIGRhcyBWb2x1bWVuIGR1cmNoIGRpZSBHcnVuZGZsw6RjaGUuIiwgZGlmZmljdWx0eSwgNCk7CiAgfQoKICBmdW5jdGlvbiB0YXNrUHJpc21Wb2x1bWUoZGlmZmljdWx0eSkgewogICAgdmFyIGcgPSBwaWNrKFs2LCA4LCAxMCwgMTJdKTsKICAgIHZhciBoID0gcGljayhbNCwgNiwgOF0pOwogICAgdmFyIGsgPSBybmQoNSwgMTIpOwogICAgdmFyIGJhc2UgPSBnICogaCAvIDI7CiAgICB2YXIgYW5zd2VyID0gYmFzZSAqIGs7CiAgICByZXR1cm4gbnVtYmVyQ2hvaWNlVGFzaygiRHJlaWVja3NwcmlzbWEiLCAiRWluIERyZWllY2tzcHJpc21hIGhhdCBlaW5lIERyZWllY2tzZ3J1bmRmbMOkY2hlIG1pdCBnID0gIiArIG4oZykgKyAiIGNtIHVuZCBoID0gIiArIG4oaCkgKyAiIGNtLiBEaWUgS8O2cnBlcmjDtmhlIGsgYmV0csOkZ3QgIiArIG4oaykgKyAiIGNtLiBXaWUgZ3Jvw58gaXN0IFY/IiwgYW5zd2VyLCAiY23CsyIsICJHID0gIiArIG4oZykgKyAiIMK3ICIgKyBuKGgpICsgIiA6IDIgPSAiICsgbihiYXNlKSArICIgY23Csi4gViA9IEcgwrcgayA9ICIgKyBuKGJhc2UpICsgIiDCtyAiICsgbihrKSArICIgPSAiICsgbihhbnN3ZXIpICsgIiBjbcKzLiIsICJFcnN0IEdydW5kZmzDpGNoZSBiZXJlY2huZW4sIGRhbm4gaW4gZGllIFRpZWZlIHN0YXBlbG4uIiwgW2cgKiBoICogaywgYmFzZSArIGssIGcgKyBoICsga10sIGRpZmZpY3VsdHksIDMpOwogIH0KCiAgZnVuY3Rpb24gdGFza1ByaXNtUHV6emxlKGRpZmZpY3VsdHkpIHsKICAgIHZhciBnID0gODsKICAgIHZhciBoID0gNjsKICAgIHZhciBrID0gMTI7CiAgICB2YXIgYmFzZSA9IGcgKiBoIC8gMjsKICAgIHZhciBhbnN3ZXIgPSBiYXNlICogazsKICAgIHJldHVybiBudW1iZXJJbnB1dFRhc2soIk1laXN0ZXJhdWZnYWJlIiwgIkVpbiBaZWx0IMOkaG5lbHQgZWluZW0gRHJlaWVja3NwcmlzbWEuIERpZSBEcmVpZWNrc2Zsw6RjaGUgdm9ybmUgaGF0IGcgPSA4IG0gdW5kIGggPSA2IG0uIERhcyBaZWx0IGlzdCAxMiBtIGxhbmcuIEdpYiBkYXMgVm9sdW1lbiBlaW4uIiwgYW5zd2VyLCAibcKzIiwgIkcgPSA4IMK3IDYgOiAyID0gMjQgbcKyLiBWID0gMjQgwrcgMTIgPSAyODggbcKzLiIsICJaZWx0IHZvcm5lIGFscyBEcmVpZWNrLCBkYW5uIGluIGRpZSBMw6RuZ2Ugc3RhcGVsbi4iLCBkaWZmaWN1bHR5LCA1KTsKICB9CgogIGZ1bmN0aW9uIHRhc2tDeWxpbmRlclZvbHVtZShkaWZmaWN1bHR5KSB7CiAgICB2YXIgciA9IHBpY2soWzIsIDMsIDQsIDVdKTsKICAgIHZhciBoID0gcGljayhbNCwgNiwgOCwgMTBdKTsKICAgIHZhciBhbnN3ZXIgPSBQSSAqIHIgKiByICogaDsKICAgIHJldHVybiBudW1iZXJDaG9pY2VUYXNrKCJaeWxpbmRlciIsICJBdXNibGljayBaeWxpbmRlcjogciA9ICIgKyBuKHIpICsgIiBjbSwgaCA9ICIgKyBuKGgpICsgIiBjbS4gTnV0emUgz4Ag4omIIDMsMTQuIFdpZSBncm/DnyBpc3QgViB1bmdlZsOkaHI/IiwgYW5zd2VyLCAiY23CsyIsICJWID0gz4AgwrcgcsKyIMK3IGggPSAzLDE0IMK3ICIgKyBuKHIpICsgIsKyIMK3ICIgKyBuKGgpICsgIiA9ICIgKyBuKGFuc3dlcikgKyAiIGNtwrMuIiwgIktyZWlzLUdydW5kZmzDpGNoZSBtYWwgSMO2aGUuIiwgW1BJICogciAqIGgsIDIgKiBQSSAqIHIgKiBoLCBQSSAqIHIgKiByXSwgZGlmZmljdWx0eSwgMyk7CiAgfQoKICBmdW5jdGlvbiB0YXNrUHlyYW1pZFZvbHVtZShkaWZmaWN1bHR5KSB7CiAgICB2YXIgYSA9IHBpY2soWzMsIDYsIDksIDEyXSk7CiAgICB2YXIgaCA9IHBpY2soWzYsIDksIDEyXSk7CiAgICB2YXIgYW5zd2VyID0gYSAqIGEgKiBoIC8gMzsKICAgIHJldHVybiBudW1iZXJDaG9pY2VUYXNrKCJQeXJhbWlkZSIsICJBdXNibGljayBQeXJhbWlkZTogcXVhZHJhdGlzY2hlIEdydW5kZmzDpGNoZSBhID0gIiArIG4oYSkgKyAiIGNtLCBIw7ZoZSBoID0gIiArIG4oaCkgKyAiIGNtLiBXaWUgZ3Jvw58gaXN0IFY/IiwgYW5zd2VyLCAiY23CsyIsICJHID0gIiArIG4oYSkgKyAiIMK3ICIgKyBuKGEpICsgIiA9ICIgKyBuKGEgKiBhKSArICIgY23Csi4gViA9IEcgwrcgaCA6IDMgPSAiICsgbihhbnN3ZXIpICsgIiBjbcKzLiIsICJQeXJhbWlkZW52b2x1bWVuOiBHcnVuZGZsw6RjaGUgbWFsIEjDtmhlIGR1cmNoIDMuIiwgW2EgKiBhICogaCwgYSAqIGggLyAzLCBhICogYV0sIGRpZmZpY3VsdHksIDQpOwogIH0KCiAgZnVuY3Rpb24gdGFza0NvbmVWb2x1bWUoZGlmZmljdWx0eSkgewogICAgdmFyIHIgPSBwaWNrKFsyLCAzLCA0XSk7CiAgICB2YXIgaCA9IHBpY2soWzYsIDksIDEyXSk7CiAgICB2YXIgYW5zd2VyID0gUEkgKiByICogciAqIGggLyAzOwogICAgcmV0dXJuIG51bWJlckNob2ljZVRhc2soIktlZ2VsIiwgIkF1c2JsaWNrIEtlZ2VsOiByID0gIiArIG4ocikgKyAiIGNtLCBoID0gIiArIG4oaCkgKyAiIGNtLiBOdXR6ZSDPgCDiiYggMywxNC4gV2llIGdyb8OfIGlzdCBWIHVuZ2Vmw6Rocj8iLCBhbnN3ZXIsICJjbcKzIiwgIlYgPSDPgCDCtyBywrIgwrcgaCA6IDMgPSAzLDE0IMK3ICIgKyBuKHIpICsgIsKyIMK3ICIgKyBuKGgpICsgIiA6IDMgPSAiICsgbihhbnN3ZXIpICsgIiBjbcKzLiIsICJEZXIgS2VnZWwgbnV0enQgZGllIEtyZWlzZ3J1bmRmbMOkY2hlIHVuZCB3aXJkIGR1cmNoIDMgZ2VyZWNobmV0LiIsIFtQSSAqIHIgKiByICogaCwgUEkgKiByICogaCwgMiAqIFBJICogcl0sIGRpZmZpY3VsdHksIDQpOwogIH0KCiAgZnVuY3Rpb24gdGFza1NwaGVyZVZvbHVtZShkaWZmaWN1bHR5KSB7CiAgICB2YXIgciA9IHBpY2soWzIsIDMsIDRdKTsKICAgIHZhciBhbnN3ZXIgPSA0ICogUEkgKiByICogciAqIHIgLyAzOwogICAgcmV0dXJuIG51bWJlckNob2ljZVRhc2soIkt1Z2VsIiwgIkF1c2JsaWNrIEt1Z2VsOiByID0gIiArIG4ocikgKyAiIGNtLiBOdXR6ZSDPgCDiiYggMywxNC4gV2llIGdyb8OfIGlzdCBWIHVuZ2Vmw6Rocj8iLCBhbnN3ZXIsICJjbcKzIiwgIlYgPSA0IDogMyDCtyDPgCDCtyBywrMgPSA0IDogMyDCtyAzLDE0IMK3ICIgKyBuKHIpICsgIsKzID0gIiArIG4oYW5zd2VyKSArICIgY23Csy4iLCAiQmVpbSBLdWdlbHZvbHVtZW4ga29tbXQgZGVyIFJhZGl1cyBkcmVpbWFsIHZvci4iLCBbNCAqIFBJICogciAqIHIsIFBJICogciAqIHIgKiByLCAyICogUEkgKiByXSwgZGlmZmljdWx0eSwgNCk7CiAgfQoKICBmdW5jdGlvbiB0YXNrRm9ybXVsYVJlY3RhbmdsZUFyZWEoZGlmZmljdWx0eSkgewogICAgcmV0dXJuIGNob2ljZVRhc2soIkZvcm1lbCB3w6RobGVuIiwgIldlbGNoZSBGb3JtZWwgcGFzc3QgenVtIEZsw6RjaGVuaW5oYWx0IGVpbmVzIFJlY2h0ZWNrcz8iLCBbIkEgPSBhIMK3IGIiLCAiVSA9IDIgwrcgYSArIDIgwrcgYiIsICJWID0gbCDCtyBiIMK3IGgiLCAiQSA9IGcgwrcgaCA6IDIiXSwgMCwgIkJlaW0gUmVjaHRlY2sgd2VyZGVuIEzDpG5nZSB1bmQgQnJlaXRlIG11bHRpcGxpemllcnQ6IEEgPSBhIMK3IGIuIiwgIkZsw6RjaGVuaW5oYWx0IHrDpGhsdCBLw6RzdGNoZW4gaW0gUmVjaHRlY2suIiwgZGlmZmljdWx0eSwgMSk7CiAgfQoKICBmdW5jdGlvbiB0YXNrRm9ybXVsYVRyaWFuZ2xlQXJlYShkaWZmaWN1bHR5KSB7CiAgICByZXR1cm4gY2hvaWNlVGFzaygiRm9ybWVsIHfDpGhsZW4iLCAiV2VsY2hlIEZvcm1lbCBwYXNzdCB6dW0gRmzDpGNoZW5pbmhhbHQgZWluZXMgRHJlaWVja3MgbWl0IEdydW5kc2VpdGUgZyB1bmQgSMO2aGUgaD8iLCBbIkEgPSBnIMK3IGggOiAyIiwgIkEgPSBnIMK3IGgiLCAiVSA9IDMgwrcgZyIsICJWID0gRyDCtyBoIl0sIDAsICJEYXMgRHJlaWVjayBpc3QgZGllIEjDpGxmdGUgZGVzIHBhc3NlbmRlbiBSZWNodGVja3M6IEEgPSBnIMK3IGggOiAyLiIsICJEcmVpZWNrIGJlZGV1dGV0OiBwYXNzZW5kZXMgUmVjaHRlY2sgaGFsYmllcmVuLiIsIGRpZmZpY3VsdHksIDEpOwogIH0KCiAgZnVuY3Rpb24gdGFza0Zvcm11bGFDdWJvaWRWb2x1bWUoZGlmZmljdWx0eSkgewogICAgcmV0dXJuIGNob2ljZVRhc2soIkZvcm1lbCB3w6RobGVuIiwgIldlbGNoZSBGb3JtZWwgcGFzc3QgenVtIFZvbHVtZW4gZWluZXMgUXVhZGVycz8iLCBbIlYgPSBsIMK3IGIgwrcgaCIsICJBID0gYSDCtyBiIiwgIlUgPSAyIMK3IGwgKyAyIMK3IGIiLCAiViA9IGEgwrcgYSJdLCAwLCAiRWluIFF1YWRlciB3aXJkIGF1cyBMw6RuZ2UsIEJyZWl0ZSB1bmQgSMO2aGUgZ2ViaWxkZXQ6IFYgPSBsIMK3IGIgwrcgaC4iLCAiVm9sdW1lbiBicmF1Y2h0IGRyZWkgTMOkbmdlbnJpY2h0dW5nZW4uIiwgZGlmZmljdWx0eSwgMSk7CiAgfQoKICBmdW5jdGlvbiB0YXNrRm9ybXVsYVByaXNtKGRpZmZpY3VsdHkpIHsKICAgIHJldHVybiBjaG9pY2VUYXNrKCJadW9yZG5lbiIsICJXZWxjaGUgQXVzc2FnZSBwYXNzdCB6dSBqZWRlbSBQcmlzbWE/IiwgWyJWID0gR3J1bmRmbMOkY2hlIMK3IEvDtnJwZXJow7ZoZSIsICJVID0gNCDCtyBhIiwgIkEgPSDPgCDCtyBywrIiLCAiViA9IGEgwrcgYSJdLCAwLCAiRsO8ciBqZWRlcyBQcmlzbWEgZ2lsdDogVm9sdW1lbiA9IEdydW5kZmzDpGNoZSDCtyBLw7ZycGVyaMO2aGUuIiwgIkVpbiBQcmlzbWEgc3RhcGVsdCBnbGVpY2hlIEdydW5kZmzDpGNoZW4uIiwgZGlmZmljdWx0eSwgMik7CiAgfQoKICBmdW5jdGlvbiB0YXNrVW5pdEFyZWEoZGlmZmljdWx0eSkgewogICAgcmV0dXJuIGNob2ljZVRhc2soIkVpbmhlaXQgd8OkaGxlbiIsICJXZWxjaGUgRWluaGVpdCBwYXNzdCB6dSBlaW5lbSBGbMOkY2hlbmluaGFsdD8iLCBbImNtwrIiLCAiY20iLCAiY23CsyIsICJrZyJdLCAwLCAiRmzDpGNoZW5pbmhhbHQgd2lyZCBpbiBRdWFkcmF0ZWluaGVpdGVuIGdlbWVzc2VuLCB6dW0gQmVpc3BpZWwgY23CsiBvZGVyIG3Csi4iLCAiRWluZSBGbMOkY2hlIGhhdCB6d2VpIFJpY2h0dW5nZW46IEzDpG5nZSB1bmQgQnJlaXRlLiIsIGRpZmZpY3VsdHksIDEpOwogIH0KCiAgZnVuY3Rpb24gdGFza1VuaXRWb2x1bWUoZGlmZmljdWx0eSkgewogICAgcmV0dXJuIGNob2ljZVRhc2soIkVpbmhlaXQgd8OkaGxlbiIsICJXZWxjaGUgRWluaGVpdCBwYXNzdCB6dSBlaW5lbSBWb2x1bWVuPyIsIFsiY23CsyIsICJjbcKyIiwgImNtIiwgIkdyYWQiXSwgMCwgIlZvbHVtZW4gd2lyZCBpbiBLdWJpa2VpbmhlaXRlbiBnZW1lc3NlbiwgenVtIEJlaXNwaWVsIGNtwrMgb2RlciBtwrMuIiwgIlZvbHVtZW4gaGF0IGRyZWkgUmljaHR1bmdlbi4iLCBkaWZmaWN1bHR5LCAxKTsKICB9CgogIGZ1bmN0aW9uIHRhc2tVbml0UGVyaW1ldGVyKGRpZmZpY3VsdHkpIHsKICAgIHJldHVybiBjaG9pY2VUYXNrKCJFaW5oZWl0IHfDpGhsZW4iLCAiV2VsY2hlIEVpbmhlaXQgcGFzc3QgenVtIFVtZmFuZz8iLCBbIm0iLCAibcKyIiwgIm3CsyIsICJMaXRlciBwcm8gTWludXRlIl0sIDAsICJVbWZhbmcgaXN0IGVpbmUgTMOkbmdlIGFtIFJhbmQuIERlc2hhbGIgcGFzc3QgbSBvZGVyIGNtLiIsICJVbWZhbmcgaXN0IGtlaW4gRmzDpGNoZW4tIHVuZCBrZWluIFJhdW1tYcOfLiIsIGRpZmZpY3VsdHksIDEpOwogIH0KCiAgZnVuY3Rpb24gdGFza0ZpbmRXcm9uZ1JlY3RhbmdsZShkaWZmaWN1bHR5KSB7CiAgICB2YXIgYSA9IDg7CiAgICB2YXIgYiA9IDU7CiAgICByZXR1cm4gY2hvaWNlVGFzaygiRmVobGVyIGZpbmRlbiIsICJFaW4gUmVjaHRlY2sgaGF0IGEgPSA4IGNtIHVuZCBiID0gNSBjbS4gV2VsY2hlIFJlY2hudW5nIGlzdCBmYWxzY2g/IiwgWyJBID0gMiDCtyA4ICsgMiDCtyA1ID0gMjYgY23CsiIsICJVID0gMiDCtyA4ICsgMiDCtyA1ID0gMjYgY20iLCAiQSA9IDggwrcgNSA9IDQwIGNtwrIiLCAiVSA9IDggKyA1ICsgOCArIDUgPSAyNiBjbSJdLCAwLCAiRGllIFJlY2hudW5nIDIgwrcgOCArIDIgwrcgNSBiZXJlY2huZXQgZGVuIFVtZmFuZywgbmljaHQgZGVuIEZsw6RjaGVuaW5oYWx0LiBBdcOfZXJkZW0gd8OkcmUgZsO8ciBGbMOkY2hlIGRpZSBFaW5oZWl0IGNtwrIgbsO2dGlnLiIsICJQcsO8ZmUgenVlcnN0OiBXaXJkIFJhbmQgb2RlciBGbMOkY2hlIGdlc3VjaHQ/IiwgZGlmZmljdWx0eSwgMyk7CiAgfQoKICBmdW5jdGlvbiB0YXNrQ3Vib2lkQ2hhbmdlKGRpZmZpY3VsdHkpIHsKICAgIHJldHVybiBjaG9pY2VUYXNrKCJWZXLDpG5kZXJ1bmciLCAiQmVpIGVpbmVtIFF1YWRlciBibGVpYmVuIEzDpG5nZSB1bmQgQnJlaXRlIGdsZWljaC4gRGllIEjDtmhlIHdpcmQgdmVyZHJlaWZhY2h0LiBXYXMgcGFzc2llcnQgbWl0IGRlbSBWb2x1bWVuPyIsIFsiRXMgdmVyZHJlaWZhY2h0IHNpY2guIiwgIkVzIHZlcmRvcHBlbHQgc2ljaC4iLCAiRXMgYmxlaWJ0IGdsZWljaC4iLCAiRXMgd2lyZCBuZXVubWFsIHNvIGdyb8OfLiJdLCAwLCAiViA9IGwgwrcgYiDCtyBoLiBXZW5uIG51ciBoIHZlcmRyZWlmYWNodCB3aXJkLCB3aXJkIGF1Y2ggViB2ZXJkcmVpZmFjaHQuIiwgIlNjaGF1IGF1ZiBWID0gbCDCtyBiIMK3IGguIiwgZGlmZmljdWx0eSwgMyk7CiAgfQoKICBmdW5jdGlvbiB0YXNrUm9vbUZsb29yKGRpZmZpY3VsdHkpIHsKICAgIHZhciBsID0gcm5kKDQsIDkpOwogICAgdmFyIGIgPSBybmQoMywgNyk7CiAgICB2YXIgYW5zd2VyID0gbCAqIGI7CiAgICByZXR1cm4gbnVtYmVyQ2hvaWNlVGFzaygiU2FjaGF1ZmdhYmUiLCAiRWluIEtsYXNzZW5yYXVtIGlzdCAiICsgbihsKSArICIgbSBsYW5nIHVuZCAiICsgbihiKSArICIgbSBicmVpdC4gV2llIHZpZWwgQm9kZW5mbMOkY2hlIG11c3MgZ2VyZWluaWd0IHdlcmRlbj8iLCBhbnN3ZXIsICJtwrIiLCAiQm9kZW5mbMOkY2hlID0gUmVjaHRlY2tmbMOkY2hlID0gIiArIG4obCkgKyAiIMK3ICIgKyBuKGIpICsgIiA9ICIgKyBuKGFuc3dlcikgKyAiIG3Csi4iLCAiRWluIEJvZGVuIGlzdCBlaW5lIEZsw6RjaGUsIG5pY2h0IGVpbiBVbWZhbmcuIiwgWzIgKiAobCArIGIpLCBsICsgYiwgbCAqIGIgKiAyXSwgZGlmZmljdWx0eSwgMyk7CiAgfQoKICBmdW5jdGlvbiB0YXNrR2FyZGVuRmVuY2UoZGlmZmljdWx0eSkgewogICAgdmFyIGwgPSBybmQoNiwgMTQpOwogICAgdmFyIGIgPSBybmQoNCwgOSk7CiAgICB2YXIgYW5zd2VyID0gMiAqIChsICsgYik7CiAgICByZXR1cm4gbnVtYmVyQ2hvaWNlVGFzaygiQW53ZW5kdW5nc2F1ZmdhYmUiLCAiRWluIHJlY2h0ZWNraWdlcyBHYXJ0ZW5iZWV0IGlzdCAiICsgbihsKSArICIgbSBsYW5nIHVuZCAiICsgbihiKSArICIgbSBicmVpdC4gV2llIHZpZWxlIE1ldGVyIFphdW4gYnJhdWNodCBtYW4gcnVuZGhlcnVtPyIsIGFuc3dlciwgIm0iLCAiWmF1biBydW5kaGVydW0gYmVkZXV0ZXQgVW1mYW5nOiBVID0gMiDCtyAoIiArIG4obCkgKyAiICsgIiArIG4oYikgKyAiKSA9ICIgKyBuKGFuc3dlcikgKyAiIG0uIiwgIlJ1bmRoZXJ1bSBpc3QgZWluIFNpZ25hbHdvcnQgZsO8ciBVbWZhbmcuIiwgW2wgKiBiLCBsICsgYiwgMiAqIGwgKyBiXSwgZGlmZmljdWx0eSwgMik7CiAgfQoKICBmdW5jdGlvbiB0YXNrQXF1YXJpdW0oZGlmZmljdWx0eSkgewogICAgdmFyIGwgPSBwaWNrKFszMCwgNDAsIDUwXSk7CiAgICB2YXIgYiA9IHBpY2soWzIwLCAyNSwgMzBdKTsKICAgIHZhciBoID0gcGljayhbMjAsIDMwLCA0MF0pOwogICAgdmFyIGFuc3dlciA9IGwgKiBiICogaDsKICAgIHJldHVybiBudW1iZXJDaG9pY2VUYXNrKCJBcXVhcml1bSIsICJFaW4gQXF1YXJpdW0gaXN0IGlubmVuICIgKyBuKGwpICsgIiBjbSBsYW5nLCAiICsgbihiKSArICIgY20gYnJlaXQgdW5kICIgKyBuKGgpICsgIiBjbSBob2NoLiBXaWUgZ3Jvw58gaXN0IGRhcyBWb2x1bWVuPyIsIGFuc3dlciwgImNtwrMiLCAiViA9IGwgwrcgYiDCtyBoID0gIiArIG4obCkgKyAiIMK3ICIgKyBuKGIpICsgIiDCtyAiICsgbihoKSArICIgPSAiICsgbihhbnN3ZXIpICsgIiBjbcKzLiIsICJFaW4gQXF1YXJpdW0gaXN0IGVpbiBRdWFkZXIuIFZvbHVtZW4gaGF0IGNtwrMuIiwgW2wgKiBiLCAyICogKGwgKyBiKSwgbCArIGIgKyBoXSwgZGlmZmljdWx0eSwgMyk7CiAgfQoKICBmdW5jdGlvbiBjaG9pY2VUYXNrKHRpdGxlLCBwcm9tcHQsIG9wdGlvbnMsIGNvcnJlY3RJbmRleCwgZXhwbGFuYXRpb24sIGhpbnQsIGRpZmZpY3VsdHksIG1pbkxldmVsKSB7CiAgICB2YXIgb3JkZXJlZCA9IG9wdGlvbnMubWFwKGZ1bmN0aW9uICh0ZXh0LCBpbmRleCkgewogICAgICByZXR1cm4geyB0ZXh0OiB0ZXh0LCBjb3JyZWN0OiBpbmRleCA9PT0gY29ycmVjdEluZGV4IH07CiAgICB9KTsKICAgIG9yZGVyZWQgPSBzaHVmZmxlKG9yZGVyZWQpOwogICAgdmFyIGZpbmFsT3B0aW9ucyA9IG9yZGVyZWQubWFwKGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiBpdGVtLnRleHQ7IH0pOwogICAgdmFyIGZpbmFsQ29ycmVjdCA9IDA7CiAgICBvcmRlcmVkLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7CiAgICAgIGlmIChpdGVtLmNvcnJlY3QpIHsKICAgICAgICBmaW5hbENvcnJlY3QgPSBpbmRleDsKICAgICAgfQogICAgfSk7CiAgICByZXR1cm4gewogICAgICBraW5kOiAiY2hvaWNlIiwKICAgICAgdGl0bGU6IHRpdGxlLAogICAgICBwcm9tcHQ6IHByb21wdCwKICAgICAgb3B0aW9uczogZmluYWxPcHRpb25zLAogICAgICBjb3JyZWN0SW5kZXg6IGZpbmFsQ29ycmVjdCwKICAgICAgZXhwbGFuYXRpb246IGV4cGxhbmF0aW9uLAogICAgICBoaW50OiBoaW50LAogICAgICBkaWZmaWN1bHR5OiBNYXRoLm1heChtaW5MZXZlbCB8fCAxLCBkaWZmaWN1bHR5KSwKICAgICAgcG9pbnRzOiBwb2ludHNGb3JEaWZmaWN1bHR5KE1hdGgubWF4KG1pbkxldmVsIHx8IDEsIGRpZmZpY3VsdHkpKQogICAgfTsKICB9CgogIGZ1bmN0aW9uIG51bWJlckNob2ljZVRhc2sodGl0bGUsIHByb21wdCwgYW5zd2VyLCB1bml0LCBleHBsYW5hdGlvbiwgaGludCwgZGlzdHJhY3RvcnMsIGRpZmZpY3VsdHksIG1pbkxldmVsKSB7CiAgICB2YXIgb3B0aW9ucyA9IHVuaXF1ZU9wdGlvbnMoYW5zd2VyLCBkaXN0cmFjdG9ycykubWFwKGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICByZXR1cm4gZm9ybWF0TnVtYmVyKHZhbHVlKSArICIgIiArIHVuaXQ7CiAgICB9KTsKICAgIHJldHVybiBjaG9pY2VUYXNrKHRpdGxlLCBwcm9tcHQsIG9wdGlvbnMsIDAsIGV4cGxhbmF0aW9uLCBoaW50LCBkaWZmaWN1bHR5LCBtaW5MZXZlbCk7CiAgfQoKICBmdW5jdGlvbiBudW1iZXJJbnB1dFRhc2sodGl0bGUsIHByb21wdCwgYW5zd2VyLCB1bml0LCBleHBsYW5hdGlvbiwgaGludCwgZGlmZmljdWx0eSwgbWluTGV2ZWwpIHsKICAgIHJldHVybiB7CiAgICAgIGtpbmQ6ICJudW1iZXIiLAogICAgICB0aXRsZTogdGl0bGUsCiAgICAgIHByb21wdDogcHJvbXB0LAogICAgICBjb3JyZWN0TnVtYmVyOiByb3VuZE9uZShhbnN3ZXIpLAogICAgICB1bml0OiB1bml0LAogICAgICBleHBsYW5hdGlvbjogZXhwbGFuYXRpb24sCiAgICAgIGhpbnQ6IGhpbnQsCiAgICAgIGRpZmZpY3VsdHk6IE1hdGgubWF4KG1pbkxldmVsIHx8IDEsIGRpZmZpY3VsdHkpLAogICAgICBwb2ludHM6IHBvaW50c0ZvckRpZmZpY3VsdHkoTWF0aC5tYXgobWluTGV2ZWwgfHwgMSwgZGlmZmljdWx0eSkpLAogICAgICB0b2xlcmFuY2U6IDAuMDYsCiAgICAgIGxhc3RJbnB1dDogIiIKICAgIH07CiAgfQoKICBmdW5jdGlvbiB1bmlxdWVPcHRpb25zKGFuc3dlciwgZGlzdHJhY3RvcnMpIHsKICAgIHZhciB2YWx1ZXMgPSBbcm91bmRPbmUoYW5zd2VyKV07CiAgICBkaXN0cmFjdG9ycy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgIHZhciB2YWx1ZSA9IHJvdW5kT25lKE1hdGgubWF4KDAuMSwgaXRlbSkpOwogICAgICBpZiAoTWF0aC5hYnModmFsdWUgLSB2YWx1ZXNbMF0pID4gMC4wNiAmJiB2YWx1ZXMuaW5kZXhPZih2YWx1ZSkgPCAwKSB7CiAgICAgICAgdmFsdWVzLnB1c2godmFsdWUpOwogICAgICB9CiAgICB9KTsKICAgIHZhciBudWRnZSA9IDE7CiAgICB3aGlsZSAodmFsdWVzLmxlbmd0aCA8IDQpIHsKICAgICAgdmFyIG5leHQgPSByb3VuZE9uZShhbnN3ZXIgKyBudWRnZSAqIChhbnN3ZXIgPiAxMCA/IDMgOiAxKSk7CiAgICAgIGlmIChNYXRoLmFicyhuZXh0IC0gdmFsdWVzWzBdKSA+IDAuMDYgJiYgdmFsdWVzLmluZGV4T2YobmV4dCkgPCAwKSB7CiAgICAgICAgdmFsdWVzLnB1c2gobmV4dCk7CiAgICAgIH0KICAgICAgbnVkZ2UgKz0gMTsKICAgIH0KICAgIHJldHVybiB2YWx1ZXMuc2xpY2UoMCwgNCk7CiAgfQoKICBmdW5jdGlvbiBjb3JyZWN0VGV4dCh0YXNrKSB7CiAgICBpZiAodGFzay5raW5kID09PSAiY2hvaWNlIikgewogICAgICByZXR1cm4gIlJpY2h0aWcgaXN0OiAiICsgdGFzay5vcHRpb25zW3Rhc2suY29ycmVjdEluZGV4XTsKICAgIH0KICAgIHJldHVybiAiUmljaHRpZyBpc3Q6ICIgKyBmb3JtYXROdW1iZXIodGFzay5jb3JyZWN0TnVtYmVyKSArICIgIiArIHRhc2sudW5pdDsKICB9CgogIGZ1bmN0aW9uIG1ha2VFeHBsb3JlUHJvbXB0KCkgewogICAgdmFyIHNoYXBlID0gZ2V0U2hhcGUoc3RhdGUuc2VsZWN0ZWRTaGFwZSk7CiAgICB2YXIgdmFsdWVzID0gZ2V0VmFsdWVzKHNoYXBlLmlkKTsKICAgIHZhciBjYWxjID0gc2hhcGUuY2FsY3VsYXRpb25GdW5jdGlvbih2YWx1ZXMpOwogICAgaWYgKHNoYXBlLnR5cGUgPT09ICJLw7ZycGVyIikgewogICAgICB2YXIgdm9sdW1lID0gY2FsYy52b2x1bWUgfHwgMDsKICAgICAgcmV0dXJuICJWZXLDpG5kZXJlIGJlaW0gIiArIHNoYXBlLm5hbWUgKyAiIGVpbiBNYcOfLiBCZW9iYWNodGUsIHdpZSBzaWNoIGRhcyBWb2x1bWVuIHZlcsOkbmRlcnQuIEFrdHVlbGw6ICIgKyBmb3JtYXROdW1iZXIodm9sdW1lKSArICIgY23Csy4iOwogICAgfQogICAgdmFyIGFyZWEgPSBjYWxjLmFyZWEgfHwgY2FsYy5iYXNlQXJlYSB8fCAwOwogICAgdmFyIHBlcmltZXRlciA9IGNhbGMucGVyaW1ldGVyIHx8IDA7CiAgICBpZiAocGVyaW1ldGVyID4gMCkgewogICAgICByZXR1cm4gIlZlcsOkbmRlcmUgYmVpICIgKyBzaGFwZS5uYW1lICsgIiBlaW4gTWHDny4gVmVyZ2xlaWNoZSBVbWZhbmcgIiArIGZvcm1hdE51bWJlcihwZXJpbWV0ZXIpICsgIiBjbSB1bmQgRmzDpGNoZSAiICsgZm9ybWF0TnVtYmVyKGFyZWEpICsgIiBjbcKyLiI7CiAgICB9CiAgICByZXR1cm4gIlZlcsOkbmRlcmUgYmVpICIgKyBzaGFwZS5uYW1lICsgIiBlaW4gTWHDny4gQmVvYmFjaHRlIGRpZSBGb3JtZWwgdW5kIGRpZSBwYXNzZW5kZSBFaW5oZWl0LiI7CiAgfQoKICBmdW5jdGlvbiBidWlsZEFkdmljZSgpIHsKICAgIHZhciBsb3cgPSBjYXRlZ29yaWVzWzBdOwogICAgdmFyIGhpZ2ggPSBjYXRlZ29yaWVzWzBdOwogICAgY2F0ZWdvcmllcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXRlZ29yeSkgewogICAgICBpZiAoKHN0YXRlLmNhdGVnb3J5U2NvcmVzW2NhdGVnb3J5XSB8fCAwKSA8IChzdGF0ZS5jYXRlZ29yeVNjb3Jlc1tsb3ddIHx8IDApKSB7CiAgICAgICAgbG93ID0gY2F0ZWdvcnk7CiAgICAgIH0KICAgICAgaWYgKChzdGF0ZS5jYXRlZ29yeVNjb3Jlc1tjYXRlZ29yeV0gfHwgMCkgPiAoc3RhdGUuY2F0ZWdvcnlTY29yZXNbaGlnaF0gfHwgMCkpIHsKICAgICAgICBoaWdoID0gY2F0ZWdvcnk7CiAgICAgIH0KICAgIH0pOwogICAgaWYgKHN0YXRlLnNjb3JlID09PSAwKSB7CiAgICAgIHJldHVybiAiU3RhcnRlIG1pdCBkZW0gRm9ybWVsLUxhYm9yLiBWZXLDpG5kZXJlIGVpbiBNYcOfIHVuZCBzcHJpY2ggbGF1dDogV2FzIGlzdCBSYW5kLCB3YXMgaXN0IEZsw6RjaGUsIHdhcyBpc3QgUmF1bT8iOwogICAgfQogICAgcmV0dXJuICJTdMOkcmtlOiAiICsgaGlnaCArICIuIE7DpGNoc3RlciBndXRlciDDnGJ1bmdzYmVyZWljaDogIiArIGxvdyArICIuIE51dHplIGRvcnQgenVlcnN0IFN0dWZlIDEgb2RlciAyIHVuZCBzdGVpZ2VyZSBkaWNoIGRhbmFjaC4iOwogIH0KCiAgZnVuY3Rpb24gcG9pbnRzRm9yRGlmZmljdWx0eShkaWZmaWN1bHR5KSB7CiAgICB2YXIgdGFibGUgPSBbMCwgOCwgMTIsIDE2LCAyMSwgMjddOwogICAgcmV0dXJuIHRhYmxlW01hdGgubWF4KDEsIE1hdGgubWluKDUsIGRpZmZpY3VsdHkpKV07CiAgfQoKICBmdW5jdGlvbiBnZXRTaGFwZShzaGFwZUlkKSB7CiAgICB2YXIgaWQgPSBzaGFwZUlkIHx8IHN0YXRlLnNlbGVjdGVkU2hhcGU7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNoYXBlcy5sZW5ndGg7IGkgKz0gMSkgewogICAgICBpZiAoc2hhcGVzW2ldLmlkID09PSBpZCkgewogICAgICAgIHJldHVybiBzaGFwZXNbaV07CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBzaGFwZXNbMF07CiAgfQoKICBmdW5jdGlvbiBnZXRWYWx1ZXMoc2hhcGVJZCkgewogICAgcmV0dXJuIHN0YXRlLnNoYXBlUGFyYW1ldGVyc1tzaGFwZUlkIHx8IHN0YXRlLnNlbGVjdGVkU2hhcGVdOwogIH0KCiAgZnVuY3Rpb24gZ2V0UGFyYW1ldGVyKHNoYXBlLCBrZXkpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2hhcGUucGFyYW1ldGVycy5sZW5ndGg7IGkgKz0gMSkgewogICAgICBpZiAoc2hhcGUucGFyYW1ldGVyc1tpXS5rZXkgPT09IGtleSkgewogICAgICAgIHJldHVybiBzaGFwZS5wYXJhbWV0ZXJzW2ldOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gbnVsbDsKICB9CgogIGZ1bmN0aW9uIGNsYW1wVG9TdGVwKHZhbHVlLCBwYXJhbSkgewogICAgdmFyIGNsYW1wZWQgPSBNYXRoLm1heChwYXJhbS5taW4sIE1hdGgubWluKHBhcmFtLm1heCwgTnVtYmVyKHZhbHVlKSkpOwogICAgdmFyIHN0ZXBzID0gTWF0aC5yb3VuZCgoY2xhbXBlZCAtIHBhcmFtLm1pbikgLyBwYXJhbS5zdGVwKTsKICAgIHJldHVybiByb3VuZE9uZShwYXJhbS5taW4gKyBzdGVwcyAqIHBhcmFtLnN0ZXApOwogIH0KCiAgZnVuY3Rpb24gbWFrZU5vZGUodGFnLCBjbGFzc05hbWUsIHRleHQpIHsKICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOwogICAgaWYgKGNsYXNzTmFtZSkgewogICAgICBub2RlLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKICAgIH0KICAgIGlmICh0ZXh0ICE9PSB1bmRlZmluZWQpIHsKICAgICAgbm9kZS50ZXh0Q29udGVudCA9IHRleHQ7CiAgICB9CiAgICByZXR1cm4gbm9kZTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlR2VybWFuTnVtYmVyKHRleHQpIHsKICAgIGlmICh0eXBlb2YgdGV4dCAhPT0gInN0cmluZyIpIHsKICAgICAgcmV0dXJuIE5hTjsKICAgIH0KICAgIHJldHVybiBOdW1iZXIodGV4dC50cmltKCkucmVwbGFjZSgiLCIsICIuIikpOwogIH0KCiAgZnVuY3Rpb24gbih2YWx1ZSkgewogICAgcmV0dXJuIGZvcm1hdE51bWJlcih2YWx1ZSk7CiAgfQoKICBmdW5jdGlvbiBmb3JtYXROdW1iZXIodmFsdWUpIHsKICAgIHZhciByb3VuZGVkID0gcm91bmRPbmUodmFsdWUpOwogICAgaWYgKE1hdGguYWJzKHJvdW5kZWQgLSBNYXRoLnJvdW5kKHJvdW5kZWQpKSA8IDAuMDAxKSB7CiAgICAgIHJldHVybiBTdHJpbmcoTWF0aC5yb3VuZChyb3VuZGVkKSk7CiAgICB9CiAgICByZXR1cm4gU3RyaW5nKHJvdW5kZWQpLnJlcGxhY2UoIi4iLCAiLCIpOwogIH0KCiAgZnVuY3Rpb24gcm91bmRPbmUodmFsdWUpIHsKICAgIHJldHVybiBNYXRoLnJvdW5kKE51bWJlcih2YWx1ZSkgKiAxMCkgLyAxMDsKICB9CgogIGZ1bmN0aW9uIHJuZChtaW4sIG1heCkgewogICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47CiAgfQoKICBmdW5jdGlvbiBwaWNrKGxpc3QpIHsKICAgIHJldHVybiBsaXN0W3JuZCgwLCBsaXN0Lmxlbmd0aCAtIDEpXTsKICB9CgogIGZ1bmN0aW9uIHNodWZmbGUobGlzdCkgewogICAgdmFyIGNvcHkgPSBsaXN0LnNsaWNlKCk7CiAgICBmb3IgKHZhciBpID0gY29weS5sZW5ndGggLSAxOyBpID4gMDsgaSAtPSAxKSB7CiAgICAgIHZhciBqID0gcm5kKDAsIGkpOwogICAgICB2YXIgdGVtcCA9IGNvcHlbaV07CiAgICAgIGNvcHlbaV0gPSBjb3B5W2pdOwogICAgICBjb3B5W2pdID0gdGVtcDsKICAgIH0KICAgIHJldHVybiBjb3B5OwogIH0KfSgpKTsKCjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4= | |||
</aimoocgame> | </aimoocgame> | ||
Version vom 5. Juli 2026, 11:34 Uhr


Geometrie Master
Geometrie Master
Interaktives Geometrie-Lernspiel für Klasse 5/6 mit Formel-Labor, Umfang-, Flächen- und Volumenaufgaben.
MOOCwiki Spiele
Geometrie Master
Schulfach+


aiMOOCs



aiMOOC Projekte


THE MONKEY DANCE





|