@curless/sinocare-demo 0.60.0 → 0.62.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1924 -2216
- package/dist/index.js.map +1 -1
- package/package.json +7 -6
- package/dist/__tests__/checkout-card.test.d.ts +0 -2
- package/dist/__tests__/checkout-card.test.d.ts.map +0 -1
- package/dist/__tests__/checkout-card.test.js +0 -315
- package/dist/__tests__/checkout-card.test.js.map +0 -1
- package/dist/checkout-card.generated.d.ts +0 -2
- package/dist/checkout-card.generated.d.ts.map +0 -1
- package/dist/checkout-card.generated.js +0 -6
- package/dist/checkout-card.generated.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
// GENERATED by examples/sinocare-demo/widget (`npm run build`). Do not edit by hand.
|
|
2
|
-
// The sinocare-demo checkout MCP App card — a single self-contained HTML (Vite +
|
|
3
|
-
// vite-plugin-singlefile, with the MCP Apps SDK bundled), base64-embedded so it
|
|
4
|
-
// is bundler-safe. Regenerate after changing the widget UI.
|
|
5
|
-
export const CHECKOUT_CARD_HTML = Buffer.from('PCFkb2N0eXBlIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+CiAgICA8c3R5bGU+CiAgICAgIC8qIFRoZW1lIG9mZiB0aGUgaG9zdCdzIG93biBkZXNpZ24gdG9rZW5zICh0aGUgTUNQIEFwcHMgU0RLIGluamVjdHMgdGhlbSkKICAgICAgICAgc28gdGhlIGNhcmQgc2l0cyBuYXRpdmVseSBpbnNpZGUgQ2xhdWRlIOKAlCBsaWdodC9kYXJrLCBmb250cywgcmFkaWkgYWxsCiAgICAgICAgIG1hdGNoLiBGYWxsYmFja3Mga2VlcCBpdCB0YXN0ZWZ1bCBhbnl3aGVyZS4gKi8KICAgICAgOnJvb3QgewogICAgICAgIC0tYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtcHJpbWFyeSwgI2ZmZmZmZik7CiAgICAgICAgLS1iZy1zb2Z0OiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSwgI2Y2ZjhmYSk7CiAgICAgICAgLS1mZzogdmFyKC0tY29sb3ItdGV4dC1wcmltYXJ5LCAjMWExZjM2KTsKICAgICAgICAtLWZnLXNvZnQ6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5LCAjNjk3Mzg2KTsKICAgICAgICAtLWZnLWZhaW50OiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5LCAjODc5MmEyKTsKICAgICAgICAtLWxpbmU6IHZhcigtLWNvbG9yLWJvcmRlci1wcmltYXJ5LCAjZTNlOGVlKTsKICAgICAgICAtLWdvb2Q6IHZhcigtLWNvbG9yLXRleHQtc3VjY2VzcywgIzFhN2Y1YSk7CiAgICAgICAgLS1nb29kLWJnOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXN1Y2Nlc3MsICNkZGYzZTQpOwogICAgICAgIC0tYmFkOiB2YXIoLS1jb2xvci10ZXh0LWRhbmdlciwgI2IzMjYxZSk7CiAgICAgICAgLS1iYWQtYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtZGFuZ2VyLCAjZmJlNmU0KTsKICAgICAgICAtLWJsdWU6IHZhcigtLWNvbG9yLXRleHQtYWNjZW50LCAjMjU2M2ViKTsKICAgICAgICAtLWxpbms6IHZhcigtLWNvbG9yLXRleHQtbGluaywgdmFyKC0tY29sb3ItdGV4dC1hY2NlbnQsICMyNTYzZWIpKTsKICAgICAgICAtLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1sZywgMTRweCk7CiAgICAgICAgLS1yYWRpdXMtc206IHZhcigtLWJvcmRlci1yYWRpdXMtc20sIDlweCk7CiAgICAgICAgLS1mb250OiB2YXIoLS1mb250LXNhbnMsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmKTsKICAgICAgICAtLW1vbm86IHZhcigtLWZvbnQtbW9ubywgdWktbW9ub3NwYWNlLCAnU0YgTW9ubycsIE1lbmxvLCBtb25vc3BhY2UpOwogICAgICB9CiAgICAgICogeyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9CiAgICAgIGJvZHkgewogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBmb250LWZhbWlseTogdmFyKC0tZm9udCk7CiAgICAgICAgY29sb3I6IHZhcigtLWZnKTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgfQogICAgICAudGh1bWIgewogICAgICAgIHdpZHRoOiAzOHB4OyBoZWlnaHQ6IDM4cHg7IGZsZXg6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1zb2Z0KTsgb2JqZWN0LWZpdDogY29udGFpbjsKICAgICAgfQogICAgICAuY2FyZCB7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMTAsIDIwLCA0MCwgMC4wNCksIDAgMnB4IDVweCByZ2JhKDEwLCAyMCwgNDAsIDAuMDQpOwogICAgICAgIG1heC13aWR0aDogNDYwcHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgICAuaGVhZCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgcGFkZGluZzogMTVweCAyMHB4IDA7CiAgICAgIH0KICAgICAgLmhlYWQgLnRpdGxlIHsgZm9udC1zaXplOiAxNXB4OyBmb250LXdlaWdodDogNjUwOyB9CiAgICAgIC5oZWFkIC5tZXJjaGFudCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBjb2xvcjogdmFyKC0tZmctc29mdCk7CiAgICAgIH0KICAgICAgLyog5Yi35pawIOKAlOKAlCDorqLljZXljaHniYfmmK/kuIDmrKHlt6XlhbfosIPnlKjnmoTlv6vnhacs6ICM6YCA5qy+54q25oCB5Lya5Zyo5L2g55yL552A5a6D55qE5pe25YCZCiAgICAgICAgIOiHquW3seWPmCjllYblrrblkIzmhI/lkI7opoHnrYnnvZHlhbPpgqPovrnnmoTlrozmiJDkv6Hlj7cp44CC5rKh5pyJ6L+Z5Liq5oyJ6ZKuLOaDs+eci+aWsOeKtuaAgQogICAgICAgICDlj6rog73lm57ogYrlpKnph4zlho3opoHkuIDmrKHliJfooajjgILlj6rlnKjorqLljZXop4blm77lh7rnjrDjgIIgKi8KICAgICAgLmhlYWQgLnJlZnJlc2ggewogICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICAgIGZsZXg6IG5vbmU7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyOwogICAgICAgIHdpZHRoOiAyNHB4OwogICAgICAgIGhlaWdodDogMjRweDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTsKICAgICAgICBjb2xvcjogdmFyKC0tZmctc29mdCk7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAuMTJzLCBiYWNrZ3JvdW5kIC4xMnMsIGNvbG9yIC4xMnM7CiAgICAgIH0KICAgICAgLmhlYWQgLnJlZnJlc2g6aG92ZXI6bm90KDpkaXNhYmxlZCkgeyBjb2xvcjogdmFyKC0tZmcpOyBib3JkZXItY29sb3I6IHZhcigtLWZnLXNvZnQpOyB9CiAgICAgIC5oZWFkIC5yZWZyZXNoOmRpc2FibGVkIHsgY3Vyc29yOiBkZWZhdWx0OyBvcGFjaXR5OiAuNjsgfQogICAgICAuaGVhZCAucmVmcmVzaFtoaWRkZW5dIHsgZGlzcGxheTogbm9uZTsgfQogICAgICAuaGVhZCAucmVmcmVzaCBzdmcgeyB3aWR0aDogMTNweDsgaGVpZ2h0OiAxM3B4OyBkaXNwbGF5OiBibG9jazsgfQogICAgICAvKiDliLfmlrDlm57mnaXnmoTlhoXlrrnlpJrmlbDml7blgJnlkozlsY/luZXkuIrkuIDmqKHkuIDmoLcg4oCU4oCUIOS4jei9rOS4gOS4iyzngrnkuoblg4/msqHlj43lupQsCiAgICAgICAgIOS6uuWwseS8muWGjeeCueS4gOasoeOAgiAqLwogICAgICAuaGVhZCAucmVmcmVzaC5idXN5IHN2ZyB7IGFuaW1hdGlvbjogY20tc3BpbiAuN3MgbGluZWFyIGluZmluaXRlOyB9CiAgICAgIEBrZXlmcmFtZXMgY20tc3BpbiB7IHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfSB9CiAgICAgICNjb250ZW50IHsgcGFkZGluZzogNnB4IDIwcHggMThweDsgfQogICAgICAuaGVybyB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxNTBweDsKICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgICAgIG1hcmdpbjogMnB4IDAgMTJweDsKICAgICAgfQogICAgICAucHJpY2UgewogICAgICAgIGZvbnQtc2l6ZTogMjZweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIG1hcmdpbjogNnB4IDAgMnB4OwogICAgICB9CiAgICAgIC5zdWIgeyBmb250LXNpemU6IDEyLjVweDsgY29sb3I6IHZhcigtLWZnLXNvZnQpOyBtYXJnaW4tYm90dG9tOiAxMHB4OyB9CiAgICAgIC8qIFJhaWwgZ3JvdXAgaGVhZGVyICjljaEgLyDnqLPlrprluIEgwrcgeDQwMiAvIOWklumTvikuIE5vIHRleHQtdHJhbnNmb3JtIOKAlCB0aGUKICAgICAgICAgcHJvdG9jb2wgbmFtZSAieDQwMiIgaXMgZGVsaWJlcmF0ZWx5IGxvd2VyY2FzZSAodXBwZXJjYXNpbmcgaXQg4oaSICJYNDAyIikuICovCiAgICAgIC5ncm91cC1sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLWZhaW50KTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wM2VtOwogICAgICAgIG1hcmdpbjogMTRweCAwIDdweDsKICAgICAgfQogICAgICAuZ3JvdXAtbGFiZWw6Zmlyc3Qtb2YtdHlwZSB7IG1hcmdpbi10b3A6IDRweDsgfQogICAgICAvKiBQYXltZW50IHJvd3M6IGEgdGl0bGUgKyBzdWIgb24gdGhlIGxlZnQgKHByb3RvY29sIGZvciDljaEsIGFzc2V0wrdjaGFpbiBmb3IKICAgICAgICAg56iz5a6a5biBKSwgb25lLW9yLW1vcmUgYWN0aW9uIHBpbGxzIG9uIHRoZSByaWdodCAodGhlIHByb3RvY29sIHN1Yi1jaG9pY2UpICovCiAgICAgIC5yb3dzIHsgZGlzcGxheTogZ3JpZDsgZ2FwOiA4cHg7IH0KICAgICAgLnJvdyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIC8qIHdyYXAgc28gYW4gaW5saW5lIGVycm9yICguby1lcnIsIGZsZXgtYmFzaXM6MTAwJSkgZHJvcHMgdG8gaXRzIG93bgogICAgICAgICAgIGxpbmUgaW5zdGVhZCBvZiBiZWluZyBzcXVlZXplZCBpbiBiZXNpZGUgdGhlIHN0YXR1cyBwaWxsICovCiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIGdhcDogMTBweDsKICAgICAgICBwYWRkaW5nOiAxMXB4IDE0cHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1zb2Z0KTsKICAgICAgfQogICAgICAucm93LW1haW4geyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDJweDsgbWluLXdpZHRoOiAwOyB9CiAgICAgIC5yLXRpdGxlIHsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxMy41cHg7IH0KICAgICAgLnItc3ViIHsgY29sb3I6IHZhcigtLWZnLXNvZnQpOyBmb250LXNpemU6IDEycHg7IH0KICAgICAgLyogYWxpZ24taXRlbXM6Y2VudGVyLCBOT1QgdGhlIGRlZmF1bHQgc3RyZXRjaCDigJQgYSBzdHJldGNoZWQgLm9zdGF0IHBpbGwKICAgICAgICAgZ3Jvd3MgdG8gdGhlIG5laWdoYm91cmluZyBidXR0b24ncyBoZWlnaHQgYW5kIHJlYWRzIGFzIGEgdGFsbCBsb3BzaWRlZAogICAgICAgICBvdmFsLCBidXQgb25seSBvbiByb3dzIHRoYXQgSEFWRSBhIGJ1dHRvbiwgd2hpY2ggaXMgd2h5IGl0IGxvb2tlZCBsaWtlCiAgICAgICAgIGEgb25lLXJvdyBnbGl0Y2guICovCiAgICAgIC5yb3ctYWN0cyB7IG1hcmdpbi1sZWZ0OiBhdXRvOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDZweDsgZmxleC1zaHJpbms6IDA7IH0KICAgICAgLmFjdCB7CiAgICAgICAgcGFkZGluZzogN3B4IDEycHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmcpOwogICAgICAgIGNvbG9yOiB2YXIoLS1mZyk7CiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQpOwogICAgICAgIGZvbnQtc2l6ZTogMTIuNXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1NTA7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIC4xMnMsIGJhY2tncm91bmQgLjEycywgY29sb3IgLjEyczsKICAgICAgfQogICAgICAuYWN0OmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1ibHVlKTsgY29sb3I6IHZhcigtLWJsdWUpOyB9CiAgICAgIC8qIFRoZSBvbmUgYWN0aW9uIG9uIHRoZSBzY3JlZW4g4oCUIGEgYm9yZGVyZWQgZ2hvc3QgYnV0dG9uIG5leHQgdG8gYSB0ZXh0CiAgICAgICAgIGZpZWxkIHJlYWRzIGFzIG9wdGlvbmFsLCBhbmQgdGhpcyBvbmUgaXMgdGhlIHdob2xlIHBvaW50IG9mIHRoZSBzdGF0ZS4gKi8KICAgICAgLmFjdC5wcmltYXJ5IHsgYmFja2dyb3VuZDogdmFyKC0tYmx1ZSk7IGNvbG9yOiAjZmZmOyBib3JkZXItY29sb3I6IHZhcigtLWJsdWUpOyB9CiAgICAgIC5hY3QucHJpbWFyeTpob3ZlciB7IGNvbG9yOiAjZmZmOyBvcGFjaXR5OiAuOTsgfQogICAgICAuYWN0OmRpc2FibGVkIHsgb3BhY2l0eTogLjU1OyBjdXJzb3I6IGRlZmF1bHQ7IH0KICAgICAgLmFjdC5leHQgeyBjb2xvcjogdmFyKC0tbGluayk7IGJvcmRlci1jb2xvcjogdmFyKC0tbGluayk7IH0KICAgICAgLmFjdC5leHQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1ibHVlKTsgY29sb3I6ICNmZmY7IGJvcmRlci1jb2xvcjogdmFyKC0tYmx1ZSk7IH0KICAgICAgLyogT3JkZXIgc3RhdHVzIHBpbGwgKG9yZGVycyB2aWV3KSAqLwogICAgICAub2xpc3QgeyBtYXJnaW4tdG9wOiAycHg7IH0KICAgICAgLm9zdGF0IHsKICAgICAgICBmb250LXNpemU6IDExcHg7IGZvbnQtd2VpZ2h0OiA2MDA7IHBhZGRpbmc6IDNweCA5cHg7IGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KICAgICAgLm9zdGF0Lm9rIHsgY29sb3I6IHZhcigtLWdvb2QpOyBiYWNrZ3JvdW5kOiB2YXIoLS1nb29kLWJnKTsgfQogICAgICAub3N0YXQud2FybiB7IGNvbG9yOiB2YXIoLS1iYWQpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iYWQtYmcpOyB9CiAgICAgIC5vc3RhdC5tdXRlZCB7IGNvbG9yOiB2YXIoLS1mZy1zb2Z0KTsgYmFja2dyb3VuZDogdmFyKC0tYmctc29mdCk7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpbmUpOyB9CiAgICAgIC8qIFdoeSBhIHJlZnVuZCByZXF1ZXN0IGZhaWxlZCwgb24gdGhlIHJvdyBpdCBiZWxvbmdzIHRvLiBTaWxlbmNlIG1hZGUgdGhlCiAgICAgICAgIGJ1eWVyIHJldHJ5IHNvbWV0aGluZyB0aGF0IGNvdWxkIG5ldmVyIHN1Y2NlZWQuICovCiAgICAgIC5vLWVyciB7CiAgICAgICAgZmxleC1iYXNpczogMTAwJTsgbWFyZ2luLXRvcDogNnB4OyBmb250LXNpemU6IDEycHg7IGxpbmUtaGVpZ2h0OiAxLjQ1OwogICAgICAgIGNvbG9yOiB2YXIoLS1iYWQpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1zb2Z0KTsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OyBwYWRkaW5nOiA3cHggOXB4OyBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTsKICAgICAgfQogICAgICAvKiBSZXN1bHQgc3RhdGVzICovCiAgICAgIC5yZXN1bHQgeyBwYWRkaW5nOiA0cHggMCAycHg7IH0KICAgICAgLmJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogNjAwOyBwYWRkaW5nOiA0cHggMTBweDsgYm9yZGVyLXJhZGl1czogOTk5cHg7CiAgICAgIH0KICAgICAgLmJhZGdlLm9rIHsgY29sb3I6IHZhcigtLWdvb2QpOyBiYWNrZ3JvdW5kOiB2YXIoLS1nb29kLWJnKTsgfQogICAgICAuYmFkZ2UuZXJyIHsgY29sb3I6IHZhcigtLWJhZCk7IGJhY2tncm91bmQ6IHZhcigtLWJhZC1iZyk7IH0KICAgICAgLyogTmVpdGhlciBzdWNjZXNzIG5vciBmYWlsdXJlOiBzb21ldGhpbmcgdGhlIHBlcnNvbiBzdGlsbCBoYXMgdG8gZG8gKHNpZ24KICAgICAgICAgaW4pLiBSZWQgd291bGQgdGVsbCB0aGVtIHRoZSBwYXltZW50IGJyb2tlLCBhbmQgaXQgZGlkIG5vdCDigJQgd2Ugc3RvcHBlZAogICAgICAgICBiZWZvcmUgYW55dGhpbmcgd2FzIGNoYXJnZWQgb3IgZXZlbiBwcmljZWQuICovCiAgICAgIC5iYWRnZS50b2RvIHsgY29sb3I6IHZhcigtLWJsdWUpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1zb2Z0KTsgfQogICAgICAubG9naW5yb3cgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDhweDsgbWFyZ2luOiAxMnB4IDAgNHB4OyBmbGV4LXdyYXA6IHdyYXA7IH0KICAgICAgLmxvZ2lucm93IC5lbWFpbCB7CiAgICAgICAgZmxleDogMSAxIDIwMHB4OwogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgICBwYWRkaW5nOiA5cHggMTFweDsKICAgICAgICBmb250OiAxNHB4IHZhcigtLWZvbnQpOwogICAgICAgIGNvbG9yOiB2YXIoLS1mZyk7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmcpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICAgIH0KICAgICAgLmxvZ2lucm93IC5lbWFpbDpmb2N1cyB7IG91dGxpbmU6IG5vbmU7IGJvcmRlci1jb2xvcjogdmFyKC0tYmx1ZSk7IH0KICAgICAgLmxvZ2lucm93IC5lbWFpbDpkaXNhYmxlZCB7IGNvbG9yOiB2YXIoLS1mZy1mYWludCk7IGJhY2tncm91bmQ6IHZhcigtLWJnLXNvZnQpOyB9CiAgICAgIC5lcnItbGluZSB7IGNvbG9yOiB2YXIoLS1iYWQpOyBmb250LXNpemU6IDEzcHg7IG1hcmdpbi10b3A6IDZweDsgfQogICAgICAvKiBTaG93biBzbyB0aGUgcGVyc29uIGNhbiBjaGVjayBpdCBhZ2FpbnN0IHRoZSBicm93c2VyIHBhZ2Ug4oCUIHRoZSBjb2RlIGlzCiAgICAgICAgIGEgY29uZmlybWF0aW9uLCBub3QgYSBzZWNyZXQsIGFuZCBpdCBpcyB3aGF0IHN0b3BzIGEgbGluayBzZW50IGJ5CiAgICAgICAgIHNvbWVvbmUgZWxzZSBmcm9tIGJlaW5nIGFwcHJvdmVkIHNpbGVudGx5LiAqLwogICAgICAudWNvZGUgeyBmb250OiA2MDAgMTNweCB2YXIoLS1tb25vKTsgbGV0dGVyLXNwYWNpbmc6IC4wOGVtOyBjb2xvcjogdmFyKC0tZmctc29mdCk7CiAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxMXB4OyBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tbGluZSk7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7IH0KICAgICAgLndhaXRpbmcgeyBjb2xvcjogdmFyKC0tZmctZmFpbnQpOyBmb250LXNpemU6IDEyLjVweDsgbWFyZ2luLXRvcDogMTBweDsgfQogICAgICAucmVzdWx0IC5saW5lIHsgZm9udC1zaXplOiAxM3B4OyBtYXJnaW46IDEycHggMCA0cHg7IH0KICAgICAgLnJlc3VsdCAubW9ubyB7IGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsgZm9udC1zaXplOiAxMS41cHg7IGNvbG9yOiB2YXIoLS1mZy1zb2Z0KTsgd29yZC1icmVhazogYnJlYWstYWxsOyB9CiAgICAgIC5yZXN1bHQgYS50eCwgLnJlc3VsdCBhLnBheWxpbmsgeyBjb2xvcjogdmFyKC0tbGluayk7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQogICAgICAucmVzdWx0IGEucGF5bGluayB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtYXJnaW4tdG9wOiAxMHB4OyBwYWRkaW5nOiAxMXB4IDE2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsgYmFja2dyb3VuZDogdmFyKC0tYmx1ZSk7IGNvbG9yOiAjZmZmOyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KICAgICAgLnJlc3VsdCBidXR0b24uYmFjayB7CiAgICAgICAgbWFyZ2luLXRvcDogMTRweDsgcGFkZGluZzogOHB4IDE0cHg7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7IGJhY2tncm91bmQ6IHZhcigtLWJnLXNvZnQpOyBjb2xvcjogdmFyKC0tZmctc29mdCk7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OyBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KICAgICAgLyogUHJpbWFyeSBmb3J3YXJkIENUQSBhZnRlciBhIHN1Y2Nlc3NmdWwgYm9va2luZyDihpIgdmlldyBvcmRlcnMgKi8KICAgICAgLnJlc3VsdCBidXR0b24uZ28gewogICAgICAgIG1hcmdpbi10b3A6IDE0cHg7IHBhZGRpbmc6IDlweCAxNnB4OyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ibHVlKTsKICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOyBiYWNrZ3JvdW5kOiB2YXIoLS1ibHVlKTsgY29sb3I6ICNmZmY7CiAgICAgICAgZm9udC1zaXplOiAxMi41cHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgICAucmVzdWx0IGJ1dHRvbi5nbzpob3ZlciB7IGZpbHRlcjogYnJpZ2h0bmVzcygwLjk2KTsgfQogICAgICAvKiBSZWNlaXB0IENUQXMgKGJvb2tlZCB2aWV3KTog5p+l55yL5oiR55qE6K6i5Y2VICsg5YaN6K6i5LiA5qyhLCBzaWRlIGJ5IHNpZGUuIENhbmNlbHMKICAgICAgICAgdGhlIGJ1dHRvbnMnIG93biBtYXJnaW4tdG9wIHNvIHRoZSByb3cgYWxpZ25zLiAqLwogICAgICAucmVzdWx0IC5jdGEtcm93IHsgZGlzcGxheTogZmxleDsgZ2FwOiAxMHB4OyBhbGlnbi1pdGVtczogY2VudGVyOyBmbGV4LXdyYXA6IHdyYXA7IH0KICAgICAgLnJlc3VsdCAuY3RhLXJvdyBidXR0b24geyBtYXJnaW4tdG9wOiAxNHB4OyB9CiAgICAgIC5lbXB0eSB7IGNvbG9yOiB2YXIoLS1mZy1mYWludCk7IGZvbnQtc2l6ZTogMTNweDsgcGFkZGluZzogMTRweCAwOyB9CiAgICAgIC5zcGluIHsgY29sb3I6IHZhcigtLWZnLXNvZnQpOyBmb250LXNpemU6IDEzcHg7IHBhZGRpbmc6IDEwcHggMDsgfQogICAgICAvKiDllYblk4HkuZ3lrqvmoLzjgILliJfmlbDkuqTnu5kgYXV0by1maXQg4oCU4oCUIOWNoeeJh+WcqOS4jeWQjOWuv+S4u+mHjOWuveW6puW3ruW+iOWkmiwKICAgICAgICAg5YaZ5q27IDMg5YiX5Lya5Zyo56qE5a655Zmo6YeM5qiq5ZCR5rqi5Ye644CCICovCiAgICAgIC5wZ3JpZCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDExMnB4LCAxZnIpKTsKICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4IDE2cHg7CiAgICAgIH0KICAgICAgLnBjZWxsIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgIH0KICAgICAgLnBjZWxsIC5waW1nIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDc2cHg7CiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1zb2Z0KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgIH0KICAgICAgLnBjZWxsIC5wbmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1NjA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7CiAgICAgICAgLyog5ZCN5a2X6ZW/55+t5LiN5LiALOS4jeWkueS9j+WwseS8muaKiuavj+S4quagvOWtkOaSkeaIkOS4jeWQjOmrmOW6piAqLwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjsKICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KICAgICAgLnBjZWxsIC5wbWV0YSB7IGZvbnQtc2l6ZTogMTFweDsgbWFyZ2luLXRvcDogYXV0bzsgfQogICAgICAucGNlbGwgLnBidXkgeyB3aWR0aDogMTAwJTsgcGFkZGluZzogNXB4IDA7IH0KICAgIDwvc3R5bGU+CiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4+KGZ1bmN0aW9uKCl7Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIikucmVsTGlzdDtpZihuJiZuLnN1cHBvcnRzJiZuLnN1cHBvcnRzKCJtb2R1bGVwcmVsb2FkIikpcmV0dXJuO2Zvcihjb25zdCBlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpbmtbcmVsPSJtb2R1bGVwcmVsb2FkIl0nKSlvKGUpO25ldyBNdXRhdGlvbk9ic2VydmVyKGU9Pntmb3IoY29uc3QgaSBvZiBlKWlmKGkudHlwZT09PSJjaGlsZExpc3QiKWZvcihjb25zdCBhIG9mIGkuYWRkZWROb2RlcylhLnRhZ05hbWU9PT0iTElOSyImJmEucmVsPT09Im1vZHVsZXByZWxvYWQiJiZvKGEpfSkub2JzZXJ2ZShkb2N1bWVudCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KTtmdW5jdGlvbiByKGUpe2NvbnN0IGk9e307cmV0dXJuIGUuaW50ZWdyaXR5JiYoaS5pbnRlZ3JpdHk9ZS5pbnRlZ3JpdHkpLGUucmVmZXJyZXJQb2xpY3kmJihpLnJlZmVycmVyUG9saWN5PWUucmVmZXJyZXJQb2xpY3kpLGUuY3Jvc3NPcmlnaW49PT0idXNlLWNyZWRlbnRpYWxzIj9pLmNyZWRlbnRpYWxzPSJpbmNsdWRlIjplLmNyb3NzT3JpZ2luPT09ImFub255bW91cyI/aS5jcmVkZW50aWFscz0ib21pdCI6aS5jcmVkZW50aWFscz0ic2FtZS1vcmlnaW4iLGl9ZnVuY3Rpb24gbyhlKXtpZihlLmVwKXJldHVybjtlLmVwPSEwO2NvbnN0IGk9cihlKTtmZXRjaChlLmhyZWYsaSl9fSkoKTtjb25zdCBQbT0ibW9kdWxlcHJlbG9hZCIsT209ZnVuY3Rpb24odCxuKXtyZXR1cm4gbmV3IFVSTCh0LG4pLmhyZWZ9LGxzPXt9LERtPWZ1bmN0aW9uKG4scixvKXtsZXQgZT1Qcm9taXNlLnJlc29sdmUoKTtpZihyJiZyLmxlbmd0aD4wKXtsZXQgYT1mdW5jdGlvbihsKXtyZXR1cm4gUHJvbWlzZS5hbGwobC5tYXAoZz0+UHJvbWlzZS5yZXNvbHZlKGcpLnRoZW4odj0+KHtzdGF0dXM6ImZ1bGZpbGxlZCIsdmFsdWU6dn0pLHY9Pih7c3RhdHVzOiJyZWplY3RlZCIscmVhc29uOnZ9KSkpKX07Y29uc3Qgcz1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLGM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigibWV0YVtwcm9wZXJ0eT1jc3Atbm9uY2VdIiksdT1jPy5ub25jZXx8Yz8uZ2V0QXR0cmlidXRlKCJub25jZSIpO2U9YShyLm1hcChsPT57aWYobD1PbShsLG8pLGwgaW4gbHMpcmV0dXJuO2xzW2xdPSEwO2NvbnN0IGc9bC5lbmRzV2l0aCgiLmNzcyIpLHY9Zz8nW3JlbD0ic3R5bGVzaGVldCJdJzoiIjtpZighIW8pZm9yKGxldCBKPXMubGVuZ3RoLTE7Sj49MDtKLS0pe2NvbnN0IEE9c1tKXTtpZihBLmhyZWY9PT1sJiYoIWd8fEEucmVsPT09InN0eWxlc2hlZXQiKSlyZXR1cm59ZWxzZSBpZihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBsaW5rW2hyZWY9IiR7bH0iXSR7dn1gKSlyZXR1cm47Y29uc3QgeT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7aWYoeS5yZWw9Zz8ic3R5bGVzaGVldCI6UG0sZ3x8KHkuYXM9InNjcmlwdCIpLHkuY3Jvc3NPcmlnaW49IiIseS5ocmVmPWwsdSYmeS5zZXRBdHRyaWJ1dGUoIm5vbmNlIix1KSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHkpLGcpcmV0dXJuIG5ldyBQcm9taXNlKChKLEEpPT57eS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixKKSx5LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwoKT0+QShuZXcgRXJyb3IoYFVuYWJsZSB0byBwcmVsb2FkIENTUyBmb3IgJHtsfWApKSl9KX0pKX1mdW5jdGlvbiBpKGEpe2NvbnN0IHM9bmV3IEV2ZW50KCJ2aXRlOnByZWxvYWRFcnJvciIse2NhbmNlbGFibGU6ITB9KTtpZihzLnBheWxvYWQ9YSx3aW5kb3cuZGlzcGF0Y2hFdmVudChzKSwhcy5kZWZhdWx0UHJldmVudGVkKXRocm93IGF9cmV0dXJuIGUudGhlbihhPT57Zm9yKGNvbnN0IHMgb2YgYXx8W10pcy5zdGF0dXM9PT0icmVqZWN0ZWQiJiZpKHMucmVhc29uKTtyZXR1cm4gbigpLmNhdGNoKGkpfSl9O3ZhciBkcztjb25zdCB1aT1PYmplY3QuZnJlZXplKHtzdGF0dXM6ImFib3J0ZWQifSk7ZnVuY3Rpb24gZCh0LG4scil7ZnVuY3Rpb24gbyhzLGMpe2lmKHMuX3pvZHx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHMsIl96b2QiLHt2YWx1ZTp7ZGVmOmMsY29uc3RyOmEsdHJhaXRzOm5ldyBTZXR9LGVudW1lcmFibGU6ITF9KSxzLl96b2QudHJhaXRzLmhhcyh0KSlyZXR1cm47cy5fem9kLnRyYWl0cy5hZGQodCksbihzLGMpO2NvbnN0IHU9YS5wcm90b3R5cGUsbD1PYmplY3Qua2V5cyh1KTtmb3IobGV0IGc9MDtnPGwubGVuZ3RoO2crKyl7Y29uc3Qgdj1sW2ddO3YgaW4gc3x8KHNbdl09dVt2XS5iaW5kKHMpKX19Y29uc3QgZT1yPy5QYXJlbnQ/P09iamVjdDtjbGFzcyBpIGV4dGVuZHMgZXt9T2JqZWN0LmRlZmluZVByb3BlcnR5KGksIm5hbWUiLHt2YWx1ZTp0fSk7ZnVuY3Rpb24gYShzKXt2YXIgYztjb25zdCB1PXI/LlBhcmVudD9uZXcgaTp0aGlzO28odSxzKSwoYz11Ll96b2QpLmRlZmVycmVkPz8oYy5kZWZlcnJlZD1bXSk7Zm9yKGNvbnN0IGwgb2YgdS5fem9kLmRlZmVycmVkKWwoKTtyZXR1cm4gdX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsImluaXQiLHt2YWx1ZTpvfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLmhhc0luc3RhbmNlLHt2YWx1ZTpzPT5yPy5QYXJlbnQmJnMgaW5zdGFuY2VvZiByLlBhcmVudD8hMDpzPy5fem9kPy50cmFpdHM/Lmhhcyh0KX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJuYW1lIix7dmFsdWU6dH0pLGF9Y29uc3QgbGk9U3ltYm9sKCJ6b2RfYnJhbmQiKTtjbGFzcyBqZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoIkVuY291bnRlcmVkIFByb21pc2UgZHVyaW5nIHN5bmNocm9ub3VzIHBhcnNlLiBVc2UgLnBhcnNlQXN5bmMoKSBpbnN0ZWFkLiIpfX1jbGFzcyBGbiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKG4pe3N1cGVyKGBFbmNvdW50ZXJlZCB1bmlkaXJlY3Rpb25hbCB0cmFuc2Zvcm0gZHVyaW5nIGVuY29kZTogJHtufWApLHRoaXMubmFtZT0iWm9kRW5jb2RlRXJyb3IifX0oZHM9Z2xvYmFsVGhpcykuX196b2RfZ2xvYmFsQ29uZmlnPz8oZHMuX196b2RfZ2xvYmFsQ29uZmlnPXt9KTtjb25zdCB5dD1nbG9iYWxUaGlzLl9fem9kX2dsb2JhbENvbmZpZztmdW5jdGlvbiBLKHQpe3JldHVybiB0JiZPYmplY3QuYXNzaWduKHl0LHQpLHl0fWZ1bmN0aW9uIE5tKHQpe3JldHVybiB0fWZ1bmN0aW9uIEVtKHQpe3JldHVybiB0fWZ1bmN0aW9uIFptKHQpe31mdW5jdGlvbiBSbSh0KXt0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUgaW4gZXhoYXVzdGl2ZSBjaGVjayIpfWZ1bmN0aW9uIENtKHQpe31mdW5jdGlvbiBkaSh0KXtjb25zdCBuPU9iamVjdC52YWx1ZXModCkuZmlsdGVyKG89PnR5cGVvZiBvPT0ibnVtYmVyIik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZpbHRlcigoW28sZV0pPT5uLmluZGV4T2YoK28pPT09LTEpLm1hcCgoW28sZV0pPT5lKX1mdW5jdGlvbiAkKHQsbj0ifCIpe3JldHVybiB0Lm1hcChyPT5rKHIpKS5qb2luKG4pfWZ1bmN0aW9uIEVuKHQsbil7cmV0dXJuIHR5cGVvZiBuPT0iYmlnaW50Ij9uLnRvU3RyaW5nKCk6bn1mdW5jdGlvbiBUdCh0KXtyZXR1cm57Z2V0IHZhbHVlKCl7e2NvbnN0IG49dCgpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywidmFsdWUiLHt2YWx1ZTpufSksbn19fX1mdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09bnVsbH1mdW5jdGlvbiBKbih0KXtjb25zdCBuPXQuc3RhcnRzV2l0aCgiXiIpPzE6MCxyPXQuZW5kc1dpdGgoIiQiKT90Lmxlbmd0aC0xOnQubGVuZ3RoO3JldHVybiB0LnNsaWNlKG4scil9ZnVuY3Rpb24gcXModCxuKXtjb25zdCByPXQvbixvPU1hdGgucm91bmQociksZT1OdW1iZXIuRVBTSUxPTipNYXRoLm1heChNYXRoLmFicyhyKSwxKTtyZXR1cm4gTWF0aC5hYnMoci1vKTxlPzA6ci1vfWNvbnN0IG1zPVN5bWJvbCgiZXZhbHVhdGluZyIpO2Z1bmN0aW9uIFQodCxuLHIpe2xldCBvO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2dldCgpe2lmKG8hPT1tcylyZXR1cm4gbz09PXZvaWQgMCYmKG89bXMsbz1yKCkpLG99LHNldChlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHt2YWx1ZTplfSl9LGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIEFtKHQpe3JldHVybiBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSl9ZnVuY3Rpb24gd2UodCxuLHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se3ZhbHVlOnIsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBoZSguLi50KXtjb25zdCBuPXt9O2Zvcihjb25zdCByIG9mIHQpe2NvbnN0IG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocik7T2JqZWN0LmFzc2lnbihuLG8pfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh7fSxuKX1mdW5jdGlvbiBMbSh0KXtyZXR1cm4gaGUodC5fem9kLmRlZil9ZnVuY3Rpb24gTW0odCxuKXtyZXR1cm4gbj9uLnJlZHVjZSgocixvKT0+cj8uW29dLHQpOnR9ZnVuY3Rpb24gcW0odCl7Y29uc3Qgbj1PYmplY3Qua2V5cyh0KSxyPW4ubWFwKG89PnRbb10pO3JldHVybiBQcm9taXNlLmFsbChyKS50aGVuKG89Pntjb25zdCBlPXt9O2ZvcihsZXQgaT0wO2k8bi5sZW5ndGg7aSsrKWVbbltpXV09b1tpXTtyZXR1cm4gZX0pfWZ1bmN0aW9uIEZtKHQ9MTApe2NvbnN0IG49ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjtsZXQgcj0iIjtmb3IobGV0IG89MDtvPHQ7bysrKXIrPW5bTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKm4ubGVuZ3RoKV07cmV0dXJuIHJ9ZnVuY3Rpb24gbmkodCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfWZ1bmN0aW9uIEZzKHQpe3JldHVybiB0LnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoL1teXHdccy1dL2csIiIpLnJlcGxhY2UoL1tcc18tXSsvZywiLSIpLnJlcGxhY2UoL14tK3wtKyQvZywiIil9Y29uc3QgbWk9ImNhcHR1cmVTdGFja1RyYWNlImluIEVycm9yP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlOiguLi50KT0+e307ZnVuY3Rpb24gSGUodCl7cmV0dXJuIHR5cGVvZiB0PT0ib2JqZWN0IiYmdCE9PW51bGwmJiFBcnJheS5pc0FycmF5KHQpfWNvbnN0IEpzPVR0KCgpPT57aWYoeXQuaml0bGVzc3x8dHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvcj8udXNlckFnZW50Py5pbmNsdWRlcygiQ2xvdWRmbGFyZSIpKXJldHVybiExO3RyeXtjb25zdCB0PUZ1bmN0aW9uO3JldHVybiBuZXcgdCgiIiksITB9Y2F0Y2h7cmV0dXJuITF9fSk7ZnVuY3Rpb24gUGUodCl7aWYoSGUodCk9PT0hMSlyZXR1cm4hMTtjb25zdCBuPXQuY29uc3RydWN0b3I7aWYobj09PXZvaWQgMHx8dHlwZW9mIG4hPSJmdW5jdGlvbiIpcmV0dXJuITA7Y29uc3Qgcj1uLnByb3RvdHlwZTtyZXR1cm4hKEhlKHIpPT09ITF8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLCJpc1Byb3RvdHlwZU9mIik9PT0hMSl9ZnVuY3Rpb24gSG4odCl7cmV0dXJuIFBlKHQpP3suLi50fTpBcnJheS5pc0FycmF5KHQpP1suLi50XTp0IGluc3RhbmNlb2YgTWFwP25ldyBNYXAodCk6dCBpbnN0YW5jZW9mIFNldD9uZXcgU2V0KHQpOnR9ZnVuY3Rpb24gSm0odCl7bGV0IG49MDtmb3IoY29uc3QgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiZuKys7cmV0dXJuIG59Y29uc3QgSG09dD0+e2NvbnN0IG49dHlwZW9mIHQ7c3dpdGNoKG4pe2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4idW5kZWZpbmVkIjtjYXNlInN0cmluZyI6cmV0dXJuInN0cmluZyI7Y2FzZSJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNOYU4odCk/Im5hbiI6Im51bWJlciI7Y2FzZSJib29sZWFuIjpyZXR1cm4iYm9vbGVhbiI7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuImZ1bmN0aW9uIjtjYXNlImJpZ2ludCI6cmV0dXJuImJpZ2ludCI7Y2FzZSJzeW1ib2wiOnJldHVybiJzeW1ib2wiO2Nhc2Uib2JqZWN0IjpyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT8iYXJyYXkiOnQ9PT1udWxsPyJudWxsIjp0LnRoZW4mJnR5cGVvZiB0LnRoZW49PSJmdW5jdGlvbiImJnQuY2F0Y2gmJnR5cGVvZiB0LmNhdGNoPT0iZnVuY3Rpb24iPyJwcm9taXNlIjp0eXBlb2YgTWFwPCJ1IiYmdCBpbnN0YW5jZW9mIE1hcD8ibWFwIjp0eXBlb2YgU2V0PCJ1IiYmdCBpbnN0YW5jZW9mIFNldD8ic2V0Ijp0eXBlb2YgRGF0ZTwidSImJnQgaW5zdGFuY2VvZiBEYXRlPyJkYXRlIjp0eXBlb2YgRmlsZTwidSImJnQgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoib2JqZWN0IjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBkYXRhIHR5cGU6ICR7bn1gKX19LFpuPW5ldyBTZXQoWyJzdHJpbmciLCJudW1iZXIiLCJzeW1ib2wiXSksSHM9bmV3IFNldChbInN0cmluZyIsIm51bWJlciIsImJpZ2ludCIsImJvb2xlYW4iLCJzeW1ib2wiLCJ1bmRlZmluZWQiXSk7ZnVuY3Rpb24gJGUodCl7cmV0dXJuIHQucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1mdW5jdGlvbiB1ZSh0LG4scil7Y29uc3Qgbz1uZXcgdC5fem9kLmNvbnN0cihuPz90Ll96b2QuZGVmKTtyZXR1cm4oIW58fHI/LnBhcmVudCkmJihvLl96b2QucGFyZW50PXQpLG99ZnVuY3Rpb24gaCh0KXtjb25zdCBuPXQ7aWYoIW4pcmV0dXJue307aWYodHlwZW9mIG49PSJzdHJpbmciKXJldHVybntlcnJvcjooKT0+bn07aWYobj8ubWVzc2FnZSE9PXZvaWQgMCl7aWYobj8uZXJyb3IhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc3BlY2lmeSBib3RoIGBtZXNzYWdlYCBhbmQgYGVycm9yYCBwYXJhbXMiKTtuLmVycm9yPW4ubWVzc2FnZX1yZXR1cm4gZGVsZXRlIG4ubWVzc2FnZSx0eXBlb2Ygbi5lcnJvcj09InN0cmluZyI/ey4uLm4sZXJyb3I6KCk9Pm4uZXJyb3J9Om59ZnVuY3Rpb24gVm0odCl7bGV0IG47cmV0dXJuIG5ldyBQcm94eSh7fSx7Z2V0KHIsbyxlKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0LmdldChuLG8sZSl9LHNldChyLG8sZSxpKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0LnNldChuLG8sZSxpKX0saGFzKHIsbyl7cmV0dXJuIG4/PyhuPXQoKSksUmVmbGVjdC5oYXMobixvKX0sZGVsZXRlUHJvcGVydHkocixvKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KG4sbyl9LG93bktleXMocil7cmV0dXJuIG4/PyhuPXQoKSksUmVmbGVjdC5vd25LZXlzKG4pfSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixvKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLG8pfSxkZWZpbmVQcm9wZXJ0eShyLG8sZSl7cmV0dXJuIG4/PyhuPXQoKSksUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShuLG8sZSl9fSl9ZnVuY3Rpb24gayh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJiaWdpbnQiP3QudG9TdHJpbmcoKSsibiI6dHlwZW9mIHQ9PSJzdHJpbmciP2AiJHt0fSJgOmAke3R9YH1mdW5jdGlvbiBWcyh0KXtyZXR1cm4gT2JqZWN0LmtleXModCkuZmlsdGVyKG49PnRbbl0uX3pvZC5vcHRpbj09PSJvcHRpb25hbCImJnRbbl0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKX1jb25zdCBLcz17c2FmZWludDpbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJdLGludDMyOlstMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3XSx1aW50MzI6WzAsNDI5NDk2NzI5NV0sZmxvYXQzMjpbLTM0MDI4MjM0NjYzODUyODg2ZTIyLDM0MDI4MjM0NjYzODUyODg2ZTIyXSxmbG9hdDY0OlstTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUFYX1ZBTFVFXX0sQnM9e2ludDY0OltCaWdJbnQoIi05MjIzMzcyMDM2ODU0Nzc1ODA4IiksQmlnSW50KCI5MjIzMzcyMDM2ODU0Nzc1ODA3IildLHVpbnQ2NDpbQmlnSW50KDApLEJpZ0ludCgiMTg0NDY3NDQwNzM3MDk1NTE2MTUiKV19O2Z1bmN0aW9uIFdzKHQsbil7Y29uc3Qgcj10Ll96b2QuZGVmLG89ci5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5waWNrKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IGk9aGUodC5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3QgYT17fTtmb3IoY29uc3QgcyBpbiBuKXtpZighKHMgaW4gci5zaGFwZSkpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiAiJHtzfSJgKTtuW3NdJiYoYVtzXT1yLnNoYXBlW3NdKX1yZXR1cm4gd2UodGhpcywic2hhcGUiLGEpLGF9LGNoZWNrczpbXX0pO3JldHVybiB1ZSh0LGkpfWZ1bmN0aW9uIEdzKHQsbil7Y29uc3Qgcj10Ll96b2QuZGVmLG89ci5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5vbWl0KCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IGk9aGUodC5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3QgYT17Li4udC5fem9kLmRlZi5zaGFwZX07Zm9yKGNvbnN0IHMgaW4gbil7aWYoIShzIGluIHIuc2hhcGUpKXRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogIiR7c30iYCk7bltzXSYmZGVsZXRlIGFbc119cmV0dXJuIHdlKHRoaXMsInNoYXBlIixhKSxhfSxjaGVja3M6W119KTtyZXR1cm4gdWUodCxpKX1mdW5jdGlvbiBYcyh0LG4pe2lmKCFQZShuKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gZXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdCIpO2NvbnN0IHI9dC5fem9kLmRlZi5jaGVja3M7aWYociYmci5sZW5ndGg+MCl7Y29uc3QgaT10Ll96b2QuZGVmLnNoYXBlO2Zvcihjb25zdCBhIGluIG4paWYoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLGEpIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG92ZXJ3cml0ZSBrZXlzIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMuIFVzZSBgLnNhZmVFeHRlbmQoKWAgaW5zdGVhZC4iKX1jb25zdCBlPWhlKHQuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IGk9ey4uLnQuX3pvZC5kZWYuc2hhcGUsLi4ubn07cmV0dXJuIHdlKHRoaXMsInNoYXBlIixpKSxpfX0pO3JldHVybiB1ZSh0LGUpfWZ1bmN0aW9uIFlzKHQsbil7aWYoIVBlKG4pKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBpbnB1dCB0byBzYWZlRXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdCIpO2NvbnN0IHI9aGUodC5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3Qgbz17Li4udC5fem9kLmRlZi5zaGFwZSwuLi5ufTtyZXR1cm4gd2UodGhpcywic2hhcGUiLG8pLG99fSk7cmV0dXJuIHVlKHQscil9ZnVuY3Rpb24gUXModCxuKXtpZih0Ll96b2QuZGVmLmNoZWNrcz8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiLm1lcmdlKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cy4gVXNlIC5zYWZlRXh0ZW5kKCkgaW5zdGVhZC4iKTtjb25zdCByPWhlKHQuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IG89ey4uLnQuX3pvZC5kZWYuc2hhcGUsLi4ubi5fem9kLmRlZi5zaGFwZX07cmV0dXJuIHdlKHRoaXMsInNoYXBlIixvKSxvfSxnZXQgY2F0Y2hhbGwoKXtyZXR1cm4gbi5fem9kLmRlZi5jYXRjaGFsbH0sY2hlY2tzOm4uX3pvZC5kZWYuY2hlY2tzPz9bXX0pO3JldHVybiB1ZSh0LHIpfWZ1bmN0aW9uIGVjKHQsbixyKXtjb25zdCBlPW4uX3pvZC5kZWYuY2hlY2tzO2lmKGUmJmUubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKCIucGFydGlhbCgpIGNhbm5vdCBiZSB1c2VkIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMiKTtjb25zdCBhPWhlKG4uX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IHM9bi5fem9kLmRlZi5zaGFwZSxjPXsuLi5zfTtpZihyKWZvcihjb25zdCB1IGluIHIpe2lmKCEodSBpbiBzKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke3V9ImApO3JbdV0mJihjW3VdPXQ/bmV3IHQoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6c1t1XX0pOnNbdV0pfWVsc2UgZm9yKGNvbnN0IHUgaW4gcyljW3VdPXQ/bmV3IHQoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6c1t1XX0pOnNbdV07cmV0dXJuIHdlKHRoaXMsInNoYXBlIixjKSxjfSxjaGVja3M6W119KTtyZXR1cm4gdWUobixhKX1mdW5jdGlvbiB0Yyh0LG4scil7Y29uc3Qgbz1oZShuLl96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBlPW4uX3pvZC5kZWYuc2hhcGUsaT17Li4uZX07aWYocilmb3IoY29uc3QgYSBpbiByKXtpZighKGEgaW4gaSkpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiAiJHthfSJgKTtyW2FdJiYoaVthXT1uZXcgdCh7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTplW2FdfSkpfWVsc2UgZm9yKGNvbnN0IGEgaW4gZSlpW2FdPW5ldyB0KHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOmVbYV19KTtyZXR1cm4gd2UodGhpcywic2hhcGUiLGkpLGl9fSk7cmV0dXJuIHVlKG4sbyl9ZnVuY3Rpb24gVWUodCxuPTApe2lmKHQuYWJvcnRlZD09PSEwKXJldHVybiEwO2ZvcihsZXQgcj1uO3I8dC5pc3N1ZXMubGVuZ3RoO3IrKylpZih0Lmlzc3Vlc1tyXT8uY29udGludWUhPT0hMClyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBuYyh0LG49MCl7aWYodC5hYm9ydGVkPT09ITApcmV0dXJuITA7Zm9yKGxldCByPW47cjx0Lmlzc3Vlcy5sZW5ndGg7cisrKWlmKHQuaXNzdWVzW3JdPy5jb250aW51ZT09PSExKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIHBlKHQsbil7cmV0dXJuIG4ubWFwKHI9Pnt2YXIgbztyZXR1cm4obz1yKS5wYXRoPz8oby5wYXRoPVtdKSxyLnBhdGgudW5zaGlmdCh0KSxyfSl9ZnVuY3Rpb24gX3QodCl7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIj90OnQ/Lm1lc3NhZ2V9ZnVuY3Rpb24gY2UodCxuLHIpe2NvbnN0IG89dC5tZXNzYWdlP3QubWVzc2FnZTpfdCh0Lmluc3Q/Ll96b2QuZGVmPy5lcnJvcj8uKHQpKT8/X3Qobj8uZXJyb3I/Lih0KSk/P190KHIuY3VzdG9tRXJyb3I/Lih0KSk/P190KHIubG9jYWxlRXJyb3I/Lih0KSk/PyJJbnZhbGlkIGlucHV0Iix7aW5zdDplLGNvbnRpbnVlOmksaW5wdXQ6YSwuLi5zfT10O3JldHVybiBzLnBhdGg/PyhzLnBhdGg9W10pLHMubWVzc2FnZT1vLG4/LnJlcG9ydElucHV0JiYocy5pbnB1dD1hKSxzfWZ1bmN0aW9uIFZuKHQpe3JldHVybiB0IGluc3RhbmNlb2YgU2V0PyJzZXQiOnQgaW5zdGFuY2VvZiBNYXA/Im1hcCI6dCBpbnN0YW5jZW9mIEZpbGU/ImZpbGUiOiJ1bmtub3duIn1mdW5jdGlvbiBLbih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT8iYXJyYXkiOnR5cGVvZiB0PT0ic3RyaW5nIj8ic3RyaW5nIjoidW5rbm93biJ9ZnVuY3Rpb24gUyh0KXtjb25zdCBuPXR5cGVvZiB0O3N3aXRjaChuKXtjYXNlIm51bWJlciI6cmV0dXJuIE51bWJlci5pc05hTih0KT8ibmFuIjoibnVtYmVyIjtjYXNlIm9iamVjdCI6e2lmKHQ9PT1udWxsKXJldHVybiJudWxsIjtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiJhcnJheSI7Y29uc3Qgcj10O2lmKHImJk9iamVjdC5nZXRQcm90b3R5cGVPZihyKSE9PU9iamVjdC5wcm90b3R5cGUmJiJjb25zdHJ1Y3RvciJpbiByJiZyLmNvbnN0cnVjdG9yKXJldHVybiByLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBufWZ1bmN0aW9uIFZlKC4uLnQpe2NvbnN0W24scixvXT10O3JldHVybiB0eXBlb2Ygbj09InN0cmluZyI/e21lc3NhZ2U6bixjb2RlOiJjdXN0b20iLGlucHV0OnIsaW5zdDpvfTp7Li4ubn19ZnVuY3Rpb24gS20odCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZpbHRlcigoW24scl0pPT5OdW1iZXIuaXNOYU4oTnVtYmVyLnBhcnNlSW50KG4sMTApKSkubWFwKG49Pm5bMV0pfWZ1bmN0aW9uIHJjKHQpe2NvbnN0IG49YXRvYih0KSxyPW5ldyBVaW50OEFycmF5KG4ubGVuZ3RoKTtmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKylyW29dPW4uY2hhckNvZGVBdChvKTtyZXR1cm4gcn1mdW5jdGlvbiBpYyh0KXtsZXQgbj0iIjtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbcl0pO3JldHVybiBidG9hKG4pfWZ1bmN0aW9uIEJtKHQpe2NvbnN0IG49dC5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKSxyPSI9Ii5yZXBlYXQoKDQtbi5sZW5ndGglNCklNCk7cmV0dXJuIHJjKG4rcil9ZnVuY3Rpb24gV20odCl7cmV0dXJuIGljKHQpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIikucmVwbGFjZSgvPS9nLCIiKX1mdW5jdGlvbiBHbSh0KXtjb25zdCBuPXQucmVwbGFjZSgvXjB4LywiIik7aWYobi5sZW5ndGglMiE9PTApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGhleCBzdHJpbmcgbGVuZ3RoIik7Y29uc3Qgcj1uZXcgVWludDhBcnJheShuLmxlbmd0aC8yKTtmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rPTIpcltvLzJdPU51bWJlci5wYXJzZUludChuLnNsaWNlKG8sbysyKSwxNik7cmV0dXJuIHJ9ZnVuY3Rpb24gWG0odCl7cmV0dXJuIEFycmF5LmZyb20odCkubWFwKG49Pm4udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkuam9pbigiIil9Y2xhc3MgWW17Y29uc3RydWN0b3IoLi4ubil7fX1jb25zdCBwaT1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsQklHSU5UX0ZPUk1BVF9SQU5HRVM6QnMsQ2xhc3M6WW0sTlVNQkVSX0ZPUk1BVF9SQU5HRVM6S3MsYWJvcnRlZDpVZSxhbGxvd3NFdmFsOkpzLGFzc2VydDpDbSxhc3NlcnRFcXVhbDpObSxhc3NlcnRJczpabSxhc3NlcnROZXZlcjpSbSxhc3NlcnROb3RFcXVhbDpFbSxhc3NpZ25Qcm9wOndlLGJhc2U2NFRvVWludDhBcnJheTpyYyxiYXNlNjR1cmxUb1VpbnQ4QXJyYXk6Qm0sY2FjaGVkOlR0LGNhcHR1cmVTdGFja1RyYWNlOm1pLGNsZWFuRW51bTpLbSxjbGVhblJlZ2V4OkpuLGNsb25lOnVlLGNsb25lRGVmOkxtLGNyZWF0ZVRyYW5zcGFyZW50UHJveHk6Vm0sZGVmaW5lTGF6eTpULGVzYzpuaSxlc2NhcGVSZWdleDokZSxleHBsaWNpdGx5QWJvcnRlZDpuYyxleHRlbmQ6WHMsZmluYWxpemVJc3N1ZTpjZSxmbG9hdFNhZmVSZW1haW5kZXI6cXMsZ2V0RWxlbWVudEF0UGF0aDpNbSxnZXRFbnVtVmFsdWVzOmRpLGdldExlbmd0aGFibGVPcmlnaW46S24sZ2V0UGFyc2VkVHlwZTpIbSxnZXRTaXphYmxlT3JpZ2luOlZuLGhleFRvVWludDhBcnJheTpHbSxpc09iamVjdDpIZSxpc1BsYWluT2JqZWN0OlBlLGlzc3VlOlZlLGpvaW5WYWx1ZXM6JCxqc29uU3RyaW5naWZ5UmVwbGFjZXI6RW4sbWVyZ2U6UXMsbWVyZ2VEZWZzOmhlLG5vcm1hbGl6ZVBhcmFtczpoLG51bGxpc2g6WmUsbnVtS2V5czpKbSxvYmplY3RDbG9uZTpBbSxvbWl0OkdzLG9wdGlvbmFsS2V5czpWcyxwYXJzZWRUeXBlOlMscGFydGlhbDplYyxwaWNrOldzLHByZWZpeElzc3VlczpwZSxwcmltaXRpdmVUeXBlczpIcyxwcm9taXNlQWxsT2JqZWN0OnFtLHByb3BlcnR5S2V5VHlwZXM6Wm4scmFuZG9tU3RyaW5nOkZtLHJlcXVpcmVkOnRjLHNhZmVFeHRlbmQ6WXMsc2hhbGxvd0Nsb25lOkhuLHNsdWdpZnk6RnMsc3RyaW5naWZ5UHJpbWl0aXZlOmssdWludDhBcnJheVRvQmFzZTY0OmljLHVpbnQ4QXJyYXlUb0Jhc2U2NHVybDpXbSx1aW50OEFycmF5VG9IZXg6WG0sdW53cmFwTWVzc2FnZTpfdH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxvYz0odCxuKT0+e3QubmFtZT0iJFpvZEVycm9yIixPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX3pvZCIse3ZhbHVlOnQuX3pvZCxlbnVtZXJhYmxlOiExfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImlzc3VlcyIse3ZhbHVlOm4sZW51bWVyYWJsZTohMX0pLHQubWVzc2FnZT1KU09OLnN0cmluZ2lmeShuLEVuLDIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJ0b1N0cmluZyIse3ZhbHVlOigpPT50Lm1lc3NhZ2UsZW51bWVyYWJsZTohMX0pfSxmaT1kKCIkWm9kRXJyb3IiLG9jKSxsZT1kKCIkWm9kRXJyb3IiLG9jLHtQYXJlbnQ6RXJyb3J9KTtmdW5jdGlvbiBCbih0LG49cj0+ci5tZXNzYWdlKXtjb25zdCByPXt9LG89W107Zm9yKGNvbnN0IGUgb2YgdC5pc3N1ZXMpZS5wYXRoLmxlbmd0aD4wPyhyW2UucGF0aFswXV09cltlLnBhdGhbMF1dfHxbXSxyW2UucGF0aFswXV0ucHVzaChuKGUpKSk6by5wdXNoKG4oZSkpO3JldHVybntmb3JtRXJyb3JzOm8sZmllbGRFcnJvcnM6cn19ZnVuY3Rpb24gV24odCxuPXI9PnIubWVzc2FnZSl7Y29uc3Qgcj17X2Vycm9yczpbXX0sbz0oZSxpPVtdKT0+e2Zvcihjb25zdCBhIG9mIGUuaXNzdWVzKWlmKGEuY29kZT09PSJpbnZhbGlkX3VuaW9uIiYmYS5lcnJvcnMubGVuZ3RoKWEuZXJyb3JzLm1hcChzPT5vKHtpc3N1ZXM6c30sWy4uLmksLi4uYS5wYXRoXSkpO2Vsc2UgaWYoYS5jb2RlPT09ImludmFsaWRfa2V5IilvKHtpc3N1ZXM6YS5pc3N1ZXN9LFsuLi5pLC4uLmEucGF0aF0pO2Vsc2UgaWYoYS5jb2RlPT09ImludmFsaWRfZWxlbWVudCIpbyh7aXNzdWVzOmEuaXNzdWVzfSxbLi4uaSwuLi5hLnBhdGhdKTtlbHNle2NvbnN0IHM9Wy4uLmksLi4uYS5wYXRoXTtpZihzLmxlbmd0aD09PTApci5fZXJyb3JzLnB1c2gobihhKSk7ZWxzZXtsZXQgYz1yLHU9MDtmb3IoO3U8cy5sZW5ndGg7KXtjb25zdCBsPXNbdV07dT09PXMubGVuZ3RoLTE/KGNbbF09Y1tsXXx8e19lcnJvcnM6W119LGNbbF0uX2Vycm9ycy5wdXNoKG4oYSkpKTpjW2xdPWNbbF18fHtfZXJyb3JzOltdfSxjPWNbbF0sdSsrfX19fTtyZXR1cm4gbyh0KSxyfWZ1bmN0aW9uIGdpKHQsbj1yPT5yLm1lc3NhZ2Upe2NvbnN0IHI9e2Vycm9yczpbXX0sbz0oZSxpPVtdKT0+e3ZhciBhLHM7Zm9yKGNvbnN0IGMgb2YgZS5pc3N1ZXMpaWYoYy5jb2RlPT09ImludmFsaWRfdW5pb24iJiZjLmVycm9ycy5sZW5ndGgpYy5lcnJvcnMubWFwKHU9Pm8oe2lzc3Vlczp1fSxbLi4uaSwuLi5jLnBhdGhdKSk7ZWxzZSBpZihjLmNvZGU9PT0iaW52YWxpZF9rZXkiKW8oe2lzc3VlczpjLmlzc3Vlc30sWy4uLmksLi4uYy5wYXRoXSk7ZWxzZSBpZihjLmNvZGU9PT0iaW52YWxpZF9lbGVtZW50IilvKHtpc3N1ZXM6Yy5pc3N1ZXN9LFsuLi5pLC4uLmMucGF0aF0pO2Vsc2V7Y29uc3QgdT1bLi4uaSwuLi5jLnBhdGhdO2lmKHUubGVuZ3RoPT09MCl7ci5lcnJvcnMucHVzaChuKGMpKTtjb250aW51ZX1sZXQgbD1yLGc9MDtmb3IoO2c8dS5sZW5ndGg7KXtjb25zdCB2PXVbZ10sXz1nPT09dS5sZW5ndGgtMTt0eXBlb2Ygdj09InN0cmluZyI/KGwucHJvcGVydGllcz8/KGwucHJvcGVydGllcz17fSksKGE9bC5wcm9wZXJ0aWVzKVt2XT8/KGFbdl09e2Vycm9yczpbXX0pLGw9bC5wcm9wZXJ0aWVzW3ZdKToobC5pdGVtcz8/KGwuaXRlbXM9W10pLChzPWwuaXRlbXMpW3ZdPz8oc1t2XT17ZXJyb3JzOltdfSksbD1sLml0ZW1zW3ZdKSxfJiZsLmVycm9ycy5wdXNoKG4oYykpLGcrK319fTtyZXR1cm4gbyh0KSxyfWZ1bmN0aW9uIGFjKHQpe2NvbnN0IG49W10scj10Lm1hcChvPT50eXBlb2Ygbz09Im9iamVjdCI/by5rZXk6byk7Zm9yKGNvbnN0IG8gb2Ygcil0eXBlb2Ygbz09Im51bWJlciI/bi5wdXNoKGBbJHtvfV1gKTp0eXBlb2Ygbz09InN5bWJvbCI/bi5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShTdHJpbmcobykpfV1gKTovW15cdyRdLy50ZXN0KG8pP24ucHVzaChgWyR7SlNPTi5zdHJpbmdpZnkobyl9XWApOihuLmxlbmd0aCYmbi5wdXNoKCIuIiksbi5wdXNoKG8pKTtyZXR1cm4gbi5qb2luKCIiKX1mdW5jdGlvbiB2aSh0KXtjb25zdCBuPVtdLHI9Wy4uLnQuaXNzdWVzXS5zb3J0KChvLGUpPT4oby5wYXRoPz9bXSkubGVuZ3RoLShlLnBhdGg/P1tdKS5sZW5ndGgpO2Zvcihjb25zdCBvIG9mIHIpbi5wdXNoKGDinJYgJHtvLm1lc3NhZ2V9YCksby5wYXRoPy5sZW5ndGgmJm4ucHVzaChgICDihpIgYXQgJHthYyhvLnBhdGgpfWApO3JldHVybiBuLmpvaW4oYApgKX1jb25zdCBVdD10PT4obixyLG8sZSk9Pntjb25zdCBpPW8/ey4uLm8sYXN5bmM6ITF9Onthc3luYzohMX0sYT1uLl96b2QucnVuKHt2YWx1ZTpyLGlzc3VlczpbXX0saSk7aWYoYSBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IGplO2lmKGEuaXNzdWVzLmxlbmd0aCl7Y29uc3Qgcz1uZXcoZT8uRXJyPz90KShhLmlzc3Vlcy5tYXAoYz0+Y2UoYyxpLEsoKSkpKTt0aHJvdyBtaShzLGU/LmNhbGxlZSksc31yZXR1cm4gYS52YWx1ZX0scmk9VXQobGUpLGp0PXQ9PmFzeW5jKG4scixvLGUpPT57Y29uc3QgaT1vP3suLi5vLGFzeW5jOiEwfTp7YXN5bmM6ITB9O2xldCBhPW4uX3pvZC5ydW4oe3ZhbHVlOnIsaXNzdWVzOltdfSxpKTtpZihhIGluc3RhbmNlb2YgUHJvbWlzZSYmKGE9YXdhaXQgYSksYS5pc3N1ZXMubGVuZ3RoKXtjb25zdCBzPW5ldyhlPy5FcnI/P3QpKGEuaXNzdWVzLm1hcChjPT5jZShjLGksSygpKSkpO3Rocm93IG1pKHMsZT8uY2FsbGVlKSxzfXJldHVybiBhLnZhbHVlfSxpaT1qdChsZSksUHQ9dD0+KG4scixvKT0+e2NvbnN0IGU9bz97Li4ubyxhc3luYzohMX06e2FzeW5jOiExfSxpPW4uX3pvZC5ydW4oe3ZhbHVlOnIsaXNzdWVzOltdfSxlKTtpZihpIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgamU7cmV0dXJuIGkuaXNzdWVzLmxlbmd0aD97c3VjY2VzczohMSxlcnJvcjpuZXcodD8/ZmkpKGkuaXNzdWVzLm1hcChhPT5jZShhLGUsSygpKSkpfTp7c3VjY2VzczohMCxkYXRhOmkudmFsdWV9fSxoaT1QdChsZSksT3Q9dD0+YXN5bmMobixyLG8pPT57Y29uc3QgZT1vP3suLi5vLGFzeW5jOiEwfTp7YXN5bmM6ITB9O2xldCBpPW4uX3pvZC5ydW4oe3ZhbHVlOnIsaXNzdWVzOltdfSxlKTtyZXR1cm4gaSBpbnN0YW5jZW9mIFByb21pc2UmJihpPWF3YWl0IGkpLGkuaXNzdWVzLmxlbmd0aD97c3VjY2VzczohMSxlcnJvcjpuZXcgdChpLmlzc3Vlcy5tYXAoYT0+Y2UoYSxlLEsoKSkpKX06e3N1Y2Nlc3M6ITAsZGF0YTppLnZhbHVlfX0sc2M9T3QobGUpLF9pPXQ9PihuLHIsbyk9Pntjb25zdCBlPW8/ey4uLm8sZGlyZWN0aW9uOiJiYWNrd2FyZCJ9OntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIFV0KHQpKG4scixlKX0sUW09X2kobGUpLCRpPXQ9PihuLHIsbyk9PlV0KHQpKG4scixvKSxlcD0kaShsZSksYmk9dD0+YXN5bmMobixyLG8pPT57Y29uc3QgZT1vP3suLi5vLGRpcmVjdGlvbjoiYmFja3dhcmQifTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiBqdCh0KShuLHIsZSl9LHRwPWJpKGxlKSx5aT10PT5hc3luYyhuLHIsbyk9Pmp0KHQpKG4scixvKSxucD15aShsZSksa2k9dD0+KG4scixvKT0+e2NvbnN0IGU9bz97Li4ubyxkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gUHQodCkobixyLGUpfSxycD1raShsZSksU2k9dD0+KG4scixvKT0+UHQodCkobixyLG8pLGlwPVNpKGxlKSx3aT10PT5hc3luYyhuLHIsbyk9Pntjb25zdCBlPW8/ey4uLm8sZGlyZWN0aW9uOiJiYWNrd2FyZCJ9OntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIE90KHQpKG4scixlKX0sb3A9d2kobGUpLElpPXQ9PmFzeW5jKG4scixvKT0+T3QodCkobixyLG8pLGFwPUlpKGxlKSxjYz0vXltjQ11bMC05YS16XXs2LH0kLyx1Yz0vXlswLTlhLXpdKyQvLGxjPS9eWzAtOUEtSEpLTU5QLVRWLVphLWhqa21ucC10di16XXsyNn0kLyxkYz0vXlswLTlhLXZBLVZdezIwfSQvLG1jPS9eW0EtWmEtejAtOV17Mjd9JC8scGM9L15bYS16QS1aMC05Xy1dezIxfSQvLGZjPS9eUCg/OihcZCtXKXwoPyEuKlcpKD89XGR8VFxkKShcZCtZKT8oXGQrTSk/KFxkK0QpPyhUKD89XGQpKFxkK0gpPyhcZCtNKT8oXGQrKFsuLF1cZCspP1MpPyk/KSQvLHNwPS9eWy0rXT9QKD8hJCkoPzooPzpbLStdP1xkK1kpfCg/OlstK10/XGQrWy4sXVxkK1kkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/Oig/OlstK10/XGQrVyl8KD86Wy0rXT9cZCtbLixdXGQrVyQpKT8oPzooPzpbLStdP1xkK0QpfCg/OlstK10/XGQrWy4sXVxkK0QkKSk/KD86VCg/PVtcZCstXSkoPzooPzpbLStdP1xkK0gpfCg/OlstK10/XGQrWy4sXVxkK0gkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/OlstK10/XGQrKD86Wy4sXVxkKyk/Uyk/KT8/JC8sZ2M9L14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9KSQvLEtlPXQ9PnQ/bmV3IFJlZ0V4cChgXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS0ke3R9WzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn0pJGApOi9eKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVsxLThdWzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn18MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwfGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZikkLyxjcD1LZSg0KSx1cD1LZSg2KSxscD1LZSg3KSx2Yz0vXig/IVwuKSg/IS4qXC5cLikoW0EtWmEtejAtOV8nK1wtXC5dKilbQS1aYS16MC05XystXUAoW0EtWmEtejAtOV1bQS1aYS16MC05XC1dKlwuKStbQS1aYS16XXsyLH0kLyxkcD0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyxtcD0vXigoW148PigpXFtcXVxcLiw7OlxzQCJdKyhcLltePD4oKVxbXF1cXC4sOzpcc0AiXSspKil8KCIuKyIpKUAoKFxbWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlwtMC05XStcLikrW2EtekEtWl17Mix9KSkkLyxoYz0vXlteXHNAIl17MSw2NH1AW15cc0BdezEsMjU1fSQvdSxwcD1oYyxmcD0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyxncD0iXihcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfXxcXHB7RW1vamlfQ29tcG9uZW50fSkrJCI7ZnVuY3Rpb24gX2MoKXtyZXR1cm4gbmV3IFJlZ0V4cChncCwidSIpfWNvbnN0ICRjPS9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSkkLyxiYz0vXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopKSQvLHljPXQ9Pntjb25zdCBuPSRlKHQ/PyI6Iik7cmV0dXJuIG5ldyBSZWdFeHAoYF4oPzpbMC05QS1GXXsyfSR7bn0pezV9WzAtOUEtRl17Mn0kfF4oPzpbMC05YS1mXXsyfSR7bn0pezV9WzAtOWEtZl17Mn0kYCl9LGtjPS9eKCgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC4pezN9KDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcLyhbMC05XXxbMS0yXVswLTldfDNbMC0yXSkkLyxTYz0vXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXw6OnwoWzAtOWEtZkEtRl17MSw0fSk/OjooWzAtOWEtZkEtRl17MSw0fTo/KXswLDZ9KVwvKDEyWzAtOF18MVswMV1bMC05XXxbMS05XT9bMC05XSkkLyx3Yz0vXiR8Xig/OlswLTlhLXpBLVorL117NH0pKig/Oig/OlswLTlhLXpBLVorL117Mn09PSl8KD86WzAtOWEtekEtWisvXXszfT0pKT8kLyx4aT0vXltBLVphLXowLTlfLV0qJC8sSWM9L14oPz0uezEsMjUzfVwuPyQpW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlstMC05YS16QS1aXXswLDYxfVswLTlhLXpBLVpdKT8pKlwuPyQvLHhjPS9eKFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pP1wuKStbYS16QS1aXXsyLH0kLyx6aT0vXmh0dHBzPyQvLHpjPS9eXCtbMS05XVxkezYsMTR9JC8sVGM9Iig/Oig/OlxcZFxcZFsyNDY4XVswNDhdfFxcZFxcZFsxMzU3OV1bMjZdfFxcZFxcZDBbNDhdfFswMjQ2OF1bMDQ4XTAwfFsxMzU3OV1bMjZdMDApLTAyLTI5fFxcZHs0fS0oPzooPzowWzEzNTc4XXwxWzAyXSktKD86MFsxLTldfFsxMl1cXGR8M1swMV0pfCg/OjBbNDY5XXwxMSktKD86MFsxLTldfFsxMl1cXGR8MzApfCg/OjAyKS0oPzowWzEtOV18MVxcZHwyWzAtOF0pKSkiLFVjPW5ldyBSZWdFeHAoYF4ke1RjfSRgKTtmdW5jdGlvbiBqYyh0KXtjb25zdCBuPSIoPzpbMDFdXFxkfDJbMC0zXSk6WzAtNV1cXGQiO3JldHVybiB0eXBlb2YgdC5wcmVjaXNpb249PSJudW1iZXIiP3QucHJlY2lzaW9uPT09LTE/YCR7bn1gOnQucHJlY2lzaW9uPT09MD9gJHtufTpbMC01XVxcZGA6YCR7bn06WzAtNV1cXGRcXC5cXGR7JHt0LnByZWNpc2lvbn19YDpgJHtufSg/OjpbMC01XVxcZCg/OlxcLlxcZCspPyk/YH1mdW5jdGlvbiBQYyh0KXtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7amModCl9JGApfWZ1bmN0aW9uIE9jKHQpe2NvbnN0IG49amMoe3ByZWNpc2lvbjp0LnByZWNpc2lvbn0pLHI9WyJaIl07dC5sb2NhbCYmci5wdXNoKCIiKSx0Lm9mZnNldCYmci5wdXNoKCIoWystXSg/OlswMV1cXGR8MlswLTNdKTpbMC01XVxcZCkiKTtjb25zdCBvPWAke259KD86JHtyLmpvaW4oInwiKX0pYDtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7VGN9VCg/OiR7b30pJGApfWNvbnN0IERjPXQ9Pntjb25zdCBuPXQ/YFtcXHNcXFNdeyR7dD8ubWluaW11bT8/MH0sJHt0Py5tYXhpbXVtPz8iIn19YDoiW1xcc1xcU10qIjtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7bn0kYCl9LE5jPS9eLT9cZCtuPyQvLEVjPS9eLT9cZCskLyxUaT0vXi0/XGQrKD86XC5cZCspPyQvLFpjPS9eKD86dHJ1ZXxmYWxzZSkkL2ksUmM9L15udWxsJC9pLENjPS9edW5kZWZpbmVkJC9pLEFjPS9eW15BLVpdKiQvLExjPS9eW15hLXpdKiQvLE1jPS9eWzAtOWEtZkEtRl0qJC87ZnVuY3Rpb24gRHQodCxuKXtyZXR1cm4gbmV3IFJlZ0V4cChgXltBLVphLXowLTkrL117JHt0fX0ke259JGApfWZ1bmN0aW9uIE50KHQpe3JldHVybiBuZXcgUmVnRXhwKGBeW0EtWmEtejAtOV8tXXske3R9fSRgKX1jb25zdCB2cD0vXlswLTlhLWZBLUZdezMyfSQvLGhwPUR0KDIyLCI9PSIpLF9wPU50KDIyKSwkcD0vXlswLTlhLWZBLUZdezQwfSQvLGJwPUR0KDI3LCI9IikseXA9TnQoMjcpLGtwPS9eWzAtOWEtZkEtRl17NjR9JC8sU3A9RHQoNDMsIj0iKSx3cD1OdCg0MyksSXA9L15bMC05YS1mQS1GXXs5Nn0kLyx4cD1EdCg2NCwiIiksenA9TnQoNjQpLFRwPS9eWzAtOWEtZkEtRl17MTI4fSQvLFVwPUR0KDg2LCI9PSIpLGpwPU50KDg2KSxHbj1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYmFzZTY0OndjLGJhc2U2NHVybDp4aSxiaWdpbnQ6TmMsYm9vbGVhbjpaYyxicm93c2VyRW1haWw6ZnAsY2lkcnY0OmtjLGNpZHJ2NjpTYyxjdWlkOmNjLGN1aWQyOnVjLGRhdGU6VWMsZGF0ZXRpbWU6T2MsZG9tYWluOnhjLGR1cmF0aW9uOmZjLGUxNjQ6emMsZW1haWw6dmMsZW1vamk6X2MsZXh0ZW5kZWREdXJhdGlvbjpzcCxndWlkOmdjLGhleDpNYyxob3N0bmFtZTpJYyxodG1sNUVtYWlsOmRwLGh0dHBQcm90b2NvbDp6aSxpZG5FbWFpbDpwcCxpbnRlZ2VyOkVjLGlwdjQ6JGMsaXB2NjpiYyxrc3VpZDptYyxsb3dlcmNhc2U6QWMsbWFjOnljLG1kNV9iYXNlNjQ6aHAsbWQ1X2Jhc2U2NHVybDpfcCxtZDVfaGV4OnZwLG5hbm9pZDpwYyxudWxsOlJjLG51bWJlcjpUaSxyZmM1MzIyRW1haWw6bXAsc2hhMV9iYXNlNjQ6YnAsc2hhMV9iYXNlNjR1cmw6eXAsc2hhMV9oZXg6JHAsc2hhMjU2X2Jhc2U2NDpTcCxzaGEyNTZfYmFzZTY0dXJsOndwLHNoYTI1Nl9oZXg6a3Asc2hhMzg0X2Jhc2U2NDp4cCxzaGEzODRfYmFzZTY0dXJsOnpwLHNoYTM4NF9oZXg6SXAsc2hhNTEyX2Jhc2U2NDpVcCxzaGE1MTJfYmFzZTY0dXJsOmpwLHNoYTUxMl9oZXg6VHAsc3RyaW5nOkRjLHRpbWU6UGMsdWxpZDpsYyx1bmRlZmluZWQ6Q2MsdW5pY29kZUVtYWlsOmhjLHVwcGVyY2FzZTpMYyx1dWlkOktlLHV1aWQ0OmNwLHV1aWQ2OnVwLHV1aWQ3OmxwLHhpZDpkY30sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxGPWQoIiRab2RDaGVjayIsKHQsbik9Pnt2YXIgcjt0Ll96b2Q/Pyh0Ll96b2Q9e30pLHQuX3pvZC5kZWY9biwocj10Ll96b2QpLm9uYXR0YWNoPz8oci5vbmF0dGFjaD1bXSl9KSxxYz17bnVtYmVyOiJudW1iZXIiLGJpZ2ludDoiYmlnaW50IixvYmplY3Q6ImRhdGUifSxVaT1kKCIkWm9kQ2hlY2tMZXNzVGhhbiIsKHQsbik9PntGLmluaXQodCxuKTtjb25zdCByPXFjW3R5cGVvZiBuLnZhbHVlXTt0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnLGk9KG4uaW5jbHVzaXZlP2UubWF4aW11bTplLmV4Y2x1c2l2ZU1heGltdW0pPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7bi52YWx1ZTxpJiYobi5pbmNsdXNpdmU/ZS5tYXhpbXVtPW4udmFsdWU6ZS5leGNsdXNpdmVNYXhpbXVtPW4udmFsdWUpfSksdC5fem9kLmNoZWNrPW89Pnsobi5pbmNsdXNpdmU/by52YWx1ZTw9bi52YWx1ZTpvLnZhbHVlPG4udmFsdWUpfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46cixjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnR5cGVvZiBuLnZhbHVlPT0ib2JqZWN0Ij9uLnZhbHVlLmdldFRpbWUoKTpuLnZhbHVlLGlucHV0Om8udmFsdWUsaW5jbHVzaXZlOm4uaW5jbHVzaXZlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLGppPWQoIiRab2RDaGVja0dyZWF0ZXJUaGFuIiwodCxuKT0+e0YuaW5pdCh0LG4pO2NvbnN0IHI9cWNbdHlwZW9mIG4udmFsdWVdO3QuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWcsaT0obi5pbmNsdXNpdmU/ZS5taW5pbXVtOmUuZXhjbHVzaXZlTWluaW11bSk/P051bWJlci5ORUdBVElWRV9JTkZJTklUWTtuLnZhbHVlPmkmJihuLmluY2x1c2l2ZT9lLm1pbmltdW09bi52YWx1ZTplLmV4Y2x1c2l2ZU1pbmltdW09bi52YWx1ZSl9KSx0Ll96b2QuY2hlY2s9bz0+eyhuLmluY2x1c2l2ZT9vLnZhbHVlPj1uLnZhbHVlOm8udmFsdWU+bi52YWx1ZSl8fG8uaXNzdWVzLnB1c2goe29yaWdpbjpyLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTp0eXBlb2Ygbi52YWx1ZT09Im9iamVjdCI/bi52YWx1ZS5nZXRUaW1lKCk6bi52YWx1ZSxpbnB1dDpvLnZhbHVlLGluY2x1c2l2ZTpuLmluY2x1c2l2ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxGYz1kKCIkWm9kQ2hlY2tNdWx0aXBsZU9mIiwodCxuKT0+e0YuaW5pdCh0LG4pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKHI9Pnt2YXIgbzsobz1yLl96b2QuYmFnKS5tdWx0aXBsZU9mPz8oby5tdWx0aXBsZU9mPW4udmFsdWUpfSksdC5fem9kLmNoZWNrPXI9PntpZih0eXBlb2Ygci52YWx1ZSE9dHlwZW9mIG4udmFsdWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbWl4IG51bWJlciBhbmQgYmlnaW50IGluIG11bHRpcGxlX29mIGNoZWNrLiIpOyh0eXBlb2Ygci52YWx1ZT09ImJpZ2ludCI/ci52YWx1ZSVuLnZhbHVlPT09QmlnSW50KDApOnFzKHIudmFsdWUsbi52YWx1ZSk9PT0wKXx8ci5pc3N1ZXMucHVzaCh7b3JpZ2luOnR5cGVvZiByLnZhbHVlLGNvZGU6Im5vdF9tdWx0aXBsZV9vZiIsZGl2aXNvcjpuLnZhbHVlLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksSmM9ZCgiJFpvZENoZWNrTnVtYmVyRm9ybWF0IiwodCxuKT0+e0YuaW5pdCh0LG4pLG4uZm9ybWF0PW4uZm9ybWF0fHwiZmxvYXQ2NCI7Y29uc3Qgcj1uLmZvcm1hdD8uaW5jbHVkZXMoImludCIpLG89cj8iaW50IjoibnVtYmVyIixbZSxpXT1Lc1tuLmZvcm1hdF07dC5fem9kLm9uYXR0YWNoLnB1c2goYT0+e2NvbnN0IHM9YS5fem9kLmJhZztzLmZvcm1hdD1uLmZvcm1hdCxzLm1pbmltdW09ZSxzLm1heGltdW09aSxyJiYocy5wYXR0ZXJuPUVjKX0pLHQuX3pvZC5jaGVjaz1hPT57Y29uc3Qgcz1hLnZhbHVlO2lmKHIpe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpKXthLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpvLGZvcm1hdDpuLmZvcm1hdCxjb2RlOiJpbnZhbGlkX3R5cGUiLGNvbnRpbnVlOiExLGlucHV0OnMsaW5zdDp0fSk7cmV0dXJufWlmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihzKSl7cz4wP2EuaXNzdWVzLnB1c2goe2lucHV0OnMsY29kZToidG9vX2JpZyIsbWF4aW11bTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixub3RlOiJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLiIsaW5zdDp0LG9yaWdpbjpvLGluY2x1c2l2ZTohMCxjb250aW51ZTohbi5hYm9ydH0pOmEuaXNzdWVzLnB1c2goe2lucHV0OnMsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOk51bWJlci5NSU5fU0FGRV9JTlRFR0VSLG5vdGU6IkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuIixpbnN0OnQsb3JpZ2luOm8saW5jbHVzaXZlOiEwLGNvbnRpbnVlOiFuLmFib3J0fSk7cmV0dXJufX1zPGUmJmEuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDpzLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTplLGluY2x1c2l2ZTohMCxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KSxzPmkmJmEuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDpzLGNvZGU6InRvb19iaWciLG1heGltdW06aSxpbmNsdXNpdmU6ITAsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksSGM9ZCgiJFpvZENoZWNrQmlnSW50Rm9ybWF0IiwodCxuKT0+e0YuaW5pdCh0LG4pO2NvbnN0W3Isb109QnNbbi5mb3JtYXRdO3QuX3pvZC5vbmF0dGFjaC5wdXNoKGU9Pntjb25zdCBpPWUuX3pvZC5iYWc7aS5mb3JtYXQ9bi5mb3JtYXQsaS5taW5pbXVtPXIsaS5tYXhpbXVtPW99KSx0Ll96b2QuY2hlY2s9ZT0+e2NvbnN0IGk9ZS52YWx1ZTtpPHImJmUuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDppLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpyLGluY2x1c2l2ZTohMCxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KSxpPm8mJmUuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDppLGNvZGU6InRvb19iaWciLG1heGltdW06byxpbmNsdXNpdmU6ITAsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksVmM9ZCgiJFpvZENoZWNrTWF4U2l6ZSIsKHQsbik9Pnt2YXIgcjtGLmluaXQodCxuKSwocj10Ll96b2QuZGVmKS53aGVuPz8oci53aGVuPW89Pntjb25zdCBlPW8udmFsdWU7cmV0dXJuIVplKGUpJiZlLnNpemUhPT12b2lkIDB9KSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnLm1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWTtuLm1heGltdW08ZSYmKG8uX3pvZC5iYWcubWF4aW11bT1uLm1heGltdW0pfSksdC5fem9kLmNoZWNrPW89Pntjb25zdCBlPW8udmFsdWU7ZS5zaXplPD1uLm1heGltdW18fG8uaXNzdWVzLnB1c2goe29yaWdpbjpWbihlKSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOm4ubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxLYz1kKCIkWm9kQ2hlY2tNaW5TaXplIiwodCxuKT0+e3ZhciByO0YuaW5pdCh0LG4pLChyPXQuX3pvZC5kZWYpLndoZW4/PyhyLndoZW49bz0+e2NvbnN0IGU9by52YWx1ZTtyZXR1cm4hWmUoZSkmJmUuc2l6ZSE9PXZvaWQgMH0pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWcubWluaW11bT8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO24ubWluaW11bT5lJiYoby5fem9kLmJhZy5taW5pbXVtPW4ubWluaW11bSl9KSx0Ll96b2QuY2hlY2s9bz0+e2NvbnN0IGU9by52YWx1ZTtlLnNpemU+PW4ubWluaW11bXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOlZuKGUpLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpuLm1pbmltdW0saW5jbHVzaXZlOiEwLGlucHV0OmUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksQmM9ZCgiJFpvZENoZWNrU2l6ZUVxdWFscyIsKHQsbik9Pnt2YXIgcjtGLmluaXQodCxuKSwocj10Ll96b2QuZGVmKS53aGVuPz8oci53aGVuPW89Pntjb25zdCBlPW8udmFsdWU7cmV0dXJuIVplKGUpJiZlLnNpemUhPT12b2lkIDB9KSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnO2UubWluaW11bT1uLnNpemUsZS5tYXhpbXVtPW4uc2l6ZSxlLnNpemU9bi5zaXplfSksdC5fem9kLmNoZWNrPW89Pntjb25zdCBlPW8udmFsdWUsaT1lLnNpemU7aWYoaT09PW4uc2l6ZSlyZXR1cm47Y29uc3QgYT1pPm4uc2l6ZTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46Vm4oZSksLi4uYT97Y29kZToidG9vX2JpZyIsbWF4aW11bTpuLnNpemV9Ontjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06bi5zaXplfSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxXYz1kKCIkWm9kQ2hlY2tNYXhMZW5ndGgiLCh0LG4pPT57dmFyIHI7Ri5pbml0KHQsbiksKHI9dC5fem9kLmRlZikud2hlbj8/KHIud2hlbj1vPT57Y29uc3QgZT1vLnZhbHVlO3JldHVybiFaZShlKSYmZS5sZW5ndGghPT12b2lkIDB9KSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnLm1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWTtuLm1heGltdW08ZSYmKG8uX3pvZC5iYWcubWF4aW11bT1uLm1heGltdW0pfSksdC5fem9kLmNoZWNrPW89Pntjb25zdCBlPW8udmFsdWU7aWYoZS5sZW5ndGg8PW4ubWF4aW11bSlyZXR1cm47Y29uc3QgYT1LbihlKTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOm4ubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxHYz1kKCIkWm9kQ2hlY2tNaW5MZW5ndGgiLCh0LG4pPT57dmFyIHI7Ri5pbml0KHQsbiksKHI9dC5fem9kLmRlZikud2hlbj8/KHIud2hlbj1vPT57Y29uc3QgZT1vLnZhbHVlO3JldHVybiFaZShlKSYmZS5sZW5ndGghPT12b2lkIDB9KSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnLm1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWTtuLm1pbmltdW0+ZSYmKG8uX3pvZC5iYWcubWluaW11bT1uLm1pbmltdW0pfSksdC5fem9kLmNoZWNrPW89Pntjb25zdCBlPW8udmFsdWU7aWYoZS5sZW5ndGg+PW4ubWluaW11bSlyZXR1cm47Y29uc3QgYT1LbihlKTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSxjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06bi5taW5pbXVtLGluY2x1c2l2ZTohMCxpbnB1dDplLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLFhjPWQoIiRab2RDaGVja0xlbmd0aEVxdWFscyIsKHQsbik9Pnt2YXIgcjtGLmluaXQodCxuKSwocj10Ll96b2QuZGVmKS53aGVuPz8oci53aGVuPW89Pntjb25zdCBlPW8udmFsdWU7cmV0dXJuIVplKGUpJiZlLmxlbmd0aCE9PXZvaWQgMH0pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWc7ZS5taW5pbXVtPW4ubGVuZ3RoLGUubWF4aW11bT1uLmxlbmd0aCxlLmxlbmd0aD1uLmxlbmd0aH0pLHQuX3pvZC5jaGVjaz1vPT57Y29uc3QgZT1vLnZhbHVlLGk9ZS5sZW5ndGg7aWYoaT09PW4ubGVuZ3RoKXJldHVybjtjb25zdCBhPUtuKGUpLHM9aT5uLmxlbmd0aDtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSwuLi5zP3tjb2RlOiJ0b29fYmlnIixtYXhpbXVtOm4ubGVuZ3RofTp7Y29kZToidG9vX3NtYWxsIixtaW5pbXVtOm4ubGVuZ3RofSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxFdD1kKCIkWm9kQ2hlY2tTdHJpbmdGb3JtYXQiLCh0LG4pPT57dmFyIHIsbztGLmluaXQodCxuKSx0Ll96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3QgaT1lLl96b2QuYmFnO2kuZm9ybWF0PW4uZm9ybWF0LG4ucGF0dGVybiYmKGkucGF0dGVybnM/PyhpLnBhdHRlcm5zPW5ldyBTZXQpLGkucGF0dGVybnMuYWRkKG4ucGF0dGVybikpfSksbi5wYXR0ZXJuPyhyPXQuX3pvZCkuY2hlY2s/PyhyLmNoZWNrPWU9PntuLnBhdHRlcm4ubGFzdEluZGV4PTAsIW4ucGF0dGVybi50ZXN0KGUudmFsdWUpJiZlLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDpuLmZvcm1hdCxpbnB1dDplLnZhbHVlLC4uLm4ucGF0dGVybj97cGF0dGVybjpuLnBhdHRlcm4udG9TdHJpbmcoKX06e30saW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9KToobz10Ll96b2QpLmNoZWNrPz8oby5jaGVjaz0oKT0+e30pfSksWWM9ZCgiJFpvZENoZWNrUmVnZXgiLCh0LG4pPT57RXQuaW5pdCh0LG4pLHQuX3pvZC5jaGVjaz1yPT57bi5wYXR0ZXJuLmxhc3RJbmRleD0wLCFuLnBhdHRlcm4udGVzdChyLnZhbHVlKSYmci5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InJlZ2V4IixpbnB1dDpyLnZhbHVlLHBhdHRlcm46bi5wYXR0ZXJuLnRvU3RyaW5nKCksaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksUWM9ZCgiJFpvZENoZWNrTG93ZXJDYXNlIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1BYyksRXQuaW5pdCh0LG4pfSksZXU9ZCgiJFpvZENoZWNrVXBwZXJDYXNlIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1MYyksRXQuaW5pdCh0LG4pfSksdHU9ZCgiJFpvZENoZWNrSW5jbHVkZXMiLCh0LG4pPT57Ri5pbml0KHQsbik7Y29uc3Qgcj0kZShuLmluY2x1ZGVzKSxvPW5ldyBSZWdFeHAodHlwZW9mIG4ucG9zaXRpb249PSJudW1iZXIiP2BeLnske24ucG9zaXRpb259fSR7cn1gOnIpO24ucGF0dGVybj1vLHQuX3pvZC5vbmF0dGFjaC5wdXNoKGU9Pntjb25zdCBpPWUuX3pvZC5iYWc7aS5wYXR0ZXJucz8/KGkucGF0dGVybnM9bmV3IFNldCksaS5wYXR0ZXJucy5hZGQobyl9KSx0Ll96b2QuY2hlY2s9ZT0+e2UudmFsdWUuaW5jbHVkZXMobi5pbmNsdWRlcyxuLnBvc2l0aW9uKXx8ZS5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImluY2x1ZGVzIixpbmNsdWRlczpuLmluY2x1ZGVzLGlucHV0OmUudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksbnU9ZCgiJFpvZENoZWNrU3RhcnRzV2l0aCIsKHQsbik9PntGLmluaXQodCxuKTtjb25zdCByPW5ldyBSZWdFeHAoYF4keyRlKG4ucHJlZml4KX0uKmApO24ucGF0dGVybj8/KG4ucGF0dGVybj1yKSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnO2UucGF0dGVybnM/PyhlLnBhdHRlcm5zPW5ldyBTZXQpLGUucGF0dGVybnMuYWRkKHIpfSksdC5fem9kLmNoZWNrPW89PntvLnZhbHVlLnN0YXJ0c1dpdGgobi5wcmVmaXgpfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoic3RhcnRzX3dpdGgiLHByZWZpeDpuLnByZWZpeCxpbnB1dDpvLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLHJ1PWQoIiRab2RDaGVja0VuZHNXaXRoIiwodCxuKT0+e0YuaW5pdCh0LG4pO2NvbnN0IHI9bmV3IFJlZ0V4cChgLiokeyRlKG4uc3VmZml4KX0kYCk7bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXIpLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWc7ZS5wYXR0ZXJucz8/KGUucGF0dGVybnM9bmV3IFNldCksZS5wYXR0ZXJucy5hZGQocil9KSx0Ll96b2QuY2hlY2s9bz0+e28udmFsdWUuZW5kc1dpdGgobi5zdWZmaXgpfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiZW5kc193aXRoIixzdWZmaXg6bi5zdWZmaXgsaW5wdXQ6by52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KTtmdW5jdGlvbiBwcyh0LG4scil7dC5pc3N1ZXMubGVuZ3RoJiZuLmlzc3Vlcy5wdXNoKC4uLnBlKHIsdC5pc3N1ZXMpKX1jb25zdCBpdT1kKCIkWm9kQ2hlY2tQcm9wZXJ0eSIsKHQsbik9PntGLmluaXQodCxuKSx0Ll96b2QuY2hlY2s9cj0+e2NvbnN0IG89bi5zY2hlbWEuX3pvZC5ydW4oe3ZhbHVlOnIudmFsdWVbbi5wcm9wZXJ0eV0saXNzdWVzOltdfSx7fSk7aWYobyBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIG8udGhlbihlPT5wcyhlLHIsbi5wcm9wZXJ0eSkpO3BzKG8scixuLnByb3BlcnR5KX19KSxvdT1kKCIkWm9kQ2hlY2tNaW1lVHlwZSIsKHQsbik9PntGLmluaXQodCxuKTtjb25zdCByPW5ldyBTZXQobi5taW1lKTt0Ll96b2Qub25hdHRhY2gucHVzaChvPT57by5fem9kLmJhZy5taW1lPW4ubWltZX0pLHQuX3pvZC5jaGVjaz1vPT57ci5oYXMoby52YWx1ZS50eXBlKXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOm4ubWltZSxpbnB1dDpvLnZhbHVlLnR5cGUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksYXU9ZCgiJFpvZENoZWNrT3ZlcndyaXRlIiwodCxuKT0+e0YuaW5pdCh0LG4pLHQuX3pvZC5jaGVjaz1yPT57ci52YWx1ZT1uLnR4KHIudmFsdWUpfX0pO2NsYXNzIHN1e2NvbnN0cnVjdG9yKG49W10pe3RoaXMuY29udGVudD1bXSx0aGlzLmluZGVudD0wLHRoaXMmJih0aGlzLmFyZ3M9bil9aW5kZW50ZWQobil7dGhpcy5pbmRlbnQrPTEsbih0aGlzKSx0aGlzLmluZGVudC09MX13cml0ZShuKXtpZih0eXBlb2Ygbj09ImZ1bmN0aW9uIil7bih0aGlzLHtleGVjdXRpb246InN5bmMifSksbih0aGlzLHtleGVjdXRpb246ImFzeW5jIn0pO3JldHVybn1jb25zdCBvPW4uc3BsaXQoYApgKS5maWx0ZXIoYT0+YSksZT1NYXRoLm1pbiguLi5vLm1hcChhPT5hLmxlbmd0aC1hLnRyaW1TdGFydCgpLmxlbmd0aCkpLGk9by5tYXAoYT0+YS5zbGljZShlKSkubWFwKGE9PiIgIi5yZXBlYXQodGhpcy5pbmRlbnQqMikrYSk7Zm9yKGNvbnN0IGEgb2YgaSl0aGlzLmNvbnRlbnQucHVzaChhKX1jb21waWxlKCl7Y29uc3Qgbj1GdW5jdGlvbixyPXRoaXM/LmFyZ3MsZT1bLi4uKHRoaXM/LmNvbnRlbnQ/P1siIl0pLm1hcChpPT5gICAke2l9YCldO3JldHVybiBuZXcgbiguLi5yLGUuam9pbihgCmApKX19Y29uc3QgY3U9e21ham9yOjQsbWlub3I6NCxwYXRjaDozfSxJPWQoIiRab2RUeXBlIiwodCxuKT0+e3ZhciByO3Q/Pyh0PXt9KSx0Ll96b2QuZGVmPW4sdC5fem9kLmJhZz10Ll96b2QuYmFnfHx7fSx0Ll96b2QudmVyc2lvbj1jdTtjb25zdCBvPVsuLi50Ll96b2QuZGVmLmNoZWNrcz8/W11dO3QuX3pvZC50cmFpdHMuaGFzKCIkWm9kQ2hlY2siKSYmby51bnNoaWZ0KHQpO2Zvcihjb25zdCBlIG9mIG8pZm9yKGNvbnN0IGkgb2YgZS5fem9kLm9uYXR0YWNoKWkodCk7aWYoby5sZW5ndGg9PT0wKShyPXQuX3pvZCkuZGVmZXJyZWQ/PyhyLmRlZmVycmVkPVtdKSx0Ll96b2QuZGVmZXJyZWQ/LnB1c2goKCk9Pnt0Ll96b2QucnVuPXQuX3pvZC5wYXJzZX0pO2Vsc2V7Y29uc3QgZT0oYSxzLGMpPT57bGV0IHU9VWUoYSksbDtmb3IoY29uc3QgZyBvZiBzKXtpZihnLl96b2QuZGVmLndoZW4pe2lmKG5jKGEpfHwhZy5fem9kLmRlZi53aGVuKGEpKWNvbnRpbnVlfWVsc2UgaWYodSljb250aW51ZTtjb25zdCB2PWEuaXNzdWVzLmxlbmd0aCxfPWcuX3pvZC5jaGVjayhhKTtpZihfIGluc3RhbmNlb2YgUHJvbWlzZSYmYz8uYXN5bmM9PT0hMSl0aHJvdyBuZXcgamU7aWYobHx8XyBpbnN0YW5jZW9mIFByb21pc2UpbD0obD8/UHJvbWlzZS5yZXNvbHZlKCkpLnRoZW4oYXN5bmMoKT0+e2F3YWl0IF8sYS5pc3N1ZXMubGVuZ3RoIT09diYmKHV8fCh1PVVlKGEsdikpKX0pO2Vsc2V7aWYoYS5pc3N1ZXMubGVuZ3RoPT09diljb250aW51ZTt1fHwodT1VZShhLHYpKX19cmV0dXJuIGw/bC50aGVuKCgpPT5hKTphfSxpPShhLHMsYyk9PntpZihVZShhKSlyZXR1cm4gYS5hYm9ydGVkPSEwLGE7Y29uc3QgdT1lKHMsbyxjKTtpZih1IGluc3RhbmNlb2YgUHJvbWlzZSl7aWYoYy5hc3luYz09PSExKXRocm93IG5ldyBqZTtyZXR1cm4gdS50aGVuKGw9PnQuX3pvZC5wYXJzZShsLGMpKX1yZXR1cm4gdC5fem9kLnBhcnNlKHUsYyl9O3QuX3pvZC5ydW49KGEscyk9PntpZihzLnNraXBDaGVja3MpcmV0dXJuIHQuX3pvZC5wYXJzZShhLHMpO2lmKHMuZGlyZWN0aW9uPT09ImJhY2t3YXJkIil7Y29uc3QgdT10Ll96b2QucGFyc2Uoe3ZhbHVlOmEudmFsdWUsaXNzdWVzOltdfSx7Li4ucyxza2lwQ2hlY2tzOiEwfSk7cmV0dXJuIHUgaW5zdGFuY2VvZiBQcm9taXNlP3UudGhlbihsPT5pKGwsYSxzKSk6aSh1LGEscyl9Y29uc3QgYz10Ll96b2QucGFyc2UoYSxzKTtpZihjIGluc3RhbmNlb2YgUHJvbWlzZSl7aWYocy5hc3luYz09PSExKXRocm93IG5ldyBqZTtyZXR1cm4gYy50aGVuKHU9PmUodSxvLHMpKX1yZXR1cm4gZShjLG8scyl9fVQodCwifnN0YW5kYXJkIiwoKT0+KHt2YWxpZGF0ZTplPT57dHJ5e2NvbnN0IGk9aGkodCxlKTtyZXR1cm4gaS5zdWNjZXNzP3t2YWx1ZTppLmRhdGF9Ontpc3N1ZXM6aS5lcnJvcj8uaXNzdWVzfX1jYXRjaHtyZXR1cm4gc2ModCxlKS50aGVuKGE9PmEuc3VjY2Vzcz97dmFsdWU6YS5kYXRhfTp7aXNzdWVzOmEuZXJyb3I/Lmlzc3Vlc30pfX0sdmVuZG9yOiJ6b2QiLHZlcnNpb246MX0pKX0pLFp0PWQoIiRab2RTdHJpbmciLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhdHRlcm49Wy4uLnQ/Ll96b2QuYmFnPy5wYXR0ZXJucz8/W11dLnBvcCgpPz9EYyh0Ll96b2QuYmFnKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihuLmNvZXJjZSl0cnl7ci52YWx1ZT1TdHJpbmcoci52YWx1ZSl9Y2F0Y2h7fXJldHVybiB0eXBlb2Ygci52YWx1ZT09InN0cmluZyJ8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJzdHJpbmciLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ci52YWx1ZSxpbnN0OnR9KSxyfX0pLHE9ZCgiJFpvZFN0cmluZ0Zvcm1hdCIsKHQsbik9PntFdC5pbml0KHQsbiksWnQuaW5pdCh0LG4pfSksdXU9ZCgiJFpvZEdVSUQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWdjKSxxLmluaXQodCxuKX0pLGx1PWQoIiRab2RVVUlEIiwodCxuKT0+e2lmKG4udmVyc2lvbil7Y29uc3Qgbz17djE6MSx2MjoyLHYzOjMsdjQ6NCx2NTo1LHY2OjYsdjc6Nyx2ODo4fVtuLnZlcnNpb25dO2lmKG89PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFVVSUQgdmVyc2lvbjogIiR7bi52ZXJzaW9ufSJgKTtuLnBhdHRlcm4/PyhuLnBhdHRlcm49S2UobykpfWVsc2Ugbi5wYXR0ZXJuPz8obi5wYXR0ZXJuPUtlKCkpO3EuaW5pdCh0LG4pfSksZHU9ZCgiJFpvZEVtYWlsIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj12YykscS5pbml0KHQsbil9KSxtdT1kKCIkWm9kVVJMIiwodCxuKT0+e3EuaW5pdCh0LG4pLHQuX3pvZC5jaGVjaz1yPT57dHJ5e2NvbnN0IG89ci52YWx1ZS50cmltKCk7aWYoIW4ubm9ybWFsaXplJiZuLnByb3RvY29sPy5zb3VyY2U9PT16aS5zb3VyY2UmJiEvXmh0dHBzPzpcL1wvL2kudGVzdChvKSl7ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoidXJsIixub3RlOiJJbnZhbGlkIFVSTCBmb3JtYXQiLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSk7cmV0dXJufWNvbnN0IGU9bmV3IFVSTChvKTtuLmhvc3RuYW1lJiYobi5ob3N0bmFtZS5sYXN0SW5kZXg9MCxuLmhvc3RuYW1lLnRlc3QoZS5ob3N0bmFtZSl8fHIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBob3N0bmFtZSIscGF0dGVybjpuLmhvc3RuYW1lLnNvdXJjZSxpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pKSxuLnByb3RvY29sJiYobi5wcm90b2NvbC5sYXN0SW5kZXg9MCxuLnByb3RvY29sLnRlc3QoZS5wcm90b2NvbC5lbmRzV2l0aCgiOiIpP2UucHJvdG9jb2wuc2xpY2UoMCwtMSk6ZS5wcm90b2NvbCl8fHIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBwcm90b2NvbCIscGF0dGVybjpuLnByb3RvY29sLnNvdXJjZSxpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pKSxuLm5vcm1hbGl6ZT9yLnZhbHVlPWUuaHJlZjpyLnZhbHVlPW87cmV0dXJufWNhdGNoe3IuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19fSkscHU9ZCgiJFpvZEVtb2ppIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1fYygpKSxxLmluaXQodCxuKX0pLGZ1PWQoIiRab2ROYW5vSUQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXBjKSxxLmluaXQodCxuKX0pLGd1PWQoIiRab2RDVUlEIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1jYykscS5pbml0KHQsbil9KSx2dT1kKCIkWm9kQ1VJRDIiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXVjKSxxLmluaXQodCxuKX0pLGh1PWQoIiRab2RVTElEIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1sYykscS5pbml0KHQsbil9KSxfdT1kKCIkWm9kWElEIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1kYykscS5pbml0KHQsbil9KSwkdT1kKCIkWm9kS1NVSUQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPW1jKSxxLmluaXQodCxuKX0pLGJ1PWQoIiRab2RJU09EYXRlVGltZSIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49T2MobikpLHEuaW5pdCh0LG4pfSkseXU9ZCgiJFpvZElTT0RhdGUiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPVVjKSxxLmluaXQodCxuKX0pLGt1PWQoIiRab2RJU09UaW1lIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1QYyhuKSkscS5pbml0KHQsbil9KSxTdT1kKCIkWm9kSVNPRHVyYXRpb24iLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWZjKSxxLmluaXQodCxuKX0pLHd1PWQoIiRab2RJUHY0IiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj0kYykscS5pbml0KHQsbiksdC5fem9kLmJhZy5mb3JtYXQ9ImlwdjQifSksSXU9ZCgiJFpvZElQdjYiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWJjKSxxLmluaXQodCxuKSx0Ll96b2QuYmFnLmZvcm1hdD0iaXB2NiIsdC5fem9kLmNoZWNrPXI9Pnt0cnl7bmV3IFVSTChgaHR0cDovL1ske3IudmFsdWV9XWApfWNhdGNoe3IuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImlwdjYiLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fX0pLHh1PWQoIiRab2RNQUMiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXljKG4uZGVsaW1pdGVyKSkscS5pbml0KHQsbiksdC5fem9kLmJhZy5mb3JtYXQ9Im1hYyJ9KSx6dT1kKCIkWm9kQ0lEUnY0IiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1rYykscS5pbml0KHQsbil9KSxUdT1kKCIkWm9kQ0lEUnY2IiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1TYykscS5pbml0KHQsbiksdC5fem9kLmNoZWNrPXI9Pntjb25zdCBvPXIudmFsdWUuc3BsaXQoIi8iKTt0cnl7aWYoby5sZW5ndGghPT0yKXRocm93IG5ldyBFcnJvcjtjb25zdFtlLGldPW87aWYoIWkpdGhyb3cgbmV3IEVycm9yO2NvbnN0IGE9TnVtYmVyKGkpO2lmKGAke2F9YCE9PWkpdGhyb3cgbmV3IEVycm9yO2lmKGE8MHx8YT4xMjgpdGhyb3cgbmV3IEVycm9yO25ldyBVUkwoYGh0dHA6Ly9bJHtlfV1gKX1jYXRjaHtyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJjaWRydjYiLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fX0pO2Z1bmN0aW9uIFBpKHQpe2lmKHQ9PT0iIilyZXR1cm4hMDtpZigvXHMvLnRlc3QodCl8fHQubGVuZ3RoJTQhPT0wKXJldHVybiExO3RyeXtyZXR1cm4gYXRvYih0KSwhMH1jYXRjaHtyZXR1cm4hMX19Y29uc3QgVXU9ZCgiJFpvZEJhc2U2NCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49d2MpLHEuaW5pdCh0LG4pLHQuX3pvZC5iYWcuY29udGVudEVuY29kaW5nPSJiYXNlNjQiLHQuX3pvZC5jaGVjaz1yPT57UGkoci52YWx1ZSl8fHIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImJhc2U2NCIsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KTtmdW5jdGlvbiBqdSh0KXtpZigheGkudGVzdCh0KSlyZXR1cm4hMTtjb25zdCBuPXQucmVwbGFjZSgvWy1fXS9nLG89Pm89PT0iLSI/IisiOiIvIikscj1uLnBhZEVuZChNYXRoLmNlaWwobi5sZW5ndGgvNCkqNCwiPSIpO3JldHVybiBQaShyKX1jb25zdCBQdT1kKCIkWm9kQmFzZTY0VVJMIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj14aSkscS5pbml0KHQsbiksdC5fem9kLmJhZy5jb250ZW50RW5jb2Rpbmc9ImJhc2U2NHVybCIsdC5fem9kLmNoZWNrPXI9PntqdShyLnZhbHVlKXx8ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiYmFzZTY0dXJsIixpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLE91PWQoIiRab2RFMTY0IiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj16YykscS5pbml0KHQsbil9KTtmdW5jdGlvbiBEdSh0LG49bnVsbCl7dHJ5e2NvbnN0IHI9dC5zcGxpdCgiLiIpO2lmKHIubGVuZ3RoIT09MylyZXR1cm4hMTtjb25zdFtvXT1yO2lmKCFvKXJldHVybiExO2NvbnN0IGU9SlNPTi5wYXJzZShhdG9iKG8pKTtyZXR1cm4hKCJ0eXAiaW4gZSYmZT8udHlwIT09IkpXVCJ8fCFlLmFsZ3x8biYmKCEoImFsZyJpbiBlKXx8ZS5hbGchPT1uKSl9Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IE51PWQoIiRab2RKV1QiLCh0LG4pPT57cS5pbml0KHQsbiksdC5fem9kLmNoZWNrPXI9PntEdShyLnZhbHVlLG4uYWxnKXx8ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiand0IixpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLEV1PWQoIiRab2RDdXN0b21TdHJpbmdGb3JtYXQiLCh0LG4pPT57cS5pbml0KHQsbiksdC5fem9kLmNoZWNrPXI9PntuLmZuKHIudmFsdWUpfHxyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0Om4uZm9ybWF0LGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksT2k9ZCgiJFpvZE51bWJlciIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGF0dGVybj10Ll96b2QuYmFnLnBhdHRlcm4/P1RpLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG4uY29lcmNlKXRyeXtyLnZhbHVlPU51bWJlcihyLnZhbHVlKX1jYXRjaHt9Y29uc3QgZT1yLnZhbHVlO2lmKHR5cGVvZiBlPT0ibnVtYmVyIiYmIU51bWJlci5pc05hTihlKSYmTnVtYmVyLmlzRmluaXRlKGUpKXJldHVybiByO2NvbnN0IGk9dHlwZW9mIGU9PSJudW1iZXIiP051bWJlci5pc05hTihlKT8iTmFOIjpOdW1iZXIuaXNGaW5pdGUoZSk/dm9pZCAwOiJJbmZpbml0eSI6dm9pZCAwO3JldHVybiByLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibnVtYmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0LC4uLmk/e3JlY2VpdmVkOml9Ont9fSkscn19KSxadT1kKCIkWm9kTnVtYmVyRm9ybWF0IiwodCxuKT0+e0pjLmluaXQodCxuKSxPaS5pbml0KHQsbil9KSxEaT1kKCIkWm9kQm9vbGVhbiIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGF0dGVybj1aYyx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihuLmNvZXJjZSl0cnl7ci52YWx1ZT0hIXIudmFsdWV9Y2F0Y2h7fWNvbnN0IGU9ci52YWx1ZTtyZXR1cm4gdHlwZW9mIGU9PSJib29sZWFuInx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImJvb2xlYW4iLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyfX0pLE5pPWQoIiRab2RCaWdJbnQiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhdHRlcm49TmMsdC5fem9kLnBhcnNlPShyLG8pPT57aWYobi5jb2VyY2UpdHJ5e3IudmFsdWU9QmlnSW50KHIudmFsdWUpfWNhdGNoe31yZXR1cm4gdHlwZW9mIHIudmFsdWU9PSJiaWdpbnQifHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiYmlnaW50Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnIudmFsdWUsaW5zdDp0fSkscn19KSxSdT1kKCIkWm9kQmlnSW50Rm9ybWF0IiwodCxuKT0+e0hjLmluaXQodCxuKSxOaS5pbml0KHQsbil9KSxDdT1kKCIkWm9kU3ltYm9sIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtyZXR1cm4gdHlwZW9mIGU9PSJzeW1ib2wifHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoic3ltYm9sIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscn19KSxBdT1kKCIkWm9kVW5kZWZpbmVkIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXR0ZXJuPUNjLHQuX3pvZC52YWx1ZXM9bmV3IFNldChbdm9pZCAwXSksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO3JldHVybiB0eXBlb2YgZT4idSJ8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJ1bmRlZmluZWQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyfX0pLEx1PWQoIiRab2ROdWxsIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXR0ZXJuPVJjLHQuX3pvZC52YWx1ZXM9bmV3IFNldChbbnVsbF0pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtyZXR1cm4gZT09PW51bGx8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJudWxsIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscn19KSxNdT1kKCIkWm9kQW55IiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT1yPT5yfSkscXU9ZCgiJFpvZFVua25vd24iLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPXI9PnJ9KSxGdT1kKCIkWm9kTmV2ZXIiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT4oci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im5ldmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnIudmFsdWUsaW5zdDp0fSkscil9KSxKdT1kKCIkWm9kVm9pZCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7cmV0dXJuIHR5cGVvZiBlPiJ1Inx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InZvaWQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyfX0pLEh1PWQoIiRab2REYXRlIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG4uY29lcmNlKXRyeXtyLnZhbHVlPW5ldyBEYXRlKHIudmFsdWUpfWNhdGNoe31jb25zdCBlPXIudmFsdWUsaT1lIGluc3RhbmNlb2YgRGF0ZTtyZXR1cm4gaSYmIU51bWJlci5pc05hTihlLmdldFRpbWUoKSl8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJkYXRlIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsLi4uaT97cmVjZWl2ZWQ6IkludmFsaWQgRGF0ZSJ9Ont9LGluc3Q6dH0pLHJ9fSk7ZnVuY3Rpb24gZnModCxuLHIpe3QuaXNzdWVzLmxlbmd0aCYmbi5pc3N1ZXMucHVzaCguLi5wZShyLHQuaXNzdWVzKSksbi52YWx1ZVtyXT10LnZhbHVlfWNvbnN0IFZ1PWQoIiRab2RBcnJheSIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJhcnJheSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHI7ci52YWx1ZT1BcnJheShlLmxlbmd0aCk7Y29uc3QgaT1bXTtmb3IobGV0IGE9MDthPGUubGVuZ3RoO2ErKyl7Y29uc3Qgcz1lW2FdLGM9bi5lbGVtZW50Ll96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyk7YyBpbnN0YW5jZW9mIFByb21pc2U/aS5wdXNoKGMudGhlbih1PT5mcyh1LHIsYSkpKTpmcyhjLHIsYSl9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9PnIpOnJ9fSk7ZnVuY3Rpb24gUm4odCxuLHIsbyxlLGkpe2NvbnN0IGE9ciBpbiBvO2lmKHQuaXNzdWVzLmxlbmd0aCl7aWYoZSYmaSYmIWEpcmV0dXJuO24uaXNzdWVzLnB1c2goLi4ucGUocix0Lmlzc3VlcykpfWlmKCFhJiYhZSl7dC5pc3N1ZXMubGVuZ3RofHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJub25vcHRpb25hbCIsaW5wdXQ6dm9pZCAwLHBhdGg6W3JdfSk7cmV0dXJufXQudmFsdWU9PT12b2lkIDA/YSYmKG4udmFsdWVbcl09dm9pZCAwKTpuLnZhbHVlW3JdPXQudmFsdWV9ZnVuY3Rpb24gS3UodCl7Y29uc3Qgbj1PYmplY3Qua2V5cyh0LnNoYXBlKTtmb3IoY29uc3QgbyBvZiBuKWlmKCF0LnNoYXBlPy5bb10/Ll96b2Q/LnRyYWl0cz8uaGFzKCIkWm9kVHlwZSIpKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBlbGVtZW50IGF0IGtleSAiJHtvfSI6IGV4cGVjdGVkIGEgWm9kIHNjaGVtYWApO2NvbnN0IHI9VnModC5zaGFwZSk7cmV0dXJuey4uLnQsa2V5czpuLGtleVNldDpuZXcgU2V0KG4pLG51bUtleXM6bi5sZW5ndGgsb3B0aW9uYWxLZXlzOm5ldyBTZXQocil9fWZ1bmN0aW9uIEJ1KHQsbixyLG8sZSxpKXtjb25zdCBhPVtdLHM9ZS5rZXlTZXQsYz1lLmNhdGNoYWxsLl96b2QsdT1jLmRlZi50eXBlLGw9Yy5vcHRpbj09PSJvcHRpb25hbCIsZz1jLm9wdG91dD09PSJvcHRpb25hbCI7Zm9yKGNvbnN0IHYgaW4gbil7aWYodj09PSJfX3Byb3RvX18ifHxzLmhhcyh2KSljb250aW51ZTtpZih1PT09Im5ldmVyIil7YS5wdXNoKHYpO2NvbnRpbnVlfWNvbnN0IF89Yy5ydW4oe3ZhbHVlOm5bdl0saXNzdWVzOltdfSxvKTtfIGluc3RhbmNlb2YgUHJvbWlzZT90LnB1c2goXy50aGVuKHk9PlJuKHkscix2LG4sbCxnKSkpOlJuKF8scix2LG4sbCxnKX1yZXR1cm4gYS5sZW5ndGgmJnIuaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixrZXlzOmEsaW5wdXQ6bixpbnN0Oml9KSx0Lmxlbmd0aD9Qcm9taXNlLmFsbCh0KS50aGVuKCgpPT5yKTpyfWNvbnN0IFd1PWQoIiRab2RPYmplY3QiLCh0LG4pPT57aWYoSS5pbml0KHQsbiksIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobiwic2hhcGUiKT8uZ2V0KXtjb25zdCBzPW4uc2hhcGU7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sInNoYXBlIix7Z2V0OigpPT57Y29uc3QgYz17Li4uc307cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJzaGFwZSIse3ZhbHVlOmN9KSxjfX0pfWNvbnN0IG89VHQoKCk9Pkt1KG4pKTtUKHQuX3pvZCwicHJvcFZhbHVlcyIsKCk9Pntjb25zdCBzPW4uc2hhcGUsYz17fTtmb3IoY29uc3QgdSBpbiBzKXtjb25zdCBsPXNbdV0uX3pvZDtpZihsLnZhbHVlcyl7Y1t1XT8/KGNbdV09bmV3IFNldCk7Zm9yKGNvbnN0IGcgb2YgbC52YWx1ZXMpY1t1XS5hZGQoZyl9fXJldHVybiBjfSk7Y29uc3QgZT1IZSxpPW4uY2F0Y2hhbGw7bGV0IGE7dC5fem9kLnBhcnNlPShzLGMpPT57YT8/KGE9by52YWx1ZSk7Y29uc3QgdT1zLnZhbHVlO2lmKCFlKHUpKXJldHVybiBzLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoib2JqZWN0Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnUsaW5zdDp0fSkscztzLnZhbHVlPXt9O2NvbnN0IGw9W10sZz1hLnNoYXBlO2Zvcihjb25zdCB2IG9mIGEua2V5cyl7Y29uc3QgXz1nW3ZdLHk9Xy5fem9kLm9wdGluPT09Im9wdGlvbmFsIixKPV8uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiLEE9Xy5fem9kLnJ1bih7dmFsdWU6dVt2XSxpc3N1ZXM6W119LGMpO0EgaW5zdGFuY2VvZiBQcm9taXNlP2wucHVzaChBLnRoZW4oQWU9PlJuKEFlLHMsdix1LHksSikpKTpSbihBLHMsdix1LHksSil9cmV0dXJuIGk/QnUobCx1LHMsYyxvLnZhbHVlLHQpOmwubGVuZ3RoP1Byb21pc2UuYWxsKGwpLnRoZW4oKCk9PnMpOnN9fSksR3U9ZCgiJFpvZE9iamVjdEpJVCIsKHQsbik9PntXdS5pbml0KHQsbik7Y29uc3Qgcj10Ll96b2QucGFyc2Usbz1UdCgoKT0+S3UobikpLGU9dj0+e2NvbnN0IF89bmV3IHN1KFsic2hhcGUiLCJwYXlsb2FkIiwiY3R4Il0pLHk9by52YWx1ZSxKPUg9Pntjb25zdCBMPW5pKEgpO3JldHVybmBzaGFwZVske0x9XS5fem9kLnJ1bih7IHZhbHVlOiBpbnB1dFske0x9XSwgaXNzdWVzOiBbXSB9LCBjdHgpYH07Xy53cml0ZSgiY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlOyIpO2NvbnN0IEE9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgQWU9MDtmb3IoY29uc3QgSCBvZiB5LmtleXMpQVtIXT1ga2V5XyR7QWUrK31gO18ud3JpdGUoImNvbnN0IG5ld1Jlc3VsdCA9IHt9OyIpO2Zvcihjb25zdCBIIG9mIHkua2V5cyl7Y29uc3QgTD1BW0hdLEc9bmkoSCksY3M9dltIXSx1cz1jcz8uX3pvZD8ub3B0aW49PT0ib3B0aW9uYWwiLGptPWNzPy5fem9kPy5vcHRvdXQ9PT0ib3B0aW9uYWwiO18ud3JpdGUoYGNvbnN0ICR7TH0gPSAke0ooSCl9O2ApLHVzJiZqbT9fLndyaXRlKGAKICAgICAgICBpZiAoJHtMfS5pc3N1ZXMubGVuZ3RoKSB7CiAgICAgICAgICBpZiAoJHtHfSBpbiBpbnB1dCkgewogICAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdCgke0x9Lmlzc3Vlcy5tYXAoaXNzID0+ICh7CiAgICAgICAgICAgICAgLi4uaXNzLAogICAgICAgICAgICAgIHBhdGg6IGlzcy5wYXRoID8gWyR7R30sIC4uLmlzcy5wYXRoXSA6IFske0d9XQogICAgICAgICAgICB9KSkpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoJHtMfS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBpZiAoJHtHfSBpbiBpbnB1dCkgewogICAgICAgICAgICBuZXdSZXN1bHRbJHtHfV0gPSB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG5ld1Jlc3VsdFske0d9XSA9ICR7TH0udmFsdWU7CiAgICAgICAgfQogICAgICAgIAogICAgICBgKTp1cz9fLndyaXRlKGAKICAgICAgICBpZiAoJHtMfS5pc3N1ZXMubGVuZ3RoKSB7CiAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdCgke0x9Lmlzc3Vlcy5tYXAoaXNzID0+ICh7CiAgICAgICAgICAgIC4uLmlzcywKICAgICAgICAgICAgcGF0aDogaXNzLnBhdGggPyBbJHtHfSwgLi4uaXNzLnBhdGhdIDogWyR7R31dCiAgICAgICAgICB9KSkpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoJHtMfS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBpZiAoJHtHfSBpbiBpbnB1dCkgewogICAgICAgICAgICBuZXdSZXN1bHRbJHtHfV0gPSB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG5ld1Jlc3VsdFske0d9XSA9ICR7TH0udmFsdWU7CiAgICAgICAgfQogICAgICAgIAogICAgICBgKTpfLndyaXRlKGAKICAgICAgICBjb25zdCAke0x9X3ByZXNlbnQgPSAke0d9IGluIGlucHV0OwogICAgICAgIGlmICgke0x9Lmlzc3Vlcy5sZW5ndGgpIHsKICAgICAgICAgIHBheWxvYWQuaXNzdWVzID0gcGF5bG9hZC5pc3N1ZXMuY29uY2F0KCR7TH0uaXNzdWVzLm1hcChpc3MgPT4gKHsKICAgICAgICAgICAgLi4uaXNzLAogICAgICAgICAgICBwYXRoOiBpc3MucGF0aCA/IFske0d9LCAuLi5pc3MucGF0aF0gOiBbJHtHfV0KICAgICAgICAgIH0pKSk7CiAgICAgICAgfQogICAgICAgIGlmICghJHtMfV9wcmVzZW50ICYmICEke0x9Lmlzc3Vlcy5sZW5ndGgpIHsKICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goewogICAgICAgICAgICBjb2RlOiAiaW52YWxpZF90eXBlIiwKICAgICAgICAgICAgZXhwZWN0ZWQ6ICJub25vcHRpb25hbCIsCiAgICAgICAgICAgIGlucHV0OiB1bmRlZmluZWQsCiAgICAgICAgICAgIHBhdGg6IFske0d9XQogICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHtMfV9wcmVzZW50KSB7CiAgICAgICAgICBpZiAoJHtMfS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIG5ld1Jlc3VsdFske0d9XSA9IHVuZGVmaW5lZDsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG5ld1Jlc3VsdFske0d9XSA9ICR7TH0udmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgYCl9Xy53cml0ZSgicGF5bG9hZC52YWx1ZSA9IG5ld1Jlc3VsdDsiKSxfLndyaXRlKCJyZXR1cm4gcGF5bG9hZDsiKTtjb25zdCBCPV8uY29tcGlsZSgpO3JldHVybihILEwpPT5CKHYsSCxMKX07bGV0IGk7Y29uc3QgYT1IZSxzPSF5dC5qaXRsZXNzLHU9cyYmSnMudmFsdWUsbD1uLmNhdGNoYWxsO2xldCBnO3QuX3pvZC5wYXJzZT0odixfKT0+e2c/PyhnPW8udmFsdWUpO2NvbnN0IHk9di52YWx1ZTtyZXR1cm4gYSh5KT9zJiZ1JiZfPy5hc3luYz09PSExJiZfLmppdGxlc3MhPT0hMD8oaXx8KGk9ZShuLnNoYXBlKSksdj1pKHYsXyksbD9CdShbXSx5LHYsXyxnLHQpOnYpOnIodixfKToodi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im9iamVjdCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDp5LGluc3Q6dH0pLHYpfX0pO2Z1bmN0aW9uIGdzKHQsbixyLG8pe2Zvcihjb25zdCBpIG9mIHQpaWYoaS5pc3N1ZXMubGVuZ3RoPT09MClyZXR1cm4gbi52YWx1ZT1pLnZhbHVlLG47Y29uc3QgZT10LmZpbHRlcihpPT4hVWUoaSkpO3JldHVybiBlLmxlbmd0aD09PTE/KG4udmFsdWU9ZVswXS52YWx1ZSxlWzBdKToobi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6bi52YWx1ZSxpbnN0OnIsZXJyb3JzOnQubWFwKGk9PmkuaXNzdWVzLm1hcChhPT5jZShhLG8sSygpKSkpfSksbil9Y29uc3QgWG49ZCgiJFpvZFVuaW9uIiwodCxuKT0+e0kuaW5pdCh0LG4pLFQodC5fem9kLCJvcHRpbiIsKCk9Pm4ub3B0aW9ucy5zb21lKG89Pm8uX3pvZC5vcHRpbj09PSJvcHRpb25hbCIpPyJvcHRpb25hbCI6dm9pZCAwKSxUKHQuX3pvZCwib3B0b3V0IiwoKT0+bi5vcHRpb25zLnNvbWUobz0+by5fem9kLm9wdG91dD09PSJvcHRpb25hbCIpPyJvcHRpb25hbCI6dm9pZCAwKSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+e2lmKG4ub3B0aW9ucy5ldmVyeShvPT5vLl96b2QudmFsdWVzKSlyZXR1cm4gbmV3IFNldChuLm9wdGlvbnMuZmxhdE1hcChvPT5BcnJheS5mcm9tKG8uX3pvZC52YWx1ZXMpKSl9KSxUKHQuX3pvZCwicGF0dGVybiIsKCk9PntpZihuLm9wdGlvbnMuZXZlcnkobz0+by5fem9kLnBhdHRlcm4pKXtjb25zdCBvPW4ub3B0aW9ucy5tYXAoZT0+ZS5fem9kLnBhdHRlcm4pO3JldHVybiBuZXcgUmVnRXhwKGBeKCR7by5tYXAoZT0+Sm4oZS5zb3VyY2UpKS5qb2luKCJ8Iil9KSRgKX19KTtjb25zdCByPW4ub3B0aW9ucy5sZW5ndGg9PT0xP24ub3B0aW9uc1swXS5fem9kLnJ1bjpudWxsO3QuX3pvZC5wYXJzZT0obyxlKT0+e2lmKHIpcmV0dXJuIHIobyxlKTtsZXQgaT0hMTtjb25zdCBhPVtdO2Zvcihjb25zdCBzIG9mIG4ub3B0aW9ucyl7Y29uc3QgYz1zLl96b2QucnVuKHt2YWx1ZTpvLnZhbHVlLGlzc3VlczpbXX0sZSk7aWYoYyBpbnN0YW5jZW9mIFByb21pc2UpYS5wdXNoKGMpLGk9ITA7ZWxzZXtpZihjLmlzc3Vlcy5sZW5ndGg9PT0wKXJldHVybiBjO2EucHVzaChjKX19cmV0dXJuIGk/UHJvbWlzZS5hbGwoYSkudGhlbihzPT5ncyhzLG8sdCxlKSk6Z3MoYSxvLHQsZSl9fSk7ZnVuY3Rpb24gdnModCxuLHIsbyl7Y29uc3QgZT10LmZpbHRlcihpPT5pLmlzc3Vlcy5sZW5ndGg9PT0wKTtyZXR1cm4gZS5sZW5ndGg9PT0xPyhuLnZhbHVlPWVbMF0udmFsdWUsbik6KGUubGVuZ3RoPT09MD9uLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixpbnB1dDpuLnZhbHVlLGluc3Q6cixlcnJvcnM6dC5tYXAoaT0+aS5pc3N1ZXMubWFwKGE9PmNlKGEsbyxLKCkpKSl9KTpuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixpbnB1dDpuLnZhbHVlLGluc3Q6cixlcnJvcnM6W10saW5jbHVzaXZlOiExfSksbil9Y29uc3QgWHU9ZCgiJFpvZFhvciIsKHQsbik9PntYbi5pbml0KHQsbiksbi5pbmNsdXNpdmU9ITE7Y29uc3Qgcj1uLm9wdGlvbnMubGVuZ3RoPT09MT9uLm9wdGlvbnNbMF0uX3pvZC5ydW46bnVsbDt0Ll96b2QucGFyc2U9KG8sZSk9PntpZihyKXJldHVybiByKG8sZSk7bGV0IGk9ITE7Y29uc3QgYT1bXTtmb3IoY29uc3QgcyBvZiBuLm9wdGlvbnMpe2NvbnN0IGM9cy5fem9kLnJ1bih7dmFsdWU6by52YWx1ZSxpc3N1ZXM6W119LGUpO2MgaW5zdGFuY2VvZiBQcm9taXNlPyhhLnB1c2goYyksaT0hMCk6YS5wdXNoKGMpfXJldHVybiBpP1Byb21pc2UuYWxsKGEpLnRoZW4ocz0+dnMocyxvLHQsZSkpOnZzKGEsbyx0LGUpfX0pLFl1PWQoIiRab2REaXNjcmltaW5hdGVkVW5pb24iLCh0LG4pPT57bi5pbmNsdXNpdmU9ITEsWG4uaW5pdCh0LG4pO2NvbnN0IHI9dC5fem9kLnBhcnNlO1QodC5fem9kLCJwcm9wVmFsdWVzIiwoKT0+e2NvbnN0IGU9e307Zm9yKGNvbnN0IGkgb2Ygbi5vcHRpb25zKXtjb25zdCBhPWkuX3pvZC5wcm9wVmFsdWVzO2lmKCFhfHxPYmplY3Qua2V5cyhhKS5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkaXNjcmltaW5hdGVkIHVuaW9uIG9wdGlvbiBhdCBpbmRleCAiJHtuLm9wdGlvbnMuaW5kZXhPZihpKX0iYCk7Zm9yKGNvbnN0W3MsY11vZiBPYmplY3QuZW50cmllcyhhKSl7ZVtzXXx8KGVbc109bmV3IFNldCk7Zm9yKGNvbnN0IHUgb2YgYyllW3NdLmFkZCh1KX19cmV0dXJuIGV9KTtjb25zdCBvPVR0KCgpPT57Y29uc3QgZT1uLm9wdGlvbnMsaT1uZXcgTWFwO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IHM9YS5fem9kLnByb3BWYWx1ZXM/LltuLmRpc2NyaW1pbmF0b3JdO2lmKCFzfHxzLnNpemU9PT0wKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkaXNjcmltaW5hdGVkIHVuaW9uIG9wdGlvbiBhdCBpbmRleCAiJHtuLm9wdGlvbnMuaW5kZXhPZihhKX0iYCk7Zm9yKGNvbnN0IGMgb2Ygcyl7aWYoaS5oYXMoYykpdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgZGlzY3JpbWluYXRvciB2YWx1ZSAiJHtTdHJpbmcoYyl9ImApO2kuc2V0KGMsYSl9fXJldHVybiBpfSk7dC5fem9kLnBhcnNlPShlLGkpPT57Y29uc3QgYT1lLnZhbHVlO2lmKCFIZShhKSlyZXR1cm4gZS5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDoib2JqZWN0IixpbnB1dDphLGluc3Q6dH0pLGU7Y29uc3Qgcz1vLnZhbHVlLmdldChhPy5bbi5kaXNjcmltaW5hdG9yXSk7cmV0dXJuIHM/cy5fem9kLnJ1bihlLGkpOm4udW5pb25GYWxsYmFja3x8aS5kaXJlY3Rpb249PT0iYmFja3dhcmQiP3IoZSxpKTooZS5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsZXJyb3JzOltdLG5vdGU6Ik5vIG1hdGNoaW5nIGRpc2NyaW1pbmF0b3IiLGRpc2NyaW1pbmF0b3I6bi5kaXNjcmltaW5hdG9yLG9wdGlvbnM6QXJyYXkuZnJvbShvLnZhbHVlLmtleXMoKSksaW5wdXQ6YSxwYXRoOltuLmRpc2NyaW1pbmF0b3JdLGluc3Q6dH0pLGUpfX0pLFF1PWQoIiRab2RJbnRlcnNlY3Rpb24iLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlLGk9bi5sZWZ0Ll96b2QucnVuKHt2YWx1ZTplLGlzc3VlczpbXX0sbyksYT1uLnJpZ2h0Ll96b2QucnVuKHt2YWx1ZTplLGlzc3VlczpbXX0sbyk7cmV0dXJuIGkgaW5zdGFuY2VvZiBQcm9taXNlfHxhIGluc3RhbmNlb2YgUHJvbWlzZT9Qcm9taXNlLmFsbChbaSxhXSkudGhlbigoW2MsdV0pPT5ocyhyLGMsdSkpOmhzKHIsaSxhKX19KTtmdW5jdGlvbiBvaSh0LG4pe2lmKHQ9PT1uKXJldHVybnt2YWxpZDohMCxkYXRhOnR9O2lmKHQgaW5zdGFuY2VvZiBEYXRlJiZuIGluc3RhbmNlb2YgRGF0ZSYmK3Q9PStuKXJldHVybnt2YWxpZDohMCxkYXRhOnR9O2lmKFBlKHQpJiZQZShuKSl7Y29uc3Qgcj1PYmplY3Qua2V5cyhuKSxvPU9iamVjdC5rZXlzKHQpLmZpbHRlcihpPT5yLmluZGV4T2YoaSkhPT0tMSksZT17Li4udCwuLi5ufTtmb3IoY29uc3QgaSBvZiBvKXtjb25zdCBhPW9pKHRbaV0sbltpXSk7aWYoIWEudmFsaWQpcmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltpLC4uLmEubWVyZ2VFcnJvclBhdGhdfTtlW2ldPWEuZGF0YX1yZXR1cm57dmFsaWQ6ITAsZGF0YTplfX1pZihBcnJheS5pc0FycmF5KHQpJiZBcnJheS5pc0FycmF5KG4pKXtpZih0Lmxlbmd0aCE9PW4ubGVuZ3RoKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbXX07Y29uc3Qgcj1bXTtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7Y29uc3QgZT10W29dLGk9bltvXSxhPW9pKGUsaSk7aWYoIWEudmFsaWQpcmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltvLC4uLmEubWVyZ2VFcnJvclBhdGhdfTtyLnB1c2goYS5kYXRhKX1yZXR1cm57dmFsaWQ6ITAsZGF0YTpyfX1yZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W119fWZ1bmN0aW9uIGhzKHQsbixyKXtjb25zdCBvPW5ldyBNYXA7bGV0IGU7Zm9yKGNvbnN0IHMgb2Ygbi5pc3N1ZXMpaWYocy5jb2RlPT09InVucmVjb2duaXplZF9rZXlzIil7ZT8/KGU9cyk7Zm9yKGNvbnN0IGMgb2Ygcy5rZXlzKW8uaGFzKGMpfHxvLnNldChjLHt9KSxvLmdldChjKS5sPSEwfWVsc2UgdC5pc3N1ZXMucHVzaChzKTtmb3IoY29uc3QgcyBvZiByLmlzc3VlcylpZihzLmNvZGU9PT0idW5yZWNvZ25pemVkX2tleXMiKWZvcihjb25zdCBjIG9mIHMua2V5cylvLmhhcyhjKXx8by5zZXQoYyx7fSksby5nZXQoYykucj0hMDtlbHNlIHQuaXNzdWVzLnB1c2gocyk7Y29uc3QgaT1bLi4ub10uZmlsdGVyKChbLHNdKT0+cy5sJiZzLnIpLm1hcCgoW3NdKT0+cyk7aWYoaS5sZW5ndGgmJmUmJnQuaXNzdWVzLnB1c2goey4uLmUsa2V5czppfSksVWUodCkpcmV0dXJuIHQ7Y29uc3QgYT1vaShuLnZhbHVlLHIudmFsdWUpO2lmKCFhLnZhbGlkKXRocm93IG5ldyBFcnJvcihgVW5tZXJnYWJsZSBpbnRlcnNlY3Rpb24uIEVycm9yIHBhdGg6ICR7SlNPTi5zdHJpbmdpZnkoYS5tZXJnZUVycm9yUGF0aCl9YCk7cmV0dXJuIHQudmFsdWU9YS5kYXRhLHR9Y29uc3QgRWk9ZCgiJFpvZFR1cGxlIiwodCxuKT0+e0kuaW5pdCh0LG4pO2NvbnN0IHI9bi5pdGVtczt0Ll96b2QucGFyc2U9KG8sZSk9Pntjb25zdCBpPW8udmFsdWU7aWYoIUFycmF5LmlzQXJyYXkoaSkpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2lucHV0OmksaW5zdDp0LGV4cGVjdGVkOiJ0dXBsZSIsY29kZToiaW52YWxpZF90eXBlIn0pLG87by52YWx1ZT1bXTtjb25zdCBhPVtdLHM9X3Mociwib3B0aW4iKSxjPV9zKHIsIm9wdG91dCIpO2lmKCFuLnJlc3Qpe2lmKGkubGVuZ3RoPHMpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2NvZGU6InRvb19zbWFsbCIsbWluaW11bTpzLGluY2x1c2l2ZTohMCxpbnB1dDppLGluc3Q6dCxvcmlnaW46ImFycmF5In0pLG87aS5sZW5ndGg+ci5sZW5ndGgmJm8uaXNzdWVzLnB1c2goe2NvZGU6InRvb19iaWciLG1heGltdW06ci5sZW5ndGgsaW5jbHVzaXZlOiEwLGlucHV0OmksaW5zdDp0LG9yaWdpbjoiYXJyYXkifSl9Y29uc3QgdT1uZXcgQXJyYXkoci5sZW5ndGgpO2ZvcihsZXQgbD0wO2w8ci5sZW5ndGg7bCsrKXtjb25zdCBnPXJbbF0uX3pvZC5ydW4oe3ZhbHVlOmlbbF0saXNzdWVzOltdfSxlKTtnIGluc3RhbmNlb2YgUHJvbWlzZT9hLnB1c2goZy50aGVuKHY9Pnt1W2xdPXZ9KSk6dVtsXT1nfWlmKG4ucmVzdCl7bGV0IGw9ci5sZW5ndGgtMTtjb25zdCBnPWkuc2xpY2Uoci5sZW5ndGgpO2Zvcihjb25zdCB2IG9mIGcpe2wrKztjb25zdCBfPW4ucmVzdC5fem9kLnJ1bih7dmFsdWU6dixpc3N1ZXM6W119LGUpO18gaW5zdGFuY2VvZiBQcm9taXNlP2EucHVzaChfLnRoZW4oeT0+JHMoeSxvLGwpKSk6JHMoXyxvLGwpfX1yZXR1cm4gYS5sZW5ndGg/UHJvbWlzZS5hbGwoYSkudGhlbigoKT0+YnModSxvLHIsaSxjKSk6YnModSxvLHIsaSxjKX19KTtmdW5jdGlvbiBfcyh0LG4pe2ZvcihsZXQgcj10Lmxlbmd0aC0xO3I+PTA7ci0tKWlmKHRbcl0uX3pvZFtuXSE9PSJvcHRpb25hbCIpcmV0dXJuIHIrMTtyZXR1cm4gMH1mdW5jdGlvbiAkcyh0LG4scil7dC5pc3N1ZXMubGVuZ3RoJiZuLmlzc3Vlcy5wdXNoKC4uLnBlKHIsdC5pc3N1ZXMpKSxuLnZhbHVlW3JdPXQudmFsdWV9ZnVuY3Rpb24gYnModCxuLHIsbyxlKXtmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKyl7Y29uc3QgYT10W2ldLHM9aTxvLmxlbmd0aDtpZihhLmlzc3Vlcy5sZW5ndGgpe2lmKCFzJiZpPj1lKXtuLnZhbHVlLmxlbmd0aD1pO2JyZWFrfW4uaXNzdWVzLnB1c2goLi4ucGUoaSxhLmlzc3VlcykpfW4udmFsdWVbaV09YS52YWx1ZX1mb3IobGV0IGk9bi52YWx1ZS5sZW5ndGgtMTtpPj1vLmxlbmd0aCYmKHJbaV0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiJiZuLnZhbHVlW2ldPT09dm9pZCAwKTtpLS0pbi52YWx1ZS5sZW5ndGg9aTtyZXR1cm4gbn1jb25zdCBlbD1kKCIkWm9kUmVjb3JkIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtpZighUGUoZSkpcmV0dXJuIHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJyZWNvcmQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyO2NvbnN0IGk9W10sYT1uLmtleVR5cGUuX3pvZC52YWx1ZXM7aWYoYSl7ci52YWx1ZT17fTtjb25zdCBzPW5ldyBTZXQ7Zm9yKGNvbnN0IHUgb2YgYSlpZih0eXBlb2YgdT09InN0cmluZyJ8fHR5cGVvZiB1PT0ibnVtYmVyInx8dHlwZW9mIHU9PSJzeW1ib2wiKXtzLmFkZCh0eXBlb2YgdT09Im51bWJlciI/dS50b1N0cmluZygpOnUpO2NvbnN0IGw9bi5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTp1LGlzc3VlczpbXX0sbyk7aWYobCBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7aWYobC5pc3N1ZXMubGVuZ3RoKXtyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJyZWNvcmQiLGlzc3VlczpsLmlzc3Vlcy5tYXAoXz0+Y2UoXyxvLEsoKSkpLGlucHV0OnUscGF0aDpbdV0saW5zdDp0fSk7Y29udGludWV9Y29uc3QgZz1sLnZhbHVlLHY9bi52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOmVbdV0saXNzdWVzOltdfSxvKTt2IGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2godi50aGVuKF89PntfLmlzc3Vlcy5sZW5ndGgmJnIuaXNzdWVzLnB1c2goLi4ucGUodSxfLmlzc3VlcykpLHIudmFsdWVbZ109Xy52YWx1ZX0pKToodi5pc3N1ZXMubGVuZ3RoJiZyLmlzc3Vlcy5wdXNoKC4uLnBlKHUsdi5pc3N1ZXMpKSxyLnZhbHVlW2ddPXYudmFsdWUpfWxldCBjO2Zvcihjb25zdCB1IGluIGUpcy5oYXModSl8fChjPWM/P1tdLGMucHVzaCh1KSk7YyYmYy5sZW5ndGg+MCYmci5pc3N1ZXMucHVzaCh7Y29kZToidW5yZWNvZ25pemVkX2tleXMiLGlucHV0OmUsaW5zdDp0LGtleXM6Y30pfWVsc2V7ci52YWx1ZT17fTtmb3IoY29uc3QgcyBvZiBSZWZsZWN0Lm93bktleXMoZSkpe2lmKHM9PT0iX19wcm90b19fInx8IU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHMpKWNvbnRpbnVlO2xldCBjPW4ua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6cyxpc3N1ZXM6W119LG8pO2lmKGMgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgc2NoZW1hcyBub3Qgc3VwcG9ydGVkIGluIG9iamVjdCBrZXlzIGN1cnJlbnRseSIpO2lmKHR5cGVvZiBzPT0ic3RyaW5nIiYmVGkudGVzdChzKSYmYy5pc3N1ZXMubGVuZ3RoKXtjb25zdCBnPW4ua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6TnVtYmVyKHMpLGlzc3VlczpbXX0sbyk7aWYoZyBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7Zy5pc3N1ZXMubGVuZ3RoPT09MCYmKGM9Zyl9aWYoYy5pc3N1ZXMubGVuZ3RoKXtuLm1vZGU9PT0ibG9vc2UiP3IudmFsdWVbc109ZVtzXTpyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJyZWNvcmQiLGlzc3VlczpjLmlzc3Vlcy5tYXAoZz0+Y2UoZyxvLEsoKSkpLGlucHV0OnMscGF0aDpbc10saW5zdDp0fSk7Y29udGludWV9Y29uc3QgbD1uLnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6ZVtzXSxpc3N1ZXM6W119LG8pO2wgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChsLnRoZW4oZz0+e2cuaXNzdWVzLmxlbmd0aCYmci5pc3N1ZXMucHVzaCguLi5wZShzLGcuaXNzdWVzKSksci52YWx1ZVtjLnZhbHVlXT1nLnZhbHVlfSkpOihsLmlzc3Vlcy5sZW5ndGgmJnIuaXNzdWVzLnB1c2goLi4ucGUocyxsLmlzc3VlcykpLHIudmFsdWVbYy52YWx1ZV09bC52YWx1ZSl9fXJldHVybiBpLmxlbmd0aD9Qcm9taXNlLmFsbChpKS50aGVuKCgpPT5yKTpyfX0pLHRsPWQoIiRab2RNYXAiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO2lmKCEoZSBpbnN0YW5jZW9mIE1hcCkpcmV0dXJuIHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJtYXAiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyO2NvbnN0IGk9W107ci52YWx1ZT1uZXcgTWFwO2Zvcihjb25zdFthLHNdb2YgZSl7Y29uc3QgYz1uLmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOmEsaXNzdWVzOltdfSxvKSx1PW4udmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyk7YyBpbnN0YW5jZW9mIFByb21pc2V8fHUgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChQcm9taXNlLmFsbChbYyx1XSkudGhlbigoW2wsZ10pPT57eXMobCxnLHIsYSxlLHQsbyl9KSk6eXMoYyx1LHIsYSxlLHQsbyl9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9PnIpOnJ9fSk7ZnVuY3Rpb24geXModCxuLHIsbyxlLGksYSl7dC5pc3N1ZXMubGVuZ3RoJiYoWm4uaGFzKHR5cGVvZiBvKT9yLmlzc3Vlcy5wdXNoKC4uLnBlKG8sdC5pc3N1ZXMpKTpyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJtYXAiLGlucHV0OmUsaW5zdDppLGlzc3Vlczp0Lmlzc3Vlcy5tYXAocz0+Y2UocyxhLEsoKSkpfSkpLG4uaXNzdWVzLmxlbmd0aCYmKFpuLmhhcyh0eXBlb2Ygbyk/ci5pc3N1ZXMucHVzaCguLi5wZShvLG4uaXNzdWVzKSk6ci5pc3N1ZXMucHVzaCh7b3JpZ2luOiJtYXAiLGNvZGU6ImludmFsaWRfZWxlbWVudCIsaW5wdXQ6ZSxpbnN0Omksa2V5Om8saXNzdWVzOm4uaXNzdWVzLm1hcChzPT5jZShzLGEsSygpKSl9KSksci52YWx1ZS5zZXQodC52YWx1ZSxuLnZhbHVlKX1jb25zdCBubD1kKCIkWm9kU2V0IiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtpZighKGUgaW5zdGFuY2VvZiBTZXQpKXJldHVybiByLmlzc3Vlcy5wdXNoKHtpbnB1dDplLGluc3Q6dCxleHBlY3RlZDoic2V0Iixjb2RlOiJpbnZhbGlkX3R5cGUifSkscjtjb25zdCBpPVtdO3IudmFsdWU9bmV3IFNldDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBzPW4udmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTphLGlzc3VlczpbXX0sbyk7cyBpbnN0YW5jZW9mIFByb21pc2U/aS5wdXNoKHMudGhlbihjPT5rcyhjLHIpKSk6a3MocyxyKX1yZXR1cm4gaS5sZW5ndGg/UHJvbWlzZS5hbGwoaSkudGhlbigoKT0+cik6cn19KTtmdW5jdGlvbiBrcyh0LG4pe3QuaXNzdWVzLmxlbmd0aCYmbi5pc3N1ZXMucHVzaCguLi50Lmlzc3Vlcyksbi52YWx1ZS5hZGQodC52YWx1ZSl9Y29uc3Qgcmw9ZCgiJFpvZEVudW0iLCh0LG4pPT57SS5pbml0KHQsbik7Y29uc3Qgcj1kaShuLmVudHJpZXMpLG89bmV3IFNldChyKTt0Ll96b2QudmFsdWVzPW8sdC5fem9kLnBhdHRlcm49bmV3IFJlZ0V4cChgXigke3IuZmlsdGVyKGU9PlpuLmhhcyh0eXBlb2YgZSkpLm1hcChlPT50eXBlb2YgZT09InN0cmluZyI/JGUoZSk6ZS50b1N0cmluZygpKS5qb2luKCJ8Iil9KSRgKSx0Ll96b2QucGFyc2U9KGUsaSk9Pntjb25zdCBhPWUudmFsdWU7cmV0dXJuIG8uaGFzKGEpfHxlLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3ZhbHVlIix2YWx1ZXM6cixpbnB1dDphLGluc3Q6dH0pLGV9fSksaWw9ZCgiJFpvZExpdGVyYWwiLCh0LG4pPT57aWYoSS5pbml0KHQsbiksbi52YWx1ZXMubGVuZ3RoPT09MCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBjcmVhdGUgbGl0ZXJhbCBzY2hlbWEgd2l0aCBubyB2YWxpZCB2YWx1ZXMiKTtjb25zdCByPW5ldyBTZXQobi52YWx1ZXMpO3QuX3pvZC52YWx1ZXM9cix0Ll96b2QucGF0dGVybj1uZXcgUmVnRXhwKGBeKCR7bi52YWx1ZXMubWFwKG89PnR5cGVvZiBvPT0ic3RyaW5nIj8kZShvKTpvPyRlKG8udG9TdHJpbmcoKSk6U3RyaW5nKG8pKS5qb2luKCJ8Iil9KSRgKSx0Ll96b2QucGFyc2U9KG8sZSk9Pntjb25zdCBpPW8udmFsdWU7cmV0dXJuIHIuaGFzKGkpfHxvLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3ZhbHVlIix2YWx1ZXM6bi52YWx1ZXMsaW5wdXQ6aSxpbnN0OnR9KSxvfX0pLG9sPWQoIiRab2RGaWxlIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtyZXR1cm4gZSBpbnN0YW5jZW9mIEZpbGV8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJmaWxlIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscn19KSxhbD1kKCIkWm9kVHJhbnNmb3JtIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5vcHRpbj0ib3B0aW9uYWwiLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIil0aHJvdyBuZXcgRm4odC5jb25zdHJ1Y3Rvci5uYW1lKTtjb25zdCBlPW4udHJhbnNmb3JtKHIudmFsdWUscik7aWYoby5hc3luYylyZXR1cm4oZSBpbnN0YW5jZW9mIFByb21pc2U/ZTpQcm9taXNlLnJlc29sdmUoZSkpLnRoZW4oYT0+KHIudmFsdWU9YSxyLmZhbGxiYWNrPSEwLHIpKTtpZihlIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgamU7cmV0dXJuIHIudmFsdWU9ZSxyLmZhbGxiYWNrPSEwLHJ9fSk7ZnVuY3Rpb24gU3ModCxuKXtyZXR1cm4gbj09PXZvaWQgMCYmKHQuaXNzdWVzLmxlbmd0aHx8dC5mYWxsYmFjayk/e2lzc3VlczpbXSx2YWx1ZTp2b2lkIDB9OnR9Y29uc3QgWmk9ZCgiJFpvZE9wdGlvbmFsIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5vcHRpbj0ib3B0aW9uYWwiLHQuX3pvZC5vcHRvdXQ9Im9wdGlvbmFsIixUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXM/bmV3IFNldChbLi4ubi5pbm5lclR5cGUuX3pvZC52YWx1ZXMsdm9pZCAwXSk6dm9pZCAwKSxUKHQuX3pvZCwicGF0dGVybiIsKCk9Pntjb25zdCByPW4uaW5uZXJUeXBlLl96b2QucGF0dGVybjtyZXR1cm4gcj9uZXcgUmVnRXhwKGBeKCR7Sm4oci5zb3VyY2UpfSk/JGApOnZvaWQgMH0pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG4uaW5uZXJUeXBlLl96b2Qub3B0aW49PT0ib3B0aW9uYWwiKXtjb25zdCBlPXIudmFsdWUsaT1uLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO3JldHVybiBpIGluc3RhbmNlb2YgUHJvbWlzZT9pLnRoZW4oYT0+U3MoYSxlKSk6U3MoaSxlKX1yZXR1cm4gci52YWx1ZT09PXZvaWQgMD9yOm4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyl9fSksc2w9ZCgiJFpvZEV4YWN0T3B0aW9uYWwiLCh0LG4pPT57WmkuaW5pdCh0LG4pLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyksVCh0Ll96b2QsInBhdHRlcm4iLCgpPT5uLmlubmVyVHlwZS5fem9kLnBhdHRlcm4pLHQuX3pvZC5wYXJzZT0ocixvKT0+bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKX0pLGNsPWQoIiRab2ROdWxsYWJsZSIsKHQsbik9PntJLmluaXQodCxuKSxUKHQuX3pvZCwib3B0aW4iLCgpPT5uLmlubmVyVHlwZS5fem9kLm9wdGluKSxUKHQuX3pvZCwib3B0b3V0IiwoKT0+bi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLFQodC5fem9kLCJwYXR0ZXJuIiwoKT0+e2NvbnN0IHI9bi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuO3JldHVybiByP25ldyBSZWdFeHAoYF4oJHtKbihyLnNvdXJjZSl9fG51bGwpJGApOnZvaWQgMH0pLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcz9uZXcgU2V0KFsuLi5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyxudWxsXSk6dm9pZCAwKSx0Ll96b2QucGFyc2U9KHIsbyk9PnIudmFsdWU9PT1udWxsP3I6bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKX0pLHVsPWQoIiRab2REZWZhdWx0IiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5vcHRpbj0ib3B0aW9uYWwiLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyksdC5fem9kLnBhcnNlPShyLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXJldHVybiBuLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO2lmKHIudmFsdWU9PT12b2lkIDApcmV0dXJuIHIudmFsdWU9bi5kZWZhdWx0VmFsdWUscjtjb25zdCBlPW4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT53cyhpLG4pKTp3cyhlLG4pfX0pO2Z1bmN0aW9uIHdzKHQsbil7cmV0dXJuIHQudmFsdWU9PT12b2lkIDAmJih0LnZhbHVlPW4uZGVmYXVsdFZhbHVlKSx0fWNvbnN0IGxsPWQoIiRab2RQcmVmYXVsdCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2Qub3B0aW49Im9wdGlvbmFsIixUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLHQuX3pvZC5wYXJzZT0ocixvKT0+KG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkInx8ci52YWx1ZT09PXZvaWQgMCYmKHIudmFsdWU9bi5kZWZhdWx0VmFsdWUpLG4uaW5uZXJUeXBlLl96b2QucnVuKHIsbykpfSksZGw9ZCgiJFpvZE5vbk9wdGlvbmFsIiwodCxuKT0+e0kuaW5pdCh0LG4pLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT57Y29uc3Qgcj1uLmlubmVyVHlwZS5fem9kLnZhbHVlcztyZXR1cm4gcj9uZXcgU2V0KFsuLi5yXS5maWx0ZXIobz0+byE9PXZvaWQgMCkpOnZvaWQgMH0pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PklzKGksdCkpOklzKGUsdCl9fSk7ZnVuY3Rpb24gSXModCxuKXtyZXR1cm4hdC5pc3N1ZXMubGVuZ3RoJiZ0LnZhbHVlPT09dm9pZCAwJiZ0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJub25vcHRpb25hbCIsaW5wdXQ6dC52YWx1ZSxpbnN0Om59KSx0fWNvbnN0IG1sPWQoIiRab2RTdWNjZXNzIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIil0aHJvdyBuZXcgRm4oIlpvZFN1Y2Nlc3MiKTtjb25zdCBlPW4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT4oci52YWx1ZT1pLmlzc3Vlcy5sZW5ndGg9PT0wLHIpKTooci52YWx1ZT1lLmlzc3Vlcy5sZW5ndGg9PT0wLHIpfX0pLHBsPWQoIiRab2RDYXRjaCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2Qub3B0aW49Im9wdGlvbmFsIixUKHQuX3pvZCwib3B0b3V0IiwoKT0+bi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyksdC5fem9kLnBhcnNlPShyLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXJldHVybiBuLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO2NvbnN0IGU9bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PihyLnZhbHVlPWkudmFsdWUsaS5pc3N1ZXMubGVuZ3RoJiYoci52YWx1ZT1uLmNhdGNoVmFsdWUoey4uLnIsZXJyb3I6e2lzc3VlczppLmlzc3Vlcy5tYXAoYT0+Y2UoYSxvLEsoKSkpfSxpbnB1dDpyLnZhbHVlfSksci5pc3N1ZXM9W10sci5mYWxsYmFjaz0hMCkscikpOihyLnZhbHVlPWUudmFsdWUsZS5pc3N1ZXMubGVuZ3RoJiYoci52YWx1ZT1uLmNhdGNoVmFsdWUoey4uLnIsZXJyb3I6e2lzc3VlczplLmlzc3Vlcy5tYXAoaT0+Y2UoaSxvLEsoKSkpfSxpbnB1dDpyLnZhbHVlfSksci5pc3N1ZXM9W10sci5mYWxsYmFjaz0hMCkscil9fSksZmw9ZCgiJFpvZE5hTiIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9PigodHlwZW9mIHIudmFsdWUhPSJudW1iZXIifHwhTnVtYmVyLmlzTmFOKHIudmFsdWUpKSYmci5pc3N1ZXMucHVzaCh7aW5wdXQ6ci52YWx1ZSxpbnN0OnQsZXhwZWN0ZWQ6Im5hbiIsY29kZToiaW52YWxpZF90eXBlIn0pLHIpfSksUmk9ZCgiJFpvZFBpcGUiLCh0LG4pPT57SS5pbml0KHQsbiksVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW4uX3pvZC52YWx1ZXMpLFQodC5fem9kLCJvcHRpbiIsKCk9Pm4uaW4uX3pvZC5vcHRpbiksVCh0Ll96b2QsIm9wdG91dCIsKCk9Pm4ub3V0Ll96b2Qub3B0b3V0KSxUKHQuX3pvZCwicHJvcFZhbHVlcyIsKCk9Pm4uaW4uX3pvZC5wcm9wVmFsdWVzKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpe2NvbnN0IGk9bi5vdXQuX3pvZC5ydW4ocixvKTtyZXR1cm4gaSBpbnN0YW5jZW9mIFByb21pc2U/aS50aGVuKGE9PlBuKGEsbi5pbixvKSk6UG4oaSxuLmluLG8pfWNvbnN0IGU9bi5pbi5fem9kLnJ1bihyLG8pO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4oaT0+UG4oaSxuLm91dCxvKSk6UG4oZSxuLm91dCxvKX19KTtmdW5jdGlvbiBQbih0LG4scil7cmV0dXJuIHQuaXNzdWVzLmxlbmd0aD8odC5hYm9ydGVkPSEwLHQpOm4uX3pvZC5ydW4oe3ZhbHVlOnQudmFsdWUsaXNzdWVzOnQuaXNzdWVzLGZhbGxiYWNrOnQuZmFsbGJhY2t9LHIpfWNvbnN0IENpPWQoIiRab2RDb2RlYyIsKHQsbik9PntJLmluaXQodCxuKSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbi5fem9kLnZhbHVlcyksVCh0Ll96b2QsIm9wdGluIiwoKT0+bi5pbi5fem9kLm9wdGluKSxUKHQuX3pvZCwib3B0b3V0IiwoKT0+bi5vdXQuX3pvZC5vcHRvdXQpLFQodC5fem9kLCJwcm9wVmFsdWVzIiwoKT0+bi5pbi5fem9kLnByb3BWYWx1ZXMpLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKChvLmRpcmVjdGlvbnx8ImZvcndhcmQiKT09PSJmb3J3YXJkIil7Y29uc3QgaT1uLmluLl96b2QucnVuKHIsbyk7cmV0dXJuIGkgaW5zdGFuY2VvZiBQcm9taXNlP2kudGhlbihhPT5PbihhLG4sbykpOk9uKGksbixvKX1lbHNle2NvbnN0IGk9bi5vdXQuX3pvZC5ydW4ocixvKTtyZXR1cm4gaSBpbnN0YW5jZW9mIFByb21pc2U/aS50aGVuKGE9Pk9uKGEsbixvKSk6T24oaSxuLG8pfX19KTtmdW5jdGlvbiBPbih0LG4scil7aWYodC5pc3N1ZXMubGVuZ3RoKXJldHVybiB0LmFib3J0ZWQ9ITAsdDtpZigoci5kaXJlY3Rpb258fCJmb3J3YXJkIik9PT0iZm9yd2FyZCIpe2NvbnN0IGU9bi50cmFuc2Zvcm0odC52YWx1ZSx0KTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PkRuKHQsaSxuLm91dCxyKSk6RG4odCxlLG4ub3V0LHIpfWVsc2V7Y29uc3QgZT1uLnJldmVyc2VUcmFuc2Zvcm0odC52YWx1ZSx0KTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PkRuKHQsaSxuLmluLHIpKTpEbih0LGUsbi5pbixyKX19ZnVuY3Rpb24gRG4odCxuLHIsbyl7cmV0dXJuIHQuaXNzdWVzLmxlbmd0aD8odC5hYm9ydGVkPSEwLHQpOnIuX3pvZC5ydW4oe3ZhbHVlOm4saXNzdWVzOnQuaXNzdWVzfSxvKX1jb25zdCBnbD1kKCIkWm9kUHJlcHJvY2VzcyIsKHQsbik9PntSaS5pbml0KHQsbil9KSx2bD1kKCIkWm9kUmVhZG9ubHkiLCh0LG4pPT57SS5pbml0KHQsbiksVCh0Ll96b2QsInByb3BWYWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnByb3BWYWx1ZXMpLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyksVCh0Ll96b2QsIm9wdGluIiwoKT0+bi5pbm5lclR5cGU/Ll96b2Q/Lm9wdGluKSxUKHQuX3pvZCwib3B0b3V0IiwoKT0+bi5pbm5lclR5cGU/Ll96b2Q/Lm9wdG91dCksdC5fem9kLnBhcnNlPShyLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXJldHVybiBuLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO2NvbnN0IGU9bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKHhzKTp4cyhlKX19KTtmdW5jdGlvbiB4cyh0KXtyZXR1cm4gdC52YWx1ZT1PYmplY3QuZnJlZXplKHQudmFsdWUpLHR9Y29uc3QgaGw9ZCgiJFpvZFRlbXBsYXRlTGl0ZXJhbCIsKHQsbik9PntJLmluaXQodCxuKTtjb25zdCByPVtdO2Zvcihjb25zdCBvIG9mIG4ucGFydHMpaWYodHlwZW9mIG89PSJvYmplY3QiJiZvIT09bnVsbCl7aWYoIW8uX3pvZC5wYXR0ZXJuKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQsIG5vIHBhdHRlcm4gZm91bmQ6ICR7Wy4uLm8uX3pvZC50cmFpdHNdLnNoaWZ0KCl9YCk7Y29uc3QgZT1vLl96b2QucGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cD9vLl96b2QucGF0dGVybi5zb3VyY2U6by5fem9kLnBhdHRlcm47aWYoIWUpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydDogJHtvLl96b2QudHJhaXRzfWApO2NvbnN0IGk9ZS5zdGFydHNXaXRoKCJeIik/MTowLGE9ZS5lbmRzV2l0aCgiJCIpP2UubGVuZ3RoLTE6ZS5sZW5ndGg7ci5wdXNoKGUuc2xpY2UoaSxhKSl9ZWxzZSBpZihvPT09bnVsbHx8SHMuaGFzKHR5cGVvZiBvKSlyLnB1c2goJGUoYCR7b31gKSk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGVtcGxhdGUgbGl0ZXJhbCBwYXJ0OiAke299YCk7dC5fem9kLnBhdHRlcm49bmV3IFJlZ0V4cChgXiR7ci5qb2luKCIiKX0kYCksdC5fem9kLnBhcnNlPShvLGUpPT50eXBlb2Ygby52YWx1ZSE9InN0cmluZyI/KG8uaXNzdWVzLnB1c2goe2lucHV0Om8udmFsdWUsaW5zdDp0LGV4cGVjdGVkOiJzdHJpbmciLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxvKToodC5fem9kLnBhdHRlcm4ubGFzdEluZGV4PTAsdC5fem9kLnBhdHRlcm4udGVzdChvLnZhbHVlKXx8by5pc3N1ZXMucHVzaCh7aW5wdXQ6by52YWx1ZSxpbnN0OnQsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDpuLmZvcm1hdD8/InRlbXBsYXRlX2xpdGVyYWwiLHBhdHRlcm46dC5fem9kLnBhdHRlcm4uc291cmNlfSksbyl9KSxfbD1kKCIkWm9kRnVuY3Rpb24iLCh0LG4pPT4oSS5pbml0KHQsbiksdC5fZGVmPW4sdC5fem9kLmRlZj1uLHQuaW1wbGVtZW50PXI9PntpZih0eXBlb2YgciE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoImltcGxlbWVudCgpIG11c3QgYmUgY2FsbGVkIHdpdGggYSBmdW5jdGlvbiIpO3JldHVybiBmdW5jdGlvbiguLi5vKXtjb25zdCBlPXQuX2RlZi5pbnB1dD9yaSh0Ll9kZWYuaW5wdXQsbyk6byxpPVJlZmxlY3QuYXBwbHkocix0aGlzLGUpO3JldHVybiB0Ll9kZWYub3V0cHV0P3JpKHQuX2RlZi5vdXRwdXQsaSk6aX19LHQuaW1wbGVtZW50QXN5bmM9cj0+e2lmKHR5cGVvZiByIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW1wbGVtZW50QXN5bmMoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24iKTtyZXR1cm4gYXN5bmMgZnVuY3Rpb24oLi4ubyl7Y29uc3QgZT10Ll9kZWYuaW5wdXQ/YXdhaXQgaWkodC5fZGVmLmlucHV0LG8pOm8saT1hd2FpdCBSZWZsZWN0LmFwcGx5KHIsdGhpcyxlKTtyZXR1cm4gdC5fZGVmLm91dHB1dD9hd2FpdCBpaSh0Ll9kZWYub3V0cHV0LGkpOml9fSx0Ll96b2QucGFyc2U9KHIsbyk9PnR5cGVvZiByLnZhbHVlIT0iZnVuY3Rpb24iPyhyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJmdW5jdGlvbiIsaW5wdXQ6ci52YWx1ZSxpbnN0OnR9KSxyKToodC5fZGVmLm91dHB1dCYmdC5fZGVmLm91dHB1dC5fem9kLmRlZi50eXBlPT09InByb21pc2UiP3IudmFsdWU9dC5pbXBsZW1lbnRBc3luYyhyLnZhbHVlKTpyLnZhbHVlPXQuaW1wbGVtZW50KHIudmFsdWUpLHIpLHQuaW5wdXQ9KC4uLnIpPT57Y29uc3Qgbz10LmNvbnN0cnVjdG9yO3JldHVybiBBcnJheS5pc0FycmF5KHJbMF0pP25ldyBvKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6bmV3IEVpKHt0eXBlOiJ0dXBsZSIsaXRlbXM6clswXSxyZXN0OnJbMV19KSxvdXRwdXQ6dC5fZGVmLm91dHB1dH0pOm5ldyBvKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6clswXSxvdXRwdXQ6dC5fZGVmLm91dHB1dH0pfSx0Lm91dHB1dD1yPT57Y29uc3Qgbz10LmNvbnN0cnVjdG9yO3JldHVybiBuZXcgbyh7dHlwZToiZnVuY3Rpb24iLGlucHV0OnQuX2RlZi5pbnB1dCxvdXRwdXQ6cn0pfSx0KSksJGw9ZCgiJFpvZFByb21pc2UiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT5Qcm9taXNlLnJlc29sdmUoci52YWx1ZSkudGhlbihlPT5uLmlubmVyVHlwZS5fem9kLnJ1bih7dmFsdWU6ZSxpc3N1ZXM6W119LG8pKX0pLGJsPWQoIiRab2RMYXp5IiwodCxuKT0+e0kuaW5pdCh0LG4pLFQodC5fem9kLCJpbm5lclR5cGUiLCgpPT57Y29uc3Qgcj1uO3JldHVybiByLl9jYWNoZWRJbm5lcnx8KHIuX2NhY2hlZElubmVyPW4uZ2V0dGVyKCkpLHIuX2NhY2hlZElubmVyfSksVCh0Ll96b2QsInBhdHRlcm4iLCgpPT50Ll96b2QuaW5uZXJUeXBlPy5fem9kPy5wYXR0ZXJuKSxUKHQuX3pvZCwicHJvcFZhbHVlcyIsKCk9PnQuX3pvZC5pbm5lclR5cGU/Ll96b2Q/LnByb3BWYWx1ZXMpLFQodC5fem9kLCJvcHRpbiIsKCk9PnQuX3pvZC5pbm5lclR5cGU/Ll96b2Q/Lm9wdGluPz92b2lkIDApLFQodC5fem9kLCJvcHRvdXQiLCgpPT50Ll96b2QuaW5uZXJUeXBlPy5fem9kPy5vcHRvdXQ/P3ZvaWQgMCksdC5fem9kLnBhcnNlPShyLG8pPT50Ll96b2QuaW5uZXJUeXBlLl96b2QucnVuKHIsbyl9KSx5bD1kKCIkWm9kQ3VzdG9tIiwodCxuKT0+e0YuaW5pdCh0LG4pLEkuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+cix0Ll96b2QuY2hlY2s9cj0+e2NvbnN0IG89ci52YWx1ZSxlPW4uZm4obyk7aWYoZSBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIGUudGhlbihpPT56cyhpLHIsbyx0KSk7enMoZSxyLG8sdCl9fSk7ZnVuY3Rpb24genModCxuLHIsbyl7aWYoIXQpe2NvbnN0IGU9e2NvZGU6ImN1c3RvbSIsaW5wdXQ6cixpbnN0Om8scGF0aDpbLi4uby5fem9kLmRlZi5wYXRoPz9bXV0sY29udGludWU6IW8uX3pvZC5kZWYuYWJvcnR9O28uX3pvZC5kZWYucGFyYW1zJiYoZS5wYXJhbXM9by5fem9kLmRlZi5wYXJhbXMpLG4uaXNzdWVzLnB1c2goVmUoZSkpfX1jb25zdCBQcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi2K3YsdmBIix2ZXJiOiLYo9mGINmK2K3ZiNmKIn0sZmlsZTp7dW5pdDoi2KjYp9mK2KoiLHZlcmI6Itij2YYg2YrYrdmI2YoifSxhcnJheTp7dW5pdDoi2LnZhti12LEiLHZlcmI6Itij2YYg2YrYrdmI2YoifSxzZXQ6e3VuaXQ6Iti52YbYtdixIix2ZXJiOiLYo9mGINmK2K3ZiNmKIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItmF2K/YrtmEIixlbWFpbDoi2KjYsdmK2K8g2KXZhNmD2KrYsdmI2YbZiiIsdXJsOiLYsdin2KjYtyIsZW1vamk6Itil2YrZhdmI2KzZiiIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi2KrYp9ix2YrYriDZiNmI2YLYqiDYqNmF2LnZitin2LEgSVNPIixkYXRlOiLYqtin2LHZitiuINio2YXYudmK2KfYsSBJU08iLHRpbWU6ItmI2YLYqiDYqNmF2LnZitin2LEgSVNPIixkdXJhdGlvbjoi2YXYr9ipINio2YXYudmK2KfYsSBJU08iLGlwdjQ6Iti52YbZiNin2YYgSVB2NCIsaXB2Njoi2LnZhtmI2KfZhiBJUHY2IixjaWRydjQ6ItmF2K/ZiSDYudmG2KfZiNmK2YYg2KjYtdmK2LrYqSBJUHY0IixjaWRydjY6ItmF2K/ZiSDYudmG2KfZiNmK2YYg2KjYtdmK2LrYqSBJUHY2IixiYXNlNjQ6ItmG2Y7YtSDYqNiq2LHZhdmK2LIgYmFzZTY0LWVuY29kZWQiLGJhc2U2NHVybDoi2YbZjti1INio2KrYsdmF2YrYsiBiYXNlNjR1cmwtZW5jb2RlZCIsanNvbl9zdHJpbmc6ItmG2Y7YtSDYudmE2Ykg2YfZitim2KkgSlNPTiIsZTE2NDoi2LHZgtmFINmH2KfYqtmBINio2YXYudmK2KfYsSBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItmF2K/YrtmEIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g2YXYr9iu2YTYp9iqINi62YrYsSDZhdmC2KjZiNmE2Kk6INmK2YHYqtix2LYg2KXYr9iu2KfZhCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH3YjCDZiNmE2YPZhiDYqtmFINil2K/Yrtin2YQgJHtzfWA6YNmF2K/YrtmE2KfYqiDYutmK2LEg2YXZgtio2YjZhNipOiDZitmB2KrYsdi2INil2K/Yrtin2YQgJHtpfdiMINmI2YTZg9mGINiq2YUg2KXYr9iu2KfZhCAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DZhdiv2K7ZhNin2Kog2LrZitixINmF2YLYqNmI2YTYqTog2YrZgdiq2LHYtiDYpdiv2K7Yp9mEICR7ayhlLnZhbHVlc1swXSl9YDpg2KfYrtiq2YrYp9ixINi62YrYsSDZhdmC2KjZiNmEOiDZitiq2YjZgti5INin2YbYqtmC2KfYoSDYo9it2K8g2YfYsNmHINin2YTYrtmK2KfYsdin2Ko6ICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2Ag2KPZg9io2LEg2YXZhiDYp9mE2YTYp9iy2YU6INmK2YHYqtix2LYg2KPZhiDYqtmD2YjZhiAke2Uub3JpZ2luPz8i2KfZhNmC2YrZhdipIn0gJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/Iti52YbYtdixIn1gOmDYo9mD2KjYsSDZhdmGINin2YTZhNin2LLZhTog2YrZgdiq2LHYtiDYo9mGINiq2YPZiNmGICR7ZS5vcmlnaW4/PyLYp9mE2YLZitmF2KkifSAke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g2KPYtdi62LEg2YXZhiDYp9mE2YTYp9iy2YU6INmK2YHYqtix2LYg2YTZgCAke2Uub3JpZ2lufSDYo9mGINmK2YPZiNmGICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg2KPYtdi62LEg2YXZhiDYp9mE2YTYp9iy2YU6INmK2YHYqtix2LYg2YTZgCAke2Uub3JpZ2lufSDYo9mGINmK2YPZiNmGICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g2YbZjti1INi62YrYsSDZhdmC2KjZiNmEOiDZitis2Kgg2KPZhiDZitio2K/YoyDYqNmAICIke2UucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNmG2Y7YtSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrZhtiq2YfZiiDYqNmAICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g2YbZjti1INi62YrYsSDZhdmC2KjZiNmEOiDZitis2Kgg2KPZhiDZitiq2LbZhdmR2Y7ZhiAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g2YbZjti1INi62YrYsSDZhdmC2KjZiNmEOiDZitis2Kgg2KPZhiDZiti32KfYqNmCINin2YTZhtmF2LcgJHtpLnBhdHRlcm59YDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9INi62YrYsSDZhdmC2KjZiNmEYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNix2YLZhSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrZg9mI2YYg2YXZhiDZhdi22KfYudmB2KfYqiAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDZhdi52LHZgSR7ZS5rZXlzLmxlbmd0aD4xPyLYp9iqIjoiIn0g2LrYsdmK2Kgke2Uua2V5cy5sZW5ndGg+MT8i2KkiOiIifTogJHskKGUua2V5cywi2IwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g2YXYudix2YEg2LrZitixINmF2YLYqNmI2YQg2YHZiiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i2YXYr9iu2YQg2LrZitixINmF2YLYqNmI2YQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g2YXYr9iu2YQg2LrZitixINmF2YLYqNmI2YQg2YHZiiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i2YXYr9iu2YQg2LrZitixINmF2YLYqNmI2YQifX19O2Z1bmN0aW9uIE9wKCl7cmV0dXJue2xvY2FsZUVycm9yOlBwKCl9fWNvbnN0IERwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJzaW12b2wiLHZlcmI6Im9sbWFsxLFkxLFyIn0sZmlsZTp7dW5pdDoiYmF5dCIsdmVyYjoib2xtYWzEsWTEsXIifSxhcnJheTp7dW5pdDoiZWxlbWVudCIsdmVyYjoib2xtYWzEsWTEsXIifSxzZXQ6e3VuaXQ6ImVsZW1lbnQiLHZlcmI6Im9sbWFsxLFkxLFyIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImlucHV0IixlbWFpbDoiZW1haWwgYWRkcmVzcyIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdGV0aW1lIixkYXRlOiJJU08gZGF0ZSIsdGltZToiSVNPIHRpbWUiLGR1cmF0aW9uOiJJU08gZHVyYXRpb24iLGlwdjQ6IklQdjQgYWRkcmVzcyIsaXB2NjoiSVB2NiBhZGRyZXNzIixjaWRydjQ6IklQdjQgcmFuZ2UiLGNpZHJ2NjoiSVB2NiByYW5nZSIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCBzdHJpbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQgc3RyaW5nIixqc29uX3N0cmluZzoiSlNPTiBzdHJpbmciLGUxNjQ6IkUuMTY0IG51bWJlciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gWWFubMSxxZ8gZMmZecmZcjogZ8O2emzJmW5pbMmZbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGRheGlsIG9sYW4gJHtzfWA6YFlhbmzEscWfIGTJmXnJmXI6IGfDtnpsyZluaWzJmW4gJHtpfSwgZGF4aWwgb2xhbiAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BZYW5sxLHFnyBkyZl5yZlyOiBnw7Z6bMmZbmlsyZluICR7ayhlLnZhbHVlc1swXSl9YDpgWWFubMSxxZ8gc2XDp2ltOiBhxZ9hxJ/EsWRha8SxbGFyZGFuIGJpcmkgb2xtYWzEsWTEsXI6ICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DDh294IGLDtnnDvGs6IGfDtnpsyZluaWzJmW4gJHtlLm9yaWdpbj8/ImTJmXnJmXIifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50In1gOmDDh294IGLDtnnDvGs6IGfDtnpsyZluaWzJmW4gJHtlLm9yaWdpbj8/ImTJmXnJmXIifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DDh294IGtpw6dpazogZ8O2emzJmW5pbMmZbiAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgw4dveCBracOnaWs6IGfDtnpsyZluaWzJmW4gJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFlhbmzEscWfIG3JmXRuOiAiJHtpLnByZWZpeH0iIGlsyZkgYmHFn2xhbWFsxLFkxLFyYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BZYW5sxLHFnyBtyZl0bjogIiR7aS5zdWZmaXh9IiBpbMmZIGJpdG3JmWxpZGlyYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFlhbmzEscWfIG3JmXRuOiAiJHtpLmluY2x1ZGVzfSIgZGF4aWwgb2xtYWzEsWTEsXJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gWWFubMSxxZ8gbcmZdG46ICR7aS5wYXR0ZXJufSDFn2FibG9udW5hIHV5xJ91biBvbG1hbMSxZMSxcmA6YFlhbmzEscWfICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBZYW5sxLHFnyDJmWTJmWQ6ICR7ZS5kaXZpc29yfSBpbMmZIGLDtmzDvG7JmSBiaWzJmW4gb2xtYWzEsWTEsXJgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBUYW7EsW5tYXlhbiBhw6dhciR7ZS5rZXlzLmxlbmd0aD4xPyJsYXIiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSBkYXhpbGluZMmZIHlhbmzEscWfIGHDp2FyYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJZYW5sxLHFnyBkyZl5yZlyIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IGRheGlsaW5kyZkgeWFubMSxxZ8gZMmZecmZcmA7ZGVmYXVsdDpyZXR1cm4iWWFubMSxxZ8gZMmZecmZciJ9fX07ZnVuY3Rpb24gTnAoKXtyZXR1cm57bG9jYWxlRXJyb3I6RHAoKX19ZnVuY3Rpb24gVHModCxuLHIsbyl7Y29uc3QgZT1NYXRoLmFicyh0KSxpPWUlMTAsYT1lJTEwMDtyZXR1cm4gYT49MTEmJmE8PTE5P286aT09PTE/bjppPj0yJiZpPD00P3I6b31jb25zdCBFcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDp7b25lOiLRgdGW0LzQstCw0LsiLGZldzoi0YHRltC80LLQsNC70YsiLG1hbnk6ItGB0ZbQvNCy0LDQu9Cw0Z4ifSx2ZXJiOiLQvNC10YbRjCJ9LGFycmF5Ont1bml0OntvbmU6ItGN0LvQtdC80LXQvdGCIixmZXc6ItGN0LvQtdC80LXQvdGC0YsiLG1hbnk6ItGN0LvQtdC80LXQvdGC0LDRniJ9LHZlcmI6ItC80LXRhtGMIn0sc2V0Ont1bml0OntvbmU6ItGN0LvQtdC80LXQvdGCIixmZXc6ItGN0LvQtdC80LXQvdGC0YsiLG1hbnk6ItGN0LvQtdC80LXQvdGC0LDRniJ9LHZlcmI6ItC80LXRhtGMIn0sZmlsZTp7dW5pdDp7b25lOiLQsdCw0LnRgiIsZmV3OiLQsdCw0LnRgtGLIixtYW55OiLQsdCw0LnRgtCw0Z4ifSx2ZXJiOiLQvNC10YbRjCJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLRg9Cy0L7QtCIsZW1haWw6ImVtYWlsINCw0LTRgNCw0YEiLHVybDoiVVJMIixlbW9qaToi0Y3QvNC+0LTQt9GWIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g0LTQsNGC0LAg0ZYg0YfQsNGBIixkYXRlOiJJU08g0LTQsNGC0LAiLHRpbWU6IklTTyDRh9Cw0YEiLGR1cmF0aW9uOiJJU08g0L/RgNCw0YbRj9Cz0LvQsNGB0YbRjCIsaXB2NDoiSVB2NCDQsNC00YDQsNGBIixpcHY2OiJJUHY2INCw0LTRgNCw0YEiLGNpZHJ2NDoiSVB2NCDQtNGL0Y/Qv9Cw0LfQvtC9IixjaWRydjY6IklQdjYg0LTRi9GP0L/QsNC30L7QvSIsYmFzZTY0OiLRgNCw0LTQvtC6INGDINGE0LDRgNC80LDRhtC1IGJhc2U2NCIsYmFzZTY0dXJsOiLRgNCw0LTQvtC6INGDINGE0LDRgNC80LDRhtC1IGJhc2U2NHVybCIsanNvbl9zdHJpbmc6IkpTT04g0YDQsNC00L7QuiIsZTE2NDoi0L3Rg9C80LDRgCBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItGD0LLQvtC0In0sbz17bmFuOiJOYU4iLG51bWJlcjoi0LvRltC6IixhcnJheToi0LzQsNGB0ZbRniJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DQndGP0L/RgNCw0LLRltC70YzQvdGLINGe0LLQvtC0OiDRh9Cw0LrQsNGe0YHRjyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINCw0YLRgNGL0LzQsNC90LAgJHtzfWA6YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0Z7QstC+0LQ6INGH0LDQutCw0Z7RgdGPICR7aX0sINCw0YLRgNGL0LzQsNC90LAgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtDog0YfQsNC60LDQu9Cw0YHRjyAke2soZS52YWx1ZXNbMF0pfWA6YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0LLQsNGA0YvRj9C90YI6INGH0LDQutCw0Z7RgdGPINCw0LTQt9GW0L0g0LcgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7aWYoYSl7Y29uc3Qgcz1OdW1iZXIoZS5tYXhpbXVtKSxjPVRzKHMsYS51bml0Lm9uZSxhLnVuaXQuZmV3LGEudW5pdC5tYW55KTtyZXR1cm5g0JfQsNC90LDQtNGC0LAg0LLRj9C70ZbQutGWOiDRh9Cw0LrQsNC70LDRgdGPLCDRiNGC0L4gJHtlLm9yaWdpbj8/ItC30L3QsNGH0Y3QvdC90LUifSDQv9Cw0LLRltC90L3QsCAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Y31gfXJldHVybmDQl9Cw0L3QsNC00YLQsCDQstGP0LvRltC60ZY6INGH0LDQutCw0LvQsNGB0Y8sINGI0YLQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfRjdC90L3QtSJ9INC/0LDQstGW0L3QvdCwINCx0YvRhtGMICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7aWYoYSl7Y29uc3Qgcz1OdW1iZXIoZS5taW5pbXVtKSxjPVRzKHMsYS51bml0Lm9uZSxhLnVuaXQuZmV3LGEudW5pdC5tYW55KTtyZXR1cm5g0JfQsNC90LDQtNGC0LAg0LzQsNC70Ys6INGH0LDQutCw0LvQsNGB0Y8sINGI0YLQviAke2Uub3JpZ2lufSDQv9Cw0LLRltC90L3QsCAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Y31gfXJldHVybmDQl9Cw0L3QsNC00YLQsCDQvNCw0LvRizog0YfQsNC60LDQu9Cw0YHRjywg0YjRgtC+ICR7ZS5vcmlnaW59INC/0LDQstGW0L3QvdCwINCx0YvRhtGMICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DQndGP0L/RgNCw0LLRltC70YzQvdGLINGA0LDQtNC+0Lo6INC/0LDQstGW0L3QtdC9INC/0LDRh9GL0L3QsNGG0YbQsCDQtyAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DQndGP0L/RgNCw0LLRltC70YzQvdGLINGA0LDQtNC+0Lo6INC/0LDQstGW0L3QtdC9INC30LDQutCw0L3Rh9Cy0LDRhtGG0LAg0L3QsCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0YDQsNC00L7Qujog0L/QsNCy0ZbQvdC10L0g0LfQvNGP0YjRh9Cw0YbRjCAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRgNCw0LTQvtC6OiDQv9Cw0LLRltC90LXQvSDQsNC00L/QsNCy0Y/QtNCw0YbRjCDRiNCw0LHQu9C+0L3RgyAke2kucGF0dGVybn1gOmDQndGP0L/RgNCw0LLRltC70YzQvdGLICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDQndGP0L/RgNCw0LLRltC70YzQvdGLINC70ZbQujog0L/QsNCy0ZbQvdC10L0g0LHRi9GG0Ywg0LrRgNCw0YLQvdGL0LwgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g0J3QtdGA0LDRgdC/0LDQt9C90LDQvdGLICR7ZS5rZXlzLmxlbmd0aD4xPyLQutC70Y7Rh9GLIjoi0LrQu9GO0YcifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDQndGP0L/RgNCw0LLRltC70YzQvdGLINC60LvRjtGHINGDICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLQndGP0L/RgNCw0LLRltC70YzQvdGLINGe0LLQvtC0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNCd0Y/Qv9GA0LDQstGW0LvRjNC90LDQtSDQt9C90LDRh9GN0L3QvdC1INGeICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLQndGP0L/RgNCw0LLRltC70YzQvdGLINGe0LLQvtC0In19fTtmdW5jdGlvbiBacCgpe3JldHVybntsb2NhbGVFcnJvcjpFcCgpfX1jb25zdCBScD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi0YHQuNC80LLQvtC70LAiLHZlcmI6ItC00LAg0YHRitC00YrRgNC20LAifSxmaWxlOnt1bml0OiLQsdCw0LnRgtCwIix2ZXJiOiLQtNCwINGB0YrQtNGK0YDQttCwIn0sYXJyYXk6e3VuaXQ6ItC10LvQtdC80LXQvdGC0LAiLHZlcmI6ItC00LAg0YHRitC00YrRgNC20LAifSxzZXQ6e3VuaXQ6ItC10LvQtdC80LXQvdGC0LAiLHZlcmI6ItC00LAg0YHRitC00YrRgNC20LAifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi0LLRhdC+0LQiLGVtYWlsOiLQuNC80LXQudC7INCw0LTRgNC10YEiLHVybDoiVVJMIixlbW9qaToi0LXQvNC+0LTQttC4Iix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g0LLRgNC10LzQtSIsZGF0ZToiSVNPINC00LDRgtCwIix0aW1lOiJJU08g0LLRgNC10LzQtSIsZHVyYXRpb246IklTTyDQv9GA0L7QtNGK0LvQttC40YLQtdC70L3QvtGB0YIiLGlwdjQ6IklQdjQg0LDQtNGA0LXRgSIsaXB2NjoiSVB2NiDQsNC00YDQtdGBIixjaWRydjQ6IklQdjQg0LTQuNCw0L/QsNC30L7QvSIsY2lkcnY2OiJJUHY2INC00LjQsNC/0LDQt9C+0L0iLGJhc2U2NDoiYmFzZTY0LdC60L7QtNC40YDQsNC9INC90LjQtyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwt0LrQvtC00LjRgNCw0L0g0L3QuNC3Iixqc29uX3N0cmluZzoiSlNPTiDQvdC40LciLGUxNjQ6IkUuMTY0INC90L7QvNC10YAiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLQstGF0L7QtCJ9LG89e25hbjoiTmFOIixudW1iZXI6ItGH0LjRgdC70L4iLGFycmF5OiLQvNCw0YHQuNCyIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNCd0LXQstCw0LvQuNC00LXQvSDQstGF0L7QtDog0L7Rh9Cw0LrQstCw0L0gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDQv9C+0LvRg9GH0LXQvSAke3N9YDpg0J3QtdCy0LDQu9C40LTQtdC9INCy0YXQvtC0OiDQvtGH0LDQutCy0LDQvSAke2l9LCDQv9C+0LvRg9GH0LXQvSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DQndC10LLQsNC70LjQtNC10L0g0LLRhdC+0LQ6INC+0YfQsNC60LLQsNC9ICR7ayhlLnZhbHVlc1swXSl9YDpg0J3QtdCy0LDQu9C40LTQvdCwINC+0L/RhtC40Y86INC+0YfQsNC60LLQsNC90L4g0LXQtNC90L4g0L7RgiAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g0KLQstGK0YDQtNC1INCz0L7Qu9GP0LzQvjog0L7Rh9Cw0LrQstCwINGB0LUgJHtlLm9yaWdpbj8/ItGB0YLQvtC50L3QvtGB0YIifSDQtNCwINGB0YrQtNGK0YDQttCwICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ItC10LvQtdC80LXQvdGC0LAifWA6YNCi0LLRitGA0LTQtSDQs9C+0LvRj9C80L46INC+0YfQsNC60LLQsCDRgdC1ICR7ZS5vcmlnaW4/PyLRgdGC0L7QudC90L7RgdGCIn0g0LTQsCDQsdGK0LTQtSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DQotCy0YrRgNC00LUg0LzQsNC70LrQvjog0L7Rh9Cw0LrQstCwINGB0LUgJHtlLm9yaWdpbn0g0LTQsCDRgdGK0LTRitGA0LbQsCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg0KLQstGK0YDQtNC1INC80LDQu9C60L46INC+0YfQsNC60LLQsCDRgdC1ICR7ZS5vcmlnaW59INC00LAg0LHRitC00LUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO2lmKGkuZm9ybWF0PT09InN0YXJ0c193aXRoIilyZXR1cm5g0J3QtdCy0LDQu9C40LTQtdC9INC90LjQtzog0YLRgNGP0LHQstCwINC00LAg0LfQsNC/0L7Rh9Cy0LAg0YEgIiR7aS5wcmVmaXh9ImA7aWYoaS5mb3JtYXQ9PT0iZW5kc193aXRoIilyZXR1cm5g0J3QtdCy0LDQu9C40LTQtdC9INC90LjQtzog0YLRgNGP0LHQstCwINC00LAg0LfQsNCy0YrRgNGI0LLQsCDRgSAiJHtpLnN1ZmZpeH0iYDtpZihpLmZvcm1hdD09PSJpbmNsdWRlcyIpcmV0dXJuYNCd0LXQstCw0LvQuNC00LXQvSDQvdC40Lc6INGC0YDRj9Cx0LLQsCDQtNCwINCy0LrQu9GO0YfQstCwICIke2kuaW5jbHVkZXN9ImA7aWYoaS5mb3JtYXQ9PT0icmVnZXgiKXJldHVybmDQndC10LLQsNC70LjQtNC10L0g0L3QuNC3OiDRgtGA0Y/QsdCy0LAg0LTQsCDRgdGK0LLQv9Cw0LTQsCDRgSAke2kucGF0dGVybn1gO2xldCBhPSLQndC10LLQsNC70LjQtNC10L0iO3JldHVybiBpLmZvcm1hdD09PSJlbW9qaSImJihhPSLQndC10LLQsNC70LjQtNC90L4iKSxpLmZvcm1hdD09PSJkYXRldGltZSImJihhPSLQndC10LLQsNC70LjQtNC90L4iKSxpLmZvcm1hdD09PSJkYXRlIiYmKGE9ItCd0LXQstCw0LvQuNC00L3QsCIpLGkuZm9ybWF0PT09InRpbWUiJiYoYT0i0J3QtdCy0LDQu9C40LTQvdC+IiksaS5mb3JtYXQ9PT0iZHVyYXRpb24iJiYoYT0i0J3QtdCy0LDQu9C40LTQvdCwIiksYCR7YX0gJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCd0LXQstCw0LvQuNC00L3QviDRh9C40YHQu9C+OiDRgtGA0Y/QsdCy0LAg0LTQsCDQsdGK0LTQtSDQutGA0LDRgtC90L4g0L3QsCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDQndC10YDQsNC30L/QvtC30L3QsNGCJHtlLmtleXMubGVuZ3RoPjE/ItC4IjoiIn0g0LrQu9GO0Ycke2Uua2V5cy5sZW5ndGg+MT8i0L7QstC1IjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g0J3QtdCy0LDQu9C40LTQtdC9INC60LvRjtGHINCyICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLQndC10LLQsNC70LjQtNC10L0g0LLRhdC+0LQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g0J3QtdCy0LDQu9C40LTQvdCwINGB0YLQvtC50L3QvtGB0YIg0LIgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItCd0LXQstCw0LvQuNC00LXQvSDQstGF0L7QtCJ9fX07ZnVuY3Rpb24gQ3AoKXtyZXR1cm57bG9jYWxlRXJyb3I6UnAoKX19Y29uc3QgQXA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcsOgY3RlcnMiLHZlcmI6ImNvbnRlbmlyIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6ImNvbnRlbmlyIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRzIix2ZXJiOiJjb250ZW5pciJ9LHNldDp7dW5pdDoiZWxlbWVudHMiLHZlcmI6ImNvbnRlbmlyIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImVudHJhZGEiLGVtYWlsOiJhZHJlw6dhIGVsZWN0csOybmljYSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0YSBpIGhvcmEgSVNPIixkYXRlOiJkYXRhIElTTyIsdGltZToiaG9yYSBJU08iLGR1cmF0aW9uOiJkdXJhZGEgSVNPIixpcHY0OiJhZHJlw6dhIElQdjQiLGlwdjY6ImFkcmXDp2EgSVB2NiIsY2lkcnY0OiJyYW5nIElQdjQiLGNpZHJ2NjoicmFuZyBJUHY2IixiYXNlNjQ6ImNhZGVuYSBjb2RpZmljYWRhIGVuIGJhc2U2NCIsYmFzZTY0dXJsOiJjYWRlbmEgY29kaWZpY2FkYSBlbiBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJjYWRlbmEgSlNPTiIsZTE2NDoibsO6bWVybyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImVudHJhZGEifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BUaXB1cyBpbnbDoGxpZDogcydlc3BlcmF2YSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHMnaGEgcmVidXQgJHtzfWA6YFRpcHVzIGludsOgbGlkOiBzJ2VzcGVyYXZhICR7aX0sIHMnaGEgcmVidXQgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gVmFsb3IgaW52w6BsaWQ6IHMnZXNwZXJhdmEgJHtrKGUudmFsdWVzWzBdKX1gOmBPcGNpw7MgaW52w6BsaWRhOiBzJ2VzcGVyYXZhIHVuYSBkZSAkeyQoZS52YWx1ZXMsIiBvICIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iY29tIGEgbcOgeGltIjoibWVueXMgZGUiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YE1hc3NhIGdyYW46IHMnZXNwZXJhdmEgcXVlICR7ZS5vcmlnaW4/PyJlbCB2YWxvciJ9IGNvbnRpbmd1w6lzICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50cyJ9YDpgTWFzc2EgZ3Jhbjogcydlc3BlcmF2YSBxdWUgJHtlLm9yaWdpbj8/ImVsIHZhbG9yIn0gZm9zICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iY29tIGEgbcOtbmltIjoibcOpcyBkZSIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gTWFzc2EgcGV0aXQ6IHMnZXNwZXJhdmEgcXVlICR7ZS5vcmlnaW59IGNvbnRpbmd1w6lzICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgTWFzc2EgcGV0aXQ6IHMnZXNwZXJhdmEgcXVlICR7ZS5vcmlnaW59IGZvcyAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YEZvcm1hdCBpbnbDoGxpZDogaGEgZGUgY29tZW7Dp2FyIGFtYiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BGb3JtYXQgaW52w6BsaWQ6IGhhIGQnYWNhYmFyIGFtYiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YEZvcm1hdCBpbnbDoGxpZDogaGEgZCdpbmNsb3VyZSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gRm9ybWF0IGludsOgbGlkOiBoYSBkZSBjb2luY2lkaXIgYW1iIGVsIHBhdHLDsyAke2kucGF0dGVybn1gOmBGb3JtYXQgaW52w6BsaWQgcGVyIGEgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE7Dum1lcm8gaW52w6BsaWQ6IGhhIGRlIHNlciBtw7psdGlwbGUgZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQ2xhdSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gbm8gcmVjb25lZ3VkYSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQ2xhdSBpbnbDoGxpZGEgYSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iRW50cmFkYSBpbnbDoGxpZGEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gRWxlbWVudCBpbnbDoGxpZCBhICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJFbnRyYWRhIGludsOgbGlkYSJ9fX07ZnVuY3Rpb24gTHAoKXtyZXR1cm57bG9jYWxlRXJyb3I6QXAoKX19Y29uc3QgTXA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InpuYWvFryIsdmVyYjoibcOtdCJ9LGZpbGU6e3VuaXQ6ImJhanTFryIsdmVyYjoibcOtdCJ9LGFycmF5Ont1bml0OiJwcnZrxa8iLHZlcmI6Im3DrXQifSxzZXQ6e3VuaXQ6InBydmvFryIsdmVyYjoibcOtdCJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJyZWd1bMOhcm7DrSB2w71yYXoiLGVtYWlsOiJlLW1haWxvdsOhIGFkcmVzYSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0dW0gYSDEjWFzIHZlIGZvcm3DoXR1IElTTyIsZGF0ZToiZGF0dW0gdmUgZm9ybcOhdHUgSVNPIix0aW1lOiLEjWFzIHZlIGZvcm3DoXR1IElTTyIsZHVyYXRpb246ImRvYmEgdHJ2w6Fuw60gSVNPIixpcHY0OiJJUHY0IGFkcmVzYSIsaXB2NjoiSVB2NiBhZHJlc2EiLGNpZHJ2NDoicm96c2FoIElQdjQiLGNpZHJ2Njoicm96c2FoIElQdjYiLGJhc2U2NDoixZlldMSbemVjIHpha8OzZG92YW7DvSB2ZSBmb3Jtw6F0dSBiYXNlNjQiLGJhc2U2NHVybDoixZlldMSbemVjIHpha8OzZG92YW7DvSB2ZSBmb3Jtw6F0dSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLFmWV0xJt6ZWMgdmUgZm9ybcOhdHUgSlNPTiIsZTE2NDoixI3DrXNsbyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6InZzdHVwIn0sbz17bmFuOiJOYU4iLG51bWJlcjoixI3DrXNsbyIsc3RyaW5nOiLFmWV0xJt6ZWMiLGZ1bmN0aW9uOiJmdW5rY2UiLGFycmF5OiJwb2xlIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5lcGxhdG7DvSB2c3R1cDogb8SNZWvDoXbDoW5vIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgb2JkcsW+ZW5vICR7c31gOmBOZXBsYXRuw70gdnN0dXA6IG/EjWVrw6F2w6FubyAke2l9LCBvYmRyxb5lbm8gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gTmVwbGF0bsO9IHZzdHVwOiBvxI1la8OhdsOhbm8gJHtrKGUudmFsdWVzWzBdKX1gOmBOZXBsYXRuw6EgbW/Fvm5vc3Q6IG/EjWVrw6F2w6FuYSBqZWRuYSB6IGhvZG5vdCAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gSG9kbm90YSBqZSBwxZnDrWxpxaEgdmVsa8OhOiAke2Uub3JpZ2luPz8iaG9kbm90YSJ9IG11c8OtIG3DrXQgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8icHJ2a8WvIn1gOmBIb2Rub3RhIGplIHDFmcOtbGnFoSB2ZWxrw6E6ICR7ZS5vcmlnaW4/PyJob2Rub3RhIn0gbXVzw60gYsO9dCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BIb2Rub3RhIGplIHDFmcOtbGnFoSBtYWzDoTogJHtlLm9yaWdpbj8/ImhvZG5vdGEifSBtdXPDrSBtw610ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdD8/InBydmvFryJ9YDpgSG9kbm90YSBqZSBwxZnDrWxpxaEgbWFsw6E6ICR7ZS5vcmlnaW4/PyJob2Rub3RhIn0gbXVzw60gYsO9dCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gTmVwbGF0bsO9IMWZZXTEm3plYzogbXVzw60gemHEjcOtbmF0IG5hICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE5lcGxhdG7DvSDFmWV0xJt6ZWM6IG11c8OtIGtvbsSNaXQgbmEgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BOZXBsYXRuw70gxZlldMSbemVjOiBtdXPDrSBvYnNhaG92YXQgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YE5lcGxhdG7DvSDFmWV0xJt6ZWM6IG11c8OtIG9kcG92w61kYXQgdnpvcnUgJHtpLnBhdHRlcm59YDpgTmVwbGF0bsO9IGZvcm3DoXQgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5lcGxhdG7DqSDEjcOtc2xvOiBtdXPDrSBiw710IG7DoXNvYmtlbSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOZXpuw6Ftw6kga2zDrcSNZTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBOZXBsYXRuw70ga2zDrcSNIHYgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk5lcGxhdG7DvSB2c3R1cCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOZXBsYXRuw6EgaG9kbm90YSB2ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJOZXBsYXRuw70gdnN0dXAifX19O2Z1bmN0aW9uIHFwKCl7cmV0dXJue2xvY2FsZUVycm9yOk1wKCl9fWNvbnN0IEZwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ0ZWduIix2ZXJiOiJoYXZkZSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJoYXZkZSJ9LGFycmF5Ont1bml0OiJlbGVtZW50ZXIiLHZlcmI6ImluZGVob2xkdCJ9LHNldDp7dW5pdDoiZWxlbWVudGVyIix2ZXJiOiJpbmRlaG9sZHQifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJlLW1haWxhZHJlc3NlIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0by0gb2cga2xva2tlc2zDpnQiLGRhdGU6IklTTy1kYXRvIix0aW1lOiJJU08ta2xva2tlc2zDpnQiLGR1cmF0aW9uOiJJU08tdmFyaWdoZWQiLGlwdjQ6IklQdjQtb21yw6VkZSIsaXB2NjoiSVB2Ni1vbXLDpWRlIixjaWRydjQ6IklQdjQtc3Bla3RydW0iLGNpZHJ2NjoiSVB2Ni1zcGVrdHJ1bSIsYmFzZTY0OiJiYXNlNjQta29kZXQgc3RyZW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1rb2RldCBzdHJlbmciLGpzb25fc3RyaW5nOiJKU09OLXN0cmVuZyIsZTE2NDoiRS4xNjQtbnVtbWVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiIsc3RyaW5nOiJzdHJlbmciLG51bWJlcjoidGFsIixib29sZWFuOiJib29sZWFuIixhcnJheToibGlzdGUiLG9iamVjdDoib2JqZWt0IixzZXQ6InPDpnQiLGZpbGU6ImZpbCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BVZ3lsZGlndCBpbnB1dDogZm9ydmVudGVkZSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGZpayAke3N9YDpgVWd5bGRpZ3QgaW5wdXQ6IGZvcnZlbnRlZGUgJHtpfSwgZmlrICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFVneWxkaWcgdsOmcmRpOiBmb3J2ZW50ZWRlICR7ayhlLnZhbHVlc1swXSl9YDpgVWd5bGRpZ3QgdmFsZzogZm9ydmVudGVkZSBlbiBhZiBmw7hsZ2VuZGUgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbikscz1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIGE/YEZvciBzdG9yOiBmb3J2ZW50ZWRlICR7cz8/InZhbHVlIn0gJHthLnZlcmJ9ICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50ZXIifWA6YEZvciBzdG9yOiBmb3J2ZW50ZWRlICR7cz8/InZhbHVlIn0gaGF2ZGUgJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbikscz1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIGE/YEZvciBsaWxsZTogZm9ydmVudGVkZSAke3N9ICR7YS52ZXJifSAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YEZvciBsaWxsZTogZm9ydmVudGVkZSAke3N9IGhhdmRlICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gVWd5bGRpZyBzdHJlbmc6IHNrYWwgc3RhcnRlIG1lZCAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BVZ3lsZGlnIHN0cmVuZzogc2thbCBlbmRlIG1lZCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFVneWxkaWcgc3RyZW5nOiBza2FsIGluZGVob2xkZSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gVWd5bGRpZyBzdHJlbmc6IHNrYWwgbWF0Y2hlIG3DuG5zdGVyZXQgJHtpLnBhdHRlcm59YDpgVWd5bGRpZyAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gVWd5bGRpZ3QgdGFsOiBza2FsIHbDpnJlIGRlbGVsaWd0IG1lZCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmAke2Uua2V5cy5sZW5ndGg+MT8iVWtlbmR0ZSBuw7hnbGVyIjoiVWtlbmR0IG7DuGdsZSJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYFVneWxkaWcgbsO4Z2xlIGkgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIlVneWxkaWd0IGlucHV0OiBtYXRjaGVyIGluZ2VuIGFmIGRlIHRpbGxhZHRlIHR5cGVyIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFVneWxkaWcgdsOmcmRpIGkgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIlVneWxkaWd0IGlucHV0In19fTtmdW5jdGlvbiBKcCgpe3JldHVybntsb2NhbGVFcnJvcjpGcCgpfX1jb25zdCBIcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiWmVpY2hlbiIsdmVyYjoienUgaGFiZW4ifSxmaWxlOnt1bml0OiJCeXRlcyIsdmVyYjoienUgaGFiZW4ifSxhcnJheTp7dW5pdDoiRWxlbWVudGUiLHZlcmI6Inp1IGhhYmVuIn0sc2V0Ont1bml0OiJFbGVtZW50ZSIsdmVyYjoienUgaGFiZW4ifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiRWluZ2FiZSIsZW1haWw6IkUtTWFpbC1BZHJlc3NlIix1cmw6IlVSTCIsZW1vamk6IkVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08tRGF0dW0gdW5kIC1VaHJ6ZWl0IixkYXRlOiJJU08tRGF0dW0iLHRpbWU6IklTTy1VaHJ6ZWl0IixkdXJhdGlvbjoiSVNPLURhdWVyIixpcHY0OiJJUHY0LUFkcmVzc2UiLGlwdjY6IklQdjYtQWRyZXNzZSIsY2lkcnY0OiJJUHY0LUJlcmVpY2giLGNpZHJ2NjoiSVB2Ni1CZXJlaWNoIixiYXNlNjQ6IkJhc2U2NC1jb2RpZXJ0ZXIgU3RyaW5nIixiYXNlNjR1cmw6IkJhc2U2NC1VUkwtY29kaWVydGVyIFN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04tU3RyaW5nIixlMTY0OiJFLjE2NC1OdW1tZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJFaW5nYWJlIn0sbz17bmFuOiJOYU4iLG51bWJlcjoiWmFobCIsYXJyYXk6IkFycmF5In07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFVuZ8O8bHRpZ2UgRWluZ2FiZTogZXJ3YXJ0ZXQgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBlcmhhbHRlbiAke3N9YDpgVW5nw7xsdGlnZSBFaW5nYWJlOiBlcndhcnRldCAke2l9LCBlcmhhbHRlbiAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BVbmfDvGx0aWdlIEVpbmdhYmU6IGVyd2FydGV0ICR7ayhlLnZhbHVlc1swXSl9YDpgVW5nw7xsdGlnZSBPcHRpb246IGVyd2FydGV0IGVpbmUgdm9uICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BadSBncm/DnzogZXJ3YXJ0ZXQsIGRhc3MgJHtlLm9yaWdpbj8/IldlcnQifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJFbGVtZW50ZSJ9IGhhdGA6YFp1IGdyb8OfOiBlcndhcnRldCwgZGFzcyAke2Uub3JpZ2luPz8iV2VydCJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSBpc3RgfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BadSBrbGVpbjogZXJ3YXJ0ZXQsIGRhc3MgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSBoYXRgOmBadSBrbGVpbjogZXJ3YXJ0ZXQsIGRhc3MgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IGlzdGB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BVbmfDvGx0aWdlciBTdHJpbmc6IG11c3MgbWl0ICIke2kucHJlZml4fSIgYmVnaW5uZW5gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFVuZ8O8bHRpZ2VyIFN0cmluZzogbXVzcyBtaXQgIiR7aS5zdWZmaXh9IiBlbmRlbmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BVbmfDvGx0aWdlciBTdHJpbmc6IG11c3MgIiR7aS5pbmNsdWRlc30iIGVudGhhbHRlbmA6aS5mb3JtYXQ9PT0icmVnZXgiP2BVbmfDvGx0aWdlciBTdHJpbmc6IG11c3MgZGVtIE11c3RlciAke2kucGF0dGVybn0gZW50c3ByZWNoZW5gOmBVbmfDvGx0aWc6ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBVbmfDvGx0aWdlIFphaGw6IG11c3MgZWluIFZpZWxmYWNoZXMgdm9uICR7ZS5kaXZpc29yfSBzZWluYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/IlVuYmVrYW5udGUgU2NobMO8c3NlbCI6IlVuYmVrYW5udGVyIFNjaGzDvHNzZWwifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBVbmfDvGx0aWdlciBTY2hsw7xzc2VsIGluICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJVbmfDvGx0aWdlIEVpbmdhYmUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVW5nw7xsdGlnZXIgV2VydCBpbiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iVW5nw7xsdGlnZSBFaW5nYWJlIn19fTtmdW5jdGlvbiBWcCgpe3JldHVybntsb2NhbGVFcnJvcjpIcCgpfX1jb25zdCBLcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiz4fOsc+BzrHOus+Ezq7Pgc61z4IiLHZlcmI6Is69zrEgzq3Ph861zrkifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoizr3OsSDOrc+HzrXOuSJ9LGFycmF5Ont1bml0OiLPg8+Ezr/Ouc+HzrXOr86xIix2ZXJiOiLOvc6xIM6tz4fOtc65In0sc2V0Ont1bml0OiLPg8+Ezr/Ouc+HzrXOr86xIix2ZXJiOiLOvc6xIM6tz4fOtc65In0sbWFwOnt1bml0OiLOus6xz4TOsc+Hz4nPgc6uz4POtc65z4IiLHZlcmI6Is69zrEgzq3Ph861zrkifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoizrXOr8+Dzr/OtM6/z4IiLGVtYWlsOiLOtM65zrXPjc64z4XOvc+DzrcgZW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDOt868zrXPgc6/zrzOt869zq/OsSDOus6xzrkgz47Pgc6xIixkYXRlOiJJU08gzrfOvM61z4HOv868zrfOvc6vzrEiLHRpbWU6IklTTyDPjs+BzrEiLGR1cmF0aW9uOiJJU08gzrTOuc6sz4HOus61zrnOsSIsaXB2NDoizrTOuc61z43OuM+Fzr3Pg863IElQdjQiLGlwdjY6Is60zrnOtc+NzrjPhc69z4POtyBJUHY2IixtYWM6Is60zrnOtc+NzrjPhc69z4POtyBNQUMiLGNpZHJ2NDoizrXPjc+Bzr/PgiBJUHY0IixjaWRydjY6Is61z43Pgc6/z4IgSVB2NiIsYmFzZTY0OiLPg8+FzrzOss6/zrvOv8+DzrXOuc+BzqwgzrrPic60zrnOus6/z4DOv865zrfOvM6tzr3OtyDPg861IGJhc2U2NCIsYmFzZTY0dXJsOiLPg8+FzrzOss6/zrvOv8+DzrXOuc+BzqwgzrrPic60zrnOus6/z4DOv865zrfOvM6tzr3OtyDPg861IGJhc2U2NHVybCIsanNvbl9zdHJpbmc6Is+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrCBKU09OIixlMTY0OiLOsc+BzrnOuM68z4zPgiBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6Is61zq/Pg86/zrTOv8+CIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuIHR5cGVvZiBlLmV4cGVjdGVkPT0ic3RyaW5nIiYmL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gzpzOtyDOrc6zzrrPhc+BzrcgzrXOr8+Dzr/OtM6/z4I6IM6xzr3Osc68zrXOvc+Mz4TOsc69IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgzrvOrs+GzrjOt866zrUgJHtzfWA6YM6czrcgzq3Os866z4XPgc63IM61zq/Pg86/zrTOv8+COiDOsc69zrHOvM61zr3PjM+EzrHOvSAke2l9LCDOu86uz4bOuM63zrrOtSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DOnM63IM6tzrPOus+Fz4HOtyDOtc6vz4POv860zr/PgjogzrHOvc6xzrzOtc69z4zPhM6xzr0gJHtrKGUudmFsdWVzWzBdKX1gOmDOnM63IM6tzrPOus+Fz4HOtyDOtc+AzrnOu86/zrPOrjogzrHOvc6xzrzOtc69z4zPhM6xzr0gzq3Ovc6xIM6xz4DPjCAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gzqDOv867z40gzrzOtc6zzqzOu86/OiDOsc69zrHOvM61zr3PjM+EzrHOvSAke2Uub3JpZ2luPz8iz4TOuc68zq4ifSDOvc6xIM6tz4fOtc65ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/Is+Dz4TOv865z4fOtc6vzrEifWA6YM6gzr/Ou8+NIM68zrXOs86szrvOvzogzrHOvc6xzrzOtc69z4zPhM6xzr0gJHtlLm9yaWdpbj8/Is+EzrnOvM6uIn0gzr3OsSDOtc6vzr3Osc65ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YM6gzr/Ou8+NIM68zrnOus+Bz4w6IM6xzr3Osc68zrXOvc+Mz4TOsc69ICR7ZS5vcmlnaW59IM69zrEgzq3Ph861zrkgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YM6gzr/Ou8+NIM68zrnOus+Bz4w6IM6xzr3Osc68zrXOvc+Mz4TOsc69ICR7ZS5vcmlnaW59IM69zrEgzrXOr869zrHOuSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gzpzOtyDOrc6zzrrPhc+Bzrcgz4PPhc68zrLOv867zr/Pg861zrnPgc6sOiDPgM+Bzq3PgM61zrkgzr3OsSDOvs61zrrOuc69zqwgzrzOtSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DOnM63IM6tzrPOus+Fz4HOtyDPg8+FzrzOss6/zrvOv8+DzrXOuc+Bzqw6IM+Az4HOrc+AzrXOuSDOvc6xIM+EzrXOu861zrnPjs69zrXOuSDOvM61ICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gzpzOtyDOrc6zzrrPhc+Bzrcgz4PPhc68zrLOv867zr/Pg861zrnPgc6sOiDPgM+Bzq3PgM61zrkgzr3OsSDPgM61z4HOuc6tz4fOtc65ICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DOnM63IM6tzrPOus+Fz4HOtyDPg8+FzrzOss6/zrvOv8+DzrXOuc+Bzqw6IM+Az4HOrc+AzrXOuSDOvc6xIM+EzrHOuc+BzrnOrM62zrXOuSDOvM61IM+Ezr8gzrzOv8+Ezq/Oss6/ICR7aS5wYXR0ZXJufWA6YM6czrcgzq3Os866z4XPgc6/OiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gzpzOtyDOrc6zzrrPhc+Bzr/PgiDOsc+BzrnOuM68z4zPgjogz4DPgc6tz4DOtc65IM69zrEgzrXOr869zrHOuSDPgM6/zrvOu86xz4DOu86sz4POuc6/IM+Ezr/PhSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDOhs6zzr3Pic+Dz4Qke2Uua2V5cy5sZW5ndGg+MT8izrEiOiLOvyJ9IM66zrvOtc65zrQke2Uua2V5cy5sZW5ndGg+MT8izrnOrCI6Is6vIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gzpzOtyDOrc6zzrrPhc+Bzr8gzrrOu861zrnOtM6vIM+Dz4TOvyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4izpzOtyDOrc6zzrrPhc+BzrcgzrXOr8+Dzr/OtM6/z4IiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gzpzOtyDOrc6zzrrPhc+Bzrcgz4TOuc68zq4gz4PPhM6/ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLOnM63IM6tzrPOus+Fz4HOtyDOtc6vz4POv860zr/PgiJ9fX07ZnVuY3Rpb24gQnAoKXtyZXR1cm57bG9jYWxlRXJyb3I6S3AoKX19Y29uc3QgV3A9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNoYXJhY3RlcnMiLHZlcmI6InRvIGhhdmUifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoidG8gaGF2ZSJ9LGFycmF5Ont1bml0OiJpdGVtcyIsdmVyYjoidG8gaGF2ZSJ9LHNldDp7dW5pdDoiaXRlbXMiLHZlcmI6InRvIGhhdmUifSxtYXA6e3VuaXQ6ImVudHJpZXMiLHZlcmI6InRvIGhhdmUifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJlbWFpbCBhZGRyZXNzIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0ZXRpbWUiLGRhdGU6IklTTyBkYXRlIix0aW1lOiJJU08gdGltZSIsZHVyYXRpb246IklTTyBkdXJhdGlvbiIsaXB2NDoiSVB2NCBhZGRyZXNzIixpcHY2OiJJUHY2IGFkZHJlc3MiLG1hYzoiTUFDIGFkZHJlc3MiLGNpZHJ2NDoiSVB2NCByYW5nZSIsY2lkcnY2OiJJUHY2IHJhbmdlIixiYXNlNjQ6ImJhc2U2NC1lbmNvZGVkIHN0cmluZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5jb2RlZCBzdHJpbmciLGpzb25fc3RyaW5nOiJKU09OIHN0cmluZyIsZTE2NDoiRS4xNjQgbnVtYmVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm5gSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgJHtpfSwgcmVjZWl2ZWQgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgJHtrKGUudmFsdWVzWzBdKX1gOmBJbnZhbGlkIG9wdGlvbjogZXhwZWN0ZWQgb25lIG9mICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUb28gYmlnOiBleHBlY3RlZCAke2Uub3JpZ2luPz8idmFsdWUifSB0byBoYXZlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRzIn1gOmBUb28gYmlnOiBleHBlY3RlZCAke2Uub3JpZ2luPz8idmFsdWUifSB0byBiZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUb28gc21hbGw6IGV4cGVjdGVkICR7ZS5vcmlnaW59IHRvIGhhdmUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRvbyBzbWFsbDogZXhwZWN0ZWQgJHtlLm9yaWdpbn0gdG8gYmUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YEludmFsaWQgc3RyaW5nOiBtdXN0IHN0YXJ0IHdpdGggIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gSW52YWxpZCBzdHJpbmc6IG11c3QgZW5kIHdpdGggIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BJbnZhbGlkIHN0cmluZzogbXVzdCBpbmNsdWRlICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BJbnZhbGlkIHN0cmluZzogbXVzdCBtYXRjaCBwYXR0ZXJuICR7aS5wYXR0ZXJufWA6YEludmFsaWQgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYEludmFsaWQgbnVtYmVyOiBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gVW5yZWNvZ25pemVkIGtleSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gSW52YWxpZCBrZXkgaW4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIGUub3B0aW9ucyYmQXJyYXkuaXNBcnJheShlLm9wdGlvbnMpJiZlLm9wdGlvbnMubGVuZ3RoPjA/YEludmFsaWQgZGlzY3JpbWluYXRvciB2YWx1ZS4gRXhwZWN0ZWQgJHtlLm9wdGlvbnMubWFwKGE9PmAnJHthfSdgKS5qb2luKCIgfCAiKX1gOiJJbnZhbGlkIGlucHV0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYEludmFsaWQgdmFsdWUgaW4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkludmFsaWQgaW5wdXQifX19O2Z1bmN0aW9uIGtsKCl7cmV0dXJue2xvY2FsZUVycm9yOldwKCl9fWNvbnN0IEdwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJrYXJha3Ryb2puIix2ZXJiOiJoYXZpIn0sZmlsZTp7dW5pdDoiYmFqdG9qbiIsdmVyYjoiaGF2aSJ9LGFycmF5Ont1bml0OiJlbGVtZW50b2puIix2ZXJiOiJoYXZpIn0sc2V0Ont1bml0OiJlbGVtZW50b2puIix2ZXJiOiJoYXZpIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImVuaWdvIixlbWFpbDoicmV0YWRyZXNvIix1cmw6IlVSTCIsZW1vamk6ImVtb8SdaW8iLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTy1kYXRvdGVtcG8iLGRhdGU6IklTTy1kYXRvIix0aW1lOiJJU08tdGVtcG8iLGR1cmF0aW9uOiJJU08tZGHFrXJvIixpcHY0OiJJUHY0LWFkcmVzbyIsaXB2NjoiSVB2Ni1hZHJlc28iLGNpZHJ2NDoiSVB2NC1yYW5nbyIsY2lkcnY2OiJJUHY2LXJhbmdvIixiYXNlNjQ6IjY0LXVtZSBrb2RpdGEga2FyYWt0cmFybyIsYmFzZTY0dXJsOiJVUkwtNjQtdW1lIGtvZGl0YSBrYXJha3RyYXJvIixqc29uX3N0cmluZzoiSlNPTi1rYXJha3RyYXJvIixlMTY0OiJFLjE2NC1ub21icm8iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbmlnbyJ9LG89e25hbjoiTmFOIixudW1iZXI6Im5vbWJybyIsYXJyYXk6InRhYmVsbyIsbnVsbDoic2VudmFsb3JhIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5ldmFsaWRhIGVuaWdvOiBhdGVuZGnEnWlzIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcmljZXZpxJ1pcyAke3N9YDpgTmV2YWxpZGEgZW5pZ286IGF0ZW5kacSdaXMgJHtpfSwgcmljZXZpxJ1pcyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BOZXZhbGlkYSBlbmlnbzogYXRlbmRpxJ1pcyAke2soZS52YWx1ZXNbMF0pfWA6YE5ldmFsaWRhIG9wY2lvOiBhdGVuZGnEnWlzIHVudSBlbCAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvIGdyYW5kYTogYXRlbmRpxJ1pcyBrZSAke2Uub3JpZ2luPz8idmFsb3JvIn0gaGF2dSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50b2puIn1gOmBUcm8gZ3JhbmRhOiBhdGVuZGnEnWlzIGtlICR7ZS5vcmlnaW4/PyJ2YWxvcm8ifSBoYXZ1ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRybyBtYWxncmFuZGE6IGF0ZW5kacSdaXMga2UgJHtlLm9yaWdpbn0gaGF2dSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVHJvIG1hbGdyYW5kYTogYXRlbmRpxJ1pcyBrZSAke2Uub3JpZ2lufSBlc3R1ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBrb21lbmNpxJ1pIHBlciAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBmaW5pxJ1pIHBlciAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE5ldmFsaWRhIGthcmFrdHJhcm86IGRldmFzIGlua2x1eml2aSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gTmV2YWxpZGEga2FyYWt0cmFybzogZGV2YXMga29uZ3J1aSBrdW4gbGEgbW9kZWxvICR7aS5wYXR0ZXJufWA6YE5ldmFsaWRhICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOZXZhbGlkYSBub21icm86IGRldmFzIGVzdGkgb2JsbyBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOZWtvbmF0YSR7ZS5rZXlzLmxlbmd0aD4xPyJqIjoiIn0gxZ1sb3NpbG8ke2Uua2V5cy5sZW5ndGg+MT8iaiI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5ldmFsaWRhIMWdbG9zaWxvIGVuICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJOZXZhbGlkYSBlbmlnbyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOZXZhbGlkYSB2YWxvcm8gZW4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIk5ldmFsaWRhIGVuaWdvIn19fTtmdW5jdGlvbiBYcCgpe3JldHVybntsb2NhbGVFcnJvcjpHcCgpfX1jb25zdCBZcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiY2FyYWN0ZXJlcyIsdmVyYjoidGVuZXIifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoidGVuZXIifSxhcnJheTp7dW5pdDoiZWxlbWVudG9zIix2ZXJiOiJ0ZW5lciJ9LHNldDp7dW5pdDoiZWxlbWVudG9zIix2ZXJiOiJ0ZW5lciJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJlbnRyYWRhIixlbWFpbDoiZGlyZWNjacOzbiBkZSBjb3JyZW8gZWxlY3Ryw7NuaWNvIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJmZWNoYSB5IGhvcmEgSVNPIixkYXRlOiJmZWNoYSBJU08iLHRpbWU6ImhvcmEgSVNPIixkdXJhdGlvbjoiZHVyYWNpw7NuIElTTyIsaXB2NDoiZGlyZWNjacOzbiBJUHY0IixpcHY2OiJkaXJlY2Npw7NuIElQdjYiLGNpZHJ2NDoicmFuZ28gSVB2NCIsY2lkcnY2OiJyYW5nbyBJUHY2IixiYXNlNjQ6ImNhZGVuYSBjb2RpZmljYWRhIGVuIGJhc2U2NCIsYmFzZTY0dXJsOiJVUkwgY29kaWZpY2FkYSBlbiBiYXNlNjQiLGpzb25fc3RyaW5nOiJjYWRlbmEgSlNPTiIsZTE2NDoibsO6bWVybyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImVudHJhZGEifSxvPXtuYW46Ik5hTiIsc3RyaW5nOiJ0ZXh0byIsbnVtYmVyOiJuw7ptZXJvIixib29sZWFuOiJib29sZWFubyIsYXJyYXk6ImFycmVnbG8iLG9iamVjdDoib2JqZXRvIixzZXQ6ImNvbmp1bnRvIixmaWxlOiJhcmNoaXZvIixkYXRlOiJmZWNoYSIsYmlnaW50OiJuw7ptZXJvIGdyYW5kZSIsc3ltYm9sOiJzw61tYm9sbyIsdW5kZWZpbmVkOiJpbmRlZmluaWRvIixudWxsOiJudWxvIixmdW5jdGlvbjoiZnVuY2nDs24iLG1hcDoibWFwYSIscmVjb3JkOiJyZWdpc3RybyIsdHVwbGU6InR1cGxhIixlbnVtOiJlbnVtZXJhY2nDs24iLHVuaW9uOiJ1bmnDs24iLGxpdGVyYWw6ImxpdGVyYWwiLHByb21pc2U6InByb21lc2EiLHZvaWQ6InZhY8OtbyIsbmV2ZXI6Im51bmNhIix1bmtub3duOiJkZXNjb25vY2lkbyIsYW55OiJjdWFscXVpZXJhIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEVudHJhZGEgaW52w6FsaWRhOiBzZSBlc3BlcmFiYSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHJlY2liaWRvICR7c31gOmBFbnRyYWRhIGludsOhbGlkYTogc2UgZXNwZXJhYmEgJHtpfSwgcmVjaWJpZG8gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gRW50cmFkYSBpbnbDoWxpZGE6IHNlIGVzcGVyYWJhICR7ayhlLnZhbHVlc1swXSl9YDpgT3BjacOzbiBpbnbDoWxpZGE6IHNlIGVzcGVyYWJhIHVuYSBkZSAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKSxzPW9bZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm4gYT9gRGVtYXNpYWRvIGdyYW5kZTogc2UgZXNwZXJhYmEgcXVlICR7cz8/InZhbG9yIn0gdHV2aWVyYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50b3MifWA6YERlbWFzaWFkbyBncmFuZGU6IHNlIGVzcGVyYWJhIHF1ZSAke3M/PyJ2YWxvciJ9IGZ1ZXJhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbikscz1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIGE/YERlbWFzaWFkbyBwZXF1ZcOxbzogc2UgZXNwZXJhYmEgcXVlICR7c30gdHV2aWVyYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgRGVtYXNpYWRvIHBlcXVlw7FvOiBzZSBlc3BlcmFiYSBxdWUgJHtzfSBmdWVyYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gQ2FkZW5hIGludsOhbGlkYTogZGViZSBjb21lbnphciBjb24gIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gQ2FkZW5hIGludsOhbGlkYTogZGViZSB0ZXJtaW5hciBlbiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YENhZGVuYSBpbnbDoWxpZGE6IGRlYmUgaW5jbHVpciAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gQ2FkZW5hIGludsOhbGlkYTogZGViZSBjb2luY2lkaXIgY29uIGVsIHBhdHLDs24gJHtpLnBhdHRlcm59YDpgSW52w6FsaWRvICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOw7ptZXJvIGludsOhbGlkbzogZGViZSBzZXIgbcO6bHRpcGxvIGRlICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYExsYXZlJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSBkZXNjb25vY2lkYSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gTGxhdmUgaW52w6FsaWRhIGVuICR7b1tlLm9yaWdpbl0/P2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iRW50cmFkYSBpbnbDoWxpZGEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsb3IgaW52w6FsaWRvIGVuICR7b1tlLm9yaWdpbl0/P2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iRW50cmFkYSBpbnbDoWxpZGEifX19O2Z1bmN0aW9uIFFwKCl7cmV0dXJue2xvY2FsZUVycm9yOllwKCl9fWNvbnN0IGVmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLaqdin2LHYp9qp2KrYsSIsdmVyYjoi2K/Yp9i02KrZhyDYqNin2LTYryJ9LGZpbGU6e3VuaXQ6Itio2KfbjNiqIix2ZXJiOiLYr9in2LTYqtmHINio2KfYtNivIn0sYXJyYXk6e3VuaXQ6Itii24zYqtmFIix2ZXJiOiLYr9in2LTYqtmHINio2KfYtNivIn0sc2V0Ont1bml0OiLYotuM2KrZhSIsdmVyYjoi2K/Yp9i02KrZhyDYqNin2LTYryJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLZiNix2YjYr9uMIixlbWFpbDoi2KLYr9ix2LMg2KfbjNmF24zZhCIsdXJsOiJVUkwiLGVtb2ppOiLYp9uM2YXZiNis24wiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6Itiq2KfYsduM2K4g2Ygg2LLZhdin2YYg2KfbjNiy2YgiLGRhdGU6Itiq2KfYsduM2K4g2KfbjNiy2YgiLHRpbWU6Itiy2YXYp9mGINin24zYstmIIixkdXJhdGlvbjoi2YXYr9iqINiy2YXYp9mGINin24zYstmIIixpcHY0OiJJUHY0INii2K/YsdizIixpcHY2OiJJUHY2INii2K/YsdizIixjaWRydjQ6IklQdjQg2K/Yp9mF2YbZhyIsY2lkcnY2OiJJUHY2INiv2KfZhdmG2YciLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQg2LHYtNiq2YciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQg2LHYtNiq2YciLGpzb25fc3RyaW5nOiJKU09OINix2LTYqtmHIixlMTY0OiJFLjE2NCDYudiv2K8iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLZiNix2YjYr9uMIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi2LnYr9ivIixhcnJheToi2KLYsdin24zZhyJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DZiNix2YjYr9uMINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0g2YXbjOKAjNio2YjYr9iMICR7c30g2K/YsduM2KfZgdiqINi02K9gOmDZiNix2YjYr9uMINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiAke2l9INmF24zigIzYqNmI2K/YjCAke3N9INiv2LHbjNin2YHYqiDYtNivYH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DZiNix2YjYr9uMINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiAke2soZS52YWx1ZXNbMF0pfSDZhduM4oCM2KjZiNivYDpg2q/YstuM2YbZhyDZhtin2YXYudiq2KjYsTog2YXbjOKAjNio2KfbjNiz2Kog24zaqduMINin2LIgJHskKGUudmFsdWVzLCJ8Iil9INmF24zigIzYqNmI2K9gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g2K7bjNmE24wg2KjYstix2q86ICR7ZS5vcmlnaW4/PyLZhdmC2K/Yp9ixIn0g2KjYp9uM2K8gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i2LnZhti12LEifSDYqNin2LTYr2A6YNiu24zZhNuMINio2LLYsdqvOiAke2Uub3JpZ2luPz8i2YXZgtiv2KfYsSJ9INio2KfbjNivICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSDYqNin2LTYr2B9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNiu24zZhNuMINqp2YjahtqpOiAke2Uub3JpZ2lufSDYqNin24zYryAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9INio2KfYtNivYDpg2K7bjNmE24wg2qnZiNqG2qk6ICR7ZS5vcmlnaW59INio2KfbjNivICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSDYqNin2LTYr2B9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DYsdi02KrZhyDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2KjYpyAiJHtpLnByZWZpeH0iINi02LHZiNi5INi02YjYr2A6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g2LHYtNiq2Ycg2YbYp9mF2LnYqtio2LE6INio2KfbjNivINio2KcgIiR7aS5zdWZmaXh9IiDYqtmF2KfZhSDYtNmI2K9gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g2LHYtNiq2Ycg2YbYp9mF2LnYqtio2LE6INio2KfbjNivINi02KfZhdmEICIke2kuaW5jbHVkZXN9IiDYqNin2LTYr2A6aS5mb3JtYXQ9PT0icmVnZXgiP2DYsdi02KrZhyDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2KjYpyDYp9mE2q/ZiNuMICR7aS5wYXR0ZXJufSDZhdi32KfYqNmC2Kog2K/Yp9i02KrZhyDYqNin2LTYr2A6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSDZhtin2YXYudiq2KjYsWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDYudiv2K8g2YbYp9mF2LnYqtio2LE6INio2KfbjNivINmF2LbYsdioICR7ZS5kaXZpc29yfSDYqNin2LTYr2A7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNqp2YTbjNivJHtlLmtleXMubGVuZ3RoPjE/ItmH2KfbjCI6IiJ9INmG2KfYtNmG2KfYszogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDaqdmE24zYryDZhtin2LTZhtin2LMg2K/YsSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i2YjYsdmI2K/bjCDZhtin2YXYudiq2KjYsSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDZhdmC2K/Yp9ixINmG2KfZhdi52KrYqNixINiv2LEgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItmI2LHZiNiv24wg2YbYp9mF2LnYqtio2LEifX19O2Z1bmN0aW9uIHRmKCl7cmV0dXJue2xvY2FsZUVycm9yOmVmKCl9fWNvbnN0IG5mPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJtZXJra2nDpCIsc3ViamVjdDoibWVya2tpam9ub24ifSxmaWxlOnt1bml0OiJ0YXZ1YSIsc3ViamVjdDoidGllZG9zdG9uIn0sYXJyYXk6e3VuaXQ6ImFsa2lvdGEiLHN1YmplY3Q6Imxpc3RhbiJ9LHNldDp7dW5pdDoiYWxraW90YSIsc3ViamVjdDoiam91a29uIn0sbnVtYmVyOnt1bml0OiIiLHN1YmplY3Q6Imx1dnVuIn0sYmlnaW50Ont1bml0OiIiLHN1YmplY3Q6InN1dXJlbiBrb2tvbmFpc2x1dnVuIn0saW50Ont1bml0OiIiLHN1YmplY3Q6Imtva29uYWlzbHV2dW4ifSxkYXRlOnt1bml0OiIiLHN1YmplY3Q6InDDpGl2w6Rtw6TDpHLDpG4ifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoic8Okw6RubsO2bGxpbmVuIGxhdXNla2UiLGVtYWlsOiJzw6Roa8O2cG9zdGlvc29pdGUiLHVybDoiVVJMLW9zb2l0ZSIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08tYWlrYWxlaW1hIixkYXRlOiJJU08tcMOkaXbDpG3DpMOkcsOkIix0aW1lOiJJU08tYWlrYSIsZHVyYXRpb246IklTTy1rZXN0byIsaXB2NDoiSVB2NC1vc29pdGUiLGlwdjY6IklQdjYtb3NvaXRlIixjaWRydjQ6IklQdjQtYWx1ZSIsY2lkcnY2OiJJUHY2LWFsdWUiLGJhc2U2NDoiYmFzZTY0LWtvb2RhdHR1IG1lcmtraWpvbm8iLGJhc2U2NHVybDoiYmFzZTY0dXJsLWtvb2RhdHR1IG1lcmtraWpvbm8iLGpzb25fc3RyaW5nOiJKU09OLW1lcmtraWpvbm8iLGUxNjQ6IkUuMTY0LWx1a3UiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJ0ZW1wbGFhdHRpbWVya2tpam9ubyJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFZpcmhlZWxsaW5lbiB0eXlwcGk6IG9kb3RldHRpaW4gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBvbGkgJHtzfWA6YFZpcmhlZWxsaW5lbiB0eXlwcGk6IG9kb3RldHRpaW4gJHtpfSwgb2xpICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgb2xsYSAke2soZS52YWx1ZXNbMF0pfWA6YFZpcmhlZWxsaW5lbiB2YWxpbnRhOiB0w6R5dHl5IG9sbGEgeWtzaSBzZXVyYWF2aXN0YTogJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YExpaWFuIHN1dXJpOiAke2Euc3ViamVjdH0gdMOkeXR5eSBvbGxhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdH1gLnRyaW0oKTpgTGlpYW4gc3V1cmk6IGFydm9uIHTDpHl0eXkgb2xsYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BMaWlhbiBwaWVuaTogJHthLnN1YmplY3R9IHTDpHl0eXkgb2xsYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YC50cmltKCk6YExpaWFuIHBpZW5pOiBhcnZvbiB0w6R5dHl5IG9sbGEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgYWxrYWEgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gVmlyaGVlbGxpbmVuIHN5w7Z0ZTogdMOkeXR5eSBsb3BwdWEgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BWaXJoZWVsbGluZW4gc3nDtnRlOiB0w6R5dHl5IHNpc8OkbHTDpMOkICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BWaXJoZWVsbGluZW4gc3nDtnRlOiB0w6R5dHl5IHZhc3RhdGEgc8Okw6RubsO2bGxpc3TDpCBsYXVzZWtldHRhICR7aS5wYXR0ZXJufWA6YFZpcmhlZWxsaW5lbiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gVmlyaGVlbGxpbmVuIGx1a3U6IHTDpHl0eXkgb2xsYSBsdXZ1biAke2UuZGl2aXNvcn0gbW9uaWtlcnRhYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/IlR1bnRlbWF0dG9tYXQgYXZhaW1ldCI6IlR1bnRlbWF0b24gYXZhaW4ifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybiJWaXJoZWVsbGluZW4gYXZhaW4gdGlldHVlZXNzYSI7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iVmlyaGVlbGxpbmVuIHVuaW9uaSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybiJWaXJoZWVsbGluZW4gYXJ2byBqb3Vrb3NzYSI7ZGVmYXVsdDpyZXR1cm4iVmlyaGVlbGxpbmVuIHN5w7Z0ZSJ9fX07ZnVuY3Rpb24gcmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6bmYoKX19Y29uc3Qgb2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcmFjdMOocmVzIix2ZXJiOiJhdm9pciJ9LGZpbGU6e3VuaXQ6Im9jdGV0cyIsdmVyYjoiYXZvaXIifSxhcnJheTp7dW5pdDoiw6lsw6ltZW50cyIsdmVyYjoiYXZvaXIifSxzZXQ6e3VuaXQ6IsOpbMOpbWVudHMiLHZlcmI6ImF2b2lyIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImVudHLDqWUiLGVtYWlsOiJhZHJlc3NlIGUtbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0ZSBldCBoZXVyZSBJU08iLGRhdGU6ImRhdGUgSVNPIix0aW1lOiJoZXVyZSBJU08iLGR1cmF0aW9uOiJkdXLDqWUgSVNPIixpcHY0OiJhZHJlc3NlIElQdjQiLGlwdjY6ImFkcmVzc2UgSVB2NiIsY2lkcnY0OiJwbGFnZSBJUHY0IixjaWRydjY6InBsYWdlIElQdjYiLGJhc2U2NDoiY2hhw65uZSBlbmNvZMOpZSBlbiBiYXNlNjQiLGJhc2U2NHVybDoiY2hhw65uZSBlbmNvZMOpZSBlbiBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJjaGHDrm5lIEpTT04iLGUxNjQ6Im51bcOpcm8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbnRyw6llIn0sbz17c3RyaW5nOiJjaGHDrm5lIixudW1iZXI6Im5vbWJyZSIsaW50OiJlbnRpZXIiLGJvb2xlYW46ImJvb2zDqWVuIixiaWdpbnQ6ImdyYW5kIGVudGllciIsc3ltYm9sOiJzeW1ib2xlIix1bmRlZmluZWQ6ImluZMOpZmluaSIsbnVsbDoibnVsbCIsbmV2ZXI6ImphbWFpcyIsdm9pZDoidmlkZSIsZGF0ZToiZGF0ZSIsYXJyYXk6InRhYmxlYXUiLG9iamVjdDoib2JqZXQiLHR1cGxlOiJ0dXBsZSIscmVjb3JkOiJlbnJlZ2lzdHJlbWVudCIsbWFwOiJjYXJ0ZSIsc2V0OiJlbnNlbWJsZSIsZmlsZToiZmljaGllciIsbm9ub3B0aW9uYWw6Im5vbi1vcHRpb25uZWwiLG5hbjoiTmFOIixmdW5jdGlvbjoiZm9uY3Rpb24ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gRW50csOpZSBpbnZhbGlkZSA6IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSBhdHRlbmR1LCAke3N9IHJlw6d1YDpgRW50csOpZSBpbnZhbGlkZSA6ICR7aX0gYXR0ZW5kdSwgJHtzfSByZcOndWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gRW50csOpZSBpbnZhbGlkZSA6ICR7ayhlLnZhbHVlc1swXSl9IGF0dGVuZHVgOmBPcHRpb24gaW52YWxpZGUgOiB1bmUgdmFsZXVyIHBhcm1pICR7JChlLnZhbHVlcywifCIpfSBhdHRlbmR1ZWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUcm9wIGdyYW5kIDogJHtvW2Uub3JpZ2luXT8/InZhbGV1ciJ9IGRvaXQgJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IsOpbMOpbWVudChzKSJ9YDpgVHJvcCBncmFuZCA6ICR7b1tlLm9yaWdpbl0/PyJ2YWxldXIifSBkb2l0IMOqdHJlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRyb3AgcGV0aXQgOiAke29bZS5vcmlnaW5dPz8idmFsZXVyIn0gZG9pdCAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRyb3AgcGV0aXQgOiAke29bZS5vcmlnaW5dPz8idmFsZXVyIn0gZG9pdCDDqnRyZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgY29tbWVuY2VyIHBhciAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBzZSB0ZXJtaW5lciBwYXIgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBpbmNsdXJlICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBjb3JyZXNwb25kcmUgYXUgbW9kw6hsZSAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0gaW52YWxpZGVgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTm9tYnJlIGludmFsaWRlIDogZG9pdCDDqnRyZSB1biBtdWx0aXBsZSBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDbMOpJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSBub24gcmVjb25udWUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IDogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDbMOpIGludmFsaWRlIGRhbnMgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkVudHLDqWUgaW52YWxpZGUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsZXVyIGludmFsaWRlIGRhbnMgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkVudHLDqWUgaW52YWxpZGUifX19O2Z1bmN0aW9uIGFmKCl7cmV0dXJue2xvY2FsZUVycm9yOm9mKCl9fWNvbnN0IHNmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJjYXJhY3TDqHJlcyIsdmVyYjoiYXZvaXIifSxmaWxlOnt1bml0OiJvY3RldHMiLHZlcmI6ImF2b2lyIn0sYXJyYXk6e3VuaXQ6IsOpbMOpbWVudHMiLHZlcmI6ImF2b2lyIn0sc2V0Ont1bml0OiLDqWzDqW1lbnRzIix2ZXJiOiJhdm9pciJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJlbnRyw6llIixlbWFpbDoiYWRyZXNzZSBjb3VycmllbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0ZS1oZXVyZSBJU08iLGRhdGU6ImRhdGUgSVNPIix0aW1lOiJoZXVyZSBJU08iLGR1cmF0aW9uOiJkdXLDqWUgSVNPIixpcHY0OiJhZHJlc3NlIElQdjQiLGlwdjY6ImFkcmVzc2UgSVB2NiIsY2lkcnY0OiJwbGFnZSBJUHY0IixjaWRydjY6InBsYWdlIElQdjYiLGJhc2U2NDoiY2hhw65uZSBlbmNvZMOpZSBlbiBiYXNlNjQiLGJhc2U2NHVybDoiY2hhw65uZSBlbmNvZMOpZSBlbiBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJjaGHDrm5lIEpTT04iLGUxNjQ6Im51bcOpcm8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbnRyw6llIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gRW50csOpZSBpbnZhbGlkZSA6IGF0dGVuZHUgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCByZcOndSAke3N9YDpgRW50csOpZSBpbnZhbGlkZSA6IGF0dGVuZHUgJHtpfSwgcmXDp3UgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gRW50csOpZSBpbnZhbGlkZSA6IGF0dGVuZHUgJHtrKGUudmFsdWVzWzBdKX1gOmBPcHRpb24gaW52YWxpZGUgOiBhdHRlbmR1IGwndW5lIGRlcyB2YWxldXJzIHN1aXZhbnRlcyAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuKJpCI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRyb3AgZ3JhbmQgOiBhdHRlbmR1IHF1ZSAke2Uub3JpZ2luPz8ibGEgdmFsZXVyIn0gYWl0ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUcm9wIGdyYW5kIDogYXR0ZW5kdSBxdWUgJHtlLm9yaWdpbj8/ImxhIHZhbGV1ciJ9IHNvaXQgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuKJpSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRyb3AgcGV0aXQgOiBhdHRlbmR1IHF1ZSAke2Uub3JpZ2lufSBhaXQgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRyb3AgcGV0aXQgOiBhdHRlbmR1IHF1ZSAke2Uub3JpZ2lufSBzb2l0ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBjb21tZW5jZXIgcGFyICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IHNlIHRlcm1pbmVyIHBhciAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGluY2x1cmUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGNvcnJlc3BvbmRyZSBhdSBtb3RpZiAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0gaW52YWxpZGVgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTm9tYnJlIGludmFsaWRlIDogZG9pdCDDqnRyZSB1biBtdWx0aXBsZSBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDbMOpJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSBub24gcmVjb25udWUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IDogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDbMOpIGludmFsaWRlIGRhbnMgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkVudHLDqWUgaW52YWxpZGUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsZXVyIGludmFsaWRlIGRhbnMgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkVudHLDqWUgaW52YWxpZGUifX19O2Z1bmN0aW9uIGNmKCl7cmV0dXJue2xvY2FsZUVycm9yOnNmKCl9fWNvbnN0IHVmPSgpPT57Y29uc3QgdD17c3RyaW5nOntsYWJlbDoi157Xl9eo15XXlteqIixnZW5kZXI6ImYifSxudW1iZXI6e2xhYmVsOiLXnteh16TXqCIsZ2VuZGVyOiJtIn0sYm9vbGVhbjp7bGFiZWw6Itei16jXmiDXkdeV15zXmdeQ16DXmSIsZ2VuZGVyOiJtIn0sYmlnaW50OntsYWJlbDoiQmlnSW50IixnZW5kZXI6Im0ifSxkYXRlOntsYWJlbDoi16rXkNeo15nXmiIsZ2VuZGVyOiJtIn0sYXJyYXk6e2xhYmVsOiLXntei16jXmiIsZ2VuZGVyOiJtIn0sb2JqZWN0OntsYWJlbDoi15DXldeR15nXmden15giLGdlbmRlcjoibSJ9LG51bGw6e2xhYmVsOiLXoteo15og16jXmdenIChudWxsKSIsZ2VuZGVyOiJtIn0sdW5kZWZpbmVkOntsYWJlbDoi16LXqNeaINec15Ag157XldeS15PXqCAodW5kZWZpbmVkKSIsZ2VuZGVyOiJtIn0sc3ltYm9sOntsYWJlbDoi16HXmdee15HXldecIChTeW1ib2wpIixnZW5kZXI6Im0ifSxmdW5jdGlvbjp7bGFiZWw6Itek15XXoNen16bXmdeUIixnZW5kZXI6ImYifSxtYXA6e2xhYmVsOiLXntek15QgKE1hcCkiLGdlbmRlcjoiZiJ9LHNldDp7bGFiZWw6Iten15HXldem15QgKFNldCkiLGdlbmRlcjoiZiJ9LGZpbGU6e2xhYmVsOiLXp9eV15HXpSIsZ2VuZGVyOiJtIn0scHJvbWlzZTp7bGFiZWw6IlByb21pc2UiLGdlbmRlcjoibSJ9LE5hTjp7bGFiZWw6Ik5hTiIsZ2VuZGVyOiJtIn0sdW5rbm93bjp7bGFiZWw6Itei16jXmiDXnNeQINeZ15PXldeiIixnZW5kZXI6Im0ifSx2YWx1ZTp7bGFiZWw6Itei16jXmiIsZ2VuZGVyOiJtIn19LG49e3N0cmluZzp7dW5pdDoi16rXldeV15nXnSIsc2hvcnRMYWJlbDoi16fXpteoIixsb25nTGFiZWw6IteQ16jXldeaIn0sZmlsZTp7dW5pdDoi15HXmdeZ15jXmdedIixzaG9ydExhYmVsOiLXp9eY158iLGxvbmdMYWJlbDoi15LXk9eV15wifSxhcnJheTp7dW5pdDoi16TXqNeZ15jXmdedIixzaG9ydExhYmVsOiLXp9eY158iLGxvbmdMYWJlbDoi15LXk9eV15wifSxzZXQ6e3VuaXQ6Itek16jXmdeY15nXnSIsc2hvcnRMYWJlbDoi16fXmNefIixsb25nTGFiZWw6IteS15PXldecIn0sbnVtYmVyOnt1bml0OiIiLHNob3J0TGFiZWw6Iten15jXnyIsbG9uZ0xhYmVsOiLXkteT15XXnCJ9fSxyPXU9PnU/dFt1XTp2b2lkIDAsbz11PT57Y29uc3QgbD1yKHUpO3JldHVybiBsP2wubGFiZWw6dT8/dC51bmtub3duLmxhYmVsfSxlPXU9PmDXlCR7byh1KX1gLGk9dT0+KHIodSk/LmdlbmRlcj8/Im0iKT09PSJmIj8i16bXqNeZ15vXlCDXnNeU15nXldeqIjoi16bXqNeZ15og15zXlNeZ15XXqiIsYT11PT51P25bdV0/P251bGw6bnVsbCxzPXtyZWdleDp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0sZW1haWw6e2xhYmVsOiLXm9eq15XXkdeqINeQ15nXnteZ15nXnCIsZ2VuZGVyOiJmIn0sdXJsOntsYWJlbDoi15vXqteV15HXqiDXqNep16oiLGdlbmRlcjoiZiJ9LGVtb2ppOntsYWJlbDoi15DXmdee15XXkifXmSIsZ2VuZGVyOiJtIn0sdXVpZDp7bGFiZWw6IlVVSUQiLGdlbmRlcjoibSJ9LG5hbm9pZDp7bGFiZWw6Im5hbm9pZCIsZ2VuZGVyOiJtIn0sZ3VpZDp7bGFiZWw6IkdVSUQiLGdlbmRlcjoibSJ9LGN1aWQ6e2xhYmVsOiJjdWlkIixnZW5kZXI6Im0ifSxjdWlkMjp7bGFiZWw6ImN1aWQyIixnZW5kZXI6Im0ifSx1bGlkOntsYWJlbDoiVUxJRCIsZ2VuZGVyOiJtIn0seGlkOntsYWJlbDoiWElEIixnZW5kZXI6Im0ifSxrc3VpZDp7bGFiZWw6IktTVUlEIixnZW5kZXI6Im0ifSxkYXRldGltZTp7bGFiZWw6Iteq15DXqNeZ15og15XXltee158gSVNPIixnZW5kZXI6Im0ifSxkYXRlOntsYWJlbDoi16rXkNeo15nXmiBJU08iLGdlbmRlcjoibSJ9LHRpbWU6e2xhYmVsOiLXltee158gSVNPIixnZW5kZXI6Im0ifSxkdXJhdGlvbjp7bGFiZWw6Itee16nXmiDXltee158gSVNPIixnZW5kZXI6Im0ifSxpcHY0OntsYWJlbDoi15vXqteV15HXqiBJUHY0IixnZW5kZXI6ImYifSxpcHY2OntsYWJlbDoi15vXqteV15HXqiBJUHY2IixnZW5kZXI6ImYifSxjaWRydjQ6e2xhYmVsOiLXmNeV15XXlyBJUHY0IixnZW5kZXI6Im0ifSxjaWRydjY6e2xhYmVsOiLXmNeV15XXlyBJUHY2IixnZW5kZXI6Im0ifSxiYXNlNjQ6e2xhYmVsOiLXnteX16jXldeW16og15HXkdeh15nXoSA2NCIsZ2VuZGVyOiJmIn0sYmFzZTY0dXJsOntsYWJlbDoi157Xl9eo15XXlteqINeR15HXodeZ16EgNjQg15zXm9eq15XXkdeV16og16jXqdeqIixnZW5kZXI6ImYifSxqc29uX3N0cmluZzp7bGFiZWw6Itee15fXqNeV15bXqiBKU09OIixnZW5kZXI6ImYifSxlMTY0OntsYWJlbDoi157Xodek16ggRS4xNjQiLGdlbmRlcjoibSJ9LGp3dDp7bGFiZWw6IkpXVCIsZ2VuZGVyOiJtIn0sZW5kc193aXRoOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifSxpbmNsdWRlczp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0sbG93ZXJjYXNlOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifSxzdGFydHNfd2l0aDp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0sdXBwZXJjYXNlOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifX0sYz17bmFuOiJOYU4ifTtyZXR1cm4gdT0+e3N3aXRjaCh1LmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgbD11LmV4cGVjdGVkLGc9Y1tsPz8iIl0/P28obCksdj1TKHUuaW5wdXQpLF89Y1t2XT8/dFt2XT8ubGFiZWw/P3Y7cmV0dXJuL15bQS1aXS8udGVzdCh1LmV4cGVjdGVkKT9g16fXnNeYINec15Ag16rXp9eZ1586INem16jXmdeaINec15TXmdeV16ogaW5zdGFuY2VvZiAke3UuZXhwZWN0ZWR9LCDXlNeq16fXkdecICR7X31gOmDXp9ec15gg15zXkCDXqten15nXnzog16bXqNeZ15og15zXlNeZ15XXqiAke2d9LCDXlNeq16fXkdecICR7X31gfWNhc2UiaW52YWxpZF92YWx1ZSI6e2lmKHUudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYNei16jXmiDXnNeQINeq16fXmdefOiDXlNei16jXmiDXl9eZ15nXkSDXnNeU15nXldeqICR7ayh1LnZhbHVlc1swXSl9YDtjb25zdCBsPXUudmFsdWVzLm1hcChfPT5rKF8pKTtpZih1LnZhbHVlcy5sZW5ndGg9PT0yKXJldHVybmDXoteo15og15zXkCDXqten15nXnzog15TXkNek16nXqNeV15nXldeqINeU157XqteQ15nXnteV16og15TXnyAke2xbMF19INeQ15UgJHtsWzFdfWA7Y29uc3QgZz1sW2wubGVuZ3RoLTFdO3JldHVybmDXoteo15og15zXkCDXqten15nXnzog15TXkNek16nXqNeV15nXldeqINeU157XqteQ15nXnteV16og15TXnyAke2wuc2xpY2UoMCwtMSkuam9pbigiLCAiKX0g15DXlSAke2d9YH1jYXNlInRvb19iaWciOntjb25zdCBsPWEodS5vcmlnaW4pLGc9ZSh1Lm9yaWdpbj8/InZhbHVlIik7aWYodS5vcmlnaW49PT0ic3RyaW5nIilyZXR1cm5gJHtsPy5sb25nTGFiZWw/PyLXkNeo15XXmiJ9INee15PXmTogJHtnfSDXpteo15nXm9eUINec15TXm9eZ15wgJHt1Lm1heGltdW0udG9TdHJpbmcoKX0gJHtsPy51bml0Pz8iIn0gJHt1LmluY2x1c2l2ZT8i15DXlSDXpNeX15XXqiI6Itec15vXnCDXlNeZ15XXqteoIn1gLnRyaW0oKTtpZih1Lm9yaWdpbj09PSJudW1iZXIiKXtjb25zdCB5PXUuaW5jbHVzaXZlP2DXp9eY158g15DXlSDXqdeV15XXlCDXnC0ke3UubWF4aW11bX1gOmDXp9eY158g154tJHt1Lm1heGltdW19YDtyZXR1cm5g15LXk9eV15wg157Xk9eZOiAke2d9INem16jXmdeaINec15TXmdeV16ogJHt5fWB9aWYodS5vcmlnaW49PT0iYXJyYXkifHx1Lm9yaWdpbj09PSJzZXQiKXtjb25zdCB5PXUub3JpZ2luPT09InNldCI/Item16jXmdeb15QiOiLXpteo15nXmiIsSj11LmluY2x1c2l2ZT9gJHt1Lm1heGltdW19ICR7bD8udW5pdD8/IiJ9INeQ15Ug16TXl9eV16pgOmDXpNeX15XXqiDXni0ke3UubWF4aW11bX0gJHtsPy51bml0Pz8iIn1gO3JldHVybmDXkteT15XXnCDXnteT15k6ICR7Z30gJHt5fSDXnNeU15vXmdecICR7Sn1gLnRyaW0oKX1jb25zdCB2PXUuaW5jbHVzaXZlPyI8PSI6IjwiLF89aSh1Lm9yaWdpbj8/InZhbHVlIik7cmV0dXJuIGw/LnVuaXQ/YCR7bC5sb25nTGFiZWx9INee15PXmTogJHtnfSAke199ICR7dn0ke3UubWF4aW11bS50b1N0cmluZygpfSAke2wudW5pdH1gOmAke2w/LmxvbmdMYWJlbD8/IteS15PXldecIn0g157Xk9eZOiAke2d9ICR7X30gJHt2fSR7dS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGw9YSh1Lm9yaWdpbiksZz1lKHUub3JpZ2luPz8idmFsdWUiKTtpZih1Lm9yaWdpbj09PSJzdHJpbmciKXJldHVybmAke2w/LnNob3J0TGFiZWw/PyLXp9em16gifSDXnteT15k6ICR7Z30g16bXqNeZ15vXlCDXnNeU15vXmdecICR7dS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7bD8udW5pdD8/IiJ9ICR7dS5pbmNsdXNpdmU/IteQ15Ug15nXldeq16giOiLXnNek15fXldeqIn1gLnRyaW0oKTtpZih1Lm9yaWdpbj09PSJudW1iZXIiKXtjb25zdCB5PXUuaW5jbHVzaXZlP2DXkteT15XXnCDXkNeVINep15XXldeUINecLSR7dS5taW5pbXVtfWA6YNeS15PXldecINeeLSR7dS5taW5pbXVtfWA7cmV0dXJuYNen15jXnyDXnteT15k6ICR7Z30g16bXqNeZ15og15zXlNeZ15XXqiAke3l9YH1pZih1Lm9yaWdpbj09PSJhcnJheSJ8fHUub3JpZ2luPT09InNldCIpe2NvbnN0IHk9dS5vcmlnaW49PT0ic2V0Ij8i16bXqNeZ15vXlCI6Item16jXmdeaIjtpZih1Lm1pbmltdW09PT0xJiZ1LmluY2x1c2l2ZSl7Y29uc3QgQT0odS5vcmlnaW49PT0ic2V0Iiwi15zXpNeX15XXqiDXpNeo15nXmCDXkNeX15MiKTtyZXR1cm5g16fXmNefINee15PXmTogJHtnfSAke3l9INec15TXm9eZ15wgJHtBfWB9Y29uc3QgSj11LmluY2x1c2l2ZT9gJHt1Lm1pbmltdW19ICR7bD8udW5pdD8/IiJ9INeQ15Ug15nXldeq16hgOmDXmdeV16rXqCDXni0ke3UubWluaW11bX0gJHtsPy51bml0Pz8iIn1gO3JldHVybmDXp9eY158g157Xk9eZOiAke2d9ICR7eX0g15zXlNeb15nXnCAke0p9YC50cmltKCl9Y29uc3Qgdj11LmluY2x1c2l2ZT8iPj0iOiI+IixfPWkodS5vcmlnaW4/PyJ2YWx1ZSIpO3JldHVybiBsPy51bml0P2Ake2wuc2hvcnRMYWJlbH0g157Xk9eZOiAke2d9ICR7X30gJHt2fSR7dS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7bC51bml0fWA6YCR7bD8uc2hvcnRMYWJlbD8/Iten15jXnyJ9INee15PXmTogJHtnfSAke199ICR7dn0ke3UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGw9dTtpZihsLmZvcm1hdD09PSJzdGFydHNfd2l0aCIpcmV0dXJuYNeU157Xl9eo15XXlteqINeX15nXmdeR16og15zXlNeq15fXmdecINeRICIke2wucHJlZml4fSJgO2lmKGwuZm9ybWF0PT09ImVuZHNfd2l0aCIpcmV0dXJuYNeU157Xl9eo15XXlteqINeX15nXmdeR16og15zXlNeh16rXmdeZ150g15EgIiR7bC5zdWZmaXh9ImA7aWYobC5mb3JtYXQ9PT0iaW5jbHVkZXMiKXJldHVybmDXlNee15fXqNeV15bXqiDXl9eZ15nXkdeqINec15vXnNeV15wgIiR7bC5pbmNsdWRlc30iYDtpZihsLmZvcm1hdD09PSJyZWdleCIpcmV0dXJuYNeU157Xl9eo15XXlteqINeX15nXmdeR16og15zXlNeq15DXmdedINec16rXkdeg15nXqiAke2wucGF0dGVybn1gO2NvbnN0IGc9c1tsLmZvcm1hdF0sdj1nPy5sYWJlbD8/bC5mb3JtYXQseT0oZz8uZ2VuZGVyPz8ibSIpPT09ImYiPyLXqten15nXoNeUIjoi16rXp9eZ158iO3JldHVybmAke3Z9INec15AgJHt5fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDXnteh16TXqCDXnNeQINeq16fXmdefOiDXl9eZ15nXkSDXnNeU15nXldeqINee15vXpNec15Qg16nXnCAke3UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDXntek16rXlyR7dS5rZXlzLmxlbmd0aD4xPyLXldeqIjoiIn0g15zXkCDXnteW15XXlCR7dS5rZXlzLmxlbmd0aD4xPyLXmdedIjoi15QifTogJHskKHUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybiLXqdeT15Qg15zXkCDXqten15nXnyDXkdeQ15XXkdeZ15nXp9eYIjtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLXp9ec15gg15zXkCDXqten15nXnyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDXoteo15og15zXkCDXqten15nXnyDXkSR7ZSh1Lm9yaWdpbj8/ImFycmF5Iil9YDtkZWZhdWx0OnJldHVybiLXp9ec15gg15zXkCDXqten15nXnyJ9fX07ZnVuY3Rpb24gbGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6dWYoKX19Y29uc3QgZGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InpuYWtvdmEiLHZlcmI6ImltYXRpIn0sZmlsZTp7dW5pdDoiYmFqdG92YSIsdmVyYjoiaW1hdGkifSxhcnJheTp7dW5pdDoic3RhdmtpIix2ZXJiOiJpbWF0aSJ9LHNldDp7dW5pdDoic3RhdmtpIix2ZXJiOiJpbWF0aSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJ1bm9zIixlbWFpbDoiZW1haWwgYWRyZXNhIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0dW0gaSB2cmlqZW1lIixkYXRlOiJJU08gZGF0dW0iLHRpbWU6IklTTyB2cmlqZW1lIixkdXJhdGlvbjoiSVNPIHRyYWphbmplIixpcHY0OiJJUHY0IGFkcmVzYSIsaXB2NjoiSVB2NiBhZHJlc2EiLGNpZHJ2NDoiSVB2NCByYXNwb24iLGNpZHJ2NjoiSVB2NiByYXNwb24iLGJhc2U2NDoiYmFzZTY0IGtvZGlyYW5pIHRla3N0IixiYXNlNjR1cmw6ImJhc2U2NHVybCBrb2RpcmFuaSB0ZWtzdCIsanNvbl9zdHJpbmc6IkpTT04gdGVrc3QiLGUxNjQ6IkUuMTY0IGJyb2oiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJ1bm9zIn0sbz17bmFuOiJOYU4iLHN0cmluZzoidGVrc3QiLG51bWJlcjoiYnJvaiIsYm9vbGVhbjoiYm9vbGVhbiIsYXJyYXk6Im5peiIsb2JqZWN0OiJvYmpla3QiLHNldDoic2t1cCIsZmlsZToiZGF0b3Rla2EiLGRhdGU6ImRhdHVtIixiaWdpbnQ6ImJpZ2ludCIsc3ltYm9sOiJzaW1ib2wiLHVuZGVmaW5lZDoidW5kZWZpbmVkIixudWxsOiJudWxsIixmdW5jdGlvbjoiZnVua2NpamEiLG1hcDoibWFwYSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BOZWlzcHJhdmFuIHVub3M6IG/EjWVrdWplIHNlIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgYSBwcmltbGplbm8gamUgJHtzfWA6YE5laXNwcmF2YW4gdW5vczogb8SNZWt1amUgc2UgJHtpfSwgYSBwcmltbGplbm8gamUgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gTmVpc3ByYXZuYSB2cmlqZWRub3N0OiBvxI1la2l2YW5vICR7ayhlLnZhbHVlc1swXSl9YDpgTmVpc3ByYXZuYSBvcGNpamE6IG/EjWVraXZhbm8gamVkbm8gb2QgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbikscz1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIGE/YFByZXZlbGlrbzogb8SNZWtpdmFubyBkYSAke3M/PyJ2cmlqZWRub3N0In0gaW1hICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbmF0YSJ9YDpgUHJldmVsaWtvOiBvxI1la2l2YW5vIGRhICR7cz8/InZyaWplZG5vc3QifSBidWRlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbikscz1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIGE/YFByZW1hbG86IG/EjWVraXZhbm8gZGEgJHtzfSBpbWEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFByZW1hbG86IG/EjWVraXZhbm8gZGEgJHtzfSBidWRlICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BOZWlzcHJhdmFuIHRla3N0OiBtb3JhIHphcG/EjWluamF0aSBzICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE5laXNwcmF2YW4gdGVrc3Q6IG1vcmEgemF2csWhYXZhdGkgcyAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE5laXNwcmF2YW4gdGVrc3Q6IG1vcmEgc2FkcsW+YXZhdGkgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YE5laXNwcmF2YW4gdGVrc3Q6IG1vcmEgb2Rnb3ZhcmF0aSB1em9ya3UgJHtpLnBhdHRlcm59YDpgTmVpc3ByYXZuYSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTmVpc3ByYXZhbiBicm9qOiBtb3JhIGJpdGkgdmnFoWVrcmF0bmlrIG9kICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5lcHJlcG96bmF0JHtlLmtleXMubGVuZ3RoPjE/Imkga2xqdcSNZXZpIjoiIGtsanXEjSJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5laXNwcmF2YW4ga2xqdcSNIHUgJHtvW2Uub3JpZ2luXT8/ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJOZWlzcHJhdmFuIHVub3MiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmVpc3ByYXZuYSB2cmlqZWRub3N0IHUgJHtvW2Uub3JpZ2luXT8/ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJOZWlzcHJhdmFuIHVub3MifX19O2Z1bmN0aW9uIG1mKCl7cmV0dXJue2xvY2FsZUVycm9yOmRmKCl9fWNvbnN0IHBmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJrYXJha3RlciIsdmVyYjoibGVneWVuIn0sZmlsZTp7dW5pdDoiYnl0ZSIsdmVyYjoibGVneWVuIn0sYXJyYXk6e3VuaXQ6ImVsZW0iLHZlcmI6ImxlZ3llbiJ9LHNldDp7dW5pdDoiZWxlbSIsdmVyYjoibGVneWVuIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImJlbWVuZXQiLGVtYWlsOiJlbWFpbCBjw61tIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gaWTFkWLDqWx5ZWciLGRhdGU6IklTTyBkw6F0dW0iLHRpbWU6IklTTyBpZMWRIixkdXJhdGlvbjoiSVNPIGlkxZFpbnRlcnZhbGx1bSIsaXB2NDoiSVB2NCBjw61tIixpcHY2OiJJUHY2IGPDrW0iLGNpZHJ2NDoiSVB2NCB0YXJ0b23DoW55IixjaWRydjY6IklQdjYgdGFydG9tw6FueSIsYmFzZTY0OiJiYXNlNjQta8OzZG9sdCBzdHJpbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWvDs2RvbHQgc3RyaW5nIixqc29uX3N0cmluZzoiSlNPTiBzdHJpbmciLGUxNjQ6IkUuMTY0IHN6w6FtIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiYmVtZW5ldCJ9LG89e25hbjoiTmFOIixudW1iZXI6InN6w6FtIixhcnJheToidMO2bWIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gw4lydsOpbnl0ZWxlbiBiZW1lbmV0OiBhIHbDoXJ0IMOpcnTDqWsgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBhIGthcG90dCDDqXJ0w6lrICR7c31gOmDDiXJ2w6lueXRlbGVuIGJlbWVuZXQ6IGEgdsOhcnQgw6lydMOpayAke2l9LCBhIGthcG90dCDDqXJ0w6lrICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YMOJcnbDqW55dGVsZW4gYmVtZW5ldDogYSB2w6FydCDDqXJ0w6lrICR7ayhlLnZhbHVlc1swXSl9YDpgw4lydsOpbnl0ZWxlbiBvcGNpw7M6IHZhbGFtZWx5aWsgw6lydMOpayB2w6FydCAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVMO6bCBuYWd5OiAke2Uub3JpZ2luPz8iw6lydMOpayJ9IG3DqXJldGUgdMO6bCBuYWd5ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW0ifWA6YFTDumwgbmFneTogYSBiZW1lbmV0aSDDqXJ0w6lrICR7ZS5vcmlnaW4/PyLDqXJ0w6lrIn0gdMO6bCBuYWd5OiAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUw7psIGtpY3NpOiBhIGJlbWVuZXRpIMOpcnTDqWsgJHtlLm9yaWdpbn0gbcOpcmV0ZSB0w7psIGtpY3NpICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUw7psIGtpY3NpOiBhIGJlbWVuZXRpIMOpcnTDqWsgJHtlLm9yaWdpbn0gdMO6bCBraWNzaSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gw4lydsOpbnl0ZWxlbiBzdHJpbmc6ICIke2kucHJlZml4fSIgw6lydMOpa2tlbCBrZWxsIGtlemTFkWRuaWVgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YMOJcnbDqW55dGVsZW4gc3RyaW5nOiAiJHtpLnN1ZmZpeH0iIMOpcnTDqWtrZWwga2VsbCB2w6lnesWRZG5pZWA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DDiXJ2w6lueXRlbGVuIHN0cmluZzogIiR7aS5pbmNsdWRlc30iIMOpcnTDqWtldCBrZWxsIHRhcnRhbG1hem5pYWA6aS5mb3JtYXQ9PT0icmVnZXgiP2DDiXJ2w6lueXRlbGVuIHN0cmluZzogJHtpLnBhdHRlcm59IG1pbnTDoW5hayBrZWxsIG1lZ2ZlbGVsbmllYDpgw4lydsOpbnl0ZWxlbiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gw4lydsOpbnl0ZWxlbiBzesOhbTogJHtlLmRpdmlzb3J9IHTDtmJic3rDtnLDtnPDqW5layBrZWxsIGxlbm5pZWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYElzbWVyZXRsZW4ga3VsY3Mke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYMOJcnbDqW55dGVsZW4ga3VsY3MgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIsOJcnbDqW55dGVsZW4gYmVtZW5ldCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDDiXJ2w6lueXRlbGVuIMOpcnTDqWs6ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLDiXJ2w6lueXRlbGVuIGJlbWVuZXQifX19O2Z1bmN0aW9uIGZmKCl7cmV0dXJue2xvY2FsZUVycm9yOnBmKCl9fWZ1bmN0aW9uIFVzKHQsbixyKXtyZXR1cm4gTWF0aC5hYnModCk9PT0xP246cn1mdW5jdGlvbiBMZSh0KXtpZighdClyZXR1cm4iIjtjb25zdCBuPVsi1aEiLCLVpSIsItWoIiwi1asiLCLVuCIsItW41oIiLCLWhSJdLHI9dFt0Lmxlbmd0aC0xXTtyZXR1cm4gdCsobi5pbmNsdWRlcyhyKT8i1bYiOiLVqCIpfWNvbnN0IGdmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OntvbmU6ItW21bfVodW2IixtYW55OiLVttW31aHVttW21aXWgCJ9LHZlcmI6ItW41oLVttWl1bbVodWsIn0sZmlsZTp7dW5pdDp7b25lOiLVotWh1bXVqSIsbWFueToi1aLVodW11anVpdaAIn0sdmVyYjoi1bjWgtW21aXVttWh1awifSxhcnJheTp7dW5pdDp7b25lOiLVv9Wh1oDWgCIsbWFueToi1b/VodaA1oDVpdaAIn0sdmVyYjoi1bjWgtW21aXVttWh1awifSxzZXQ6e3VuaXQ6e29uZToi1b/VodaA1oAiLG1hbnk6ItW/1aHWgNaA1aXWgCJ9LHZlcmI6ItW41oLVttWl1bbVodWsIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItW01bjWgtW/1oQiLGVtYWlsOiLVp9WsLiDVsNWh1b3WgdWlIix1cmw6IlVSTCIsZW1vamk6ItWn1bTVuNW71asiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDVodW01b3VodWp1avVviDWhyDVqtWh1bQiLGRhdGU6IklTTyDVodW01b3VodWp1avVviIsdGltZToiSVNPINWq1aHVtCIsZHVyYXRpb246IklTTyDVv9aH1bjVstW41oLVqdW11bjWgtW2IixpcHY0OiJJUHY0INWw1aHVvdaB1aUiLGlwdjY6IklQdjYg1bDVodW91oHVpSIsY2lkcnY0OiJJUHY0INW01avVu9Wh1a/VodW11oQiLGNpZHJ2NjoiSVB2NiDVtNWr1bvVodWv1aHVtdaEIixiYXNlNjQ6ImJhc2U2NCDVsdaH1aHVudWh1oPVuNW+INW/1bjVsiIsYmFzZTY0dXJsOiJiYXNlNjR1cmwg1bHWh9Wh1bnVodaD1bjVviDVv9W41bIiLGpzb25fc3RyaW5nOiJKU09OINW/1bjVsiIsZTE2NDoiRS4xNjQg1bDVodW01aHWgCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItW01bjWgtW/1oQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLVqdWr1b4iLGFycmF5OiLVptWh1bbVo9W+1aHVriJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW04oCkINW91brVodW91b7VuNaC1bQg1afWgCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINW91b/VodaB1b7VpdWsINWnICR7c31gOmDVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW04oCkINW91brVodW91b7VuNaC1bQg1afWgCAke2l9LCDVvdW/1aHWgdW+1aXVrCDVpyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW04oCkINW91brVodW91b7VuNaC1bQg1afWgCAke2soZS52YWx1ZXNbMV0pfWA6YNWN1a3VodWsINW/1aHWgNWi1aXWgNWh1a/igKQg1b3VutWh1b3VvtW41oLVtCDVp9aAINWw1aXVv9aH1bXVodWs1bbVpdaA1avWgSDVtNWl1a/VqNWdICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO2lmKGEpe2NvbnN0IHM9TnVtYmVyKGUubWF4aW11bSksYz1VcyhzLGEudW5pdC5vbmUsYS51bml0Lm1hbnkpO3JldHVybmDVidWh1oPVodWm1aHVttaBINW01aXVriDVodaA1arVpdaE4oCkINW91brVodW91b7VuNaC1bQg1acsINW41oAgJHtMZShlLm9yaWdpbj8/ItWh1oDVqtWl1oQiKX0g1a/VuNaC1bbVpdW21aEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Y31gfXJldHVybmDVidWh1oPVodWm1aHVttaBINW01aXVriDVodaA1arVpdaE4oCkINW91brVodW91b7VuNaC1bQg1acsINW41oAgJHtMZShlLm9yaWdpbj8/ItWh1oDVqtWl1oQiKX0g1azVq9W21asgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtpZihhKXtjb25zdCBzPU51bWJlcihlLm1pbmltdW0pLGM9VXMocyxhLnVuaXQub25lLGEudW5pdC5tYW55KTtyZXR1cm5g1YnVodaD1aHVptWh1bbWgSDWg9W41oTWgCDVodaA1arVpdaE4oCkINW91brVodW91b7VuNaC1bQg1acsINW41oAgJHtMZShlLm9yaWdpbil9INWv1bjWgtW21aXVttWhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2N9YH1yZXR1cm5g1YnVodaD1aHVptWh1bbWgSDWg9W41oTWgCDVodaA1arVpdaE4oCkINW91brVodW91b7VuNaC1bQg1acsINW41oAgJHtMZShlLm9yaWdpbil9INWs1avVttWrICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DVjdWt1aHVrCDVv9W41bLigKQg1brVpdW/1oQg1acg1b3Vr9W91b7VqyAiJHtpLnByZWZpeH0iLdW41b5gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNWN1a3VodWsINW/1bjVsuKApCDVutWl1b/WhCDVpyDVodW+1aHWgNW/1b7VqyAiJHtpLnN1ZmZpeH0iLdW41b5gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g1Y3VrdWh1awg1b/VuNWy4oCkINW61aXVv9aEINWnINW61aHWgNW41oLVttWh1a/VqyAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g1Y3VrdWh1awg1b/VuNWy4oCkINW61aXVv9aEINWnINWw1aHVtNWh1brVodW/1aHVvdWt1aHVttWrICR7aS5wYXR0ZXJufSDVsdaH1aHVudWh1oPVq9W2YDpg1Y3VrdWh1awgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNWN1a3VodWsINWp1avVvuKApCDVutWl1b/WhCDVpyDVotWh1abVtNWh1brVodW/1avVryDVrNWr1bbVqyAke2UuZGl2aXNvcn0t1atgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDVidWz1aHVttWh1bnVvtWh1a4g1aLVodW21aHVrNWrJHtlLmtleXMubGVuZ3RoPjE/ItW21aXWgCI6IiJ9LiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNWN1a3VodWsINWi1aHVttWh1azVqyAke0xlKGUub3JpZ2luKX0t1bjWgtW0YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNWN1a3VodWsINWh1oDVqtWl1oQgJHtMZShlLm9yaWdpbil9LdW41oLVtGA7ZGVmYXVsdDpyZXR1cm4i1Y3VrdWh1awg1bTVuNaC1b/WhNWh1aPWgNW41oLVtCJ9fX07ZnVuY3Rpb24gdmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6Z2YoKX19Y29uc3QgaGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImthcmFrdGVyIix2ZXJiOiJtZW1pbGlraSJ9LGZpbGU6e3VuaXQ6ImJ5dGUiLHZlcmI6Im1lbWlsaWtpIn0sYXJyYXk6e3VuaXQ6Iml0ZW0iLHZlcmI6Im1lbWlsaWtpIn0sc2V0Ont1bml0OiJpdGVtIix2ZXJiOiJtZW1pbGlraSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImFsYW1hdCBlbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToidGFuZ2dhbCBkYW4gd2FrdHUgZm9ybWF0IElTTyIsZGF0ZToidGFuZ2dhbCBmb3JtYXQgSVNPIix0aW1lOiJqYW0gZm9ybWF0IElTTyIsZHVyYXRpb246ImR1cmFzaSBmb3JtYXQgSVNPIixpcHY0OiJhbGFtYXQgSVB2NCIsaXB2NjoiYWxhbWF0IElQdjYiLGNpZHJ2NDoicmVudGFuZyBhbGFtYXQgSVB2NCIsY2lkcnY2OiJyZW50YW5nIGFsYW1hdCBJUHY2IixiYXNlNjQ6InN0cmluZyBkZW5nYW4gZW5rb2RlIGJhc2U2NCIsYmFzZTY0dXJsOiJzdHJpbmcgZGVuZ2FuIGVua29kZSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJzdHJpbmcgSlNPTiIsZTE2NDoiYW5na2EgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YElucHV0IHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZGl0ZXJpbWEgJHtzfWA6YElucHV0IHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuICR7aX0sIGRpdGVyaW1hICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YElucHV0IHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuICR7ayhlLnZhbHVlc1swXSl9YDpgUGlsaWhhbiB0aWRhayB2YWxpZDogZGloYXJhcGthbiBzYWxhaCBzYXR1IGRhcmkgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRlcmxhbHUgYmVzYXI6IGRpaGFyYXBrYW4gJHtlLm9yaWdpbj8/InZhbHVlIn0gbWVtaWxpa2kgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVuIn1gOmBUZXJsYWx1IGJlc2FyOiBkaWhhcmFwa2FuICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IG1lbmphZGkgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVGVybGFsdSBrZWNpbDogZGloYXJhcGthbiAke2Uub3JpZ2lufSBtZW1pbGlraSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVGVybGFsdSBrZWNpbDogZGloYXJhcGthbiAke2Uub3JpZ2lufSBtZW5qYWRpICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BTdHJpbmcgdGlkYWsgdmFsaWQ6IGhhcnVzIGRpbXVsYWkgZGVuZ2FuICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFN0cmluZyB0aWRhayB2YWxpZDogaGFydXMgYmVyYWtoaXIgZGVuZ2FuICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBtZW55ZXJ0YWthbiAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBzZXN1YWkgcG9sYSAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0gdGlkYWsgdmFsaWRgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gQW5na2EgdGlkYWsgdmFsaWQ6IGhhcnVzIGtlbGlwYXRhbiBkYXJpICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYEt1bmNpIHRpZGFrIGRpa2VuYWxpICR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gS3VuY2kgdGlkYWsgdmFsaWQgZGkgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIklucHV0IHRpZGFrIHZhbGlkIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5pbGFpIHRpZGFrIHZhbGlkIGRpICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJJbnB1dCB0aWRhayB2YWxpZCJ9fX07ZnVuY3Rpb24gX2YoKXtyZXR1cm57bG9jYWxlRXJyb3I6aGYoKX19Y29uc3QgJGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InN0YWZpIix2ZXJiOiJhw7AgaGFmYSJ9LGZpbGU6e3VuaXQ6ImLDpnRpIix2ZXJiOiJhw7AgaGFmYSJ9LGFycmF5Ont1bml0OiJobHV0aSIsdmVyYjoiYcOwIGhhZmEifSxzZXQ6e3VuaXQ6ImhsdXRpIix2ZXJiOiJhw7AgaGFmYSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJnaWxkaSIsZW1haWw6Im5ldGZhbmciLHVybDoidmVmc2zDs8OwIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYWdzZXRuaW5nIG9nIHTDrW1pIixkYXRlOiJJU08gZGFnc2V0bmluZyIsdGltZToiSVNPIHTDrW1pIixkdXJhdGlvbjoiSVNPIHTDrW1hbGVuZ2QiLGlwdjQ6IklQdjQgYWRkcmVzcyIsaXB2NjoiSVB2NiBhZGRyZXNzIixjaWRydjQ6IklQdjQgcmFuZ2UiLGNpZHJ2NjoiSVB2NiByYW5nZSIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCBzdHJlbmd1ciIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5jb2RlZCBzdHJlbmd1ciIsanNvbl9zdHJpbmc6IkpTT04gc3RyZW5ndXIiLGUxNjQ6IkUuMTY0IHTDtmx1Z2lsZGkiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJnaWxkaSJ9LG89e25hbjoiTmFOIixudW1iZXI6Im7Dum1lciIsYXJyYXk6ImZ5bGtpIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFJhbmd0IGdpbGRpOiDDnsO6IHNsw7NzdCBpbm4gJHtzfSDDvmFyIHNlbSDDoSBhw7AgdmVyYSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH1gOmBSYW5ndCBnaWxkaTogw57DuiBzbMOzc3QgaW5uICR7c30gw75hciBzZW0gw6EgYcOwIHZlcmEgJHtpfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gUmFuZ3QgZ2lsZGk6IGdlcnQgcsOhw7AgZnlyaXIgJHtrKGUudmFsdWVzWzBdKX1gOmDDk2dpbHQgdmFsOiBtw6EgdmVyYSBlaXR0IGFmIGVmdGlyZmFyYW5kaSAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gT2Ygc3TDs3J0OiBnZXJ0IGVyIHLDocOwIGZ5cmlyIGHDsCAke2Uub3JpZ2luPz8iZ2lsZGkifSBoYWZpICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImhsdXRpIn1gOmBPZiBzdMOzcnQ6IGdlcnQgZXIgcsOhw7AgZnlyaXIgYcOwICR7ZS5vcmlnaW4/PyJnaWxkaSJ9IHPDqSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BPZiBsw610acOwOiBnZXJ0IGVyIHLDocOwIGZ5cmlyIGHDsCAke2Uub3JpZ2lufSBoYWZpICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBPZiBsw610acOwOiBnZXJ0IGVyIHLDocOwIGZ5cmlyIGHDsCAke2Uub3JpZ2lufSBzw6kgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBieXJqYSDDoSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DDk2dpbGR1ciBzdHJlbmd1cjogdmVyw7B1ciBhw7AgZW5kYSDDoSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBpbm5paGFsZGEgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBmeWxnamEgbXluc3RyaSAke2kucGF0dGVybn1gOmBSYW5ndCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gUsO2bmcgdGFsYTogdmVyw7B1ciBhw7AgdmVyYSBtYXJnZmVsZGkgYWYgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gw5PDvmVra3QgJHtlLmtleXMubGVuZ3RoPjE/ImlyIGx5a2xhciI6InVyIGx5a2lsbCJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYFJhbmd1ciBseWtpbGwgw60gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIlJhbmd0IGdpbGRpIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFJhbmd0IGdpbGRpIMOtICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJSYW5ndCBnaWxkaSJ9fX07ZnVuY3Rpb24gYmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6JGYoKX19Y29uc3QgeWY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcmF0dGVyaSIsdmVyYjoiYXZlcmUifSxmaWxlOnt1bml0OiJieXRlIix2ZXJiOiJhdmVyZSJ9LGFycmF5Ont1bml0OiJlbGVtZW50aSIsdmVyYjoiYXZlcmUifSxzZXQ6e3VuaXQ6ImVsZW1lbnRpIix2ZXJiOiJhdmVyZSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImluZGlyaXp6byBlbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0YSBlIG9yYSBJU08iLGRhdGU6ImRhdGEgSVNPIix0aW1lOiJvcmEgSVNPIixkdXJhdGlvbjoiZHVyYXRhIElTTyIsaXB2NDoiaW5kaXJpenpvIElQdjQiLGlwdjY6ImluZGlyaXp6byBJUHY2IixjaWRydjQ6ImludGVydmFsbG8gSVB2NCIsY2lkcnY2OiJpbnRlcnZhbGxvIElQdjYiLGJhc2U2NDoic3RyaW5nYSBjb2RpZmljYXRhIGluIGJhc2U2NCIsYmFzZTY0dXJsOiJVUkwgY29kaWZpY2F0YSBpbiBiYXNlNjQiLGpzb25fc3RyaW5nOiJzdHJpbmdhIEpTT04iLGUxNjQ6Im51bWVybyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4iLG51bWJlcjoibnVtZXJvIixhcnJheToidmV0dG9yZSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BJbnB1dCBub24gdmFsaWRvOiBhdHRlc28gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCByaWNldnV0byAke3N9YDpgSW5wdXQgbm9uIHZhbGlkbzogYXR0ZXNvICR7aX0sIHJpY2V2dXRvICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YElucHV0IG5vbiB2YWxpZG86IGF0dGVzbyAke2soZS52YWx1ZXNbMF0pfWA6YE9wemlvbmUgbm9uIHZhbGlkYTogYXR0ZXNvIHVubyB0cmEgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRyb3BwbyBncmFuZGU6ICR7ZS5vcmlnaW4/PyJ2YWxvcmUifSBkZXZlIGF2ZXJlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRpIn1gOmBUcm9wcG8gZ3JhbmRlOiAke2Uub3JpZ2luPz8idmFsb3JlIn0gZGV2ZSBlc3NlcmUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvcHBvIHBpY2NvbG86ICR7ZS5vcmlnaW59IGRldmUgYXZlcmUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRyb3BwbyBwaWNjb2xvOiAke2Uub3JpZ2lufSBkZXZlIGVzc2VyZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIGluaXppYXJlIGNvbiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BTdHJpbmdhIG5vbiB2YWxpZGE6IGRldmUgdGVybWluYXJlIGNvbiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFN0cmluZ2Egbm9uIHZhbGlkYTogZGV2ZSBpbmNsdWRlcmUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFN0cmluZ2Egbm9uIHZhbGlkYTogZGV2ZSBjb3JyaXNwb25kZXJlIGFsIHBhdHRlcm4gJHtpLnBhdHRlcm59YDpgSW5wdXQgbm9uIHZhbGlkbzogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE51bWVybyBub24gdmFsaWRvOiBkZXZlIGVzc2VyZSB1biBtdWx0aXBsbyBkaSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDaGlhdiR7ZS5rZXlzLmxlbmd0aD4xPyJpIjoiZSJ9IG5vbiByaWNvbm9zY2l1dCR7ZS5rZXlzLmxlbmd0aD4xPyJlIjoiYSJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENoaWF2ZSBub24gdmFsaWRhIGluICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJJbnB1dCBub24gdmFsaWRvIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFZhbG9yZSBub24gdmFsaWRvIGluICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJJbnB1dCBub24gdmFsaWRvIn19fTtmdW5jdGlvbiBrZigpe3JldHVybntsb2NhbGVFcnJvcjp5ZigpfX1jb25zdCBTZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi5paH5a2XIix2ZXJiOiLjgafjgYLjgosifSxmaWxlOnt1bml0OiLjg5DjgqTjg4giLHZlcmI6IuOBp+OBguOCiyJ9LGFycmF5Ont1bml0OiLopoHntKAiLHZlcmI6IuOBp+OBguOCiyJ9LHNldDp7dW5pdDoi6KaB57SgIix2ZXJiOiLjgafjgYLjgosifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi5YWl5Yqb5YCkIixlbWFpbDoi44Oh44O844Or44Ki44OJ44Os44K5Iix1cmw6IlVSTCIsZW1vamk6Iue1teaWh+WtlyIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNP5pel5pmCIixkYXRlOiJJU0/ml6Xku5giLHRpbWU6IklTT+aZguWIuyIsZHVyYXRpb246IklTT+acn+mWkyIsaXB2NDoiSVB2NOOCouODieODrOOCuSIsaXB2NjoiSVB2NuOCouODieODrOOCuSIsY2lkcnY0OiJJUHY056+E5ZuyIixjaWRydjY6IklQdjbnr4Tlm7IiLGJhc2U2NDoiYmFzZTY044Ko44Oz44Kz44O844OJ5paH5a2X5YiXIixiYXNlNjR1cmw6ImJhc2U2NHVybOOCqOODs+OCs+ODvOODieaWh+Wtl+WIlyIsanNvbl9zdHJpbmc6IkpTT07mloflrZfliJciLGUxNjQ6IkUuMTY055Wq5Y+3Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi5YWl5Yqb5YCkIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi5pWw5YCkIixhcnJheToi6YWN5YiXIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOeEoeWKueOBquWFpeWKmzogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR944GM5pyf5b6F44GV44KM44G+44GX44Gf44GM44CBJHtzfeOBjOWFpeWKm+OBleOCjOOBvuOBl+OBn2A6YOeEoeWKueOBquWFpeWKmzogJHtpfeOBjOacn+W+heOBleOCjOOBvuOBl+OBn+OBjOOAgSR7c33jgYzlhaXlipvjgZXjgozjgb7jgZfjgZ9gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOeEoeWKueOBquWFpeWKmzogJHtrKGUudmFsdWVzWzBdKX3jgYzmnJ/lvoXjgZXjgozjgb7jgZfjgZ9gOmDnhKHlirnjgarpgbjmip46ICR7JChlLnZhbHVlcywi44CBIil944Gu44GE44Ga44KM44GL44Gn44GC44KL5b+F6KaB44GM44GC44KK44G+44GZYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyLku6XkuIvjgafjgYLjgosiOiLjgojjgorlsI/jgZXjgYQiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOWkp+OBjeOBmeOBjuOCi+WApDogJHtlLm9yaWdpbj8/IuWApCJ944GvJHtlLm1heGltdW0udG9TdHJpbmcoKX0ke2EudW5pdD8/Iuimgee0oCJ9JHtpfeW/heimgeOBjOOBguOCiuOBvuOBmWA6YOWkp+OBjeOBmeOBjuOCi+WApDogJHtlLm9yaWdpbj8/IuWApCJ944GvJHtlLm1heGltdW0udG9TdHJpbmcoKX0ke2l95b+F6KaB44GM44GC44KK44G+44GZYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuS7peS4iuOBp+OBguOCiyI6IuOCiOOCiuWkp+OBjeOBhCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g5bCP44GV44GZ44GO44KL5YCkOiAke2Uub3JpZ2lufeOBryR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9JHthLnVuaXR9JHtpfeW/heimgeOBjOOBguOCiuOBvuOBmWA6YOWwj+OBleOBmeOBjuOCi+WApDogJHtlLm9yaWdpbn3jga8ke2UubWluaW11bS50b1N0cmluZygpfSR7aX3lv4XopoHjgYzjgYLjgorjgb7jgZlgfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g54Sh5Yq544Gq5paH5a2X5YiXOiAiJHtpLnByZWZpeH0i44Gn5aeL44G+44KL5b+F6KaB44GM44GC44KK44G+44GZYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DnhKHlirnjgarmloflrZfliJc6ICIke2kuc3VmZml4fSLjgafntYLjgo/jgovlv4XopoHjgYzjgYLjgorjgb7jgZlgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g54Sh5Yq544Gq5paH5a2X5YiXOiAiJHtpLmluY2x1ZGVzfSLjgpLlkKvjgoDlv4XopoHjgYzjgYLjgorjgb7jgZlgOmkuZm9ybWF0PT09InJlZ2V4Ij9g54Sh5Yq544Gq5paH5a2X5YiXOiDjg5Hjgr/jg7zjg7Mke2kucGF0dGVybn3jgavkuIDoh7TjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZlgOmDnhKHlirnjgaoke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g54Sh5Yq544Gq5pWw5YCkOiAke2UuZGl2aXNvcn3jga7lgI3mlbDjgafjgYLjgovlv4XopoHjgYzjgYLjgorjgb7jgZlgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDoqo3orZjjgZXjgozjgabjgYTjgarjgYTjgq3jg7wke2Uua2V5cy5sZW5ndGg+MT8i576kIjoiIn06ICR7JChlLmtleXMsIuOAgSIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW595YaF44Gu54Sh5Yq544Gq44Kt44O8YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLnhKHlirnjgarlhaXlipsiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn3lhoXjga7nhKHlirnjgarlgKRgO2RlZmF1bHQ6cmV0dXJuIueEoeWKueOBquWFpeWKmyJ9fX07ZnVuY3Rpb24gd2YoKXtyZXR1cm57bG9jYWxlRXJyb3I6U2YoKX19Y29uc3QgSWY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuGDoeGDmOGDm+GDkeGDneGDmuGDnSIsdmVyYjoi4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoSJ9LGZpbGU6e3VuaXQ6IuGDkeGDkOGDmOGDouGDmCIsdmVyYjoi4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoSJ9LGFycmF5Ont1bml0OiLhg5Thg5rhg5Thg5vhg5Thg5zhg6Lhg5giLHZlcmI6IuGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EifSxzZXQ6e3VuaXQ6IuGDlOGDmuGDlOGDm+GDlOGDnOGDouGDmCIsdmVyYjoi4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLhg6jhg5Thg6fhg5Xhg5Dhg5zhg5AiLGVtYWlsOiLhg5Thg5ot4YOk4YOd4YOh4YOi4YOY4YOhIOGDm+GDmOGDoeGDkOGDm+GDkOGDoOGDl+GDmCIsdXJsOiJVUkwiLGVtb2ppOiLhg5Thg5vhg53hg6/hg5giLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IuGDl+GDkOGDoOGDmOGDpuGDmC3hg5Phg6Dhg50iLGRhdGU6IuGDl+GDkOGDoOGDmOGDpuGDmCIsdGltZToi4YOT4YOg4YOdIixkdXJhdGlvbjoi4YOu4YOQ4YOc4YOS4YOg4YOr4YOa4YOY4YOV4YOd4YOR4YOQIixpcHY0OiJJUHY0IOGDm+GDmOGDoeGDkOGDm+GDkOGDoOGDl+GDmCIsaXB2NjoiSVB2NiDhg5vhg5jhg6Hhg5Dhg5vhg5Dhg6Dhg5fhg5giLGNpZHJ2NDoiSVB2NCDhg5Phg5jhg5Dhg57hg5Dhg5bhg53hg5zhg5giLGNpZHJ2NjoiSVB2NiDhg5Phg5jhg5Dhg57hg5Dhg5bhg53hg5zhg5giLGJhc2U2NDoiYmFzZTY0LeGDmeGDneGDk+GDmOGDoOGDlOGDkeGDo+GDmuGDmCDhg5Xhg5Thg5rhg5giLGJhc2U2NHVybDoiYmFzZTY0dXJsLeGDmeGDneGDk+GDmOGDoOGDlOGDkeGDo+GDmuGDmCDhg5Xhg5Thg5rhg5giLGpzb25fc3RyaW5nOiJKU09OIOGDleGDlOGDmuGDmCIsZTE2NDoiRS4xNjQg4YOc4YOd4YOb4YOU4YOg4YOYIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi4YOo4YOU4YOn4YOV4YOQ4YOc4YOQIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi4YOg4YOY4YOq4YOu4YOV4YOYIixzdHJpbmc6IuGDleGDlOGDmuGDmCIsYm9vbGVhbjoi4YOR4YOj4YOa4YOU4YOQ4YOc4YOYIixmdW5jdGlvbjoi4YOk4YOj4YOc4YOl4YOq4YOY4YOQIixhcnJheToi4YOb4YOQ4YOh4YOY4YOV4YOYIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6jhg5Thg6fhg5Xhg5Dhg5zhg5A6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIOGDm+GDmOGDpuGDlOGDkeGDo+GDmuGDmCAke3N9YDpg4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDqOGDlOGDp+GDleGDkOGDnOGDkDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7aX0sIOGDm+GDmOGDpuGDlOGDkeGDo+GDmuGDmCAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOo4YOU4YOn4YOV4YOQ4YOc4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtrKGUudmFsdWVzWzBdKX1gOmDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOV4YOQ4YOg4YOY4YOQ4YOc4YOi4YOYOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5jhg5Ag4YOU4YOg4YOXLeGDlOGDoOGDl+GDmCAkeyQoZS52YWx1ZXMsInwiKX0t4YOT4YOQ4YOcYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOGDluGDlOGDk+GDm+GDlOGDouGDkOGDkyDhg5Phg5jhg5Phg5g6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCAke2Uub3JpZ2luPz8i4YOb4YOc4YOY4YOo4YOV4YOc4YOU4YOa4YOd4YOR4YOQIn0gJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOT4YOY4YOT4YOYOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtlLm9yaWdpbj8/IuGDm+GDnOGDmOGDqOGDleGDnOGDlOGDmuGDneGDkeGDkCJ9IOGDmOGDp+GDneGDoSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2Dhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOe4YOQ4YOi4YOQ4YOg4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtlLm9yaWdpbn0gJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOe4YOQ4YOi4YOQ4YOg4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtlLm9yaWdpbn0g4YOY4YOn4YOd4YOhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOV4YOU4YOa4YOYOiDhg6Phg5zhg5Phg5Ag4YOY4YOs4YOn4YOU4YOR4YOd4YOT4YOU4YOhICIke2kucHJlZml4fSIt4YOY4YOXYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOV4YOU4YOa4YOYOiDhg6Phg5zhg5Phg5Ag4YOb4YOX4YOQ4YOV4YOg4YOT4YOU4YOR4YOd4YOT4YOU4YOhICIke2kuc3VmZml4fSIt4YOY4YOXYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5Xhg5Thg5rhg5g6IOGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EgIiR7aS5pbmNsdWRlc30iLeGDoWA6aS5mb3JtYXQ9PT0icmVnZXgiP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOV4YOU4YOa4YOYOiDhg6Phg5zhg5Phg5Ag4YOo4YOU4YOU4YOh4YOQ4YOR4YOQ4YOb4YOU4YOR4YOd4YOT4YOU4YOhIOGDqOGDkOGDkeGDmuGDneGDnOGDoSAke2kucGF0dGVybn1gOmDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5ggJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6Dhg5jhg6rhg67hg5Xhg5g6IOGDo+GDnOGDk+GDkCDhg5jhg6fhg53hg6EgJHtlLmRpdmlzb3J9LeGDmOGDoSDhg6/hg5Thg6Dhg5Dhg5Phg5hgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDhg6Phg6rhg5zhg53hg5Hhg5gg4YOS4YOQ4YOh4YOQ4YOm4YOU4YORJHtlLmtleXMubGVuZ3RoPjE/IuGDlOGDkeGDmCI6IuGDmCJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5Lhg5Dhg6Hhg5Dhg6bhg5Thg5Hhg5ggJHtlLm9yaWdpbn0t4YOo4YOYYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOo4YOU4YOn4YOV4YOQ4YOc4YOQIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5vhg5zhg5jhg6jhg5Xhg5zhg5Thg5rhg53hg5Hhg5AgJHtlLm9yaWdpbn0t4YOo4YOYYDtkZWZhdWx0OnJldHVybiLhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOo4YOU4YOn4YOV4YOQ4YOc4YOQIn19fTtmdW5jdGlvbiB4Zigpe3JldHVybntsb2NhbGVFcnJvcjpJZigpfX1jb25zdCB6Zj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi4Z6P4Z694Z6i4Z6A4Z+S4Z6f4Z6aIix2ZXJiOiLhnoLhnr3hnprhnpjhnrbhnpMifSxmaWxlOnt1bml0OiLhnpThn4MiLHZlcmI6IuGeguGeveGemuGemOGetuGekyJ9LGFycmF5Ont1bml0OiLhnpLhnrbhno/hnrsiLHZlcmI6IuGeguGeveGemuGemOGetuGekyJ9LHNldDp7dW5pdDoi4Z6S4Z624Z6P4Z67Iix2ZXJiOiLhnoLhnr3hnprhnpjhnrbhnpMifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6U4Z6J4Z+S4Z6F4Z684Z6bIixlbWFpbDoi4Z6i4Z624Z6f4Z6Z4Z6K4Z+S4Z6L4Z624Z6T4Z6i4Z+K4Z644Z6Y4Z+C4Z6bIix1cmw6IlVSTCIsZW1vamk6IuGen+GeieGfkuGeieGetuGeouGetuGemuGemOGfkuGemOGejuGfjSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi4Z6A4Z624Z6b4Z6U4Z6a4Z634Z6F4Z+S4Z6G4Z+B4Z6RIOGek+Get+GehOGemOGfieGfhOGehCBJU08iLGRhdGU6IuGegOGetuGem+GelOGemuGet+GeheGfkuGehuGfgeGekSBJU08iLHRpbWU6IuGemOGfieGfhOGehCBJU08iLGR1cmF0aW9uOiLhnprhnpnhn4jhnpbhn4HhnpsgSVNPIixpcHY0OiLhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpMgSVB2NCIsaXB2Njoi4Z6i4Z624Z6f4Z6Z4Z6K4Z+S4Z6L4Z624Z6TIElQdjYiLGNpZHJ2NDoi4Z6K4Z+C4Z6T4Z6i4Z624Z6f4Z6Z4Z6K4Z+S4Z6L4Z624Z6TIElQdjQiLGNpZHJ2Njoi4Z6K4Z+C4Z6T4Z6i4Z624Z6f4Z6Z4Z6K4Z+S4Z6L4Z624Z6TIElQdjYiLGJhc2U2NDoi4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6i4Z+K4Z634Z6A4Z684Z6KIGJhc2U2NCIsYmFzZTY0dXJsOiLhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnprhnqLhn4rhnrfhnoDhnrzhnoogYmFzZTY0dXJsIixqc29uX3N0cmluZzoi4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6aIEpTT04iLGUxNjQ6IuGem+GfgeGegSBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuGekeGet+Gek+GfkuGek+Gek+GfkOGemeGelOGeieGfkuGeheGevOGemyJ9LG89e25hbjoiTmFOIixudW1iZXI6IuGem+GfgeGegSIsYXJyYXk6IuGeouGetuGemuGfgSAoQXJyYXkpIixudWxsOiLhnoLhn5LhnpjhnrbhnpPhno/hnpjhn5Lhnpvhn4MgKG51bGwpIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOGekeGet+Gek+GfkuGek+Gek+GfkOGemeGelOGeieGfkuGeheGevOGem+GemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9IOGelOGfieGeu+Gek+GfkuGej+GfguGekeGekeGeveGem+GelOGetuGekyAke3N9YDpg4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6U4Z6J4Z+S4Z6F4Z684Z6b4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2l9IOGelOGfieGeu+Gek+GfkuGej+GfguGekeGekeGeveGem+GelOGetuGekyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnpvhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7ayhlLnZhbHVlc1swXSl9YDpg4Z6H4Z6Y4Z+S4Z6a4Z6+4Z6f4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGeh+GetuGemOGeveGemeGegOGfkuGek+Geu+GehOGeheGfhuGejuGfhOGemCAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4Z6S4Z+G4Z6W4Z+B4Z6A4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2Uub3JpZ2luPz8i4Z6P4Z6Y4Z+S4Z6b4Z+DIn0gJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IuGekuGetuGej+GeuyJ9YDpg4Z6S4Z+G4Z6W4Z+B4Z6A4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2Uub3JpZ2luPz8i4Z6P4Z6Y4Z+S4Z6b4Z+DIn0gJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOGej+GevOGeheGeluGfgeGegOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtlLm9yaWdpbn0gJHtpfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDhno/hnrzhnoXhnpbhn4HhnoDhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7ZS5vcmlnaW59ICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGeheGetuGelOGfi+GeleGfkuGej+GevuGemOGeiuGfhOGemSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnprhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6U4Z6J4Z+S4Z6F4Z6U4Z+L4Z6K4Z+E4Z6ZICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGemOGetuGekyAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGej+GfguGeleGfkuGeguGevOGeleGfkuGeguGehOGek+GeueGehOGekeGemOGfkuGemuGehOGfi+GeiuGfguGem+GelOGetuGek+GegOGfhuGejuGej+GfiyAke2kucGF0dGVybn1gOmDhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5YgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOGem+GfgeGegeGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5Lhnprhnrzhnpzhno/hn4LhnofhnrbhnpbhnqDhnrvhnoLhnrvhno7hnpPhn4MgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g4Z6a4Z6A4Z6D4Z6+4Z6J4Z6f4Z+E4Z6Y4Z634Z6T4Z6f4Z+S4Z6C4Z624Z6b4Z+L4Z+WICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g4Z6f4Z+E4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z6T4Z+F4Z6A4Z+S4Z6T4Z674Z6EICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5LhnprhnrzhnpwiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z6T4Z+F4Z6A4Z+S4Z6T4Z674Z6EICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5LhnprhnrzhnpwifX19O2Z1bmN0aW9uIFNsKCl7cmV0dXJue2xvY2FsZUVycm9yOnpmKCl9fWZ1bmN0aW9uIFRmKCl7cmV0dXJuIFNsKCl9Y29uc3QgVWY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuusuOyekCIsdmVyYjoidG8gaGF2ZSJ9LGZpbGU6e3VuaXQ6IuuwlOydtO2KuCIsdmVyYjoidG8gaGF2ZSJ9LGFycmF5Ont1bml0OiLqsJwiLHZlcmI6InRvIGhhdmUifSxzZXQ6e3VuaXQ6IuqwnCIsdmVyYjoidG8gaGF2ZSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLsnoXroKUiLGVtYWlsOiLsnbTrqZTsnbwg7KO87IaMIix1cmw6IlVSTCIsZW1vamk6IuydtOuqqOyngCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIOuCoOynnOyLnOqwhCIsZGF0ZToiSVNPIOuCoOynnCIsdGltZToiSVNPIOyLnOqwhCIsZHVyYXRpb246IklTTyDquLDqsIQiLGlwdjQ6IklQdjQg7KO87IaMIixpcHY2OiJJUHY2IOyjvOyGjCIsY2lkcnY0OiJJUHY0IOuylOychCIsY2lkcnY2OiJJUHY2IOuylOychCIsYmFzZTY0OiJiYXNlNjQg7J247L2U65SpIOusuOyekOyXtCIsYmFzZTY0dXJsOiJiYXNlNjR1cmwg7J247L2U65SpIOusuOyekOyXtCIsanNvbl9zdHJpbmc6IkpTT04g66y47J6Q7Je0IixlMTY0OiJFLjE2NCDrsojtmLgiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLsnoXroKUifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DsnpjrqrvrkJwg7J6F66ClOiDsmIjsg4Eg7YOA7J6F7J2AIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg67Cb7J2AIO2DgOyeheydgCAke3N97J6F64uI64ukYDpg7J6Y66q765CcIOyeheugpTog7JiI7IOBIO2DgOyeheydgCAke2l9LCDrsJvsnYAg7YOA7J6F7J2AICR7c33snoXri4jri6RgfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOyemOuqu+uQnCDsnoXroKU6IOqwkuydgCAke2soZS52YWx1ZXNbMF0pfSDsnbTslrTslbwg7ZWp64uI64ukYDpg7J6Y66q765CcIOyYteyFmDogJHskKGUudmFsdWVzLCLrmJDripQgIil9IOykkSDtlZjrgpjsl6zslbwg7ZWp64uI64ukYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyLsnbTtlZgiOiLrr7jrp4wiLGE9aT09PSLrr7jrp4wiPyLsnbTslrTslbwg7ZWp64uI64ukIjoi7Jes7JW8IO2VqeuLiOuLpCIscz1uKGUub3JpZ2luKSxjPXM/LnVuaXQ/PyLsmpTshowiO3JldHVybiBzP2Ake2Uub3JpZ2luPz8i6rCSIn3snbQg64SI66y0IO2BveuLiOuLpDogJHtlLm1heGltdW0udG9TdHJpbmcoKX0ke2N9ICR7aX0ke2F9YDpgJHtlLm9yaWdpbj8/IuqwkiJ97J20IOuEiOustCDtgb3ri4jri6Q6ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7aX0ke2F9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuydtOyDgSI6Iuy0iOqzvCIsYT1pPT09IuydtOyDgSI/IuydtOyWtOyVvCDtlanri4jri6QiOiLsl6zslbwg7ZWp64uI64ukIixzPW4oZS5vcmlnaW4pLGM9cz8udW5pdD8/IuyalOyGjCI7cmV0dXJuIHM/YCR7ZS5vcmlnaW4/PyLqsJIifeydtCDrhIjrrLQg7J6R7Iq164uI64ukOiAke2UubWluaW11bS50b1N0cmluZygpfSR7Y30gJHtpfSR7YX1gOmAke2Uub3JpZ2luPz8i6rCSIn3snbQg64SI66y0IOyekeyKteuLiOuLpDogJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtpfSR7YX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g7J6Y66q765CcIOusuOyekOyXtDogIiR7aS5wcmVmaXh9IijsnLwp66GcIOyLnOyeke2VtOyVvCDtlanri4jri6RgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOyemOuqu+uQnCDrrLjsnpDsl7Q6ICIke2kuc3VmZml4fSIo7Jy8KeuhnCDrgZ3rgpjslbwg7ZWp64uI64ukYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOyemOuqu+uQnCDrrLjsnpDsl7Q6ICIke2kuaW5jbHVkZXN9IuydhCjrpbwpIO2PrO2VqO2VtOyVvCDtlanri4jri6RgOmkuZm9ybWF0PT09InJlZ2V4Ij9g7J6Y66q765CcIOusuOyekOyXtDog7KCV6rec7IudICR7aS5wYXR0ZXJufSDtjKjthLTqs7wg7J287LmY7ZW07JW8IO2VqeuLiOuLpGA6YOyemOuqu+uQnCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g7J6Y66q765CcIOyIq+yekDogJHtlLmRpdmlzb3J97J2YIOuwsOyImOyXrOyVvCDtlanri4jri6RgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDsnbjsi53tlaAg7IiYIOyXhuuKlCDtgqQ6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g7J6Y66q765CcIO2CpDogJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIuyemOuqu+uQnCDsnoXroKUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g7J6Y66q765CcIOqwkjogJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIuyemOuqu+uQnCDsnoXroKUifX19O2Z1bmN0aW9uIGpmKCl7cmV0dXJue2xvY2FsZUVycm9yOlVmKCl9fWNvbnN0IGh0PXQ9PnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKTtmdW5jdGlvbiBqcyh0KXtjb25zdCBuPU1hdGguYWJzKHQpLHI9biUxMCxvPW4lMTAwO3JldHVybiBvPj0xMSYmbzw9MTl8fHI9PT0wPyJtYW55IjpyPT09MT8ib25lIjoiZmV3In1jb25zdCBQZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDp7b25lOiJzaW1ib2xpcyIsZmV3OiJzaW1ib2xpYWkiLG1hbnk6InNpbWJvbGnFsyJ9LHZlcmI6e3NtYWxsZXI6e2luY2x1c2l2ZToidHVyaSBixat0aSBuZSBpbGdlc27ElyBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgYsWrdGkgdHJ1bXBlc27ElyBrYWlwIn0sYmlnZ2VyOntpbmNsdXNpdmU6InR1cmkgYsWrdGkgbmUgdHJ1bXBlc27ElyBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgYsWrdGkgaWxnZXNuxJcga2FpcCJ9fX0sZmlsZTp7dW5pdDp7b25lOiJiYWl0YXMiLGZldzoiYmFpdGFpIixtYW55OiJiYWl0xbMifSx2ZXJiOntzbWFsbGVyOntpbmNsdXNpdmU6InR1cmkgYsWrdGkgbmUgZGlkZXNuaXMga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIGLFq3RpIG1hxb5lc25pcyBrYWlwIn0sYmlnZ2VyOntpbmNsdXNpdmU6InR1cmkgYsWrdGkgbmUgbWHFvmVzbmlzIGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSBixat0aSBkaWRlc25pcyBrYWlwIn19fSxhcnJheTp7dW5pdDp7b25lOiJlbGVtZW50xIUiLGZldzoiZWxlbWVudHVzIixtYW55OiJlbGVtZW50xbMifSx2ZXJiOntzbWFsbGVyOntpbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBuZSBkYXVnaWF1IGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSB0dXLEl3RpIG1hxb5pYXUga2FpcCJ9LGJpZ2dlcjp7aW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbmUgbWHFvmlhdSBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBkYXVnaWF1IGthaXAifX19LHNldDp7dW5pdDp7b25lOiJlbGVtZW50xIUiLGZldzoiZWxlbWVudHVzIixtYW55OiJlbGVtZW50xbMifSx2ZXJiOntzbWFsbGVyOntpbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBuZSBkYXVnaWF1IGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSB0dXLEl3RpIG1hxb5pYXUga2FpcCJ9LGJpZ2dlcjp7aW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbmUgbWHFvmlhdSBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBkYXVnaWF1IGthaXAifX19fTtmdW5jdGlvbiBuKGUsaSxhLHMpe2NvbnN0IGM9dFtlXT8/bnVsbDtyZXR1cm4gYz09PW51bGw/Yzp7dW5pdDpjLnVuaXRbaV0sdmVyYjpjLnZlcmJbc11bYT8iaW5jbHVzaXZlIjoibm90SW5jbHVzaXZlIl19fWNvbnN0IHI9e3JlZ2V4OiLEr3Zlc3RpcyIsZW1haWw6ImVsLiBwYcWhdG8gYWRyZXNhcyIsdXJsOiJVUkwiLGVtb2ppOiJqYXVzdHVrYXMiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRhIGlyIGxhaWthcyIsZGF0ZToiSVNPIGRhdGEiLHRpbWU6IklTTyBsYWlrYXMiLGR1cmF0aW9uOiJJU08gdHJ1a23ElyIsaXB2NDoiSVB2NCBhZHJlc2FzIixpcHY2OiJJUHY2IGFkcmVzYXMiLGNpZHJ2NDoiSVB2NCB0aW5rbG8gcHJlZmlrc2FzIChDSURSKSIsY2lkcnY2OiJJUHY2IHRpbmtsbyBwcmVmaWtzYXMgKENJRFIpIixiYXNlNjQ6ImJhc2U2NCB1xb5rb2R1b3RhIGVpbHV0xJciLGJhc2U2NHVybDoiYmFzZTY0dXJsIHXFvmtvZHVvdGEgZWlsdXTElyIsanNvbl9zdHJpbmc6IkpTT04gZWlsdXTElyIsZTE2NDoiRS4xNjQgbnVtZXJpcyIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IsSvdmVzdGlzIn0sbz17bmFuOiJOYU4iLG51bWJlcjoic2thacSNaXVzIixiaWdpbnQ6InN2ZWlrYXNpcyBza2FpxI1pdXMiLHN0cmluZzoiZWlsdXTElyIsYm9vbGVhbjoibG9naW7ElyByZWlrxaFtxJciLHVuZGVmaW5lZDoibmVhcGlicsSXxb50YSByZWlrxaFtxJciLGZ1bmN0aW9uOiJmdW5rY2lqYSIsc3ltYm9sOiJzaW1ib2xpcyIsYXJyYXk6Im1hc3l2YXMiLG9iamVjdDoib2JqZWt0YXMiLG51bGw6Im51bGluxJcgcmVpa8WhbcSXIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEdhdXRhcyB0aXBhcyAke3N9LCBvIHRpa8SXdGFzaSAtIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfWA6YEdhdXRhcyB0aXBhcyAke3N9LCBvIHRpa8SXdGFzaSAtICR7aX1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFByaXZhbG8gYsWrdGkgJHtrKGUudmFsdWVzWzBdKX1gOmBQcml2YWxvIGLFq3RpIHZpZW5hcyBpxaEgJHskKGUudmFsdWVzLCJ8Iil9IHBhc2lyaW5raW3Fs2A7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1vW2Uub3JpZ2luXT8/ZS5vcmlnaW4sYT1uKGUub3JpZ2luLGpzKE51bWJlcihlLm1heGltdW0pKSxlLmluY2x1c2l2ZT8/ITEsInNtYWxsZXIiKTtpZihhPy52ZXJiKXJldHVybmAke2h0KGk/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9ICR7YS52ZXJifSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnTFsyJ9YDtjb25zdCBzPWUuaW5jbHVzaXZlPyJuZSBkaWRlc25pcyBrYWlwIjoibWHFvmVzbmlzIGthaXAiO3JldHVybmAke2h0KGk/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9IHR1cmkgYsWrdGkgJHtzfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2E/LnVuaXR9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9b1tlLm9yaWdpbl0/P2Uub3JpZ2luLGE9bihlLm9yaWdpbixqcyhOdW1iZXIoZS5taW5pbXVtKSksZS5pbmNsdXNpdmU/PyExLCJiaWdnZXIiKTtpZihhPy52ZXJiKXJldHVybmAke2h0KGk/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9ICR7YS52ZXJifSAke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnTFsyJ9YDtjb25zdCBzPWUuaW5jbHVzaXZlPyJuZSBtYcW+ZXNuaXMga2FpcCI6ImRpZGVzbmlzIGthaXAiO3JldHVybmAke2h0KGk/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9IHR1cmkgYsWrdGkgJHtzfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2E/LnVuaXR9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YEVpbHV0xJcgcHJpdmFsbyBwcmFzaWTEl3RpICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YEVpbHV0xJcgcHJpdmFsbyBwYXNpYmFpZ3RpICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gRWlsdXTElyBwcml2YWxvIMSvdHJhdWt0aSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gRWlsdXTElyBwcml2YWxvIGF0aXRpa3RpICR7aS5wYXR0ZXJufWA6YE5ldGVpc2luZ2FzICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBTa2FpxI1pdXMgcHJpdmFsbyBixat0aSAke2UuZGl2aXNvcn0ga2FydG90aW5pcy5gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOZWF0cGHFvmludCR7ZS5rZXlzLmxlbmd0aD4xPyJpIjoiYXMifSByYWt0JHtlLmtleXMubGVuZ3RoPjE/ImFpIjoiYXMifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybiJSYXN0YXMga2xhaWRpbmdhcyByYWt0YXMiO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIktsYWlkaW5nYSDEr3Zlc3RpcyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOntjb25zdCBpPW9bZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm5gJHtodChpPz9lLm9yaWdpbj8/InJlaWvFoW3ElyIpfSB0dXJpIGtsYWlkaW5nxIUgxK92ZXN0xK9gfWRlZmF1bHQ6cmV0dXJuIktsYWlkaW5nYSDEr3Zlc3RpcyJ9fX07ZnVuY3Rpb24gT2YoKXtyZXR1cm57bG9jYWxlRXJyb3I6UGYoKX19Y29uc3QgRGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ItC30L3QsNGG0LgiLHZlcmI6ItC00LAg0LjQvNCw0LDRgiJ9LGZpbGU6e3VuaXQ6ItCx0LDRmNGC0LgiLHZlcmI6ItC00LAg0LjQvNCw0LDRgiJ9LGFycmF5Ont1bml0OiLRgdGC0LDQstC60LgiLHZlcmI6ItC00LAg0LjQvNCw0LDRgiJ9LHNldDp7dW5pdDoi0YHRgtCw0LLQutC4Iix2ZXJiOiLQtNCwINC40LzQsNCw0YIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi0LLQvdC10YEiLGVtYWlsOiLQsNC00YDQtdGB0LAg0L3QsCDQtS3Qv9C+0YjRgtCwIix1cmw6IlVSTCIsZW1vamk6ItC10LzQvtGf0LgiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDQtNCw0YLRg9C8INC4INCy0YDQtdC80LUiLGRhdGU6IklTTyDQtNCw0YLRg9C8Iix0aW1lOiJJU08g0LLRgNC10LzQtSIsZHVyYXRpb246IklTTyDQstGA0LXQvNC10YLRgNCw0LXRmtC1IixpcHY0OiJJUHY0INCw0LTRgNC10YHQsCIsaXB2NjoiSVB2NiDQsNC00YDQtdGB0LAiLGNpZHJ2NDoiSVB2NCDQvtC/0YHQtdCzIixjaWRydjY6IklQdjYg0L7Qv9GB0LXQsyIsYmFzZTY0OiJiYXNlNjQt0LXQvdC60L7QtNC40YDQsNC90LAg0L3QuNC30LAiLGJhc2U2NHVybDoiYmFzZTY0dXJsLdC10L3QutC+0LTQuNGA0LDQvdCwINC90LjQt9CwIixqc29uX3N0cmluZzoiSlNPTiDQvdC40LfQsCIsZTE2NDoiRS4xNjQg0LHRgNC+0ZgiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLQstC90LXRgSJ9LG89e25hbjoiTmFOIixudW1iZXI6ItCx0YDQvtGYIixhcnJheToi0L3QuNC30LAifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0JPRgNC10YjQtdC9INCy0L3QtdGBOiDRgdC1INC+0YfQtdC60YPQstCwIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg0L/RgNC40LzQtdC90L4gJHtzfWA6YNCT0YDQtdGI0LXQvSDQstC90LXRgTog0YHQtSDQvtGH0LXQutGD0LLQsCAke2l9LCDQv9GA0LjQvNC10L3QviAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BJbnZhbGlkIGlucHV0OiBleHBlY3RlZCAke2soZS52YWx1ZXNbMF0pfWA6YNCT0YDQtdGI0LDQvdCwINC+0L/RhtC40ZjQsDog0YHQtSDQvtGH0LXQutGD0LLQsCDQtdC00L3QsCAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g0J/RgNC10LzQvdC+0LPRgyDQs9C+0LvQtdC8OiDRgdC1INC+0YfQtdC60YPQstCwICR7ZS5vcmlnaW4/PyLQstGA0LXQtNC90L7RgdGC0LAifSDQtNCwINC40LzQsCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLQtdC70LXQvNC10L3RgtC4In1gOmDQn9GA0LXQvNC90L7Qs9GDINCz0L7Qu9C10Lw6INGB0LUg0L7Rh9C10LrRg9Cy0LAgJHtlLm9yaWdpbj8/ItCy0YDQtdC00L3QvtGB0YLQsCJ9INC00LAg0LHQuNC00LUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g0J/RgNC10LzQvdC+0LPRgyDQvNCw0Ls6INGB0LUg0L7Rh9C10LrRg9Cy0LAgJHtlLm9yaWdpbn0g0LTQsCDQuNC80LAgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YNCf0YDQtdC80L3QvtCz0YMg0LzQsNC7OiDRgdC1INC+0YfQtdC60YPQstCwICR7ZS5vcmlnaW59INC00LAg0LHQuNC00LUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNCd0LXQstCw0LbQtdGH0LrQsCDQvdC40LfQsDog0LzQvtGA0LAg0LTQsCDQt9Cw0L/QvtGH0L3Rg9Cy0LAg0YHQviAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DQndC10LLQsNC20LXRh9C60LAg0L3QuNC30LA6INC80L7RgNCwINC00LAg0LfQsNCy0YDRiNGD0LLQsCDRgdC+ICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g0J3QtdCy0LDQttC10YfQutCwINC90LjQt9CwOiDQvNC+0YDQsCDQtNCwINCy0LrQu9GD0YfRg9Cy0LAgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YNCd0LXQstCw0LbQtdGH0LrQsCDQvdC40LfQsDog0LzQvtGA0LAg0LTQsCDQvtC00LPQvtCw0YDQsCDQvdCwINC/0LDRgtC10YDQvdC+0YIgJHtpLnBhdHRlcm59YDpgSW52YWxpZCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g0JPRgNC10YjQtdC9INCx0YDQvtGYOiDQvNC+0YDQsCDQtNCwINCx0LjQtNC1INC00LXQu9C40LIg0YHQviAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmAke2Uua2V5cy5sZW5ndGg+MT8i0J3QtdC/0YDQtdC/0L7Qt9C90LDQtdC90Lgg0LrQu9GD0YfQtdCy0LgiOiLQndC10L/RgNC10L/QvtC30L3QsNC10L0g0LrQu9GD0YcifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDQk9GA0LXRiNC10L0g0LrQu9GD0Ycg0LLQviAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i0JPRgNC10YjQtdC9INCy0L3QtdGBIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNCT0YDQtdGI0L3QsCDQstGA0LXQtNC90L7RgdGCINCy0L4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItCT0YDQtdGI0LXQvSDQstC90LXRgSJ9fX07ZnVuY3Rpb24gTmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6RGYoKX19Y29uc3QgRWY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImFrc2FyYSIsdmVyYjoibWVtcHVueWFpIn0sZmlsZTp7dW5pdDoiYmFpdCIsdmVyYjoibWVtcHVueWFpIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbiIsdmVyYjoibWVtcHVueWFpIn0sc2V0Ont1bml0OiJlbGVtZW4iLHZlcmI6Im1lbXB1bnlhaSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImFsYW1hdCBlLW1lbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToidGFyaWtoIG1hc2EgSVNPIixkYXRlOiJ0YXJpa2ggSVNPIix0aW1lOiJtYXNhIElTTyIsZHVyYXRpb246InRlbXBvaCBJU08iLGlwdjQ6ImFsYW1hdCBJUHY0IixpcHY2OiJhbGFtYXQgSVB2NiIsY2lkcnY0OiJqdWxhdCBJUHY0IixjaWRydjY6Imp1bGF0IElQdjYiLGJhc2U2NDoic3RyaW5nIGRpa29ka2FuIGJhc2U2NCIsYmFzZTY0dXJsOiJzdHJpbmcgZGlrb2RrYW4gYmFzZTY0dXJsIixqc29uX3N0cmluZzoic3RyaW5nIEpTT04iLGUxNjQ6Im5vbWJvciBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4iLG51bWJlcjoibm9tYm9yIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YElucHV0IHRpZGFrIHNhaDogZGlqYW5na2EgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBkaXRlcmltYSAke3N9YDpgSW5wdXQgdGlkYWsgc2FoOiBkaWphbmdrYSAke2l9LCBkaXRlcmltYSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BJbnB1dCB0aWRhayBzYWg6IGRpamFuZ2thICR7ayhlLnZhbHVlc1swXSl9YDpgUGlsaWhhbiB0aWRhayBzYWg6IGRpamFuZ2thIHNhbGFoIHNhdHUgZGFyaXBhZGEgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRlcmxhbHUgYmVzYXI6IGRpamFuZ2thICR7ZS5vcmlnaW4/PyJuaWxhaSJ9ICR7YS52ZXJifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW4ifWA6YFRlcmxhbHUgYmVzYXI6IGRpamFuZ2thICR7ZS5vcmlnaW4/PyJuaWxhaSJ9IGFkYWxhaCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUZXJsYWx1IGtlY2lsOiBkaWphbmdrYSAke2Uub3JpZ2lufSAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRlcmxhbHUga2VjaWw6IGRpamFuZ2thICR7ZS5vcmlnaW59IGFkYWxhaCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gU3RyaW5nIHRpZGFrIHNhaDogbWVzdGkgYmVybXVsYSBkZW5nYW4gIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gU3RyaW5nIHRpZGFrIHNhaDogbWVzdGkgYmVyYWtoaXIgZGVuZ2FuICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gU3RyaW5nIHRpZGFrIHNhaDogbWVzdGkgbWVuZ2FuZHVuZ2kgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIHNlcGFkYW4gZGVuZ2FuIGNvcmFrICR7aS5wYXR0ZXJufWA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSB0aWRhayBzYWhgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTm9tYm9yIHRpZGFrIHNhaDogcGVybHUgZ2FuZGFhbiAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBLdW5jaSB0aWRhayBkaWtlbmFsaTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBLdW5jaSB0aWRhayBzYWggZGFsYW0gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIklucHV0IHRpZGFrIHNhaCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOaWxhaSB0aWRhayBzYWggZGFsYW0gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIklucHV0IHRpZGFrIHNhaCJ9fX07ZnVuY3Rpb24gWmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6RWYoKX19Y29uc3QgUmY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InRla2VucyIsdmVyYjoiaGVlZnQifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoiaGVlZnQifSxhcnJheTp7dW5pdDoiZWxlbWVudGVuIix2ZXJiOiJoZWVmdCJ9LHNldDp7dW5pdDoiZWxlbWVudGVuIix2ZXJiOiJoZWVmdCJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnZvZXIiLGVtYWlsOiJlbWFpbGFkcmVzIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0dW0gZW4gdGlqZCIsZGF0ZToiSVNPIGRhdHVtIix0aW1lOiJJU08gdGlqZCIsZHVyYXRpb246IklTTyBkdXVyIixpcHY0OiJJUHY0LWFkcmVzIixpcHY2OiJJUHY2LWFkcmVzIixjaWRydjQ6IklQdjQtYmVyZWlrIixjaWRydjY6IklQdjYtYmVyZWlrIixiYXNlNjQ6ImJhc2U2NC1nZWNvZGVlcmRlIHRla3N0IixiYXNlNjR1cmw6ImJhc2U2NCBVUkwtZ2Vjb2RlZXJkZSB0ZWtzdCIsanNvbl9zdHJpbmc6IkpTT04gc3RyaW5nIixlMTY0OiJFLjE2NC1udW1tZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnZvZXIifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJnZXRhbCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BPbmdlbGRpZ2UgaW52b2VyOiB2ZXJ3YWNodCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIG9udHZpbmcgJHtzfWA6YE9uZ2VsZGlnZSBpbnZvZXI6IHZlcndhY2h0ICR7aX0sIG9udHZpbmcgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gT25nZWxkaWdlIGludm9lcjogdmVyd2FjaHQgJHtrKGUudmFsdWVzWzBdKX1gOmBPbmdlbGRpZ2Ugb3B0aWU6IHZlcndhY2h0IMOpw6luIHZhbiAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKSxzPWUub3JpZ2luPT09ImRhdGUiPyJsYWF0IjplLm9yaWdpbj09PSJzdHJpbmciPyJsYW5nIjoiZ3Jvb3QiO3JldHVybiBhP2BUZSAke3N9OiB2ZXJ3YWNodCBkYXQgJHtlLm9yaWdpbj8/IndhYXJkZSJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRlbiJ9ICR7YS52ZXJifWA6YFRlICR7c306IHZlcndhY2h0IGRhdCAke2Uub3JpZ2luPz8id2FhcmRlIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9IGlzYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKSxzPWUub3JpZ2luPT09ImRhdGUiPyJ2cm9lZyI6ZS5vcmlnaW49PT0ic3RyaW5nIj8ia29ydCI6ImtsZWluIjtyZXR1cm4gYT9gVGUgJHtzfTogdmVyd2FjaHQgZGF0ICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0gJHthLnZlcmJ9YDpgVGUgJHtzfTogdmVyd2FjaHQgZGF0ICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSBpc2B9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BPbmdlbGRpZ2UgdGVrc3Q6IG1vZXQgbWV0ICIke2kucHJlZml4fSIgYmVnaW5uZW5gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE9uZ2VsZGlnZSB0ZWtzdDogbW9ldCBvcCAiJHtpLnN1ZmZpeH0iIGVpbmRpZ2VuYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE9uZ2VsZGlnZSB0ZWtzdDogbW9ldCAiJHtpLmluY2x1ZGVzfSIgYmV2YXR0ZW5gOmkuZm9ybWF0PT09InJlZ2V4Ij9gT25nZWxkaWdlIHRla3N0OiBtb2V0IG92ZXJlZW5rb21lbiBtZXQgcGF0cm9vbiAke2kucGF0dGVybn1gOmBPbmdlbGRpZzogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE9uZ2VsZGlnIGdldGFsOiBtb2V0IGVlbiB2ZWVsdm91ZCB2YW4gJHtlLmRpdmlzb3J9IHppam5gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBPbmJla2VuZGUga2V5JHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBPbmdlbGRpZ2Uga2V5IGluICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJPbmdlbGRpZ2UgaW52b2VyIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE9uZ2VsZGlnZSB3YWFyZGUgaW4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIk9uZ2VsZGlnZSBpbnZvZXIifX19O2Z1bmN0aW9uIENmKCl7cmV0dXJue2xvY2FsZUVycm9yOlJmKCl9fWNvbnN0IEFmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ0ZWduIix2ZXJiOiLDpSBoYSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiLDpSBoYSJ9LGFycmF5Ont1bml0OiJlbGVtZW50ZXIiLHZlcmI6IsOlIGlubmVob2xkZSJ9LHNldDp7dW5pdDoiZWxlbWVudGVyIix2ZXJiOiLDpSBpbm5laG9sZGUifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJlLXBvc3RhZHJlc3NlIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0by0gb2cga2xva2tlc2xldHQiLGRhdGU6IklTTy1kYXRvIix0aW1lOiJJU08ta2xva2tlc2xldHQiLGR1cmF0aW9uOiJJU08tdmFyaWdoZXQiLGlwdjQ6IklQdjQtb21yw6VkZSIsaXB2NjoiSVB2Ni1vbXLDpWRlIixjaWRydjQ6IklQdjQtc3Bla3RlciIsY2lkcnY2OiJJUHY2LXNwZWt0ZXIiLGJhc2U2NDoiYmFzZTY0LWVua29kZXQgc3RyZW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmtvZGV0IHN0cmVuZyIsanNvbl9zdHJpbmc6IkpTT04tc3RyZW5nIixlMTY0OiJFLjE2NC1udW1tZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIixudW1iZXI6InRhbGwiLGFycmF5OiJsaXN0ZSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BVZ3lsZGlnIGlucHV0OiBmb3J2ZW50ZXQgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBmaWtrICR7c31gOmBVZ3lsZGlnIGlucHV0OiBmb3J2ZW50ZXQgJHtpfSwgZmlrayAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BVZ3lsZGlnIHZlcmRpOiBmb3J2ZW50ZXQgJHtrKGUudmFsdWVzWzBdKX1gOmBVZ3lsZGlnIHZhbGc6IGZvcnZlbnRldCBlbiBhdiAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gRm9yIHN0b3IodCk6IGZvcnZlbnRldCAke2Uub3JpZ2luPz8idmFsdWUifSB0aWwgw6UgaGEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudGVyIn1gOmBGb3Igc3Rvcih0KTogZm9ydmVudGV0ICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IHRpbCDDpSBoYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BGb3IgbGl0ZShuKTogZm9ydmVudGV0ICR7ZS5vcmlnaW59IHRpbCDDpSBoYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgRm9yIGxpdGUobik6IGZvcnZlbnRldCAke2Uub3JpZ2lufSB0aWwgw6UgaGEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFVneWxkaWcgc3RyZW5nOiBtw6Ugc3RhcnRlIG1lZCAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BVZ3lsZGlnIHN0cmVuZzogbcOlIGVuZGUgbWVkICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gVWd5bGRpZyBzdHJlbmc6IG3DpSBpbm5laG9sZGUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFVneWxkaWcgc3RyZW5nOiBtw6UgbWF0Y2hlIG3DuG5zdGVyZXQgJHtpLnBhdHRlcm59YDpgVWd5bGRpZyAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gVWd5bGRpZyB0YWxsOiBtw6UgdsOmcmUgZXQgbXVsdGlwbHVtIGF2ICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyJVa2plbnRlIG7DuGtsZXIiOiJVa2plbnQgbsO4a2tlbCJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYFVneWxkaWcgbsO4a2tlbCBpICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJVZ3lsZGlnIGlucHV0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFVneWxkaWcgdmVyZGkgaSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iVWd5bGRpZyBpbnB1dCJ9fX07ZnVuY3Rpb24gTGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6QWYoKX19Y29uc3QgTWY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImhhcmYiLHZlcmI6Im9sbWFsxLFkxLFyIn0sZmlsZTp7dW5pdDoiYmF5dCIsdmVyYjoib2xtYWzEsWTEsXIifSxhcnJheTp7dW5pdDoidW5zdXIiLHZlcmI6Im9sbWFsxLFkxLFyIn0sc2V0Ont1bml0OiJ1bnN1ciIsdmVyYjoib2xtYWzEsWTEsXIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiZ2lyZW4iLGVtYWlsOiJlcG9zdGFnw6JoIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gaGVuZ8OibcSxIixkYXRlOiJJU08gdGFyaWhpIix0aW1lOiJJU08gemFtYW7EsSIsZHVyYXRpb246IklTTyBtw7xkZGV0aSIsaXB2NDoiSVB2NCBuacWfw6JuxLEiLGlwdjY6IklQdjYgbmnFn8OibsSxIixjaWRydjQ6IklQdjQgbWVuemlsaSIsY2lkcnY2OiJJUHY2IG1lbnppbGkiLGJhc2U2NDoiYmFzZTY0LcWfaWZyZWxpIG1ldGluIixiYXNlNjR1cmw6ImJhc2U2NHVybC3Fn2lmcmVsaSBtZXRpbiIsanNvbl9zdHJpbmc6IkpTT04gbWV0aW4iLGUxNjQ6IkUuMTY0IHNhecSxc8SxIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZ2lyZW4ifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJudW1hcmEiLGFycmF5OiJzYWYiLG51bGw6ImdheWIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gRsOic2l0IGdpcmVuOiB1bXVsYW4gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBhbMSxbmFuICR7c31gOmBGw6JzaXQgZ2lyZW46IHVtdWxhbiAke2l9LCBhbMSxbmFuICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEbDonNpdCBnaXJlbjogdW11bGFuICR7ayhlLnZhbHVlc1swXSl9YDpgRsOic2l0IHRlcmNpaDogbcO7dGViZXJsZXIgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEZhemxhIGLDvHnDvGs6ICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9LCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50cyJ9IHNhaGlwIG9sbWFsxLF5ZMSxLmA6YEZhemxhIGLDvHnDvGs6ICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9LCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gb2xtYWzEsXlkxLEuYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gRmF6bGEga8O8w6fDvGs6ICR7ZS5vcmlnaW59LCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9IHNhaGlwIG9sbWFsxLF5ZMSxLmA6YEZhemxhIGvDvMOnw7xrOiAke2Uub3JpZ2lufSwgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IG9sbWFsxLF5ZMSxLmB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BGw6JzaXQgbWV0aW46ICIke2kucHJlZml4fSIgaWxlIGJhxZ9sYW1hbMSxLmA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gRsOic2l0IG1ldGluOiAiJHtpLnN1ZmZpeH0iIGlsZSBiaXRtZWxpLmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BGw6JzaXQgbWV0aW46ICIke2kuaW5jbHVkZXN9IiBpaHRpdsOiIGV0bWVsaS5gOmkuZm9ybWF0PT09InJlZ2V4Ij9gRsOic2l0IG1ldGluOiAke2kucGF0dGVybn0gbmFrxZ/EsW5hIHV5bWFsxLEuYDpgRsOic2l0ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBGw6JzaXQgc2F5xLE6ICR7ZS5kaXZpc29yfSBrYXTEsSBvbG1hbMSxeWTEsS5gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBUYW7EsW5tYXlhbiBhbmFodGFyICR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0gacOnaW4gdGFuxLFubWF5YW4gYW5haHRhciB2YXIuYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJHaXJlbiB0YW7EsW5hbWFkxLEuIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IGnDp2luIHRhbsSxbm1heWFuIGvEsXltZXQgdmFyLmA7ZGVmYXVsdDpyZXR1cm4iS8SxeW1ldCB0YW7EsW5hbWFkxLEuIn19fTtmdW5jdGlvbiBxZigpe3JldHVybntsb2NhbGVFcnJvcjpNZigpfX1jb25zdCBGZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi2KrZiNqp2YoiLHZlcmI6ItmI2YTYsdmKIn0sZmlsZTp7dW5pdDoi2KjYp9uM2bzYsyIsdmVyYjoi2YjZhNix2YoifSxhcnJheTp7dW5pdDoi2KrZiNqp2YoiLHZlcmI6ItmI2YTYsdmKIn0sc2V0Ont1bml0OiLYqtmI2qnZiiIsdmVyYjoi2YjZhNix2YoifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi2YjYsdmI2K/ZiiIsZW1haWw6Itio2LHbjNqa2YbYp9mE24zaqSIsdXJsOiLbjNmIINii2LEg2KfZhCIsZW1vamk6Itin24zZhdmI2KzZiiIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi2YbbjNm82Ycg2KfZiCDZiNiu2KoiLGRhdGU6ItmG25DZvNmHIix0aW1lOiLZiNiu2KoiLGR1cmF0aW9uOiLZhdmI2K/ZhyIsaXB2NDoi2K8gSVB2NCDZvtiq2YciLGlwdjY6ItivIElQdjYg2b7YqtmHIixjaWRydjQ6ItivIElQdjQg2LPYp9it2YciLGNpZHJ2Njoi2K8gSVB2NiDYs9in2K3ZhyIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCDZhdiq2YYiLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQg2YXYqtmGIixqc29uX3N0cmluZzoiSlNPTiDZhdiq2YYiLGUxNjQ6ItivIEUuMTY0INi02YXbkNix2YciLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLZiNix2YjYr9mKIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi2LnYr9ivIixhcnJheToi2KfYsduQIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNmG2KfYs9mFINmI2LHZiNiv2Yo6INio2KfbjNivIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSDZiNin24wsINmF2qvYsSAke3N9INiq2LHZhNin2LPZhyDYtNmIYDpg2YbYp9iz2YUg2YjYsdmI2K/Zijog2KjYp9uM2K8gJHtpfSDZiNin24wsINmF2qvYsSAke3N9INiq2LHZhNin2LPZhyDYtNmIYH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DZhtin2LPZhSDZiNix2YjYr9mKOiDYqNin24zYryAke2soZS52YWx1ZXNbMF0pfSDZiNin24xgOmDZhtin2LPZhSDYp9mG2KrYrtin2Kg6INio2KfbjNivINuM2Ygg2YTZhyAkeyQoZS52YWx1ZXMsInwiKX0g2oXYrtmHINmI2KfbjGA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DaiduM2LEg2YTZiNuMOiAke2Uub3JpZ2luPz8i2KfYsdiy2prYqiJ9INio2KfbjNivICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/Iti52YbYtdix2YjZhtmHIn0g2YjZhNix2YpgOmDaiduM2LEg2YTZiNuMOiAke2Uub3JpZ2luPz8i2KfYsdiy2prYqiJ9INio2KfbjNivICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSDZiNmKYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g2onbjNixINqp2YjahtmG24w6ICR7ZS5vcmlnaW59INio2KfbjNivICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0g2YjZhNix2YpgOmDaiduM2LEg2qnZiNqG2YbbjDogJHtlLm9yaWdpbn0g2KjYp9uM2K8gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9INmI2YpgfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g2YbYp9iz2YUg2YXYqtmGOiDYqNin24zYryDYryAiJHtpLnByZWZpeH0iINiz2LHZhyDZvtuM2YQg2LTZimA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g2YbYp9iz2YUg2YXYqtmGOiDYqNin24zYryDYryAiJHtpLnN1ZmZpeH0iINiz2LHZhyDZvtin24wg2KrZhyDZiNix2LPZitqW2YpgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g2YbYp9iz2YUg2YXYqtmGOiDYqNin24zYryAiJHtpLmluY2x1ZGVzfSIg2YjZhNix2YpgOmkuZm9ybWF0PT09InJlZ2V4Ij9g2YbYp9iz2YUg2YXYqtmGOiDYqNin24zYryDYryAke2kucGF0dGVybn0g2LPYsdmHINmF2LfYp9io2YLYqiDZiNmE2LHZimA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSDZhtin2LPZhSDYr9uMYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNmG2KfYs9mFINi52K/Yrzog2KjYp9uM2K8g2K8gJHtlLmRpdmlzb3J9INmF2LbYsdioINmI2YpgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDZhtin2LPZhSAke2Uua2V5cy5sZW5ndGg+MT8i2qnZhNuM2onZiNmG2YciOiLaqdmE24zaiSJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNmG2KfYs9mFINqp2YTbjNqJINm+2YcgJHtlLm9yaWdpbn0g2qnbkGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i2YbYp9iz2YXZhyDZiNix2YjYr9mKIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNmG2KfYs9mFINi52YbYtdixINm+2YcgJHtlLm9yaWdpbn0g2qnbkGA7ZGVmYXVsdDpyZXR1cm4i2YbYp9iz2YXZhyDZiNix2YjYr9mKIn19fTtmdW5jdGlvbiBKZigpe3JldHVybntsb2NhbGVFcnJvcjpGZigpfX1jb25zdCBIZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiem5ha8OzdyIsdmVyYjoibWllxIcifSxmaWxlOnt1bml0OiJiYWp0w7N3Iix2ZXJiOiJtaWXEhyJ9LGFycmF5Ont1bml0OiJlbGVtZW50w7N3Iix2ZXJiOiJtaWXEhyJ9LHNldDp7dW5pdDoiZWxlbWVudMOzdyIsdmVyYjoibWllxIcifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoid3lyYcW8ZW5pZSIsZW1haWw6ImFkcmVzIGVtYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRhIGkgZ29kemluYSB3IGZvcm1hY2llIElTTyIsZGF0ZToiZGF0YSB3IGZvcm1hY2llIElTTyIsdGltZToiZ29kemluYSB3IGZvcm1hY2llIElTTyIsZHVyYXRpb246ImN6YXMgdHJ3YW5pYSBJU08iLGlwdjQ6ImFkcmVzIElQdjQiLGlwdjY6ImFkcmVzIElQdjYiLGNpZHJ2NDoiemFrcmVzIElQdjQiLGNpZHJ2NjoiemFrcmVzIElQdjYiLGJhc2U2NDoiY2nEhWcgem5ha8OzdyB6YWtvZG93YW55IHcgZm9ybWFjaWUgYmFzZTY0IixiYXNlNjR1cmw6ImNpxIVnIHpuYWvDs3cgemFrb2Rvd2FueSB3IGZvcm1hY2llIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNpxIVnIHpuYWvDs3cgdyBmb3JtYWNpZSBKU09OIixlMTY0OiJsaWN6YmEgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJ3ZWrFm2NpZSJ9LG89e25hbjoiTmFOIixudW1iZXI6ImxpY3piYSIsYXJyYXk6InRhYmxpY2EifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gTmllcHJhd2lkxYJvd2UgZGFuZSB3ZWrFm2Npb3dlOiBvY3pla2l3YW5vIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgb3RyenltYW5vICR7c31gOmBOaWVwcmF3aWTFgm93ZSBkYW5lIHdlasWbY2lvd2U6IG9jemVraXdhbm8gJHtpfSwgb3RyenltYW5vICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE5pZXByYXdpZMWCb3dlIGRhbmUgd2VqxZtjaW93ZTogb2N6ZWtpd2FubyAke2soZS52YWx1ZXNbMF0pfWA6YE5pZXByYXdpZMWCb3dhIG9wY2phOiBvY3pla2l3YW5vIGplZG5laiB6IHdhcnRvxZtjaSAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gWmEgZHXFvGEgd2FydG/Fm8SHOiBvY3pla2l3YW5vLCDFvGUgJHtlLm9yaWdpbj8/IndhcnRvxZvEhyJ9IGLEmWR6aWUgbWllxIcgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudMOzdyJ9YDpgWmJ5dCBkdcW8KHkvYS9lKTogb2N6ZWtpd2FubywgxbxlICR7ZS5vcmlnaW4/PyJ3YXJ0b8WbxIcifSBixJlkemllIHd5bm9zacSHICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFphIG1hxYJhIHdhcnRvxZvEhzogb2N6ZWtpd2FubywgxbxlICR7ZS5vcmlnaW4/PyJ3YXJ0b8WbxIcifSBixJlkemllIG1pZcSHICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnTDs3cifWA6YFpieXQgbWHFgih5L2EvZSk6IG9jemVraXdhbm8sIMW8ZSAke2Uub3JpZ2luPz8id2FydG/Fm8SHIn0gYsSZZHppZSB3eW5vc2nEhyAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gTmllcHJhd2lkxYJvd3kgY2nEhWcgem5ha8OzdzogbXVzaSB6YWN6eW5hxIcgc2nEmSBvZCAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BOaWVwcmF3aWTFgm93eSBjacSFZyB6bmFrw7N3OiBtdXNpIGtvxYRjennEhyBzacSZIG5hICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gTmllcHJhd2lkxYJvd3kgY2nEhWcgem5ha8OzdzogbXVzaSB6YXdpZXJhxIcgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YE5pZXByYXdpZMWCb3d5IGNpxIVnIHpuYWvDs3c6IG11c2kgb2Rwb3dpYWRhxIcgd3pvcmNvd2kgJHtpLnBhdHRlcm59YDpgTmllcHJhd2lkxYJvdyh5L2EvZSkgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5pZXByYXdpZMWCb3dhIGxpY3piYTogbXVzaSBiecSHIHdpZWxva3JvdG5vxZtjacSFICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5pZXJvenBvem5hbmUga2x1Y3plJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBOaWVwcmF3aWTFgm93eSBrbHVjeiB3ICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJOaWVwcmF3aWTFgm93ZSBkYW5lIHdlasWbY2lvd2UiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmllcHJhd2lkxYJvd2Egd2FydG/Fm8SHIHcgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIk5pZXByYXdpZMWCb3dlIGRhbmUgd2VqxZtjaW93ZSJ9fX07ZnVuY3Rpb24gVmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6SGYoKX19Y29uc3QgS2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcmFjdGVyZXMiLHZlcmI6InRlciJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJ0ZXIifSxhcnJheTp7dW5pdDoiaXRlbnMiLHZlcmI6InRlciJ9LHNldDp7dW5pdDoiaXRlbnMiLHZlcmI6InRlciJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJwYWRyw6NvIixlbWFpbDoiZW5kZXJlw6dvIGRlIGUtbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0YSBlIGhvcmEgSVNPIixkYXRlOiJkYXRhIElTTyIsdGltZToiaG9yYSBJU08iLGR1cmF0aW9uOiJkdXJhw6fDo28gSVNPIixpcHY0OiJlbmRlcmXDp28gSVB2NCIsaXB2NjoiZW5kZXJlw6dvIElQdjYiLGNpZHJ2NDoiZmFpeGEgZGUgSVB2NCIsY2lkcnY2OiJmYWl4YSBkZSBJUHY2IixiYXNlNjQ6InRleHRvIGNvZGlmaWNhZG8gZW0gYmFzZTY0IixiYXNlNjR1cmw6IlVSTCBjb2RpZmljYWRhIGVtIGJhc2U2NCIsanNvbl9zdHJpbmc6InRleHRvIEpTT04iLGUxNjQ6Im7Dum1lcm8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbnRyYWRhIn0sbz17bmFuOiJOYU4iLG51bWJlcjoibsO6bWVybyIsbnVsbDoibnVsbyJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BUaXBvIGludsOhbGlkbzogZXNwZXJhZG8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCByZWNlYmlkbyAke3N9YDpgVGlwbyBpbnbDoWxpZG86IGVzcGVyYWRvICR7aX0sIHJlY2ViaWRvICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEVudHJhZGEgaW52w6FsaWRhOiBlc3BlcmFkbyAke2soZS52YWx1ZXNbMF0pfWA6YE9ww6fDo28gaW52w6FsaWRhOiBlc3BlcmFkYSB1bWEgZGFzICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BNdWl0byBncmFuZGU6IGVzcGVyYWRvIHF1ZSAke2Uub3JpZ2luPz8idmFsb3IifSB0aXZlc3NlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRvcyJ9YDpgTXVpdG8gZ3JhbmRlOiBlc3BlcmFkbyBxdWUgJHtlLm9yaWdpbj8/InZhbG9yIn0gZm9zc2UgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gTXVpdG8gcGVxdWVubzogZXNwZXJhZG8gcXVlICR7ZS5vcmlnaW59IHRpdmVzc2UgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YE11aXRvIHBlcXVlbm86IGVzcGVyYWRvIHF1ZSAke2Uub3JpZ2lufSBmb3NzZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gVGV4dG8gaW52w6FsaWRvOiBkZXZlIGNvbWXDp2FyIGNvbSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BUZXh0byBpbnbDoWxpZG86IGRldmUgdGVybWluYXIgY29tICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gVGV4dG8gaW52w6FsaWRvOiBkZXZlIGluY2x1aXIgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFRleHRvIGludsOhbGlkbzogZGV2ZSBjb3JyZXNwb25kZXIgYW8gcGFkcsOjbyAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0gaW52w6FsaWRvYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE7Dum1lcm8gaW52w6FsaWRvOiBkZXZlIHNlciBtw7psdGlwbG8gZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQ2hhdmUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IGRlc2NvbmhlY2lkYSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQ2hhdmUgaW52w6FsaWRhIGVtICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJFbnRyYWRhIGludsOhbGlkYSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBWYWxvciBpbnbDoWxpZG8gZW0gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkNhbXBvIGludsOhbGlkbyJ9fX07ZnVuY3Rpb24gQmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6S2YoKX19Y29uc3QgV2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcmFjdGVyZSIsdmVyYjoic8SDIGFpYsSDIn0sZmlsZTp7dW5pdDoib2N0ZcibaSIsdmVyYjoic8SDIGFpYsSDIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRlIix2ZXJiOiJzxIMgYWlixIMifSxzZXQ6e3VuaXQ6ImVsZW1lbnRlIix2ZXJiOiJzxIMgYWlixIMifSxtYXA6e3VuaXQ6ImludHLEg3JpIix2ZXJiOiJzxIMgYWlixIMifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW50cmFyZSIsZW1haWw6ImFkcmVzxIMgZGUgZW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdMSDIMiZaSBvcsSDIElTTyIsZGF0ZToiZGF0xIMgSVNPIix0aW1lOiJvcsSDIElTTyIsZHVyYXRpb246ImR1cmF0xIMgSVNPIixpcHY0OiJhZHJlc8SDIElQdjQiLGlwdjY6ImFkcmVzxIMgSVB2NiIsbWFjOiJhZHJlc8SDIE1BQyIsY2lkcnY0OiJpbnRlcnZhbCBJUHY0IixjaWRydjY6ImludGVydmFsIElQdjYiLGJhc2U2NDoiyJlpciBjb2RhdCBiYXNlNjQiLGJhc2U2NHVybDoiyJlpciBjb2RhdCBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLImWlyIEpTT04iLGUxNjQ6Im51bcSDciBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImludHJhcmUifSxvPXtuYW46Ik5hTiIsc3RyaW5nOiLImWlyIixudW1iZXI6Im51bcSDciIsYm9vbGVhbjoiYm9vbGVhbiIsZnVuY3Rpb246ImZ1bmPIm2llIixhcnJheToibWF0cmljZSIsb2JqZWN0OiJvYmllY3QiLHVuZGVmaW5lZDoibmVkZWZpbml0IixzeW1ib2w6InNpbWJvbCIsYmlnaW50OiJudW3Eg3IgbWFyZSIsdm9pZDoidm9pZCIsbmV2ZXI6Im5ldmVyIixtYXA6ImhhcnTEgyIsc2V0OiJzZXQifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuYEludHJhcmUgaW52YWxpZMSDOiBhyJl0ZXB0YXQgJHtpfSwgcHJpbWl0ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEludHJhcmUgaW52YWxpZMSDOiBhyJl0ZXB0YXQgJHtrKGUudmFsdWVzWzBdKX1gOmBPcMibaXVuZSBpbnZhbGlkxIM6IGHImXRlcHRhdCB1bmEgZGludHJlICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BQcmVhIG1hcmU6IGHImXRlcHRhdCBjYSAke2Uub3JpZ2luPz8idmFsb2FyZWEifSAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudGUifWA6YFByZWEgbWFyZTogYciZdGVwdGF0IGNhICR7ZS5vcmlnaW4/PyJ2YWxvYXJlYSJ9IHPEgyBmaWUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gUHJlYSBtaWM6IGHImXRlcHRhdCBjYSAke2Uub3JpZ2lufSAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFByZWEgbWljOiBhyJl0ZXB0YXQgY2EgJHtlLm9yaWdpbn0gc8SDIGZpZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gyJhpciBpbnZhbGlkOiB0cmVidWllIHPEgyDDrm5jZWFwxIMgY3UgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gyJhpciBpbnZhbGlkOiB0cmVidWllIHPEgyBzZSB0ZXJtaW5lIGN1ICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gyJhpciBpbnZhbGlkOiB0cmVidWllIHPEgyBpbmNsdWTEgyAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gyJhpciBpbnZhbGlkOiB0cmVidWllIHPEgyBzZSBwb3RyaXZlYXNjxIMgY3UgbW9kZWx1bCAke2kucGF0dGVybn1gOmBGb3JtYXQgaW52YWxpZDogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE51bcSDciBpbnZhbGlkOiB0cmVidWllIHPEgyBmaWUgbXVsdGlwbHUgZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQ2hlaSBuZXJlY3Vub3NjdXRlOiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENoZWllIGludmFsaWTEgyDDrm4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkludHJhcmUgaW52YWxpZMSDIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFZhbG9hcmUgaW52YWxpZMSDIMOubiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iSW50cmFyZSBpbnZhbGlkxIMifX19O2Z1bmN0aW9uIEdmKCl7cmV0dXJue2xvY2FsZUVycm9yOldmKCl9fWZ1bmN0aW9uIFBzKHQsbixyLG8pe2NvbnN0IGU9TWF0aC5hYnModCksaT1lJTEwLGE9ZSUxMDA7cmV0dXJuIGE+PTExJiZhPD0xOT9vOmk9PT0xP246aT49MiYmaTw9ND9yOm99Y29uc3QgWGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6e29uZToi0YHQuNC80LLQvtC7IixmZXc6ItGB0LjQvNCy0L7Qu9CwIixtYW55OiLRgdC40LzQstC+0LvQvtCyIn0sdmVyYjoi0LjQvNC10YLRjCJ9LGZpbGU6e3VuaXQ6e29uZToi0LHQsNC50YIiLGZldzoi0LHQsNC50YLQsCIsbWFueToi0LHQsNC50YIifSx2ZXJiOiLQuNC80LXRgtGMIn0sYXJyYXk6e3VuaXQ6e29uZToi0Y3Qu9C10LzQtdC90YIiLGZldzoi0Y3Qu9C10LzQtdC90YLQsCIsbWFueToi0Y3Qu9C10LzQtdC90YLQvtCyIn0sdmVyYjoi0LjQvNC10YLRjCJ9LHNldDp7dW5pdDp7b25lOiLRjdC70LXQvNC10L3RgiIsZmV3OiLRjdC70LXQvNC10L3RgtCwIixtYW55OiLRjdC70LXQvNC10L3RgtC+0LIifSx2ZXJiOiLQuNC80LXRgtGMIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItCy0LLQvtC0IixlbWFpbDoiZW1haWwg0LDQtNGA0LXRgSIsdXJsOiJVUkwiLGVtb2ppOiLRjdC80L7QtNC30LgiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDQtNCw0YLQsCDQuCDQstGA0LXQvNGPIixkYXRlOiJJU08g0LTQsNGC0LAiLHRpbWU6IklTTyDQstGA0LXQvNGPIixkdXJhdGlvbjoiSVNPINC00LvQuNGC0LXQu9GM0L3QvtGB0YLRjCIsaXB2NDoiSVB2NCDQsNC00YDQtdGBIixpcHY2OiJJUHY2INCw0LTRgNC10YEiLGNpZHJ2NDoiSVB2NCDQtNC40LDQv9Cw0LfQvtC9IixjaWRydjY6IklQdjYg0LTQuNCw0L/QsNC30L7QvSIsYmFzZTY0OiLRgdGC0YDQvtC60LAg0LIg0YTQvtGA0LzQsNGC0LUgYmFzZTY0IixiYXNlNjR1cmw6ItGB0YLRgNC+0LrQsCDQsiDRhNC+0YDQvNCw0YLQtSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJKU09OINGB0YLRgNC+0LrQsCIsZTE2NDoi0L3QvtC80LXRgCBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItCy0LLQvtC0In0sbz17bmFuOiJOYU4iLG51bWJlcjoi0YfQuNGB0LvQviIsYXJyYXk6ItC80LDRgdGB0LjQsiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DQndC10LLQtdGA0L3Ri9C5INCy0LLQvtC0OiDQvtC20LjQtNCw0LvQvtGB0YwgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDQv9C+0LvRg9GH0LXQvdC+ICR7c31gOmDQndC10LLQtdGA0L3Ri9C5INCy0LLQvtC0OiDQvtC20LjQtNCw0LvQvtGB0YwgJHtpfSwg0L/QvtC70YPRh9C10L3QviAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DQndC10LLQtdGA0L3Ri9C5INCy0LLQvtC0OiDQvtC20LjQtNCw0LvQvtGB0YwgJHtrKGUudmFsdWVzWzBdKX1gOmDQndC10LLQtdGA0L3Ri9C5INCy0LDRgNC40LDQvdGCOiDQvtC20LjQtNCw0LvQvtGB0Ywg0L7QtNC90L4g0LjQtyAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtpZihhKXtjb25zdCBzPU51bWJlcihlLm1heGltdW0pLGM9UHMocyxhLnVuaXQub25lLGEudW5pdC5mZXcsYS51bml0Lm1hbnkpO3JldHVybmDQodC70LjRiNC60L7QvCDQsdC+0LvRjNGI0L7QtSDQt9C90LDRh9C10L3QuNC1OiDQvtC20LjQtNCw0LvQvtGB0YwsINGH0YLQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfQtdC90LjQtSJ9INCx0YPQtNC10YIg0LjQvNC10YLRjCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtjfWB9cmV0dXJuYNCh0LvQuNGI0LrQvtC8INCx0L7Qu9GM0YjQvtC1INC30L3QsNGH0LXQvdC40LU6INC+0LbQuNC00LDQu9C+0YHRjCwg0YfRgtC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9C10L3QuNC1In0g0LHRg9C00LXRgiAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO2lmKGEpe2NvbnN0IHM9TnVtYmVyKGUubWluaW11bSksYz1QcyhzLGEudW5pdC5vbmUsYS51bml0LmZldyxhLnVuaXQubWFueSk7cmV0dXJuYNCh0LvQuNGI0LrQvtC8INC80LDQu9C10L3RjNC60L7QtSDQt9C90LDRh9C10L3QuNC1OiDQvtC20LjQtNCw0LvQvtGB0YwsINGH0YLQviAke2Uub3JpZ2lufSDQsdGD0LTQtdGCINC40LzQtdGC0YwgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Y31gfXJldHVybmDQodC70LjRiNC60L7QvCDQvNCw0LvQtdC90YzQutC+0LUg0LfQvdCw0YfQtdC90LjQtTog0L7QttC40LTQsNC70L7RgdGMLCDRh9GC0L4gJHtlLm9yaWdpbn0g0LHRg9C00LXRgiAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g0J3QtdCy0LXRgNC90LDRjyDRgdGC0YDQvtC60LA6INC00L7Qu9C20L3QsCDQvdCw0YfQuNC90LDRgtGM0YHRjyDRgSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DQndC10LLQtdGA0L3QsNGPINGB0YLRgNC+0LrQsDog0LTQvtC70LbQvdCwINC30LDQutCw0L3Rh9C40LLQsNGC0YzRgdGPINC90LAgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DQndC10LLQtdGA0L3QsNGPINGB0YLRgNC+0LrQsDog0LTQvtC70LbQvdCwINGB0L7QtNC10YDQttCw0YLRjCAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g0J3QtdCy0LXRgNC90LDRjyDRgdGC0YDQvtC60LA6INC00L7Qu9C20L3QsCDRgdC+0L7RgtCy0LXRgtGB0YLQstC+0LLQsNGC0Ywg0YjQsNCx0LvQvtC90YMgJHtpLnBhdHRlcm59YDpg0J3QtdCy0LXRgNC90YvQuSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g0J3QtdCy0LXRgNC90L7QtSDRh9C40YHQu9C+OiDQtNC+0LvQttC90L4g0LHRi9GC0Ywg0LrRgNCw0YLQvdGL0LwgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g0J3QtdGA0LDRgdC/0L7Qt9C90LDQvdC9JHtlLmtleXMubGVuZ3RoPjE/ItGL0LUiOiLRi9C5In0g0LrQu9GO0Ycke2Uua2V5cy5sZW5ndGg+MT8i0LgiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDQndC10LLQtdGA0L3Ri9C5INC60LvRjtGHINCyICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLQndC10LLQtdGA0L3Ri9C1INCy0YXQvtC00L3Ri9C1INC00LDQvdC90YvQtSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDQndC10LLQtdGA0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LIgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItCd0LXQstC10YDQvdGL0LUg0LLRhdC+0LTQvdGL0LUg0LTQsNC90L3Ri9C1In19fTtmdW5jdGlvbiBZZigpe3JldHVybntsb2NhbGVFcnJvcjpYZigpfX1jb25zdCBRZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiem5ha292Iix2ZXJiOiJpbWV0aSJ9LGZpbGU6e3VuaXQ6ImJhanRvdiIsdmVyYjoiaW1ldGkifSxhcnJheTp7dW5pdDoiZWxlbWVudG92Iix2ZXJiOiJpbWV0aSJ9LHNldDp7dW5pdDoiZWxlbWVudG92Iix2ZXJiOiJpbWV0aSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJ2bm9zIixlbWFpbDoiZS1wb8WhdG5pIG5hc2xvdiIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdHVtIGluIMSNYXMiLGRhdGU6IklTTyBkYXR1bSIsdGltZToiSVNPIMSNYXMiLGR1cmF0aW9uOiJJU08gdHJhamFuamUiLGlwdjQ6IklQdjQgbmFzbG92IixpcHY2OiJJUHY2IG5hc2xvdiIsY2lkcnY0OiJvYnNlZyBJUHY0IixjaWRydjY6Im9ic2VnIElQdjYiLGJhc2U2NDoiYmFzZTY0IGtvZGlyYW4gbml6IixiYXNlNjR1cmw6ImJhc2U2NHVybCBrb2RpcmFuIG5peiIsanNvbl9zdHJpbmc6IkpTT04gbml6IixlMTY0OiJFLjE2NCDFoXRldmlsa2EiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJ2bm9zIn0sbz17bmFuOiJOYU4iLG51bWJlcjoixaF0ZXZpbG8iLGFycmF5OiJ0YWJlbGEifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gTmV2ZWxqYXZlbiB2bm9zOiBwcmnEjWFrb3Zhbm8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBwcmVqZXRvICR7c31gOmBOZXZlbGphdmVuIHZub3M6IHByacSNYWtvdmFubyAke2l9LCBwcmVqZXRvICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE5ldmVsamF2ZW4gdm5vczogcHJpxI1ha292YW5vICR7ayhlLnZhbHVlc1swXSl9YDpgTmV2ZWxqYXZuYSBtb8W+bm9zdDogcHJpxI1ha292YW5vIGVubyBpem1lZCAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gUHJldmVsaWtvOiBwcmnEjWFrb3Zhbm8sIGRhIGJvICR7ZS5vcmlnaW4/PyJ2cmVkbm9zdCJ9IGltZWxvICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRvdiJ9YDpgUHJldmVsaWtvOiBwcmnEjWFrb3Zhbm8sIGRhIGJvICR7ZS5vcmlnaW4/PyJ2cmVkbm9zdCJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFByZW1hamhubzogcHJpxI1ha292YW5vLCBkYSBibyAke2Uub3JpZ2lufSBpbWVsbyAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgUHJlbWFqaG5vOiBwcmnEjWFrb3Zhbm8sIGRhIGJvICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BOZXZlbGphdmVuIG5pejogbW9yYSBzZSB6YcSNZXRpIHogIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgc2Uga29uxI1hdGkgeiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE5ldmVsamF2ZW4gbml6OiBtb3JhIHZzZWJvdmF0aSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgdXN0cmV6YXRpIHZ6b3JjdSAke2kucGF0dGVybn1gOmBOZXZlbGphdmVuICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOZXZlbGphdm5vIMWhdGV2aWxvOiBtb3JhIGJpdGkgdmXEjWtyYXRuaWsgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTmVwcmVwb3puYW4ke2Uua2V5cy5sZW5ndGg+MT8iaSBrbGp1xI1pIjoiIGtsanXEjSJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5ldmVsamF2ZW4ga2xqdcSNIHYgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk5ldmVsamF2ZW4gdm5vcyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOZXZlbGphdm5hIHZyZWRub3N0IHYgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIk5ldmVsamF2ZW4gdm5vcyJ9fX07ZnVuY3Rpb24gZWcoKXtyZXR1cm57bG9jYWxlRXJyb3I6UWYoKX19Y29uc3QgdGc9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InRlY2tlbiIsdmVyYjoiYXR0IGhhIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6ImF0dCBoYSJ9LGFycmF5Ont1bml0OiJvYmpla3QiLHZlcmI6ImF0dCBpbm5laMOlbGxhIn0sc2V0Ont1bml0OiJvYmpla3QiLHZlcmI6ImF0dCBpbm5laMOlbGxhIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6InJlZ3VsasOkcnQgdXR0cnljayIsZW1haWw6ImUtcG9zdGFkcmVzcyIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPLWRhdHVtIG9jaCB0aWQiLGRhdGU6IklTTy1kYXR1bSIsdGltZToiSVNPLXRpZCIsZHVyYXRpb246IklTTy12YXJha3RpZ2hldCIsaXB2NDoiSVB2NC1pbnRlcnZhbGwiLGlwdjY6IklQdjYtaW50ZXJ2YWxsIixjaWRydjQ6IklQdjQtc3Bla3RydW0iLGNpZHJ2NjoiSVB2Ni1zcGVrdHJ1bSIsYmFzZTY0OiJiYXNlNjQta29kYWQgc3Ryw6RuZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwta29kYWQgc3Ryw6RuZyIsanNvbl9zdHJpbmc6IkpTT04tc3Ryw6RuZyIsZTE2NDoiRS4xNjQtbnVtbWVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoibWFsbC1saXRlcmFsIn0sbz17bmFuOiJOYU4iLG51bWJlcjoiYW50YWwiLGFycmF5OiJsaXN0YSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BPZ2lsdGlnIGlubWF0bmluZzogZsO2cnbDpG50YXQgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBmaWNrICR7c31gOmBPZ2lsdGlnIGlubWF0bmluZzogZsO2cnbDpG50YXQgJHtpfSwgZmljayAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BPZ2lsdGlnIGlubWF0bmluZzogZsO2cnbDpG50YXQgJHtrKGUudmFsdWVzWzBdKX1gOmBPZ2lsdGlndCB2YWw6IGbDtnJ2w6RudGFkZSBlbiBhdiAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gRsO2ciBzdG9yKHQpOiBmw7ZydsOkbnRhZGUgJHtlLm9yaWdpbj8/InbDpHJkZXQifSBhdHQgaGEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudCJ9YDpgRsO2ciBzdG9yKHQpOiBmw7ZydsOkbnRhdCAke2Uub3JpZ2luPz8idsOkcmRldCJ9IGF0dCBoYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BGw7ZyIGxpdGUodCk6IGbDtnJ2w6RudGFkZSAke2Uub3JpZ2luPz8idsOkcmRldCJ9IGF0dCBoYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgRsO2ciBsaXRlKHQpOiBmw7ZydsOkbnRhZGUgJHtlLm9yaWdpbj8/InbDpHJkZXQifSBhdHQgaGEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YE9naWx0aWcgc3Ryw6RuZzogbcOlc3RlIGLDtnJqYSBtZWQgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgc2x1dGEgbWVkICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgaW5uZWjDpWxsYSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgbWF0Y2hhIG3Dtm5zdHJldCAiJHtpLnBhdHRlcm59ImA6YE9naWx0aWcodCkgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE9naWx0aWd0IHRhbDogbcOlc3RlIHZhcmEgZW4gbXVsdGlwZWwgYXYgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/Ik9rw6RuZGEgbnlja2xhciI6Ik9rw6RuZCBueWNrZWwifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBPZ2lsdGlnIG55Y2tlbCBpICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk9naWx0aWcgaW5wdXQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gT2dpbHRpZ3QgdsOkcmRlIGkgJHtlLm9yaWdpbj8/InbDpHJkZXQifWA7ZGVmYXVsdDpyZXR1cm4iT2dpbHRpZyBpbnB1dCJ9fX07ZnVuY3Rpb24gbmcoKXtyZXR1cm57bG9jYWxlRXJyb3I6dGcoKX19Y29uc3Qgcmc9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuCujuCutOCvgeCupOCvjeCupOCvgeCuleCvjeCuleCus+CvjSIsdmVyYjoi4K6V4K+K4K6j4K+N4K6f4K6/4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjSJ9LGZpbGU6e3VuaXQ6IuCuquCviOCun+CvjeCun+CvgeCuleCus+CvjSIsdmVyYjoi4K6V4K+K4K6j4K+N4K6f4K6/4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjSJ9LGFycmF5Ont1bml0OiLgrongrrHgr4Hgrqrgr43grqrgr4HgrpXgrrPgr40iLHZlcmI6IuCuleCviuCuo+CvjeCun+Cuv+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr40ifSxzZXQ6e3VuaXQ6IuCuieCuseCvgeCuquCvjeCuquCvgeCuleCus+CvjSIsdmVyYjoi4K6V4K+K4K6j4K+N4K6f4K6/4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLgrongrrPgr43grrPgr4Dgrp/gr4EiLGVtYWlsOiLgrq7grr/grqngr43grqngrp7gr43grprgrrLgr40g4K6u4K+B4K6V4K614K6w4K6/Iix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g4K6k4K+H4K6k4K6/IOCuqOCvh+CusOCuruCvjSIsZGF0ZToiSVNPIOCupOCvh+CupOCuvyIsdGltZToiSVNPIOCuqOCvh+CusOCuruCvjSIsZHVyYXRpb246IklTTyDgrpXgrr7grrIg4K6F4K6z4K614K+BIixpcHY0OiJJUHY0IOCuruCvgeCuleCuteCusOCuvyIsaXB2NjoiSVB2NiDgrq7gr4HgrpXgrrXgrrDgrr8iLGNpZHJ2NDoiSVB2NCDgrrXgrrDgrq7gr43grqrgr4EiLGNpZHJ2NjoiSVB2NiDgrrXgrrDgrq7gr43grqrgr4EiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQg4K6a4K6w4K6u4K+NIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIOCumuCusOCuruCvjSIsanNvbl9zdHJpbmc6IkpTT04g4K6a4K6w4K6u4K+NIixlMTY0OiJFLjE2NCDgro7grqPgr40iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIixudW1iZXI6IuCujuCuo+CvjSIsYXJyYXk6IuCuheCuo+CuvyIsbnVsbDoi4K614K+G4K6x4K+B4K6u4K+IIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOCupOCuteCuseCuvuCuqSDgrongrrPgr43grrPgr4Dgrp/gr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIOCuquCvhuCuseCuquCvjeCuquCun+CvjeCun+CupOCvgSAke3N9YDpg4K6k4K614K6x4K6+4K6pIOCuieCus+CvjeCus+CvgOCun+CvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7aX0sIOCuquCvhuCuseCuquCvjeCuquCun+CvjeCun+CupOCvgSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DgrqTgrrXgrrHgrr7grqkg4K6J4K6z4K+N4K6z4K+A4K6f4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtrKGUudmFsdWVzWzBdKX1gOmDgrqTgrrXgrrHgrr7grqkg4K614K6/4K6w4K+B4K6q4K+N4K6q4K6u4K+NOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHskKGUudmFsdWVzLCJ8Iil9IOCuh+CusuCvjSDgrpLgrqngr43grrHgr4FgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4K6u4K6/4K6VIOCuquCvhuCusOCuv+Cur+CupOCvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7ZS5vcmlnaW4/PyLgrq7grqTgrr/grqrgr43grqrgr4EifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLgrongrrHgr4Hgrqrgr43grqrgr4HgrpXgrrPgr40ifSDgrobgrpUg4K6H4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6YOCuruCuv+CulSDgrqrgr4bgrrDgrr/grq/grqTgr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2Uub3JpZ2luPz8i4K6u4K6k4K6/4K6q4K+N4K6q4K+BIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9IOCuhuCulSDgrofgrrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4K6u4K6/4K6V4K6a4K+NIOCumuCuv+CuseCuv+Cur+CupOCvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0g4K6G4K6VIOCuh+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmDgrq7grr/grpXgrprgr40g4K6a4K6/4K6x4K6/4K6v4K6k4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IOCuhuCulSDgrofgrrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOCupOCuteCuseCuvuCuqSDgrprgrrDgrq7gr406ICIke2kucHJlZml4fSIg4K6H4K6y4K+NIOCupOCviuCun+CumeCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOCupOCuteCuseCuvuCuqSDgrprgrrDgrq7gr406ICIke2kuc3VmZml4fSIg4K6H4K6y4K+NIOCuruCvgeCun+Cuv+CuteCun+CviOCuryDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g4K6k4K614K6x4K6+4K6pIOCumuCusOCuruCvjTogIiR7aS5pbmNsdWRlc30iIOCukCDgrongrrPgr43grrPgrp/grpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDppLmZvcm1hdD09PSJyZWdleCI/YOCupOCuteCuseCuvuCuqSDgrprgrrDgrq7gr406ICR7aS5wYXR0ZXJufSDgrq7gr4HgrrHgr4jgrqrgrr7grp/gr43grp/gr4Hgrp/grqngr40g4K6q4K+K4K6w4K+B4K6o4K+N4K6kIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6YOCupOCuteCuseCuvuCuqSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g4K6k4K614K6x4K6+4K6pIOCujuCuo+CvjTogJHtlLmRpdmlzb3J9IOCuh+CuqeCvjSDgrqrgrrLgrq7grr7grpUg4K6H4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOCuheCun+CviOCur+CuvuCus+CuruCvjSDgrqTgr4bgrrDgrr/grq/grr7grqQg4K614K6/4K6a4K+IJHtlLmtleXMubGVuZ3RoPjE/IuCuleCus+CvjSI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IOCuh+CusuCvjSDgrqTgrrXgrrHgrr7grqkg4K614K6/4K6a4K+IYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLgrqTgrrXgrrHgrr7grqkg4K6J4K6z4K+N4K6z4K+A4K6f4K+BIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IOCuh+CusuCvjSDgrqTgrrXgrrHgrr7grqkg4K6u4K6k4K6/4K6q4K+N4K6q4K+BYDtkZWZhdWx0OnJldHVybiLgrqTgrrXgrrHgrr7grqkg4K6J4K6z4K+N4K6z4K+A4K6f4K+BIn19fTtmdW5jdGlvbiBpZygpe3JldHVybntsb2NhbGVFcnJvcjpyZygpfX1jb25zdCBvZz0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi4LiV4Lix4Lin4Lit4Lix4LiB4Lip4LijIix2ZXJiOiLguITguKfguKPguKHguLUifSxmaWxlOnt1bml0OiLguYTguJrguJXguYwiLHZlcmI6IuC4hOC4p+C4o+C4oeC4tSJ9LGFycmF5Ont1bml0OiLguKPguLLguKLguIHguLLguKMiLHZlcmI6IuC4hOC4p+C4o+C4oeC4tSJ9LHNldDp7dW5pdDoi4Lij4Liy4Lii4LiB4Liy4LijIix2ZXJiOiLguITguKfguKPguKHguLUifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi4LiC4LmJ4Lit4Lih4Li54Lil4LiX4Li14LmI4Lib4LmJ4Lit4LiZIixlbWFpbDoi4LiX4Li14LmI4Lit4Lii4Li54LmI4Lit4Li14LmA4Lih4LilIix1cmw6IlVSTCIsZW1vamk6IuC4reC4tOC5guC4oeC4iOC4tCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi4Lin4Lix4LiZ4LiX4Li14LmI4LmA4Lin4Lil4Liy4LmB4Lia4LiaIElTTyIsZGF0ZToi4Lin4Lix4LiZ4LiX4Li14LmI4LmB4Lia4LiaIElTTyIsdGltZToi4LmA4Lin4Lil4Liy4LmB4Lia4LiaIElTTyIsZHVyYXRpb246IuC4iuC5iOC4p+C4h+C5gOC4p+C4peC4suC5geC4muC4miBJU08iLGlwdjQ6IuC4l+C4teC5iOC4reC4ouC4ueC5iCBJUHY0IixpcHY2OiLguJfguLXguYjguK3guKLguLnguYggSVB2NiIsY2lkcnY0OiLguIrguYjguKfguIcgSVAg4LmB4Lia4LiaIElQdjQiLGNpZHJ2Njoi4LiK4LmI4Lin4LiHIElQIOC5geC4muC4miBJUHY2IixiYXNlNjQ6IuC4guC5ieC4reC4hOC4p+C4suC4oeC5geC4muC4miBCYXNlNjQiLGJhc2U2NHVybDoi4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LmB4Lia4LiaIEJhc2U2NCDguKrguLPguKvguKPguLHguJogVVJMIixqc29uX3N0cmluZzoi4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LmB4Lia4LiaIEpTT04iLGUxNjQ6IuC5gOC4muC4reC4o+C5jOC5guC4l+C4o+C4qOC4seC4nuC4l+C5jOC4o+C4sOC4q+C4p+C5iOC4suC4h+C4m+C4o+C4sOC5gOC4l+C4qCAoRS4xNjQpIixqd3Q6IuC5guC4l+C5gOC4hOC4mSBKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuC4guC5ieC4reC4oeC4ueC4peC4l+C4teC5iOC4m+C5ieC4reC4mSJ9LG89e25hbjoiTmFOIixudW1iZXI6IuC4leC4seC4p+C5gOC4peC4giIsYXJyYXk6IuC4reC4suC4o+C5jOC5gOC4o+C4ouC5jCAoQXJyYXkpIixudWxsOiLguYTguKHguYjguKHguLXguITguYjguLIgKG51bGwpIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOC4m+C4o+C4sOC5gOC4oOC4l+C4guC5ieC4reC4oeC4ueC4peC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiE4Lin4Lij4LmA4Lib4LmH4LiZIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSDguYHguJXguYjguYTguJTguYnguKPguLHguJogJHtzfWA6YOC4m+C4o+C4sOC5gOC4oOC4l+C4guC5ieC4reC4oeC4ueC4peC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiE4Lin4Lij4LmA4Lib4LmH4LiZICR7aX0g4LmB4LiV4LmI4LmE4LiU4LmJ4Lij4Lix4LiaICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOC4hOC5iOC4suC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiE4Lin4Lij4LmA4Lib4LmH4LiZICR7ayhlLnZhbHVlc1swXSl9YDpg4LiV4Lix4Lin4LmA4Lil4Li34Lit4LiB4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguITguKfguKPguYDguJvguYfguJnguKvguJnguLbguYjguIfguYPguJkgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyLguYTguKHguYjguYDguIHguLTguJkiOiLguJnguYnguK3guKLguIHguKfguYjguLIiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOC5gOC4geC4tOC4meC4geC4s+C4q+C4meC4lDogJHtlLm9yaWdpbj8/IuC4hOC5iOC4siJ9IOC4hOC4p+C4o+C4oeC4tSR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLguKPguLLguKLguIHguLLguKMifWA6YOC5gOC4geC4tOC4meC4geC4s+C4q+C4meC4lDogJHtlLm9yaWdpbj8/IuC4hOC5iOC4siJ9IOC4hOC4p+C4o+C4oeC4tSR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8i4Lit4Lii4LmI4Liy4LiH4LiZ4LmJ4Lit4LiiIjoi4Lih4Liy4LiB4LiB4Lin4LmI4LiyIixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DguJnguYnguK3guKLguIHguKfguYjguLLguIHguLPguKvguJnguJQ6ICR7ZS5vcmlnaW59IOC4hOC4p+C4o+C4oeC4tSR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg4LiZ4LmJ4Lit4Lii4LiB4Lin4LmI4Liy4LiB4Liz4Lir4LiZ4LiUOiAke2Uub3JpZ2lufSDguITguKfguKPguKHguLUke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOC4o+C4ueC4m+C5geC4muC4muC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LiV4LmJ4Lit4LiH4LiC4Li24LmJ4LiZ4LiV4LmJ4LiZ4LiU4LmJ4Lin4LiiICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOC4o+C4ueC4m+C5geC4muC4muC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LiV4LmJ4Lit4LiH4Lil4LiH4LiX4LmJ4Liy4Lii4LiU4LmJ4Lin4LiiICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g4Lij4Li54Lib4LmB4Lia4Lia4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguILguYnguK3guITguKfguLLguKHguJXguYnguK3guIfguKHguLUgIiR7aS5pbmNsdWRlc30iIOC4reC4ouC4ueC5iOC5g+C4meC4guC5ieC4reC4hOC4p+C4suC4oWA6aS5mb3JtYXQ9PT0icmVnZXgiP2DguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4leC5ieC4reC4h+C4leC4o+C4h+C4geC4seC4muC4o+C4ueC4m+C5geC4muC4muC4l+C4teC5iOC4geC4s+C4q+C4meC4lCAke2kucGF0dGVybn1gOmDguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDguJXguLHguKfguYDguKXguILguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4leC5ieC4reC4h+C5gOC4m+C5h+C4meC4iOC4s+C4meC4p+C4meC4l+C4teC5iOC4q+C4suC4o+C4lOC5ieC4p+C4oiAke2UuZGl2aXNvcn0g4LmE4LiU4LmJ4Lil4LiH4LiV4Lix4LinYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g4Lie4Lia4LiE4Li14Lii4LmM4LiX4Li14LmI4LmE4Lih4LmI4Lij4Li54LmJ4LiI4Lix4LiBOiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYOC4hOC4teC4ouC5jOC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4h+C5g+C4mSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguYTguKHguYjguJXguKPguIfguIHguLHguJrguKPguLnguJvguYHguJrguJrguKLguLnguYDguJnguLXguKLguJnguJfguLXguYjguIHguLPguKvguJnguJTguYTguKfguYkiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiH4LmD4LiZICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLguILguYnguK3guKHguLnguKXguYTguKHguYjguJbguLnguIHguJXguYnguK3guIcifX19O2Z1bmN0aW9uIGFnKCl7cmV0dXJue2xvY2FsZUVycm9yOm9nKCl9fWNvbnN0IHNnPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJrYXJha3RlciIsdmVyYjoib2xtYWzEsSJ9LGZpbGU6e3VuaXQ6ImJheXQiLHZlcmI6Im9sbWFsxLEifSxhcnJheTp7dW5pdDoiw7bEn2UiLHZlcmI6Im9sbWFsxLEifSxzZXQ6e3VuaXQ6IsO2xJ9lIix2ZXJiOiJvbG1hbMSxIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImdpcmRpIixlbWFpbDoiZS1wb3N0YSBhZHJlc2kiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyB0YXJpaCB2ZSBzYWF0IixkYXRlOiJJU08gdGFyaWgiLHRpbWU6IklTTyBzYWF0IixkdXJhdGlvbjoiSVNPIHPDvHJlIixpcHY0OiJJUHY0IGFkcmVzaSIsaXB2NjoiSVB2NiBhZHJlc2kiLGNpZHJ2NDoiSVB2NCBhcmFsxLHEn8SxIixjaWRydjY6IklQdjYgYXJhbMSxxJ/EsSIsYmFzZTY0OiJiYXNlNjQgaWxlIMWfaWZyZWxlbm1pxZ8gbWV0aW4iLGJhc2U2NHVybDoiYmFzZTY0dXJsIGlsZSDFn2lmcmVsZW5tacWfIG1ldGluIixqc29uX3N0cmluZzoiSlNPTiBkaXplc2kiLGUxNjQ6IkUuMTY0IHNhecSxc8SxIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoixZ5hYmxvbiBkaXplc2kifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BHZcOnZXJzaXogZGXEn2VyOiBiZWtsZW5lbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGFsxLFuYW4gJHtzfWA6YEdlw6dlcnNpeiBkZcSfZXI6IGJla2xlbmVuICR7aX0sIGFsxLFuYW4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gR2XDp2Vyc2l6IGRlxJ9lcjogYmVrbGVuZW4gJHtrKGUudmFsdWVzWzBdKX1gOmBHZcOnZXJzaXogc2XDp2VuZWs6IGHFn2HEn8SxZGFraWxlcmRlbiBiaXJpIG9sbWFsxLE6ICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DDh29rIGLDvHnDvGs6IGJla2xlbmVuICR7ZS5vcmlnaW4/PyJkZcSfZXIifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLDtsSfZSJ9YDpgw4dvayBiw7x5w7xrOiBiZWtsZW5lbiAke2Uub3JpZ2luPz8iZGXEn2VyIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gw4dvayBrw7zDp8O8azogYmVrbGVuZW4gJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YMOHb2sga8O8w6fDvGs6IGJla2xlbmVuICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BHZcOnZXJzaXogbWV0aW46ICIke2kucHJlZml4fSIgaWxlIGJhxZ9sYW1hbMSxYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BHZcOnZXJzaXogbWV0aW46ICIke2kuc3VmZml4fSIgaWxlIGJpdG1lbGlgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gR2XDp2Vyc2l6IG1ldGluOiAiJHtpLmluY2x1ZGVzfSIgacOnZXJtZWxpYDppLmZvcm1hdD09PSJyZWdleCI/YEdlw6dlcnNpeiBtZXRpbjogJHtpLnBhdHRlcm59IGRlc2VuaW5lIHV5bWFsxLFgOmBHZcOnZXJzaXogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYEdlw6dlcnNpeiBzYXnEsTogJHtlLmRpdmlzb3J9IGlsZSB0YW0gYsO2bMO8bmViaWxtZWxpYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gVGFuxLFubWF5YW4gYW5haHRhciR7ZS5rZXlzLmxlbmd0aD4xPyJsYXIiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSBpw6dpbmRlIGdlw6dlcnNpeiBhbmFodGFyYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJHZcOnZXJzaXogZGXEn2VyIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IGnDp2luZGUgZ2XDp2Vyc2l6IGRlxJ9lcmA7ZGVmYXVsdDpyZXR1cm4iR2XDp2Vyc2l6IGRlxJ9lciJ9fX07ZnVuY3Rpb24gY2coKXtyZXR1cm57bG9jYWxlRXJyb3I6c2coKX19Y29uc3QgdWc9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ItGB0LjQvNCy0L7Qu9GW0LIiLHZlcmI6ItC80LDRgtC40LzQtSJ9LGZpbGU6e3VuaXQ6ItCx0LDQudGC0ZbQsiIsdmVyYjoi0LzQsNGC0LjQvNC1In0sYXJyYXk6e3VuaXQ6ItC10LvQtdC80LXQvdGC0ZbQsiIsdmVyYjoi0LzQsNGC0LjQvNC1In0sc2V0Ont1bml0OiLQtdC70LXQvNC10L3RgtGW0LIiLHZlcmI6ItC80LDRgtC40LzQtSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLQstGF0ZbQtNC90ZYg0LTQsNC90ZYiLGVtYWlsOiLQsNC00YDQtdGB0LAg0LXQu9C10LrRgtGA0L7QvdC90L7RlyDQv9C+0YjRgtC4Iix1cmw6IlVSTCIsZW1vamk6ItC10LzQvtC00LfRliIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi0LTQsNGC0LAg0YLQsCDRh9Cw0YEgSVNPIixkYXRlOiLQtNCw0YLQsCBJU08iLHRpbWU6ItGH0LDRgSBJU08iLGR1cmF0aW9uOiLRgtGA0LjQstCw0LvRltGB0YLRjCBJU08iLGlwdjQ6ItCw0LTRgNC10YHQsCBJUHY0IixpcHY2OiLQsNC00YDQtdGB0LAgSVB2NiIsY2lkcnY0OiLQtNGW0LDQv9Cw0LfQvtC9IElQdjQiLGNpZHJ2Njoi0LTRltCw0L/QsNC30L7QvSBJUHY2IixiYXNlNjQ6ItGA0Y/QtNC+0Log0YMg0LrQvtC00YPQstCw0L3QvdGWIGJhc2U2NCIsYmFzZTY0dXJsOiLRgNGP0LTQvtC6INGDINC60L7QtNGD0LLQsNC90L3RliBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLRgNGP0LTQvtC6IEpTT04iLGUxNjQ6ItC90L7QvNC10YAgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLQstGF0ZbQtNC90ZYg0LTQsNC90ZYifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLRh9C40YHQu9C+IixhcnJheToi0LzQsNGB0LjQsiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DQndC10L/RgNCw0LLQuNC70YzQvdGWINCy0YXRltC00L3RliDQtNCw0L3Rljog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDQvtGC0YDQuNC80LDQvdC+ICR7c31gOmDQndC10L/RgNCw0LLQuNC70YzQvdGWINCy0YXRltC00L3RliDQtNCw0L3Rljog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8gJHtpfSwg0L7RgtGA0LjQvNCw0L3QviAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DQndC10L/RgNCw0LLQuNC70YzQvdGWINCy0YXRltC00L3RliDQtNCw0L3Rljog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8gJHtrKGUudmFsdWVzWzBdKX1gOmDQndC10L/RgNCw0LLQuNC70YzQvdCwINC+0L/RhtGW0Y86INC+0YfRltC60YPRlNGC0YzRgdGPINC+0LTQvdC1INC3ICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DQl9Cw0L3QsNC00YLQviDQstC10LvQuNC60LU6INC+0YfRltC60YPRlNGC0YzRgdGPLCDRidC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9C10L3QvdGPIn0gJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ItC10LvQtdC80LXQvdGC0ZbQsiJ9YDpg0JfQsNC90LDQtNGC0L4g0LLQtdC70LjQutC1OiDQvtGH0ZbQutGD0ZTRgtGM0YHRjywg0YnQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfQtdC90L3RjyJ9INCx0YPQtNC1ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNCX0LDQvdCw0LTRgtC+INC80LDQu9C1OiDQvtGH0ZbQutGD0ZTRgtGM0YHRjywg0YnQviAke2Uub3JpZ2lufSAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YNCX0LDQvdCw0LTRgtC+INC80LDQu9C1OiDQvtGH0ZbQutGD0ZTRgtGM0YHRjywg0YnQviAke2Uub3JpZ2lufSDQsdGD0LTQtSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INGA0Y/QtNC+0Lo6INC/0L7QstC40L3QtdC9INC/0L7Rh9C40L3QsNGC0LjRgdGPINC3ICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNCd0LXQv9GA0LDQstC40LvRjNC90LjQuSDRgNGP0LTQvtC6OiDQv9C+0LLQuNC90LXQvSDQt9Cw0LrRltC90YfRg9Cy0LDRgtC40YHRjyDQvdCwICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INGA0Y/QtNC+0Lo6INC/0L7QstC40L3QtdC9INC80ZbRgdGC0LjRgtC4ICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0YDRj9C00L7Qujog0L/QvtCy0LjQvdC10L0g0LLRltC00L/QvtCy0ZbQtNCw0YLQuCDRiNCw0LHQu9C+0L3RgyAke2kucGF0dGVybn1gOmDQndC10L/RgNCw0LLQuNC70YzQvdC40LkgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCd0LXQv9GA0LDQstC40LvRjNC90LUg0YfQuNGB0LvQvjog0L/QvtCy0LjQvdC90L4g0LHRg9GC0Lgg0LrRgNCw0YLQvdC40LwgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g0J3QtdGA0L7Qt9C/0ZbQt9C90LDQvdC40Lkg0LrQu9GO0Ycke2Uua2V5cy5sZW5ndGg+MT8i0ZYiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0LrQu9GO0Ycg0YMgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItCd0LXQv9GA0LDQstC40LvRjNC90ZYg0LLRhdGW0LTQvdGWINC00LDQvdGWIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNCd0LXQv9GA0LDQstC40LvRjNC90LUg0LfQvdCw0YfQtdC90L3RjyDRgyAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZYifX19O2Z1bmN0aW9uIHdsKCl7cmV0dXJue2xvY2FsZUVycm9yOnVnKCl9fWZ1bmN0aW9uIGxnKCl7cmV0dXJuIHdsKCl9Y29uc3QgZGc9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6Itit2LHZiNmBIix2ZXJiOiLbgdmI2YbYpyJ9LGZpbGU6e3VuaXQ6Itio2KfYptm52LMiLHZlcmI6ItuB2YjZhtinIn0sYXJyYXk6e3VuaXQ6Itii2KbZudmF2LIiLHZlcmI6ItuB2YjZhtinIn0sc2V0Ont1bml0OiLYotim2bnZhdiyIix2ZXJiOiLbgdmI2YbYpyJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLYp9mGINm+2bkiLGVtYWlsOiLYp9uMINmF24zZhCDYp9uM2ojYsduM2LMiLHVybDoi24zZiCDYotixINin24zZhCIsZW1vamk6Itin24zZhdmI2KzbjCIsdXVpZDoi24zZiCDbjNmIINii2KbbjCDaiNuMIix1dWlkdjQ6ItuM2Ygg24zZiCDYotim24wg2ojbjCDZiNuMIDQiLHV1aWR2Njoi24zZiCDbjNmIINii2KbbjCDaiNuMINmI24wgNiIsbmFub2lkOiLZhtuM2YbZiCDYotim24wg2ojbjCIsZ3VpZDoi2KzbjCDbjNmIINii2KbbjCDaiNuMIixjdWlkOiLYs9uMINuM2Ygg2KLYptuMINqI24wiLGN1aWQyOiLYs9uMINuM2Ygg2KLYptuMINqI24wgMiIsdWxpZDoi24zZiCDYp9uM2YQg2KLYptuMINqI24wiLHhpZDoi2KfbjNqp2LMg2KLYptuMINqI24wiLGtzdWlkOiLaqduSINin24zYsyDbjNmIINii2KbbjCDaiNuMIixkYXRldGltZToi2KLYptuMINin24zYsyDYp9mIINqI24zZuSDZudin2KbZhSIsZGF0ZToi2KLYptuMINin24zYsyDYp9mIINiq2KfYsduM2K4iLHRpbWU6Itii2KbbjCDYp9uM2LMg2KfZiCDZiNmC2KoiLGR1cmF0aW9uOiLYotim24wg2KfbjNizINin2Ygg2YXYr9iqIixpcHY0OiLYotim24wg2b7bjCDZiNuMIDQg2KfbjNqI2LHbjNizIixpcHY2OiLYotim24wg2b7bjCDZiNuMIDYg2KfbjNqI2LHbjNizIixjaWRydjQ6Itii2KbbjCDZvtuMINmI24wgNCDYsduM2YbYrCIsY2lkcnY2OiLYotim24wg2b7bjCDZiNuMIDYg2LHbjNmG2KwiLGJhc2U2NDoi2KjbjNizIDY0INin2YYg2qnZiNqI2ogg2LPZudix2YbaryIsYmFzZTY0dXJsOiLYqNuM2LMgNjQg24zZiCDYotixINin24zZhCDYp9mGINqp2YjaiNqIINiz2bnYsdmG2q8iLGpzb25fc3RyaW5nOiLYrNuSINin24zYsyDYp9mIINin24zZhiDYs9m52LHZhtqvIixlMTY0OiLYp9uMIDE2NCDZhtmF2KjYsSIsand0OiLYrNuSINqI2KjZhNuM2Ygg2bnbjCIsdGVtcGxhdGVfbGl0ZXJhbDoi2KfZhiDZvtm5In0sbz17bmFuOiJOYU4iLG51bWJlcjoi2YbZhdio2LEiLGFycmF5OiLYotix25IiLG51bGw6ItmG2YQifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g2LrZhNi3INin2YYg2b7ZuTogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9INmF2KrZiNmC2Lkg2Kravtin2IwgJHtzfSDZhdmI2LXZiNmEINuB2YjYp2A6YNi62YTYtyDYp9mGINm+2bk6ICR7aX0g2YXYqtmI2YLYuSDYqtq+2KfYjCAke3N9INmF2YjYtdmI2YQg24HZiNinYH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DYutmE2Lcg2KfZhiDZvtm5OiAke2soZS52YWx1ZXNbMF0pfSDZhdiq2YjZgti5INiq2r7Yp2A6YNi62YTYtyDYotm+2LTZhjogJHskKGUudmFsdWVzLCJ8Iil9INmF24zauiDYs9uSINin24zaqSDZhdiq2YjZgti5INiq2r7Yp2A7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DYqNuB2Kog2KjakdinOiAke2Uub3JpZ2luPz8i2YjbjNmE24zZiCJ9INqp25IgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i2LnZhtin2LXYsSJ9INuB2YjZhtuSINmF2KrZiNmC2Lkg2KravtuSYDpg2KjbgdiqINio2pHYpzogJHtlLm9yaWdpbj8/ItmI24zZhNuM2YgifSDaqdinICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSDbgdmI2YbYpyDZhdiq2YjZgti5INiq2r7Yp2B9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNio24HYqiDahtq+2YjZudinOiAke2Uub3JpZ2lufSDaqduSICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0g24HZiNmG25Ig2YXYqtmI2YLYuSDYqtq+25JgOmDYqNuB2Kog2obavtmI2bnYpzogJHtlLm9yaWdpbn0g2qnYpyAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0g24HZiNmG2Kcg2YXYqtmI2YLYuSDYqtq+2KdgfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g2LrZhNi3INiz2bnYsdmG2q86ICIke2kucHJlZml4fSIg2LPbkiDYtNix2YjYuSDbgdmI2YbYpyDahtin24HbjNuSYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DYutmE2Lcg2LPZudix2YbarzogIiR7aS5zdWZmaXh9IiDZvtixINiu2KrZhSDbgdmI2YbYpyDahtin24HbjNuSYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNi62YTYtyDYs9m52LHZhtqvOiAiJHtpLmluY2x1ZGVzfSIg2LTYp9mF2YQg24HZiNmG2Kcg2obYp9uB24zbkmA6aS5mb3JtYXQ9PT0icmVnZXgiP2DYutmE2Lcg2LPZudix2Ybarzog2b7bjNm52LHZhiAke2kucGF0dGVybn0g2LPbkiDZhduM2oYg24HZiNmG2Kcg2obYp9uB24zbkmA6YNi62YTYtyAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g2LrZhNi3INmG2YXYqNixOiAke2UuZGl2aXNvcn0g2qnYpyDZhdi22KfYudmBINuB2YjZhtinINqG2KfbgduM25JgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDYutuM2LEg2KrYs9mE24zZhSDYtNiv24Eg2qnbjCR7ZS5rZXlzLmxlbmd0aD4xPyLYsiI6IiJ9OiAkeyQoZS5rZXlzLCLYjCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSDZhduM2rog2LrZhNi3INqp24xgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIti62YTYtyDYp9mGINm+2bkiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0g2YXbjNq6INi62YTYtyDZiNuM2YTbjNmIYDtkZWZhdWx0OnJldHVybiLYutmE2Lcg2KfZhiDZvtm5In19fTtmdW5jdGlvbiBtZygpe3JldHVybntsb2NhbGVFcnJvcjpkZygpfX1jb25zdCBwZz0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiYmVsZ2kiLHZlcmI6ImJv4oCYbGlzaGkga2VyYWsifSxmaWxlOnt1bml0OiJiYXl0Iix2ZXJiOiJib+KAmGxpc2hpIGtlcmFrIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnQiLHZlcmI6ImJv4oCYbGlzaGkga2VyYWsifSxzZXQ6e3VuaXQ6ImVsZW1lbnQiLHZlcmI6ImJv4oCYbGlzaGkga2VyYWsifSxtYXA6e3VuaXQ6InlvenV2Iix2ZXJiOiJib+KAmGxpc2hpIGtlcmFrIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImtpcmlzaCIsZW1haWw6ImVsZWt0cm9uIHBvY2h0YSBtYW56aWxpIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gc2FuYSB2YSB2YXF0aSIsZGF0ZToiSVNPIHNhbmEiLHRpbWU6IklTTyB2YXF0IixkdXJhdGlvbjoiSVNPIGRhdm9taXlsaWsiLGlwdjQ6IklQdjQgbWFuemlsIixpcHY2OiJJUHY2IG1hbnppbCIsbWFjOiJNQUMgbWFuemlsIixjaWRydjQ6IklQdjQgZGlhcGF6b24iLGNpZHJ2NjoiSVB2NiBkaWFwYXpvbiIsYmFzZTY0OiJiYXNlNjQga29kbGFuZ2FuIHNhdHIiLGJhc2U2NHVybDoiYmFzZTY0dXJsIGtvZGxhbmdhbiBzYXRyIixqc29uX3N0cmluZzoiSlNPTiBzYXRyIixlMTY0OiJFLjE2NCByYXFhbSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImtpcmlzaCJ9LG89e25hbjoiTmFOIixudW1iZXI6InJhcWFtIixhcnJheToibWFzc2l2In07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5vdG/igJhn4oCYcmkga2lyaXNoOiBrdXRpbGdhbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHFhYnVsIHFpbGluZ2FuICR7c31gOmBOb3Rv4oCYZ+KAmHJpIGtpcmlzaDoga3V0aWxnYW4gJHtpfSwgcWFidWwgcWlsaW5nYW4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gTm90b+KAmGfigJhyaSBraXJpc2g6IGt1dGlsZ2FuICR7ayhlLnZhbHVlc1swXSl9YDpgTm90b+KAmGfigJhyaSB2YXJpYW50OiBxdXlpZGFnaWxhcmRhbiBiaXJpIGt1dGlsZ2FuICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BKdWRhIGthdHRhOiBrdXRpbGdhbiAke2Uub3JpZ2luPz8icWl5bWF0In0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSAke2EudmVyYn1gOmBKdWRhIGthdHRhOiBrdXRpbGdhbiAke2Uub3JpZ2luPz8icWl5bWF0In0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gSnVkYSBraWNoaWs6IGt1dGlsZ2FuICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0gJHthLnZlcmJ9YDpgSnVkYSBraWNoaWs6IGt1dGlsZ2FuICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BOb3Rv4oCYZ+KAmHJpIHNhdHI6ICIke2kucHJlZml4fSIgYmlsYW4gYm9zaGxhbmlzaGkga2VyYWtgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE5vdG/igJhn4oCYcmkgc2F0cjogIiR7aS5zdWZmaXh9IiBiaWxhbiB0dWdhc2hpIGtlcmFrYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE5vdG/igJhn4oCYcmkgc2F0cjogIiR7aS5pbmNsdWRlc30iIG5pIG/igJh6IGljaGlnYSBvbGlzaGkga2VyYWtgOmkuZm9ybWF0PT09InJlZ2V4Ij9gTm90b+KAmGfigJhyaSBzYXRyOiAke2kucGF0dGVybn0gc2hhYmxvbmlnYSBtb3Mga2VsaXNoaSBrZXJha2A6YE5vdG/igJhn4oCYcmkgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5vdG/igJhn4oCYcmkgcmFxYW06ICR7ZS5kaXZpc29yfSBuaW5nIGthcnJhbGlzaSBib+KAmGxpc2hpIGtlcmFrYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTm9tYeKAmWx1bSBrYWxpdCR7ZS5rZXlzLmxlbmd0aD4xPyJsYXIiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSBkYWdpIGthbGl0IG5vdG/igJhn4oCYcmlgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk5vdG/igJhn4oCYcmkga2lyaXNoIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IGRhIG5vdG/igJhn4oCYcmkgcWl5bWF0YDtkZWZhdWx0OnJldHVybiJOb3Rv4oCYZ+KAmHJpIGtpcmlzaCJ9fX07ZnVuY3Rpb24gZmcoKXtyZXR1cm57bG9jYWxlRXJyb3I6cGcoKX19Y29uc3QgZ2c9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImvDvSB04buxIix2ZXJiOiJjw7MifSxmaWxlOnt1bml0OiJieXRlIix2ZXJiOiJjw7MifSxhcnJheTp7dW5pdDoicGjhuqduIHThu60iLHZlcmI6ImPDsyJ9LHNldDp7dW5pdDoicGjhuqduIHThu60iLHZlcmI6ImPDsyJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLEkeG6p3UgdsOgbyIsZW1haWw6IsSR4buLYSBjaOG7iSBlbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToibmfDoHkgZ2nhu50gSVNPIixkYXRlOiJuZ8OgeSBJU08iLHRpbWU6Imdp4budIElTTyIsZHVyYXRpb246Imtob+G6o25nIHRo4budaSBnaWFuIElTTyIsaXB2NDoixJHhu4thIGNo4buJIElQdjQiLGlwdjY6IsSR4buLYSBjaOG7iSBJUHY2IixjaWRydjQ6ImThuqNpIElQdjQiLGNpZHJ2NjoiZOG6o2kgSVB2NiIsYmFzZTY0OiJjaHXhu5dpIG3DoyBow7NhIGJhc2U2NCIsYmFzZTY0dXJsOiJjaHXhu5dpIG3DoyBow7NhIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNodeG7l2kgSlNPTiIsZTE2NDoic+G7kSBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IsSR4bqndSB2w6BvIn0sbz17bmFuOiJOYU4iLG51bWJlcjoic+G7kSIsYXJyYXk6Im3huqNuZyJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7hzogbW9uZyDEkeG7o2kgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBuaOG6rW4gxJHGsOG7o2MgJHtzfWA6YMSQ4bqndSB2w6BvIGtow7RuZyBo4bujcCBs4buHOiBtb25nIMSR4bujaSAke2l9LCBuaOG6rW4gxJHGsOG7o2MgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gxJDhuqd1IHbDoG8ga2jDtG5nIGjhu6NwIGzhu4c6IG1vbmcgxJHhu6NpICR7ayhlLnZhbHVlc1swXSl9YDpgVMO5eSBjaOG7jW4ga2jDtG5nIGjhu6NwIGzhu4c6IG1vbmcgxJHhu6NpIG3hu5l0IHRyb25nIGPDoWMgZ2nDoSB0cuG7iyAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gUXXDoSBs4bubbjogbW9uZyDEkeG7o2kgJHtlLm9yaWdpbj8/Imdpw6EgdHLhu4sifSAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8icGjhuqduIHThu60ifWA6YFF1w6EgbOG7m246IG1vbmcgxJHhu6NpICR7ZS5vcmlnaW4/PyJnacOhIHRy4buLIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gUXXDoSBuaOG7jzogbW9uZyDEkeG7o2kgJHtlLm9yaWdpbn0gJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBRdcOhIG5o4buPOiBtb25nIMSR4bujaSAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gQ2h14buXaSBraMO0bmcgaOG7o3AgbOG7hzogcGjhuqNpIGLhuq90IMSR4bqndSBi4bqxbmcgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gQ2h14buXaSBraMO0bmcgaOG7o3AgbOG7hzogcGjhuqNpIGvhur90IHRow7pjIGLhurFuZyAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YENodeG7l2kga2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBiYW8gZ+G7k20gIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YENodeG7l2kga2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBraOG7m3AgduG7m2kgbeG6q3UgJHtpLnBhdHRlcm59YDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9IGtow7RuZyBo4bujcCBs4buHYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFPhu5Ega2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBsw6AgYuG7mWkgc+G7kSBj4bunYSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBLaMOzYSBraMO0bmcgxJHGsOG7o2Mgbmjhuq1uIGThuqFuZzogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBLaMOzYSBraMO0bmcgaOG7o3AgbOG7hyB0cm9uZyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4ixJDhuqd1IHbDoG8ga2jDtG5nIGjhu6NwIGzhu4ciO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gR2nDoSB0cuG7iyBraMO0bmcgaOG7o3AgbOG7hyB0cm9uZyAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4ixJDhuqd1IHbDoG8ga2jDtG5nIGjhu6NwIGzhu4cifX19O2Z1bmN0aW9uIHZnKCl7cmV0dXJue2xvY2FsZUVycm9yOmdnKCl9fWNvbnN0IGhnPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLlrZfnrKYiLHZlcmI6IuWMheWQqyJ9LGZpbGU6e3VuaXQ6IuWtl+iKgiIsdmVyYjoi5YyF5ZCrIn0sYXJyYXk6e3VuaXQ6IumhuSIsdmVyYjoi5YyF5ZCrIn0sc2V0Ont1bml0OiLpobkiLHZlcmI6IuWMheWQqyJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLovpPlhaUiLGVtYWlsOiLnlLXlrZDpgq7ku7YiLHVybDoiVVJMIixlbW9qaToi6KGo5oOF56ym5Y+3Iix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU0/ml6XmnJ/ml7bpl7QiLGRhdGU6IklTT+aXpeacnyIsdGltZToiSVNP5pe26Ze0IixkdXJhdGlvbjoiSVNP5pe26ZW/IixpcHY0OiJJUHY05Zyw5Z2AIixpcHY2OiJJUHY25Zyw5Z2AIixjaWRydjQ6IklQdjTnvZHmrrUiLGNpZHJ2NjoiSVB2Nue9keautSIsYmFzZTY0OiJiYXNlNjTnvJbnoIHlrZfnrKbkuLIiLGJhc2U2NHVybDoiYmFzZTY0dXJs57yW56CB5a2X56ym5LiyIixqc29uX3N0cmluZzoiSlNPTuWtl+espuS4siIsZTE2NDoiRS4xNjTlj7fnoIEiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLovpPlhaUifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLmlbDlrZciLGFycmF5OiLmlbDnu4QiLG51bGw6IuepuuWAvChudWxsKSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2Dml6DmlYjovpPlhaXvvJrmnJ/mnJsgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR977yM5a6e6ZmF5o6l5pS2ICR7c31gOmDml6DmlYjovpPlhaXvvJrmnJ/mnJsgJHtpfe+8jOWunumZheaOpeaUtiAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2Dml6DmlYjovpPlhaXvvJrmnJ/mnJsgJHtrKGUudmFsdWVzWzBdKX1gOmDml6DmlYjpgInpobnvvJrmnJ/mnJvku6XkuIvkuYvkuIAgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOaVsOWAvOi/h+Wkp++8muacn+acmyAke2Uub3JpZ2luPz8i5YC8In0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i5Liq5YWD57SgIn1gOmDmlbDlgLzov4flpKfvvJrmnJ/mnJsgJHtlLm9yaWdpbj8/IuWAvCJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOaVsOWAvOi/h+Wwj++8muacn+acmyAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg5pWw5YC86L+H5bCP77ya5pyf5pybICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2Dml6DmlYjlrZfnrKbkuLLvvJrlv4Xpobvku6UgIiR7aS5wcmVmaXh9IiDlvIDlpLRgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOaXoOaViOWtl+espuS4su+8muW/hemhu+S7pSAiJHtpLnN1ZmZpeH0iIOe7k+WwvmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2Dml6DmlYjlrZfnrKbkuLLvvJrlv4XpobvljIXlkKsgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YOaXoOaViOWtl+espuS4su+8muW/hemhu+a7oei2s+ato+WImeihqOi+vuW8jyAke2kucGF0dGVybn1gOmDml6DmlYgke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g5peg5pWI5pWw5a2X77ya5b+F6aG75pivICR7ZS5kaXZpc29yfSDnmoTlgI3mlbBgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDlh7rnjrDmnKrnn6XnmoTplK4oa2V5KTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSDkuK3nmoTplK4oa2V5KeaXoOaViGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i5peg5pWI6L6T5YWlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IOS4reWMheWQq+aXoOaViOWAvCh2YWx1ZSlgO2RlZmF1bHQ6cmV0dXJuIuaXoOaViOi+k+WFpSJ9fX07ZnVuY3Rpb24gX2coKXtyZXR1cm57bG9jYWxlRXJyb3I6aGcoKX19Y29uc3QgJGc9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuWtl+WFgyIsdmVyYjoi5pOB5pyJIn0sZmlsZTp7dW5pdDoi5L2N5YWD57WEIix2ZXJiOiLmk4HmnIkifSxhcnJheTp7dW5pdDoi6aCF55uuIix2ZXJiOiLmk4HmnIkifSxzZXQ6e3VuaXQ6IumgheebriIsdmVyYjoi5pOB5pyJIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6Iui8uOWFpSIsZW1haWw6IumDteS7tuWcsOWdgCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIOaXpeacn+aZgumWkyIsZGF0ZToiSVNPIOaXpeacnyIsdGltZToiSVNPIOaZgumWkyIsZHVyYXRpb246IklTTyDmnJ/plpMiLGlwdjQ6IklQdjQg5L2N5Z2AIixpcHY2OiJJUHY2IOS9jeWdgCIsY2lkcnY0OiJJUHY0IOevhOWcjSIsY2lkcnY2OiJJUHY2IOevhOWcjSIsYmFzZTY0OiJiYXNlNjQg57eo56K85a2X5LiyIixiYXNlNjR1cmw6ImJhc2U2NHVybCDnt6jnorzlrZfkuLIiLGpzb25fc3RyaW5nOiJKU09OIOWtl+S4siIsZTE2NDoiRS4xNjQg5pW45YC8Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi6Ly45YWlIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g54Sh5pWI55qE6Ly45YWl5YC877ya6aCQ5pyf54K6IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfe+8jOS9huaUtuWIsCAke3N9YDpg54Sh5pWI55qE6Ly45YWl5YC877ya6aCQ5pyf54K6ICR7aX3vvIzkvYbmlLbliLAgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g54Sh5pWI55qE6Ly45YWl5YC877ya6aCQ5pyf54K6ICR7ayhlLnZhbHVlc1swXSl9YDpg54Sh5pWI55qE6YG46aCF77ya6aCQ5pyf54K65Lul5LiL5YW25Lit5LmL5LiAICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DmlbjlgLzpgY7lpKfvvJrpoJDmnJ8gJHtlLm9yaWdpbj8/IuWAvCJ9IOaHieeCuiAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLlgIvlhYPntKAifWA6YOaVuOWAvOmBjuWkp++8mumgkOacnyAke2Uub3JpZ2luPz8i5YC8In0g5oeJ54K6ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOaVuOWAvOmBjuWwj++8mumgkOacnyAke2Uub3JpZ2lufSDmh4nngrogJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YOaVuOWAvOmBjuWwj++8mumgkOacnyAke2Uub3JpZ2lufSDmh4nngrogJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOeEoeaViOeahOWtl+S4su+8muW/hemgiOS7pSAiJHtpLnByZWZpeH0iIOmWi+mgrWA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g54Sh5pWI55qE5a2X5Liy77ya5b+F6aCI5LulICIke2kuc3VmZml4fSIg57WQ5bC+YDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOeEoeaViOeahOWtl+S4su+8muW/hemgiOWMheWQqyAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g54Sh5pWI55qE5a2X5Liy77ya5b+F6aCI56ym5ZCI5qC85byPICR7aS5wYXR0ZXJufWA6YOeEoeaViOeahCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g54Sh5pWI55qE5pW45a2X77ya5b+F6aCI54K6ICR7ZS5kaXZpc29yfSDnmoTlgI3mlbhgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDnhKHms5XorZjliKXnmoTpjbXlgLwke2Uua2V5cy5sZW5ndGg+MT8i5YCRIjoiIn3vvJokeyQoZS5rZXlzLCLjgIEiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSDkuK3mnInnhKHmlYjnmoTpjbXlgLxgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIueEoeaViOeahOi8uOWFpeWAvCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSDkuK3mnInnhKHmlYjnmoTlgLxgO2RlZmF1bHQ6cmV0dXJuIueEoeaViOeahOi8uOWFpeWAvCJ9fX07ZnVuY3Rpb24gYmcoKXtyZXR1cm57bG9jYWxlRXJyb3I6JGcoKX19Y29uc3QgeWc9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IsOgbWkiLHZlcmI6Im7DrSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJuw60ifSxhcnJheTp7dW5pdDoibmthbiIsdmVyYjoibsOtIn0sc2V0Ont1bml0OiJua2FuIix2ZXJiOiJuw60ifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi4bq5zIBy4buNIMOsYsOhd+G7jWzDqSIsZW1haWw6IsOgZMOtcuG6ucyBc8OsIMOsbeG6ucyBbMOsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLDoGvDs2vDsiBJU08iLGRhdGU6IuG7jWrhu43MgSBJU08iLHRpbWU6IsOga8Oza8OyIElTTyIsZHVyYXRpb246IsOga8Oza8OyIHTDsyBww6kgSVNPIixpcHY0OiLDoGTDrXLhurnMgXPDrCBJUHY0IixpcHY2OiLDoGTDrXLhurnMgXPDrCBJUHY2IixjaWRydjQ6IsOgZ2LDqGdiw6ggSVB2NCIsY2lkcnY2OiLDoGdiw6hnYsOoIElQdjYiLGJhc2U2NDoi4buNzIBy4buNzIAgdMOtIGEga+G7jcyBIG7DrSBiYXNlNjQiLGJhc2U2NHVybDoi4buNzIBy4buNzIAgYmFzZTY0dXJsIixqc29uX3N0cmluZzoi4buNzIBy4buNzIAgSlNPTiIsZTE2NDoibuG7jcyBbWLDoCBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuG6ucyAcuG7jSDDrGLDoXfhu41sw6kifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJu4buNzIFtYsOgIixhcnJheToiYWtvcOG7jSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DDjGLDoXfhu41sw6kgYeG5o8Os4bmjZTogYSBuw60gbMOhdGkgZmkgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDDoG3hu43MgCBhIHLDrSAke3N9YDpgw4xiw6F34buNbMOpIGHhuaPDrOG5o2U6IGEgbsOtIGzDoXRpIGZpICR7aX0sIMOgbeG7jcyAIGEgcsOtICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YMOMYsOhd+G7jWzDqSBh4bmjw6zhuaNlOiBhIG7DrSBsw6F0aSBmaSAke2soZS52YWx1ZXNbMF0pfWA6YMOA4bmjw6B5w6BuIGHhuaPDrOG5o2U6IHlhbiDhu43MgGthbiBsw6FyYSAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVMOzIHDhu43MgCBqw7k6IGEgbsOtIGzDoXRpIGrhurnMgSBww6kgJHtlLm9yaWdpbj8/Iml5ZSJ9ICR7YS52ZXJifSAke2l9JHtlLm1heGltdW19ICR7YS51bml0fWA6YFTDsyBw4buNzIAgasO5OiBhIG7DrSBsw6F0aSBq4bq5zIEgJHtpfSR7ZS5tYXhpbXVtfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEvDqXLDqSBqdTogYSBuw60gbMOhdGkgauG6ucyBIHDDqSAke2Uub3JpZ2lufSAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtfSAke2EudW5pdH1gOmBLw6lyw6kganU6IGEgbsOtIGzDoXRpIGrhurnMgSAke2l9JHtlLm1pbmltdW19YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOG7jMyAcuG7jcyAIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgYuG6ucyAcuG6ucyAIHDhurnMgGzDuiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2Dhu4zMgHLhu43MgCBh4bmjw6zhuaNlOiBnYuG7jcyBZOG7jcyAIHBhcsOtIHDhurnMgGzDuiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOG7jMyAcuG7jcyAIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgbsOtICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2Dhu4zMgHLhu43MgCBh4bmjw6zhuaNlOiBnYuG7jcyBZOG7jcyAIGLDoSDDoHDhurnhurly4bq5IG11ICR7aS5wYXR0ZXJufWA6YEHhuaPDrOG5o2U6ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBO4buNzIFtYsOgIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgauG6ucyBIMOoecOgIHDDrXDDrW4gdGkgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQuG7jXTDrG7DrCDDoMOsbeG7jcyAOiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYELhu410w6xuw6wgYeG5o8Os4bmjZSBuw61uw7ogJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIsOMYsOhd+G7jWzDqSBh4bmjw6zhuaNlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYEl5ZSBh4bmjw6zhuaNlIG7DrW7DuiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iw4xiw6F34buNbMOpIGHhuaPDrOG5o2UifX19O2Z1bmN0aW9uIGtnKCl7cmV0dXJue2xvY2FsZUVycm9yOnlnKCl9fWNvbnN0IEFpPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxhcjpPcCxhejpOcCxiZTpacCxiZzpDcCxjYTpMcCxjczpxcCxkYTpKcCxkZTpWcCxlbDpCcCxlbjprbCxlbzpYcCxlczpRcCxmYTp0ZixmaTpyZixmcjphZixmckNBOmNmLGhlOmxmLGhyOm1mLGh1OmZmLGh5OnZmLGlkOl9mLGlzOmJmLGl0OmtmLGphOndmLGthOnhmLGtoOlRmLGttOlNsLGtvOmpmLGx0Ok9mLG1rOk5mLG1zOlpmLG5sOkNmLG5vOkxmLG90YTpxZixwbDpWZixwczpKZixwdDpCZixybzpHZixydTpZZixzbDplZyxzdjpuZyx0YTppZyx0aDphZyx0cjpjZyx1YTpsZyx1azp3bCx1cjptZyx1ejpmZyx2aTp2Zyx5bzprZyx6aENOOl9nLHpoVFc6Ymd9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSk7dmFyIE9zO2NvbnN0IExpPVN5bWJvbCgiWm9kT3V0cHV0IiksTWk9U3ltYm9sKCJab2RJbnB1dCIpO2NsYXNzIElse2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBXZWFrTWFwLHRoaXMuX2lkbWFwPW5ldyBNYXB9YWRkKG4sLi4ucil7Y29uc3Qgbz1yWzBdO3JldHVybiB0aGlzLl9tYXAuc2V0KG4sbyksbyYmdHlwZW9mIG89PSJvYmplY3QiJiYiaWQiaW4gbyYmdGhpcy5faWRtYXAuc2V0KG8uaWQsbiksdGhpc31jbGVhcigpe3JldHVybiB0aGlzLl9tYXA9bmV3IFdlYWtNYXAsdGhpcy5faWRtYXA9bmV3IE1hcCx0aGlzfXJlbW92ZShuKXtjb25zdCByPXRoaXMuX21hcC5nZXQobik7cmV0dXJuIHImJnR5cGVvZiByPT0ib2JqZWN0IiYmImlkImluIHImJnRoaXMuX2lkbWFwLmRlbGV0ZShyLmlkKSx0aGlzLl9tYXAuZGVsZXRlKG4pLHRoaXN9Z2V0KG4pe2NvbnN0IHI9bi5fem9kLnBhcmVudDtpZihyKXtjb25zdCBvPXsuLi50aGlzLmdldChyKT8/e319O2RlbGV0ZSBvLmlkO2NvbnN0IGU9ey4uLm8sLi4udGhpcy5fbWFwLmdldChuKX07cmV0dXJuIE9iamVjdC5rZXlzKGUpLmxlbmd0aD9lOnZvaWQgMH1yZXR1cm4gdGhpcy5fbWFwLmdldChuKX1oYXMobil7cmV0dXJuIHRoaXMuX21hcC5oYXMobil9fWZ1bmN0aW9uIFluKCl7cmV0dXJuIG5ldyBJbH0oT3M9Z2xvYmFsVGhpcykuX196b2RfZ2xvYmFsUmVnaXN0cnk/PyhPcy5fX3pvZF9nbG9iYWxSZWdpc3RyeT1ZbigpKTtjb25zdCBhZT1nbG9iYWxUaGlzLl9fem9kX2dsb2JhbFJlZ2lzdHJ5O2Z1bmN0aW9uIHhsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLC4uLmgobil9KX1mdW5jdGlvbiB6bCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixjb2VyY2U6ITAsLi4uaChuKX0pfWZ1bmN0aW9uIHFpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZW1haWwiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gQ24odCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJndWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIEZpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBKaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NCIsLi4uaChuKX0pfWZ1bmN0aW9uIEhpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLHZlcnNpb246InY2IiwuLi5oKG4pfSl9ZnVuY3Rpb24gVmkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsdmVyc2lvbjoidjciLC4uLmgobil9KX1mdW5jdGlvbiBRbih0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InVybCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBLaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImVtb2ppIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIEJpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoibmFub2lkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIFdpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBHaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImN1aWQyIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIFhpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidWxpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBZaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InhpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBRaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImtzdWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIGVvKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiaXB2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiB0byh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImlwdjYiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gVGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJtYWMiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gbm8odCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjaWRydjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gcm8odCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjaWRydjYiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gaW8odCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJiYXNlNjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gb28odCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJiYXNlNjR1cmwiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gYW8odCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJlMTY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIHNvKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiand0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWNvbnN0IGNvPXtBbnk6bnVsbCxNaW51dGU6LTEsU2Vjb25kOjAsTWlsbGlzZWNvbmQ6MyxNaWNyb3NlY29uZDo2fTtmdW5jdGlvbiBVbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImRhdGV0aW1lIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsb2Zmc2V0OiExLGxvY2FsOiExLHByZWNpc2lvbjpudWxsLC4uLmgobil9KX1mdW5jdGlvbiBqbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImRhdGUiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IiwuLi5oKG4pfSl9ZnVuY3Rpb24gUGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ0aW1lIixjaGVjazoic3RyaW5nX2Zvcm1hdCIscHJlY2lzaW9uOm51bGwsLi4uaChuKX0pfWZ1bmN0aW9uIE9sKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZHVyYXRpb24iLGNoZWNrOiJzdHJpbmdfZm9ybWF0IiwuLi5oKG4pfSl9ZnVuY3Rpb24gRGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bWJlciIsY2hlY2tzOltdLC4uLmgobil9KX1mdW5jdGlvbiBObCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVtYmVyIixjb2VyY2U6ITAsY2hlY2tzOltdLC4uLmgobil9KX1mdW5jdGlvbiBFbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJzYWZlaW50IiwuLi5oKG4pfSl9ZnVuY3Rpb24gWmwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiZmxvYXQzMiIsLi4uaChuKX0pfWZ1bmN0aW9uIFJsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImZsb2F0NjQiLC4uLmgobil9KX1mdW5jdGlvbiBDbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJpbnQzMiIsLi4uaChuKX0pfWZ1bmN0aW9uIEFsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6InVpbnQzMiIsLi4uaChuKX0pfWZ1bmN0aW9uIExsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJib29sZWFuIiwuLi5oKG4pfSl9ZnVuY3Rpb24gTWwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImJvb2xlYW4iLGNvZXJjZTohMCwuLi5oKG4pfSl9ZnVuY3Rpb24gcWwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImJpZ2ludCIsLi4uaChuKX0pfWZ1bmN0aW9uIEZsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJiaWdpbnQiLGNvZXJjZTohMCwuLi5oKG4pfSl9ZnVuY3Rpb24gSmwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImJpZ2ludCIsY2hlY2s6ImJpZ2ludF9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiaW50NjQiLC4uLmgobil9KX1mdW5jdGlvbiBIbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiYmlnaW50IixjaGVjazoiYmlnaW50X2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJ1aW50NjQiLC4uLmgobil9KX1mdW5jdGlvbiBWbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3ltYm9sIiwuLi5oKG4pfSl9ZnVuY3Rpb24gS2wodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InVuZGVmaW5lZCIsLi4uaChuKX0pfWZ1bmN0aW9uIEJsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudWxsIiwuLi5oKG4pfSl9ZnVuY3Rpb24gV2wodCl7cmV0dXJuIG5ldyB0KHt0eXBlOiJhbnkifSl9ZnVuY3Rpb24gR2wodCl7cmV0dXJuIG5ldyB0KHt0eXBlOiJ1bmtub3duIn0pfWZ1bmN0aW9uIFhsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJuZXZlciIsLi4uaChuKX0pfWZ1bmN0aW9uIFlsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJ2b2lkIiwuLi5oKG4pfSl9ZnVuY3Rpb24gUWwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImRhdGUiLC4uLmgobil9KX1mdW5jdGlvbiBlZCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiZGF0ZSIsY29lcmNlOiEwLC4uLmgobil9KX1mdW5jdGlvbiB0ZCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibmFuIiwuLi5oKG4pfSl9ZnVuY3Rpb24gYmUodCxuKXtyZXR1cm4gbmV3IFVpKHtjaGVjazoibGVzc190aGFuIiwuLi5oKG4pLHZhbHVlOnQsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gc2UodCxuKXtyZXR1cm4gbmV3IFVpKHtjaGVjazoibGVzc190aGFuIiwuLi5oKG4pLHZhbHVlOnQsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24geWUodCxuKXtyZXR1cm4gbmV3IGppKHtjaGVjazoiZ3JlYXRlcl90aGFuIiwuLi5oKG4pLHZhbHVlOnQsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gcmUodCxuKXtyZXR1cm4gbmV3IGppKHtjaGVjazoiZ3JlYXRlcl90aGFuIiwuLi5oKG4pLHZhbHVlOnQsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gZXIodCl7cmV0dXJuIHllKDAsdCl9ZnVuY3Rpb24gdHIodCl7cmV0dXJuIGJlKDAsdCl9ZnVuY3Rpb24gbnIodCl7cmV0dXJuIHNlKDAsdCl9ZnVuY3Rpb24gcnIodCl7cmV0dXJuIHJlKDAsdCl9ZnVuY3Rpb24gT2UodCxuKXtyZXR1cm4gbmV3IEZjKHtjaGVjazoibXVsdGlwbGVfb2YiLC4uLmgobiksdmFsdWU6dH0pfWZ1bmN0aW9uIFJlKHQsbil7cmV0dXJuIG5ldyBWYyh7Y2hlY2s6Im1heF9zaXplIiwuLi5oKG4pLG1heGltdW06dH0pfWZ1bmN0aW9uIGtlKHQsbil7cmV0dXJuIG5ldyBLYyh7Y2hlY2s6Im1pbl9zaXplIiwuLi5oKG4pLG1pbmltdW06dH0pfWZ1bmN0aW9uIG50KHQsbil7cmV0dXJuIG5ldyBCYyh7Y2hlY2s6InNpemVfZXF1YWxzIiwuLi5oKG4pLHNpemU6dH0pfWZ1bmN0aW9uIHJ0KHQsbil7cmV0dXJuIG5ldyBXYyh7Y2hlY2s6Im1heF9sZW5ndGgiLC4uLmgobiksbWF4aW11bTp0fSl9ZnVuY3Rpb24gU2UodCxuKXtyZXR1cm4gbmV3IEdjKHtjaGVjazoibWluX2xlbmd0aCIsLi4uaChuKSxtaW5pbXVtOnR9KX1mdW5jdGlvbiBpdCh0LG4pe3JldHVybiBuZXcgWGMoe2NoZWNrOiJsZW5ndGhfZXF1YWxzIiwuLi5oKG4pLGxlbmd0aDp0fSl9ZnVuY3Rpb24gUnQodCxuKXtyZXR1cm4gbmV3IFljKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJyZWdleCIsLi4uaChuKSxwYXR0ZXJuOnR9KX1mdW5jdGlvbiBDdCh0KXtyZXR1cm4gbmV3IFFjKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJsb3dlcmNhc2UiLC4uLmgodCl9KX1mdW5jdGlvbiBBdCh0KXtyZXR1cm4gbmV3IGV1KHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJ1cHBlcmNhc2UiLC4uLmgodCl9KX1mdW5jdGlvbiBMdCh0LG4pe3JldHVybiBuZXcgdHUoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6ImluY2x1ZGVzIiwuLi5oKG4pLGluY2x1ZGVzOnR9KX1mdW5jdGlvbiBNdCh0LG4pe3JldHVybiBuZXcgbnUoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIiwuLi5oKG4pLHByZWZpeDp0fSl9ZnVuY3Rpb24gcXQodCxuKXtyZXR1cm4gbmV3IHJ1KHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJlbmRzX3dpdGgiLC4uLmgobiksc3VmZml4OnR9KX1mdW5jdGlvbiBpcih0LG4scil7cmV0dXJuIG5ldyBpdSh7Y2hlY2s6InByb3BlcnR5Iixwcm9wZXJ0eTp0LHNjaGVtYTpuLC4uLmgocil9KX1mdW5jdGlvbiBGdCh0LG4pe3JldHVybiBuZXcgb3Uoe2NoZWNrOiJtaW1lX3R5cGUiLG1pbWU6dCwuLi5oKG4pfSl9ZnVuY3Rpb24gX2UodCl7cmV0dXJuIG5ldyBhdSh7Y2hlY2s6Im92ZXJ3cml0ZSIsdHg6dH0pfWZ1bmN0aW9uIEp0KHQpe3JldHVybiBfZShuPT5uLm5vcm1hbGl6ZSh0KSl9ZnVuY3Rpb24gSHQoKXtyZXR1cm4gX2UodD0+dC50cmltKCkpfWZ1bmN0aW9uIFZ0KCl7cmV0dXJuIF9lKHQ9PnQudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gS3QoKXtyZXR1cm4gX2UodD0+dC50b1VwcGVyQ2FzZSgpKX1mdW5jdGlvbiBCdCgpe3JldHVybiBfZSh0PT5Gcyh0KSl9ZnVuY3Rpb24gbmQodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToiYXJyYXkiLGVsZW1lbnQ6biwuLi5oKHIpfSl9ZnVuY3Rpb24gU2codCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToidW5pb24iLG9wdGlvbnM6biwuLi5oKHIpfSl9ZnVuY3Rpb24gd2codCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToidW5pb24iLG9wdGlvbnM6bixpbmNsdXNpdmU6ITEsLi4uaChyKX0pfWZ1bmN0aW9uIElnKHQsbixyLG8pe3JldHVybiBuZXcgdCh7dHlwZToidW5pb24iLG9wdGlvbnM6cixkaXNjcmltaW5hdG9yOm4sLi4uaChvKX0pfWZ1bmN0aW9uIHhnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImludGVyc2VjdGlvbiIsbGVmdDpuLHJpZ2h0OnJ9KX1mdW5jdGlvbiB6Zyh0LG4scixvKXtjb25zdCBlPXIgaW5zdGFuY2VvZiBJLGk9ZT9vOnIsYT1lP3I6bnVsbDtyZXR1cm4gbmV3IHQoe3R5cGU6InR1cGxlIixpdGVtczpuLHJlc3Q6YSwuLi5oKGkpfSl9ZnVuY3Rpb24gVGcodCxuLHIsbyl7cmV0dXJuIG5ldyB0KHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6bix2YWx1ZVR5cGU6ciwuLi5oKG8pfSl9ZnVuY3Rpb24gVWcodCxuLHIsbyl7cmV0dXJuIG5ldyB0KHt0eXBlOiJtYXAiLGtleVR5cGU6bix2YWx1ZVR5cGU6ciwuLi5oKG8pfSl9ZnVuY3Rpb24gamcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToic2V0Iix2YWx1ZVR5cGU6biwuLi5oKHIpfSl9ZnVuY3Rpb24gUGcodCxuLHIpe2NvbnN0IG89QXJyYXkuaXNBcnJheShuKT9PYmplY3QuZnJvbUVudHJpZXMobi5tYXAoZT0+W2UsZV0pKTpuO3JldHVybiBuZXcgdCh7dHlwZToiZW51bSIsZW50cmllczpvLC4uLmgocil9KX1mdW5jdGlvbiBPZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJlbnVtIixlbnRyaWVzOm4sLi4uaChyKX0pfWZ1bmN0aW9uIERnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImxpdGVyYWwiLHZhbHVlczpBcnJheS5pc0FycmF5KG4pP246W25dLC4uLmgocil9KX1mdW5jdGlvbiByZCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiZmlsZSIsLi4uaChuKX0pfWZ1bmN0aW9uIE5nKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTpufSl9ZnVuY3Rpb24gRWcodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6bn0pfWZ1bmN0aW9uIFpnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudWxsYWJsZSIsaW5uZXJUeXBlOm59KX1mdW5jdGlvbiBSZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJkZWZhdWx0Iixpbm5lclR5cGU6bixnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiByPT0iZnVuY3Rpb24iP3IoKTpIbihyKX19KX1mdW5jdGlvbiBDZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOm4sLi4uaChyKX0pfWZ1bmN0aW9uIEFnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdWNjZXNzIixpbm5lclR5cGU6bn0pfWZ1bmN0aW9uIExnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImNhdGNoIixpbm5lclR5cGU6bixjYXRjaFZhbHVlOnR5cGVvZiByPT0iZnVuY3Rpb24iP3I6KCk9PnJ9KX1mdW5jdGlvbiBNZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJwaXBlIixpbjpuLG91dDpyfSl9ZnVuY3Rpb24gcWcodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InJlYWRvbmx5Iixpbm5lclR5cGU6bn0pfWZ1bmN0aW9uIEZnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6InRlbXBsYXRlX2xpdGVyYWwiLHBhcnRzOm4sLi4uaChyKX0pfWZ1bmN0aW9uIEpnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJsYXp5IixnZXR0ZXI6bn0pfWZ1bmN0aW9uIEhnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJwcm9taXNlIixpbm5lclR5cGU6bn0pfWZ1bmN0aW9uIGlkKHQsbixyKXtjb25zdCBvPWgocik7cmV0dXJuIG8uYWJvcnQ/PyhvLmFib3J0PSEwKSxuZXcgdCh7dHlwZToiY3VzdG9tIixjaGVjazoiY3VzdG9tIixmbjpuLC4uLm99KX1mdW5jdGlvbiBvZCh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJjdXN0b20iLGNoZWNrOiJjdXN0b20iLGZuOm4sLi4uaChyKX0pfWZ1bmN0aW9uIGFkKHQsbil7Y29uc3Qgcj1zZChvPT4oby5hZGRJc3N1ZT1lPT57aWYodHlwZW9mIGU9PSJzdHJpbmciKW8uaXNzdWVzLnB1c2goVmUoZSxvLnZhbHVlLHIuX3pvZC5kZWYpKTtlbHNle2NvbnN0IGk9ZTtpLmZhdGFsJiYoaS5jb250aW51ZT0hMSksaS5jb2RlPz8oaS5jb2RlPSJjdXN0b20iKSxpLmlucHV0Pz8oaS5pbnB1dD1vLnZhbHVlKSxpLmluc3Q/PyhpLmluc3Q9ciksaS5jb250aW51ZT8/KGkuY29udGludWU9IXIuX3pvZC5kZWYuYWJvcnQpLG8uaXNzdWVzLnB1c2goVmUoaSkpfX0sdChvLnZhbHVlLG8pKSxuKTtyZXR1cm4gcn1mdW5jdGlvbiBzZCh0LG4pe2NvbnN0IHI9bmV3IEYoe2NoZWNrOiJjdXN0b20iLC4uLmgobil9KTtyZXR1cm4gci5fem9kLmNoZWNrPXQscn1mdW5jdGlvbiBjZCh0KXtjb25zdCBuPW5ldyBGKHtjaGVjazoiZGVzY3JpYmUifSk7cmV0dXJuIG4uX3pvZC5vbmF0dGFjaD1bcj0+e2NvbnN0IG89YWUuZ2V0KHIpPz97fTthZS5hZGQocix7Li4ubyxkZXNjcmlwdGlvbjp0fSl9XSxuLl96b2QuY2hlY2s9KCk9Pnt9LG59ZnVuY3Rpb24gdWQodCl7Y29uc3Qgbj1uZXcgRih7Y2hlY2s6Im1ldGEifSk7cmV0dXJuIG4uX3pvZC5vbmF0dGFjaD1bcj0+e2NvbnN0IG89YWUuZ2V0KHIpPz97fTthZS5hZGQocix7Li4ubywuLi50fSl9XSxuLl96b2QuY2hlY2s9KCk9Pnt9LG59ZnVuY3Rpb24gbGQodCxuKXtjb25zdCByPWgobik7bGV0IG89ci50cnV0aHk/P1sidHJ1ZSIsIjEiLCJ5ZXMiLCJvbiIsInkiLCJlbmFibGVkIl0sZT1yLmZhbHN5Pz9bImZhbHNlIiwiMCIsIm5vIiwib2ZmIiwibiIsImRpc2FibGVkIl07ci5jYXNlIT09InNlbnNpdGl2ZSImJihvPW8ubWFwKF89PnR5cGVvZiBfPT0ic3RyaW5nIj9fLnRvTG93ZXJDYXNlKCk6XyksZT1lLm1hcChfPT50eXBlb2YgXz09InN0cmluZyI/Xy50b0xvd2VyQ2FzZSgpOl8pKTtjb25zdCBpPW5ldyBTZXQobyksYT1uZXcgU2V0KGUpLHM9dC5Db2RlYz8/Q2ksYz10LkJvb2xlYW4/P0RpLHU9dC5TdHJpbmc/P1p0LGw9bmV3IHUoe3R5cGU6InN0cmluZyIsZXJyb3I6ci5lcnJvcn0pLGc9bmV3IGMoe3R5cGU6ImJvb2xlYW4iLGVycm9yOnIuZXJyb3J9KSx2PW5ldyBzKHt0eXBlOiJwaXBlIixpbjpsLG91dDpnLHRyYW5zZm9ybTooKF8seSk9PntsZXQgSj1fO3JldHVybiByLmNhc2UhPT0ic2Vuc2l0aXZlIiYmKEo9Si50b0xvd2VyQ2FzZSgpKSxpLmhhcyhKKT8hMDphLmhhcyhKKT8hMTooeS5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsZXhwZWN0ZWQ6InN0cmluZ2Jvb2wiLHZhbHVlczpbLi4uaSwuLi5hXSxpbnB1dDp5LnZhbHVlLGluc3Q6dixjb250aW51ZTohMX0pLHt9KX0pLHJldmVyc2VUcmFuc2Zvcm06KChfLHkpPT5fPT09ITA/b1swXXx8InRydWUiOmVbMF18fCJmYWxzZSIpLGVycm9yOnIuZXJyb3J9KTtyZXR1cm4gdn1mdW5jdGlvbiBXdCh0LG4scixvPXt9KXtjb25zdCBlPWgobyksaT17Li4uaChvKSxjaGVjazoic3RyaW5nX2Zvcm1hdCIsdHlwZToic3RyaW5nIixmb3JtYXQ6bixmbjp0eXBlb2Ygcj09ImZ1bmN0aW9uIj9yOnM9PnIudGVzdChzKSwuLi5lfTtyZXR1cm4gciBpbnN0YW5jZW9mIFJlZ0V4cCYmKGkucGF0dGVybj1yKSxuZXcgdChpKX1mdW5jdGlvbiBCZSh0KXtsZXQgbj10Py50YXJnZXQ/PyJkcmFmdC0yMDIwLTEyIjtyZXR1cm4gbj09PSJkcmFmdC00IiYmKG49ImRyYWZ0LTA0Iiksbj09PSJkcmFmdC03IiYmKG49ImRyYWZ0LTA3Iikse3Byb2Nlc3NvcnM6dC5wcm9jZXNzb3JzPz97fSxtZXRhZGF0YVJlZ2lzdHJ5OnQ/Lm1ldGFkYXRhPz9hZSx0YXJnZXQ6bix1bnJlcHJlc2VudGFibGU6dD8udW5yZXByZXNlbnRhYmxlPz8idGhyb3ciLG92ZXJyaWRlOnQ/Lm92ZXJyaWRlPz8oKCk9Pnt9KSxpbzp0Py5pbz8/Im91dHB1dCIsY291bnRlcjowLHNlZW46bmV3IE1hcCxjeWNsZXM6dD8uY3ljbGVzPz8icmVmIixyZXVzZWQ6dD8ucmV1c2VkPz8iaW5saW5lIixleHRlcm5hbDp0Py5leHRlcm5hbD8/dm9pZCAwfX1mdW5jdGlvbiBSKHQsbixyPXtwYXRoOltdLHNjaGVtYVBhdGg6W119KXt2YXIgbztjb25zdCBlPXQuX3pvZC5kZWYsaT1uLnNlZW4uZ2V0KHQpO2lmKGkpcmV0dXJuIGkuY291bnQrKyxyLnNjaGVtYVBhdGguaW5jbHVkZXModCkmJihpLmN5Y2xlPXIucGF0aCksaS5zY2hlbWE7Y29uc3QgYT17c2NoZW1hOnt9LGNvdW50OjEsY3ljbGU6dm9pZCAwLHBhdGg6ci5wYXRofTtuLnNlZW4uc2V0KHQsYSk7Y29uc3Qgcz10Ll96b2QudG9KU09OU2NoZW1hPy4oKTtpZihzKWEuc2NoZW1hPXM7ZWxzZXtjb25zdCBsPXsuLi5yLHNjaGVtYVBhdGg6Wy4uLnIuc2NoZW1hUGF0aCx0XSxwYXRoOnIucGF0aH07aWYodC5fem9kLnByb2Nlc3NKU09OU2NoZW1hKXQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYShuLGEuc2NoZW1hLGwpO2Vsc2V7Y29uc3Qgdj1hLnNjaGVtYSxfPW4ucHJvY2Vzc29yc1tlLnR5cGVdO2lmKCFfKXRocm93IG5ldyBFcnJvcihgW3RvSlNPTlNjaGVtYV06IE5vbi1yZXByZXNlbnRhYmxlIHR5cGUgZW5jb3VudGVyZWQ6ICR7ZS50eXBlfWApO18odCxuLHYsbCl9Y29uc3QgZz10Ll96b2QucGFyZW50O2cmJihhLnJlZnx8KGEucmVmPWcpLFIoZyxuLGwpLG4uc2Vlbi5nZXQoZykuaXNQYXJlbnQ9ITApfWNvbnN0IGM9bi5tZXRhZGF0YVJlZ2lzdHJ5LmdldCh0KTtyZXR1cm4gYyYmT2JqZWN0LmFzc2lnbihhLnNjaGVtYSxjKSxuLmlvPT09ImlucHV0IiYmbmUodCkmJihkZWxldGUgYS5zY2hlbWEuZXhhbXBsZXMsZGVsZXRlIGEuc2NoZW1hLmRlZmF1bHQpLG4uaW89PT0iaW5wdXQiJiYiX3ByZWZhdWx0ImluIGEuc2NoZW1hJiYoKG89YS5zY2hlbWEpLmRlZmF1bHQ/PyhvLmRlZmF1bHQ9YS5zY2hlbWEuX3ByZWZhdWx0KSksZGVsZXRlIGEuc2NoZW1hLl9wcmVmYXVsdCxuLnNlZW4uZ2V0KHQpLnNjaGVtYX1mdW5jdGlvbiBXZSh0LG4pe2NvbnN0IHI9dC5zZWVuLmdldChuKTtpZighcil0aHJvdyBuZXcgRXJyb3IoIlVucHJvY2Vzc2VkIHNjaGVtYS4gVGhpcyBpcyBhIGJ1ZyBpbiBab2QuIik7Y29uc3Qgbz1uZXcgTWFwO2Zvcihjb25zdCBhIG9mIHQuc2Vlbi5lbnRyaWVzKCkpe2NvbnN0IHM9dC5tZXRhZGF0YVJlZ2lzdHJ5LmdldChhWzBdKT8uaWQ7aWYocyl7Y29uc3QgYz1vLmdldChzKTtpZihjJiZjIT09YVswXSl0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBzY2hlbWEgaWQgIiR7c30iIGRldGVjdGVkIGR1cmluZyBKU09OIFNjaGVtYSBjb252ZXJzaW9uLiBUd28gZGlmZmVyZW50IHNjaGVtYXMgY2Fubm90IHNoYXJlIHRoZSBzYW1lIGlkIHdoZW4gY29udmVydGVkIHRvZ2V0aGVyLmApO28uc2V0KHMsYVswXSl9fWNvbnN0IGU9YT0+e2NvbnN0IHM9dC50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/IiRkZWZzIjoiZGVmaW5pdGlvbnMiO2lmKHQuZXh0ZXJuYWwpe2NvbnN0IGc9dC5leHRlcm5hbC5yZWdpc3RyeS5nZXQoYVswXSk/LmlkLHY9dC5leHRlcm5hbC51cmk/Pyh5PT55KTtpZihnKXJldHVybntyZWY6dihnKX07Y29uc3QgXz1hWzFdLmRlZklkPz9hWzFdLnNjaGVtYS5pZD8/YHNjaGVtYSR7dC5jb3VudGVyKyt9YDtyZXR1cm4gYVsxXS5kZWZJZD1fLHtkZWZJZDpfLHJlZjpgJHt2KCJfX3NoYXJlZCIpfSMvJHtzfS8ke199YH19aWYoYVsxXT09PXIpcmV0dXJue3JlZjoiIyJ9O2NvbnN0IHU9YCMvJHtzfS9gLGw9YVsxXS5zY2hlbWEuaWQ/P2BfX3NjaGVtYSR7dC5jb3VudGVyKyt9YDtyZXR1cm57ZGVmSWQ6bCxyZWY6dStsfX0saT1hPT57aWYoYVsxXS5zY2hlbWEuJHJlZilyZXR1cm47Y29uc3Qgcz1hWzFdLHtyZWY6YyxkZWZJZDp1fT1lKGEpO3MuZGVmPXsuLi5zLnNjaGVtYX0sdSYmKHMuZGVmSWQ9dSk7Y29uc3QgbD1zLnNjaGVtYTtmb3IoY29uc3QgZyBpbiBsKWRlbGV0ZSBsW2ddO2wuJHJlZj1jfTtpZih0LmN5Y2xlcz09PSJ0aHJvdyIpZm9yKGNvbnN0IGEgb2YgdC5zZWVuLmVudHJpZXMoKSl7Y29uc3Qgcz1hWzFdO2lmKHMuY3ljbGUpdGhyb3cgbmV3IEVycm9yKGBDeWNsZSBkZXRlY3RlZDogIy8ke3MuY3ljbGU/LmpvaW4oIi8iKX0vPHJvb3Q+CgpTZXQgdGhlIFxgY3ljbGVzXGAgcGFyYW1ldGVyIHRvIFxgInJlZiJcYCB0byByZXNvbHZlIGN5Y2xpY2FsIHNjaGVtYXMgd2l0aCBkZWZzLmApfWZvcihjb25zdCBhIG9mIHQuc2Vlbi5lbnRyaWVzKCkpe2NvbnN0IHM9YVsxXTtpZihuPT09YVswXSl7aShhKTtjb250aW51ZX1pZih0LmV4dGVybmFsKXtjb25zdCB1PXQuZXh0ZXJuYWwucmVnaXN0cnkuZ2V0KGFbMF0pPy5pZDtpZihuIT09YVswXSYmdSl7aShhKTtjb250aW51ZX19aWYodC5tZXRhZGF0YVJlZ2lzdHJ5LmdldChhWzBdKT8uaWQpe2koYSk7Y29udGludWV9aWYocy5jeWNsZSl7aShhKTtjb250aW51ZX1pZihzLmNvdW50PjEmJnQucmV1c2VkPT09InJlZiIpe2koYSk7Y29udGludWV9fX1mdW5jdGlvbiBHZSh0LG4pe2NvbnN0IHI9dC5zZWVuLmdldChuKTtpZighcil0aHJvdyBuZXcgRXJyb3IoIlVucHJvY2Vzc2VkIHNjaGVtYS4gVGhpcyBpcyBhIGJ1ZyBpbiBab2QuIik7Y29uc3Qgbz1zPT57Y29uc3QgYz10LnNlZW4uZ2V0KHMpO2lmKGMucmVmPT09bnVsbClyZXR1cm47Y29uc3QgdT1jLmRlZj8/Yy5zY2hlbWEsbD17Li4udX0sZz1jLnJlZjtpZihjLnJlZj1udWxsLGcpe28oZyk7Y29uc3QgXz10LnNlZW4uZ2V0KGcpLHk9Xy5zY2hlbWE7aWYoeS4kcmVmJiYodC50YXJnZXQ9PT0iZHJhZnQtMDcifHx0LnRhcmdldD09PSJkcmFmdC0wNCJ8fHQudGFyZ2V0PT09Im9wZW5hcGktMy4wIik/KHUuYWxsT2Y9dS5hbGxPZj8/W10sdS5hbGxPZi5wdXNoKHkpKTpPYmplY3QuYXNzaWduKHUseSksT2JqZWN0LmFzc2lnbih1LGwpLHMuX3pvZC5wYXJlbnQ9PT1nKWZvcihjb25zdCBBIGluIHUpQT09PSIkcmVmInx8QT09PSJhbGxPZiJ8fEEgaW4gbHx8ZGVsZXRlIHVbQV07aWYoeS4kcmVmJiZfLmRlZilmb3IoY29uc3QgQSBpbiB1KUE9PT0iJHJlZiJ8fEE9PT0iYWxsT2YifHxBIGluIF8uZGVmJiZKU09OLnN0cmluZ2lmeSh1W0FdKT09PUpTT04uc3RyaW5naWZ5KF8uZGVmW0FdKSYmZGVsZXRlIHVbQV19Y29uc3Qgdj1zLl96b2QucGFyZW50O2lmKHYmJnYhPT1nKXtvKHYpO2NvbnN0IF89dC5zZWVuLmdldCh2KTtpZihfPy5zY2hlbWEuJHJlZiYmKHUuJHJlZj1fLnNjaGVtYS4kcmVmLF8uZGVmKSlmb3IoY29uc3QgeSBpbiB1KXk9PT0iJHJlZiJ8fHk9PT0iYWxsT2YifHx5IGluIF8uZGVmJiZKU09OLnN0cmluZ2lmeSh1W3ldKT09PUpTT04uc3RyaW5naWZ5KF8uZGVmW3ldKSYmZGVsZXRlIHVbeV19dC5vdmVycmlkZSh7em9kU2NoZW1hOnMsanNvblNjaGVtYTp1LHBhdGg6Yy5wYXRoPz9bXX0pfTtmb3IoY29uc3QgcyBvZlsuLi50LnNlZW4uZW50cmllcygpXS5yZXZlcnNlKCkpbyhzWzBdKTtjb25zdCBlPXt9O2lmKHQudGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIiP2UuJHNjaGVtYT0iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiOnQudGFyZ2V0PT09ImRyYWZ0LTA3Ij9lLiRzY2hlbWE9Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI6dC50YXJnZXQ9PT0iZHJhZnQtMDQiP2UuJHNjaGVtYT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIjp0LnRhcmdldCx0LmV4dGVybmFsPy51cmkpe2NvbnN0IHM9dC5leHRlcm5hbC5yZWdpc3RyeS5nZXQobik/LmlkO2lmKCFzKXRocm93IG5ldyBFcnJvcigiU2NoZW1hIGlzIG1pc3NpbmcgYW4gYGlkYCBwcm9wZXJ0eSIpO2UuJGlkPXQuZXh0ZXJuYWwudXJpKHMpfU9iamVjdC5hc3NpZ24oZSxyLmRlZj8/ci5zY2hlbWEpO2NvbnN0IGk9dC5tZXRhZGF0YVJlZ2lzdHJ5LmdldChuKT8uaWQ7aSE9PXZvaWQgMCYmZS5pZD09PWkmJmRlbGV0ZSBlLmlkO2NvbnN0IGE9dC5leHRlcm5hbD8uZGVmcz8/e307Zm9yKGNvbnN0IHMgb2YgdC5zZWVuLmVudHJpZXMoKSl7Y29uc3QgYz1zWzFdO2MuZGVmJiZjLmRlZklkJiYoYy5kZWYuaWQ9PT1jLmRlZklkJiZkZWxldGUgYy5kZWYuaWQsYVtjLmRlZklkXT1jLmRlZil9dC5leHRlcm5hbHx8T2JqZWN0LmtleXMoYSkubGVuZ3RoPjAmJih0LnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIj9lLiRkZWZzPWE6ZS5kZWZpbml0aW9ucz1hKTt0cnl7Y29uc3Qgcz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUpKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsIn5zdGFuZGFyZCIse3ZhbHVlOnsuLi5uWyJ+c3RhbmRhcmQiXSxqc29uU2NoZW1hOntpbnB1dDprdChuLCJpbnB1dCIsdC5wcm9jZXNzb3JzKSxvdXRwdXQ6a3Qobiwib3V0cHV0Iix0LnByb2Nlc3NvcnMpfX0sZW51bWVyYWJsZTohMSx3cml0YWJsZTohMX0pLHN9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJFcnJvciBjb252ZXJ0aW5nIHNjaGVtYSB0byBKU09OLiIpfX1mdW5jdGlvbiBuZSh0LG4pe2NvbnN0IHI9bj8/e3NlZW46bmV3IFNldH07aWYoci5zZWVuLmhhcyh0KSlyZXR1cm4hMTtyLnNlZW4uYWRkKHQpO2NvbnN0IG89dC5fem9kLmRlZjtpZihvLnR5cGU9PT0idHJhbnNmb3JtIilyZXR1cm4hMDtpZihvLnR5cGU9PT0iYXJyYXkiKXJldHVybiBuZShvLmVsZW1lbnQscik7aWYoby50eXBlPT09InNldCIpcmV0dXJuIG5lKG8udmFsdWVUeXBlLHIpO2lmKG8udHlwZT09PSJsYXp5IilyZXR1cm4gbmUoby5nZXR0ZXIoKSxyKTtpZihvLnR5cGU9PT0icHJvbWlzZSJ8fG8udHlwZT09PSJvcHRpb25hbCJ8fG8udHlwZT09PSJub25vcHRpb25hbCJ8fG8udHlwZT09PSJudWxsYWJsZSJ8fG8udHlwZT09PSJyZWFkb25seSJ8fG8udHlwZT09PSJkZWZhdWx0Inx8by50eXBlPT09InByZWZhdWx0IilyZXR1cm4gbmUoby5pbm5lclR5cGUscik7aWYoby50eXBlPT09ImludGVyc2VjdGlvbiIpcmV0dXJuIG5lKG8ubGVmdCxyKXx8bmUoby5yaWdodCxyKTtpZihvLnR5cGU9PT0icmVjb3JkInx8by50eXBlPT09Im1hcCIpcmV0dXJuIG5lKG8ua2V5VHlwZSxyKXx8bmUoby52YWx1ZVR5cGUscik7aWYoby50eXBlPT09InBpcGUiKXJldHVybiB0Ll96b2QudHJhaXRzLmhhcygiJFpvZENvZGVjIik/ITA6bmUoby5pbixyKXx8bmUoby5vdXQscik7aWYoby50eXBlPT09Im9iamVjdCIpe2Zvcihjb25zdCBlIGluIG8uc2hhcGUpaWYobmUoby5zaGFwZVtlXSxyKSlyZXR1cm4hMDtyZXR1cm4hMX1pZihvLnR5cGU9PT0idW5pb24iKXtmb3IoY29uc3QgZSBvZiBvLm9wdGlvbnMpaWYobmUoZSxyKSlyZXR1cm4hMDtyZXR1cm4hMX1pZihvLnR5cGU9PT0idHVwbGUiKXtmb3IoY29uc3QgZSBvZiBvLml0ZW1zKWlmKG5lKGUscikpcmV0dXJuITA7cmV0dXJuISEoby5yZXN0JiZuZShvLnJlc3QscikpfXJldHVybiExfWNvbnN0IGRkPSh0LG49e30pPT5yPT57Y29uc3Qgbz1CZSh7Li4ucixwcm9jZXNzb3JzOm59KTtyZXR1cm4gUih0LG8pLFdlKG8sdCksR2Uobyx0KX0sa3Q9KHQsbixyPXt9KT0+bz0+e2NvbnN0e2xpYnJhcnlPcHRpb25zOmUsdGFyZ2V0Oml9PW8/P3t9LGE9QmUoey4uLmU/P3t9LHRhcmdldDppLGlvOm4scHJvY2Vzc29yczpyfSk7cmV0dXJuIFIodCxhKSxXZShhLHQpLEdlKGEsdCl9LFZnPXtndWlkOiJ1dWlkIix1cmw6InVyaSIsZGF0ZXRpbWU6ImRhdGUtdGltZSIsanNvbl9zdHJpbmc6Impzb24tc3RyaW5nIixyZWdleDoiIn0sbWQ9KHQsbixyLG8pPT57Y29uc3QgZT1yO2UudHlwZT0ic3RyaW5nIjtjb25zdHttaW5pbXVtOmksbWF4aW11bTphLGZvcm1hdDpzLHBhdHRlcm5zOmMsY29udGVudEVuY29kaW5nOnV9PXQuX3pvZC5iYWc7aWYodHlwZW9mIGk9PSJudW1iZXIiJiYoZS5taW5MZW5ndGg9aSksdHlwZW9mIGE9PSJudW1iZXIiJiYoZS5tYXhMZW5ndGg9YSkscyYmKGUuZm9ybWF0PVZnW3NdPz9zLGUuZm9ybWF0PT09IiImJmRlbGV0ZSBlLmZvcm1hdCxzPT09InRpbWUiJiZkZWxldGUgZS5mb3JtYXQpLHUmJihlLmNvbnRlbnRFbmNvZGluZz11KSxjJiZjLnNpemU+MCl7Y29uc3QgbD1bLi4uY107bC5sZW5ndGg9PT0xP2UucGF0dGVybj1sWzBdLnNvdXJjZTpsLmxlbmd0aD4xJiYoZS5hbGxPZj1bLi4ubC5tYXAoZz0+KHsuLi5uLnRhcmdldD09PSJkcmFmdC0wNyJ8fG4udGFyZ2V0PT09ImRyYWZ0LTA0Inx8bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiP3t0eXBlOiJzdHJpbmcifTp7fSxwYXR0ZXJuOmcuc291cmNlfSkpXSl9fSxwZD0odCxuLHIsbyk9Pntjb25zdCBlPXIse21pbmltdW06aSxtYXhpbXVtOmEsZm9ybWF0OnMsbXVsdGlwbGVPZjpjLGV4Y2x1c2l2ZU1heGltdW06dSxleGNsdXNpdmVNaW5pbXVtOmx9PXQuX3pvZC5iYWc7dHlwZW9mIHM9PSJzdHJpbmciJiZzLmluY2x1ZGVzKCJpbnQiKT9lLnR5cGU9ImludGVnZXIiOmUudHlwZT0ibnVtYmVyIjtjb25zdCBnPXR5cGVvZiBsPT0ibnVtYmVyIiYmbD49KGk/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSksdj10eXBlb2YgdT09Im51bWJlciImJnU8PShhPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpLF89bi50YXJnZXQ9PT0iZHJhZnQtMDQifHxuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI7Zz9fPyhlLm1pbmltdW09bCxlLmV4Y2x1c2l2ZU1pbmltdW09ITApOmUuZXhjbHVzaXZlTWluaW11bT1sOnR5cGVvZiBpPT0ibnVtYmVyIiYmKGUubWluaW11bT1pKSx2P18/KGUubWF4aW11bT11LGUuZXhjbHVzaXZlTWF4aW11bT0hMCk6ZS5leGNsdXNpdmVNYXhpbXVtPXU6dHlwZW9mIGE9PSJudW1iZXIiJiYoZS5tYXhpbXVtPWEpLHR5cGVvZiBjPT0ibnVtYmVyIiYmKGUubXVsdGlwbGVPZj1jKX0sZmQ9KHQsbixyLG8pPT57ci50eXBlPSJib29sZWFuIn0sZ2Q9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiQmlnSW50IGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSx2ZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJTeW1ib2xzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxoZD0odCxuLHIsbyk9PntuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI/KHIudHlwZT0ic3RyaW5nIixyLm51bGxhYmxlPSEwLHIuZW51bT1bbnVsbF0pOnIudHlwZT0ibnVsbCJ9LF9kPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIlVuZGVmaW5lZCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sJGQ9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiVm9pZCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sYmQ9KHQsbixyLG8pPT57ci5ub3Q9e319LHlkPSh0LG4scixvKT0+e30sa2Q9KHQsbixyLG8pPT57fSxTZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJEYXRlIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSx3ZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWYsaT1kaShlLmVudHJpZXMpO2kuZXZlcnkoYT0+dHlwZW9mIGE9PSJudW1iZXIiKSYmKHIudHlwZT0ibnVtYmVyIiksaS5ldmVyeShhPT50eXBlb2YgYT09InN0cmluZyIpJiYoci50eXBlPSJzdHJpbmciKSxyLmVudW09aX0sSWQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmLGk9W107Zm9yKGNvbnN0IGEgb2YgZS52YWx1ZXMpaWYoYT09PXZvaWQgMCl7aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiTGl0ZXJhbCBgdW5kZWZpbmVkYCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX1lbHNlIGlmKHR5cGVvZiBhPT0iYmlnaW50Iil7aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiQmlnSW50IGxpdGVyYWxzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpO2kucHVzaChOdW1iZXIoYSkpfWVsc2UgaS5wdXNoKGEpO2lmKGkubGVuZ3RoIT09MClpZihpLmxlbmd0aD09PTEpe2NvbnN0IGE9aVswXTtyLnR5cGU9YT09PW51bGw/Im51bGwiOnR5cGVvZiBhLG4udGFyZ2V0PT09ImRyYWZ0LTA0Inx8bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiP3IuZW51bT1bYV06ci5jb25zdD1hfWVsc2UgaS5ldmVyeShhPT50eXBlb2YgYT09Im51bWJlciIpJiYoci50eXBlPSJudW1iZXIiKSxpLmV2ZXJ5KGE9PnR5cGVvZiBhPT0ic3RyaW5nIikmJihyLnR5cGU9InN0cmluZyIpLGkuZXZlcnkoYT0+dHlwZW9mIGE9PSJib29sZWFuIikmJihyLnR5cGU9ImJvb2xlYW4iKSxpLmV2ZXJ5KGE9PmE9PT1udWxsKSYmKHIudHlwZT0ibnVsbCIpLHIuZW51bT1pfSx4ZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJOYU4gY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LHpkPSh0LG4scixvKT0+e2NvbnN0IGU9cixpPXQuX3pvZC5wYXR0ZXJuO2lmKCFpKXRocm93IG5ldyBFcnJvcigiUGF0dGVybiBub3QgZm91bmQgaW4gdGVtcGxhdGUgbGl0ZXJhbCIpO2UudHlwZT0ic3RyaW5nIixlLnBhdHRlcm49aS5zb3VyY2V9LFRkPSh0LG4scixvKT0+e2NvbnN0IGU9cixpPXt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmluYXJ5Iixjb250ZW50RW5jb2Rpbmc6ImJpbmFyeSJ9LHttaW5pbXVtOmEsbWF4aW11bTpzLG1pbWU6Y309dC5fem9kLmJhZzthIT09dm9pZCAwJiYoaS5taW5MZW5ndGg9YSkscyE9PXZvaWQgMCYmKGkubWF4TGVuZ3RoPXMpLGM/Yy5sZW5ndGg9PT0xPyhpLmNvbnRlbnRNZWRpYVR5cGU9Y1swXSxPYmplY3QuYXNzaWduKGUsaSkpOihPYmplY3QuYXNzaWduKGUsaSksZS5hbnlPZj1jLm1hcCh1PT4oe2NvbnRlbnRNZWRpYVR5cGU6dX0pKSk6T2JqZWN0LmFzc2lnbihlLGkpfSxVZD0odCxuLHIsbyk9PntyLnR5cGU9ImJvb2xlYW4ifSxqZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJDdXN0b20gdHlwZXMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LFBkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIkZ1bmN0aW9uIHR5cGVzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxPZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJUcmFuc2Zvcm1zIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxEZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJNYXAgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LE5kPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIlNldCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sRWQ9KHQsbixyLG8pPT57Y29uc3QgZT1yLGk9dC5fem9kLmRlZix7bWluaW11bTphLG1heGltdW06c309dC5fem9kLmJhZzt0eXBlb2YgYT09Im51bWJlciImJihlLm1pbkl0ZW1zPWEpLHR5cGVvZiBzPT0ibnVtYmVyIiYmKGUubWF4SXRlbXM9cyksZS50eXBlPSJhcnJheSIsZS5pdGVtcz1SKGkuZWxlbWVudCxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwiaXRlbXMiXX0pfSxaZD0odCxuLHIsbyk9Pntjb25zdCBlPXIsaT10Ll96b2QuZGVmO2UudHlwZT0ib2JqZWN0IixlLnByb3BlcnRpZXM9e307Y29uc3QgYT1pLnNoYXBlO2Zvcihjb25zdCB1IGluIGEpZS5wcm9wZXJ0aWVzW3VdPVIoYVt1XSxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwicHJvcGVydGllcyIsdV19KTtjb25zdCBzPW5ldyBTZXQoT2JqZWN0LmtleXMoYSkpLGM9bmV3IFNldChbLi4uc10uZmlsdGVyKHU9Pntjb25zdCBsPWkuc2hhcGVbdV0uX3pvZDtyZXR1cm4gbi5pbz09PSJpbnB1dCI/bC5vcHRpbj09PXZvaWQgMDpsLm9wdG91dD09PXZvaWQgMH0pKTtjLnNpemU+MCYmKGUucmVxdWlyZWQ9QXJyYXkuZnJvbShjKSksaS5jYXRjaGFsbD8uX3pvZC5kZWYudHlwZT09PSJuZXZlciI/ZS5hZGRpdGlvbmFsUHJvcGVydGllcz0hMTppLmNhdGNoYWxsP2kuY2F0Y2hhbGwmJihlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPVIoaS5jYXRjaGFsbCxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwiYWRkaXRpb25hbFByb3BlcnRpZXMiXX0pKTpuLmlvPT09Im91dHB1dCImJihlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPSExKX0sdW89KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmLGk9ZS5pbmNsdXNpdmU9PT0hMSxhPWUub3B0aW9ucy5tYXAoKHMsYyk9PlIocyxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCxpPyJvbmVPZiI6ImFueU9mIixjXX0pKTtpP3Iub25lT2Y9YTpyLmFueU9mPWF9LFJkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZixpPVIoZS5sZWZ0LG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJhbGxPZiIsMF19KSxhPVIoZS5yaWdodCxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwiYWxsT2YiLDFdfSkscz11PT4iYWxsT2YiaW4gdSYmT2JqZWN0LmtleXModSkubGVuZ3RoPT09MSxjPVsuLi5zKGkpP2kuYWxsT2Y6W2ldLC4uLnMoYSk/YS5hbGxPZjpbYV1dO3IuYWxsT2Y9Y30sQ2Q9KHQsbixyLG8pPT57Y29uc3QgZT1yLGk9dC5fem9kLmRlZjtlLnR5cGU9ImFycmF5Ijtjb25zdCBhPW4udGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIiPyJwcmVmaXhJdGVtcyI6Iml0ZW1zIixzPW4udGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIifHxuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI/Iml0ZW1zIjoiYWRkaXRpb25hbEl0ZW1zIixjPWkuaXRlbXMubWFwKCh2LF8pPT5SKHYsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsYSxfXX0pKSx1PWkucmVzdD9SKGkucmVzdCxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCxzLC4uLm4udGFyZ2V0PT09Im9wZW5hcGktMy4wIj9baS5pdGVtcy5sZW5ndGhdOltdXX0pOm51bGw7bi50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/KGUucHJlZml4SXRlbXM9Yyx1JiYoZS5pdGVtcz11KSk6bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiPyhlLml0ZW1zPXthbnlPZjpjfSx1JiZlLml0ZW1zLmFueU9mLnB1c2godSksZS5taW5JdGVtcz1jLmxlbmd0aCx1fHwoZS5tYXhJdGVtcz1jLmxlbmd0aCkpOihlLml0ZW1zPWMsdSYmKGUuYWRkaXRpb25hbEl0ZW1zPXUpKTtjb25zdHttaW5pbXVtOmwsbWF4aW11bTpnfT10Ll96b2QuYmFnO3R5cGVvZiBsPT0ibnVtYmVyIiYmKGUubWluSXRlbXM9bCksdHlwZW9mIGc9PSJudW1iZXIiJiYoZS5tYXhJdGVtcz1nKX0sQWQ9KHQsbixyLG8pPT57Y29uc3QgZT1yLGk9dC5fem9kLmRlZjtlLnR5cGU9Im9iamVjdCI7Y29uc3QgYT1pLmtleVR5cGUsYz1hLl96b2QuYmFnPy5wYXR0ZXJucztpZihpLm1vZGU9PT0ibG9vc2UiJiZjJiZjLnNpemU+MCl7Y29uc3QgbD1SKGkudmFsdWVUeXBlLG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJwYXR0ZXJuUHJvcGVydGllcyIsIioiXX0pO2UucGF0dGVyblByb3BlcnRpZXM9e307Zm9yKGNvbnN0IGcgb2YgYyllLnBhdHRlcm5Qcm9wZXJ0aWVzW2cuc291cmNlXT1sfWVsc2Uobi50YXJnZXQ9PT0iZHJhZnQtMDcifHxuLnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIikmJihlLnByb3BlcnR5TmFtZXM9UihpLmtleVR5cGUsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsInByb3BlcnR5TmFtZXMiXX0pKSxlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPVIoaS52YWx1ZVR5cGUsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIl19KTtjb25zdCB1PWEuX3pvZC52YWx1ZXM7aWYodSl7Y29uc3QgbD1bLi4udV0uZmlsdGVyKGc9PnR5cGVvZiBnPT0ic3RyaW5nInx8dHlwZW9mIGc9PSJudW1iZXIiKTtsLmxlbmd0aD4wJiYoZS5yZXF1aXJlZD1sKX19LExkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZixpPVIoZS5pbm5lclR5cGUsbixvKSxhPW4uc2Vlbi5nZXQodCk7bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiPyhhLnJlZj1lLmlubmVyVHlwZSxyLm51bGxhYmxlPSEwKTpyLmFueU9mPVtpLHt0eXBlOiJudWxsIn1dfSxNZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7UihlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZX0scWQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmO1IoZS5pbm5lclR5cGUsbixvKTtjb25zdCBpPW4uc2Vlbi5nZXQodCk7aS5yZWY9ZS5pbm5lclR5cGUsci5kZWZhdWx0PUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZS5kZWZhdWx0VmFsdWUpKX0sRmQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmO1IoZS5pbm5lclR5cGUsbixvKTtjb25zdCBpPW4uc2Vlbi5nZXQodCk7aS5yZWY9ZS5pbm5lclR5cGUsbi5pbz09PSJpbnB1dCImJihyLl9wcmVmYXVsdD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUuZGVmYXVsdFZhbHVlKSkpfSxKZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7UihlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZTtsZXQgYTt0cnl7YT1lLmNhdGNoVmFsdWUodm9pZCAwKX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoIkR5bmFtaWMgY2F0Y2ggdmFsdWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIEpTT04gU2NoZW1hIil9ci5kZWZhdWx0PWF9LEhkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZixpPWUuaW4uX3pvZC50cmFpdHMuaGFzKCIkWm9kVHJhbnNmb3JtIiksYT1uLmlvPT09ImlucHV0Ij9pP2Uub3V0OmUuaW46ZS5vdXQ7UihhLG4sbyk7Y29uc3Qgcz1uLnNlZW4uZ2V0KHQpO3MucmVmPWF9LFZkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZjtSKGUuaW5uZXJUeXBlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWUuaW5uZXJUeXBlLHIucmVhZE9ubHk9ITB9LEtkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZjtSKGUuaW5uZXJUeXBlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWUuaW5uZXJUeXBlfSxsbz0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7UihlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZX0sQmQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuaW5uZXJUeXBlO1IoZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lfSxhaT17c3RyaW5nOm1kLG51bWJlcjpwZCxib29sZWFuOmZkLGJpZ2ludDpnZCxzeW1ib2w6dmQsbnVsbDpoZCx1bmRlZmluZWQ6X2Qsdm9pZDokZCxuZXZlcjpiZCxhbnk6eWQsdW5rbm93bjprZCxkYXRlOlNkLGVudW06d2QsbGl0ZXJhbDpJZCxuYW46eGQsdGVtcGxhdGVfbGl0ZXJhbDp6ZCxmaWxlOlRkLHN1Y2Nlc3M6VWQsY3VzdG9tOmpkLGZ1bmN0aW9uOlBkLHRyYW5zZm9ybTpPZCxtYXA6RGQsc2V0Ok5kLGFycmF5OkVkLG9iamVjdDpaZCx1bmlvbjp1byxpbnRlcnNlY3Rpb246UmQsdHVwbGU6Q2QscmVjb3JkOkFkLG51bGxhYmxlOkxkLG5vbm9wdGlvbmFsOk1kLGRlZmF1bHQ6cWQscHJlZmF1bHQ6RmQsY2F0Y2g6SmQscGlwZTpIZCxyZWFkb25seTpWZCxwcm9taXNlOktkLG9wdGlvbmFsOmxvLGxhenk6QmR9O2Z1bmN0aW9uIG1vKHQsbil7aWYoIl9pZG1hcCJpbiB0KXtjb25zdCBvPXQsZT1CZSh7Li4ubixwcm9jZXNzb3JzOmFpfSksaT17fTtmb3IoY29uc3QgYyBvZiBvLl9pZG1hcC5lbnRyaWVzKCkpe2NvbnN0W3UsbF09YztSKGwsZSl9Y29uc3QgYT17fSxzPXtyZWdpc3RyeTpvLHVyaTpuPy51cmksZGVmczppfTtlLmV4dGVybmFsPXM7Zm9yKGNvbnN0IGMgb2Ygby5faWRtYXAuZW50cmllcygpKXtjb25zdFt1LGxdPWM7V2UoZSxsKSxhW3VdPUdlKGUsbCl9aWYoT2JqZWN0LmtleXMoaSkubGVuZ3RoPjApe2NvbnN0IGM9ZS50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/IiRkZWZzIjoiZGVmaW5pdGlvbnMiO2EuX19zaGFyZWQ9e1tjXTppfX1yZXR1cm57c2NoZW1hczphfX1jb25zdCByPUJlKHsuLi5uLHByb2Nlc3NvcnM6YWl9KTtyZXR1cm4gUih0LHIpLFdlKHIsdCksR2Uocix0KX1jbGFzcyBLZ3tnZXQgbWV0YWRhdGFSZWdpc3RyeSgpe3JldHVybiB0aGlzLmN0eC5tZXRhZGF0YVJlZ2lzdHJ5fWdldCB0YXJnZXQoKXtyZXR1cm4gdGhpcy5jdHgudGFyZ2V0fWdldCB1bnJlcHJlc2VudGFibGUoKXtyZXR1cm4gdGhpcy5jdHgudW5yZXByZXNlbnRhYmxlfWdldCBvdmVycmlkZSgpe3JldHVybiB0aGlzLmN0eC5vdmVycmlkZX1nZXQgaW8oKXtyZXR1cm4gdGhpcy5jdHguaW99Z2V0IGNvdW50ZXIoKXtyZXR1cm4gdGhpcy5jdHguY291bnRlcn1zZXQgY291bnRlcihuKXt0aGlzLmN0eC5jb3VudGVyPW59Z2V0IHNlZW4oKXtyZXR1cm4gdGhpcy5jdHguc2Vlbn1jb25zdHJ1Y3RvcihuKXtsZXQgcj1uPy50YXJnZXQ/PyJkcmFmdC0yMDIwLTEyIjtyPT09ImRyYWZ0LTQiJiYocj0iZHJhZnQtMDQiKSxyPT09ImRyYWZ0LTciJiYocj0iZHJhZnQtMDciKSx0aGlzLmN0eD1CZSh7cHJvY2Vzc29yczphaSx0YXJnZXQ6ciwuLi5uPy5tZXRhZGF0YSYme21ldGFkYXRhOm4ubWV0YWRhdGF9LC4uLm4/LnVucmVwcmVzZW50YWJsZSYme3VucmVwcmVzZW50YWJsZTpuLnVucmVwcmVzZW50YWJsZX0sLi4ubj8ub3ZlcnJpZGUmJntvdmVycmlkZTpuLm92ZXJyaWRlfSwuLi5uPy5pbyYme2lvOm4uaW99fSl9cHJvY2VzcyhuLHI9e3BhdGg6W10sc2NoZW1hUGF0aDpbXX0pe3JldHVybiBSKG4sdGhpcy5jdHgscil9ZW1pdChuLHIpe3ImJihyLmN5Y2xlcyYmKHRoaXMuY3R4LmN5Y2xlcz1yLmN5Y2xlcyksci5yZXVzZWQmJih0aGlzLmN0eC5yZXVzZWQ9ci5yZXVzZWQpLHIuZXh0ZXJuYWwmJih0aGlzLmN0eC5leHRlcm5hbD1yLmV4dGVybmFsKSksV2UodGhpcy5jdHgsbik7Y29uc3Qgbz1HZSh0aGlzLmN0eCxuKSx7In5zdGFuZGFyZCI6ZSwuLi5pfT1vO3JldHVybiBpfX1jb25zdCBCZz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGx9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksV2Q9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCRab2RBbnk6TXUsJFpvZEFycmF5OlZ1LCRab2RBc3luY0Vycm9yOmplLCRab2RCYXNlNjQ6VXUsJFpvZEJhc2U2NFVSTDpQdSwkWm9kQmlnSW50Ok5pLCRab2RCaWdJbnRGb3JtYXQ6UnUsJFpvZEJvb2xlYW46RGksJFpvZENJRFJ2NDp6dSwkWm9kQ0lEUnY2OlR1LCRab2RDVUlEOmd1LCRab2RDVUlEMjp2dSwkWm9kQ2F0Y2g6cGwsJFpvZENoZWNrOkYsJFpvZENoZWNrQmlnSW50Rm9ybWF0OkhjLCRab2RDaGVja0VuZHNXaXRoOnJ1LCRab2RDaGVja0dyZWF0ZXJUaGFuOmppLCRab2RDaGVja0luY2x1ZGVzOnR1LCRab2RDaGVja0xlbmd0aEVxdWFsczpYYywkWm9kQ2hlY2tMZXNzVGhhbjpVaSwkWm9kQ2hlY2tMb3dlckNhc2U6UWMsJFpvZENoZWNrTWF4TGVuZ3RoOldjLCRab2RDaGVja01heFNpemU6VmMsJFpvZENoZWNrTWltZVR5cGU6b3UsJFpvZENoZWNrTWluTGVuZ3RoOkdjLCRab2RDaGVja01pblNpemU6S2MsJFpvZENoZWNrTXVsdGlwbGVPZjpGYywkWm9kQ2hlY2tOdW1iZXJGb3JtYXQ6SmMsJFpvZENoZWNrT3ZlcndyaXRlOmF1LCRab2RDaGVja1Byb3BlcnR5Oml1LCRab2RDaGVja1JlZ2V4OlljLCRab2RDaGVja1NpemVFcXVhbHM6QmMsJFpvZENoZWNrU3RhcnRzV2l0aDpudSwkWm9kQ2hlY2tTdHJpbmdGb3JtYXQ6RXQsJFpvZENoZWNrVXBwZXJDYXNlOmV1LCRab2RDb2RlYzpDaSwkWm9kQ3VzdG9tOnlsLCRab2RDdXN0b21TdHJpbmdGb3JtYXQ6RXUsJFpvZERhdGU6SHUsJFpvZERlZmF1bHQ6dWwsJFpvZERpc2NyaW1pbmF0ZWRVbmlvbjpZdSwkWm9kRTE2NDpPdSwkWm9kRW1haWw6ZHUsJFpvZEVtb2ppOnB1LCRab2RFbmNvZGVFcnJvcjpGbiwkWm9kRW51bTpybCwkWm9kRXJyb3I6ZmksJFpvZEV4YWN0T3B0aW9uYWw6c2wsJFpvZEZpbGU6b2wsJFpvZEZ1bmN0aW9uOl9sLCRab2RHVUlEOnV1LCRab2RJUHY0Ond1LCRab2RJUHY2Okl1LCRab2RJU09EYXRlOnl1LCRab2RJU09EYXRlVGltZTpidSwkWm9kSVNPRHVyYXRpb246U3UsJFpvZElTT1RpbWU6a3UsJFpvZEludGVyc2VjdGlvbjpRdSwkWm9kSldUOk51LCRab2RLU1VJRDokdSwkWm9kTGF6eTpibCwkWm9kTGl0ZXJhbDppbCwkWm9kTUFDOnh1LCRab2RNYXA6dGwsJFpvZE5hTjpmbCwkWm9kTmFub0lEOmZ1LCRab2ROZXZlcjpGdSwkWm9kTm9uT3B0aW9uYWw6ZGwsJFpvZE51bGw6THUsJFpvZE51bGxhYmxlOmNsLCRab2ROdW1iZXI6T2ksJFpvZE51bWJlckZvcm1hdDpadSwkWm9kT2JqZWN0Old1LCRab2RPYmplY3RKSVQ6R3UsJFpvZE9wdGlvbmFsOlppLCRab2RQaXBlOlJpLCRab2RQcmVmYXVsdDpsbCwkWm9kUHJlcHJvY2VzczpnbCwkWm9kUHJvbWlzZTokbCwkWm9kUmVhZG9ubHk6dmwsJFpvZFJlYWxFcnJvcjpsZSwkWm9kUmVjb3JkOmVsLCRab2RSZWdpc3RyeTpJbCwkWm9kU2V0Om5sLCRab2RTdHJpbmc6WnQsJFpvZFN0cmluZ0Zvcm1hdDpxLCRab2RTdWNjZXNzOm1sLCRab2RTeW1ib2w6Q3UsJFpvZFRlbXBsYXRlTGl0ZXJhbDpobCwkWm9kVHJhbnNmb3JtOmFsLCRab2RUdXBsZTpFaSwkWm9kVHlwZTpJLCRab2RVTElEOmh1LCRab2RVUkw6bXUsJFpvZFVVSUQ6bHUsJFpvZFVuZGVmaW5lZDpBdSwkWm9kVW5pb246WG4sJFpvZFVua25vd246cXUsJFpvZFZvaWQ6SnUsJFpvZFhJRDpfdSwkWm9kWG9yOlh1LCRicmFuZDpsaSwkY29uc3RydWN0b3I6ZCwkaW5wdXQ6TWksJG91dHB1dDpMaSxEb2M6c3UsSlNPTlNjaGVtYTpCZyxKU09OU2NoZW1hR2VuZXJhdG9yOktnLE5FVkVSOnVpLFRpbWVQcmVjaXNpb246Y28sX2FueTpXbCxfYXJyYXk6bmQsX2Jhc2U2NDppbyxfYmFzZTY0dXJsOm9vLF9iaWdpbnQ6cWwsX2Jvb2xlYW46TGwsX2NhdGNoOkxnLF9jaGVjazpzZCxfY2lkcnY0Om5vLF9jaWRydjY6cm8sX2NvZXJjZWRCaWdpbnQ6RmwsX2NvZXJjZWRCb29sZWFuOk1sLF9jb2VyY2VkRGF0ZTplZCxfY29lcmNlZE51bWJlcjpObCxfY29lcmNlZFN0cmluZzp6bCxfY3VpZDpXaSxfY3VpZDI6R2ksX2N1c3RvbTppZCxfZGF0ZTpRbCxfZGVjb2RlOiRpLF9kZWNvZGVBc3luYzp5aSxfZGVmYXVsdDpSZyxfZGlzY3JpbWluYXRlZFVuaW9uOklnLF9lMTY0OmFvLF9lbWFpbDpxaSxfZW1vamk6S2ksX2VuY29kZTpfaSxfZW5jb2RlQXN5bmM6YmksX2VuZHNXaXRoOnF0LF9lbnVtOlBnLF9maWxlOnJkLF9mbG9hdDMyOlpsLF9mbG9hdDY0OlJsLF9ndDp5ZSxfZ3RlOnJlLF9ndWlkOkNuLF9pbmNsdWRlczpMdCxfaW50OkVsLF9pbnQzMjpDbCxfaW50NjQ6SmwsX2ludGVyc2VjdGlvbjp4ZyxfaXB2NDplbyxfaXB2Njp0byxfaXNvRGF0ZTpqbCxfaXNvRGF0ZVRpbWU6VWwsX2lzb0R1cmF0aW9uOk9sLF9pc29UaW1lOlBsLF9qd3Q6c28sX2tzdWlkOlFpLF9sYXp5OkpnLF9sZW5ndGg6aXQsX2xpdGVyYWw6RGcsX2xvd2VyY2FzZTpDdCxfbHQ6YmUsX2x0ZTpzZSxfbWFjOlRsLF9tYXA6VWcsX21heDpzZSxfbWF4TGVuZ3RoOnJ0LF9tYXhTaXplOlJlLF9taW1lOkZ0LF9taW46cmUsX21pbkxlbmd0aDpTZSxfbWluU2l6ZTprZSxfbXVsdGlwbGVPZjpPZSxfbmFuOnRkLF9uYW5vaWQ6QmksX25hdGl2ZUVudW06T2csX25lZ2F0aXZlOnRyLF9uZXZlcjpYbCxfbm9ubmVnYXRpdmU6cnIsX25vbm9wdGlvbmFsOkNnLF9ub25wb3NpdGl2ZTpucixfbm9ybWFsaXplOkp0LF9udWxsOkJsLF9udWxsYWJsZTpaZyxfbnVtYmVyOkRsLF9vcHRpb25hbDpFZyxfb3ZlcndyaXRlOl9lLF9wYXJzZTpVdCxfcGFyc2VBc3luYzpqdCxfcGlwZTpNZyxfcG9zaXRpdmU6ZXIsX3Byb21pc2U6SGcsX3Byb3BlcnR5OmlyLF9yZWFkb25seTpxZyxfcmVjb3JkOlRnLF9yZWZpbmU6b2QsX3JlZ2V4OlJ0LF9zYWZlRGVjb2RlOlNpLF9zYWZlRGVjb2RlQXN5bmM6SWksX3NhZmVFbmNvZGU6a2ksX3NhZmVFbmNvZGVBc3luYzp3aSxfc2FmZVBhcnNlOlB0LF9zYWZlUGFyc2VBc3luYzpPdCxfc2V0OmpnLF9zaXplOm50LF9zbHVnaWZ5OkJ0LF9zdGFydHNXaXRoOk10LF9zdHJpbmc6eGwsX3N0cmluZ0Zvcm1hdDpXdCxfc3RyaW5nYm9vbDpsZCxfc3VjY2VzczpBZyxfc3VwZXJSZWZpbmU6YWQsX3N5bWJvbDpWbCxfdGVtcGxhdGVMaXRlcmFsOkZnLF90b0xvd2VyQ2FzZTpWdCxfdG9VcHBlckNhc2U6S3QsX3RyYW5zZm9ybTpOZyxfdHJpbTpIdCxfdHVwbGU6emcsX3VpbnQzMjpBbCxfdWludDY0OkhsLF91bGlkOlhpLF91bmRlZmluZWQ6S2wsX3VuaW9uOlNnLF91bmtub3duOkdsLF91cHBlcmNhc2U6QXQsX3VybDpRbixfdXVpZDpGaSxfdXVpZHY0OkppLF91dWlkdjY6SGksX3V1aWR2NzpWaSxfdm9pZDpZbCxfeGlkOllpLF94b3I6d2csY2xvbmU6dWUsY29uZmlnOkssY3JlYXRlU3RhbmRhcmRKU09OU2NoZW1hTWV0aG9kOmt0LGNyZWF0ZVRvSlNPTlNjaGVtYU1ldGhvZDpkZCxkZWNvZGU6ZXAsZGVjb2RlQXN5bmM6bnAsZGVzY3JpYmU6Y2QsZW5jb2RlOlFtLGVuY29kZUFzeW5jOnRwLGV4dHJhY3REZWZzOldlLGZpbmFsaXplOkdlLGZsYXR0ZW5FcnJvcjpCbixmb3JtYXRFcnJvcjpXbixnbG9iYWxDb25maWc6eXQsZ2xvYmFsUmVnaXN0cnk6YWUsaW5pdGlhbGl6ZUNvbnRleHQ6QmUsaXNWYWxpZEJhc2U2NDpQaSxpc1ZhbGlkQmFzZTY0VVJMOmp1LGlzVmFsaWRKV1Q6RHUsbG9jYWxlczpBaSxtZXRhOnVkLHBhcnNlOnJpLHBhcnNlQXN5bmM6aWkscHJldHRpZnlFcnJvcjp2aSxwcm9jZXNzOlIscmVnZXhlczpHbixyZWdpc3RyeTpZbixzYWZlRGVjb2RlOmlwLHNhZmVEZWNvZGVBc3luYzphcCxzYWZlRW5jb2RlOnJwLHNhZmVFbmNvZGVBc3luYzpvcCxzYWZlUGFyc2U6aGksc2FmZVBhcnNlQXN5bmM6c2MsdG9Eb3RQYXRoOmFjLHRvSlNPTlNjaGVtYTptbyx0cmVlaWZ5RXJyb3I6Z2ksdXRpbDpwaSx2ZXJzaW9uOmN1fSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO2Z1bmN0aW9uIHBvKHQpe3JldHVybiEhdC5fem9kfWZ1bmN0aW9uIEdkKHQsbil7cmV0dXJuIHBvKHQpP2hpKHQsbik6dC5zYWZlUGFyc2Uobil9ZnVuY3Rpb24gV2codCl7aWYoIXQpcmV0dXJuO2xldCBuO2lmKHBvKHQpP249dC5fem9kPy5kZWY/LnNoYXBlOm49dC5zaGFwZSwhIW4pe2lmKHR5cGVvZiBuPT0iZnVuY3Rpb24iKXRyeXtyZXR1cm4gbigpfWNhdGNoe3JldHVybn1yZXR1cm4gbn19ZnVuY3Rpb24gR2codCl7aWYocG8odCkpe2NvbnN0IGk9dC5fem9kPy5kZWY7aWYoaSl7aWYoaS52YWx1ZSE9PXZvaWQgMClyZXR1cm4gaS52YWx1ZTtpZihBcnJheS5pc0FycmF5KGkudmFsdWVzKSYmaS52YWx1ZXMubGVuZ3RoPjApcmV0dXJuIGkudmFsdWVzWzBdfX1jb25zdCByPXQuX2RlZjtpZihyKXtpZihyLnZhbHVlIT09dm9pZCAwKXJldHVybiByLnZhbHVlO2lmKEFycmF5LmlzQXJyYXkoci52YWx1ZXMpJiZyLnZhbHVlcy5sZW5ndGg+MClyZXR1cm4gci52YWx1ZXNbMF19Y29uc3Qgbz10LnZhbHVlO2lmKG8hPT12b2lkIDApcmV0dXJuIG99Y29uc3QgWGc9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGVuZHNXaXRoOnF0LGd0OnllLGd0ZTpyZSxpbmNsdWRlczpMdCxsZW5ndGg6aXQsbG93ZXJjYXNlOkN0LGx0OmJlLGx0ZTpzZSxtYXhMZW5ndGg6cnQsbWF4U2l6ZTpSZSxtaW1lOkZ0LG1pbkxlbmd0aDpTZSxtaW5TaXplOmtlLG11bHRpcGxlT2Y6T2UsbmVnYXRpdmU6dHIsbm9ubmVnYXRpdmU6cnIsbm9ucG9zaXRpdmU6bnIsbm9ybWFsaXplOkp0LG92ZXJ3cml0ZTpfZSxwb3NpdGl2ZTplcixwcm9wZXJ0eTppcixyZWdleDpSdCxzaXplOm50LHNsdWdpZnk6QnQsc3RhcnRzV2l0aDpNdCx0b0xvd2VyQ2FzZTpWdCx0b1VwcGVyQ2FzZTpLdCx0cmltOkh0LHVwcGVyY2FzZTpBdH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxvcj1kKCJab2RJU09EYXRlVGltZSIsKHQsbik9PntidS5pbml0KHQsbiksQy5pbml0KHQsbil9KTtmdW5jdGlvbiBmbyh0KXtyZXR1cm4gVWwob3IsdCl9Y29uc3QgYXI9ZCgiWm9kSVNPRGF0ZSIsKHQsbik9Pnt5dS5pbml0KHQsbiksQy5pbml0KHQsbil9KTtmdW5jdGlvbiBYZCh0KXtyZXR1cm4gamwoYXIsdCl9Y29uc3Qgc3I9ZCgiWm9kSVNPVGltZSIsKHQsbik9PntrdS5pbml0KHQsbiksQy5pbml0KHQsbil9KTtmdW5jdGlvbiBZZCh0KXtyZXR1cm4gUGwoc3IsdCl9Y29uc3QgY3I9ZCgiWm9kSVNPRHVyYXRpb24iLCh0LG4pPT57U3UuaW5pdCh0LG4pLEMuaW5pdCh0LG4pfSk7ZnVuY3Rpb24gUWQodCl7cmV0dXJuIE9sKGNyLHQpfWNvbnN0IGdvPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxab2RJU09EYXRlOmFyLFpvZElTT0RhdGVUaW1lOm9yLFpvZElTT0R1cmF0aW9uOmNyLFpvZElTT1RpbWU6c3IsZGF0ZTpYZCxkYXRldGltZTpmbyxkdXJhdGlvbjpRZCx0aW1lOllkfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLGVtPSh0LG4pPT57ZmkuaW5pdCh0LG4pLHQubmFtZT0iWm9kRXJyb3IiLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQse2Zvcm1hdDp7dmFsdWU6cj0+V24odCxyKX0sZmxhdHRlbjp7dmFsdWU6cj0+Qm4odCxyKX0sYWRkSXNzdWU6e3ZhbHVlOnI9Pnt0Lmlzc3Vlcy5wdXNoKHIpLHQubWVzc2FnZT1KU09OLnN0cmluZ2lmeSh0Lmlzc3VlcyxFbiwyKX19LGFkZElzc3Vlczp7dmFsdWU6cj0+e3QuaXNzdWVzLnB1c2goLi4uciksdC5tZXNzYWdlPUpTT04uc3RyaW5naWZ5KHQuaXNzdWVzLEVuLDIpfX0saXNFbXB0eTp7Z2V0KCl7cmV0dXJuIHQuaXNzdWVzLmxlbmd0aD09PTB9fX0pfSx0bT1kKCJab2RFcnJvciIsZW0pLG9lPWQoIlpvZEVycm9yIixlbSx7UGFyZW50OkVycm9yfSksdm89VXQob2UpLGhvPWp0KG9lKSxfbz1QdChvZSksJG89T3Qob2UpLGJvPV9pKG9lKSx5bz0kaShvZSksa289Ymkob2UpLFNvPXlpKG9lKSx3bz1raShvZSksSW89U2kob2UpLHhvPXdpKG9lKSx6bz1JaShvZSksRHM9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gR3QodCxuLHIpe2NvbnN0IG89T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO2xldCBlPURzLmdldChvKTtpZihlfHwoZT1uZXcgU2V0LERzLnNldChvLGUpKSwhZS5oYXMobikpe2UuYWRkKG4pO2Zvcihjb25zdCBpIGluIHIpe2NvbnN0IGE9cltpXTtPYmplY3QuZGVmaW5lUHJvcGVydHkobyxpLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSxnZXQoKXtjb25zdCBzPWEuYmluZCh0aGlzKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsaSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6c30pLHN9LHNldChzKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxpLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpzfSl9fSl9fX1jb25zdCB6PWQoIlpvZFR5cGUiLCh0LG4pPT4oSS5pbml0KHQsbiksT2JqZWN0LmFzc2lnbih0WyJ+c3RhbmRhcmQiXSx7anNvblNjaGVtYTp7aW5wdXQ6a3QodCwiaW5wdXQiKSxvdXRwdXQ6a3QodCwib3V0cHV0Iil9fSksdC50b0pTT05TY2hlbWE9ZGQodCx7fSksdC5kZWY9bix0LnR5cGU9bi50eXBlLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfZGVmIix7dmFsdWU6bn0pLHQucGFyc2U9KHIsbyk9PnZvKHQscixvLHtjYWxsZWU6dC5wYXJzZX0pLHQuc2FmZVBhcnNlPShyLG8pPT5fbyh0LHIsbyksdC5wYXJzZUFzeW5jPWFzeW5jKHIsbyk9PmhvKHQscixvLHtjYWxsZWU6dC5wYXJzZUFzeW5jfSksdC5zYWZlUGFyc2VBc3luYz1hc3luYyhyLG8pPT4kbyh0LHIsbyksdC5zcGE9dC5zYWZlUGFyc2VBc3luYyx0LmVuY29kZT0ocixvKT0+Ym8odCxyLG8pLHQuZGVjb2RlPShyLG8pPT55byh0LHIsbyksdC5lbmNvZGVBc3luYz1hc3luYyhyLG8pPT5rbyh0LHIsbyksdC5kZWNvZGVBc3luYz1hc3luYyhyLG8pPT5Tbyh0LHIsbyksdC5zYWZlRW5jb2RlPShyLG8pPT53byh0LHIsbyksdC5zYWZlRGVjb2RlPShyLG8pPT5Jbyh0LHIsbyksdC5zYWZlRW5jb2RlQXN5bmM9YXN5bmMocixvKT0+eG8odCxyLG8pLHQuc2FmZURlY29kZUFzeW5jPWFzeW5jKHIsbyk9PnpvKHQscixvKSxHdCh0LCJab2RUeXBlIix7Y2hlY2soLi4ucil7Y29uc3Qgbz10aGlzLmRlZjtyZXR1cm4gdGhpcy5jbG9uZShoZShvLHtjaGVja3M6Wy4uLm8uY2hlY2tzPz9bXSwuLi5yLm1hcChlPT50eXBlb2YgZT09ImZ1bmN0aW9uIj97X3pvZDp7Y2hlY2s6ZSxkZWY6e2NoZWNrOiJjdXN0b20ifSxvbmF0dGFjaDpbXX19OmUpXX0pLHtwYXJlbnQ6ITB9KX0sd2l0aCguLi5yKXtyZXR1cm4gdGhpcy5jaGVjayguLi5yKX0sY2xvbmUocixvKXtyZXR1cm4gdWUodGhpcyxyLG8pfSxicmFuZCgpe3JldHVybiB0aGlzfSxyZWdpc3RlcihyLG8pe3JldHVybiByLmFkZCh0aGlzLG8pLHRoaXN9LHJlZmluZShyLG8pe3JldHVybiB0aGlzLmNoZWNrKFdyKHIsbykpfSxzdXBlclJlZmluZShyLG8pe3JldHVybiB0aGlzLmNoZWNrKEdyKHIsbykpfSxvdmVyd3JpdGUocil7cmV0dXJuIHRoaXMuY2hlY2soX2UocikpfSxvcHRpb25hbCgpe3JldHVybiBNKHRoaXMpfSxleGFjdE9wdGlvbmFsKCl7cmV0dXJuIFVyKHRoaXMpfSxudWxsYWJsZSgpe3JldHVybiBRZSh0aGlzKX0sbnVsbGlzaCgpe3JldHVybiBNKFFlKHRoaXMpKX0sbm9ub3B0aW9uYWwocil7cmV0dXJuIEVyKHRoaXMscil9LGFycmF5KCl7cmV0dXJuIHcodGhpcyl9LG9yKHIpe3JldHVybiBVKFt0aGlzLHJdKX0sYW5kKHIpe3JldHVybiBtdCh0aGlzLHIpfSx0cmFuc2Zvcm0ocil7cmV0dXJuIHd0KHRoaXMsJG4ocikpfSxkZWZhdWx0KHIpe3JldHVybiBPcih0aGlzLHIpfSxwcmVmYXVsdChyKXtyZXR1cm4gTnIodGhpcyxyKX0sY2F0Y2gocil7cmV0dXJuIENyKHRoaXMscil9LHBpcGUocil7cmV0dXJuIHd0KHRoaXMscil9LHJlYWRvbmx5KCl7cmV0dXJuIHFyKHRoaXMpfSxkZXNjcmliZShyKXtjb25zdCBvPXRoaXMuY2xvbmUoKTtyZXR1cm4gYWUuYWRkKG8se2Rlc2NyaXB0aW9uOnJ9KSxvfSxtZXRhKC4uLnIpe2lmKHIubGVuZ3RoPT09MClyZXR1cm4gYWUuZ2V0KHRoaXMpO2NvbnN0IG89dGhpcy5jbG9uZSgpO3JldHVybiBhZS5hZGQobyxyWzBdKSxvfSxpc09wdGlvbmFsKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKHZvaWQgMCkuc3VjY2Vzc30saXNOdWxsYWJsZSgpe3JldHVybiB0aGlzLnNhZmVQYXJzZShudWxsKS5zdWNjZXNzfSxhcHBseShyKXtyZXR1cm4gcih0aGlzKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZGVzY3JpcHRpb24iLHtnZXQoKXtyZXR1cm4gYWUuZ2V0KHQpPy5kZXNjcmlwdGlvbn0sY29uZmlndXJhYmxlOiEwfSksdCkpLFh0PWQoIl9ab2RTdHJpbmciLCh0LG4pPT57WnQuaW5pdCh0LG4pLHouaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxlLGkpPT5tZCh0LG8sZSk7Y29uc3Qgcj10Ll96b2QuYmFnO3QuZm9ybWF0PXIuZm9ybWF0Pz9udWxsLHQubWluTGVuZ3RoPXIubWluaW11bT8/bnVsbCx0Lm1heExlbmd0aD1yLm1heGltdW0/P251bGwsR3QodCwiX1pvZFN0cmluZyIse3JlZ2V4KC4uLm8pe3JldHVybiB0aGlzLmNoZWNrKFJ0KC4uLm8pKX0saW5jbHVkZXMoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soTHQoLi4ubykpfSxzdGFydHNXaXRoKC4uLm8pe3JldHVybiB0aGlzLmNoZWNrKE10KC4uLm8pKX0sZW5kc1dpdGgoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2socXQoLi4ubykpfSxtaW4oLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soU2UoLi4ubykpfSxtYXgoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2socnQoLi4ubykpfSxsZW5ndGgoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soaXQoLi4ubykpfSxub25lbXB0eSguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayhTZSgxLC4uLm8pKX0sbG93ZXJjYXNlKG8pe3JldHVybiB0aGlzLmNoZWNrKEN0KG8pKX0sdXBwZXJjYXNlKG8pe3JldHVybiB0aGlzLmNoZWNrKEF0KG8pKX0sdHJpbSgpe3JldHVybiB0aGlzLmNoZWNrKEh0KCkpfSxub3JtYWxpemUoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soSnQoLi4ubykpfSx0b0xvd2VyQ2FzZSgpe3JldHVybiB0aGlzLmNoZWNrKFZ0KCkpfSx0b1VwcGVyQ2FzZSgpe3JldHVybiB0aGlzLmNoZWNrKEt0KCkpfSxzbHVnaWZ5KCl7cmV0dXJuIHRoaXMuY2hlY2soQnQoKSl9fSl9KSxvdD1kKCJab2RTdHJpbmciLCh0LG4pPT57WnQuaW5pdCh0LG4pLFh0LmluaXQodCxuKSx0LmVtYWlsPXI9PnQuY2hlY2socWkoWXQscikpLHQudXJsPXI9PnQuY2hlY2soUW4oYXQscikpLHQuand0PXI9PnQuY2hlY2soc28oZm4scikpLHQuZW1vamk9cj0+dC5jaGVjayhLaShRdCxyKSksdC5ndWlkPXI9PnQuY2hlY2soQ24oWGUscikpLHQudXVpZD1yPT50LmNoZWNrKEZpKHZlLHIpKSx0LnV1aWR2ND1yPT50LmNoZWNrKEppKHZlLHIpKSx0LnV1aWR2Nj1yPT50LmNoZWNrKEhpKHZlLHIpKSx0LnV1aWR2Nz1yPT50LmNoZWNrKFZpKHZlLHIpKSx0Lm5hbm9pZD1yPT50LmNoZWNrKEJpKGVuLHIpKSx0Lmd1aWQ9cj0+dC5jaGVjayhDbihYZSxyKSksdC5jdWlkPXI9PnQuY2hlY2soV2kodG4scikpLHQuY3VpZDI9cj0+dC5jaGVjayhHaShubixyKSksdC51bGlkPXI9PnQuY2hlY2soWGkocm4scikpLHQuYmFzZTY0PXI9PnQuY2hlY2soaW8oZG4scikpLHQuYmFzZTY0dXJsPXI9PnQuY2hlY2sob28obW4scikpLHQueGlkPXI9PnQuY2hlY2soWWkob24scikpLHQua3N1aWQ9cj0+dC5jaGVjayhRaShhbixyKSksdC5pcHY0PXI9PnQuY2hlY2soZW8oc24scikpLHQuaXB2Nj1yPT50LmNoZWNrKHRvKGNuLHIpKSx0LmNpZHJ2ND1yPT50LmNoZWNrKG5vKHVuLHIpKSx0LmNpZHJ2Nj1yPT50LmNoZWNrKHJvKGxuLHIpKSx0LmUxNjQ9cj0+dC5jaGVjayhhbyhwbixyKSksdC5kYXRldGltZT1yPT50LmNoZWNrKGZvKHIpKSx0LmRhdGU9cj0+dC5jaGVjayhYZChyKSksdC50aW1lPXI9PnQuY2hlY2soWWQocikpLHQuZHVyYXRpb249cj0+dC5jaGVjayhRZChyKSl9KTtmdW5jdGlvbiBwKHQpe3JldHVybiB4bChvdCx0KX1jb25zdCBDPWQoIlpvZFN0cmluZ0Zvcm1hdCIsKHQsbik9PntxLmluaXQodCxuKSxYdC5pbml0KHQsbil9KSxZdD1kKCJab2RFbWFpbCIsKHQsbik9PntkdS5pbml0KHQsbiksQy5pbml0KHQsbil9KTtmdW5jdGlvbiBUbyh0KXtyZXR1cm4gcWkoWXQsdCl9Y29uc3QgWGU9ZCgiWm9kR1VJRCIsKHQsbik9Pnt1dS5pbml0KHQsbiksQy5pbml0KHQsbil9KTtmdW5jdGlvbiBVbyh0KXtyZXR1cm4gQ24oWGUsdCl9Y29uc3QgdmU9ZCgiWm9kVVVJRCIsKHQsbik9PntsdS5pbml0KHQsbiksQy5pbml0KHQsbil9KTtmdW5jdGlvbiBqbyh0KXtyZXR1cm4gRmkodmUsdCl9ZnVuY3Rpb24gUG8odCl7cmV0dXJuIEppKHZlLHQpfWZ1bmN0aW9uIE9vKHQpe3JldHVybiBIaSh2ZSx0KX1mdW5jdGlvbiBEbyh0KXtyZXR1cm4gVmkodmUsdCl9Y29uc3QgYXQ9ZCgiWm9kVVJMIiwodCxuKT0+e211LmluaXQodCxuKSxDLmluaXQodCxuKX0pO2Z1bmN0aW9uIE5vKHQpe3JldHVybiBRbihhdCx0KX1mdW5jdGlvbiBFbyh0KXtyZXR1cm4gUW4oYXQse3Byb3RvY29sOnppLGhvc3RuYW1lOnhjLC4uLmgodCl9KX1jb25zdCBRdD1kKCJab2RFbW9qaSIsKHQsbik9PntwdS5pbml0KHQsbiksQy5pbml0KHQsbil9KTtmdW5jdGlvbiBabyh0KXtyZXR1cm4gS2koUXQsdCl9Y29uc3QgZW49ZCgiWm9kTmFub0lEIiwodCxuKT0+e2Z1LmluaXQodCxuKSxDLmluaXQodCxuKX0pO2Z1bmN0aW9uIFJvKHQpe3JldHVybiBCaShlbix0KX1jb25zdCB0bj1kKCJab2RDVUlEIiwodCxuKT0+e2d1LmluaXQodCxuKSxDLmluaXQodCxuKX0pO2Z1bmN0aW9uIENvKHQpe3JldHVybiBXaSh0bix0KX1jb25zdCBubj1kKCJab2RDVUlEMiIsKHQsbik9Pnt2dS5pbml0KHQsbiksQy5pbml0KHQsbil9KTtmdW5jdGlvbiBBbyh0KXtyZXR1cm4gR2kobm4sdCl9Y29uc3Qgcm49ZCgiWm9kVUxJRCIsKHQsbik9PntodS5pbml0KHQsbiksQy5pbml0KHQsbil9KTtmdW5jdGlvbiBMbyh0KXtyZXR1cm4gWGkocm4sdCl9Y29uc3Qgb249ZCgiWm9kWElEIiwodCxuKT0+e191LmluaXQodCxuKSxDLmluaXQodCxuKX0pO2Z1bmN0aW9uIE1vKHQpe3JldHVybiBZaShvbix0KX1jb25zdCBhbj1kKCJab2RLU1VJRCIsKHQsbik9PnskdS5pbml0KHQsbiksQy5pbml0KHQsbil9KTtmdW5jdGlvbiBxbyh0KXtyZXR1cm4gUWkoYW4sdCl9Y29uc3Qgc249ZCgiWm9kSVB2NCIsKHQsbik9Pnt3dS5pbml0KHQsbiksQy5pbml0KHQsbil9KTtmdW5jdGlvbiBGbyh0KXtyZXR1cm4gZW8oc24sdCl9Y29uc3QgdXI9ZCgiWm9kTUFDIiwodCxuKT0+e3h1LmluaXQodCxuKSxDLmluaXQodCxuKX0pO2Z1bmN0aW9uIEpvKHQpe3JldHVybiBUbCh1cix0KX1jb25zdCBjbj1kKCJab2RJUHY2IiwodCxuKT0+e0l1LmluaXQodCxuKSxDLmluaXQodCxuKX0pO2Z1bmN0aW9uIEhvKHQpe3JldHVybiB0byhjbix0KX1jb25zdCB1bj1kKCJab2RDSURSdjQiLCh0LG4pPT57enUuaW5pdCh0LG4pLEMuaW5pdCh0LG4pfSk7ZnVuY3Rpb24gVm8odCl7cmV0dXJuIG5vKHVuLHQpfWNvbnN0IGxuPWQoIlpvZENJRFJ2NiIsKHQsbik9PntUdS5pbml0KHQsbiksQy5pbml0KHQsbil9KTtmdW5jdGlvbiBLbyh0KXtyZXR1cm4gcm8obG4sdCl9Y29uc3QgZG49ZCgiWm9kQmFzZTY0IiwodCxuKT0+e1V1LmluaXQodCxuKSxDLmluaXQodCxuKX0pO2Z1bmN0aW9uIEJvKHQpe3JldHVybiBpbyhkbix0KX1jb25zdCBtbj1kKCJab2RCYXNlNjRVUkwiLCh0LG4pPT57UHUuaW5pdCh0LG4pLEMuaW5pdCh0LG4pfSk7ZnVuY3Rpb24gV28odCl7cmV0dXJuIG9vKG1uLHQpfWNvbnN0IHBuPWQoIlpvZEUxNjQiLCh0LG4pPT57T3UuaW5pdCh0LG4pLEMuaW5pdCh0LG4pfSk7ZnVuY3Rpb24gR28odCl7cmV0dXJuIGFvKHBuLHQpfWNvbnN0IGZuPWQoIlpvZEpXVCIsKHQsbik9PntOdS5pbml0KHQsbiksQy5pbml0KHQsbil9KTtmdW5jdGlvbiBYbyh0KXtyZXR1cm4gc28oZm4sdCl9Y29uc3QgQ2U9ZCgiWm9kQ3VzdG9tU3RyaW5nRm9ybWF0IiwodCxuKT0+e0V1LmluaXQodCxuKSxDLmluaXQodCxuKX0pO2Z1bmN0aW9uIFlvKHQsbixyPXt9KXtyZXR1cm4gV3QoQ2UsdCxuLHIpfWZ1bmN0aW9uIFFvKHQpe3JldHVybiBXdChDZSwiaG9zdG5hbWUiLEljLHQpfWZ1bmN0aW9uIGVhKHQpe3JldHVybiBXdChDZSwiaGV4IixNYyx0KX1mdW5jdGlvbiB0YSh0LG4pe2NvbnN0IHI9bj8uZW5jPz8iaGV4IixvPWAke3R9XyR7cn1gLGU9R25bb107aWYoIWUpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgaGFzaCBmb3JtYXQ6ICR7b31gKTtyZXR1cm4gV3QoQ2UsbyxlLG4pfWNvbnN0IHN0PWQoIlpvZE51bWJlciIsKHQsbik9PntPaS5pbml0KHQsbiksei5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShvLGUsaSk9PnBkKHQsbyxlKSxHdCh0LCJab2ROdW1iZXIiLHtndChvLGUpe3JldHVybiB0aGlzLmNoZWNrKHllKG8sZSkpfSxndGUobyxlKXtyZXR1cm4gdGhpcy5jaGVjayhyZShvLGUpKX0sbWluKG8sZSl7cmV0dXJuIHRoaXMuY2hlY2socmUobyxlKSl9LGx0KG8sZSl7cmV0dXJuIHRoaXMuY2hlY2soYmUobyxlKSl9LGx0ZShvLGUpe3JldHVybiB0aGlzLmNoZWNrKHNlKG8sZSkpfSxtYXgobyxlKXtyZXR1cm4gdGhpcy5jaGVjayhzZShvLGUpKX0saW50KG8pe3JldHVybiB0aGlzLmNoZWNrKFN0KG8pKX0sc2FmZShvKXtyZXR1cm4gdGhpcy5jaGVjayhTdChvKSl9LHBvc2l0aXZlKG8pe3JldHVybiB0aGlzLmNoZWNrKHllKDAsbykpfSxub25uZWdhdGl2ZShvKXtyZXR1cm4gdGhpcy5jaGVjayhyZSgwLG8pKX0sbmVnYXRpdmUobyl7cmV0dXJuIHRoaXMuY2hlY2soYmUoMCxvKSl9LG5vbnBvc2l0aXZlKG8pe3JldHVybiB0aGlzLmNoZWNrKHNlKDAsbykpfSxtdWx0aXBsZU9mKG8sZSl7cmV0dXJuIHRoaXMuY2hlY2soT2UobyxlKSl9LHN0ZXAobyxlKXtyZXR1cm4gdGhpcy5jaGVjayhPZShvLGUpKX0sZmluaXRlKCl7cmV0dXJuIHRoaXN9fSk7Y29uc3Qgcj10Ll96b2QuYmFnO3QubWluVmFsdWU9TWF0aC5tYXgoci5taW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksci5leGNsdXNpdmVNaW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpPz9udWxsLHQubWF4VmFsdWU9TWF0aC5taW4oci5tYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksci5leGNsdXNpdmVNYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpPz9udWxsLHQuaXNJbnQ9KHIuZm9ybWF0Pz8iIikuaW5jbHVkZXMoImludCIpfHxOdW1iZXIuaXNTYWZlSW50ZWdlcihyLm11bHRpcGxlT2Y/Py41KSx0LmlzRmluaXRlPSEwLHQuZm9ybWF0PXIuZm9ybWF0Pz9udWxsfSk7ZnVuY3Rpb24geCh0KXtyZXR1cm4gRGwoc3QsdCl9Y29uc3QgSWU9ZCgiWm9kTnVtYmVyRm9ybWF0IiwodCxuKT0+e1p1LmluaXQodCxuKSxzdC5pbml0KHQsbil9KTtmdW5jdGlvbiBTdCh0KXtyZXR1cm4gRWwoSWUsdCl9ZnVuY3Rpb24gbmEodCl7cmV0dXJuIFpsKEllLHQpfWZ1bmN0aW9uIHJhKHQpe3JldHVybiBSbChJZSx0KX1mdW5jdGlvbiBpYSh0KXtyZXR1cm4gQ2woSWUsdCl9ZnVuY3Rpb24gb2EodCl7cmV0dXJuIEFsKEllLHQpfWNvbnN0IGN0PWQoIlpvZEJvb2xlYW4iLCh0LG4pPT57RGkuaW5pdCh0LG4pLHouaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5mZCh0LHIsbyl9KTtmdW5jdGlvbiBFKHQpe3JldHVybiBMbChjdCx0KX1jb25zdCB1dD1kKCJab2RCaWdJbnQiLCh0LG4pPT57TmkuaW5pdCh0LG4pLHouaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxlLGkpPT5nZCh0LG8pLHQuZ3RlPShvLGUpPT50LmNoZWNrKHJlKG8sZSkpLHQubWluPShvLGUpPT50LmNoZWNrKHJlKG8sZSkpLHQuZ3Q9KG8sZSk9PnQuY2hlY2soeWUobyxlKSksdC5ndGU9KG8sZSk9PnQuY2hlY2socmUobyxlKSksdC5taW49KG8sZSk9PnQuY2hlY2socmUobyxlKSksdC5sdD0obyxlKT0+dC5jaGVjayhiZShvLGUpKSx0Lmx0ZT0obyxlKT0+dC5jaGVjayhzZShvLGUpKSx0Lm1heD0obyxlKT0+dC5jaGVjayhzZShvLGUpKSx0LnBvc2l0aXZlPW89PnQuY2hlY2soeWUoQmlnSW50KDApLG8pKSx0Lm5lZ2F0aXZlPW89PnQuY2hlY2soYmUoQmlnSW50KDApLG8pKSx0Lm5vbnBvc2l0aXZlPW89PnQuY2hlY2soc2UoQmlnSW50KDApLG8pKSx0Lm5vbm5lZ2F0aXZlPW89PnQuY2hlY2socmUoQmlnSW50KDApLG8pKSx0Lm11bHRpcGxlT2Y9KG8sZSk9PnQuY2hlY2soT2UobyxlKSk7Y29uc3Qgcj10Ll96b2QuYmFnO3QubWluVmFsdWU9ci5taW5pbXVtPz9udWxsLHQubWF4VmFsdWU9ci5tYXhpbXVtPz9udWxsLHQuZm9ybWF0PXIuZm9ybWF0Pz9udWxsfSk7ZnVuY3Rpb24gYWEodCl7cmV0dXJuIHFsKHV0LHQpfWNvbnN0IGduPWQoIlpvZEJpZ0ludEZvcm1hdCIsKHQsbik9PntSdS5pbml0KHQsbiksdXQuaW5pdCh0LG4pfSk7ZnVuY3Rpb24gc2EodCl7cmV0dXJuIEpsKGduLHQpfWZ1bmN0aW9uIGNhKHQpe3JldHVybiBIbChnbix0KX1jb25zdCBscj1kKCJab2RTeW1ib2wiLCh0LG4pPT57Q3UuaW5pdCh0LG4pLHouaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT52ZCh0LHIpfSk7ZnVuY3Rpb24gdWEodCl7cmV0dXJuIFZsKGxyLHQpfWNvbnN0IGRyPWQoIlpvZFVuZGVmaW5lZCIsKHQsbik9PntBdS5pbml0KHQsbiksei5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9Pl9kKHQscil9KTtmdW5jdGlvbiBZZSh0KXtyZXR1cm4gS2woZHIsdCl9Y29uc3QgbXI9ZCgiWm9kTnVsbCIsKHQsbik9PntMdS5pbml0KHQsbiksei5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmhkKHQscixvKX0pO2Z1bmN0aW9uIHZuKHQpe3JldHVybiBCbChtcix0KX1jb25zdCBwcj1kKCJab2RBbnkiLCh0LG4pPT57TXUuaW5pdCh0LG4pLHouaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT55ZCgpfSk7ZnVuY3Rpb24gbGEoKXtyZXR1cm4gV2wocHIpfWNvbnN0IGZyPWQoIlpvZFVua25vd24iLCh0LG4pPT57cXUuaW5pdCh0LG4pLHouaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5rZCgpfSk7ZnVuY3Rpb24gTigpe3JldHVybiBHbChmcil9Y29uc3QgZ3I9ZCgiWm9kTmV2ZXIiLCh0LG4pPT57RnUuaW5pdCh0LG4pLHouaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5iZCh0LHIsbyl9KTtmdW5jdGlvbiBEZSh0KXtyZXR1cm4gWGwoZ3IsdCl9Y29uc3QgdnI9ZCgiWm9kVm9pZCIsKHQsbik9PntKdS5pbml0KHQsbiksei5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PiRkKHQscil9KTtmdW5jdGlvbiBkYSh0KXtyZXR1cm4gWWwodnIsdCl9Y29uc3QgaG49ZCgiWm9kRGF0ZSIsKHQsbik9PntIdS5pbml0KHQsbiksei5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShvLGUsaSk9PlNkKHQsbyksdC5taW49KG8sZSk9PnQuY2hlY2socmUobyxlKSksdC5tYXg9KG8sZSk9PnQuY2hlY2soc2UobyxlKSk7Y29uc3Qgcj10Ll96b2QuYmFnO3QubWluRGF0ZT1yLm1pbmltdW0/bmV3IERhdGUoci5taW5pbXVtKTpudWxsLHQubWF4RGF0ZT1yLm1heGltdW0/bmV3IERhdGUoci5tYXhpbXVtKTpudWxsfSk7ZnVuY3Rpb24gbWEodCl7cmV0dXJuIFFsKGhuLHQpfWNvbnN0IGhyPWQoIlpvZEFycmF5IiwodCxuKT0+e1Z1LmluaXQodCxuKSx6LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+RWQodCxyLG8sZSksdC5lbGVtZW50PW4uZWxlbWVudCxHdCh0LCJab2RBcnJheSIse21pbihyLG8pe3JldHVybiB0aGlzLmNoZWNrKFNlKHIsbykpfSxub25lbXB0eShyKXtyZXR1cm4gdGhpcy5jaGVjayhTZSgxLHIpKX0sbWF4KHIsbyl7cmV0dXJuIHRoaXMuY2hlY2socnQocixvKSl9LGxlbmd0aChyLG8pe3JldHVybiB0aGlzLmNoZWNrKGl0KHIsbykpfSx1bndyYXAoKXtyZXR1cm4gdGhpcy5lbGVtZW50fX0pfSk7ZnVuY3Rpb24gdyh0LG4pe3JldHVybiBuZChocix0LG4pfWZ1bmN0aW9uIHBhKHQpe2NvbnN0IG49dC5fem9kLmRlZi5zaGFwZTtyZXR1cm4gWShPYmplY3Qua2V5cyhuKSl9Y29uc3QgbHQ9ZCgiWm9kT2JqZWN0IiwodCxuKT0+e0d1LmluaXQodCxuKSx6LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+WmQodCxyLG8sZSksVCh0LCJzaGFwZSIsKCk9Pm4uc2hhcGUpLEd0KHQsIlpvZE9iamVjdCIse2tleW9mKCl7cmV0dXJuIFkoT2JqZWN0LmtleXModGhpcy5fem9kLmRlZi5zaGFwZSkpfSxjYXRjaGFsbChyKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixjYXRjaGFsbDpyfSl9LHBhc3N0aHJvdWdoKCl7cmV0dXJuIHRoaXMuY2xvbmUoey4uLnRoaXMuX3pvZC5kZWYsY2F0Y2hhbGw6TigpfSl9LGxvb3NlKCl7cmV0dXJuIHRoaXMuY2xvbmUoey4uLnRoaXMuX3pvZC5kZWYsY2F0Y2hhbGw6TigpfSl9LHN0cmljdCgpe3JldHVybiB0aGlzLmNsb25lKHsuLi50aGlzLl96b2QuZGVmLGNhdGNoYWxsOkRlKCl9KX0sc3RyaXAoKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixjYXRjaGFsbDp2b2lkIDB9KX0sZXh0ZW5kKHIpe3JldHVybiBYcyh0aGlzLHIpfSxzYWZlRXh0ZW5kKHIpe3JldHVybiBZcyh0aGlzLHIpfSxtZXJnZShyKXtyZXR1cm4gUXModGhpcyxyKX0scGljayhyKXtyZXR1cm4gV3ModGhpcyxyKX0sb21pdChyKXtyZXR1cm4gR3ModGhpcyxyKX0scGFydGlhbCguLi5yKXtyZXR1cm4gZWMoYm4sdGhpcyxyWzBdKX0scmVxdWlyZWQoLi4ucil7cmV0dXJuIHRjKHluLHRoaXMsclswXSl9fSl9KTtmdW5jdGlvbiBmKHQsbil7Y29uc3Qgcj17dHlwZToib2JqZWN0IixzaGFwZTp0Pz97fSwuLi5oKG4pfTtyZXR1cm4gbmV3IGx0KHIpfWZ1bmN0aW9uIGZhKHQsbil7cmV0dXJuIG5ldyBsdCh7dHlwZToib2JqZWN0IixzaGFwZTp0LGNhdGNoYWxsOkRlKCksLi4uaChuKX0pfWZ1bmN0aW9uIFgodCxuKXtyZXR1cm4gbmV3IGx0KHt0eXBlOiJvYmplY3QiLHNoYXBlOnQsY2F0Y2hhbGw6TigpLC4uLmgobil9KX1jb25zdCBkdD1kKCJab2RVbmlvbiIsKHQsbik9PntYbi5pbml0KHQsbiksei5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnVvKHQscixvLGUpLHQub3B0aW9ucz1uLm9wdGlvbnN9KTtmdW5jdGlvbiBVKHQsbil7cmV0dXJuIG5ldyBkdCh7dHlwZToidW5pb24iLG9wdGlvbnM6dCwuLi5oKG4pfSl9Y29uc3QgX3I9ZCgiWm9kWG9yIiwodCxuKT0+e2R0LmluaXQodCxuKSxYdS5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnVvKHQscixvLGUpLHQub3B0aW9ucz1uLm9wdGlvbnN9KTtmdW5jdGlvbiBnYSh0LG4pe3JldHVybiBuZXcgX3Ioe3R5cGU6InVuaW9uIixvcHRpb25zOnQsaW5jbHVzaXZlOiExLC4uLmgobil9KX1jb25zdCAkcj1kKCJab2REaXNjcmltaW5hdGVkVW5pb24iLCh0LG4pPT57ZHQuaW5pdCh0LG4pLFl1LmluaXQodCxuKX0pO2Z1bmN0aW9uIF9uKHQsbixyKXtyZXR1cm4gbmV3ICRyKHt0eXBlOiJ1bmlvbiIsb3B0aW9uczpuLGRpc2NyaW1pbmF0b3I6dCwuLi5oKHIpfSl9Y29uc3QgYnI9ZCgiWm9kSW50ZXJzZWN0aW9uIiwodCxuKT0+e1F1LmluaXQodCxuKSx6LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+UmQodCxyLG8sZSl9KTtmdW5jdGlvbiBtdCh0LG4pe3JldHVybiBuZXcgYnIoe3R5cGU6ImludGVyc2VjdGlvbiIsbGVmdDp0LHJpZ2h0Om59KX1jb25zdCB5cj1kKCJab2RUdXBsZSIsKHQsbik9PntFaS5pbml0KHQsbiksei5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PkNkKHQscixvLGUpLHQucmVzdD1yPT50LmNsb25lKHsuLi50Ll96b2QuZGVmLHJlc3Q6cn0pfSk7ZnVuY3Rpb24ga3IodCxuLHIpe2NvbnN0IG89biBpbnN0YW5jZW9mIEksZT1vP3I6bixpPW8/bjpudWxsO3JldHVybiBuZXcgeXIoe3R5cGU6InR1cGxlIixpdGVtczp0LHJlc3Q6aSwuLi5oKGUpfSl9Y29uc3QgTmU9ZCgiWm9kUmVjb3JkIiwodCxuKT0+e2VsLmluaXQodCxuKSx6LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+QWQodCxyLG8sZSksdC5rZXlUeXBlPW4ua2V5VHlwZSx0LnZhbHVlVHlwZT1uLnZhbHVlVHlwZX0pO2Z1bmN0aW9uIFAodCxuLHIpe3JldHVybiFufHwhbi5fem9kP25ldyBOZSh7dHlwZToicmVjb3JkIixrZXlUeXBlOnAoKSx2YWx1ZVR5cGU6dCwuLi5oKG4pfSk6bmV3IE5lKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6dCx2YWx1ZVR5cGU6biwuLi5oKHIpfSl9ZnVuY3Rpb24gdmEodCxuLHIpe2NvbnN0IG89dWUodCk7cmV0dXJuIG8uX3pvZC52YWx1ZXM9dm9pZCAwLG5ldyBOZSh7dHlwZToicmVjb3JkIixrZXlUeXBlOm8sdmFsdWVUeXBlOm4sLi4uaChyKX0pfWZ1bmN0aW9uIGhhKHQsbixyKXtyZXR1cm4gbmV3IE5lKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6dCx2YWx1ZVR5cGU6bixtb2RlOiJsb29zZSIsLi4uaChyKX0pfWNvbnN0IFNyPWQoIlpvZE1hcCIsKHQsbik9Pnt0bC5pbml0KHQsbiksei5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PkRkKHQsciksdC5rZXlUeXBlPW4ua2V5VHlwZSx0LnZhbHVlVHlwZT1uLnZhbHVlVHlwZSx0Lm1pbj0oLi4ucik9PnQuY2hlY2soa2UoLi4ucikpLHQubm9uZW1wdHk9cj0+dC5jaGVjayhrZSgxLHIpKSx0Lm1heD0oLi4ucik9PnQuY2hlY2soUmUoLi4ucikpLHQuc2l6ZT0oLi4ucik9PnQuY2hlY2sobnQoLi4ucikpfSk7ZnVuY3Rpb24gX2EodCxuLHIpe3JldHVybiBuZXcgU3Ioe3R5cGU6Im1hcCIsa2V5VHlwZTp0LHZhbHVlVHlwZTpuLC4uLmgocil9KX1jb25zdCB3cj1kKCJab2RTZXQiLCh0LG4pPT57bmwuaW5pdCh0LG4pLHouaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5OZCh0LHIpLHQubWluPSguLi5yKT0+dC5jaGVjayhrZSguLi5yKSksdC5ub25lbXB0eT1yPT50LmNoZWNrKGtlKDEscikpLHQubWF4PSguLi5yKT0+dC5jaGVjayhSZSguLi5yKSksdC5zaXplPSguLi5yKT0+dC5jaGVjayhudCguLi5yKSl9KTtmdW5jdGlvbiAkYSh0LG4pe3JldHVybiBuZXcgd3Ioe3R5cGU6InNldCIsdmFsdWVUeXBlOnQsLi4uaChuKX0pfWNvbnN0IEVlPWQoIlpvZEVudW0iLCh0LG4pPT57cmwuaW5pdCh0LG4pLHouaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxlLGkpPT53ZCh0LG8sZSksdC5lbnVtPW4uZW50cmllcyx0Lm9wdGlvbnM9T2JqZWN0LnZhbHVlcyhuLmVudHJpZXMpO2NvbnN0IHI9bmV3IFNldChPYmplY3Qua2V5cyhuLmVudHJpZXMpKTt0LmV4dHJhY3Q9KG8sZSk9Pntjb25zdCBpPXt9O2Zvcihjb25zdCBhIG9mIG8paWYoci5oYXMoYSkpaVthXT1uLmVudHJpZXNbYV07ZWxzZSB0aHJvdyBuZXcgRXJyb3IoYEtleSAke2F9IG5vdCBmb3VuZCBpbiBlbnVtYCk7cmV0dXJuIG5ldyBFZSh7Li4ubixjaGVja3M6W10sLi4uaChlKSxlbnRyaWVzOml9KX0sdC5leGNsdWRlPShvLGUpPT57Y29uc3QgaT17Li4ubi5lbnRyaWVzfTtmb3IoY29uc3QgYSBvZiBvKWlmKHIuaGFzKGEpKWRlbGV0ZSBpW2FdO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHthfSBub3QgZm91bmQgaW4gZW51bWApO3JldHVybiBuZXcgRWUoey4uLm4sY2hlY2tzOltdLC4uLmgoZSksZW50cmllczppfSl9fSk7ZnVuY3Rpb24gWSh0LG4pe2NvbnN0IHI9QXJyYXkuaXNBcnJheSh0KT9PYmplY3QuZnJvbUVudHJpZXModC5tYXAobz0+W28sb10pKTp0O3JldHVybiBuZXcgRWUoe3R5cGU6ImVudW0iLGVudHJpZXM6ciwuLi5oKG4pfSl9ZnVuY3Rpb24gYmEodCxuKXtyZXR1cm4gbmV3IEVlKHt0eXBlOiJlbnVtIixlbnRyaWVzOnQsLi4uaChuKX0pfWNvbnN0IElyPWQoIlpvZExpdGVyYWwiLCh0LG4pPT57aWwuaW5pdCh0LG4pLHouaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5JZCh0LHIsbyksdC52YWx1ZXM9bmV3IFNldChuLnZhbHVlcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInZhbHVlIix7Z2V0KCl7aWYobi52YWx1ZXMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHNjaGVtYSBjb250YWlucyBtdWx0aXBsZSB2YWxpZCBsaXRlcmFsIHZhbHVlcy4gVXNlIGAudmFsdWVzYCBpbnN0ZWFkLiIpO3JldHVybiBuLnZhbHVlc1swXX19KX0pO2Z1bmN0aW9uIG0odCxuKXtyZXR1cm4gbmV3IElyKHt0eXBlOiJsaXRlcmFsIix2YWx1ZXM6QXJyYXkuaXNBcnJheSh0KT90Olt0XSwuLi5oKG4pfSl9Y29uc3QgeHI9ZCgiWm9kRmlsZSIsKHQsbik9PntvbC5pbml0KHQsbiksei5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PlRkKHQscixvKSx0Lm1pbj0ocixvKT0+dC5jaGVjayhrZShyLG8pKSx0Lm1heD0ocixvKT0+dC5jaGVjayhSZShyLG8pKSx0Lm1pbWU9KHIsbyk9PnQuY2hlY2soRnQoQXJyYXkuaXNBcnJheShyKT9yOltyXSxvKSl9KTtmdW5jdGlvbiB5YSh0KXtyZXR1cm4gcmQoeHIsdCl9Y29uc3QgenI9ZCgiWm9kVHJhbnNmb3JtIiwodCxuKT0+e2FsLmluaXQodCxuKSx6LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+T2QodCxyKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpdGhyb3cgbmV3IEZuKHQuY29uc3RydWN0b3IubmFtZSk7ci5hZGRJc3N1ZT1pPT57aWYodHlwZW9mIGk9PSJzdHJpbmciKXIuaXNzdWVzLnB1c2goVmUoaSxyLnZhbHVlLG4pKTtlbHNle2NvbnN0IGE9aTthLmZhdGFsJiYoYS5jb250aW51ZT0hMSksYS5jb2RlPz8oYS5jb2RlPSJjdXN0b20iKSxhLmlucHV0Pz8oYS5pbnB1dD1yLnZhbHVlKSxhLmluc3Q/PyhhLmluc3Q9dCksci5pc3N1ZXMucHVzaChWZShhKSl9fTtjb25zdCBlPW4udHJhbnNmb3JtKHIudmFsdWUscik7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT4oci52YWx1ZT1pLHIuZmFsbGJhY2s9ITAscikpOihyLnZhbHVlPWUsci5mYWxsYmFjaz0hMCxyKX19KTtmdW5jdGlvbiAkbih0KXtyZXR1cm4gbmV3IHpyKHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTp0fSl9Y29uc3QgYm49ZCgiWm9kT3B0aW9uYWwiLCh0LG4pPT57WmkuaW5pdCh0LG4pLHouaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5sbyh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBNKHQpe3JldHVybiBuZXcgYm4oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6dH0pfWNvbnN0IFRyPWQoIlpvZEV4YWN0T3B0aW9uYWwiLCh0LG4pPT57c2wuaW5pdCh0LG4pLHouaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5sbyh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBVcih0KXtyZXR1cm4gbmV3IFRyKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOnR9KX1jb25zdCBqcj1kKCJab2ROdWxsYWJsZSIsKHQsbik9PntjbC5pbml0KHQsbiksei5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PkxkKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIFFlKHQpe3JldHVybiBuZXcganIoe3R5cGU6Im51bGxhYmxlIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIGthKHQpe3JldHVybiBNKFFlKHQpKX1jb25zdCBQcj1kKCJab2REZWZhdWx0IiwodCxuKT0+e3VsLmluaXQodCxuKSx6LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+cWQodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlLHQucmVtb3ZlRGVmYXVsdD10LnVud3JhcH0pO2Z1bmN0aW9uIE9yKHQsbil7cmV0dXJuIG5ldyBQcih7dHlwZToiZGVmYXVsdCIsaW5uZXJUeXBlOnQsZ2V0IGRlZmF1bHRWYWx1ZSgpe3JldHVybiB0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uKCk6SG4obil9fSl9Y29uc3QgRHI9ZCgiWm9kUHJlZmF1bHQiLCh0LG4pPT57bGwuaW5pdCh0LG4pLHouaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5GZCh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBOcih0LG4pe3JldHVybiBuZXcgRHIoe3R5cGU6InByZWZhdWx0Iixpbm5lclR5cGU6dCxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP24oKTpIbihuKX19KX1jb25zdCB5bj1kKCJab2ROb25PcHRpb25hbCIsKHQsbik9PntkbC5pbml0KHQsbiksei5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9Pk1kKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIEVyKHQsbil7cmV0dXJuIG5ldyB5bih7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTp0LC4uLmgobil9KX1jb25zdCBacj1kKCJab2RTdWNjZXNzIiwodCxuKT0+e21sLmluaXQodCxuKSx6LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+VWQodCxyLG8pLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIFNhKHQpe3JldHVybiBuZXcgWnIoe3R5cGU6InN1Y2Nlc3MiLGlubmVyVHlwZTp0fSl9Y29uc3QgUnI9ZCgiWm9kQ2F0Y2giLCh0LG4pPT57cGwuaW5pdCh0LG4pLHouaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5KZCh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGUsdC5yZW1vdmVDYXRjaD10LnVud3JhcH0pO2Z1bmN0aW9uIENyKHQsbil7cmV0dXJuIG5ldyBScih7dHlwZToiY2F0Y2giLGlubmVyVHlwZTp0LGNhdGNoVmFsdWU6dHlwZW9mIG49PSJmdW5jdGlvbiI/bjooKT0+bn0pfWNvbnN0IEFyPWQoIlpvZE5hTiIsKHQsbik9PntmbC5pbml0KHQsbiksei5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnhkKHQscil9KTtmdW5jdGlvbiB3YSh0KXtyZXR1cm4gdGQoQXIsdCl9Y29uc3QgcHQ9ZCgiWm9kUGlwZSIsKHQsbik9PntSaS5pbml0KHQsbiksei5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PkhkKHQscixvLGUpLHQuaW49bi5pbix0Lm91dD1uLm91dH0pO2Z1bmN0aW9uIHd0KHQsbil7cmV0dXJuIG5ldyBwdCh7dHlwZToicGlwZSIsaW46dCxvdXQ6bn0pfWNvbnN0IGZ0PWQoIlpvZENvZGVjIiwodCxuKT0+e3B0LmluaXQodCxuKSxDaS5pbml0KHQsbil9KTtmdW5jdGlvbiBJYSh0LG4scil7cmV0dXJuIG5ldyBmdCh7dHlwZToicGlwZSIsaW46dCxvdXQ6bix0cmFuc2Zvcm06ci5kZWNvZGUscmV2ZXJzZVRyYW5zZm9ybTpyLmVuY29kZX0pfWZ1bmN0aW9uIHhhKHQpe2NvbnN0IG49dC5fem9kLmRlZjtyZXR1cm4gbmV3IGZ0KHt0eXBlOiJwaXBlIixpbjpuLm91dCxvdXQ6bi5pbix0cmFuc2Zvcm06bi5yZXZlcnNlVHJhbnNmb3JtLHJldmVyc2VUcmFuc2Zvcm06bi50cmFuc2Zvcm19KX1jb25zdCBMcj1kKCJab2RQcmVwcm9jZXNzIiwodCxuKT0+e3B0LmluaXQodCxuKSxnbC5pbml0KHQsbil9KSxNcj1kKCJab2RSZWFkb25seSIsKHQsbik9Pnt2bC5pbml0KHQsbiksei5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PlZkKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIHFyKHQpe3JldHVybiBuZXcgTXIoe3R5cGU6InJlYWRvbmx5Iixpbm5lclR5cGU6dH0pfWNvbnN0IEZyPWQoIlpvZFRlbXBsYXRlTGl0ZXJhbCIsKHQsbik9PntobC5pbml0KHQsbiksei5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnpkKHQscixvKX0pO2Z1bmN0aW9uIHphKHQsbil7cmV0dXJuIG5ldyBGcih7dHlwZToidGVtcGxhdGVfbGl0ZXJhbCIscGFydHM6dCwuLi5oKG4pfSl9Y29uc3QgSnI9ZCgiWm9kTGF6eSIsKHQsbik9PntibC5pbml0KHQsbiksei5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PkJkKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmdldHRlcigpfSk7ZnVuY3Rpb24gSHIodCl7cmV0dXJuIG5ldyBKcih7dHlwZToibGF6eSIsZ2V0dGVyOnR9KX1jb25zdCBWcj1kKCJab2RQcm9taXNlIiwodCxuKT0+eyRsLmluaXQodCxuKSx6LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+S2QodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gVGEodCl7cmV0dXJuIG5ldyBWcih7dHlwZToicHJvbWlzZSIsaW5uZXJUeXBlOnR9KX1jb25zdCBLcj1kKCJab2RGdW5jdGlvbiIsKHQsbik9PntfbC5pbml0KHQsbiksei5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PlBkKHQscil9KTtmdW5jdGlvbiBldCh0KXtyZXR1cm4gbmV3IEtyKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6QXJyYXkuaXNBcnJheSh0Py5pbnB1dCk/a3IodD8uaW5wdXQpOnQ/LmlucHV0Pz93KE4oKSksb3V0cHV0OnQ/Lm91dHB1dD8/TigpfSl9Y29uc3QgZ3Q9ZCgiWm9kQ3VzdG9tIiwodCxuKT0+e3lsLmluaXQodCxuKSx6LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+amQodCxyKX0pO2Z1bmN0aW9uIFVhKHQpe2NvbnN0IG49bmV3IEYoe2NoZWNrOiJjdXN0b20ifSk7cmV0dXJuIG4uX3pvZC5jaGVjaz10LG59ZnVuY3Rpb24gQnIodCxuKXtyZXR1cm4gaWQoZ3QsdD8/KCgpPT4hMCksbil9ZnVuY3Rpb24gV3IodCxuPXt9KXtyZXR1cm4gb2QoZ3QsdCxuKX1mdW5jdGlvbiBHcih0LG4pe3JldHVybiBhZCh0LG4pfWNvbnN0IGphPWNkLFBhPXVkO2Z1bmN0aW9uIE9hKHQsbj17fSl7Y29uc3Qgcj1uZXcgZ3Qoe3R5cGU6ImN1c3RvbSIsY2hlY2s6ImN1c3RvbSIsZm46bz0+byBpbnN0YW5jZW9mIHQsYWJvcnQ6ITAsLi4uaChuKX0pO3JldHVybiByLl96b2QuYmFnLkNsYXNzPXQsci5fem9kLmNoZWNrPW89PntvLnZhbHVlIGluc3RhbmNlb2YgdHx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDp0Lm5hbWUsaW5wdXQ6by52YWx1ZSxpbnN0OnIscGF0aDpbLi4uci5fem9kLmRlZi5wYXRoPz9bXV19KX0scn1jb25zdCBEYT0oLi4udCk9PmxkKHtDb2RlYzpmdCxCb29sZWFuOmN0LFN0cmluZzpvdH0sLi4udCk7ZnVuY3Rpb24gTmEodCl7Y29uc3Qgbj1IcigoKT0+VShbcCh0KSx4KCksRSgpLHZuKCksdyhuKSxQKHAoKSxuKV0pKTtyZXR1cm4gbn1mdW5jdGlvbiBrbih0LG4pe3JldHVybiBuZXcgTHIoe3R5cGU6InBpcGUiLGluOiRuKHQpLG91dDpufSl9Y29uc3QgWWc9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLFpvZEFueTpwcixab2RBcnJheTpocixab2RCYXNlNjQ6ZG4sWm9kQmFzZTY0VVJMOm1uLFpvZEJpZ0ludDp1dCxab2RCaWdJbnRGb3JtYXQ6Z24sWm9kQm9vbGVhbjpjdCxab2RDSURSdjQ6dW4sWm9kQ0lEUnY2OmxuLFpvZENVSUQ6dG4sWm9kQ1VJRDI6bm4sWm9kQ2F0Y2g6UnIsWm9kQ29kZWM6ZnQsWm9kQ3VzdG9tOmd0LFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDpDZSxab2REYXRlOmhuLFpvZERlZmF1bHQ6UHIsWm9kRGlzY3JpbWluYXRlZFVuaW9uOiRyLFpvZEUxNjQ6cG4sWm9kRW1haWw6WXQsWm9kRW1vamk6UXQsWm9kRW51bTpFZSxab2RFeGFjdE9wdGlvbmFsOlRyLFpvZEZpbGU6eHIsWm9kRnVuY3Rpb246S3IsWm9kR1VJRDpYZSxab2RJUHY0OnNuLFpvZElQdjY6Y24sWm9kSW50ZXJzZWN0aW9uOmJyLFpvZEpXVDpmbixab2RLU1VJRDphbixab2RMYXp5OkpyLFpvZExpdGVyYWw6SXIsWm9kTUFDOnVyLFpvZE1hcDpTcixab2ROYU46QXIsWm9kTmFub0lEOmVuLFpvZE5ldmVyOmdyLFpvZE5vbk9wdGlvbmFsOnluLFpvZE51bGw6bXIsWm9kTnVsbGFibGU6anIsWm9kTnVtYmVyOnN0LFpvZE51bWJlckZvcm1hdDpJZSxab2RPYmplY3Q6bHQsWm9kT3B0aW9uYWw6Ym4sWm9kUGlwZTpwdCxab2RQcmVmYXVsdDpEcixab2RQcmVwcm9jZXNzOkxyLFpvZFByb21pc2U6VnIsWm9kUmVhZG9ubHk6TXIsWm9kUmVjb3JkOk5lLFpvZFNldDp3cixab2RTdHJpbmc6b3QsWm9kU3RyaW5nRm9ybWF0OkMsWm9kU3VjY2Vzczpacixab2RTeW1ib2w6bHIsWm9kVGVtcGxhdGVMaXRlcmFsOkZyLFpvZFRyYW5zZm9ybTp6cixab2RUdXBsZTp5cixab2RUeXBlOnosWm9kVUxJRDpybixab2RVUkw6YXQsWm9kVVVJRDp2ZSxab2RVbmRlZmluZWQ6ZHIsWm9kVW5pb246ZHQsWm9kVW5rbm93bjpmcixab2RWb2lkOnZyLFpvZFhJRDpvbixab2RYb3I6X3IsX1pvZFN0cmluZzpYdCxfZGVmYXVsdDpPcixfZnVuY3Rpb246ZXQsYW55OmxhLGFycmF5OncsYmFzZTY0OkJvLGJhc2U2NHVybDpXbyxiaWdpbnQ6YWEsYm9vbGVhbjpFLGNhdGNoOkNyLGNoZWNrOlVhLGNpZHJ2NDpWbyxjaWRydjY6S28sY29kZWM6SWEsY3VpZDpDbyxjdWlkMjpBbyxjdXN0b206QnIsZGF0ZTptYSxkZXNjcmliZTpqYSxkaXNjcmltaW5hdGVkVW5pb246X24sZTE2NDpHbyxlbWFpbDpUbyxlbW9qaTpabyxlbnVtOlksZXhhY3RPcHRpb25hbDpVcixmaWxlOnlhLGZsb2F0MzI6bmEsZmxvYXQ2NDpyYSxmdW5jdGlvbjpldCxndWlkOlVvLGhhc2g6dGEsaGV4OmVhLGhvc3RuYW1lOlFvLGh0dHBVcmw6RW8saW5zdGFuY2VvZjpPYSxpbnQ6U3QsaW50MzI6aWEsaW50NjQ6c2EsaW50ZXJzZWN0aW9uOm10LGludmVydENvZGVjOnhhLGlwdjQ6Rm8saXB2NjpIbyxqc29uOk5hLGp3dDpYbyxrZXlvZjpwYSxrc3VpZDpxbyxsYXp5OkhyLGxpdGVyYWw6bSxsb29zZU9iamVjdDpYLGxvb3NlUmVjb3JkOmhhLG1hYzpKbyxtYXA6X2EsbWV0YTpQYSxuYW46d2EsbmFub2lkOlJvLG5hdGl2ZUVudW06YmEsbmV2ZXI6RGUsbm9ub3B0aW9uYWw6RXIsbnVsbDp2bixudWxsYWJsZTpRZSxudWxsaXNoOmthLG51bWJlcjp4LG9iamVjdDpmLG9wdGlvbmFsOk0scGFydGlhbFJlY29yZDp2YSxwaXBlOnd0LHByZWZhdWx0Ok5yLHByZXByb2Nlc3M6a24scHJvbWlzZTpUYSxyZWFkb25seTpxcixyZWNvcmQ6UCxyZWZpbmU6V3Isc2V0OiRhLHN0cmljdE9iamVjdDpmYSxzdHJpbmc6cCxzdHJpbmdGb3JtYXQ6WW8sc3RyaW5nYm9vbDpEYSxzdWNjZXNzOlNhLHN1cGVyUmVmaW5lOkdyLHN5bWJvbDp1YSx0ZW1wbGF0ZUxpdGVyYWw6emEsdHJhbnNmb3JtOiRuLHR1cGxlOmtyLHVpbnQzMjpvYSx1aW50NjQ6Y2EsdWxpZDpMbyx1bmRlZmluZWQ6WWUsdW5pb246VSx1bmtub3duOk4sdXJsOk5vLHV1aWQ6am8sdXVpZHY0OlBvLHV1aWR2NjpPbyx1dWlkdjc6RG8sdm9pZDpkYSx4aWQ6TW8seG9yOmdhfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLG5tPXtpbnZhbGlkX3R5cGU6ImludmFsaWRfdHlwZSIsdG9vX2JpZzoidG9vX2JpZyIsdG9vX3NtYWxsOiJ0b29fc21hbGwiLGludmFsaWRfZm9ybWF0OiJpbnZhbGlkX2Zvcm1hdCIsbm90X211bHRpcGxlX29mOiJub3RfbXVsdGlwbGVfb2YiLHVucmVjb2duaXplZF9rZXlzOiJ1bnJlY29nbml6ZWRfa2V5cyIsaW52YWxpZF91bmlvbjoiaW52YWxpZF91bmlvbiIsaW52YWxpZF9rZXk6ImludmFsaWRfa2V5IixpbnZhbGlkX2VsZW1lbnQ6ImludmFsaWRfZWxlbWVudCIsaW52YWxpZF92YWx1ZToiaW52YWxpZF92YWx1ZSIsY3VzdG9tOiJjdXN0b20ifTtmdW5jdGlvbiBybSh0KXtLKHtjdXN0b21FcnJvcjp0fSl9ZnVuY3Rpb24gaW0oKXtyZXR1cm4gSygpLmN1c3RvbUVycm9yfXZhciBBbjtBbnx8KEFuPXt9KTtjb25zdCBiPXsuLi5ZZywuLi5YZyxpc286Z299LFFnPW5ldyBTZXQoWyIkc2NoZW1hIiwiJHJlZiIsIiRkZWZzIiwiZGVmaW5pdGlvbnMiLCIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciIsInR5cGUiLCJlbnVtIiwiY29uc3QiLCJhbnlPZiIsIm9uZU9mIiwiYWxsT2YiLCJub3QiLCJwcm9wZXJ0aWVzIiwicmVxdWlyZWQiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsInBhdHRlcm5Qcm9wZXJ0aWVzIiwicHJvcGVydHlOYW1lcyIsIm1pblByb3BlcnRpZXMiLCJtYXhQcm9wZXJ0aWVzIiwiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsIm1pbkl0ZW1zIiwibWF4SXRlbXMiLCJ1bmlxdWVJdGVtcyIsImNvbnRhaW5zIiwibWluQ29udGFpbnMiLCJtYXhDb250YWlucyIsIm1pbkxlbmd0aCIsIm1heExlbmd0aCIsInBhdHRlcm4iLCJmb3JtYXQiLCJtaW5pbXVtIiwibWF4aW11bSIsImV4Y2x1c2l2ZU1pbmltdW0iLCJleGNsdXNpdmVNYXhpbXVtIiwibXVsdGlwbGVPZiIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdCIsImNvbnRlbnRFbmNvZGluZyIsImNvbnRlbnRNZWRpYVR5cGUiLCJjb250ZW50U2NoZW1hIiwidW5ldmFsdWF0ZWRJdGVtcyIsInVuZXZhbHVhdGVkUHJvcGVydGllcyIsImlmIiwidGhlbiIsImVsc2UiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW50UmVxdWlyZWQiLCJudWxsYWJsZSIsInJlYWRPbmx5Il0pO2Z1bmN0aW9uIGV2KHQsbil7Y29uc3Qgcj10LiRzY2hlbWE7cmV0dXJuIHI9PT0iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiPyJkcmFmdC0yMDIwLTEyIjpyPT09Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI/ImRyYWZ0LTciOnI9PT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIj8iZHJhZnQtNCI6bj8/ImRyYWZ0LTIwMjAtMTIifWZ1bmN0aW9uIHR2KHQsbil7aWYoIXQuc3RhcnRzV2l0aCgiIyIpKXRocm93IG5ldyBFcnJvcigiRXh0ZXJuYWwgJHJlZiBpcyBub3Qgc3VwcG9ydGVkLCBvbmx5IGxvY2FsIHJlZnMgKCMvLi4uKSBhcmUgYWxsb3dlZCIpO2NvbnN0IHI9dC5zbGljZSgxKS5zcGxpdCgiLyIpLmZpbHRlcihCb29sZWFuKTtpZihyLmxlbmd0aD09PTApcmV0dXJuIG4ucm9vdFNjaGVtYTtjb25zdCBvPW4udmVyc2lvbj09PSJkcmFmdC0yMDIwLTEyIj8iJGRlZnMiOiJkZWZpbml0aW9ucyI7aWYoclswXT09PW8pe2NvbnN0IGU9clsxXTtpZighZXx8IW4uZGVmc1tlXSl0aHJvdyBuZXcgRXJyb3IoYFJlZmVyZW5jZSBub3QgZm91bmQ6ICR7dH1gKTtyZXR1cm4gbi5kZWZzW2VdfXRocm93IG5ldyBFcnJvcihgUmVmZXJlbmNlIG5vdCBmb3VuZDogJHt0fWApfWZ1bmN0aW9uIG9tKHQsbil7aWYodC5ub3QhPT12b2lkIDApe2lmKHR5cGVvZiB0Lm5vdD09Im9iamVjdCImJk9iamVjdC5rZXlzKHQubm90KS5sZW5ndGg9PT0wKXJldHVybiBiLm5ldmVyKCk7dGhyb3cgbmV3IEVycm9yKCJub3QgaXMgbm90IHN1cHBvcnRlZCBpbiBab2QgKGV4Y2VwdCB7IG5vdDoge30gfSBmb3IgbmV2ZXIpIil9aWYodC51bmV2YWx1YXRlZEl0ZW1zIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigidW5ldmFsdWF0ZWRJdGVtcyBpcyBub3Qgc3VwcG9ydGVkIik7aWYodC51bmV2YWx1YXRlZFByb3BlcnRpZXMhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJ1bmV2YWx1YXRlZFByb3BlcnRpZXMgaXMgbm90IHN1cHBvcnRlZCIpO2lmKHQuaWYhPT12b2lkIDB8fHQudGhlbiE9PXZvaWQgMHx8dC5lbHNlIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ29uZGl0aW9uYWwgc2NoZW1hcyAoaWYvdGhlbi9lbHNlKSBhcmUgbm90IHN1cHBvcnRlZCIpO2lmKHQuZGVwZW5kZW50U2NoZW1hcyE9PXZvaWQgMHx8dC5kZXBlbmRlbnRSZXF1aXJlZCE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoImRlcGVuZGVudFNjaGVtYXMgYW5kIGRlcGVuZGVudFJlcXVpcmVkIGFyZSBub3Qgc3VwcG9ydGVkIik7aWYodC4kcmVmKXtjb25zdCBlPXQuJHJlZjtpZihuLnJlZnMuaGFzKGUpKXJldHVybiBuLnJlZnMuZ2V0KGUpO2lmKG4ucHJvY2Vzc2luZy5oYXMoZSkpcmV0dXJuIGIubGF6eSgoKT0+e2lmKCFuLnJlZnMuaGFzKGUpKXRocm93IG5ldyBFcnJvcihgQ2lyY3VsYXIgcmVmZXJlbmNlIG5vdCByZXNvbHZlZDogJHtlfWApO3JldHVybiBuLnJlZnMuZ2V0KGUpfSk7bi5wcm9jZXNzaW5nLmFkZChlKTtjb25zdCBpPXR2KGUsbiksYT10ZShpLG4pO3JldHVybiBuLnJlZnMuc2V0KGUsYSksbi5wcm9jZXNzaW5nLmRlbGV0ZShlKSxhfWlmKHQuZW51bSE9PXZvaWQgMCl7Y29uc3QgZT10LmVudW07aWYobi52ZXJzaW9uPT09Im9wZW5hcGktMy4wIiYmdC5udWxsYWJsZT09PSEwJiZlLmxlbmd0aD09PTEmJmVbMF09PT1udWxsKXJldHVybiBiLm51bGwoKTtpZihlLmxlbmd0aD09PTApcmV0dXJuIGIubmV2ZXIoKTtpZihlLmxlbmd0aD09PTEpcmV0dXJuIGIubGl0ZXJhbChlWzBdKTtpZihlLmV2ZXJ5KGE9PnR5cGVvZiBhPT0ic3RyaW5nIikpcmV0dXJuIGIuZW51bShlKTtjb25zdCBpPWUubWFwKGE9PmIubGl0ZXJhbChhKSk7cmV0dXJuIGkubGVuZ3RoPDI/aVswXTpiLnVuaW9uKFtpWzBdLGlbMV0sLi4uaS5zbGljZSgyKV0pfWlmKHQuY29uc3QhPT12b2lkIDApcmV0dXJuIGIubGl0ZXJhbCh0LmNvbnN0KTtjb25zdCByPXQudHlwZTtpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBlPXIubWFwKGk9Pntjb25zdCBhPXsuLi50LHR5cGU6aX07cmV0dXJuIG9tKGEsbil9KTtyZXR1cm4gZS5sZW5ndGg9PT0wP2IubmV2ZXIoKTplLmxlbmd0aD09PTE/ZVswXTpiLnVuaW9uKGUpfWlmKCFyKXJldHVybiBiLmFueSgpO2xldCBvO3N3aXRjaChyKXtjYXNlInN0cmluZyI6e2xldCBlPWIuc3RyaW5nKCk7aWYodC5mb3JtYXQpe2NvbnN0IGk9dC5mb3JtYXQ7aT09PSJlbWFpbCI/ZT1lLmNoZWNrKGIuZW1haWwoKSk6aT09PSJ1cmkifHxpPT09InVyaS1yZWZlcmVuY2UiP2U9ZS5jaGVjayhiLnVybCgpKTppPT09InV1aWQifHxpPT09Imd1aWQiP2U9ZS5jaGVjayhiLnV1aWQoKSk6aT09PSJkYXRlLXRpbWUiP2U9ZS5jaGVjayhiLmlzby5kYXRldGltZSgpKTppPT09ImRhdGUiP2U9ZS5jaGVjayhiLmlzby5kYXRlKCkpOmk9PT0idGltZSI/ZT1lLmNoZWNrKGIuaXNvLnRpbWUoKSk6aT09PSJkdXJhdGlvbiI/ZT1lLmNoZWNrKGIuaXNvLmR1cmF0aW9uKCkpOmk9PT0iaXB2NCI/ZT1lLmNoZWNrKGIuaXB2NCgpKTppPT09ImlwdjYiP2U9ZS5jaGVjayhiLmlwdjYoKSk6aT09PSJtYWMiP2U9ZS5jaGVjayhiLm1hYygpKTppPT09ImNpZHIiP2U9ZS5jaGVjayhiLmNpZHJ2NCgpKTppPT09ImNpZHItdjYiP2U9ZS5jaGVjayhiLmNpZHJ2NigpKTppPT09ImJhc2U2NCI/ZT1lLmNoZWNrKGIuYmFzZTY0KCkpOmk9PT0iYmFzZTY0dXJsIj9lPWUuY2hlY2soYi5iYXNlNjR1cmwoKSk6aT09PSJlMTY0Ij9lPWUuY2hlY2soYi5lMTY0KCkpOmk9PT0iand0Ij9lPWUuY2hlY2soYi5qd3QoKSk6aT09PSJlbW9qaSI/ZT1lLmNoZWNrKGIuZW1vamkoKSk6aT09PSJuYW5vaWQiP2U9ZS5jaGVjayhiLm5hbm9pZCgpKTppPT09ImN1aWQiP2U9ZS5jaGVjayhiLmN1aWQoKSk6aT09PSJjdWlkMiI/ZT1lLmNoZWNrKGIuY3VpZDIoKSk6aT09PSJ1bGlkIj9lPWUuY2hlY2soYi51bGlkKCkpOmk9PT0ieGlkIj9lPWUuY2hlY2soYi54aWQoKSk6aT09PSJrc3VpZCImJihlPWUuY2hlY2soYi5rc3VpZCgpKSl9dHlwZW9mIHQubWluTGVuZ3RoPT0ibnVtYmVyIiYmKGU9ZS5taW4odC5taW5MZW5ndGgpKSx0eXBlb2YgdC5tYXhMZW5ndGg9PSJudW1iZXIiJiYoZT1lLm1heCh0Lm1heExlbmd0aCkpLHQucGF0dGVybiYmKGU9ZS5yZWdleChuZXcgUmVnRXhwKHQucGF0dGVybikpKSxvPWU7YnJlYWt9Y2FzZSJudW1iZXIiOmNhc2UiaW50ZWdlciI6e2xldCBlPXI9PT0iaW50ZWdlciI/Yi5udW1iZXIoKS5pbnQoKTpiLm51bWJlcigpO3R5cGVvZiB0Lm1pbmltdW09PSJudW1iZXIiJiYoZT1lLm1pbih0Lm1pbmltdW0pKSx0eXBlb2YgdC5tYXhpbXVtPT0ibnVtYmVyIiYmKGU9ZS5tYXgodC5tYXhpbXVtKSksdHlwZW9mIHQuZXhjbHVzaXZlTWluaW11bT09Im51bWJlciI/ZT1lLmd0KHQuZXhjbHVzaXZlTWluaW11bSk6dC5leGNsdXNpdmVNaW5pbXVtPT09ITAmJnR5cGVvZiB0Lm1pbmltdW09PSJudW1iZXIiJiYoZT1lLmd0KHQubWluaW11bSkpLHR5cGVvZiB0LmV4Y2x1c2l2ZU1heGltdW09PSJudW1iZXIiP2U9ZS5sdCh0LmV4Y2x1c2l2ZU1heGltdW0pOnQuZXhjbHVzaXZlTWF4aW11bT09PSEwJiZ0eXBlb2YgdC5tYXhpbXVtPT0ibnVtYmVyIiYmKGU9ZS5sdCh0Lm1heGltdW0pKSx0eXBlb2YgdC5tdWx0aXBsZU9mPT0ibnVtYmVyIiYmKGU9ZS5tdWx0aXBsZU9mKHQubXVsdGlwbGVPZikpLG89ZTticmVha31jYXNlImJvb2xlYW4iOntvPWIuYm9vbGVhbigpO2JyZWFrfWNhc2UibnVsbCI6e289Yi5udWxsKCk7YnJlYWt9Y2FzZSJvYmplY3QiOntjb25zdCBlPXt9LGk9dC5wcm9wZXJ0aWVzfHx7fSxhPW5ldyBTZXQodC5yZXF1aXJlZHx8W10pO2Zvcihjb25zdFtjLHVdb2YgT2JqZWN0LmVudHJpZXMoaSkpe2NvbnN0IGw9dGUodSxuKTtlW2NdPWEuaGFzKGMpP2w6bC5vcHRpb25hbCgpfWlmKHQucHJvcGVydHlOYW1lcyl7Y29uc3QgYz10ZSh0LnByb3BlcnR5TmFtZXMsbiksdT10LmFkZGl0aW9uYWxQcm9wZXJ0aWVzJiZ0eXBlb2YgdC5hZGRpdGlvbmFsUHJvcGVydGllcz09Im9iamVjdCI/dGUodC5hZGRpdGlvbmFsUHJvcGVydGllcyxuKTpiLmFueSgpO2lmKE9iamVjdC5rZXlzKGUpLmxlbmd0aD09PTApe289Yi5yZWNvcmQoYyx1KTticmVha31jb25zdCBsPWIub2JqZWN0KGUpLnBhc3N0aHJvdWdoKCksZz1iLmxvb3NlUmVjb3JkKGMsdSk7bz1iLmludGVyc2VjdGlvbihsLGcpO2JyZWFrfWlmKHQucGF0dGVyblByb3BlcnRpZXMpe2NvbnN0IGM9dC5wYXR0ZXJuUHJvcGVydGllcyx1PU9iamVjdC5rZXlzKGMpLGw9W107Zm9yKGNvbnN0IHYgb2YgdSl7Y29uc3QgXz10ZShjW3ZdLG4pLHk9Yi5zdHJpbmcoKS5yZWdleChuZXcgUmVnRXhwKHYpKTtsLnB1c2goYi5sb29zZVJlY29yZCh5LF8pKX1jb25zdCBnPVtdO2lmKE9iamVjdC5rZXlzKGUpLmxlbmd0aD4wJiZnLnB1c2goYi5vYmplY3QoZSkucGFzc3Rocm91Z2goKSksZy5wdXNoKC4uLmwpLGcubGVuZ3RoPT09MClvPWIub2JqZWN0KHt9KS5wYXNzdGhyb3VnaCgpO2Vsc2UgaWYoZy5sZW5ndGg9PT0xKW89Z1swXTtlbHNle2xldCB2PWIuaW50ZXJzZWN0aW9uKGdbMF0sZ1sxXSk7Zm9yKGxldCBfPTI7XzxnLmxlbmd0aDtfKyspdj1iLmludGVyc2VjdGlvbih2LGdbX10pO289dn1icmVha31jb25zdCBzPWIub2JqZWN0KGUpO3QuYWRkaXRpb25hbFByb3BlcnRpZXM9PT0hMT9vPXMuc3RyaWN0KCk6dHlwZW9mIHQuYWRkaXRpb25hbFByb3BlcnRpZXM9PSJvYmplY3QiP289cy5jYXRjaGFsbCh0ZSh0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzLG4pKTpvPXMucGFzc3Rocm91Z2goKTticmVha31jYXNlImFycmF5Ijp7Y29uc3QgZT10LnByZWZpeEl0ZW1zLGk9dC5pdGVtcztpZihlJiZBcnJheS5pc0FycmF5KGUpKXtjb25zdCBhPWUubWFwKGM9PnRlKGMsbikpLHM9aSYmdHlwZW9mIGk9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShpKT90ZShpLG4pOnZvaWQgMDtzP289Yi50dXBsZShhKS5yZXN0KHMpOm89Yi50dXBsZShhKSx0eXBlb2YgdC5taW5JdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soYi5taW5MZW5ndGgodC5taW5JdGVtcykpKSx0eXBlb2YgdC5tYXhJdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soYi5tYXhMZW5ndGgodC5tYXhJdGVtcykpKX1lbHNlIGlmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IGE9aS5tYXAoYz0+dGUoYyxuKSkscz10LmFkZGl0aW9uYWxJdGVtcyYmdHlwZW9mIHQuYWRkaXRpb25hbEl0ZW1zPT0ib2JqZWN0Ij90ZSh0LmFkZGl0aW9uYWxJdGVtcyxuKTp2b2lkIDA7cz9vPWIudHVwbGUoYSkucmVzdChzKTpvPWIudHVwbGUoYSksdHlwZW9mIHQubWluSXRlbXM9PSJudW1iZXIiJiYobz1vLmNoZWNrKGIubWluTGVuZ3RoKHQubWluSXRlbXMpKSksdHlwZW9mIHQubWF4SXRlbXM9PSJudW1iZXIiJiYobz1vLmNoZWNrKGIubWF4TGVuZ3RoKHQubWF4SXRlbXMpKSl9ZWxzZSBpZihpIT09dm9pZCAwKXtjb25zdCBhPXRlKGksbik7bGV0IHM9Yi5hcnJheShhKTt0eXBlb2YgdC5taW5JdGVtcz09Im51bWJlciImJihzPXMubWluKHQubWluSXRlbXMpKSx0eXBlb2YgdC5tYXhJdGVtcz09Im51bWJlciImJihzPXMubWF4KHQubWF4SXRlbXMpKSxvPXN9ZWxzZSBvPWIuYXJyYXkoYi5hbnkoKSk7YnJlYWt9ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHR5cGU6ICR7cn1gKX1yZXR1cm4gb31mdW5jdGlvbiB0ZSh0LG4pe2lmKHR5cGVvZiB0PT0iYm9vbGVhbiIpcmV0dXJuIHQ/Yi5hbnkoKTpiLm5ldmVyKCk7bGV0IHI9b20odCxuKTtjb25zdCBvPXQudHlwZXx8dC5lbnVtIT09dm9pZCAwfHx0LmNvbnN0IT09dm9pZCAwO2lmKHQuYW55T2YmJkFycmF5LmlzQXJyYXkodC5hbnlPZikpe2NvbnN0IHM9dC5hbnlPZi5tYXAodT0+dGUodSxuKSksYz1iLnVuaW9uKHMpO3I9bz9iLmludGVyc2VjdGlvbihyLGMpOmN9aWYodC5vbmVPZiYmQXJyYXkuaXNBcnJheSh0Lm9uZU9mKSl7Y29uc3Qgcz10Lm9uZU9mLm1hcCh1PT50ZSh1LG4pKSxjPWIueG9yKHMpO3I9bz9iLmludGVyc2VjdGlvbihyLGMpOmN9aWYodC5hbGxPZiYmQXJyYXkuaXNBcnJheSh0LmFsbE9mKSlpZih0LmFsbE9mLmxlbmd0aD09PTApcj1vP3I6Yi5hbnkoKTtlbHNle2xldCBzPW8/cjp0ZSh0LmFsbE9mWzBdLG4pO2NvbnN0IGM9bz8wOjE7Zm9yKGxldCB1PWM7dTx0LmFsbE9mLmxlbmd0aDt1Kyspcz1iLmludGVyc2VjdGlvbihzLHRlKHQuYWxsT2ZbdV0sbikpO3I9c310Lm51bGxhYmxlPT09ITAmJm4udmVyc2lvbj09PSJvcGVuYXBpLTMuMCImJihyPWIubnVsbGFibGUocikpLHQucmVhZE9ubHk9PT0hMCYmKHI9Yi5yZWFkb25seShyKSksdC5kZWZhdWx0IT09dm9pZCAwJiYocj1yLmRlZmF1bHQodC5kZWZhdWx0KSk7Y29uc3QgZT17fSxpPVsiJGlkIiwiaWQiLCIkY29tbWVudCIsIiRhbmNob3IiLCIkdm9jYWJ1bGFyeSIsIiRkeW5hbWljUmVmIiwiJGR5bmFtaWNBbmNob3IiXTtmb3IoY29uc3QgcyBvZiBpKXMgaW4gdCYmKGVbc109dFtzXSk7Y29uc3QgYT1bImNvbnRlbnRFbmNvZGluZyIsImNvbnRlbnRNZWRpYVR5cGUiLCJjb250ZW50U2NoZW1hIl07Zm9yKGNvbnN0IHMgb2YgYSlzIGluIHQmJihlW3NdPXRbc10pO2Zvcihjb25zdCBzIG9mIE9iamVjdC5rZXlzKHQpKVFnLmhhcyhzKXx8KGVbc109dFtzXSk7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmxlbmd0aD4wJiZuLnJlZ2lzdHJ5LmFkZChyLGUpLHQuZGVzY3JpcHRpb24mJihyPXIuZGVzY3JpYmUodC5kZXNjcmlwdGlvbikpLHJ9ZnVuY3Rpb24gYW0odCxuKXtpZih0eXBlb2YgdD09ImJvb2xlYW4iKXJldHVybiB0P2IuYW55KCk6Yi5uZXZlcigpO2xldCByO3RyeXtyPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodCkpfWNhdGNoe3Rocm93IG5ldyBFcnJvcigiZnJvbUpTT05TY2hlbWEgaW5wdXQgaXMgbm90IHZhbGlkIEpTT04gKHBvc3NpYmx5IGN5Y2xpYyk7IHVzZSAkZGVmcy8kcmVmIGZvciByZWN1cnNpdmUgc2NoZW1hcyIpfWNvbnN0IG89ZXYocixuPy5kZWZhdWx0VGFyZ2V0KSxlPXIuJGRlZnN8fHIuZGVmaW5pdGlvbnN8fHt9LGk9e3ZlcnNpb246byxkZWZzOmUscmVmczpuZXcgTWFwLHByb2Nlc3Npbmc6bmV3IFNldCxyb290U2NoZW1hOnIscmVnaXN0cnk6bj8ucmVnaXN0cnk/P2FlfTtyZXR1cm4gdGUocixpKX1mdW5jdGlvbiBudih0KXtyZXR1cm4gemwob3QsdCl9ZnVuY3Rpb24gcnYodCl7cmV0dXJuIE5sKHN0LHQpfWZ1bmN0aW9uIGl2KHQpe3JldHVybiBNbChjdCx0KX1mdW5jdGlvbiBvdih0KXtyZXR1cm4gRmwodXQsdCl9ZnVuY3Rpb24gYXYodCl7cmV0dXJuIGVkKGhuLHQpfWNvbnN0IHNtPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxiaWdpbnQ6b3YsYm9vbGVhbjppdixkYXRlOmF2LG51bWJlcjpydixzdHJpbmc6bnZ9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSk7SyhrbCgpKTtjb25zdCBOcz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsJGJyYW5kOmxpLCRpbnB1dDpNaSwkb3V0cHV0OkxpLE5FVkVSOnVpLFRpbWVQcmVjaXNpb246Y28sWm9kQW55OnByLFpvZEFycmF5OmhyLFpvZEJhc2U2NDpkbixab2RCYXNlNjRVUkw6bW4sWm9kQmlnSW50OnV0LFpvZEJpZ0ludEZvcm1hdDpnbixab2RCb29sZWFuOmN0LFpvZENJRFJ2NDp1bixab2RDSURSdjY6bG4sWm9kQ1VJRDp0bixab2RDVUlEMjpubixab2RDYXRjaDpScixab2RDb2RlYzpmdCxab2RDdXN0b206Z3QsWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OkNlLFpvZERhdGU6aG4sWm9kRGVmYXVsdDpQcixab2REaXNjcmltaW5hdGVkVW5pb246JHIsWm9kRTE2NDpwbixab2RFbWFpbDpZdCxab2RFbW9qaTpRdCxab2RFbnVtOkVlLFpvZEVycm9yOnRtLFpvZEV4YWN0T3B0aW9uYWw6VHIsWm9kRmlsZTp4cixnZXQgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kKCl7cmV0dXJuIEFufSxab2RGdW5jdGlvbjpLcixab2RHVUlEOlhlLFpvZElQdjQ6c24sWm9kSVB2Njpjbixab2RJU09EYXRlOmFyLFpvZElTT0RhdGVUaW1lOm9yLFpvZElTT0R1cmF0aW9uOmNyLFpvZElTT1RpbWU6c3IsWm9kSW50ZXJzZWN0aW9uOmJyLFpvZElzc3VlQ29kZTpubSxab2RKV1Q6Zm4sWm9kS1NVSUQ6YW4sWm9kTGF6eTpKcixab2RMaXRlcmFsOklyLFpvZE1BQzp1cixab2RNYXA6U3IsWm9kTmFOOkFyLFpvZE5hbm9JRDplbixab2ROZXZlcjpncixab2ROb25PcHRpb25hbDp5bixab2ROdWxsOm1yLFpvZE51bGxhYmxlOmpyLFpvZE51bWJlcjpzdCxab2ROdW1iZXJGb3JtYXQ6SWUsWm9kT2JqZWN0Omx0LFpvZE9wdGlvbmFsOmJuLFpvZFBpcGU6cHQsWm9kUHJlZmF1bHQ6RHIsWm9kUHJlcHJvY2VzczpMcixab2RQcm9taXNlOlZyLFpvZFJlYWRvbmx5Ok1yLFpvZFJlYWxFcnJvcjpvZSxab2RSZWNvcmQ6TmUsWm9kU2V0OndyLFpvZFN0cmluZzpvdCxab2RTdHJpbmdGb3JtYXQ6Qyxab2RTdWNjZXNzOlpyLFpvZFN5bWJvbDpscixab2RUZW1wbGF0ZUxpdGVyYWw6RnIsWm9kVHJhbnNmb3JtOnpyLFpvZFR1cGxlOnlyLFpvZFR5cGU6eixab2RVTElEOnJuLFpvZFVSTDphdCxab2RVVUlEOnZlLFpvZFVuZGVmaW5lZDpkcixab2RVbmlvbjpkdCxab2RVbmtub3duOmZyLFpvZFZvaWQ6dnIsWm9kWElEOm9uLFpvZFhvcjpfcixfWm9kU3RyaW5nOlh0LF9kZWZhdWx0Ok9yLF9mdW5jdGlvbjpldCxhbnk6bGEsYXJyYXk6dyxiYXNlNjQ6Qm8sYmFzZTY0dXJsOldvLGJpZ2ludDphYSxib29sZWFuOkUsY2F0Y2g6Q3IsY2hlY2s6VWEsY2lkcnY0OlZvLGNpZHJ2NjpLbyxjbG9uZTp1ZSxjb2RlYzpJYSxjb2VyY2U6c20sY29uZmlnOkssY29yZTpXZCxjdWlkOkNvLGN1aWQyOkFvLGN1c3RvbTpCcixkYXRlOm1hLGRlY29kZTp5byxkZWNvZGVBc3luYzpTbyxkZXNjcmliZTpqYSxkaXNjcmltaW5hdGVkVW5pb246X24sZTE2NDpHbyxlbWFpbDpUbyxlbW9qaTpabyxlbmNvZGU6Ym8sZW5jb2RlQXN5bmM6a28sZW5kc1dpdGg6cXQsZW51bTpZLGV4YWN0T3B0aW9uYWw6VXIsZmlsZTp5YSxmbGF0dGVuRXJyb3I6Qm4sZmxvYXQzMjpuYSxmbG9hdDY0OnJhLGZvcm1hdEVycm9yOlduLGZyb21KU09OU2NoZW1hOmFtLGZ1bmN0aW9uOmV0LGdldEVycm9yTWFwOmltLGdsb2JhbFJlZ2lzdHJ5OmFlLGd0OnllLGd0ZTpyZSxndWlkOlVvLGhhc2g6dGEsaGV4OmVhLGhvc3RuYW1lOlFvLGh0dHBVcmw6RW8saW5jbHVkZXM6THQsaW5zdGFuY2VvZjpPYSxpbnQ6U3QsaW50MzI6aWEsaW50NjQ6c2EsaW50ZXJzZWN0aW9uOm10LGludmVydENvZGVjOnhhLGlwdjQ6Rm8saXB2NjpIbyxpc286Z28sanNvbjpOYSxqd3Q6WG8sa2V5b2Y6cGEsa3N1aWQ6cW8sbGF6eTpIcixsZW5ndGg6aXQsbGl0ZXJhbDptLGxvY2FsZXM6QWksbG9vc2VPYmplY3Q6WCxsb29zZVJlY29yZDpoYSxsb3dlcmNhc2U6Q3QsbHQ6YmUsbHRlOnNlLG1hYzpKbyxtYXA6X2EsbWF4TGVuZ3RoOnJ0LG1heFNpemU6UmUsbWV0YTpQYSxtaW1lOkZ0LG1pbkxlbmd0aDpTZSxtaW5TaXplOmtlLG11bHRpcGxlT2Y6T2UsbmFuOndhLG5hbm9pZDpSbyxuYXRpdmVFbnVtOmJhLG5lZ2F0aXZlOnRyLG5ldmVyOkRlLG5vbm5lZ2F0aXZlOnJyLG5vbm9wdGlvbmFsOkVyLG5vbnBvc2l0aXZlOm5yLG5vcm1hbGl6ZTpKdCxudWxsOnZuLG51bGxhYmxlOlFlLG51bGxpc2g6a2EsbnVtYmVyOngsb2JqZWN0OmYsb3B0aW9uYWw6TSxvdmVyd3JpdGU6X2UscGFyc2U6dm8scGFyc2VBc3luYzpobyxwYXJ0aWFsUmVjb3JkOnZhLHBpcGU6d3QscG9zaXRpdmU6ZXIscHJlZmF1bHQ6TnIscHJlcHJvY2VzczprbixwcmV0dGlmeUVycm9yOnZpLHByb21pc2U6VGEscHJvcGVydHk6aXIscmVhZG9ubHk6cXIscmVjb3JkOlAscmVmaW5lOldyLHJlZ2V4OlJ0LHJlZ2V4ZXM6R24scmVnaXN0cnk6WW4sc2FmZURlY29kZTpJbyxzYWZlRGVjb2RlQXN5bmM6em8sc2FmZUVuY29kZTp3byxzYWZlRW5jb2RlQXN5bmM6eG8sc2FmZVBhcnNlOl9vLHNhZmVQYXJzZUFzeW5jOiRvLHNldDokYSxzZXRFcnJvck1hcDpybSxzaXplOm50LHNsdWdpZnk6QnQsc3RhcnRzV2l0aDpNdCxzdHJpY3RPYmplY3Q6ZmEsc3RyaW5nOnAsc3RyaW5nRm9ybWF0OllvLHN0cmluZ2Jvb2w6RGEsc3VjY2VzczpTYSxzdXBlclJlZmluZTpHcixzeW1ib2w6dWEsdGVtcGxhdGVMaXRlcmFsOnphLHRvSlNPTlNjaGVtYTptbyx0b0xvd2VyQ2FzZTpWdCx0b1VwcGVyQ2FzZTpLdCx0cmFuc2Zvcm06JG4sdHJlZWlmeUVycm9yOmdpLHRyaW06SHQsdHVwbGU6a3IsdWludDMyOm9hLHVpbnQ2NDpjYSx1bGlkOkxvLHVuZGVmaW5lZDpZZSx1bmlvbjpVLHVua25vd246Tix1cHBlcmNhc2U6QXQsdXJsOk5vLHV0aWw6cGksdXVpZDpqbyx1dWlkdjQ6UG8sdXVpZHY2Ok9vLHV1aWR2NzpEbyx2b2lkOmRhLHhpZDpNbyx4b3I6Z2F9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksc3Y9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCRicmFuZDpsaSwkaW5wdXQ6TWksJG91dHB1dDpMaSxORVZFUjp1aSxUaW1lUHJlY2lzaW9uOmNvLFpvZEFueTpwcixab2RBcnJheTpocixab2RCYXNlNjQ6ZG4sWm9kQmFzZTY0VVJMOm1uLFpvZEJpZ0ludDp1dCxab2RCaWdJbnRGb3JtYXQ6Z24sWm9kQm9vbGVhbjpjdCxab2RDSURSdjQ6dW4sWm9kQ0lEUnY2OmxuLFpvZENVSUQ6dG4sWm9kQ1VJRDI6bm4sWm9kQ2F0Y2g6UnIsWm9kQ29kZWM6ZnQsWm9kQ3VzdG9tOmd0LFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDpDZSxab2REYXRlOmhuLFpvZERlZmF1bHQ6UHIsWm9kRGlzY3JpbWluYXRlZFVuaW9uOiRyLFpvZEUxNjQ6cG4sWm9kRW1haWw6WXQsWm9kRW1vamk6UXQsWm9kRW51bTpFZSxab2RFcnJvcjp0bSxab2RFeGFjdE9wdGlvbmFsOlRyLFpvZEZpbGU6eHIsZ2V0IFpvZEZpcnN0UGFydHlUeXBlS2luZCgpe3JldHVybiBBbn0sWm9kRnVuY3Rpb246S3IsWm9kR1VJRDpYZSxab2RJUHY0OnNuLFpvZElQdjY6Y24sWm9kSVNPRGF0ZTphcixab2RJU09EYXRlVGltZTpvcixab2RJU09EdXJhdGlvbjpjcixab2RJU09UaW1lOnNyLFpvZEludGVyc2VjdGlvbjpicixab2RJc3N1ZUNvZGU6bm0sWm9kSldUOmZuLFpvZEtTVUlEOmFuLFpvZExhenk6SnIsWm9kTGl0ZXJhbDpJcixab2RNQUM6dXIsWm9kTWFwOlNyLFpvZE5hTjpBcixab2ROYW5vSUQ6ZW4sWm9kTmV2ZXI6Z3IsWm9kTm9uT3B0aW9uYWw6eW4sWm9kTnVsbDptcixab2ROdWxsYWJsZTpqcixab2ROdW1iZXI6c3QsWm9kTnVtYmVyRm9ybWF0OkllLFpvZE9iamVjdDpsdCxab2RPcHRpb25hbDpibixab2RQaXBlOnB0LFpvZFByZWZhdWx0OkRyLFpvZFByZXByb2Nlc3M6THIsWm9kUHJvbWlzZTpWcixab2RSZWFkb25seTpNcixab2RSZWFsRXJyb3I6b2UsWm9kUmVjb3JkOk5lLFpvZFNldDp3cixab2RTdHJpbmc6b3QsWm9kU3RyaW5nRm9ybWF0OkMsWm9kU3VjY2Vzczpacixab2RTeW1ib2w6bHIsWm9kVGVtcGxhdGVMaXRlcmFsOkZyLFpvZFRyYW5zZm9ybTp6cixab2RUdXBsZTp5cixab2RUeXBlOnosWm9kVUxJRDpybixab2RVUkw6YXQsWm9kVVVJRDp2ZSxab2RVbmRlZmluZWQ6ZHIsWm9kVW5pb246ZHQsWm9kVW5rbm93bjpmcixab2RWb2lkOnZyLFpvZFhJRDpvbixab2RYb3I6X3IsX1pvZFN0cmluZzpYdCxfZGVmYXVsdDpPcixfZnVuY3Rpb246ZXQsYW55OmxhLGFycmF5OncsYmFzZTY0OkJvLGJhc2U2NHVybDpXbyxiaWdpbnQ6YWEsYm9vbGVhbjpFLGNhdGNoOkNyLGNoZWNrOlVhLGNpZHJ2NDpWbyxjaWRydjY6S28sY2xvbmU6dWUsY29kZWM6SWEsY29lcmNlOnNtLGNvbmZpZzpLLGNvcmU6V2QsY3VpZDpDbyxjdWlkMjpBbyxjdXN0b206QnIsZGF0ZTptYSxkZWNvZGU6eW8sZGVjb2RlQXN5bmM6U28sZGVmYXVsdDpOcyxkZXNjcmliZTpqYSxkaXNjcmltaW5hdGVkVW5pb246X24sZTE2NDpHbyxlbWFpbDpUbyxlbW9qaTpabyxlbmNvZGU6Ym8sZW5jb2RlQXN5bmM6a28sZW5kc1dpdGg6cXQsZW51bTpZLGV4YWN0T3B0aW9uYWw6VXIsZmlsZTp5YSxmbGF0dGVuRXJyb3I6Qm4sZmxvYXQzMjpuYSxmbG9hdDY0OnJhLGZvcm1hdEVycm9yOlduLGZyb21KU09OU2NoZW1hOmFtLGZ1bmN0aW9uOmV0LGdldEVycm9yTWFwOmltLGdsb2JhbFJlZ2lzdHJ5OmFlLGd0OnllLGd0ZTpyZSxndWlkOlVvLGhhc2g6dGEsaGV4OmVhLGhvc3RuYW1lOlFvLGh0dHBVcmw6RW8saW5jbHVkZXM6THQsaW5zdGFuY2VvZjpPYSxpbnQ6U3QsaW50MzI6aWEsaW50NjQ6c2EsaW50ZXJzZWN0aW9uOm10LGludmVydENvZGVjOnhhLGlwdjQ6Rm8saXB2NjpIbyxpc286Z28sanNvbjpOYSxqd3Q6WG8sa2V5b2Y6cGEsa3N1aWQ6cW8sbGF6eTpIcixsZW5ndGg6aXQsbGl0ZXJhbDptLGxvY2FsZXM6QWksbG9vc2VPYmplY3Q6WCxsb29zZVJlY29yZDpoYSxsb3dlcmNhc2U6Q3QsbHQ6YmUsbHRlOnNlLG1hYzpKbyxtYXA6X2EsbWF4TGVuZ3RoOnJ0LG1heFNpemU6UmUsbWV0YTpQYSxtaW1lOkZ0LG1pbkxlbmd0aDpTZSxtaW5TaXplOmtlLG11bHRpcGxlT2Y6T2UsbmFuOndhLG5hbm9pZDpSbyxuYXRpdmVFbnVtOmJhLG5lZ2F0aXZlOnRyLG5ldmVyOkRlLG5vbm5lZ2F0aXZlOnJyLG5vbm9wdGlvbmFsOkVyLG5vbnBvc2l0aXZlOm5yLG5vcm1hbGl6ZTpKdCxudWxsOnZuLG51bGxhYmxlOlFlLG51bGxpc2g6a2EsbnVtYmVyOngsb2JqZWN0OmYsb3B0aW9uYWw6TSxvdmVyd3JpdGU6X2UscGFyc2U6dm8scGFyc2VBc3luYzpobyxwYXJ0aWFsUmVjb3JkOnZhLHBpcGU6d3QscG9zaXRpdmU6ZXIscHJlZmF1bHQ6TnIscHJlcHJvY2VzczprbixwcmV0dGlmeUVycm9yOnZpLHByb21pc2U6VGEscHJvcGVydHk6aXIscmVhZG9ubHk6cXIscmVjb3JkOlAscmVmaW5lOldyLHJlZ2V4OlJ0LHJlZ2V4ZXM6R24scmVnaXN0cnk6WW4sc2FmZURlY29kZTpJbyxzYWZlRGVjb2RlQXN5bmM6em8sc2FmZUVuY29kZTp3byxzYWZlRW5jb2RlQXN5bmM6eG8sc2FmZVBhcnNlOl9vLHNhZmVQYXJzZUFzeW5jOiRvLHNldDokYSxzZXRFcnJvck1hcDpybSxzaXplOm50LHNsdWdpZnk6QnQsc3RhcnRzV2l0aDpNdCxzdHJpY3RPYmplY3Q6ZmEsc3RyaW5nOnAsc3RyaW5nRm9ybWF0OllvLHN0cmluZ2Jvb2w6RGEsc3VjY2VzczpTYSxzdXBlclJlZmluZTpHcixzeW1ib2w6dWEsdGVtcGxhdGVMaXRlcmFsOnphLHRvSlNPTlNjaGVtYTptbyx0b0xvd2VyQ2FzZTpWdCx0b1VwcGVyQ2FzZTpLdCx0cmFuc2Zvcm06JG4sdHJlZWlmeUVycm9yOmdpLHRyaW06SHQsdHVwbGU6a3IsdWludDMyOm9hLHVpbnQ2NDpjYSx1bGlkOkxvLHVuZGVmaW5lZDpZZSx1bmlvbjpVLHVua25vd246Tix1cHBlcmNhc2U6QXQsdXJsOk5vLHV0aWw6cGksdXVpZDpqbyx1dWlkdjQ6UG8sdXVpZHY2Ok9vLHV1aWR2NzpEbyx2b2lkOmRhLHhpZDpNbyx4b3I6Z2EsejpOc30sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSx6ZT0iaW8ubW9kZWxjb250ZXh0cHJvdG9jb2wvcmVsYXRlZC10YXNrIixYcj0iMi4wIixWPUJyKHQ9PnQhPT1udWxsJiYodHlwZW9mIHQ9PSJvYmplY3QifHx0eXBlb2YgdD09ImZ1bmN0aW9uIikpLGNtPVUoW3AoKSx4KCkuaW50KCldKSx1bT1wKCk7WCh7dHRsOngoKS5vcHRpb25hbCgpLHBvbGxJbnRlcnZhbDp4KCkub3B0aW9uYWwoKX0pO2NvbnN0IGN2PWYoe3R0bDp4KCkub3B0aW9uYWwoKX0pLHV2PWYoe3Rhc2tJZDpwKCl9KSxFYT1YKHtwcm9ncmVzc1Rva2VuOmNtLm9wdGlvbmFsKCksW3plXTp1di5vcHRpb25hbCgpfSksZGU9Zih7X21ldGE6RWEub3B0aW9uYWwoKX0pLFNuPWRlLmV4dGVuZCh7dGFzazpjdi5vcHRpb25hbCgpfSksbHY9dD0+U24uc2FmZVBhcnNlKHQpLnN1Y2Nlc3MsUT1mKHttZXRob2Q6cCgpLHBhcmFtczpkZS5sb29zZSgpLm9wdGlvbmFsKCl9KSxmZT1mKHtfbWV0YTpFYS5vcHRpb25hbCgpfSksZ2U9Zih7bWV0aG9kOnAoKSxwYXJhbXM6ZmUubG9vc2UoKS5vcHRpb25hbCgpfSksZWU9WCh7X21ldGE6RWEub3B0aW9uYWwoKX0pLHduPVUoW3AoKSx4KCkuaW50KCldKSxsbT1mKHtqc29ucnBjOm0oWHIpLGlkOnduLC4uLlEuc2hhcGV9KS5zdHJpY3QoKSxFcz10PT5sbS5zYWZlUGFyc2UodCkuc3VjY2VzcyxkbT1mKHtqc29ucnBjOm0oWHIpLC4uLmdlLnNoYXBlfSkuc3RyaWN0KCksZHY9dD0+ZG0uc2FmZVBhcnNlKHQpLnN1Y2Nlc3MsWmE9Zih7anNvbnJwYzptKFhyKSxpZDp3bixyZXN1bHQ6ZWV9KS5zdHJpY3QoKSxObj10PT5aYS5zYWZlUGFyc2UodCkuc3VjY2Vzczt2YXIgWjsoZnVuY3Rpb24odCl7dFt0LkNvbm5lY3Rpb25DbG9zZWQ9LTMyZTNdPSJDb25uZWN0aW9uQ2xvc2VkIix0W3QuUmVxdWVzdFRpbWVvdXQ9LTMyMDAxXT0iUmVxdWVzdFRpbWVvdXQiLHRbdC5QYXJzZUVycm9yPS0zMjcwMF09IlBhcnNlRXJyb3IiLHRbdC5JbnZhbGlkUmVxdWVzdD0tMzI2MDBdPSJJbnZhbGlkUmVxdWVzdCIsdFt0Lk1ldGhvZE5vdEZvdW5kPS0zMjYwMV09Ik1ldGhvZE5vdEZvdW5kIix0W3QuSW52YWxpZFBhcmFtcz0tMzI2MDJdPSJJbnZhbGlkUGFyYW1zIix0W3QuSW50ZXJuYWxFcnJvcj0tMzI2MDNdPSJJbnRlcm5hbEVycm9yIix0W3QuVXJsRWxpY2l0YXRpb25SZXF1aXJlZD0tMzIwNDJdPSJVcmxFbGljaXRhdGlvblJlcXVpcmVkIn0pKFp8fChaPXt9KSk7Y29uc3QgUmE9Zih7anNvbnJwYzptKFhyKSxpZDp3bi5vcHRpb25hbCgpLGVycm9yOmYoe2NvZGU6eCgpLmludCgpLG1lc3NhZ2U6cCgpLGRhdGE6TigpLm9wdGlvbmFsKCl9KX0pLnN0cmljdCgpLG12PXQ9PlJhLnNhZmVQYXJzZSh0KS5zdWNjZXNzLHB2PVUoW2xtLGRtLFphLFJhXSk7VShbWmEsUmFdKTtjb25zdCBDYT1lZS5zdHJpY3QoKSxmdj1mZS5leHRlbmQoe3JlcXVlc3RJZDp3bi5vcHRpb25hbCgpLHJlYXNvbjpwKCkub3B0aW9uYWwoKX0pLEFhPWdlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvY2FuY2VsbGVkIikscGFyYW1zOmZ2fSksZ3Y9Zih7c3JjOnAoKSxtaW1lVHlwZTpwKCkub3B0aW9uYWwoKSxzaXplczp3KHAoKSkub3B0aW9uYWwoKSx0aGVtZTpZKFsibGlnaHQiLCJkYXJrIl0pLm9wdGlvbmFsKCl9KSxJbj1mKHtpY29uczp3KGd2KS5vcHRpb25hbCgpfSksdHQ9Zih7bmFtZTpwKCksdGl0bGU6cCgpLm9wdGlvbmFsKCl9KSxZcj10dC5leHRlbmQoey4uLnR0LnNoYXBlLC4uLkluLnNoYXBlLHZlcnNpb246cCgpLHdlYnNpdGVVcmw6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCl9KSx2dj1tdChmKHthcHBseURlZmF1bHRzOkUoKS5vcHRpb25hbCgpfSksUChwKCksTigpKSksaHY9a24odD0+dCYmdHlwZW9mIHQ9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheSh0KSYmT2JqZWN0LmtleXModCkubGVuZ3RoPT09MD97Zm9ybTp7fX06dCxtdChmKHtmb3JtOnZ2Lm9wdGlvbmFsKCksdXJsOlYub3B0aW9uYWwoKX0pLFAocCgpLE4oKSkub3B0aW9uYWwoKSkpLF92PVgoe2xpc3Q6Vi5vcHRpb25hbCgpLGNhbmNlbDpWLm9wdGlvbmFsKCkscmVxdWVzdHM6WCh7c2FtcGxpbmc6WCh7Y3JlYXRlTWVzc2FnZTpWLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLGVsaWNpdGF0aW9uOlgoe2NyZWF0ZTpWLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLCR2PVgoe2xpc3Q6Vi5vcHRpb25hbCgpLGNhbmNlbDpWLm9wdGlvbmFsKCkscmVxdWVzdHM6WCh7dG9vbHM6WCh7Y2FsbDpWLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLGJ2PWYoe2V4cGVyaW1lbnRhbDpQKHAoKSxWKS5vcHRpb25hbCgpLHNhbXBsaW5nOmYoe2NvbnRleHQ6Vi5vcHRpb25hbCgpLHRvb2xzOlYub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCksZWxpY2l0YXRpb246aHYub3B0aW9uYWwoKSxyb290czpmKHtsaXN0Q2hhbmdlZDpFKCkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCksdGFza3M6X3Yub3B0aW9uYWwoKSxleHRlbnNpb25zOlAocCgpLFYpLm9wdGlvbmFsKCl9KSx5dj1kZS5leHRlbmQoe3Byb3RvY29sVmVyc2lvbjpwKCksY2FwYWJpbGl0aWVzOmJ2LGNsaWVudEluZm86WXJ9KSxrdj1RLmV4dGVuZCh7bWV0aG9kOm0oImluaXRpYWxpemUiKSxwYXJhbXM6eXZ9KSxTdj1mKHtleHBlcmltZW50YWw6UChwKCksVikub3B0aW9uYWwoKSxsb2dnaW5nOlYub3B0aW9uYWwoKSxjb21wbGV0aW9uczpWLm9wdGlvbmFsKCkscHJvbXB0czpmKHtsaXN0Q2hhbmdlZDpFKCkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCkscmVzb3VyY2VzOmYoe3N1YnNjcmliZTpFKCkub3B0aW9uYWwoKSxsaXN0Q2hhbmdlZDpFKCkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCksdG9vbHM6Zih7bGlzdENoYW5nZWQ6RSgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRhc2tzOiR2Lm9wdGlvbmFsKCksZXh0ZW5zaW9uczpQKHAoKSxWKS5vcHRpb25hbCgpfSksd3Y9ZWUuZXh0ZW5kKHtwcm90b2NvbFZlcnNpb246cCgpLGNhcGFiaWxpdGllczpTdixzZXJ2ZXJJbmZvOllyLGluc3RydWN0aW9uczpwKCkub3B0aW9uYWwoKX0pLEl2PWdlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvaW5pdGlhbGl6ZWQiKSxwYXJhbXM6ZmUub3B0aW9uYWwoKX0pLFFyPVEuZXh0ZW5kKHttZXRob2Q6bSgicGluZyIpLHBhcmFtczpkZS5vcHRpb25hbCgpfSkseHY9Zih7cHJvZ3Jlc3M6eCgpLHRvdGFsOk0oeCgpKSxtZXNzYWdlOk0ocCgpKX0pLHp2PWYoey4uLmZlLnNoYXBlLC4uLnh2LnNoYXBlLHByb2dyZXNzVG9rZW46Y219KSxMYT1nZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL3Byb2dyZXNzIikscGFyYW1zOnp2fSksVHY9ZGUuZXh0ZW5kKHtjdXJzb3I6dW0ub3B0aW9uYWwoKX0pLHhuPVEuZXh0ZW5kKHtwYXJhbXM6VHYub3B0aW9uYWwoKX0pLHpuPWVlLmV4dGVuZCh7bmV4dEN1cnNvcjp1bS5vcHRpb25hbCgpfSksVXY9WShbIndvcmtpbmciLCJpbnB1dF9yZXF1aXJlZCIsImNvbXBsZXRlZCIsImZhaWxlZCIsImNhbmNlbGxlZCJdKSxUbj1mKHt0YXNrSWQ6cCgpLHN0YXR1czpVdix0dGw6VShbeCgpLHZuKCldKSxjcmVhdGVkQXQ6cCgpLGxhc3RVcGRhdGVkQXQ6cCgpLHBvbGxJbnRlcnZhbDpNKHgoKSksc3RhdHVzTWVzc2FnZTpNKHAoKSl9KSxNYT1lZS5leHRlbmQoe3Rhc2s6VG59KSxqdj1mZS5tZXJnZShUbiksTG49Z2UuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy90YXNrcy9zdGF0dXMiKSxwYXJhbXM6anZ9KSxxYT1RLmV4dGVuZCh7bWV0aG9kOm0oInRhc2tzL2dldCIpLHBhcmFtczpkZS5leHRlbmQoe3Rhc2tJZDpwKCl9KX0pLEZhPWVlLm1lcmdlKFRuKSxKYT1RLmV4dGVuZCh7bWV0aG9kOm0oInRhc2tzL3Jlc3VsdCIpLHBhcmFtczpkZS5leHRlbmQoe3Rhc2tJZDpwKCl9KX0pO2VlLmxvb3NlKCk7Y29uc3QgSGE9eG4uZXh0ZW5kKHttZXRob2Q6bSgidGFza3MvbGlzdCIpfSksVmE9em4uZXh0ZW5kKHt0YXNrczp3KFRuKX0pLEthPVEuZXh0ZW5kKHttZXRob2Q6bSgidGFza3MvY2FuY2VsIikscGFyYW1zOmRlLmV4dGVuZCh7dGFza0lkOnAoKX0pfSksUHY9ZWUubWVyZ2UoVG4pLG1tPWYoe3VyaTpwKCksbWltZVR5cGU6TShwKCkpLF9tZXRhOlAocCgpLE4oKSkub3B0aW9uYWwoKX0pLHBtPW1tLmV4dGVuZCh7dGV4dDpwKCl9KSxCYT1wKCkucmVmaW5lKHQ9Pnt0cnl7cmV0dXJuIGF0b2IodCksITB9Y2F0Y2h7cmV0dXJuITF9fSx7bWVzc2FnZToiSW52YWxpZCBCYXNlNjQgc3RyaW5nIn0pLGZtPW1tLmV4dGVuZCh7YmxvYjpCYX0pLFVuPVkoWyJ1c2VyIiwiYXNzaXN0YW50Il0pLHZ0PWYoe2F1ZGllbmNlOncoVW4pLm9wdGlvbmFsKCkscHJpb3JpdHk6eCgpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKSxsYXN0TW9kaWZpZWQ6Zm8oe29mZnNldDohMH0pLm9wdGlvbmFsKCl9KSxnbT1mKHsuLi50dC5zaGFwZSwuLi5Jbi5zaGFwZSx1cmk6cCgpLGRlc2NyaXB0aW9uOk0ocCgpKSxtaW1lVHlwZTpNKHAoKSksc2l6ZTpNKHgoKSksYW5ub3RhdGlvbnM6dnQub3B0aW9uYWwoKSxfbWV0YTpNKFgoe30pKX0pLE92PWYoey4uLnR0LnNoYXBlLC4uLkluLnNoYXBlLHVyaVRlbXBsYXRlOnAoKSxkZXNjcmlwdGlvbjpNKHAoKSksbWltZVR5cGU6TShwKCkpLGFubm90YXRpb25zOnZ0Lm9wdGlvbmFsKCksX21ldGE6TShYKHt9KSl9KSxEdj14bi5leHRlbmQoe21ldGhvZDptKCJyZXNvdXJjZXMvbGlzdCIpfSksdm09em4uZXh0ZW5kKHtyZXNvdXJjZXM6dyhnbSl9KSxOdj14bi5leHRlbmQoe21ldGhvZDptKCJyZXNvdXJjZXMvdGVtcGxhdGVzL2xpc3QiKX0pLEV2PXpuLmV4dGVuZCh7cmVzb3VyY2VUZW1wbGF0ZXM6dyhPdil9KSxXYT1kZS5leHRlbmQoe3VyaTpwKCl9KSxadj1XYSxSdj1RLmV4dGVuZCh7bWV0aG9kOm0oInJlc291cmNlcy9yZWFkIikscGFyYW1zOlp2fSksaG09ZWUuZXh0ZW5kKHtjb250ZW50czp3KFUoW3BtLGZtXSkpfSksQ3Y9Z2UuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOmZlLm9wdGlvbmFsKCl9KSxBdj1XYSxMdj1RLmV4dGVuZCh7bWV0aG9kOm0oInJlc291cmNlcy9zdWJzY3JpYmUiKSxwYXJhbXM6QXZ9KSxNdj1XYSxxdj1RLmV4dGVuZCh7bWV0aG9kOm0oInJlc291cmNlcy91bnN1YnNjcmliZSIpLHBhcmFtczpNdn0pLEZ2PWZlLmV4dGVuZCh7dXJpOnAoKX0pLEp2PWdlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvcmVzb3VyY2VzL3VwZGF0ZWQiKSxwYXJhbXM6RnZ9KSxIdj1mKHtuYW1lOnAoKSxkZXNjcmlwdGlvbjpNKHAoKSkscmVxdWlyZWQ6TShFKCkpfSksVnY9Zih7Li4udHQuc2hhcGUsLi4uSW4uc2hhcGUsZGVzY3JpcHRpb246TShwKCkpLGFyZ3VtZW50czpNKHcoSHYpKSxfbWV0YTpNKFgoe30pKX0pLEt2PXhuLmV4dGVuZCh7bWV0aG9kOm0oInByb21wdHMvbGlzdCIpfSksQnY9em4uZXh0ZW5kKHtwcm9tcHRzOncoVnYpfSksV3Y9ZGUuZXh0ZW5kKHtuYW1lOnAoKSxhcmd1bWVudHM6UChwKCkscCgpKS5vcHRpb25hbCgpfSksR3Y9US5leHRlbmQoe21ldGhvZDptKCJwcm9tcHRzL2dldCIpLHBhcmFtczpXdn0pLEdhPWYoe3R5cGU6bSgidGV4dCIpLHRleHQ6cCgpLGFubm90YXRpb25zOnZ0Lm9wdGlvbmFsKCksX21ldGE6UChwKCksTigpKS5vcHRpb25hbCgpfSksWGE9Zih7dHlwZTptKCJpbWFnZSIpLGRhdGE6QmEsbWltZVR5cGU6cCgpLGFubm90YXRpb25zOnZ0Lm9wdGlvbmFsKCksX21ldGE6UChwKCksTigpKS5vcHRpb25hbCgpfSksWWE9Zih7dHlwZTptKCJhdWRpbyIpLGRhdGE6QmEsbWltZVR5cGU6cCgpLGFubm90YXRpb25zOnZ0Lm9wdGlvbmFsKCksX21ldGE6UChwKCksTigpKS5vcHRpb25hbCgpfSksWHY9Zih7dHlwZTptKCJ0b29sX3VzZSIpLG5hbWU6cCgpLGlkOnAoKSxpbnB1dDpQKHAoKSxOKCkpLF9tZXRhOlAocCgpLE4oKSkub3B0aW9uYWwoKX0pLF9tPWYoe3R5cGU6bSgicmVzb3VyY2UiKSxyZXNvdXJjZTpVKFtwbSxmbV0pLGFubm90YXRpb25zOnZ0Lm9wdGlvbmFsKCksX21ldGE6UChwKCksTigpKS5vcHRpb25hbCgpfSksJG09Z20uZXh0ZW5kKHt0eXBlOm0oInJlc291cmNlX2xpbmsiKX0pLGpuPVUoW0dhLFhhLFlhLCRtLF9tXSksWXY9Zih7cm9sZTpVbixjb250ZW50OmpufSksUXY9ZWUuZXh0ZW5kKHtkZXNjcmlwdGlvbjpwKCkub3B0aW9uYWwoKSxtZXNzYWdlczp3KFl2KX0pLGVoPWdlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvcHJvbXB0cy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6ZmUub3B0aW9uYWwoKX0pLHRoPWYoe3RpdGxlOnAoKS5vcHRpb25hbCgpLHJlYWRPbmx5SGludDpFKCkub3B0aW9uYWwoKSxkZXN0cnVjdGl2ZUhpbnQ6RSgpLm9wdGlvbmFsKCksaWRlbXBvdGVudEhpbnQ6RSgpLm9wdGlvbmFsKCksb3BlbldvcmxkSGludDpFKCkub3B0aW9uYWwoKX0pLG5oPWYoe3Rhc2tTdXBwb3J0OlkoWyJyZXF1aXJlZCIsIm9wdGlvbmFsIiwiZm9yYmlkZGVuIl0pLm9wdGlvbmFsKCl9KSxRYT1mKHsuLi50dC5zaGFwZSwuLi5Jbi5zaGFwZSxkZXNjcmlwdGlvbjpwKCkub3B0aW9uYWwoKSxpbnB1dFNjaGVtYTpmKHt0eXBlOm0oIm9iamVjdCIpLHByb3BlcnRpZXM6UChwKCksVikub3B0aW9uYWwoKSxyZXF1aXJlZDp3KHAoKSkub3B0aW9uYWwoKX0pLmNhdGNoYWxsKE4oKSksb3V0cHV0U2NoZW1hOmYoe3R5cGU6bSgib2JqZWN0IikscHJvcGVydGllczpQKHAoKSxWKS5vcHRpb25hbCgpLHJlcXVpcmVkOncocCgpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoTigpKS5vcHRpb25hbCgpLGFubm90YXRpb25zOnRoLm9wdGlvbmFsKCksZXhlY3V0aW9uOm5oLm9wdGlvbmFsKCksX21ldGE6UChwKCksTigpKS5vcHRpb25hbCgpfSksYm09eG4uZXh0ZW5kKHttZXRob2Q6bSgidG9vbHMvbGlzdCIpfSkscmg9em4uZXh0ZW5kKHt0b29sczp3KFFhKX0pLGVpPWVlLmV4dGVuZCh7Y29udGVudDp3KGpuKS5kZWZhdWx0KFtdKSxzdHJ1Y3R1cmVkQ29udGVudDpQKHAoKSxOKCkpLm9wdGlvbmFsKCksaXNFcnJvcjpFKCkub3B0aW9uYWwoKX0pO2VpLm9yKGVlLmV4dGVuZCh7dG9vbFJlc3VsdDpOKCl9KSk7Y29uc3QgaWg9U24uZXh0ZW5kKHtuYW1lOnAoKSxhcmd1bWVudHM6UChwKCksTigpKS5vcHRpb25hbCgpfSkseW09US5leHRlbmQoe21ldGhvZDptKCJ0b29scy9jYWxsIikscGFyYW1zOmlofSksb2g9Z2UuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy90b29scy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6ZmUub3B0aW9uYWwoKX0pO2Yoe2F1dG9SZWZyZXNoOkUoKS5kZWZhdWx0KCEwKSxkZWJvdW5jZU1zOngoKS5pbnQoKS5ub25uZWdhdGl2ZSgpLmRlZmF1bHQoMzAwKX0pO2NvbnN0IGttPVkoWyJkZWJ1ZyIsImluZm8iLCJub3RpY2UiLCJ3YXJuaW5nIiwiZXJyb3IiLCJjcml0aWNhbCIsImFsZXJ0IiwiZW1lcmdlbmN5Il0pLGFoPWRlLmV4dGVuZCh7bGV2ZWw6a219KSxzaD1RLmV4dGVuZCh7bWV0aG9kOm0oImxvZ2dpbmcvc2V0TGV2ZWwiKSxwYXJhbXM6YWh9KSxjaD1mZS5leHRlbmQoe2xldmVsOmttLGxvZ2dlcjpwKCkub3B0aW9uYWwoKSxkYXRhOk4oKX0pLHVoPWdlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvbWVzc2FnZSIpLHBhcmFtczpjaH0pLGxoPWYoe25hbWU6cCgpLm9wdGlvbmFsKCl9KSxkaD1mKHtoaW50czp3KGxoKS5vcHRpb25hbCgpLGNvc3RQcmlvcml0eTp4KCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLHNwZWVkUHJpb3JpdHk6eCgpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKSxpbnRlbGxpZ2VuY2VQcmlvcml0eTp4KCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpfSksbWg9Zih7bW9kZTpZKFsiYXV0byIsInJlcXVpcmVkIiwibm9uZSJdKS5vcHRpb25hbCgpfSkscGg9Zih7dHlwZTptKCJ0b29sX3Jlc3VsdCIpLHRvb2xVc2VJZDpwKCkuZGVzY3JpYmUoIlRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgdG9vbCBjYWxsLiIpLGNvbnRlbnQ6dyhqbikuZGVmYXVsdChbXSksc3RydWN0dXJlZENvbnRlbnQ6Zih7fSkubG9vc2UoKS5vcHRpb25hbCgpLGlzRXJyb3I6RSgpLm9wdGlvbmFsKCksX21ldGE6UChwKCksTigpKS5vcHRpb25hbCgpfSksZmg9X24oInR5cGUiLFtHYSxYYSxZYV0pLE1uPV9uKCJ0eXBlIixbR2EsWGEsWWEsWHYscGhdKSxnaD1mKHtyb2xlOlVuLGNvbnRlbnQ6VShbTW4sdyhNbildKSxfbWV0YTpQKHAoKSxOKCkpLm9wdGlvbmFsKCl9KSx2aD1Tbi5leHRlbmQoe21lc3NhZ2VzOncoZ2gpLG1vZGVsUHJlZmVyZW5jZXM6ZGgub3B0aW9uYWwoKSxzeXN0ZW1Qcm9tcHQ6cCgpLm9wdGlvbmFsKCksaW5jbHVkZUNvbnRleHQ6WShbIm5vbmUiLCJ0aGlzU2VydmVyIiwiYWxsU2VydmVycyJdKS5vcHRpb25hbCgpLHRlbXBlcmF0dXJlOngoKS5vcHRpb25hbCgpLG1heFRva2Vuczp4KCkuaW50KCksc3RvcFNlcXVlbmNlczp3KHAoKSkub3B0aW9uYWwoKSxtZXRhZGF0YTpWLm9wdGlvbmFsKCksdG9vbHM6dyhRYSkub3B0aW9uYWwoKSx0b29sQ2hvaWNlOm1oLm9wdGlvbmFsKCl9KSxoaD1RLmV4dGVuZCh7bWV0aG9kOm0oInNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2UiKSxwYXJhbXM6dmh9KSxTbT1lZS5leHRlbmQoe21vZGVsOnAoKSxzdG9wUmVhc29uOk0oWShbImVuZFR1cm4iLCJzdG9wU2VxdWVuY2UiLCJtYXhUb2tlbnMiXSkub3IocCgpKSkscm9sZTpVbixjb250ZW50OmZofSksd209ZWUuZXh0ZW5kKHttb2RlbDpwKCksc3RvcFJlYXNvbjpNKFkoWyJlbmRUdXJuIiwic3RvcFNlcXVlbmNlIiwibWF4VG9rZW5zIiwidG9vbFVzZSJdKS5vcihwKCkpKSxyb2xlOlVuLGNvbnRlbnQ6VShbTW4sdyhNbildKX0pLF9oPWYoe3R5cGU6bSgiYm9vbGVhbiIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLGRlZmF1bHQ6RSgpLm9wdGlvbmFsKCl9KSwkaD1mKHt0eXBlOm0oInN0cmluZyIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG1pbkxlbmd0aDp4KCkub3B0aW9uYWwoKSxtYXhMZW5ndGg6eCgpLm9wdGlvbmFsKCksZm9ybWF0OlkoWyJlbWFpbCIsInVyaSIsImRhdGUiLCJkYXRlLXRpbWUiXSkub3B0aW9uYWwoKSxkZWZhdWx0OnAoKS5vcHRpb25hbCgpfSksYmg9Zih7dHlwZTpZKFsibnVtYmVyIiwiaW50ZWdlciJdKSx0aXRsZTpwKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpwKCkub3B0aW9uYWwoKSxtaW5pbXVtOngoKS5vcHRpb25hbCgpLG1heGltdW06eCgpLm9wdGlvbmFsKCksZGVmYXVsdDp4KCkub3B0aW9uYWwoKX0pLHloPWYoe3R5cGU6bSgic3RyaW5nIiksdGl0bGU6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksZW51bTp3KHAoKSksZGVmYXVsdDpwKCkub3B0aW9uYWwoKX0pLGtoPWYoe3R5cGU6bSgic3RyaW5nIiksdGl0bGU6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksb25lT2Y6dyhmKHtjb25zdDpwKCksdGl0bGU6cCgpfSkpLGRlZmF1bHQ6cCgpLm9wdGlvbmFsKCl9KSxTaD1mKHt0eXBlOm0oInN0cmluZyIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLGVudW06dyhwKCkpLGVudW1OYW1lczp3KHAoKSkub3B0aW9uYWwoKSxkZWZhdWx0OnAoKS5vcHRpb25hbCgpfSksd2g9VShbeWgsa2hdKSxJaD1mKHt0eXBlOm0oImFycmF5IiksdGl0bGU6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksbWluSXRlbXM6eCgpLm9wdGlvbmFsKCksbWF4SXRlbXM6eCgpLm9wdGlvbmFsKCksaXRlbXM6Zih7dHlwZTptKCJzdHJpbmciKSxlbnVtOncocCgpKX0pLGRlZmF1bHQ6dyhwKCkpLm9wdGlvbmFsKCl9KSx4aD1mKHt0eXBlOm0oImFycmF5IiksdGl0bGU6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksbWluSXRlbXM6eCgpLm9wdGlvbmFsKCksbWF4SXRlbXM6eCgpLm9wdGlvbmFsKCksaXRlbXM6Zih7YW55T2Y6dyhmKHtjb25zdDpwKCksdGl0bGU6cCgpfSkpfSksZGVmYXVsdDp3KHAoKSkub3B0aW9uYWwoKX0pLHpoPVUoW0loLHhoXSksVGg9VShbU2gsd2gsemhdKSxVaD1VKFtUaCxfaCwkaCxiaF0pLGpoPVNuLmV4dGVuZCh7bW9kZTptKCJmb3JtIikub3B0aW9uYWwoKSxtZXNzYWdlOnAoKSxyZXF1ZXN0ZWRTY2hlbWE6Zih7dHlwZTptKCJvYmplY3QiKSxwcm9wZXJ0aWVzOlAocCgpLFVoKSxyZXF1aXJlZDp3KHAoKSkub3B0aW9uYWwoKX0pfSksUGg9U24uZXh0ZW5kKHttb2RlOm0oInVybCIpLG1lc3NhZ2U6cCgpLGVsaWNpdGF0aW9uSWQ6cCgpLHVybDpwKCkudXJsKCl9KSxPaD1VKFtqaCxQaF0pLERoPVEuZXh0ZW5kKHttZXRob2Q6bSgiZWxpY2l0YXRpb24vY3JlYXRlIikscGFyYW1zOk9ofSksTmg9ZmUuZXh0ZW5kKHtlbGljaXRhdGlvbklkOnAoKX0pLEVoPWdlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvZWxpY2l0YXRpb24vY29tcGxldGUiKSxwYXJhbXM6Tmh9KSxaaD1lZS5leHRlbmQoe2FjdGlvbjpZKFsiYWNjZXB0IiwiZGVjbGluZSIsImNhbmNlbCJdKSxjb250ZW50OmtuKHQ9PnQ9PT1udWxsP3ZvaWQgMDp0LFAocCgpLFUoW3AoKSx4KCksRSgpLHcocCgpKV0pKS5vcHRpb25hbCgpKX0pLFJoPWYoe3R5cGU6bSgicmVmL3Jlc291cmNlIiksdXJpOnAoKX0pLENoPWYoe3R5cGU6bSgicmVmL3Byb21wdCIpLG5hbWU6cCgpfSksQWg9ZGUuZXh0ZW5kKHtyZWY6VShbQ2gsUmhdKSxhcmd1bWVudDpmKHtuYW1lOnAoKSx2YWx1ZTpwKCl9KSxjb250ZXh0OmYoe2FyZ3VtZW50czpQKHAoKSxwKCkpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksTGg9US5leHRlbmQoe21ldGhvZDptKCJjb21wbGV0aW9uL2NvbXBsZXRlIikscGFyYW1zOkFofSksTWg9ZWUuZXh0ZW5kKHtjb21wbGV0aW9uOlgoe3ZhbHVlczp3KHAoKSkubWF4KDEwMCksdG90YWw6TSh4KCkuaW50KCkpLGhhc01vcmU6TShFKCkpfSl9KSxxaD1mKHt1cmk6cCgpLnN0YXJ0c1dpdGgoImZpbGU6Ly8iKSxuYW1lOnAoKS5vcHRpb25hbCgpLF9tZXRhOlAocCgpLE4oKSkub3B0aW9uYWwoKX0pLEZoPVEuZXh0ZW5kKHttZXRob2Q6bSgicm9vdHMvbGlzdCIpLHBhcmFtczpkZS5vcHRpb25hbCgpfSksSmg9ZWUuZXh0ZW5kKHtyb290czp3KHFoKX0pLEhoPWdlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvcm9vdHMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOmZlLm9wdGlvbmFsKCl9KTtVKFtRcixrdixMaCxzaCxHdixLdixEdixOdixSdixMdixxdix5bSxibSxxYSxKYSxIYSxLYV0pO1UoW0FhLExhLEl2LEhoLExuXSk7VShbQ2EsU20sd20sWmgsSmgsRmEsVmEsTWFdKTtVKFtRcixoaCxEaCxGaCxxYSxKYSxIYSxLYV0pO1UoW0FhLExhLHVoLEp2LEN2LG9oLGVoLExuLEVoXSk7VShbQ2Esd3YsTWgsUXYsQnYsdm0sRXYsaG0sZWkscmgsRmEsVmEsTWFdKTtjbGFzcyBPIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IobixyLG8pe3N1cGVyKGBNQ1AgZXJyb3IgJHtufTogJHtyfWApLHRoaXMuY29kZT1uLHRoaXMuZGF0YT1vLHRoaXMubmFtZT0iTWNwRXJyb3IifXN0YXRpYyBmcm9tRXJyb3IobixyLG8pe2lmKG49PT1aLlVybEVsaWNpdGF0aW9uUmVxdWlyZWQmJm8pe2NvbnN0IGU9bztpZihlLmVsaWNpdGF0aW9ucylyZXR1cm4gbmV3IFZoKGUuZWxpY2l0YXRpb25zLHIpfXJldHVybiBuZXcgTyhuLHIsbyl9fWNsYXNzIFZoIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihuLHI9YFVSTCBlbGljaXRhdGlvbiR7bi5sZW5ndGg+MT8icyI6IiJ9IHJlcXVpcmVkYCl7c3VwZXIoWi5VcmxFbGljaXRhdGlvblJlcXVpcmVkLHIse2VsaWNpdGF0aW9uczpufSl9Z2V0IGVsaWNpdGF0aW9ucygpe3JldHVybiB0aGlzLmRhdGE/LmVsaWNpdGF0aW9ucz8/W119fWZ1bmN0aW9uIHhlKHQpe3JldHVybiB0PT09ImNvbXBsZXRlZCJ8fHQ9PT0iZmFpbGVkInx8dD09PSJjYW5jZWxsZWQifW5ldyBTZXQoIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2eHl6MDEyMzQ1Njc4OSIpO2Z1bmN0aW9uIFpzKHQpe2NvbnN0IHI9V2codCk/Lm1ldGhvZDtpZighcil0aHJvdyBuZXcgRXJyb3IoIlNjaGVtYSBpcyBtaXNzaW5nIGEgbWV0aG9kIGxpdGVyYWwiKTtjb25zdCBvPUdnKHIpO2lmKHR5cGVvZiBvIT0ic3RyaW5nIil0aHJvdyBuZXcgRXJyb3IoIlNjaGVtYSBtZXRob2QgbGl0ZXJhbCBtdXN0IGJlIGEgc3RyaW5nIik7cmV0dXJuIG99ZnVuY3Rpb24gUnModCxuKXtjb25zdCByPUdkKHQsbik7aWYoIXIuc3VjY2Vzcyl0aHJvdyByLmVycm9yO3JldHVybiByLmRhdGF9Y29uc3QgS2g9NmU0O2NsYXNzIEJoe2NvbnN0cnVjdG9yKG4pe3RoaXMuX29wdGlvbnM9bix0aGlzLl9yZXF1ZXN0TWVzc2FnZUlkPTAsdGhpcy5fcmVxdWVzdEhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzPW5ldyBNYXAsdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl9yZXNwb25zZUhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3RpbWVvdXRJbmZvPW5ldyBNYXAsdGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnM9bmV3IFNldCx0aGlzLl90YXNrUHJvZ3Jlc3NUb2tlbnM9bmV3IE1hcCx0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzPW5ldyBNYXAsdGhpcy5zZXROb3RpZmljYXRpb25IYW5kbGVyKEFhLHI9Pnt0aGlzLl9vbmNhbmNlbChyKX0pLHRoaXMuc2V0Tm90aWZpY2F0aW9uSGFuZGxlcihMYSxyPT57dGhpcy5fb25wcm9ncmVzcyhyKX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoUXIscj0+KHt9KSksdGhpcy5fdGFza1N0b3JlPW4/LnRhc2tTdG9yZSx0aGlzLl90YXNrTWVzc2FnZVF1ZXVlPW4/LnRhc2tNZXNzYWdlUXVldWUsdGhpcy5fdGFza1N0b3JlJiYodGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihxYSxhc3luYyhyLG8pPT57Y29uc3QgZT1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFzayhyLnBhcmFtcy50YXNrSWQsby5zZXNzaW9uSWQpO2lmKCFlKXRocm93IG5ldyBPKFouSW52YWxpZFBhcmFtcywiRmFpbGVkIHRvIHJldHJpZXZlIHRhc2s6IFRhc2sgbm90IGZvdW5kIik7cmV0dXJuey4uLmV9fSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihKYSxhc3luYyhyLG8pPT57Y29uc3QgZT1hc3luYygpPT57Y29uc3QgaT1yLnBhcmFtcy50YXNrSWQ7aWYodGhpcy5fdGFza01lc3NhZ2VRdWV1ZSl7bGV0IHM7Zm9yKDtzPWF3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZGVxdWV1ZShpLG8uc2Vzc2lvbklkKTspe2lmKHMudHlwZT09PSJyZXNwb25zZSJ8fHMudHlwZT09PSJlcnJvciIpe2NvbnN0IGM9cy5tZXNzYWdlLHU9Yy5pZCxsPXRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZ2V0KHUpO2lmKGwpaWYodGhpcy5fcmVxdWVzdFJlc29sdmVycy5kZWxldGUodSkscy50eXBlPT09InJlc3BvbnNlIilsKGMpO2Vsc2V7Y29uc3QgZz1jLHY9bmV3IE8oZy5lcnJvci5jb2RlLGcuZXJyb3IubWVzc2FnZSxnLmVycm9yLmRhdGEpO2wodil9ZWxzZXtjb25zdCBnPXMudHlwZT09PSJyZXNwb25zZSI/IlJlc3BvbnNlIjoiRXJyb3IiO3RoaXMuX29uZXJyb3IobmV3IEVycm9yKGAke2d9IGhhbmRsZXIgbWlzc2luZyBmb3IgcmVxdWVzdCAke3V9YCkpfWNvbnRpbnVlfWF3YWl0IHRoaXMuX3RyYW5zcG9ydD8uc2VuZChzLm1lc3NhZ2Use3JlbGF0ZWRSZXF1ZXN0SWQ6by5yZXF1ZXN0SWR9KX19Y29uc3QgYT1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFzayhpLG8uc2Vzc2lvbklkKTtpZighYSl0aHJvdyBuZXcgTyhaLkludmFsaWRQYXJhbXMsYFRhc2sgbm90IGZvdW5kOiAke2l9YCk7aWYoIXhlKGEuc3RhdHVzKSlyZXR1cm4gYXdhaXQgdGhpcy5fd2FpdEZvclRhc2tVcGRhdGUoaSxvLnNpZ25hbCksYXdhaXQgZSgpO2lmKHhlKGEuc3RhdHVzKSl7Y29uc3Qgcz1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFza1Jlc3VsdChpLG8uc2Vzc2lvbklkKTtyZXR1cm4gdGhpcy5fY2xlYXJUYXNrUXVldWUoaSksey4uLnMsX21ldGE6ey4uLnMuX21ldGEsW3plXTp7dGFza0lkOml9fX19cmV0dXJuIGF3YWl0IGUoKX07cmV0dXJuIGF3YWl0IGUoKX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoSGEsYXN5bmMocixvKT0+e3RyeXtjb25zdHt0YXNrczplLG5leHRDdXJzb3I6aX09YXdhaXQgdGhpcy5fdGFza1N0b3JlLmxpc3RUYXNrcyhyLnBhcmFtcz8uY3Vyc29yLG8uc2Vzc2lvbklkKTtyZXR1cm57dGFza3M6ZSxuZXh0Q3Vyc29yOmksX21ldGE6e319fWNhdGNoKGUpe3Rocm93IG5ldyBPKFouSW52YWxpZFBhcmFtcyxgRmFpbGVkIHRvIGxpc3QgdGFza3M6ICR7ZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTpTdHJpbmcoZSl9YCl9fSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihLYSxhc3luYyhyLG8pPT57dHJ5e2NvbnN0IGU9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2soci5wYXJhbXMudGFza0lkLG8uc2Vzc2lvbklkKTtpZighZSl0aHJvdyBuZXcgTyhaLkludmFsaWRQYXJhbXMsYFRhc2sgbm90IGZvdW5kOiAke3IucGFyYW1zLnRhc2tJZH1gKTtpZih4ZShlLnN0YXR1cykpdGhyb3cgbmV3IE8oWi5JbnZhbGlkUGFyYW1zLGBDYW5ub3QgY2FuY2VsIHRhc2sgaW4gdGVybWluYWwgc3RhdHVzOiAke2Uuc3RhdHVzfWApO2F3YWl0IHRoaXMuX3Rhc2tTdG9yZS51cGRhdGVUYXNrU3RhdHVzKHIucGFyYW1zLnRhc2tJZCwiY2FuY2VsbGVkIiwiQ2xpZW50IGNhbmNlbGxlZCB0YXNrIGV4ZWN1dGlvbi4iLG8uc2Vzc2lvbklkKSx0aGlzLl9jbGVhclRhc2tRdWV1ZShyLnBhcmFtcy50YXNrSWQpO2NvbnN0IGk9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2soci5wYXJhbXMudGFza0lkLG8uc2Vzc2lvbklkKTtpZighaSl0aHJvdyBuZXcgTyhaLkludmFsaWRQYXJhbXMsYFRhc2sgbm90IGZvdW5kIGFmdGVyIGNhbmNlbGxhdGlvbjogJHtyLnBhcmFtcy50YXNrSWR9YCk7cmV0dXJue19tZXRhOnt9LC4uLml9fWNhdGNoKGUpe3Rocm93IGUgaW5zdGFuY2VvZiBPP2U6bmV3IE8oWi5JbnZhbGlkUmVxdWVzdCxgRmFpbGVkIHRvIGNhbmNlbCB0YXNrOiAke2UgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6U3RyaW5nKGUpfWApfX0pKX1hc3luYyBfb25jYW5jZWwobil7aWYoIW4ucGFyYW1zLnJlcXVlc3RJZClyZXR1cm47dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmdldChuLnBhcmFtcy5yZXF1ZXN0SWQpPy5hYm9ydChuLnBhcmFtcy5yZWFzb24pfV9zZXR1cFRpbWVvdXQobixyLG8sZSxpPSExKXt0aGlzLl90aW1lb3V0SW5mby5zZXQobix7dGltZW91dElkOnNldFRpbWVvdXQoZSxyKSxzdGFydFRpbWU6RGF0ZS5ub3coKSx0aW1lb3V0OnIsbWF4VG90YWxUaW1lb3V0Om8scmVzZXRUaW1lb3V0T25Qcm9ncmVzczppLG9uVGltZW91dDplfSl9X3Jlc2V0VGltZW91dChuKXtjb25zdCByPXRoaXMuX3RpbWVvdXRJbmZvLmdldChuKTtpZighcilyZXR1cm4hMTtjb25zdCBvPURhdGUubm93KCktci5zdGFydFRpbWU7aWYoci5tYXhUb3RhbFRpbWVvdXQmJm8+PXIubWF4VG90YWxUaW1lb3V0KXRocm93IHRoaXMuX3RpbWVvdXRJbmZvLmRlbGV0ZShuKSxPLmZyb21FcnJvcihaLlJlcXVlc3RUaW1lb3V0LCJNYXhpbXVtIHRvdGFsIHRpbWVvdXQgZXhjZWVkZWQiLHttYXhUb3RhbFRpbWVvdXQ6ci5tYXhUb3RhbFRpbWVvdXQsdG90YWxFbGFwc2VkOm99KTtyZXR1cm4gY2xlYXJUaW1lb3V0KHIudGltZW91dElkKSxyLnRpbWVvdXRJZD1zZXRUaW1lb3V0KHIub25UaW1lb3V0LHIudGltZW91dCksITB9X2NsZWFudXBUaW1lb3V0KG4pe2NvbnN0IHI9dGhpcy5fdGltZW91dEluZm8uZ2V0KG4pO3ImJihjbGVhclRpbWVvdXQoci50aW1lb3V0SWQpLHRoaXMuX3RpbWVvdXRJbmZvLmRlbGV0ZShuKSl9YXN5bmMgY29ubmVjdChuKXtpZih0aGlzLl90cmFuc3BvcnQpdGhyb3cgbmV3IEVycm9yKCJBbHJlYWR5IGNvbm5lY3RlZCB0byBhIHRyYW5zcG9ydC4gQ2FsbCBjbG9zZSgpIGJlZm9yZSBjb25uZWN0aW5nIHRvIGEgbmV3IHRyYW5zcG9ydCwgb3IgdXNlIGEgc2VwYXJhdGUgUHJvdG9jb2wgaW5zdGFuY2UgcGVyIGNvbm5lY3Rpb24uIik7dGhpcy5fdHJhbnNwb3J0PW47Y29uc3Qgcj10aGlzLnRyYW5zcG9ydD8ub25jbG9zZTt0aGlzLl90cmFuc3BvcnQub25jbG9zZT0oKT0+e3I/LigpLHRoaXMuX29uY2xvc2UoKX07Y29uc3Qgbz10aGlzLnRyYW5zcG9ydD8ub25lcnJvcjt0aGlzLl90cmFuc3BvcnQub25lcnJvcj1pPT57bz8uKGkpLHRoaXMuX29uZXJyb3IoaSl9O2NvbnN0IGU9dGhpcy5fdHJhbnNwb3J0Py5vbm1lc3NhZ2U7dGhpcy5fdHJhbnNwb3J0Lm9ubWVzc2FnZT0oaSxhKT0+e2U/LihpLGEpLE5uKGkpfHxtdihpKT90aGlzLl9vbnJlc3BvbnNlKGkpOkVzKGkpP3RoaXMuX29ucmVxdWVzdChpLGEpOmR2KGkpP3RoaXMuX29ubm90aWZpY2F0aW9uKGkpOnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBVbmtub3duIG1lc3NhZ2UgdHlwZTogJHtKU09OLnN0cmluZ2lmeShpKX1gKSl9LGF3YWl0IHRoaXMuX3RyYW5zcG9ydC5zdGFydCgpfV9vbmNsb3NlKCl7Y29uc3Qgbj10aGlzLl9yZXNwb25zZUhhbmRsZXJzO3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmNsZWFyKCksdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLmNsZWFyKCksdGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuY2xlYXIoKTtmb3IoY29uc3QgbyBvZiB0aGlzLl90aW1lb3V0SW5mby52YWx1ZXMoKSljbGVhclRpbWVvdXQoby50aW1lb3V0SWQpO3RoaXMuX3RpbWVvdXRJbmZvLmNsZWFyKCk7Zm9yKGNvbnN0IG8gb2YgdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLnZhbHVlcygpKW8uYWJvcnQoKTt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuY2xlYXIoKTtjb25zdCByPU8uZnJvbUVycm9yKFouQ29ubmVjdGlvbkNsb3NlZCwiQ29ubmVjdGlvbiBjbG9zZWQiKTt0aGlzLl90cmFuc3BvcnQ9dm9pZCAwLHRoaXMub25jbG9zZT8uKCk7Zm9yKGNvbnN0IG8gb2Ygbi52YWx1ZXMoKSlvKHIpfV9vbmVycm9yKG4pe3RoaXMub25lcnJvcj8uKG4pfV9vbm5vdGlmaWNhdGlvbihuKXtjb25zdCByPXRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLmdldChuLm1ldGhvZCk/P3RoaXMuZmFsbGJhY2tOb3RpZmljYXRpb25IYW5kbGVyO3IhPT12b2lkIDAmJlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnIobikpLmNhdGNoKG89PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBVbmNhdWdodCBlcnJvciBpbiBub3RpZmljYXRpb24gaGFuZGxlcjogJHtvfWApKSl9X29ucmVxdWVzdChuLHIpe2NvbnN0IG89dGhpcy5fcmVxdWVzdEhhbmRsZXJzLmdldChuLm1ldGhvZCk/P3RoaXMuZmFsbGJhY2tSZXF1ZXN0SGFuZGxlcixlPXRoaXMuX3RyYW5zcG9ydCxpPW4ucGFyYW1zPy5fbWV0YT8uW3plXT8udGFza0lkO2lmKG89PT12b2lkIDApe2NvbnN0IGw9e2pzb25ycGM6IjIuMCIsaWQ6bi5pZCxlcnJvcjp7Y29kZTpaLk1ldGhvZE5vdEZvdW5kLG1lc3NhZ2U6Ik1ldGhvZCBub3QgZm91bmQifX07aSYmdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT90aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2UoaSx7dHlwZToiZXJyb3IiLG1lc3NhZ2U6bCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0sZT8uc2Vzc2lvbklkKS5jYXRjaChnPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIGVucXVldWUgZXJyb3IgcmVzcG9uc2U6ICR7Z31gKSkpOmU/LnNlbmQobCkuY2F0Y2goZz0+dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBzZW5kIGFuIGVycm9yIHJlc3BvbnNlOiAke2d9YCkpKTtyZXR1cm59Y29uc3QgYT1uZXcgQWJvcnRDb250cm9sbGVyO3RoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5zZXQobi5pZCxhKTtjb25zdCBzPWx2KG4ucGFyYW1zKT9uLnBhcmFtcy50YXNrOnZvaWQgMCxjPXRoaXMuX3Rhc2tTdG9yZT90aGlzLnJlcXVlc3RUYXNrU3RvcmUobixlPy5zZXNzaW9uSWQpOnZvaWQgMCx1PXtzaWduYWw6YS5zaWduYWwsc2Vzc2lvbklkOmU/LnNlc3Npb25JZCxfbWV0YTpuLnBhcmFtcz8uX21ldGEsc2VuZE5vdGlmaWNhdGlvbjphc3luYyBsPT57aWYoYS5zaWduYWwuYWJvcnRlZClyZXR1cm47Y29uc3QgZz17cmVsYXRlZFJlcXVlc3RJZDpuLmlkfTtpJiYoZy5yZWxhdGVkVGFzaz17dGFza0lkOml9KSxhd2FpdCB0aGlzLm5vdGlmaWNhdGlvbihsLGcpfSxzZW5kUmVxdWVzdDphc3luYyhsLGcsdik9PntpZihhLnNpZ25hbC5hYm9ydGVkKXRocm93IG5ldyBPKFouQ29ubmVjdGlvbkNsb3NlZCwiUmVxdWVzdCB3YXMgY2FuY2VsbGVkIik7Y29uc3QgXz17Li4udixyZWxhdGVkUmVxdWVzdElkOm4uaWR9O2kmJiFfLnJlbGF0ZWRUYXNrJiYoXy5yZWxhdGVkVGFzaz17dGFza0lkOml9KTtjb25zdCB5PV8ucmVsYXRlZFRhc2s/LnRhc2tJZD8/aTtyZXR1cm4geSYmYyYmYXdhaXQgYy51cGRhdGVUYXNrU3RhdHVzKHksImlucHV0X3JlcXVpcmVkIiksYXdhaXQgdGhpcy5yZXF1ZXN0KGwsZyxfKX0sYXV0aEluZm86cj8uYXV0aEluZm8scmVxdWVzdElkOm4uaWQscmVxdWVzdEluZm86cj8ucmVxdWVzdEluZm8sdGFza0lkOmksdGFza1N0b3JlOmMsdGFza1JlcXVlc3RlZFR0bDpzPy50dGwsY2xvc2VTU0VTdHJlYW06cj8uY2xvc2VTU0VTdHJlYW0sY2xvc2VTdGFuZGFsb25lU1NFU3RyZWFtOnI/LmNsb3NlU3RhbmRhbG9uZVNTRVN0cmVhbX07UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e3MmJnRoaXMuYXNzZXJ0VGFza0hhbmRsZXJDYXBhYmlsaXR5KG4ubWV0aG9kKX0pLnRoZW4oKCk9Pm8obix1KSkudGhlbihhc3luYyBsPT57aWYoYS5zaWduYWwuYWJvcnRlZClyZXR1cm47Y29uc3QgZz17cmVzdWx0OmwsanNvbnJwYzoiMi4wIixpZDpuLmlkfTtpJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlP2F3YWl0IHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShpLHt0eXBlOiJyZXNwb25zZSIsbWVzc2FnZTpnLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxlPy5zZXNzaW9uSWQpOmF3YWl0IGU/LnNlbmQoZyl9LGFzeW5jIGw9PntpZihhLnNpZ25hbC5hYm9ydGVkKXJldHVybjtjb25zdCBnPXtqc29ucnBjOiIyLjAiLGlkOm4uaWQsZXJyb3I6e2NvZGU6TnVtYmVyLmlzU2FmZUludGVnZXIobC5jb2RlKT9sLmNvZGU6Wi5JbnRlcm5hbEVycm9yLG1lc3NhZ2U6bC5tZXNzYWdlPz8iSW50ZXJuYWwgZXJyb3IiLC4uLmwuZGF0YSE9PXZvaWQgMCYme2RhdGE6bC5kYXRhfX19O2kmJnRoaXMuX3Rhc2tNZXNzYWdlUXVldWU/YXdhaXQgdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKGkse3R5cGU6ImVycm9yIixtZXNzYWdlOmcsdGltZXN0YW1wOkRhdGUubm93KCl9LGU/LnNlc3Npb25JZCk6YXdhaXQgZT8uc2VuZChnKX0pLmNhdGNoKGw9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gc2VuZCByZXNwb25zZTogJHtsfWApKSkuZmluYWxseSgoKT0+e3RoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5nZXQobi5pZCk9PT1hJiZ0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZGVsZXRlKG4uaWQpfSl9X29ucHJvZ3Jlc3Mobil7Y29uc3R7cHJvZ3Jlc3NUb2tlbjpyLC4uLm99PW4ucGFyYW1zLGU9TnVtYmVyKHIpLGk9dGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5nZXQoZSk7aWYoIWkpe3RoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZWNlaXZlZCBhIHByb2dyZXNzIG5vdGlmaWNhdGlvbiBmb3IgYW4gdW5rbm93biB0b2tlbjogJHtKU09OLnN0cmluZ2lmeShuKX1gKSk7cmV0dXJufWNvbnN0IGE9dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5nZXQoZSkscz10aGlzLl90aW1lb3V0SW5mby5nZXQoZSk7aWYocyYmYSYmcy5yZXNldFRpbWVvdXRPblByb2dyZXNzKXRyeXt0aGlzLl9yZXNldFRpbWVvdXQoZSl9Y2F0Y2goYyl7dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUoZSksdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUoZSksdGhpcy5fY2xlYW51cFRpbWVvdXQoZSksYShjKTtyZXR1cm59aShvKX1fb25yZXNwb25zZShuKXtjb25zdCByPU51bWJlcihuLmlkKSxvPXRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZ2V0KHIpO2lmKG8pe2lmKHRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZGVsZXRlKHIpLE5uKG4pKW8obik7ZWxzZXtjb25zdCBhPW5ldyBPKG4uZXJyb3IuY29kZSxuLmVycm9yLm1lc3NhZ2Usbi5lcnJvci5kYXRhKTtvKGEpfXJldHVybn1jb25zdCBlPXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZ2V0KHIpO2lmKGU9PT12b2lkIDApe3RoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZWNlaXZlZCBhIHJlc3BvbnNlIGZvciBhbiB1bmtub3duIG1lc3NhZ2UgSUQ6ICR7SlNPTi5zdHJpbmdpZnkobil9YCkpO3JldHVybn10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmRlbGV0ZShyKSx0aGlzLl9jbGVhbnVwVGltZW91dChyKTtsZXQgaT0hMTtpZihObihuKSYmbi5yZXN1bHQmJnR5cGVvZiBuLnJlc3VsdD09Im9iamVjdCIpe2NvbnN0IGE9bi5yZXN1bHQ7aWYoYS50YXNrJiZ0eXBlb2YgYS50YXNrPT0ib2JqZWN0Iil7Y29uc3Qgcz1hLnRhc2s7dHlwZW9mIHMudGFza0lkPT0ic3RyaW5nIiYmKGk9ITAsdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLnNldChzLnRhc2tJZCxyKSl9fWlmKGl8fHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKHIpLE5uKG4pKWUobik7ZWxzZXtjb25zdCBhPU8uZnJvbUVycm9yKG4uZXJyb3IuY29kZSxuLmVycm9yLm1lc3NhZ2Usbi5lcnJvci5kYXRhKTtlKGEpfX1nZXQgdHJhbnNwb3J0KCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydH1hc3luYyBjbG9zZSgpe2F3YWl0IHRoaXMuX3RyYW5zcG9ydD8uY2xvc2UoKX1hc3luYypyZXF1ZXN0U3RyZWFtKG4scixvKXtjb25zdHt0YXNrOmV9PW8/P3t9O2lmKCFlKXt0cnl7eWllbGR7dHlwZToicmVzdWx0IixyZXN1bHQ6YXdhaXQgdGhpcy5yZXF1ZXN0KG4scixvKX19Y2F0Y2goYSl7eWllbGR7dHlwZToiZXJyb3IiLGVycm9yOmEgaW5zdGFuY2VvZiBPP2E6bmV3IE8oWi5JbnRlcm5hbEVycm9yLFN0cmluZyhhKSl9fXJldHVybn1sZXQgaTt0cnl7Y29uc3QgYT1hd2FpdCB0aGlzLnJlcXVlc3QobixNYSxvKTtpZihhLnRhc2spaT1hLnRhc2sudGFza0lkLHlpZWxke3R5cGU6InRhc2tDcmVhdGVkIix0YXNrOmEudGFza307ZWxzZSB0aHJvdyBuZXcgTyhaLkludGVybmFsRXJyb3IsIlRhc2sgY3JlYXRpb24gZGlkIG5vdCByZXR1cm4gYSB0YXNrIik7Zm9yKDs7KXtjb25zdCBzPWF3YWl0IHRoaXMuZ2V0VGFzayh7dGFza0lkOml9LG8pO2lmKHlpZWxke3R5cGU6InRhc2tTdGF0dXMiLHRhc2s6c30seGUocy5zdGF0dXMpKXtzLnN0YXR1cz09PSJjb21wbGV0ZWQiP3lpZWxke3R5cGU6InJlc3VsdCIscmVzdWx0OmF3YWl0IHRoaXMuZ2V0VGFza1Jlc3VsdCh7dGFza0lkOml9LHIsbyl9OnMuc3RhdHVzPT09ImZhaWxlZCI/eWllbGR7dHlwZToiZXJyb3IiLGVycm9yOm5ldyBPKFouSW50ZXJuYWxFcnJvcixgVGFzayAke2l9IGZhaWxlZGApfTpzLnN0YXR1cz09PSJjYW5jZWxsZWQiJiYoeWllbGR7dHlwZToiZXJyb3IiLGVycm9yOm5ldyBPKFouSW50ZXJuYWxFcnJvcixgVGFzayAke2l9IHdhcyBjYW5jZWxsZWRgKX0pO3JldHVybn1pZihzLnN0YXR1cz09PSJpbnB1dF9yZXF1aXJlZCIpe3lpZWxke3R5cGU6InJlc3VsdCIscmVzdWx0OmF3YWl0IHRoaXMuZ2V0VGFza1Jlc3VsdCh7dGFza0lkOml9LHIsbyl9O3JldHVybn1jb25zdCBjPXMucG9sbEludGVydmFsPz90aGlzLl9vcHRpb25zPy5kZWZhdWx0VGFza1BvbGxJbnRlcnZhbD8/MWUzO2F3YWl0IG5ldyBQcm9taXNlKHU9PnNldFRpbWVvdXQodSxjKSksbz8uc2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpfX1jYXRjaChhKXt5aWVsZHt0eXBlOiJlcnJvciIsZXJyb3I6YSBpbnN0YW5jZW9mIE8/YTpuZXcgTyhaLkludGVybmFsRXJyb3IsU3RyaW5nKGEpKX19fXJlcXVlc3QobixyLG8pe2NvbnN0e3JlbGF0ZWRSZXF1ZXN0SWQ6ZSxyZXN1bXB0aW9uVG9rZW46aSxvbnJlc3VtcHRpb250b2tlbjphLHRhc2s6cyxyZWxhdGVkVGFzazpjfT1vPz97fTtyZXR1cm4gbmV3IFByb21pc2UoKHUsbCk9Pntjb25zdCBnPUI9PntsKEIpfTtpZighdGhpcy5fdHJhbnNwb3J0KXtnKG5ldyBFcnJvcigiTm90IGNvbm5lY3RlZCIpKTtyZXR1cm59aWYodGhpcy5fb3B0aW9ucz8uZW5mb3JjZVN0cmljdENhcGFiaWxpdGllcz09PSEwKXRyeXt0aGlzLmFzc2VydENhcGFiaWxpdHlGb3JNZXRob2Qobi5tZXRob2QpLHMmJnRoaXMuYXNzZXJ0VGFza0NhcGFiaWxpdHkobi5tZXRob2QpfWNhdGNoKEIpe2coQik7cmV0dXJufW8/LnNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtjb25zdCB2PXRoaXMuX3JlcXVlc3RNZXNzYWdlSWQrKyxfPXsuLi5uLGpzb25ycGM6IjIuMCIsaWQ6dn07bz8ub25wcm9ncmVzcyYmKHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuc2V0KHYsby5vbnByb2dyZXNzKSxfLnBhcmFtcz17Li4ubi5wYXJhbXMsX21ldGE6ey4uLm4ucGFyYW1zPy5fbWV0YXx8e30scHJvZ3Jlc3NUb2tlbjp2fX0pLHMmJihfLnBhcmFtcz17Li4uXy5wYXJhbXMsdGFzazpzfSksYyYmKF8ucGFyYW1zPXsuLi5fLnBhcmFtcyxfbWV0YTp7Li4uXy5wYXJhbXM/Ll9tZXRhfHx7fSxbemVdOmN9fSk7Y29uc3QgeT1CPT57dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUodiksdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUodiksdGhpcy5fY2xlYW51cFRpbWVvdXQodiksdGhpcy5fdHJhbnNwb3J0Py5zZW5kKHtqc29ucnBjOiIyLjAiLG1ldGhvZDoibm90aWZpY2F0aW9ucy9jYW5jZWxsZWQiLHBhcmFtczp7cmVxdWVzdElkOnYscmVhc29uOlN0cmluZyhCKX19LHtyZWxhdGVkUmVxdWVzdElkOmUscmVzdW1wdGlvblRva2VuOmksb25yZXN1bXB0aW9udG9rZW46YX0pLmNhdGNoKEw9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gc2VuZCBjYW5jZWxsYXRpb246ICR7TH1gKSkpO2NvbnN0IEg9QiBpbnN0YW5jZW9mIE8/QjpuZXcgTyhaLlJlcXVlc3RUaW1lb3V0LFN0cmluZyhCKSk7bChIKX07dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5zZXQodixCPT57aWYoIW8/LnNpZ25hbD8uYWJvcnRlZCl7aWYoQiBpbnN0YW5jZW9mIEVycm9yKXJldHVybiBsKEIpO3RyeXtjb25zdCBIPUdkKHIsQi5yZXN1bHQpO0guc3VjY2Vzcz91KEguZGF0YSk6bChILmVycm9yKX1jYXRjaChIKXtsKEgpfX19KSxvPy5zaWduYWw/LmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoKT0+e3kobz8uc2lnbmFsPy5yZWFzb24pfSk7Y29uc3QgSj1vPy50aW1lb3V0Pz9LaCxBPSgpPT55KE8uZnJvbUVycm9yKFouUmVxdWVzdFRpbWVvdXQsIlJlcXVlc3QgdGltZWQgb3V0Iix7dGltZW91dDpKfSkpO3RoaXMuX3NldHVwVGltZW91dCh2LEosbz8ubWF4VG90YWxUaW1lb3V0LEEsbz8ucmVzZXRUaW1lb3V0T25Qcm9ncmVzcz8/ITEpO2NvbnN0IEFlPWM/LnRhc2tJZDtpZihBZSl7Y29uc3QgQj1IPT57Y29uc3QgTD10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldCh2KTtMP0woSCk6dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFJlc3BvbnNlIGhhbmRsZXIgbWlzc2luZyBmb3Igc2lkZS1jaGFubmVsZWQgcmVxdWVzdCAke3Z9YCkpfTt0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLnNldCh2LEIpLHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShBZSx7dHlwZToicmVxdWVzdCIsbWVzc2FnZTpfLHRpbWVzdGFtcDpEYXRlLm5vdygpfSkuY2F0Y2goSD0+e3RoaXMuX2NsZWFudXBUaW1lb3V0KHYpLGwoSCl9KX1lbHNlIHRoaXMuX3RyYW5zcG9ydC5zZW5kKF8se3JlbGF0ZWRSZXF1ZXN0SWQ6ZSxyZXN1bXB0aW9uVG9rZW46aSxvbnJlc3VtcHRpb250b2tlbjphfSkuY2F0Y2goQj0+e3RoaXMuX2NsZWFudXBUaW1lb3V0KHYpLGwoQil9KX0pfWFzeW5jIGdldFRhc2sobixyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRhc2tzL2dldCIscGFyYW1zOm59LEZhLHIpfWFzeW5jIGdldFRhc2tSZXN1bHQobixyLG8pe3JldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidGFza3MvcmVzdWx0IixwYXJhbXM6bn0scixvKX1hc3luYyBsaXN0VGFza3MobixyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRhc2tzL2xpc3QiLHBhcmFtczpufSxWYSxyKX1hc3luYyBjYW5jZWxUYXNrKG4scil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9jYW5jZWwiLHBhcmFtczpufSxQdixyKX1hc3luYyBub3RpZmljYXRpb24obixyKXtpZighdGhpcy5fdHJhbnNwb3J0KXRocm93IG5ldyBFcnJvcigiTm90IGNvbm5lY3RlZCIpO3RoaXMuYXNzZXJ0Tm90aWZpY2F0aW9uQ2FwYWJpbGl0eShuLm1ldGhvZCk7Y29uc3Qgbz1yPy5yZWxhdGVkVGFzaz8udGFza0lkO2lmKG8pe2NvbnN0IHM9ey4uLm4sanNvbnJwYzoiMi4wIixwYXJhbXM6ey4uLm4ucGFyYW1zLF9tZXRhOnsuLi5uLnBhcmFtcz8uX21ldGF8fHt9LFt6ZV06ci5yZWxhdGVkVGFza319fTthd2FpdCB0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2Uobyx7dHlwZToibm90aWZpY2F0aW9uIixtZXNzYWdlOnMsdGltZXN0YW1wOkRhdGUubm93KCl9KTtyZXR1cm59aWYoKHRoaXMuX29wdGlvbnM/LmRlYm91bmNlZE5vdGlmaWNhdGlvbk1ldGhvZHM/P1tdKS5pbmNsdWRlcyhuLm1ldGhvZCkmJiFuLnBhcmFtcyYmIXI/LnJlbGF0ZWRSZXF1ZXN0SWQmJiFyPy5yZWxhdGVkVGFzayl7aWYodGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuaGFzKG4ubWV0aG9kKSlyZXR1cm47dGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuYWRkKG4ubWV0aG9kKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57aWYodGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuZGVsZXRlKG4ubWV0aG9kKSwhdGhpcy5fdHJhbnNwb3J0KXJldHVybjtsZXQgcz17Li4ubixqc29ucnBjOiIyLjAifTtyPy5yZWxhdGVkVGFzayYmKHM9ey4uLnMscGFyYW1zOnsuLi5zLnBhcmFtcyxfbWV0YTp7Li4ucy5wYXJhbXM/Ll9tZXRhfHx7fSxbemVdOnIucmVsYXRlZFRhc2t9fX0pLHRoaXMuX3RyYW5zcG9ydD8uc2VuZChzLHIpLmNhdGNoKGM9PnRoaXMuX29uZXJyb3IoYykpfSk7cmV0dXJufWxldCBhPXsuLi5uLGpzb25ycGM6IjIuMCJ9O3I/LnJlbGF0ZWRUYXNrJiYoYT17Li4uYSxwYXJhbXM6ey4uLmEucGFyYW1zLF9tZXRhOnsuLi5hLnBhcmFtcz8uX21ldGF8fHt9LFt6ZV06ci5yZWxhdGVkVGFza319fSksYXdhaXQgdGhpcy5fdHJhbnNwb3J0LnNlbmQoYSxyKX1zZXRSZXF1ZXN0SGFuZGxlcihuLHIpe2NvbnN0IG89WnMobik7dGhpcy5hc3NlcnRSZXF1ZXN0SGFuZGxlckNhcGFiaWxpdHkobyksdGhpcy5fcmVxdWVzdEhhbmRsZXJzLnNldChvLChlLGkpPT57Y29uc3QgYT1ScyhuLGUpO3JldHVybiBQcm9taXNlLnJlc29sdmUocihhLGkpKX0pfXJlbW92ZVJlcXVlc3RIYW5kbGVyKG4pe3RoaXMuX3JlcXVlc3RIYW5kbGVycy5kZWxldGUobil9YXNzZXJ0Q2FuU2V0UmVxdWVzdEhhbmRsZXIobil7aWYodGhpcy5fcmVxdWVzdEhhbmRsZXJzLmhhcyhuKSl0aHJvdyBuZXcgRXJyb3IoYEEgcmVxdWVzdCBoYW5kbGVyIGZvciAke259IGFscmVhZHkgZXhpc3RzLCB3aGljaCB3b3VsZCBiZSBvdmVycmlkZGVuYCl9c2V0Tm90aWZpY2F0aW9uSGFuZGxlcihuLHIpe2NvbnN0IG89WnMobik7dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuc2V0KG8sZT0+e2NvbnN0IGk9UnMobixlKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIoaSkpfSl9cmVtb3ZlTm90aWZpY2F0aW9uSGFuZGxlcihuKXt0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycy5kZWxldGUobil9X2NsZWFudXBUYXNrUHJvZ3Jlc3NIYW5kbGVyKG4pe2NvbnN0IHI9dGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLmdldChuKTtyIT09dm9pZCAwJiYodGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUociksdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLmRlbGV0ZShuKSl9YXN5bmMgX2VucXVldWVUYXNrTWVzc2FnZShuLHIsbyl7aWYoIXRoaXMuX3Rhc2tTdG9yZXx8IXRoaXMuX3Rhc2tNZXNzYWdlUXVldWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZW5xdWV1ZSB0YXNrIG1lc3NhZ2U6IHRhc2tTdG9yZSBhbmQgdGFza01lc3NhZ2VRdWV1ZSBhcmUgbm90IGNvbmZpZ3VyZWQiKTtjb25zdCBlPXRoaXMuX29wdGlvbnM/Lm1heFRhc2tRdWV1ZVNpemU7YXdhaXQgdGhpcy5fdGFza01lc3NhZ2VRdWV1ZS5lbnF1ZXVlKG4scixvLGUpfWFzeW5jIF9jbGVhclRhc2tRdWV1ZShuLHIpe2lmKHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUpe2NvbnN0IG89YXdhaXQgdGhpcy5fdGFza01lc3NhZ2VRdWV1ZS5kZXF1ZXVlQWxsKG4scik7Zm9yKGNvbnN0IGUgb2YgbylpZihlLnR5cGU9PT0icmVxdWVzdCImJkVzKGUubWVzc2FnZSkpe2NvbnN0IGk9ZS5tZXNzYWdlLmlkLGE9dGhpcy5fcmVxdWVzdFJlc29sdmVycy5nZXQoaSk7YT8oYShuZXcgTyhaLkludGVybmFsRXJyb3IsIlRhc2sgY2FuY2VsbGVkIG9yIGNvbXBsZXRlZCIpKSx0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmRlbGV0ZShpKSk6dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFJlc29sdmVyIG1pc3NpbmcgZm9yIHJlcXVlc3QgJHtpfSBkdXJpbmcgdGFzayAke259IGNsZWFudXBgKSl9fX1hc3luYyBfd2FpdEZvclRhc2tVcGRhdGUobixyKXtsZXQgbz10aGlzLl9vcHRpb25zPy5kZWZhdWx0VGFza1BvbGxJbnRlcnZhbD8/MWUzO3RyeXtjb25zdCBlPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZT8uZ2V0VGFzayhuKTtlPy5wb2xsSW50ZXJ2YWwmJihvPWUucG9sbEludGVydmFsKX1jYXRjaHt9cmV0dXJuIG5ldyBQcm9taXNlKChlLGkpPT57aWYoci5hYm9ydGVkKXtpKG5ldyBPKFouSW52YWxpZFJlcXVlc3QsIlJlcXVlc3QgY2FuY2VsbGVkIikpO3JldHVybn1jb25zdCBhPXNldFRpbWVvdXQoZSxvKTtyLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoKT0+e2NsZWFyVGltZW91dChhKSxpKG5ldyBPKFouSW52YWxpZFJlcXVlc3QsIlJlcXVlc3QgY2FuY2VsbGVkIikpfSx7b25jZTohMH0pfSl9cmVxdWVzdFRhc2tTdG9yZShuLHIpe2NvbnN0IG89dGhpcy5fdGFza1N0b3JlO2lmKCFvKXRocm93IG5ldyBFcnJvcigiTm8gdGFzayBzdG9yZSBjb25maWd1cmVkIik7cmV0dXJue2NyZWF0ZVRhc2s6YXN5bmMgZT0+e2lmKCFuKXRocm93IG5ldyBFcnJvcigiTm8gcmVxdWVzdCBwcm92aWRlZCIpO3JldHVybiBhd2FpdCBvLmNyZWF0ZVRhc2soZSxuLmlkLHttZXRob2Q6bi5tZXRob2QscGFyYW1zOm4ucGFyYW1zfSxyKX0sZ2V0VGFzazphc3luYyBlPT57Y29uc3QgaT1hd2FpdCBvLmdldFRhc2soZSxyKTtpZighaSl0aHJvdyBuZXcgTyhaLkludmFsaWRQYXJhbXMsIkZhaWxlZCB0byByZXRyaWV2ZSB0YXNrOiBUYXNrIG5vdCBmb3VuZCIpO3JldHVybiBpfSxzdG9yZVRhc2tSZXN1bHQ6YXN5bmMoZSxpLGEpPT57YXdhaXQgby5zdG9yZVRhc2tSZXN1bHQoZSxpLGEscik7Y29uc3Qgcz1hd2FpdCBvLmdldFRhc2soZSxyKTtpZihzKXtjb25zdCBjPUxuLnBhcnNlKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIixwYXJhbXM6c30pO2F3YWl0IHRoaXMubm90aWZpY2F0aW9uKGMpLHhlKHMuc3RhdHVzKSYmdGhpcy5fY2xlYW51cFRhc2tQcm9ncmVzc0hhbmRsZXIoZSl9fSxnZXRUYXNrUmVzdWx0OmU9Pm8uZ2V0VGFza1Jlc3VsdChlLHIpLHVwZGF0ZVRhc2tTdGF0dXM6YXN5bmMoZSxpLGEpPT57Y29uc3Qgcz1hd2FpdCBvLmdldFRhc2soZSxyKTtpZighcyl0aHJvdyBuZXcgTyhaLkludmFsaWRQYXJhbXMsYFRhc2sgIiR7ZX0iIG5vdCBmb3VuZCAtIGl0IG1heSBoYXZlIGJlZW4gY2xlYW5lZCB1cGApO2lmKHhlKHMuc3RhdHVzKSl0aHJvdyBuZXcgTyhaLkludmFsaWRQYXJhbXMsYENhbm5vdCB1cGRhdGUgdGFzayAiJHtlfSIgZnJvbSB0ZXJtaW5hbCBzdGF0dXMgIiR7cy5zdGF0dXN9IiB0byAiJHtpfSIuIFRlcm1pbmFsIHN0YXRlcyAoY29tcGxldGVkLCBmYWlsZWQsIGNhbmNlbGxlZCkgY2Fubm90IHRyYW5zaXRpb24gdG8gb3RoZXIgc3RhdGVzLmApO2F3YWl0IG8udXBkYXRlVGFza1N0YXR1cyhlLGksYSxyKTtjb25zdCBjPWF3YWl0IG8uZ2V0VGFzayhlLHIpO2lmKGMpe2NvbnN0IHU9TG4ucGFyc2Uoe21ldGhvZDoibm90aWZpY2F0aW9ucy90YXNrcy9zdGF0dXMiLHBhcmFtczpjfSk7YXdhaXQgdGhpcy5ub3RpZmljYXRpb24odSkseGUoYy5zdGF0dXMpJiZ0aGlzLl9jbGVhbnVwVGFza1Byb2dyZXNzSGFuZGxlcihlKX19LGxpc3RUYXNrczplPT5vLmxpc3RUYXNrcyhlLHIpfX19ZnVuY3Rpb24gQ3ModCl7cmV0dXJuIHQhPT1udWxsJiZ0eXBlb2YgdD09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KHQpfWZ1bmN0aW9uIFdoKHQsbil7Y29uc3Qgcj17Li4udH07Zm9yKGNvbnN0IG8gaW4gbil7Y29uc3QgZT1vLGk9bltlXTtpZihpPT09dm9pZCAwKWNvbnRpbnVlO2NvbnN0IGE9cltlXTtDcyhhKSYmQ3MoaSk/cltlXT17Li4uYSwuLi5pfTpyW2VdPWl9cmV0dXJuIHJ9KHQ9PnR5cGVvZiByZXF1aXJlPCJ1Ij9yZXF1aXJlOnR5cGVvZiBQcm94eTwidSI/bmV3IFByb3h5KHQse2dldDoobixyKT0+KHR5cGVvZiByZXF1aXJlPCJ1Ij9yZXF1aXJlOm4pW3JdfSk6dCkoZnVuY3Rpb24odCl7aWYodHlwZW9mIHJlcXVpcmU8InUiKXJldHVybiByZXF1aXJlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aHJvdyBFcnJvcignRHluYW1pYyByZXF1aXJlIG9mICInK3QrJyIgaXMgbm90IHN1cHBvcnRlZCcpfSk7Y2xhc3MgR2ggZXh0ZW5kcyBCaHtfcmVnaXN0ZXJlZE1ldGhvZHM9bmV3IFNldDtfZXZlbnRTbG90cz1uZXcgTWFwO29uRXZlbnREaXNwYXRjaChuLHIpe31fZW5zdXJlRXZlbnRTbG90KG4pe2xldCByPXRoaXMuX2V2ZW50U2xvdHMuZ2V0KG4pO2lmKCFyKXtsZXQgbz10aGlzLmV2ZW50U2NoZW1hc1tuXTtpZighbyl0aHJvdyBFcnJvcihgVW5rbm93biBldmVudDogJHtTdHJpbmcobil9YCk7cj17bGlzdGVuZXJzOltdfSx0aGlzLl9ldmVudFNsb3RzLnNldChuLHIpO2xldCBlPW8uc2hhcGUubWV0aG9kLnZhbHVlO3RoaXMuX3JlZ2lzdGVyZWRNZXRob2RzLmFkZChlKTtsZXQgaT1yO3N1cGVyLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIobyxhPT57bGV0IHM9YS5wYXJhbXM7dGhpcy5vbkV2ZW50RGlzcGF0Y2gobixzKSxpLm9uSGFuZGxlcj8uKHMpO2ZvcihsZXQgYyBvZlsuLi5pLmxpc3RlbmVyc10pYyhzKX0pfXJldHVybiByfXNldEV2ZW50SGFuZGxlcihuLHIpe2xldCBvPXRoaXMuX2Vuc3VyZUV2ZW50U2xvdChuKTtvLm9uSGFuZGxlciYmciYmY29uc29sZS53YXJuKGBbTUNQIEFwcHNdIG9uJHtTdHJpbmcobil9IGhhbmRsZXIgcmVwbGFjZWQuIFVzZSBhZGRFdmVudExpc3RlbmVyKCIke1N0cmluZyhuKX0iLCDigKYpIHRvIGFkZCBtdWx0aXBsZSBsaXN0ZW5lcnMgd2l0aG91dCByZXBsYWNpbmcuYCksby5vbkhhbmRsZXI9cn1nZXRFdmVudEhhbmRsZXIobil7cmV0dXJuIHRoaXMuX2V2ZW50U2xvdHMuZ2V0KG4pPy5vbkhhbmRsZXJ9YWRkRXZlbnRMaXN0ZW5lcihuLHIpe3RoaXMuX2Vuc3VyZUV2ZW50U2xvdChuKS5saXN0ZW5lcnMucHVzaChyKX1yZW1vdmVFdmVudExpc3RlbmVyKG4scil7bGV0IG89dGhpcy5fZXZlbnRTbG90cy5nZXQobik7aWYoIW8pcmV0dXJuO2xldCBlPW8ubGlzdGVuZXJzLmluZGV4T2Yocik7ZSE9PS0xJiZvLmxpc3RlbmVycy5zcGxpY2UoZSwxKX1zZXRSZXF1ZXN0SGFuZGxlcj0obixyKT0+e3RoaXMuX2Fzc2VydE1ldGhvZE5vdFJlZ2lzdGVyZWQobiwic2V0UmVxdWVzdEhhbmRsZXIiKSxzdXBlci5zZXRSZXF1ZXN0SGFuZGxlcihuLHIpfTtzZXROb3RpZmljYXRpb25IYW5kbGVyPShuLHIpPT57dGhpcy5fYXNzZXJ0TWV0aG9kTm90UmVnaXN0ZXJlZChuLCJzZXROb3RpZmljYXRpb25IYW5kbGVyIiksc3VwZXIuc2V0Tm90aWZpY2F0aW9uSGFuZGxlcihuLHIpfTt3YXJuSWZSZXF1ZXN0SGFuZGxlclJlcGxhY2VkKG4scixvKXtyJiZvJiZjb25zb2xlLndhcm4oYFtNQ1AgQXBwc10gJHtufSBoYW5kbGVyIHJlcGxhY2VkLiBQcmV2aW91cyBoYW5kbGVyIHdpbGwgbm8gbG9uZ2VyIGJlIGNhbGxlZC5gKX1yZXBsYWNlUmVxdWVzdEhhbmRsZXI9KG4scik9PntsZXQgbz1uLnNoYXBlLm1ldGhvZC52YWx1ZTt0aGlzLl9yZWdpc3RlcmVkTWV0aG9kcy5hZGQobyksc3VwZXIuc2V0UmVxdWVzdEhhbmRsZXIobixyKX07X2Fzc2VydE1ldGhvZE5vdFJlZ2lzdGVyZWQobixyKXtsZXQgbz1uLnNoYXBlLm1ldGhvZC52YWx1ZTtpZih0aGlzLl9yZWdpc3RlcmVkTWV0aG9kcy5oYXMobykpdGhyb3cgRXJyb3IoYEhhbmRsZXIgZm9yICIke299IiBhbHJlYWR5IHJlZ2lzdGVyZWQgKHZpYSAke3J9KS4gVXNlIGFkZEV2ZW50TGlzdGVuZXIoKSB0byBhdHRhY2ggbXVsdGlwbGUgbGlzdGVuZXJzLCBvciB0aGUgb24qIHNldHRlciBmb3IgcmVwbGFjZSBzZW1hbnRpY3MuYCk7dGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuYWRkKG8pfX12YXIgWGg9IjIwMjYtMDEtMjYiLFloPSJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtaW5wdXQtcGFydGlhbCI7Y2xhc3MgUWh7ZXZlbnRUYXJnZXQ7ZXZlbnRTb3VyY2U7bWVzc2FnZUxpc3RlbmVyO2NvbnN0cnVjdG9yKG49d2luZG93LnBhcmVudCxyKXt0aGlzLmV2ZW50VGFyZ2V0PW4sdGhpcy5ldmVudFNvdXJjZT1yLHRoaXMubWVzc2FnZUxpc3RlbmVyPW89PntpZihyJiZvLnNvdXJjZSE9PXRoaXMuZXZlbnRTb3VyY2Upe2NvbnNvbGUuZGVidWcoIklnbm9yaW5nIG1lc3NhZ2UgZnJvbSB1bmtub3duIHNvdXJjZSIsbyk7cmV0dXJufWxldCBlPXB2LnNhZmVQYXJzZShvLmRhdGEpO2Uuc3VjY2Vzcz8oY29uc29sZS5kZWJ1ZygiUGFyc2VkIG1lc3NhZ2UiLGUuZGF0YSksdGhpcy5vbm1lc3NhZ2U/LihlLmRhdGEpKTpvLmRhdGE/Lmpzb25ycGMhPT0iMi4wIj9jb25zb2xlLmRlYnVnKCJJZ25vcmluZyBub24tSlNPTi1SUEMgbWVzc2FnZSIsZS5lcnJvci5tZXNzYWdlLG8pOihjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gcGFyc2UgbWVzc2FnZSIsZS5lcnJvci5tZXNzYWdlLG8pLHRoaXMub25lcnJvcj8uKEVycm9yKCJJbnZhbGlkIEpTT04tUlBDIG1lc3NhZ2UgcmVjZWl2ZWQ6ICIrZS5lcnJvci5tZXNzYWdlKSkpfX1hc3luYyBzdGFydCgpe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLm1lc3NhZ2VMaXN0ZW5lcil9YXN5bmMgc2VuZChuLHIpe24ubWV0aG9kIT09WWgmJmNvbnNvbGUuZGVidWcoIlNlbmRpbmcgbWVzc2FnZSIsbiksdGhpcy5ldmVudFRhcmdldC5wb3N0TWVzc2FnZShuLCIqIil9YXN5bmMgY2xvc2UoKXt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5tZXNzYWdlTGlzdGVuZXIpLHRoaXMub25jbG9zZT8uKCl9b25jbG9zZTtvbmVycm9yO29ubWVzc2FnZTtzZXNzaW9uSWQ7c2V0UHJvdG9jb2xWZXJzaW9ufXZhciBlXz1VKFttKCJsaWdodCIpLG0oImRhcmsiKV0pLmRlc2NyaWJlKCJDb2xvciB0aGVtZSBwcmVmZXJlbmNlIGZvciB0aGUgaG9zdCBlbnZpcm9ubWVudC4iKSxJdD1VKFttKCJpbmxpbmUiKSxtKCJmdWxsc2NyZWVuIiksbSgicGlwIildKS5kZXNjcmliZSgiRGlzcGxheSBtb2RlIGZvciBVSSBwcmVzZW50YXRpb24uIiksdF89VShbbSgiLS1jb2xvci1iYWNrZ3JvdW5kLXByaW1hcnkiKSxtKCItLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5IiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5IiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLWludmVyc2UiKSxtKCItLWNvbG9yLWJhY2tncm91bmQtZ2hvc3QiKSxtKCItLWNvbG9yLWJhY2tncm91bmQtaW5mbyIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC1kYW5nZXIiKSxtKCItLWNvbG9yLWJhY2tncm91bmQtc3VjY2VzcyIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC13YXJuaW5nIiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLWRpc2FibGVkIiksbSgiLS1jb2xvci10ZXh0LXByaW1hcnkiKSxtKCItLWNvbG9yLXRleHQtc2Vjb25kYXJ5IiksbSgiLS1jb2xvci10ZXh0LXRlcnRpYXJ5IiksbSgiLS1jb2xvci10ZXh0LWludmVyc2UiKSxtKCItLWNvbG9yLXRleHQtZ2hvc3QiKSxtKCItLWNvbG9yLXRleHQtaW5mbyIpLG0oIi0tY29sb3ItdGV4dC1kYW5nZXIiKSxtKCItLWNvbG9yLXRleHQtc3VjY2VzcyIpLG0oIi0tY29sb3ItdGV4dC13YXJuaW5nIiksbSgiLS1jb2xvci10ZXh0LWRpc2FibGVkIiksbSgiLS1jb2xvci1ib3JkZXItcHJpbWFyeSIpLG0oIi0tY29sb3ItYm9yZGVyLXNlY29uZGFyeSIpLG0oIi0tY29sb3ItYm9yZGVyLXRlcnRpYXJ5IiksbSgiLS1jb2xvci1ib3JkZXItaW52ZXJzZSIpLG0oIi0tY29sb3ItYm9yZGVyLWdob3N0IiksbSgiLS1jb2xvci1ib3JkZXItaW5mbyIpLG0oIi0tY29sb3ItYm9yZGVyLWRhbmdlciIpLG0oIi0tY29sb3ItYm9yZGVyLXN1Y2Nlc3MiKSxtKCItLWNvbG9yLWJvcmRlci13YXJuaW5nIiksbSgiLS1jb2xvci1ib3JkZXItZGlzYWJsZWQiKSxtKCItLWNvbG9yLXJpbmctcHJpbWFyeSIpLG0oIi0tY29sb3ItcmluZy1zZWNvbmRhcnkiKSxtKCItLWNvbG9yLXJpbmctaW52ZXJzZSIpLG0oIi0tY29sb3ItcmluZy1pbmZvIiksbSgiLS1jb2xvci1yaW5nLWRhbmdlciIpLG0oIi0tY29sb3ItcmluZy1zdWNjZXNzIiksbSgiLS1jb2xvci1yaW5nLXdhcm5pbmciKSxtKCItLWZvbnQtc2FucyIpLG0oIi0tZm9udC1tb25vIiksbSgiLS1mb250LXdlaWdodC1ub3JtYWwiKSxtKCItLWZvbnQtd2VpZ2h0LW1lZGl1bSIpLG0oIi0tZm9udC13ZWlnaHQtc2VtaWJvbGQiKSxtKCItLWZvbnQtd2VpZ2h0LWJvbGQiKSxtKCItLWZvbnQtdGV4dC14cy1zaXplIiksbSgiLS1mb250LXRleHQtc20tc2l6ZSIpLG0oIi0tZm9udC10ZXh0LW1kLXNpemUiKSxtKCItLWZvbnQtdGV4dC1sZy1zaXplIiksbSgiLS1mb250LWhlYWRpbmcteHMtc2l6ZSIpLG0oIi0tZm9udC1oZWFkaW5nLXNtLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy1tZC1zaXplIiksbSgiLS1mb250LWhlYWRpbmctbGctc2l6ZSIpLG0oIi0tZm9udC1oZWFkaW5nLXhsLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy0yeGwtc2l6ZSIpLG0oIi0tZm9udC1oZWFkaW5nLTN4bC1zaXplIiksbSgiLS1mb250LXRleHQteHMtbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtdGV4dC1zbS1saW5lLWhlaWdodCIpLG0oIi0tZm9udC10ZXh0LW1kLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LXRleHQtbGctbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtaGVhZGluZy14cy1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLXNtLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LWhlYWRpbmctbWQtbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtaGVhZGluZy1sZy1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLXhsLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LWhlYWRpbmctMnhsLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LWhlYWRpbmctM3hsLWxpbmUtaGVpZ2h0IiksbSgiLS1ib3JkZXItcmFkaXVzLXhzIiksbSgiLS1ib3JkZXItcmFkaXVzLXNtIiksbSgiLS1ib3JkZXItcmFkaXVzLW1kIiksbSgiLS1ib3JkZXItcmFkaXVzLWxnIiksbSgiLS1ib3JkZXItcmFkaXVzLXhsIiksbSgiLS1ib3JkZXItcmFkaXVzLWZ1bGwiKSxtKCItLWJvcmRlci13aWR0aC1yZWd1bGFyIiksbSgiLS1zaGFkb3ctaGFpcmxpbmUiKSxtKCItLXNoYWRvdy1zbSIpLG0oIi0tc2hhZG93LW1kIiksbSgiLS1zaGFkb3ctbGciKV0pLmRlc2NyaWJlKCJDU1MgdmFyaWFibGUga2V5cyBhdmFpbGFibGUgdG8gTUNQIGFwcHMgZm9yIHRoZW1pbmcuIiksbl89UCh0Xy5kZXNjcmliZShgU3R5bGUgdmFyaWFibGVzIGZvciB0aGVtaW5nIE1DUCBhcHBzLgoKSW5kaXZpZHVhbCBzdHlsZSBrZXlzIGFyZSBvcHRpb25hbCAtIGhvc3RzIG1heSBwcm92aWRlIGFueSBzdWJzZXQgb2YgdGhlc2UgdmFsdWVzLgpWYWx1ZXMgYXJlIHN0cmluZ3MgY29udGFpbmluZyBDU1MgdmFsdWVzIChjb2xvcnMsIHNpemVzLCBmb250IHN0YWNrcywgZXRjLikuCgpOb3RlOiBUaGlzIHR5cGUgdXNlcyBcYFJlY29yZDxLLCBzdHJpbmcgfCB1bmRlZmluZWQ+XGAgcmF0aGVyIHRoYW4gXGBQYXJ0aWFsPFJlY29yZDxLLCBzdHJpbmc+PlxgCmZvciBjb21wYXRpYmlsaXR5IHdpdGggWm9kIHNjaGVtYSBnZW5lcmF0aW9uLiBCb3RoIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgdmFsaWRhdGlvbi5gKSxVKFtwKCksWWUoKV0pLmRlc2NyaWJlKGBTdHlsZSB2YXJpYWJsZXMgZm9yIHRoZW1pbmcgTUNQIGFwcHMuCgpJbmRpdmlkdWFsIHN0eWxlIGtleXMgYXJlIG9wdGlvbmFsIC0gaG9zdHMgbWF5IHByb3ZpZGUgYW55IHN1YnNldCBvZiB0aGVzZSB2YWx1ZXMuClZhbHVlcyBhcmUgc3RyaW5ncyBjb250YWluaW5nIENTUyB2YWx1ZXMgKGNvbG9ycywgc2l6ZXMsIGZvbnQgc3RhY2tzLCBldGMuKS4KCk5vdGU6IFRoaXMgdHlwZSB1c2VzIFxgUmVjb3JkPEssIHN0cmluZyB8IHVuZGVmaW5lZD5cYCByYXRoZXIgdGhhbiBcYFBhcnRpYWw8UmVjb3JkPEssIHN0cmluZz4+XGAKZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBab2Qgc2NoZW1hIGdlbmVyYXRpb24uIEJvdGggYXJlIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IGZvciB2YWxpZGF0aW9uLmApKS5kZXNjcmliZShgU3R5bGUgdmFyaWFibGVzIGZvciB0aGVtaW5nIE1DUCBhcHBzLgoKSW5kaXZpZHVhbCBzdHlsZSBrZXlzIGFyZSBvcHRpb25hbCAtIGhvc3RzIG1heSBwcm92aWRlIGFueSBzdWJzZXQgb2YgdGhlc2UgdmFsdWVzLgpWYWx1ZXMgYXJlIHN0cmluZ3MgY29udGFpbmluZyBDU1MgdmFsdWVzIChjb2xvcnMsIHNpemVzLCBmb250IHN0YWNrcywgZXRjLikuCgpOb3RlOiBUaGlzIHR5cGUgdXNlcyBcYFJlY29yZDxLLCBzdHJpbmcgfCB1bmRlZmluZWQ+XGAgcmF0aGVyIHRoYW4gXGBQYXJ0aWFsPFJlY29yZDxLLCBzdHJpbmc+PlxgCmZvciBjb21wYXRpYmlsaXR5IHdpdGggWm9kIHNjaGVtYSBnZW5lcmF0aW9uLiBCb3RoIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgdmFsaWRhdGlvbi5gKTtmKHttZXRob2Q6bSgidWkvb3Blbi1saW5rIikscGFyYW1zOmYoe3VybDpwKCkuZGVzY3JpYmUoIlVSTCB0byBvcGVuIGluIHRoZSBob3N0J3MgYnJvd3NlciIpfSl9KTt2YXIgcl89Zih7aXNFcnJvcjpFKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiVHJ1ZSBpZiB0aGUgaG9zdCBmYWlsZWQgdG8gb3BlbiB0aGUgVVJMIChlLmcuLCBkdWUgdG8gc2VjdXJpdHkgcG9saWN5KS4iKX0pLnBhc3N0aHJvdWdoKCksaV89Zih7aXNFcnJvcjpFKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiVHJ1ZSBpZiB0aGUgZG93bmxvYWQgZmFpbGVkIChlLmcuLCB1c2VyIGNhbmNlbGxlZCBvciBob3N0IGRlbmllZCkuIil9KS5wYXNzdGhyb3VnaCgpLG9fPWYoe2lzRXJyb3I6RSgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGhvc3QgcmVqZWN0ZWQgb3IgZmFpbGVkIHRvIGRlbGl2ZXIgdGhlIG1lc3NhZ2UuIil9KS5wYXNzdGhyb3VnaCgpO2Yoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3NhbmRib3gtcHJveHktcmVhZHkiKSxwYXJhbXM6Zih7fSl9KTt2YXIgZXM9Zih7Y29ubmVjdERvbWFpbnM6dyhwKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYE9yaWdpbnMgZm9yIG5ldHdvcmsgcmVxdWVzdHMgKGZldGNoL1hIUi9XZWJTb2NrZXQpLgoKLSBNYXBzIHRvIENTUCBcYGNvbm5lY3Qtc3JjXGAgZGlyZWN0aXZlCi0gRW1wdHkgb3Igb21pdHRlZCDihpIgbm8gbmV0d29yayBjb25uZWN0aW9ucyAoc2VjdXJlIGRlZmF1bHQpYCkscmVzb3VyY2VEb21haW5zOncocCgpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJPcmlnaW5zIGZvciBzdGF0aWMgcmVzb3VyY2VzIChpbWFnZXMsIHNjcmlwdHMsIHN0eWxlc2hlZXRzLCBmb250cywgbWVkaWEpLlxuXG4tIE1hcHMgdG8gQ1NQIGBpbWctc3JjYCwgYHNjcmlwdC1zcmNgLCBgc3R5bGUtc3JjYCwgYGZvbnQtc3JjYCwgYG1lZGlhLXNyY2AgZGlyZWN0aXZlc1xuLSBXaWxkY2FyZCBzdWJkb21haW5zIHN1cHBvcnRlZDogYGh0dHBzOi8vKi5leGFtcGxlLmNvbWBcbi0gRW1wdHkgb3Igb21pdHRlZCDihpIgbm8gbmV0d29yayByZXNvdXJjZXMgKHNlY3VyZSBkZWZhdWx0KSIpLGZyYW1lRG9tYWluczp3KHAoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiT3JpZ2lucyBmb3IgbmVzdGVkIGlmcmFtZXMuXG5cbi0gTWFwcyB0byBDU1AgYGZyYW1lLXNyY2AgZGlyZWN0aXZlXG4tIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5lc3RlZCBpZnJhbWVzIGFsbG93ZWQgKGBmcmFtZS1zcmMgJ25vbmUnYCkiKSxiYXNlVXJpRG9tYWluczp3KHAoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiQWxsb3dlZCBiYXNlIFVSSXMgZm9yIHRoZSBkb2N1bWVudC5cblxuLSBNYXBzIHRvIENTUCBgYmFzZS11cmlgIGRpcmVjdGl2ZVxuLSBFbXB0eSBvciBvbWl0dGVkIOKGkiBvbmx5IHNhbWUgb3JpZ2luIGFsbG93ZWQgKGBiYXNlLXVyaSAnc2VsZidgKSIpfSksdHM9Zih7Y2FtZXJhOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgY2FtZXJhIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgY2FtZXJhYCBmZWF0dXJlLiIpLG1pY3JvcGhvbmU6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUmVxdWVzdCBtaWNyb3Bob25lIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgbWljcm9waG9uZWAgZmVhdHVyZS4iKSxnZW9sb2NhdGlvbjpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJSZXF1ZXN0IGdlb2xvY2F0aW9uIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgZ2VvbG9jYXRpb25gIGZlYXR1cmUuIiksY2xpcGJvYXJkV3JpdGU6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUmVxdWVzdCBjbGlwYm9hcmQgd3JpdGUgYWNjZXNzLlxuXG5NYXBzIHRvIFBlcm1pc3Npb24gUG9saWN5IGBjbGlwYm9hcmQtd3JpdGVgIGZlYXR1cmUuIil9KTtmKHttZXRob2Q6bSgidWkvbm90aWZpY2F0aW9ucy9zaXplLWNoYW5nZWQiKSxwYXJhbXM6Zih7d2lkdGg6eCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk5ldyB3aWR0aCBpbiBwaXhlbHMuIiksaGVpZ2h0OngoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJOZXcgaGVpZ2h0IGluIHBpeGVscy4iKX0pfSk7dmFyIGFfPWYoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtaW5wdXQiKSxwYXJhbXM6Zih7YXJndW1lbnRzOlAocCgpLE4oKS5kZXNjcmliZSgiQ29tcGxldGUgdG9vbCBjYWxsIGFyZ3VtZW50cyBhcyBrZXktdmFsdWUgcGFpcnMuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNvbXBsZXRlIHRvb2wgY2FsbCBhcmd1bWVudHMgYXMga2V5LXZhbHVlIHBhaXJzLiIpfSl9KSxzXz1mKHttZXRob2Q6bSgidWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0LXBhcnRpYWwiKSxwYXJhbXM6Zih7YXJndW1lbnRzOlAocCgpLE4oKS5kZXNjcmliZSgiUGFydGlhbCB0b29sIGNhbGwgYXJndW1lbnRzIChpbmNvbXBsZXRlLCBtYXkgY2hhbmdlKS4iKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUGFydGlhbCB0b29sIGNhbGwgYXJndW1lbnRzIChpbmNvbXBsZXRlLCBtYXkgY2hhbmdlKS4iKX0pfSksY189Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvdG9vbC1jYW5jZWxsZWQiKSxwYXJhbXM6Zih7cmVhc29uOnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdPcHRpb25hbCByZWFzb24gZm9yIHRoZSBjYW5jZWxsYXRpb24gKGUuZy4sICJ1c2VyIGFjdGlvbiIsICJ0aW1lb3V0IikuJyl9KX0pLHVfPWYoe2ZvbnRzOnAoKS5vcHRpb25hbCgpfSksbF89Zih7dmFyaWFibGVzOm5fLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUyB2YXJpYWJsZXMgZm9yIHRoZW1pbmcgdGhlIGFwcC4iKSxjc3M6dV8ub3B0aW9uYWwoKS5kZXNjcmliZSgiQ1NTIGJsb2NrcyB0aGF0IGFwcHMgY2FuIGluamVjdC4iKX0pLGRfPWYoe21ldGhvZDptKCJ1aS9yZXNvdXJjZS10ZWFyZG93biIpLHBhcmFtczpmKHt9KX0pO1AocCgpLE4oKSk7dmFyIEFzPWYoe3RleHQ6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyB0ZXh0IGNvbnRlbnQgYmxvY2tzLiIpLGltYWdlOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgaW1hZ2UgY29udGVudCBibG9ja3MuIiksYXVkaW86Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBhdWRpbyBjb250ZW50IGJsb2Nrcy4iKSxyZXNvdXJjZTpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlc291cmNlIGNvbnRlbnQgYmxvY2tzLiIpLHJlc291cmNlTGluazpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlc291cmNlIGxpbmsgY29udGVudCBibG9ja3MuIiksc3RydWN0dXJlZENvbnRlbnQ6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBzdHJ1Y3R1cmVkIGNvbnRlbnQuIil9KTtmKHttZXRob2Q6bSgidWkvbm90aWZpY2F0aW9ucy9yZXF1ZXN0LXRlYXJkb3duIikscGFyYW1zOmYoe30pLm9wdGlvbmFsKCl9KTt2YXIgbV89Zih7ZXhwZXJpbWVudGFsOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkV4cGVyaW1lbnRhbCBmZWF0dXJlcyAoc3RydWN0dXJlIFRCRCkuIiksb3BlbkxpbmtzOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgb3BlbmluZyBleHRlcm5hbCBVUkxzLiIpLGRvd25sb2FkRmlsZTpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIGZpbGUgZG93bmxvYWRzIHZpYSB1aS9kb3dubG9hZC1maWxlLiIpLHNlcnZlclRvb2xzOmYoe2xpc3RDaGFuZ2VkOkUoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHRvb2xzL2xpc3RfY2hhbmdlZCBub3RpZmljYXRpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBjYW4gcHJveHkgdG9vbCBjYWxscyB0byB0aGUgTUNQIHNlcnZlci4iKSxzZXJ2ZXJSZXNvdXJjZXM6Zih7bGlzdENoYW5nZWQ6RSgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgcmVzb3VyY2VzL2xpc3RfY2hhbmdlZCBub3RpZmljYXRpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBjYW4gcHJveHkgcmVzb3VyY2UgcmVhZHMgdG8gdGhlIE1DUCBzZXJ2ZXIuIiksbG9nZ2luZzpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFjY2VwdHMgbG9nIG1lc3NhZ2VzLiIpLHNhbmRib3g6Zih7cGVybWlzc2lvbnM6dHMub3B0aW9uYWwoKS5kZXNjcmliZSgiUGVybWlzc2lvbnMgZ3JhbnRlZCBieSB0aGUgaG9zdCAoY2FtZXJhLCBtaWNyb3Bob25lLCBnZW9sb2NhdGlvbikuIiksY3NwOmVzLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUCBkb21haW5zIGFwcHJvdmVkIGJ5IHRoZSBob3N0LiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiU2FuZGJveCBjb25maWd1cmF0aW9uIGFwcGxpZWQgYnkgdGhlIGhvc3QuIiksdXBkYXRlTW9kZWxDb250ZXh0OkFzLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgYWNjZXB0cyBjb250ZXh0IHVwZGF0ZXMgKHVpL3VwZGF0ZS1tb2RlbC1jb250ZXh0KSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgbW9kZWwncyBjb250ZXh0IGZvciBmdXR1cmUgdHVybnMuIiksbWVzc2FnZTpBcy5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlY2VpdmluZyBjb250ZW50IG1lc3NhZ2VzICh1aS9tZXNzYWdlKSBmcm9tIHRoZSB2aWV3LiIpLHNhbXBsaW5nOmYoe3Rvb2xzOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgdG9vbCB1c2UgdmlhIGB0b29sc2AgYW5kIGB0b29sQ2hvaWNlYCBwYXJhbWV0ZXJzLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBMTE0gc2FtcGxpbmcgKHNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2UpIGZyb20gdGhlIHZpZXcuXG5NaXJyb3JzIHRoZSBNQ1AgYENsaWVudENhcGFiaWxpdGllcy5zYW1wbGluZ2Agc2hhcGUgc28gaG9zdHMgY2FuIHBhc3MgaXQgdGhyb3VnaC4iKX0pLHBfPWYoe2V4cGVyaW1lbnRhbDpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJFeHBlcmltZW50YWwgZmVhdHVyZXMgKHN0cnVjdHVyZSBUQkQpLiIpLHRvb2xzOmYoe2xpc3RDaGFuZ2VkOkUoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJBcHAgc3VwcG9ydHMgdG9vbHMvbGlzdF9jaGFuZ2VkIG5vdGlmaWNhdGlvbnMuIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJBcHAgZXhwb3NlcyBNQ1Atc3R5bGUgdG9vbHMgdGhhdCB0aGUgaG9zdCBjYW4gY2FsbC4iKSxhdmFpbGFibGVEaXNwbGF5TW9kZXM6dyhJdCkub3B0aW9uYWwoKS5kZXNjcmliZSgiRGlzcGxheSBtb2RlcyB0aGUgYXBwIHN1cHBvcnRzLiIpfSk7Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvaW5pdGlhbGl6ZWQiKSxwYXJhbXM6Zih7fSkub3B0aW9uYWwoKX0pO2Yoe2NzcDplcy5vcHRpb25hbCgpLmRlc2NyaWJlKCJDb250ZW50IFNlY3VyaXR5IFBvbGljeSBjb25maWd1cmF0aW9uIGZvciBVSSByZXNvdXJjZXMuIikscGVybWlzc2lvbnM6dHMub3B0aW9uYWwoKS5kZXNjcmliZSgiU2FuZGJveCBwZXJtaXNzaW9ucyByZXF1ZXN0ZWQgYnkgdGhlIFVJIHJlc291cmNlLiIpLGRvbWFpbjpwKCkub3B0aW9uYWwoKS5kZXNjcmliZShgRGVkaWNhdGVkIG9yaWdpbiBmb3IgdmlldyBzYW5kYm94LgoKVXNlZnVsIHdoZW4gdmlld3MgbmVlZCBzdGFibGUsIGRlZGljYXRlZCBvcmlnaW5zIGZvciBPQXV0aCBjYWxsYmFja3MsIENPUlMgcG9saWNpZXMsIG9yIEFQSSBrZXkgYWxsb3dsaXN0cy4KCioqSG9zdC1kZXBlbmRlbnQ6KiogVGhlIGZvcm1hdCBhbmQgdmFsaWRhdGlvbiBydWxlcyBmb3IgdGhpcyBmaWVsZCBhcmUgZGV0ZXJtaW5lZCBieSBlYWNoIGhvc3QuIFNlcnZlcnMgTVVTVCBjb25zdWx0IGhvc3Qtc3BlY2lmaWMgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGV4cGVjdGVkIGRvbWFpbiBmb3JtYXQuIENvbW1vbiBwYXR0ZXJucyBpbmNsdWRlOgotIEhhc2gtYmFzZWQgc3ViZG9tYWlucyAoZS5nLiwgXGB7aGFzaH0uY2xhdWRlbWNwY29udGVudC5jb21cYCkKLSBVUkwtZGVyaXZlZCBzdWJkb21haW5zIChlLmcuLCBcYHd3dy1leGFtcGxlLWNvbS5vYWl1c2VyY29udGVudC5jb21cYCkKCklmIG9taXR0ZWQsIGhvc3QgdXNlcyBkZWZhdWx0IHNhbmRib3ggb3JpZ2luICh0eXBpY2FsbHkgcGVyLWNvbnZlcnNhdGlvbikuYCkscHJlZmVyc0JvcmRlcjpFKCkub3B0aW9uYWwoKS5kZXNjcmliZShgVmlzdWFsIGJvdW5kYXJ5IHByZWZlcmVuY2UgLSB0cnVlIGlmIHZpZXcgcHJlZmVycyBhIHZpc2libGUgYm9yZGVyLgoKQm9vbGVhbiByZXF1ZXN0aW5nIHdoZXRoZXIgYSB2aXNpYmxlIGJvcmRlciBhbmQgYmFja2dyb3VuZCBpcyBwcm92aWRlZCBieSB0aGUgaG9zdC4gU3BlY2lmeWluZyBhbiBleHBsaWNpdCB2YWx1ZSBmb3IgdGhpcyBpcyByZWNvbW1lbmRlZCBiZWNhdXNlIGhvc3RzJyBkZWZhdWx0cyBtYXkgdmFyeS4KCi0gXGB0cnVlXGA6IHJlcXVlc3QgdmlzaWJsZSBib3JkZXIgKyBiYWNrZ3JvdW5kCi0gXGBmYWxzZVxgOiByZXF1ZXN0IG5vIHZpc2libGUgYm9yZGVyICsgYmFja2dyb3VuZAotIG9taXR0ZWQ6IGhvc3QgZGVjaWRlcyBib3JkZXJgKX0pO2Yoe21ldGhvZDptKCJ1aS9yZXF1ZXN0LWRpc3BsYXktbW9kZSIpLHBhcmFtczpmKHttb2RlOkl0LmRlc2NyaWJlKCJUaGUgZGlzcGxheSBtb2RlIGJlaW5nIHJlcXVlc3RlZC4iKX0pfSk7dmFyIGZfPWYoe21vZGU6SXQuZGVzY3JpYmUoIlRoZSBkaXNwbGF5IG1vZGUgdGhhdCB3YXMgYWN0dWFsbHkgc2V0LiBNYXkgZGlmZmVyIGZyb20gcmVxdWVzdGVkIGlmIG5vdCBzdXBwb3J0ZWQuIil9KS5wYXNzdGhyb3VnaCgpLGdfPVUoW20oIm1vZGVsIiksbSgiYXBwIildKS5kZXNjcmliZSgiVG9vbCB2aXNpYmlsaXR5IHNjb3BlIC0gd2hvIGNhbiBhY2Nlc3MgdGhlIHRvb2wuIik7Zih7cmVzb3VyY2VVcmk6cCgpLm9wdGlvbmFsKCksdmlzaWJpbGl0eTp3KGdfKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBXaG8gY2FuIGFjY2VzcyB0aGlzIHRvb2wuIERlZmF1bHQ6IFsibW9kZWwiLCAiYXBwIl0KLSAibW9kZWwiOiBUb29sIHZpc2libGUgdG8gYW5kIGNhbGxhYmxlIGJ5IHRoZSBhZ2VudAotICJhcHAiOiBUb29sIGNhbGxhYmxlIGJ5IHRoZSBhcHAgZnJvbSB0aGlzIHNlcnZlciBvbmx5YCksY3NwOkRlKCkub3B0aW9uYWwoKSxwZXJtaXNzaW9uczpEZSgpLm9wdGlvbmFsKCl9KTtmKHttaW1lVHlwZXM6dyhwKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0FycmF5IG9mIHN1cHBvcnRlZCBNSU1FIHR5cGVzIGZvciBVSSByZXNvdXJjZXMuXG5NdXN0IGluY2x1ZGUgYCJ0ZXh0L2h0bWw7cHJvZmlsZT1tY3AtYXBwImAgZm9yIE1DUCBBcHBzIHN1cHBvcnQuJyl9KTtmKHttZXRob2Q6bSgidWkvZG93bmxvYWQtZmlsZSIpLHBhcmFtczpmKHtjb250ZW50czp3KFUoW19tLCRtXSkpLmRlc2NyaWJlKCJSZXNvdXJjZSBjb250ZW50cyB0byBkb3dubG9hZCDigJQgZW1iZWRkZWQgKGlubGluZSBkYXRhKSBvciBsaW5rZWQgKGhvc3QgZmV0Y2hlcykuIFVzZXMgc3RhbmRhcmQgTUNQIHJlc291cmNlIHR5cGVzLiIpfSl9KTtmKHttZXRob2Q6bSgidWkvbWVzc2FnZSIpLHBhcmFtczpmKHtyb2xlOm0oInVzZXIiKS5kZXNjcmliZSgnTWVzc2FnZSByb2xlLCBjdXJyZW50bHkgb25seSAidXNlciIgaXMgc3VwcG9ydGVkLicpLGNvbnRlbnQ6dyhqbikuZGVzY3JpYmUoIk1lc3NhZ2UgY29udGVudCBibG9ja3MgKHRleHQsIGltYWdlLCBldGMuKS4iKX0pfSk7Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvc2FuZGJveC1yZXNvdXJjZS1yZWFkeSIpLHBhcmFtczpmKHtodG1sOnAoKS5kZXNjcmliZSgiSFRNTCBjb250ZW50IHRvIGxvYWQgaW50byB0aGUgaW5uZXIgaWZyYW1lLiIpLHNhbmRib3g6cCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk9wdGlvbmFsIG92ZXJyaWRlIGZvciB0aGUgaW5uZXIgaWZyYW1lJ3Mgc2FuZGJveCBhdHRyaWJ1dGUuIiksY3NwOmVzLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUCBjb25maWd1cmF0aW9uIGZyb20gcmVzb3VyY2UgbWV0YWRhdGEuIikscGVybWlzc2lvbnM6dHMub3B0aW9uYWwoKS5kZXNjcmliZSgiU2FuZGJveCBwZXJtaXNzaW9ucyBmcm9tIHJlc291cmNlIG1ldGFkYXRhLiIpfSl9KTt2YXIgdl89Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvdG9vbC1yZXN1bHQiKSxwYXJhbXM6ZWkuZGVzY3JpYmUoIlN0YW5kYXJkIE1DUCB0b29sIGV4ZWN1dGlvbiByZXN1bHQuIil9KSxJbT1mKHt0b29sSW5mbzpmKHtpZDp3bi5vcHRpb25hbCgpLmRlc2NyaWJlKCJKU09OLVJQQyBpZCBvZiB0aGUgdG9vbHMvY2FsbCByZXF1ZXN0LiIpLHRvb2w6UWEuZGVzY3JpYmUoIlRvb2wgZGVmaW5pdGlvbiBpbmNsdWRpbmcgbmFtZSwgaW5wdXRTY2hlbWEsIGV0Yy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk1ldGFkYXRhIG9mIHRoZSB0b29sIGNhbGwgdGhhdCBpbnN0YW50aWF0ZWQgdGhpcyBBcHAuIiksdGhlbWU6ZV8ub3B0aW9uYWwoKS5kZXNjcmliZSgiQ3VycmVudCBjb2xvciB0aGVtZSBwcmVmZXJlbmNlLiIpLHN0eWxlczpsXy5vcHRpb25hbCgpLmRlc2NyaWJlKCJTdHlsZSBjb25maWd1cmF0aW9uIGZvciB0aGVtaW5nIHRoZSBhcHAuIiksZGlzcGxheU1vZGU6SXQub3B0aW9uYWwoKS5kZXNjcmliZSgiSG93IHRoZSBVSSBpcyBjdXJyZW50bHkgZGlzcGxheWVkLiIpLGF2YWlsYWJsZURpc3BsYXlNb2Rlczp3KEl0KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJEaXNwbGF5IG1vZGVzIHRoZSBob3N0IHN1cHBvcnRzLiIpLGNvbnRhaW5lckRpbWVuc2lvbnM6VShbZih7aGVpZ2h0OngoKS5kZXNjcmliZSgiRml4ZWQgY29udGFpbmVyIGhlaWdodCBpbiBwaXhlbHMuIil9KSxmKHttYXhIZWlnaHQ6VShbeCgpLFllKCldKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJNYXhpbXVtIGNvbnRhaW5lciBoZWlnaHQgaW4gcGl4ZWxzLiIpfSldKS5hbmQoVShbZih7d2lkdGg6eCgpLmRlc2NyaWJlKCJGaXhlZCBjb250YWluZXIgd2lkdGggaW4gcGl4ZWxzLiIpfSksZih7bWF4V2lkdGg6VShbeCgpLFllKCldKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJNYXhpbXVtIGNvbnRhaW5lciB3aWR0aCBpbiBwaXhlbHMuIil9KV0pKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBDb250YWluZXIgZGltZW5zaW9ucy4gUmVwcmVzZW50cyB0aGUgZGltZW5zaW9ucyBvZiB0aGUgaWZyYW1lIG9yIG90aGVyCmNvbnRhaW5lciBob2xkaW5nIHRoZSBhcHAuIFNwZWNpZnkgZWl0aGVyIHdpZHRoIG9yIG1heFdpZHRoLCBhbmQgZWl0aGVyIGhlaWdodCBvciBtYXhIZWlnaHQuYCksbG9jYWxlOnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJVc2VyJ3MgbGFuZ3VhZ2UgYW5kIHJlZ2lvbiBwcmVmZXJlbmNlIGluIEJDUCA0NyBmb3JtYXQuIiksdGltZVpvbmU6cCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlVzZXIncyB0aW1lem9uZSBpbiBJQU5BIGZvcm1hdC4iKSx1c2VyQWdlbnQ6cCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgYXBwbGljYXRpb24gaWRlbnRpZmllci4iKSxwbGF0Zm9ybTpVKFttKCJ3ZWIiKSxtKCJkZXNrdG9wIiksbSgibW9iaWxlIildKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJQbGF0Zm9ybSB0eXBlIGZvciByZXNwb25zaXZlIGRlc2lnbiBkZWNpc2lvbnMuIiksZGV2aWNlQ2FwYWJpbGl0aWVzOmYoe3RvdWNoOkUoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJXaGV0aGVyIHRoZSBkZXZpY2Ugc3VwcG9ydHMgdG91Y2ggaW5wdXQuIiksaG92ZXI6RSgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIldoZXRoZXIgdGhlIGRldmljZSBzdXBwb3J0cyBob3ZlciBpbnRlcmFjdGlvbnMuIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJEZXZpY2UgaW5wdXQgY2FwYWJpbGl0aWVzLiIpLHNhZmVBcmVhSW5zZXRzOmYoe3RvcDp4KCkuZGVzY3JpYmUoIlRvcCBzYWZlIGFyZWEgaW5zZXQgaW4gcGl4ZWxzLiIpLHJpZ2h0OngoKS5kZXNjcmliZSgiUmlnaHQgc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKSxib3R0b206eCgpLmRlc2NyaWJlKCJCb3R0b20gc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKSxsZWZ0OngoKS5kZXNjcmliZSgiTGVmdCBzYWZlIGFyZWEgaW5zZXQgaW4gcGl4ZWxzLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTW9iaWxlIHNhZmUgYXJlYSBib3VuZGFyaWVzIGluIHBpeGVscy4iKX0pLnBhc3N0aHJvdWdoKCksaF89Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvaG9zdC1jb250ZXh0LWNoYW5nZWQiKSxwYXJhbXM6SW0uZGVzY3JpYmUoIlBhcnRpYWwgY29udGV4dCB1cGRhdGUgY29udGFpbmluZyBvbmx5IGNoYW5nZWQgZmllbGRzLiIpfSk7Zih7bWV0aG9kOm0oInVpL3VwZGF0ZS1tb2RlbC1jb250ZXh0IikscGFyYW1zOmYoe2NvbnRlbnQ6dyhqbikub3B0aW9uYWwoKS5kZXNjcmliZSgiQ29udGV4dCBjb250ZW50IGJsb2NrcyAodGV4dCwgaW1hZ2UsIGV0Yy4pLiIpLHN0cnVjdHVyZWRDb250ZW50OlAocCgpLE4oKS5kZXNjcmliZSgiU3RydWN0dXJlZCBjb250ZW50IGZvciBtYWNoaW5lLXJlYWRhYmxlIGNvbnRleHQgZGF0YS4iKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiU3RydWN0dXJlZCBjb250ZW50IGZvciBtYWNoaW5lLXJlYWRhYmxlIGNvbnRleHQgZGF0YS4iKX0pfSk7Zih7bWV0aG9kOm0oInVpL2luaXRpYWxpemUiKSxwYXJhbXM6Zih7YXBwSW5mbzpZci5kZXNjcmliZSgiQXBwIGlkZW50aWZpY2F0aW9uIChuYW1lIGFuZCB2ZXJzaW9uKS4iKSxhcHBDYXBhYmlsaXRpZXM6cF8uZGVzY3JpYmUoIkZlYXR1cmVzIGFuZCBjYXBhYmlsaXRpZXMgdGhpcyBhcHAgcHJvdmlkZXMuIikscHJvdG9jb2xWZXJzaW9uOnAoKS5kZXNjcmliZSgiUHJvdG9jb2wgdmVyc2lvbiB0aGlzIGFwcCBzdXBwb3J0cy4iKX0pfSk7dmFyIF9fPWYoe3Byb3RvY29sVmVyc2lvbjpwKCkuZGVzY3JpYmUoJ05lZ290aWF0ZWQgcHJvdG9jb2wgdmVyc2lvbiBzdHJpbmcgKGUuZy4sICIyMDI1LTExLTIxIikuJyksaG9zdEluZm86WXIuZGVzY3JpYmUoIkhvc3QgYXBwbGljYXRpb24gaWRlbnRpZmljYXRpb24gYW5kIHZlcnNpb24uIiksaG9zdENhcGFiaWxpdGllczptXy5kZXNjcmliZSgiRmVhdHVyZXMgYW5kIGNhcGFiaWxpdGllcyBwcm92aWRlZCBieSB0aGUgaG9zdC4iKSxob3N0Q29udGV4dDpJbS5kZXNjcmliZSgiUmljaCBjb250ZXh0IGFib3V0IHRoZSBob3N0IGVudmlyb25tZW50LiIpfSkucGFzc3Rocm91Z2goKSwkXz17dGFyZ2V0OiJkcmFmdC0yMDIwLTEyIn07YXN5bmMgZnVuY3Rpb24gTHModCxuKXtsZXQgcj10WyJ+c3RhbmRhcmQiXTtpZihyLmpzb25TY2hlbWEpcmV0dXJuIHIuanNvblNjaGVtYVtuXSgkXyk7aWYoci52ZW5kb3I9PT0iem9kIil7bGV0e3o6b309YXdhaXQgRG0oKCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnN2KSx2b2lkIDAsaW1wb3J0Lm1ldGEudXJsKTtyZXR1cm4gby50b0pTT05TY2hlbWEodCx7aW86bn0pfXRocm93IEVycm9yKGBTY2hlbWEgKHZlbmRvcjogJHtyLnZlbmRvcn0pIGRvZXMgbm90IGltcGxlbWVudCBTdGFuZGFyZCBKU09OIFNjaGVtYSAofnN0YW5kYXJkLmpzb25TY2hlbWEpLiBVc2UgYSBsaWJyYXJ5IHRoYXQgZG9lcyAoem9kIHY0LCBBcmtUeXBlLCBWYWxpYm90KSBvciB3cmFwIHlvdXIgc2NoZW1hIGFjY29yZGluZ2x5LmApfWFzeW5jIGZ1bmN0aW9uIE1zKHQsbixyPSIiKXtsZXQgbz1hd2FpdCB0WyJ+c3RhbmRhcmQiXS52YWxpZGF0ZShuKTtpZihvLmlzc3Vlcyl7bGV0IGU9by5pc3N1ZXMubWFwKGk9PntsZXQgYT1pLnBhdGg/Lm1hcChzPT50eXBlb2Ygcz09Im9iamVjdCI/cy5rZXk6cykuam9pbigiLiIpO3JldHVybiBhP2Ake2F9OiAke2kubWVzc2FnZX1gOmkubWVzc2FnZX0pLmpvaW4oIjsgIik7dGhyb3cgRXJyb3IocitlKX1yZXR1cm4gby52YWx1ZX1jbGFzcyBucyBleHRlbmRzIEdoe19hcHBJbmZvO19jYXBhYmlsaXRpZXM7b3B0aW9ucztfaG9zdENhcGFiaWxpdGllcztfaG9zdEluZm87X2hvc3RDb250ZXh0O19yZWdpc3RlcmVkVG9vbHM9e307X2luaXRpYWxpemVkU2VudD0hMTtfYXNzZXJ0SW5pdGlhbGl6ZWQobil7aWYodGhpcy5faW5pdGlhbGl6ZWRTZW50KXJldHVybjtsZXQgcj1gW2V4dC1hcHBzXSBBcHAuJHtufSgpIGNhbGxlZCBiZWZvcmUgY29ubmVjdCgpIGNvbXBsZXRlZCB0aGUgdWkvaW5pdGlhbGl6ZSBoYW5kc2hha2UuIEF3YWl0IGFwcC5jb25uZWN0KCkgYmVmb3JlIGNhbGxpbmcgdGhpcyBtZXRob2QsIG9yIG1vdmUgZGF0YSBsb2FkaW5nIHRvIGFuIG9udG9vbHJlc3VsdCBoYW5kbGVyLmA7aWYodGhpcy5vcHRpb25zPy5zdHJpY3QpdGhyb3cgRXJyb3Iocik7Y29uc29sZS53YXJuKGAke3J9LiBUaGlzIHdpbGwgdGhyb3cgaW4gYSBmdXR1cmUgcmVsZWFzZS5gKX1ldmVudFNjaGVtYXM9e3Rvb2xpbnB1dDphXyx0b29saW5wdXRwYXJ0aWFsOnNfLHRvb2xyZXN1bHQ6dl8sdG9vbGNhbmNlbGxlZDpjXyxob3N0Y29udGV4dGNoYW5nZWQ6aF99O3N0YXRpYyBPTkVfU0hPVF9FVkVOVFM9bmV3IFNldChbInRvb2xpbnB1dCIsInRvb2xpbnB1dHBhcnRpYWwiLCJ0b29scmVzdWx0IiwidG9vbGNhbmNlbGxlZCJdKTtfZXZlckhhZExpc3RlbmVyPW5ldyBTZXQ7X2Fzc2VydEhhbmRsZXJUaW1pbmcobil7aWYoIW5zLk9ORV9TSE9UX0VWRU5UUy5oYXMobil8fHRoaXMuX2V2ZXJIYWRMaXN0ZW5lci5oYXMobil8fCh0aGlzLl9ldmVySGFkTGlzdGVuZXIuYWRkKG4pLCF0aGlzLl9pbml0aWFsaXplZFNlbnQpKXJldHVybjtsZXQgcj1gW2V4dC1hcHBzXSAiJHtTdHJpbmcobil9IiBoYW5kbGVyIHJlZ2lzdGVyZWQgYWZ0ZXIgY29ubmVjdCgpIGNvbXBsZXRlZCB0aGUgdWkvaW5pdGlhbGl6ZSBoYW5kc2hha2UuIFRoZSBob3N0IG1heSBoYXZlIGFscmVhZHkgc2VudCB0aGlzIG5vdGlmaWNhdGlvbi4gUmVnaXN0ZXIgaGFuZGxlcnMgYmVmb3JlIGNhbGxpbmcgYXBwLmNvbm5lY3QoKS5gO2lmKHRoaXMub3B0aW9ucz8uc3RyaWN0KXRocm93IEVycm9yKHIpO2NvbnNvbGUud2FybihyKX1zZXRFdmVudEhhbmRsZXIobixyKXtyJiZ0aGlzLl9hc3NlcnRIYW5kbGVyVGltaW5nKG4pLHN1cGVyLnNldEV2ZW50SGFuZGxlcihuLHIpfWFkZEV2ZW50TGlzdGVuZXIobixyKXt0aGlzLl9hc3NlcnRIYW5kbGVyVGltaW5nKG4pLHN1cGVyLmFkZEV2ZW50TGlzdGVuZXIobixyKX1vbkV2ZW50RGlzcGF0Y2gobixyKXtuPT09Imhvc3Rjb250ZXh0Y2hhbmdlZCImJih0aGlzLl9ob3N0Q29udGV4dD17Li4udGhpcy5faG9zdENvbnRleHQsLi4ucn0pfWNvbnN0cnVjdG9yKG4scj17fSxvPXthdXRvUmVzaXplOiEwfSl7c3VwZXIobyksdGhpcy5fYXBwSW5mbz1uLHRoaXMuX2NhcGFiaWxpdGllcz1yLHRoaXMub3B0aW9ucz1vLG8uYWxsb3dVbnNhZmVFdmFsfHxLKHtqaXRsZXNzOiEwfSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihRcixlPT4oY29uc29sZS5sb2coIlJlY2VpdmVkIHBpbmc6IixlLnBhcmFtcykse30pKSx0aGlzLnNldEV2ZW50SGFuZGxlcigiaG9zdGNvbnRleHRjaGFuZ2VkIix2b2lkIDApfXJlZ2lzdGVyQ2FwYWJpbGl0aWVzKG4pe2lmKHRoaXMudHJhbnNwb3J0KXRocm93IEVycm9yKCJDYW5ub3QgcmVnaXN0ZXIgY2FwYWJpbGl0aWVzIGFmdGVyIHRyYW5zcG9ydCBpcyBlc3RhYmxpc2hlZCIpO3RoaXMuX2NhcGFiaWxpdGllcz1XaCh0aGlzLl9jYXBhYmlsaXRpZXMsbil9cmVnaXN0ZXJUb29sKG4scixvKXtpZih0aGlzLl9yZWdpc3RlcmVkVG9vbHNbbl0pdGhyb3cgRXJyb3IoYFRvb2wgJHtufSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtsZXQgZT10aGlzLGk9KCk9PntlLl9pbml0aWFsaXplZFNlbnQmJmUuX2NhcGFiaWxpdGllcy50b29scz8ubGlzdENoYW5nZWQmJmUuc2VuZFRvb2xMaXN0Q2hhbmdlZCgpfSxhPXIuaW5wdXRTY2hlbWEhPT12b2lkIDAscz17dGl0bGU6ci50aXRsZSxkZXNjcmlwdGlvbjpyLmRlc2NyaXB0aW9uLGlucHV0U2NoZW1hOnIuaW5wdXRTY2hlbWEsb3V0cHV0U2NoZW1hOnIub3V0cHV0U2NoZW1hLGFubm90YXRpb25zOnIuYW5ub3RhdGlvbnMsX21ldGE6ci5fbWV0YSxlbmFibGVkOiEwLGVuYWJsZSgpe3RoaXMuZW5hYmxlZD0hMCxpKCl9LGRpc2FibGUoKXt0aGlzLmVuYWJsZWQ9ITEsaSgpfSx1cGRhdGUoYyl7T2JqZWN0LmFzc2lnbih0aGlzLGMpLGkoKX0scmVtb3ZlKCl7ZS5fcmVnaXN0ZXJlZFRvb2xzW25dPT09cyYmKGRlbGV0ZSBlLl9yZWdpc3RlcmVkVG9vbHNbbl0saSgpKX0saGFuZGxlcjphc3luYyhjLHUpPT57aWYoIXMuZW5hYmxlZCl0aHJvdyBFcnJvcihgVG9vbCAke259IGlzIGRpc2FibGVkYCk7bGV0IGw7aWYoYSl7bGV0IGc9cy5pbnB1dFNjaGVtYSx2PWc/YXdhaXQgTXMoZyxjPz97fSxgSW52YWxpZCBpbnB1dCBmb3IgdG9vbCAke259OiBgKTpjPz97fTtsPWF3YWl0IG8odix1KX1lbHNlIGw9YXdhaXQgbyh1KTtyZXR1cm4gcy5vdXRwdXRTY2hlbWEmJiFsLmlzRXJyb3ImJihsLnN0cnVjdHVyZWRDb250ZW50PWF3YWl0IE1zKHMub3V0cHV0U2NoZW1hLGwuc3RydWN0dXJlZENvbnRlbnQsYEludmFsaWQgb3V0cHV0IGZvciB0b29sICR7bn06IGApKSxsfX07cmV0dXJuIHRoaXMuX3JlZ2lzdGVyZWRUb29sc1tuXT1zLCF0aGlzLl9jYXBhYmlsaXRpZXMudG9vbHMmJiF0aGlzLnRyYW5zcG9ydCYmdGhpcy5yZWdpc3RlckNhcGFiaWxpdGllcyh7dG9vbHM6e2xpc3RDaGFuZ2VkOiEwfX0pLHRoaXMuZW5zdXJlVG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWQoKSxpKCksc31fdG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWQ9ITE7ZW5zdXJlVG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWQoKXt0aGlzLl90b29sSGFuZGxlcnNJbml0aWFsaXplZHx8KHRoaXMuX3Rvb2xIYW5kbGVyc0luaXRpYWxpemVkPSEwLHRoaXMub25jYWxsdG9vbD1hc3luYyhuLHIpPT57bGV0IG89dGhpcy5fcmVnaXN0ZXJlZFRvb2xzW24ubmFtZV07aWYoIW8pdGhyb3cgRXJyb3IoYFRvb2wgJHtuLm5hbWV9IG5vdCBmb3VuZGApO3JldHVybiBvLmhhbmRsZXIobi5hcmd1bWVudHMscil9LHRoaXMub25saXN0dG9vbHM9YXN5bmMobixyKT0+KHt0b29sczphd2FpdCBQcm9taXNlLmFsbChPYmplY3QuZW50cmllcyh0aGlzLl9yZWdpc3RlcmVkVG9vbHMpLmZpbHRlcigoW28sZV0pPT5lLmVuYWJsZWQpLm1hcChhc3luYyhbbyxlXSk9PntsZXQgaT17bmFtZTpvLHRpdGxlOmUudGl0bGUsZGVzY3JpcHRpb246ZS5kZXNjcmlwdGlvbixpbnB1dFNjaGVtYTplLmlucHV0U2NoZW1hP2F3YWl0IExzKGUuaW5wdXRTY2hlbWEsImlucHV0Iik6e3R5cGU6Im9iamVjdCIscHJvcGVydGllczp7fX19O3JldHVybiBlLm91dHB1dFNjaGVtYSYmKGkub3V0cHV0U2NoZW1hPWF3YWl0IExzKGUub3V0cHV0U2NoZW1hLCJvdXRwdXQiKSksZS5hbm5vdGF0aW9ucyYmKGkuYW5ub3RhdGlvbnM9ZS5hbm5vdGF0aW9ucyksZS5fbWV0YSYmKGkuX21ldGE9ZS5fbWV0YSksaX0pKX0pKX1hc3luYyBzZW5kVG9vbExpc3RDaGFuZ2VkKG49e30pe3RoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJzZW5kVG9vbExpc3RDaGFuZ2VkIiksYXdhaXQgdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDoibm90aWZpY2F0aW9ucy90b29scy9saXN0X2NoYW5nZWQiLHBhcmFtczpufSl9Z2V0SG9zdENhcGFiaWxpdGllcygpe3JldHVybiB0aGlzLl9ob3N0Q2FwYWJpbGl0aWVzfWdldEhvc3RWZXJzaW9uKCl7cmV0dXJuIHRoaXMuX2hvc3RJbmZvfWdldEhvc3RDb250ZXh0KCl7cmV0dXJuIHRoaXMuX2hvc3RDb250ZXh0fWdldCBvbnRvb2xpbnB1dCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigidG9vbGlucHV0Iil9c2V0IG9udG9vbGlucHV0KG4pe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJ0b29saW5wdXQiLG4pfWdldCBvbnRvb2xpbnB1dHBhcnRpYWwoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dHBhcnRpYWwiKX1zZXQgb250b29saW5wdXRwYXJ0aWFsKG4pe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJ0b29saW5wdXRwYXJ0aWFsIixuKX1nZXQgb250b29scmVzdWx0KCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29scmVzdWx0Iil9c2V0IG9udG9vbHJlc3VsdChuKXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbHJlc3VsdCIsbil9Z2V0IG9udG9vbGNhbmNlbGxlZCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigidG9vbGNhbmNlbGxlZCIpfXNldCBvbnRvb2xjYW5jZWxsZWQobil7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xjYW5jZWxsZWQiLG4pfWdldCBvbmhvc3Rjb250ZXh0Y2hhbmdlZCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigiaG9zdGNvbnRleHRjaGFuZ2VkIil9c2V0IG9uaG9zdGNvbnRleHRjaGFuZ2VkKG4pe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJob3N0Y29udGV4dGNoYW5nZWQiLG4pfV9vbnRlYXJkb3duO2dldCBvbnRlYXJkb3duKCl7cmV0dXJuIHRoaXMuX29udGVhcmRvd259c2V0IG9udGVhcmRvd24obil7dGhpcy53YXJuSWZSZXF1ZXN0SGFuZGxlclJlcGxhY2VkKCJvbnRlYXJkb3duIix0aGlzLl9vbnRlYXJkb3duLG4pLHRoaXMuX29udGVhcmRvd249bix0aGlzLnJlcGxhY2VSZXF1ZXN0SGFuZGxlcihkXywocixvKT0+e2lmKCF0aGlzLl9vbnRlYXJkb3duKXRocm93IEVycm9yKCJObyBvbnRlYXJkb3duIGhhbmRsZXIgc2V0Iik7cmV0dXJuIHRoaXMuX29udGVhcmRvd24oci5wYXJhbXMsbyl9KX1fb25jYWxsdG9vbDtnZXQgb25jYWxsdG9vbCgpe3JldHVybiB0aGlzLl9vbmNhbGx0b29sfXNldCBvbmNhbGx0b29sKG4pe3RoaXMud2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCgib25jYWxsdG9vbCIsdGhpcy5fb25jYWxsdG9vbCxuKSx0aGlzLl9vbmNhbGx0b29sPW4sdGhpcy5yZXBsYWNlUmVxdWVzdEhhbmRsZXIoeW0sKHIsbyk9PntpZighdGhpcy5fb25jYWxsdG9vbCl0aHJvdyBFcnJvcigiTm8gb25jYWxsdG9vbCBoYW5kbGVyIHNldCIpO3JldHVybiB0aGlzLl9vbmNhbGx0b29sKHIucGFyYW1zLG8pfSl9X29ubGlzdHRvb2xzO2dldCBvbmxpc3R0b29scygpe3JldHVybiB0aGlzLl9vbmxpc3R0b29sc31zZXQgb25saXN0dG9vbHMobil7dGhpcy53YXJuSWZSZXF1ZXN0SGFuZGxlclJlcGxhY2VkKCJvbmxpc3R0b29scyIsdGhpcy5fb25saXN0dG9vbHMsbiksdGhpcy5fb25saXN0dG9vbHM9bix0aGlzLnJlcGxhY2VSZXF1ZXN0SGFuZGxlcihibSwocixvKT0+e2lmKCF0aGlzLl9vbmxpc3R0b29scyl0aHJvdyBFcnJvcigiTm8gb25saXN0dG9vbHMgaGFuZGxlciBzZXQiKTtyZXR1cm4gdGhpcy5fb25saXN0dG9vbHMoci5wYXJhbXMsbyl9KX1hc3NlcnRDYXBhYmlsaXR5Rm9yTWV0aG9kKG4pe3N3aXRjaChuKXtjYXNlInNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2UiOmlmKCF0aGlzLl9ob3N0Q2FwYWJpbGl0aWVzPy5zYW1wbGluZyl0aHJvdyBFcnJvcihgSG9zdCBkb2VzIG5vdCBzdXBwb3J0IHNhbXBsaW5nIChyZXF1aXJlZCBmb3IgJHtufSlgKTticmVha319YXNzZXJ0UmVxdWVzdEhhbmRsZXJDYXBhYmlsaXR5KG4pe3N3aXRjaChuKXtjYXNlInRvb2xzL2NhbGwiOmNhc2UidG9vbHMvbGlzdCI6aWYoIXRoaXMuX2NhcGFiaWxpdGllcy50b29scyl0aHJvdyBFcnJvcihgQ2xpZW50IGRvZXMgbm90IHN1cHBvcnQgdG9vbCBjYXBhYmlsaXR5IChyZXF1aXJlZCBmb3IgJHtufSlgKTtyZXR1cm47Y2FzZSJwaW5nIjpjYXNlInVpL3Jlc291cmNlLXRlYXJkb3duIjpyZXR1cm47ZGVmYXVsdDp0aHJvdyBFcnJvcihgTm8gaGFuZGxlciBmb3IgbWV0aG9kICR7bn0gcmVnaXN0ZXJlZGApfX1hc3NlcnROb3RpZmljYXRpb25DYXBhYmlsaXR5KG4pe31hc3NlcnRUYXNrQ2FwYWJpbGl0eShuKXt0aHJvdyBFcnJvcigiVGFza3MgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gTUNQIEFwcHMiKX1hc3NlcnRUYXNrSGFuZGxlckNhcGFiaWxpdHkobil7dGhyb3cgRXJyb3IoIlRhc2sgaGFuZGxlcnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gTUNQIEFwcHMiKX1hc3luYyBjYWxsU2VydmVyVG9vbChuLHIpe2lmKHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJjYWxsU2VydmVyVG9vbCIpLHR5cGVvZiBuPT0ic3RyaW5nIil0aHJvdyBFcnJvcihgY2FsbFNlcnZlclRvb2woKSBleHBlY3RzIGFuIG9iamVjdCBhcyBpdHMgZmlyc3QgYXJndW1lbnQsIGJ1dCByZWNlaXZlZCBhIHN0cmluZyAoIiR7bn0iKS4gRGlkIHlvdSBtZWFuOiBjYWxsU2VydmVyVG9vbCh7IG5hbWU6ICIke259IiwgYXJndW1lbnRzOiB7IC4uLiB9IH0pP2ApO3JldHVybiBhd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidG9vbHMvY2FsbCIscGFyYW1zOm59LGVpLHtvbnByb2dyZXNzOigpPT57fSxyZXNldFRpbWVvdXRPblByb2dyZXNzOiEwLC4uLnJ9KX1hc3luYyByZWFkU2VydmVyUmVzb3VyY2UobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInJlYWRTZXJ2ZXJSZXNvdXJjZSIpLGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJyZXNvdXJjZXMvcmVhZCIscGFyYW1zOm59LGhtLHIpfWFzeW5jIGxpc3RTZXJ2ZXJSZXNvdXJjZXMobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImxpc3RTZXJ2ZXJSZXNvdXJjZXMiKSxhd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoicmVzb3VyY2VzL2xpc3QiLHBhcmFtczpufSx2bSxyKX1hc3luYyBjcmVhdGVTYW1wbGluZ01lc3NhZ2UobixyKXt0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgiY3JlYXRlU2FtcGxpbmdNZXNzYWdlIik7bGV0IG89bi50b29scz93bTpTbTtyZXR1cm4gYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2UiLHBhcmFtczpufSxvLHIpfXNlbmRNZXNzYWdlKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJzZW5kTWVzc2FnZSIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9tZXNzYWdlIixwYXJhbXM6bn0sb18scil9c2VuZExvZyhuKXtyZXR1cm4gdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDoibm90aWZpY2F0aW9ucy9tZXNzYWdlIixwYXJhbXM6bn0pfXVwZGF0ZU1vZGVsQ29udGV4dChuLHIpe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgidXBkYXRlTW9kZWxDb250ZXh0IiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL3VwZGF0ZS1tb2RlbC1jb250ZXh0IixwYXJhbXM6bn0sQ2Escil9b3BlbkxpbmsobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoIm9wZW5MaW5rIiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL29wZW4tbGluayIscGFyYW1zOm59LHJfLHIpfXNlbmRPcGVuTGluaz10aGlzLm9wZW5MaW5rO2Rvd25sb2FkRmlsZShuLHIpe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgiZG93bmxvYWRGaWxlIiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL2Rvd25sb2FkLWZpbGUiLHBhcmFtczpufSxpXyxyKX1yZXF1ZXN0VGVhcmRvd24obj17fSl7cmV0dXJuIHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6InVpL25vdGlmaWNhdGlvbnMvcmVxdWVzdC10ZWFyZG93biIscGFyYW1zOm59KX1yZXF1ZXN0RGlzcGxheU1vZGUobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInJlcXVlc3REaXNwbGF5TW9kZSIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9yZXF1ZXN0LWRpc3BsYXktbW9kZSIscGFyYW1zOm59LGZfLHIpfXNlbmRTaXplQ2hhbmdlZChuKXtyZXR1cm4gdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDoidWkvbm90aWZpY2F0aW9ucy9zaXplLWNoYW5nZWQiLHBhcmFtczpufSl9c2V0dXBTaXplQ2hhbmdlZE5vdGlmaWNhdGlvbnMoKXtsZXQgbj0hMSxyPTAsbz0wLGU9KCk9PntufHwobj0hMCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntuPSExO2xldCBhPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxzPWEuc3R5bGUuaGVpZ2h0O2Euc3R5bGUuaGVpZ2h0PSJtYXgtY29udGVudCI7bGV0IGM9TWF0aC5jZWlsKGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KTthLnN0eWxlLmhlaWdodD1zO2xldCB1PU1hdGguY2VpbCh3aW5kb3cuaW5uZXJXaWR0aCk7KHUhPT1yfHxjIT09bykmJihyPXUsbz1jLHRoaXMuc2VuZFNpemVDaGFuZ2VkKHt3aWR0aDp1LGhlaWdodDpjfSkpfSkpfTtlKCk7bGV0IGk9bmV3IFJlc2l6ZU9ic2VydmVyKGUpO3JldHVybiBpLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSxpLm9ic2VydmUoZG9jdW1lbnQuYm9keSksKCk9PmkuZGlzY29ubmVjdCgpfWFzeW5jIGNvbm5lY3Qobj1uZXcgUWgod2luZG93LnBhcmVudCx3aW5kb3cucGFyZW50KSxyKXtpZih0aGlzLnRyYW5zcG9ydCl0aHJvdyBFcnJvcigiQXBwIGlzIGFscmVhZHkgY29ubmVjdGVkLiBDYWxsIGNsb3NlKCkgYmVmb3JlIGNvbm5lY3RpbmcgYWdhaW4uIik7dGhpcy5faW5pdGlhbGl6ZWRTZW50PSExLGF3YWl0IHN1cGVyLmNvbm5lY3Qobik7dHJ5e2xldCBvPWF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9pbml0aWFsaXplIixwYXJhbXM6e2FwcENhcGFiaWxpdGllczp0aGlzLl9jYXBhYmlsaXRpZXMsYXBwSW5mbzp0aGlzLl9hcHBJbmZvLHByb3RvY29sVmVyc2lvbjpYaH19LF9fLHIpO2lmKG89PT12b2lkIDApdGhyb3cgRXJyb3IoYFNlcnZlciBzZW50IGludmFsaWQgaW5pdGlhbGl6ZSByZXN1bHQ6ICR7b31gKTt0aGlzLl9ob3N0Q2FwYWJpbGl0aWVzPW8uaG9zdENhcGFiaWxpdGllcyx0aGlzLl9ob3N0SW5mbz1vLmhvc3RJbmZvLHRoaXMuX2hvc3RDb250ZXh0PW8uaG9zdENvbnRleHQsYXdhaXQgdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDoidWkvbm90aWZpY2F0aW9ucy9pbml0aWFsaXplZCJ9KSx0aGlzLl9pbml0aWFsaXplZFNlbnQ9ITAsdGhpcy5vcHRpb25zPy5hdXRvUmVzaXplJiZ0aGlzLnNldHVwU2l6ZUNoYW5nZWROb3RpZmljYXRpb25zKCl9Y2F0Y2gobyl7dGhyb3cgdGhpcy5jbG9zZSgpLG99fX1jb25zdCBEPXQ9PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpLGo9dD0+U3RyaW5nKHQ/PyIiKS5yZXBsYWNlKC9bJjw+IiddL2csbj0+KHsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsiLCInIjoiJiMzOTsifSlbbl0pLFc9bmV3IG5zKHtuYW1lOiJzaW5vY2FyZS1jaGVja291dCIsdmVyc2lvbjoiMS4wLjAifSx7b3BlbkxpbmtzOnt9fSksc2k9W3tsYWJlbDoiQ3VybGVzcyDpkrHljIUiLHJvd3M6W3t0aXRsZToiQ3VybGVzcyDkubDlrrbpkrHljIUiLHN1Yjoi55m75b2V5ZCO55So6Ieq5bex57uR55qE5Y2hIMK3IOWPl+iHquW3seiuvueahOmZkOminee6puadnyIsYWN0aW9uczpbe2xhYmVsOiLku5jmrL4iLHRvb2w6ImJ1eV9zaW5vY2FyZV9wcm9kdWN0X3dhbGxldCIsYXJnczp7fX1dfSx7dGl0bGU6IumSseWMhei/nuaOpeWZqCjni6znq4sgTUNQKSIsc3ViOiLkvaDoh6rlt7Hoo4XnmoQgQ3VybGVzcyDpkrHljIXpk7jlh63mja4gwrcg5Zyo6IGK5aSp6YeM5a6M5oiQIixhY3Rpb25zOlt7bGFiZWw6IuWcqOiBiuWkqemHjOS7mOasviIsdG9vbDoic3RhcnRfc2lub2NhcmVfd2FsbGV0X2hhbmRvZmYiLGFyZ3M6e30sY2hhdDohMH1dfSx7dGl0bGU6Iua1j+iniOWZqOmHjOehruiupOS7mOasviIsc3ViOiLku4DkuYjpg73kuI3nlKjoo4Ugwrcg5omT5byA6ZO+5o6l55yL5riF6YeR6aKd5YaN5om55YeGIixhY3Rpb25zOlt7bGFiZWw6IueUn+aIkOS7mOasvumTvuaOpSIsdG9vbDoicGF5X3Npbm9jYXJlX2hvc3RlZCIsYXJnczp7fX1dfV19LHtsYWJlbDoi5aSW6ZO+IMK3IOWVhuWutuaUtumTtuWPsCIscm93czpbe3RpdGxlOiJTaG9waWZ5IC8gUGF5bWVudCBMaW5rIixzdWI6IuWcqOa1j+iniOWZqOmHjOaJk+W8gOWVhuWutueahOaUtumTtumhtSDCtyDljaEiLGFjdGlvbnM6W3tsYWJlbDoi5omT5byA5LuY5qy+6aG1Iix0b29sOiJjcmVhdGVfc2lub2NhcmVfcGF5bWVudF9saW5rIixhcmdzOnt9LGV4dDohMH1dfV19LHtsYWJlbDoi5Y2hIMK3IFN0cmlwZSIscm93czpbe3RpdGxlOiJBQ1AiLHN1YjoiU3RyaXBlIOWNoei9qCDCtyDlr7nor53lhoUiLGFjdGlvbnM6W3tsYWJlbDoi5LuY5qy+Iix0b29sOiJidXlfc2lub2NhcmVfcHJvZHVjdF9hY3AiLGFyZ3M6e319XX0se3RpdGxlOiJVQ1AiLHN1YjoiQVAyIOaOiOadgyDCtyBTdHJpcGUg5Y2h6L2oIMK3IOWvueivneWGhSIsYWN0aW9uczpbe2xhYmVsOiLku5jmrL4iLHRvb2w6ImJ1eV9zaW5vY2FyZV9wcm9kdWN0X3VjcCIsYXJnczp7cGF5OiJjYXJkIn19XX1dfSx7bGFiZWw6Iueos+WumuW4gSDCtyDlhazpk74oeDQwMiAvIFVDUCkiLHJvd3M6W3t0aXRsZToiVVNEQyDCtyBCYXNlIixzdWI6IkVWTSDCtyBFSVAtMzAwOSDnrb4iLGFjdGlvbnM6W3tsYWJlbDoieDQwMiIsdG9vbDoiYnV5X3Npbm9jYXJlX3Byb2R1Y3RfeDQwMiIsYXJnczp7fX0se2xhYmVsOiLnu48gVUNQIix0b29sOiJidXlfc2lub2NhcmVfcHJvZHVjdF91Y3AiLGFyZ3M6e3BheToidXNkYyJ9fV19LHt0aXRsZToiVVNEQyDCtyBTb2xhbmEiLHN1YjoiU1ZNIMK3IOmDqOWIhuetviDCtyBmYWNpbGl0YXRvciDku6Pku5ggZ2FzIixhY3Rpb25zOlt7bGFiZWw6Ing0MDIiLHRvb2w6ImJ1eV9zaW5vY2FyZV9wcm9kdWN0X3g0MDIiLGFyZ3M6e2NoYWluOiJzb2xhbmEifX0se2xhYmVsOiLnu48gVUNQIix0b29sOiJidXlfc2lub2NhcmVfcHJvZHVjdF91Y3AiLGFyZ3M6e3BheToidXNkYy1zb2wifX1dfSx7dGl0bGU6IlJMVVNEIMK3IFhSUCBMZWRnZXIiLHN1YjoiRWQyNTUxOSDnrb4gwrcg6Ieq5bu6IGZhY2lsaXRhdG9yIixhY3Rpb25zOlt7bGFiZWw6Ing0MDIiLHRvb2w6ImJ1eV9zaW5vY2FyZV9wcm9kdWN0X3JsdXNkIixhcmdzOnt9fSx7bGFiZWw6Iue7jyBVQ1AiLHRvb2w6ImJ1eV9zaW5vY2FyZV9wcm9kdWN0X3VjcCIsYXJnczp7cGF5OiJybHVzZCJ9fV19XX0se2xhYmVsOiLnqLPlrprluIEgwrcgQWdlbnQg5Y6f55Sf5Y2P6K6uIixyb3dzOlt7dGl0bGU6IlVTREMgwrcgQmFzZShTa3lmaXJlIOaJmOeuoSkiLHN1YjoiU2t5ZmlyZSDnrb4gSldUIMK3IEtZQSDouqvku70gKyDku5jmrL7mjojmnYMgwrcg5Lmw5a626aKE5YWF5YC85L2Z6aKdIixhY3Rpb25zOlt7bGFiZWw6IktZQVBheSIsdG9vbDoiYnV5X3Npbm9jYXJlX3Byb2R1Y3Rfc2t5ZmlyZSIsYXJnczp7fX1dfSx7dGl0bGU6InBhdGhVU0QgwrcgVGVtcG8iLHN1YjoiSFRUUC00MDIgwrcg6ZO+5LiKIFRJUC0yMCB0cmFuc2ZlcldpdGhNZW1vIixhY3Rpb25zOlt7bGFiZWw6Ik1QUCIsdG9vbDoiYnV5X3Npbm9jYXJlX3Byb2R1Y3RfbXBwIixhcmdzOnt9fV19XX1dLGJfPSh0LG4scik9PmBnJHt0fXIke259YSR7cn1gLHJzPXQ9Pntjb25zdCBuPS9eZyhcZCspcihcZCspYShcZCspJC8uZXhlYyh0KTtpZighbilyZXR1cm47Y29uc3Qgcj1zaVsrblsxXV0/LnJvd3NbK25bMl1dLG89cj8uYWN0aW9uc1srblszXV07aWYoIXJ8fCFvKXJldHVybjtjb25zdCBlPXIuYWN0aW9ucy5sZW5ndGg+MT9gJHtyLnRpdGxlfSDCtyAke28ubGFiZWx9YDpyLnRpdGxlO3JldHVybnsuLi5vLHJvdzpyLnRpdGxlLGRpc3BsYXk6ZX19O2xldCBpZT1udWxsO2NvbnN0IE1lPSh0LG4pPT57ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCk/LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e1cub3Blbkxpbmsoe3VybDpufSkuY2F0Y2goKCk9Pnt9KX0pfSx5Xz0odCxuLHIpPT57Y29uc3Qgbz1yLmFjdGlvbnMubWFwKChlLGkpPT57Y29uc3QgYT1lLmV4dD8iYWN0IGV4dCI6ImFjdCI7cmV0dXJuYDxidXR0b24gZGF0YS1hY3Q9IiR7Yl8odCxuLGkpfSIgY2xhc3M9IiR7YX0iPiR7aihlLmxhYmVsKX0ke2UuZXh0PyIg4oaXIjoiIOKGkiJ9PC9idXR0b24+YH0pLmpvaW4oIiIpO3JldHVybmA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICA8ZGl2IGNsYXNzPSJyb3ctbWFpbiI+PHNwYW4gY2xhc3M9InItdGl0bGUiPiR7aihyLnRpdGxlKX08L3NwYW4+PHNwYW4gY2xhc3M9InItc3ViIj4ke2ooci5zdWIpfTwvc3Bhbj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icm93LWFjdHMiPiR7b308L2Rpdj4KICAgIDwvZGl2PmB9LGlzPXQ9PntvcyhudWxsKSxpZT10LEQoIm1lcmNoYW50IikudGV4dENvbnRlbnQ9dC5za3U7Y29uc3Qgcj0odC5leHRlcm5hbFNob3BpZnk9PT0hMD9zaS5tYXAoZT0+ZS5sYWJlbD09PSLlpJbpk74iP3suLi5lLHJvd3M6ZS5yb3dzLm1hcChpPT4oey4uLmksdGl0bGU6IlNob3BpZnkg57uT6LSmIixzdWI6IuWcqCBTaG9waWZ5IOaUtumTtuWPsOaUr+S7mChTaG9waWZ5IFBheW1lbnRzKSIsYWN0aW9uczppLmFjdGlvbnMubWFwKGE9Pih7Li4uYSxsYWJlbDoi5Y67IFNob3BpZnkg5pSv5LuYIn0pKX0pKX06ZSk6c2kpLm1hcCgoZSxpKT0+YDxkaXYgY2xhc3M9Imdyb3VwLWxhYmVsIj4ke2ooZS5sYWJlbCl9PC9kaXY+PGRpdiBjbGFzcz0icm93cyI+JHtlLnJvd3MubWFwKChhLHMpPT55XyhpLHMsYSkpLmpvaW4oIiIpfTwvZGl2PmApLmpvaW4oIiIpLG89dC5pbWFnZVVybD9gPGltZyBjbGFzcz0iaGVybyIgc3JjPSIke2oodC5pbWFnZVVybCl9IiBhbHQ9IiR7aih0Lm5hbWUpfSIgb25lcnJvcj0idGhpcy5yZW1vdmUoKSI+YDoiIjtEKCJjb250ZW50IikuaW5uZXJIVE1MPWAKICAgICR7b30KICAgIDxkaXYgY2xhc3M9InByaWNlIj4ke2oodC5wcmljZUV1cj8/IiIpfTwvZGl2PgogICAgPGRpdiBjbGFzcz0ic3ViIj4ke2oodC5uYW1lKX0ke3QucXVhbnRpdHkmJnQucXVhbnRpdHk+MT9gIMOXICR7dC5xdWFudGl0eX1gOiIifTwvZGl2PgogICAgJHtyfWA7Zm9yKGNvbnN0IGUgb2YgQXJyYXkuZnJvbShEKCJjb250ZW50IikucXVlcnlTZWxlY3RvckFsbCgiYnV0dG9uW2RhdGEtYWN0XSIpKSllLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+UF8oZS5kYXRhc2V0LmFjdCkpfSxxZT0oKT0+JzxidXR0b24gY2xhc3M9ImJhY2siIGlkPSJiYWNrIj7ihpAg5o2i5Liq5pSv5LuY5pa55byPPC9idXR0b24+JyxGZT0oKT0+e2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiYWNrIik/LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2llJiZpcyhpZSl9KX0seG09KCk9Pic8YnV0dG9uIGNsYXNzPSJnbyIgaWQ9Im9yZGVycyI+5p+l55yL5oiR55qE6K6i5Y2VIOKGkjwvYnV0dG9uPicsem09KHQ9ITEpPT5XLmNhbGxTZXJ2ZXJUb29sKHtuYW1lOiJsaXN0X215X29yZGVycyIsYXJndW1lbnRzOnt9fSkudGhlbihuPT57Y29uc3Qgcj1uPy5zdHJ1Y3R1cmVkQ29udGVudDtyPy52aWV3PT09Im9yZGVycyI/YXMocik6dHx8enQoIuaXoOazleWKoOi9veiuouWNleOAgiIpfSkuY2F0Y2gobj0+e3R8fHp0KFN0cmluZyhuPy5tZXNzYWdlPz9uKSl9KSxUbT0oKT0+e2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvcmRlcnMiKT8uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57RCgiY29udGVudCIpLmlubmVySFRNTD0nPGRpdiBjbGFzcz0ic3BpbiI+5q2j5Zyo5Yqg6L296K6i5Y2V4oCmPC9kaXY+Jyx6bSgpfSl9O2xldCBjaT1udWxsLHRpPSExO2NvbnN0IG9zPXQ9PntjaT10O2NvbnN0IG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZnJlc2giKTtuJiYobi5oaWRkZW49IXQpfSxrXz0oKT0+e2NvbnN0IHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZnJlc2giKTt0JiZ0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2lmKHRpfHwhY2kpcmV0dXJuO3RpPSEwLHQuZGlzYWJsZWQ9ITAsdC5jbGFzc0xpc3QuYWRkKCJidXN5Iik7Y29uc3Qgbj0oKT0+e3RpPSExO2NvbnN0IHI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZnJlc2giKTtyJiYoci5kaXNhYmxlZD0hMSxyLmNsYXNzTGlzdC5yZW1vdmUoImJ1c3kiKSl9O2NpKCkudGhlbihuLG4pfSl9O2xldCBKZT1bXTtjb25zdCBTXz10PT4vY2FwdHVyZWR8Y29tcGxldGVkfHBhaWQvaS50ZXN0KHQuc3RhdHVzKSYmIS9yZWZ1bmQvaS50ZXN0KHQuc3RhdHVzKSYmIXQucmVmdW5kUGVuZGluZyx3Xz10PT57Y29uc3Qgbj1TdHJpbmcodCkudG9Mb3dlckNhc2UoKTtyZXR1cm5gPHNwYW4gY2xhc3M9Im9zdGF0ICR7L3JlZnVuZC8udGVzdChuKT8id2FybiI6L2NhcHR1cmVkfGNvbXBsZXRlZHxwYWlkfHNldHRsZWQvLnRlc3Qobik/Im9rIjoibXV0ZWQifSI+JHtqKHQpfTwvc3Bhbj5gfSxJXz0odCxuKT0+e2NvbnN0IHI9W3QudG90YWwsdC5wcm90b2NvbCx0LmRhdGVdLmZpbHRlcihCb29sZWFuKS5tYXAoaikuam9pbigiIMK3ICIpO3JldHVybmA8ZGl2IGNsYXNzPSJyb3ciIGRhdGEtcm93PSIke259Ij4KICAgICAgPGRpdiBjbGFzcz0icm93LW1haW4iPjxzcGFuIGNsYXNzPSJyLXRpdGxlIj4ke2oodC5wcm9kdWN0fHx0Lm9yZGVySWQpfTwvc3Bhbj48c3BhbiBjbGFzcz0ici1zdWIiPiR7cn08L3NwYW4+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InJvdy1hY3RzIj4KICAgICAgICAke3dfKHQuc3RhdHVzKX0KICAgICAgICAke1NfKHQpP2A8YnV0dG9uIGNsYXNzPSJhY3QiIGRhdGEtcmVmdW5kPSIke259Ij7nlLPor7fpgIDmrL48L2J1dHRvbj5gOiIifQogICAgICA8L2Rpdj4KICAgIDwvZGl2PmB9LGFzPXQ9PntpZihKZT10Lm9yZGVycz8/W10sRCgibWVyY2hhbnQiKS50ZXh0Q29udGVudD0i5oiR55qE6K6i5Y2VIixvcygoKT0+em0oITApKSwhSmUubGVuZ3RoKXtEKCJjb250ZW50IikuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJlbXB0eSI+6L+Y5rKh5pyJ6K6i5Y2VIOKAlCDlhYjpooTorqLkuIDkuKrluqblgYfmnZEoc3RhcnRfc2lub2NhcmVfY2hlY2tvdXTvvInjgII8L2Rpdj4nO3JldHVybn1EKCJjb250ZW50IikuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJyb3dzIG9saXN0Ij4ke0plLm1hcCgobixyKT0+SV8obixyKSkuam9pbigiIil9PC9kaXY+YDtmb3IoY29uc3QgbiBvZiBBcnJheS5mcm9tKEQoImNvbnRlbnQiKS5xdWVyeVNlbGVjdG9yQWxsKCJidXR0b25bZGF0YS1yZWZ1bmRdIikpKW4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT54XyhOdW1iZXIobi5kYXRhc2V0LnJlZnVuZCkpKX0seF89dD0+e2NvbnN0IG49SmVbdF07aWYoIW4pcmV0dXJuO2NvbnN0IHI9RCgiY29udGVudCIpLnF1ZXJ5U2VsZWN0b3IoYGJ1dHRvbltkYXRhLXJlZnVuZD0iJHt0fSJdYCksbz1EKCJjb250ZW50IikucXVlcnlTZWxlY3RvcihgW2RhdGEtcm93PSIke3R9Il1gKTtvPy5xdWVyeVNlbGVjdG9yKCIuby1lcnIiKT8ucmVtb3ZlKCksciYmKHIuZGlzYWJsZWQ9ITAsci50ZXh0Q29udGVudD0i5aSE55CG5Lit4oCmIik7Y29uc3QgZT1pPT57aWYociYmKHIuZGlzYWJsZWQ9ITEsci50ZXh0Q29udGVudD0i55Sz6K+36YCA5qy+IiksIW8pcmV0dXJuO2NvbnN0IGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5jbGFzc05hbWU9Im8tZXJyIixhLnRleHRDb250ZW50PWksby5hcHBlbmRDaGlsZChhKX07Vy5jYWxsU2VydmVyVG9vbCh7bmFtZToicmVxdWVzdF9yZWZ1bmQiLGFyZ3VtZW50czp7b3JkZXJJZDpuLm9yZGVySWR9fSkudGhlbihpPT57bGV0IGE9e307dHJ5e2E9SlNPTi5wYXJzZShpPy5jb250ZW50Py5bMF0/LnRleHQ/PyJ7fSIpfWNhdGNoe31pZihpPy5pc0Vycm9yfHxhLnJlcXVlc3RlZD09PSExKXtlKFN0cmluZyhpPy5jb250ZW50Py5bMF0/LnRleHQ/P2EubWVzc2FnZT8/IumAgOasvueUs+ivt+Wksei0pSIpKTtyZXR1cm59SmVbdF09ey4uLm4sc3RhdHVzOmEuc3RhdHVzPz8icmVmdW5kX3JlcXVlc3RlZCJ9LGFzKHtvcmRlcnM6SmV9KX0pLmNhdGNoKGk9PntlKFN0cmluZyhpPy5tZXNzYWdlPz9pPz8i6YCA5qy+55Sz6K+35aSx6LSlIikpfSl9LHh0PSh0LG4pPT57Y29uc3Qgcj1ycyh0KTtsZXQgbz17fTt0cnl7bz1KU09OLnBhcnNlKG4/LmNvbnRlbnQ/LlswXT8udGV4dD8/Int9Iil9Y2F0Y2h7fWlmKHI/LmV4dCYmby51cmwpe0QoImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9InJlc3VsdCI+CiAgICAgIDxzcGFuIGNsYXNzPSJiYWRnZSBvayI+UGF5bWVudCBMaW5rIOW3sueUn+aIkDwvc3Bhbj4KICAgICAgPGRpdiBjbGFzcz0ibGluZSI+5Zyo5rWP6KeI5Zmo5omT5byA5LuY5qy+6aG15a6M5oiQ5pSv5LuYJHtvLmFtb3VudERpc3BsYXk/YCgke2ooby5hbW91bnREaXNwbGF5KX0pYDoiIn08L2Rpdj4KICAgICAgPHNwYW4gY2xhc3M9InBheWxpbmsiIGlkPSJwYXlsaW5rIiByb2xlPSJsaW5rIiB0YWJpbmRleD0iMCI+5omT5byA5LuY5qy+6aG1IOKGlzwvc3Bhbj4KICAgICAgPGRpdj4ke3FlKCl9PC9kaXY+PC9kaXY+YCxNZSgicGF5bGluayIsU3RyaW5nKG8udXJsKSksRmUoKTtyZXR1cm59Y29uc3QgZT1uPy5pc0Vycm9yfHwoby5ib29rZWQ9PT12b2lkIDA/by5zdGF0dXMhPT0iY2FwdHVyZWQiJiZvLnN0YXR1cyE9PSJjb21wbGV0ZWQiOm8uYm9va2VkPT09ITEpO2lmKG8uYXdhaXRpbmdQYXltZW50KXtEKCJjb250ZW50IikuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJyZXN1bHQiPgogICAgICA8c3BhbiBjbGFzcz0iYmFkZ2UgdG9kbyI+6L+Y5beu5LiA5q2lPC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJsaW5lIj4ke2ooby5tZXNzYWdlPz8i57uT6LSm5bey5byA5aW9LOi/mOayoeS7mOasvuOAgiIpfTwvZGl2PgogICAgICAke28udG90YWw/YDxkaXYgY2xhc3M9Im1vbm8iPiR7aihTdHJpbmcoby50b3RhbCkpfTwvZGl2PmA6IiJ9CiAgICAgICR7by5wYXlVcmw/YDxkaXYgY2xhc3M9ImxvZ2lucm93Ij48c3BhbiBjbGFzcz0iYWN0IHByaW1hcnkiIGlkPSJwZ28iIHJvbGU9ImxpbmsiIHRhYmluZGV4PSIwIj7ljrvku5jmrL4g4oaXPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSB3YWl0aW5nIiBpZD0icHdhaXQiPuWcqOa1j+iniOWZqOmHjOaJueWHhuWQjizov5nlvKDljaHkvJroh6rlt7Hlj5jmiJDmlLbmja7jgII8L2Rpdj5gOiIifQogICAgICAke3FlKCl9PC9kaXY+YCxvLnBheVVybCYmTWUoInBnbyIsU3RyaW5nKG8ucGF5VXJsKSksRmUoKSxvLnNlc3Npb25JZCYmby5tZXJjaGFudElkJiZVXyhTdHJpbmcoby5zZXNzaW9uSWQpLFN0cmluZyhvLm1lcmNoYW50SWQpLHQpO3JldHVybn1pZihvLm5lZWRzTG9naW4mJm8ubG9naW5Vcmwpe0QoImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9InJlc3VsdCI+CiAgICAgIDxzcGFuIGNsYXNzPSJiYWRnZSB0b2RvIj7nmbvlvZUgQ3VybGVzcyDpkrHljIU8L3NwYW4+CiAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPiR7aihvLm1lc3NhZ2U/PyLlnKjmtY/op4jlmajph4znmbvlvZXkvaDnmoQgQ3VybGVzcyDpkrHljIXjgIIiKX08L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ibG9naW5yb3ciPgogICAgICAgIDxzcGFuIGNsYXNzPSJhY3QgcHJpbWFyeSIgaWQ9IndnbyIgcm9sZT0ibGluayIgdGFiaW5kZXg9IjAiPuWOu+eZu+W9lSDihpc8L3NwYW4+CiAgICAgICAgJHtvLnVzZXJDb2RlP2A8c3BhbiBjbGFzcz0idWNvZGUiIHRpdGxlPSLnoa7orqTmtY/op4jlmajph4zmmL7npLrnmoTmmK/ov5nkuKrku6PnoIEiPiR7aihvLnVzZXJDb2RlKX08L3NwYW4+YDoiIn0KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImxpbmUgd2FpdGluZyIgaWQ9Ind3YWl0Ij7nmbvlvZXlrozov5nlvKDljaHkvJroh6rlt7HmjqXkuIrjgILnu5HljaHkuZ/lnKjlkIzkuIDkuKrpobXpnaLph4zjgII8L2Rpdj4KICAgICAgJHtxZSgpfTwvZGl2PmAsTWUoIndnbyIsU3RyaW5nKG8ubG9naW5VcmwpKSxGZSgpLGpfKHQpO3JldHVybn1pZihvLndhbGxldFJlZnVzZWQpe0QoImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9InJlc3VsdCI+CiAgICAgIDxzcGFuIGNsYXNzPSJiYWRnZSB0b2RvIj7pkrHljIXmnKrmlL7ooYw8L3NwYW4+CiAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPiR7aihvLm1lc3NhZ2U/PyLpkrHljIXmi5Lnu53kuobov5nnrJTku5jmrL7jgIIiKX08L2Rpdj4KICAgICAgJHtvLndhbGxldFVybD8nPGRpdiBjbGFzcz0ibG9naW5yb3ciPjxzcGFuIGNsYXNzPSJhY3QgcHJpbWFyeSIgaWQ9IndvcGVuIiByb2xlPSJsaW5rIiB0YWJpbmRleD0iMCI+5omT5byA6ZKx5YyFIOKGlzwvc3Bhbj48L2Rpdj4nOiIifQogICAgICAke3FlKCl9PC9kaXY+YCxvLndhbGxldFVybCYmTWUoIndvcGVuIixTdHJpbmcoby53YWxsZXRVcmwpKSxGZSgpO3JldHVybn1pZihlKXtEKCJjb250ZW50IikuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJyZXN1bHQiPgogICAgICA8c3BhbiBjbGFzcz0iYmFkZ2UgZXJyIj7mnKrlrozmiJA8L3NwYW4+CiAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPiR7aihvLm1lc3NhZ2U/P28ucmVhc29uPz9uPy5jb250ZW50Py5bMF0/LnRleHQ/PyLmlK/ku5jmnKrlrozmiJAiKX08L2Rpdj4KICAgICAgJHtxZSgpfTwvZGl2PmAsRmUoKTtyZXR1cm59Y29uc3QgaT1vLnBhaWRSbHVzZD8/by5wYWlkVXNkYz8/by50b3RhbD8/IiIsYT1vLnR4SGFzaCxzPW8uZXhwbG9yZXI7RCgiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0icmVzdWx0Ij4KICAgIDxzcGFuIGNsYXNzPSJiYWRnZSBvayI+5bey6aKE6K6iPC9zcGFuPgogICAgPGRpdiBjbGFzcz0ibGluZSI+JHtqKG8ubWVzc2FnZT8/YOW3sumihOiuoiAke28ucHJvZHVjdD8/aWU/Lm5hbWU/PyIifWApfTwvZGl2PgogICAgJHtvLnBheWVyP2A8ZGl2IGNsYXNzPSJtb25vIj7ku5jmrL7mlrnlvI86JHtqKFN0cmluZyhvLnBheWVyKSl9PC9kaXY+YDoiIn0KICAgICR7aT9gPGRpdiBjbGFzcz0ibW9ubyI+JHtqKGkpfTwvZGl2PmA6IiJ9CiAgICAke2E/YDxkaXYgY2xhc3M9ImxpbmUiPumTvuS4iuS6pOaYkzoke3M/YDxzcGFuIGNsYXNzPSJ0eCIgaWQ9InR4bGluayIgcm9sZT0ibGluayIgdGFiaW5kZXg9IjAiPiR7aihhKX0g4oaXPC9zcGFuPmA6YDxzcGFuIGNsYXNzPSJtb25vIj4ke2ooYSl9PC9zcGFuPmB9PC9kaXY+YDoiIn0KICAgICR7eG0oKX08L2Rpdj5gLGEmJnMmJk1lKCJ0eGxpbmsiLFN0cmluZyhzKSksVG0oKX0sel89dD0+e29zKG51bGwpLGllPXt2aWV3OiJwaWNrIixza3U6dC5za3UsbmFtZTp0Lm5hbWUscHJpY2VFdXI6dC5wcmljZUV1cj8/IiIscXVhbnRpdHk6dC5xdWFudGl0eT8/MX0sRCgibWVyY2hhbnQiKS50ZXh0Q29udGVudD10LnNrdTtjb25zdCBuPXQudHhIYXNoLHI9dC5leHBsb3JlcjtEKCJjb250ZW50IikuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJyZXN1bHQiPgogICAgPHNwYW4gY2xhc3M9ImJhZGdlIG9rIj7lt7LpooTorqI8L3NwYW4+CiAgICA8ZGl2IGNsYXNzPSJsaW5lIj4ke2oodC5tZXNzYWdlPz9g5bey6YCa6L+HICR7dC5wcm90b2NvbD90LnByb3RvY29sLnRvVXBwZXJDYXNlKCk6IuaJgOmAieaWueW8jyJ9IOmihOiuoiAke3QubmFtZX1gKX08L2Rpdj4KICAgICR7dC50b3RhbD9gPGRpdiBjbGFzcz0ibW9ubyI+JHtqKHQudG90YWwpfTwvZGl2PmA6IiJ9CiAgICAke24/YDxkaXYgY2xhc3M9ImxpbmUiPumTvuS4iuS6pOaYkzoke3I/YDxzcGFuIGNsYXNzPSJ0eCIgaWQ9InR4bGluayIgcm9sZT0ibGluayIgdGFiaW5kZXg9IjAiPiR7aihuKX0g4oaXPC9zcGFuPmA6YDxzcGFuIGNsYXNzPSJtb25vIj4ke2oobil9PC9zcGFuPmB9PC9kaXY+YDoiIn0KICAgIDxkaXYgY2xhc3M9ImN0YS1yb3ciPiR7eG0oKX08YnV0dG9uIGNsYXNzPSJiYWNrIiBpZD0icmVib29rIj7lho3orqLkuIDmrKE8L2J1dHRvbj48L2Rpdj4KICA8L2Rpdj5gLG4mJnImJk1lKCJ0eGxpbmsiLFN0cmluZyhyKSksVG0oKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVib29rIik/LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2llJiZpcyhpZSl9KX0sVF89dD0+e2NvbnN0IG49cnModCk7IW58fCFpZXx8KEQoImNvbnRlbnQiKS5pbm5lckhUTUw9JzxkaXYgY2xhc3M9InNwaW4iPuato+WcqOW8gOe7k+i0puKApjwvZGl2PicsVy5jYWxsU2VydmVyVG9vbCh7bmFtZTpuLnRvb2wsYXJndW1lbnRzOntza3U6aWUuc2t1LHF1YW50aXR5OmllLnF1YW50aXR5Pz8xLC4uLm4uYXJnc319KS50aGVuKGFzeW5jIHI9PntsZXQgbz17fTt0cnl7bz1KU09OLnBhcnNlKHI/LmNvbnRlbnQ/LlswXT8udGV4dD8/Int9Iil9Y2F0Y2h7fWlmKHI/LmlzRXJyb3J8fCFvLnNlc3Npb25JZCl7eHQodCxyKTtyZXR1cm59RCgiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0icmVzdWx0Ij4KICAgICAgICA8c3BhbiBjbGFzcz0iYmFkZ2UgdG9kbyI+5Lqk57uZ5Yqp5omL57un57utPC9zcGFuPgogICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPui/meeslOimgeeUqOS9oOiHquW3seijheeahCBDdXJsZXNzIOmSseWMhei/nuaOpeWZqOS7mCDigJQg5Yet5o2u5Zyo6YKj5Liq6L+e5o6l5Zmo6YeMLOi/meW8oOWNoeWkn+S4jeWIsOWug+OAguW3sue7j+aKiui/meeslOe7k+i0puS6pOe7meWKqeaJi+S6huOAgjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vbm8iPiR7aihTdHJpbmcoby50b3RhbD8/aWU/LnByaWNlRXVyPz8iIikpfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImxpbmUgd2FpdGluZyI+5Yqp5omL5Lya5YWI6K6p5L2g55m75b2V6ZKx5YyFKOe7meS9oOS4gOS4qumTvuaOpSks5YaN6ZO45LiA5byg5Yet5o2u5a6M5oiQ5LuY5qy+44CCPC9kaXY+CiAgICAgICAgJHtxZSgpfTwvZGl2PmAsRmUoKTtjb25zdCBlPVsiQ3VybGVzcyB3YWxsZXQgaGFuZG9mZiDigJQgYW4gQUNQIGNoZWNrb3V0IGlzIG9wZW4gYW5kIHVucGFpZC4iLGBzZXNzaW9uSWQ6ICR7by5zZXNzaW9uSWR9YCxgbWVyY2hhbnRJZDogJHtvLm1lcmNoYW50SWR9YCxgYW1vdW50OiAke28uYW1vdW50fSAobWlub3IgdW5pdHMpICR7by5jdXJyZW5jeX1gLGBwcm9kdWN0OiAke28ucHJvZHVjdD8/aWU/Lm5hbWU/PyIifWAsIiIsIk9uIHRoZSBDdXJsZXNzIHdhbGxldCBjb25uZWN0b3I6IGlmIG5vYm9keSBpcyBzaWduZWQgaW4sIGNhbGwgd2FsbGV0X2xvZ2luIEZJUlNUIGFuZCBzaG93IHRoZSBwZXJzb24gdGhlIGxpbmsgaXQgcmV0dXJucywgdGhlbiB3YWxsZXRfcGF5X2NyZWRlbnRpYWwoeyBhbW91bnQsIGN1cnJlbmN5LCBtZXJjaGFudFJlZjogbWVyY2hhbnRJZCB9KS4iLGBUaGVuIHBheV9zaW5vY2FyZV93aXRoX3Rva2VuKHsgc2Vzc2lvbklkOiAiJHtvLnNlc3Npb25JZH0iLCBtZXJjaGFudElkOiAiJHtvLm1lcmNoYW50SWR9IiwgdG9rZW4gfSkgb24gdGhpcyBzZXJ2ZXIuYCwiSWYgdGhlIHdhbGxldCByZWZ1c2VzLCBTVE9QIGFuZCByZXBlYXQgd2hhdCBpdCBzYWlkIOKAlCBkbyBub3QgcGF5IHRoaXMgYW5vdGhlciB3YXkuIl0uam9pbihgCmApO2xldCBpPSExO1cuZ2V0SG9zdENhcGFiaWxpdGllcygpPy51cGRhdGVNb2RlbENvbnRleHQmJihpPWF3YWl0IFcudXBkYXRlTW9kZWxDb250ZXh0KHtjb250ZW50Olt7dHlwZToidGV4dCIsdGV4dDplfV19KS50aGVuKCgpPT4hMCkuY2F0Y2goKCk9PiExKSksYXdhaXQgVy5zZW5kTWVzc2FnZSh7cm9sZToidXNlciIsY29udGVudDpbe3R5cGU6InRleHQiLHRleHQ6aT8i55So5oiR55qEIEN1cmxlc3Mg6ZKx5YyF6L+e5o6l5Zmo5LuY6L+Z56yUIjplfV19KS5jYXRjaCgoKT0+e30pfSkuY2F0Y2gocj0+eHQodCx7aXNFcnJvcjohMCxjb250ZW50Olt7dGV4dDpTdHJpbmcocj8ubWVzc2FnZT8/cil9XX0pKSl9LFVtPXQ9Pntjb25zdCBuPXJzKHQpO2lmKCEoIW58fCFpZSkpe2lmKG4uY2hhdCl7VF8odCk7cmV0dXJufUQoImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9InNwaW4iPuato+WcqOmAmui/hyAke2oobi5kaXNwbGF5KX0g57uT566X4oCmPC9kaXY+YCxXLmNhbGxTZXJ2ZXJUb29sKHtuYW1lOm4udG9vbCxhcmd1bWVudHM6e3NrdTppZS5za3UscXVhbnRpdHk6aWUucXVhbnRpdHk/PzEsLi4ubi5hcmdzfX0pLnRoZW4ocj0+eHQodCxyKSkuY2F0Y2gocj0+eHQodCx7aXNFcnJvcjohMCxjb250ZW50Olt7dGV4dDpTdHJpbmcocj8ubWVzc2FnZT8/cil9XX0pKX19LFVfPSh0LG4scik9Pntjb25zdCBvPUQoInB3YWl0Iik7bGV0IGU9ITE7RCgiYmFjayIpPy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntlPSEwfSk7bGV0IGk9MDtjb25zdCBhPSgpPT57ZXx8Vy5jYWxsU2VydmVyVG9vbCh7bmFtZToiZ2V0X3Npbm9jYXJlX29yZGVyX3N0YXR1cyIsYXJndW1lbnRzOntzZXNzaW9uSWQ6dCxtZXJjaGFudElkOm59fSkudGhlbihzPT57aWYoZSlyZXR1cm47bGV0IGM9e307dHJ5e2M9SlNPTi5wYXJzZShzPy5jb250ZW50Py5bMF0/LnRleHQ/PyJ7fSIpfWNhdGNoe31pZihjLnBhaWQpe3h0KHIscyk7cmV0dXJufWlmKCsraT4yMDApe28mJihvLnRleHRDb250ZW50PSfov5jmsqHmlLbliLDku5jmrL7jgILku5jlrozngrnkuIDkuIsi5oiR55qE6K6i5Y2VIueci+eci+OAgicpO3JldHVybn1zZXRUaW1lb3V0KGEsM2UzKX0pLmNhdGNoKCgpPT57ZXx8c2V0VGltZW91dChhLDRlMyl9KX07c2V0VGltZW91dChhLDNlMyl9LGpfPXQ9Pntjb25zdCBuPUQoInd3YWl0Iik7bGV0IHI9ITE7RCgiYmFjayIpPy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntyPSEwfSk7Y29uc3QgZT0oKT0+e3J8fFcuY2FsbFNlcnZlclRvb2woe25hbWU6ImN1cmxlc3Nfd2FsbGV0X2xvZ2luX3N0YXR1cyIsYXJndW1lbnRzOnt9fSkudGhlbihpPT57aWYocilyZXR1cm47bGV0IGE9e307dHJ5e2E9SlNPTi5wYXJzZShpPy5jb250ZW50Py5bMF0/LnRleHQ/PyJ7fSIpfWNhdGNoe31pZihhLnNpZ25lZEluKXtuJiYobi50ZXh0Q29udGVudD1g5bey55m75b2VICR7YS5lbWFpbD8/IiJ9IOKAlCDmraPlnKjku5jmrL7igKZgKSxVbSh0KTtyZXR1cm59aWYoYS5leHBpcmVkKXtuJiYobi50ZXh0Q29udGVudD0i55m75b2V6LaF5pe25LqGLOeCueS4iumdoumHjeaWsOadpeS4gOasoeOAgiIpO3JldHVybn1pZihhLm5ldmVyU3RhcnRlZCl7biYmKG4udGV4dENvbnRlbnQ9Iui/mOayoeW8gOWni+eZu+W9lSDigJQg54K55LiK6Z2i6YKj5Liq6ZO+5o6l44CCIik7cmV0dXJufXNldFRpbWVvdXQoZSwyZTMpfSkuY2F0Y2goKCk9PntyfHxzZXRUaW1lb3V0KGUsM2UzKX0pfTtzZXRUaW1lb3V0KGUsMmUzKX0sUF89dD0+e1VtKHQpfSx6dD10PT57RCgiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0icmVzdWx0Ij48c3BhbiBjbGFzcz0iYmFkZ2UgZXJyIj7ljaHniYfliqDovb3lpLHotKU8L3NwYW4+PGRpdiBjbGFzcz0ibGluZSI+JHtqKHQpfTwvZGl2PjwvZGl2PmB9O2xldCBtZT0hMSxUZT1udWxsLCR0PW51bGwsYnQ9bnVsbDtjb25zdCBPXz10PT57Y29uc3Qgbj10LnByb2R1Y3RzPz9bXSxyPUQoIm1lcmNoYW50Iik7ciYmKHIudGV4dENvbnRlbnQ9YCR7bi5sZW5ndGh9IHByb2R1Y3RzYCksRCgiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0icGdyaWQiPiR7bi5tYXAoKG8sZSk9PmA8ZGl2IGNsYXNzPSJwY2VsbCI+CiAgICAgICR7by5pbWFnZVVybD9gPGltZyBjbGFzcz0icGltZyIgc3JjPSIke2ooby5pbWFnZVVybCl9IiBhbHQ9IiIgbG9hZGluZz0ibGF6eSI+YDonPGRpdiBjbGFzcz0icGltZyI+PC9kaXY+J30KICAgICAgPGRpdiBjbGFzcz0icG5hbWUiPiR7aihvLm5hbWUpfTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJwbWV0YSBtb25vIj4ke28ucHJpY2VEaXNwbGF5P2ooby5wcmljZURpc3BsYXkpOiIifTwvZGl2PgogICAgICA8YnV0dG9uIGNsYXNzPSJhY3QgcGJ1eSIgaWQ9InBsJHtlfSI+QnV5PC9idXR0b24+CiAgICA8L2Rpdj5gKS5qb2luKCIiKXx8JzxkaXYgY2xhc3M9InJzdWIiPk5vdGhpbmcgaW4gdGhlIGNhdGFsb2cuPC9kaXY+J308L2Rpdj5gLG4uZm9yRWFjaCgobyxlKT0+RChgcGwke2V9YCk/LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e0QoImNvbnRlbnQiKS5pbm5lckhUTUw9JzxkaXYgY2xhc3M9InNwaW4iPk9wZW5pbmcgY2hlY2tvdXTigKY8L2Rpdj4nLFcuY2FsbFNlcnZlclRvb2woe25hbWU6InN0YXJ0X3Npbm9jYXJlX2NoZWNrb3V0Iixhcmd1bWVudHM6e3NrdTpvLnNrdX19KS50aGVuKGk9PntsZXQgYT1pPy5zdHJ1Y3R1cmVkQ29udGVudDtpZighYSl0cnl7YT1KU09OLnBhcnNlKGk/LmNvbnRlbnQ/LlswXT8udGV4dD8/Im51bGwiKX1jYXRjaHt9aWYoYSl7bWU9ITEsc3MoYSwhMCk7cmV0dXJufUQoImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9InJlc3VsdCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJiYWRnZSBlcnIiPkNvdWxkIG5vdCBvcGVuIHRoZSBjaGVja291dDwvc3Bhbj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+JHtqKGk/LmNvbnRlbnQ/LlswXT8udGV4dD8/Im5vIGFuc3dlciBmcm9tIHRoZSBzdG9yZWZyb250Iil9PC9kaXY+CiAgICAgICAgICA8L2Rpdj5gfSkuY2F0Y2goaT0+e0QoImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9InJlc3VsdCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJiYWRnZSBlcnIiPkNvdWxkIG5vdCBvcGVuIHRoZSBjaGVja291dDwvc3Bhbj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZSI+JHtqKFN0cmluZyhpPy5tZXNzYWdlPz9pKSl9PC9kaXY+CiAgICAgICAgICA8L2Rpdj5gfSl9KSl9LHNzPSh0LG49ITEpPT57aWYodCl7aWYodC52aWV3PT09InByb2R1Y3RzIil7T18odCksbWU9ITAsVGU9bnVsbCwkdD1udWxsO3JldHVybn1tZSYmIShuJiZ0LnNrdSYmdC5za3UhPT1UZSl8fCh0LnZpZXc9PT0ib3JkZXJzIj8oYXModCksbWU9ITAsVGU9dC5za3U/P251bGwsJHQ9dC5uYW1lPz9udWxsKTp0LnZpZXc9PT0iYm9va2VkIiYmdC5za3U/KHpfKHQpLG1lPSEwLFRlPXQuc2t1Pz9udWxsLCR0PXQubmFtZT8/bnVsbCk6dC52aWV3PT09InBpY2siJiZ0LnNrdSYmKGlzKHQpLG1lPSEwLFRlPXQuc2t1Pz9udWxsLCR0PXQubmFtZT8/bnVsbCkpfX0sRF89KCk9PlcuZ2V0SG9zdENvbnRleHQoKT8udG9vbEluZm8/LnRvb2w/Lm5hbWU/PyJzdGFydF9zaW5vY2FyZV9jaGVja291dCIscW49KHQsbj0hMCk9Pntjb25zdCByPURfKCk7Vy5jYWxsU2VydmVyVG9vbCh7bmFtZTpyLGFyZ3VtZW50czp7Li4udCwuLi5uP3tfX3JlaHlkcmF0ZToxfTp7fX19KS50aGVuKG89Pntjb25zdCBlPW8/LnN0cnVjdHVyZWRDb250ZW50O2UmJihlLnZpZXc9PT0ib3JkZXJzInx8ZS5za3UpP3NzKGUpOm1lfHx6dChyPT09Imxpc3RfbXlfb3JkZXJzIj8i5peg5rOV5Yqg6L296K6i5Y2V44CCIjoi5rKh5pyJ5Y+v5pi+56S655qE57uT566XIOKAlCDlhYjpgInkuKrluqblgYfmnZHlho3miZPlvIDnu5PnrpcobGlzdF9zaW5vY2FyZV9wcm9kdWN0c++8ieOAgiIpfSkuY2F0Y2gobz0+e21lfHx6dChTdHJpbmcobz8ubWVzc2FnZT8/bykpfSl9O2tfKCk7Vy5vbnRvb2xyZXN1bHQ9dD0+c3ModD8uc3RydWN0dXJlZENvbnRlbnQsITApO2NvbnN0IE5fPXQ9Pntjb25zdCBuPXR5cGVvZiB0LnNrdT09InN0cmluZyI/dC5za3UudHJpbSgpOiIiO2lmKG4pcmV0dXJuIG4hPT1UZTtjb25zdCByPXR5cGVvZiB0LnF1ZXJ5PT0ic3RyaW5nIj90LnF1ZXJ5LnRyaW0oKToiIjtyZXR1cm4gcj8hYCR7JHQ/PyIifSAke1RlPz8iIn1gLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoci50b0xvd2VyQ2FzZSgpKTohMX07Vy5vbnRvb2xpbnB1dD10PT57Y29uc3Qgbj10Py5hcmd1bWVudHM/P3t9O2lmKCFtZSl7YnQ9bixxbihuKTtyZXR1cm59Tl8obikmJihidD1uLG1lPSExLHFuKG4sITEpKX07Vy5vbmhvc3Rjb250ZXh0Y2hhbmdlZD0oKT0+e307Vy5jb25uZWN0KCkudGhlbigoKT0+e2NvbnN0IHQ9Vy5nZXRIb3N0Q29udGV4dCgpLG49dD8udG9vbEluZm8/LmFyZ3VtZW50cz8/dD8udG9vbElucHV0Py5hcmd1bWVudHM/P3Q/LmFyZ3VtZW50cztuJiYhbWUmJihidD1uLHFuKGJ0KSksc2V0VGltZW91dCgoKT0+e21lfHxxbihidD8/e30pfSwxZTMpfSkuY2F0Y2godD0+enQoYGJyaWRnZSBjb25uZWN0IOWksei0pTogJHtTdHJpbmcodD8ubWVzc2FnZT8/dCl9YCkpOzwvc2NyaXB0PgogIDwvaGVhZD4KICA8Ym9keT4KICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICA8ZGl2IGNsYXNzPSJoZWFkIj4KICAgICAgICA8c3BhbiBjbGFzcz0idGl0bGUiPlNpbm9jYXJlPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJtZXJjaGFudCIgaWQ9Im1lcmNoYW50Ij48L3NwYW4+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0icmVmcmVzaCIgaWQ9InJlZnJlc2giIGhpZGRlbiB0aXRsZT0i5Yi35pawIiBhcmlhLWxhYmVsPSLliLfmlrAiPgogICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIuNCIKICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMCAxMWE4IDggMCAxIDAtMS44IDYiIC8+CiAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9IjIwIDQgMjAgMTEgMTMgMTEiIC8+CiAgICAgICAgICA8L3N2Zz4KICAgICAgICA8L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImNvbnRlbnQiPjxkaXYgY2xhc3M9ImVtcHR5Ij5Mb2FkaW5n4oCmPC9kaXY+PC9kaXY+CiAgICA8L2Rpdj4KICA8L2JvZHk+CjwvaHRtbD4K', 'base64').toString('utf8');
|
|
6
|
-
//# sourceMappingURL=checkout-card.generated.js.map
|