{"data":"PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KCiAgPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCIgLz4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTUiIC8+CgogICAgPCEtLSBQcmltYXJ5IE1ldGEgVGFncyAtLT4KICAgIDx0aXRsZT5Pd24gWW91ciBDdXN0b21lciBBY3F1aXNpdGlvbiBTeXN0ZW0gfCBQaXBlbGluZSBMTEM8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9Ik93biB5b3VyIGN1c3RvbWVyIGFjcXVpc2l0aW9uIGluZnJhc3RydWN0dXJlLiBQaXBlbGluZSBidWlsZHMgdGhlIGNvbXBsZXRlIHN5c3RlbSBmb3IgaG9tZSBzZXJ2aWNlIG9wZXJhdG9ycyBhbmQgbWVkaWNhbCBwcmFjdGljZXMuIEFwcGx5IGZvciBhIGZyZWUgYXVkaXQuIiAvPgogICAgPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJpbmRleCwgZm9sbG93IiAvPgogICAgPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vam9pbnRoZXBpcGVsaW5lLmNvbS8iIC8+CgogICAgPCEtLSBPcGVuIEdyYXBoIC8gRmFjZWJvb2sgLS0+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0id2Vic2l0ZSIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vam9pbnRoZXBpcGVsaW5lLmNvbS8iIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6c2l0ZV9uYW1lIiBjb250ZW50PSJQaXBlbGluZSBMTEMiIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9Ik93biBZb3VyIEN1c3RvbWVyIEFjcXVpc2l0aW9uIFN5c3RlbSB8IFBpcGVsaW5lIExMQyIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iT3duIHlvdXIgY3VzdG9tZXIgYWNxdWlzaXRpb24gaW5mcmFzdHJ1Y3R1cmUuIFBpcGVsaW5lIGJ1aWxkcyB0aGUgY29tcGxldGUgc3lzdGVtIGZvciBob21lIHNlcnZpY2Ugb3BlcmF0b3JzIGFuZCBtZWRpY2FsIHByYWN0aWNlcy4gQXBwbHkgZm9yIGEgZnJlZSBhdWRpdC4iIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vZDJ4c3hwaDhrcHhqMGYuY2xvdWRmcm9udC5uZXQvMzEwNTE5NjYzMzg2Mzk2ODE1L1BmcUQ1ak12Y2hZNkM2U0F5cVNxY1EvcGlwZWxpbmUtb2ctaW1hZ2VfNGJmZDdkZTIucG5nIiAvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlOndpZHRoIiBjb250ZW50PSIxMjAwIiAvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlOmhlaWdodCIgY29udGVudD0iNjMwIiAvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmxvY2FsZSIgY29udGVudD0iZW5fVVMiIC8+CgogICAgPCEtLSBUd2l0dGVyIENhcmQgLS0+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmNhcmQiIGNvbnRlbnQ9InN1bW1hcnlfbGFyZ2VfaW1hZ2UiIC8+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOnRpdGxlIiBjb250ZW50PSJPd24gWW91ciBDdXN0b21lciBBY3F1aXNpdGlvbiBTeXN0ZW0gfCBQaXBlbGluZSBMTEMiIC8+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmRlc2NyaXB0aW9uIiBjb250ZW50PSJPd24geW91ciBjdXN0b21lciBhY3F1aXNpdGlvbiBpbmZyYXN0cnVjdHVyZS4gUGlwZWxpbmUgYnVpbGRzIHRoZSBjb21wbGV0ZSBzeXN0ZW0gZm9yIGhvbWUgc2VydmljZSBvcGVyYXRvcnMgYW5kIG1lZGljYWwgcHJhY3RpY2VzLiBBcHBseSBmb3IgYSBmcmVlIGF1ZGl0LiIgLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vZDJ4c3hwaDhrcHhqMGYuY2xvdWRmcm9udC5uZXQvMzEwNTE5NjYzMzg2Mzk2ODE1L1BmcUQ1ak12Y2hZNkM2U0F5cVNxY1EvcGlwZWxpbmUtb2ctaW1hZ2VfNGJmZDdkZTIucG5nIiAvPgoKICAgIDwhLS0gRmF2aWNvbiAtLT4KICAgIDxsaW5rIHJlbD0iaWNvbiIgaHJlZj0iL2Zhdmljb24uaWNvIiBzaXplcz0iYW55IiAvPgogICAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS9zdmcreG1sIiBocmVmPSIvZmF2aWNvbi5zdmciIC8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii9hcHBsZS10b3VjaC1pY29uLnBuZyIgLz4KCiAgICA8IS0tIFByZWNvbm5lY3QgZm9yIEdvb2dsZSBGb250cyAtLT4KICAgIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbSIgLz4KICAgIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbSIgY3Jvc3NvcmlnaW4gLz4KICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9Q29ybW9yYW50K0dhcmFtb25kOml0YWwsd2dodEAwLDQwMDswLDUwMDswLDYwMDswLDcwMDsxLDQwMDsxLDUwMCZmYW1pbHk9U291cmNlK1NlcmlmKzQ6aXRhbCxvcHN6LHdnaHRAMCw4Li42MCw0MDA7MCw4Li42MCw1MDA7MCw4Li42MCw2MDA7MSw4Li42MCw0MDA7MSw4Li42MCw1MDAmZmFtaWx5PUludGVyOndnaHRANDAwOzUwMDs2MDA7NzAwJmRpc3BsYXk9c3dhcCIgcmVsPSJzdHlsZXNoZWV0IiAvPgoKICAgIDwhLS0gUHJlbG9hZCBoZXJvIGltYWdlIGZvciBMQ1AgLS0+CiAgICA8bGluayByZWw9InByZWxvYWQiIGFzPSJpbWFnZSIgaHJlZj0iaHR0cHM6Ly9kMnhzeHBoOGtweGowZi5jbG91ZGZyb250Lm5ldC8zMTA1MTk2NjMzODYzOTY4MTUvUGZxRDVqTXZjaFk2QzZTQXlxU3FjUS9oZXJvLW9wdGlvbi1hLVJ2eGFFRHE3SHhIR3JqdlhVNnA0Mzcud2VicCIgZmV0Y2hwcmlvcml0eT0iaGlnaCIgLz4KCiAgICA8IS0tIEFkZGl0aW9uYWwgU0VPIG1ldGEgLS0+CiAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IlBpcGVsaW5lIExMQyIgLz4KICAgIDxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIjMEMxMjIwIiAvPgoKICAgIDwhLS0gR29vZ2xlIEFkcyBnbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0tPgogICAgPHNjcmlwdCBhc3luYyBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0YWcvanM/aWQ9QVctUExBQ0VIT0xERVIiPjwvc2NyaXB0PgogICAgPHNjcmlwdD4KICAgICAgd2luZG93LmRhdGFMYXllciA9IHdpbmRvdy5kYXRhTGF5ZXIgfHwgW107CiAgICAgIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICAgICAgZ3RhZygnanMnLCBuZXcgRGF0ZSgpKTsKICAgICAgZ3RhZygnY29uZmlnJywgJ0FXLVBMQUNFSE9MREVSJyk7CiAgICA8L3NjcmlwdD4KICAgIDxzY3JpcHQgdHlwZT0ibW9kdWxlIiBjcm9zc29yaWdpbiBzcmM9Ii9hc3NldHMvaW5kZXgtajhhcEZKeFcuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBjcm9zc29yaWdpbiBocmVmPSIvYXNzZXRzL2luZGV4LUNPeG5GMVZMLmNzcyI+CiAgICAKCiAgICA8IS0tIFBpcGVsaW5lIENoZWNrIEJhbm5lciAtLT4KICAgIDxzdHlsZT4KICAgICAgI3BpcGVsaW5lLWNoZWNrLWJhbm5lciB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHRvcDogNC41cmVtOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgei1pbmRleDogNDk7CiAgICAgICAgYmFja2dyb3VuZDogIzFhMTIwODsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyMTIsIDE2OCwgODMsIDAuMzUpOwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDIxMiwgMTY4LCA4MywgMC4xNSk7CiAgICAgICAgcGFkZGluZzogMC42NXJlbSAxLjVyZW07CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGdhcDogMS4yNXJlbTsKICAgICAgICBmb250LWZhbWlseTogJ0ludGVyJywgJ0hlbHZldGljYSBOZXVlJywgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgICAgdHJhbnNpdGlvbjogdG9wIDAuM3MgZWFzZTsKICAgICAgfQogICAgICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgICAgICAjcGlwZWxpbmUtY2hlY2stYmFubmVyIHsKICAgICAgICAgIHRvcDogNXJlbTsKICAgICAgICAgIHBhZGRpbmc6IDAuNjVyZW0gMnJlbTsKICAgICAgICAgIGdhcDogMS43NXJlbTsKICAgICAgICB9CiAgICAgIH0KICAgICAgI3BpcGVsaW5lLWNoZWNrLWJhbm5lciAucGNiLXRleHQgewogICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBjb2xvcjogcmdiYSgyNDUsIDI0MCwgMjMyLCAwLjc1KTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogICAgICAgICNwaXBlbGluZS1jaGVjay1iYW5uZXIgLnBjYi10ZXh0IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTsKICAgICAgICB9CiAgICAgIH0KICAgICAgI3BpcGVsaW5lLWNoZWNrLWJhbm5lciAucGNiLWhlYWRsaW5lIHsKICAgICAgICBmb250LXNpemU6IDAuNzJyZW07CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgY29sb3I6ICNmNWYwZTg7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQogICAgICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgICAgICAjcGlwZWxpbmUtY2hlY2stYmFubmVyIC5wY2ItaGVhZGxpbmUgewogICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtOwogICAgICAgIH0KICAgICAgfQogICAgICAjcGlwZWxpbmUtY2hlY2stYmFubmVyIC5wY2ItZGl2aWRlciB7CiAgICAgICAgd2lkdGg6IDFweDsKICAgICAgICBoZWlnaHQ6IDAuOXJlbTsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwgMTY4LCA4MywgMC4zKTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQogICAgICAjcGlwZWxpbmUtY2hlY2stYmFubmVyIC5wY2ItY3RhIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMC40cmVtOwogICAgICAgIGZvbnQtc2l6ZTogMC43cmVtOwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMWVtOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgY29sb3I6ICMwYTBhMGE7CiAgICAgICAgYmFja2dyb3VuZDogI2Q0YTg1MzsKICAgICAgICBwYWRkaW5nOiAwLjM1cmVtIDAuOXJlbTsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycyBlYXNlLCB0cmFuc2Zvcm0gMC4ycyBlYXNlOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KICAgICAgI3BpcGVsaW5lLWNoZWNrLWJhbm5lciAucGNiLWN0YTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogI2UwYjg2MjsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7CiAgICAgICAgY29sb3I6ICMwYTBhMGE7CiAgICAgIH0KICAgICAgI3BpcGVsaW5lLWNoZWNrLWJhbm5lciAucGNiLWN0YS1hcnJvdyB7CiAgICAgICAgZm9udC1zaXplOiAwLjY1cmVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICB9CiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkgewogICAgICAgICNwaXBlbGluZS1jaGVjay1iYW5uZXIgLnBjYi10ZXh0LAogICAgICAgICNwaXBlbGluZS1jaGVjay1iYW5uZXIgLnBjYi1kaXZpZGVyIHsKICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgfQogICAgICB9CiAgICA8L3N0eWxlPgogIDwvaGVhZD4KCiAgPGJvZHk+CiAgICA8c2NyaXB0IGlkPSJtYW51cy1ydW50aW1lIj53aW5kb3cuX19NQU5VU19IT1NUX0RFVl9fID0gZmFsc2U7CihmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgTXI9e2V4cG9ydHM6e319LEtuPXt9Oy8qKgogKiBAbGljZW5zZSBSZWFjdAogKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLmpzCiAqCiAqIENvcHlyaWdodCAoYykgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZQogKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAqL3ZhciAkYztmdW5jdGlvbiB1bSgpe2lmKCRjKXJldHVybiBLbjskYz0xO3ZhciByPVN5bWJvbC5mb3IoInJlYWN0LnRyYW5zaXRpb25hbC5lbGVtZW50IiksaT1TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpO2Z1bmN0aW9uIGMocyxkLG0pe3ZhciB4PW51bGw7aWYobSE9PXZvaWQgMCYmKHg9IiIrbSksZC5rZXkhPT12b2lkIDAmJih4PSIiK2Qua2V5KSwia2V5ImluIGQpe209e307Zm9yKHZhciBSIGluIGQpUiE9PSJrZXkiJiYobVtSXT1kW1JdKX1lbHNlIG09ZDtyZXR1cm4gZD1tLnJlZix7JCR0eXBlb2Y6cix0eXBlOnMsa2V5OngscmVmOmQhPT12b2lkIDA/ZDpudWxsLHByb3BzOm19fXJldHVybiBLbi5GcmFnbWVudD1pLEtuLmpzeD1jLEtuLmpzeHM9YyxLbn12YXIgRmM7ZnVuY3Rpb24gZG0oKXtyZXR1cm4gRmN8fChGYz0xLE1yLmV4cG9ydHM9dW0oKSksTXIuZXhwb3J0c312YXIgaD1kbSgpLEFyPXtleHBvcnRzOnt9fSxQbj17fSxScj17ZXhwb3J0czp7fX0sTnI9e307LyoqCiAqIEBsaWNlbnNlIFJlYWN0CiAqIHNjaGVkdWxlci5wcm9kdWN0aW9uLmpzCiAqCiAqIENvcHlyaWdodCAoYykgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZQogKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAqL3ZhciBJYztmdW5jdGlvbiBmbSgpe3JldHVybiBJY3x8KEljPTEsZnVuY3Rpb24ocil7ZnVuY3Rpb24gaShBLHEpe3ZhciBCPUEubGVuZ3RoO0EucHVzaChxKTt0OmZvcig7MDxCOyl7dmFyIGJ0PUItMT4+PjEscD1BW2J0XTtpZigwPGQocCxxKSlBW2J0XT1xLEFbQl09cCxCPWJ0O2Vsc2UgYnJlYWsgdH19ZnVuY3Rpb24gYyhBKXtyZXR1cm4gQS5sZW5ndGg9PT0wP251bGw6QVswXX1mdW5jdGlvbiBzKEEpe2lmKEEubGVuZ3RoPT09MClyZXR1cm4gbnVsbDt2YXIgcT1BWzBdLEI9QS5wb3AoKTtpZihCIT09cSl7QVswXT1CO3Q6Zm9yKHZhciBidD0wLHA9QS5sZW5ndGgsTz1wPj4+MTtidDxPOyl7dmFyIFg9MiooYnQrMSktMSxHPUFbWF0sWj1YKzEsc3Q9QVtaXTtpZigwPmQoRyxCKSlaPHAmJjA+ZChzdCxHKT8oQVtidF09c3QsQVtaXT1CLGJ0PVopOihBW2J0XT1HLEFbWF09QixidD1YKTtlbHNlIGlmKFo8cCYmMD5kKHN0LEIpKUFbYnRdPXN0LEFbWl09QixidD1aO2Vsc2UgYnJlYWsgdH19cmV0dXJuIHF9ZnVuY3Rpb24gZChBLHEpe3ZhciBCPUEuc29ydEluZGV4LXEuc29ydEluZGV4O3JldHVybiBCIT09MD9COkEuaWQtcS5pZH1pZihyLnVuc3RhYmxlX25vdz12b2lkIDAsdHlwZW9mIHBlcmZvcm1hbmNlPT0ib2JqZWN0IiYmdHlwZW9mIHBlcmZvcm1hbmNlLm5vdz09ImZ1bmN0aW9uIil7dmFyIG09cGVyZm9ybWFuY2U7ci51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gbS5ub3coKX19ZWxzZXt2YXIgeD1EYXRlLFI9eC5ub3coKTtyLnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiB4Lm5vdygpLVJ9fXZhciBDPVtdLHY9W10sRD0xLGo9bnVsbCxKPTMsYXQ9ITEsJD0hMSxudD0hMSxjdD0hMSxodD10eXBlb2Ygc2V0VGltZW91dD09ImZ1bmN0aW9uIj9zZXRUaW1lb3V0Om51bGwsU3Q9dHlwZW9mIGNsZWFyVGltZW91dD09ImZ1bmN0aW9uIj9jbGVhclRpbWVvdXQ6bnVsbCxfPXR5cGVvZiBzZXRJbW1lZGlhdGU8InUiP3NldEltbWVkaWF0ZTpudWxsO2Z1bmN0aW9uIFkoQSl7Zm9yKHZhciBxPWModik7cSE9PW51bGw7KXtpZihxLmNhbGxiYWNrPT09bnVsbClzKHYpO2Vsc2UgaWYocS5zdGFydFRpbWU8PUEpcyh2KSxxLnNvcnRJbmRleD1xLmV4cGlyYXRpb25UaW1lLGkoQyxxKTtlbHNlIGJyZWFrO3E9Yyh2KX19ZnVuY3Rpb24gSChBKXtpZihudD0hMSxZKEEpLCEkKWlmKGMoQykhPT1udWxsKSQ9ITAsaXR8fChpdD0hMCxCdCgpKTtlbHNle3ZhciBxPWModik7cSE9PW51bGwmJk10KEgscS5zdGFydFRpbWUtQSl9fXZhciBpdD0hMSxydD0tMSxWPTUseHQ9LTE7ZnVuY3Rpb24gQmUoKXtyZXR1cm4gY3Q/ITA6IShyLnVuc3RhYmxlX25vdygpLXh0PFYpfWZ1bmN0aW9uIHRlKCl7aWYoY3Q9ITEsaXQpe3ZhciBBPXIudW5zdGFibGVfbm93KCk7eHQ9QTt2YXIgcT0hMDt0cnl7dDp7JD0hMSxudCYmKG50PSExLFN0KHJ0KSxydD0tMSksYXQ9ITA7dmFyIEI9Sjt0cnl7ZTp7Zm9yKFkoQSksaj1jKEMpO2ohPT1udWxsJiYhKGouZXhwaXJhdGlvblRpbWU+QSYmQmUoKSk7KXt2YXIgYnQ9ai5jYWxsYmFjaztpZih0eXBlb2YgYnQ9PSJmdW5jdGlvbiIpe2ouY2FsbGJhY2s9bnVsbCxKPWoucHJpb3JpdHlMZXZlbDt2YXIgcD1idChqLmV4cGlyYXRpb25UaW1lPD1BKTtpZihBPXIudW5zdGFibGVfbm93KCksdHlwZW9mIHA9PSJmdW5jdGlvbiIpe2ouY2FsbGJhY2s9cCxZKEEpLHE9ITA7YnJlYWsgZX1qPT09YyhDKSYmcyhDKSxZKEEpfWVsc2UgcyhDKTtqPWMoQyl9aWYoaiE9PW51bGwpcT0hMDtlbHNle3ZhciBPPWModik7TyE9PW51bGwmJk10KEgsTy5zdGFydFRpbWUtQSkscT0hMX19YnJlYWsgdH1maW5hbGx5e2o9bnVsbCxKPUIsYXQ9ITF9cT12b2lkIDB9fWZpbmFsbHl7cT9CdCgpOml0PSExfX19dmFyIEJ0O2lmKHR5cGVvZiBfPT0iZnVuY3Rpb24iKUJ0PWZ1bmN0aW9uKCl7Xyh0ZSl9O2Vsc2UgaWYodHlwZW9mIE1lc3NhZ2VDaGFubmVsPCJ1Iil7dmFyIG1lPW5ldyBNZXNzYWdlQ2hhbm5lbCxTZT1tZS5wb3J0MjttZS5wb3J0MS5vbm1lc3NhZ2U9dGUsQnQ9ZnVuY3Rpb24oKXtTZS5wb3N0TWVzc2FnZShudWxsKX19ZWxzZSBCdD1mdW5jdGlvbigpe2h0KHRlLDApfTtmdW5jdGlvbiBNdChBLHEpe3J0PWh0KGZ1bmN0aW9uKCl7QShyLnVuc3RhYmxlX25vdygpKX0scSl9ci51bnN0YWJsZV9JZGxlUHJpb3JpdHk9NSxyLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5PTEsci51bnN0YWJsZV9Mb3dQcmlvcml0eT00LHIudW5zdGFibGVfTm9ybWFsUHJpb3JpdHk9MyxyLnVuc3RhYmxlX1Byb2ZpbGluZz1udWxsLHIudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHk9MixyLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKEEpe0EuY2FsbGJhY2s9bnVsbH0sci51bnN0YWJsZV9mb3JjZUZyYW1lUmF0ZT1mdW5jdGlvbihBKXswPkF8fDEyNTxBP2NvbnNvbGUuZXJyb3IoImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZCIpOlY9MDxBP01hdGguZmxvb3IoMWUzL0EpOjV9LHIudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gSn0sci51bnN0YWJsZV9uZXh0PWZ1bmN0aW9uKEEpe3N3aXRjaChKKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgcT0zO2JyZWFrO2RlZmF1bHQ6cT1KfXZhciBCPUo7Sj1xO3RyeXtyZXR1cm4gQSgpfWZpbmFsbHl7Sj1CfX0sci51bnN0YWJsZV9yZXF1ZXN0UGFpbnQ9ZnVuY3Rpb24oKXtjdD0hMH0sci51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHk9ZnVuY3Rpb24oQSxxKXtzd2l0Y2goQSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6Y2FzZSA0OmNhc2UgNTpicmVhaztkZWZhdWx0OkE9M312YXIgQj1KO0o9QTt0cnl7cmV0dXJuIHEoKX1maW5hbGx5e0o9Qn19LHIudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjaz1mdW5jdGlvbihBLHEsQil7dmFyIGJ0PXIudW5zdGFibGVfbm93KCk7c3dpdGNoKHR5cGVvZiBCPT0ib2JqZWN0IiYmQiE9PW51bGw/KEI9Qi5kZWxheSxCPXR5cGVvZiBCPT0ibnVtYmVyIiYmMDxCP2J0K0I6YnQpOkI9YnQsQSl7Y2FzZSAxOnZhciBwPS0xO2JyZWFrO2Nhc2UgMjpwPTI1MDticmVhaztjYXNlIDU6cD0xMDczNzQxODIzO2JyZWFrO2Nhc2UgNDpwPTFlNDticmVhaztkZWZhdWx0OnA9NWUzfXJldHVybiBwPUIrcCxBPXtpZDpEKyssY2FsbGJhY2s6cSxwcmlvcml0eUxldmVsOkEsc3RhcnRUaW1lOkIsZXhwaXJhdGlvblRpbWU6cCxzb3J0SW5kZXg6LTF9LEI+YnQ/KEEuc29ydEluZGV4PUIsaSh2LEEpLGMoQyk9PT1udWxsJiZBPT09Yyh2KSYmKG50PyhTdChydCkscnQ9LTEpOm50PSEwLE10KEgsQi1idCkpKTooQS5zb3J0SW5kZXg9cCxpKEMsQSksJHx8YXR8fCgkPSEwLGl0fHwoaXQ9ITAsQnQoKSkpKSxBfSxyLnVuc3RhYmxlX3Nob3VsZFlpZWxkPUJlLHIudW5zdGFibGVfd3JhcENhbGxiYWNrPWZ1bmN0aW9uKEEpe3ZhciBxPUo7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIEI9SjtKPXE7dHJ5e3JldHVybiBBLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e0o9Qn19fX0oTnIpKSxOcn12YXIgdHU7ZnVuY3Rpb24gaG0oKXtyZXR1cm4gdHV8fCh0dT0xLFJyLmV4cG9ydHM9Zm0oKSksUnIuZXhwb3J0c312YXIgenI9e2V4cG9ydHM6e319LHV0PXt9Oy8qKgogKiBAbGljZW5zZSBSZWFjdAogKiByZWFjdC5wcm9kdWN0aW9uLmpzCiAqCiAqIENvcHlyaWdodCAoYykgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZQogKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAqL3ZhciBldTtmdW5jdGlvbiBtbSgpe2lmKGV1KXJldHVybiB1dDtldT0xO3ZhciByPVN5bWJvbC5mb3IoInJlYWN0LnRyYW5zaXRpb25hbC5lbGVtZW50IiksaT1TeW1ib2wuZm9yKCJyZWFjdC5wb3J0YWwiKSxjPVN5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50Iikscz1TeW1ib2wuZm9yKCJyZWFjdC5zdHJpY3RfbW9kZSIpLGQ9U3ltYm9sLmZvcigicmVhY3QucHJvZmlsZXIiKSxtPVN5bWJvbC5mb3IoInJlYWN0LmNvbnN1bWVyIikseD1TeW1ib2wuZm9yKCJyZWFjdC5jb250ZXh0IiksUj1TeW1ib2wuZm9yKCJyZWFjdC5mb3J3YXJkX3JlZiIpLEM9U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2UiKSx2PVN5bWJvbC5mb3IoInJlYWN0Lm1lbW8iKSxEPVN5bWJvbC5mb3IoInJlYWN0LmxhenkiKSxqPVN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBKKHApe3JldHVybiBwPT09bnVsbHx8dHlwZW9mIHAhPSJvYmplY3QiP251bGw6KHA9aiYmcFtqXXx8cFsiQEBpdGVyYXRvciJdLHR5cGVvZiBwPT0iZnVuY3Rpb24iP3A6bnVsbCl9dmFyIGF0PXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSwkPU9iamVjdC5hc3NpZ24sbnQ9e307ZnVuY3Rpb24gY3QocCxPLFgpe3RoaXMucHJvcHM9cCx0aGlzLmNvbnRleHQ9Tyx0aGlzLnJlZnM9bnQsdGhpcy51cGRhdGVyPVh8fGF0fWN0LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LGN0LnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihwLE8pe2lmKHR5cGVvZiBwIT0ib2JqZWN0IiYmdHlwZW9mIHAhPSJmdW5jdGlvbiImJnAhPW51bGwpdGhyb3cgRXJyb3IoInRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLiIpO3RoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxwLE8sInNldFN0YXRlIil9LGN0LnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihwKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMscCwiZm9yY2VVcGRhdGUiKX07ZnVuY3Rpb24gaHQoKXt9aHQucHJvdG90eXBlPWN0LnByb3RvdHlwZTtmdW5jdGlvbiBTdChwLE8sWCl7dGhpcy5wcm9wcz1wLHRoaXMuY29udGV4dD1PLHRoaXMucmVmcz1udCx0aGlzLnVwZGF0ZXI9WHx8YXR9dmFyIF89U3QucHJvdG90eXBlPW5ldyBodDtfLmNvbnN0cnVjdG9yPVN0LCQoXyxjdC5wcm90b3R5cGUpLF8uaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIFk9QXJyYXkuaXNBcnJheSxIPXtIOm51bGwsQTpudWxsLFQ6bnVsbCxTOm51bGwsVjpudWxsfSxpdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHJ0KHAsTyxYLEcsWixzdCl7cmV0dXJuIFg9c3QucmVmLHskJHR5cGVvZjpyLHR5cGU6cCxrZXk6TyxyZWY6WCE9PXZvaWQgMD9YOm51bGwscHJvcHM6c3R9fWZ1bmN0aW9uIFYocCxPKXtyZXR1cm4gcnQocC50eXBlLE8sdm9pZCAwLHZvaWQgMCx2b2lkIDAscC5wcm9wcyl9ZnVuY3Rpb24geHQocCl7cmV0dXJuIHR5cGVvZiBwPT0ib2JqZWN0IiYmcCE9PW51bGwmJnAuJCR0eXBlb2Y9PT1yfWZ1bmN0aW9uIEJlKHApe3ZhciBPPXsiPSI6Ij0wIiwiOiI6Ij0yIn07cmV0dXJuIiQiK3AucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKFgpe3JldHVybiBPW1hdfSl9dmFyIHRlPS9cLysvZztmdW5jdGlvbiBCdChwLE8pe3JldHVybiB0eXBlb2YgcD09Im9iamVjdCImJnAhPT1udWxsJiZwLmtleSE9bnVsbD9CZSgiIitwLmtleSk6Ty50b1N0cmluZygzNil9ZnVuY3Rpb24gbWUoKXt9ZnVuY3Rpb24gU2UocCl7c3dpdGNoKHAuc3RhdHVzKXtjYXNlImZ1bGZpbGxlZCI6cmV0dXJuIHAudmFsdWU7Y2FzZSJyZWplY3RlZCI6dGhyb3cgcC5yZWFzb247ZGVmYXVsdDpzd2l0Y2godHlwZW9mIHAuc3RhdHVzPT0ic3RyaW5nIj9wLnRoZW4obWUsbWUpOihwLnN0YXR1cz0icGVuZGluZyIscC50aGVuKGZ1bmN0aW9uKE8pe3Auc3RhdHVzPT09InBlbmRpbmciJiYocC5zdGF0dXM9ImZ1bGZpbGxlZCIscC52YWx1ZT1PKX0sZnVuY3Rpb24oTyl7cC5zdGF0dXM9PT0icGVuZGluZyImJihwLnN0YXR1cz0icmVqZWN0ZWQiLHAucmVhc29uPU8pfSkpLHAuc3RhdHVzKXtjYXNlImZ1bGZpbGxlZCI6cmV0dXJuIHAudmFsdWU7Y2FzZSJyZWplY3RlZCI6dGhyb3cgcC5yZWFzb259fXRocm93IHB9ZnVuY3Rpb24gTXQocCxPLFgsRyxaKXt2YXIgc3Q9dHlwZW9mIHA7KHN0PT09InVuZGVmaW5lZCJ8fHN0PT09ImJvb2xlYW4iKSYmKHA9bnVsbCk7dmFyIEk9ITE7aWYocD09PW51bGwpST0hMDtlbHNlIHN3aXRjaChzdCl7Y2FzZSJiaWdpbnQiOmNhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6ST0hMDticmVhaztjYXNlIm9iamVjdCI6c3dpdGNoKHAuJCR0eXBlb2Ype2Nhc2UgcjpjYXNlIGk6ST0hMDticmVhaztjYXNlIEQ6cmV0dXJuIEk9cC5faW5pdCxNdChJKHAuX3BheWxvYWQpLE8sWCxHLFopfX1pZihJKXJldHVybiBaPVoocCksST1HPT09IiI/Ii4iK0J0KHAsMCk6RyxZKFopPyhYPSIiLEkhPW51bGwmJihYPUkucmVwbGFjZSh0ZSwiJCYvIikrIi8iKSxNdChaLE8sWCwiIixmdW5jdGlvbihKdCl7cmV0dXJuIEp0fSkpOlohPW51bGwmJih4dChaKSYmKFo9VihaLFgrKFoua2V5PT1udWxsfHxwJiZwLmtleT09PVoua2V5PyIiOigiIitaLmtleSkucmVwbGFjZSh0ZSwiJCYvIikrIi8iKStJKSksTy5wdXNoKFopKSwxO0k9MDt2YXIgZ3Q9Rz09PSIiPyIuIjpHKyI6IjtpZihZKHApKWZvcih2YXIgVHQ9MDtUdDxwLmxlbmd0aDtUdCsrKUc9cFtUdF0sc3Q9Z3QrQnQoRyxUdCksSSs9TXQoRyxPLFgsc3QsWik7ZWxzZSBpZihUdD1KKHApLHR5cGVvZiBUdD09ImZ1bmN0aW9uIilmb3IocD1UdC5jYWxsKHApLFR0PTA7IShHPXAubmV4dCgpKS5kb25lOylHPUcudmFsdWUsc3Q9Z3QrQnQoRyxUdCsrKSxJKz1NdChHLE8sWCxzdCxaKTtlbHNlIGlmKHN0PT09Im9iamVjdCIpe2lmKHR5cGVvZiBwLnRoZW49PSJmdW5jdGlvbiIpcmV0dXJuIE10KFNlKHApLE8sWCxHLFopO3Rocm93IE89U3RyaW5nKHApLEVycm9yKCJPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6ICIrKE89PT0iW29iamVjdCBPYmplY3RdIj8ib2JqZWN0IHdpdGgga2V5cyB7IitPYmplY3Qua2V5cyhwKS5qb2luKCIsICIpKyJ9IjpPKSsiKS4gSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSBpbnN0ZWFkLiIpfXJldHVybiBJfWZ1bmN0aW9uIEEocCxPLFgpe2lmKHA9PW51bGwpcmV0dXJuIHA7dmFyIEc9W10sWj0wO3JldHVybiBNdChwLEcsIiIsIiIsZnVuY3Rpb24oc3Qpe3JldHVybiBPLmNhbGwoWCxzdCxaKyspfSksR31mdW5jdGlvbiBxKHApe2lmKHAuX3N0YXR1cz09PS0xKXt2YXIgTz1wLl9yZXN1bHQ7Tz1PKCksTy50aGVuKGZ1bmN0aW9uKFgpeyhwLl9zdGF0dXM9PT0wfHxwLl9zdGF0dXM9PT0tMSkmJihwLl9zdGF0dXM9MSxwLl9yZXN1bHQ9WCl9LGZ1bmN0aW9uKFgpeyhwLl9zdGF0dXM9PT0wfHxwLl9zdGF0dXM9PT0tMSkmJihwLl9zdGF0dXM9MixwLl9yZXN1bHQ9WCl9KSxwLl9zdGF0dXM9PT0tMSYmKHAuX3N0YXR1cz0wLHAuX3Jlc3VsdD1PKX1pZihwLl9zdGF0dXM9PT0xKXJldHVybiBwLl9yZXN1bHQuZGVmYXVsdDt0aHJvdyBwLl9yZXN1bHR9dmFyIEI9dHlwZW9mIHJlcG9ydEVycm9yPT0iZnVuY3Rpb24iP3JlcG9ydEVycm9yOmZ1bmN0aW9uKHApe2lmKHR5cGVvZiB3aW5kb3c9PSJvYmplY3QiJiZ0eXBlb2Ygd2luZG93LkVycm9yRXZlbnQ9PSJmdW5jdGlvbiIpe3ZhciBPPW5ldyB3aW5kb3cuRXJyb3JFdmVudCgiZXJyb3IiLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITAsbWVzc2FnZTp0eXBlb2YgcD09Im9iamVjdCImJnAhPT1udWxsJiZ0eXBlb2YgcC5tZXNzYWdlPT0ic3RyaW5nIj9TdHJpbmcocC5tZXNzYWdlKTpTdHJpbmcocCksZXJyb3I6cH0pO2lmKCF3aW5kb3cuZGlzcGF0Y2hFdmVudChPKSlyZXR1cm59ZWxzZSBpZih0eXBlb2YgcHJvY2Vzcz09Im9iamVjdCImJnR5cGVvZiBwcm9jZXNzLmVtaXQ9PSJmdW5jdGlvbiIpe3Byb2Nlc3MuZW1pdCgidW5jYXVnaHRFeGNlcHRpb24iLHApO3JldHVybn1jb25zb2xlLmVycm9yKHApfTtmdW5jdGlvbiBidCgpe31yZXR1cm4gdXQuQ2hpbGRyZW49e21hcDpBLGZvckVhY2g6ZnVuY3Rpb24ocCxPLFgpe0EocCxmdW5jdGlvbigpe08uYXBwbHkodGhpcyxhcmd1bWVudHMpfSxYKX0sY291bnQ6ZnVuY3Rpb24ocCl7dmFyIE89MDtyZXR1cm4gQShwLGZ1bmN0aW9uKCl7TysrfSksT30sdG9BcnJheTpmdW5jdGlvbihwKXtyZXR1cm4gQShwLGZ1bmN0aW9uKE8pe3JldHVybiBPfSl8fFtdfSxvbmx5OmZ1bmN0aW9uKHApe2lmKCF4dChwKSl0aHJvdyBFcnJvcigiUmVhY3QuQ2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuIik7cmV0dXJuIHB9fSx1dC5Db21wb25lbnQ9Y3QsdXQuRnJhZ21lbnQ9Yyx1dC5Qcm9maWxlcj1kLHV0LlB1cmVDb21wb25lbnQ9U3QsdXQuU3RyaWN0TW9kZT1zLHV0LlN1c3BlbnNlPUMsdXQuX19DTElFTlRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFPUgsdXQuX19DT01QSUxFUl9SVU5USU1FPXtfX3Byb3RvX186bnVsbCxjOmZ1bmN0aW9uKHApe3JldHVybiBILkgudXNlTWVtb0NhY2hlKHApfX0sdXQuY2FjaGU9ZnVuY3Rpb24ocCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHAuYXBwbHkobnVsbCxhcmd1bWVudHMpfX0sdXQuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKHAsTyxYKXtpZihwPT1udWxsKXRocm93IEVycm9yKCJUaGUgYXJndW1lbnQgbXVzdCBiZSBhIFJlYWN0IGVsZW1lbnQsIGJ1dCB5b3UgcGFzc2VkICIrcCsiLiIpO3ZhciBHPSQoe30scC5wcm9wcyksWj1wLmtleSxzdD12b2lkIDA7aWYoTyE9bnVsbClmb3IoSSBpbiBPLnJlZiE9PXZvaWQgMCYmKHN0PXZvaWQgMCksTy5rZXkhPT12b2lkIDAmJihaPSIiK08ua2V5KSxPKSFpdC5jYWxsKE8sSSl8fEk9PT0ia2V5Inx8ST09PSJfX3NlbGYifHxJPT09Il9fc291cmNlInx8ST09PSJyZWYiJiZPLnJlZj09PXZvaWQgMHx8KEdbSV09T1tJXSk7dmFyIEk9YXJndW1lbnRzLmxlbmd0aC0yO2lmKEk9PT0xKUcuY2hpbGRyZW49WDtlbHNlIGlmKDE8SSl7Zm9yKHZhciBndD1BcnJheShJKSxUdD0wO1R0PEk7VHQrKylndFtUdF09YXJndW1lbnRzW1R0KzJdO0cuY2hpbGRyZW49Z3R9cmV0dXJuIHJ0KHAudHlwZSxaLHZvaWQgMCx2b2lkIDAsc3QsRyl9LHV0LmNyZWF0ZUNvbnRleHQ9ZnVuY3Rpb24ocCl7cmV0dXJuIHA9eyQkdHlwZW9mOngsX2N1cnJlbnRWYWx1ZTpwLF9jdXJyZW50VmFsdWUyOnAsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsfSxwLlByb3ZpZGVyPXAscC5Db25zdW1lcj17JCR0eXBlb2Y6bSxfY29udGV4dDpwfSxwfSx1dC5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHAsTyxYKXt2YXIgRyxaPXt9LHN0PW51bGw7aWYoTyE9bnVsbClmb3IoRyBpbiBPLmtleSE9PXZvaWQgMCYmKHN0PSIiK08ua2V5KSxPKWl0LmNhbGwoTyxHKSYmRyE9PSJrZXkiJiZHIT09Il9fc2VsZiImJkchPT0iX19zb3VyY2UiJiYoWltHXT1PW0ddKTt2YXIgST1hcmd1bWVudHMubGVuZ3RoLTI7aWYoST09PTEpWi5jaGlsZHJlbj1YO2Vsc2UgaWYoMTxJKXtmb3IodmFyIGd0PUFycmF5KEkpLFR0PTA7VHQ8STtUdCsrKWd0W1R0XT1hcmd1bWVudHNbVHQrMl07Wi5jaGlsZHJlbj1ndH1pZihwJiZwLmRlZmF1bHRQcm9wcylmb3IoRyBpbiBJPXAuZGVmYXVsdFByb3BzLEkpWltHXT09PXZvaWQgMCYmKFpbR109SVtHXSk7cmV0dXJuIHJ0KHAsc3Qsdm9pZCAwLHZvaWQgMCxudWxsLFopfSx1dC5jcmVhdGVSZWY9ZnVuY3Rpb24oKXtyZXR1cm57Y3VycmVudDpudWxsfX0sdXQuZm9yd2FyZFJlZj1mdW5jdGlvbihwKXtyZXR1cm57JCR0eXBlb2Y6UixyZW5kZXI6cH19LHV0LmlzVmFsaWRFbGVtZW50PXh0LHV0Lmxhenk9ZnVuY3Rpb24ocCl7cmV0dXJueyQkdHlwZW9mOkQsX3BheWxvYWQ6e19zdGF0dXM6LTEsX3Jlc3VsdDpwfSxfaW5pdDpxfX0sdXQubWVtbz1mdW5jdGlvbihwLE8pe3JldHVybnskJHR5cGVvZjp2LHR5cGU6cCxjb21wYXJlOk89PT12b2lkIDA/bnVsbDpPfX0sdXQuc3RhcnRUcmFuc2l0aW9uPWZ1bmN0aW9uKHApe3ZhciBPPUguVCxYPXt9O0guVD1YO3RyeXt2YXIgRz1wKCksWj1ILlM7WiE9PW51bGwmJlooWCxHKSx0eXBlb2YgRz09Im9iamVjdCImJkchPT1udWxsJiZ0eXBlb2YgRy50aGVuPT0iZnVuY3Rpb24iJiZHLnRoZW4oYnQsQil9Y2F0Y2goc3Qpe0Ioc3QpfWZpbmFsbHl7SC5UPU99fSx1dC51bnN0YWJsZV91c2VDYWNoZVJlZnJlc2g9ZnVuY3Rpb24oKXtyZXR1cm4gSC5ILnVzZUNhY2hlUmVmcmVzaCgpfSx1dC51c2U9ZnVuY3Rpb24ocCl7cmV0dXJuIEguSC51c2UocCl9LHV0LnVzZUFjdGlvblN0YXRlPWZ1bmN0aW9uKHAsTyxYKXtyZXR1cm4gSC5ILnVzZUFjdGlvblN0YXRlKHAsTyxYKX0sdXQudXNlQ2FsbGJhY2s9ZnVuY3Rpb24ocCxPKXtyZXR1cm4gSC5ILnVzZUNhbGxiYWNrKHAsTyl9LHV0LnVzZUNvbnRleHQ9ZnVuY3Rpb24ocCl7cmV0dXJuIEguSC51c2VDb250ZXh0KHApfSx1dC51c2VEZWJ1Z1ZhbHVlPWZ1bmN0aW9uKCl7fSx1dC51c2VEZWZlcnJlZFZhbHVlPWZ1bmN0aW9uKHAsTyl7cmV0dXJuIEguSC51c2VEZWZlcnJlZFZhbHVlKHAsTyl9LHV0LnVzZUVmZmVjdD1mdW5jdGlvbihwLE8sWCl7dmFyIEc9SC5IO2lmKHR5cGVvZiBYPT0iZnVuY3Rpb24iKXRocm93IEVycm9yKCJ1c2VFZmZlY3QgQ1JVRCBvdmVybG9hZCBpcyBub3QgZW5hYmxlZCBpbiB0aGlzIGJ1aWxkIG9mIFJlYWN0LiIpO3JldHVybiBHLnVzZUVmZmVjdChwLE8pfSx1dC51c2VJZD1mdW5jdGlvbigpe3JldHVybiBILkgudXNlSWQoKX0sdXQudXNlSW1wZXJhdGl2ZUhhbmRsZT1mdW5jdGlvbihwLE8sWCl7cmV0dXJuIEguSC51c2VJbXBlcmF0aXZlSGFuZGxlKHAsTyxYKX0sdXQudXNlSW5zZXJ0aW9uRWZmZWN0PWZ1bmN0aW9uKHAsTyl7cmV0dXJuIEguSC51c2VJbnNlcnRpb25FZmZlY3QocCxPKX0sdXQudXNlTGF5b3V0RWZmZWN0PWZ1bmN0aW9uKHAsTyl7cmV0dXJuIEguSC51c2VMYXlvdXRFZmZlY3QocCxPKX0sdXQudXNlTWVtbz1mdW5jdGlvbihwLE8pe3JldHVybiBILkgudXNlTWVtbyhwLE8pfSx1dC51c2VPcHRpbWlzdGljPWZ1bmN0aW9uKHAsTyl7cmV0dXJuIEguSC51c2VPcHRpbWlzdGljKHAsTyl9LHV0LnVzZVJlZHVjZXI9ZnVuY3Rpb24ocCxPLFgpe3JldHVybiBILkgudXNlUmVkdWNlcihwLE8sWCl9LHV0LnVzZVJlZj1mdW5jdGlvbihwKXtyZXR1cm4gSC5ILnVzZVJlZihwKX0sdXQudXNlU3RhdGU9ZnVuY3Rpb24ocCl7cmV0dXJuIEguSC51c2VTdGF0ZShwKX0sdXQudXNlU3luY0V4dGVybmFsU3RvcmU9ZnVuY3Rpb24ocCxPLFgpe3JldHVybiBILkgudXNlU3luY0V4dGVybmFsU3RvcmUocCxPLFgpfSx1dC51c2VUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIEguSC51c2VUcmFuc2l0aW9uKCl9LHV0LnZlcnNpb249IjE5LjEuMSIsdXR9dmFyIGx1O2Z1bmN0aW9uIF9yKCl7cmV0dXJuIGx1fHwobHU9MSx6ci5leHBvcnRzPW1tKCkpLHpyLmV4cG9ydHN9dmFyIGtyPXtleHBvcnRzOnt9fSxoZT17fTsvKioKICogQGxpY2Vuc2UgUmVhY3QKICogcmVhY3QtZG9tLnByb2R1Y3Rpb24uanMKICoKICogQ29weXJpZ2h0IChjKSBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4KICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlCiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovdmFyIGF1O2Z1bmN0aW9uIGdtKCl7aWYoYXUpcmV0dXJuIGhlO2F1PTE7dmFyIHI9X3IoKTtmdW5jdGlvbiBpKEMpe3ZhciB2PSJodHRwczovL3JlYWN0LmRldi9lcnJvcnMvIitDO2lmKDE8YXJndW1lbnRzLmxlbmd0aCl7dis9Ij9hcmdzW109IitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzWzFdKTtmb3IodmFyIEQ9MjtEPGFyZ3VtZW50cy5sZW5ndGg7RCsrKXYrPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tEXSl9cmV0dXJuIk1pbmlmaWVkIFJlYWN0IGVycm9yICMiK0MrIjsgdmlzaXQgIit2KyIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiJ9ZnVuY3Rpb24gYygpe312YXIgcz17ZDp7ZjpjLHI6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihpKDUyMikpfSxEOmMsQzpjLEw6YyxtOmMsWDpjLFM6YyxNOmN9LHA6MCxmaW5kRE9NTm9kZTpudWxsfSxkPVN5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpO2Z1bmN0aW9uIG0oQyx2LEQpe3ZhciBqPTM8YXJndW1lbnRzLmxlbmd0aCYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTpudWxsO3JldHVybnskJHR5cGVvZjpkLGtleTpqPT1udWxsP251bGw6IiIraixjaGlsZHJlbjpDLGNvbnRhaW5lckluZm86dixpbXBsZW1lbnRhdGlvbjpEfX12YXIgeD1yLl9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERTtmdW5jdGlvbiBSKEMsdil7aWYoQz09PSJmb250IilyZXR1cm4iIjtpZih0eXBlb2Ygdj09InN0cmluZyIpcmV0dXJuIHY9PT0idXNlLWNyZWRlbnRpYWxzIj92OiIifXJldHVybiBoZS5fX0RPTV9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREU9cyxoZS5jcmVhdGVQb3J0YWw9ZnVuY3Rpb24oQyx2KXt2YXIgRD0yPGFyZ3VtZW50cy5sZW5ndGgmJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06bnVsbDtpZighdnx8di5ub2RlVHlwZSE9PTEmJnYubm9kZVR5cGUhPT05JiZ2Lm5vZGVUeXBlIT09MTEpdGhyb3cgRXJyb3IoaSgyOTkpKTtyZXR1cm4gbShDLHYsbnVsbCxEKX0saGUuZmx1c2hTeW5jPWZ1bmN0aW9uKEMpe3ZhciB2PXguVCxEPXMucDt0cnl7aWYoeC5UPW51bGwscy5wPTIsQylyZXR1cm4gQygpfWZpbmFsbHl7eC5UPXYscy5wPUQscy5kLmYoKX19LGhlLnByZWNvbm5lY3Q9ZnVuY3Rpb24oQyx2KXt0eXBlb2YgQz09InN0cmluZyImJih2Pyh2PXYuY3Jvc3NPcmlnaW4sdj10eXBlb2Ygdj09InN0cmluZyI/dj09PSJ1c2UtY3JlZGVudGlhbHMiP3Y6IiI6dm9pZCAwKTp2PW51bGwscy5kLkMoQyx2KSl9LGhlLnByZWZldGNoRE5TPWZ1bmN0aW9uKEMpe3R5cGVvZiBDPT0ic3RyaW5nIiYmcy5kLkQoQyl9LGhlLnByZWluaXQ9ZnVuY3Rpb24oQyx2KXtpZih0eXBlb2YgQz09InN0cmluZyImJnYmJnR5cGVvZiB2LmFzPT0ic3RyaW5nIil7dmFyIEQ9di5hcyxqPVIoRCx2LmNyb3NzT3JpZ2luKSxKPXR5cGVvZiB2LmludGVncml0eT09InN0cmluZyI/di5pbnRlZ3JpdHk6dm9pZCAwLGF0PXR5cGVvZiB2LmZldGNoUHJpb3JpdHk9PSJzdHJpbmciP3YuZmV0Y2hQcmlvcml0eTp2b2lkIDA7RD09PSJzdHlsZSI/cy5kLlMoQyx0eXBlb2Ygdi5wcmVjZWRlbmNlPT0ic3RyaW5nIj92LnByZWNlZGVuY2U6dm9pZCAwLHtjcm9zc09yaWdpbjpqLGludGVncml0eTpKLGZldGNoUHJpb3JpdHk6YXR9KTpEPT09InNjcmlwdCImJnMuZC5YKEMse2Nyb3NzT3JpZ2luOmosaW50ZWdyaXR5OkosZmV0Y2hQcmlvcml0eTphdCxub25jZTp0eXBlb2Ygdi5ub25jZT09InN0cmluZyI/di5ub25jZTp2b2lkIDB9KX19LGhlLnByZWluaXRNb2R1bGU9ZnVuY3Rpb24oQyx2KXtpZih0eXBlb2YgQz09InN0cmluZyIpaWYodHlwZW9mIHY9PSJvYmplY3QiJiZ2IT09bnVsbCl7aWYodi5hcz09bnVsbHx8di5hcz09PSJzY3JpcHQiKXt2YXIgRD1SKHYuYXMsdi5jcm9zc09yaWdpbik7cy5kLk0oQyx7Y3Jvc3NPcmlnaW46RCxpbnRlZ3JpdHk6dHlwZW9mIHYuaW50ZWdyaXR5PT0ic3RyaW5nIj92LmludGVncml0eTp2b2lkIDAsbm9uY2U6dHlwZW9mIHYubm9uY2U9PSJzdHJpbmciP3Yubm9uY2U6dm9pZCAwfSl9fWVsc2Ugdj09bnVsbCYmcy5kLk0oQyl9LGhlLnByZWxvYWQ9ZnVuY3Rpb24oQyx2KXtpZih0eXBlb2YgQz09InN0cmluZyImJnR5cGVvZiB2PT0ib2JqZWN0IiYmdiE9PW51bGwmJnR5cGVvZiB2LmFzPT0ic3RyaW5nIil7dmFyIEQ9di5hcyxqPVIoRCx2LmNyb3NzT3JpZ2luKTtzLmQuTChDLEQse2Nyb3NzT3JpZ2luOmosaW50ZWdyaXR5OnR5cGVvZiB2LmludGVncml0eT09InN0cmluZyI/di5pbnRlZ3JpdHk6dm9pZCAwLG5vbmNlOnR5cGVvZiB2Lm5vbmNlPT0ic3RyaW5nIj92Lm5vbmNlOnZvaWQgMCx0eXBlOnR5cGVvZiB2LnR5cGU9PSJzdHJpbmciP3YudHlwZTp2b2lkIDAsZmV0Y2hQcmlvcml0eTp0eXBlb2Ygdi5mZXRjaFByaW9yaXR5PT0ic3RyaW5nIj92LmZldGNoUHJpb3JpdHk6dm9pZCAwLHJlZmVycmVyUG9saWN5OnR5cGVvZiB2LnJlZmVycmVyUG9saWN5PT0ic3RyaW5nIj92LnJlZmVycmVyUG9saWN5OnZvaWQgMCxpbWFnZVNyY1NldDp0eXBlb2Ygdi5pbWFnZVNyY1NldD09InN0cmluZyI/di5pbWFnZVNyY1NldDp2b2lkIDAsaW1hZ2VTaXplczp0eXBlb2Ygdi5pbWFnZVNpemVzPT0ic3RyaW5nIj92LmltYWdlU2l6ZXM6dm9pZCAwLG1lZGlhOnR5cGVvZiB2Lm1lZGlhPT0ic3RyaW5nIj92Lm1lZGlhOnZvaWQgMH0pfX0saGUucHJlbG9hZE1vZHVsZT1mdW5jdGlvbihDLHYpe2lmKHR5cGVvZiBDPT0ic3RyaW5nIilpZih2KXt2YXIgRD1SKHYuYXMsdi5jcm9zc09yaWdpbik7cy5kLm0oQyx7YXM6dHlwZW9mIHYuYXM9PSJzdHJpbmciJiZ2LmFzIT09InNjcmlwdCI/di5hczp2b2lkIDAsY3Jvc3NPcmlnaW46RCxpbnRlZ3JpdHk6dHlwZW9mIHYuaW50ZWdyaXR5PT0ic3RyaW5nIj92LmludGVncml0eTp2b2lkIDB9KX1lbHNlIHMuZC5tKEMpfSxoZS5yZXF1ZXN0Rm9ybVJlc2V0PWZ1bmN0aW9uKEMpe3MuZC5yKEMpfSxoZS51bnN0YWJsZV9iYXRjaGVkVXBkYXRlcz1mdW5jdGlvbihDLHYpe3JldHVybiBDKHYpfSxoZS51c2VGb3JtU3RhdGU9ZnVuY3Rpb24oQyx2LEQpe3JldHVybiB4LkgudXNlRm9ybVN0YXRlKEMsdixEKX0saGUudXNlRm9ybVN0YXR1cz1mdW5jdGlvbigpe3JldHVybiB4LkgudXNlSG9zdFRyYW5zaXRpb25TdGF0dXMoKX0saGUudmVyc2lvbj0iMTkuMS4xIixoZX12YXIgbnU7ZnVuY3Rpb24gcG0oKXtpZihudSlyZXR1cm4ga3IuZXhwb3J0cztudT0xO2Z1bmN0aW9uIHIoKXtpZighKHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18+InUifHx0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFIT0iZnVuY3Rpb24iKSl0cnl7X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKHIpfWNhdGNoKGkpe2NvbnNvbGUuZXJyb3IoaSl9fXJldHVybiByKCksa3IuZXhwb3J0cz1nbSgpLGtyLmV4cG9ydHN9LyoqCiAqIEBsaWNlbnNlIFJlYWN0CiAqIHJlYWN0LWRvbS1jbGllbnQucHJvZHVjdGlvbi5qcwogKgogKiBDb3B5cmlnaHQgKGMpIE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLgogKgogKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGUKICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLgogKi92YXIgb3U7ZnVuY3Rpb24geW0oKXtpZihvdSlyZXR1cm4gUG47b3U9MTt2YXIgcj1obSgpLGk9X3IoKSxjPXBtKCk7ZnVuY3Rpb24gcyh0KXt2YXIgZT0iaHR0cHM6Ly9yZWFjdC5kZXYvZXJyb3JzLyIrdDtpZigxPGFyZ3VtZW50cy5sZW5ndGgpe2UrPSI/YXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1sxXSk7Zm9yKHZhciBsPTI7bDxhcmd1bWVudHMubGVuZ3RoO2wrKyllKz0iJmFyZ3NbXT0iK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbbF0pfXJldHVybiJNaW5pZmllZCBSZWFjdCBlcnJvciAjIit0KyI7IHZpc2l0ICIrZSsiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4ifWZ1bmN0aW9uIGQodCl7cmV0dXJuISghdHx8dC5ub2RlVHlwZSE9PTEmJnQubm9kZVR5cGUhPT05JiZ0Lm5vZGVUeXBlIT09MTEpfWZ1bmN0aW9uIG0odCl7dmFyIGU9dCxsPXQ7aWYodC5hbHRlcm5hdGUpZm9yKDtlLnJldHVybjspZT1lLnJldHVybjtlbHNle3Q9ZTtkbyBlPXQsKGUuZmxhZ3MmNDA5OCkhPT0wJiYobD1lLnJldHVybiksdD1lLnJldHVybjt3aGlsZSh0KX1yZXR1cm4gZS50YWc9PT0zP2w6bnVsbH1mdW5jdGlvbiB4KHQpe2lmKHQudGFnPT09MTMpe3ZhciBlPXQubWVtb2l6ZWRTdGF0ZTtpZihlPT09bnVsbCYmKHQ9dC5hbHRlcm5hdGUsdCE9PW51bGwmJihlPXQubWVtb2l6ZWRTdGF0ZSkpLGUhPT1udWxsKXJldHVybiBlLmRlaHlkcmF0ZWR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gUih0KXtpZihtKHQpIT09dCl0aHJvdyBFcnJvcihzKDE4OCkpfWZ1bmN0aW9uIEModCl7dmFyIGU9dC5hbHRlcm5hdGU7aWYoIWUpe2lmKGU9bSh0KSxlPT09bnVsbCl0aHJvdyBFcnJvcihzKDE4OCkpO3JldHVybiBlIT09dD9udWxsOnR9Zm9yKHZhciBsPXQsYT1lOzspe3ZhciBuPWwucmV0dXJuO2lmKG49PT1udWxsKWJyZWFrO3ZhciBvPW4uYWx0ZXJuYXRlO2lmKG89PT1udWxsKXtpZihhPW4ucmV0dXJuLGEhPT1udWxsKXtsPWE7Y29udGludWV9YnJlYWt9aWYobi5jaGlsZD09PW8uY2hpbGQpe2ZvcihvPW4uY2hpbGQ7bzspe2lmKG89PT1sKXJldHVybiBSKG4pLHQ7aWYobz09PWEpcmV0dXJuIFIobiksZTtvPW8uc2libGluZ310aHJvdyBFcnJvcihzKDE4OCkpfWlmKGwucmV0dXJuIT09YS5yZXR1cm4pbD1uLGE9bztlbHNle2Zvcih2YXIgdT0hMSxmPW4uY2hpbGQ7Zjspe2lmKGY9PT1sKXt1PSEwLGw9bixhPW87YnJlYWt9aWYoZj09PWEpe3U9ITAsYT1uLGw9bzticmVha31mPWYuc2libGluZ31pZighdSl7Zm9yKGY9by5jaGlsZDtmOyl7aWYoZj09PWwpe3U9ITAsbD1vLGE9bjticmVha31pZihmPT09YSl7dT0hMCxhPW8sbD1uO2JyZWFrfWY9Zi5zaWJsaW5nfWlmKCF1KXRocm93IEVycm9yKHMoMTg5KSl9fWlmKGwuYWx0ZXJuYXRlIT09YSl0aHJvdyBFcnJvcihzKDE5MCkpfWlmKGwudGFnIT09Myl0aHJvdyBFcnJvcihzKDE4OCkpO3JldHVybiBsLnN0YXRlTm9kZS5jdXJyZW50PT09bD90OmV9ZnVuY3Rpb24gdih0KXt2YXIgZT10LnRhZztpZihlPT09NXx8ZT09PTI2fHxlPT09Mjd8fGU9PT02KXJldHVybiB0O2Zvcih0PXQuY2hpbGQ7dCE9PW51bGw7KXtpZihlPXYodCksZSE9PW51bGwpcmV0dXJuIGU7dD10LnNpYmxpbmd9cmV0dXJuIG51bGx9dmFyIEQ9T2JqZWN0LmFzc2lnbixqPVN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKSxKPVN5bWJvbC5mb3IoInJlYWN0LnRyYW5zaXRpb25hbC5lbGVtZW50IiksYXQ9U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIiksJD1TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpLG50PVN5bWJvbC5mb3IoInJlYWN0LnN0cmljdF9tb2RlIiksY3Q9U3ltYm9sLmZvcigicmVhY3QucHJvZmlsZXIiKSxodD1TeW1ib2wuZm9yKCJyZWFjdC5wcm92aWRlciIpLFN0PVN5bWJvbC5mb3IoInJlYWN0LmNvbnN1bWVyIiksXz1TeW1ib2wuZm9yKCJyZWFjdC5jb250ZXh0IiksWT1TeW1ib2wuZm9yKCJyZWFjdC5mb3J3YXJkX3JlZiIpLEg9U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2UiKSxpdD1TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZV9saXN0IikscnQ9U3ltYm9sLmZvcigicmVhY3QubWVtbyIpLFY9U3ltYm9sLmZvcigicmVhY3QubGF6eSIpLHh0PVN5bWJvbC5mb3IoInJlYWN0LmFjdGl2aXR5IiksQmU9U3ltYm9sLmZvcigicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbCIpLHRlPVN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBCdCh0KXtyZXR1cm4gdD09PW51bGx8fHR5cGVvZiB0IT0ib2JqZWN0Ij9udWxsOih0PXRlJiZ0W3RlXXx8dFsiQEBpdGVyYXRvciJdLHR5cGVvZiB0PT0iZnVuY3Rpb24iP3Q6bnVsbCl9dmFyIG1lPVN5bWJvbC5mb3IoInJlYWN0LmNsaWVudC5yZWZlcmVuY2UiKTtmdW5jdGlvbiBTZSh0KXtpZih0PT1udWxsKXJldHVybiBudWxsO2lmKHR5cGVvZiB0PT0iZnVuY3Rpb24iKXJldHVybiB0LiQkdHlwZW9mPT09bWU/bnVsbDp0LmRpc3BsYXlOYW1lfHx0Lm5hbWV8fG51bGw7aWYodHlwZW9mIHQ9PSJzdHJpbmciKXJldHVybiB0O3N3aXRjaCh0KXtjYXNlICQ6cmV0dXJuIkZyYWdtZW50IjtjYXNlIGN0OnJldHVybiJQcm9maWxlciI7Y2FzZSBudDpyZXR1cm4iU3RyaWN0TW9kZSI7Y2FzZSBIOnJldHVybiJTdXNwZW5zZSI7Y2FzZSBpdDpyZXR1cm4iU3VzcGVuc2VMaXN0IjtjYXNlIHh0OnJldHVybiJBY3Rpdml0eSJ9aWYodHlwZW9mIHQ9PSJvYmplY3QiKXN3aXRjaCh0LiQkdHlwZW9mKXtjYXNlIGF0OnJldHVybiJQb3J0YWwiO2Nhc2UgXzpyZXR1cm4odC5kaXNwbGF5TmFtZXx8IkNvbnRleHQiKSsiLlByb3ZpZGVyIjtjYXNlIFN0OnJldHVybih0Ll9jb250ZXh0LmRpc3BsYXlOYW1lfHwiQ29udGV4dCIpKyIuQ29uc3VtZXIiO2Nhc2UgWTp2YXIgZT10LnJlbmRlcjtyZXR1cm4gdD10LmRpc3BsYXlOYW1lLHR8fCh0PWUuZGlzcGxheU5hbWV8fGUubmFtZXx8IiIsdD10IT09IiI/IkZvcndhcmRSZWYoIit0KyIpIjoiRm9yd2FyZFJlZiIpLHQ7Y2FzZSBydDpyZXR1cm4gZT10LmRpc3BsYXlOYW1lfHxudWxsLGUhPT1udWxsP2U6U2UodC50eXBlKXx8Ik1lbW8iO2Nhc2UgVjplPXQuX3BheWxvYWQsdD10Ll9pbml0O3RyeXtyZXR1cm4gU2UodChlKSl9Y2F0Y2h7fX1yZXR1cm4gbnVsbH12YXIgTXQ9QXJyYXkuaXNBcnJheSxBPWkuX19DTElFTlRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFLHE9Yy5fX0RPTV9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUsQj17cGVuZGluZzohMSxkYXRhOm51bGwsbWV0aG9kOm51bGwsYWN0aW9uOm51bGx9LGJ0PVtdLHA9LTE7ZnVuY3Rpb24gTyh0KXtyZXR1cm57Y3VycmVudDp0fX1mdW5jdGlvbiBYKHQpezA+cHx8KHQuY3VycmVudD1idFtwXSxidFtwXT1udWxsLHAtLSl9ZnVuY3Rpb24gRyh0LGUpe3ArKyxidFtwXT10LmN1cnJlbnQsdC5jdXJyZW50PWV9dmFyIFo9TyhudWxsKSxzdD1PKG51bGwpLEk9TyhudWxsKSxndD1PKG51bGwpO2Z1bmN0aW9uIFR0KHQsZSl7c3dpdGNoKEcoSSxlKSxHKHN0LHQpLEcoWixudWxsKSxlLm5vZGVUeXBlKXtjYXNlIDk6Y2FzZSAxMTp0PSh0PWUuZG9jdW1lbnRFbGVtZW50KSYmKHQ9dC5uYW1lc3BhY2VVUkkpP0hoKHQpOjA7YnJlYWs7ZGVmYXVsdDppZih0PWUudGFnTmFtZSxlPWUubmFtZXNwYWNlVVJJKWU9SGgoZSksdD1VaChlLHQpO2Vsc2Ugc3dpdGNoKHQpe2Nhc2Uic3ZnIjp0PTE7YnJlYWs7Y2FzZSJtYXRoIjp0PTI7YnJlYWs7ZGVmYXVsdDp0PTB9fVgoWiksRyhaLHQpfWZ1bmN0aW9uIEp0KCl7WChaKSxYKHN0KSxYKEkpfWZ1bmN0aW9uIEtlKHQpe3QubWVtb2l6ZWRTdGF0ZSE9PW51bGwmJkcoZ3QsdCk7dmFyIGU9Wi5jdXJyZW50LGw9VWgoZSx0LnR5cGUpO2UhPT1sJiYoRyhzdCx0KSxHKFosbCkpfWZ1bmN0aW9uIENlKHQpe3N0LmN1cnJlbnQ9PT10JiYoWChaKSxYKHN0KSksZ3QuY3VycmVudD09PXQmJihYKGd0KSxXby5fY3VycmVudFZhbHVlPUIpfXZhciBQZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHlsPXIudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayxzbj1yLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrLENhPXIudW5zdGFibGVfc2hvdWxkWWllbGQscmk9ci51bnN0YWJsZV9yZXF1ZXN0UGFpbnQsZ2U9ci51bnN0YWJsZV9ub3csc2k9ci51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbCxVbD1yLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5LEZuPXIudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHksbmw9ci51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxjaT1yLnVuc3RhYmxlX0xvd1ByaW9yaXR5LEdsPXIudW5zdGFibGVfSWRsZVByaW9yaXR5LHVpPXIubG9nLEVhPXIudW5zdGFibGVfc2V0RGlzYWJsZVlpZWxkVmFsdWUscWw9bnVsbCxXdD1udWxsO2Z1bmN0aW9uIEplKHQpe2lmKHR5cGVvZiB1aT09ImZ1bmN0aW9uIiYmRWEodCksV3QmJnR5cGVvZiBXdC5zZXRTdHJpY3RNb2RlPT0iZnVuY3Rpb24iKXRyeXtXdC5zZXRTdHJpY3RNb2RlKHFsLHQpfWNhdGNoe319dmFyICR0PU1hdGguY2x6MzI/TWF0aC5jbHozMjpmaSxkaT1NYXRoLmxvZyxUYT1NYXRoLkxOMjtmdW5jdGlvbiBmaSh0KXtyZXR1cm4gdD4+Pj0wLHQ9PT0wPzMyOjMxLShkaSh0KS9UYXwwKXwwfXZhciBMPTI1Nixjbj00MTk0MzA0O2Z1bmN0aW9uIHZsKHQpe3ZhciBlPXQmNDI7aWYoZSE9PTApcmV0dXJuIGU7c3dpdGNoKHQmLXQpe2Nhc2UgMTpyZXR1cm4gMTtjYXNlIDI6cmV0dXJuIDI7Y2FzZSA0OnJldHVybiA0O2Nhc2UgODpyZXR1cm4gODtjYXNlIDE2OnJldHVybiAxNjtjYXNlIDMyOnJldHVybiAzMjtjYXNlIDY0OnJldHVybiA2NDtjYXNlIDEyODpyZXR1cm4gMTI4O2Nhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOnJldHVybiB0JjQxOTQwNDg7Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6cmV0dXJuIHQmNjI5MTQ1NjA7Y2FzZSA2NzEwODg2NDpyZXR1cm4gNjcxMDg4NjQ7Y2FzZSAxMzQyMTc3Mjg6cmV0dXJuIDEzNDIxNzcyODtjYXNlIDI2ODQzNTQ1NjpyZXR1cm4gMjY4NDM1NDU2O2Nhc2UgNTM2ODcwOTEyOnJldHVybiA1MzY4NzA5MTI7Y2FzZSAxMDczNzQxODI0OnJldHVybiAwO2RlZmF1bHQ6cmV0dXJuIHR9fWZ1bmN0aW9uIHVuKHQsZSxsKXt2YXIgYT10LnBlbmRpbmdMYW5lcztpZihhPT09MClyZXR1cm4gMDt2YXIgbj0wLG89dC5zdXNwZW5kZWRMYW5lcyx1PXQucGluZ2VkTGFuZXM7dD10Lndhcm1MYW5lczt2YXIgZj1hJjEzNDIxNzcyNztyZXR1cm4gZiE9PTA/KGE9ZiZ+byxhIT09MD9uPXZsKGEpOih1Jj1mLHUhPT0wP249dmwodSk6bHx8KGw9ZiZ+dCxsIT09MCYmKG49dmwobCkpKSkpOihmPWEmfm8sZiE9PTA/bj12bChmKTp1IT09MD9uPXZsKHUpOmx8fChsPWEmfnQsbCE9PTAmJihuPXZsKGwpKSkpLG49PT0wPzA6ZSE9PTAmJmUhPT1uJiYoZSZvKT09PTAmJihvPW4mLW4sbD1lJi1lLG8+PWx8fG89PT0zMiYmKGwmNDE5NDA0OCkhPT0wKT9lOm59ZnVuY3Rpb24gRHQodCxlKXtyZXR1cm4odC5wZW5kaW5nTGFuZXMmfih0LnN1c3BlbmRlZExhbmVzJn50LnBpbmdlZExhbmVzKSZlKT09PTB9ZnVuY3Rpb24gSW4odCxlKXtzd2l0Y2godCl7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA4OmNhc2UgNjQ6cmV0dXJuIGUrMjUwO2Nhc2UgMTY6Y2FzZSAzMjpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpyZXR1cm4gZSs1ZTM7Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6cmV0dXJuLTE7Y2FzZSA2NzEwODg2NDpjYXNlIDEzNDIxNzcyODpjYXNlIDI2ODQzNTQ1NjpjYXNlIDUzNjg3MDkxMjpjYXNlIDEwNzM3NDE4MjQ6cmV0dXJuLTE7ZGVmYXVsdDpyZXR1cm4tMX19ZnVuY3Rpb24gdG8oKXt2YXIgdD1MO3JldHVybiBMPDw9MSwoTCY0MTk0MDQ4KT09PTAmJihMPTI1NiksdH1mdW5jdGlvbiBoaSgpe3ZhciB0PWNuO3JldHVybiBjbjw8PTEsKGNuJjYyOTE0NTYwKT09PTAmJihjbj00MTk0MzA0KSx0fWZ1bmN0aW9uIGVvKHQpe2Zvcih2YXIgZT1bXSxsPTA7MzE+bDtsKyspZS5wdXNoKHQpO3JldHVybiBlfWZ1bmN0aW9uIERhKHQsZSl7dC5wZW5kaW5nTGFuZXN8PWUsZSE9PTI2ODQzNTQ1NiYmKHQuc3VzcGVuZGVkTGFuZXM9MCx0LnBpbmdlZExhbmVzPTAsdC53YXJtTGFuZXM9MCl9ZnVuY3Rpb24gSXIodCxlLGwsYSxuLG8pe3ZhciB1PXQucGVuZGluZ0xhbmVzO3QucGVuZGluZ0xhbmVzPWwsdC5zdXNwZW5kZWRMYW5lcz0wLHQucGluZ2VkTGFuZXM9MCx0Lndhcm1MYW5lcz0wLHQuZXhwaXJlZExhbmVzJj1sLHQuZW50YW5nbGVkTGFuZXMmPWwsdC5lcnJvclJlY292ZXJ5RGlzYWJsZWRMYW5lcyY9bCx0LnNoZWxsU3VzcGVuZENvdW50ZXI9MDt2YXIgZj10LmVudGFuZ2xlbWVudHMsZz10LmV4cGlyYXRpb25UaW1lcyxTPXQuaGlkZGVuVXBkYXRlcztmb3IobD11Jn5sOzA8bDspe3ZhciBOPTMxLSR0KGwpLGs9MTw8TjtmW05dPTAsZ1tOXT0tMTt2YXIgRT1TW05dO2lmKEUhPT1udWxsKWZvcihTW05dPW51bGwsTj0wO048RS5sZW5ndGg7TisrKXt2YXIgVD1FW05dO1QhPT1udWxsJiYoVC5sYW5lJj0tNTM2ODcwOTEzKX1sJj1+a31hIT09MCYmbWkodCxhLDApLG8hPT0wJiZuPT09MCYmdC50YWchPT0wJiYodC5zdXNwZW5kZWRMYW5lc3w9byZ+KHUmfmUpKX1mdW5jdGlvbiBtaSh0LGUsbCl7dC5wZW5kaW5nTGFuZXN8PWUsdC5zdXNwZW5kZWRMYW5lcyY9fmU7dmFyIGE9MzEtJHQoZSk7dC5lbnRhbmdsZWRMYW5lc3w9ZSx0LmVudGFuZ2xlbWVudHNbYV09dC5lbnRhbmdsZW1lbnRzW2FdfDEwNzM3NDE4MjR8bCY0MTk0MDkwfWZ1bmN0aW9uIGdpKHQsZSl7dmFyIGw9dC5lbnRhbmdsZWRMYW5lc3w9ZTtmb3IodD10LmVudGFuZ2xlbWVudHM7bDspe3ZhciBhPTMxLSR0KGwpLG49MTw8YTtuJmV8dFthXSZlJiYodFthXXw9ZSksbCY9fm59fWZ1bmN0aW9uIGxvKHQpe3N3aXRjaCh0KXtjYXNlIDI6dD0xO2JyZWFrO2Nhc2UgODp0PTQ7YnJlYWs7Y2FzZSAzMjp0PTE2O2JyZWFrO2Nhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOmNhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOnQ9MTI4O2JyZWFrO2Nhc2UgMjY4NDM1NDU2OnQ9MTM0MjE3NzI4O2JyZWFrO2RlZmF1bHQ6dD0wfXJldHVybiB0fWZ1bmN0aW9uIGFvKHQpe3JldHVybiB0Jj0tdCwyPHQ/ODx0Pyh0JjEzNDIxNzcyNykhPT0wPzMyOjI2ODQzNTQ1Njo4OjJ9ZnVuY3Rpb24gcGkoKXt2YXIgdD1xLnA7cmV0dXJuIHQhPT0wP3Q6KHQ9d2luZG93LmV2ZW50LHQ9PT12b2lkIDA/MzI6bm0odC50eXBlKSl9ZnVuY3Rpb24gdHModCxlKXt2YXIgbD1xLnA7dHJ5e3JldHVybiBxLnA9dCxlKCl9ZmluYWxseXtxLnA9bH19dmFyIG9sPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLGVlPSJfX3JlYWN0RmliZXIkIitvbCxwZT0iX19yZWFjdFByb3BzJCIrb2wsWWw9Il9fcmVhY3RDb250YWluZXIkIitvbCxubz0iX19yZWFjdEV2ZW50cyQiK29sLGVzPSJfX3JlYWN0TGlzdGVuZXJzJCIrb2wsbHM9Il9fcmVhY3RIYW5kbGVzJCIrb2wseWk9Il9fcmVhY3RSZXNvdXJjZXMkIitvbCxNYT0iX19yZWFjdE1hcmtlciQiK29sO2Z1bmN0aW9uIG9vKHQpe2RlbGV0ZSB0W2VlXSxkZWxldGUgdFtwZV0sZGVsZXRlIHRbbm9dLGRlbGV0ZSB0W2VzXSxkZWxldGUgdFtsc119ZnVuY3Rpb24gVmwodCl7dmFyIGU9dFtlZV07aWYoZSlyZXR1cm4gZTtmb3IodmFyIGw9dC5wYXJlbnROb2RlO2w7KXtpZihlPWxbWWxdfHxsW2VlXSl7aWYobD1lLmFsdGVybmF0ZSxlLmNoaWxkIT09bnVsbHx8bCE9PW51bGwmJmwuY2hpbGQhPT1udWxsKWZvcih0PVZoKHQpO3QhPT1udWxsOyl7aWYobD10W2VlXSlyZXR1cm4gbDt0PVZoKHQpfXJldHVybiBlfXQ9bCxsPXQucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBYbCh0KXtpZih0PXRbZWVdfHx0W1lsXSl7dmFyIGU9dC50YWc7aWYoZT09PTV8fGU9PT02fHxlPT09MTN8fGU9PT0yNnx8ZT09PTI3fHxlPT09MylyZXR1cm4gdH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBBYSh0KXt2YXIgZT10LnRhZztpZihlPT09NXx8ZT09PTI2fHxlPT09Mjd8fGU9PT02KXJldHVybiB0LnN0YXRlTm9kZTt0aHJvdyBFcnJvcihzKDMzKSl9ZnVuY3Rpb24gWmwodCl7dmFyIGU9dFt5aV07cmV0dXJuIGV8fChlPXRbeWldPXtob2lzdGFibGVTdHlsZXM6bmV3IE1hcCxob2lzdGFibGVTY3JpcHRzOm5ldyBNYXB9KSxlfWZ1bmN0aW9uIFZ0KHQpe3RbTWFdPSEwfXZhciB2aT1uZXcgU2V0LGJpPXt9O2Z1bmN0aW9uIGJsKHQsZSl7V2UodCxlKSxXZSh0KyJDYXB0dXJlIixlKX1mdW5jdGlvbiBXZSh0LGUpe2ZvcihiaVt0XT1lLHQ9MDt0PGUubGVuZ3RoO3QrKyl2aS5hZGQoZVt0XSl9dmFyIGFzPVJlZ0V4cCgiXls6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRF1bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRcXC0uMC05XFx1MDBCN1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0MF0qJCIpLHhpPXt9LHdpPXt9O2Z1bmN0aW9uIFJhKHQpe3JldHVybiBQZS5jYWxsKHdpLHQpPyEwOlBlLmNhbGwoeGksdCk/ITE6YXMudGVzdCh0KT93aVt0XT0hMDooeGlbdF09ITAsITEpfWZ1bmN0aW9uIE0odCxlLGwpe2lmKFJhKGUpKWlmKGw9PT1udWxsKXQucmVtb3ZlQXR0cmlidXRlKGUpO2Vsc2V7c3dpdGNoKHR5cGVvZiBsKXtjYXNlInVuZGVmaW5lZCI6Y2FzZSJmdW5jdGlvbiI6Y2FzZSJzeW1ib2wiOnQucmVtb3ZlQXR0cmlidXRlKGUpO3JldHVybjtjYXNlImJvb2xlYW4iOnZhciBhPWUudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpO2lmKGEhPT0iZGF0YS0iJiZhIT09ImFyaWEtIil7dC5yZW1vdmVBdHRyaWJ1dGUoZSk7cmV0dXJufX10LnNldEF0dHJpYnV0ZShlLCIiK2wpfX1mdW5jdGlvbiB0dCh0LGUsbCl7aWYobD09PW51bGwpdC5yZW1vdmVBdHRyaWJ1dGUoZSk7ZWxzZXtzd2l0Y2godHlwZW9mIGwpe2Nhc2UidW5kZWZpbmVkIjpjYXNlImZ1bmN0aW9uIjpjYXNlInN5bWJvbCI6Y2FzZSJib29sZWFuIjp0LnJlbW92ZUF0dHJpYnV0ZShlKTtyZXR1cm59dC5zZXRBdHRyaWJ1dGUoZSwiIitsKX19ZnVuY3Rpb24gT3QodCxlLGwsYSl7aWYoYT09PW51bGwpdC5yZW1vdmVBdHRyaWJ1dGUobCk7ZWxzZXtzd2l0Y2godHlwZW9mIGEpe2Nhc2UidW5kZWZpbmVkIjpjYXNlImZ1bmN0aW9uIjpjYXNlInN5bWJvbCI6Y2FzZSJib29sZWFuIjp0LnJlbW92ZUF0dHJpYnV0ZShsKTtyZXR1cm59dC5zZXRBdHRyaWJ1dGVOUyhlLGwsIiIrYSl9fXZhciBsZSxFZTtmdW5jdGlvbiBhZSh0KXtpZihsZT09PXZvaWQgMCl0cnl7dGhyb3cgRXJyb3IoKX1jYXRjaChsKXt2YXIgZT1sLnN0YWNrLnRyaW0oKS5tYXRjaCgvXG4oICooYXQgKT8pLyk7bGU9ZSYmZVsxXXx8IiIsRWU9LTE8bC5zdGFjay5pbmRleE9mKGAKICAgIGF0YCk/IiAoPGFub255bW91cz4pIjotMTxsLnN0YWNrLmluZGV4T2YoIkAiKT8iQHVua25vd246MDowIjoiIn1yZXR1cm5gCmArbGUrdCtFZX12YXIgTGU9ITE7ZnVuY3Rpb24gSGUodCxlKXtpZighdHx8TGUpcmV0dXJuIiI7TGU9ITA7dmFyIGw9RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9dm9pZCAwO3RyeXt2YXIgYT17RGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290OmZ1bmN0aW9uKCl7dHJ5e2lmKGUpe3ZhciBrPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKX07aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KGsucHJvdG90eXBlLCJwcm9wcyIse3NldDpmdW5jdGlvbigpe3Rocm93IEVycm9yKCl9fSksdHlwZW9mIFJlZmxlY3Q9PSJvYmplY3QiJiZSZWZsZWN0LmNvbnN0cnVjdCl7dHJ5e1JlZmxlY3QuY29uc3RydWN0KGssW10pfWNhdGNoKFQpe3ZhciBFPVR9UmVmbGVjdC5jb25zdHJ1Y3QodCxbXSxrKX1lbHNle3RyeXtrLmNhbGwoKX1jYXRjaChUKXtFPVR9dC5jYWxsKGsucHJvdG90eXBlKX19ZWxzZXt0cnl7dGhyb3cgRXJyb3IoKX1jYXRjaChUKXtFPVR9KGs9dCgpKSYmdHlwZW9mIGsuY2F0Y2g9PSJmdW5jdGlvbiImJmsuY2F0Y2goZnVuY3Rpb24oKXt9KX19Y2F0Y2goVCl7aWYoVCYmRSYmdHlwZW9mIFQuc3RhY2s9PSJzdHJpbmciKXJldHVybltULnN0YWNrLEUuc3RhY2tdfXJldHVybltudWxsLG51bGxdfX07YS5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QuZGlzcGxheU5hbWU9IkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCI7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCwibmFtZSIpO24mJm4uY29uZmlndXJhYmxlJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYS5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QsIm5hbWUiLHt2YWx1ZToiRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290In0pO3ZhciBvPWEuRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290KCksdT1vWzBdLGY9b1sxXTtpZih1JiZmKXt2YXIgZz11LnNwbGl0KGAKYCksUz1mLnNwbGl0KGAKYCk7Zm9yKG49YT0wO2E8Zy5sZW5ndGgmJiFnW2FdLmluY2x1ZGVzKCJEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QiKTspYSsrO2Zvcig7bjxTLmxlbmd0aCYmIVNbbl0uaW5jbHVkZXMoIkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCIpOyluKys7aWYoYT09PWcubGVuZ3RofHxuPT09Uy5sZW5ndGgpZm9yKGE9Zy5sZW5ndGgtMSxuPVMubGVuZ3RoLTE7MTw9YSYmMDw9biYmZ1thXSE9PVNbbl07KW4tLTtmb3IoOzE8PWEmJjA8PW47YS0tLG4tLSlpZihnW2FdIT09U1tuXSl7aWYoYSE9PTF8fG4hPT0xKWRvIGlmKGEtLSxuLS0sMD5ufHxnW2FdIT09U1tuXSl7dmFyIE49YApgK2dbYV0ucmVwbGFjZSgiIGF0IG5ldyAiLCIgYXQgIik7cmV0dXJuIHQuZGlzcGxheU5hbWUmJk4uaW5jbHVkZXMoIjxhbm9ueW1vdXM+IikmJihOPU4ucmVwbGFjZSgiPGFub255bW91cz4iLHQuZGlzcGxheU5hbWUpKSxOfXdoaWxlKDE8PWEmJjA8PW4pO2JyZWFrfX19ZmluYWxseXtMZT0hMSxFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT1sfXJldHVybihsPXQ/dC5kaXNwbGF5TmFtZXx8dC5uYW1lOiIiKT9hZShsKToiIn1mdW5jdGlvbiBRbCh0KXtzd2l0Y2godC50YWcpe2Nhc2UgMjY6Y2FzZSAyNzpjYXNlIDU6cmV0dXJuIGFlKHQudHlwZSk7Y2FzZSAxNjpyZXR1cm4gYWUoIkxhenkiKTtjYXNlIDEzOnJldHVybiBhZSgiU3VzcGVuc2UiKTtjYXNlIDE5OnJldHVybiBhZSgiU3VzcGVuc2VMaXN0Iik7Y2FzZSAwOmNhc2UgMTU6cmV0dXJuIEhlKHQudHlwZSwhMSk7Y2FzZSAxMTpyZXR1cm4gSGUodC50eXBlLnJlbmRlciwhMSk7Y2FzZSAxOnJldHVybiBIZSh0LnR5cGUsITApO2Nhc2UgMzE6cmV0dXJuIGFlKCJBY3Rpdml0eSIpO2RlZmF1bHQ6cmV0dXJuIiJ9fWZ1bmN0aW9uIHhsKHQpe3RyeXt2YXIgZT0iIjtkbyBlKz1RbCh0KSx0PXQucmV0dXJuO3doaWxlKHQpO3JldHVybiBlfWNhdGNoKGwpe3JldHVybmAKRXJyb3IgZ2VuZXJhdGluZyBzdGFjazogYCtsLm1lc3NhZ2UrYApgK2wuc3RhY2t9fWZ1bmN0aW9uIFh0KHQpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJiaWdpbnQiOmNhc2UiYm9vbGVhbiI6Y2FzZSJudW1iZXIiOmNhc2Uic3RyaW5nIjpjYXNlInVuZGVmaW5lZCI6cmV0dXJuIHQ7Y2FzZSJvYmplY3QiOnJldHVybiB0O2RlZmF1bHQ6cmV0dXJuIiJ9fWZ1bmN0aW9uIGlsKHQpe3ZhciBlPXQudHlwZTtyZXR1cm4odD10Lm5vZGVOYW1lKSYmdC50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmKGU9PT0iY2hlY2tib3gifHxlPT09InJhZGlvIil9ZnVuY3Rpb24gdmUodCl7dmFyIGU9aWwodCk/ImNoZWNrZWQiOiJ2YWx1ZSIsbD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQuY29uc3RydWN0b3IucHJvdG90eXBlLGUpLGE9IiIrdFtlXTtpZighdC5oYXNPd25Qcm9wZXJ0eShlKSYmdHlwZW9mIGw8InUiJiZ0eXBlb2YgbC5nZXQ9PSJmdW5jdGlvbiImJnR5cGVvZiBsLnNldD09ImZ1bmN0aW9uIil7dmFyIG49bC5nZXQsbz1sLnNldDtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbih1KXthPSIiK3Usby5jYWxsKHRoaXMsdSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7ZW51bWVyYWJsZTpsLmVudW1lcmFibGV9KSx7Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sc2V0VmFsdWU6ZnVuY3Rpb24odSl7YT0iIit1fSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24oKXt0Ll92YWx1ZVRyYWNrZXI9bnVsbCxkZWxldGUgdFtlXX19fX1mdW5jdGlvbiByZSh0KXt0Ll92YWx1ZVRyYWNrZXJ8fCh0Ll92YWx1ZVRyYWNrZXI9dmUodCkpfWZ1bmN0aW9uIHJsKHQpe2lmKCF0KXJldHVybiExO3ZhciBlPXQuX3ZhbHVlVHJhY2tlcjtpZighZSlyZXR1cm4hMDt2YXIgbD1lLmdldFZhbHVlKCksYT0iIjtyZXR1cm4gdCYmKGE9aWwodCk/dC5jaGVja2VkPyJ0cnVlIjoiZmFsc2UiOnQudmFsdWUpLHQ9YSx0IT09bD8oZS5zZXRWYWx1ZSh0KSwhMCk6ITF9ZnVuY3Rpb24gd2wodCl7aWYodD10fHwodHlwZW9mIGRvY3VtZW50PCJ1Ij9kb2N1bWVudDp2b2lkIDApLHR5cGVvZiB0PiJ1IilyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIHQuYWN0aXZlRWxlbWVudHx8dC5ib2R5fWNhdGNoe3JldHVybiB0LmJvZHl9fXZhciBkbj0vW1xuIlxcXS9nO2Z1bmN0aW9uIHNlKHQpe3JldHVybiB0LnJlcGxhY2UoZG4sZnVuY3Rpb24oZSl7cmV0dXJuIlxcIitlLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKyIgIn0pfWZ1bmN0aW9uIEtsKHQsZSxsLGEsbixvLHUsZil7dC5uYW1lPSIiLHUhPW51bGwmJnR5cGVvZiB1IT0iZnVuY3Rpb24iJiZ0eXBlb2YgdSE9InN5bWJvbCImJnR5cGVvZiB1IT0iYm9vbGVhbiI/dC50eXBlPXU6dC5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSxlIT1udWxsP3U9PT0ibnVtYmVyIj8oZT09PTAmJnQudmFsdWU9PT0iInx8dC52YWx1ZSE9ZSkmJih0LnZhbHVlPSIiK1h0KGUpKTp0LnZhbHVlIT09IiIrWHQoZSkmJih0LnZhbHVlPSIiK1h0KGUpKTp1IT09InN1Ym1pdCImJnUhPT0icmVzZXQifHx0LnJlbW92ZUF0dHJpYnV0ZSgidmFsdWUiKSxlIT1udWxsP1BsKHQsdSxYdChlKSk6bCE9bnVsbD9QbCh0LHUsWHQobCkpOmEhPW51bGwmJnQucmVtb3ZlQXR0cmlidXRlKCJ2YWx1ZSIpLG49PW51bGwmJm8hPW51bGwmJih0LmRlZmF1bHRDaGVja2VkPSEhbyksbiE9bnVsbCYmKHQuY2hlY2tlZD1uJiZ0eXBlb2YgbiE9ImZ1bmN0aW9uIiYmdHlwZW9mIG4hPSJzeW1ib2wiKSxmIT1udWxsJiZ0eXBlb2YgZiE9ImZ1bmN0aW9uIiYmdHlwZW9mIGYhPSJzeW1ib2wiJiZ0eXBlb2YgZiE9ImJvb2xlYW4iP3QubmFtZT0iIitYdChmKTp0LnJlbW92ZUF0dHJpYnV0ZSgibmFtZSIpfWZ1bmN0aW9uIE5hKHQsZSxsLGEsbixvLHUsZil7aWYobyE9bnVsbCYmdHlwZW9mIG8hPSJmdW5jdGlvbiImJnR5cGVvZiBvIT0ic3ltYm9sIiYmdHlwZW9mIG8hPSJib29sZWFuIiYmKHQudHlwZT1vKSxlIT1udWxsfHxsIT1udWxsKXtpZighKG8hPT0ic3VibWl0IiYmbyE9PSJyZXNldCJ8fGUhPW51bGwpKXJldHVybjtsPWwhPW51bGw/IiIrWHQobCk6IiIsZT1lIT1udWxsPyIiK1h0KGUpOmwsZnx8ZT09PXQudmFsdWV8fCh0LnZhbHVlPWUpLHQuZGVmYXVsdFZhbHVlPWV9YT1hPz9uLGE9dHlwZW9mIGEhPSJmdW5jdGlvbiImJnR5cGVvZiBhIT0ic3ltYm9sIiYmISFhLHQuY2hlY2tlZD1mP3QuY2hlY2tlZDohIWEsdC5kZWZhdWx0Q2hlY2tlZD0hIWEsdSE9bnVsbCYmdHlwZW9mIHUhPSJmdW5jdGlvbiImJnR5cGVvZiB1IT0ic3ltYm9sIiYmdHlwZW9mIHUhPSJib29sZWFuIiYmKHQubmFtZT11KX1mdW5jdGlvbiBQbCh0LGUsbCl7ZT09PSJudW1iZXIiJiZ3bCh0Lm93bmVyRG9jdW1lbnQpPT09dHx8dC5kZWZhdWx0VmFsdWU9PT0iIitsfHwodC5kZWZhdWx0VmFsdWU9IiIrbCl9ZnVuY3Rpb24gJGUodCxlLGwsYSl7aWYodD10Lm9wdGlvbnMsZSl7ZT17fTtmb3IodmFyIG49MDtuPGwubGVuZ3RoO24rKyllWyIkIitsW25dXT0hMDtmb3IobD0wO2w8dC5sZW5ndGg7bCsrKW49ZS5oYXNPd25Qcm9wZXJ0eSgiJCIrdFtsXS52YWx1ZSksdFtsXS5zZWxlY3RlZCE9PW4mJih0W2xdLnNlbGVjdGVkPW4pLG4mJmEmJih0W2xdLmRlZmF1bHRTZWxlY3RlZD0hMCl9ZWxzZXtmb3IobD0iIitYdChsKSxlPW51bGwsbj0wO248dC5sZW5ndGg7bisrKXtpZih0W25dLnZhbHVlPT09bCl7dFtuXS5zZWxlY3RlZD0hMCxhJiYodFtuXS5kZWZhdWx0U2VsZWN0ZWQ9ITApO3JldHVybn1lIT09bnVsbHx8dFtuXS5kaXNhYmxlZHx8KGU9dFtuXSl9ZSE9PW51bGwmJihlLnNlbGVjdGVkPSEwKX19ZnVuY3Rpb24gemEodCxlLGwpe2lmKGUhPW51bGwmJihlPSIiK1h0KGUpLGUhPT10LnZhbHVlJiYodC52YWx1ZT1lKSxsPT1udWxsKSl7dC5kZWZhdWx0VmFsdWUhPT1lJiYodC5kZWZhdWx0VmFsdWU9ZSk7cmV0dXJufXQuZGVmYXVsdFZhbHVlPWwhPW51bGw/IiIrWHQobCk6IiJ9ZnVuY3Rpb24gX2EodCxlLGwsYSl7aWYoZT09bnVsbCl7aWYoYSE9bnVsbCl7aWYobCE9bnVsbCl0aHJvdyBFcnJvcihzKDkyKSk7aWYoTXQoYSkpe2lmKDE8YS5sZW5ndGgpdGhyb3cgRXJyb3Iocyg5MykpO2E9YVswXX1sPWF9bD09bnVsbCYmKGw9IiIpLGU9bH1sPVh0KGUpLHQuZGVmYXVsdFZhbHVlPWwsYT10LnRleHRDb250ZW50LGE9PT1sJiZhIT09IiImJmEhPT1udWxsJiYodC52YWx1ZT1hKX1mdW5jdGlvbiBGZSh0LGUpe2lmKGUpe3ZhciBsPXQuZmlyc3RDaGlsZDtpZihsJiZsPT09dC5sYXN0Q2hpbGQmJmwubm9kZVR5cGU9PT0zKXtsLm5vZGVWYWx1ZT1lO3JldHVybn19dC50ZXh0Q29udGVudD1lfXZhciBmbj1uZXcgU2V0KCJhbmltYXRpb25JdGVyYXRpb25Db3VudCBhc3BlY3RSYXRpbyBib3JkZXJJbWFnZU91dHNldCBib3JkZXJJbWFnZVNsaWNlIGJvcmRlckltYWdlV2lkdGggYm94RmxleCBib3hGbGV4R3JvdXAgYm94T3JkaW5hbEdyb3VwIGNvbHVtbkNvdW50IGNvbHVtbnMgZmxleCBmbGV4R3JvdyBmbGV4UG9zaXRpdmUgZmxleFNocmluayBmbGV4TmVnYXRpdmUgZmxleE9yZGVyIGdyaWRBcmVhIGdyaWRSb3cgZ3JpZFJvd0VuZCBncmlkUm93U3BhbiBncmlkUm93U3RhcnQgZ3JpZENvbHVtbiBncmlkQ29sdW1uRW5kIGdyaWRDb2x1bW5TcGFuIGdyaWRDb2x1bW5TdGFydCBmb250V2VpZ2h0IGxpbmVDbGFtcCBsaW5lSGVpZ2h0IG9wYWNpdHkgb3JkZXIgb3JwaGFucyBzY2FsZSB0YWJTaXplIHdpZG93cyB6SW5kZXggem9vbSBmaWxsT3BhY2l0eSBmbG9vZE9wYWNpdHkgc3RvcE9wYWNpdHkgc3Ryb2tlRGFzaGFycmF5IHN0cm9rZURhc2hvZmZzZXQgc3Ryb2tlTWl0ZXJsaW1pdCBzdHJva2VPcGFjaXR5IHN0cm9rZVdpZHRoIE1vekFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IE1vekJveEZsZXggTW96Qm94RmxleEdyb3VwIE1vekxpbmVDbGFtcCBtc0FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IG1zRmxleCBtc1pvb20gbXNGbGV4R3JvdyBtc0ZsZXhOZWdhdGl2ZSBtc0ZsZXhPcmRlciBtc0ZsZXhQb3NpdGl2ZSBtc0ZsZXhTaHJpbmsgbXNHcmlkQ29sdW1uIG1zR3JpZENvbHVtblNwYW4gbXNHcmlkUm93IG1zR3JpZFJvd1NwYW4gV2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgV2Via2l0Qm94RmxleCBXZWJLaXRCb3hGbGV4R3JvdXAgV2Via2l0Qm94T3JkaW5hbEdyb3VwIFdlYmtpdENvbHVtbkNvdW50IFdlYmtpdENvbHVtbnMgV2Via2l0RmxleCBXZWJraXRGbGV4R3JvdyBXZWJraXRGbGV4UG9zaXRpdmUgV2Via2l0RmxleFNocmluayBXZWJraXRMaW5lQ2xhbXAiLnNwbGl0KCIgIikpO2Z1bmN0aW9uIGthKHQsZSxsKXt2YXIgYT1lLmluZGV4T2YoIi0tIik9PT0wO2w9PW51bGx8fHR5cGVvZiBsPT0iYm9vbGVhbiJ8fGw9PT0iIj9hP3Quc2V0UHJvcGVydHkoZSwiIik6ZT09PSJmbG9hdCI/dC5jc3NGbG9hdD0iIjp0W2VdPSIiOmE/dC5zZXRQcm9wZXJ0eShlLGwpOnR5cGVvZiBsIT0ibnVtYmVyInx8bD09PTB8fGZuLmhhcyhlKT9lPT09ImZsb2F0Ij90LmNzc0Zsb2F0PWw6dFtlXT0oIiIrbCkudHJpbSgpOnRbZV09bCsicHgifWZ1bmN0aW9uIE9hKHQsZSxsKXtpZihlIT1udWxsJiZ0eXBlb2YgZSE9Im9iamVjdCIpdGhyb3cgRXJyb3Iocyg2MikpO2lmKHQ9dC5zdHlsZSxsIT1udWxsKXtmb3IodmFyIGEgaW4gbCkhbC5oYXNPd25Qcm9wZXJ0eShhKXx8ZSE9bnVsbCYmZS5oYXNPd25Qcm9wZXJ0eShhKXx8KGEuaW5kZXhPZigiLS0iKT09PTA/dC5zZXRQcm9wZXJ0eShhLCIiKTphPT09ImZsb2F0Ij90LmNzc0Zsb2F0PSIiOnRbYV09IiIpO2Zvcih2YXIgbiBpbiBlKWE9ZVtuXSxlLmhhc093blByb3BlcnR5KG4pJiZsW25dIT09YSYma2EodCxuLGEpfWVsc2UgZm9yKHZhciBvIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShvKSYma2EodCxvLGVbb10pfWZ1bmN0aW9uIGphKHQpe2lmKHQuaW5kZXhPZigiLSIpPT09LTEpcmV0dXJuITE7c3dpdGNoKHQpe2Nhc2UiYW5ub3RhdGlvbi14bWwiOmNhc2UiY29sb3ItcHJvZmlsZSI6Y2FzZSJmb250LWZhY2UiOmNhc2UiZm9udC1mYWNlLXNyYyI6Y2FzZSJmb250LWZhY2UtdXJpIjpjYXNlImZvbnQtZmFjZS1mb3JtYXQiOmNhc2UiZm9udC1mYWNlLW5hbWUiOmNhc2UibWlzc2luZy1nbHlwaCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19dmFyIFNpPW5ldyBNYXAoW1siYWNjZXB0Q2hhcnNldCIsImFjY2VwdC1jaGFyc2V0Il0sWyJodG1sRm9yIiwiZm9yIl0sWyJodHRwRXF1aXYiLCJodHRwLWVxdWl2Il0sWyJjcm9zc09yaWdpbiIsImNyb3Nzb3JpZ2luIl0sWyJhY2NlbnRIZWlnaHQiLCJhY2NlbnQtaGVpZ2h0Il0sWyJhbGlnbm1lbnRCYXNlbGluZSIsImFsaWdubWVudC1iYXNlbGluZSJdLFsiYXJhYmljRm9ybSIsImFyYWJpYy1mb3JtIl0sWyJiYXNlbGluZVNoaWZ0IiwiYmFzZWxpbmUtc2hpZnQiXSxbImNhcEhlaWdodCIsImNhcC1oZWlnaHQiXSxbImNsaXBQYXRoIiwiY2xpcC1wYXRoIl0sWyJjbGlwUnVsZSIsImNsaXAtcnVsZSJdLFsiY29sb3JJbnRlcnBvbGF0aW9uIiwiY29sb3ItaW50ZXJwb2xhdGlvbiJdLFsiY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyIsImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyJdLFsiY29sb3JQcm9maWxlIiwiY29sb3ItcHJvZmlsZSJdLFsiY29sb3JSZW5kZXJpbmciLCJjb2xvci1yZW5kZXJpbmciXSxbImRvbWluYW50QmFzZWxpbmUiLCJkb21pbmFudC1iYXNlbGluZSJdLFsiZW5hYmxlQmFja2dyb3VuZCIsImVuYWJsZS1iYWNrZ3JvdW5kIl0sWyJmaWxsT3BhY2l0eSIsImZpbGwtb3BhY2l0eSJdLFsiZmlsbFJ1bGUiLCJmaWxsLXJ1bGUiXSxbImZsb29kQ29sb3IiLCJmbG9vZC1jb2xvciJdLFsiZmxvb2RPcGFjaXR5IiwiZmxvb2Qtb3BhY2l0eSJdLFsiZm9udEZhbWlseSIsImZvbnQtZmFtaWx5Il0sWyJmb250U2l6ZSIsImZvbnQtc2l6ZSJdLFsiZm9udFNpemVBZGp1c3QiLCJmb250LXNpemUtYWRqdXN0Il0sWyJmb250U3RyZXRjaCIsImZvbnQtc3RyZXRjaCJdLFsiZm9udFN0eWxlIiwiZm9udC1zdHlsZSJdLFsiZm9udFZhcmlhbnQiLCJmb250LXZhcmlhbnQiXSxbImZvbnRXZWlnaHQiLCJmb250LXdlaWdodCJdLFsiZ2x5cGhOYW1lIiwiZ2x5cGgtbmFtZSJdLFsiZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwiLCJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIl0sWyJnbHlwaE9yaWVudGF0aW9uVmVydGljYWwiLCJnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCJdLFsiaG9yaXpBZHZYIiwiaG9yaXotYWR2LXgiXSxbImhvcml6T3JpZ2luWCIsImhvcml6LW9yaWdpbi14Il0sWyJpbWFnZVJlbmRlcmluZyIsImltYWdlLXJlbmRlcmluZyJdLFsibGV0dGVyU3BhY2luZyIsImxldHRlci1zcGFjaW5nIl0sWyJsaWdodGluZ0NvbG9yIiwibGlnaHRpbmctY29sb3IiXSxbIm1hcmtlckVuZCIsIm1hcmtlci1lbmQiXSxbIm1hcmtlck1pZCIsIm1hcmtlci1taWQiXSxbIm1hcmtlclN0YXJ0IiwibWFya2VyLXN0YXJ0Il0sWyJvdmVybGluZVBvc2l0aW9uIiwib3ZlcmxpbmUtcG9zaXRpb24iXSxbIm92ZXJsaW5lVGhpY2tuZXNzIiwib3ZlcmxpbmUtdGhpY2tuZXNzIl0sWyJwYWludE9yZGVyIiwicGFpbnQtb3JkZXIiXSxbInBhbm9zZS0xIiwicGFub3NlLTEiXSxbInBvaW50ZXJFdmVudHMiLCJwb2ludGVyLWV2ZW50cyJdLFsicmVuZGVyaW5nSW50ZW50IiwicmVuZGVyaW5nLWludGVudCJdLFsic2hhcGVSZW5kZXJpbmciLCJzaGFwZS1yZW5kZXJpbmciXSxbInN0b3BDb2xvciIsInN0b3AtY29sb3IiXSxbInN0b3BPcGFjaXR5Iiwic3RvcC1vcGFjaXR5Il0sWyJzdHJpa2V0aHJvdWdoUG9zaXRpb24iLCJzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIl0sWyJzdHJpa2V0aHJvdWdoVGhpY2tuZXNzIiwic3RyaWtldGhyb3VnaC10aGlja25lc3MiXSxbInN0cm9rZURhc2hhcnJheSIsInN0cm9rZS1kYXNoYXJyYXkiXSxbInN0cm9rZURhc2hvZmZzZXQiLCJzdHJva2UtZGFzaG9mZnNldCJdLFsic3Ryb2tlTGluZWNhcCIsInN0cm9rZS1saW5lY2FwIl0sWyJzdHJva2VMaW5lam9pbiIsInN0cm9rZS1saW5lam9pbiJdLFsic3Ryb2tlTWl0ZXJsaW1pdCIsInN0cm9rZS1taXRlcmxpbWl0Il0sWyJzdHJva2VPcGFjaXR5Iiwic3Ryb2tlLW9wYWNpdHkiXSxbInN0cm9rZVdpZHRoIiwic3Ryb2tlLXdpZHRoIl0sWyJ0ZXh0QW5jaG9yIiwidGV4dC1hbmNob3IiXSxbInRleHREZWNvcmF0aW9uIiwidGV4dC1kZWNvcmF0aW9uIl0sWyJ0ZXh0UmVuZGVyaW5nIiwidGV4dC1yZW5kZXJpbmciXSxbInRyYW5zZm9ybU9yaWdpbiIsInRyYW5zZm9ybS1vcmlnaW4iXSxbInVuZGVybGluZVBvc2l0aW9uIiwidW5kZXJsaW5lLXBvc2l0aW9uIl0sWyJ1bmRlcmxpbmVUaGlja25lc3MiLCJ1bmRlcmxpbmUtdGhpY2tuZXNzIl0sWyJ1bmljb2RlQmlkaSIsInVuaWNvZGUtYmlkaSJdLFsidW5pY29kZVJhbmdlIiwidW5pY29kZS1yYW5nZSJdLFsidW5pdHNQZXJFbSIsInVuaXRzLXBlci1lbSJdLFsidkFscGhhYmV0aWMiLCJ2LWFscGhhYmV0aWMiXSxbInZIYW5naW5nIiwidi1oYW5naW5nIl0sWyJ2SWRlb2dyYXBoaWMiLCJ2LWlkZW9ncmFwaGljIl0sWyJ2TWF0aGVtYXRpY2FsIiwidi1tYXRoZW1hdGljYWwiXSxbInZlY3RvckVmZmVjdCIsInZlY3Rvci1lZmZlY3QiXSxbInZlcnRBZHZZIiwidmVydC1hZHYteSJdLFsidmVydE9yaWdpblgiLCJ2ZXJ0LW9yaWdpbi14Il0sWyJ2ZXJ0T3JpZ2luWSIsInZlcnQtb3JpZ2luLXkiXSxbIndvcmRTcGFjaW5nIiwid29yZC1zcGFjaW5nIl0sWyJ3cml0aW5nTW9kZSIsIndyaXRpbmctbW9kZSJdLFsieG1sbnNYbGluayIsInhtbG5zOnhsaW5rIl0sWyJ4SGVpZ2h0IiwieC1oZWlnaHQiXV0pLENpPS9eW1x1MDAwMC1cdTAwMUYgXSpqW1xyXG5cdF0qYVtcclxuXHRdKnZbXHJcblx0XSphW1xyXG5cdF0qc1tcclxuXHRdKmNbXHJcblx0XSpyW1xyXG5cdF0qaVtcclxuXHRdKnBbXHJcblx0XSp0W1xyXG5cdF0qOi9pO2Z1bmN0aW9uIEJhKHQpe3JldHVybiBDaS50ZXN0KCIiK3QpPyJqYXZhc2NyaXB0OnRocm93IG5ldyBFcnJvcignUmVhY3QgaGFzIGJsb2NrZWQgYSBqYXZhc2NyaXB0OiBVUkwgYXMgYSBzZWN1cml0eSBwcmVjYXV0aW9uLicpIjp0fXZhciBobj1udWxsO2Z1bmN0aW9uIG1uKHQpe3JldHVybiB0PXQudGFyZ2V0fHx0LnNyY0VsZW1lbnR8fHdpbmRvdyx0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50JiYodD10LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSx0Lm5vZGVUeXBlPT09Mz90LnBhcmVudE5vZGU6dH12YXIgU2w9bnVsbCxDbD1udWxsO2Z1bmN0aW9uIGlvKHQpe3ZhciBlPVhsKHQpO2lmKGUmJih0PWUuc3RhdGVOb2RlKSl7dmFyIGw9dFtwZV18fG51bGw7dDpzd2l0Y2godD1lLnN0YXRlTm9kZSxlLnR5cGUpe2Nhc2UiaW5wdXQiOmlmKEtsKHQsbC52YWx1ZSxsLmRlZmF1bHRWYWx1ZSxsLmRlZmF1bHRWYWx1ZSxsLmNoZWNrZWQsbC5kZWZhdWx0Q2hlY2tlZCxsLnR5cGUsbC5uYW1lKSxlPWwubmFtZSxsLnR5cGU9PT0icmFkaW8iJiZlIT1udWxsKXtmb3IobD10O2wucGFyZW50Tm9kZTspbD1sLnBhcmVudE5vZGU7Zm9yKGw9bC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFtuYW1lPSInK3NlKCIiK2UpKyciXVt0eXBlPSJyYWRpbyJdJyksZT0wO2U8bC5sZW5ndGg7ZSsrKXt2YXIgYT1sW2VdO2lmKGEhPT10JiZhLmZvcm09PT10LmZvcm0pe3ZhciBuPWFbcGVdfHxudWxsO2lmKCFuKXRocm93IEVycm9yKHMoOTApKTtLbChhLG4udmFsdWUsbi5kZWZhdWx0VmFsdWUsbi5kZWZhdWx0VmFsdWUsbi5jaGVja2VkLG4uZGVmYXVsdENoZWNrZWQsbi50eXBlLG4ubmFtZSl9fWZvcihlPTA7ZTxsLmxlbmd0aDtlKyspYT1sW2VdLGEuZm9ybT09PXQuZm9ybSYmcmwoYSl9YnJlYWsgdDtjYXNlInRleHRhcmVhIjp6YSh0LGwudmFsdWUsbC5kZWZhdWx0VmFsdWUpO2JyZWFrIHQ7Y2FzZSJzZWxlY3QiOmU9bC52YWx1ZSxlIT1udWxsJiYkZSh0LCEhbC5tdWx0aXBsZSxlLCExKX19fXZhciBnbj0hMTtmdW5jdGlvbiBybyh0LGUsbCl7aWYoZ24pcmV0dXJuIHQoZSxsKTtnbj0hMDt0cnl7dmFyIGE9dChlKTtyZXR1cm4gYX1maW5hbGx5e2lmKGduPSExLChTbCE9PW51bGx8fENsIT09bnVsbCkmJihpcigpLFNsJiYoZT1TbCx0PUNsLENsPVNsPW51bGwsaW8oZSksdCkpKWZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaW8odFtlXSl9fWZ1bmN0aW9uIEpsKHQsZSl7dmFyIGw9dC5zdGF0ZU5vZGU7aWYobD09PW51bGwpcmV0dXJuIG51bGw7dmFyIGE9bFtwZV18fG51bGw7aWYoYT09PW51bGwpcmV0dXJuIG51bGw7bD1hW2VdO3Q6c3dpdGNoKGUpe2Nhc2Uib25DbGljayI6Y2FzZSJvbkNsaWNrQ2FwdHVyZSI6Y2FzZSJvbkRvdWJsZUNsaWNrIjpjYXNlIm9uRG91YmxlQ2xpY2tDYXB0dXJlIjpjYXNlIm9uTW91c2VEb3duIjpjYXNlIm9uTW91c2VEb3duQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlTW92ZSI6Y2FzZSJvbk1vdXNlTW92ZUNhcHR1cmUiOmNhc2Uib25Nb3VzZVVwIjpjYXNlIm9uTW91c2VVcENhcHR1cmUiOmNhc2Uib25Nb3VzZUVudGVyIjooYT0hYS5kaXNhYmxlZCl8fCh0PXQudHlwZSxhPSEodD09PSJidXR0b24ifHx0PT09ImlucHV0Inx8dD09PSJzZWxlY3QifHx0PT09InRleHRhcmVhIikpLHQ9IWE7YnJlYWsgdDtkZWZhdWx0OnQ9ITF9aWYodClyZXR1cm4gbnVsbDtpZihsJiZ0eXBlb2YgbCE9ImZ1bmN0aW9uIil0aHJvdyBFcnJvcihzKDIzMSxlLHR5cGVvZiBsKSk7cmV0dXJuIGx9dmFyIFVlPSEodHlwZW9mIHdpbmRvdz4idSJ8fHR5cGVvZiB3aW5kb3cuZG9jdW1lbnQ+InUifHx0eXBlb2Ygd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQ+InUiKSxwbj0hMTtpZihVZSl0cnl7dmFyIFdsPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShXbCwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe3BuPSEwfX0pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0IixXbCxXbCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLFdsLFdsKX1jYXRjaHtwbj0hMX12YXIgSWU9bnVsbCx5bj1udWxsLExhPW51bGw7ZnVuY3Rpb24gc28oKXtpZihMYSlyZXR1cm4gTGE7dmFyIHQsZT15bixsPWUubGVuZ3RoLGEsbj0idmFsdWUiaW4gSWU/SWUudmFsdWU6SWUudGV4dENvbnRlbnQsbz1uLmxlbmd0aDtmb3IodD0wO3Q8bCYmZVt0XT09PW5bdF07dCsrKTt2YXIgdT1sLXQ7Zm9yKGE9MTthPD11JiZlW2wtYV09PT1uW28tYV07YSsrKTtyZXR1cm4gTGE9bi5zbGljZSh0LDE8YT8xLWE6dm9pZCAwKX1mdW5jdGlvbiBIYSh0KXt2YXIgZT10LmtleUNvZGU7cmV0dXJuImNoYXJDb2RlImluIHQ/KHQ9dC5jaGFyQ29kZSx0PT09MCYmZT09PTEzJiYodD0xMykpOnQ9ZSx0PT09MTAmJih0PTEzKSwzMjw9dHx8dD09PTEzP3Q6MH1mdW5jdGlvbiBVYSgpe3JldHVybiEwfWZ1bmN0aW9uIGNvKCl7cmV0dXJuITF9ZnVuY3Rpb24gY2UodCl7ZnVuY3Rpb24gZShsLGEsbixvLHUpe3RoaXMuX3JlYWN0TmFtZT1sLHRoaXMuX3RhcmdldEluc3Q9bix0aGlzLnR5cGU9YSx0aGlzLm5hdGl2ZUV2ZW50PW8sdGhpcy50YXJnZXQ9dSx0aGlzLmN1cnJlbnRUYXJnZXQ9bnVsbDtmb3IodmFyIGYgaW4gdCl0Lmhhc093blByb3BlcnR5KGYpJiYobD10W2ZdLHRoaXNbZl09bD9sKG8pOm9bZl0pO3JldHVybiB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD0oby5kZWZhdWx0UHJldmVudGVkIT1udWxsP28uZGVmYXVsdFByZXZlbnRlZDpvLnJldHVyblZhbHVlPT09ITEpP1VhOmNvLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9Y28sdGhpc31yZXR1cm4gRChlLnByb3RvdHlwZSx7cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITA7dmFyIGw9dGhpcy5uYXRpdmVFdmVudDtsJiYobC5wcmV2ZW50RGVmYXVsdD9sLnByZXZlbnREZWZhdWx0KCk6dHlwZW9mIGwucmV0dXJuVmFsdWUhPSJ1bmtub3duIiYmKGwucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPVVhKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGw9dGhpcy5uYXRpdmVFdmVudDtsJiYobC5zdG9wUHJvcGFnYXRpb24/bC5zdG9wUHJvcGFnYXRpb24oKTp0eXBlb2YgbC5jYW5jZWxCdWJibGUhPSJ1bmtub3duIiYmKGwuY2FuY2VsQnViYmxlPSEwKSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPVVhKX0scGVyc2lzdDpmdW5jdGlvbigpe30saXNQZXJzaXN0ZW50OlVhfSksZX12YXIgc2w9e2V2ZW50UGhhc2U6MCxidWJibGVzOjAsY2FuY2VsYWJsZTowLHRpbWVTdGFtcDpmdW5jdGlvbih0KXtyZXR1cm4gdC50aW1lU3RhbXB8fERhdGUubm93KCl9LGRlZmF1bHRQcmV2ZW50ZWQ6MCxpc1RydXN0ZWQ6MH0sR2E9Y2Uoc2wpLCRsPUQoe30sc2wse3ZpZXc6MCxkZXRhaWw6MH0pLEVpPWNlKCRsKSxUaSx1byxmbyxEaT1EKHt9LCRsLHtzY3JlZW5YOjAsc2NyZWVuWTowLGNsaWVudFg6MCxjbGllbnRZOjAscGFnZVg6MCxwYWdlWTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxnZXRNb2RpZmllclN0YXRlOm9zLGJ1dHRvbjowLGJ1dHRvbnM6MCxyZWxhdGVkVGFyZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0LnJlbGF0ZWRUYXJnZXQ9PT12b2lkIDA/dC5mcm9tRWxlbWVudD09PXQuc3JjRWxlbWVudD90LnRvRWxlbWVudDp0LmZyb21FbGVtZW50OnQucmVsYXRlZFRhcmdldH0sbW92ZW1lbnRYOmZ1bmN0aW9uKHQpe3JldHVybiJtb3ZlbWVudFgiaW4gdD90Lm1vdmVtZW50WDoodCE9PWZvJiYoZm8mJnQudHlwZT09PSJtb3VzZW1vdmUiPyhUaT10LnNjcmVlblgtZm8uc2NyZWVuWCx1bz10LnNjcmVlblktZm8uc2NyZWVuWSk6dW89VGk9MCxmbz10KSxUaSl9LG1vdmVtZW50WTpmdW5jdGlvbih0KXtyZXR1cm4ibW92ZW1lbnRZImluIHQ/dC5tb3ZlbWVudFk6dW99fSksVnU9Y2UoRGkpLEQwPUQoe30sRGkse2RhdGFUcmFuc2ZlcjowfSksTTA9Y2UoRDApLEEwPUQoe30sJGwse3JlbGF0ZWRUYXJnZXQ6MH0pLG5zPWNlKEEwKSxSMD1EKHt9LHNsLHthbmltYXRpb25OYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSxOMD1jZShSMCksejA9RCh7fSxzbCx7Y2xpcGJvYXJkRGF0YTpmdW5jdGlvbih0KXtyZXR1cm4iY2xpcGJvYXJkRGF0YSJpbiB0P3QuY2xpcGJvYXJkRGF0YTp3aW5kb3cuY2xpcGJvYXJkRGF0YX19KSxfMD1jZSh6MCksazA9RCh7fSxzbCx7ZGF0YTowfSksWHU9Y2UoazApLE8wPXtFc2M6IkVzY2FwZSIsU3BhY2ViYXI6IiAiLExlZnQ6IkFycm93TGVmdCIsVXA6IkFycm93VXAiLFJpZ2h0OiJBcnJvd1JpZ2h0IixEb3duOiJBcnJvd0Rvd24iLERlbDoiRGVsZXRlIixXaW46Ik9TIixNZW51OiJDb250ZXh0TWVudSIsQXBwczoiQ29udGV4dE1lbnUiLFNjcm9sbDoiU2Nyb2xsTG9jayIsTW96UHJpbnRhYmxlS2V5OiJVbmlkZW50aWZpZWQifSxqMD17ODoiQmFja3NwYWNlIiw5OiJUYWIiLDEyOiJDbGVhciIsMTM6IkVudGVyIiwxNjoiU2hpZnQiLDE3OiJDb250cm9sIiwxODoiQWx0IiwxOToiUGF1c2UiLDIwOiJDYXBzTG9jayIsMjc6IkVzY2FwZSIsMzI6IiAiLDMzOiJQYWdlVXAiLDM0OiJQYWdlRG93biIsMzU6IkVuZCIsMzY6IkhvbWUiLDM3OiJBcnJvd0xlZnQiLDM4OiJBcnJvd1VwIiwzOToiQXJyb3dSaWdodCIsNDA6IkFycm93RG93biIsNDU6Ikluc2VydCIsNDY6IkRlbGV0ZSIsMTEyOiJGMSIsMTEzOiJGMiIsMTE0OiJGMyIsMTE1OiJGNCIsMTE2OiJGNSIsMTE3OiJGNiIsMTE4OiJGNyIsMTE5OiJGOCIsMTIwOiJGOSIsMTIxOiJGMTAiLDEyMjoiRjExIiwxMjM6IkYxMiIsMTQ0OiJOdW1Mb2NrIiwxNDU6IlNjcm9sbExvY2siLDIyNDoiTWV0YSJ9LEIwPXtBbHQ6ImFsdEtleSIsQ29udHJvbDoiY3RybEtleSIsTWV0YToibWV0YUtleSIsU2hpZnQ6InNoaWZ0S2V5In07ZnVuY3Rpb24gTDAodCl7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtyZXR1cm4gZS5nZXRNb2RpZmllclN0YXRlP2UuZ2V0TW9kaWZpZXJTdGF0ZSh0KToodD1CMFt0XSk/ISFlW3RdOiExfWZ1bmN0aW9uIG9zKCl7cmV0dXJuIEwwfXZhciBIMD1EKHt9LCRsLHtrZXk6ZnVuY3Rpb24odCl7aWYodC5rZXkpe3ZhciBlPU8wW3Qua2V5XXx8dC5rZXk7aWYoZSE9PSJVbmlkZW50aWZpZWQiKXJldHVybiBlfXJldHVybiB0LnR5cGU9PT0ia2V5cHJlc3MiPyh0PUhhKHQpLHQ9PT0xMz8iRW50ZXIiOlN0cmluZy5mcm9tQ2hhckNvZGUodCkpOnQudHlwZT09PSJrZXlkb3duInx8dC50eXBlPT09ImtleXVwIj9qMFt0LmtleUNvZGVdfHwiVW5pZGVudGlmaWVkIjoiIn0sY29kZTowLGxvY2F0aW9uOjAsY3RybEtleTowLHNoaWZ0S2V5OjAsYWx0S2V5OjAsbWV0YUtleTowLHJlcGVhdDowLGxvY2FsZTowLGdldE1vZGlmaWVyU3RhdGU6b3MsY2hhckNvZGU6ZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZT09PSJrZXlwcmVzcyI/SGEodCk6MH0sa2V5Q29kZTpmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlPT09ImtleWRvd24ifHx0LnR5cGU9PT0ia2V5dXAiP3Qua2V5Q29kZTowfSx3aGljaDpmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlPT09ImtleXByZXNzIj9IYSh0KTp0LnR5cGU9PT0ia2V5ZG93biJ8fHQudHlwZT09PSJrZXl1cCI/dC5rZXlDb2RlOjB9fSksVTA9Y2UoSDApLEcwPUQoe30sRGkse3BvaW50ZXJJZDowLHdpZHRoOjAsaGVpZ2h0OjAscHJlc3N1cmU6MCx0YW5nZW50aWFsUHJlc3N1cmU6MCx0aWx0WDowLHRpbHRZOjAsdHdpc3Q6MCxwb2ludGVyVHlwZTowLGlzUHJpbWFyeTowfSksWnU9Y2UoRzApLHEwPUQoe30sJGwse3RvdWNoZXM6MCx0YXJnZXRUb3VjaGVzOjAsY2hhbmdlZFRvdWNoZXM6MCxhbHRLZXk6MCxtZXRhS2V5OjAsY3RybEtleTowLHNoaWZ0S2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTpvc30pLFkwPWNlKHEwKSxWMD1EKHt9LHNsLHtwcm9wZXJ0eU5hbWU6MCxlbGFwc2VkVGltZTowLHBzZXVkb0VsZW1lbnQ6MH0pLFgwPWNlKFYwKSxaMD1EKHt9LERpLHtkZWx0YVg6ZnVuY3Rpb24odCl7cmV0dXJuImRlbHRhWCJpbiB0P3QuZGVsdGFYOiJ3aGVlbERlbHRhWCJpbiB0Py10LndoZWVsRGVsdGFYOjB9LGRlbHRhWTpmdW5jdGlvbih0KXtyZXR1cm4iZGVsdGFZImluIHQ/dC5kZWx0YVk6IndoZWVsRGVsdGFZImluIHQ/LXQud2hlZWxEZWx0YVk6IndoZWVsRGVsdGEiaW4gdD8tdC53aGVlbERlbHRhOjB9LGRlbHRhWjowLGRlbHRhTW9kZTowfSksUTA9Y2UoWjApLEswPUQoe30sc2wse25ld1N0YXRlOjAsb2xkU3RhdGU6MH0pLFAwPWNlKEswKSxKMD1bOSwxMywyNywzMl0saXM9VWUmJiJDb21wb3NpdGlvbkV2ZW50ImluIHdpbmRvdyxobz1udWxsO1VlJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiYoaG89ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKTt2YXIgVzA9VWUmJiJUZXh0RXZlbnQiaW4gd2luZG93JiYhaG8sUXU9VWUmJighaXN8fGhvJiY4PGhvJiYxMT49aG8pLEt1PSIgIixQdT0hMTtmdW5jdGlvbiBKdSh0LGUpe3N3aXRjaCh0KXtjYXNlImtleXVwIjpyZXR1cm4gSjAuaW5kZXhPZihlLmtleUNvZGUpIT09LTE7Y2FzZSJrZXlkb3duIjpyZXR1cm4gZS5rZXlDb2RlIT09MjI5O2Nhc2Uia2V5cHJlc3MiOmNhc2UibW91c2Vkb3duIjpjYXNlImZvY3Vzb3V0IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBXdSh0KXtyZXR1cm4gdD10LmRldGFpbCx0eXBlb2YgdD09Im9iamVjdCImJiJkYXRhImluIHQ/dC5kYXRhOm51bGx9dmFyIHZuPSExO2Z1bmN0aW9uICQwKHQsZSl7c3dpdGNoKHQpe2Nhc2UiY29tcG9zaXRpb25lbmQiOnJldHVybiBXdShlKTtjYXNlImtleXByZXNzIjpyZXR1cm4gZS53aGljaCE9PTMyP251bGw6KFB1PSEwLEt1KTtjYXNlInRleHRJbnB1dCI6cmV0dXJuIHQ9ZS5kYXRhLHQ9PT1LdSYmUHU/bnVsbDp0O2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIEYwKHQsZSl7aWYodm4pcmV0dXJuIHQ9PT0iY29tcG9zaXRpb25lbmQifHwhaXMmJkp1KHQsZSk/KHQ9c28oKSxMYT15bj1JZT1udWxsLHZuPSExLHQpOm51bGw7c3dpdGNoKHQpe2Nhc2UicGFzdGUiOnJldHVybiBudWxsO2Nhc2Uia2V5cHJlc3MiOmlmKCEoZS5jdHJsS2V5fHxlLmFsdEtleXx8ZS5tZXRhS2V5KXx8ZS5jdHJsS2V5JiZlLmFsdEtleSl7aWYoZS5jaGFyJiYxPGUuY2hhci5sZW5ndGgpcmV0dXJuIGUuY2hhcjtpZihlLndoaWNoKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUud2hpY2gpfXJldHVybiBudWxsO2Nhc2UiY29tcG9zaXRpb25lbmQiOnJldHVybiBRdSYmZS5sb2NhbGUhPT0ia28iP251bGw6ZS5kYXRhO2RlZmF1bHQ6cmV0dXJuIG51bGx9fXZhciBJMD17Y29sb3I6ITAsZGF0ZTohMCxkYXRldGltZTohMCwiZGF0ZXRpbWUtbG9jYWwiOiEwLGVtYWlsOiEwLG1vbnRoOiEwLG51bWJlcjohMCxwYXNzd29yZDohMCxyYW5nZTohMCxzZWFyY2g6ITAsdGVsOiEwLHRleHQ6ITAsdGltZTohMCx1cmw6ITAsd2VlazohMH07ZnVuY3Rpb24gJHUodCl7dmFyIGU9dCYmdC5ub2RlTmFtZSYmdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBlPT09ImlucHV0Ij8hIUkwW3QudHlwZV06ZT09PSJ0ZXh0YXJlYSJ9ZnVuY3Rpb24gRnUodCxlLGwsYSl7U2w/Q2w/Q2wucHVzaChhKTpDbD1bYV06U2w9YSxlPWZyKGUsIm9uQ2hhbmdlIiksMDxlLmxlbmd0aCYmKGw9bmV3IEdhKCJvbkNoYW5nZSIsImNoYW5nZSIsbnVsbCxsLGEpLHQucHVzaCh7ZXZlbnQ6bCxsaXN0ZW5lcnM6ZX0pKX12YXIgbW89bnVsbCxnbz1udWxsO2Z1bmN0aW9uIHQxKHQpe2toKHQsMCl9ZnVuY3Rpb24gTWkodCl7dmFyIGU9QWEodCk7aWYocmwoZSkpcmV0dXJuIHR9ZnVuY3Rpb24gSXUodCxlKXtpZih0PT09ImNoYW5nZSIpcmV0dXJuIGV9dmFyIHRkPSExO2lmKFVlKXt2YXIgcnM7aWYoVWUpe3ZhciBzcz0ib25pbnB1dCJpbiBkb2N1bWVudDtpZighc3Mpe3ZhciBlZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlZC5zZXRBdHRyaWJ1dGUoIm9uaW5wdXQiLCJyZXR1cm47Iiksc3M9dHlwZW9mIGVkLm9uaW5wdXQ9PSJmdW5jdGlvbiJ9cnM9c3N9ZWxzZSBycz0hMTt0ZD1ycyYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fDk8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKX1mdW5jdGlvbiBsZCgpe21vJiYobW8uZGV0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGFkKSxnbz1tbz1udWxsKX1mdW5jdGlvbiBhZCh0KXtpZih0LnByb3BlcnR5TmFtZT09PSJ2YWx1ZSImJk1pKGdvKSl7dmFyIGU9W107RnUoZSxnbyx0LG1uKHQpKSxybyh0MSxlKX19ZnVuY3Rpb24gZTEodCxlLGwpe3Q9PT0iZm9jdXNpbiI/KGxkKCksbW89ZSxnbz1sLG1vLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixhZCkpOnQ9PT0iZm9jdXNvdXQiJiZsZCgpfWZ1bmN0aW9uIGwxKHQpe2lmKHQ9PT0ic2VsZWN0aW9uY2hhbmdlInx8dD09PSJrZXl1cCJ8fHQ9PT0ia2V5ZG93biIpcmV0dXJuIE1pKGdvKX1mdW5jdGlvbiBhMSh0LGUpe2lmKHQ9PT0iY2xpY2siKXJldHVybiBNaShlKX1mdW5jdGlvbiBuMSh0LGUpe2lmKHQ9PT0iaW5wdXQifHx0PT09ImNoYW5nZSIpcmV0dXJuIE1pKGUpfWZ1bmN0aW9uIG8xKHQsZSl7cmV0dXJuIHQ9PT1lJiYodCE9PTB8fDEvdD09PTEvZSl8fHQhPT10JiZlIT09ZX12YXIgUmU9dHlwZW9mIE9iamVjdC5pcz09ImZ1bmN0aW9uIj9PYmplY3QuaXM6bzE7ZnVuY3Rpb24gcG8odCxlKXtpZihSZSh0LGUpKXJldHVybiEwO2lmKHR5cGVvZiB0IT0ib2JqZWN0Inx8dD09PW51bGx8fHR5cGVvZiBlIT0ib2JqZWN0Inx8ZT09PW51bGwpcmV0dXJuITE7dmFyIGw9T2JqZWN0LmtleXModCksYT1PYmplY3Qua2V5cyhlKTtpZihsLmxlbmd0aCE9PWEubGVuZ3RoKXJldHVybiExO2ZvcihhPTA7YTxsLmxlbmd0aDthKyspe3ZhciBuPWxbYV07aWYoIVBlLmNhbGwoZSxuKXx8IVJlKHRbbl0sZVtuXSkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gbmQodCl7Zm9yKDt0JiZ0LmZpcnN0Q2hpbGQ7KXQ9dC5maXJzdENoaWxkO3JldHVybiB0fWZ1bmN0aW9uIG9kKHQsZSl7dmFyIGw9bmQodCk7dD0wO2Zvcih2YXIgYTtsOyl7aWYobC5ub2RlVHlwZT09PTMpe2lmKGE9dCtsLnRleHRDb250ZW50Lmxlbmd0aCx0PD1lJiZhPj1lKXJldHVybntub2RlOmwsb2Zmc2V0OmUtdH07dD1hfXQ6e2Zvcig7bDspe2lmKGwubmV4dFNpYmxpbmcpe2w9bC5uZXh0U2libGluZzticmVhayB0fWw9bC5wYXJlbnROb2RlfWw9dm9pZCAwfWw9bmQobCl9fWZ1bmN0aW9uIGlkKHQsZSl7cmV0dXJuIHQmJmU/dD09PWU/ITA6dCYmdC5ub2RlVHlwZT09PTM/ITE6ZSYmZS5ub2RlVHlwZT09PTM/aWQodCxlLnBhcmVudE5vZGUpOiJjb250YWlucyJpbiB0P3QuY29udGFpbnMoZSk6dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8hISh0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUpJjE2KTohMTohMX1mdW5jdGlvbiByZCh0KXt0PXQhPW51bGwmJnQub3duZXJEb2N1bWVudCE9bnVsbCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IT1udWxsP3Qub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldzp3aW5kb3c7Zm9yKHZhciBlPXdsKHQuZG9jdW1lbnQpO2UgaW5zdGFuY2VvZiB0LkhUTUxJRnJhbWVFbGVtZW50Oyl7dHJ5e3ZhciBsPXR5cGVvZiBlLmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaHJlZj09InN0cmluZyJ9Y2F0Y2h7bD0hMX1pZihsKXQ9ZS5jb250ZW50V2luZG93O2Vsc2UgYnJlYWs7ZT13bCh0LmRvY3VtZW50KX1yZXR1cm4gZX1mdW5jdGlvbiBjcyh0KXt2YXIgZT10JiZ0Lm5vZGVOYW1lJiZ0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGUmJihlPT09ImlucHV0IiYmKHQudHlwZT09PSJ0ZXh0Inx8dC50eXBlPT09InNlYXJjaCJ8fHQudHlwZT09PSJ0ZWwifHx0LnR5cGU9PT0idXJsInx8dC50eXBlPT09InBhc3N3b3JkIil8fGU9PT0idGV4dGFyZWEifHx0LmNvbnRlbnRFZGl0YWJsZT09PSJ0cnVlIil9dmFyIGkxPVVlJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiYxMT49ZG9jdW1lbnQuZG9jdW1lbnRNb2RlLGJuPW51bGwsdXM9bnVsbCx5bz1udWxsLGRzPSExO2Z1bmN0aW9uIHNkKHQsZSxsKXt2YXIgYT1sLndpbmRvdz09PWw/bC5kb2N1bWVudDpsLm5vZGVUeXBlPT09OT9sOmwub3duZXJEb2N1bWVudDtkc3x8Ym49PW51bGx8fGJuIT09d2woYSl8fChhPWJuLCJzZWxlY3Rpb25TdGFydCJpbiBhJiZjcyhhKT9hPXtzdGFydDphLnNlbGVjdGlvblN0YXJ0LGVuZDphLnNlbGVjdGlvbkVuZH06KGE9KGEub3duZXJEb2N1bWVudCYmYS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbigpLGE9e2FuY2hvck5vZGU6YS5hbmNob3JOb2RlLGFuY2hvck9mZnNldDphLmFuY2hvck9mZnNldCxmb2N1c05vZGU6YS5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6YS5mb2N1c09mZnNldH0pLHlvJiZwbyh5byxhKXx8KHlvPWEsYT1mcih1cywib25TZWxlY3QiKSwwPGEubGVuZ3RoJiYoZT1uZXcgR2EoIm9uU2VsZWN0Iiwic2VsZWN0IixudWxsLGUsbCksdC5wdXNoKHtldmVudDplLGxpc3RlbmVyczphfSksZS50YXJnZXQ9Ym4pKSl9ZnVuY3Rpb24gcWEodCxlKXt2YXIgbD17fTtyZXR1cm4gbFt0LnRvTG93ZXJDYXNlKCldPWUudG9Mb3dlckNhc2UoKSxsWyJXZWJraXQiK3RdPSJ3ZWJraXQiK2UsbFsiTW96Iit0XT0ibW96IitlLGx9dmFyIHhuPXthbmltYXRpb25lbmQ6cWEoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpxYSgiQW5pbWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6cWEoIkFuaW1hdGlvbiIsIkFuaW1hdGlvblN0YXJ0IiksdHJhbnNpdGlvbnJ1bjpxYSgiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25SdW4iKSx0cmFuc2l0aW9uc3RhcnQ6cWEoIlRyYW5zaXRpb24iLCJUcmFuc2l0aW9uU3RhcnQiKSx0cmFuc2l0aW9uY2FuY2VsOnFhKCJUcmFuc2l0aW9uIiwiVHJhbnNpdGlvbkNhbmNlbCIpLHRyYW5zaXRpb25lbmQ6cWEoIlRyYW5zaXRpb24iLCJUcmFuc2l0aW9uRW5kIil9LGZzPXt9LGNkPXt9O1VlJiYoY2Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsIkFuaW1hdGlvbkV2ZW50ImluIHdpbmRvd3x8KGRlbGV0ZSB4bi5hbmltYXRpb25lbmQuYW5pbWF0aW9uLGRlbGV0ZSB4bi5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSB4bi5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLCJUcmFuc2l0aW9uRXZlbnQiaW4gd2luZG93fHxkZWxldGUgeG4udHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uKTtmdW5jdGlvbiBZYSh0KXtpZihmc1t0XSlyZXR1cm4gZnNbdF07aWYoIXhuW3RdKXJldHVybiB0O3ZhciBlPXhuW3RdLGw7Zm9yKGwgaW4gZSlpZihlLmhhc093blByb3BlcnR5KGwpJiZsIGluIGNkKXJldHVybiBmc1t0XT1lW2xdO3JldHVybiB0fXZhciB1ZD1ZYSgiYW5pbWF0aW9uZW5kIiksZGQ9WWEoImFuaW1hdGlvbml0ZXJhdGlvbiIpLGZkPVlhKCJhbmltYXRpb25zdGFydCIpLHIxPVlhKCJ0cmFuc2l0aW9ucnVuIiksczE9WWEoInRyYW5zaXRpb25zdGFydCIpLGMxPVlhKCJ0cmFuc2l0aW9uY2FuY2VsIiksaGQ9WWEoInRyYW5zaXRpb25lbmQiKSxtZD1uZXcgTWFwLGhzPSJhYm9ydCBhdXhDbGljayBiZWZvcmVUb2dnbGUgY2FuY2VsIGNhblBsYXkgY2FuUGxheVRocm91Z2ggY2xpY2sgY2xvc2UgY29udGV4dE1lbnUgY29weSBjdXQgZHJhZyBkcmFnRW5kIGRyYWdFbnRlciBkcmFnRXhpdCBkcmFnTGVhdmUgZHJhZ092ZXIgZHJhZ1N0YXJ0IGRyb3AgZHVyYXRpb25DaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgZ290UG9pbnRlckNhcHR1cmUgaW5wdXQgaW52YWxpZCBrZXlEb3duIGtleVByZXNzIGtleVVwIGxvYWQgbG9hZGVkRGF0YSBsb2FkZWRNZXRhZGF0YSBsb2FkU3RhcnQgbG9zdFBvaW50ZXJDYXB0dXJlIG1vdXNlRG93biBtb3VzZU1vdmUgbW91c2VPdXQgbW91c2VPdmVyIG1vdXNlVXAgcGFzdGUgcGF1c2UgcGxheSBwbGF5aW5nIHBvaW50ZXJDYW5jZWwgcG9pbnRlckRvd24gcG9pbnRlck1vdmUgcG9pbnRlck91dCBwb2ludGVyT3ZlciBwb2ludGVyVXAgcHJvZ3Jlc3MgcmF0ZUNoYW5nZSByZXNldCByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdWJtaXQgc3VzcGVuZCB0aW1lVXBkYXRlIHRvdWNoQ2FuY2VsIHRvdWNoRW5kIHRvdWNoU3RhcnQgdm9sdW1lQ2hhbmdlIHNjcm9sbCB0b2dnbGUgdG91Y2hNb3ZlIHdhaXRpbmcgd2hlZWwiLnNwbGl0KCIgIik7aHMucHVzaCgic2Nyb2xsRW5kIik7ZnVuY3Rpb24gdGwodCxlKXttZC5zZXQodCxlKSxibChlLFt0XSl9dmFyIGdkPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIEdlKHQsZSl7aWYodHlwZW9mIHQ9PSJvYmplY3QiJiZ0IT09bnVsbCl7dmFyIGw9Z2QuZ2V0KHQpO3JldHVybiBsIT09dm9pZCAwP2w6KGU9e3ZhbHVlOnQsc291cmNlOmUsc3RhY2s6eGwoZSl9LGdkLnNldCh0LGUpLGUpfXJldHVybnt2YWx1ZTp0LHNvdXJjZTplLHN0YWNrOnhsKGUpfX12YXIgcWU9W10sd249MCxtcz0wO2Z1bmN0aW9uIEFpKCl7Zm9yKHZhciB0PXduLGU9bXM9d249MDtlPHQ7KXt2YXIgbD1xZVtlXTtxZVtlKytdPW51bGw7dmFyIGE9cWVbZV07cWVbZSsrXT1udWxsO3ZhciBuPXFlW2VdO3FlW2UrK109bnVsbDt2YXIgbz1xZVtlXTtpZihxZVtlKytdPW51bGwsYSE9PW51bGwmJm4hPT1udWxsKXt2YXIgdT1hLnBlbmRpbmc7dT09PW51bGw/bi5uZXh0PW46KG4ubmV4dD11Lm5leHQsdS5uZXh0PW4pLGEucGVuZGluZz1ufW8hPT0wJiZwZChsLG4sbyl9fWZ1bmN0aW9uIFJpKHQsZSxsLGEpe3FlW3duKytdPXQscWVbd24rK109ZSxxZVt3bisrXT1sLHFlW3duKytdPWEsbXN8PWEsdC5sYW5lc3w9YSx0PXQuYWx0ZXJuYXRlLHQhPT1udWxsJiYodC5sYW5lc3w9YSl9ZnVuY3Rpb24gZ3ModCxlLGwsYSl7cmV0dXJuIFJpKHQsZSxsLGEpLE5pKHQpfWZ1bmN0aW9uIFNuKHQsZSl7cmV0dXJuIFJpKHQsbnVsbCxudWxsLGUpLE5pKHQpfWZ1bmN0aW9uIHBkKHQsZSxsKXt0LmxhbmVzfD1sO3ZhciBhPXQuYWx0ZXJuYXRlO2EhPT1udWxsJiYoYS5sYW5lc3w9bCk7Zm9yKHZhciBuPSExLG89dC5yZXR1cm47byE9PW51bGw7KW8uY2hpbGRMYW5lc3w9bCxhPW8uYWx0ZXJuYXRlLGEhPT1udWxsJiYoYS5jaGlsZExhbmVzfD1sKSxvLnRhZz09PTIyJiYodD1vLnN0YXRlTm9kZSx0PT09bnVsbHx8dC5fdmlzaWJpbGl0eSYxfHwobj0hMCkpLHQ9byxvPW8ucmV0dXJuO3JldHVybiB0LnRhZz09PTM/KG89dC5zdGF0ZU5vZGUsbiYmZSE9PW51bGwmJihuPTMxLSR0KGwpLHQ9by5oaWRkZW5VcGRhdGVzLGE9dFtuXSxhPT09bnVsbD90W25dPVtlXTphLnB1c2goZSksZS5sYW5lPWx8NTM2ODcwOTEyKSxvKTpudWxsfWZ1bmN0aW9uIE5pKHQpe2lmKDUwPFlvKXRocm93IFlvPTAsd2M9bnVsbCxFcnJvcihzKDE4NSkpO2Zvcih2YXIgZT10LnJldHVybjtlIT09bnVsbDspdD1lLGU9dC5yZXR1cm47cmV0dXJuIHQudGFnPT09Mz90LnN0YXRlTm9kZTpudWxsfXZhciBDbj17fTtmdW5jdGlvbiB1MSh0LGUsbCxhKXt0aGlzLnRhZz10LHRoaXMua2V5PWwsdGhpcy5zaWJsaW5nPXRoaXMuY2hpbGQ9dGhpcy5yZXR1cm49dGhpcy5zdGF0ZU5vZGU9dGhpcy50eXBlPXRoaXMuZWxlbWVudFR5cGU9bnVsbCx0aGlzLmluZGV4PTAsdGhpcy5yZWZDbGVhbnVwPXRoaXMucmVmPW51bGwsdGhpcy5wZW5kaW5nUHJvcHM9ZSx0aGlzLmRlcGVuZGVuY2llcz10aGlzLm1lbW9pemVkU3RhdGU9dGhpcy51cGRhdGVRdWV1ZT10aGlzLm1lbW9pemVkUHJvcHM9bnVsbCx0aGlzLm1vZGU9YSx0aGlzLnN1YnRyZWVGbGFncz10aGlzLmZsYWdzPTAsdGhpcy5kZWxldGlvbnM9bnVsbCx0aGlzLmNoaWxkTGFuZXM9dGhpcy5sYW5lcz0wLHRoaXMuYWx0ZXJuYXRlPW51bGx9ZnVuY3Rpb24gTmUodCxlLGwsYSl7cmV0dXJuIG5ldyB1MSh0LGUsbCxhKX1mdW5jdGlvbiBwcyh0KXtyZXR1cm4gdD10LnByb3RvdHlwZSwhKCF0fHwhdC5pc1JlYWN0Q29tcG9uZW50KX1mdW5jdGlvbiBFbCh0LGUpe3ZhciBsPXQuYWx0ZXJuYXRlO3JldHVybiBsPT09bnVsbD8obD1OZSh0LnRhZyxlLHQua2V5LHQubW9kZSksbC5lbGVtZW50VHlwZT10LmVsZW1lbnRUeXBlLGwudHlwZT10LnR5cGUsbC5zdGF0ZU5vZGU9dC5zdGF0ZU5vZGUsbC5hbHRlcm5hdGU9dCx0LmFsdGVybmF0ZT1sKToobC5wZW5kaW5nUHJvcHM9ZSxsLnR5cGU9dC50eXBlLGwuZmxhZ3M9MCxsLnN1YnRyZWVGbGFncz0wLGwuZGVsZXRpb25zPW51bGwpLGwuZmxhZ3M9dC5mbGFncyY2NTAxMTcxMixsLmNoaWxkTGFuZXM9dC5jaGlsZExhbmVzLGwubGFuZXM9dC5sYW5lcyxsLmNoaWxkPXQuY2hpbGQsbC5tZW1vaXplZFByb3BzPXQubWVtb2l6ZWRQcm9wcyxsLm1lbW9pemVkU3RhdGU9dC5tZW1vaXplZFN0YXRlLGwudXBkYXRlUXVldWU9dC51cGRhdGVRdWV1ZSxlPXQuZGVwZW5kZW5jaWVzLGwuZGVwZW5kZW5jaWVzPWU9PT1udWxsP251bGw6e2xhbmVzOmUubGFuZXMsZmlyc3RDb250ZXh0OmUuZmlyc3RDb250ZXh0fSxsLnNpYmxpbmc9dC5zaWJsaW5nLGwuaW5kZXg9dC5pbmRleCxsLnJlZj10LnJlZixsLnJlZkNsZWFudXA9dC5yZWZDbGVhbnVwLGx9ZnVuY3Rpb24geWQodCxlKXt0LmZsYWdzJj02NTAxMTcxNDt2YXIgbD10LmFsdGVybmF0ZTtyZXR1cm4gbD09PW51bGw/KHQuY2hpbGRMYW5lcz0wLHQubGFuZXM9ZSx0LmNoaWxkPW51bGwsdC5zdWJ0cmVlRmxhZ3M9MCx0Lm1lbW9pemVkUHJvcHM9bnVsbCx0Lm1lbW9pemVkU3RhdGU9bnVsbCx0LnVwZGF0ZVF1ZXVlPW51bGwsdC5kZXBlbmRlbmNpZXM9bnVsbCx0LnN0YXRlTm9kZT1udWxsKToodC5jaGlsZExhbmVzPWwuY2hpbGRMYW5lcyx0LmxhbmVzPWwubGFuZXMsdC5jaGlsZD1sLmNoaWxkLHQuc3VidHJlZUZsYWdzPTAsdC5kZWxldGlvbnM9bnVsbCx0Lm1lbW9pemVkUHJvcHM9bC5tZW1vaXplZFByb3BzLHQubWVtb2l6ZWRTdGF0ZT1sLm1lbW9pemVkU3RhdGUsdC51cGRhdGVRdWV1ZT1sLnVwZGF0ZVF1ZXVlLHQudHlwZT1sLnR5cGUsZT1sLmRlcGVuZGVuY2llcyx0LmRlcGVuZGVuY2llcz1lPT09bnVsbD9udWxsOntsYW5lczplLmxhbmVzLGZpcnN0Q29udGV4dDplLmZpcnN0Q29udGV4dH0pLHR9ZnVuY3Rpb24gemkodCxlLGwsYSxuLG8pe3ZhciB1PTA7aWYoYT10LHR5cGVvZiB0PT0iZnVuY3Rpb24iKXBzKHQpJiYodT0xKTtlbHNlIGlmKHR5cGVvZiB0PT0ic3RyaW5nIil1PWZwKHQsbCxaLmN1cnJlbnQpPzI2OnQ9PT0iaHRtbCJ8fHQ9PT0iaGVhZCJ8fHQ9PT0iYm9keSI/Mjc6NTtlbHNlIHQ6c3dpdGNoKHQpe2Nhc2UgeHQ6cmV0dXJuIHQ9TmUoMzEsbCxlLG4pLHQuZWxlbWVudFR5cGU9eHQsdC5sYW5lcz1vLHQ7Y2FzZSAkOnJldHVybiBWYShsLmNoaWxkcmVuLG4sbyxlKTtjYXNlIG50OnU9OCxufD0yNDticmVhaztjYXNlIGN0OnJldHVybiB0PU5lKDEyLGwsZSxufDIpLHQuZWxlbWVudFR5cGU9Y3QsdC5sYW5lcz1vLHQ7Y2FzZSBIOnJldHVybiB0PU5lKDEzLGwsZSxuKSx0LmVsZW1lbnRUeXBlPUgsdC5sYW5lcz1vLHQ7Y2FzZSBpdDpyZXR1cm4gdD1OZSgxOSxsLGUsbiksdC5lbGVtZW50VHlwZT1pdCx0LmxhbmVzPW8sdDtkZWZhdWx0OmlmKHR5cGVvZiB0PT0ib2JqZWN0IiYmdCE9PW51bGwpc3dpdGNoKHQuJCR0eXBlb2Ype2Nhc2UgaHQ6Y2FzZSBfOnU9MTA7YnJlYWsgdDtjYXNlIFN0OnU9OTticmVhayB0O2Nhc2UgWTp1PTExO2JyZWFrIHQ7Y2FzZSBydDp1PTE0O2JyZWFrIHQ7Y2FzZSBWOnU9MTYsYT1udWxsO2JyZWFrIHR9dT0yOSxsPUVycm9yKHMoMTMwLHQ9PT1udWxsPyJudWxsIjp0eXBlb2YgdCwiIikpLGE9bnVsbH1yZXR1cm4gZT1OZSh1LGwsZSxuKSxlLmVsZW1lbnRUeXBlPXQsZS50eXBlPWEsZS5sYW5lcz1vLGV9ZnVuY3Rpb24gVmEodCxlLGwsYSl7cmV0dXJuIHQ9TmUoNyx0LGEsZSksdC5sYW5lcz1sLHR9ZnVuY3Rpb24geXModCxlLGwpe3JldHVybiB0PU5lKDYsdCxudWxsLGUpLHQubGFuZXM9bCx0fWZ1bmN0aW9uIHZzKHQsZSxsKXtyZXR1cm4gZT1OZSg0LHQuY2hpbGRyZW4hPT1udWxsP3QuY2hpbGRyZW46W10sdC5rZXksZSksZS5sYW5lcz1sLGUuc3RhdGVOb2RlPXtjb250YWluZXJJbmZvOnQuY29udGFpbmVySW5mbyxwZW5kaW5nQ2hpbGRyZW46bnVsbCxpbXBsZW1lbnRhdGlvbjp0LmltcGxlbWVudGF0aW9ufSxlfXZhciBFbj1bXSxUbj0wLF9pPW51bGwsa2k9MCxZZT1bXSxWZT0wLFhhPW51bGwsVGw9MSxEbD0iIjtmdW5jdGlvbiBaYSh0LGUpe0VuW1RuKytdPWtpLEVuW1RuKytdPV9pLF9pPXQsa2k9ZX1mdW5jdGlvbiB2ZCh0LGUsbCl7WWVbVmUrK109VGwsWWVbVmUrK109RGwsWWVbVmUrK109WGEsWGE9dDt2YXIgYT1UbDt0PURsO3ZhciBuPTMyLSR0KGEpLTE7YSY9figxPDxuKSxsKz0xO3ZhciBvPTMyLSR0KGUpK247aWYoMzA8byl7dmFyIHU9bi1uJTU7bz0oYSYoMTw8dSktMSkudG9TdHJpbmcoMzIpLGE+Pj11LG4tPXUsVGw9MTw8MzItJHQoZSkrbnxsPDxufGEsRGw9byt0fWVsc2UgVGw9MTw8b3xsPDxufGEsRGw9dH1mdW5jdGlvbiBicyh0KXt0LnJldHVybiE9PW51bGwmJihaYSh0LDEpLHZkKHQsMSwwKSl9ZnVuY3Rpb24geHModCl7Zm9yKDt0PT09X2k7KV9pPUVuWy0tVG5dLEVuW1RuXT1udWxsLGtpPUVuWy0tVG5dLEVuW1RuXT1udWxsO2Zvcig7dD09PVhhOylYYT1ZZVstLVZlXSxZZVtWZV09bnVsbCxEbD1ZZVstLVZlXSxZZVtWZV09bnVsbCxUbD1ZZVstLVZlXSxZZVtWZV09bnVsbH12YXIgYmU9bnVsbCxVdD1udWxsLEV0PSExLFFhPW51bGwsY2w9ITEsd3M9RXJyb3Iocyg1MTkpKTtmdW5jdGlvbiBLYSh0KXt2YXIgZT1FcnJvcihzKDQxOCwiIikpO3Rocm93IHhvKEdlKGUsdCkpLHdzfWZ1bmN0aW9uIGJkKHQpe3ZhciBlPXQuc3RhdGVOb2RlLGw9dC50eXBlLGE9dC5tZW1vaXplZFByb3BzO3N3aXRjaChlW2VlXT10LGVbcGVdPWEsbCl7Y2FzZSJkaWFsb2ciOnZ0KCJjYW5jZWwiLGUpLHZ0KCJjbG9zZSIsZSk7YnJlYWs7Y2FzZSJpZnJhbWUiOmNhc2Uib2JqZWN0IjpjYXNlImVtYmVkIjp2dCgibG9hZCIsZSk7YnJlYWs7Y2FzZSJ2aWRlbyI6Y2FzZSJhdWRpbyI6Zm9yKGw9MDtsPFhvLmxlbmd0aDtsKyspdnQoWG9bbF0sZSk7YnJlYWs7Y2FzZSJzb3VyY2UiOnZ0KCJlcnJvciIsZSk7YnJlYWs7Y2FzZSJpbWciOmNhc2UiaW1hZ2UiOmNhc2UibGluayI6dnQoImVycm9yIixlKSx2dCgibG9hZCIsZSk7YnJlYWs7Y2FzZSJkZXRhaWxzIjp2dCgidG9nZ2xlIixlKTticmVhaztjYXNlImlucHV0Ijp2dCgiaW52YWxpZCIsZSksTmEoZSxhLnZhbHVlLGEuZGVmYXVsdFZhbHVlLGEuY2hlY2tlZCxhLmRlZmF1bHRDaGVja2VkLGEudHlwZSxhLm5hbWUsITApLHJlKGUpO2JyZWFrO2Nhc2Uic2VsZWN0Ijp2dCgiaW52YWxpZCIsZSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6dnQoImludmFsaWQiLGUpLF9hKGUsYS52YWx1ZSxhLmRlZmF1bHRWYWx1ZSxhLmNoaWxkcmVuKSxyZShlKX1sPWEuY2hpbGRyZW4sdHlwZW9mIGwhPSJzdHJpbmciJiZ0eXBlb2YgbCE9Im51bWJlciImJnR5cGVvZiBsIT0iYmlnaW50Inx8ZS50ZXh0Q29udGVudD09PSIiK2x8fGEuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nPT09ITB8fExoKGUudGV4dENvbnRlbnQsbCk/KGEucG9wb3ZlciE9bnVsbCYmKHZ0KCJiZWZvcmV0b2dnbGUiLGUpLHZ0KCJ0b2dnbGUiLGUpKSxhLm9uU2Nyb2xsIT1udWxsJiZ2dCgic2Nyb2xsIixlKSxhLm9uU2Nyb2xsRW5kIT1udWxsJiZ2dCgic2Nyb2xsZW5kIixlKSxhLm9uQ2xpY2shPW51bGwmJihlLm9uY2xpY2s9aHIpLGU9ITApOmU9ITEsZXx8S2EodCl9ZnVuY3Rpb24geGQodCl7Zm9yKGJlPXQucmV0dXJuO2JlOylzd2l0Y2goYmUudGFnKXtjYXNlIDU6Y2FzZSAxMzpjbD0hMTtyZXR1cm47Y2FzZSAyNzpjYXNlIDM6Y2w9ITA7cmV0dXJuO2RlZmF1bHQ6YmU9YmUucmV0dXJufX1mdW5jdGlvbiB2byh0KXtpZih0IT09YmUpcmV0dXJuITE7aWYoIUV0KXJldHVybiB4ZCh0KSxFdD0hMCwhMTt2YXIgZT10LnRhZyxsO2lmKChsPWUhPT0zJiZlIT09MjcpJiYoKGw9ZT09PTUpJiYobD10LnR5cGUsbD0hKGwhPT0iZm9ybSImJmwhPT0iYnV0dG9uIil8fExjKHQudHlwZSx0Lm1lbW9pemVkUHJvcHMpKSxsPSFsKSxsJiZVdCYmS2EodCkseGQodCksZT09PTEzKXtpZih0PXQubWVtb2l6ZWRTdGF0ZSx0PXQhPT1udWxsP3QuZGVoeWRyYXRlZDpudWxsLCF0KXRocm93IEVycm9yKHMoMzE3KSk7dDp7Zm9yKHQ9dC5uZXh0U2libGluZyxlPTA7dDspe2lmKHQubm9kZVR5cGU9PT04KWlmKGw9dC5kYXRhLGw9PT0iLyQiKXtpZihlPT09MCl7VXQ9bGwodC5uZXh0U2libGluZyk7YnJlYWsgdH1lLS19ZWxzZSBsIT09IiQiJiZsIT09IiQhIiYmbCE9PSIkPyJ8fGUrKzt0PXQubmV4dFNpYmxpbmd9VXQ9bnVsbH19ZWxzZSBlPT09Mjc/KGU9VXQsaGEodC50eXBlKT8odD1xYyxxYz1udWxsLFV0PXQpOlV0PWUpOlV0PWJlP2xsKHQuc3RhdGVOb2RlLm5leHRTaWJsaW5nKTpudWxsO3JldHVybiEwfWZ1bmN0aW9uIGJvKCl7VXQ9YmU9bnVsbCxFdD0hMX1mdW5jdGlvbiB3ZCgpe3ZhciB0PVFhO3JldHVybiB0IT09bnVsbCYmKE1lPT09bnVsbD9NZT10Ok1lLnB1c2guYXBwbHkoTWUsdCksUWE9bnVsbCksdH1mdW5jdGlvbiB4byh0KXtRYT09PW51bGw/UWE9W3RdOlFhLnB1c2godCl9dmFyIFNzPU8obnVsbCksUGE9bnVsbCxNbD1udWxsO2Z1bmN0aW9uIEZsKHQsZSxsKXtHKFNzLGUuX2N1cnJlbnRWYWx1ZSksZS5fY3VycmVudFZhbHVlPWx9ZnVuY3Rpb24gQWwodCl7dC5fY3VycmVudFZhbHVlPVNzLmN1cnJlbnQsWChTcyl9ZnVuY3Rpb24gQ3ModCxlLGwpe2Zvcig7dCE9PW51bGw7KXt2YXIgYT10LmFsdGVybmF0ZTtpZigodC5jaGlsZExhbmVzJmUpIT09ZT8odC5jaGlsZExhbmVzfD1lLGEhPT1udWxsJiYoYS5jaGlsZExhbmVzfD1lKSk6YSE9PW51bGwmJihhLmNoaWxkTGFuZXMmZSkhPT1lJiYoYS5jaGlsZExhbmVzfD1lKSx0PT09bClicmVhazt0PXQucmV0dXJufX1mdW5jdGlvbiBFcyh0LGUsbCxhKXt2YXIgbj10LmNoaWxkO2ZvcihuIT09bnVsbCYmKG4ucmV0dXJuPXQpO24hPT1udWxsOyl7dmFyIG89bi5kZXBlbmRlbmNpZXM7aWYobyE9PW51bGwpe3ZhciB1PW4uY2hpbGQ7bz1vLmZpcnN0Q29udGV4dDt0OmZvcig7byE9PW51bGw7KXt2YXIgZj1vO289bjtmb3IodmFyIGc9MDtnPGUubGVuZ3RoO2crKylpZihmLmNvbnRleHQ9PT1lW2ddKXtvLmxhbmVzfD1sLGY9by5hbHRlcm5hdGUsZiE9PW51bGwmJihmLmxhbmVzfD1sKSxDcyhvLnJldHVybixsLHQpLGF8fCh1PW51bGwpO2JyZWFrIHR9bz1mLm5leHR9fWVsc2UgaWYobi50YWc9PT0xOCl7aWYodT1uLnJldHVybix1PT09bnVsbCl0aHJvdyBFcnJvcihzKDM0MSkpO3UubGFuZXN8PWwsbz11LmFsdGVybmF0ZSxvIT09bnVsbCYmKG8ubGFuZXN8PWwpLENzKHUsbCx0KSx1PW51bGx9ZWxzZSB1PW4uY2hpbGQ7aWYodSE9PW51bGwpdS5yZXR1cm49bjtlbHNlIGZvcih1PW47dSE9PW51bGw7KXtpZih1PT09dCl7dT1udWxsO2JyZWFrfWlmKG49dS5zaWJsaW5nLG4hPT1udWxsKXtuLnJldHVybj11LnJldHVybix1PW47YnJlYWt9dT11LnJldHVybn1uPXV9fWZ1bmN0aW9uIHdvKHQsZSxsLGEpe3Q9bnVsbDtmb3IodmFyIG49ZSxvPSExO24hPT1udWxsOyl7aWYoIW8pe2lmKChuLmZsYWdzJjUyNDI4OCkhPT0wKW89ITA7ZWxzZSBpZigobi5mbGFncyYyNjIxNDQpIT09MClicmVha31pZihuLnRhZz09PTEwKXt2YXIgdT1uLmFsdGVybmF0ZTtpZih1PT09bnVsbCl0aHJvdyBFcnJvcihzKDM4NykpO2lmKHU9dS5tZW1vaXplZFByb3BzLHUhPT1udWxsKXt2YXIgZj1uLnR5cGU7UmUobi5wZW5kaW5nUHJvcHMudmFsdWUsdS52YWx1ZSl8fCh0IT09bnVsbD90LnB1c2goZik6dD1bZl0pfX1lbHNlIGlmKG49PT1ndC5jdXJyZW50KXtpZih1PW4uYWx0ZXJuYXRlLHU9PT1udWxsKXRocm93IEVycm9yKHMoMzg3KSk7dS5tZW1vaXplZFN0YXRlLm1lbW9pemVkU3RhdGUhPT1uLm1lbW9pemVkU3RhdGUubWVtb2l6ZWRTdGF0ZSYmKHQhPT1udWxsP3QucHVzaChXbyk6dD1bV29dKX1uPW4ucmV0dXJufXQhPT1udWxsJiZFcyhlLHQsbCxhKSxlLmZsYWdzfD0yNjIxNDR9ZnVuY3Rpb24gT2kodCl7Zm9yKHQ9dC5maXJzdENvbnRleHQ7dCE9PW51bGw7KXtpZighUmUodC5jb250ZXh0Ll9jdXJyZW50VmFsdWUsdC5tZW1vaXplZFZhbHVlKSlyZXR1cm4hMDt0PXQubmV4dH1yZXR1cm4hMX1mdW5jdGlvbiBKYSh0KXtQYT10LE1sPW51bGwsdD10LmRlcGVuZGVuY2llcyx0IT09bnVsbCYmKHQuZmlyc3RDb250ZXh0PW51bGwpfWZ1bmN0aW9uIHllKHQpe3JldHVybiBTZChQYSx0KX1mdW5jdGlvbiBqaSh0LGUpe3JldHVybiBQYT09PW51bGwmJkphKHQpLFNkKHQsZSl9ZnVuY3Rpb24gU2QodCxlKXt2YXIgbD1lLl9jdXJyZW50VmFsdWU7aWYoZT17Y29udGV4dDplLG1lbW9pemVkVmFsdWU6bCxuZXh0Om51bGx9LE1sPT09bnVsbCl7aWYodD09PW51bGwpdGhyb3cgRXJyb3IocygzMDgpKTtNbD1lLHQuZGVwZW5kZW5jaWVzPXtsYW5lczowLGZpcnN0Q29udGV4dDplfSx0LmZsYWdzfD01MjQyODh9ZWxzZSBNbD1NbC5uZXh0PWU7cmV0dXJuIGx9dmFyIGQxPXR5cGVvZiBBYm9ydENvbnRyb2xsZXI8InUiP0Fib3J0Q29udHJvbGxlcjpmdW5jdGlvbigpe3ZhciB0PVtdLGU9dGhpcy5zaWduYWw9e2Fib3J0ZWQ6ITEsYWRkRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihsLGEpe3QucHVzaChhKX19O3RoaXMuYWJvcnQ9ZnVuY3Rpb24oKXtlLmFib3J0ZWQ9ITAsdC5mb3JFYWNoKGZ1bmN0aW9uKGwpe3JldHVybiBsKCl9KX19LGYxPXIudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayxoMT1yLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LEZ0PXskJHR5cGVvZjpfLENvbnN1bWVyOm51bGwsUHJvdmlkZXI6bnVsbCxfY3VycmVudFZhbHVlOm51bGwsX2N1cnJlbnRWYWx1ZTI6bnVsbCxfdGhyZWFkQ291bnQ6MH07ZnVuY3Rpb24gVHMoKXtyZXR1cm57Y29udHJvbGxlcjpuZXcgZDEsZGF0YTpuZXcgTWFwLHJlZkNvdW50OjB9fWZ1bmN0aW9uIFNvKHQpe3QucmVmQ291bnQtLSx0LnJlZkNvdW50PT09MCYmZjEoaDEsZnVuY3Rpb24oKXt0LmNvbnRyb2xsZXIuYWJvcnQoKX0pfXZhciBDbz1udWxsLERzPTAsRG49MCxNbj1udWxsO2Z1bmN0aW9uIG0xKHQsZSl7aWYoQ289PT1udWxsKXt2YXIgbD1Dbz1bXTtEcz0wLERuPUFjKCksTW49e3N0YXR1czoicGVuZGluZyIsdmFsdWU6dm9pZCAwLHRoZW46ZnVuY3Rpb24oYSl7bC5wdXNoKGEpfX19cmV0dXJuIERzKyssZS50aGVuKENkLENkKSxlfWZ1bmN0aW9uIENkKCl7aWYoLS1Ecz09PTAmJkNvIT09bnVsbCl7TW4hPT1udWxsJiYoTW4uc3RhdHVzPSJmdWxmaWxsZWQiKTt2YXIgdD1DbztDbz1udWxsLERuPTAsTW49bnVsbDtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKykoMCx0W2VdKSgpfX1mdW5jdGlvbiBnMSh0LGUpe3ZhciBsPVtdLGE9e3N0YXR1czoicGVuZGluZyIsdmFsdWU6bnVsbCxyZWFzb246bnVsbCx0aGVuOmZ1bmN0aW9uKG4pe2wucHVzaChuKX19O3JldHVybiB0LnRoZW4oZnVuY3Rpb24oKXthLnN0YXR1cz0iZnVsZmlsbGVkIixhLnZhbHVlPWU7Zm9yKHZhciBuPTA7bjxsLmxlbmd0aDtuKyspKDAsbFtuXSkoZSl9LGZ1bmN0aW9uKG4pe2ZvcihhLnN0YXR1cz0icmVqZWN0ZWQiLGEucmVhc29uPW4sbj0wO248bC5sZW5ndGg7bisrKSgwLGxbbl0pKHZvaWQgMCl9KSxhfXZhciBFZD1BLlM7QS5TPWZ1bmN0aW9uKHQsZSl7dHlwZW9mIGU9PSJvYmplY3QiJiZlIT09bnVsbCYmdHlwZW9mIGUudGhlbj09ImZ1bmN0aW9uIiYmbTEodCxlKSxFZCE9PW51bGwmJkVkKHQsZSl9O3ZhciBXYT1PKG51bGwpO2Z1bmN0aW9uIE1zKCl7dmFyIHQ9V2EuY3VycmVudDtyZXR1cm4gdCE9PW51bGw/dDpqdC5wb29sZWRDYWNoZX1mdW5jdGlvbiBCaSh0LGUpe2U9PT1udWxsP0coV2EsV2EuY3VycmVudCk6RyhXYSxlLnBvb2wpfWZ1bmN0aW9uIFRkKCl7dmFyIHQ9TXMoKTtyZXR1cm4gdD09PW51bGw/bnVsbDp7cGFyZW50OkZ0Ll9jdXJyZW50VmFsdWUscG9vbDp0fX12YXIgRW89RXJyb3Iocyg0NjApKSxEZD1FcnJvcihzKDQ3NCkpLExpPUVycm9yKHMoNTQyKSksQXM9e3RoZW46ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiBNZCh0KXtyZXR1cm4gdD10LnN0YXR1cyx0PT09ImZ1bGZpbGxlZCJ8fHQ9PT0icmVqZWN0ZWQifWZ1bmN0aW9uIEhpKCl7fWZ1bmN0aW9uIEFkKHQsZSxsKXtzd2l0Y2gobD10W2xdLGw9PT12b2lkIDA/dC5wdXNoKGUpOmwhPT1lJiYoZS50aGVuKEhpLEhpKSxlPWwpLGUuc3RhdHVzKXtjYXNlImZ1bGZpbGxlZCI6cmV0dXJuIGUudmFsdWU7Y2FzZSJyZWplY3RlZCI6dGhyb3cgdD1lLnJlYXNvbixOZCh0KSx0O2RlZmF1bHQ6aWYodHlwZW9mIGUuc3RhdHVzPT0ic3RyaW5nIillLnRoZW4oSGksSGkpO2Vsc2V7aWYodD1qdCx0IT09bnVsbCYmMTAwPHQuc2hlbGxTdXNwZW5kQ291bnRlcil0aHJvdyBFcnJvcihzKDQ4MikpO3Q9ZSx0LnN0YXR1cz0icGVuZGluZyIsdC50aGVuKGZ1bmN0aW9uKGEpe2lmKGUuc3RhdHVzPT09InBlbmRpbmciKXt2YXIgbj1lO24uc3RhdHVzPSJmdWxmaWxsZWQiLG4udmFsdWU9YX19LGZ1bmN0aW9uKGEpe2lmKGUuc3RhdHVzPT09InBlbmRpbmciKXt2YXIgbj1lO24uc3RhdHVzPSJyZWplY3RlZCIsbi5yZWFzb249YX19KX1zd2l0Y2goZS5zdGF0dXMpe2Nhc2UiZnVsZmlsbGVkIjpyZXR1cm4gZS52YWx1ZTtjYXNlInJlamVjdGVkIjp0aHJvdyB0PWUucmVhc29uLE5kKHQpLHR9dGhyb3cgVG89ZSxFb319dmFyIFRvPW51bGw7ZnVuY3Rpb24gUmQoKXtpZihUbz09PW51bGwpdGhyb3cgRXJyb3Iocyg0NTkpKTt2YXIgdD1UbztyZXR1cm4gVG89bnVsbCx0fWZ1bmN0aW9uIE5kKHQpe2lmKHQ9PT1Fb3x8dD09PUxpKXRocm93IEVycm9yKHMoNDgzKSl9dmFyIElsPSExO2Z1bmN0aW9uIFJzKHQpe3QudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTp0Lm1lbW9pemVkU3RhdGUsZmlyc3RCYXNlVXBkYXRlOm51bGwsbGFzdEJhc2VVcGRhdGU6bnVsbCxzaGFyZWQ6e3BlbmRpbmc6bnVsbCxsYW5lczowLGhpZGRlbkNhbGxiYWNrczpudWxsfSxjYWxsYmFja3M6bnVsbH19ZnVuY3Rpb24gTnModCxlKXt0PXQudXBkYXRlUXVldWUsZS51cGRhdGVRdWV1ZT09PXQmJihlLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6dC5iYXNlU3RhdGUsZmlyc3RCYXNlVXBkYXRlOnQuZmlyc3RCYXNlVXBkYXRlLGxhc3RCYXNlVXBkYXRlOnQubGFzdEJhc2VVcGRhdGUsc2hhcmVkOnQuc2hhcmVkLGNhbGxiYWNrczpudWxsfSl9ZnVuY3Rpb24gdGEodCl7cmV0dXJue2xhbmU6dCx0YWc6MCxwYXlsb2FkOm51bGwsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9fWZ1bmN0aW9uIGVhKHQsZSxsKXt2YXIgYT10LnVwZGF0ZVF1ZXVlO2lmKGE9PT1udWxsKXJldHVybiBudWxsO2lmKGE9YS5zaGFyZWQsKEF0JjIpIT09MCl7dmFyIG49YS5wZW5kaW5nO3JldHVybiBuPT09bnVsbD9lLm5leHQ9ZTooZS5uZXh0PW4ubmV4dCxuLm5leHQ9ZSksYS5wZW5kaW5nPWUsZT1OaSh0KSxwZCh0LG51bGwsbCksZX1yZXR1cm4gUmkodCxhLGUsbCksTmkodCl9ZnVuY3Rpb24gRG8odCxlLGwpe2lmKGU9ZS51cGRhdGVRdWV1ZSxlIT09bnVsbCYmKGU9ZS5zaGFyZWQsKGwmNDE5NDA0OCkhPT0wKSl7dmFyIGE9ZS5sYW5lczthJj10LnBlbmRpbmdMYW5lcyxsfD1hLGUubGFuZXM9bCxnaSh0LGwpfX1mdW5jdGlvbiB6cyh0LGUpe3ZhciBsPXQudXBkYXRlUXVldWUsYT10LmFsdGVybmF0ZTtpZihhIT09bnVsbCYmKGE9YS51cGRhdGVRdWV1ZSxsPT09YSkpe3ZhciBuPW51bGwsbz1udWxsO2lmKGw9bC5maXJzdEJhc2VVcGRhdGUsbCE9PW51bGwpe2Rve3ZhciB1PXtsYW5lOmwubGFuZSx0YWc6bC50YWcscGF5bG9hZDpsLnBheWxvYWQsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9O289PT1udWxsP249bz11Om89by5uZXh0PXUsbD1sLm5leHR9d2hpbGUobCE9PW51bGwpO289PT1udWxsP249bz1lOm89by5uZXh0PWV9ZWxzZSBuPW89ZTtsPXtiYXNlU3RhdGU6YS5iYXNlU3RhdGUsZmlyc3RCYXNlVXBkYXRlOm4sbGFzdEJhc2VVcGRhdGU6byxzaGFyZWQ6YS5zaGFyZWQsY2FsbGJhY2tzOmEuY2FsbGJhY2tzfSx0LnVwZGF0ZVF1ZXVlPWw7cmV0dXJufXQ9bC5sYXN0QmFzZVVwZGF0ZSx0PT09bnVsbD9sLmZpcnN0QmFzZVVwZGF0ZT1lOnQubmV4dD1lLGwubGFzdEJhc2VVcGRhdGU9ZX12YXIgX3M9ITE7ZnVuY3Rpb24gTW8oKXtpZihfcyl7dmFyIHQ9TW47aWYodCE9PW51bGwpdGhyb3cgdH19ZnVuY3Rpb24gQW8odCxlLGwsYSl7X3M9ITE7dmFyIG49dC51cGRhdGVRdWV1ZTtJbD0hMTt2YXIgbz1uLmZpcnN0QmFzZVVwZGF0ZSx1PW4ubGFzdEJhc2VVcGRhdGUsZj1uLnNoYXJlZC5wZW5kaW5nO2lmKGYhPT1udWxsKXtuLnNoYXJlZC5wZW5kaW5nPW51bGw7dmFyIGc9ZixTPWcubmV4dDtnLm5leHQ9bnVsbCx1PT09bnVsbD9vPVM6dS5uZXh0PVMsdT1nO3ZhciBOPXQuYWx0ZXJuYXRlO04hPT1udWxsJiYoTj1OLnVwZGF0ZVF1ZXVlLGY9Ti5sYXN0QmFzZVVwZGF0ZSxmIT09dSYmKGY9PT1udWxsP04uZmlyc3RCYXNlVXBkYXRlPVM6Zi5uZXh0PVMsTi5sYXN0QmFzZVVwZGF0ZT1nKSl9aWYobyE9PW51bGwpe3ZhciBrPW4uYmFzZVN0YXRlO3U9MCxOPVM9Zz1udWxsLGY9bztkb3t2YXIgRT1mLmxhbmUmLTUzNjg3MDkxMyxUPUUhPT1mLmxhbmU7aWYoVD8od3QmRSk9PT1FOihhJkUpPT09RSl7RSE9PTAmJkU9PT1EbiYmKF9zPSEwKSxOIT09bnVsbCYmKE49Ti5uZXh0PXtsYW5lOjAsdGFnOmYudGFnLHBheWxvYWQ6Zi5wYXlsb2FkLGNhbGxiYWNrOm51bGwsbmV4dDpudWxsfSk7dDp7dmFyIGx0PXQsRj1mO0U9ZTt2YXIgX3Q9bDtzd2l0Y2goRi50YWcpe2Nhc2UgMTppZihsdD1GLnBheWxvYWQsdHlwZW9mIGx0PT0iZnVuY3Rpb24iKXtrPWx0LmNhbGwoX3QsayxFKTticmVhayB0fWs9bHQ7YnJlYWsgdDtjYXNlIDM6bHQuZmxhZ3M9bHQuZmxhZ3MmLTY1NTM3fDEyODtjYXNlIDA6aWYobHQ9Ri5wYXlsb2FkLEU9dHlwZW9mIGx0PT0iZnVuY3Rpb24iP2x0LmNhbGwoX3QsayxFKTpsdCxFPT1udWxsKWJyZWFrIHQ7az1EKHt9LGssRSk7YnJlYWsgdDtjYXNlIDI6SWw9ITB9fUU9Zi5jYWxsYmFjayxFIT09bnVsbCYmKHQuZmxhZ3N8PTY0LFQmJih0LmZsYWdzfD04MTkyKSxUPW4uY2FsbGJhY2tzLFQ9PT1udWxsP24uY2FsbGJhY2tzPVtFXTpULnB1c2goRSkpfWVsc2UgVD17bGFuZTpFLHRhZzpmLnRhZyxwYXlsb2FkOmYucGF5bG9hZCxjYWxsYmFjazpmLmNhbGxiYWNrLG5leHQ6bnVsbH0sTj09PW51bGw/KFM9Tj1ULGc9ayk6Tj1OLm5leHQ9VCx1fD1FO2lmKGY9Zi5uZXh0LGY9PT1udWxsKXtpZihmPW4uc2hhcmVkLnBlbmRpbmcsZj09PW51bGwpYnJlYWs7VD1mLGY9VC5uZXh0LFQubmV4dD1udWxsLG4ubGFzdEJhc2VVcGRhdGU9VCxuLnNoYXJlZC5wZW5kaW5nPW51bGx9fXdoaWxlKCEwKTtOPT09bnVsbCYmKGc9ayksbi5iYXNlU3RhdGU9ZyxuLmZpcnN0QmFzZVVwZGF0ZT1TLG4ubGFzdEJhc2VVcGRhdGU9TixvPT09bnVsbCYmKG4uc2hhcmVkLmxhbmVzPTApLGNhfD11LHQubGFuZXM9dSx0Lm1lbW9pemVkU3RhdGU9a319ZnVuY3Rpb24gemQodCxlKXtpZih0eXBlb2YgdCE9ImZ1bmN0aW9uIil0aHJvdyBFcnJvcihzKDE5MSx0KSk7dC5jYWxsKGUpfWZ1bmN0aW9uIF9kKHQsZSl7dmFyIGw9dC5jYWxsYmFja3M7aWYobCE9PW51bGwpZm9yKHQuY2FsbGJhY2tzPW51bGwsdD0wO3Q8bC5sZW5ndGg7dCsrKXpkKGxbdF0sZSl9dmFyIEFuPU8obnVsbCksVWk9TygwKTtmdW5jdGlvbiBrZCh0LGUpe3Q9amwsRyhVaSx0KSxHKEFuLGUpLGpsPXR8ZS5iYXNlTGFuZXN9ZnVuY3Rpb24ga3MoKXtHKFVpLGpsKSxHKEFuLEFuLmN1cnJlbnQpfWZ1bmN0aW9uIE9zKCl7amw9VWkuY3VycmVudCxYKEFuKSxYKFVpKX12YXIgbGE9MCxtdD1udWxsLE50PW51bGwsWnQ9bnVsbCxHaT0hMSxSbj0hMSwkYT0hMSxxaT0wLFJvPTAsTm49bnVsbCxwMT0wO2Z1bmN0aW9uIHF0KCl7dGhyb3cgRXJyb3IocygzMjEpKX1mdW5jdGlvbiBqcyh0LGUpe2lmKGU9PT1udWxsKXJldHVybiExO2Zvcih2YXIgbD0wO2w8ZS5sZW5ndGgmJmw8dC5sZW5ndGg7bCsrKWlmKCFSZSh0W2xdLGVbbF0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIEJzKHQsZSxsLGEsbixvKXtyZXR1cm4gbGE9byxtdD1lLGUubWVtb2l6ZWRTdGF0ZT1udWxsLGUudXBkYXRlUXVldWU9bnVsbCxlLmxhbmVzPTAsQS5IPXQ9PT1udWxsfHx0Lm1lbW9pemVkU3RhdGU9PT1udWxsP3lmOnZmLCRhPSExLG89bChhLG4pLCRhPSExLFJuJiYobz1qZChlLGwsYSxuKSksT2QodCksb31mdW5jdGlvbiBPZCh0KXtBLkg9S2k7dmFyIGU9TnQhPT1udWxsJiZOdC5uZXh0IT09bnVsbDtpZihsYT0wLFp0PU50PW10PW51bGwsR2k9ITEsUm89MCxObj1udWxsLGUpdGhyb3cgRXJyb3IocygzMDApKTt0PT09bnVsbHx8bmV8fCh0PXQuZGVwZW5kZW5jaWVzLHQhPT1udWxsJiZPaSh0KSYmKG5lPSEwKSl9ZnVuY3Rpb24gamQodCxlLGwsYSl7bXQ9dDt2YXIgbj0wO2Rve2lmKFJuJiYoTm49bnVsbCksUm89MCxSbj0hMSwyNTw9bil0aHJvdyBFcnJvcihzKDMwMSkpO2lmKG4rPTEsWnQ9TnQ9bnVsbCx0LnVwZGF0ZVF1ZXVlIT1udWxsKXt2YXIgbz10LnVwZGF0ZVF1ZXVlO28ubGFzdEVmZmVjdD1udWxsLG8uZXZlbnRzPW51bGwsby5zdG9yZXM9bnVsbCxvLm1lbW9DYWNoZSE9bnVsbCYmKG8ubWVtb0NhY2hlLmluZGV4PTApfUEuSD1DMSxvPWUobCxhKX13aGlsZShSbik7cmV0dXJuIG99ZnVuY3Rpb24geTEoKXt2YXIgdD1BLkgsZT10LnVzZVN0YXRlKClbMF07cmV0dXJuIGU9dHlwZW9mIGUudGhlbj09ImZ1bmN0aW9uIj9ObyhlKTplLHQ9dC51c2VTdGF0ZSgpWzBdLChOdCE9PW51bGw/TnQubWVtb2l6ZWRTdGF0ZTpudWxsKSE9PXQmJihtdC5mbGFnc3w9MTAyNCksZX1mdW5jdGlvbiBMcygpe3ZhciB0PXFpIT09MDtyZXR1cm4gcWk9MCx0fWZ1bmN0aW9uIEhzKHQsZSxsKXtlLnVwZGF0ZVF1ZXVlPXQudXBkYXRlUXVldWUsZS5mbGFncyY9LTIwNTMsdC5sYW5lcyY9fmx9ZnVuY3Rpb24gVXModCl7aWYoR2kpe2Zvcih0PXQubWVtb2l6ZWRTdGF0ZTt0IT09bnVsbDspe3ZhciBlPXQucXVldWU7ZSE9PW51bGwmJihlLnBlbmRpbmc9bnVsbCksdD10Lm5leHR9R2k9ITF9bGE9MCxadD1OdD1tdD1udWxsLFJuPSExLFJvPXFpPTAsTm49bnVsbH1mdW5jdGlvbiBUZSgpe3ZhciB0PXttZW1vaXplZFN0YXRlOm51bGwsYmFzZVN0YXRlOm51bGwsYmFzZVF1ZXVlOm51bGwscXVldWU6bnVsbCxuZXh0Om51bGx9O3JldHVybiBadD09PW51bGw/bXQubWVtb2l6ZWRTdGF0ZT1adD10Olp0PVp0Lm5leHQ9dCxadH1mdW5jdGlvbiBRdCgpe2lmKE50PT09bnVsbCl7dmFyIHQ9bXQuYWx0ZXJuYXRlO3Q9dCE9PW51bGw/dC5tZW1vaXplZFN0YXRlOm51bGx9ZWxzZSB0PU50Lm5leHQ7dmFyIGU9WnQ9PT1udWxsP210Lm1lbW9pemVkU3RhdGU6WnQubmV4dDtpZihlIT09bnVsbCladD1lLE50PXQ7ZWxzZXtpZih0PT09bnVsbCl0aHJvdyBtdC5hbHRlcm5hdGU9PT1udWxsP0Vycm9yKHMoNDY3KSk6RXJyb3IocygzMTApKTtOdD10LHQ9e21lbW9pemVkU3RhdGU6TnQubWVtb2l6ZWRTdGF0ZSxiYXNlU3RhdGU6TnQuYmFzZVN0YXRlLGJhc2VRdWV1ZTpOdC5iYXNlUXVldWUscXVldWU6TnQucXVldWUsbmV4dDpudWxsfSxadD09PW51bGw/bXQubWVtb2l6ZWRTdGF0ZT1adD10Olp0PVp0Lm5leHQ9dH1yZXR1cm4gWnR9ZnVuY3Rpb24gR3MoKXtyZXR1cm57bGFzdEVmZmVjdDpudWxsLGV2ZW50czpudWxsLHN0b3JlczpudWxsLG1lbW9DYWNoZTpudWxsfX1mdW5jdGlvbiBObyh0KXt2YXIgZT1SbztyZXR1cm4gUm8rPTEsTm49PT1udWxsJiYoTm49W10pLHQ9QWQoTm4sdCxlKSxlPW10LChadD09PW51bGw/ZS5tZW1vaXplZFN0YXRlOlp0Lm5leHQpPT09bnVsbCYmKGU9ZS5hbHRlcm5hdGUsQS5IPWU9PT1udWxsfHxlLm1lbW9pemVkU3RhdGU9PT1udWxsP3lmOnZmKSx0fWZ1bmN0aW9uIFlpKHQpe2lmKHQhPT1udWxsJiZ0eXBlb2YgdD09Im9iamVjdCIpe2lmKHR5cGVvZiB0LnRoZW49PSJmdW5jdGlvbiIpcmV0dXJuIE5vKHQpO2lmKHQuJCR0eXBlb2Y9PT1fKXJldHVybiB5ZSh0KX10aHJvdyBFcnJvcihzKDQzOCxTdHJpbmcodCkpKX1mdW5jdGlvbiBxcyh0KXt2YXIgZT1udWxsLGw9bXQudXBkYXRlUXVldWU7aWYobCE9PW51bGwmJihlPWwubWVtb0NhY2hlKSxlPT1udWxsKXt2YXIgYT1tdC5hbHRlcm5hdGU7YSE9PW51bGwmJihhPWEudXBkYXRlUXVldWUsYSE9PW51bGwmJihhPWEubWVtb0NhY2hlLGEhPW51bGwmJihlPXtkYXRhOmEuZGF0YS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4uc2xpY2UoKX0pLGluZGV4OjB9KSkpfWlmKGU9PW51bGwmJihlPXtkYXRhOltdLGluZGV4OjB9KSxsPT09bnVsbCYmKGw9R3MoKSxtdC51cGRhdGVRdWV1ZT1sKSxsLm1lbW9DYWNoZT1lLGw9ZS5kYXRhW2UuaW5kZXhdLGw9PT12b2lkIDApZm9yKGw9ZS5kYXRhW2UuaW5kZXhdPUFycmF5KHQpLGE9MDthPHQ7YSsrKWxbYV09QmU7cmV0dXJuIGUuaW5kZXgrKyxsfWZ1bmN0aW9uIFJsKHQsZSl7cmV0dXJuIHR5cGVvZiBlPT0iZnVuY3Rpb24iP2UodCk6ZX1mdW5jdGlvbiBWaSh0KXt2YXIgZT1RdCgpO3JldHVybiBZcyhlLE50LHQpfWZ1bmN0aW9uIFlzKHQsZSxsKXt2YXIgYT10LnF1ZXVlO2lmKGE9PT1udWxsKXRocm93IEVycm9yKHMoMzExKSk7YS5sYXN0UmVuZGVyZWRSZWR1Y2VyPWw7dmFyIG49dC5iYXNlUXVldWUsbz1hLnBlbmRpbmc7aWYobyE9PW51bGwpe2lmKG4hPT1udWxsKXt2YXIgdT1uLm5leHQ7bi5uZXh0PW8ubmV4dCxvLm5leHQ9dX1lLmJhc2VRdWV1ZT1uPW8sYS5wZW5kaW5nPW51bGx9aWYobz10LmJhc2VTdGF0ZSxuPT09bnVsbCl0Lm1lbW9pemVkU3RhdGU9bztlbHNle2U9bi5uZXh0O3ZhciBmPXU9bnVsbCxnPW51bGwsUz1lLE49ITE7ZG97dmFyIGs9Uy5sYW5lJi01MzY4NzA5MTM7aWYoayE9PVMubGFuZT8od3Qmayk9PT1rOihsYSZrKT09PWspe3ZhciBFPVMucmV2ZXJ0TGFuZTtpZihFPT09MClnIT09bnVsbCYmKGc9Zy5uZXh0PXtsYW5lOjAscmV2ZXJ0TGFuZTowLGFjdGlvbjpTLmFjdGlvbixoYXNFYWdlclN0YXRlOlMuaGFzRWFnZXJTdGF0ZSxlYWdlclN0YXRlOlMuZWFnZXJTdGF0ZSxuZXh0Om51bGx9KSxrPT09RG4mJihOPSEwKTtlbHNlIGlmKChsYSZFKT09PUUpe1M9Uy5uZXh0LEU9PT1EbiYmKE49ITApO2NvbnRpbnVlfWVsc2Ugaz17bGFuZTowLHJldmVydExhbmU6Uy5yZXZlcnRMYW5lLGFjdGlvbjpTLmFjdGlvbixoYXNFYWdlclN0YXRlOlMuaGFzRWFnZXJTdGF0ZSxlYWdlclN0YXRlOlMuZWFnZXJTdGF0ZSxuZXh0Om51bGx9LGc9PT1udWxsPyhmPWc9ayx1PW8pOmc9Zy5uZXh0PWssbXQubGFuZXN8PUUsY2F8PUU7az1TLmFjdGlvbiwkYSYmbChvLGspLG89Uy5oYXNFYWdlclN0YXRlP1MuZWFnZXJTdGF0ZTpsKG8sayl9ZWxzZSBFPXtsYW5lOmsscmV2ZXJ0TGFuZTpTLnJldmVydExhbmUsYWN0aW9uOlMuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6Uy5oYXNFYWdlclN0YXRlLGVhZ2VyU3RhdGU6Uy5lYWdlclN0YXRlLG5leHQ6bnVsbH0sZz09PW51bGw/KGY9Zz1FLHU9byk6Zz1nLm5leHQ9RSxtdC5sYW5lc3w9ayxjYXw9aztTPVMubmV4dH13aGlsZShTIT09bnVsbCYmUyE9PWUpO2lmKGc9PT1udWxsP3U9bzpnLm5leHQ9ZiwhUmUobyx0Lm1lbW9pemVkU3RhdGUpJiYobmU9ITAsTiYmKGw9TW4sbCE9PW51bGwpKSl0aHJvdyBsO3QubWVtb2l6ZWRTdGF0ZT1vLHQuYmFzZVN0YXRlPXUsdC5iYXNlUXVldWU9ZyxhLmxhc3RSZW5kZXJlZFN0YXRlPW99cmV0dXJuIG49PT1udWxsJiYoYS5sYW5lcz0wKSxbdC5tZW1vaXplZFN0YXRlLGEuZGlzcGF0Y2hdfWZ1bmN0aW9uIFZzKHQpe3ZhciBlPVF0KCksbD1lLnF1ZXVlO2lmKGw9PT1udWxsKXRocm93IEVycm9yKHMoMzExKSk7bC5sYXN0UmVuZGVyZWRSZWR1Y2VyPXQ7dmFyIGE9bC5kaXNwYXRjaCxuPWwucGVuZGluZyxvPWUubWVtb2l6ZWRTdGF0ZTtpZihuIT09bnVsbCl7bC5wZW5kaW5nPW51bGw7dmFyIHU9bj1uLm5leHQ7ZG8gbz10KG8sdS5hY3Rpb24pLHU9dS5uZXh0O3doaWxlKHUhPT1uKTtSZShvLGUubWVtb2l6ZWRTdGF0ZSl8fChuZT0hMCksZS5tZW1vaXplZFN0YXRlPW8sZS5iYXNlUXVldWU9PT1udWxsJiYoZS5iYXNlU3RhdGU9byksbC5sYXN0UmVuZGVyZWRTdGF0ZT1vfXJldHVybltvLGFdfWZ1bmN0aW9uIEJkKHQsZSxsKXt2YXIgYT1tdCxuPVF0KCksbz1FdDtpZihvKXtpZihsPT09dm9pZCAwKXRocm93IEVycm9yKHMoNDA3KSk7bD1sKCl9ZWxzZSBsPWUoKTt2YXIgdT0hUmUoKE50fHxuKS5tZW1vaXplZFN0YXRlLGwpO3UmJihuLm1lbW9pemVkU3RhdGU9bCxuZT0hMCksbj1uLnF1ZXVlO3ZhciBmPVVkLmJpbmQobnVsbCxhLG4sdCk7aWYoem8oMjA0OCw4LGYsW3RdKSxuLmdldFNuYXBzaG90IT09ZXx8dXx8WnQhPT1udWxsJiZadC5tZW1vaXplZFN0YXRlLnRhZyYxKXtpZihhLmZsYWdzfD0yMDQ4LHpuKDksWGkoKSxIZC5iaW5kKG51bGwsYSxuLGwsZSksbnVsbCksanQ9PT1udWxsKXRocm93IEVycm9yKHMoMzQ5KSk7b3x8KGxhJjEyNCkhPT0wfHxMZChhLGUsbCl9cmV0dXJuIGx9ZnVuY3Rpb24gTGQodCxlLGwpe3QuZmxhZ3N8PTE2Mzg0LHQ9e2dldFNuYXBzaG90OmUsdmFsdWU6bH0sZT1tdC51cGRhdGVRdWV1ZSxlPT09bnVsbD8oZT1HcygpLG10LnVwZGF0ZVF1ZXVlPWUsZS5zdG9yZXM9W3RdKToobD1lLnN0b3JlcyxsPT09bnVsbD9lLnN0b3Jlcz1bdF06bC5wdXNoKHQpKX1mdW5jdGlvbiBIZCh0LGUsbCxhKXtlLnZhbHVlPWwsZS5nZXRTbmFwc2hvdD1hLEdkKGUpJiZxZCh0KX1mdW5jdGlvbiBVZCh0LGUsbCl7cmV0dXJuIGwoZnVuY3Rpb24oKXtHZChlKSYmcWQodCl9KX1mdW5jdGlvbiBHZCh0KXt2YXIgZT10LmdldFNuYXBzaG90O3Q9dC52YWx1ZTt0cnl7dmFyIGw9ZSgpO3JldHVybiFSZSh0LGwpfWNhdGNoe3JldHVybiEwfX1mdW5jdGlvbiBxZCh0KXt2YXIgZT1Tbih0LDIpO2UhPT1udWxsJiZqZShlLHQsMil9ZnVuY3Rpb24gWHModCl7dmFyIGU9VGUoKTtpZih0eXBlb2YgdD09ImZ1bmN0aW9uIil7dmFyIGw9dDtpZih0PWwoKSwkYSl7SmUoITApO3RyeXtsKCl9ZmluYWxseXtKZSghMSl9fX1yZXR1cm4gZS5tZW1vaXplZFN0YXRlPWUuYmFzZVN0YXRlPXQsZS5xdWV1ZT17cGVuZGluZzpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOlJsLGxhc3RSZW5kZXJlZFN0YXRlOnR9LGV9ZnVuY3Rpb24gWWQodCxlLGwsYSl7cmV0dXJuIHQuYmFzZVN0YXRlPWwsWXModCxOdCx0eXBlb2YgYT09ImZ1bmN0aW9uIj9hOlJsKX1mdW5jdGlvbiB2MSh0LGUsbCxhLG4pe2lmKFFpKHQpKXRocm93IEVycm9yKHMoNDg1KSk7aWYodD1lLmFjdGlvbix0IT09bnVsbCl7dmFyIG89e3BheWxvYWQ6bixhY3Rpb246dCxuZXh0Om51bGwsaXNUcmFuc2l0aW9uOiEwLHN0YXR1czoicGVuZGluZyIsdmFsdWU6bnVsbCxyZWFzb246bnVsbCxsaXN0ZW5lcnM6W10sdGhlbjpmdW5jdGlvbih1KXtvLmxpc3RlbmVycy5wdXNoKHUpfX07QS5UIT09bnVsbD9sKCEwKTpvLmlzVHJhbnNpdGlvbj0hMSxhKG8pLGw9ZS5wZW5kaW5nLGw9PT1udWxsPyhvLm5leHQ9ZS5wZW5kaW5nPW8sVmQoZSxvKSk6KG8ubmV4dD1sLm5leHQsZS5wZW5kaW5nPWwubmV4dD1vKX19ZnVuY3Rpb24gVmQodCxlKXt2YXIgbD1lLmFjdGlvbixhPWUucGF5bG9hZCxuPXQuc3RhdGU7aWYoZS5pc1RyYW5zaXRpb24pe3ZhciBvPUEuVCx1PXt9O0EuVD11O3RyeXt2YXIgZj1sKG4sYSksZz1BLlM7ZyE9PW51bGwmJmcodSxmKSxYZCh0LGUsZil9Y2F0Y2goUyl7WnModCxlLFMpfWZpbmFsbHl7QS5UPW99fWVsc2UgdHJ5e289bChuLGEpLFhkKHQsZSxvKX1jYXRjaChTKXtacyh0LGUsUyl9fWZ1bmN0aW9uIFhkKHQsZSxsKXtsIT09bnVsbCYmdHlwZW9mIGw9PSJvYmplY3QiJiZ0eXBlb2YgbC50aGVuPT0iZnVuY3Rpb24iP2wudGhlbihmdW5jdGlvbihhKXtaZCh0LGUsYSl9LGZ1bmN0aW9uKGEpe3JldHVybiBacyh0LGUsYSl9KTpaZCh0LGUsbCl9ZnVuY3Rpb24gWmQodCxlLGwpe2Uuc3RhdHVzPSJmdWxmaWxsZWQiLGUudmFsdWU9bCxRZChlKSx0LnN0YXRlPWwsZT10LnBlbmRpbmcsZSE9PW51bGwmJihsPWUubmV4dCxsPT09ZT90LnBlbmRpbmc9bnVsbDoobD1sLm5leHQsZS5uZXh0PWwsVmQodCxsKSkpfWZ1bmN0aW9uIFpzKHQsZSxsKXt2YXIgYT10LnBlbmRpbmc7aWYodC5wZW5kaW5nPW51bGwsYSE9PW51bGwpe2E9YS5uZXh0O2RvIGUuc3RhdHVzPSJyZWplY3RlZCIsZS5yZWFzb249bCxRZChlKSxlPWUubmV4dDt3aGlsZShlIT09YSl9dC5hY3Rpb249bnVsbH1mdW5jdGlvbiBRZCh0KXt0PXQubGlzdGVuZXJzO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKSgwLHRbZV0pKCl9ZnVuY3Rpb24gS2QodCxlKXtyZXR1cm4gZX1mdW5jdGlvbiBQZCh0LGUpe2lmKEV0KXt2YXIgbD1qdC5mb3JtU3RhdGU7aWYobCE9PW51bGwpe3Q6e3ZhciBhPW10O2lmKEV0KXtpZihVdCl7ZTp7Zm9yKHZhciBuPVV0LG89Y2w7bi5ub2RlVHlwZSE9PTg7KXtpZighbyl7bj1udWxsO2JyZWFrIGV9aWYobj1sbChuLm5leHRTaWJsaW5nKSxuPT09bnVsbCl7bj1udWxsO2JyZWFrIGV9fW89bi5kYXRhLG49bz09PSJGISJ8fG89PT0iRiI/bjpudWxsfWlmKG4pe1V0PWxsKG4ubmV4dFNpYmxpbmcpLGE9bi5kYXRhPT09IkYhIjticmVhayB0fX1LYShhKX1hPSExfWEmJihlPWxbMF0pfX1yZXR1cm4gbD1UZSgpLGwubWVtb2l6ZWRTdGF0ZT1sLmJhc2VTdGF0ZT1lLGE9e3BlbmRpbmc6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjpLZCxsYXN0UmVuZGVyZWRTdGF0ZTplfSxsLnF1ZXVlPWEsbD1tZi5iaW5kKG51bGwsbXQsYSksYS5kaXNwYXRjaD1sLGE9WHMoITEpLG89V3MuYmluZChudWxsLG10LCExLGEucXVldWUpLGE9VGUoKSxuPXtzdGF0ZTplLGRpc3BhdGNoOm51bGwsYWN0aW9uOnQscGVuZGluZzpudWxsfSxhLnF1ZXVlPW4sbD12MS5iaW5kKG51bGwsbXQsbixvLGwpLG4uZGlzcGF0Y2g9bCxhLm1lbW9pemVkU3RhdGU9dCxbZSxsLCExXX1mdW5jdGlvbiBKZCh0KXt2YXIgZT1RdCgpO3JldHVybiBXZChlLE50LHQpfWZ1bmN0aW9uIFdkKHQsZSxsKXtpZihlPVlzKHQsZSxLZClbMF0sdD1WaShSbClbMF0sdHlwZW9mIGU9PSJvYmplY3QiJiZlIT09bnVsbCYmdHlwZW9mIGUudGhlbj09ImZ1bmN0aW9uIil0cnl7dmFyIGE9Tm8oZSl9Y2F0Y2godSl7dGhyb3cgdT09PUVvP0xpOnV9ZWxzZSBhPWU7ZT1RdCgpO3ZhciBuPWUucXVldWUsbz1uLmRpc3BhdGNoO3JldHVybiBsIT09ZS5tZW1vaXplZFN0YXRlJiYobXQuZmxhZ3N8PTIwNDgsem4oOSxYaSgpLGIxLmJpbmQobnVsbCxuLGwpLG51bGwpKSxbYSxvLHRdfWZ1bmN0aW9uIGIxKHQsZSl7dC5hY3Rpb249ZX1mdW5jdGlvbiAkZCh0KXt2YXIgZT1RdCgpLGw9TnQ7aWYobCE9PW51bGwpcmV0dXJuIFdkKGUsbCx0KTtRdCgpLGU9ZS5tZW1vaXplZFN0YXRlLGw9UXQoKTt2YXIgYT1sLnF1ZXVlLmRpc3BhdGNoO3JldHVybiBsLm1lbW9pemVkU3RhdGU9dCxbZSxhLCExXX1mdW5jdGlvbiB6bih0LGUsbCxhKXtyZXR1cm4gdD17dGFnOnQsY3JlYXRlOmwsZGVwczphLGluc3Q6ZSxuZXh0Om51bGx9LGU9bXQudXBkYXRlUXVldWUsZT09PW51bGwmJihlPUdzKCksbXQudXBkYXRlUXVldWU9ZSksbD1lLmxhc3RFZmZlY3QsbD09PW51bGw/ZS5sYXN0RWZmZWN0PXQubmV4dD10OihhPWwubmV4dCxsLm5leHQ9dCx0Lm5leHQ9YSxlLmxhc3RFZmZlY3Q9dCksdH1mdW5jdGlvbiBYaSgpe3JldHVybntkZXN0cm95OnZvaWQgMCxyZXNvdXJjZTp2b2lkIDB9fWZ1bmN0aW9uIEZkKCl7cmV0dXJuIFF0KCkubWVtb2l6ZWRTdGF0ZX1mdW5jdGlvbiBaaSh0LGUsbCxhKXt2YXIgbj1UZSgpO2E9YT09PXZvaWQgMD9udWxsOmEsbXQuZmxhZ3N8PXQsbi5tZW1vaXplZFN0YXRlPXpuKDF8ZSxYaSgpLGwsYSl9ZnVuY3Rpb24gem8odCxlLGwsYSl7dmFyIG49UXQoKTthPWE9PT12b2lkIDA/bnVsbDphO3ZhciBvPW4ubWVtb2l6ZWRTdGF0ZS5pbnN0O050IT09bnVsbCYmYSE9PW51bGwmJmpzKGEsTnQubWVtb2l6ZWRTdGF0ZS5kZXBzKT9uLm1lbW9pemVkU3RhdGU9em4oZSxvLGwsYSk6KG10LmZsYWdzfD10LG4ubWVtb2l6ZWRTdGF0ZT16bigxfGUsbyxsLGEpKX1mdW5jdGlvbiBJZCh0LGUpe1ppKDgzOTA2NTYsOCx0LGUpfWZ1bmN0aW9uIHRmKHQsZSl7em8oMjA0OCw4LHQsZSl9ZnVuY3Rpb24gZWYodCxlKXtyZXR1cm4gem8oNCwyLHQsZSl9ZnVuY3Rpb24gbGYodCxlKXtyZXR1cm4gem8oNCw0LHQsZSl9ZnVuY3Rpb24gYWYodCxlKXtpZih0eXBlb2YgZT09ImZ1bmN0aW9uIil7dD10KCk7dmFyIGw9ZSh0KTtyZXR1cm4gZnVuY3Rpb24oKXt0eXBlb2YgbD09ImZ1bmN0aW9uIj9sKCk6ZShudWxsKX19aWYoZSE9bnVsbClyZXR1cm4gdD10KCksZS5jdXJyZW50PXQsZnVuY3Rpb24oKXtlLmN1cnJlbnQ9bnVsbH19ZnVuY3Rpb24gbmYodCxlLGwpe2w9bCE9bnVsbD9sLmNvbmNhdChbdF0pOm51bGwsem8oNCw0LGFmLmJpbmQobnVsbCxlLHQpLGwpfWZ1bmN0aW9uIFFzKCl7fWZ1bmN0aW9uIG9mKHQsZSl7dmFyIGw9UXQoKTtlPWU9PT12b2lkIDA/bnVsbDplO3ZhciBhPWwubWVtb2l6ZWRTdGF0ZTtyZXR1cm4gZSE9PW51bGwmJmpzKGUsYVsxXSk/YVswXToobC5tZW1vaXplZFN0YXRlPVt0LGVdLHQpfWZ1bmN0aW9uIHJmKHQsZSl7dmFyIGw9UXQoKTtlPWU9PT12b2lkIDA/bnVsbDplO3ZhciBhPWwubWVtb2l6ZWRTdGF0ZTtpZihlIT09bnVsbCYmanMoZSxhWzFdKSlyZXR1cm4gYVswXTtpZihhPXQoKSwkYSl7SmUoITApO3RyeXt0KCl9ZmluYWxseXtKZSghMSl9fXJldHVybiBsLm1lbW9pemVkU3RhdGU9W2EsZV0sYX1mdW5jdGlvbiBLcyh0LGUsbCl7cmV0dXJuIGw9PT12b2lkIDB8fChsYSYxMDczNzQxODI0KSE9PTA/dC5tZW1vaXplZFN0YXRlPWU6KHQubWVtb2l6ZWRTdGF0ZT1sLHQ9dWgoKSxtdC5sYW5lc3w9dCxjYXw9dCxsKX1mdW5jdGlvbiBzZih0LGUsbCxhKXtyZXR1cm4gUmUobCxlKT9sOkFuLmN1cnJlbnQhPT1udWxsPyh0PUtzKHQsbCxhKSxSZSh0LGUpfHwobmU9ITApLHQpOihsYSY0Mik9PT0wPyhuZT0hMCx0Lm1lbW9pemVkU3RhdGU9bCk6KHQ9dWgoKSxtdC5sYW5lc3w9dCxjYXw9dCxlKX1mdW5jdGlvbiBjZih0LGUsbCxhLG4pe3ZhciBvPXEucDtxLnA9byE9PTAmJjg+bz9vOjg7dmFyIHU9QS5ULGY9e307QS5UPWYsV3ModCwhMSxlLGwpO3RyeXt2YXIgZz1uKCksUz1BLlM7aWYoUyE9PW51bGwmJlMoZixnKSxnIT09bnVsbCYmdHlwZW9mIGc9PSJvYmplY3QiJiZ0eXBlb2YgZy50aGVuPT0iZnVuY3Rpb24iKXt2YXIgTj1nMShnLGEpO19vKHQsZSxOLE9lKHQpKX1lbHNlIF9vKHQsZSxhLE9lKHQpKX1jYXRjaChrKXtfbyh0LGUse3RoZW46ZnVuY3Rpb24oKXt9LHN0YXR1czoicmVqZWN0ZWQiLHJlYXNvbjprfSxPZSgpKX1maW5hbGx5e3EucD1vLEEuVD11fX1mdW5jdGlvbiB4MSgpe31mdW5jdGlvbiBQcyh0LGUsbCxhKXtpZih0LnRhZyE9PTUpdGhyb3cgRXJyb3Iocyg0NzYpKTt2YXIgbj11Zih0KS5xdWV1ZTtjZih0LG4sZSxCLGw9PT1udWxsP3gxOmZ1bmN0aW9uKCl7cmV0dXJuIGRmKHQpLGwoYSl9KX1mdW5jdGlvbiB1Zih0KXt2YXIgZT10Lm1lbW9pemVkU3RhdGU7aWYoZSE9PW51bGwpcmV0dXJuIGU7ZT17bWVtb2l6ZWRTdGF0ZTpCLGJhc2VTdGF0ZTpCLGJhc2VRdWV1ZTpudWxsLHF1ZXVlOntwZW5kaW5nOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6UmwsbGFzdFJlbmRlcmVkU3RhdGU6Qn0sbmV4dDpudWxsfTt2YXIgbD17fTtyZXR1cm4gZS5uZXh0PXttZW1vaXplZFN0YXRlOmwsYmFzZVN0YXRlOmwsYmFzZVF1ZXVlOm51bGwscXVldWU6e3BlbmRpbmc6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjpSbCxsYXN0UmVuZGVyZWRTdGF0ZTpsfSxuZXh0Om51bGx9LHQubWVtb2l6ZWRTdGF0ZT1lLHQ9dC5hbHRlcm5hdGUsdCE9PW51bGwmJih0Lm1lbW9pemVkU3RhdGU9ZSksZX1mdW5jdGlvbiBkZih0KXt2YXIgZT11Zih0KS5uZXh0LnF1ZXVlO19vKHQsZSx7fSxPZSgpKX1mdW5jdGlvbiBKcygpe3JldHVybiB5ZShXbyl9ZnVuY3Rpb24gZmYoKXtyZXR1cm4gUXQoKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIGhmKCl7cmV0dXJuIFF0KCkubWVtb2l6ZWRTdGF0ZX1mdW5jdGlvbiB3MSh0KXtmb3IodmFyIGU9dC5yZXR1cm47ZSE9PW51bGw7KXtzd2l0Y2goZS50YWcpe2Nhc2UgMjQ6Y2FzZSAzOnZhciBsPU9lKCk7dD10YShsKTt2YXIgYT1lYShlLHQsbCk7YSE9PW51bGwmJihqZShhLGUsbCksRG8oYSxlLGwpKSxlPXtjYWNoZTpUcygpfSx0LnBheWxvYWQ9ZTtyZXR1cm59ZT1lLnJldHVybn19ZnVuY3Rpb24gUzEodCxlLGwpe3ZhciBhPU9lKCk7bD17bGFuZTphLHJldmVydExhbmU6MCxhY3Rpb246bCxoYXNFYWdlclN0YXRlOiExLGVhZ2VyU3RhdGU6bnVsbCxuZXh0Om51bGx9LFFpKHQpP2dmKGUsbCk6KGw9Z3ModCxlLGwsYSksbCE9PW51bGwmJihqZShsLHQsYSkscGYobCxlLGEpKSl9ZnVuY3Rpb24gbWYodCxlLGwpe3ZhciBhPU9lKCk7X28odCxlLGwsYSl9ZnVuY3Rpb24gX28odCxlLGwsYSl7dmFyIG49e2xhbmU6YSxyZXZlcnRMYW5lOjAsYWN0aW9uOmwsaGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTtpZihRaSh0KSlnZihlLG4pO2Vsc2V7dmFyIG89dC5hbHRlcm5hdGU7aWYodC5sYW5lcz09PTAmJihvPT09bnVsbHx8by5sYW5lcz09PTApJiYobz1lLmxhc3RSZW5kZXJlZFJlZHVjZXIsbyE9PW51bGwpKXRyeXt2YXIgdT1lLmxhc3RSZW5kZXJlZFN0YXRlLGY9byh1LGwpO2lmKG4uaGFzRWFnZXJTdGF0ZT0hMCxuLmVhZ2VyU3RhdGU9ZixSZShmLHUpKXJldHVybiBSaSh0LGUsbiwwKSxqdD09PW51bGwmJkFpKCksITF9Y2F0Y2h7fWZpbmFsbHl7fWlmKGw9Z3ModCxlLG4sYSksbCE9PW51bGwpcmV0dXJuIGplKGwsdCxhKSxwZihsLGUsYSksITB9cmV0dXJuITF9ZnVuY3Rpb24gV3ModCxlLGwsYSl7aWYoYT17bGFuZToyLHJldmVydExhbmU6QWMoKSxhY3Rpb246YSxoYXNFYWdlclN0YXRlOiExLGVhZ2VyU3RhdGU6bnVsbCxuZXh0Om51bGx9LFFpKHQpKXtpZihlKXRocm93IEVycm9yKHMoNDc5KSl9ZWxzZSBlPWdzKHQsbCxhLDIpLGUhPT1udWxsJiZqZShlLHQsMil9ZnVuY3Rpb24gUWkodCl7dmFyIGU9dC5hbHRlcm5hdGU7cmV0dXJuIHQ9PT1tdHx8ZSE9PW51bGwmJmU9PT1tdH1mdW5jdGlvbiBnZih0LGUpe1JuPUdpPSEwO3ZhciBsPXQucGVuZGluZztsPT09bnVsbD9lLm5leHQ9ZTooZS5uZXh0PWwubmV4dCxsLm5leHQ9ZSksdC5wZW5kaW5nPWV9ZnVuY3Rpb24gcGYodCxlLGwpe2lmKChsJjQxOTQwNDgpIT09MCl7dmFyIGE9ZS5sYW5lczthJj10LnBlbmRpbmdMYW5lcyxsfD1hLGUubGFuZXM9bCxnaSh0LGwpfX12YXIgS2k9e3JlYWRDb250ZXh0OnllLHVzZTpZaSx1c2VDYWxsYmFjazpxdCx1c2VDb250ZXh0OnF0LHVzZUVmZmVjdDpxdCx1c2VJbXBlcmF0aXZlSGFuZGxlOnF0LHVzZUxheW91dEVmZmVjdDpxdCx1c2VJbnNlcnRpb25FZmZlY3Q6cXQsdXNlTWVtbzpxdCx1c2VSZWR1Y2VyOnF0LHVzZVJlZjpxdCx1c2VTdGF0ZTpxdCx1c2VEZWJ1Z1ZhbHVlOnF0LHVzZURlZmVycmVkVmFsdWU6cXQsdXNlVHJhbnNpdGlvbjpxdCx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpxdCx1c2VJZDpxdCx1c2VIb3N0VHJhbnNpdGlvblN0YXR1czpxdCx1c2VGb3JtU3RhdGU6cXQsdXNlQWN0aW9uU3RhdGU6cXQsdXNlT3B0aW1pc3RpYzpxdCx1c2VNZW1vQ2FjaGU6cXQsdXNlQ2FjaGVSZWZyZXNoOnF0fSx5Zj17cmVhZENvbnRleHQ6eWUsdXNlOllpLHVzZUNhbGxiYWNrOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFRlKCkubWVtb2l6ZWRTdGF0ZT1bdCxlPT09dm9pZCAwP251bGw6ZV0sdH0sdXNlQ29udGV4dDp5ZSx1c2VFZmZlY3Q6SWQsdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbih0LGUsbCl7bD1sIT1udWxsP2wuY29uY2F0KFt0XSk6bnVsbCxaaSg0MTk0MzA4LDQsYWYuYmluZChudWxsLGUsdCksbCl9LHVzZUxheW91dEVmZmVjdDpmdW5jdGlvbih0LGUpe3JldHVybiBaaSg0MTk0MzA4LDQsdCxlKX0sdXNlSW5zZXJ0aW9uRWZmZWN0OmZ1bmN0aW9uKHQsZSl7WmkoNCwyLHQsZSl9LHVzZU1lbW86ZnVuY3Rpb24odCxlKXt2YXIgbD1UZSgpO2U9ZT09PXZvaWQgMD9udWxsOmU7dmFyIGE9dCgpO2lmKCRhKXtKZSghMCk7dHJ5e3QoKX1maW5hbGx5e0plKCExKX19cmV0dXJuIGwubWVtb2l6ZWRTdGF0ZT1bYSxlXSxhfSx1c2VSZWR1Y2VyOmZ1bmN0aW9uKHQsZSxsKXt2YXIgYT1UZSgpO2lmKGwhPT12b2lkIDApe3ZhciBuPWwoZSk7aWYoJGEpe0plKCEwKTt0cnl7bChlKX1maW5hbGx5e0plKCExKX19fWVsc2Ugbj1lO3JldHVybiBhLm1lbW9pemVkU3RhdGU9YS5iYXNlU3RhdGU9bix0PXtwZW5kaW5nOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6dCxsYXN0UmVuZGVyZWRTdGF0ZTpufSxhLnF1ZXVlPXQsdD10LmRpc3BhdGNoPVMxLmJpbmQobnVsbCxtdCx0KSxbYS5tZW1vaXplZFN0YXRlLHRdfSx1c2VSZWY6ZnVuY3Rpb24odCl7dmFyIGU9VGUoKTtyZXR1cm4gdD17Y3VycmVudDp0fSxlLm1lbW9pemVkU3RhdGU9dH0sdXNlU3RhdGU6ZnVuY3Rpb24odCl7dD1Ycyh0KTt2YXIgZT10LnF1ZXVlLGw9bWYuYmluZChudWxsLG10LGUpO3JldHVybiBlLmRpc3BhdGNoPWwsW3QubWVtb2l6ZWRTdGF0ZSxsXX0sdXNlRGVidWdWYWx1ZTpRcyx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGw9VGUoKTtyZXR1cm4gS3MobCx0LGUpfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9WHMoITEpO3JldHVybiB0PWNmLmJpbmQobnVsbCxtdCx0LnF1ZXVlLCEwLCExKSxUZSgpLm1lbW9pemVkU3RhdGU9dCxbITEsdF19LHVzZVN5bmNFeHRlcm5hbFN0b3JlOmZ1bmN0aW9uKHQsZSxsKXt2YXIgYT1tdCxuPVRlKCk7aWYoRXQpe2lmKGw9PT12b2lkIDApdGhyb3cgRXJyb3Iocyg0MDcpKTtsPWwoKX1lbHNle2lmKGw9ZSgpLGp0PT09bnVsbCl0aHJvdyBFcnJvcihzKDM0OSkpOyh3dCYxMjQpIT09MHx8TGQoYSxlLGwpfW4ubWVtb2l6ZWRTdGF0ZT1sO3ZhciBvPXt2YWx1ZTpsLGdldFNuYXBzaG90OmV9O3JldHVybiBuLnF1ZXVlPW8sSWQoVWQuYmluZChudWxsLGEsbyx0KSxbdF0pLGEuZmxhZ3N8PTIwNDgsem4oOSxYaSgpLEhkLmJpbmQobnVsbCxhLG8sbCxlKSxudWxsKSxsfSx1c2VJZDpmdW5jdGlvbigpe3ZhciB0PVRlKCksZT1qdC5pZGVudGlmaWVyUHJlZml4O2lmKEV0KXt2YXIgbD1EbCxhPVRsO2w9KGEmfigxPDwzMi0kdChhKS0xKSkudG9TdHJpbmcoMzIpK2wsZT0iwqsiK2UrIlIiK2wsbD1xaSsrLDA8bCYmKGUrPSJIIitsLnRvU3RyaW5nKDMyKSksZSs9IsK7In1lbHNlIGw9cDErKyxlPSLCqyIrZSsiciIrbC50b1N0cmluZygzMikrIsK7IjtyZXR1cm4gdC5tZW1vaXplZFN0YXRlPWV9LHVzZUhvc3RUcmFuc2l0aW9uU3RhdHVzOkpzLHVzZUZvcm1TdGF0ZTpQZCx1c2VBY3Rpb25TdGF0ZTpQZCx1c2VPcHRpbWlzdGljOmZ1bmN0aW9uKHQpe3ZhciBlPVRlKCk7ZS5tZW1vaXplZFN0YXRlPWUuYmFzZVN0YXRlPXQ7dmFyIGw9e3BlbmRpbmc6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjpudWxsLGxhc3RSZW5kZXJlZFN0YXRlOm51bGx9O3JldHVybiBlLnF1ZXVlPWwsZT1Xcy5iaW5kKG51bGwsbXQsITAsbCksbC5kaXNwYXRjaD1lLFt0LGVdfSx1c2VNZW1vQ2FjaGU6cXMsdXNlQ2FjaGVSZWZyZXNoOmZ1bmN0aW9uKCl7cmV0dXJuIFRlKCkubWVtb2l6ZWRTdGF0ZT13MS5iaW5kKG51bGwsbXQpfX0sdmY9e3JlYWRDb250ZXh0OnllLHVzZTpZaSx1c2VDYWxsYmFjazpvZix1c2VDb250ZXh0OnllLHVzZUVmZmVjdDp0Zix1c2VJbXBlcmF0aXZlSGFuZGxlOm5mLHVzZUluc2VydGlvbkVmZmVjdDplZix1c2VMYXlvdXRFZmZlY3Q6bGYsdXNlTWVtbzpyZix1c2VSZWR1Y2VyOlZpLHVzZVJlZjpGZCx1c2VTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBWaShSbCl9LHVzZURlYnVnVmFsdWU6UXMsdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBsPVF0KCk7cmV0dXJuIHNmKGwsTnQubWVtb2l6ZWRTdGF0ZSx0LGUpfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9VmkoUmwpWzBdLGU9UXQoKS5tZW1vaXplZFN0YXRlO3JldHVyblt0eXBlb2YgdD09ImJvb2xlYW4iP3Q6Tm8odCksZV19LHVzZVN5bmNFeHRlcm5hbFN0b3JlOkJkLHVzZUlkOmZmLHVzZUhvc3RUcmFuc2l0aW9uU3RhdHVzOkpzLHVzZUZvcm1TdGF0ZTpKZCx1c2VBY3Rpb25TdGF0ZTpKZCx1c2VPcHRpbWlzdGljOmZ1bmN0aW9uKHQsZSl7dmFyIGw9UXQoKTtyZXR1cm4gWWQobCxOdCx0LGUpfSx1c2VNZW1vQ2FjaGU6cXMsdXNlQ2FjaGVSZWZyZXNoOmhmfSxDMT17cmVhZENvbnRleHQ6eWUsdXNlOllpLHVzZUNhbGxiYWNrOm9mLHVzZUNvbnRleHQ6eWUsdXNlRWZmZWN0OnRmLHVzZUltcGVyYXRpdmVIYW5kbGU6bmYsdXNlSW5zZXJ0aW9uRWZmZWN0OmVmLHVzZUxheW91dEVmZmVjdDpsZix1c2VNZW1vOnJmLHVzZVJlZHVjZXI6VnMsdXNlUmVmOkZkLHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIFZzKFJsKX0sdXNlRGVidWdWYWx1ZTpRcyx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGw9UXQoKTtyZXR1cm4gTnQ9PT1udWxsP0tzKGwsdCxlKTpzZihsLE50Lm1lbW9pemVkU3RhdGUsdCxlKX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciB0PVZzKFJsKVswXSxlPVF0KCkubWVtb2l6ZWRTdGF0ZTtyZXR1cm5bdHlwZW9mIHQ9PSJib29sZWFuIj90Ok5vKHQpLGVdfSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpCZCx1c2VJZDpmZix1c2VIb3N0VHJhbnNpdGlvblN0YXR1czpKcyx1c2VGb3JtU3RhdGU6JGQsdXNlQWN0aW9uU3RhdGU6JGQsdXNlT3B0aW1pc3RpYzpmdW5jdGlvbih0LGUpe3ZhciBsPVF0KCk7cmV0dXJuIE50IT09bnVsbD9ZZChsLE50LHQsZSk6KGwuYmFzZVN0YXRlPXQsW3QsbC5xdWV1ZS5kaXNwYXRjaF0pfSx1c2VNZW1vQ2FjaGU6cXMsdXNlQ2FjaGVSZWZyZXNoOmhmfSxfbj1udWxsLGtvPTA7ZnVuY3Rpb24gUGkodCl7dmFyIGU9a287cmV0dXJuIGtvKz0xLF9uPT09bnVsbCYmKF9uPVtdKSxBZChfbix0LGUpfWZ1bmN0aW9uIE9vKHQsZSl7ZT1lLnByb3BzLnJlZix0LnJlZj1lIT09dm9pZCAwP2U6bnVsbH1mdW5jdGlvbiBKaSh0LGUpe3Rocm93IGUuJCR0eXBlb2Y9PT1qP0Vycm9yKHMoNTI1KSk6KHQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLEVycm9yKHMoMzEsdD09PSJbb2JqZWN0IE9iamVjdF0iPyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKGUpLmpvaW4oIiwgIikrIn0iOnQpKSl9ZnVuY3Rpb24gYmYodCl7dmFyIGU9dC5faW5pdDtyZXR1cm4gZSh0Ll9wYXlsb2FkKX1mdW5jdGlvbiB4Zih0KXtmdW5jdGlvbiBlKGIseSl7aWYodCl7dmFyIHc9Yi5kZWxldGlvbnM7dz09PW51bGw/KGIuZGVsZXRpb25zPVt5XSxiLmZsYWdzfD0xNik6dy5wdXNoKHkpfX1mdW5jdGlvbiBsKGIseSl7aWYoIXQpcmV0dXJuIG51bGw7Zm9yKDt5IT09bnVsbDspZShiLHkpLHk9eS5zaWJsaW5nO3JldHVybiBudWxsfWZ1bmN0aW9uIGEoYil7Zm9yKHZhciB5PW5ldyBNYXA7YiE9PW51bGw7KWIua2V5IT09bnVsbD95LnNldChiLmtleSxiKTp5LnNldChiLmluZGV4LGIpLGI9Yi5zaWJsaW5nO3JldHVybiB5fWZ1bmN0aW9uIG4oYix5KXtyZXR1cm4gYj1FbChiLHkpLGIuaW5kZXg9MCxiLnNpYmxpbmc9bnVsbCxifWZ1bmN0aW9uIG8oYix5LHcpe3JldHVybiBiLmluZGV4PXcsdD8odz1iLmFsdGVybmF0ZSx3IT09bnVsbD8odz13LmluZGV4LHc8eT8oYi5mbGFnc3w9NjcxMDg4NjYseSk6dyk6KGIuZmxhZ3N8PTY3MTA4ODY2LHkpKTooYi5mbGFnc3w9MTA0ODU3Nix5KX1mdW5jdGlvbiB1KGIpe3JldHVybiB0JiZiLmFsdGVybmF0ZT09PW51bGwmJihiLmZsYWdzfD02NzEwODg2NiksYn1mdW5jdGlvbiBmKGIseSx3LHope3JldHVybiB5PT09bnVsbHx8eS50YWchPT02Pyh5PXlzKHcsYi5tb2RlLHopLHkucmV0dXJuPWIseSk6KHk9bih5LHcpLHkucmV0dXJuPWIseSl9ZnVuY3Rpb24gZyhiLHksdyx6KXt2YXIgUD13LnR5cGU7cmV0dXJuIFA9PT0kP04oYix5LHcucHJvcHMuY2hpbGRyZW4seix3LmtleSk6eSE9PW51bGwmJih5LmVsZW1lbnRUeXBlPT09UHx8dHlwZW9mIFA9PSJvYmplY3QiJiZQIT09bnVsbCYmUC4kJHR5cGVvZj09PVYmJmJmKFApPT09eS50eXBlKT8oeT1uKHksdy5wcm9wcyksT28oeSx3KSx5LnJldHVybj1iLHkpOih5PXppKHcudHlwZSx3LmtleSx3LnByb3BzLG51bGwsYi5tb2RlLHopLE9vKHksdykseS5yZXR1cm49Yix5KX1mdW5jdGlvbiBTKGIseSx3LHope3JldHVybiB5PT09bnVsbHx8eS50YWchPT00fHx5LnN0YXRlTm9kZS5jb250YWluZXJJbmZvIT09dy5jb250YWluZXJJbmZvfHx5LnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbiE9PXcuaW1wbGVtZW50YXRpb24/KHk9dnModyxiLm1vZGUseikseS5yZXR1cm49Yix5KTooeT1uKHksdy5jaGlsZHJlbnx8W10pLHkucmV0dXJuPWIseSl9ZnVuY3Rpb24gTihiLHksdyx6LFApe3JldHVybiB5PT09bnVsbHx8eS50YWchPT03Pyh5PVZhKHcsYi5tb2RlLHosUCkseS5yZXR1cm49Yix5KTooeT1uKHksdykseS5yZXR1cm49Yix5KX1mdW5jdGlvbiBrKGIseSx3KXtpZih0eXBlb2YgeT09InN0cmluZyImJnkhPT0iInx8dHlwZW9mIHk9PSJudW1iZXIifHx0eXBlb2YgeT09ImJpZ2ludCIpcmV0dXJuIHk9eXMoIiIreSxiLm1vZGUsdykseS5yZXR1cm49Yix5O2lmKHR5cGVvZiB5PT0ib2JqZWN0IiYmeSE9PW51bGwpe3N3aXRjaCh5LiQkdHlwZW9mKXtjYXNlIEo6cmV0dXJuIHc9emkoeS50eXBlLHkua2V5LHkucHJvcHMsbnVsbCxiLm1vZGUsdyksT28odyx5KSx3LnJldHVybj1iLHc7Y2FzZSBhdDpyZXR1cm4geT12cyh5LGIubW9kZSx3KSx5LnJldHVybj1iLHk7Y2FzZSBWOnZhciB6PXkuX2luaXQ7cmV0dXJuIHk9eih5Ll9wYXlsb2FkKSxrKGIseSx3KX1pZihNdCh5KXx8QnQoeSkpcmV0dXJuIHk9VmEoeSxiLm1vZGUsdyxudWxsKSx5LnJldHVybj1iLHk7aWYodHlwZW9mIHkudGhlbj09ImZ1bmN0aW9uIilyZXR1cm4gayhiLFBpKHkpLHcpO2lmKHkuJCR0eXBlb2Y9PT1fKXJldHVybiBrKGIsamkoYix5KSx3KTtKaShiLHkpfXJldHVybiBudWxsfWZ1bmN0aW9uIEUoYix5LHcseil7dmFyIFA9eSE9PW51bGw/eS5rZXk6bnVsbDtpZih0eXBlb2Ygdz09InN0cmluZyImJnchPT0iInx8dHlwZW9mIHc9PSJudW1iZXIifHx0eXBlb2Ygdz09ImJpZ2ludCIpcmV0dXJuIFAhPT1udWxsP251bGw6ZihiLHksIiIrdyx6KTtpZih0eXBlb2Ygdz09Im9iamVjdCImJnchPT1udWxsKXtzd2l0Y2gody4kJHR5cGVvZil7Y2FzZSBKOnJldHVybiB3LmtleT09PVA/ZyhiLHksdyx6KTpudWxsO2Nhc2UgYXQ6cmV0dXJuIHcua2V5PT09UD9TKGIseSx3LHopOm51bGw7Y2FzZSBWOnJldHVybiBQPXcuX2luaXQsdz1QKHcuX3BheWxvYWQpLEUoYix5LHcseil9aWYoTXQodyl8fEJ0KHcpKXJldHVybiBQIT09bnVsbD9udWxsOk4oYix5LHcseixudWxsKTtpZih0eXBlb2Ygdy50aGVuPT0iZnVuY3Rpb24iKXJldHVybiBFKGIseSxQaSh3KSx6KTtpZih3LiQkdHlwZW9mPT09XylyZXR1cm4gRShiLHksamkoYix3KSx6KTtKaShiLHcpfXJldHVybiBudWxsfWZ1bmN0aW9uIFQoYix5LHcseixQKXtpZih0eXBlb2Ygej09InN0cmluZyImJnohPT0iInx8dHlwZW9mIHo9PSJudW1iZXIifHx0eXBlb2Ygej09ImJpZ2ludCIpcmV0dXJuIGI9Yi5nZXQodyl8fG51bGwsZih5LGIsIiIreixQKTtpZih0eXBlb2Ygej09Im9iamVjdCImJnohPT1udWxsKXtzd2l0Y2goei4kJHR5cGVvZil7Y2FzZSBKOnJldHVybiBiPWIuZ2V0KHoua2V5PT09bnVsbD93Onoua2V5KXx8bnVsbCxnKHksYix6LFApO2Nhc2UgYXQ6cmV0dXJuIGI9Yi5nZXQoei5rZXk9PT1udWxsP3c6ei5rZXkpfHxudWxsLFMoeSxiLHosUCk7Y2FzZSBWOnZhciBwdD16Ll9pbml0O3JldHVybiB6PXB0KHouX3BheWxvYWQpLFQoYix5LHcseixQKX1pZihNdCh6KXx8QnQoeikpcmV0dXJuIGI9Yi5nZXQodyl8fG51bGwsTih5LGIseixQLG51bGwpO2lmKHR5cGVvZiB6LnRoZW49PSJmdW5jdGlvbiIpcmV0dXJuIFQoYix5LHcsUGkoeiksUCk7aWYoei4kJHR5cGVvZj09PV8pcmV0dXJuIFQoYix5LHcsamkoeSx6KSxQKTtKaSh5LHopfXJldHVybiBudWxsfWZ1bmN0aW9uIGx0KGIseSx3LHope2Zvcih2YXIgUD1udWxsLHB0PW51bGwsVz15LGV0PXk9MCxpZT1udWxsO1chPT1udWxsJiZldDx3Lmxlbmd0aDtldCsrKXtXLmluZGV4PmV0PyhpZT1XLFc9bnVsbCk6aWU9Vy5zaWJsaW5nO3ZhciBDdD1FKGIsVyx3W2V0XSx6KTtpZihDdD09PW51bGwpe1c9PT1udWxsJiYoVz1pZSk7YnJlYWt9dCYmVyYmQ3QuYWx0ZXJuYXRlPT09bnVsbCYmZShiLFcpLHk9byhDdCx5LGV0KSxwdD09PW51bGw/UD1DdDpwdC5zaWJsaW5nPUN0LHB0PUN0LFc9aWV9aWYoZXQ9PT13Lmxlbmd0aClyZXR1cm4gbChiLFcpLEV0JiZaYShiLGV0KSxQO2lmKFc9PT1udWxsKXtmb3IoO2V0PHcubGVuZ3RoO2V0KyspVz1rKGIsd1tldF0seiksVyE9PW51bGwmJih5PW8oVyx5LGV0KSxwdD09PW51bGw/UD1XOnB0LnNpYmxpbmc9VyxwdD1XKTtyZXR1cm4gRXQmJlphKGIsZXQpLFB9Zm9yKFc9YShXKTtldDx3Lmxlbmd0aDtldCsrKWllPVQoVyxiLGV0LHdbZXRdLHopLGllIT09bnVsbCYmKHQmJmllLmFsdGVybmF0ZSE9PW51bGwmJlcuZGVsZXRlKGllLmtleT09PW51bGw/ZXQ6aWUua2V5KSx5PW8oaWUseSxldCkscHQ9PT1udWxsP1A9aWU6cHQuc2libGluZz1pZSxwdD1pZSk7cmV0dXJuIHQmJlcuZm9yRWFjaChmdW5jdGlvbih2YSl7cmV0dXJuIGUoYix2YSl9KSxFdCYmWmEoYixldCksUH1mdW5jdGlvbiBGKGIseSx3LHope2lmKHc9PW51bGwpdGhyb3cgRXJyb3IocygxNTEpKTtmb3IodmFyIFA9bnVsbCxwdD1udWxsLFc9eSxldD15PTAsaWU9bnVsbCxDdD13Lm5leHQoKTtXIT09bnVsbCYmIUN0LmRvbmU7ZXQrKyxDdD13Lm5leHQoKSl7Vy5pbmRleD5ldD8oaWU9VyxXPW51bGwpOmllPVcuc2libGluZzt2YXIgdmE9RShiLFcsQ3QudmFsdWUseik7aWYodmE9PT1udWxsKXtXPT09bnVsbCYmKFc9aWUpO2JyZWFrfXQmJlcmJnZhLmFsdGVybmF0ZT09PW51bGwmJmUoYixXKSx5PW8odmEseSxldCkscHQ9PT1udWxsP1A9dmE6cHQuc2libGluZz12YSxwdD12YSxXPWllfWlmKEN0LmRvbmUpcmV0dXJuIGwoYixXKSxFdCYmWmEoYixldCksUDtpZihXPT09bnVsbCl7Zm9yKDshQ3QuZG9uZTtldCsrLEN0PXcubmV4dCgpKUN0PWsoYixDdC52YWx1ZSx6KSxDdCE9PW51bGwmJih5PW8oQ3QseSxldCkscHQ9PT1udWxsP1A9Q3Q6cHQuc2libGluZz1DdCxwdD1DdCk7cmV0dXJuIEV0JiZaYShiLGV0KSxQfWZvcihXPWEoVyk7IUN0LmRvbmU7ZXQrKyxDdD13Lm5leHQoKSlDdD1UKFcsYixldCxDdC52YWx1ZSx6KSxDdCE9PW51bGwmJih0JiZDdC5hbHRlcm5hdGUhPT1udWxsJiZXLmRlbGV0ZShDdC5rZXk9PT1udWxsP2V0OkN0LmtleSkseT1vKEN0LHksZXQpLHB0PT09bnVsbD9QPUN0OnB0LnNpYmxpbmc9Q3QscHQ9Q3QpO3JldHVybiB0JiZXLmZvckVhY2goZnVuY3Rpb24oRXApe3JldHVybiBlKGIsRXApfSksRXQmJlphKGIsZXQpLFB9ZnVuY3Rpb24gX3QoYix5LHcseil7aWYodHlwZW9mIHc9PSJvYmplY3QiJiZ3IT09bnVsbCYmdy50eXBlPT09JCYmdy5rZXk9PT1udWxsJiYodz13LnByb3BzLmNoaWxkcmVuKSx0eXBlb2Ygdz09Im9iamVjdCImJnchPT1udWxsKXtzd2l0Y2gody4kJHR5cGVvZil7Y2FzZSBKOnQ6e2Zvcih2YXIgUD13LmtleTt5IT09bnVsbDspe2lmKHkua2V5PT09UCl7aWYoUD13LnR5cGUsUD09PSQpe2lmKHkudGFnPT09Nyl7bChiLHkuc2libGluZyksej1uKHksdy5wcm9wcy5jaGlsZHJlbiksei5yZXR1cm49YixiPXo7YnJlYWsgdH19ZWxzZSBpZih5LmVsZW1lbnRUeXBlPT09UHx8dHlwZW9mIFA9PSJvYmplY3QiJiZQIT09bnVsbCYmUC4kJHR5cGVvZj09PVYmJmJmKFApPT09eS50eXBlKXtsKGIseS5zaWJsaW5nKSx6PW4oeSx3LnByb3BzKSxPbyh6LHcpLHoucmV0dXJuPWIsYj16O2JyZWFrIHR9bChiLHkpO2JyZWFrfWVsc2UgZShiLHkpO3k9eS5zaWJsaW5nfXcudHlwZT09PSQ/KHo9VmEody5wcm9wcy5jaGlsZHJlbixiLm1vZGUseix3LmtleSksei5yZXR1cm49YixiPXopOih6PXppKHcudHlwZSx3LmtleSx3LnByb3BzLG51bGwsYi5tb2RlLHopLE9vKHosdyksei5yZXR1cm49YixiPXopfXJldHVybiB1KGIpO2Nhc2UgYXQ6dDp7Zm9yKFA9dy5rZXk7eSE9PW51bGw7KXtpZih5LmtleT09PVApaWYoeS50YWc9PT00JiZ5LnN0YXRlTm9kZS5jb250YWluZXJJbmZvPT09dy5jb250YWluZXJJbmZvJiZ5LnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbj09PXcuaW1wbGVtZW50YXRpb24pe2woYix5LnNpYmxpbmcpLHo9bih5LHcuY2hpbGRyZW58fFtdKSx6LnJldHVybj1iLGI9ejticmVhayB0fWVsc2V7bChiLHkpO2JyZWFrfWVsc2UgZShiLHkpO3k9eS5zaWJsaW5nfXo9dnModyxiLm1vZGUseiksei5yZXR1cm49YixiPXp9cmV0dXJuIHUoYik7Y2FzZSBWOnJldHVybiBQPXcuX2luaXQsdz1QKHcuX3BheWxvYWQpLF90KGIseSx3LHopfWlmKE10KHcpKXJldHVybiBsdChiLHksdyx6KTtpZihCdCh3KSl7aWYoUD1CdCh3KSx0eXBlb2YgUCE9ImZ1bmN0aW9uIil0aHJvdyBFcnJvcihzKDE1MCkpO3JldHVybiB3PVAuY2FsbCh3KSxGKGIseSx3LHopfWlmKHR5cGVvZiB3LnRoZW49PSJmdW5jdGlvbiIpcmV0dXJuIF90KGIseSxQaSh3KSx6KTtpZih3LiQkdHlwZW9mPT09XylyZXR1cm4gX3QoYix5LGppKGIsdykseik7SmkoYix3KX1yZXR1cm4gdHlwZW9mIHc9PSJzdHJpbmciJiZ3IT09IiJ8fHR5cGVvZiB3PT0ibnVtYmVyInx8dHlwZW9mIHc9PSJiaWdpbnQiPyh3PSIiK3cseSE9PW51bGwmJnkudGFnPT09Nj8obChiLHkuc2libGluZyksej1uKHksdyksei5yZXR1cm49YixiPXopOihsKGIseSksej15cyh3LGIubW9kZSx6KSx6LnJldHVybj1iLGI9eiksdShiKSk6bChiLHkpfXJldHVybiBmdW5jdGlvbihiLHksdyx6KXt0cnl7a289MDt2YXIgUD1fdChiLHksdyx6KTtyZXR1cm4gX249bnVsbCxQfWNhdGNoKFcpe2lmKFc9PT1Fb3x8Vz09PUxpKXRocm93IFc7dmFyIHB0PU5lKDI5LFcsbnVsbCxiLm1vZGUpO3JldHVybiBwdC5sYW5lcz16LHB0LnJldHVybj1iLHB0fWZpbmFsbHl7fX19dmFyIGtuPXhmKCEwKSx3Zj14ZighMSksWGU9TyhudWxsKSx1bD1udWxsO2Z1bmN0aW9uIGFhKHQpe3ZhciBlPXQuYWx0ZXJuYXRlO0coSXQsSXQuY3VycmVudCYxKSxHKFhlLHQpLHVsPT09bnVsbCYmKGU9PT1udWxsfHxBbi5jdXJyZW50IT09bnVsbHx8ZS5tZW1vaXplZFN0YXRlIT09bnVsbCkmJih1bD10KX1mdW5jdGlvbiBTZih0KXtpZih0LnRhZz09PTIyKXtpZihHKEl0LEl0LmN1cnJlbnQpLEcoWGUsdCksdWw9PT1udWxsKXt2YXIgZT10LmFsdGVybmF0ZTtlIT09bnVsbCYmZS5tZW1vaXplZFN0YXRlIT09bnVsbCYmKHVsPXQpfX1lbHNlIG5hKCl9ZnVuY3Rpb24gbmEoKXtHKEl0LEl0LmN1cnJlbnQpLEcoWGUsWGUuY3VycmVudCl9ZnVuY3Rpb24gTmwodCl7WChYZSksdWw9PT10JiYodWw9bnVsbCksWChJdCl9dmFyIEl0PU8oMCk7ZnVuY3Rpb24gV2kodCl7Zm9yKHZhciBlPXQ7ZSE9PW51bGw7KXtpZihlLnRhZz09PTEzKXt2YXIgbD1lLm1lbW9pemVkU3RhdGU7aWYobCE9PW51bGwmJihsPWwuZGVoeWRyYXRlZCxsPT09bnVsbHx8bC5kYXRhPT09IiQ/Inx8R2MobCkpKXJldHVybiBlfWVsc2UgaWYoZS50YWc9PT0xOSYmZS5tZW1vaXplZFByb3BzLnJldmVhbE9yZGVyIT09dm9pZCAwKXtpZigoZS5mbGFncyYxMjgpIT09MClyZXR1cm4gZX1lbHNlIGlmKGUuY2hpbGQhPT1udWxsKXtlLmNoaWxkLnJldHVybj1lLGU9ZS5jaGlsZDtjb250aW51ZX1pZihlPT09dClicmVhaztmb3IoO2Uuc2libGluZz09PW51bGw7KXtpZihlLnJldHVybj09PW51bGx8fGUucmV0dXJuPT09dClyZXR1cm4gbnVsbDtlPWUucmV0dXJufWUuc2libGluZy5yZXR1cm49ZS5yZXR1cm4sZT1lLnNpYmxpbmd9cmV0dXJuIG51bGx9ZnVuY3Rpb24gJHModCxlLGwsYSl7ZT10Lm1lbW9pemVkU3RhdGUsbD1sKGEsZSksbD1sPT1udWxsP2U6RCh7fSxlLGwpLHQubWVtb2l6ZWRTdGF0ZT1sLHQubGFuZXM9PT0wJiYodC51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9bCl9dmFyIEZzPXtlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24odCxlLGwpe3Q9dC5fcmVhY3RJbnRlcm5hbHM7dmFyIGE9T2UoKSxuPXRhKGEpO24ucGF5bG9hZD1lLGwhPW51bGwmJihuLmNhbGxiYWNrPWwpLGU9ZWEodCxuLGEpLGUhPT1udWxsJiYoamUoZSx0LGEpLERvKGUsdCxhKSl9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24odCxlLGwpe3Q9dC5fcmVhY3RJbnRlcm5hbHM7dmFyIGE9T2UoKSxuPXRhKGEpO24udGFnPTEsbi5wYXlsb2FkPWUsbCE9bnVsbCYmKG4uY2FsbGJhY2s9bCksZT1lYSh0LG4sYSksZSE9PW51bGwmJihqZShlLHQsYSksRG8oZSx0LGEpKX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKHQsZSl7dD10Ll9yZWFjdEludGVybmFsczt2YXIgbD1PZSgpLGE9dGEobCk7YS50YWc9MixlIT1udWxsJiYoYS5jYWxsYmFjaz1lKSxlPWVhKHQsYSxsKSxlIT09bnVsbCYmKGplKGUsdCxsKSxEbyhlLHQsbCkpfX07ZnVuY3Rpb24gQ2YodCxlLGwsYSxuLG8sdSl7cmV0dXJuIHQ9dC5zdGF0ZU5vZGUsdHlwZW9mIHQuc2hvdWxkQ29tcG9uZW50VXBkYXRlPT0iZnVuY3Rpb24iP3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKGEsbyx1KTplLnByb3RvdHlwZSYmZS5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQ/IXBvKGwsYSl8fCFwbyhuLG8pOiEwfWZ1bmN0aW9uIEVmKHQsZSxsLGEpe3Q9ZS5zdGF0ZSx0eXBlb2YgZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzPT0iZnVuY3Rpb24iJiZlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobCxhKSx0eXBlb2YgZS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz09ImZ1bmN0aW9uIiYmZS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhsLGEpLGUuc3RhdGUhPT10JiZGcy5lbnF1ZXVlUmVwbGFjZVN0YXRlKGUsZS5zdGF0ZSxudWxsKX1mdW5jdGlvbiBGYSh0LGUpe3ZhciBsPWU7aWYoInJlZiJpbiBlKXtsPXt9O2Zvcih2YXIgYSBpbiBlKWEhPT0icmVmIiYmKGxbYV09ZVthXSl9aWYodD10LmRlZmF1bHRQcm9wcyl7bD09PWUmJihsPUQoe30sbCkpO2Zvcih2YXIgbiBpbiB0KWxbbl09PT12b2lkIDAmJihsW25dPXRbbl0pfXJldHVybiBsfXZhciAkaT10eXBlb2YgcmVwb3J0RXJyb3I9PSJmdW5jdGlvbiI/cmVwb3J0RXJyb3I6ZnVuY3Rpb24odCl7aWYodHlwZW9mIHdpbmRvdz09Im9iamVjdCImJnR5cGVvZiB3aW5kb3cuRXJyb3JFdmVudD09ImZ1bmN0aW9uIil7dmFyIGU9bmV3IHdpbmRvdy5FcnJvckV2ZW50KCJlcnJvciIse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxtZXNzYWdlOnR5cGVvZiB0PT0ib2JqZWN0IiYmdCE9PW51bGwmJnR5cGVvZiB0Lm1lc3NhZ2U9PSJzdHJpbmciP1N0cmluZyh0Lm1lc3NhZ2UpOlN0cmluZyh0KSxlcnJvcjp0fSk7aWYoIXdpbmRvdy5kaXNwYXRjaEV2ZW50KGUpKXJldHVybn1lbHNlIGlmKHR5cGVvZiBwcm9jZXNzPT0ib2JqZWN0IiYmdHlwZW9mIHByb2Nlc3MuZW1pdD09ImZ1bmN0aW9uIil7cHJvY2Vzcy5lbWl0KCJ1bmNhdWdodEV4Y2VwdGlvbiIsdCk7cmV0dXJufWNvbnNvbGUuZXJyb3IodCl9O2Z1bmN0aW9uIFRmKHQpeyRpKHQpfWZ1bmN0aW9uIERmKHQpe2NvbnNvbGUuZXJyb3IodCl9ZnVuY3Rpb24gTWYodCl7JGkodCl9ZnVuY3Rpb24gRmkodCxlKXt0cnl7dmFyIGw9dC5vblVuY2F1Z2h0RXJyb3I7bChlLnZhbHVlLHtjb21wb25lbnRTdGFjazplLnN0YWNrfSl9Y2F0Y2goYSl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGF9KX19ZnVuY3Rpb24gQWYodCxlLGwpe3RyeXt2YXIgYT10Lm9uQ2F1Z2h0RXJyb3I7YShsLnZhbHVlLHtjb21wb25lbnRTdGFjazpsLnN0YWNrLGVycm9yQm91bmRhcnk6ZS50YWc9PT0xP2Uuc3RhdGVOb2RlOm51bGx9KX1jYXRjaChuKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgbn0pfX1mdW5jdGlvbiBJcyh0LGUsbCl7cmV0dXJuIGw9dGEobCksbC50YWc9MyxsLnBheWxvYWQ9e2VsZW1lbnQ6bnVsbH0sbC5jYWxsYmFjaz1mdW5jdGlvbigpe0ZpKHQsZSl9LGx9ZnVuY3Rpb24gUmYodCl7cmV0dXJuIHQ9dGEodCksdC50YWc9Myx0fWZ1bmN0aW9uIE5mKHQsZSxsLGEpe3ZhciBuPWwudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I7aWYodHlwZW9mIG49PSJmdW5jdGlvbiIpe3ZhciBvPWEudmFsdWU7dC5wYXlsb2FkPWZ1bmN0aW9uKCl7cmV0dXJuIG4obyl9LHQuY2FsbGJhY2s9ZnVuY3Rpb24oKXtBZihlLGwsYSl9fXZhciB1PWwuc3RhdGVOb2RlO3UhPT1udWxsJiZ0eXBlb2YgdS5jb21wb25lbnREaWRDYXRjaD09ImZ1bmN0aW9uIiYmKHQuY2FsbGJhY2s9ZnVuY3Rpb24oKXtBZihlLGwsYSksdHlwZW9mIG4hPSJmdW5jdGlvbiImJih1YT09PW51bGw/dWE9bmV3IFNldChbdGhpc10pOnVhLmFkZCh0aGlzKSk7dmFyIGY9YS5zdGFjazt0aGlzLmNvbXBvbmVudERpZENhdGNoKGEudmFsdWUse2NvbXBvbmVudFN0YWNrOmYhPT1udWxsP2Y6IiJ9KX0pfWZ1bmN0aW9uIEUxKHQsZSxsLGEsbil7aWYobC5mbGFnc3w9MzI3NjgsYSE9PW51bGwmJnR5cGVvZiBhPT0ib2JqZWN0IiYmdHlwZW9mIGEudGhlbj09ImZ1bmN0aW9uIil7aWYoZT1sLmFsdGVybmF0ZSxlIT09bnVsbCYmd28oZSxsLG4sITApLGw9WGUuY3VycmVudCxsIT09bnVsbCl7c3dpdGNoKGwudGFnKXtjYXNlIDEzOnJldHVybiB1bD09PW51bGw/Q2MoKTpsLmFsdGVybmF0ZT09PW51bGwmJkd0PT09MCYmKEd0PTMpLGwuZmxhZ3MmPS0yNTcsbC5mbGFnc3w9NjU1MzYsbC5sYW5lcz1uLGE9PT1Bcz9sLmZsYWdzfD0xNjM4NDooZT1sLnVwZGF0ZVF1ZXVlLGU9PT1udWxsP2wudXBkYXRlUXVldWU9bmV3IFNldChbYV0pOmUuYWRkKGEpLFRjKHQsYSxuKSksITE7Y2FzZSAyMjpyZXR1cm4gbC5mbGFnc3w9NjU1MzYsYT09PUFzP2wuZmxhZ3N8PTE2Mzg0OihlPWwudXBkYXRlUXVldWUsZT09PW51bGw/KGU9e3RyYW5zaXRpb25zOm51bGwsbWFya2VySW5zdGFuY2VzOm51bGwscmV0cnlRdWV1ZTpuZXcgU2V0KFthXSl9LGwudXBkYXRlUXVldWU9ZSk6KGw9ZS5yZXRyeVF1ZXVlLGw9PT1udWxsP2UucmV0cnlRdWV1ZT1uZXcgU2V0KFthXSk6bC5hZGQoYSkpLFRjKHQsYSxuKSksITF9dGhyb3cgRXJyb3Iocyg0MzUsbC50YWcpKX1yZXR1cm4gVGModCxhLG4pLENjKCksITF9aWYoRXQpcmV0dXJuIGU9WGUuY3VycmVudCxlIT09bnVsbD8oKGUuZmxhZ3MmNjU1MzYpPT09MCYmKGUuZmxhZ3N8PTI1NiksZS5mbGFnc3w9NjU1MzYsZS5sYW5lcz1uLGEhPT13cyYmKHQ9RXJyb3Iocyg0MjIpLHtjYXVzZTphfSkseG8oR2UodCxsKSkpKTooYSE9PXdzJiYoZT1FcnJvcihzKDQyMykse2NhdXNlOmF9KSx4byhHZShlLGwpKSksdD10LmN1cnJlbnQuYWx0ZXJuYXRlLHQuZmxhZ3N8PTY1NTM2LG4mPS1uLHQubGFuZXN8PW4sYT1HZShhLGwpLG49SXModC5zdGF0ZU5vZGUsYSxuKSx6cyh0LG4pLEd0IT09NCYmKEd0PTIpKSwhMTt2YXIgbz1FcnJvcihzKDUyMCkse2NhdXNlOmF9KTtpZihvPUdlKG8sbCkscW89PT1udWxsP3FvPVtvXTpxby5wdXNoKG8pLEd0IT09NCYmKEd0PTIpLGU9PT1udWxsKXJldHVybiEwO2E9R2UoYSxsKSxsPWU7ZG97c3dpdGNoKGwudGFnKXtjYXNlIDM6cmV0dXJuIGwuZmxhZ3N8PTY1NTM2LHQ9biYtbixsLmxhbmVzfD10LHQ9SXMobC5zdGF0ZU5vZGUsYSx0KSx6cyhsLHQpLCExO2Nhc2UgMTppZihlPWwudHlwZSxvPWwuc3RhdGVOb2RlLChsLmZsYWdzJjEyOCk9PT0wJiYodHlwZW9mIGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yPT0iZnVuY3Rpb24ifHxvIT09bnVsbCYmdHlwZW9mIG8uY29tcG9uZW50RGlkQ2F0Y2g9PSJmdW5jdGlvbiImJih1YT09PW51bGx8fCF1YS5oYXMobykpKSlyZXR1cm4gbC5mbGFnc3w9NjU1MzYsbiY9LW4sbC5sYW5lc3w9bixuPVJmKG4pLE5mKG4sdCxsLGEpLHpzKGwsbiksITF9bD1sLnJldHVybn13aGlsZShsIT09bnVsbCk7cmV0dXJuITF9dmFyIHpmPUVycm9yKHMoNDYxKSksbmU9ITE7ZnVuY3Rpb24gdWUodCxlLGwsYSl7ZS5jaGlsZD10PT09bnVsbD93ZihlLG51bGwsbCxhKTprbihlLHQuY2hpbGQsbCxhKX1mdW5jdGlvbiBfZih0LGUsbCxhLG4pe2w9bC5yZW5kZXI7dmFyIG89ZS5yZWY7aWYoInJlZiJpbiBhKXt2YXIgdT17fTtmb3IodmFyIGYgaW4gYSlmIT09InJlZiImJih1W2ZdPWFbZl0pfWVsc2UgdT1hO3JldHVybiBKYShlKSxhPUJzKHQsZSxsLHUsbyxuKSxmPUxzKCksdCE9PW51bGwmJiFuZT8oSHModCxlLG4pLHpsKHQsZSxuKSk6KEV0JiZmJiZicyhlKSxlLmZsYWdzfD0xLHVlKHQsZSxhLG4pLGUuY2hpbGQpfWZ1bmN0aW9uIGtmKHQsZSxsLGEsbil7aWYodD09PW51bGwpe3ZhciBvPWwudHlwZTtyZXR1cm4gdHlwZW9mIG89PSJmdW5jdGlvbiImJiFwcyhvKSYmby5kZWZhdWx0UHJvcHM9PT12b2lkIDAmJmwuY29tcGFyZT09PW51bGw/KGUudGFnPTE1LGUudHlwZT1vLE9mKHQsZSxvLGEsbikpOih0PXppKGwudHlwZSxudWxsLGEsZSxlLm1vZGUsbiksdC5yZWY9ZS5yZWYsdC5yZXR1cm49ZSxlLmNoaWxkPXQpfWlmKG89dC5jaGlsZCwhcmModCxuKSl7dmFyIHU9by5tZW1vaXplZFByb3BzO2lmKGw9bC5jb21wYXJlLGw9bCE9PW51bGw/bDpwbyxsKHUsYSkmJnQucmVmPT09ZS5yZWYpcmV0dXJuIHpsKHQsZSxuKX1yZXR1cm4gZS5mbGFnc3w9MSx0PUVsKG8sYSksdC5yZWY9ZS5yZWYsdC5yZXR1cm49ZSxlLmNoaWxkPXR9ZnVuY3Rpb24gT2YodCxlLGwsYSxuKXtpZih0IT09bnVsbCl7dmFyIG89dC5tZW1vaXplZFByb3BzO2lmKHBvKG8sYSkmJnQucmVmPT09ZS5yZWYpaWYobmU9ITEsZS5wZW5kaW5nUHJvcHM9YT1vLHJjKHQsbikpKHQuZmxhZ3MmMTMxMDcyKSE9PTAmJihuZT0hMCk7ZWxzZSByZXR1cm4gZS5sYW5lcz10LmxhbmVzLHpsKHQsZSxuKX1yZXR1cm4gdGModCxlLGwsYSxuKX1mdW5jdGlvbiBqZih0LGUsbCl7dmFyIGE9ZS5wZW5kaW5nUHJvcHMsbj1hLmNoaWxkcmVuLG89dCE9PW51bGw/dC5tZW1vaXplZFN0YXRlOm51bGw7aWYoYS5tb2RlPT09ImhpZGRlbiIpe2lmKChlLmZsYWdzJjEyOCkhPT0wKXtpZihhPW8hPT1udWxsP28uYmFzZUxhbmVzfGw6bCx0IT09bnVsbCl7Zm9yKG49ZS5jaGlsZD10LmNoaWxkLG89MDtuIT09bnVsbDspbz1vfG4ubGFuZXN8bi5jaGlsZExhbmVzLG49bi5zaWJsaW5nO2UuY2hpbGRMYW5lcz1vJn5hfWVsc2UgZS5jaGlsZExhbmVzPTAsZS5jaGlsZD1udWxsO3JldHVybiBCZih0LGUsYSxsKX1pZigobCY1MzY4NzA5MTIpIT09MCllLm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczowLGNhY2hlUG9vbDpudWxsfSx0IT09bnVsbCYmQmkoZSxvIT09bnVsbD9vLmNhY2hlUG9vbDpudWxsKSxvIT09bnVsbD9rZChlLG8pOmtzKCksU2YoZSk7ZWxzZSByZXR1cm4gZS5sYW5lcz1lLmNoaWxkTGFuZXM9NTM2ODcwOTEyLEJmKHQsZSxvIT09bnVsbD9vLmJhc2VMYW5lc3xsOmwsbCl9ZWxzZSBvIT09bnVsbD8oQmkoZSxvLmNhY2hlUG9vbCksa2QoZSxvKSxuYSgpLGUubWVtb2l6ZWRTdGF0ZT1udWxsKToodCE9PW51bGwmJkJpKGUsbnVsbCksa3MoKSxuYSgpKTtyZXR1cm4gdWUodCxlLG4sbCksZS5jaGlsZH1mdW5jdGlvbiBCZih0LGUsbCxhKXt2YXIgbj1NcygpO3JldHVybiBuPW49PT1udWxsP251bGw6e3BhcmVudDpGdC5fY3VycmVudFZhbHVlLHBvb2w6bn0sZS5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6bCxjYWNoZVBvb2w6bn0sdCE9PW51bGwmJkJpKGUsbnVsbCksa3MoKSxTZihlKSx0IT09bnVsbCYmd28odCxlLGEsITApLG51bGx9ZnVuY3Rpb24gSWkodCxlKXt2YXIgbD1lLnJlZjtpZihsPT09bnVsbCl0IT09bnVsbCYmdC5yZWYhPT1udWxsJiYoZS5mbGFnc3w9NDE5NDgxNik7ZWxzZXtpZih0eXBlb2YgbCE9ImZ1bmN0aW9uIiYmdHlwZW9mIGwhPSJvYmplY3QiKXRocm93IEVycm9yKHMoMjg0KSk7KHQ9PT1udWxsfHx0LnJlZiE9PWwpJiYoZS5mbGFnc3w9NDE5NDgxNil9fWZ1bmN0aW9uIHRjKHQsZSxsLGEsbil7cmV0dXJuIEphKGUpLGw9QnModCxlLGwsYSx2b2lkIDAsbiksYT1McygpLHQhPT1udWxsJiYhbmU/KEhzKHQsZSxuKSx6bCh0LGUsbikpOihFdCYmYSYmYnMoZSksZS5mbGFnc3w9MSx1ZSh0LGUsbCxuKSxlLmNoaWxkKX1mdW5jdGlvbiBMZih0LGUsbCxhLG4sbyl7cmV0dXJuIEphKGUpLGUudXBkYXRlUXVldWU9bnVsbCxsPWpkKGUsYSxsLG4pLE9kKHQpLGE9THMoKSx0IT09bnVsbCYmIW5lPyhIcyh0LGUsbyksemwodCxlLG8pKTooRXQmJmEmJmJzKGUpLGUuZmxhZ3N8PTEsdWUodCxlLGwsbyksZS5jaGlsZCl9ZnVuY3Rpb24gSGYodCxlLGwsYSxuKXtpZihKYShlKSxlLnN0YXRlTm9kZT09PW51bGwpe3ZhciBvPUNuLHU9bC5jb250ZXh0VHlwZTt0eXBlb2YgdT09Im9iamVjdCImJnUhPT1udWxsJiYobz15ZSh1KSksbz1uZXcgbChhLG8pLGUubWVtb2l6ZWRTdGF0ZT1vLnN0YXRlIT09bnVsbCYmby5zdGF0ZSE9PXZvaWQgMD9vLnN0YXRlOm51bGwsby51cGRhdGVyPUZzLGUuc3RhdGVOb2RlPW8sby5fcmVhY3RJbnRlcm5hbHM9ZSxvPWUuc3RhdGVOb2RlLG8ucHJvcHM9YSxvLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSxvLnJlZnM9e30sUnMoZSksdT1sLmNvbnRleHRUeXBlLG8uY29udGV4dD10eXBlb2YgdT09Im9iamVjdCImJnUhPT1udWxsP3llKHUpOkNuLG8uc3RhdGU9ZS5tZW1vaXplZFN0YXRlLHU9bC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMsdHlwZW9mIHU9PSJmdW5jdGlvbiImJigkcyhlLGwsdSxhKSxvLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSksdHlwZW9mIGwuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPT0iZnVuY3Rpb24ifHx0eXBlb2Ygby5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZT09ImZ1bmN0aW9uInx8dHlwZW9mIG8uVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCE9ImZ1bmN0aW9uIiYmdHlwZW9mIG8uY29tcG9uZW50V2lsbE1vdW50IT0iZnVuY3Rpb24ifHwodT1vLnN0YXRlLHR5cGVvZiBvLmNvbXBvbmVudFdpbGxNb3VudD09ImZ1bmN0aW9uIiYmby5jb21wb25lbnRXaWxsTW91bnQoKSx0eXBlb2Ygby5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50PT0iZnVuY3Rpb24iJiZvLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSx1IT09by5zdGF0ZSYmRnMuZW5xdWV1ZVJlcGxhY2VTdGF0ZShvLG8uc3RhdGUsbnVsbCksQW8oZSxhLG8sbiksTW8oKSxvLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSksdHlwZW9mIG8uY29tcG9uZW50RGlkTW91bnQ9PSJmdW5jdGlvbiImJihlLmZsYWdzfD00MTk0MzA4KSxhPSEwfWVsc2UgaWYodD09PW51bGwpe289ZS5zdGF0ZU5vZGU7dmFyIGY9ZS5tZW1vaXplZFByb3BzLGc9RmEobCxmKTtvLnByb3BzPWc7dmFyIFM9by5jb250ZXh0LE49bC5jb250ZXh0VHlwZTt1PUNuLHR5cGVvZiBOPT0ib2JqZWN0IiYmTiE9PW51bGwmJih1PXllKE4pKTt2YXIgaz1sLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcztOPXR5cGVvZiBrPT0iZnVuY3Rpb24ifHx0eXBlb2Ygby5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZT09ImZ1bmN0aW9uIixmPWUucGVuZGluZ1Byb3BzIT09ZixOfHx0eXBlb2Ygby5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyE9ImZ1bmN0aW9uIiYmdHlwZW9mIG8uY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyE9ImZ1bmN0aW9uInx8KGZ8fFMhPT11KSYmRWYoZSxvLGEsdSksSWw9ITE7dmFyIEU9ZS5tZW1vaXplZFN0YXRlO28uc3RhdGU9RSxBbyhlLGEsbyxuKSxNbygpLFM9ZS5tZW1vaXplZFN0YXRlLGZ8fEUhPT1TfHxJbD8odHlwZW9mIGs9PSJmdW5jdGlvbiImJigkcyhlLGwsayxhKSxTPWUubWVtb2l6ZWRTdGF0ZSksKGc9SWx8fENmKGUsbCxnLGEsRSxTLHUpKT8oTnx8dHlwZW9mIG8uVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCE9ImZ1bmN0aW9uIiYmdHlwZW9mIG8uY29tcG9uZW50V2lsbE1vdW50IT0iZnVuY3Rpb24ifHwodHlwZW9mIG8uY29tcG9uZW50V2lsbE1vdW50PT0iZnVuY3Rpb24iJiZvLmNvbXBvbmVudFdpbGxNb3VudCgpLHR5cGVvZiBvLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQ9PSJmdW5jdGlvbiImJm8uVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpKSx0eXBlb2Ygby5jb21wb25lbnREaWRNb3VudD09ImZ1bmN0aW9uIiYmKGUuZmxhZ3N8PTQxOTQzMDgpKToodHlwZW9mIG8uY29tcG9uZW50RGlkTW91bnQ9PSJmdW5jdGlvbiImJihlLmZsYWdzfD00MTk0MzA4KSxlLm1lbW9pemVkUHJvcHM9YSxlLm1lbW9pemVkU3RhdGU9Uyksby5wcm9wcz1hLG8uc3RhdGU9UyxvLmNvbnRleHQ9dSxhPWcpOih0eXBlb2Ygby5jb21wb25lbnREaWRNb3VudD09ImZ1bmN0aW9uIiYmKGUuZmxhZ3N8PTQxOTQzMDgpLGE9ITEpfWVsc2V7bz1lLnN0YXRlTm9kZSxOcyh0LGUpLHU9ZS5tZW1vaXplZFByb3BzLE49RmEobCx1KSxvLnByb3BzPU4saz1lLnBlbmRpbmdQcm9wcyxFPW8uY29udGV4dCxTPWwuY29udGV4dFR5cGUsZz1Dbix0eXBlb2YgUz09Im9iamVjdCImJlMhPT1udWxsJiYoZz15ZShTKSksZj1sLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcywoUz10eXBlb2YgZj09ImZ1bmN0aW9uInx8dHlwZW9mIG8uZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU9PSJmdW5jdGlvbiIpfHx0eXBlb2Ygby5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyE9ImZ1bmN0aW9uIiYmdHlwZW9mIG8uY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyE9ImZ1bmN0aW9uInx8KHUhPT1rfHxFIT09ZykmJkVmKGUsbyxhLGcpLElsPSExLEU9ZS5tZW1vaXplZFN0YXRlLG8uc3RhdGU9RSxBbyhlLGEsbyxuKSxNbygpO3ZhciBUPWUubWVtb2l6ZWRTdGF0ZTt1IT09a3x8RSE9PVR8fElsfHx0IT09bnVsbCYmdC5kZXBlbmRlbmNpZXMhPT1udWxsJiZPaSh0LmRlcGVuZGVuY2llcyk/KHR5cGVvZiBmPT0iZnVuY3Rpb24iJiYoJHMoZSxsLGYsYSksVD1lLm1lbW9pemVkU3RhdGUpLChOPUlsfHxDZihlLGwsTixhLEUsVCxnKXx8dCE9PW51bGwmJnQuZGVwZW5kZW5jaWVzIT09bnVsbCYmT2kodC5kZXBlbmRlbmNpZXMpKT8oU3x8dHlwZW9mIG8uVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUhPSJmdW5jdGlvbiImJnR5cGVvZiBvLmNvbXBvbmVudFdpbGxVcGRhdGUhPSJmdW5jdGlvbiJ8fCh0eXBlb2Ygby5jb21wb25lbnRXaWxsVXBkYXRlPT0iZnVuY3Rpb24iJiZvLmNvbXBvbmVudFdpbGxVcGRhdGUoYSxULGcpLHR5cGVvZiBvLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlPT0iZnVuY3Rpb24iJiZvLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlKGEsVCxnKSksdHlwZW9mIG8uY29tcG9uZW50RGlkVXBkYXRlPT0iZnVuY3Rpb24iJiYoZS5mbGFnc3w9NCksdHlwZW9mIG8uZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU9PSJmdW5jdGlvbiImJihlLmZsYWdzfD0xMDI0KSk6KHR5cGVvZiBvLmNvbXBvbmVudERpZFVwZGF0ZSE9ImZ1bmN0aW9uInx8dT09PXQubWVtb2l6ZWRQcm9wcyYmRT09PXQubWVtb2l6ZWRTdGF0ZXx8KGUuZmxhZ3N8PTQpLHR5cGVvZiBvLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlIT0iZnVuY3Rpb24ifHx1PT09dC5tZW1vaXplZFByb3BzJiZFPT09dC5tZW1vaXplZFN0YXRlfHwoZS5mbGFnc3w9MTAyNCksZS5tZW1vaXplZFByb3BzPWEsZS5tZW1vaXplZFN0YXRlPVQpLG8ucHJvcHM9YSxvLnN0YXRlPVQsby5jb250ZXh0PWcsYT1OKToodHlwZW9mIG8uY29tcG9uZW50RGlkVXBkYXRlIT0iZnVuY3Rpb24ifHx1PT09dC5tZW1vaXplZFByb3BzJiZFPT09dC5tZW1vaXplZFN0YXRlfHwoZS5mbGFnc3w9NCksdHlwZW9mIG8uZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUhPSJmdW5jdGlvbiJ8fHU9PT10Lm1lbW9pemVkUHJvcHMmJkU9PT10Lm1lbW9pemVkU3RhdGV8fChlLmZsYWdzfD0xMDI0KSxhPSExKX1yZXR1cm4gbz1hLElpKHQsZSksYT0oZS5mbGFncyYxMjgpIT09MCxvfHxhPyhvPWUuc3RhdGVOb2RlLGw9YSYmdHlwZW9mIGwuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yIT0iZnVuY3Rpb24iP251bGw6by5yZW5kZXIoKSxlLmZsYWdzfD0xLHQhPT1udWxsJiZhPyhlLmNoaWxkPWtuKGUsdC5jaGlsZCxudWxsLG4pLGUuY2hpbGQ9a24oZSxudWxsLGwsbikpOnVlKHQsZSxsLG4pLGUubWVtb2l6ZWRTdGF0ZT1vLnN0YXRlLHQ9ZS5jaGlsZCk6dD16bCh0LGUsbiksdH1mdW5jdGlvbiBVZih0LGUsbCxhKXtyZXR1cm4gYm8oKSxlLmZsYWdzfD0yNTYsdWUodCxlLGwsYSksZS5jaGlsZH12YXIgZWM9e2RlaHlkcmF0ZWQ6bnVsbCx0cmVlQ29udGV4dDpudWxsLHJldHJ5TGFuZTowLGh5ZHJhdGlvbkVycm9yczpudWxsfTtmdW5jdGlvbiBsYyh0KXtyZXR1cm57YmFzZUxhbmVzOnQsY2FjaGVQb29sOlRkKCl9fWZ1bmN0aW9uIGFjKHQsZSxsKXtyZXR1cm4gdD10IT09bnVsbD90LmNoaWxkTGFuZXMmfmw6MCxlJiYodHw9WmUpLHR9ZnVuY3Rpb24gR2YodCxlLGwpe3ZhciBhPWUucGVuZGluZ1Byb3BzLG49ITEsbz0oZS5mbGFncyYxMjgpIT09MCx1O2lmKCh1PW8pfHwodT10IT09bnVsbCYmdC5tZW1vaXplZFN0YXRlPT09bnVsbD8hMTooSXQuY3VycmVudCYyKSE9PTApLHUmJihuPSEwLGUuZmxhZ3MmPS0xMjkpLHU9KGUuZmxhZ3MmMzIpIT09MCxlLmZsYWdzJj0tMzMsdD09PW51bGwpe2lmKEV0KXtpZihuP2FhKGUpOm5hKCksRXQpe3ZhciBmPVV0LGc7aWYoZz1mKXt0Ontmb3IoZz1mLGY9Y2w7Zy5ub2RlVHlwZSE9PTg7KXtpZighZil7Zj1udWxsO2JyZWFrIHR9aWYoZz1sbChnLm5leHRTaWJsaW5nKSxnPT09bnVsbCl7Zj1udWxsO2JyZWFrIHR9fWY9Z31mIT09bnVsbD8oZS5tZW1vaXplZFN0YXRlPXtkZWh5ZHJhdGVkOmYsdHJlZUNvbnRleHQ6WGEhPT1udWxsP3tpZDpUbCxvdmVyZmxvdzpEbH06bnVsbCxyZXRyeUxhbmU6NTM2ODcwOTEyLGh5ZHJhdGlvbkVycm9yczpudWxsfSxnPU5lKDE4LG51bGwsbnVsbCwwKSxnLnN0YXRlTm9kZT1mLGcucmV0dXJuPWUsZS5jaGlsZD1nLGJlPWUsVXQ9bnVsbCxnPSEwKTpnPSExfWd8fEthKGUpfWlmKGY9ZS5tZW1vaXplZFN0YXRlLGYhPT1udWxsJiYoZj1mLmRlaHlkcmF0ZWQsZiE9PW51bGwpKXJldHVybiBHYyhmKT9lLmxhbmVzPTMyOmUubGFuZXM9NTM2ODcwOTEyLG51bGw7TmwoZSl9cmV0dXJuIGY9YS5jaGlsZHJlbixhPWEuZmFsbGJhY2ssbj8obmEoKSxuPWUubW9kZSxmPXRyKHttb2RlOiJoaWRkZW4iLGNoaWxkcmVuOmZ9LG4pLGE9VmEoYSxuLGwsbnVsbCksZi5yZXR1cm49ZSxhLnJldHVybj1lLGYuc2libGluZz1hLGUuY2hpbGQ9ZixuPWUuY2hpbGQsbi5tZW1vaXplZFN0YXRlPWxjKGwpLG4uY2hpbGRMYW5lcz1hYyh0LHUsbCksZS5tZW1vaXplZFN0YXRlPWVjLGEpOihhYShlKSxuYyhlLGYpKX1pZihnPXQubWVtb2l6ZWRTdGF0ZSxnIT09bnVsbCYmKGY9Zy5kZWh5ZHJhdGVkLGYhPT1udWxsKSl7aWYobyllLmZsYWdzJjI1Nj8oYWEoZSksZS5mbGFncyY9LTI1NyxlPW9jKHQsZSxsKSk6ZS5tZW1vaXplZFN0YXRlIT09bnVsbD8obmEoKSxlLmNoaWxkPXQuY2hpbGQsZS5mbGFnc3w9MTI4LGU9bnVsbCk6KG5hKCksbj1hLmZhbGxiYWNrLGY9ZS5tb2RlLGE9dHIoe21vZGU6InZpc2libGUiLGNoaWxkcmVuOmEuY2hpbGRyZW59LGYpLG49VmEobixmLGwsbnVsbCksbi5mbGFnc3w9MixhLnJldHVybj1lLG4ucmV0dXJuPWUsYS5zaWJsaW5nPW4sZS5jaGlsZD1hLGtuKGUsdC5jaGlsZCxudWxsLGwpLGE9ZS5jaGlsZCxhLm1lbW9pemVkU3RhdGU9bGMobCksYS5jaGlsZExhbmVzPWFjKHQsdSxsKSxlLm1lbW9pemVkU3RhdGU9ZWMsZT1uKTtlbHNlIGlmKGFhKGUpLEdjKGYpKXtpZih1PWYubmV4dFNpYmxpbmcmJmYubmV4dFNpYmxpbmcuZGF0YXNldCx1KXZhciBTPXUuZGdzdDt1PVMsYT1FcnJvcihzKDQxOSkpLGEuc3RhY2s9IiIsYS5kaWdlc3Q9dSx4byh7dmFsdWU6YSxzb3VyY2U6bnVsbCxzdGFjazpudWxsfSksZT1vYyh0LGUsbCl9ZWxzZSBpZihuZXx8d28odCxlLGwsITEpLHU9KGwmdC5jaGlsZExhbmVzKSE9PTAsbmV8fHUpe2lmKHU9anQsdSE9PW51bGwmJihhPWwmLWwsYT0oYSY0MikhPT0wPzE6bG8oYSksYT0oYSYodS5zdXNwZW5kZWRMYW5lc3xsKSkhPT0wPzA6YSxhIT09MCYmYSE9PWcucmV0cnlMYW5lKSl0aHJvdyBnLnJldHJ5TGFuZT1hLFNuKHQsYSksamUodSx0LGEpLHpmO2YuZGF0YT09PSIkPyJ8fENjKCksZT1vYyh0LGUsbCl9ZWxzZSBmLmRhdGE9PT0iJD8iPyhlLmZsYWdzfD0xOTIsZS5jaGlsZD10LmNoaWxkLGU9bnVsbCk6KHQ9Zy50cmVlQ29udGV4dCxVdD1sbChmLm5leHRTaWJsaW5nKSxiZT1lLEV0PSEwLFFhPW51bGwsY2w9ITEsdCE9PW51bGwmJihZZVtWZSsrXT1UbCxZZVtWZSsrXT1EbCxZZVtWZSsrXT1YYSxUbD10LmlkLERsPXQub3ZlcmZsb3csWGE9ZSksZT1uYyhlLGEuY2hpbGRyZW4pLGUuZmxhZ3N8PTQwOTYpO3JldHVybiBlfXJldHVybiBuPyhuYSgpLG49YS5mYWxsYmFjayxmPWUubW9kZSxnPXQuY2hpbGQsUz1nLnNpYmxpbmcsYT1FbChnLHttb2RlOiJoaWRkZW4iLGNoaWxkcmVuOmEuY2hpbGRyZW59KSxhLnN1YnRyZWVGbGFncz1nLnN1YnRyZWVGbGFncyY2NTAxMTcxMixTIT09bnVsbD9uPUVsKFMsbik6KG49VmEobixmLGwsbnVsbCksbi5mbGFnc3w9Miksbi5yZXR1cm49ZSxhLnJldHVybj1lLGEuc2libGluZz1uLGUuY2hpbGQ9YSxhPW4sbj1lLmNoaWxkLGY9dC5jaGlsZC5tZW1vaXplZFN0YXRlLGY9PT1udWxsP2Y9bGMobCk6KGc9Zi5jYWNoZVBvb2wsZyE9PW51bGw/KFM9RnQuX2N1cnJlbnRWYWx1ZSxnPWcucGFyZW50IT09Uz97cGFyZW50OlMscG9vbDpTfTpnKTpnPVRkKCksZj17YmFzZUxhbmVzOmYuYmFzZUxhbmVzfGwsY2FjaGVQb29sOmd9KSxuLm1lbW9pemVkU3RhdGU9ZixuLmNoaWxkTGFuZXM9YWModCx1LGwpLGUubWVtb2l6ZWRTdGF0ZT1lYyxhKTooYWEoZSksbD10LmNoaWxkLHQ9bC5zaWJsaW5nLGw9RWwobCx7bW9kZToidmlzaWJsZSIsY2hpbGRyZW46YS5jaGlsZHJlbn0pLGwucmV0dXJuPWUsbC5zaWJsaW5nPW51bGwsdCE9PW51bGwmJih1PWUuZGVsZXRpb25zLHU9PT1udWxsPyhlLmRlbGV0aW9ucz1bdF0sZS5mbGFnc3w9MTYpOnUucHVzaCh0KSksZS5jaGlsZD1sLGUubWVtb2l6ZWRTdGF0ZT1udWxsLGwpfWZ1bmN0aW9uIG5jKHQsZSl7cmV0dXJuIGU9dHIoe21vZGU6InZpc2libGUiLGNoaWxkcmVuOmV9LHQubW9kZSksZS5yZXR1cm49dCx0LmNoaWxkPWV9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gdD1OZSgyMix0LG51bGwsZSksdC5sYW5lcz0wLHQuc3RhdGVOb2RlPXtfdmlzaWJpbGl0eToxLF9wZW5kaW5nTWFya2VyczpudWxsLF9yZXRyeUNhY2hlOm51bGwsX3RyYW5zaXRpb25zOm51bGx9LHR9ZnVuY3Rpb24gb2ModCxlLGwpe3JldHVybiBrbihlLHQuY2hpbGQsbnVsbCxsKSx0PW5jKGUsZS5wZW5kaW5nUHJvcHMuY2hpbGRyZW4pLHQuZmxhZ3N8PTIsZS5tZW1vaXplZFN0YXRlPW51bGwsdH1mdW5jdGlvbiBxZih0LGUsbCl7dC5sYW5lc3w9ZTt2YXIgYT10LmFsdGVybmF0ZTthIT09bnVsbCYmKGEubGFuZXN8PWUpLENzKHQucmV0dXJuLGUsbCl9ZnVuY3Rpb24gaWModCxlLGwsYSxuKXt2YXIgbz10Lm1lbW9pemVkU3RhdGU7bz09PW51bGw/dC5tZW1vaXplZFN0YXRlPXtpc0JhY2t3YXJkczplLHJlbmRlcmluZzpudWxsLHJlbmRlcmluZ1N0YXJ0VGltZTowLGxhc3Q6YSx0YWlsOmwsdGFpbE1vZGU6bn06KG8uaXNCYWNrd2FyZHM9ZSxvLnJlbmRlcmluZz1udWxsLG8ucmVuZGVyaW5nU3RhcnRUaW1lPTAsby5sYXN0PWEsby50YWlsPWwsby50YWlsTW9kZT1uKX1mdW5jdGlvbiBZZih0LGUsbCl7dmFyIGE9ZS5wZW5kaW5nUHJvcHMsbj1hLnJldmVhbE9yZGVyLG89YS50YWlsO2lmKHVlKHQsZSxhLmNoaWxkcmVuLGwpLGE9SXQuY3VycmVudCwoYSYyKSE9PTApYT1hJjF8MixlLmZsYWdzfD0xMjg7ZWxzZXtpZih0IT09bnVsbCYmKHQuZmxhZ3MmMTI4KSE9PTApdDpmb3IodD1lLmNoaWxkO3QhPT1udWxsOyl7aWYodC50YWc9PT0xMyl0Lm1lbW9pemVkU3RhdGUhPT1udWxsJiZxZih0LGwsZSk7ZWxzZSBpZih0LnRhZz09PTE5KXFmKHQsbCxlKTtlbHNlIGlmKHQuY2hpbGQhPT1udWxsKXt0LmNoaWxkLnJldHVybj10LHQ9dC5jaGlsZDtjb250aW51ZX1pZih0PT09ZSlicmVhayB0O2Zvcig7dC5zaWJsaW5nPT09bnVsbDspe2lmKHQucmV0dXJuPT09bnVsbHx8dC5yZXR1cm49PT1lKWJyZWFrIHQ7dD10LnJldHVybn10LnNpYmxpbmcucmV0dXJuPXQucmV0dXJuLHQ9dC5zaWJsaW5nfWEmPTF9c3dpdGNoKEcoSXQsYSksbil7Y2FzZSJmb3J3YXJkcyI6Zm9yKGw9ZS5jaGlsZCxuPW51bGw7bCE9PW51bGw7KXQ9bC5hbHRlcm5hdGUsdCE9PW51bGwmJldpKHQpPT09bnVsbCYmKG49bCksbD1sLnNpYmxpbmc7bD1uLGw9PT1udWxsPyhuPWUuY2hpbGQsZS5jaGlsZD1udWxsKToobj1sLnNpYmxpbmcsbC5zaWJsaW5nPW51bGwpLGljKGUsITEsbixsLG8pO2JyZWFrO2Nhc2UiYmFja3dhcmRzIjpmb3IobD1udWxsLG49ZS5jaGlsZCxlLmNoaWxkPW51bGw7biE9PW51bGw7KXtpZih0PW4uYWx0ZXJuYXRlLHQhPT1udWxsJiZXaSh0KT09PW51bGwpe2UuY2hpbGQ9bjticmVha310PW4uc2libGluZyxuLnNpYmxpbmc9bCxsPW4sbj10fWljKGUsITAsbCxudWxsLG8pO2JyZWFrO2Nhc2UidG9nZXRoZXIiOmljKGUsITEsbnVsbCxudWxsLHZvaWQgMCk7YnJlYWs7ZGVmYXVsdDplLm1lbW9pemVkU3RhdGU9bnVsbH1yZXR1cm4gZS5jaGlsZH1mdW5jdGlvbiB6bCh0LGUsbCl7aWYodCE9PW51bGwmJihlLmRlcGVuZGVuY2llcz10LmRlcGVuZGVuY2llcyksY2F8PWUubGFuZXMsKGwmZS5jaGlsZExhbmVzKT09PTApaWYodCE9PW51bGwpe2lmKHdvKHQsZSxsLCExKSwobCZlLmNoaWxkTGFuZXMpPT09MClyZXR1cm4gbnVsbH1lbHNlIHJldHVybiBudWxsO2lmKHQhPT1udWxsJiZlLmNoaWxkIT09dC5jaGlsZCl0aHJvdyBFcnJvcihzKDE1MykpO2lmKGUuY2hpbGQhPT1udWxsKXtmb3IodD1lLmNoaWxkLGw9RWwodCx0LnBlbmRpbmdQcm9wcyksZS5jaGlsZD1sLGwucmV0dXJuPWU7dC5zaWJsaW5nIT09bnVsbDspdD10LnNpYmxpbmcsbD1sLnNpYmxpbmc9RWwodCx0LnBlbmRpbmdQcm9wcyksbC5yZXR1cm49ZTtsLnNpYmxpbmc9bnVsbH1yZXR1cm4gZS5jaGlsZH1mdW5jdGlvbiByYyh0LGUpe3JldHVybih0LmxhbmVzJmUpIT09MD8hMDoodD10LmRlcGVuZGVuY2llcywhISh0IT09bnVsbCYmT2kodCkpKX1mdW5jdGlvbiBUMSh0LGUsbCl7c3dpdGNoKGUudGFnKXtjYXNlIDM6VHQoZSxlLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxGbChlLEZ0LHQubWVtb2l6ZWRTdGF0ZS5jYWNoZSksYm8oKTticmVhaztjYXNlIDI3OmNhc2UgNTpLZShlKTticmVhaztjYXNlIDQ6VHQoZSxlLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKTticmVhaztjYXNlIDEwOkZsKGUsZS50eXBlLGUubWVtb2l6ZWRQcm9wcy52YWx1ZSk7YnJlYWs7Y2FzZSAxMzp2YXIgYT1lLm1lbW9pemVkU3RhdGU7aWYoYSE9PW51bGwpcmV0dXJuIGEuZGVoeWRyYXRlZCE9PW51bGw/KGFhKGUpLGUuZmxhZ3N8PTEyOCxudWxsKToobCZlLmNoaWxkLmNoaWxkTGFuZXMpIT09MD9HZih0LGUsbCk6KGFhKGUpLHQ9emwodCxlLGwpLHQhPT1udWxsP3Quc2libGluZzpudWxsKTthYShlKTticmVhaztjYXNlIDE5OnZhciBuPSh0LmZsYWdzJjEyOCkhPT0wO2lmKGE9KGwmZS5jaGlsZExhbmVzKSE9PTAsYXx8KHdvKHQsZSxsLCExKSxhPShsJmUuY2hpbGRMYW5lcykhPT0wKSxuKXtpZihhKXJldHVybiBZZih0LGUsbCk7ZS5mbGFnc3w9MTI4fWlmKG49ZS5tZW1vaXplZFN0YXRlLG4hPT1udWxsJiYobi5yZW5kZXJpbmc9bnVsbCxuLnRhaWw9bnVsbCxuLmxhc3RFZmZlY3Q9bnVsbCksRyhJdCxJdC5jdXJyZW50KSxhKWJyZWFrO3JldHVybiBudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gZS5sYW5lcz0wLGpmKHQsZSxsKTtjYXNlIDI0OkZsKGUsRnQsdC5tZW1vaXplZFN0YXRlLmNhY2hlKX1yZXR1cm4gemwodCxlLGwpfWZ1bmN0aW9uIFZmKHQsZSxsKXtpZih0IT09bnVsbClpZih0Lm1lbW9pemVkUHJvcHMhPT1lLnBlbmRpbmdQcm9wcyluZT0hMDtlbHNle2lmKCFyYyh0LGwpJiYoZS5mbGFncyYxMjgpPT09MClyZXR1cm4gbmU9ITEsVDEodCxlLGwpO25lPSh0LmZsYWdzJjEzMTA3MikhPT0wfWVsc2UgbmU9ITEsRXQmJihlLmZsYWdzJjEwNDg1NzYpIT09MCYmdmQoZSxraSxlLmluZGV4KTtzd2l0Y2goZS5sYW5lcz0wLGUudGFnKXtjYXNlIDE2OnQ6e3Q9ZS5wZW5kaW5nUHJvcHM7dmFyIGE9ZS5lbGVtZW50VHlwZSxuPWEuX2luaXQ7aWYoYT1uKGEuX3BheWxvYWQpLGUudHlwZT1hLHR5cGVvZiBhPT0iZnVuY3Rpb24iKXBzKGEpPyh0PUZhKGEsdCksZS50YWc9MSxlPUhmKG51bGwsZSxhLHQsbCkpOihlLnRhZz0wLGU9dGMobnVsbCxlLGEsdCxsKSk7ZWxzZXtpZihhIT1udWxsKXtpZihuPWEuJCR0eXBlb2Ysbj09PVkpe2UudGFnPTExLGU9X2YobnVsbCxlLGEsdCxsKTticmVhayB0fWVsc2UgaWYobj09PXJ0KXtlLnRhZz0xNCxlPWtmKG51bGwsZSxhLHQsbCk7YnJlYWsgdH19dGhyb3cgZT1TZShhKXx8YSxFcnJvcihzKDMwNixlLCIiKSl9fXJldHVybiBlO2Nhc2UgMDpyZXR1cm4gdGModCxlLGUudHlwZSxlLnBlbmRpbmdQcm9wcyxsKTtjYXNlIDE6cmV0dXJuIGE9ZS50eXBlLG49RmEoYSxlLnBlbmRpbmdQcm9wcyksSGYodCxlLGEsbixsKTtjYXNlIDM6dDp7aWYoVHQoZSxlLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSx0PT09bnVsbCl0aHJvdyBFcnJvcihzKDM4NykpO2E9ZS5wZW5kaW5nUHJvcHM7dmFyIG89ZS5tZW1vaXplZFN0YXRlO249by5lbGVtZW50LE5zKHQsZSksQW8oZSxhLG51bGwsbCk7dmFyIHU9ZS5tZW1vaXplZFN0YXRlO2lmKGE9dS5jYWNoZSxGbChlLEZ0LGEpLGEhPT1vLmNhY2hlJiZFcyhlLFtGdF0sbCwhMCksTW8oKSxhPXUuZWxlbWVudCxvLmlzRGVoeWRyYXRlZClpZihvPXtlbGVtZW50OmEsaXNEZWh5ZHJhdGVkOiExLGNhY2hlOnUuY2FjaGV9LGUudXBkYXRlUXVldWUuYmFzZVN0YXRlPW8sZS5tZW1vaXplZFN0YXRlPW8sZS5mbGFncyYyNTYpe2U9VWYodCxlLGEsbCk7YnJlYWsgdH1lbHNlIGlmKGEhPT1uKXtuPUdlKEVycm9yKHMoNDI0KSksZSkseG8obiksZT1VZih0LGUsYSxsKTticmVhayB0fWVsc2V7c3dpdGNoKHQ9ZS5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyx0Lm5vZGVUeXBlKXtjYXNlIDk6dD10LmJvZHk7YnJlYWs7ZGVmYXVsdDp0PXQubm9kZU5hbWU9PT0iSFRNTCI/dC5vd25lckRvY3VtZW50LmJvZHk6dH1mb3IoVXQ9bGwodC5maXJzdENoaWxkKSxiZT1lLEV0PSEwLFFhPW51bGwsY2w9ITAsbD13ZihlLG51bGwsYSxsKSxlLmNoaWxkPWw7bDspbC5mbGFncz1sLmZsYWdzJi0zfDQwOTYsbD1sLnNpYmxpbmd9ZWxzZXtpZihibygpLGE9PT1uKXtlPXpsKHQsZSxsKTticmVhayB0fXVlKHQsZSxhLGwpfWU9ZS5jaGlsZH1yZXR1cm4gZTtjYXNlIDI2OnJldHVybiBJaSh0LGUpLHQ9PT1udWxsPyhsPUtoKGUudHlwZSxudWxsLGUucGVuZGluZ1Byb3BzLG51bGwpKT9lLm1lbW9pemVkU3RhdGU9bDpFdHx8KGw9ZS50eXBlLHQ9ZS5wZW5kaW5nUHJvcHMsYT1tcihJLmN1cnJlbnQpLmNyZWF0ZUVsZW1lbnQobCksYVtlZV09ZSxhW3BlXT10LGZlKGEsbCx0KSxWdChhKSxlLnN0YXRlTm9kZT1hKTplLm1lbW9pemVkU3RhdGU9S2goZS50eXBlLHQubWVtb2l6ZWRQcm9wcyxlLnBlbmRpbmdQcm9wcyx0Lm1lbW9pemVkU3RhdGUpLG51bGw7Y2FzZSAyNzpyZXR1cm4gS2UoZSksdD09PW51bGwmJkV0JiYoYT1lLnN0YXRlTm9kZT1YaChlLnR5cGUsZS5wZW5kaW5nUHJvcHMsSS5jdXJyZW50KSxiZT1lLGNsPSEwLG49VXQsaGEoZS50eXBlKT8ocWM9bixVdD1sbChhLmZpcnN0Q2hpbGQpKTpVdD1uKSx1ZSh0LGUsZS5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sbCksSWkodCxlKSx0PT09bnVsbCYmKGUuZmxhZ3N8PTQxOTQzMDQpLGUuY2hpbGQ7Y2FzZSA1OnJldHVybiB0PT09bnVsbCYmRXQmJigobj1hPVV0KSYmKGE9STEoYSxlLnR5cGUsZS5wZW5kaW5nUHJvcHMsY2wpLGEhPT1udWxsPyhlLnN0YXRlTm9kZT1hLGJlPWUsVXQ9bGwoYS5maXJzdENoaWxkKSxjbD0hMSxuPSEwKTpuPSExKSxufHxLYShlKSksS2UoZSksbj1lLnR5cGUsbz1lLnBlbmRpbmdQcm9wcyx1PXQhPT1udWxsP3QubWVtb2l6ZWRQcm9wczpudWxsLGE9by5jaGlsZHJlbixMYyhuLG8pP2E9bnVsbDp1IT09bnVsbCYmTGMobix1KSYmKGUuZmxhZ3N8PTMyKSxlLm1lbW9pemVkU3RhdGUhPT1udWxsJiYobj1Ccyh0LGUseTEsbnVsbCxudWxsLGwpLFdvLl9jdXJyZW50VmFsdWU9biksSWkodCxlKSx1ZSh0LGUsYSxsKSxlLmNoaWxkO2Nhc2UgNjpyZXR1cm4gdD09PW51bGwmJkV0JiYoKHQ9bD1VdCkmJihsPXRwKGwsZS5wZW5kaW5nUHJvcHMsY2wpLGwhPT1udWxsPyhlLnN0YXRlTm9kZT1sLGJlPWUsVXQ9bnVsbCx0PSEwKTp0PSExKSx0fHxLYShlKSksbnVsbDtjYXNlIDEzOnJldHVybiBHZih0LGUsbCk7Y2FzZSA0OnJldHVybiBUdChlLGUuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLGE9ZS5wZW5kaW5nUHJvcHMsdD09PW51bGw/ZS5jaGlsZD1rbihlLG51bGwsYSxsKTp1ZSh0LGUsYSxsKSxlLmNoaWxkO2Nhc2UgMTE6cmV0dXJuIF9mKHQsZSxlLnR5cGUsZS5wZW5kaW5nUHJvcHMsbCk7Y2FzZSA3OnJldHVybiB1ZSh0LGUsZS5wZW5kaW5nUHJvcHMsbCksZS5jaGlsZDtjYXNlIDg6cmV0dXJuIHVlKHQsZSxlLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixsKSxlLmNoaWxkO2Nhc2UgMTI6cmV0dXJuIHVlKHQsZSxlLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixsKSxlLmNoaWxkO2Nhc2UgMTA6cmV0dXJuIGE9ZS5wZW5kaW5nUHJvcHMsRmwoZSxlLnR5cGUsYS52YWx1ZSksdWUodCxlLGEuY2hpbGRyZW4sbCksZS5jaGlsZDtjYXNlIDk6cmV0dXJuIG49ZS50eXBlLl9jb250ZXh0LGE9ZS5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sSmEoZSksbj15ZShuKSxhPWEobiksZS5mbGFnc3w9MSx1ZSh0LGUsYSxsKSxlLmNoaWxkO2Nhc2UgMTQ6cmV0dXJuIGtmKHQsZSxlLnR5cGUsZS5wZW5kaW5nUHJvcHMsbCk7Y2FzZSAxNTpyZXR1cm4gT2YodCxlLGUudHlwZSxlLnBlbmRpbmdQcm9wcyxsKTtjYXNlIDE5OnJldHVybiBZZih0LGUsbCk7Y2FzZSAzMTpyZXR1cm4gYT1lLnBlbmRpbmdQcm9wcyxsPWUubW9kZSxhPXttb2RlOmEubW9kZSxjaGlsZHJlbjphLmNoaWxkcmVufSx0PT09bnVsbD8obD10cihhLGwpLGwucmVmPWUucmVmLGUuY2hpbGQ9bCxsLnJldHVybj1lLGU9bCk6KGw9RWwodC5jaGlsZCxhKSxsLnJlZj1lLnJlZixlLmNoaWxkPWwsbC5yZXR1cm49ZSxlPWwpLGU7Y2FzZSAyMjpyZXR1cm4gamYodCxlLGwpO2Nhc2UgMjQ6cmV0dXJuIEphKGUpLGE9eWUoRnQpLHQ9PT1udWxsPyhuPU1zKCksbj09PW51bGwmJihuPWp0LG89VHMoKSxuLnBvb2xlZENhY2hlPW8sby5yZWZDb3VudCsrLG8hPT1udWxsJiYobi5wb29sZWRDYWNoZUxhbmVzfD1sKSxuPW8pLGUubWVtb2l6ZWRTdGF0ZT17cGFyZW50OmEsY2FjaGU6bn0sUnMoZSksRmwoZSxGdCxuKSk6KCh0LmxhbmVzJmwpIT09MCYmKE5zKHQsZSksQW8oZSxudWxsLG51bGwsbCksTW8oKSksbj10Lm1lbW9pemVkU3RhdGUsbz1lLm1lbW9pemVkU3RhdGUsbi5wYXJlbnQhPT1hPyhuPXtwYXJlbnQ6YSxjYWNoZTphfSxlLm1lbW9pemVkU3RhdGU9bixlLmxhbmVzPT09MCYmKGUubWVtb2l6ZWRTdGF0ZT1lLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZT1uKSxGbChlLEZ0LGEpKTooYT1vLmNhY2hlLEZsKGUsRnQsYSksYSE9PW4uY2FjaGUmJkVzKGUsW0Z0XSxsLCEwKSkpLHVlKHQsZSxlLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixsKSxlLmNoaWxkO2Nhc2UgMjk6dGhyb3cgZS5wZW5kaW5nUHJvcHN9dGhyb3cgRXJyb3IocygxNTYsZS50YWcpKX1mdW5jdGlvbiBfbCh0KXt0LmZsYWdzfD00fWZ1bmN0aW9uIFhmKHQsZSl7aWYoZS50eXBlIT09InN0eWxlc2hlZXQifHwoZS5zdGF0ZS5sb2FkaW5nJjQpIT09MCl0LmZsYWdzJj0tMTY3NzcyMTc7ZWxzZSBpZih0LmZsYWdzfD0xNjc3NzIxNiwhRmgoZSkpe2lmKGU9WGUuY3VycmVudCxlIT09bnVsbCYmKCh3dCY0MTk0MDQ4KT09PXd0P3VsIT09bnVsbDood3QmNjI5MTQ1NjApIT09d3QmJih3dCY1MzY4NzA5MTIpPT09MHx8ZSE9PXVsKSl0aHJvdyBUbz1BcyxEZDt0LmZsYWdzfD04MTkyfX1mdW5jdGlvbiBlcih0LGUpe2UhPT1udWxsJiYodC5mbGFnc3w9NCksdC5mbGFncyYxNjM4NCYmKGU9dC50YWchPT0yMj9oaSgpOjUzNjg3MDkxMix0LmxhbmVzfD1lLExufD1lKX1mdW5jdGlvbiBqbyh0LGUpe2lmKCFFdClzd2l0Y2godC50YWlsTW9kZSl7Y2FzZSJoaWRkZW4iOmU9dC50YWlsO2Zvcih2YXIgbD1udWxsO2UhPT1udWxsOyllLmFsdGVybmF0ZSE9PW51bGwmJihsPWUpLGU9ZS5zaWJsaW5nO2w9PT1udWxsP3QudGFpbD1udWxsOmwuc2libGluZz1udWxsO2JyZWFrO2Nhc2UiY29sbGFwc2VkIjpsPXQudGFpbDtmb3IodmFyIGE9bnVsbDtsIT09bnVsbDspbC5hbHRlcm5hdGUhPT1udWxsJiYoYT1sKSxsPWwuc2libGluZzthPT09bnVsbD9lfHx0LnRhaWw9PT1udWxsP3QudGFpbD1udWxsOnQudGFpbC5zaWJsaW5nPW51bGw6YS5zaWJsaW5nPW51bGx9fWZ1bmN0aW9uIEh0KHQpe3ZhciBlPXQuYWx0ZXJuYXRlIT09bnVsbCYmdC5hbHRlcm5hdGUuY2hpbGQ9PT10LmNoaWxkLGw9MCxhPTA7aWYoZSlmb3IodmFyIG49dC5jaGlsZDtuIT09bnVsbDspbHw9bi5sYW5lc3xuLmNoaWxkTGFuZXMsYXw9bi5zdWJ0cmVlRmxhZ3MmNjUwMTE3MTIsYXw9bi5mbGFncyY2NTAxMTcxMixuLnJldHVybj10LG49bi5zaWJsaW5nO2Vsc2UgZm9yKG49dC5jaGlsZDtuIT09bnVsbDspbHw9bi5sYW5lc3xuLmNoaWxkTGFuZXMsYXw9bi5zdWJ0cmVlRmxhZ3MsYXw9bi5mbGFncyxuLnJldHVybj10LG49bi5zaWJsaW5nO3JldHVybiB0LnN1YnRyZWVGbGFnc3w9YSx0LmNoaWxkTGFuZXM9bCxlfWZ1bmN0aW9uIEQxKHQsZSxsKXt2YXIgYT1lLnBlbmRpbmdQcm9wcztzd2l0Y2goeHMoZSksZS50YWcpe2Nhc2UgMzE6Y2FzZSAxNjpjYXNlIDE1OmNhc2UgMDpjYXNlIDExOmNhc2UgNzpjYXNlIDg6Y2FzZSAxMjpjYXNlIDk6Y2FzZSAxNDpyZXR1cm4gSHQoZSksbnVsbDtjYXNlIDE6cmV0dXJuIEh0KGUpLG51bGw7Y2FzZSAzOnJldHVybiBsPWUuc3RhdGVOb2RlLGE9bnVsbCx0IT09bnVsbCYmKGE9dC5tZW1vaXplZFN0YXRlLmNhY2hlKSxlLm1lbW9pemVkU3RhdGUuY2FjaGUhPT1hJiYoZS5mbGFnc3w9MjA0OCksQWwoRnQpLEp0KCksbC5wZW5kaW5nQ29udGV4dCYmKGwuY29udGV4dD1sLnBlbmRpbmdDb250ZXh0LGwucGVuZGluZ0NvbnRleHQ9bnVsbCksKHQ9PT1udWxsfHx0LmNoaWxkPT09bnVsbCkmJih2byhlKT9fbChlKTp0PT09bnVsbHx8dC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCYmKGUuZmxhZ3MmMjU2KT09PTB8fChlLmZsYWdzfD0xMDI0LHdkKCkpKSxIdChlKSxudWxsO2Nhc2UgMjY6cmV0dXJuIGw9ZS5tZW1vaXplZFN0YXRlLHQ9PT1udWxsPyhfbChlKSxsIT09bnVsbD8oSHQoZSksWGYoZSxsKSk6KEh0KGUpLGUuZmxhZ3MmPS0xNjc3NzIxNykpOmw/bCE9PXQubWVtb2l6ZWRTdGF0ZT8oX2woZSksSHQoZSksWGYoZSxsKSk6KEh0KGUpLGUuZmxhZ3MmPS0xNjc3NzIxNyk6KHQubWVtb2l6ZWRQcm9wcyE9PWEmJl9sKGUpLEh0KGUpLGUuZmxhZ3MmPS0xNjc3NzIxNyksbnVsbDtjYXNlIDI3OkNlKGUpLGw9SS5jdXJyZW50O3ZhciBuPWUudHlwZTtpZih0IT09bnVsbCYmZS5zdGF0ZU5vZGUhPW51bGwpdC5tZW1vaXplZFByb3BzIT09YSYmX2woZSk7ZWxzZXtpZighYSl7aWYoZS5zdGF0ZU5vZGU9PT1udWxsKXRocm93IEVycm9yKHMoMTY2KSk7cmV0dXJuIEh0KGUpLG51bGx9dD1aLmN1cnJlbnQsdm8oZSk/YmQoZSk6KHQ9WGgobixhLGwpLGUuc3RhdGVOb2RlPXQsX2woZSkpfXJldHVybiBIdChlKSxudWxsO2Nhc2UgNTppZihDZShlKSxsPWUudHlwZSx0IT09bnVsbCYmZS5zdGF0ZU5vZGUhPW51bGwpdC5tZW1vaXplZFByb3BzIT09YSYmX2woZSk7ZWxzZXtpZighYSl7aWYoZS5zdGF0ZU5vZGU9PT1udWxsKXRocm93IEVycm9yKHMoMTY2KSk7cmV0dXJuIEh0KGUpLG51bGx9aWYodD1aLmN1cnJlbnQsdm8oZSkpYmQoZSk7ZWxzZXtzd2l0Y2gobj1tcihJLmN1cnJlbnQpLHQpe2Nhc2UgMTp0PW4uY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsbCk7YnJlYWs7Y2FzZSAyOnQ9bi5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiLGwpO2JyZWFrO2RlZmF1bHQ6c3dpdGNoKGwpe2Nhc2Uic3ZnIjp0PW4uY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsbCk7YnJlYWs7Y2FzZSJtYXRoIjp0PW4uY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIixsKTticmVhaztjYXNlInNjcmlwdCI6dD1uLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHQuaW5uZXJIVE1MPSI8c2NyaXB0PjxcL3NjcmlwdD4iLHQ9dC5yZW1vdmVDaGlsZCh0LmZpcnN0Q2hpbGQpO2JyZWFrO2Nhc2Uic2VsZWN0Ijp0PXR5cGVvZiBhLmlzPT0ic3RyaW5nIj9uLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIse2lzOmEuaXN9KTpuLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLGEubXVsdGlwbGU/dC5tdWx0aXBsZT0hMDphLnNpemUmJih0LnNpemU9YS5zaXplKTticmVhaztkZWZhdWx0OnQ9dHlwZW9mIGEuaXM9PSJzdHJpbmciP24uY3JlYXRlRWxlbWVudChsLHtpczphLmlzfSk6bi5jcmVhdGVFbGVtZW50KGwpfX10W2VlXT1lLHRbcGVdPWE7dDpmb3Iobj1lLmNoaWxkO24hPT1udWxsOyl7aWYobi50YWc9PT01fHxuLnRhZz09PTYpdC5hcHBlbmRDaGlsZChuLnN0YXRlTm9kZSk7ZWxzZSBpZihuLnRhZyE9PTQmJm4udGFnIT09MjcmJm4uY2hpbGQhPT1udWxsKXtuLmNoaWxkLnJldHVybj1uLG49bi5jaGlsZDtjb250aW51ZX1pZihuPT09ZSlicmVhayB0O2Zvcig7bi5zaWJsaW5nPT09bnVsbDspe2lmKG4ucmV0dXJuPT09bnVsbHx8bi5yZXR1cm49PT1lKWJyZWFrIHQ7bj1uLnJldHVybn1uLnNpYmxpbmcucmV0dXJuPW4ucmV0dXJuLG49bi5zaWJsaW5nfWUuc3RhdGVOb2RlPXQ7dDpzd2l0Y2goZmUodCxsLGEpLGwpe2Nhc2UiYnV0dG9uIjpjYXNlImlucHV0IjpjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6dD0hIWEuYXV0b0ZvY3VzO2JyZWFrIHQ7Y2FzZSJpbWciOnQ9ITA7YnJlYWsgdDtkZWZhdWx0OnQ9ITF9dCYmX2woZSl9fXJldHVybiBIdChlKSxlLmZsYWdzJj0tMTY3NzcyMTcsbnVsbDtjYXNlIDY6aWYodCYmZS5zdGF0ZU5vZGUhPW51bGwpdC5tZW1vaXplZFByb3BzIT09YSYmX2woZSk7ZWxzZXtpZih0eXBlb2YgYSE9InN0cmluZyImJmUuc3RhdGVOb2RlPT09bnVsbCl0aHJvdyBFcnJvcihzKDE2NikpO2lmKHQ9SS5jdXJyZW50LHZvKGUpKXtpZih0PWUuc3RhdGVOb2RlLGw9ZS5tZW1vaXplZFByb3BzLGE9bnVsbCxuPWJlLG4hPT1udWxsKXN3aXRjaChuLnRhZyl7Y2FzZSAyNzpjYXNlIDU6YT1uLm1lbW9pemVkUHJvcHN9dFtlZV09ZSx0PSEhKHQubm9kZVZhbHVlPT09bHx8YSE9PW51bGwmJmEuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nPT09ITB8fExoKHQubm9kZVZhbHVlLGwpKSx0fHxLYShlKX1lbHNlIHQ9bXIodCkuY3JlYXRlVGV4dE5vZGUoYSksdFtlZV09ZSxlLnN0YXRlTm9kZT10fXJldHVybiBIdChlKSxudWxsO2Nhc2UgMTM6aWYoYT1lLm1lbW9pemVkU3RhdGUsdD09PW51bGx8fHQubWVtb2l6ZWRTdGF0ZSE9PW51bGwmJnQubWVtb2l6ZWRTdGF0ZS5kZWh5ZHJhdGVkIT09bnVsbCl7aWYobj12byhlKSxhIT09bnVsbCYmYS5kZWh5ZHJhdGVkIT09bnVsbCl7aWYodD09PW51bGwpe2lmKCFuKXRocm93IEVycm9yKHMoMzE4KSk7aWYobj1lLm1lbW9pemVkU3RhdGUsbj1uIT09bnVsbD9uLmRlaHlkcmF0ZWQ6bnVsbCwhbil0aHJvdyBFcnJvcihzKDMxNykpO25bZWVdPWV9ZWxzZSBibygpLChlLmZsYWdzJjEyOCk9PT0wJiYoZS5tZW1vaXplZFN0YXRlPW51bGwpLGUuZmxhZ3N8PTQ7SHQoZSksbj0hMX1lbHNlIG49d2QoKSx0IT09bnVsbCYmdC5tZW1vaXplZFN0YXRlIT09bnVsbCYmKHQubWVtb2l6ZWRTdGF0ZS5oeWRyYXRpb25FcnJvcnM9biksbj0hMDtpZighbilyZXR1cm4gZS5mbGFncyYyNTY/KE5sKGUpLGUpOihObChlKSxudWxsKX1pZihObChlKSwoZS5mbGFncyYxMjgpIT09MClyZXR1cm4gZS5sYW5lcz1sLGU7aWYobD1hIT09bnVsbCx0PXQhPT1udWxsJiZ0Lm1lbW9pemVkU3RhdGUhPT1udWxsLGwpe2E9ZS5jaGlsZCxuPW51bGwsYS5hbHRlcm5hdGUhPT1udWxsJiZhLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlIT09bnVsbCYmYS5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2whPT1udWxsJiYobj1hLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sKTt2YXIgbz1udWxsO2EubWVtb2l6ZWRTdGF0ZSE9PW51bGwmJmEubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2whPT1udWxsJiYobz1hLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sLnBvb2wpLG8hPT1uJiYoYS5mbGFnc3w9MjA0OCl9cmV0dXJuIGwhPT10JiZsJiYoZS5jaGlsZC5mbGFnc3w9ODE5MiksZXIoZSxlLnVwZGF0ZVF1ZXVlKSxIdChlKSxudWxsO2Nhc2UgNDpyZXR1cm4gSnQoKSx0PT09bnVsbCYmX2MoZS5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksSHQoZSksbnVsbDtjYXNlIDEwOnJldHVybiBBbChlLnR5cGUpLEh0KGUpLG51bGw7Y2FzZSAxOTppZihYKEl0KSxuPWUubWVtb2l6ZWRTdGF0ZSxuPT09bnVsbClyZXR1cm4gSHQoZSksbnVsbDtpZihhPShlLmZsYWdzJjEyOCkhPT0wLG89bi5yZW5kZXJpbmcsbz09PW51bGwpaWYoYSlqbyhuLCExKTtlbHNle2lmKEd0IT09MHx8dCE9PW51bGwmJih0LmZsYWdzJjEyOCkhPT0wKWZvcih0PWUuY2hpbGQ7dCE9PW51bGw7KXtpZihvPVdpKHQpLG8hPT1udWxsKXtmb3IoZS5mbGFnc3w9MTI4LGpvKG4sITEpLHQ9by51cGRhdGVRdWV1ZSxlLnVwZGF0ZVF1ZXVlPXQsZXIoZSx0KSxlLnN1YnRyZWVGbGFncz0wLHQ9bCxsPWUuY2hpbGQ7bCE9PW51bGw7KXlkKGwsdCksbD1sLnNpYmxpbmc7cmV0dXJuIEcoSXQsSXQuY3VycmVudCYxfDIpLGUuY2hpbGR9dD10LnNpYmxpbmd9bi50YWlsIT09bnVsbCYmZ2UoKT5uciYmKGUuZmxhZ3N8PTEyOCxhPSEwLGpvKG4sITEpLGUubGFuZXM9NDE5NDMwNCl9ZWxzZXtpZighYSlpZih0PVdpKG8pLHQhPT1udWxsKXtpZihlLmZsYWdzfD0xMjgsYT0hMCx0PXQudXBkYXRlUXVldWUsZS51cGRhdGVRdWV1ZT10LGVyKGUsdCksam8obiwhMCksbi50YWlsPT09bnVsbCYmbi50YWlsTW9kZT09PSJoaWRkZW4iJiYhby5hbHRlcm5hdGUmJiFFdClyZXR1cm4gSHQoZSksbnVsbH1lbHNlIDIqZ2UoKS1uLnJlbmRlcmluZ1N0YXJ0VGltZT5uciYmbCE9PTUzNjg3MDkxMiYmKGUuZmxhZ3N8PTEyOCxhPSEwLGpvKG4sITEpLGUubGFuZXM9NDE5NDMwNCk7bi5pc0JhY2t3YXJkcz8oby5zaWJsaW5nPWUuY2hpbGQsZS5jaGlsZD1vKToodD1uLmxhc3QsdCE9PW51bGw/dC5zaWJsaW5nPW86ZS5jaGlsZD1vLG4ubGFzdD1vKX1yZXR1cm4gbi50YWlsIT09bnVsbD8oZT1uLnRhaWwsbi5yZW5kZXJpbmc9ZSxuLnRhaWw9ZS5zaWJsaW5nLG4ucmVuZGVyaW5nU3RhcnRUaW1lPWdlKCksZS5zaWJsaW5nPW51bGwsdD1JdC5jdXJyZW50LEcoSXQsYT90JjF8Mjp0JjEpLGUpOihIdChlKSxudWxsKTtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIE5sKGUpLE9zKCksYT1lLm1lbW9pemVkU3RhdGUhPT1udWxsLHQhPT1udWxsP3QubWVtb2l6ZWRTdGF0ZSE9PW51bGwhPT1hJiYoZS5mbGFnc3w9ODE5Mik6YSYmKGUuZmxhZ3N8PTgxOTIpLGE/KGwmNTM2ODcwOTEyKSE9PTAmJihlLmZsYWdzJjEyOCk9PT0wJiYoSHQoZSksZS5zdWJ0cmVlRmxhZ3MmNiYmKGUuZmxhZ3N8PTgxOTIpKTpIdChlKSxsPWUudXBkYXRlUXVldWUsbCE9PW51bGwmJmVyKGUsbC5yZXRyeVF1ZXVlKSxsPW51bGwsdCE9PW51bGwmJnQubWVtb2l6ZWRTdGF0ZSE9PW51bGwmJnQubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2whPT1udWxsJiYobD10Lm1lbW9pemVkU3RhdGUuY2FjaGVQb29sLnBvb2wpLGE9bnVsbCxlLm1lbW9pemVkU3RhdGUhPT1udWxsJiZlLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sIT09bnVsbCYmKGE9ZS5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sKSxhIT09bCYmKGUuZmxhZ3N8PTIwNDgpLHQhPT1udWxsJiZYKFdhKSxudWxsO2Nhc2UgMjQ6cmV0dXJuIGw9bnVsbCx0IT09bnVsbCYmKGw9dC5tZW1vaXplZFN0YXRlLmNhY2hlKSxlLm1lbW9pemVkU3RhdGUuY2FjaGUhPT1sJiYoZS5mbGFnc3w9MjA0OCksQWwoRnQpLEh0KGUpLG51bGw7Y2FzZSAyNTpyZXR1cm4gbnVsbDtjYXNlIDMwOnJldHVybiBudWxsfXRocm93IEVycm9yKHMoMTU2LGUudGFnKSl9ZnVuY3Rpb24gTTEodCxlKXtzd2l0Y2goeHMoZSksZS50YWcpe2Nhc2UgMTpyZXR1cm4gdD1lLmZsYWdzLHQmNjU1MzY/KGUuZmxhZ3M9dCYtNjU1Mzd8MTI4LGUpOm51bGw7Y2FzZSAzOnJldHVybiBBbChGdCksSnQoKSx0PWUuZmxhZ3MsKHQmNjU1MzYpIT09MCYmKHQmMTI4KT09PTA/KGUuZmxhZ3M9dCYtNjU1Mzd8MTI4LGUpOm51bGw7Y2FzZSAyNjpjYXNlIDI3OmNhc2UgNTpyZXR1cm4gQ2UoZSksbnVsbDtjYXNlIDEzOmlmKE5sKGUpLHQ9ZS5tZW1vaXplZFN0YXRlLHQhPT1udWxsJiZ0LmRlaHlkcmF0ZWQhPT1udWxsKXtpZihlLmFsdGVybmF0ZT09PW51bGwpdGhyb3cgRXJyb3IocygzNDApKTtibygpfXJldHVybiB0PWUuZmxhZ3MsdCY2NTUzNj8oZS5mbGFncz10Ji02NTUzN3wxMjgsZSk6bnVsbDtjYXNlIDE5OnJldHVybiBYKEl0KSxudWxsO2Nhc2UgNDpyZXR1cm4gSnQoKSxudWxsO2Nhc2UgMTA6cmV0dXJuIEFsKGUudHlwZSksbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIE5sKGUpLE9zKCksdCE9PW51bGwmJlgoV2EpLHQ9ZS5mbGFncyx0JjY1NTM2PyhlLmZsYWdzPXQmLTY1NTM3fDEyOCxlKTpudWxsO2Nhc2UgMjQ6cmV0dXJuIEFsKEZ0KSxudWxsO2Nhc2UgMjU6cmV0dXJuIG51bGw7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gWmYodCxlKXtzd2l0Y2goeHMoZSksZS50YWcpe2Nhc2UgMzpBbChGdCksSnQoKTticmVhaztjYXNlIDI2OmNhc2UgMjc6Y2FzZSA1OkNlKGUpO2JyZWFrO2Nhc2UgNDpKdCgpO2JyZWFrO2Nhc2UgMTM6TmwoZSk7YnJlYWs7Y2FzZSAxOTpYKEl0KTticmVhaztjYXNlIDEwOkFsKGUudHlwZSk7YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOk5sKGUpLE9zKCksdCE9PW51bGwmJlgoV2EpO2JyZWFrO2Nhc2UgMjQ6QWwoRnQpfX1mdW5jdGlvbiBCbyh0LGUpe3RyeXt2YXIgbD1lLnVwZGF0ZVF1ZXVlLGE9bCE9PW51bGw/bC5sYXN0RWZmZWN0Om51bGw7aWYoYSE9PW51bGwpe3ZhciBuPWEubmV4dDtsPW47ZG97aWYoKGwudGFnJnQpPT09dCl7YT12b2lkIDA7dmFyIG89bC5jcmVhdGUsdT1sLmluc3Q7YT1vKCksdS5kZXN0cm95PWF9bD1sLm5leHR9d2hpbGUobCE9PW4pfX1jYXRjaChmKXtrdChlLGUucmV0dXJuLGYpfX1mdW5jdGlvbiBvYSh0LGUsbCl7dHJ5e3ZhciBhPWUudXBkYXRlUXVldWUsbj1hIT09bnVsbD9hLmxhc3RFZmZlY3Q6bnVsbDtpZihuIT09bnVsbCl7dmFyIG89bi5uZXh0O2E9bztkb3tpZigoYS50YWcmdCk9PT10KXt2YXIgdT1hLmluc3QsZj11LmRlc3Ryb3k7aWYoZiE9PXZvaWQgMCl7dS5kZXN0cm95PXZvaWQgMCxuPWU7dmFyIGc9bCxTPWY7dHJ5e1MoKX1jYXRjaChOKXtrdChuLGcsTil9fX1hPWEubmV4dH13aGlsZShhIT09byl9fWNhdGNoKE4pe2t0KGUsZS5yZXR1cm4sTil9fWZ1bmN0aW9uIFFmKHQpe3ZhciBlPXQudXBkYXRlUXVldWU7aWYoZSE9PW51bGwpe3ZhciBsPXQuc3RhdGVOb2RlO3RyeXtfZChlLGwpfWNhdGNoKGEpe2t0KHQsdC5yZXR1cm4sYSl9fX1mdW5jdGlvbiBLZih0LGUsbCl7bC5wcm9wcz1GYSh0LnR5cGUsdC5tZW1vaXplZFByb3BzKSxsLnN0YXRlPXQubWVtb2l6ZWRTdGF0ZTt0cnl7bC5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKGEpe2t0KHQsZSxhKX19ZnVuY3Rpb24gTG8odCxlKXt0cnl7dmFyIGw9dC5yZWY7aWYobCE9PW51bGwpe3N3aXRjaCh0LnRhZyl7Y2FzZSAyNjpjYXNlIDI3OmNhc2UgNTp2YXIgYT10LnN0YXRlTm9kZTticmVhaztjYXNlIDMwOmE9dC5zdGF0ZU5vZGU7YnJlYWs7ZGVmYXVsdDphPXQuc3RhdGVOb2RlfXR5cGVvZiBsPT0iZnVuY3Rpb24iP3QucmVmQ2xlYW51cD1sKGEpOmwuY3VycmVudD1hfX1jYXRjaChuKXtrdCh0LGUsbil9fWZ1bmN0aW9uIGRsKHQsZSl7dmFyIGw9dC5yZWYsYT10LnJlZkNsZWFudXA7aWYobCE9PW51bGwpaWYodHlwZW9mIGE9PSJmdW5jdGlvbiIpdHJ5e2EoKX1jYXRjaChuKXtrdCh0LGUsbil9ZmluYWxseXt0LnJlZkNsZWFudXA9bnVsbCx0PXQuYWx0ZXJuYXRlLHQhPW51bGwmJih0LnJlZkNsZWFudXA9bnVsbCl9ZWxzZSBpZih0eXBlb2YgbD09ImZ1bmN0aW9uIil0cnl7bChudWxsKX1jYXRjaChuKXtrdCh0LGUsbil9ZWxzZSBsLmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiBQZih0KXt2YXIgZT10LnR5cGUsbD10Lm1lbW9pemVkUHJvcHMsYT10LnN0YXRlTm9kZTt0cnl7dDpzd2l0Y2goZSl7Y2FzZSJidXR0b24iOmNhc2UiaW5wdXQiOmNhc2Uic2VsZWN0IjpjYXNlInRleHRhcmVhIjpsLmF1dG9Gb2N1cyYmYS5mb2N1cygpO2JyZWFrIHQ7Y2FzZSJpbWciOmwuc3JjP2Euc3JjPWwuc3JjOmwuc3JjU2V0JiYoYS5zcmNzZXQ9bC5zcmNTZXQpfX1jYXRjaChuKXtrdCh0LHQucmV0dXJuLG4pfX1mdW5jdGlvbiBzYyh0LGUsbCl7dHJ5e3ZhciBhPXQuc3RhdGVOb2RlO1AxKGEsdC50eXBlLGwsZSksYVtwZV09ZX1jYXRjaChuKXtrdCh0LHQucmV0dXJuLG4pfX1mdW5jdGlvbiBKZih0KXtyZXR1cm4gdC50YWc9PT01fHx0LnRhZz09PTN8fHQudGFnPT09MjZ8fHQudGFnPT09MjcmJmhhKHQudHlwZSl8fHQudGFnPT09NH1mdW5jdGlvbiBjYyh0KXt0OmZvcig7Oyl7Zm9yKDt0LnNpYmxpbmc9PT1udWxsOyl7aWYodC5yZXR1cm49PT1udWxsfHxKZih0LnJldHVybikpcmV0dXJuIG51bGw7dD10LnJldHVybn1mb3IodC5zaWJsaW5nLnJldHVybj10LnJldHVybix0PXQuc2libGluZzt0LnRhZyE9PTUmJnQudGFnIT09NiYmdC50YWchPT0xODspe2lmKHQudGFnPT09MjcmJmhhKHQudHlwZSl8fHQuZmxhZ3MmMnx8dC5jaGlsZD09PW51bGx8fHQudGFnPT09NCljb250aW51ZSB0O3QuY2hpbGQucmV0dXJuPXQsdD10LmNoaWxkfWlmKCEodC5mbGFncyYyKSlyZXR1cm4gdC5zdGF0ZU5vZGV9fWZ1bmN0aW9uIHVjKHQsZSxsKXt2YXIgYT10LnRhZztpZihhPT09NXx8YT09PTYpdD10LnN0YXRlTm9kZSxlPyhsLm5vZGVUeXBlPT09OT9sLmJvZHk6bC5ub2RlTmFtZT09PSJIVE1MIj9sLm93bmVyRG9jdW1lbnQuYm9keTpsKS5pbnNlcnRCZWZvcmUodCxlKTooZT1sLm5vZGVUeXBlPT09OT9sLmJvZHk6bC5ub2RlTmFtZT09PSJIVE1MIj9sLm93bmVyRG9jdW1lbnQuYm9keTpsLGUuYXBwZW5kQ2hpbGQodCksbD1sLl9yZWFjdFJvb3RDb250YWluZXIsbCE9bnVsbHx8ZS5vbmNsaWNrIT09bnVsbHx8KGUub25jbGljaz1ocikpO2Vsc2UgaWYoYSE9PTQmJihhPT09MjcmJmhhKHQudHlwZSkmJihsPXQuc3RhdGVOb2RlLGU9bnVsbCksdD10LmNoaWxkLHQhPT1udWxsKSlmb3IodWModCxlLGwpLHQ9dC5zaWJsaW5nO3QhPT1udWxsOyl1Yyh0LGUsbCksdD10LnNpYmxpbmd9ZnVuY3Rpb24gbHIodCxlLGwpe3ZhciBhPXQudGFnO2lmKGE9PT01fHxhPT09Nil0PXQuc3RhdGVOb2RlLGU/bC5pbnNlcnRCZWZvcmUodCxlKTpsLmFwcGVuZENoaWxkKHQpO2Vsc2UgaWYoYSE9PTQmJihhPT09MjcmJmhhKHQudHlwZSkmJihsPXQuc3RhdGVOb2RlKSx0PXQuY2hpbGQsdCE9PW51bGwpKWZvcihscih0LGUsbCksdD10LnNpYmxpbmc7dCE9PW51bGw7KWxyKHQsZSxsKSx0PXQuc2libGluZ31mdW5jdGlvbiBXZih0KXt2YXIgZT10LnN0YXRlTm9kZSxsPXQubWVtb2l6ZWRQcm9wczt0cnl7Zm9yKHZhciBhPXQudHlwZSxuPWUuYXR0cmlidXRlcztuLmxlbmd0aDspZS5yZW1vdmVBdHRyaWJ1dGVOb2RlKG5bMF0pO2ZlKGUsYSxsKSxlW2VlXT10LGVbcGVdPWx9Y2F0Y2gobyl7a3QodCx0LnJldHVybixvKX19dmFyIGtsPSExLFl0PSExLGRjPSExLCRmPXR5cGVvZiBXZWFrU2V0PT0iZnVuY3Rpb24iP1dlYWtTZXQ6U2V0LG9lPW51bGw7ZnVuY3Rpb24gQTEodCxlKXtpZih0PXQuY29udGFpbmVySW5mbyxqYz14cix0PXJkKHQpLGNzKHQpKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gdCl2YXIgbD17c3RhcnQ6dC5zZWxlY3Rpb25TdGFydCxlbmQ6dC5zZWxlY3Rpb25FbmR9O2Vsc2UgdDp7bD0obD10Lm93bmVyRG9jdW1lbnQpJiZsLmRlZmF1bHRWaWV3fHx3aW5kb3c7dmFyIGE9bC5nZXRTZWxlY3Rpb24mJmwuZ2V0U2VsZWN0aW9uKCk7aWYoYSYmYS5yYW5nZUNvdW50IT09MCl7bD1hLmFuY2hvck5vZGU7dmFyIG49YS5hbmNob3JPZmZzZXQsbz1hLmZvY3VzTm9kZTthPWEuZm9jdXNPZmZzZXQ7dHJ5e2wubm9kZVR5cGUsby5ub2RlVHlwZX1jYXRjaHtsPW51bGw7YnJlYWsgdH12YXIgdT0wLGY9LTEsZz0tMSxTPTAsTj0wLGs9dCxFPW51bGw7ZTpmb3IoOzspe2Zvcih2YXIgVDtrIT09bHx8biE9PTAmJmsubm9kZVR5cGUhPT0zfHwoZj11K24pLGshPT1vfHxhIT09MCYmay5ub2RlVHlwZSE9PTN8fChnPXUrYSksay5ub2RlVHlwZT09PTMmJih1Kz1rLm5vZGVWYWx1ZS5sZW5ndGgpLChUPWsuZmlyc3RDaGlsZCkhPT1udWxsOylFPWssaz1UO2Zvcig7Oyl7aWYoaz09PXQpYnJlYWsgZTtpZihFPT09bCYmKytTPT09biYmKGY9dSksRT09PW8mJisrTj09PWEmJihnPXUpLChUPWsubmV4dFNpYmxpbmcpIT09bnVsbClicmVhaztrPUUsRT1rLnBhcmVudE5vZGV9az1UfWw9Zj09PS0xfHxnPT09LTE/bnVsbDp7c3RhcnQ6ZixlbmQ6Z319ZWxzZSBsPW51bGx9bD1sfHx7c3RhcnQ6MCxlbmQ6MH19ZWxzZSBsPW51bGw7Zm9yKEJjPXtmb2N1c2VkRWxlbTp0LHNlbGVjdGlvblJhbmdlOmx9LHhyPSExLG9lPWU7b2UhPT1udWxsOylpZihlPW9lLHQ9ZS5jaGlsZCwoZS5zdWJ0cmVlRmxhZ3MmMTAyNCkhPT0wJiZ0IT09bnVsbCl0LnJldHVybj1lLG9lPXQ7ZWxzZSBmb3IoO29lIT09bnVsbDspe3N3aXRjaChlPW9lLG89ZS5hbHRlcm5hdGUsdD1lLmZsYWdzLGUudGFnKXtjYXNlIDA6YnJlYWs7Y2FzZSAxMTpjYXNlIDE1OmJyZWFrO2Nhc2UgMTppZigodCYxMDI0KSE9PTAmJm8hPT1udWxsKXt0PXZvaWQgMCxsPWUsbj1vLm1lbW9pemVkUHJvcHMsbz1vLm1lbW9pemVkU3RhdGUsYT1sLnN0YXRlTm9kZTt0cnl7dmFyIGx0PUZhKGwudHlwZSxuLGwuZWxlbWVudFR5cGU9PT1sLnR5cGUpO3Q9YS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShsdCxvKSxhLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlPXR9Y2F0Y2goRil7a3QobCxsLnJldHVybixGKX19YnJlYWs7Y2FzZSAzOmlmKCh0JjEwMjQpIT09MCl7aWYodD1lLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGw9dC5ub2RlVHlwZSxsPT09OSlVYyh0KTtlbHNlIGlmKGw9PT0xKXN3aXRjaCh0Lm5vZGVOYW1lKXtjYXNlIkhFQUQiOmNhc2UiSFRNTCI6Y2FzZSJCT0RZIjpVYyh0KTticmVhaztkZWZhdWx0OnQudGV4dENvbnRlbnQ9IiJ9fWJyZWFrO2Nhc2UgNTpjYXNlIDI2OmNhc2UgMjc6Y2FzZSA2OmNhc2UgNDpjYXNlIDE3OmJyZWFrO2RlZmF1bHQ6aWYoKHQmMTAyNCkhPT0wKXRocm93IEVycm9yKHMoMTYzKSl9aWYodD1lLnNpYmxpbmcsdCE9PW51bGwpe3QucmV0dXJuPWUucmV0dXJuLG9lPXQ7YnJlYWt9b2U9ZS5yZXR1cm59fWZ1bmN0aW9uIEZmKHQsZSxsKXt2YXIgYT1sLmZsYWdzO3N3aXRjaChsLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTppYSh0LGwpLGEmNCYmQm8oNSxsKTticmVhaztjYXNlIDE6aWYoaWEodCxsKSxhJjQpaWYodD1sLnN0YXRlTm9kZSxlPT09bnVsbCl0cnl7dC5jb21wb25lbnREaWRNb3VudCgpfWNhdGNoKHUpe2t0KGwsbC5yZXR1cm4sdSl9ZWxzZXt2YXIgbj1GYShsLnR5cGUsZS5tZW1vaXplZFByb3BzKTtlPWUubWVtb2l6ZWRTdGF0ZTt0cnl7dC5jb21wb25lbnREaWRVcGRhdGUobixlLHQuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUpfWNhdGNoKHUpe2t0KGwsbC5yZXR1cm4sdSl9fWEmNjQmJlFmKGwpLGEmNTEyJiZMbyhsLGwucmV0dXJuKTticmVhaztjYXNlIDM6aWYoaWEodCxsKSxhJjY0JiYodD1sLnVwZGF0ZVF1ZXVlLHQhPT1udWxsKSl7aWYoZT1udWxsLGwuY2hpbGQhPT1udWxsKXN3aXRjaChsLmNoaWxkLnRhZyl7Y2FzZSAyNzpjYXNlIDU6ZT1sLmNoaWxkLnN0YXRlTm9kZTticmVhaztjYXNlIDE6ZT1sLmNoaWxkLnN0YXRlTm9kZX10cnl7X2QodCxlKX1jYXRjaCh1KXtrdChsLGwucmV0dXJuLHUpfX1icmVhaztjYXNlIDI3OmU9PT1udWxsJiZhJjQmJldmKGwpO2Nhc2UgMjY6Y2FzZSA1OmlhKHQsbCksZT09PW51bGwmJmEmNCYmUGYobCksYSY1MTImJkxvKGwsbC5yZXR1cm4pO2JyZWFrO2Nhc2UgMTI6aWEodCxsKTticmVhaztjYXNlIDEzOmlhKHQsbCksYSY0JiZlaCh0LGwpLGEmNjQmJih0PWwubWVtb2l6ZWRTdGF0ZSx0IT09bnVsbCYmKHQ9dC5kZWh5ZHJhdGVkLHQhPT1udWxsJiYobD1MMS5iaW5kKG51bGwsbCksZXAodCxsKSkpKTticmVhaztjYXNlIDIyOmlmKGE9bC5tZW1vaXplZFN0YXRlIT09bnVsbHx8a2wsIWEpe2U9ZSE9PW51bGwmJmUubWVtb2l6ZWRTdGF0ZSE9PW51bGx8fFl0LG49a2w7dmFyIG89WXQ7a2w9YSwoWXQ9ZSkmJiFvP3JhKHQsbCwobC5zdWJ0cmVlRmxhZ3MmODc3MikhPT0wKTppYSh0LGwpLGtsPW4sWXQ9b31icmVhaztjYXNlIDMwOmJyZWFrO2RlZmF1bHQ6aWEodCxsKX19ZnVuY3Rpb24gSWYodCl7dmFyIGU9dC5hbHRlcm5hdGU7ZSE9PW51bGwmJih0LmFsdGVybmF0ZT1udWxsLElmKGUpKSx0LmNoaWxkPW51bGwsdC5kZWxldGlvbnM9bnVsbCx0LnNpYmxpbmc9bnVsbCx0LnRhZz09PTUmJihlPXQuc3RhdGVOb2RlLGUhPT1udWxsJiZvbyhlKSksdC5zdGF0ZU5vZGU9bnVsbCx0LnJldHVybj1udWxsLHQuZGVwZW5kZW5jaWVzPW51bGwsdC5tZW1vaXplZFByb3BzPW51bGwsdC5tZW1vaXplZFN0YXRlPW51bGwsdC5wZW5kaW5nUHJvcHM9bnVsbCx0LnN0YXRlTm9kZT1udWxsLHQudXBkYXRlUXVldWU9bnVsbH12YXIgTHQ9bnVsbCxEZT0hMTtmdW5jdGlvbiBPbCh0LGUsbCl7Zm9yKGw9bC5jaGlsZDtsIT09bnVsbDspdGgodCxlLGwpLGw9bC5zaWJsaW5nfWZ1bmN0aW9uIHRoKHQsZSxsKXtpZihXdCYmdHlwZW9mIFd0Lm9uQ29tbWl0RmliZXJVbm1vdW50PT0iZnVuY3Rpb24iKXRyeXtXdC5vbkNvbW1pdEZpYmVyVW5tb3VudChxbCxsKX1jYXRjaHt9c3dpdGNoKGwudGFnKXtjYXNlIDI2Oll0fHxkbChsLGUpLE9sKHQsZSxsKSxsLm1lbW9pemVkU3RhdGU/bC5tZW1vaXplZFN0YXRlLmNvdW50LS06bC5zdGF0ZU5vZGUmJihsPWwuc3RhdGVOb2RlLGwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChsKSk7YnJlYWs7Y2FzZSAyNzpZdHx8ZGwobCxlKTt2YXIgYT1MdCxuPURlO2hhKGwudHlwZSkmJihMdD1sLnN0YXRlTm9kZSxEZT0hMSksT2wodCxlLGwpLFFvKGwuc3RhdGVOb2RlKSxMdD1hLERlPW47YnJlYWs7Y2FzZSA1Oll0fHxkbChsLGUpO2Nhc2UgNjppZihhPUx0LG49RGUsTHQ9bnVsbCxPbCh0LGUsbCksTHQ9YSxEZT1uLEx0IT09bnVsbClpZihEZSl0cnl7KEx0Lm5vZGVUeXBlPT09OT9MdC5ib2R5Okx0Lm5vZGVOYW1lPT09IkhUTUwiP0x0Lm93bmVyRG9jdW1lbnQuYm9keTpMdCkucmVtb3ZlQ2hpbGQobC5zdGF0ZU5vZGUpfWNhdGNoKG8pe2t0KGwsZSxvKX1lbHNlIHRyeXtMdC5yZW1vdmVDaGlsZChsLnN0YXRlTm9kZSl9Y2F0Y2gobyl7a3QobCxlLG8pfWJyZWFrO2Nhc2UgMTg6THQhPT1udWxsJiYoRGU/KHQ9THQsWWgodC5ub2RlVHlwZT09PTk/dC5ib2R5OnQubm9kZU5hbWU9PT0iSFRNTCI/dC5vd25lckRvY3VtZW50LmJvZHk6dCxsLnN0YXRlTm9kZSksdGkodCkpOlloKEx0LGwuc3RhdGVOb2RlKSk7YnJlYWs7Y2FzZSA0OmE9THQsbj1EZSxMdD1sLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLERlPSEwLE9sKHQsZSxsKSxMdD1hLERlPW47YnJlYWs7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1Oll0fHxvYSgyLGwsZSksWXR8fG9hKDQsbCxlKSxPbCh0LGUsbCk7YnJlYWs7Y2FzZSAxOll0fHwoZGwobCxlKSxhPWwuc3RhdGVOb2RlLHR5cGVvZiBhLmNvbXBvbmVudFdpbGxVbm1vdW50PT0iZnVuY3Rpb24iJiZLZihsLGUsYSkpLE9sKHQsZSxsKTticmVhaztjYXNlIDIxOk9sKHQsZSxsKTticmVhaztjYXNlIDIyOll0PShhPVl0KXx8bC5tZW1vaXplZFN0YXRlIT09bnVsbCxPbCh0LGUsbCksWXQ9YTticmVhaztkZWZhdWx0Ok9sKHQsZSxsKX19ZnVuY3Rpb24gZWgodCxlKXtpZihlLm1lbW9pemVkU3RhdGU9PT1udWxsJiYodD1lLmFsdGVybmF0ZSx0IT09bnVsbCYmKHQ9dC5tZW1vaXplZFN0YXRlLHQhPT1udWxsJiYodD10LmRlaHlkcmF0ZWQsdCE9PW51bGwpKSkpdHJ5e3RpKHQpfWNhdGNoKGwpe2t0KGUsZS5yZXR1cm4sbCl9fWZ1bmN0aW9uIFIxKHQpe3N3aXRjaCh0LnRhZyl7Y2FzZSAxMzpjYXNlIDE5OnZhciBlPXQuc3RhdGVOb2RlO3JldHVybiBlPT09bnVsbCYmKGU9dC5zdGF0ZU5vZGU9bmV3ICRmKSxlO2Nhc2UgMjI6cmV0dXJuIHQ9dC5zdGF0ZU5vZGUsZT10Ll9yZXRyeUNhY2hlLGU9PT1udWxsJiYoZT10Ll9yZXRyeUNhY2hlPW5ldyAkZiksZTtkZWZhdWx0OnRocm93IEVycm9yKHMoNDM1LHQudGFnKSl9fWZ1bmN0aW9uIGZjKHQsZSl7dmFyIGw9UjEodCk7ZS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBuPUgxLmJpbmQobnVsbCx0LGEpO2wuaGFzKGEpfHwobC5hZGQoYSksYS50aGVuKG4sbikpfSl9ZnVuY3Rpb24gemUodCxlKXt2YXIgbD1lLmRlbGV0aW9ucztpZihsIT09bnVsbClmb3IodmFyIGE9MDthPGwubGVuZ3RoO2ErKyl7dmFyIG49bFthXSxvPXQsdT1lLGY9dTt0OmZvcig7ZiE9PW51bGw7KXtzd2l0Y2goZi50YWcpe2Nhc2UgMjc6aWYoaGEoZi50eXBlKSl7THQ9Zi5zdGF0ZU5vZGUsRGU9ITE7YnJlYWsgdH1icmVhaztjYXNlIDU6THQ9Zi5zdGF0ZU5vZGUsRGU9ITE7YnJlYWsgdDtjYXNlIDM6Y2FzZSA0Okx0PWYuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sRGU9ITA7YnJlYWsgdH1mPWYucmV0dXJufWlmKEx0PT09bnVsbCl0aHJvdyBFcnJvcihzKDE2MCkpO3RoKG8sdSxuKSxMdD1udWxsLERlPSExLG89bi5hbHRlcm5hdGUsbyE9PW51bGwmJihvLnJldHVybj1udWxsKSxuLnJldHVybj1udWxsfWlmKGUuc3VidHJlZUZsYWdzJjEzODc4KWZvcihlPWUuY2hpbGQ7ZSE9PW51bGw7KWxoKGUsdCksZT1lLnNpYmxpbmd9dmFyIGVsPW51bGw7ZnVuY3Rpb24gbGgodCxlKXt2YXIgbD10LmFsdGVybmF0ZSxhPXQuZmxhZ3M7c3dpdGNoKHQudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6emUoZSx0KSxfZSh0KSxhJjQmJihvYSgzLHQsdC5yZXR1cm4pLEJvKDMsdCksb2EoNSx0LHQucmV0dXJuKSk7YnJlYWs7Y2FzZSAxOnplKGUsdCksX2UodCksYSY1MTImJihZdHx8bD09PW51bGx8fGRsKGwsbC5yZXR1cm4pKSxhJjY0JiZrbCYmKHQ9dC51cGRhdGVRdWV1ZSx0IT09bnVsbCYmKGE9dC5jYWxsYmFja3MsYSE9PW51bGwmJihsPXQuc2hhcmVkLmhpZGRlbkNhbGxiYWNrcyx0LnNoYXJlZC5oaWRkZW5DYWxsYmFja3M9bD09PW51bGw/YTpsLmNvbmNhdChhKSkpKTticmVhaztjYXNlIDI2OnZhciBuPWVsO2lmKHplKGUsdCksX2UodCksYSY1MTImJihZdHx8bD09PW51bGx8fGRsKGwsbC5yZXR1cm4pKSxhJjQpe3ZhciBvPWwhPT1udWxsP2wubWVtb2l6ZWRTdGF0ZTpudWxsO2lmKGE9dC5tZW1vaXplZFN0YXRlLGw9PT1udWxsKWlmKGE9PT1udWxsKWlmKHQuc3RhdGVOb2RlPT09bnVsbCl7dDp7YT10LnR5cGUsbD10Lm1lbW9pemVkUHJvcHMsbj1uLm93bmVyRG9jdW1lbnR8fG47ZTpzd2l0Y2goYSl7Y2FzZSJ0aXRsZSI6bz1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0aXRsZSIpWzBdLCghb3x8b1tNYV18fG9bZWVdfHxvLm5hbWVzcGFjZVVSST09PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ8fG8uaGFzQXR0cmlidXRlKCJpdGVtcHJvcCIpKSYmKG89bi5jcmVhdGVFbGVtZW50KGEpLG4uaGVhZC5pbnNlcnRCZWZvcmUobyxuLnF1ZXJ5U2VsZWN0b3IoImhlYWQgPiB0aXRsZSIpKSksZmUobyxhLGwpLG9bZWVdPXQsVnQobyksYT1vO2JyZWFrIHQ7Y2FzZSJsaW5rIjp2YXIgdT1XaCgibGluayIsImhyZWYiLG4pLmdldChhKyhsLmhyZWZ8fCIiKSk7aWYodSl7Zm9yKHZhciBmPTA7Zjx1Lmxlbmd0aDtmKyspaWYobz11W2ZdLG8uZ2V0QXR0cmlidXRlKCJocmVmIik9PT0obC5ocmVmPT1udWxsfHxsLmhyZWY9PT0iIj9udWxsOmwuaHJlZikmJm8uZ2V0QXR0cmlidXRlKCJyZWwiKT09PShsLnJlbD09bnVsbD9udWxsOmwucmVsKSYmby5nZXRBdHRyaWJ1dGUoInRpdGxlIik9PT0obC50aXRsZT09bnVsbD9udWxsOmwudGl0bGUpJiZvLmdldEF0dHJpYnV0ZSgiY3Jvc3NvcmlnaW4iKT09PShsLmNyb3NzT3JpZ2luPT1udWxsP251bGw6bC5jcm9zc09yaWdpbikpe3Uuc3BsaWNlKGYsMSk7YnJlYWsgZX19bz1uLmNyZWF0ZUVsZW1lbnQoYSksZmUobyxhLGwpLG4uaGVhZC5hcHBlbmRDaGlsZChvKTticmVhaztjYXNlIm1ldGEiOmlmKHU9V2goIm1ldGEiLCJjb250ZW50IixuKS5nZXQoYSsobC5jb250ZW50fHwiIikpKXtmb3IoZj0wO2Y8dS5sZW5ndGg7ZisrKWlmKG89dVtmXSxvLmdldEF0dHJpYnV0ZSgiY29udGVudCIpPT09KGwuY29udGVudD09bnVsbD9udWxsOiIiK2wuY29udGVudCkmJm8uZ2V0QXR0cmlidXRlKCJuYW1lIik9PT0obC5uYW1lPT1udWxsP251bGw6bC5uYW1lKSYmby5nZXRBdHRyaWJ1dGUoInByb3BlcnR5Iik9PT0obC5wcm9wZXJ0eT09bnVsbD9udWxsOmwucHJvcGVydHkpJiZvLmdldEF0dHJpYnV0ZSgiaHR0cC1lcXVpdiIpPT09KGwuaHR0cEVxdWl2PT1udWxsP251bGw6bC5odHRwRXF1aXYpJiZvLmdldEF0dHJpYnV0ZSgiY2hhcnNldCIpPT09KGwuY2hhclNldD09bnVsbD9udWxsOmwuY2hhclNldCkpe3Uuc3BsaWNlKGYsMSk7YnJlYWsgZX19bz1uLmNyZWF0ZUVsZW1lbnQoYSksZmUobyxhLGwpLG4uaGVhZC5hcHBlbmRDaGlsZChvKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKHMoNDY4LGEpKX1vW2VlXT10LFZ0KG8pLGE9b310LnN0YXRlTm9kZT1hfWVsc2UgJGgobix0LnR5cGUsdC5zdGF0ZU5vZGUpO2Vsc2UgdC5zdGF0ZU5vZGU9SmgobixhLHQubWVtb2l6ZWRQcm9wcyk7ZWxzZSBvIT09YT8obz09PW51bGw/bC5zdGF0ZU5vZGUhPT1udWxsJiYobD1sLnN0YXRlTm9kZSxsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobCkpOm8uY291bnQtLSxhPT09bnVsbD8kaChuLHQudHlwZSx0LnN0YXRlTm9kZSk6SmgobixhLHQubWVtb2l6ZWRQcm9wcykpOmE9PT1udWxsJiZ0LnN0YXRlTm9kZSE9PW51bGwmJnNjKHQsdC5tZW1vaXplZFByb3BzLGwubWVtb2l6ZWRQcm9wcyl9YnJlYWs7Y2FzZSAyNzp6ZShlLHQpLF9lKHQpLGEmNTEyJiYoWXR8fGw9PT1udWxsfHxkbChsLGwucmV0dXJuKSksbCE9PW51bGwmJmEmNCYmc2ModCx0Lm1lbW9pemVkUHJvcHMsbC5tZW1vaXplZFByb3BzKTticmVhaztjYXNlIDU6aWYoemUoZSx0KSxfZSh0KSxhJjUxMiYmKFl0fHxsPT09bnVsbHx8ZGwobCxsLnJldHVybikpLHQuZmxhZ3MmMzIpe249dC5zdGF0ZU5vZGU7dHJ5e0ZlKG4sIiIpfWNhdGNoKFQpe2t0KHQsdC5yZXR1cm4sVCl9fWEmNCYmdC5zdGF0ZU5vZGUhPW51bGwmJihuPXQubWVtb2l6ZWRQcm9wcyxzYyh0LG4sbCE9PW51bGw/bC5tZW1vaXplZFByb3BzOm4pKSxhJjEwMjQmJihkYz0hMCk7YnJlYWs7Y2FzZSA2OmlmKHplKGUsdCksX2UodCksYSY0KXtpZih0LnN0YXRlTm9kZT09PW51bGwpdGhyb3cgRXJyb3IocygxNjIpKTthPXQubWVtb2l6ZWRQcm9wcyxsPXQuc3RhdGVOb2RlO3RyeXtsLm5vZGVWYWx1ZT1hfWNhdGNoKFQpe2t0KHQsdC5yZXR1cm4sVCl9fWJyZWFrO2Nhc2UgMzppZih5cj1udWxsLG49ZWwsZWw9Z3IoZS5jb250YWluZXJJbmZvKSx6ZShlLHQpLGVsPW4sX2UodCksYSY0JiZsIT09bnVsbCYmbC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl0cnl7dGkoZS5jb250YWluZXJJbmZvKX1jYXRjaChUKXtrdCh0LHQucmV0dXJuLFQpfWRjJiYoZGM9ITEsYWgodCkpO2JyZWFrO2Nhc2UgNDphPWVsLGVsPWdyKHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLHplKGUsdCksX2UodCksZWw9YTticmVhaztjYXNlIDEyOnplKGUsdCksX2UodCk7YnJlYWs7Y2FzZSAxMzp6ZShlLHQpLF9lKHQpLHQuY2hpbGQuZmxhZ3MmODE5MiYmdC5tZW1vaXplZFN0YXRlIT09bnVsbCE9KGwhPT1udWxsJiZsLm1lbW9pemVkU3RhdGUhPT1udWxsKSYmKHZjPWdlKCkpLGEmNCYmKGE9dC51cGRhdGVRdWV1ZSxhIT09bnVsbCYmKHQudXBkYXRlUXVldWU9bnVsbCxmYyh0LGEpKSk7YnJlYWs7Y2FzZSAyMjpuPXQubWVtb2l6ZWRTdGF0ZSE9PW51bGw7dmFyIGc9bCE9PW51bGwmJmwubWVtb2l6ZWRTdGF0ZSE9PW51bGwsUz1rbCxOPVl0O2lmKGtsPVN8fG4sWXQ9Tnx8Zyx6ZShlLHQpLFl0PU4sa2w9UyxfZSh0KSxhJjgxOTIpdDpmb3IoZT10LnN0YXRlTm9kZSxlLl92aXNpYmlsaXR5PW4/ZS5fdmlzaWJpbGl0eSYtMjplLl92aXNpYmlsaXR5fDEsbiYmKGw9PT1udWxsfHxnfHxrbHx8WXR8fElhKHQpKSxsPW51bGwsZT10Ozspe2lmKGUudGFnPT09NXx8ZS50YWc9PT0yNil7aWYobD09PW51bGwpe2c9bD1lO3RyeXtpZihvPWcuc3RhdGVOb2RlLG4pdT1vLnN0eWxlLHR5cGVvZiB1LnNldFByb3BlcnR5PT0iZnVuY3Rpb24iP3Uuc2V0UHJvcGVydHkoImRpc3BsYXkiLCJub25lIiwiaW1wb3J0YW50Iik6dS5kaXNwbGF5PSJub25lIjtlbHNle2Y9Zy5zdGF0ZU5vZGU7dmFyIGs9Zy5tZW1vaXplZFByb3BzLnN0eWxlLEU9ayE9bnVsbCYmay5oYXNPd25Qcm9wZXJ0eSgiZGlzcGxheSIpP2suZGlzcGxheTpudWxsO2Yuc3R5bGUuZGlzcGxheT1FPT1udWxsfHx0eXBlb2YgRT09ImJvb2xlYW4iPyIiOigiIitFKS50cmltKCl9fWNhdGNoKFQpe2t0KGcsZy5yZXR1cm4sVCl9fX1lbHNlIGlmKGUudGFnPT09Nil7aWYobD09PW51bGwpe2c9ZTt0cnl7Zy5zdGF0ZU5vZGUubm9kZVZhbHVlPW4/IiI6Zy5tZW1vaXplZFByb3BzfWNhdGNoKFQpe2t0KGcsZy5yZXR1cm4sVCl9fX1lbHNlIGlmKChlLnRhZyE9PTIyJiZlLnRhZyE9PTIzfHxlLm1lbW9pemVkU3RhdGU9PT1udWxsfHxlPT09dCkmJmUuY2hpbGQhPT1udWxsKXtlLmNoaWxkLnJldHVybj1lLGU9ZS5jaGlsZDtjb250aW51ZX1pZihlPT09dClicmVhayB0O2Zvcig7ZS5zaWJsaW5nPT09bnVsbDspe2lmKGUucmV0dXJuPT09bnVsbHx8ZS5yZXR1cm49PT10KWJyZWFrIHQ7bD09PWUmJihsPW51bGwpLGU9ZS5yZXR1cm59bD09PWUmJihsPW51bGwpLGUuc2libGluZy5yZXR1cm49ZS5yZXR1cm4sZT1lLnNpYmxpbmd9YSY0JiYoYT10LnVwZGF0ZVF1ZXVlLGEhPT1udWxsJiYobD1hLnJldHJ5UXVldWUsbCE9PW51bGwmJihhLnJldHJ5UXVldWU9bnVsbCxmYyh0LGwpKSkpO2JyZWFrO2Nhc2UgMTk6emUoZSx0KSxfZSh0KSxhJjQmJihhPXQudXBkYXRlUXVldWUsYSE9PW51bGwmJih0LnVwZGF0ZVF1ZXVlPW51bGwsZmModCxhKSkpO2JyZWFrO2Nhc2UgMzA6YnJlYWs7Y2FzZSAyMTpicmVhaztkZWZhdWx0OnplKGUsdCksX2UodCl9fWZ1bmN0aW9uIF9lKHQpe3ZhciBlPXQuZmxhZ3M7aWYoZSYyKXt0cnl7Zm9yKHZhciBsLGE9dC5yZXR1cm47YSE9PW51bGw7KXtpZihKZihhKSl7bD1hO2JyZWFrfWE9YS5yZXR1cm59aWYobD09bnVsbCl0aHJvdyBFcnJvcihzKDE2MCkpO3N3aXRjaChsLnRhZyl7Y2FzZSAyNzp2YXIgbj1sLnN0YXRlTm9kZSxvPWNjKHQpO2xyKHQsbyxuKTticmVhaztjYXNlIDU6dmFyIHU9bC5zdGF0ZU5vZGU7bC5mbGFncyYzMiYmKEZlKHUsIiIpLGwuZmxhZ3MmPS0zMyk7dmFyIGY9Y2ModCk7bHIodCxmLHUpO2JyZWFrO2Nhc2UgMzpjYXNlIDQ6dmFyIGc9bC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxTPWNjKHQpO3VjKHQsUyxnKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKHMoMTYxKSl9fWNhdGNoKE4pe2t0KHQsdC5yZXR1cm4sTil9dC5mbGFncyY9LTN9ZSY0MDk2JiYodC5mbGFncyY9LTQwOTcpfWZ1bmN0aW9uIGFoKHQpe2lmKHQuc3VidHJlZUZsYWdzJjEwMjQpZm9yKHQ9dC5jaGlsZDt0IT09bnVsbDspe3ZhciBlPXQ7YWgoZSksZS50YWc9PT01JiZlLmZsYWdzJjEwMjQmJmUuc3RhdGVOb2RlLnJlc2V0KCksdD10LnNpYmxpbmd9fWZ1bmN0aW9uIGlhKHQsZSl7aWYoZS5zdWJ0cmVlRmxhZ3MmODc3Milmb3IoZT1lLmNoaWxkO2UhPT1udWxsOylGZih0LGUuYWx0ZXJuYXRlLGUpLGU9ZS5zaWJsaW5nfWZ1bmN0aW9uIElhKHQpe2Zvcih0PXQuY2hpbGQ7dCE9PW51bGw7KXt2YXIgZT10O3N3aXRjaChlLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1Om9hKDQsZSxlLnJldHVybiksSWEoZSk7YnJlYWs7Y2FzZSAxOmRsKGUsZS5yZXR1cm4pO3ZhciBsPWUuc3RhdGVOb2RlO3R5cGVvZiBsLmNvbXBvbmVudFdpbGxVbm1vdW50PT0iZnVuY3Rpb24iJiZLZihlLGUucmV0dXJuLGwpLElhKGUpO2JyZWFrO2Nhc2UgMjc6UW8oZS5zdGF0ZU5vZGUpO2Nhc2UgMjY6Y2FzZSA1OmRsKGUsZS5yZXR1cm4pLElhKGUpO2JyZWFrO2Nhc2UgMjI6ZS5tZW1vaXplZFN0YXRlPT09bnVsbCYmSWEoZSk7YnJlYWs7Y2FzZSAzMDpJYShlKTticmVhaztkZWZhdWx0OklhKGUpfXQ9dC5zaWJsaW5nfX1mdW5jdGlvbiByYSh0LGUsbCl7Zm9yKGw9bCYmKGUuc3VidHJlZUZsYWdzJjg3NzIpIT09MCxlPWUuY2hpbGQ7ZSE9PW51bGw7KXt2YXIgYT1lLmFsdGVybmF0ZSxuPXQsbz1lLHU9by5mbGFncztzd2l0Y2goby50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6cmEobixvLGwpLEJvKDQsbyk7YnJlYWs7Y2FzZSAxOmlmKHJhKG4sbyxsKSxhPW8sbj1hLnN0YXRlTm9kZSx0eXBlb2Ygbi5jb21wb25lbnREaWRNb3VudD09ImZ1bmN0aW9uIil0cnl7bi5jb21wb25lbnREaWRNb3VudCgpfWNhdGNoKFMpe2t0KGEsYS5yZXR1cm4sUyl9aWYoYT1vLG49YS51cGRhdGVRdWV1ZSxuIT09bnVsbCl7dmFyIGY9YS5zdGF0ZU5vZGU7dHJ5e3ZhciBnPW4uc2hhcmVkLmhpZGRlbkNhbGxiYWNrcztpZihnIT09bnVsbClmb3Iobi5zaGFyZWQuaGlkZGVuQ2FsbGJhY2tzPW51bGwsbj0wO248Zy5sZW5ndGg7bisrKXpkKGdbbl0sZil9Y2F0Y2goUyl7a3QoYSxhLnJldHVybixTKX19bCYmdSY2NCYmUWYobyksTG8obyxvLnJldHVybik7YnJlYWs7Y2FzZSAyNzpXZihvKTtjYXNlIDI2OmNhc2UgNTpyYShuLG8sbCksbCYmYT09PW51bGwmJnUmNCYmUGYobyksTG8obyxvLnJldHVybik7YnJlYWs7Y2FzZSAxMjpyYShuLG8sbCk7YnJlYWs7Y2FzZSAxMzpyYShuLG8sbCksbCYmdSY0JiZlaChuLG8pO2JyZWFrO2Nhc2UgMjI6by5tZW1vaXplZFN0YXRlPT09bnVsbCYmcmEobixvLGwpLExvKG8sby5yZXR1cm4pO2JyZWFrO2Nhc2UgMzA6YnJlYWs7ZGVmYXVsdDpyYShuLG8sbCl9ZT1lLnNpYmxpbmd9fWZ1bmN0aW9uIGhjKHQsZSl7dmFyIGw9bnVsbDt0IT09bnVsbCYmdC5tZW1vaXplZFN0YXRlIT09bnVsbCYmdC5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbCE9PW51bGwmJihsPXQubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wucG9vbCksdD1udWxsLGUubWVtb2l6ZWRTdGF0ZSE9PW51bGwmJmUubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2whPT1udWxsJiYodD1lLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sLnBvb2wpLHQhPT1sJiYodCE9bnVsbCYmdC5yZWZDb3VudCsrLGwhPW51bGwmJlNvKGwpKX1mdW5jdGlvbiBtYyh0LGUpe3Q9bnVsbCxlLmFsdGVybmF0ZSE9PW51bGwmJih0PWUuYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGUuY2FjaGUpLGU9ZS5tZW1vaXplZFN0YXRlLmNhY2hlLGUhPT10JiYoZS5yZWZDb3VudCsrLHQhPW51bGwmJlNvKHQpKX1mdW5jdGlvbiBmbCh0LGUsbCxhKXtpZihlLnN1YnRyZWVGbGFncyYxMDI1Nilmb3IoZT1lLmNoaWxkO2UhPT1udWxsOyluaCh0LGUsbCxhKSxlPWUuc2libGluZ31mdW5jdGlvbiBuaCh0LGUsbCxhKXt2YXIgbj1lLmZsYWdzO3N3aXRjaChlLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpmbCh0LGUsbCxhKSxuJjIwNDgmJkJvKDksZSk7YnJlYWs7Y2FzZSAxOmZsKHQsZSxsLGEpO2JyZWFrO2Nhc2UgMzpmbCh0LGUsbCxhKSxuJjIwNDgmJih0PW51bGwsZS5hbHRlcm5hdGUhPT1udWxsJiYodD1lLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlLmNhY2hlKSxlPWUubWVtb2l6ZWRTdGF0ZS5jYWNoZSxlIT09dCYmKGUucmVmQ291bnQrKyx0IT1udWxsJiZTbyh0KSkpO2JyZWFrO2Nhc2UgMTI6aWYobiYyMDQ4KXtmbCh0LGUsbCxhKSx0PWUuc3RhdGVOb2RlO3RyeXt2YXIgbz1lLm1lbW9pemVkUHJvcHMsdT1vLmlkLGY9by5vblBvc3RDb21taXQ7dHlwZW9mIGY9PSJmdW5jdGlvbiImJmYodSxlLmFsdGVybmF0ZT09PW51bGw/Im1vdW50IjoidXBkYXRlIix0LnBhc3NpdmVFZmZlY3REdXJhdGlvbiwtMCl9Y2F0Y2goZyl7a3QoZSxlLnJldHVybixnKX19ZWxzZSBmbCh0LGUsbCxhKTticmVhaztjYXNlIDEzOmZsKHQsZSxsLGEpO2JyZWFrO2Nhc2UgMjM6YnJlYWs7Y2FzZSAyMjpvPWUuc3RhdGVOb2RlLHU9ZS5hbHRlcm5hdGUsZS5tZW1vaXplZFN0YXRlIT09bnVsbD9vLl92aXNpYmlsaXR5JjI/ZmwodCxlLGwsYSk6SG8odCxlKTpvLl92aXNpYmlsaXR5JjI/ZmwodCxlLGwsYSk6KG8uX3Zpc2liaWxpdHl8PTIsT24odCxlLGwsYSwoZS5zdWJ0cmVlRmxhZ3MmMTAyNTYpIT09MCkpLG4mMjA0OCYmaGModSxlKTticmVhaztjYXNlIDI0OmZsKHQsZSxsLGEpLG4mMjA0OCYmbWMoZS5hbHRlcm5hdGUsZSk7YnJlYWs7ZGVmYXVsdDpmbCh0LGUsbCxhKX19ZnVuY3Rpb24gT24odCxlLGwsYSxuKXtmb3Iobj1uJiYoZS5zdWJ0cmVlRmxhZ3MmMTAyNTYpIT09MCxlPWUuY2hpbGQ7ZSE9PW51bGw7KXt2YXIgbz10LHU9ZSxmPWwsZz1hLFM9dS5mbGFncztzd2l0Y2godS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6T24obyx1LGYsZyxuKSxCbyg4LHUpO2JyZWFrO2Nhc2UgMjM6YnJlYWs7Y2FzZSAyMjp2YXIgTj11LnN0YXRlTm9kZTt1Lm1lbW9pemVkU3RhdGUhPT1udWxsP04uX3Zpc2liaWxpdHkmMj9PbihvLHUsZixnLG4pOkhvKG8sdSk6KE4uX3Zpc2liaWxpdHl8PTIsT24obyx1LGYsZyxuKSksbiYmUyYyMDQ4JiZoYyh1LmFsdGVybmF0ZSx1KTticmVhaztjYXNlIDI0Ok9uKG8sdSxmLGcsbiksbiYmUyYyMDQ4JiZtYyh1LmFsdGVybmF0ZSx1KTticmVhaztkZWZhdWx0Ok9uKG8sdSxmLGcsbil9ZT1lLnNpYmxpbmd9fWZ1bmN0aW9uIEhvKHQsZSl7aWYoZS5zdWJ0cmVlRmxhZ3MmMTAyNTYpZm9yKGU9ZS5jaGlsZDtlIT09bnVsbDspe3ZhciBsPXQsYT1lLG49YS5mbGFncztzd2l0Y2goYS50YWcpe2Nhc2UgMjI6SG8obCxhKSxuJjIwNDgmJmhjKGEuYWx0ZXJuYXRlLGEpO2JyZWFrO2Nhc2UgMjQ6SG8obCxhKSxuJjIwNDgmJm1jKGEuYWx0ZXJuYXRlLGEpO2JyZWFrO2RlZmF1bHQ6SG8obCxhKX1lPWUuc2libGluZ319dmFyIFVvPTgxOTI7ZnVuY3Rpb24gam4odCl7aWYodC5zdWJ0cmVlRmxhZ3MmVW8pZm9yKHQ9dC5jaGlsZDt0IT09bnVsbDspb2godCksdD10LnNpYmxpbmd9ZnVuY3Rpb24gb2godCl7c3dpdGNoKHQudGFnKXtjYXNlIDI2OmpuKHQpLHQuZmxhZ3MmVW8mJnQubWVtb2l6ZWRTdGF0ZSE9PW51bGwmJm1wKGVsLHQubWVtb2l6ZWRTdGF0ZSx0Lm1lbW9pemVkUHJvcHMpO2JyZWFrO2Nhc2UgNTpqbih0KTticmVhaztjYXNlIDM6Y2FzZSA0OnZhciBlPWVsO2VsPWdyKHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLGpuKHQpLGVsPWU7YnJlYWs7Y2FzZSAyMjp0Lm1lbW9pemVkU3RhdGU9PT1udWxsJiYoZT10LmFsdGVybmF0ZSxlIT09bnVsbCYmZS5tZW1vaXplZFN0YXRlIT09bnVsbD8oZT1VbyxVbz0xNjc3NzIxNixqbih0KSxVbz1lKTpqbih0KSk7YnJlYWs7ZGVmYXVsdDpqbih0KX19ZnVuY3Rpb24gaWgodCl7dmFyIGU9dC5hbHRlcm5hdGU7aWYoZSE9PW51bGwmJih0PWUuY2hpbGQsdCE9PW51bGwpKXtlLmNoaWxkPW51bGw7ZG8gZT10LnNpYmxpbmcsdC5zaWJsaW5nPW51bGwsdD1lO3doaWxlKHQhPT1udWxsKX19ZnVuY3Rpb24gR28odCl7dmFyIGU9dC5kZWxldGlvbnM7aWYoKHQuZmxhZ3MmMTYpIT09MCl7aWYoZSE9PW51bGwpZm9yKHZhciBsPTA7bDxlLmxlbmd0aDtsKyspe3ZhciBhPWVbbF07b2U9YSxzaChhLHQpfWloKHQpfWlmKHQuc3VidHJlZUZsYWdzJjEwMjU2KWZvcih0PXQuY2hpbGQ7dCE9PW51bGw7KXJoKHQpLHQ9dC5zaWJsaW5nfWZ1bmN0aW9uIHJoKHQpe3N3aXRjaCh0LnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpHbyh0KSx0LmZsYWdzJjIwNDgmJm9hKDksdCx0LnJldHVybik7YnJlYWs7Y2FzZSAzOkdvKHQpO2JyZWFrO2Nhc2UgMTI6R28odCk7YnJlYWs7Y2FzZSAyMjp2YXIgZT10LnN0YXRlTm9kZTt0Lm1lbW9pemVkU3RhdGUhPT1udWxsJiZlLl92aXNpYmlsaXR5JjImJih0LnJldHVybj09PW51bGx8fHQucmV0dXJuLnRhZyE9PTEzKT8oZS5fdmlzaWJpbGl0eSY9LTMsYXIodCkpOkdvKHQpO2JyZWFrO2RlZmF1bHQ6R28odCl9fWZ1bmN0aW9uIGFyKHQpe3ZhciBlPXQuZGVsZXRpb25zO2lmKCh0LmZsYWdzJjE2KSE9PTApe2lmKGUhPT1udWxsKWZvcih2YXIgbD0wO2w8ZS5sZW5ndGg7bCsrKXt2YXIgYT1lW2xdO29lPWEsc2goYSx0KX1paCh0KX1mb3IodD10LmNoaWxkO3QhPT1udWxsOyl7c3dpdGNoKGU9dCxlLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpvYSg4LGUsZS5yZXR1cm4pLGFyKGUpO2JyZWFrO2Nhc2UgMjI6bD1lLnN0YXRlTm9kZSxsLl92aXNpYmlsaXR5JjImJihsLl92aXNpYmlsaXR5Jj0tMyxhcihlKSk7YnJlYWs7ZGVmYXVsdDphcihlKX10PXQuc2libGluZ319ZnVuY3Rpb24gc2godCxlKXtmb3IoO29lIT09bnVsbDspe3ZhciBsPW9lO3N3aXRjaChsLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpvYSg4LGwsZSk7YnJlYWs7Y2FzZSAyMzpjYXNlIDIyOmlmKGwubWVtb2l6ZWRTdGF0ZSE9PW51bGwmJmwubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2whPT1udWxsKXt2YXIgYT1sLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sLnBvb2w7YSE9bnVsbCYmYS5yZWZDb3VudCsrfWJyZWFrO2Nhc2UgMjQ6U28obC5tZW1vaXplZFN0YXRlLmNhY2hlKX1pZihhPWwuY2hpbGQsYSE9PW51bGwpYS5yZXR1cm49bCxvZT1hO2Vsc2UgdDpmb3IobD10O29lIT09bnVsbDspe2E9b2U7dmFyIG49YS5zaWJsaW5nLG89YS5yZXR1cm47aWYoSWYoYSksYT09PWwpe29lPW51bGw7YnJlYWsgdH1pZihuIT09bnVsbCl7bi5yZXR1cm49byxvZT1uO2JyZWFrIHR9b2U9b319fXZhciBOMT17Z2V0Q2FjaGVGb3JUeXBlOmZ1bmN0aW9uKHQpe3ZhciBlPXllKEZ0KSxsPWUuZGF0YS5nZXQodCk7cmV0dXJuIGw9PT12b2lkIDAmJihsPXQoKSxlLmRhdGEuc2V0KHQsbCkpLGx9fSx6MT10eXBlb2YgV2Vha01hcD09ImZ1bmN0aW9uIj9XZWFrTWFwOk1hcCxBdD0wLGp0PW51bGwseXQ9bnVsbCx3dD0wLFJ0PTAsa2U9bnVsbCxzYT0hMSxCbj0hMSxnYz0hMSxqbD0wLEd0PTAsY2E9MCx0bj0wLHBjPTAsWmU9MCxMbj0wLHFvPW51bGwsTWU9bnVsbCx5Yz0hMSx2Yz0wLG5yPTEvMCxvcj1udWxsLHVhPW51bGwsZGU9MCxkYT1udWxsLEhuPW51bGwsVW49MCxiYz0wLHhjPW51bGwsY2g9bnVsbCxZbz0wLHdjPW51bGw7ZnVuY3Rpb24gT2UoKXtpZigoQXQmMikhPT0wJiZ3dCE9PTApcmV0dXJuIHd0Ji13dDtpZihBLlQhPT1udWxsKXt2YXIgdD1EbjtyZXR1cm4gdCE9PTA/dDpBYygpfXJldHVybiBwaSgpfWZ1bmN0aW9uIHVoKCl7WmU9PT0wJiYoWmU9KHd0JjUzNjg3MDkxMik9PT0wfHxFdD90bygpOjUzNjg3MDkxMik7dmFyIHQ9WGUuY3VycmVudDtyZXR1cm4gdCE9PW51bGwmJih0LmZsYWdzfD0zMiksWmV9ZnVuY3Rpb24gamUodCxlLGwpeyh0PT09anQmJihSdD09PTJ8fFJ0PT09OSl8fHQuY2FuY2VsUGVuZGluZ0NvbW1pdCE9PW51bGwpJiYoR24odCwwKSxmYSh0LHd0LFplLCExKSksRGEodCxsKSwoKEF0JjIpPT09MHx8dCE9PWp0KSYmKHQ9PT1qdCYmKChBdCYyKT09PTAmJih0bnw9bCksR3Q9PT00JiZmYSh0LHd0LFplLCExKSksaGwodCkpfWZ1bmN0aW9uIGRoKHQsZSxsKXtpZigoQXQmNikhPT0wKXRocm93IEVycm9yKHMoMzI3KSk7dmFyIGE9IWwmJihlJjEyNCk9PT0wJiYoZSZ0LmV4cGlyZWRMYW5lcyk9PT0wfHxEdCh0LGUpLG49YT9PMSh0LGUpOkVjKHQsZSwhMCksbz1hO2Rve2lmKG49PT0wKXtCbiYmIWEmJmZhKHQsZSwwLCExKTticmVha31lbHNle2lmKGw9dC5jdXJyZW50LmFsdGVybmF0ZSxvJiYhXzEobCkpe249RWModCxlLCExKSxvPSExO2NvbnRpbnVlfWlmKG49PT0yKXtpZihvPWUsdC5lcnJvclJlY292ZXJ5RGlzYWJsZWRMYW5lcyZvKXZhciB1PTA7ZWxzZSB1PXQucGVuZGluZ0xhbmVzJi01MzY4NzA5MTMsdT11IT09MD91OnUmNTM2ODcwOTEyPzUzNjg3MDkxMjowO2lmKHUhPT0wKXtlPXU7dDp7dmFyIGY9dDtuPXFvO3ZhciBnPWYuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZDtpZihnJiYoR24oZix1KS5mbGFnc3w9MjU2KSx1PUVjKGYsdSwhMSksdSE9PTIpe2lmKGdjJiYhZyl7Zi5lcnJvclJlY292ZXJ5RGlzYWJsZWRMYW5lc3w9byx0bnw9byxuPTQ7YnJlYWsgdH1vPU1lLE1lPW4sbyE9PW51bGwmJihNZT09PW51bGw/TWU9bzpNZS5wdXNoLmFwcGx5KE1lLG8pKX1uPXV9aWYobz0hMSxuIT09Miljb250aW51ZX19aWYobj09PTEpe0duKHQsMCksZmEodCxlLDAsITApO2JyZWFrfXQ6e3N3aXRjaChhPXQsbz1uLG8pe2Nhc2UgMDpjYXNlIDE6dGhyb3cgRXJyb3IocygzNDUpKTtjYXNlIDQ6aWYoKGUmNDE5NDA0OCkhPT1lKWJyZWFrO2Nhc2UgNjpmYShhLGUsWmUsIXNhKTticmVhayB0O2Nhc2UgMjpNZT1udWxsO2JyZWFrO2Nhc2UgMzpjYXNlIDU6YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihzKDMyOSkpfWlmKChlJjYyOTE0NTYwKT09PWUmJihuPXZjKzMwMC1nZSgpLDEwPG4pKXtpZihmYShhLGUsWmUsIXNhKSx1bihhLDAsITApIT09MClicmVhayB0O2EudGltZW91dEhhbmRsZT1HaChmaC5iaW5kKG51bGwsYSxsLE1lLG9yLHljLGUsWmUsdG4sTG4sc2EsbywyLC0wLDApLG4pO2JyZWFrIHR9ZmgoYSxsLE1lLG9yLHljLGUsWmUsdG4sTG4sc2EsbywwLC0wLDApfX1icmVha313aGlsZSghMCk7aGwodCl9ZnVuY3Rpb24gZmgodCxlLGwsYSxuLG8sdSxmLGcsUyxOLGssRSxUKXtpZih0LnRpbWVvdXRIYW5kbGU9LTEsaz1lLnN1YnRyZWVGbGFncywoayY4MTkyfHwoayYxNjc4NTQwOCk9PT0xNjc4NTQwOCkmJihKbz17c3R5bGVzaGVldHM6bnVsbCxjb3VudDowLHVuc3VzcGVuZDpocH0sb2goZSksaz1ncCgpLGshPT1udWxsKSl7dC5jYW5jZWxQZW5kaW5nQ29tbWl0PWsoYmguYmluZChudWxsLHQsZSxvLGwsYSxuLHUsZixnLE4sMSxFLFQpKSxmYSh0LG8sdSwhUyk7cmV0dXJufWJoKHQsZSxvLGwsYSxuLHUsZixnKX1mdW5jdGlvbiBfMSh0KXtmb3IodmFyIGU9dDs7KXt2YXIgbD1lLnRhZztpZigobD09PTB8fGw9PT0xMXx8bD09PTE1KSYmZS5mbGFncyYxNjM4NCYmKGw9ZS51cGRhdGVRdWV1ZSxsIT09bnVsbCYmKGw9bC5zdG9yZXMsbCE9PW51bGwpKSlmb3IodmFyIGE9MDthPGwubGVuZ3RoO2ErKyl7dmFyIG49bFthXSxvPW4uZ2V0U25hcHNob3Q7bj1uLnZhbHVlO3RyeXtpZighUmUobygpLG4pKXJldHVybiExfWNhdGNoe3JldHVybiExfX1pZihsPWUuY2hpbGQsZS5zdWJ0cmVlRmxhZ3MmMTYzODQmJmwhPT1udWxsKWwucmV0dXJuPWUsZT1sO2Vsc2V7aWYoZT09PXQpYnJlYWs7Zm9yKDtlLnNpYmxpbmc9PT1udWxsOyl7aWYoZS5yZXR1cm49PT1udWxsfHxlLnJldHVybj09PXQpcmV0dXJuITA7ZT1lLnJldHVybn1lLnNpYmxpbmcucmV0dXJuPWUucmV0dXJuLGU9ZS5zaWJsaW5nfX1yZXR1cm4hMH1mdW5jdGlvbiBmYSh0LGUsbCxhKXtlJj1+cGMsZSY9fnRuLHQuc3VzcGVuZGVkTGFuZXN8PWUsdC5waW5nZWRMYW5lcyY9fmUsYSYmKHQud2FybUxhbmVzfD1lKSxhPXQuZXhwaXJhdGlvblRpbWVzO2Zvcih2YXIgbj1lOzA8bjspe3ZhciBvPTMxLSR0KG4pLHU9MTw8bzthW29dPS0xLG4mPX51fWwhPT0wJiZtaSh0LGwsZSl9ZnVuY3Rpb24gaXIoKXtyZXR1cm4oQXQmNik9PT0wPyhWbygwKSwhMSk6ITB9ZnVuY3Rpb24gU2MoKXtpZih5dCE9PW51bGwpe2lmKFJ0PT09MCl2YXIgdD15dC5yZXR1cm47ZWxzZSB0PXl0LE1sPVBhPW51bGwsVXModCksX249bnVsbCxrbz0wLHQ9eXQ7Zm9yKDt0IT09bnVsbDspWmYodC5hbHRlcm5hdGUsdCksdD10LnJldHVybjt5dD1udWxsfX1mdW5jdGlvbiBHbih0LGUpe3ZhciBsPXQudGltZW91dEhhbmRsZTtsIT09LTEmJih0LnRpbWVvdXRIYW5kbGU9LTEsVzEobCkpLGw9dC5jYW5jZWxQZW5kaW5nQ29tbWl0LGwhPT1udWxsJiYodC5jYW5jZWxQZW5kaW5nQ29tbWl0PW51bGwsbCgpKSxTYygpLGp0PXQseXQ9bD1FbCh0LmN1cnJlbnQsbnVsbCksd3Q9ZSxSdD0wLGtlPW51bGwsc2E9ITEsQm49RHQodCxlKSxnYz0hMSxMbj1aZT1wYz10bj1jYT1HdD0wLE1lPXFvPW51bGwseWM9ITEsKGUmOCkhPT0wJiYoZXw9ZSYzMik7dmFyIGE9dC5lbnRhbmdsZWRMYW5lcztpZihhIT09MClmb3IodD10LmVudGFuZ2xlbWVudHMsYSY9ZTswPGE7KXt2YXIgbj0zMS0kdChhKSxvPTE8PG47ZXw9dFtuXSxhJj1+b31yZXR1cm4gamw9ZSxBaSgpLGx9ZnVuY3Rpb24gaGgodCxlKXttdD1udWxsLEEuSD1LaSxlPT09RW98fGU9PT1MaT8oZT1SZCgpLFJ0PTMpOmU9PT1EZD8oZT1SZCgpLFJ0PTQpOlJ0PWU9PT16Zj84OmUhPT1udWxsJiZ0eXBlb2YgZT09Im9iamVjdCImJnR5cGVvZiBlLnRoZW49PSJmdW5jdGlvbiI/NjoxLGtlPWUseXQ9PT1udWxsJiYoR3Q9MSxGaSh0LEdlKGUsdC5jdXJyZW50KSkpfWZ1bmN0aW9uIG1oKCl7dmFyIHQ9QS5IO3JldHVybiBBLkg9S2ksdD09PW51bGw/S2k6dH1mdW5jdGlvbiBnaCgpe3ZhciB0PUEuQTtyZXR1cm4gQS5BPU4xLHR9ZnVuY3Rpb24gQ2MoKXtHdD00LHNhfHwod3QmNDE5NDA0OCkhPT13dCYmWGUuY3VycmVudCE9PW51bGx8fChCbj0hMCksKGNhJjEzNDIxNzcyNyk9PT0wJiYodG4mMTM0MjE3NzI3KT09PTB8fGp0PT09bnVsbHx8ZmEoanQsd3QsWmUsITEpfWZ1bmN0aW9uIEVjKHQsZSxsKXt2YXIgYT1BdDtBdHw9Mjt2YXIgbj1taCgpLG89Z2goKTsoanQhPT10fHx3dCE9PWUpJiYob3I9bnVsbCxHbih0LGUpKSxlPSExO3ZhciB1PUd0O3Q6ZG8gdHJ5e2lmKFJ0IT09MCYmeXQhPT1udWxsKXt2YXIgZj15dCxnPWtlO3N3aXRjaChSdCl7Y2FzZSA4OlNjKCksdT02O2JyZWFrIHQ7Y2FzZSAzOmNhc2UgMjpjYXNlIDk6Y2FzZSA2OlhlLmN1cnJlbnQ9PT1udWxsJiYoZT0hMCk7dmFyIFM9UnQ7aWYoUnQ9MCxrZT1udWxsLHFuKHQsZixnLFMpLGwmJkJuKXt1PTA7YnJlYWsgdH1icmVhaztkZWZhdWx0OlM9UnQsUnQ9MCxrZT1udWxsLHFuKHQsZixnLFMpfX1rMSgpLHU9R3Q7YnJlYWt9Y2F0Y2goTil7aGgodCxOKX13aGlsZSghMCk7cmV0dXJuIGUmJnQuc2hlbGxTdXNwZW5kQ291bnRlcisrLE1sPVBhPW51bGwsQXQ9YSxBLkg9bixBLkE9byx5dD09PW51bGwmJihqdD1udWxsLHd0PTAsQWkoKSksdX1mdW5jdGlvbiBrMSgpe2Zvcig7eXQhPT1udWxsOylwaCh5dCl9ZnVuY3Rpb24gTzEodCxlKXt2YXIgbD1BdDtBdHw9Mjt2YXIgYT1taCgpLG49Z2goKTtqdCE9PXR8fHd0IT09ZT8ob3I9bnVsbCxucj1nZSgpKzUwMCxHbih0LGUpKTpCbj1EdCh0LGUpO3Q6ZG8gdHJ5e2lmKFJ0IT09MCYmeXQhPT1udWxsKXtlPXl0O3ZhciBvPWtlO2U6c3dpdGNoKFJ0KXtjYXNlIDE6UnQ9MCxrZT1udWxsLHFuKHQsZSxvLDEpO2JyZWFrO2Nhc2UgMjpjYXNlIDk6aWYoTWQobykpe1J0PTAsa2U9bnVsbCx5aChlKTticmVha31lPWZ1bmN0aW9uKCl7UnQhPT0yJiZSdCE9PTl8fGp0IT09dHx8KFJ0PTcpLGhsKHQpfSxvLnRoZW4oZSxlKTticmVhayB0O2Nhc2UgMzpSdD03O2JyZWFrIHQ7Y2FzZSA0OlJ0PTU7YnJlYWsgdDtjYXNlIDc6TWQobyk/KFJ0PTAsa2U9bnVsbCx5aChlKSk6KFJ0PTAsa2U9bnVsbCxxbih0LGUsbyw3KSk7YnJlYWs7Y2FzZSA1OnZhciB1PW51bGw7c3dpdGNoKHl0LnRhZyl7Y2FzZSAyNjp1PXl0Lm1lbW9pemVkU3RhdGU7Y2FzZSA1OmNhc2UgMjc6dmFyIGY9eXQ7aWYoIXV8fEZoKHUpKXtSdD0wLGtlPW51bGw7dmFyIGc9Zi5zaWJsaW5nO2lmKGchPT1udWxsKXl0PWc7ZWxzZXt2YXIgUz1mLnJldHVybjtTIT09bnVsbD8oeXQ9UyxycihTKSk6eXQ9bnVsbH1icmVhayBlfX1SdD0wLGtlPW51bGwscW4odCxlLG8sNSk7YnJlYWs7Y2FzZSA2OlJ0PTAsa2U9bnVsbCxxbih0LGUsbyw2KTticmVhaztjYXNlIDg6U2MoKSxHdD02O2JyZWFrIHQ7ZGVmYXVsdDp0aHJvdyBFcnJvcihzKDQ2MikpfX1qMSgpO2JyZWFrfWNhdGNoKE4pe2hoKHQsTil9d2hpbGUoITApO3JldHVybiBNbD1QYT1udWxsLEEuSD1hLEEuQT1uLEF0PWwseXQhPT1udWxsPzA6KGp0PW51bGwsd3Q9MCxBaSgpLEd0KX1mdW5jdGlvbiBqMSgpe2Zvcig7eXQhPT1udWxsJiYhQ2EoKTspcGgoeXQpfWZ1bmN0aW9uIHBoKHQpe3ZhciBlPVZmKHQuYWx0ZXJuYXRlLHQsamwpO3QubWVtb2l6ZWRQcm9wcz10LnBlbmRpbmdQcm9wcyxlPT09bnVsbD9ycih0KTp5dD1lfWZ1bmN0aW9uIHloKHQpe3ZhciBlPXQsbD1lLmFsdGVybmF0ZTtzd2l0Y2goZS50YWcpe2Nhc2UgMTU6Y2FzZSAwOmU9TGYobCxlLGUucGVuZGluZ1Byb3BzLGUudHlwZSx2b2lkIDAsd3QpO2JyZWFrO2Nhc2UgMTE6ZT1MZihsLGUsZS5wZW5kaW5nUHJvcHMsZS50eXBlLnJlbmRlcixlLnJlZix3dCk7YnJlYWs7Y2FzZSA1OlVzKGUpO2RlZmF1bHQ6WmYobCxlKSxlPXl0PXlkKGUsamwpLGU9VmYobCxlLGpsKX10Lm1lbW9pemVkUHJvcHM9dC5wZW5kaW5nUHJvcHMsZT09PW51bGw/cnIodCk6eXQ9ZX1mdW5jdGlvbiBxbih0LGUsbCxhKXtNbD1QYT1udWxsLFVzKGUpLF9uPW51bGwsa289MDt2YXIgbj1lLnJldHVybjt0cnl7aWYoRTEodCxuLGUsbCx3dCkpe0d0PTEsRmkodCxHZShsLHQuY3VycmVudCkpLHl0PW51bGw7cmV0dXJufX1jYXRjaChvKXtpZihuIT09bnVsbCl0aHJvdyB5dD1uLG87R3Q9MSxGaSh0LEdlKGwsdC5jdXJyZW50KSkseXQ9bnVsbDtyZXR1cm59ZS5mbGFncyYzMjc2OD8oRXR8fGE9PT0xP3Q9ITA6Qm58fCh3dCY1MzY4NzA5MTIpIT09MD90PSExOihzYT10PSEwLChhPT09Mnx8YT09PTl8fGE9PT0zfHxhPT09NikmJihhPVhlLmN1cnJlbnQsYSE9PW51bGwmJmEudGFnPT09MTMmJihhLmZsYWdzfD0xNjM4NCkpKSx2aChlLHQpKTpycihlKX1mdW5jdGlvbiBycih0KXt2YXIgZT10O2Rve2lmKChlLmZsYWdzJjMyNzY4KSE9PTApe3ZoKGUsc2EpO3JldHVybn10PWUucmV0dXJuO3ZhciBsPUQxKGUuYWx0ZXJuYXRlLGUsamwpO2lmKGwhPT1udWxsKXt5dD1sO3JldHVybn1pZihlPWUuc2libGluZyxlIT09bnVsbCl7eXQ9ZTtyZXR1cm59eXQ9ZT10fXdoaWxlKGUhPT1udWxsKTtHdD09PTAmJihHdD01KX1mdW5jdGlvbiB2aCh0LGUpe2Rve3ZhciBsPU0xKHQuYWx0ZXJuYXRlLHQpO2lmKGwhPT1udWxsKXtsLmZsYWdzJj0zMjc2Nyx5dD1sO3JldHVybn1pZihsPXQucmV0dXJuLGwhPT1udWxsJiYobC5mbGFnc3w9MzI3NjgsbC5zdWJ0cmVlRmxhZ3M9MCxsLmRlbGV0aW9ucz1udWxsKSwhZSYmKHQ9dC5zaWJsaW5nLHQhPT1udWxsKSl7eXQ9dDtyZXR1cm59eXQ9dD1sfXdoaWxlKHQhPT1udWxsKTtHdD02LHl0PW51bGx9ZnVuY3Rpb24gYmgodCxlLGwsYSxuLG8sdSxmLGcpe3QuY2FuY2VsUGVuZGluZ0NvbW1pdD1udWxsO2RvIHNyKCk7d2hpbGUoZGUhPT0wKTtpZigoQXQmNikhPT0wKXRocm93IEVycm9yKHMoMzI3KSk7aWYoZSE9PW51bGwpe2lmKGU9PT10LmN1cnJlbnQpdGhyb3cgRXJyb3IocygxNzcpKTtpZihvPWUubGFuZXN8ZS5jaGlsZExhbmVzLG98PW1zLElyKHQsbCxvLHUsZixnKSx0PT09anQmJih5dD1qdD1udWxsLHd0PTApLEhuPWUsZGE9dCxVbj1sLGJjPW8seGM9bixjaD1hLChlLnN1YnRyZWVGbGFncyYxMDI1NikhPT0wfHwoZS5mbGFncyYxMDI1NikhPT0wPyh0LmNhbGxiYWNrTm9kZT1udWxsLHQuY2FsbGJhY2tQcmlvcml0eT0wLFUxKG5sLGZ1bmN0aW9uKCl7cmV0dXJuIEVoKCksbnVsbH0pKToodC5jYWxsYmFja05vZGU9bnVsbCx0LmNhbGxiYWNrUHJpb3JpdHk9MCksYT0oZS5mbGFncyYxMzg3OCkhPT0wLChlLnN1YnRyZWVGbGFncyYxMzg3OCkhPT0wfHxhKXthPUEuVCxBLlQ9bnVsbCxuPXEucCxxLnA9Mix1PUF0LEF0fD00O3RyeXtBMSh0LGUsbCl9ZmluYWxseXtBdD11LHEucD1uLEEuVD1hfX1kZT0xLHhoKCksd2goKSxTaCgpfX1mdW5jdGlvbiB4aCgpe2lmKGRlPT09MSl7ZGU9MDt2YXIgdD1kYSxlPUhuLGw9KGUuZmxhZ3MmMTM4NzgpIT09MDtpZigoZS5zdWJ0cmVlRmxhZ3MmMTM4NzgpIT09MHx8bCl7bD1BLlQsQS5UPW51bGw7dmFyIGE9cS5wO3EucD0yO3ZhciBuPUF0O0F0fD00O3RyeXtsaChlLHQpO3ZhciBvPUJjLHU9cmQodC5jb250YWluZXJJbmZvKSxmPW8uZm9jdXNlZEVsZW0sZz1vLnNlbGVjdGlvblJhbmdlO2lmKHUhPT1mJiZmJiZmLm93bmVyRG9jdW1lbnQmJmlkKGYub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZikpe2lmKGchPT1udWxsJiZjcyhmKSl7dmFyIFM9Zy5zdGFydCxOPWcuZW5kO2lmKE49PT12b2lkIDAmJihOPVMpLCJzZWxlY3Rpb25TdGFydCJpbiBmKWYuc2VsZWN0aW9uU3RhcnQ9UyxmLnNlbGVjdGlvbkVuZD1NYXRoLm1pbihOLGYudmFsdWUubGVuZ3RoKTtlbHNle3ZhciBrPWYub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQsRT1rJiZrLmRlZmF1bHRWaWV3fHx3aW5kb3c7aWYoRS5nZXRTZWxlY3Rpb24pe3ZhciBUPUUuZ2V0U2VsZWN0aW9uKCksbHQ9Zi50ZXh0Q29udGVudC5sZW5ndGgsRj1NYXRoLm1pbihnLnN0YXJ0LGx0KSxfdD1nLmVuZD09PXZvaWQgMD9GOk1hdGgubWluKGcuZW5kLGx0KTshVC5leHRlbmQmJkY+X3QmJih1PV90LF90PUYsRj11KTt2YXIgYj1vZChmLEYpLHk9b2QoZixfdCk7aWYoYiYmeSYmKFQucmFuZ2VDb3VudCE9PTF8fFQuYW5jaG9yTm9kZSE9PWIubm9kZXx8VC5hbmNob3JPZmZzZXQhPT1iLm9mZnNldHx8VC5mb2N1c05vZGUhPT15Lm5vZGV8fFQuZm9jdXNPZmZzZXQhPT15Lm9mZnNldCkpe3ZhciB3PWsuY3JlYXRlUmFuZ2UoKTt3LnNldFN0YXJ0KGIubm9kZSxiLm9mZnNldCksVC5yZW1vdmVBbGxSYW5nZXMoKSxGPl90PyhULmFkZFJhbmdlKHcpLFQuZXh0ZW5kKHkubm9kZSx5Lm9mZnNldCkpOih3LnNldEVuZCh5Lm5vZGUseS5vZmZzZXQpLFQuYWRkUmFuZ2UodykpfX19fWZvcihrPVtdLFQ9ZjtUPVQucGFyZW50Tm9kZTspVC5ub2RlVHlwZT09PTEmJmsucHVzaCh7ZWxlbWVudDpULGxlZnQ6VC5zY3JvbGxMZWZ0LHRvcDpULnNjcm9sbFRvcH0pO2Zvcih0eXBlb2YgZi5mb2N1cz09ImZ1bmN0aW9uIiYmZi5mb2N1cygpLGY9MDtmPGsubGVuZ3RoO2YrKyl7dmFyIHo9a1tmXTt6LmVsZW1lbnQuc2Nyb2xsTGVmdD16LmxlZnQsei5lbGVtZW50LnNjcm9sbFRvcD16LnRvcH19eHI9ISFqYyxCYz1qYz1udWxsfWZpbmFsbHl7QXQ9bixxLnA9YSxBLlQ9bH19dC5jdXJyZW50PWUsZGU9Mn19ZnVuY3Rpb24gd2goKXtpZihkZT09PTIpe2RlPTA7dmFyIHQ9ZGEsZT1IbixsPShlLmZsYWdzJjg3NzIpIT09MDtpZigoZS5zdWJ0cmVlRmxhZ3MmODc3MikhPT0wfHxsKXtsPUEuVCxBLlQ9bnVsbDt2YXIgYT1xLnA7cS5wPTI7dmFyIG49QXQ7QXR8PTQ7dHJ5e0ZmKHQsZS5hbHRlcm5hdGUsZSl9ZmluYWxseXtBdD1uLHEucD1hLEEuVD1sfX1kZT0zfX1mdW5jdGlvbiBTaCgpe2lmKGRlPT09NHx8ZGU9PT0zKXtkZT0wLHJpKCk7dmFyIHQ9ZGEsZT1IbixsPVVuLGE9Y2g7KGUuc3VidHJlZUZsYWdzJjEwMjU2KSE9PTB8fChlLmZsYWdzJjEwMjU2KSE9PTA/ZGU9NTooZGU9MCxIbj1kYT1udWxsLENoKHQsdC5wZW5kaW5nTGFuZXMpKTt2YXIgbj10LnBlbmRpbmdMYW5lcztpZihuPT09MCYmKHVhPW51bGwpLGFvKGwpLGU9ZS5zdGF0ZU5vZGUsV3QmJnR5cGVvZiBXdC5vbkNvbW1pdEZpYmVyUm9vdD09ImZ1bmN0aW9uIil0cnl7V3Qub25Db21taXRGaWJlclJvb3QocWwsZSx2b2lkIDAsKGUuY3VycmVudC5mbGFncyYxMjgpPT09MTI4KX1jYXRjaHt9aWYoYSE9PW51bGwpe2U9QS5ULG49cS5wLHEucD0yLEEuVD1udWxsO3RyeXtmb3IodmFyIG89dC5vblJlY292ZXJhYmxlRXJyb3IsdT0wO3U8YS5sZW5ndGg7dSsrKXt2YXIgZj1hW3VdO28oZi52YWx1ZSx7Y29tcG9uZW50U3RhY2s6Zi5zdGFja30pfX1maW5hbGx5e0EuVD1lLHEucD1ufX0oVW4mMykhPT0wJiZzcigpLGhsKHQpLG49dC5wZW5kaW5nTGFuZXMsKGwmNDE5NDA5MCkhPT0wJiYobiY0MikhPT0wP3Q9PT13Yz9ZbysrOihZbz0wLHdjPXQpOllvPTAsVm8oMCl9fWZ1bmN0aW9uIENoKHQsZSl7KHQucG9vbGVkQ2FjaGVMYW5lcyY9ZSk9PT0wJiYoZT10LnBvb2xlZENhY2hlLGUhPW51bGwmJih0LnBvb2xlZENhY2hlPW51bGwsU28oZSkpKX1mdW5jdGlvbiBzcih0KXtyZXR1cm4geGgoKSx3aCgpLFNoKCksRWgoKX1mdW5jdGlvbiBFaCgpe2lmKGRlIT09NSlyZXR1cm4hMTt2YXIgdD1kYSxlPWJjO2JjPTA7dmFyIGw9YW8oVW4pLGE9QS5ULG49cS5wO3RyeXtxLnA9MzI+bD8zMjpsLEEuVD1udWxsLGw9eGMseGM9bnVsbDt2YXIgbz1kYSx1PVVuO2lmKGRlPTAsSG49ZGE9bnVsbCxVbj0wLChBdCY2KSE9PTApdGhyb3cgRXJyb3IocygzMzEpKTt2YXIgZj1BdDtpZihBdHw9NCxyaChvLmN1cnJlbnQpLG5oKG8sby5jdXJyZW50LHUsbCksQXQ9ZixWbygwLCExKSxXdCYmdHlwZW9mIFd0Lm9uUG9zdENvbW1pdEZpYmVyUm9vdD09ImZ1bmN0aW9uIil0cnl7V3Qub25Qb3N0Q29tbWl0RmliZXJSb290KHFsLG8pfWNhdGNoe31yZXR1cm4hMH1maW5hbGx5e3EucD1uLEEuVD1hLENoKHQsZSl9fWZ1bmN0aW9uIFRoKHQsZSxsKXtlPUdlKGwsZSksZT1Jcyh0LnN0YXRlTm9kZSxlLDIpLHQ9ZWEodCxlLDIpLHQhPT1udWxsJiYoRGEodCwyKSxobCh0KSl9ZnVuY3Rpb24ga3QodCxlLGwpe2lmKHQudGFnPT09MylUaCh0LHQsbCk7ZWxzZSBmb3IoO2UhPT1udWxsOyl7aWYoZS50YWc9PT0zKXtUaChlLHQsbCk7YnJlYWt9ZWxzZSBpZihlLnRhZz09PTEpe3ZhciBhPWUuc3RhdGVOb2RlO2lmKHR5cGVvZiBlLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yPT0iZnVuY3Rpb24ifHx0eXBlb2YgYS5jb21wb25lbnREaWRDYXRjaD09ImZ1bmN0aW9uIiYmKHVhPT09bnVsbHx8IXVhLmhhcyhhKSkpe3Q9R2UobCx0KSxsPVJmKDIpLGE9ZWEoZSxsLDIpLGEhPT1udWxsJiYoTmYobCxhLGUsdCksRGEoYSwyKSxobChhKSk7YnJlYWt9fWU9ZS5yZXR1cm59fWZ1bmN0aW9uIFRjKHQsZSxsKXt2YXIgYT10LnBpbmdDYWNoZTtpZihhPT09bnVsbCl7YT10LnBpbmdDYWNoZT1uZXcgejE7dmFyIG49bmV3IFNldDthLnNldChlLG4pfWVsc2Ugbj1hLmdldChlKSxuPT09dm9pZCAwJiYobj1uZXcgU2V0LGEuc2V0KGUsbikpO24uaGFzKGwpfHwoZ2M9ITAsbi5hZGQobCksdD1CMS5iaW5kKG51bGwsdCxlLGwpLGUudGhlbih0LHQpKX1mdW5jdGlvbiBCMSh0LGUsbCl7dmFyIGE9dC5waW5nQ2FjaGU7YSE9PW51bGwmJmEuZGVsZXRlKGUpLHQucGluZ2VkTGFuZXN8PXQuc3VzcGVuZGVkTGFuZXMmbCx0Lndhcm1MYW5lcyY9fmwsanQ9PT10JiYod3QmbCk9PT1sJiYoR3Q9PT00fHxHdD09PTMmJih3dCY2MjkxNDU2MCk9PT13dCYmMzAwPmdlKCktdmM/KEF0JjIpPT09MCYmR24odCwwKTpwY3w9bCxMbj09PXd0JiYoTG49MCkpLGhsKHQpfWZ1bmN0aW9uIERoKHQsZSl7ZT09PTAmJihlPWhpKCkpLHQ9U24odCxlKSx0IT09bnVsbCYmKERhKHQsZSksaGwodCkpfWZ1bmN0aW9uIEwxKHQpe3ZhciBlPXQubWVtb2l6ZWRTdGF0ZSxsPTA7ZSE9PW51bGwmJihsPWUucmV0cnlMYW5lKSxEaCh0LGwpfWZ1bmN0aW9uIEgxKHQsZSl7dmFyIGw9MDtzd2l0Y2godC50YWcpe2Nhc2UgMTM6dmFyIGE9dC5zdGF0ZU5vZGUsbj10Lm1lbW9pemVkU3RhdGU7biE9PW51bGwmJihsPW4ucmV0cnlMYW5lKTticmVhaztjYXNlIDE5OmE9dC5zdGF0ZU5vZGU7YnJlYWs7Y2FzZSAyMjphPXQuc3RhdGVOb2RlLl9yZXRyeUNhY2hlO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocygzMTQpKX1hIT09bnVsbCYmYS5kZWxldGUoZSksRGgodCxsKX1mdW5jdGlvbiBVMSh0LGUpe3JldHVybiB5bCh0LGUpfXZhciBjcj1udWxsLFluPW51bGwsRGM9ITEsdXI9ITEsTWM9ITEsZW49MDtmdW5jdGlvbiBobCh0KXt0IT09WW4mJnQubmV4dD09PW51bGwmJihZbj09PW51bGw/Y3I9WW49dDpZbj1Zbi5uZXh0PXQpLHVyPSEwLERjfHwoRGM9ITAscTEoKSl9ZnVuY3Rpb24gVm8odCxlKXtpZighTWMmJnVyKXtNYz0hMDtkbyBmb3IodmFyIGw9ITEsYT1jcjthIT09bnVsbDspe2lmKHQhPT0wKXt2YXIgbj1hLnBlbmRpbmdMYW5lcztpZihuPT09MCl2YXIgbz0wO2Vsc2V7dmFyIHU9YS5zdXNwZW5kZWRMYW5lcyxmPWEucGluZ2VkTGFuZXM7bz0oMTw8MzEtJHQoNDJ8dCkrMSktMSxvJj1uJn4odSZ+Ziksbz1vJjIwMTMyNjc0MT9vJjIwMTMyNjc0MXwxOm8/b3wyOjB9byE9PTAmJihsPSEwLE5oKGEsbykpfWVsc2Ugbz13dCxvPXVuKGEsYT09PWp0P286MCxhLmNhbmNlbFBlbmRpbmdDb21taXQhPT1udWxsfHxhLnRpbWVvdXRIYW5kbGUhPT0tMSksKG8mMyk9PT0wfHxEdChhLG8pfHwobD0hMCxOaChhLG8pKTthPWEubmV4dH13aGlsZShsKTtNYz0hMX19ZnVuY3Rpb24gRzEoKXtNaCgpfWZ1bmN0aW9uIE1oKCl7dXI9RGM9ITE7dmFyIHQ9MDtlbiE9PTAmJihKMSgpJiYodD1lbiksZW49MCk7Zm9yKHZhciBlPWdlKCksbD1udWxsLGE9Y3I7YSE9PW51bGw7KXt2YXIgbj1hLm5leHQsbz1BaChhLGUpO289PT0wPyhhLm5leHQ9bnVsbCxsPT09bnVsbD9jcj1uOmwubmV4dD1uLG49PT1udWxsJiYoWW49bCkpOihsPWEsKHQhPT0wfHwobyYzKSE9PTApJiYodXI9ITApKSxhPW59Vm8odCl9ZnVuY3Rpb24gQWgodCxlKXtmb3IodmFyIGw9dC5zdXNwZW5kZWRMYW5lcyxhPXQucGluZ2VkTGFuZXMsbj10LmV4cGlyYXRpb25UaW1lcyxvPXQucGVuZGluZ0xhbmVzJi02MjkxNDU2MTswPG87KXt2YXIgdT0zMS0kdChvKSxmPTE8PHUsZz1uW3VdO2c9PT0tMT8oKGYmbCk9PT0wfHwoZiZhKSE9PTApJiYoblt1XT1JbihmLGUpKTpnPD1lJiYodC5leHBpcmVkTGFuZXN8PWYpLG8mPX5mfWlmKGU9anQsbD13dCxsPXVuKHQsdD09PWU/bDowLHQuY2FuY2VsUGVuZGluZ0NvbW1pdCE9PW51bGx8fHQudGltZW91dEhhbmRsZSE9PS0xKSxhPXQuY2FsbGJhY2tOb2RlLGw9PT0wfHx0PT09ZSYmKFJ0PT09Mnx8UnQ9PT05KXx8dC5jYW5jZWxQZW5kaW5nQ29tbWl0IT09bnVsbClyZXR1cm4gYSE9PW51bGwmJmEhPT1udWxsJiZzbihhKSx0LmNhbGxiYWNrTm9kZT1udWxsLHQuY2FsbGJhY2tQcmlvcml0eT0wO2lmKChsJjMpPT09MHx8RHQodCxsKSl7aWYoZT1sJi1sLGU9PT10LmNhbGxiYWNrUHJpb3JpdHkpcmV0dXJuIGU7c3dpdGNoKGEhPT1udWxsJiZzbihhKSxhbyhsKSl7Y2FzZSAyOmNhc2UgODpsPUZuO2JyZWFrO2Nhc2UgMzI6bD1ubDticmVhaztjYXNlIDI2ODQzNTQ1NjpsPUdsO2JyZWFrO2RlZmF1bHQ6bD1ubH1yZXR1cm4gYT1SaC5iaW5kKG51bGwsdCksbD15bChsLGEpLHQuY2FsbGJhY2tQcmlvcml0eT1lLHQuY2FsbGJhY2tOb2RlPWwsZX1yZXR1cm4gYSE9PW51bGwmJmEhPT1udWxsJiZzbihhKSx0LmNhbGxiYWNrUHJpb3JpdHk9Mix0LmNhbGxiYWNrTm9kZT1udWxsLDJ9ZnVuY3Rpb24gUmgodCxlKXtpZihkZSE9PTAmJmRlIT09NSlyZXR1cm4gdC5jYWxsYmFja05vZGU9bnVsbCx0LmNhbGxiYWNrUHJpb3JpdHk9MCxudWxsO3ZhciBsPXQuY2FsbGJhY2tOb2RlO2lmKHNyKCkmJnQuY2FsbGJhY2tOb2RlIT09bClyZXR1cm4gbnVsbDt2YXIgYT13dDtyZXR1cm4gYT11bih0LHQ9PT1qdD9hOjAsdC5jYW5jZWxQZW5kaW5nQ29tbWl0IT09bnVsbHx8dC50aW1lb3V0SGFuZGxlIT09LTEpLGE9PT0wP251bGw6KGRoKHQsYSxlKSxBaCh0LGdlKCkpLHQuY2FsbGJhY2tOb2RlIT1udWxsJiZ0LmNhbGxiYWNrTm9kZT09PWw/UmguYmluZChudWxsLHQpOm51bGwpfWZ1bmN0aW9uIE5oKHQsZSl7aWYoc3IoKSlyZXR1cm4gbnVsbDtkaCh0LGUsITApfWZ1bmN0aW9uIHExKCl7JDEoZnVuY3Rpb24oKXsoQXQmNikhPT0wP3lsKFVsLEcxKTpNaCgpfSl9ZnVuY3Rpb24gQWMoKXtyZXR1cm4gZW49PT0wJiYoZW49dG8oKSksZW59ZnVuY3Rpb24gemgodCl7cmV0dXJuIHQ9PW51bGx8fHR5cGVvZiB0PT0ic3ltYm9sInx8dHlwZW9mIHQ9PSJib29sZWFuIj9udWxsOnR5cGVvZiB0PT0iZnVuY3Rpb24iP3Q6QmEoIiIrdCl9ZnVuY3Rpb24gX2godCxlKXt2YXIgbD1lLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtyZXR1cm4gbC5uYW1lPWUubmFtZSxsLnZhbHVlPWUudmFsdWUsdC5pZCYmbC5zZXRBdHRyaWJ1dGUoImZvcm0iLHQuaWQpLGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobCxlKSx0PW5ldyBGb3JtRGF0YSh0KSxsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobCksdH1mdW5jdGlvbiBZMSh0LGUsbCxhLG4pe2lmKGU9PT0ic3VibWl0IiYmbCYmbC5zdGF0ZU5vZGU9PT1uKXt2YXIgbz16aCgobltwZV18fG51bGwpLmFjdGlvbiksdT1hLnN1Ym1pdHRlcjt1JiYoZT0oZT11W3BlXXx8bnVsbCk/emgoZS5mb3JtQWN0aW9uKTp1LmdldEF0dHJpYnV0ZSgiZm9ybUFjdGlvbiIpLGUhPT1udWxsJiYobz1lLHU9bnVsbCkpO3ZhciBmPW5ldyBHYSgiYWN0aW9uIiwiYWN0aW9uIixudWxsLGEsbik7dC5wdXNoKHtldmVudDpmLGxpc3RlbmVyczpbe2luc3RhbmNlOm51bGwsbGlzdGVuZXI6ZnVuY3Rpb24oKXtpZihhLmRlZmF1bHRQcmV2ZW50ZWQpe2lmKGVuIT09MCl7dmFyIGc9dT9faChuLHUpOm5ldyBGb3JtRGF0YShuKTtQcyhsLHtwZW5kaW5nOiEwLGRhdGE6ZyxtZXRob2Q6bi5tZXRob2QsYWN0aW9uOm99LG51bGwsZyl9fWVsc2UgdHlwZW9mIG89PSJmdW5jdGlvbiImJihmLnByZXZlbnREZWZhdWx0KCksZz11P19oKG4sdSk6bmV3IEZvcm1EYXRhKG4pLFBzKGwse3BlbmRpbmc6ITAsZGF0YTpnLG1ldGhvZDpuLm1ldGhvZCxhY3Rpb246b30sbyxnKSl9LGN1cnJlbnRUYXJnZXQ6bn1dfSl9fWZvcih2YXIgUmM9MDtSYzxocy5sZW5ndGg7UmMrKyl7dmFyIE5jPWhzW1JjXSxWMT1OYy50b0xvd2VyQ2FzZSgpLFgxPU5jWzBdLnRvVXBwZXJDYXNlKCkrTmMuc2xpY2UoMSk7dGwoVjEsIm9uIitYMSl9dGwodWQsIm9uQW5pbWF0aW9uRW5kIiksdGwoZGQsIm9uQW5pbWF0aW9uSXRlcmF0aW9uIiksdGwoZmQsIm9uQW5pbWF0aW9uU3RhcnQiKSx0bCgiZGJsY2xpY2siLCJvbkRvdWJsZUNsaWNrIiksdGwoImZvY3VzaW4iLCJvbkZvY3VzIiksdGwoImZvY3Vzb3V0Iiwib25CbHVyIiksdGwocjEsIm9uVHJhbnNpdGlvblJ1biIpLHRsKHMxLCJvblRyYW5zaXRpb25TdGFydCIpLHRsKGMxLCJvblRyYW5zaXRpb25DYW5jZWwiKSx0bChoZCwib25UcmFuc2l0aW9uRW5kIiksV2UoIm9uTW91c2VFbnRlciIsWyJtb3VzZW91dCIsIm1vdXNlb3ZlciJdKSxXZSgib25Nb3VzZUxlYXZlIixbIm1vdXNlb3V0IiwibW91c2VvdmVyIl0pLFdlKCJvblBvaW50ZXJFbnRlciIsWyJwb2ludGVyb3V0IiwicG9pbnRlcm92ZXIiXSksV2UoIm9uUG9pbnRlckxlYXZlIixbInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciJdKSxibCgib25DaGFuZ2UiLCJjaGFuZ2UgY2xpY2sgZm9jdXNpbiBmb2N1c291dCBpbnB1dCBrZXlkb3duIGtleXVwIHNlbGVjdGlvbmNoYW5nZSIuc3BsaXQoIiAiKSksYmwoIm9uU2VsZWN0IiwiZm9jdXNvdXQgY29udGV4dG1lbnUgZHJhZ2VuZCBmb2N1c2luIGtleWRvd24ga2V5dXAgbW91c2Vkb3duIG1vdXNldXAgc2VsZWN0aW9uY2hhbmdlIi5zcGxpdCgiICIpKSxibCgib25CZWZvcmVJbnB1dCIsWyJjb21wb3NpdGlvbmVuZCIsImtleXByZXNzIiwidGV4dElucHV0IiwicGFzdGUiXSksYmwoIm9uQ29tcG9zaXRpb25FbmQiLCJjb21wb3NpdGlvbmVuZCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKSksYmwoIm9uQ29tcG9zaXRpb25TdGFydCIsImNvbXBvc2l0aW9uc3RhcnQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIikpLGJsKCJvbkNvbXBvc2l0aW9uVXBkYXRlIiwiY29tcG9zaXRpb251cGRhdGUgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIikpO3ZhciBYbz0iYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdXNwZW5kIHRpbWV1cGRhdGUgdm9sdW1lY2hhbmdlIHdhaXRpbmciLnNwbGl0KCIgIiksWjE9bmV3IFNldCgiYmVmb3JldG9nZ2xlIGNhbmNlbCBjbG9zZSBpbnZhbGlkIGxvYWQgc2Nyb2xsIHNjcm9sbGVuZCB0b2dnbGUiLnNwbGl0KCIgIikuY29uY2F0KFhvKSk7ZnVuY3Rpb24ga2godCxlKXtlPShlJjQpIT09MDtmb3IodmFyIGw9MDtsPHQubGVuZ3RoO2wrKyl7dmFyIGE9dFtsXSxuPWEuZXZlbnQ7YT1hLmxpc3RlbmVyczt0Ont2YXIgbz12b2lkIDA7aWYoZSlmb3IodmFyIHU9YS5sZW5ndGgtMTswPD11O3UtLSl7dmFyIGY9YVt1XSxnPWYuaW5zdGFuY2UsUz1mLmN1cnJlbnRUYXJnZXQ7aWYoZj1mLmxpc3RlbmVyLGchPT1vJiZuLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWsgdDtvPWYsbi5jdXJyZW50VGFyZ2V0PVM7dHJ5e28obil9Y2F0Y2goTil7JGkoTil9bi5jdXJyZW50VGFyZ2V0PW51bGwsbz1nfWVsc2UgZm9yKHU9MDt1PGEubGVuZ3RoO3UrKyl7aWYoZj1hW3VdLGc9Zi5pbnN0YW5jZSxTPWYuY3VycmVudFRhcmdldCxmPWYubGlzdGVuZXIsZyE9PW8mJm4uaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayB0O289ZixuLmN1cnJlbnRUYXJnZXQ9Uzt0cnl7byhuKX1jYXRjaChOKXskaShOKX1uLmN1cnJlbnRUYXJnZXQ9bnVsbCxvPWd9fX19ZnVuY3Rpb24gdnQodCxlKXt2YXIgbD1lW25vXTtsPT09dm9pZCAwJiYobD1lW25vXT1uZXcgU2V0KTt2YXIgYT10KyJfX2J1YmJsZSI7bC5oYXMoYSl8fChPaChlLHQsMiwhMSksbC5hZGQoYSkpfWZ1bmN0aW9uIHpjKHQsZSxsKXt2YXIgYT0wO2UmJihhfD00KSxPaChsLHQsYSxlKX12YXIgZHI9Il9yZWFjdExpc3RlbmluZyIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMik7ZnVuY3Rpb24gX2ModCl7aWYoIXRbZHJdKXt0W2RyXT0hMCx2aS5mb3JFYWNoKGZ1bmN0aW9uKGwpe2whPT0ic2VsZWN0aW9uY2hhbmdlIiYmKFoxLmhhcyhsKXx8emMobCwhMSx0KSx6YyhsLCEwLHQpKX0pO3ZhciBlPXQubm9kZVR5cGU9PT05P3Q6dC5vd25lckRvY3VtZW50O2U9PT1udWxsfHxlW2RyXXx8KGVbZHJdPSEwLHpjKCJzZWxlY3Rpb25jaGFuZ2UiLCExLGUpKX19ZnVuY3Rpb24gT2godCxlLGwsYSl7c3dpdGNoKG5tKGUpKXtjYXNlIDI6dmFyIG49dnA7YnJlYWs7Y2FzZSA4Om49YnA7YnJlYWs7ZGVmYXVsdDpuPVFjfWw9bi5iaW5kKG51bGwsZSxsLHQpLG49dm9pZCAwLCFwbnx8ZSE9PSJ0b3VjaHN0YXJ0IiYmZSE9PSJ0b3VjaG1vdmUiJiZlIT09IndoZWVsInx8KG49ITApLGE/biE9PXZvaWQgMD90LmFkZEV2ZW50TGlzdGVuZXIoZSxsLHtjYXB0dXJlOiEwLHBhc3NpdmU6bn0pOnQuYWRkRXZlbnRMaXN0ZW5lcihlLGwsITApOm4hPT12b2lkIDA/dC5hZGRFdmVudExpc3RlbmVyKGUsbCx7cGFzc2l2ZTpufSk6dC5hZGRFdmVudExpc3RlbmVyKGUsbCwhMSl9ZnVuY3Rpb24ga2ModCxlLGwsYSxuKXt2YXIgbz1hO2lmKChlJjEpPT09MCYmKGUmMik9PT0wJiZhIT09bnVsbCl0OmZvcig7Oyl7aWYoYT09PW51bGwpcmV0dXJuO3ZhciB1PWEudGFnO2lmKHU9PT0zfHx1PT09NCl7dmFyIGY9YS5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztpZihmPT09bilicmVhaztpZih1PT09NClmb3IodT1hLnJldHVybjt1IT09bnVsbDspe3ZhciBnPXUudGFnO2lmKChnPT09M3x8Zz09PTQpJiZ1LnN0YXRlTm9kZS5jb250YWluZXJJbmZvPT09bilyZXR1cm47dT11LnJldHVybn1mb3IoO2YhPT1udWxsOyl7aWYodT1WbChmKSx1PT09bnVsbClyZXR1cm47aWYoZz11LnRhZyxnPT09NXx8Zz09PTZ8fGc9PT0yNnx8Zz09PTI3KXthPW89dTtjb250aW51ZSB0fWY9Zi5wYXJlbnROb2RlfX1hPWEucmV0dXJufXJvKGZ1bmN0aW9uKCl7dmFyIFM9byxOPW1uKGwpLGs9W107dDp7dmFyIEU9bWQuZ2V0KHQpO2lmKEUhPT12b2lkIDApe3ZhciBUPUdhLGx0PXQ7c3dpdGNoKHQpe2Nhc2Uia2V5cHJlc3MiOmlmKEhhKGwpPT09MClicmVhayB0O2Nhc2Uia2V5ZG93biI6Y2FzZSJrZXl1cCI6VD1VMDticmVhaztjYXNlImZvY3VzaW4iOmx0PSJmb2N1cyIsVD1uczticmVhaztjYXNlImZvY3Vzb3V0IjpsdD0iYmx1ciIsVD1uczticmVhaztjYXNlImJlZm9yZWJsdXIiOmNhc2UiYWZ0ZXJibHVyIjpUPW5zO2JyZWFrO2Nhc2UiY2xpY2siOmlmKGwuYnV0dG9uPT09MilicmVhayB0O2Nhc2UiYXV4Y2xpY2siOmNhc2UiZGJsY2xpY2siOmNhc2UibW91c2Vkb3duIjpjYXNlIm1vdXNlbW92ZSI6Y2FzZSJtb3VzZXVwIjpjYXNlIm1vdXNlb3V0IjpjYXNlIm1vdXNlb3ZlciI6Y2FzZSJjb250ZXh0bWVudSI6VD1WdTticmVhaztjYXNlImRyYWciOmNhc2UiZHJhZ2VuZCI6Y2FzZSJkcmFnZW50ZXIiOmNhc2UiZHJhZ2V4aXQiOmNhc2UiZHJhZ2xlYXZlIjpjYXNlImRyYWdvdmVyIjpjYXNlImRyYWdzdGFydCI6Y2FzZSJkcm9wIjpUPU0wO2JyZWFrO2Nhc2UidG91Y2hjYW5jZWwiOmNhc2UidG91Y2hlbmQiOmNhc2UidG91Y2htb3ZlIjpjYXNlInRvdWNoc3RhcnQiOlQ9WTA7YnJlYWs7Y2FzZSB1ZDpjYXNlIGRkOmNhc2UgZmQ6VD1OMDticmVhaztjYXNlIGhkOlQ9WDA7YnJlYWs7Y2FzZSJzY3JvbGwiOmNhc2Uic2Nyb2xsZW5kIjpUPUVpO2JyZWFrO2Nhc2Uid2hlZWwiOlQ9UTA7YnJlYWs7Y2FzZSJjb3B5IjpjYXNlImN1dCI6Y2FzZSJwYXN0ZSI6VD1fMDticmVhaztjYXNlImdvdHBvaW50ZXJjYXB0dXJlIjpjYXNlImxvc3Rwb2ludGVyY2FwdHVyZSI6Y2FzZSJwb2ludGVyY2FuY2VsIjpjYXNlInBvaW50ZXJkb3duIjpjYXNlInBvaW50ZXJtb3ZlIjpjYXNlInBvaW50ZXJvdXQiOmNhc2UicG9pbnRlcm92ZXIiOmNhc2UicG9pbnRlcnVwIjpUPVp1O2JyZWFrO2Nhc2UidG9nZ2xlIjpjYXNlImJlZm9yZXRvZ2dsZSI6VD1QMH12YXIgRj0oZSY0KSE9PTAsX3Q9IUYmJih0PT09InNjcm9sbCJ8fHQ9PT0ic2Nyb2xsZW5kIiksYj1GP0UhPT1udWxsP0UrIkNhcHR1cmUiOm51bGw6RTtGPVtdO2Zvcih2YXIgeT1TLHc7eSE9PW51bGw7KXt2YXIgej15O2lmKHc9ei5zdGF0ZU5vZGUsej16LnRhZyx6IT09NSYmeiE9PTI2JiZ6IT09Mjd8fHc9PT1udWxsfHxiPT09bnVsbHx8KHo9SmwoeSxiKSx6IT1udWxsJiZGLnB1c2goWm8oeSx6LHcpKSksX3QpYnJlYWs7eT15LnJldHVybn0wPEYubGVuZ3RoJiYoRT1uZXcgVChFLGx0LG51bGwsbCxOKSxrLnB1c2goe2V2ZW50OkUsbGlzdGVuZXJzOkZ9KSl9fWlmKChlJjcpPT09MCl7dDp7aWYoRT10PT09Im1vdXNlb3ZlciJ8fHQ9PT0icG9pbnRlcm92ZXIiLFQ9dD09PSJtb3VzZW91dCJ8fHQ9PT0icG9pbnRlcm91dCIsRSYmbCE9PWhuJiYobHQ9bC5yZWxhdGVkVGFyZ2V0fHxsLmZyb21FbGVtZW50KSYmKFZsKGx0KXx8bHRbWWxdKSlicmVhayB0O2lmKChUfHxFKSYmKEU9Ti53aW5kb3c9PT1OP046KEU9Ti5vd25lckRvY3VtZW50KT9FLmRlZmF1bHRWaWV3fHxFLnBhcmVudFdpbmRvdzp3aW5kb3csVD8obHQ9bC5yZWxhdGVkVGFyZ2V0fHxsLnRvRWxlbWVudCxUPVMsbHQ9bHQ/VmwobHQpOm51bGwsbHQhPT1udWxsJiYoX3Q9bShsdCksRj1sdC50YWcsbHQhPT1fdHx8RiE9PTUmJkYhPT0yNyYmRiE9PTYpJiYobHQ9bnVsbCkpOihUPW51bGwsbHQ9UyksVCE9PWx0KSl7aWYoRj1WdSx6PSJvbk1vdXNlTGVhdmUiLGI9Im9uTW91c2VFbnRlciIseT0ibW91c2UiLCh0PT09InBvaW50ZXJvdXQifHx0PT09InBvaW50ZXJvdmVyIikmJihGPVp1LHo9Im9uUG9pbnRlckxlYXZlIixiPSJvblBvaW50ZXJFbnRlciIseT0icG9pbnRlciIpLF90PVQ9PW51bGw/RTpBYShUKSx3PWx0PT1udWxsP0U6QWEobHQpLEU9bmV3IEYoeix5KyJsZWF2ZSIsVCxsLE4pLEUudGFyZ2V0PV90LEUucmVsYXRlZFRhcmdldD13LHo9bnVsbCxWbChOKT09PVMmJihGPW5ldyBGKGIseSsiZW50ZXIiLGx0LGwsTiksRi50YXJnZXQ9dyxGLnJlbGF0ZWRUYXJnZXQ9X3Qsej1GKSxfdD16LFQmJmx0KWU6e2ZvcihGPVQsYj1sdCx5PTAsdz1GO3c7dz1Wbih3KSl5Kys7Zm9yKHc9MCx6PWI7ejt6PVZuKHopKXcrKztmb3IoOzA8eS13OylGPVZuKEYpLHktLTtmb3IoOzA8dy15OyliPVZuKGIpLHctLTtmb3IoO3ktLTspe2lmKEY9PT1ifHxiIT09bnVsbCYmRj09PWIuYWx0ZXJuYXRlKWJyZWFrIGU7Rj1WbihGKSxiPVZuKGIpfUY9bnVsbH1lbHNlIEY9bnVsbDtUIT09bnVsbCYmamgoayxFLFQsRiwhMSksbHQhPT1udWxsJiZfdCE9PW51bGwmJmpoKGssX3QsbHQsRiwhMCl9fXQ6e2lmKEU9Uz9BYShTKTp3aW5kb3csVD1FLm5vZGVOYW1lJiZFLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksVD09PSJzZWxlY3QifHxUPT09ImlucHV0IiYmRS50eXBlPT09ImZpbGUiKXZhciBQPUl1O2Vsc2UgaWYoJHUoRSkpaWYodGQpUD1uMTtlbHNle1A9bDE7dmFyIHB0PWUxfWVsc2UgVD1FLm5vZGVOYW1lLCFUfHxULnRvTG93ZXJDYXNlKCkhPT0iaW5wdXQifHxFLnR5cGUhPT0iY2hlY2tib3giJiZFLnR5cGUhPT0icmFkaW8iP1MmJmphKFMuZWxlbWVudFR5cGUpJiYoUD1JdSk6UD1hMTtpZihQJiYoUD1QKHQsUykpKXtGdShrLFAsbCxOKTticmVhayB0fXB0JiZwdCh0LEUsUyksdD09PSJmb2N1c291dCImJlMmJkUudHlwZT09PSJudW1iZXIiJiZTLm1lbW9pemVkUHJvcHMudmFsdWUhPW51bGwmJlBsKEUsIm51bWJlciIsRS52YWx1ZSl9c3dpdGNoKHB0PVM/QWEoUyk6d2luZG93LHQpe2Nhc2UiZm9jdXNpbiI6KCR1KHB0KXx8cHQuY29udGVudEVkaXRhYmxlPT09InRydWUiKSYmKGJuPXB0LHVzPVMseW89bnVsbCk7YnJlYWs7Y2FzZSJmb2N1c291dCI6eW89dXM9Ym49bnVsbDticmVhaztjYXNlIm1vdXNlZG93biI6ZHM9ITA7YnJlYWs7Y2FzZSJjb250ZXh0bWVudSI6Y2FzZSJtb3VzZXVwIjpjYXNlImRyYWdlbmQiOmRzPSExLHNkKGssbCxOKTticmVhaztjYXNlInNlbGVjdGlvbmNoYW5nZSI6aWYoaTEpYnJlYWs7Y2FzZSJrZXlkb3duIjpjYXNlImtleXVwIjpzZChrLGwsTil9dmFyIFc7aWYoaXMpdDp7c3dpdGNoKHQpe2Nhc2UiY29tcG9zaXRpb25zdGFydCI6dmFyIGV0PSJvbkNvbXBvc2l0aW9uU3RhcnQiO2JyZWFrIHQ7Y2FzZSJjb21wb3NpdGlvbmVuZCI6ZXQ9Im9uQ29tcG9zaXRpb25FbmQiO2JyZWFrIHQ7Y2FzZSJjb21wb3NpdGlvbnVwZGF0ZSI6ZXQ9Im9uQ29tcG9zaXRpb25VcGRhdGUiO2JyZWFrIHR9ZXQ9dm9pZCAwfWVsc2Ugdm4/SnUodCxsKSYmKGV0PSJvbkNvbXBvc2l0aW9uRW5kIik6dD09PSJrZXlkb3duIiYmbC5rZXlDb2RlPT09MjI5JiYoZXQ9Im9uQ29tcG9zaXRpb25TdGFydCIpO2V0JiYoUXUmJmwubG9jYWxlIT09ImtvIiYmKHZufHxldCE9PSJvbkNvbXBvc2l0aW9uU3RhcnQiP2V0PT09Im9uQ29tcG9zaXRpb25FbmQiJiZ2biYmKFc9c28oKSk6KEllPU4seW49InZhbHVlImluIEllP0llLnZhbHVlOkllLnRleHRDb250ZW50LHZuPSEwKSkscHQ9ZnIoUyxldCksMDxwdC5sZW5ndGgmJihldD1uZXcgWHUoZXQsdCxudWxsLGwsTiksay5wdXNoKHtldmVudDpldCxsaXN0ZW5lcnM6cHR9KSxXP2V0LmRhdGE9VzooVz1XdShsKSxXIT09bnVsbCYmKGV0LmRhdGE9VykpKSksKFc9VzA/JDAodCxsKTpGMCh0LGwpKSYmKGV0PWZyKFMsIm9uQmVmb3JlSW5wdXQiKSwwPGV0Lmxlbmd0aCYmKHB0PW5ldyBYdSgib25CZWZvcmVJbnB1dCIsImJlZm9yZWlucHV0IixudWxsLGwsTiksay5wdXNoKHtldmVudDpwdCxsaXN0ZW5lcnM6ZXR9KSxwdC5kYXRhPVcpKSxZMShrLHQsUyxsLE4pfWtoKGssZSl9KX1mdW5jdGlvbiBabyh0LGUsbCl7cmV0dXJue2luc3RhbmNlOnQsbGlzdGVuZXI6ZSxjdXJyZW50VGFyZ2V0Omx9fWZ1bmN0aW9uIGZyKHQsZSl7Zm9yKHZhciBsPWUrIkNhcHR1cmUiLGE9W107dCE9PW51bGw7KXt2YXIgbj10LG89bi5zdGF0ZU5vZGU7aWYobj1uLnRhZyxuIT09NSYmbiE9PTI2JiZuIT09Mjd8fG89PT1udWxsfHwobj1KbCh0LGwpLG4hPW51bGwmJmEudW5zaGlmdChabyh0LG4sbykpLG49SmwodCxlKSxuIT1udWxsJiZhLnB1c2goWm8odCxuLG8pKSksdC50YWc9PT0zKXJldHVybiBhO3Q9dC5yZXR1cm59cmV0dXJuW119ZnVuY3Rpb24gVm4odCl7aWYodD09PW51bGwpcmV0dXJuIG51bGw7ZG8gdD10LnJldHVybjt3aGlsZSh0JiZ0LnRhZyE9PTUmJnQudGFnIT09MjcpO3JldHVybiB0fHxudWxsfWZ1bmN0aW9uIGpoKHQsZSxsLGEsbil7Zm9yKHZhciBvPWUuX3JlYWN0TmFtZSx1PVtdO2whPT1udWxsJiZsIT09YTspe3ZhciBmPWwsZz1mLmFsdGVybmF0ZSxTPWYuc3RhdGVOb2RlO2lmKGY9Zi50YWcsZyE9PW51bGwmJmc9PT1hKWJyZWFrO2YhPT01JiZmIT09MjYmJmYhPT0yN3x8Uz09PW51bGx8fChnPVMsbj8oUz1KbChsLG8pLFMhPW51bGwmJnUudW5zaGlmdChabyhsLFMsZykpKTpufHwoUz1KbChsLG8pLFMhPW51bGwmJnUucHVzaChabyhsLFMsZykpKSksbD1sLnJldHVybn11Lmxlbmd0aCE9PTAmJnQucHVzaCh7ZXZlbnQ6ZSxsaXN0ZW5lcnM6dX0pfXZhciBRMT0vXHJcbj8vZyxLMT0vXHUwMDAwfFx1RkZGRC9nO2Z1bmN0aW9uIEJoKHQpe3JldHVybih0eXBlb2YgdD09InN0cmluZyI/dDoiIit0KS5yZXBsYWNlKFExLGAKYCkucmVwbGFjZShLMSwiIil9ZnVuY3Rpb24gTGgodCxlKXtyZXR1cm4gZT1CaChlKSxCaCh0KT09PWV9ZnVuY3Rpb24gaHIoKXt9ZnVuY3Rpb24genQodCxlLGwsYSxuLG8pe3N3aXRjaChsKXtjYXNlImNoaWxkcmVuIjp0eXBlb2YgYT09InN0cmluZyI/ZT09PSJib2R5Inx8ZT09PSJ0ZXh0YXJlYSImJmE9PT0iInx8RmUodCxhKToodHlwZW9mIGE9PSJudW1iZXIifHx0eXBlb2YgYT09ImJpZ2ludCIpJiZlIT09ImJvZHkiJiZGZSh0LCIiK2EpO2JyZWFrO2Nhc2UiY2xhc3NOYW1lIjp0dCh0LCJjbGFzcyIsYSk7YnJlYWs7Y2FzZSJ0YWJJbmRleCI6dHQodCwidGFiaW5kZXgiLGEpO2JyZWFrO2Nhc2UiZGlyIjpjYXNlInJvbGUiOmNhc2Uidmlld0JveCI6Y2FzZSJ3aWR0aCI6Y2FzZSJoZWlnaHQiOnR0KHQsbCxhKTticmVhaztjYXNlInN0eWxlIjpPYSh0LGEsbyk7YnJlYWs7Y2FzZSJkYXRhIjppZihlIT09Im9iamVjdCIpe3R0KHQsImRhdGEiLGEpO2JyZWFrfWNhc2Uic3JjIjpjYXNlImhyZWYiOmlmKGE9PT0iIiYmKGUhPT0iYSJ8fGwhPT0iaHJlZiIpKXt0LnJlbW92ZUF0dHJpYnV0ZShsKTticmVha31pZihhPT1udWxsfHx0eXBlb2YgYT09ImZ1bmN0aW9uInx8dHlwZW9mIGE9PSJzeW1ib2wifHx0eXBlb2YgYT09ImJvb2xlYW4iKXt0LnJlbW92ZUF0dHJpYnV0ZShsKTticmVha31hPUJhKCIiK2EpLHQuc2V0QXR0cmlidXRlKGwsYSk7YnJlYWs7Y2FzZSJhY3Rpb24iOmNhc2UiZm9ybUFjdGlvbiI6aWYodHlwZW9mIGE9PSJmdW5jdGlvbiIpe3Quc2V0QXR0cmlidXRlKGwsImphdmFzY3JpcHQ6dGhyb3cgbmV3IEVycm9yKCdBIFJlYWN0IGZvcm0gd2FzIHVuZXhwZWN0ZWRseSBzdWJtaXR0ZWQuIElmIHlvdSBjYWxsZWQgZm9ybS5zdWJtaXQoKSBtYW51YWxseSwgY29uc2lkZXIgdXNpbmcgZm9ybS5yZXF1ZXN0U3VibWl0KCkgaW5zdGVhZC4gSWYgeW91XFwncmUgdHJ5aW5nIHRvIHVzZSBldmVudC5zdG9wUHJvcGFnYXRpb24oKSBpbiBhIHN1Ym1pdCBldmVudCBoYW5kbGVyLCBjb25zaWRlciBhbHNvIGNhbGxpbmcgZXZlbnQucHJldmVudERlZmF1bHQoKS4nKSIpO2JyZWFrfWVsc2UgdHlwZW9mIG89PSJmdW5jdGlvbiImJihsPT09ImZvcm1BY3Rpb24iPyhlIT09ImlucHV0IiYmenQodCxlLCJuYW1lIixuLm5hbWUsbixudWxsKSx6dCh0LGUsImZvcm1FbmNUeXBlIixuLmZvcm1FbmNUeXBlLG4sbnVsbCksenQodCxlLCJmb3JtTWV0aG9kIixuLmZvcm1NZXRob2QsbixudWxsKSx6dCh0LGUsImZvcm1UYXJnZXQiLG4uZm9ybVRhcmdldCxuLG51bGwpKTooenQodCxlLCJlbmNUeXBlIixuLmVuY1R5cGUsbixudWxsKSx6dCh0LGUsIm1ldGhvZCIsbi5tZXRob2QsbixudWxsKSx6dCh0LGUsInRhcmdldCIsbi50YXJnZXQsbixudWxsKSkpO2lmKGE9PW51bGx8fHR5cGVvZiBhPT0ic3ltYm9sInx8dHlwZW9mIGE9PSJib29sZWFuIil7dC5yZW1vdmVBdHRyaWJ1dGUobCk7YnJlYWt9YT1CYSgiIithKSx0LnNldEF0dHJpYnV0ZShsLGEpO2JyZWFrO2Nhc2Uib25DbGljayI6YSE9bnVsbCYmKHQub25jbGljaz1ocik7YnJlYWs7Y2FzZSJvblNjcm9sbCI6YSE9bnVsbCYmdnQoInNjcm9sbCIsdCk7YnJlYWs7Y2FzZSJvblNjcm9sbEVuZCI6YSE9bnVsbCYmdnQoInNjcm9sbGVuZCIsdCk7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6aWYoYSE9bnVsbCl7aWYodHlwZW9mIGEhPSJvYmplY3QifHwhKCJfX2h0bWwiaW4gYSkpdGhyb3cgRXJyb3Iocyg2MSkpO2lmKGw9YS5fX2h0bWwsbCE9bnVsbCl7aWYobi5jaGlsZHJlbiE9bnVsbCl0aHJvdyBFcnJvcihzKDYwKSk7dC5pbm5lckhUTUw9bH19YnJlYWs7Y2FzZSJtdWx0aXBsZSI6dC5tdWx0aXBsZT1hJiZ0eXBlb2YgYSE9ImZ1bmN0aW9uIiYmdHlwZW9mIGEhPSJzeW1ib2wiO2JyZWFrO2Nhc2UibXV0ZWQiOnQubXV0ZWQ9YSYmdHlwZW9mIGEhPSJmdW5jdGlvbiImJnR5cGVvZiBhIT0ic3ltYm9sIjticmVhaztjYXNlInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyI6Y2FzZSJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciOmNhc2UiZGVmYXVsdFZhbHVlIjpjYXNlImRlZmF1bHRDaGVja2VkIjpjYXNlImlubmVySFRNTCI6Y2FzZSJyZWYiOmJyZWFrO2Nhc2UiYXV0b0ZvY3VzIjpicmVhaztjYXNlInhsaW5rSHJlZiI6aWYoYT09bnVsbHx8dHlwZW9mIGE9PSJmdW5jdGlvbiJ8fHR5cGVvZiBhPT0iYm9vbGVhbiJ8fHR5cGVvZiBhPT0ic3ltYm9sIil7dC5yZW1vdmVBdHRyaWJ1dGUoInhsaW5rOmhyZWYiKTticmVha31sPUJhKCIiK2EpLHQuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJ4bGluazpocmVmIixsKTticmVhaztjYXNlImNvbnRlbnRFZGl0YWJsZSI6Y2FzZSJzcGVsbENoZWNrIjpjYXNlImRyYWdnYWJsZSI6Y2FzZSJ2YWx1ZSI6Y2FzZSJhdXRvUmV2ZXJzZSI6Y2FzZSJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIjpjYXNlImZvY3VzYWJsZSI6Y2FzZSJwcmVzZXJ2ZUFscGhhIjphIT1udWxsJiZ0eXBlb2YgYSE9ImZ1bmN0aW9uIiYmdHlwZW9mIGEhPSJzeW1ib2wiP3Quc2V0QXR0cmlidXRlKGwsIiIrYSk6dC5yZW1vdmVBdHRyaWJ1dGUobCk7YnJlYWs7Y2FzZSJpbmVydCI6Y2FzZSJhbGxvd0Z1bGxTY3JlZW4iOmNhc2UiYXN5bmMiOmNhc2UiYXV0b1BsYXkiOmNhc2UiY29udHJvbHMiOmNhc2UiZGVmYXVsdCI6Y2FzZSJkZWZlciI6Y2FzZSJkaXNhYmxlZCI6Y2FzZSJkaXNhYmxlUGljdHVyZUluUGljdHVyZSI6Y2FzZSJkaXNhYmxlUmVtb3RlUGxheWJhY2siOmNhc2UiZm9ybU5vVmFsaWRhdGUiOmNhc2UiaGlkZGVuIjpjYXNlImxvb3AiOmNhc2Uibm9Nb2R1bGUiOmNhc2Uibm9WYWxpZGF0ZSI6Y2FzZSJvcGVuIjpjYXNlInBsYXlzSW5saW5lIjpjYXNlInJlYWRPbmx5IjpjYXNlInJlcXVpcmVkIjpjYXNlInJldmVyc2VkIjpjYXNlInNjb3BlZCI6Y2FzZSJzZWFtbGVzcyI6Y2FzZSJpdGVtU2NvcGUiOmEmJnR5cGVvZiBhIT0iZnVuY3Rpb24iJiZ0eXBlb2YgYSE9InN5bWJvbCI/dC5zZXRBdHRyaWJ1dGUobCwiIik6dC5yZW1vdmVBdHRyaWJ1dGUobCk7YnJlYWs7Y2FzZSJjYXB0dXJlIjpjYXNlImRvd25sb2FkIjphPT09ITA/dC5zZXRBdHRyaWJ1dGUobCwiIik6YSE9PSExJiZhIT1udWxsJiZ0eXBlb2YgYSE9ImZ1bmN0aW9uIiYmdHlwZW9mIGEhPSJzeW1ib2wiP3Quc2V0QXR0cmlidXRlKGwsYSk6dC5yZW1vdmVBdHRyaWJ1dGUobCk7YnJlYWs7Y2FzZSJjb2xzIjpjYXNlInJvd3MiOmNhc2Uic2l6ZSI6Y2FzZSJzcGFuIjphIT1udWxsJiZ0eXBlb2YgYSE9ImZ1bmN0aW9uIiYmdHlwZW9mIGEhPSJzeW1ib2wiJiYhaXNOYU4oYSkmJjE8PWE/dC5zZXRBdHRyaWJ1dGUobCxhKTp0LnJlbW92ZUF0dHJpYnV0ZShsKTticmVhaztjYXNlInJvd1NwYW4iOmNhc2Uic3RhcnQiOmE9PW51bGx8fHR5cGVvZiBhPT0iZnVuY3Rpb24ifHx0eXBlb2YgYT09InN5bWJvbCJ8fGlzTmFOKGEpP3QucmVtb3ZlQXR0cmlidXRlKGwpOnQuc2V0QXR0cmlidXRlKGwsYSk7YnJlYWs7Y2FzZSJwb3BvdmVyIjp2dCgiYmVmb3JldG9nZ2xlIix0KSx2dCgidG9nZ2xlIix0KSxNKHQsInBvcG92ZXIiLGEpO2JyZWFrO2Nhc2UieGxpbmtBY3R1YXRlIjpPdCh0LCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwieGxpbms6YWN0dWF0ZSIsYSk7YnJlYWs7Y2FzZSJ4bGlua0FyY3JvbGUiOk90KHQsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJ4bGluazphcmNyb2xlIixhKTticmVhaztjYXNlInhsaW5rUm9sZSI6T3QodCwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsInhsaW5rOnJvbGUiLGEpO2JyZWFrO2Nhc2UieGxpbmtTaG93IjpPdCh0LCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwieGxpbms6c2hvdyIsYSk7YnJlYWs7Y2FzZSJ4bGlua1RpdGxlIjpPdCh0LCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwieGxpbms6dGl0bGUiLGEpO2JyZWFrO2Nhc2UieGxpbmtUeXBlIjpPdCh0LCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwieGxpbms6dHlwZSIsYSk7YnJlYWs7Y2FzZSJ4bWxCYXNlIjpPdCh0LCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLCJ4bWw6YmFzZSIsYSk7YnJlYWs7Y2FzZSJ4bWxMYW5nIjpPdCh0LCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLCJ4bWw6bGFuZyIsYSk7YnJlYWs7Y2FzZSJ4bWxTcGFjZSI6T3QodCwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwieG1sOnNwYWNlIixhKTticmVhaztjYXNlImlzIjpNKHQsImlzIixhKTticmVhaztjYXNlImlubmVyVGV4dCI6Y2FzZSJ0ZXh0Q29udGVudCI6YnJlYWs7ZGVmYXVsdDooISgyPGwubGVuZ3RoKXx8bFswXSE9PSJvIiYmbFswXSE9PSJPInx8bFsxXSE9PSJuIiYmbFsxXSE9PSJOIikmJihsPVNpLmdldChsKXx8bCxNKHQsbCxhKSl9fWZ1bmN0aW9uIE9jKHQsZSxsLGEsbixvKXtzd2l0Y2gobCl7Y2FzZSJzdHlsZSI6T2EodCxhLG8pO2JyZWFrO2Nhc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiOmlmKGEhPW51bGwpe2lmKHR5cGVvZiBhIT0ib2JqZWN0Inx8ISgiX19odG1sImluIGEpKXRocm93IEVycm9yKHMoNjEpKTtpZihsPWEuX19odG1sLGwhPW51bGwpe2lmKG4uY2hpbGRyZW4hPW51bGwpdGhyb3cgRXJyb3Iocyg2MCkpO3QuaW5uZXJIVE1MPWx9fWJyZWFrO2Nhc2UiY2hpbGRyZW4iOnR5cGVvZiBhPT0ic3RyaW5nIj9GZSh0LGEpOih0eXBlb2YgYT09Im51bWJlciJ8fHR5cGVvZiBhPT0iYmlnaW50IikmJkZlKHQsIiIrYSk7YnJlYWs7Y2FzZSJvblNjcm9sbCI6YSE9bnVsbCYmdnQoInNjcm9sbCIsdCk7YnJlYWs7Y2FzZSJvblNjcm9sbEVuZCI6YSE9bnVsbCYmdnQoInNjcm9sbGVuZCIsdCk7YnJlYWs7Y2FzZSJvbkNsaWNrIjphIT1udWxsJiYodC5vbmNsaWNrPWhyKTticmVhaztjYXNlInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyI6Y2FzZSJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciOmNhc2UiaW5uZXJIVE1MIjpjYXNlInJlZiI6YnJlYWs7Y2FzZSJpbm5lclRleHQiOmNhc2UidGV4dENvbnRlbnQiOmJyZWFrO2RlZmF1bHQ6aWYoIWJpLmhhc093blByb3BlcnR5KGwpKXQ6e2lmKGxbMF09PT0ibyImJmxbMV09PT0ibiImJihuPWwuZW5kc1dpdGgoIkNhcHR1cmUiKSxlPWwuc2xpY2UoMixuP2wubGVuZ3RoLTc6dm9pZCAwKSxvPXRbcGVdfHxudWxsLG89byE9bnVsbD9vW2xdOm51bGwsdHlwZW9mIG89PSJmdW5jdGlvbiImJnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG8sbiksdHlwZW9mIGE9PSJmdW5jdGlvbiIpKXt0eXBlb2YgbyE9ImZ1bmN0aW9uIiYmbyE9PW51bGwmJihsIGluIHQ/dFtsXT1udWxsOnQuaGFzQXR0cmlidXRlKGwpJiZ0LnJlbW92ZUF0dHJpYnV0ZShsKSksdC5hZGRFdmVudExpc3RlbmVyKGUsYSxuKTticmVhayB0fWwgaW4gdD90W2xdPWE6YT09PSEwP3Quc2V0QXR0cmlidXRlKGwsIiIpOk0odCxsLGEpfX19ZnVuY3Rpb24gZmUodCxlLGwpe3N3aXRjaChlKXtjYXNlImRpdiI6Y2FzZSJzcGFuIjpjYXNlInN2ZyI6Y2FzZSJwYXRoIjpjYXNlImEiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlImxpIjpicmVhaztjYXNlImltZyI6dnQoImVycm9yIix0KSx2dCgibG9hZCIsdCk7dmFyIGE9ITEsbj0hMSxvO2ZvcihvIGluIGwpaWYobC5oYXNPd25Qcm9wZXJ0eShvKSl7dmFyIHU9bFtvXTtpZih1IT1udWxsKXN3aXRjaChvKXtjYXNlInNyYyI6YT0hMDticmVhaztjYXNlInNyY1NldCI6bj0hMDticmVhaztjYXNlImNoaWxkcmVuIjpjYXNlImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIjp0aHJvdyBFcnJvcihzKDEzNyxlKSk7ZGVmYXVsdDp6dCh0LGUsbyx1LGwsbnVsbCl9fW4mJnp0KHQsZSwic3JjU2V0IixsLnNyY1NldCxsLG51bGwpLGEmJnp0KHQsZSwic3JjIixsLnNyYyxsLG51bGwpO3JldHVybjtjYXNlImlucHV0Ijp2dCgiaW52YWxpZCIsdCk7dmFyIGY9bz11PW49bnVsbCxnPW51bGwsUz1udWxsO2ZvcihhIGluIGwpaWYobC5oYXNPd25Qcm9wZXJ0eShhKSl7dmFyIE49bFthXTtpZihOIT1udWxsKXN3aXRjaChhKXtjYXNlIm5hbWUiOm49TjticmVhaztjYXNlInR5cGUiOnU9TjticmVhaztjYXNlImNoZWNrZWQiOmc9TjticmVhaztjYXNlImRlZmF1bHRDaGVja2VkIjpTPU47YnJlYWs7Y2FzZSJ2YWx1ZSI6bz1OO2JyZWFrO2Nhc2UiZGVmYXVsdFZhbHVlIjpmPU47YnJlYWs7Y2FzZSJjaGlsZHJlbiI6Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6aWYoTiE9bnVsbCl0aHJvdyBFcnJvcihzKDEzNyxlKSk7YnJlYWs7ZGVmYXVsdDp6dCh0LGUsYSxOLGwsbnVsbCl9fU5hKHQsbyxmLGcsUyx1LG4sITEpLHJlKHQpO3JldHVybjtjYXNlInNlbGVjdCI6dnQoImludmFsaWQiLHQpLGE9dT1vPW51bGw7Zm9yKG4gaW4gbClpZihsLmhhc093blByb3BlcnR5KG4pJiYoZj1sW25dLGYhPW51bGwpKXN3aXRjaChuKXtjYXNlInZhbHVlIjpvPWY7YnJlYWs7Y2FzZSJkZWZhdWx0VmFsdWUiOnU9ZjticmVhaztjYXNlIm11bHRpcGxlIjphPWY7ZGVmYXVsdDp6dCh0LGUsbixmLGwsbnVsbCl9ZT1vLGw9dSx0Lm11bHRpcGxlPSEhYSxlIT1udWxsPyRlKHQsISFhLGUsITEpOmwhPW51bGwmJiRlKHQsISFhLGwsITApO3JldHVybjtjYXNlInRleHRhcmVhIjp2dCgiaW52YWxpZCIsdCksbz1uPWE9bnVsbDtmb3IodSBpbiBsKWlmKGwuaGFzT3duUHJvcGVydHkodSkmJihmPWxbdV0sZiE9bnVsbCkpc3dpdGNoKHUpe2Nhc2UidmFsdWUiOmE9ZjticmVhaztjYXNlImRlZmF1bHRWYWx1ZSI6bj1mO2JyZWFrO2Nhc2UiY2hpbGRyZW4iOm89ZjticmVhaztjYXNlImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIjppZihmIT1udWxsKXRocm93IEVycm9yKHMoOTEpKTticmVhaztkZWZhdWx0Onp0KHQsZSx1LGYsbCxudWxsKX1fYSh0LGEsbixvKSxyZSh0KTtyZXR1cm47Y2FzZSJvcHRpb24iOmZvcihnIGluIGwpaWYobC5oYXNPd25Qcm9wZXJ0eShnKSYmKGE9bFtnXSxhIT1udWxsKSlzd2l0Y2goZyl7Y2FzZSJzZWxlY3RlZCI6dC5zZWxlY3RlZD1hJiZ0eXBlb2YgYSE9ImZ1bmN0aW9uIiYmdHlwZW9mIGEhPSJzeW1ib2wiO2JyZWFrO2RlZmF1bHQ6enQodCxlLGcsYSxsLG51bGwpfXJldHVybjtjYXNlImRpYWxvZyI6dnQoImJlZm9yZXRvZ2dsZSIsdCksdnQoInRvZ2dsZSIsdCksdnQoImNhbmNlbCIsdCksdnQoImNsb3NlIix0KTticmVhaztjYXNlImlmcmFtZSI6Y2FzZSJvYmplY3QiOnZ0KCJsb2FkIix0KTticmVhaztjYXNlInZpZGVvIjpjYXNlImF1ZGlvIjpmb3IoYT0wO2E8WG8ubGVuZ3RoO2ErKyl2dChYb1thXSx0KTticmVhaztjYXNlImltYWdlIjp2dCgiZXJyb3IiLHQpLHZ0KCJsb2FkIix0KTticmVhaztjYXNlImRldGFpbHMiOnZ0KCJ0b2dnbGUiLHQpO2JyZWFrO2Nhc2UiZW1iZWQiOmNhc2Uic291cmNlIjpjYXNlImxpbmsiOnZ0KCJlcnJvciIsdCksdnQoImxvYWQiLHQpO2Nhc2UiYXJlYSI6Y2FzZSJiYXNlIjpjYXNlImJyIjpjYXNlImNvbCI6Y2FzZSJociI6Y2FzZSJrZXlnZW4iOmNhc2UibWV0YSI6Y2FzZSJwYXJhbSI6Y2FzZSJ0cmFjayI6Y2FzZSJ3YnIiOmNhc2UibWVudWl0ZW0iOmZvcihTIGluIGwpaWYobC5oYXNPd25Qcm9wZXJ0eShTKSYmKGE9bFtTXSxhIT1udWxsKSlzd2l0Y2goUyl7Y2FzZSJjaGlsZHJlbiI6Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6dGhyb3cgRXJyb3IocygxMzcsZSkpO2RlZmF1bHQ6enQodCxlLFMsYSxsLG51bGwpfXJldHVybjtkZWZhdWx0OmlmKGphKGUpKXtmb3IoTiBpbiBsKWwuaGFzT3duUHJvcGVydHkoTikmJihhPWxbTl0sYSE9PXZvaWQgMCYmT2ModCxlLE4sYSxsLHZvaWQgMCkpO3JldHVybn19Zm9yKGYgaW4gbClsLmhhc093blByb3BlcnR5KGYpJiYoYT1sW2ZdLGEhPW51bGwmJnp0KHQsZSxmLGEsbCxudWxsKSl9ZnVuY3Rpb24gUDEodCxlLGwsYSl7c3dpdGNoKGUpe2Nhc2UiZGl2IjpjYXNlInNwYW4iOmNhc2Uic3ZnIjpjYXNlInBhdGgiOmNhc2UiYSI6Y2FzZSJnIjpjYXNlInAiOmNhc2UibGkiOmJyZWFrO2Nhc2UiaW5wdXQiOnZhciBuPW51bGwsbz1udWxsLHU9bnVsbCxmPW51bGwsZz1udWxsLFM9bnVsbCxOPW51bGw7Zm9yKFQgaW4gbCl7dmFyIGs9bFtUXTtpZihsLmhhc093blByb3BlcnR5KFQpJiZrIT1udWxsKXN3aXRjaChUKXtjYXNlImNoZWNrZWQiOmJyZWFrO2Nhc2UidmFsdWUiOmJyZWFrO2Nhc2UiZGVmYXVsdFZhbHVlIjpnPWs7ZGVmYXVsdDphLmhhc093blByb3BlcnR5KFQpfHx6dCh0LGUsVCxudWxsLGEsayl9fWZvcih2YXIgRSBpbiBhKXt2YXIgVD1hW0VdO2lmKGs9bFtFXSxhLmhhc093blByb3BlcnR5KEUpJiYoVCE9bnVsbHx8ayE9bnVsbCkpc3dpdGNoKEUpe2Nhc2UidHlwZSI6bz1UO2JyZWFrO2Nhc2UibmFtZSI6bj1UO2JyZWFrO2Nhc2UiY2hlY2tlZCI6Uz1UO2JyZWFrO2Nhc2UiZGVmYXVsdENoZWNrZWQiOk49VDticmVhaztjYXNlInZhbHVlIjp1PVQ7YnJlYWs7Y2FzZSJkZWZhdWx0VmFsdWUiOmY9VDticmVhaztjYXNlImNoaWxkcmVuIjpjYXNlImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIjppZihUIT1udWxsKXRocm93IEVycm9yKHMoMTM3LGUpKTticmVhaztkZWZhdWx0OlQhPT1rJiZ6dCh0LGUsRSxULGEsayl9fUtsKHQsdSxmLGcsUyxOLG8sbik7cmV0dXJuO2Nhc2Uic2VsZWN0IjpUPXU9Zj1FPW51bGw7Zm9yKG8gaW4gbClpZihnPWxbb10sbC5oYXNPd25Qcm9wZXJ0eShvKSYmZyE9bnVsbClzd2l0Y2gobyl7Y2FzZSJ2YWx1ZSI6YnJlYWs7Y2FzZSJtdWx0aXBsZSI6VD1nO2RlZmF1bHQ6YS5oYXNPd25Qcm9wZXJ0eShvKXx8enQodCxlLG8sbnVsbCxhLGcpfWZvcihuIGluIGEpaWYobz1hW25dLGc9bFtuXSxhLmhhc093blByb3BlcnR5KG4pJiYobyE9bnVsbHx8ZyE9bnVsbCkpc3dpdGNoKG4pe2Nhc2UidmFsdWUiOkU9bzticmVhaztjYXNlImRlZmF1bHRWYWx1ZSI6Zj1vO2JyZWFrO2Nhc2UibXVsdGlwbGUiOnU9bztkZWZhdWx0Om8hPT1nJiZ6dCh0LGUsbixvLGEsZyl9ZT1mLGw9dSxhPVQsRSE9bnVsbD8kZSh0LCEhbCxFLCExKTohIWEhPSEhbCYmKGUhPW51bGw/JGUodCwhIWwsZSwhMCk6JGUodCwhIWwsbD9bXToiIiwhMSkpO3JldHVybjtjYXNlInRleHRhcmVhIjpUPUU9bnVsbDtmb3IoZiBpbiBsKWlmKG49bFtmXSxsLmhhc093blByb3BlcnR5KGYpJiZuIT1udWxsJiYhYS5oYXNPd25Qcm9wZXJ0eShmKSlzd2l0Y2goZil7Y2FzZSJ2YWx1ZSI6YnJlYWs7Y2FzZSJjaGlsZHJlbiI6YnJlYWs7ZGVmYXVsdDp6dCh0LGUsZixudWxsLGEsbil9Zm9yKHUgaW4gYSlpZihuPWFbdV0sbz1sW3VdLGEuaGFzT3duUHJvcGVydHkodSkmJihuIT1udWxsfHxvIT1udWxsKSlzd2l0Y2godSl7Y2FzZSJ2YWx1ZSI6RT1uO2JyZWFrO2Nhc2UiZGVmYXVsdFZhbHVlIjpUPW47YnJlYWs7Y2FzZSJjaGlsZHJlbiI6YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6aWYobiE9bnVsbCl0aHJvdyBFcnJvcihzKDkxKSk7YnJlYWs7ZGVmYXVsdDpuIT09byYmenQodCxlLHUsbixhLG8pfXphKHQsRSxUKTtyZXR1cm47Y2FzZSJvcHRpb24iOmZvcih2YXIgbHQgaW4gbClpZihFPWxbbHRdLGwuaGFzT3duUHJvcGVydHkobHQpJiZFIT1udWxsJiYhYS5oYXNPd25Qcm9wZXJ0eShsdCkpc3dpdGNoKGx0KXtjYXNlInNlbGVjdGVkIjp0LnNlbGVjdGVkPSExO2JyZWFrO2RlZmF1bHQ6enQodCxlLGx0LG51bGwsYSxFKX1mb3IoZyBpbiBhKWlmKEU9YVtnXSxUPWxbZ10sYS5oYXNPd25Qcm9wZXJ0eShnKSYmRSE9PVQmJihFIT1udWxsfHxUIT1udWxsKSlzd2l0Y2goZyl7Y2FzZSJzZWxlY3RlZCI6dC5zZWxlY3RlZD1FJiZ0eXBlb2YgRSE9ImZ1bmN0aW9uIiYmdHlwZW9mIEUhPSJzeW1ib2wiO2JyZWFrO2RlZmF1bHQ6enQodCxlLGcsRSxhLFQpfXJldHVybjtjYXNlImltZyI6Y2FzZSJsaW5rIjpjYXNlImFyZWEiOmNhc2UiYmFzZSI6Y2FzZSJiciI6Y2FzZSJjb2wiOmNhc2UiZW1iZWQiOmNhc2UiaHIiOmNhc2Uia2V5Z2VuIjpjYXNlIm1ldGEiOmNhc2UicGFyYW0iOmNhc2Uic291cmNlIjpjYXNlInRyYWNrIjpjYXNlIndiciI6Y2FzZSJtZW51aXRlbSI6Zm9yKHZhciBGIGluIGwpRT1sW0ZdLGwuaGFzT3duUHJvcGVydHkoRikmJkUhPW51bGwmJiFhLmhhc093blByb3BlcnR5KEYpJiZ6dCh0LGUsRixudWxsLGEsRSk7Zm9yKFMgaW4gYSlpZihFPWFbU10sVD1sW1NdLGEuaGFzT3duUHJvcGVydHkoUykmJkUhPT1UJiYoRSE9bnVsbHx8VCE9bnVsbCkpc3dpdGNoKFMpe2Nhc2UiY2hpbGRyZW4iOmNhc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiOmlmKEUhPW51bGwpdGhyb3cgRXJyb3IocygxMzcsZSkpO2JyZWFrO2RlZmF1bHQ6enQodCxlLFMsRSxhLFQpfXJldHVybjtkZWZhdWx0OmlmKGphKGUpKXtmb3IodmFyIF90IGluIGwpRT1sW190XSxsLmhhc093blByb3BlcnR5KF90KSYmRSE9PXZvaWQgMCYmIWEuaGFzT3duUHJvcGVydHkoX3QpJiZPYyh0LGUsX3Qsdm9pZCAwLGEsRSk7Zm9yKE4gaW4gYSlFPWFbTl0sVD1sW05dLCFhLmhhc093blByb3BlcnR5KE4pfHxFPT09VHx8RT09PXZvaWQgMCYmVD09PXZvaWQgMHx8T2ModCxlLE4sRSxhLFQpO3JldHVybn19Zm9yKHZhciBiIGluIGwpRT1sW2JdLGwuaGFzT3duUHJvcGVydHkoYikmJkUhPW51bGwmJiFhLmhhc093blByb3BlcnR5KGIpJiZ6dCh0LGUsYixudWxsLGEsRSk7Zm9yKGsgaW4gYSlFPWFba10sVD1sW2tdLCFhLmhhc093blByb3BlcnR5KGspfHxFPT09VHx8RT09bnVsbCYmVD09bnVsbHx8enQodCxlLGssRSxhLFQpfXZhciBqYz1udWxsLEJjPW51bGw7ZnVuY3Rpb24gbXIodCl7cmV0dXJuIHQubm9kZVR5cGU9PT05P3Q6dC5vd25lckRvY3VtZW50fWZ1bmN0aW9uIEhoKHQpe3N3aXRjaCh0KXtjYXNlImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjpyZXR1cm4gMTtjYXNlImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiOnJldHVybiAyO2RlZmF1bHQ6cmV0dXJuIDB9fWZ1bmN0aW9uIFVoKHQsZSl7aWYodD09PTApc3dpdGNoKGUpe2Nhc2Uic3ZnIjpyZXR1cm4gMTtjYXNlIm1hdGgiOnJldHVybiAyO2RlZmF1bHQ6cmV0dXJuIDB9cmV0dXJuIHQ9PT0xJiZlPT09ImZvcmVpZ25PYmplY3QiPzA6dH1mdW5jdGlvbiBMYyh0LGUpe3JldHVybiB0PT09InRleHRhcmVhInx8dD09PSJub3NjcmlwdCJ8fHR5cGVvZiBlLmNoaWxkcmVuPT0ic3RyaW5nInx8dHlwZW9mIGUuY2hpbGRyZW49PSJudW1iZXIifHx0eXBlb2YgZS5jaGlsZHJlbj09ImJpZ2ludCJ8fHR5cGVvZiBlLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPT0ib2JqZWN0IiYmZS5kYW5nZXJvdXNseVNldElubmVySFRNTCE9PW51bGwmJmUuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sIT1udWxsfXZhciBIYz1udWxsO2Z1bmN0aW9uIEoxKCl7dmFyIHQ9d2luZG93LmV2ZW50O3JldHVybiB0JiZ0LnR5cGU9PT0icG9wc3RhdGUiP3Q9PT1IYz8hMTooSGM9dCwhMCk6KEhjPW51bGwsITEpfXZhciBHaD10eXBlb2Ygc2V0VGltZW91dD09ImZ1bmN0aW9uIj9zZXRUaW1lb3V0OnZvaWQgMCxXMT10eXBlb2YgY2xlYXJUaW1lb3V0PT0iZnVuY3Rpb24iP2NsZWFyVGltZW91dDp2b2lkIDAscWg9dHlwZW9mIFByb21pc2U9PSJmdW5jdGlvbiI/UHJvbWlzZTp2b2lkIDAsJDE9dHlwZW9mIHF1ZXVlTWljcm90YXNrPT0iZnVuY3Rpb24iP3F1ZXVlTWljcm90YXNrOnR5cGVvZiBxaDwidSI/ZnVuY3Rpb24odCl7cmV0dXJuIHFoLnJlc29sdmUobnVsbCkudGhlbih0KS5jYXRjaChGMSl9OkdoO2Z1bmN0aW9uIEYxKHQpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyB0fSl9ZnVuY3Rpb24gaGEodCl7cmV0dXJuIHQ9PT0iaGVhZCJ9ZnVuY3Rpb24gWWgodCxlKXt2YXIgbD1lLGE9MCxuPTA7ZG97dmFyIG89bC5uZXh0U2libGluZztpZih0LnJlbW92ZUNoaWxkKGwpLG8mJm8ubm9kZVR5cGU9PT04KWlmKGw9by5kYXRhLGw9PT0iLyQiKXtpZigwPGEmJjg+YSl7bD1hO3ZhciB1PXQub3duZXJEb2N1bWVudDtpZihsJjEmJlFvKHUuZG9jdW1lbnRFbGVtZW50KSxsJjImJlFvKHUuYm9keSksbCY0KWZvcihsPXUuaGVhZCxRbyhsKSx1PWwuZmlyc3RDaGlsZDt1Oyl7dmFyIGY9dS5uZXh0U2libGluZyxnPXUubm9kZU5hbWU7dVtNYV18fGc9PT0iU0NSSVBUInx8Zz09PSJTVFlMRSJ8fGc9PT0iTElOSyImJnUucmVsLnRvTG93ZXJDYXNlKCk9PT0ic3R5bGVzaGVldCJ8fGwucmVtb3ZlQ2hpbGQodSksdT1mfX1pZihuPT09MCl7dC5yZW1vdmVDaGlsZChvKSx0aShlKTtyZXR1cm59bi0tfWVsc2UgbD09PSIkInx8bD09PSIkPyJ8fGw9PT0iJCEiP24rKzphPWwuY2hhckNvZGVBdCgwKS00ODtlbHNlIGE9MDtsPW99d2hpbGUobCk7dGkoZSl9ZnVuY3Rpb24gVWModCl7dmFyIGU9dC5maXJzdENoaWxkO2ZvcihlJiZlLm5vZGVUeXBlPT09MTAmJihlPWUubmV4dFNpYmxpbmcpO2U7KXt2YXIgbD1lO3N3aXRjaChlPWUubmV4dFNpYmxpbmcsbC5ub2RlTmFtZSl7Y2FzZSJIVE1MIjpjYXNlIkhFQUQiOmNhc2UiQk9EWSI6VWMobCksb28obCk7Y29udGludWU7Y2FzZSJTQ1JJUFQiOmNhc2UiU1RZTEUiOmNvbnRpbnVlO2Nhc2UiTElOSyI6aWYobC5yZWwudG9Mb3dlckNhc2UoKT09PSJzdHlsZXNoZWV0Iiljb250aW51ZX10LnJlbW92ZUNoaWxkKGwpfX1mdW5jdGlvbiBJMSh0LGUsbCxhKXtmb3IoO3Qubm9kZVR5cGU9PT0xOyl7dmFyIG49bDtpZih0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT1lLnRvTG93ZXJDYXNlKCkpe2lmKCFhJiYodC5ub2RlTmFtZSE9PSJJTlBVVCJ8fHQudHlwZSE9PSJoaWRkZW4iKSlicmVha31lbHNlIGlmKGEpe2lmKCF0W01hXSlzd2l0Y2goZSl7Y2FzZSJtZXRhIjppZighdC5oYXNBdHRyaWJ1dGUoIml0ZW1wcm9wIikpYnJlYWs7cmV0dXJuIHQ7Y2FzZSJsaW5rIjppZihvPXQuZ2V0QXR0cmlidXRlKCJyZWwiKSxvPT09InN0eWxlc2hlZXQiJiZ0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1wcmVjZWRlbmNlIikpYnJlYWs7aWYobyE9PW4ucmVsfHx0LmdldEF0dHJpYnV0ZSgiaHJlZiIpIT09KG4uaHJlZj09bnVsbHx8bi5ocmVmPT09IiI/bnVsbDpuLmhyZWYpfHx0LmdldEF0dHJpYnV0ZSgiY3Jvc3NvcmlnaW4iKSE9PShuLmNyb3NzT3JpZ2luPT1udWxsP251bGw6bi5jcm9zc09yaWdpbil8fHQuZ2V0QXR0cmlidXRlKCJ0aXRsZSIpIT09KG4udGl0bGU9PW51bGw/bnVsbDpuLnRpdGxlKSlicmVhaztyZXR1cm4gdDtjYXNlInN0eWxlIjppZih0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1wcmVjZWRlbmNlIikpYnJlYWs7cmV0dXJuIHQ7Y2FzZSJzY3JpcHQiOmlmKG89dC5nZXRBdHRyaWJ1dGUoInNyYyIpLChvIT09KG4uc3JjPT1udWxsP251bGw6bi5zcmMpfHx0LmdldEF0dHJpYnV0ZSgidHlwZSIpIT09KG4udHlwZT09bnVsbD9udWxsOm4udHlwZSl8fHQuZ2V0QXR0cmlidXRlKCJjcm9zc29yaWdpbiIpIT09KG4uY3Jvc3NPcmlnaW49PW51bGw/bnVsbDpuLmNyb3NzT3JpZ2luKSkmJm8mJnQuaGFzQXR0cmlidXRlKCJhc3luYyIpJiYhdC5oYXNBdHRyaWJ1dGUoIml0ZW1wcm9wIikpYnJlYWs7cmV0dXJuIHQ7ZGVmYXVsdDpyZXR1cm4gdH19ZWxzZSBpZihlPT09ImlucHV0IiYmdC50eXBlPT09ImhpZGRlbiIpe3ZhciBvPW4ubmFtZT09bnVsbD9udWxsOiIiK24ubmFtZTtpZihuLnR5cGU9PT0iaGlkZGVuIiYmdC5nZXRBdHRyaWJ1dGUoIm5hbWUiKT09PW8pcmV0dXJuIHR9ZWxzZSByZXR1cm4gdDtpZih0PWxsKHQubmV4dFNpYmxpbmcpLHQ9PT1udWxsKWJyZWFrfXJldHVybiBudWxsfWZ1bmN0aW9uIHRwKHQsZSxsKXtpZihlPT09IiIpcmV0dXJuIG51bGw7Zm9yKDt0Lm5vZGVUeXBlIT09MzspaWYoKHQubm9kZVR5cGUhPT0xfHx0Lm5vZGVOYW1lIT09IklOUFVUInx8dC50eXBlIT09ImhpZGRlbiIpJiYhbHx8KHQ9bGwodC5uZXh0U2libGluZyksdD09PW51bGwpKXJldHVybiBudWxsO3JldHVybiB0fWZ1bmN0aW9uIEdjKHQpe3JldHVybiB0LmRhdGE9PT0iJCEifHx0LmRhdGE9PT0iJD8iJiZ0Lm93bmVyRG9jdW1lbnQucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSJ9ZnVuY3Rpb24gZXAodCxlKXt2YXIgbD10Lm93bmVyRG9jdW1lbnQ7aWYodC5kYXRhIT09IiQ/Inx8bC5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIillKCk7ZWxzZXt2YXIgYT1mdW5jdGlvbigpe2UoKSxsLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGEpfTtsLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGEpLHQuX3JlYWN0UmV0cnk9YX19ZnVuY3Rpb24gbGwodCl7Zm9yKDt0IT1udWxsO3Q9dC5uZXh0U2libGluZyl7dmFyIGU9dC5ub2RlVHlwZTtpZihlPT09MXx8ZT09PTMpYnJlYWs7aWYoZT09PTgpe2lmKGU9dC5kYXRhLGU9PT0iJCJ8fGU9PT0iJCEifHxlPT09IiQ/Inx8ZT09PSJGISJ8fGU9PT0iRiIpYnJlYWs7aWYoZT09PSIvJCIpcmV0dXJuIG51bGx9fXJldHVybiB0fXZhciBxYz1udWxsO2Z1bmN0aW9uIFZoKHQpe3Q9dC5wcmV2aW91c1NpYmxpbmc7Zm9yKHZhciBlPTA7dDspe2lmKHQubm9kZVR5cGU9PT04KXt2YXIgbD10LmRhdGE7aWYobD09PSIkInx8bD09PSIkISJ8fGw9PT0iJD8iKXtpZihlPT09MClyZXR1cm4gdDtlLS19ZWxzZSBsPT09Ii8kIiYmZSsrfXQ9dC5wcmV2aW91c1NpYmxpbmd9cmV0dXJuIG51bGx9ZnVuY3Rpb24gWGgodCxlLGwpe3N3aXRjaChlPW1yKGwpLHQpe2Nhc2UiaHRtbCI6aWYodD1lLmRvY3VtZW50RWxlbWVudCwhdCl0aHJvdyBFcnJvcihzKDQ1MikpO3JldHVybiB0O2Nhc2UiaGVhZCI6aWYodD1lLmhlYWQsIXQpdGhyb3cgRXJyb3Iocyg0NTMpKTtyZXR1cm4gdDtjYXNlImJvZHkiOmlmKHQ9ZS5ib2R5LCF0KXRocm93IEVycm9yKHMoNDU0KSk7cmV0dXJuIHQ7ZGVmYXVsdDp0aHJvdyBFcnJvcihzKDQ1MSkpfX1mdW5jdGlvbiBRbyh0KXtmb3IodmFyIGU9dC5hdHRyaWJ1dGVzO2UubGVuZ3RoOyl0LnJlbW92ZUF0dHJpYnV0ZU5vZGUoZVswXSk7b28odCl9dmFyIFFlPW5ldyBNYXAsWmg9bmV3IFNldDtmdW5jdGlvbiBncih0KXtyZXR1cm4gdHlwZW9mIHQuZ2V0Um9vdE5vZGU9PSJmdW5jdGlvbiI/dC5nZXRSb290Tm9kZSgpOnQubm9kZVR5cGU9PT05P3Q6dC5vd25lckRvY3VtZW50fXZhciBCbD1xLmQ7cS5kPXtmOmxwLHI6YXAsRDpucCxDOm9wLEw6aXAsbTpycCxYOmNwLFM6c3AsTTp1cH07ZnVuY3Rpb24gbHAoKXt2YXIgdD1CbC5mKCksZT1pcigpO3JldHVybiB0fHxlfWZ1bmN0aW9uIGFwKHQpe3ZhciBlPVhsKHQpO2UhPT1udWxsJiZlLnRhZz09PTUmJmUudHlwZT09PSJmb3JtIj9kZihlKTpCbC5yKHQpfXZhciBYbj10eXBlb2YgZG9jdW1lbnQ+InUiP251bGw6ZG9jdW1lbnQ7ZnVuY3Rpb24gUWgodCxlLGwpe3ZhciBhPVhuO2lmKGEmJnR5cGVvZiBlPT0ic3RyaW5nIiYmZSl7dmFyIG49c2UoZSk7bj0nbGlua1tyZWw9IicrdCsnIl1baHJlZj0iJytuKyciXScsdHlwZW9mIGw9PSJzdHJpbmciJiYobis9J1tjcm9zc29yaWdpbj0iJytsKyciXScpLFpoLmhhcyhuKXx8KFpoLmFkZChuKSx0PXtyZWw6dCxjcm9zc09yaWdpbjpsLGhyZWY6ZX0sYS5xdWVyeVNlbGVjdG9yKG4pPT09bnVsbCYmKGU9YS5jcmVhdGVFbGVtZW50KCJsaW5rIiksZmUoZSwibGluayIsdCksVnQoZSksYS5oZWFkLmFwcGVuZENoaWxkKGUpKSl9fWZ1bmN0aW9uIG5wKHQpe0JsLkQodCksUWgoImRucy1wcmVmZXRjaCIsdCxudWxsKX1mdW5jdGlvbiBvcCh0LGUpe0JsLkModCxlKSxRaCgicHJlY29ubmVjdCIsdCxlKX1mdW5jdGlvbiBpcCh0LGUsbCl7QmwuTCh0LGUsbCk7dmFyIGE9WG47aWYoYSYmdCYmZSl7dmFyIG49J2xpbmtbcmVsPSJwcmVsb2FkIl1bYXM9Iicrc2UoZSkrJyJdJztlPT09ImltYWdlIiYmbCYmbC5pbWFnZVNyY1NldD8obis9J1tpbWFnZXNyY3NldD0iJytzZShsLmltYWdlU3JjU2V0KSsnIl0nLHR5cGVvZiBsLmltYWdlU2l6ZXM9PSJzdHJpbmciJiYobis9J1tpbWFnZXNpemVzPSInK3NlKGwuaW1hZ2VTaXplcykrJyJdJykpOm4rPSdbaHJlZj0iJytzZSh0KSsnIl0nO3ZhciBvPW47c3dpdGNoKGUpe2Nhc2Uic3R5bGUiOm89Wm4odCk7YnJlYWs7Y2FzZSJzY3JpcHQiOm89UW4odCl9UWUuaGFzKG8pfHwodD1EKHtyZWw6InByZWxvYWQiLGhyZWY6ZT09PSJpbWFnZSImJmwmJmwuaW1hZ2VTcmNTZXQ/dm9pZCAwOnQsYXM6ZX0sbCksUWUuc2V0KG8sdCksYS5xdWVyeVNlbGVjdG9yKG4pIT09bnVsbHx8ZT09PSJzdHlsZSImJmEucXVlcnlTZWxlY3RvcihLbyhvKSl8fGU9PT0ic2NyaXB0IiYmYS5xdWVyeVNlbGVjdG9yKFBvKG8pKXx8KGU9YS5jcmVhdGVFbGVtZW50KCJsaW5rIiksZmUoZSwibGluayIsdCksVnQoZSksYS5oZWFkLmFwcGVuZENoaWxkKGUpKSl9fWZ1bmN0aW9uIHJwKHQsZSl7QmwubSh0LGUpO3ZhciBsPVhuO2lmKGwmJnQpe3ZhciBhPWUmJnR5cGVvZiBlLmFzPT0ic3RyaW5nIj9lLmFzOiJzY3JpcHQiLG49J2xpbmtbcmVsPSJtb2R1bGVwcmVsb2FkIl1bYXM9Iicrc2UoYSkrJyJdW2hyZWY9Iicrc2UodCkrJyJdJyxvPW47c3dpdGNoKGEpe2Nhc2UiYXVkaW93b3JrbGV0IjpjYXNlInBhaW50d29ya2xldCI6Y2FzZSJzZXJ2aWNld29ya2VyIjpjYXNlInNoYXJlZHdvcmtlciI6Y2FzZSJ3b3JrZXIiOmNhc2Uic2NyaXB0IjpvPVFuKHQpfWlmKCFRZS5oYXMobykmJih0PUQoe3JlbDoibW9kdWxlcHJlbG9hZCIsaHJlZjp0fSxlKSxRZS5zZXQobyx0KSxsLnF1ZXJ5U2VsZWN0b3Iobik9PT1udWxsKSl7c3dpdGNoKGEpe2Nhc2UiYXVkaW93b3JrbGV0IjpjYXNlInBhaW50d29ya2xldCI6Y2FzZSJzZXJ2aWNld29ya2VyIjpjYXNlInNoYXJlZHdvcmtlciI6Y2FzZSJ3b3JrZXIiOmNhc2Uic2NyaXB0IjppZihsLnF1ZXJ5U2VsZWN0b3IoUG8obykpKXJldHVybn1hPWwuY3JlYXRlRWxlbWVudCgibGluayIpLGZlKGEsImxpbmsiLHQpLFZ0KGEpLGwuaGVhZC5hcHBlbmRDaGlsZChhKX19fWZ1bmN0aW9uIHNwKHQsZSxsKXtCbC5TKHQsZSxsKTt2YXIgYT1YbjtpZihhJiZ0KXt2YXIgbj1abChhKS5ob2lzdGFibGVTdHlsZXMsbz1abih0KTtlPWV8fCJkZWZhdWx0Ijt2YXIgdT1uLmdldChvKTtpZighdSl7dmFyIGY9e2xvYWRpbmc6MCxwcmVsb2FkOm51bGx9O2lmKHU9YS5xdWVyeVNlbGVjdG9yKEtvKG8pKSlmLmxvYWRpbmc9NTtlbHNle3Q9RCh7cmVsOiJzdHlsZXNoZWV0IixocmVmOnQsImRhdGEtcHJlY2VkZW5jZSI6ZX0sbCksKGw9UWUuZ2V0KG8pKSYmWWModCxsKTt2YXIgZz11PWEuY3JlYXRlRWxlbWVudCgibGluayIpO1Z0KGcpLGZlKGcsImxpbmsiLHQpLGcuX3A9bmV3IFByb21pc2UoZnVuY3Rpb24oUyxOKXtnLm9ubG9hZD1TLGcub25lcnJvcj1OfSksZy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbigpe2YubG9hZGluZ3w9MX0pLGcuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGZ1bmN0aW9uKCl7Zi5sb2FkaW5nfD0yfSksZi5sb2FkaW5nfD00LHByKHUsZSxhKX11PXt0eXBlOiJzdHlsZXNoZWV0IixpbnN0YW5jZTp1LGNvdW50OjEsc3RhdGU6Zn0sbi5zZXQobyx1KX19fWZ1bmN0aW9uIGNwKHQsZSl7QmwuWCh0LGUpO3ZhciBsPVhuO2lmKGwmJnQpe3ZhciBhPVpsKGwpLmhvaXN0YWJsZVNjcmlwdHMsbj1Rbih0KSxvPWEuZ2V0KG4pO298fChvPWwucXVlcnlTZWxlY3RvcihQbyhuKSksb3x8KHQ9RCh7c3JjOnQsYXN5bmM6ITB9LGUpLChlPVFlLmdldChuKSkmJlZjKHQsZSksbz1sLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLFZ0KG8pLGZlKG8sImxpbmsiLHQpLGwuaGVhZC5hcHBlbmRDaGlsZChvKSksbz17dHlwZToic2NyaXB0IixpbnN0YW5jZTpvLGNvdW50OjEsc3RhdGU6bnVsbH0sYS5zZXQobixvKSl9fWZ1bmN0aW9uIHVwKHQsZSl7QmwuTSh0LGUpO3ZhciBsPVhuO2lmKGwmJnQpe3ZhciBhPVpsKGwpLmhvaXN0YWJsZVNjcmlwdHMsbj1Rbih0KSxvPWEuZ2V0KG4pO298fChvPWwucXVlcnlTZWxlY3RvcihQbyhuKSksb3x8KHQ9RCh7c3JjOnQsYXN5bmM6ITAsdHlwZToibW9kdWxlIn0sZSksKGU9UWUuZ2V0KG4pKSYmVmModCxlKSxvPWwuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksVnQobyksZmUobywibGluayIsdCksbC5oZWFkLmFwcGVuZENoaWxkKG8pKSxvPXt0eXBlOiJzY3JpcHQiLGluc3RhbmNlOm8sY291bnQ6MSxzdGF0ZTpudWxsfSxhLnNldChuLG8pKX19ZnVuY3Rpb24gS2godCxlLGwsYSl7dmFyIG49KG49SS5jdXJyZW50KT9ncihuKTpudWxsO2lmKCFuKXRocm93IEVycm9yKHMoNDQ2KSk7c3dpdGNoKHQpe2Nhc2UibWV0YSI6Y2FzZSJ0aXRsZSI6cmV0dXJuIG51bGw7Y2FzZSJzdHlsZSI6cmV0dXJuIHR5cGVvZiBsLnByZWNlZGVuY2U9PSJzdHJpbmciJiZ0eXBlb2YgbC5ocmVmPT0ic3RyaW5nIj8oZT1abihsLmhyZWYpLGw9WmwobikuaG9pc3RhYmxlU3R5bGVzLGE9bC5nZXQoZSksYXx8KGE9e3R5cGU6InN0eWxlIixpbnN0YW5jZTpudWxsLGNvdW50OjAsc3RhdGU6bnVsbH0sbC5zZXQoZSxhKSksYSk6e3R5cGU6InZvaWQiLGluc3RhbmNlOm51bGwsY291bnQ6MCxzdGF0ZTpudWxsfTtjYXNlImxpbmsiOmlmKGwucmVsPT09InN0eWxlc2hlZXQiJiZ0eXBlb2YgbC5ocmVmPT0ic3RyaW5nIiYmdHlwZW9mIGwucHJlY2VkZW5jZT09InN0cmluZyIpe3Q9Wm4obC5ocmVmKTt2YXIgbz1abChuKS5ob2lzdGFibGVTdHlsZXMsdT1vLmdldCh0KTtpZih1fHwobj1uLm93bmVyRG9jdW1lbnR8fG4sdT17dHlwZToic3R5bGVzaGVldCIsaW5zdGFuY2U6bnVsbCxjb3VudDowLHN0YXRlOntsb2FkaW5nOjAscHJlbG9hZDpudWxsfX0sby5zZXQodCx1KSwobz1uLnF1ZXJ5U2VsZWN0b3IoS28odCkpKSYmIW8uX3AmJih1Lmluc3RhbmNlPW8sdS5zdGF0ZS5sb2FkaW5nPTUpLFFlLmhhcyh0KXx8KGw9e3JlbDoicHJlbG9hZCIsYXM6InN0eWxlIixocmVmOmwuaHJlZixjcm9zc09yaWdpbjpsLmNyb3NzT3JpZ2luLGludGVncml0eTpsLmludGVncml0eSxtZWRpYTpsLm1lZGlhLGhyZWZMYW5nOmwuaHJlZkxhbmcscmVmZXJyZXJQb2xpY3k6bC5yZWZlcnJlclBvbGljeX0sUWUuc2V0KHQsbCksb3x8ZHAobix0LGwsdS5zdGF0ZSkpKSxlJiZhPT09bnVsbCl0aHJvdyBFcnJvcihzKDUyOCwiIikpO3JldHVybiB1fWlmKGUmJmEhPT1udWxsKXRocm93IEVycm9yKHMoNTI5LCIiKSk7cmV0dXJuIG51bGw7Y2FzZSJzY3JpcHQiOnJldHVybiBlPWwuYXN5bmMsbD1sLnNyYyx0eXBlb2YgbD09InN0cmluZyImJmUmJnR5cGVvZiBlIT0iZnVuY3Rpb24iJiZ0eXBlb2YgZSE9InN5bWJvbCI/KGU9UW4obCksbD1abChuKS5ob2lzdGFibGVTY3JpcHRzLGE9bC5nZXQoZSksYXx8KGE9e3R5cGU6InNjcmlwdCIsaW5zdGFuY2U6bnVsbCxjb3VudDowLHN0YXRlOm51bGx9LGwuc2V0KGUsYSkpLGEpOnt0eXBlOiJ2b2lkIixpbnN0YW5jZTpudWxsLGNvdW50OjAsc3RhdGU6bnVsbH07ZGVmYXVsdDp0aHJvdyBFcnJvcihzKDQ0NCx0KSl9fWZ1bmN0aW9uIFpuKHQpe3JldHVybidocmVmPSInK3NlKHQpKyciJ31mdW5jdGlvbiBLbyh0KXtyZXR1cm4nbGlua1tyZWw9InN0eWxlc2hlZXQiXVsnK3QrIl0ifWZ1bmN0aW9uIFBoKHQpe3JldHVybiBEKHt9LHQseyJkYXRhLXByZWNlZGVuY2UiOnQucHJlY2VkZW5jZSxwcmVjZWRlbmNlOm51bGx9KX1mdW5jdGlvbiBkcCh0LGUsbCxhKXt0LnF1ZXJ5U2VsZWN0b3IoJ2xpbmtbcmVsPSJwcmVsb2FkIl1bYXM9InN0eWxlIl1bJytlKyJdIik/YS5sb2FkaW5nPTE6KGU9dC5jcmVhdGVFbGVtZW50KCJsaW5rIiksYS5wcmVsb2FkPWUsZS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbigpe3JldHVybiBhLmxvYWRpbmd8PTF9KSxlLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixmdW5jdGlvbigpe3JldHVybiBhLmxvYWRpbmd8PTJ9KSxmZShlLCJsaW5rIixsKSxWdChlKSx0LmhlYWQuYXBwZW5kQ2hpbGQoZSkpfWZ1bmN0aW9uIFFuKHQpe3JldHVybidbc3JjPSInK3NlKHQpKyciXSd9ZnVuY3Rpb24gUG8odCl7cmV0dXJuInNjcmlwdFthc3luY10iK3R9ZnVuY3Rpb24gSmgodCxlLGwpe2lmKGUuY291bnQrKyxlLmluc3RhbmNlPT09bnVsbClzd2l0Y2goZS50eXBlKXtjYXNlInN0eWxlIjp2YXIgYT10LnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlW2RhdGEtaHJlZn49Iicrc2UobC5ocmVmKSsnIl0nKTtpZihhKXJldHVybiBlLmluc3RhbmNlPWEsVnQoYSksYTt2YXIgbj1EKHt9LGwseyJkYXRhLWhyZWYiOmwuaHJlZiwiZGF0YS1wcmVjZWRlbmNlIjpsLnByZWNlZGVuY2UsaHJlZjpudWxsLHByZWNlZGVuY2U6bnVsbH0pO3JldHVybiBhPSh0Lm93bmVyRG9jdW1lbnR8fHQpLmNyZWF0ZUVsZW1lbnQoInN0eWxlIiksVnQoYSksZmUoYSwic3R5bGUiLG4pLHByKGEsbC5wcmVjZWRlbmNlLHQpLGUuaW5zdGFuY2U9YTtjYXNlInN0eWxlc2hlZXQiOm49Wm4obC5ocmVmKTt2YXIgbz10LnF1ZXJ5U2VsZWN0b3IoS28obikpO2lmKG8pcmV0dXJuIGUuc3RhdGUubG9hZGluZ3w9NCxlLmluc3RhbmNlPW8sVnQobyksbzthPVBoKGwpLChuPVFlLmdldChuKSkmJlljKGEsbiksbz0odC5vd25lckRvY3VtZW50fHx0KS5jcmVhdGVFbGVtZW50KCJsaW5rIiksVnQobyk7dmFyIHU9bztyZXR1cm4gdS5fcD1uZXcgUHJvbWlzZShmdW5jdGlvbihmLGcpe3Uub25sb2FkPWYsdS5vbmVycm9yPWd9KSxmZShvLCJsaW5rIixhKSxlLnN0YXRlLmxvYWRpbmd8PTQscHIobyxsLnByZWNlZGVuY2UsdCksZS5pbnN0YW5jZT1vO2Nhc2Uic2NyaXB0IjpyZXR1cm4gbz1RbihsLnNyYyksKG49dC5xdWVyeVNlbGVjdG9yKFBvKG8pKSk/KGUuaW5zdGFuY2U9bixWdChuKSxuKTooYT1sLChuPVFlLmdldChvKSkmJihhPUQoe30sbCksVmMoYSxuKSksdD10Lm93bmVyRG9jdW1lbnR8fHQsbj10LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLFZ0KG4pLGZlKG4sImxpbmsiLGEpLHQuaGVhZC5hcHBlbmRDaGlsZChuKSxlLmluc3RhbmNlPW4pO2Nhc2Uidm9pZCI6cmV0dXJuIG51bGw7ZGVmYXVsdDp0aHJvdyBFcnJvcihzKDQ0MyxlLnR5cGUpKX1lbHNlIGUudHlwZT09PSJzdHlsZXNoZWV0IiYmKGUuc3RhdGUubG9hZGluZyY0KT09PTAmJihhPWUuaW5zdGFuY2UsZS5zdGF0ZS5sb2FkaW5nfD00LHByKGEsbC5wcmVjZWRlbmNlLHQpKTtyZXR1cm4gZS5pbnN0YW5jZX1mdW5jdGlvbiBwcih0LGUsbCl7Zm9yKHZhciBhPWwucXVlcnlTZWxlY3RvckFsbCgnbGlua1tyZWw9InN0eWxlc2hlZXQiXVtkYXRhLXByZWNlZGVuY2VdLHN0eWxlW2RhdGEtcHJlY2VkZW5jZV0nKSxuPWEubGVuZ3RoP2FbYS5sZW5ndGgtMV06bnVsbCxvPW4sdT0wO3U8YS5sZW5ndGg7dSsrKXt2YXIgZj1hW3VdO2lmKGYuZGF0YXNldC5wcmVjZWRlbmNlPT09ZSlvPWY7ZWxzZSBpZihvIT09bilicmVha31vP28ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodCxvLm5leHRTaWJsaW5nKTooZT1sLm5vZGVUeXBlPT09OT9sLmhlYWQ6bCxlLmluc2VydEJlZm9yZSh0LGUuZmlyc3RDaGlsZCkpfWZ1bmN0aW9uIFljKHQsZSl7dC5jcm9zc09yaWdpbj09bnVsbCYmKHQuY3Jvc3NPcmlnaW49ZS5jcm9zc09yaWdpbiksdC5yZWZlcnJlclBvbGljeT09bnVsbCYmKHQucmVmZXJyZXJQb2xpY3k9ZS5yZWZlcnJlclBvbGljeSksdC50aXRsZT09bnVsbCYmKHQudGl0bGU9ZS50aXRsZSl9ZnVuY3Rpb24gVmModCxlKXt0LmNyb3NzT3JpZ2luPT1udWxsJiYodC5jcm9zc09yaWdpbj1lLmNyb3NzT3JpZ2luKSx0LnJlZmVycmVyUG9saWN5PT1udWxsJiYodC5yZWZlcnJlclBvbGljeT1lLnJlZmVycmVyUG9saWN5KSx0LmludGVncml0eT09bnVsbCYmKHQuaW50ZWdyaXR5PWUuaW50ZWdyaXR5KX12YXIgeXI9bnVsbDtmdW5jdGlvbiBXaCh0LGUsbCl7aWYoeXI9PT1udWxsKXt2YXIgYT1uZXcgTWFwLG49eXI9bmV3IE1hcDtuLnNldChsLGEpfWVsc2Ugbj15cixhPW4uZ2V0KGwpLGF8fChhPW5ldyBNYXAsbi5zZXQobCxhKSk7aWYoYS5oYXModCkpcmV0dXJuIGE7Zm9yKGEuc2V0KHQsbnVsbCksbD1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQpLG49MDtuPGwubGVuZ3RoO24rKyl7dmFyIG89bFtuXTtpZighKG9bTWFdfHxvW2VlXXx8dD09PSJsaW5rIiYmby5nZXRBdHRyaWJ1dGUoInJlbCIpPT09InN0eWxlc2hlZXQiKSYmby5uYW1lc3BhY2VVUkkhPT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKXt2YXIgdT1vLmdldEF0dHJpYnV0ZShlKXx8IiI7dT10K3U7dmFyIGY9YS5nZXQodSk7Zj9mLnB1c2gobyk6YS5zZXQodSxbb10pfX1yZXR1cm4gYX1mdW5jdGlvbiAkaCh0LGUsbCl7dD10Lm93bmVyRG9jdW1lbnR8fHQsdC5oZWFkLmluc2VydEJlZm9yZShsLGU9PT0idGl0bGUiP3QucXVlcnlTZWxlY3RvcigiaGVhZCA+IHRpdGxlIik6bnVsbCl9ZnVuY3Rpb24gZnAodCxlLGwpe2lmKGw9PT0xfHxlLml0ZW1Qcm9wIT1udWxsKXJldHVybiExO3N3aXRjaCh0KXtjYXNlIm1ldGEiOmNhc2UidGl0bGUiOnJldHVybiEwO2Nhc2Uic3R5bGUiOmlmKHR5cGVvZiBlLnByZWNlZGVuY2UhPSJzdHJpbmcifHx0eXBlb2YgZS5ocmVmIT0ic3RyaW5nInx8ZS5ocmVmPT09IiIpYnJlYWs7cmV0dXJuITA7Y2FzZSJsaW5rIjppZih0eXBlb2YgZS5yZWwhPSJzdHJpbmcifHx0eXBlb2YgZS5ocmVmIT0ic3RyaW5nInx8ZS5ocmVmPT09IiJ8fGUub25Mb2FkfHxlLm9uRXJyb3IpYnJlYWs7c3dpdGNoKGUucmVsKXtjYXNlInN0eWxlc2hlZXQiOnJldHVybiB0PWUuZGlzYWJsZWQsdHlwZW9mIGUucHJlY2VkZW5jZT09InN0cmluZyImJnQ9PW51bGw7ZGVmYXVsdDpyZXR1cm4hMH1jYXNlInNjcmlwdCI6aWYoZS5hc3luYyYmdHlwZW9mIGUuYXN5bmMhPSJmdW5jdGlvbiImJnR5cGVvZiBlLmFzeW5jIT0ic3ltYm9sIiYmIWUub25Mb2FkJiYhZS5vbkVycm9yJiZlLnNyYyYmdHlwZW9mIGUuc3JjPT0ic3RyaW5nIilyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBGaCh0KXtyZXR1cm4hKHQudHlwZT09PSJzdHlsZXNoZWV0IiYmKHQuc3RhdGUubG9hZGluZyYzKT09PTApfXZhciBKbz1udWxsO2Z1bmN0aW9uIGhwKCl7fWZ1bmN0aW9uIG1wKHQsZSxsKXtpZihKbz09PW51bGwpdGhyb3cgRXJyb3Iocyg0NzUpKTt2YXIgYT1KbztpZihlLnR5cGU9PT0ic3R5bGVzaGVldCImJih0eXBlb2YgbC5tZWRpYSE9InN0cmluZyJ8fG1hdGNoTWVkaWEobC5tZWRpYSkubWF0Y2hlcyE9PSExKSYmKGUuc3RhdGUubG9hZGluZyY0KT09PTApe2lmKGUuaW5zdGFuY2U9PT1udWxsKXt2YXIgbj1abihsLmhyZWYpLG89dC5xdWVyeVNlbGVjdG9yKEtvKG4pKTtpZihvKXt0PW8uX3AsdCE9PW51bGwmJnR5cGVvZiB0PT0ib2JqZWN0IiYmdHlwZW9mIHQudGhlbj09ImZ1bmN0aW9uIiYmKGEuY291bnQrKyxhPXZyLmJpbmQoYSksdC50aGVuKGEsYSkpLGUuc3RhdGUubG9hZGluZ3w9NCxlLmluc3RhbmNlPW8sVnQobyk7cmV0dXJufW89dC5vd25lckRvY3VtZW50fHx0LGw9UGgobCksKG49UWUuZ2V0KG4pKSYmWWMobCxuKSxvPW8uY3JlYXRlRWxlbWVudCgibGluayIpLFZ0KG8pO3ZhciB1PW87dS5fcD1uZXcgUHJvbWlzZShmdW5jdGlvbihmLGcpe3Uub25sb2FkPWYsdS5vbmVycm9yPWd9KSxmZShvLCJsaW5rIixsKSxlLmluc3RhbmNlPW99YS5zdHlsZXNoZWV0cz09PW51bGwmJihhLnN0eWxlc2hlZXRzPW5ldyBNYXApLGEuc3R5bGVzaGVldHMuc2V0KGUsdCksKHQ9ZS5zdGF0ZS5wcmVsb2FkKSYmKGUuc3RhdGUubG9hZGluZyYzKT09PTAmJihhLmNvdW50KyssZT12ci5iaW5kKGEpLHQuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZSksdC5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsZSkpfX1mdW5jdGlvbiBncCgpe2lmKEpvPT09bnVsbCl0aHJvdyBFcnJvcihzKDQ3NSkpO3ZhciB0PUpvO3JldHVybiB0LnN0eWxlc2hlZXRzJiZ0LmNvdW50PT09MCYmWGModCx0LnN0eWxlc2hlZXRzKSwwPHQuY291bnQ/ZnVuY3Rpb24oZSl7dmFyIGw9c2V0VGltZW91dChmdW5jdGlvbigpe2lmKHQuc3R5bGVzaGVldHMmJlhjKHQsdC5zdHlsZXNoZWV0cyksdC51bnN1c3BlbmQpe3ZhciBhPXQudW5zdXNwZW5kO3QudW5zdXNwZW5kPW51bGwsYSgpfX0sNmU0KTtyZXR1cm4gdC51bnN1c3BlbmQ9ZSxmdW5jdGlvbigpe3QudW5zdXNwZW5kPW51bGwsY2xlYXJUaW1lb3V0KGwpfX06bnVsbH1mdW5jdGlvbiB2cigpe2lmKHRoaXMuY291bnQtLSx0aGlzLmNvdW50PT09MCl7aWYodGhpcy5zdHlsZXNoZWV0cylYYyh0aGlzLHRoaXMuc3R5bGVzaGVldHMpO2Vsc2UgaWYodGhpcy51bnN1c3BlbmQpe3ZhciB0PXRoaXMudW5zdXNwZW5kO3RoaXMudW5zdXNwZW5kPW51bGwsdCgpfX19dmFyIGJyPW51bGw7ZnVuY3Rpb24gWGModCxlKXt0LnN0eWxlc2hlZXRzPW51bGwsdC51bnN1c3BlbmQhPT1udWxsJiYodC5jb3VudCsrLGJyPW5ldyBNYXAsZS5mb3JFYWNoKHBwLHQpLGJyPW51bGwsdnIuY2FsbCh0KSl9ZnVuY3Rpb24gcHAodCxlKXtpZighKGUuc3RhdGUubG9hZGluZyY0KSl7dmFyIGw9YnIuZ2V0KHQpO2lmKGwpdmFyIGE9bC5nZXQobnVsbCk7ZWxzZXtsPW5ldyBNYXAsYnIuc2V0KHQsbCk7Zm9yKHZhciBuPXQucXVlcnlTZWxlY3RvckFsbCgibGlua1tkYXRhLXByZWNlZGVuY2VdLHN0eWxlW2RhdGEtcHJlY2VkZW5jZV0iKSxvPTA7bzxuLmxlbmd0aDtvKyspe3ZhciB1PW5bb107KHUubm9kZU5hbWU9PT0iTElOSyJ8fHUuZ2V0QXR0cmlidXRlKCJtZWRpYSIpIT09Im5vdCBhbGwiKSYmKGwuc2V0KHUuZGF0YXNldC5wcmVjZWRlbmNlLHUpLGE9dSl9YSYmbC5zZXQobnVsbCxhKX1uPWUuaW5zdGFuY2UsdT1uLmdldEF0dHJpYnV0ZSgiZGF0YS1wcmVjZWRlbmNlIiksbz1sLmdldCh1KXx8YSxvPT09YSYmbC5zZXQobnVsbCxuKSxsLnNldCh1LG4pLHRoaXMuY291bnQrKyxhPXZyLmJpbmQodGhpcyksbi5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixhKSxuLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixhKSxvP28ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobixvLm5leHRTaWJsaW5nKToodD10Lm5vZGVUeXBlPT09OT90LmhlYWQ6dCx0Lmluc2VydEJlZm9yZShuLHQuZmlyc3RDaGlsZCkpLGUuc3RhdGUubG9hZGluZ3w9NH19dmFyIFdvPXskJHR5cGVvZjpfLFByb3ZpZGVyOm51bGwsQ29uc3VtZXI6bnVsbCxfY3VycmVudFZhbHVlOkIsX2N1cnJlbnRWYWx1ZTI6QixfdGhyZWFkQ291bnQ6MH07ZnVuY3Rpb24geXAodCxlLGwsYSxuLG8sdSxmKXt0aGlzLnRhZz0xLHRoaXMuY29udGFpbmVySW5mbz10LHRoaXMucGluZ0NhY2hlPXRoaXMuY3VycmVudD10aGlzLnBlbmRpbmdDaGlsZHJlbj1udWxsLHRoaXMudGltZW91dEhhbmRsZT0tMSx0aGlzLmNhbGxiYWNrTm9kZT10aGlzLm5leHQ9dGhpcy5wZW5kaW5nQ29udGV4dD10aGlzLmNvbnRleHQ9dGhpcy5jYW5jZWxQZW5kaW5nQ29tbWl0PW51bGwsdGhpcy5jYWxsYmFja1ByaW9yaXR5PTAsdGhpcy5leHBpcmF0aW9uVGltZXM9ZW8oLTEpLHRoaXMuZW50YW5nbGVkTGFuZXM9dGhpcy5zaGVsbFN1c3BlbmRDb3VudGVyPXRoaXMuZXJyb3JSZWNvdmVyeURpc2FibGVkTGFuZXM9dGhpcy5leHBpcmVkTGFuZXM9dGhpcy53YXJtTGFuZXM9dGhpcy5waW5nZWRMYW5lcz10aGlzLnN1c3BlbmRlZExhbmVzPXRoaXMucGVuZGluZ0xhbmVzPTAsdGhpcy5lbnRhbmdsZW1lbnRzPWVvKDApLHRoaXMuaGlkZGVuVXBkYXRlcz1lbyhudWxsKSx0aGlzLmlkZW50aWZpZXJQcmVmaXg9YSx0aGlzLm9uVW5jYXVnaHRFcnJvcj1uLHRoaXMub25DYXVnaHRFcnJvcj1vLHRoaXMub25SZWNvdmVyYWJsZUVycm9yPXUsdGhpcy5wb29sZWRDYWNoZT1udWxsLHRoaXMucG9vbGVkQ2FjaGVMYW5lcz0wLHRoaXMuZm9ybVN0YXRlPWYsdGhpcy5pbmNvbXBsZXRlVHJhbnNpdGlvbnM9bmV3IE1hcH1mdW5jdGlvbiBJaCh0LGUsbCxhLG4sbyx1LGYsZyxTLE4sayl7cmV0dXJuIHQ9bmV3IHlwKHQsZSxsLHUsZixnLFMsayksZT0xLG89PT0hMCYmKGV8PTI0KSxvPU5lKDMsbnVsbCxudWxsLGUpLHQuY3VycmVudD1vLG8uc3RhdGVOb2RlPXQsZT1UcygpLGUucmVmQ291bnQrKyx0LnBvb2xlZENhY2hlPWUsZS5yZWZDb3VudCsrLG8ubWVtb2l6ZWRTdGF0ZT17ZWxlbWVudDphLGlzRGVoeWRyYXRlZDpsLGNhY2hlOmV9LFJzKG8pLHR9ZnVuY3Rpb24gdG0odCl7cmV0dXJuIHQ/KHQ9Q24sdCk6Q259ZnVuY3Rpb24gZW0odCxlLGwsYSxuLG8pe249dG0obiksYS5jb250ZXh0PT09bnVsbD9hLmNvbnRleHQ9bjphLnBlbmRpbmdDb250ZXh0PW4sYT10YShlKSxhLnBheWxvYWQ9e2VsZW1lbnQ6bH0sbz1vPT09dm9pZCAwP251bGw6byxvIT09bnVsbCYmKGEuY2FsbGJhY2s9byksbD1lYSh0LGEsZSksbCE9PW51bGwmJihqZShsLHQsZSksRG8obCx0LGUpKX1mdW5jdGlvbiBsbSh0LGUpe2lmKHQ9dC5tZW1vaXplZFN0YXRlLHQhPT1udWxsJiZ0LmRlaHlkcmF0ZWQhPT1udWxsKXt2YXIgbD10LnJldHJ5TGFuZTt0LnJldHJ5TGFuZT1sIT09MCYmbDxlP2w6ZX19ZnVuY3Rpb24gWmModCxlKXtsbSh0LGUpLCh0PXQuYWx0ZXJuYXRlKSYmbG0odCxlKX1mdW5jdGlvbiBhbSh0KXtpZih0LnRhZz09PTEzKXt2YXIgZT1Tbih0LDY3MTA4ODY0KTtlIT09bnVsbCYmamUoZSx0LDY3MTA4ODY0KSxaYyh0LDY3MTA4ODY0KX19dmFyIHhyPSEwO2Z1bmN0aW9uIHZwKHQsZSxsLGEpe3ZhciBuPUEuVDtBLlQ9bnVsbDt2YXIgbz1xLnA7dHJ5e3EucD0yLFFjKHQsZSxsLGEpfWZpbmFsbHl7cS5wPW8sQS5UPW59fWZ1bmN0aW9uIGJwKHQsZSxsLGEpe3ZhciBuPUEuVDtBLlQ9bnVsbDt2YXIgbz1xLnA7dHJ5e3EucD04LFFjKHQsZSxsLGEpfWZpbmFsbHl7cS5wPW8sQS5UPW59fWZ1bmN0aW9uIFFjKHQsZSxsLGEpe2lmKHhyKXt2YXIgbj1LYyhhKTtpZihuPT09bnVsbClrYyh0LGUsYSx3cixsKSxvbSh0LGEpO2Vsc2UgaWYod3Aobix0LGUsbCxhKSlhLnN0b3BQcm9wYWdhdGlvbigpO2Vsc2UgaWYob20odCxhKSxlJjQmJi0xPHhwLmluZGV4T2YodCkpe2Zvcig7biE9PW51bGw7KXt2YXIgbz1YbChuKTtpZihvIT09bnVsbClzd2l0Y2goby50YWcpe2Nhc2UgMzppZihvPW8uc3RhdGVOb2RlLG8uY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl7dmFyIHU9dmwoby5wZW5kaW5nTGFuZXMpO2lmKHUhPT0wKXt2YXIgZj1vO2ZvcihmLnBlbmRpbmdMYW5lc3w9MixmLmVudGFuZ2xlZExhbmVzfD0yO3U7KXt2YXIgZz0xPDwzMS0kdCh1KTtmLmVudGFuZ2xlbWVudHNbMV18PWcsdSY9fmd9aGwobyksKEF0JjYpPT09MCYmKG5yPWdlKCkrNTAwLFZvKDApKX19YnJlYWs7Y2FzZSAxMzpmPVNuKG8sMiksZiE9PW51bGwmJmplKGYsbywyKSxpcigpLFpjKG8sMil9aWYobz1LYyhhKSxvPT09bnVsbCYma2ModCxlLGEsd3IsbCksbz09PW4pYnJlYWs7bj1vfW4hPT1udWxsJiZhLnN0b3BQcm9wYWdhdGlvbigpfWVsc2Uga2ModCxlLGEsbnVsbCxsKX19ZnVuY3Rpb24gS2ModCl7cmV0dXJuIHQ9bW4odCksUGModCl9dmFyIHdyPW51bGw7ZnVuY3Rpb24gUGModCl7aWYod3I9bnVsbCx0PVZsKHQpLHQhPT1udWxsKXt2YXIgZT1tKHQpO2lmKGU9PT1udWxsKXQ9bnVsbDtlbHNle3ZhciBsPWUudGFnO2lmKGw9PT0xMyl7aWYodD14KGUpLHQhPT1udWxsKXJldHVybiB0O3Q9bnVsbH1lbHNlIGlmKGw9PT0zKXtpZihlLnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXJldHVybiBlLnRhZz09PTM/ZS5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzpudWxsO3Q9bnVsbH1lbHNlIGUhPT10JiYodD1udWxsKX19cmV0dXJuIHdyPXQsbnVsbH1mdW5jdGlvbiBubSh0KXtzd2l0Y2godCl7Y2FzZSJiZWZvcmV0b2dnbGUiOmNhc2UiY2FuY2VsIjpjYXNlImNsaWNrIjpjYXNlImNsb3NlIjpjYXNlImNvbnRleHRtZW51IjpjYXNlImNvcHkiOmNhc2UiY3V0IjpjYXNlImF1eGNsaWNrIjpjYXNlImRibGNsaWNrIjpjYXNlImRyYWdlbmQiOmNhc2UiZHJhZ3N0YXJ0IjpjYXNlImRyb3AiOmNhc2UiZm9jdXNpbiI6Y2FzZSJmb2N1c291dCI6Y2FzZSJpbnB1dCI6Y2FzZSJpbnZhbGlkIjpjYXNlImtleWRvd24iOmNhc2Uia2V5cHJlc3MiOmNhc2Uia2V5dXAiOmNhc2UibW91c2Vkb3duIjpjYXNlIm1vdXNldXAiOmNhc2UicGFzdGUiOmNhc2UicGF1c2UiOmNhc2UicGxheSI6Y2FzZSJwb2ludGVyY2FuY2VsIjpjYXNlInBvaW50ZXJkb3duIjpjYXNlInBvaW50ZXJ1cCI6Y2FzZSJyYXRlY2hhbmdlIjpjYXNlInJlc2V0IjpjYXNlInJlc2l6ZSI6Y2FzZSJzZWVrZWQiOmNhc2Uic3VibWl0IjpjYXNlInRvZ2dsZSI6Y2FzZSJ0b3VjaGNhbmNlbCI6Y2FzZSJ0b3VjaGVuZCI6Y2FzZSJ0b3VjaHN0YXJ0IjpjYXNlInZvbHVtZWNoYW5nZSI6Y2FzZSJjaGFuZ2UiOmNhc2Uic2VsZWN0aW9uY2hhbmdlIjpjYXNlInRleHRJbnB1dCI6Y2FzZSJjb21wb3NpdGlvbnN0YXJ0IjpjYXNlImNvbXBvc2l0aW9uZW5kIjpjYXNlImNvbXBvc2l0aW9udXBkYXRlIjpjYXNlImJlZm9yZWJsdXIiOmNhc2UiYWZ0ZXJibHVyIjpjYXNlImJlZm9yZWlucHV0IjpjYXNlImJsdXIiOmNhc2UiZnVsbHNjcmVlbmNoYW5nZSI6Y2FzZSJmb2N1cyI6Y2FzZSJoYXNoY2hhbmdlIjpjYXNlInBvcHN0YXRlIjpjYXNlInNlbGVjdCI6Y2FzZSJzZWxlY3RzdGFydCI6cmV0dXJuIDI7Y2FzZSJkcmFnIjpjYXNlImRyYWdlbnRlciI6Y2FzZSJkcmFnZXhpdCI6Y2FzZSJkcmFnbGVhdmUiOmNhc2UiZHJhZ292ZXIiOmNhc2UibW91c2Vtb3ZlIjpjYXNlIm1vdXNlb3V0IjpjYXNlIm1vdXNlb3ZlciI6Y2FzZSJwb2ludGVybW92ZSI6Y2FzZSJwb2ludGVyb3V0IjpjYXNlInBvaW50ZXJvdmVyIjpjYXNlInNjcm9sbCI6Y2FzZSJ0b3VjaG1vdmUiOmNhc2Uid2hlZWwiOmNhc2UibW91c2VlbnRlciI6Y2FzZSJtb3VzZWxlYXZlIjpjYXNlInBvaW50ZXJlbnRlciI6Y2FzZSJwb2ludGVybGVhdmUiOnJldHVybiA4O2Nhc2UibWVzc2FnZSI6c3dpdGNoKHNpKCkpe2Nhc2UgVWw6cmV0dXJuIDI7Y2FzZSBGbjpyZXR1cm4gODtjYXNlIG5sOmNhc2UgY2k6cmV0dXJuIDMyO2Nhc2UgR2w6cmV0dXJuIDI2ODQzNTQ1NjtkZWZhdWx0OnJldHVybiAzMn1kZWZhdWx0OnJldHVybiAzMn19dmFyIEpjPSExLG1hPW51bGwsZ2E9bnVsbCxwYT1udWxsLCRvPW5ldyBNYXAsRm89bmV3IE1hcCx5YT1bXSx4cD0ibW91c2Vkb3duIG1vdXNldXAgdG91Y2hjYW5jZWwgdG91Y2hlbmQgdG91Y2hzdGFydCBhdXhjbGljayBkYmxjbGljayBwb2ludGVyY2FuY2VsIHBvaW50ZXJkb3duIHBvaW50ZXJ1cCBkcmFnZW5kIGRyYWdzdGFydCBkcm9wIGNvbXBvc2l0aW9uZW5kIGNvbXBvc2l0aW9uc3RhcnQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBpbnB1dCB0ZXh0SW5wdXQgY29weSBjdXQgcGFzdGUgY2xpY2sgY2hhbmdlIGNvbnRleHRtZW51IHJlc2V0Ii5zcGxpdCgiICIpO2Z1bmN0aW9uIG9tKHQsZSl7c3dpdGNoKHQpe2Nhc2UiZm9jdXNpbiI6Y2FzZSJmb2N1c291dCI6bWE9bnVsbDticmVhaztjYXNlImRyYWdlbnRlciI6Y2FzZSJkcmFnbGVhdmUiOmdhPW51bGw7YnJlYWs7Y2FzZSJtb3VzZW92ZXIiOmNhc2UibW91c2VvdXQiOnBhPW51bGw7YnJlYWs7Y2FzZSJwb2ludGVyb3ZlciI6Y2FzZSJwb2ludGVyb3V0Ijokby5kZWxldGUoZS5wb2ludGVySWQpO2JyZWFrO2Nhc2UiZ290cG9pbnRlcmNhcHR1cmUiOmNhc2UibG9zdHBvaW50ZXJjYXB0dXJlIjpGby5kZWxldGUoZS5wb2ludGVySWQpfX1mdW5jdGlvbiBJbyh0LGUsbCxhLG4sbyl7cmV0dXJuIHQ9PT1udWxsfHx0Lm5hdGl2ZUV2ZW50IT09bz8odD17YmxvY2tlZE9uOmUsZG9tRXZlbnROYW1lOmwsZXZlbnRTeXN0ZW1GbGFnczphLG5hdGl2ZUV2ZW50Om8sdGFyZ2V0Q29udGFpbmVyczpbbl19LGUhPT1udWxsJiYoZT1YbChlKSxlIT09bnVsbCYmYW0oZSkpLHQpOih0LmV2ZW50U3lzdGVtRmxhZ3N8PWEsZT10LnRhcmdldENvbnRhaW5lcnMsbiE9PW51bGwmJmUuaW5kZXhPZihuKT09PS0xJiZlLnB1c2gobiksdCl9ZnVuY3Rpb24gd3AodCxlLGwsYSxuKXtzd2l0Y2goZSl7Y2FzZSJmb2N1c2luIjpyZXR1cm4gbWE9SW8obWEsdCxlLGwsYSxuKSwhMDtjYXNlImRyYWdlbnRlciI6cmV0dXJuIGdhPUlvKGdhLHQsZSxsLGEsbiksITA7Y2FzZSJtb3VzZW92ZXIiOnJldHVybiBwYT1JbyhwYSx0LGUsbCxhLG4pLCEwO2Nhc2UicG9pbnRlcm92ZXIiOnZhciBvPW4ucG9pbnRlcklkO3JldHVybiAkby5zZXQobyxJbygkby5nZXQobyl8fG51bGwsdCxlLGwsYSxuKSksITA7Y2FzZSJnb3Rwb2ludGVyY2FwdHVyZSI6cmV0dXJuIG89bi5wb2ludGVySWQsRm8uc2V0KG8sSW8oRm8uZ2V0KG8pfHxudWxsLHQsZSxsLGEsbikpLCEwfXJldHVybiExfWZ1bmN0aW9uIGltKHQpe3ZhciBlPVZsKHQudGFyZ2V0KTtpZihlIT09bnVsbCl7dmFyIGw9bShlKTtpZihsIT09bnVsbCl7aWYoZT1sLnRhZyxlPT09MTMpe2lmKGU9eChsKSxlIT09bnVsbCl7dC5ibG9ja2VkT249ZSx0cyh0LnByaW9yaXR5LGZ1bmN0aW9uKCl7aWYobC50YWc9PT0xMyl7dmFyIGE9T2UoKTthPWxvKGEpO3ZhciBuPVNuKGwsYSk7biE9PW51bGwmJmplKG4sbCxhKSxaYyhsLGEpfX0pO3JldHVybn19ZWxzZSBpZihlPT09MyYmbC5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl7dC5ibG9ja2VkT249bC50YWc9PT0zP2wuc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDtyZXR1cm59fX10LmJsb2NrZWRPbj1udWxsfWZ1bmN0aW9uIFNyKHQpe2lmKHQuYmxvY2tlZE9uIT09bnVsbClyZXR1cm4hMTtmb3IodmFyIGU9dC50YXJnZXRDb250YWluZXJzOzA8ZS5sZW5ndGg7KXt2YXIgbD1LYyh0Lm5hdGl2ZUV2ZW50KTtpZihsPT09bnVsbCl7bD10Lm5hdGl2ZUV2ZW50O3ZhciBhPW5ldyBsLmNvbnN0cnVjdG9yKGwudHlwZSxsKTtobj1hLGwudGFyZ2V0LmRpc3BhdGNoRXZlbnQoYSksaG49bnVsbH1lbHNlIHJldHVybiBlPVhsKGwpLGUhPT1udWxsJiZhbShlKSx0LmJsb2NrZWRPbj1sLCExO2Uuc2hpZnQoKX1yZXR1cm4hMH1mdW5jdGlvbiBybSh0LGUsbCl7U3IodCkmJmwuZGVsZXRlKGUpfWZ1bmN0aW9uIFNwKCl7SmM9ITEsbWEhPT1udWxsJiZTcihtYSkmJihtYT1udWxsKSxnYSE9PW51bGwmJlNyKGdhKSYmKGdhPW51bGwpLHBhIT09bnVsbCYmU3IocGEpJiYocGE9bnVsbCksJG8uZm9yRWFjaChybSksRm8uZm9yRWFjaChybSl9ZnVuY3Rpb24gQ3IodCxlKXt0LmJsb2NrZWRPbj09PWUmJih0LmJsb2NrZWRPbj1udWxsLEpjfHwoSmM9ITAsci51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrKHIudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksU3ApKSl9dmFyIEVyPW51bGw7ZnVuY3Rpb24gc20odCl7RXIhPT10JiYoRXI9dCxyLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2soci51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxmdW5jdGlvbigpe0VyPT09dCYmKEVyPW51bGwpO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSs9Myl7dmFyIGw9dFtlXSxhPXRbZSsxXSxuPXRbZSsyXTtpZih0eXBlb2YgYSE9ImZ1bmN0aW9uIil7aWYoUGMoYXx8bCk9PT1udWxsKWNvbnRpbnVlO2JyZWFrfXZhciBvPVhsKGwpO28hPT1udWxsJiYodC5zcGxpY2UoZSwzKSxlLT0zLFBzKG8se3BlbmRpbmc6ITAsZGF0YTpuLG1ldGhvZDpsLm1ldGhvZCxhY3Rpb246YX0sYSxuKSl9fSkpfWZ1bmN0aW9uIHRpKHQpe2Z1bmN0aW9uIGUoZyl7cmV0dXJuIENyKGcsdCl9bWEhPT1udWxsJiZDcihtYSx0KSxnYSE9PW51bGwmJkNyKGdhLHQpLHBhIT09bnVsbCYmQ3IocGEsdCksJG8uZm9yRWFjaChlKSxGby5mb3JFYWNoKGUpO2Zvcih2YXIgbD0wO2w8eWEubGVuZ3RoO2wrKyl7dmFyIGE9eWFbbF07YS5ibG9ja2VkT249PT10JiYoYS5ibG9ja2VkT249bnVsbCl9Zm9yKDswPHlhLmxlbmd0aCYmKGw9eWFbMF0sbC5ibG9ja2VkT249PT1udWxsKTspaW0obCksbC5ibG9ja2VkT249PT1udWxsJiZ5YS5zaGlmdCgpO2lmKGw9KHQub3duZXJEb2N1bWVudHx8dCkuJCRyZWFjdEZvcm1SZXBsYXksbCE9bnVsbClmb3IoYT0wO2E8bC5sZW5ndGg7YSs9Myl7dmFyIG49bFthXSxvPWxbYSsxXSx1PW5bcGVdfHxudWxsO2lmKHR5cGVvZiBvPT0iZnVuY3Rpb24iKXV8fHNtKGwpO2Vsc2UgaWYodSl7dmFyIGY9bnVsbDtpZihvJiZvLmhhc0F0dHJpYnV0ZSgiZm9ybUFjdGlvbiIpKXtpZihuPW8sdT1vW3BlXXx8bnVsbClmPXUuZm9ybUFjdGlvbjtlbHNlIGlmKFBjKG4pIT09bnVsbCljb250aW51ZX1lbHNlIGY9dS5hY3Rpb247dHlwZW9mIGY9PSJmdW5jdGlvbiI/bFthKzFdPWY6KGwuc3BsaWNlKGEsMyksYS09Myksc20obCl9fX1mdW5jdGlvbiBXYyh0KXt0aGlzLl9pbnRlcm5hbFJvb3Q9dH1Uci5wcm90b3R5cGUucmVuZGVyPVdjLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faW50ZXJuYWxSb290O2lmKGU9PT1udWxsKXRocm93IEVycm9yKHMoNDA5KSk7dmFyIGw9ZS5jdXJyZW50LGE9T2UoKTtlbShsLGEsdCxlLG51bGwsbnVsbCl9LFRyLnByb3RvdHlwZS51bm1vdW50PVdjLnByb3RvdHlwZS51bm1vdW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5faW50ZXJuYWxSb290O2lmKHQhPT1udWxsKXt0aGlzLl9pbnRlcm5hbFJvb3Q9bnVsbDt2YXIgZT10LmNvbnRhaW5lckluZm87ZW0odC5jdXJyZW50LDIsbnVsbCx0LG51bGwsbnVsbCksaXIoKSxlW1lsXT1udWxsfX07ZnVuY3Rpb24gVHIodCl7dGhpcy5faW50ZXJuYWxSb290PXR9VHIucHJvdG90eXBlLnVuc3RhYmxlX3NjaGVkdWxlSHlkcmF0aW9uPWZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBlPXBpKCk7dD17YmxvY2tlZE9uOm51bGwsdGFyZ2V0OnQscHJpb3JpdHk6ZX07Zm9yKHZhciBsPTA7bDx5YS5sZW5ndGgmJmUhPT0wJiZlPHlhW2xdLnByaW9yaXR5O2wrKyk7eWEuc3BsaWNlKGwsMCx0KSxsPT09MCYmaW0odCl9fTt2YXIgY209aS52ZXJzaW9uO2lmKGNtIT09IjE5LjEuMSIpdGhyb3cgRXJyb3Iocyg1MjcsY20sIjE5LjEuMSIpKTtxLmZpbmRET01Ob2RlPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX3JlYWN0SW50ZXJuYWxzO2lmKGU9PT12b2lkIDApdGhyb3cgdHlwZW9mIHQucmVuZGVyPT0iZnVuY3Rpb24iP0Vycm9yKHMoMTg4KSk6KHQ9T2JqZWN0LmtleXModCkuam9pbigiLCIpLEVycm9yKHMoMjY4LHQpKSk7cmV0dXJuIHQ9QyhlKSx0PXQhPT1udWxsP3YodCk6bnVsbCx0PXQ9PT1udWxsP251bGw6dC5zdGF0ZU5vZGUsdH07dmFyIENwPXtidW5kbGVUeXBlOjAsdmVyc2lvbjoiMTkuMS4xIixyZW5kZXJlclBhY2thZ2VOYW1lOiJyZWFjdC1kb20iLGN1cnJlbnREaXNwYXRjaGVyUmVmOkEscmVjb25jaWxlclZlcnNpb246IjE5LjEuMSJ9O2lmKHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX188InUiKXt2YXIgRHI9X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fO2lmKCFEci5pc0Rpc2FibGVkJiZEci5zdXBwb3J0c0ZpYmVyKXRyeXtxbD1Eci5pbmplY3QoQ3ApLFd0PURyfWNhdGNoe319cmV0dXJuIFBuLmNyZWF0ZVJvb3Q9ZnVuY3Rpb24odCxlKXtpZighZCh0KSl0aHJvdyBFcnJvcihzKDI5OSkpO3ZhciBsPSExLGE9IiIsbj1UZixvPURmLHU9TWYsZj1udWxsO3JldHVybiBlIT1udWxsJiYoZS51bnN0YWJsZV9zdHJpY3RNb2RlPT09ITAmJihsPSEwKSxlLmlkZW50aWZpZXJQcmVmaXghPT12b2lkIDAmJihhPWUuaWRlbnRpZmllclByZWZpeCksZS5vblVuY2F1Z2h0RXJyb3IhPT12b2lkIDAmJihuPWUub25VbmNhdWdodEVycm9yKSxlLm9uQ2F1Z2h0RXJyb3IhPT12b2lkIDAmJihvPWUub25DYXVnaHRFcnJvciksZS5vblJlY292ZXJhYmxlRXJyb3IhPT12b2lkIDAmJih1PWUub25SZWNvdmVyYWJsZUVycm9yKSxlLnVuc3RhYmxlX3RyYW5zaXRpb25DYWxsYmFja3MhPT12b2lkIDAmJihmPWUudW5zdGFibGVfdHJhbnNpdGlvbkNhbGxiYWNrcykpLGU9SWgodCwxLCExLG51bGwsbnVsbCxsLGEsbixvLHUsZixudWxsKSx0W1lsXT1lLmN1cnJlbnQsX2ModCksbmV3IFdjKGUpfSxQbi5oeWRyYXRlUm9vdD1mdW5jdGlvbih0LGUsbCl7aWYoIWQodCkpdGhyb3cgRXJyb3IocygyOTkpKTt2YXIgYT0hMSxuPSIiLG89VGYsdT1EZixmPU1mLGc9bnVsbCxTPW51bGw7cmV0dXJuIGwhPW51bGwmJihsLnVuc3RhYmxlX3N0cmljdE1vZGU9PT0hMCYmKGE9ITApLGwuaWRlbnRpZmllclByZWZpeCE9PXZvaWQgMCYmKG49bC5pZGVudGlmaWVyUHJlZml4KSxsLm9uVW5jYXVnaHRFcnJvciE9PXZvaWQgMCYmKG89bC5vblVuY2F1Z2h0RXJyb3IpLGwub25DYXVnaHRFcnJvciE9PXZvaWQgMCYmKHU9bC5vbkNhdWdodEVycm9yKSxsLm9uUmVjb3ZlcmFibGVFcnJvciE9PXZvaWQgMCYmKGY9bC5vblJlY292ZXJhYmxlRXJyb3IpLGwudW5zdGFibGVfdHJhbnNpdGlvbkNhbGxiYWNrcyE9PXZvaWQgMCYmKGc9bC51bnN0YWJsZV90cmFuc2l0aW9uQ2FsbGJhY2tzKSxsLmZvcm1TdGF0ZSE9PXZvaWQgMCYmKFM9bC5mb3JtU3RhdGUpKSxlPUloKHQsMSwhMCxlLGw/P251bGwsYSxuLG8sdSxmLGcsUyksZS5jb250ZXh0PXRtKG51bGwpLGw9ZS5jdXJyZW50LGE9T2UoKSxhPWxvKGEpLG49dGEoYSksbi5jYWxsYmFjaz1udWxsLGVhKGwsbixhKSxsPWEsZS5jdXJyZW50LmxhbmVzPWwsRGEoZSxsKSxobChlKSx0W1lsXT1lLmN1cnJlbnQsX2ModCksbmV3IFRyKGUpfSxQbi52ZXJzaW9uPSIxOS4xLjEiLFBufXZhciBpdTtmdW5jdGlvbiB2bSgpe2lmKGl1KXJldHVybiBBci5leHBvcnRzO2l1PTE7ZnVuY3Rpb24gcigpe2lmKCEodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXz4idSJ8fHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UhPSJmdW5jdGlvbiIpKXRyeXtfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0Uocil9Y2F0Y2goaSl7Y29uc29sZS5lcnJvcihpKX19cmV0dXJuIHIoKSxBci5leHBvcnRzPXltKCksQXIuZXhwb3J0c312YXIgT3I9dm0oKTtjb25zdCBqcj17cm9vdDoibWFudXMtcHJldmlld2VyLXJvb3QiLGNvbnRlbnRSb290OiJtYW51cy1wcmV2aWV3ZXItY29udGVudC1yb290In07Y2xhc3MgYm17ZGlhbG9nUm9vdD1udWxsO3NldERpYWxvZ1Jvb3QoaSl7dGhpcy5kaWFsb2dSb290PWl9Y3JlYXRlT3BlbmVyPShpLGMpPT57Y29uc3R7c2luZ2xldG9uOnMsY2xvc2VXaGVuTmV4dFRyaWdnZXI6ZCxjbG9zZUJlZm9yZURpYWxvZzptfT1jfHx7fTtsZXQgeD1bXTtjb25zdCBSPXY9Pntjb25zdCBEPSJzaW5nbGUiO2lmKHMpe2NvbnN0ICQ9eC5maW5kKG50PT5udC5pZD09PUQpO2lmKCQpaWYobSkkLm9uRGlzcG9zZWQoKTtlbHNlIHJldHVybiBkJiYkLm9uRGlzcG9zZWQoKSxudWxsfWNvbnN0IGo9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksSj1Pci5jcmVhdGVSb290KGopO3RoaXMuZGlhbG9nUm9vdCYmdGhpcy5kaWFsb2dSb290LmFwcGVuZChqKTtjb25zdCBhdD0oKT0+e0oudW5tb3VudCgpLGoucmVtb3ZlKCkseD14LmZpbHRlcigkPT4kLmlkIT09RCksdi5vbkRpc3Bvc2VkPy4oKX07cmV0dXJuIHgucHVzaCh7aWQ6RCxvbkRpc3Bvc2VkOmF0fSksSi5yZW5kZXIoaC5qc3goaSx7ImRhdGEtbG9jIjoic3JjL2hlbHBlcnMvZGlhbG9nQ29udHJvbGxlci50c3g6NjkiLC4uLnYsb25EaXNwb3NlZDphdH0pKSx7ZGlzcG9zZTphdH19O3JldHVybiB2PT5SKHsuLi52fSl9fWNvbnN0IGVpPW5ldyBibTt2YXIgVT1fcigpO2Z1bmN0aW9uIHhtKHtzaXplOnI9MTh9KXtyZXR1cm4gaC5qc3goInN2ZyIseyJkYXRhLWxvYyI6InNyYy9pY29ucy9QcmV2aWV3SWNvbi50c3g6MyIsd2lkdGg6cixoZWlnaHQ6cix2aWV3Qm94OiIwIDAgMTggMTYiLGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46aC5qc3goInBhdGgiLHsiZGF0YS1sb2MiOiJzcmMvaWNvbnMvUHJldmlld0ljb24udHN4OjEwIixkOiJNMTUuNzUgMi43NUMxNS43NSAyLjMzNTc5IDE1LjQxNDIgMiAxNSAySDNDMi41ODU3OSAyIDIuMjUgMi4zMzU3OSAyLjI1IDIuNzVWMTAuMjVDMi4yNSAxMC42NjQyIDIuNTg1NzkgMTEgMyAxMUgxNUMxNS40MTQyIDExIDE1Ljc1IDEwLjY2NDIgMTUuNzUgMTAuMjVWMi43NVpNOC4yNSA3Ljg1MjA1TDEwLjQ1MTcgNi40OTkyN0w4LjI1IDUuMTQ3OTVWNy44NTIwNVpNMTIuMTIyMyA2LjVDMTIuMTIyMyA2LjcyNDMgMTIuMDY0OCA2Ljk0NTEgMTEuOTU1MyA3LjE0MDg3QzExLjg0NTkgNy4zMzY1MSAxMS42ODc4IDcuNTAxMDQgMTEuNDk2OCA3LjYxODQxTDguNzQ4NzggOS4zMDU5MUM4LjU0OTc4IDkuNDI3OTEgOC4zMjE1MSA5LjQ5NDcgOC4wODgxMyA5LjQ5OTI3QzcuODU0ODIgOS41MDM4MyA3LjYyNDQ4IDkuNDQ2MzQgNy40MjA5IDkuMzMyMjhDNy4yMTcyOCA5LjIxODE2IDcuMDQ3MzYgOS4wNTE3OCA2LjkyOTQ0IDguODUwMzRDNi44MTE1NiA4LjY0ODkyIDYuNzQ5ODEgOC40MTk0MiA2Ljc1IDguMTg2MDRWNC44MTEwNEM2Ljc1MDQ1IDQuNTc3OTYgNi44MTI3NyA0LjM0OTExIDYuOTMwOTEgNC4xNDgxOUM3LjA0OTA4IDMuOTQ3MjQgNy4yMTg4NSAzLjc4MTQyIDcuNDIyMzYgMy42Njc3MkM3LjYyNTgyIDMuNTU0MDYgNy44NTU4NyAzLjQ5Njc4IDguMDg4ODcgMy41MDE0Nkw4LjE3NjAzIDMuNTA1ODZDOC4zNDk1OSAzLjUyMDkzIDguNTE4MzYgMy41NzA2MiA4LjY3MjYxIDMuNjUxNjFMOC43NDg3OCAzLjY5NDgyTDExLjQ5NjggNS4zODE1OUMxMS42ODc4IDUuNDk4OTYgMTEuODQ1OSA1LjY2MzUgMTEuOTU1MyA1Ljg1OTEzQzEyLjA2NDggNi4wNTQ5IDEyLjEyMjMgNi4yNzU3IDEyLjEyMjMgNi41Wk0xNy4yNSAxMC4yNUMxNy4yNSAxMS40OTI2IDE2LjI0MjYgMTIuNSAxNSAxMi41SDkuNzVWMTRIMTJDMTIuNDE0MiAxNCAxMi43NSAxNC4zMzU4IDEyLjc1IDE0Ljc1QzEyLjc1IDE1LjE2NDIgMTIuNDE0MiAxNS41IDEyIDE1LjVINkM1LjU4NTc5IDE1LjUgNS4yNSAxNS4xNjQyIDUuMjUgMTQuNzVDNS4yNSAxNC4zMzU4IDUuNTg1NzkgMTQgNiAxNEg4LjI1VjEyLjVIM0MxLjc1NzM2IDEyLjUgMC43NSAxMS40OTI2IDAuNzUgMTAuMjVWMi43NUMwLjc1IDEuNTA3MzYgMS43NTczNiAwLjUgMyAwLjVIMTVDMTYuMjQyNiAwLjUgMTcuMjUgMS41MDczNiAxNy4yNSAyLjc1VjEwLjI1WiIsZmlsbDoiIzM0MzIyRCJ9KX0pfWZ1bmN0aW9uIHJ1KHIpe3ZhciBpLGMscz0iIjtpZih0eXBlb2Ygcj09InN0cmluZyJ8fHR5cGVvZiByPT0ibnVtYmVyIilzKz1yO2Vsc2UgaWYodHlwZW9mIHI9PSJvYmplY3QiKWlmKEFycmF5LmlzQXJyYXkocikpe3ZhciBkPXIubGVuZ3RoO2ZvcihpPTA7aTxkO2krKylyW2ldJiYoYz1ydShyW2ldKSkmJihzJiYocys9IiAiKSxzKz1jKX1lbHNlIGZvcihjIGluIHIpcltjXSYmKHMmJihzKz0iICIpLHMrPWMpO3JldHVybiBzfWZ1bmN0aW9uIHdtKCl7Zm9yKHZhciByLGksYz0wLHM9IiIsZD1hcmd1bWVudHMubGVuZ3RoO2M8ZDtjKyspKHI9YXJndW1lbnRzW2NdKSYmKGk9cnUocikpJiYocyYmKHMrPSIgIikscys9aSk7cmV0dXJuIHN9Y29uc3QgQnI9Ii0iLFNtPXI9Pntjb25zdCBpPUVtKHIpLHtjb25mbGljdGluZ0NsYXNzR3JvdXBzOmMsY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzOnN9PXI7cmV0dXJue2dldENsYXNzR3JvdXBJZDp4PT57Y29uc3QgUj14LnNwbGl0KEJyKTtyZXR1cm4gUlswXT09PSIiJiZSLmxlbmd0aCE9PTEmJlIuc2hpZnQoKSxzdShSLGkpfHxDbSh4KX0sZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzOih4LFIpPT57Y29uc3QgQz1jW3hdfHxbXTtyZXR1cm4gUiYmc1t4XT9bLi4uQywuLi5zW3hdXTpDfX19LHN1PShyLGkpPT57aWYoci5sZW5ndGg9PT0wKXJldHVybiBpLmNsYXNzR3JvdXBJZDtjb25zdCBjPXJbMF0scz1pLm5leHRQYXJ0LmdldChjKSxkPXM/c3Uoci5zbGljZSgxKSxzKTp2b2lkIDA7aWYoZClyZXR1cm4gZDtpZihpLnZhbGlkYXRvcnMubGVuZ3RoPT09MClyZXR1cm47Y29uc3QgbT1yLmpvaW4oQnIpO3JldHVybiBpLnZhbGlkYXRvcnMuZmluZCgoe3ZhbGlkYXRvcjp4fSk9PngobSkpPy5jbGFzc0dyb3VwSWR9LGN1PS9eXFsoLispXF0kLyxDbT1yPT57aWYoY3UudGVzdChyKSl7Y29uc3QgaT1jdS5leGVjKHIpWzFdLGM9aT8uc3Vic3RyaW5nKDAsaS5pbmRleE9mKCI6IikpO2lmKGMpcmV0dXJuImFyYml0cmFyeS4uIitjfX0sRW09cj0+e2NvbnN0e3RoZW1lOmksY2xhc3NHcm91cHM6Y309cixzPXtuZXh0UGFydDpuZXcgTWFwLHZhbGlkYXRvcnM6W119O2Zvcihjb25zdCBkIGluIGMpTHIoY1tkXSxzLGQsaSk7cmV0dXJuIHN9LExyPShyLGksYyxzKT0+e3IuZm9yRWFjaChkPT57aWYodHlwZW9mIGQ9PSJzdHJpbmciKXtjb25zdCBtPWQ9PT0iIj9pOnV1KGksZCk7bS5jbGFzc0dyb3VwSWQ9YztyZXR1cm59aWYodHlwZW9mIGQ9PSJmdW5jdGlvbiIpe2lmKFRtKGQpKXtMcihkKHMpLGksYyxzKTtyZXR1cm59aS52YWxpZGF0b3JzLnB1c2goe3ZhbGlkYXRvcjpkLGNsYXNzR3JvdXBJZDpjfSk7cmV0dXJufU9iamVjdC5lbnRyaWVzKGQpLmZvckVhY2goKFttLHhdKT0+e0xyKHgsdXUoaSxtKSxjLHMpfSl9KX0sdXU9KHIsaSk9PntsZXQgYz1yO3JldHVybiBpLnNwbGl0KEJyKS5mb3JFYWNoKHM9PntjLm5leHRQYXJ0LmhhcyhzKXx8Yy5uZXh0UGFydC5zZXQocyx7bmV4dFBhcnQ6bmV3IE1hcCx2YWxpZGF0b3JzOltdfSksYz1jLm5leHRQYXJ0LmdldChzKX0pLGN9LFRtPXI9PnIuaXNUaGVtZUdldHRlcixEbT1yPT57aWYocjwxKXJldHVybntnZXQ6KCk9Pnt9LHNldDooKT0+e319O2xldCBpPTAsYz1uZXcgTWFwLHM9bmV3IE1hcDtjb25zdCBkPShtLHgpPT57Yy5zZXQobSx4KSxpKyssaT5yJiYoaT0wLHM9YyxjPW5ldyBNYXApfTtyZXR1cm57Z2V0KG0pe2xldCB4PWMuZ2V0KG0pO2lmKHghPT12b2lkIDApcmV0dXJuIHg7aWYoKHg9cy5nZXQobSkpIT09dm9pZCAwKXJldHVybiBkKG0seCkseH0sc2V0KG0seCl7Yy5oYXMobSk/Yy5zZXQobSx4KTpkKG0seCl9fX0sSHI9IiEiLFVyPSI6IixNbT1Vci5sZW5ndGgsQW09cj0+e2NvbnN0e3ByZWZpeDppLGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lOmN9PXI7bGV0IHM9ZD0+e2NvbnN0IG09W107bGV0IHg9MCxSPTAsQz0wLHY7Zm9yKGxldCAkPTA7JDxkLmxlbmd0aDskKyspe2xldCBudD1kWyRdO2lmKHg9PT0wJiZSPT09MCl7aWYobnQ9PT1Vcil7bS5wdXNoKGQuc2xpY2UoQywkKSksQz0kK01tO2NvbnRpbnVlfWlmKG50PT09Ii8iKXt2PSQ7Y29udGludWV9fW50PT09IlsiP3grKzpudD09PSJdIj94LS06bnQ9PT0iKCI/UisrOm50PT09IikiJiZSLS19Y29uc3QgRD1tLmxlbmd0aD09PTA/ZDpkLnN1YnN0cmluZyhDKSxqPVJtKEQpLEo9aiE9PUQsYXQ9diYmdj5DP3YtQzp2b2lkIDA7cmV0dXJue21vZGlmaWVyczptLGhhc0ltcG9ydGFudE1vZGlmaWVyOkosYmFzZUNsYXNzTmFtZTpqLG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb246YXR9fTtpZihpKXtjb25zdCBkPWkrVXIsbT1zO3M9eD0+eC5zdGFydHNXaXRoKGQpP20oeC5zdWJzdHJpbmcoZC5sZW5ndGgpKTp7aXNFeHRlcm5hbDohMCxtb2RpZmllcnM6W10saGFzSW1wb3J0YW50TW9kaWZpZXI6ITEsYmFzZUNsYXNzTmFtZTp4LG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb246dm9pZCAwfX1pZihjKXtjb25zdCBkPXM7cz1tPT5jKHtjbGFzc05hbWU6bSxwYXJzZUNsYXNzTmFtZTpkfSl9cmV0dXJuIHN9LFJtPXI9PnIuZW5kc1dpdGgoSHIpP3Iuc3Vic3RyaW5nKDAsci5sZW5ndGgtMSk6ci5zdGFydHNXaXRoKEhyKT9yLnN1YnN0cmluZygxKTpyLE5tPXI9Pntjb25zdCBpPU9iamVjdC5mcm9tRW50cmllcyhyLm9yZGVyU2Vuc2l0aXZlTW9kaWZpZXJzLm1hcChzPT5bcywhMF0pKTtyZXR1cm4gcz0+e2lmKHMubGVuZ3RoPD0xKXJldHVybiBzO2NvbnN0IGQ9W107bGV0IG09W107cmV0dXJuIHMuZm9yRWFjaCh4PT57eFswXT09PSJbInx8aVt4XT8oZC5wdXNoKC4uLm0uc29ydCgpLHgpLG09W10pOm0ucHVzaCh4KX0pLGQucHVzaCguLi5tLnNvcnQoKSksZH19LHptPXI9Pih7Y2FjaGU6RG0oci5jYWNoZVNpemUpLHBhcnNlQ2xhc3NOYW1lOkFtKHIpLHNvcnRNb2RpZmllcnM6Tm0ociksLi4uU20ocil9KSxfbT0vXHMrLyxrbT0ocixpKT0+e2NvbnN0e3BhcnNlQ2xhc3NOYW1lOmMsZ2V0Q2xhc3NHcm91cElkOnMsZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzOmQsc29ydE1vZGlmaWVyczptfT1pLHg9W10sUj1yLnRyaW0oKS5zcGxpdChfbSk7bGV0IEM9IiI7Zm9yKGxldCB2PVIubGVuZ3RoLTE7dj49MDt2LT0xKXtjb25zdCBEPVJbdl0se2lzRXh0ZXJuYWw6aixtb2RpZmllcnM6SixoYXNJbXBvcnRhbnRNb2RpZmllcjphdCxiYXNlQ2xhc3NOYW1lOiQsbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbjpudH09YyhEKTtpZihqKXtDPUQrKEMubGVuZ3RoPjA/IiAiK0M6Qyk7Y29udGludWV9bGV0IGN0PSEhbnQsaHQ9cyhjdD8kLnN1YnN0cmluZygwLG50KTokKTtpZighaHQpe2lmKCFjdCl7Qz1EKyhDLmxlbmd0aD4wPyIgIitDOkMpO2NvbnRpbnVlfWlmKGh0PXMoJCksIWh0KXtDPUQrKEMubGVuZ3RoPjA/IiAiK0M6Qyk7Y29udGludWV9Y3Q9ITF9Y29uc3QgU3Q9bShKKS5qb2luKCI6IiksXz1hdD9TdCtIcjpTdCxZPV8raHQ7aWYoeC5pbmNsdWRlcyhZKSljb250aW51ZTt4LnB1c2goWSk7Y29uc3QgSD1kKGh0LGN0KTtmb3IobGV0IGl0PTA7aXQ8SC5sZW5ndGg7KytpdCl7Y29uc3QgcnQ9SFtpdF07eC5wdXNoKF8rcnQpfUM9RCsoQy5sZW5ndGg+MD8iICIrQzpDKX1yZXR1cm4gQ307ZnVuY3Rpb24gT20oKXtsZXQgcj0wLGksYyxzPSIiO2Zvcig7cjxhcmd1bWVudHMubGVuZ3RoOykoaT1hcmd1bWVudHNbcisrXSkmJihjPWR1KGkpKSYmKHMmJihzKz0iICIpLHMrPWMpO3JldHVybiBzfWNvbnN0IGR1PXI9PntpZih0eXBlb2Ygcj09InN0cmluZyIpcmV0dXJuIHI7bGV0IGksYz0iIjtmb3IobGV0IHM9MDtzPHIubGVuZ3RoO3MrKylyW3NdJiYoaT1kdShyW3NdKSkmJihjJiYoYys9IiAiKSxjKz1pKTtyZXR1cm4gY307ZnVuY3Rpb24gam0ociwuLi5pKXtsZXQgYyxzLGQsbT14O2Z1bmN0aW9uIHgoQyl7Y29uc3Qgdj1pLnJlZHVjZSgoRCxqKT0+aihEKSxyKCkpO3JldHVybiBjPXptKHYpLHM9Yy5jYWNoZS5nZXQsZD1jLmNhY2hlLnNldCxtPVIsUihDKX1mdW5jdGlvbiBSKEMpe2NvbnN0IHY9cyhDKTtpZih2KXJldHVybiB2O2NvbnN0IEQ9a20oQyxjKTtyZXR1cm4gZChDLEQpLER9cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG0oT20uYXBwbHkobnVsbCxhcmd1bWVudHMpKX19Y29uc3QgS3Q9cj0+e2NvbnN0IGk9Yz0+Y1tyXXx8W107cmV0dXJuIGkuaXNUaGVtZUdldHRlcj0hMCxpfSxmdT0vXlxbKD86KFx3W1x3LV0qKTopPyguKylcXSQvaSxodT0vXlwoKD86KFx3W1x3LV0qKTopPyguKylcKSQvaSxCbT0vXlxkK1wvXGQrJC8sTG09L14oXGQrKFwuXGQrKT8pPyh4c3xzbXxtZHxsZ3x4bCkkLyxIbT0vXGQrKCV8cHh8cj9lbXxbc2RsXT92KFtod2liXXxtaW58bWF4KXxwdHxwY3xpbnxjbXxtbXxjYXB8Y2h8ZXh8cj9saHxjcSh3fGh8aXxifG1pbnxtYXgpKXxcYihjYWxjfG1pbnxtYXh8Y2xhbXApXCguK1wpfF4wJC8sVW09L14ocmdiYT98aHNsYT98aHdifChvayk/KGxhYnxsY2gpfGNvbG9yLW1peClcKC4rXCkkLyxHbT0vXihpbnNldF8pPy0/KChcZCspP1wuPyhcZCspW2Etel0rfDApXy0/KChcZCspP1wuPyhcZCspW2Etel0rfDApLyxxbT0vXih1cmx8aW1hZ2V8aW1hZ2Utc2V0fGNyb3NzLWZhZGV8ZWxlbWVudHwocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWx8Y29uaWMpLWdyYWRpZW50KVwoLitcKSQvLGxuPXI9PkJtLnRlc3QociksZHQ9cj0+ISFyJiYhTnVtYmVyLmlzTmFOKE51bWJlcihyKSksTGw9cj0+ISFyJiZOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcihyKSksR3I9cj0+ci5lbmRzV2l0aCgiJSIpJiZkdChyLnNsaWNlKDAsLTEpKSxtbD1yPT5MbS50ZXN0KHIpLFltPSgpPT4hMCxWbT1yPT5IbS50ZXN0KHIpJiYhVW0udGVzdChyKSxtdT0oKT0+ITEsWG09cj0+R20udGVzdChyKSxabT1yPT5xbS50ZXN0KHIpLFFtPXI9PiFRKHIpJiYhSyhyKSxLbT1yPT5hbihyLGJ1LG11KSxRPXI9PmZ1LnRlc3QociksYmE9cj0+YW4ocix4dSxWbSkscXI9cj0+YW4ocixGbSxkdCksZ3U9cj0+YW4ocix5dSxtdSksUG09cj0+YW4ocix2dSxabSksbGk9cj0+YW4ocix3dSxYbSksSz1yPT5odS50ZXN0KHIpLEpuPXI9Pm5uKHIseHUpLEptPXI9Pm5uKHIsSW0pLHB1PXI9Pm5uKHIseXUpLFdtPXI9Pm5uKHIsYnUpLCRtPXI9Pm5uKHIsdnUpLGFpPXI9Pm5uKHIsd3UsITApLGFuPShyLGksYyk9Pntjb25zdCBzPWZ1LmV4ZWMocik7cmV0dXJuIHM/c1sxXT9pKHNbMV0pOmMoc1syXSk6ITF9LG5uPShyLGksYz0hMSk9Pntjb25zdCBzPWh1LmV4ZWMocik7cmV0dXJuIHM/c1sxXT9pKHNbMV0pOmM6ITF9LHl1PXI9PnI9PT0icG9zaXRpb24ifHxyPT09InBlcmNlbnRhZ2UiLHZ1PXI9PnI9PT0iaW1hZ2UifHxyPT09InVybCIsYnU9cj0+cj09PSJsZW5ndGgifHxyPT09InNpemUifHxyPT09ImJnLXNpemUiLHh1PXI9PnI9PT0ibGVuZ3RoIixGbT1yPT5yPT09Im51bWJlciIsSW09cj0+cj09PSJmYW1pbHktbmFtZSIsd3U9cj0+cj09PSJzaGFkb3ciLHRnPWptKCgpPT57Y29uc3Qgcj1LdCgiY29sb3IiKSxpPUt0KCJmb250IiksYz1LdCgidGV4dCIpLHM9S3QoImZvbnQtd2VpZ2h0IiksZD1LdCgidHJhY2tpbmciKSxtPUt0KCJsZWFkaW5nIikseD1LdCgiYnJlYWtwb2ludCIpLFI9S3QoImNvbnRhaW5lciIpLEM9S3QoInNwYWNpbmciKSx2PUt0KCJyYWRpdXMiKSxEPUt0KCJzaGFkb3ciKSxqPUt0KCJpbnNldC1zaGFkb3ciKSxKPUt0KCJ0ZXh0LXNoYWRvdyIpLGF0PUt0KCJkcm9wLXNoYWRvdyIpLCQ9S3QoImJsdXIiKSxudD1LdCgicGVyc3BlY3RpdmUiKSxjdD1LdCgiYXNwZWN0IiksaHQ9S3QoImVhc2UiKSxTdD1LdCgiYW5pbWF0ZSIpLF89KCk9PlsiYXV0byIsImF2b2lkIiwiYWxsIiwiYXZvaWQtcGFnZSIsInBhZ2UiLCJsZWZ0IiwicmlnaHQiLCJjb2x1bW4iXSxZPSgpPT5bImNlbnRlciIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsInRvcC1sZWZ0IiwibGVmdC10b3AiLCJ0b3AtcmlnaHQiLCJyaWdodC10b3AiLCJib3R0b20tcmlnaHQiLCJyaWdodC1ib3R0b20iLCJib3R0b20tbGVmdCIsImxlZnQtYm90dG9tIl0sSD0oKT0+Wy4uLlkoKSxLLFFdLGl0PSgpPT5bImF1dG8iLCJoaWRkZW4iLCJjbGlwIiwidmlzaWJsZSIsInNjcm9sbCJdLHJ0PSgpPT5bImF1dG8iLCJjb250YWluIiwibm9uZSJdLFY9KCk9PltLLFEsQ10seHQ9KCk9PltsbiwiZnVsbCIsImF1dG8iLC4uLlYoKV0sQmU9KCk9PltMbCwibm9uZSIsInN1YmdyaWQiLEssUV0sdGU9KCk9PlsiYXV0byIse3NwYW46WyJmdWxsIixMbCxLLFFdfSxMbCxLLFFdLEJ0PSgpPT5bTGwsImF1dG8iLEssUV0sbWU9KCk9PlsiYXV0byIsIm1pbiIsIm1heCIsImZyIixLLFFdLFNlPSgpPT5bInN0YXJ0IiwiZW5kIiwiY2VudGVyIiwiYmV0d2VlbiIsImFyb3VuZCIsImV2ZW5seSIsInN0cmV0Y2giLCJiYXNlbGluZSIsImNlbnRlci1zYWZlIiwiZW5kLXNhZmUiXSxNdD0oKT0+WyJzdGFydCIsImVuZCIsImNlbnRlciIsInN0cmV0Y2giLCJjZW50ZXItc2FmZSIsImVuZC1zYWZlIl0sQT0oKT0+WyJhdXRvIiwuLi5WKCldLHE9KCk9PltsbiwiYXV0byIsImZ1bGwiLCJkdnciLCJkdmgiLCJsdnciLCJsdmgiLCJzdnciLCJzdmgiLCJtaW4iLCJtYXgiLCJmaXQiLC4uLlYoKV0sQj0oKT0+W3IsSyxRXSxidD0oKT0+Wy4uLlkoKSxwdSxndSx7cG9zaXRpb246W0ssUV19XSxwPSgpPT5bIm5vLXJlcGVhdCIse3JlcGVhdDpbIiIsIngiLCJ5Iiwic3BhY2UiLCJyb3VuZCJdfV0sTz0oKT0+WyJhdXRvIiwiY292ZXIiLCJjb250YWluIixXbSxLbSx7c2l6ZTpbSyxRXX1dLFg9KCk9PltHcixKbixiYV0sRz0oKT0+WyIiLCJub25lIiwiZnVsbCIsdixLLFFdLFo9KCk9PlsiIixkdCxKbixiYV0sc3Q9KCk9Plsic29saWQiLCJkYXNoZWQiLCJkb3R0ZWQiLCJkb3VibGUiXSxJPSgpPT5bIm5vcm1hbCIsIm11bHRpcGx5Iiwic2NyZWVuIiwib3ZlcmxheSIsImRhcmtlbiIsImxpZ2h0ZW4iLCJjb2xvci1kb2RnZSIsImNvbG9yLWJ1cm4iLCJoYXJkLWxpZ2h0Iiwic29mdC1saWdodCIsImRpZmZlcmVuY2UiLCJleGNsdXNpb24iLCJodWUiLCJzYXR1cmF0aW9uIiwiY29sb3IiLCJsdW1pbm9zaXR5Il0sZ3Q9KCk9PltkdCxHcixwdSxndV0sVHQ9KCk9PlsiIiwibm9uZSIsJCxLLFFdLEp0PSgpPT5bIm5vbmUiLGR0LEssUV0sS2U9KCk9Plsibm9uZSIsZHQsSyxRXSxDZT0oKT0+W2R0LEssUV0sUGU9KCk9PltsbiwiZnVsbCIsLi4uVigpXTtyZXR1cm57Y2FjaGVTaXplOjUwMCx0aGVtZTp7YW5pbWF0ZTpbInNwaW4iLCJwaW5nIiwicHVsc2UiLCJib3VuY2UiXSxhc3BlY3Q6WyJ2aWRlbyJdLGJsdXI6W21sXSxicmVha3BvaW50OlttbF0sY29sb3I6W1ltXSxjb250YWluZXI6W21sXSwiZHJvcC1zaGFkb3ciOlttbF0sZWFzZTpbImluIiwib3V0IiwiaW4tb3V0Il0sZm9udDpbUW1dLCJmb250LXdlaWdodCI6WyJ0aGluIiwiZXh0cmFsaWdodCIsImxpZ2h0Iiwibm9ybWFsIiwibWVkaXVtIiwic2VtaWJvbGQiLCJib2xkIiwiZXh0cmFib2xkIiwiYmxhY2siXSwiaW5zZXQtc2hhZG93IjpbbWxdLGxlYWRpbmc6WyJub25lIiwidGlnaHQiLCJzbnVnIiwibm9ybWFsIiwicmVsYXhlZCIsImxvb3NlIl0scGVyc3BlY3RpdmU6WyJkcmFtYXRpYyIsIm5lYXIiLCJub3JtYWwiLCJtaWRyYW5nZSIsImRpc3RhbnQiLCJub25lIl0scmFkaXVzOlttbF0sc2hhZG93OlttbF0sc3BhY2luZzpbInB4IixkdF0sdGV4dDpbbWxdLCJ0ZXh0LXNoYWRvdyI6W21sXSx0cmFja2luZzpbInRpZ2h0ZXIiLCJ0aWdodCIsIm5vcm1hbCIsIndpZGUiLCJ3aWRlciIsIndpZGVzdCJdfSxjbGFzc0dyb3Vwczp7YXNwZWN0Olt7YXNwZWN0OlsiYXV0byIsInNxdWFyZSIsbG4sUSxLLGN0XX1dLGNvbnRhaW5lcjpbImNvbnRhaW5lciJdLGNvbHVtbnM6W3tjb2x1bW5zOltkdCxRLEssUl19XSwiYnJlYWstYWZ0ZXIiOlt7ImJyZWFrLWFmdGVyIjpfKCl9XSwiYnJlYWstYmVmb3JlIjpbeyJicmVhay1iZWZvcmUiOl8oKX1dLCJicmVhay1pbnNpZGUiOlt7ImJyZWFrLWluc2lkZSI6WyJhdXRvIiwiYXZvaWQiLCJhdm9pZC1wYWdlIiwiYXZvaWQtY29sdW1uIl19XSwiYm94LWRlY29yYXRpb24iOlt7ImJveC1kZWNvcmF0aW9uIjpbInNsaWNlIiwiY2xvbmUiXX1dLGJveDpbe2JveDpbImJvcmRlciIsImNvbnRlbnQiXX1dLGRpc3BsYXk6WyJibG9jayIsImlubGluZS1ibG9jayIsImlubGluZSIsImZsZXgiLCJpbmxpbmUtZmxleCIsInRhYmxlIiwiaW5saW5lLXRhYmxlIiwidGFibGUtY2FwdGlvbiIsInRhYmxlLWNlbGwiLCJ0YWJsZS1jb2x1bW4iLCJ0YWJsZS1jb2x1bW4tZ3JvdXAiLCJ0YWJsZS1mb290ZXItZ3JvdXAiLCJ0YWJsZS1oZWFkZXItZ3JvdXAiLCJ0YWJsZS1yb3ctZ3JvdXAiLCJ0YWJsZS1yb3ciLCJmbG93LXJvb3QiLCJncmlkIiwiaW5saW5lLWdyaWQiLCJjb250ZW50cyIsImxpc3QtaXRlbSIsImhpZGRlbiJdLHNyOlsic3Itb25seSIsIm5vdC1zci1vbmx5Il0sZmxvYXQ6W3tmbG9hdDpbInJpZ2h0IiwibGVmdCIsIm5vbmUiLCJzdGFydCIsImVuZCJdfV0sY2xlYXI6W3tjbGVhcjpbImxlZnQiLCJyaWdodCIsImJvdGgiLCJub25lIiwic3RhcnQiLCJlbmQiXX1dLGlzb2xhdGlvbjpbImlzb2xhdGUiLCJpc29sYXRpb24tYXV0byJdLCJvYmplY3QtZml0Ijpbe29iamVjdDpbImNvbnRhaW4iLCJjb3ZlciIsImZpbGwiLCJub25lIiwic2NhbGUtZG93biJdfV0sIm9iamVjdC1wb3NpdGlvbiI6W3tvYmplY3Q6SCgpfV0sb3ZlcmZsb3c6W3tvdmVyZmxvdzppdCgpfV0sIm92ZXJmbG93LXgiOlt7Im92ZXJmbG93LXgiOml0KCl9XSwib3ZlcmZsb3cteSI6W3sib3ZlcmZsb3cteSI6aXQoKX1dLG92ZXJzY3JvbGw6W3tvdmVyc2Nyb2xsOnJ0KCl9XSwib3ZlcnNjcm9sbC14IjpbeyJvdmVyc2Nyb2xsLXgiOnJ0KCl9XSwib3ZlcnNjcm9sbC15IjpbeyJvdmVyc2Nyb2xsLXkiOnJ0KCl9XSxwb3NpdGlvbjpbInN0YXRpYyIsImZpeGVkIiwiYWJzb2x1dGUiLCJyZWxhdGl2ZSIsInN0aWNreSJdLGluc2V0Olt7aW5zZXQ6eHQoKX1dLCJpbnNldC14IjpbeyJpbnNldC14Ijp4dCgpfV0sImluc2V0LXkiOlt7Imluc2V0LXkiOnh0KCl9XSxzdGFydDpbe3N0YXJ0Onh0KCl9XSxlbmQ6W3tlbmQ6eHQoKX1dLHRvcDpbe3RvcDp4dCgpfV0scmlnaHQ6W3tyaWdodDp4dCgpfV0sYm90dG9tOlt7Ym90dG9tOnh0KCl9XSxsZWZ0Olt7bGVmdDp4dCgpfV0sdmlzaWJpbGl0eTpbInZpc2libGUiLCJpbnZpc2libGUiLCJjb2xsYXBzZSJdLHo6W3t6OltMbCwiYXV0byIsSyxRXX1dLGJhc2lzOlt7YmFzaXM6W2xuLCJmdWxsIiwiYXV0byIsUiwuLi5WKCldfV0sImZsZXgtZGlyZWN0aW9uIjpbe2ZsZXg6WyJyb3ciLCJyb3ctcmV2ZXJzZSIsImNvbCIsImNvbC1yZXZlcnNlIl19XSwiZmxleC13cmFwIjpbe2ZsZXg6WyJub3dyYXAiLCJ3cmFwIiwid3JhcC1yZXZlcnNlIl19XSxmbGV4Olt7ZmxleDpbZHQsbG4sImF1dG8iLCJpbml0aWFsIiwibm9uZSIsUV19XSxncm93Olt7Z3JvdzpbIiIsZHQsSyxRXX1dLHNocmluazpbe3NocmluazpbIiIsZHQsSyxRXX1dLG9yZGVyOlt7b3JkZXI6W0xsLCJmaXJzdCIsImxhc3QiLCJub25lIixLLFFdfV0sImdyaWQtY29scyI6W3siZ3JpZC1jb2xzIjpCZSgpfV0sImNvbC1zdGFydC1lbmQiOlt7Y29sOnRlKCl9XSwiY29sLXN0YXJ0IjpbeyJjb2wtc3RhcnQiOkJ0KCl9XSwiY29sLWVuZCI6W3siY29sLWVuZCI6QnQoKX1dLCJncmlkLXJvd3MiOlt7ImdyaWQtcm93cyI6QmUoKX1dLCJyb3ctc3RhcnQtZW5kIjpbe3Jvdzp0ZSgpfV0sInJvdy1zdGFydCI6W3sicm93LXN0YXJ0IjpCdCgpfV0sInJvdy1lbmQiOlt7InJvdy1lbmQiOkJ0KCl9XSwiZ3JpZC1mbG93IjpbeyJncmlkLWZsb3ciOlsicm93IiwiY29sIiwiZGVuc2UiLCJyb3ctZGVuc2UiLCJjb2wtZGVuc2UiXX1dLCJhdXRvLWNvbHMiOlt7ImF1dG8tY29scyI6bWUoKX1dLCJhdXRvLXJvd3MiOlt7ImF1dG8tcm93cyI6bWUoKX1dLGdhcDpbe2dhcDpWKCl9XSwiZ2FwLXgiOlt7ImdhcC14IjpWKCl9XSwiZ2FwLXkiOlt7ImdhcC15IjpWKCl9XSwianVzdGlmeS1jb250ZW50Ijpbe2p1c3RpZnk6Wy4uLlNlKCksIm5vcm1hbCJdfV0sImp1c3RpZnktaXRlbXMiOlt7Imp1c3RpZnktaXRlbXMiOlsuLi5NdCgpLCJub3JtYWwiXX1dLCJqdXN0aWZ5LXNlbGYiOlt7Imp1c3RpZnktc2VsZiI6WyJhdXRvIiwuLi5NdCgpXX1dLCJhbGlnbi1jb250ZW50Ijpbe2NvbnRlbnQ6WyJub3JtYWwiLC4uLlNlKCldfV0sImFsaWduLWl0ZW1zIjpbe2l0ZW1zOlsuLi5NdCgpLHtiYXNlbGluZTpbIiIsImxhc3QiXX1dfV0sImFsaWduLXNlbGYiOlt7c2VsZjpbImF1dG8iLC4uLk10KCkse2Jhc2VsaW5lOlsiIiwibGFzdCJdfV19XSwicGxhY2UtY29udGVudCI6W3sicGxhY2UtY29udGVudCI6U2UoKX1dLCJwbGFjZS1pdGVtcyI6W3sicGxhY2UtaXRlbXMiOlsuLi5NdCgpLCJiYXNlbGluZSJdfV0sInBsYWNlLXNlbGYiOlt7InBsYWNlLXNlbGYiOlsiYXV0byIsLi4uTXQoKV19XSxwOlt7cDpWKCl9XSxweDpbe3B4OlYoKX1dLHB5Olt7cHk6VigpfV0scHM6W3twczpWKCl9XSxwZTpbe3BlOlYoKX1dLHB0Olt7cHQ6VigpfV0scHI6W3twcjpWKCl9XSxwYjpbe3BiOlYoKX1dLHBsOlt7cGw6VigpfV0sbTpbe206QSgpfV0sbXg6W3tteDpBKCl9XSxteTpbe215OkEoKX1dLG1zOlt7bXM6QSgpfV0sbWU6W3ttZTpBKCl9XSxtdDpbe210OkEoKX1dLG1yOlt7bXI6QSgpfV0sbWI6W3ttYjpBKCl9XSxtbDpbe21sOkEoKX1dLCJzcGFjZS14IjpbeyJzcGFjZS14IjpWKCl9XSwic3BhY2UteC1yZXZlcnNlIjpbInNwYWNlLXgtcmV2ZXJzZSJdLCJzcGFjZS15IjpbeyJzcGFjZS15IjpWKCl9XSwic3BhY2UteS1yZXZlcnNlIjpbInNwYWNlLXktcmV2ZXJzZSJdLHNpemU6W3tzaXplOnEoKX1dLHc6W3t3OltSLCJzY3JlZW4iLC4uLnEoKV19XSwibWluLXciOlt7Im1pbi13IjpbUiwic2NyZWVuIiwibm9uZSIsLi4ucSgpXX1dLCJtYXgtdyI6W3sibWF4LXciOltSLCJzY3JlZW4iLCJub25lIiwicHJvc2UiLHtzY3JlZW46W3hdfSwuLi5xKCldfV0saDpbe2g6WyJzY3JlZW4iLCJsaCIsLi4ucSgpXX1dLCJtaW4taCI6W3sibWluLWgiOlsic2NyZWVuIiwibGgiLCJub25lIiwuLi5xKCldfV0sIm1heC1oIjpbeyJtYXgtaCI6WyJzY3JlZW4iLCJsaCIsLi4ucSgpXX1dLCJmb250LXNpemUiOlt7dGV4dDpbImJhc2UiLGMsSm4sYmFdfV0sImZvbnQtc21vb3RoaW5nIjpbImFudGlhbGlhc2VkIiwic3VicGl4ZWwtYW50aWFsaWFzZWQiXSwiZm9udC1zdHlsZSI6WyJpdGFsaWMiLCJub3QtaXRhbGljIl0sImZvbnQtd2VpZ2h0Ijpbe2ZvbnQ6W3MsSyxxcl19XSwiZm9udC1zdHJldGNoIjpbeyJmb250LXN0cmV0Y2giOlsidWx0cmEtY29uZGVuc2VkIiwiZXh0cmEtY29uZGVuc2VkIiwiY29uZGVuc2VkIiwic2VtaS1jb25kZW5zZWQiLCJub3JtYWwiLCJzZW1pLWV4cGFuZGVkIiwiZXhwYW5kZWQiLCJleHRyYS1leHBhbmRlZCIsInVsdHJhLWV4cGFuZGVkIixHcixRXX1dLCJmb250LWZhbWlseSI6W3tmb250OltKbSxRLGldfV0sImZ2bi1ub3JtYWwiOlsibm9ybWFsLW51bXMiXSwiZnZuLW9yZGluYWwiOlsib3JkaW5hbCJdLCJmdm4tc2xhc2hlZC16ZXJvIjpbInNsYXNoZWQtemVybyJdLCJmdm4tZmlndXJlIjpbImxpbmluZy1udW1zIiwib2xkc3R5bGUtbnVtcyJdLCJmdm4tc3BhY2luZyI6WyJwcm9wb3J0aW9uYWwtbnVtcyIsInRhYnVsYXItbnVtcyJdLCJmdm4tZnJhY3Rpb24iOlsiZGlhZ29uYWwtZnJhY3Rpb25zIiwic3RhY2tlZC1mcmFjdGlvbnMiXSx0cmFja2luZzpbe3RyYWNraW5nOltkLEssUV19XSwibGluZS1jbGFtcCI6W3sibGluZS1jbGFtcCI6W2R0LCJub25lIixLLHFyXX1dLGxlYWRpbmc6W3tsZWFkaW5nOlttLC4uLlYoKV19XSwibGlzdC1pbWFnZSI6W3sibGlzdC1pbWFnZSI6WyJub25lIixLLFFdfV0sImxpc3Qtc3R5bGUtcG9zaXRpb24iOlt7bGlzdDpbImluc2lkZSIsIm91dHNpZGUiXX1dLCJsaXN0LXN0eWxlLXR5cGUiOlt7bGlzdDpbImRpc2MiLCJkZWNpbWFsIiwibm9uZSIsSyxRXX1dLCJ0ZXh0LWFsaWdubWVudCI6W3t0ZXh0OlsibGVmdCIsImNlbnRlciIsInJpZ2h0IiwianVzdGlmeSIsInN0YXJ0IiwiZW5kIl19XSwicGxhY2Vob2xkZXItY29sb3IiOlt7cGxhY2Vob2xkZXI6QigpfV0sInRleHQtY29sb3IiOlt7dGV4dDpCKCl9XSwidGV4dC1kZWNvcmF0aW9uIjpbInVuZGVybGluZSIsIm92ZXJsaW5lIiwibGluZS10aHJvdWdoIiwibm8tdW5kZXJsaW5lIl0sInRleHQtZGVjb3JhdGlvbi1zdHlsZSI6W3tkZWNvcmF0aW9uOlsuLi5zdCgpLCJ3YXZ5Il19XSwidGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyI6W3tkZWNvcmF0aW9uOltkdCwiZnJvbS1mb250IiwiYXV0byIsSyxiYV19XSwidGV4dC1kZWNvcmF0aW9uLWNvbG9yIjpbe2RlY29yYXRpb246QigpfV0sInVuZGVybGluZS1vZmZzZXQiOlt7InVuZGVybGluZS1vZmZzZXQiOltkdCwiYXV0byIsSyxRXX1dLCJ0ZXh0LXRyYW5zZm9ybSI6WyJ1cHBlcmNhc2UiLCJsb3dlcmNhc2UiLCJjYXBpdGFsaXplIiwibm9ybWFsLWNhc2UiXSwidGV4dC1vdmVyZmxvdyI6WyJ0cnVuY2F0ZSIsInRleHQtZWxsaXBzaXMiLCJ0ZXh0LWNsaXAiXSwidGV4dC13cmFwIjpbe3RleHQ6WyJ3cmFwIiwibm93cmFwIiwiYmFsYW5jZSIsInByZXR0eSJdfV0saW5kZW50Olt7aW5kZW50OlYoKX1dLCJ2ZXJ0aWNhbC1hbGlnbiI6W3thbGlnbjpbImJhc2VsaW5lIiwidG9wIiwibWlkZGxlIiwiYm90dG9tIiwidGV4dC10b3AiLCJ0ZXh0LWJvdHRvbSIsInN1YiIsInN1cGVyIixLLFFdfV0sd2hpdGVzcGFjZTpbe3doaXRlc3BhY2U6WyJub3JtYWwiLCJub3dyYXAiLCJwcmUiLCJwcmUtbGluZSIsInByZS13cmFwIiwiYnJlYWstc3BhY2VzIl19XSxicmVhazpbe2JyZWFrOlsibm9ybWFsIiwid29yZHMiLCJhbGwiLCJrZWVwIl19XSx3cmFwOlt7d3JhcDpbImJyZWFrLXdvcmQiLCJhbnl3aGVyZSIsIm5vcm1hbCJdfV0saHlwaGVuczpbe2h5cGhlbnM6WyJub25lIiwibWFudWFsIiwiYXV0byJdfV0sY29udGVudDpbe2NvbnRlbnQ6WyJub25lIixLLFFdfV0sImJnLWF0dGFjaG1lbnQiOlt7Ymc6WyJmaXhlZCIsImxvY2FsIiwic2Nyb2xsIl19XSwiYmctY2xpcCI6W3siYmctY2xpcCI6WyJib3JkZXIiLCJwYWRkaW5nIiwiY29udGVudCIsInRleHQiXX1dLCJiZy1vcmlnaW4iOlt7ImJnLW9yaWdpbiI6WyJib3JkZXIiLCJwYWRkaW5nIiwiY29udGVudCJdfV0sImJnLXBvc2l0aW9uIjpbe2JnOmJ0KCl9XSwiYmctcmVwZWF0Ijpbe2JnOnAoKX1dLCJiZy1zaXplIjpbe2JnOk8oKX1dLCJiZy1pbWFnZSI6W3tiZzpbIm5vbmUiLHtsaW5lYXI6W3t0bzpbInQiLCJ0ciIsInIiLCJiciIsImIiLCJibCIsImwiLCJ0bCJdfSxMbCxLLFFdLHJhZGlhbDpbIiIsSyxRXSxjb25pYzpbTGwsSyxRXX0sJG0sUG1dfV0sImJnLWNvbG9yIjpbe2JnOkIoKX1dLCJncmFkaWVudC1mcm9tLXBvcyI6W3tmcm9tOlgoKX1dLCJncmFkaWVudC12aWEtcG9zIjpbe3ZpYTpYKCl9XSwiZ3JhZGllbnQtdG8tcG9zIjpbe3RvOlgoKX1dLCJncmFkaWVudC1mcm9tIjpbe2Zyb206QigpfV0sImdyYWRpZW50LXZpYSI6W3t2aWE6QigpfV0sImdyYWRpZW50LXRvIjpbe3RvOkIoKX1dLHJvdW5kZWQ6W3tyb3VuZGVkOkcoKX1dLCJyb3VuZGVkLXMiOlt7InJvdW5kZWQtcyI6RygpfV0sInJvdW5kZWQtZSI6W3sicm91bmRlZC1lIjpHKCl9XSwicm91bmRlZC10IjpbeyJyb3VuZGVkLXQiOkcoKX1dLCJyb3VuZGVkLXIiOlt7InJvdW5kZWQtciI6RygpfV0sInJvdW5kZWQtYiI6W3sicm91bmRlZC1iIjpHKCl9XSwicm91bmRlZC1sIjpbeyJyb3VuZGVkLWwiOkcoKX1dLCJyb3VuZGVkLXNzIjpbeyJyb3VuZGVkLXNzIjpHKCl9XSwicm91bmRlZC1zZSI6W3sicm91bmRlZC1zZSI6RygpfV0sInJvdW5kZWQtZWUiOlt7InJvdW5kZWQtZWUiOkcoKX1dLCJyb3VuZGVkLWVzIjpbeyJyb3VuZGVkLWVzIjpHKCl9XSwicm91bmRlZC10bCI6W3sicm91bmRlZC10bCI6RygpfV0sInJvdW5kZWQtdHIiOlt7InJvdW5kZWQtdHIiOkcoKX1dLCJyb3VuZGVkLWJyIjpbeyJyb3VuZGVkLWJyIjpHKCl9XSwicm91bmRlZC1ibCI6W3sicm91bmRlZC1ibCI6RygpfV0sImJvcmRlci13Ijpbe2JvcmRlcjpaKCl9XSwiYm9yZGVyLXcteCI6W3siYm9yZGVyLXgiOlooKX1dLCJib3JkZXItdy15IjpbeyJib3JkZXIteSI6WigpfV0sImJvcmRlci13LXMiOlt7ImJvcmRlci1zIjpaKCl9XSwiYm9yZGVyLXctZSI6W3siYm9yZGVyLWUiOlooKX1dLCJib3JkZXItdy10IjpbeyJib3JkZXItdCI6WigpfV0sImJvcmRlci13LXIiOlt7ImJvcmRlci1yIjpaKCl9XSwiYm9yZGVyLXctYiI6W3siYm9yZGVyLWIiOlooKX1dLCJib3JkZXItdy1sIjpbeyJib3JkZXItbCI6WigpfV0sImRpdmlkZS14IjpbeyJkaXZpZGUteCI6WigpfV0sImRpdmlkZS14LXJldmVyc2UiOlsiZGl2aWRlLXgtcmV2ZXJzZSJdLCJkaXZpZGUteSI6W3siZGl2aWRlLXkiOlooKX1dLCJkaXZpZGUteS1yZXZlcnNlIjpbImRpdmlkZS15LXJldmVyc2UiXSwiYm9yZGVyLXN0eWxlIjpbe2JvcmRlcjpbLi4uc3QoKSwiaGlkZGVuIiwibm9uZSJdfV0sImRpdmlkZS1zdHlsZSI6W3tkaXZpZGU6Wy4uLnN0KCksImhpZGRlbiIsIm5vbmUiXX1dLCJib3JkZXItY29sb3IiOlt7Ym9yZGVyOkIoKX1dLCJib3JkZXItY29sb3IteCI6W3siYm9yZGVyLXgiOkIoKX1dLCJib3JkZXItY29sb3IteSI6W3siYm9yZGVyLXkiOkIoKX1dLCJib3JkZXItY29sb3ItcyI6W3siYm9yZGVyLXMiOkIoKX1dLCJib3JkZXItY29sb3ItZSI6W3siYm9yZGVyLWUiOkIoKX1dLCJib3JkZXItY29sb3ItdCI6W3siYm9yZGVyLXQiOkIoKX1dLCJib3JkZXItY29sb3ItciI6W3siYm9yZGVyLXIiOkIoKX1dLCJib3JkZXItY29sb3ItYiI6W3siYm9yZGVyLWIiOkIoKX1dLCJib3JkZXItY29sb3ItbCI6W3siYm9yZGVyLWwiOkIoKX1dLCJkaXZpZGUtY29sb3IiOlt7ZGl2aWRlOkIoKX1dLCJvdXRsaW5lLXN0eWxlIjpbe291dGxpbmU6Wy4uLnN0KCksIm5vbmUiLCJoaWRkZW4iXX1dLCJvdXRsaW5lLW9mZnNldCI6W3sib3V0bGluZS1vZmZzZXQiOltkdCxLLFFdfV0sIm91dGxpbmUtdyI6W3tvdXRsaW5lOlsiIixkdCxKbixiYV19XSwib3V0bGluZS1jb2xvciI6W3tvdXRsaW5lOkIoKX1dLHNoYWRvdzpbe3NoYWRvdzpbIiIsIm5vbmUiLEQsYWksbGldfV0sInNoYWRvdy1jb2xvciI6W3tzaGFkb3c6QigpfV0sImluc2V0LXNoYWRvdyI6W3siaW5zZXQtc2hhZG93IjpbIm5vbmUiLGosYWksbGldfV0sImluc2V0LXNoYWRvdy1jb2xvciI6W3siaW5zZXQtc2hhZG93IjpCKCl9XSwicmluZy13Ijpbe3Jpbmc6WigpfV0sInJpbmctdy1pbnNldCI6WyJyaW5nLWluc2V0Il0sInJpbmctY29sb3IiOlt7cmluZzpCKCl9XSwicmluZy1vZmZzZXQtdyI6W3sicmluZy1vZmZzZXQiOltkdCxiYV19XSwicmluZy1vZmZzZXQtY29sb3IiOlt7InJpbmctb2Zmc2V0IjpCKCl9XSwiaW5zZXQtcmluZy13IjpbeyJpbnNldC1yaW5nIjpaKCl9XSwiaW5zZXQtcmluZy1jb2xvciI6W3siaW5zZXQtcmluZyI6QigpfV0sInRleHQtc2hhZG93IjpbeyJ0ZXh0LXNoYWRvdyI6WyJub25lIixKLGFpLGxpXX1dLCJ0ZXh0LXNoYWRvdy1jb2xvciI6W3sidGV4dC1zaGFkb3ciOkIoKX1dLG9wYWNpdHk6W3tvcGFjaXR5OltkdCxLLFFdfV0sIm1peC1ibGVuZCI6W3sibWl4LWJsZW5kIjpbLi4uSSgpLCJwbHVzLWRhcmtlciIsInBsdXMtbGlnaHRlciJdfV0sImJnLWJsZW5kIjpbeyJiZy1ibGVuZCI6SSgpfV0sIm1hc2stY2xpcCI6W3sibWFzay1jbGlwIjpbImJvcmRlciIsInBhZGRpbmciLCJjb250ZW50IiwiZmlsbCIsInN0cm9rZSIsInZpZXciXX0sIm1hc2stbm8tY2xpcCJdLCJtYXNrLWNvbXBvc2l0ZSI6W3ttYXNrOlsiYWRkIiwic3VidHJhY3QiLCJpbnRlcnNlY3QiLCJleGNsdWRlIl19XSwibWFzay1pbWFnZS1saW5lYXItcG9zIjpbeyJtYXNrLWxpbmVhciI6W2R0XX1dLCJtYXNrLWltYWdlLWxpbmVhci1mcm9tLXBvcyI6W3sibWFzay1saW5lYXItZnJvbSI6Z3QoKX1dLCJtYXNrLWltYWdlLWxpbmVhci10by1wb3MiOlt7Im1hc2stbGluZWFyLXRvIjpndCgpfV0sIm1hc2staW1hZ2UtbGluZWFyLWZyb20tY29sb3IiOlt7Im1hc2stbGluZWFyLWZyb20iOkIoKX1dLCJtYXNrLWltYWdlLWxpbmVhci10by1jb2xvciI6W3sibWFzay1saW5lYXItdG8iOkIoKX1dLCJtYXNrLWltYWdlLXQtZnJvbS1wb3MiOlt7Im1hc2stdC1mcm9tIjpndCgpfV0sIm1hc2staW1hZ2UtdC10by1wb3MiOlt7Im1hc2stdC10byI6Z3QoKX1dLCJtYXNrLWltYWdlLXQtZnJvbS1jb2xvciI6W3sibWFzay10LWZyb20iOkIoKX1dLCJtYXNrLWltYWdlLXQtdG8tY29sb3IiOlt7Im1hc2stdC10byI6QigpfV0sIm1hc2staW1hZ2Utci1mcm9tLXBvcyI6W3sibWFzay1yLWZyb20iOmd0KCl9XSwibWFzay1pbWFnZS1yLXRvLXBvcyI6W3sibWFzay1yLXRvIjpndCgpfV0sIm1hc2staW1hZ2Utci1mcm9tLWNvbG9yIjpbeyJtYXNrLXItZnJvbSI6QigpfV0sIm1hc2staW1hZ2Utci10by1jb2xvciI6W3sibWFzay1yLXRvIjpCKCl9XSwibWFzay1pbWFnZS1iLWZyb20tcG9zIjpbeyJtYXNrLWItZnJvbSI6Z3QoKX1dLCJtYXNrLWltYWdlLWItdG8tcG9zIjpbeyJtYXNrLWItdG8iOmd0KCl9XSwibWFzay1pbWFnZS1iLWZyb20tY29sb3IiOlt7Im1hc2stYi1mcm9tIjpCKCl9XSwibWFzay1pbWFnZS1iLXRvLWNvbG9yIjpbeyJtYXNrLWItdG8iOkIoKX1dLCJtYXNrLWltYWdlLWwtZnJvbS1wb3MiOlt7Im1hc2stbC1mcm9tIjpndCgpfV0sIm1hc2staW1hZ2UtbC10by1wb3MiOlt7Im1hc2stbC10byI6Z3QoKX1dLCJtYXNrLWltYWdlLWwtZnJvbS1jb2xvciI6W3sibWFzay1sLWZyb20iOkIoKX1dLCJtYXNrLWltYWdlLWwtdG8tY29sb3IiOlt7Im1hc2stbC10byI6QigpfV0sIm1hc2staW1hZ2UteC1mcm9tLXBvcyI6W3sibWFzay14LWZyb20iOmd0KCl9XSwibWFzay1pbWFnZS14LXRvLXBvcyI6W3sibWFzay14LXRvIjpndCgpfV0sIm1hc2staW1hZ2UteC1mcm9tLWNvbG9yIjpbeyJtYXNrLXgtZnJvbSI6QigpfV0sIm1hc2staW1hZ2UteC10by1jb2xvciI6W3sibWFzay14LXRvIjpCKCl9XSwibWFzay1pbWFnZS15LWZyb20tcG9zIjpbeyJtYXNrLXktZnJvbSI6Z3QoKX1dLCJtYXNrLWltYWdlLXktdG8tcG9zIjpbeyJtYXNrLXktdG8iOmd0KCl9XSwibWFzay1pbWFnZS15LWZyb20tY29sb3IiOlt7Im1hc2steS1mcm9tIjpCKCl9XSwibWFzay1pbWFnZS15LXRvLWNvbG9yIjpbeyJtYXNrLXktdG8iOkIoKX1dLCJtYXNrLWltYWdlLXJhZGlhbCI6W3sibWFzay1yYWRpYWwiOltLLFFdfV0sIm1hc2staW1hZ2UtcmFkaWFsLWZyb20tcG9zIjpbeyJtYXNrLXJhZGlhbC1mcm9tIjpndCgpfV0sIm1hc2staW1hZ2UtcmFkaWFsLXRvLXBvcyI6W3sibWFzay1yYWRpYWwtdG8iOmd0KCl9XSwibWFzay1pbWFnZS1yYWRpYWwtZnJvbS1jb2xvciI6W3sibWFzay1yYWRpYWwtZnJvbSI6QigpfV0sIm1hc2staW1hZ2UtcmFkaWFsLXRvLWNvbG9yIjpbeyJtYXNrLXJhZGlhbC10byI6QigpfV0sIm1hc2staW1hZ2UtcmFkaWFsLXNoYXBlIjpbeyJtYXNrLXJhZGlhbCI6WyJjaXJjbGUiLCJlbGxpcHNlIl19XSwibWFzay1pbWFnZS1yYWRpYWwtc2l6ZSI6W3sibWFzay1yYWRpYWwiOlt7Y2xvc2VzdDpbInNpZGUiLCJjb3JuZXIiXSxmYXJ0aGVzdDpbInNpZGUiLCJjb3JuZXIiXX1dfV0sIm1hc2staW1hZ2UtcmFkaWFsLXBvcyI6W3sibWFzay1yYWRpYWwtYXQiOlkoKX1dLCJtYXNrLWltYWdlLWNvbmljLXBvcyI6W3sibWFzay1jb25pYyI6W2R0XX1dLCJtYXNrLWltYWdlLWNvbmljLWZyb20tcG9zIjpbeyJtYXNrLWNvbmljLWZyb20iOmd0KCl9XSwibWFzay1pbWFnZS1jb25pYy10by1wb3MiOlt7Im1hc2stY29uaWMtdG8iOmd0KCl9XSwibWFzay1pbWFnZS1jb25pYy1mcm9tLWNvbG9yIjpbeyJtYXNrLWNvbmljLWZyb20iOkIoKX1dLCJtYXNrLWltYWdlLWNvbmljLXRvLWNvbG9yIjpbeyJtYXNrLWNvbmljLXRvIjpCKCl9XSwibWFzay1tb2RlIjpbe21hc2s6WyJhbHBoYSIsImx1bWluYW5jZSIsIm1hdGNoIl19XSwibWFzay1vcmlnaW4iOlt7Im1hc2stb3JpZ2luIjpbImJvcmRlciIsInBhZGRpbmciLCJjb250ZW50IiwiZmlsbCIsInN0cm9rZSIsInZpZXciXX1dLCJtYXNrLXBvc2l0aW9uIjpbe21hc2s6YnQoKX1dLCJtYXNrLXJlcGVhdCI6W3ttYXNrOnAoKX1dLCJtYXNrLXNpemUiOlt7bWFzazpPKCl9XSwibWFzay10eXBlIjpbeyJtYXNrLXR5cGUiOlsiYWxwaGEiLCJsdW1pbmFuY2UiXX1dLCJtYXNrLWltYWdlIjpbe21hc2s6WyJub25lIixLLFFdfV0sZmlsdGVyOlt7ZmlsdGVyOlsiIiwibm9uZSIsSyxRXX1dLGJsdXI6W3tibHVyOlR0KCl9XSxicmlnaHRuZXNzOlt7YnJpZ2h0bmVzczpbZHQsSyxRXX1dLGNvbnRyYXN0Olt7Y29udHJhc3Q6W2R0LEssUV19XSwiZHJvcC1zaGFkb3ciOlt7ImRyb3Atc2hhZG93IjpbIiIsIm5vbmUiLGF0LGFpLGxpXX1dLCJkcm9wLXNoYWRvdy1jb2xvciI6W3siZHJvcC1zaGFkb3ciOkIoKX1dLGdyYXlzY2FsZTpbe2dyYXlzY2FsZTpbIiIsZHQsSyxRXX1dLCJodWUtcm90YXRlIjpbeyJodWUtcm90YXRlIjpbZHQsSyxRXX1dLGludmVydDpbe2ludmVydDpbIiIsZHQsSyxRXX1dLHNhdHVyYXRlOlt7c2F0dXJhdGU6W2R0LEssUV19XSxzZXBpYTpbe3NlcGlhOlsiIixkdCxLLFFdfV0sImJhY2tkcm9wLWZpbHRlciI6W3siYmFja2Ryb3AtZmlsdGVyIjpbIiIsIm5vbmUiLEssUV19XSwiYmFja2Ryb3AtYmx1ciI6W3siYmFja2Ryb3AtYmx1ciI6VHQoKX1dLCJiYWNrZHJvcC1icmlnaHRuZXNzIjpbeyJiYWNrZHJvcC1icmlnaHRuZXNzIjpbZHQsSyxRXX1dLCJiYWNrZHJvcC1jb250cmFzdCI6W3siYmFja2Ryb3AtY29udHJhc3QiOltkdCxLLFFdfV0sImJhY2tkcm9wLWdyYXlzY2FsZSI6W3siYmFja2Ryb3AtZ3JheXNjYWxlIjpbIiIsZHQsSyxRXX1dLCJiYWNrZHJvcC1odWUtcm90YXRlIjpbeyJiYWNrZHJvcC1odWUtcm90YXRlIjpbZHQsSyxRXX1dLCJiYWNrZHJvcC1pbnZlcnQiOlt7ImJhY2tkcm9wLWludmVydCI6WyIiLGR0LEssUV19XSwiYmFja2Ryb3Atb3BhY2l0eSI6W3siYmFja2Ryb3Atb3BhY2l0eSI6W2R0LEssUV19XSwiYmFja2Ryb3Atc2F0dXJhdGUiOlt7ImJhY2tkcm9wLXNhdHVyYXRlIjpbZHQsSyxRXX1dLCJiYWNrZHJvcC1zZXBpYSI6W3siYmFja2Ryb3Atc2VwaWEiOlsiIixkdCxLLFFdfV0sImJvcmRlci1jb2xsYXBzZSI6W3tib3JkZXI6WyJjb2xsYXBzZSIsInNlcGFyYXRlIl19XSwiYm9yZGVyLXNwYWNpbmciOlt7ImJvcmRlci1zcGFjaW5nIjpWKCl9XSwiYm9yZGVyLXNwYWNpbmcteCI6W3siYm9yZGVyLXNwYWNpbmcteCI6VigpfV0sImJvcmRlci1zcGFjaW5nLXkiOlt7ImJvcmRlci1zcGFjaW5nLXkiOlYoKX1dLCJ0YWJsZS1sYXlvdXQiOlt7dGFibGU6WyJhdXRvIiwiZml4ZWQiXX1dLGNhcHRpb246W3tjYXB0aW9uOlsidG9wIiwiYm90dG9tIl19XSx0cmFuc2l0aW9uOlt7dHJhbnNpdGlvbjpbIiIsImFsbCIsImNvbG9ycyIsIm9wYWNpdHkiLCJzaGFkb3ciLCJ0cmFuc2Zvcm0iLCJub25lIixLLFFdfV0sInRyYW5zaXRpb24tYmVoYXZpb3IiOlt7dHJhbnNpdGlvbjpbIm5vcm1hbCIsImRpc2NyZXRlIl19XSxkdXJhdGlvbjpbe2R1cmF0aW9uOltkdCwiaW5pdGlhbCIsSyxRXX1dLGVhc2U6W3tlYXNlOlsibGluZWFyIiwiaW5pdGlhbCIsaHQsSyxRXX1dLGRlbGF5Olt7ZGVsYXk6W2R0LEssUV19XSxhbmltYXRlOlt7YW5pbWF0ZTpbIm5vbmUiLFN0LEssUV19XSxiYWNrZmFjZTpbe2JhY2tmYWNlOlsiaGlkZGVuIiwidmlzaWJsZSJdfV0scGVyc3BlY3RpdmU6W3twZXJzcGVjdGl2ZTpbbnQsSyxRXX1dLCJwZXJzcGVjdGl2ZS1vcmlnaW4iOlt7InBlcnNwZWN0aXZlLW9yaWdpbiI6SCgpfV0scm90YXRlOlt7cm90YXRlOkp0KCl9XSwicm90YXRlLXgiOlt7InJvdGF0ZS14IjpKdCgpfV0sInJvdGF0ZS15IjpbeyJyb3RhdGUteSI6SnQoKX1dLCJyb3RhdGUteiI6W3sicm90YXRlLXoiOkp0KCl9XSxzY2FsZTpbe3NjYWxlOktlKCl9XSwic2NhbGUteCI6W3sic2NhbGUteCI6S2UoKX1dLCJzY2FsZS15IjpbeyJzY2FsZS15IjpLZSgpfV0sInNjYWxlLXoiOlt7InNjYWxlLXoiOktlKCl9XSwic2NhbGUtM2QiOlsic2NhbGUtM2QiXSxza2V3Olt7c2tldzpDZSgpfV0sInNrZXcteCI6W3sic2tldy14IjpDZSgpfV0sInNrZXcteSI6W3sic2tldy15IjpDZSgpfV0sdHJhbnNmb3JtOlt7dHJhbnNmb3JtOltLLFEsIiIsIm5vbmUiLCJncHUiLCJjcHUiXX1dLCJ0cmFuc2Zvcm0tb3JpZ2luIjpbe29yaWdpbjpIKCl9XSwidHJhbnNmb3JtLXN0eWxlIjpbe3RyYW5zZm9ybTpbIjNkIiwiZmxhdCJdfV0sdHJhbnNsYXRlOlt7dHJhbnNsYXRlOlBlKCl9XSwidHJhbnNsYXRlLXgiOlt7InRyYW5zbGF0ZS14IjpQZSgpfV0sInRyYW5zbGF0ZS15IjpbeyJ0cmFuc2xhdGUteSI6UGUoKX1dLCJ0cmFuc2xhdGUteiI6W3sidHJhbnNsYXRlLXoiOlBlKCl9XSwidHJhbnNsYXRlLW5vbmUiOlsidHJhbnNsYXRlLW5vbmUiXSxhY2NlbnQ6W3thY2NlbnQ6QigpfV0sYXBwZWFyYW5jZTpbe2FwcGVhcmFuY2U6WyJub25lIiwiYXV0byJdfV0sImNhcmV0LWNvbG9yIjpbe2NhcmV0OkIoKX1dLCJjb2xvci1zY2hlbWUiOlt7c2NoZW1lOlsibm9ybWFsIiwiZGFyayIsImxpZ2h0IiwibGlnaHQtZGFyayIsIm9ubHktZGFyayIsIm9ubHktbGlnaHQiXX1dLGN1cnNvcjpbe2N1cnNvcjpbImF1dG8iLCJkZWZhdWx0IiwicG9pbnRlciIsIndhaXQiLCJ0ZXh0IiwibW92ZSIsImhlbHAiLCJub3QtYWxsb3dlZCIsIm5vbmUiLCJjb250ZXh0LW1lbnUiLCJwcm9ncmVzcyIsImNlbGwiLCJjcm9zc2hhaXIiLCJ2ZXJ0aWNhbC10ZXh0IiwiYWxpYXMiLCJjb3B5Iiwibm8tZHJvcCIsImdyYWIiLCJncmFiYmluZyIsImFsbC1zY3JvbGwiLCJjb2wtcmVzaXplIiwicm93LXJlc2l6ZSIsIm4tcmVzaXplIiwiZS1yZXNpemUiLCJzLXJlc2l6ZSIsInctcmVzaXplIiwibmUtcmVzaXplIiwibnctcmVzaXplIiwic2UtcmVzaXplIiwic3ctcmVzaXplIiwiZXctcmVzaXplIiwibnMtcmVzaXplIiwibmVzdy1yZXNpemUiLCJud3NlLXJlc2l6ZSIsInpvb20taW4iLCJ6b29tLW91dCIsSyxRXX1dLCJmaWVsZC1zaXppbmciOlt7ImZpZWxkLXNpemluZyI6WyJmaXhlZCIsImNvbnRlbnQiXX1dLCJwb2ludGVyLWV2ZW50cyI6W3sicG9pbnRlci1ldmVudHMiOlsiYXV0byIsIm5vbmUiXX1dLHJlc2l6ZTpbe3Jlc2l6ZTpbIm5vbmUiLCIiLCJ5IiwieCJdfV0sInNjcm9sbC1iZWhhdmlvciI6W3tzY3JvbGw6WyJhdXRvIiwic21vb3RoIl19XSwic2Nyb2xsLW0iOlt7InNjcm9sbC1tIjpWKCl9XSwic2Nyb2xsLW14IjpbeyJzY3JvbGwtbXgiOlYoKX1dLCJzY3JvbGwtbXkiOlt7InNjcm9sbC1teSI6VigpfV0sInNjcm9sbC1tcyI6W3sic2Nyb2xsLW1zIjpWKCl9XSwic2Nyb2xsLW1lIjpbeyJzY3JvbGwtbWUiOlYoKX1dLCJzY3JvbGwtbXQiOlt7InNjcm9sbC1tdCI6VigpfV0sInNjcm9sbC1tciI6W3sic2Nyb2xsLW1yIjpWKCl9XSwic2Nyb2xsLW1iIjpbeyJzY3JvbGwtbWIiOlYoKX1dLCJzY3JvbGwtbWwiOlt7InNjcm9sbC1tbCI6VigpfV0sInNjcm9sbC1wIjpbeyJzY3JvbGwtcCI6VigpfV0sInNjcm9sbC1weCI6W3sic2Nyb2xsLXB4IjpWKCl9XSwic2Nyb2xsLXB5IjpbeyJzY3JvbGwtcHkiOlYoKX1dLCJzY3JvbGwtcHMiOlt7InNjcm9sbC1wcyI6VigpfV0sInNjcm9sbC1wZSI6W3sic2Nyb2xsLXBlIjpWKCl9XSwic2Nyb2xsLXB0IjpbeyJzY3JvbGwtcHQiOlYoKX1dLCJzY3JvbGwtcHIiOlt7InNjcm9sbC1wciI6VigpfV0sInNjcm9sbC1wYiI6W3sic2Nyb2xsLXBiIjpWKCl9XSwic2Nyb2xsLXBsIjpbeyJzY3JvbGwtcGwiOlYoKX1dLCJzbmFwLWFsaWduIjpbe3NuYXA6WyJzdGFydCIsImVuZCIsImNlbnRlciIsImFsaWduLW5vbmUiXX1dLCJzbmFwLXN0b3AiOlt7c25hcDpbIm5vcm1hbCIsImFsd2F5cyJdfV0sInNuYXAtdHlwZSI6W3tzbmFwOlsibm9uZSIsIngiLCJ5IiwiYm90aCJdfV0sInNuYXAtc3RyaWN0bmVzcyI6W3tzbmFwOlsibWFuZGF0b3J5IiwicHJveGltaXR5Il19XSx0b3VjaDpbe3RvdWNoOlsiYXV0byIsIm5vbmUiLCJtYW5pcHVsYXRpb24iXX1dLCJ0b3VjaC14IjpbeyJ0b3VjaC1wYW4iOlsieCIsImxlZnQiLCJyaWdodCJdfV0sInRvdWNoLXkiOlt7InRvdWNoLXBhbiI6WyJ5IiwidXAiLCJkb3duIl19XSwidG91Y2gtcHoiOlsidG91Y2gtcGluY2gtem9vbSJdLHNlbGVjdDpbe3NlbGVjdDpbIm5vbmUiLCJ0ZXh0IiwiYWxsIiwiYXV0byJdfV0sIndpbGwtY2hhbmdlIjpbeyJ3aWxsLWNoYW5nZSI6WyJhdXRvIiwic2Nyb2xsIiwiY29udGVudHMiLCJ0cmFuc2Zvcm0iLEssUV19XSxmaWxsOlt7ZmlsbDpbIm5vbmUiLC4uLkIoKV19XSwic3Ryb2tlLXciOlt7c3Ryb2tlOltkdCxKbixiYSxxcl19XSxzdHJva2U6W3tzdHJva2U6WyJub25lIiwuLi5CKCldfV0sImZvcmNlZC1jb2xvci1hZGp1c3QiOlt7ImZvcmNlZC1jb2xvci1hZGp1c3QiOlsiYXV0byIsIm5vbmUiXX1dfSxjb25mbGljdGluZ0NsYXNzR3JvdXBzOntvdmVyZmxvdzpbIm92ZXJmbG93LXgiLCJvdmVyZmxvdy15Il0sb3ZlcnNjcm9sbDpbIm92ZXJzY3JvbGwteCIsIm92ZXJzY3JvbGwteSJdLGluc2V0OlsiaW5zZXQteCIsImluc2V0LXkiLCJzdGFydCIsImVuZCIsInRvcCIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCJdLCJpbnNldC14IjpbInJpZ2h0IiwibGVmdCJdLCJpbnNldC15IjpbInRvcCIsImJvdHRvbSJdLGZsZXg6WyJiYXNpcyIsImdyb3ciLCJzaHJpbmsiXSxnYXA6WyJnYXAteCIsImdhcC15Il0scDpbInB4IiwicHkiLCJwcyIsInBlIiwicHQiLCJwciIsInBiIiwicGwiXSxweDpbInByIiwicGwiXSxweTpbInB0IiwicGIiXSxtOlsibXgiLCJteSIsIm1zIiwibWUiLCJtdCIsIm1yIiwibWIiLCJtbCJdLG14OlsibXIiLCJtbCJdLG15OlsibXQiLCJtYiJdLHNpemU6WyJ3IiwiaCJdLCJmb250LXNpemUiOlsibGVhZGluZyJdLCJmdm4tbm9ybWFsIjpbImZ2bi1vcmRpbmFsIiwiZnZuLXNsYXNoZWQtemVybyIsImZ2bi1maWd1cmUiLCJmdm4tc3BhY2luZyIsImZ2bi1mcmFjdGlvbiJdLCJmdm4tb3JkaW5hbCI6WyJmdm4tbm9ybWFsIl0sImZ2bi1zbGFzaGVkLXplcm8iOlsiZnZuLW5vcm1hbCJdLCJmdm4tZmlndXJlIjpbImZ2bi1ub3JtYWwiXSwiZnZuLXNwYWNpbmciOlsiZnZuLW5vcm1hbCJdLCJmdm4tZnJhY3Rpb24iOlsiZnZuLW5vcm1hbCJdLCJsaW5lLWNsYW1wIjpbImRpc3BsYXkiLCJvdmVyZmxvdyJdLHJvdW5kZWQ6WyJyb3VuZGVkLXMiLCJyb3VuZGVkLWUiLCJyb3VuZGVkLXQiLCJyb3VuZGVkLXIiLCJyb3VuZGVkLWIiLCJyb3VuZGVkLWwiLCJyb3VuZGVkLXNzIiwicm91bmRlZC1zZSIsInJvdW5kZWQtZWUiLCJyb3VuZGVkLWVzIiwicm91bmRlZC10bCIsInJvdW5kZWQtdHIiLCJyb3VuZGVkLWJyIiwicm91bmRlZC1ibCJdLCJyb3VuZGVkLXMiOlsicm91bmRlZC1zcyIsInJvdW5kZWQtZXMiXSwicm91bmRlZC1lIjpbInJvdW5kZWQtc2UiLCJyb3VuZGVkLWVlIl0sInJvdW5kZWQtdCI6WyJyb3VuZGVkLXRsIiwicm91bmRlZC10ciJdLCJyb3VuZGVkLXIiOlsicm91bmRlZC10ciIsInJvdW5kZWQtYnIiXSwicm91bmRlZC1iIjpbInJvdW5kZWQtYnIiLCJyb3VuZGVkLWJsIl0sInJvdW5kZWQtbCI6WyJyb3VuZGVkLXRsIiwicm91bmRlZC1ibCJdLCJib3JkZXItc3BhY2luZyI6WyJib3JkZXItc3BhY2luZy14IiwiYm9yZGVyLXNwYWNpbmcteSJdLCJib3JkZXItdyI6WyJib3JkZXItdy14IiwiYm9yZGVyLXcteSIsImJvcmRlci13LXMiLCJib3JkZXItdy1lIiwiYm9yZGVyLXctdCIsImJvcmRlci13LXIiLCJib3JkZXItdy1iIiwiYm9yZGVyLXctbCJdLCJib3JkZXItdy14IjpbImJvcmRlci13LXIiLCJib3JkZXItdy1sIl0sImJvcmRlci13LXkiOlsiYm9yZGVyLXctdCIsImJvcmRlci13LWIiXSwiYm9yZGVyLWNvbG9yIjpbImJvcmRlci1jb2xvci14IiwiYm9yZGVyLWNvbG9yLXkiLCJib3JkZXItY29sb3ItcyIsImJvcmRlci1jb2xvci1lIiwiYm9yZGVyLWNvbG9yLXQiLCJib3JkZXItY29sb3ItciIsImJvcmRlci1jb2xvci1iIiwiYm9yZGVyLWNvbG9yLWwiXSwiYm9yZGVyLWNvbG9yLXgiOlsiYm9yZGVyLWNvbG9yLXIiLCJib3JkZXItY29sb3ItbCJdLCJib3JkZXItY29sb3IteSI6WyJib3JkZXItY29sb3ItdCIsImJvcmRlci1jb2xvci1iIl0sdHJhbnNsYXRlOlsidHJhbnNsYXRlLXgiLCJ0cmFuc2xhdGUteSIsInRyYW5zbGF0ZS1ub25lIl0sInRyYW5zbGF0ZS1ub25lIjpbInRyYW5zbGF0ZSIsInRyYW5zbGF0ZS14IiwidHJhbnNsYXRlLXkiLCJ0cmFuc2xhdGUteiJdLCJzY3JvbGwtbSI6WyJzY3JvbGwtbXgiLCJzY3JvbGwtbXkiLCJzY3JvbGwtbXMiLCJzY3JvbGwtbWUiLCJzY3JvbGwtbXQiLCJzY3JvbGwtbXIiLCJzY3JvbGwtbWIiLCJzY3JvbGwtbWwiXSwic2Nyb2xsLW14IjpbInNjcm9sbC1tciIsInNjcm9sbC1tbCJdLCJzY3JvbGwtbXkiOlsic2Nyb2xsLW10Iiwic2Nyb2xsLW1iIl0sInNjcm9sbC1wIjpbInNjcm9sbC1weCIsInNjcm9sbC1weSIsInNjcm9sbC1wcyIsInNjcm9sbC1wZSIsInNjcm9sbC1wdCIsInNjcm9sbC1wciIsInNjcm9sbC1wYiIsInNjcm9sbC1wbCJdLCJzY3JvbGwtcHgiOlsic2Nyb2xsLXByIiwic2Nyb2xsLXBsIl0sInNjcm9sbC1weSI6WyJzY3JvbGwtcHQiLCJzY3JvbGwtcGIiXSx0b3VjaDpbInRvdWNoLXgiLCJ0b3VjaC15IiwidG91Y2gtcHoiXSwidG91Y2gteCI6WyJ0b3VjaCJdLCJ0b3VjaC15IjpbInRvdWNoIl0sInRvdWNoLXB6IjpbInRvdWNoIl19LGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczp7ImZvbnQtc2l6ZSI6WyJsZWFkaW5nIl19LG9yZGVyU2Vuc2l0aXZlTW9kaWZpZXJzOlsiKiIsIioqIiwiYWZ0ZXIiLCJiYWNrZHJvcCIsImJlZm9yZSIsImRldGFpbHMtY29udGVudCIsImZpbGUiLCJmaXJzdC1sZXR0ZXIiLCJmaXJzdC1saW5lIiwibWFya2VyIiwicGxhY2Vob2xkZXIiLCJzZWxlY3Rpb24iXX19KTtjbGFzcyBlZ3tjbiguLi5pKXtyZXR1cm4gdGcod20oaSkpfWNyZWF0ZVJlYWR5U291cmNlKCl7bGV0IGk9ITEsYz1bXTtyZXR1cm57Z2V0IHJlYWR5KCl7cmV0dXJuIGl9LG1hcmtSZWFkeTooKT0+e2l8fChpPSEwLGMuZm9yRWFjaCgoe3Jlc29sdmU6c30pPT5zKCkpLGM9W10pfSx3YWl0UmVhZHk6YXN5bmMoKT0+aT8hMDpuZXcgUHJvbWlzZSgoZCxtKT0+e2MucHVzaCh7cmVzb2x2ZTpkLHJlamVjdDptfSl9KSxvblJlYWR5KHMpe3RoaXMud2FpdFJlYWR5KCkudGhlbihzKX0sY2xlYXI6KCk9PntpPSExLGMuZm9yRWFjaCgoe3JlamVjdDpzfSk9PnMoKSksYz1bXX0sY2xlYXJXaXRob3V0UHJvbWlzZTooKT0+e2k9ITF9fX1vbkRPTVJlYWR5KGkpe2RvY3VtZW50LnJlYWR5U3RhdGU9PT0ibG9hZGluZyI/ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsaSk6aSgpfX1jb25zdCBBZT1uZXcgZWc7Y2xhc3MgbGd7cmVhZHlTb3VyY2U9QWUuY3JlYXRlUmVhZHlTb3VyY2UoKTtpZnJhbWVFbGVtZW50PW51bGw7Y3VycmVudEVuZHBvaW50PW51bGw7bWVzc2FnZVF1ZXVlPVtdO2luaXRlZD0hMTtzZW5kTWVzc2FnZShpKXtpZihpLnRvIT09dGhpcy5jdXJyZW50RW5kcG9pbnQpe2lmKGkudG89PT0iY29udGVudCIpe2lmKCF0aGlzLmlmcmFtZUVsZW1lbnQ/LmNvbnRlbnRXaW5kb3cpcmV0dXJuO3RoaXMuaWZyYW1lRWxlbWVudC5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKHRoaXMucGFja01lc3NhZ2UoaSksIioiKX1pLnRvPT09ImNvbnRhaW5lciImJndpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UodGhpcy5wYWNrTWVzc2FnZShpKSwiKiIpfX1saXN0ZW5NZXNzYWdlKGkpe2NvbnN0IGM9cz0+e3RoaXMuc2VuZE1lc3NhZ2Uoe3R5cGU6ImdldE1lc3NhZ2UiLHRvOiJjb250YWluZXIiLHBheWxvYWQ6e21lc3NhZ2VUeXBlOmkudHlwZX19KSxpLmNhbGxiYWNrKHMpfTtyZXR1cm4gdGhpcy5tZXNzYWdlUXVldWUucHVzaCh7dHlwZTppLnR5cGUsY2FsbGJhY2s6Y30pLCgpPT57dGhpcy5tZXNzYWdlUXVldWU9dGhpcy5tZXNzYWdlUXVldWUuZmlsdGVyKHM9PnMuY2FsbGJhY2shPT1jKX19dXBkYXRlSWZyYW1lRWxlbWVudChpKXt0aGlzLmlmcmFtZUVsZW1lbnQ9aX1pbml0KGkpe3RoaXMuaW5pdGVkfHwodGhpcy5pbml0ZWQ9ITAsdGhpcy5jdXJyZW50RW5kcG9pbnQ9aS5jdXJyZW50RW5kcG9pbnQsd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGM9Pntjb25zdCBzPWMuZGF0YTtzLnR5cGU9PT0iU3BhY2VQcmV2aWV3ZXJDaGFubmVsIiYmdGhpcy5tZXNzYWdlUXVldWUuZm9yRWFjaChkPT57ZC50eXBlPT09cy5wYXlsb2FkLnR5cGUmJnMucGF5bG9hZC50bz09PXRoaXMuY3VycmVudEVuZHBvaW50JiZkLmNhbGxiYWNrKHMucGF5bG9hZC5wYXlsb2FkKX0pfSkpfXBhY2tNZXNzYWdlKGkpe3JldHVybnt0eXBlOiJTcGFjZVByZXZpZXdlckNoYW5uZWwiLHBheWxvYWQ6ey4uLmksZnJvbTp0aGlzLmN1cnJlbnRFbmRwb2ludH19fX1jb25zdCBQdD1uZXcgbGc7ZnVuY3Rpb24gYWcoKXtjb25zdCByPSgpPT57Y29uc3QgaT13aW5kb3cubG9jYXRpb24uaHJlZjtQdC5zZW5kTWVzc2FnZSh7dHlwZToicmVwb3J0Tm90Zm91bmQiLHRvOiJjb250YWluZXIiLHBheWxvYWQ6e3VybDppfX0pfTtyZXR1cm4gaC5qc3hzKCJidXR0b24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Ob3RGb3VuZEJ1dHRvbi9Ob3RGb3VuZEJ1dHRvbi50c3g6MTYiLGlkOiJub3QtZm91bmQtZml4LWJ1dHRvbiIsb25DbGljazpyLHN0eWxlOntkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLHdpZHRoOiIxMDAlIixnYXA6IjhweCIsYmFja2dyb3VuZDoiIzFhMWExOSIsY29sb3I6IiNmZmYiLGZvbnRXZWlnaHQ6IjUwMCIsZm9udFNpemU6IjE0cHgiLGhlaWdodDoiMzZweCIsYm9yZGVyUmFkaXVzOiIxMHB4IixwYWRkaW5nOiIxMHB4IDEycHgifSxjaGlsZHJlbjpbaC5qc3hzKCJzdmciLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Ob3RGb3VuZEJ1dHRvbi9Ob3RGb3VuZEJ1dHRvbi50c3g6MzQiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6IjI0IixoZWlnaHQ6IjI0Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2xhc3NOYW1lOiJ3LTQgaC00IixjaGlsZHJlbjpbaC5qc3goInBhdGgiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Ob3RGb3VuZEJ1dHRvbi9Ob3RGb3VuZEJ1dHRvbi50c3g6NDYiLGQ6Ik0xMiAydjQifSksaC5qc3goInBhdGgiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Ob3RGb3VuZEJ1dHRvbi9Ob3RGb3VuZEJ1dHRvbi50c3g6NDciLGQ6Im0xNi4yIDcuOCAyLjktMi45In0pLGguanN4KCJwYXRoIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvTm90Rm91bmRCdXR0b24vTm90Rm91bmRCdXR0b24udHN4OjQ4IixkOiJNMTggMTJoNCJ9KSxoLmpzeCgicGF0aCIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL05vdEZvdW5kQnV0dG9uL05vdEZvdW5kQnV0dG9uLnRzeDo0OSIsZDoibTE2LjIgMTYuMiAyLjkgMi45In0pLGguanN4KCJwYXRoIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvTm90Rm91bmRCdXR0b24vTm90Rm91bmRCdXR0b24udHN4OjUwIixkOiJNMTIgMTh2NCJ9KSxoLmpzeCgicGF0aCIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL05vdEZvdW5kQnV0dG9uL05vdEZvdW5kQnV0dG9uLnRzeDo1MSIsZDoibTQuOSAxOS4xIDIuOS0yLjkifSksaC5qc3goInBhdGgiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Ob3RGb3VuZEJ1dHRvbi9Ob3RGb3VuZEJ1dHRvbi50c3g6NTIiLGQ6Ik0yIDEyaDQifSksaC5qc3goInBhdGgiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Ob3RGb3VuZEJ1dHRvbi9Ob3RGb3VuZEJ1dHRvbi50c3g6NTMiLGQ6Im00LjkgNC45IDIuOSAyLjkifSldfSksIkZpeCBVUkwiXX0pfWNsYXNzIG5ne2luaXRpYWxIcmVmPSExO2xhc3RIcmVmPSIiO29yaWdpbmFsUHVzaFN0YXRlO29yaWdpbmFsUmVwbGFjZVN0YXRlO2luaXQoKXt0aGlzLmluaXRpYWxIcmVmfHwodGhpcy5pbml0aWFsSHJlZj0hMCx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLCgpPT57dGhpcy5ub3RpZnlDb250YWluZXIoKX0pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIiwoKT0+e3RoaXMubm90aWZ5Q29udGFpbmVyKCl9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIiwoKT0+e1B0LnNlbmRNZXNzYWdlKHt0eXBlOiJvblVubG9hZCIsdG86ImNvbnRhaW5lciIscGF5bG9hZDp7dXJsOndpbmRvdy5sb2NhdGlvbi5ocmVmfX0pfSksdGhpcy5vcmlnaW5hbFB1c2hTdGF0ZT13aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUuYmluZCh3aW5kb3cuaGlzdG9yeSksdGhpcy5vcmlnaW5hbFJlcGxhY2VTdGF0ZT13aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUuYmluZCh3aW5kb3cuaGlzdG9yeSksd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlPSguLi5pKT0+e3RoaXMub3JpZ2luYWxQdXNoU3RhdGUoLi4uaSksdGhpcy5ub3RpZnlDb250YWluZXIoKX0sd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlPSguLi5pKT0+e3RoaXMub3JpZ2luYWxSZXBsYWNlU3RhdGUoLi4uaSksdGhpcy5ub3RpZnlDb250YWluZXIoKX0sUHQubGlzdGVuTWVzc2FnZSh7dHlwZToicmVmcmVzaCIsY2FsbGJhY2s6aT0+e2NvbnN0e3BhdGg6Y309aTtjP3dpbmRvdy5sb2NhdGlvbi5ocmVmPWM6d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpfX0pLHRoaXMuY2hlY2tDb250ZW50Um91dGVzSW5pdGVkKCkudGhlbigoKT0+e3RoaXMubm90aWZ5Q29udGFpbmVyKCl9KSl9Y2hlY2tDb250ZW50Um91dGVzSW5pdGVkKGk9NWUzKXtyZXR1cm4gbmV3IFByb21pc2UoYz0+e2NvbnN0IHM9RGF0ZS5ub3coKSxkPXNldEludGVydmFsKCgpPT57d2luZG93Ll9fV09VVEVSX1JPVVRFU19fPyhjbGVhckludGVydmFsKGQpLGMoITApKTpEYXRlLm5vdygpLXM+PWkmJihjbGVhckludGVydmFsKGQpLGMoITEpKX0sMjApfSl9bm90aWZ5Q29udGFpbmVyKCl7Y29uc3QgaT13aW5kb3cubG9jYXRpb24uaHJlZjtpZih0aGlzLmxhc3RIcmVmPT09aSlyZXR1cm47dGhpcy5sYXN0SHJlZj1pO2NvbnN0IGM9d2luZG93Ll9fV09VVEVSX1JPVVRFU19ffHxbXSxzPUFycmF5LmlzQXJyYXkoYyk/YzpbXTtQdC5zZW5kTWVzc2FnZSh7dHlwZToidXJsQ2hhbmdlIix0bzoiY29udGFpbmVyIixwYXlsb2FkOntocmVmOmksYWxsU3VwcG9ydGVkVXJsczpzfX0pLFB0LnJlYWR5U291cmNlLndhaXRSZWFkeSgpLnRoZW4oKCk9Pnt0aGlzLmNoZWNrSXNOb3Rmb3VuZEJ1dHRvbkdyb3VwKCl9KX1jaGVja0lzTm90Zm91bmRCdXR0b25Hcm91cCgpe2NvbnN0IGk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vdC1mb3VuZC1idXR0b24tZ3JvdXAiKTtpZihpKXtjb25zdCBjPSJub3QtZm91bmQtYnV0dG9uLWNvbnRhaW5lciI7aWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYykpcmV0dXJuO2NvbnN0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cy5pZD1jLGkuYXBwZW5kQ2hpbGQocyksT3IuY3JlYXRlUm9vdChzKS5yZW5kZXIoVS5jcmVhdGVFbGVtZW50KGFnKSl9fX1jb25zdCBTdT1uZXcgbmc7ZnVuY3Rpb24gb2coKXtjb25zdCByPXdpbmRvdy5fX01BTlVTX0hPU1RfREVWX18/PyExLGk9d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lPT09ImxvY2FsaG9zdCJ8fHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZT09PSIxMjcuMC4wLjEiLFtjLHNdPVUudXNlU3RhdGUoITEpLFtkLG1dPVUudXNlU3RhdGUoITEpO3JldHVybiBVLnVzZUVmZmVjdCgoKT0+e1B0LnJlYWR5U291cmNlLndhaXRSZWFkeSgpLnRoZW4oKCk9PntzKCExKX0pLFN1LmNoZWNrQ29udGVudFJvdXRlc0luaXRlZCgpLnRoZW4oKCk9PntzZXRUaW1lb3V0KCgpPT57UHQucmVhZHlTb3VyY2UucmVhZHl8fHMoITApfSwxMjAwKX0pfSxbXSksIXJ8fCFjfHxpfHxkP251bGw6aC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9BbGVydC9QcmV2aWV3ZXJNb2RlQWxlcnQudHN4OjQ5IixjbGFzc05hbWU6ImZpeGVkIGJvdHRvbS0wIGxlZnQtMCByaWdodC0wIHotWzk5OTk5OV0gdy1mdWxsIHB5LTIgcHgtMiBwci00IGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGJnLVsjZmRmNGUwXSIsY2hpbGRyZW46W2guanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvQWxlcnQvUHJldmlld2VyTW9kZUFsZXJ0LnRzeDo1MCIsY2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiBwb2ludGVyLWV2ZW50cy1ub25lIGZsZXgtMSIsY2hpbGRyZW46W2guanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvQWxlcnQvUHJldmlld2VyTW9kZUFsZXJ0LnRzeDo1MSIsY2xhc3NOYW1lOiJweC0yIHB5LTEgYmctW3JnYmEoMjM5LDE2MiwxLDAuMTIpXSByb3VuZGVkLWZ1bGwgaXRlbXMtY2VudGVyIGdhcC0yIGhpZGRlbiBtZDpmbGV4IixjaGlsZHJlbjpbaC5qc3goImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0FsZXJ0L1ByZXZpZXdlck1vZGVBbGVydC50c3g6NTIiLGNsYXNzTmFtZToidy1bMThweF0gaC1bMThweF0gdGV4dC1bdmFyKC0taWNvbi1wcmltYXJ5LCMzNDMyMkQpXSIsY2hpbGRyZW46aC5qc3goeG0seyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0FsZXJ0L1ByZXZpZXdlck1vZGVBbGVydC50c3g6NTMiLHNpemU6MTh9KX0pLGguanN4KCJzcGFuIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvQWxlcnQvUHJldmlld2VyTW9kZUFsZXJ0LnRzeDo1NSIsY2xhc3NOYW1lOiJ0ZXh0LXNtIGZvbnQtbWVkaXVtIGxlYWRpbmctNSB0ZXh0LVt2YXIoLS10ZXh0LXByaW1hcnksIzM0MzIyRCldIixjaGlsZHJlbjoiUHJldmlldyBtb2RlIn0pXX0pLGguanN4KCJzcGFuIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvQWxlcnQvUHJldmlld2VyTW9kZUFsZXJ0LnRzeDo1OSIsY2xhc3NOYW1lOiJ0ZXh0LXNtIGZvbnQtbm9ybWFsIGxlYWRpbmctNSB0ZXh0LVt2YXIoLS10ZXh0LXByaW1hcnksIzM0MzIyRCldIixjaGlsZHJlbjoiVGhpcyBwYWdlIGlzIG5vdCBsaXZlIGFuZCBjYW5ub3QgYmUgc2hhcmVkIGRpcmVjdGx5LiBQbGVhc2UgcHVibGlzaCB0byBnZXQgYSBwdWJsaWMgbGluay4ifSldfSksaC5qc3goImJ1dHRvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0FsZXJ0L1ByZXZpZXdlck1vZGVBbGVydC50c3g6NjQiLGNsYXNzTmFtZToidy00IGgtNCBmbGV4LXNocmluay0wIGN1cnNvci1wb2ludGVyIixvbkNsaWNrOigpPT57bSghMCl9LGNoaWxkcmVuOmguanN4KCJzdmciLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9BbGVydC9QcmV2aWV3ZXJNb2RlQWxlcnQudHN4OjcwIix3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIsZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjpoLmpzeCgicGF0aCIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0FsZXJ0L1ByZXZpZXdlck1vZGVBbGVydC50c3g6NzciLGQ6Ik0xMiA0TDQgMTJNNCA0TDEyIDEyIixzdHJva2U6InZhcigtLWljb24tdGVydGlhcnksICM4NTg0ODEpIixzdHJva2VXaWR0aDoiMS41IixzdHJva2VMaW5lY2FwOiJyb3VuZCJ9KX0pfSldfSl9Y2xhc3MgQ3V7ZW1pdHRlcjtldmVudDtoYW5kbGVyO2Rlc3Ryb3llZD0hMTtsaXN0ZW5CeTtjb25zdHJ1Y3RvcihpLGMscyxkKXt0aGlzLmV2ZW50PWksdGhpcy5oYW5kbGVyPWMsdGhpcy5lbWl0dGVyPXMsdGhpcy5saXN0ZW5CeT1kfXVucmVnaXN0ZXIoKXt0aGlzLmVtaXR0ZXIub2ZmKHRoaXMuZXZlbnQsdGhpcyksdGhpcy5fZGVzdHJveSgpfV9kZXN0cm95KCl7cmV0dXJuIHRoaXMuZGVzdHJveWVkPyExOih0aGlzLmhhbmRsZXI9bnVsbCx0aGlzLmVtaXR0ZXI9bnVsbCx0aGlzLmRlc3Ryb3llZD0hMCwhMCl9fWNsYXNzIGlne19ldmVudHM9e307b24oaSxjKXtpZighYyl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIGhhbmRsZXIhIC0tRXZlbnRFbWl0dGVyIik7dGhpcy5fZXZlbnRzW2ldfHwodGhpcy5fZXZlbnRzW2ldPVtdKTtjb25zdCBzPW5ldyBDdShpLGMsdGhpcyxudWxsKTtyZXR1cm4gdGhpcy5fZXZlbnRzW2ldPy5wdXNoKHMpLHN9bGlzdGVuQnkoaSxjLHMpe2lmKCFzKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgaGFuZGxlciEgLS1FdmVudEVtaXR0ZXIiKTt0aGlzLl9ldmVudHNbY118fCh0aGlzLl9ldmVudHNbY109W10pO2NvbnN0IGQ9bmV3IEN1KGMscyx0aGlzLGkpO3JldHVybiB0aGlzLl9ldmVudHNbY10/LnB1c2goZCksZH1vbmNlKGksYyl7Y29uc3Qgcz10aGlzLm9uKGksZD0+e2MoZCkscy51bnJlZ2lzdGVyKCl9KTtyZXR1cm4gc31lbWl0KGksYz1udWxsKXtpZighdGhpcy5fZXZlbnRzW2ldKXJldHVybiExO2Zvcihjb25zdCBzIG9mIHRoaXMuX2V2ZW50c1tpXSlzLmRlc3Ryb3llZHx8cy5oYW5kbGVyLmNhbGwodGhpcyxjKTtyZXR1cm4hMH1vZmYoaSxjKXtpZighdGhpcy5fZXZlbnRzW2ldKXJldHVybiExO2lmKGMpe2ZvcihsZXQgcz10aGlzLl9ldmVudHNbaV0sZD0wO2Q8cy5sZW5ndGg7ZCsrKXtjb25zdCBtPXNbZF07aWYobT09PWMpcmV0dXJuIHRoaXMuX2V2ZW50c1tpXT10aGlzLl9ldmVudHNbaV0/LmZpbHRlcih4PT54IT09bSksdGhpcy5fZXZlbnRzW2ldPy5sZW5ndGg9PT0wJiZkZWxldGUgdGhpcy5fZXZlbnRzW2ldLCEwfXJldHVybiBjb25zb2xlLmVycm9yKGMsdGhpcyksY29uc29sZS5lcnJvcihgQ2Fubm90IGZpbmQgbGlzdGVuZXIgb2YgJHtpfSAtLUV2ZW50RW1pdHRlcmApLCExfWZvcihsZXQgcz10aGlzLl9ldmVudHNbaV0sZD0wO2Q8cy5sZW5ndGg7ZCsrKXtjb25zdCBtPXNbZF07dGhpcy5fZXZlbnRzW2ldW2RdPW51bGwsbT8uX2Rlc3Ryb3koKX1yZXR1cm4gZGVsZXRlIHRoaXMuX2V2ZW50c1tpXSwhMH1zdG9wTGlzdGVuQnkoaSl7Zm9yKGNvbnN0IGMgaW4gdGhpcy5fZXZlbnRzKXRoaXMuX2V2ZW50c1tjXT10aGlzLl9ldmVudHNbY10/LmZpbHRlcihzPT5zLmxpc3RlbkJ5PT09aT8ocy5fZGVzdHJveSgpLCExKTohMCl9cmVtb3ZlQWxsTGlzdGVuZXJzKCl7Zm9yKGNvbnN0IGkgaW4gdGhpcy5fZXZlbnRzKXtjb25zdCBjPXRoaXMuX2V2ZW50c1tpXTtpZihjKXtmb3IobGV0IHM9YyxkPTA7ZDxzLmxlbmd0aDtkKyspY1tkXT1udWxsO3RoaXMuX2V2ZW50c1tpXT1udWxsfX19fWNvbnN0IHJnPSJ1c2VhbmRvbS0yNlQxOTgzNDBQWDc1cHhKQUNLVkVSWU1JTkRCVVNIV09MRl9HUVpiZmdoamtscXZ3eXpyaWN0IjtsZXQgc2c9cj0+Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheShyKSksY2c9KHIsaSxjKT0+e2xldCBzPSgyPDxNYXRoLmxvZzIoci5sZW5ndGgtMSkpLTEsZD0tfigxLjYqcyppL3IubGVuZ3RoKTtyZXR1cm4obT1pKT0+e2xldCB4PSIiO2Zvcig7Oyl7bGV0IFI9YyhkKSxDPWR8MDtmb3IoO0MtLTspaWYoeCs9cltSW0NdJnNdfHwiIix4Lmxlbmd0aD49bSlyZXR1cm4geH19fSx1Zz0ocixpPTIxKT0+Y2cocixpfDAsc2cpO2Z1bmN0aW9uIEV1KCl7Y29uc3Qgcj1yZy5yZXBsYWNlKC9bLV9dL2csIiIpO3JldHVybiB1ZyhyLDIyKSgpfWNsYXNzIGRne3JlYWR5U291cmNlPUFlLmNyZWF0ZVJlYWR5U291cmNlKCk7ZXZlbnRFbWl0dGVyPW5ldyBpZztpbml0KCl7Y29uc3QgaT1jb25zb2xlLmVycm9yO2NvbnNvbGUuZXJyb3I9KC4uLmMpPT57Y29uc3Qgcz10aGlzLnBhcnNlQ29uc29sZUVycm9yKC4uLmMpLGQ9dGhpcy5jaGVja1Nob3VsZElnbm9yZUVycm9yKHMpO2lmKHMmJiFkKXtjb25zdCBSPW5ldyBFcnJvcigpLnN0YWNrPy5zcGxpdChgCmApPy5zbGljZSgyKS5qb2luKGAKYCk7cy5jYWxsU3RhY2s9cy5jYWxsU3RhY2t8fFIsdGhpcy5yZWFkeVNvdXJjZS53YWl0UmVhZHkoKS50aGVuKCgpPT57dGhpcy5ldmVudEVtaXR0ZXIuZW1pdCgiY2F1Z2h0RXJyb3IiLHMpfSl9aSguLi5jKX0sd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixjPT57Y29uc3Qgcz10aGlzLnBhcnNlV2luZG93RXJyb3IoYyksZD10aGlzLmNoZWNrU2hvdWxkSWdub3JlRXJyb3Iocyk7cyYmIWQmJnRoaXMucmVhZHlTb3VyY2Uud2FpdFJlYWR5KCkudGhlbigoKT0+e3RoaXMuZXZlbnRFbWl0dGVyLmVtaXQoImNhdWdodEVycm9yIixzKX0pfSl9Zm9ybWF0Q29uc29sZUFyZ3MoLi4uaSl7Y29uc3QgYz17bWVzc2FnZToiIixjYWxsU3RhY2s6IiJ9O2lmKGkubGVuZ3RoPT09MClyZXR1cm4gYztjb25zdCBzPWlbMF07aWYodHlwZW9mIHM9PSJzdHJpbmciKXtsZXQgZD0xO2NvbnN0IG09LyVbc2RqJV0vZztmb3IoYy5tZXNzYWdlPXMucmVwbGFjZShtLHg9PntpZih4PT09IiUlIilyZXR1cm4iJSI7aWYoZD49aS5sZW5ndGgpcmV0dXJuIHg7Y29uc3QgUj1pW2QrK107c3dpdGNoKHgpe2Nhc2UiJXMiOnJldHVybiBTdHJpbmcoUik7Y2FzZSIlZCI6cmV0dXJuIFN0cmluZyhOdW1iZXIoUikpO2Nhc2UiJWoiOnRyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoUil9Y2F0Y2h7cmV0dXJuIltDaXJjdWxhcl0ifWRlZmF1bHQ6cmV0dXJuIHh9fSk7ZDxpLmxlbmd0aDtkKyspe2NvbnN0IHg9aVtkXTt4IGluc3RhbmNlb2YgRXJyb3I/KGMuY2FsbFN0YWNrPWMuY2FsbFN0YWNrfHx4LnN0YWNrfHwiIixjLm1lc3NhZ2UrPSIgIit4Lm1lc3NhZ2UpOmMubWVzc2FnZSs9IiAiK1N0cmluZyh4KX19ZWxzZSBmb3IoY29uc3QgZCBvZiBpKWQgaW5zdGFuY2VvZiBFcnJvcj8oYy5jYWxsU3RhY2s9Yy5jYWxsU3RhY2t8fGQuc3RhY2t8fCIiLGMubWVzc2FnZSs9KGMubWVzc2FnZT8iICI6IiIpK2QubWVzc2FnZSk6Yy5tZXNzYWdlKz0oYy5tZXNzYWdlPyIgIjoiIikrU3RyaW5nKGQpO3JldHVybiBjfXBhcnNlQ29uc29sZUVycm9yKC4uLmkpe2NvbnN0e21lc3NhZ2U6YyxjYWxsU3RhY2s6c309dGhpcy5mb3JtYXRDb25zb2xlQXJncyguLi5pKTtyZXR1cm57aWQ6RXUoKSxmcm9tOiJjb25zb2xlIixtZXNzYWdlOmMudHJpbSgpfHwiVW5rbm93biBlcnJvciIsY2FsbFN0YWNrOnMsdGltZTpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksdGltZVpvbmU6SW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lfX1wYXJzZVdpbmRvd0Vycm9yKGkpe3JldHVybntpZDpFdSgpLGZyb206IndpbmRvdyIsbWVzc2FnZTppLm1lc3NhZ2V8fCJVbmtub3duIGVycm9yIixjYWxsU3RhY2s6aS5lcnJvcj8uc3RhY2t8fGBhdCAke2kuZmlsZW5hbWV9OiR7aS5saW5lbm99OiR7aS5jb2xub31gLHRpbWU6bmV3IERhdGUoKS50b0lTT1N0cmluZygpLHRpbWVab25lOkludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZX19Y2hlY2tTaG91bGRJZ25vcmVFcnJvcihpKXtyZXR1cm4hISghaXx8aS5tZXNzYWdlLmluY2x1ZGVzKCJUaGlzIHdpbGwgY2F1c2UgYSBoeWRyYXRpb24gZXJyb3IuIil8fGkubWVzc2FnZS5pbmNsdWRlcygidmFsaWRhdGVET01OZXN0aW5nIikpfX1mdW5jdGlvbiBvdChyKXtjb25zdCBpPVUudXNlUmVmKHIpO2kuY3VycmVudD1yO2NvbnN0IGM9VS51c2VSZWYobnVsbCk7cmV0dXJuIGMuY3VycmVudHx8KGMuY3VycmVudD1mdW5jdGlvbiguLi5zKXtyZXR1cm4gaS5jdXJyZW50LmFwcGx5KHRoaXMscyl9KSxjLmN1cnJlbnR9ZnVuY3Rpb24gVHUocil7cmV0dXJuIHIuc3BsaXQoYApgKS5maWx0ZXIoYz0+Yy50cmltKCkpLm1hcChjPT57Y29uc3Qgcz1jLm1hdGNoKC9hdFxzKyg/OiguKz8pXHMrXCgpPyguKz8pOihcZCspOihcZCspXCk/JC8pO2lmKHMpe2NvbnN0WyxkLG0seCxSXT1zO3JldHVybntyYXc6YyxmdW5jdGlvbk5hbWU6ZD8udHJpbSgpLGZpbGVOYW1lOm0/LnRyaW0oKSxsaW5lTnVtYmVyOnBhcnNlSW50KHgsMTApLGNvbHVtbk51bWJlcjpwYXJzZUludChSLDEwKX19cmV0dXJue3JhdzpjfX0pfWZ1bmN0aW9uIGZnKHIpe2NvbnN0IGk9ci5zcGxpdChgCmApLGM9aVswXXx8cixzPVtdO2ZvcihsZXQgZD0xO2Q8aS5sZW5ndGg7ZCsrKXtjb25zdCBtPWlbZF0udHJpbSgpO2lmKG0uc3RhcnRzV2l0aCgiYXQgIikpcy5wdXNoKG0pO2Vsc2UgaWYocy5sZW5ndGg+MClicmVha31yZXR1cm4gcy5sZW5ndGg+MD97bWFpbk1lc3NhZ2U6YyxzdGFja0ZyYW1lczpUdShzLmpvaW4oYApgKSl9OnttYWluTWVzc2FnZTpyLHN0YWNrRnJhbWVzOltdfX1mdW5jdGlvbiBoZyhyKXtpZighcilyZXR1cm4iIjt0cnl7cmV0dXJuIG5ldyBVUkwocikucGF0aG5hbWUuc3BsaXQoIi8iKS5wb3AoKXx8cn1jYXRjaHtyZXR1cm4gci5zcGxpdCgiLyIpLnBvcCgpfHxyfX1mdW5jdGlvbiBtZyh7ZnJhbWVzOnJ9KXtyZXR1cm4gaC5qc3goImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0Vycm9yQ2F0Y2hlci9TdGFja1ZpZXcudHN4OjEwIixjbGFzc05hbWU6InB4LTQgcHQtMCBwYi0zIHNwYWNlLXktMS41IHRleHQtc20iLGNoaWxkcmVuOnIubWFwKChpLGMpPT5oLmpzeCgiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRXJyb3JDYXRjaGVyL1N0YWNrVmlldy50c3g6MTIiLGNsYXNzTmFtZToiZm9udC1tb25vIixjaGlsZHJlbjppLmZpbGVOYW1lfHxpLmZ1bmN0aW9uTmFtZT9oLmpzeHMoaC5GcmFnbWVudCx7Y2hpbGRyZW46W2guanN4KCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9FcnJvckNhdGNoZXIvU3RhY2tWaWV3LnRzeDoxNSIsY2xhc3NOYW1lOiJ0ZXh0LWdyYXktODAwIixjaGlsZHJlbjppLmZ1bmN0aW9uTmFtZXx8Iihhbm9ueW1vdXMpIn0pLGkuZmlsZU5hbWUmJmguanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRXJyb3JDYXRjaGVyL1N0YWNrVmlldy50c3g6MTkiLGNsYXNzTmFtZToidGV4dC1ncmF5LTYwMCIsY2hpbGRyZW46WyJAIiwiICIsaC5qc3hzKCJhIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRXJyb3JDYXRjaGVyL1N0YWNrVmlldy50c3g6MjEiLGhyZWY6aS5maWxlTmFtZSx0YXJnZXQ6Il9ibGFuayIscmVsOiJub29wZW5lciBub3JlZmVycmVyIixjbGFzc05hbWU6InRleHQtYmx1ZS02MDAgaG92ZXI6dW5kZXJsaW5lIixjaGlsZHJlbjpbaGcoaS5maWxlTmFtZSksaS5saW5lTnVtYmVyJiZoLmpzeHMoaC5GcmFnbWVudCx7Y2hpbGRyZW46WyI6IixpLmxpbmVOdW1iZXIsaS5jb2x1bW5OdW1iZXImJmA6JHtpLmNvbHVtbk51bWJlcn1gXX0pXX0pXX0pXX0pOmguanN4KCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9FcnJvckNhdGNoZXIvU3RhY2tWaWV3LnRzeDozOSIsY2xhc3NOYW1lOiJ0ZXh0LWdyYXktNjAwIixjaGlsZHJlbjppLnJhd30pfSxjKSl9KX1mdW5jdGlvbiBnZygpe2NvbnN0W3IsaV09VS51c2VTdGF0ZSghMSksW2Msc109VS51c2VTdGF0ZShbXSksW2QsbV09VS51c2VTdGF0ZSgwKSxbeCxSXT1VLnVzZVN0YXRlKCExKSxbQyx2XT1VLnVzZVN0YXRlKCJtZXNzYWdlIiksRD1jW2RdfHxjWzBdLGo9VS51c2VNZW1vKCgpPT5EPy5tZXNzYWdlP2ZnKEQubWVzc2FnZSk6e21haW5NZXNzYWdlOiIiLHN0YWNrRnJhbWVzOltdfSxbRD8ubWVzc2FnZV0pLEo9VS51c2VNZW1vKCgpPT57Y29uc3QgXz1bLi4uai5zdGFja0ZyYW1lc107aWYoRD8uY2FsbFN0YWNrKXtjb25zdCBZPVR1KEQuY2FsbFN0YWNrKTtZLmxlbmd0aD4wJiZfLmxlbmd0aCE9PVkubGVuZ3RoP18ucHVzaCguLi5ZKTpfLmxlbmd0aD09PTAmJl8ucHVzaCguLi5ZKX1yZXR1cm4gX30sW2ouc3RhY2tGcmFtZXMsRD8uY2FsbFN0YWNrXSksYXQ9b3QoKCk9PntzKFtdKSxtKDApLFIoITEpfSksJD1vdCgoKT0+e1IoITApfSksbnQ9b3QoKCk9PntSKCExKSx2KCJtZXNzYWdlIil9KSxjdD1vdCgoKT0+e20oXz0+Xz09PWMubGVuZ3RoLTE/MDpfKzEpfSksaHQ9b3QoKCk9PnttKF89Pl89PT0wP2MubGVuZ3RoLTE6Xy0xKX0pLFN0PW90KF89PntQdC5zZW5kTWVzc2FnZSh7cGF5bG9hZDp7ZXJyb3JJdGVtczpfP1tfXTpjLHVybDp3aW5kb3cubG9jYXRpb24uaHJlZix1c2VySW5mbzpsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgibWFudXMtcnVudGltZS11c2VyLWluZm8iKXx8dm9pZCAwfSx0bzoiY29udGFpbmVyIix0eXBlOiJyZXBvcnRFcnJvciJ9KSxhdCgpfSk7cmV0dXJuIFUudXNlRWZmZWN0KCgpPT57Y29uc3QgXz1Zci5ldmVudEVtaXR0ZXIub24oImNhdWdodEVycm9yIixZPT57cyhIPT5bWSwuLi5IXSl9KTtyZXR1cm4gUHQucmVhZHlTb3VyY2Uud2FpdFJlYWR5KCkudGhlbigoKT0+e2koITApfSksWXIucmVhZHlTb3VyY2UubWFya1JlYWR5KCksKCk9PntfLnVucmVnaXN0ZXIoKX19LFtdKSwhRHx8IXI/bnVsbDp4P2guanN4KCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9FcnJvckNhdGNoZXIvRXJyb3JUb2FzdC50c3g6MTE4IixjbGFzc05hbWU6ImZpeGVkIGluc2V0LTAgei1bOTk5OTk5XSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ibGFjay81MCIsb25DbGljazpudCxjaGlsZHJlbjpoLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0Vycm9yQ2F0Y2hlci9FcnJvclRvYXN0LnRzeDoxMjIiLGNsYXNzTmFtZToiYmctd2hpdGUgcm91bmRlZC14bCBtYXgtdy1bNjAwcHhdIHctWzkwJV0gbWF4LWgtWzgwdmhdIGZsZXggZmxleC1jb2wgc2hhZG93LVswXzRweF8yNHB4X3JnYmEoMCwwLDAsMC4xNSldIixvbkNsaWNrOl89Pl8uc3RvcFByb3BhZ2F0aW9uKCksY2hpbGRyZW46W2guanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRXJyb3JDYXRjaGVyL0Vycm9yVG9hc3QudHN4OjEyNyIsY2xhc3NOYW1lOiJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiBwLTYgcGItNCBzaHJpbmstMCIsY2hpbGRyZW46W2guanN4KCJoMyIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0Vycm9yQ2F0Y2hlci9FcnJvclRvYXN0LnRzeDoxMjgiLGNsYXNzTmFtZToibS0wIHRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LWJsYWNrIixjaGlsZHJlbjpELmZyb209PT0iY29uc29sZSI/IkNvbnNvbGUgRXJyb3IiOiJVbmNhdWdodCBFcnJvciJ9KSxoLmpzeCgiYnV0dG9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRXJyb3JDYXRjaGVyL0Vycm9yVG9hc3QudHN4OjEzMyIsb25DbGljazpudCxjbGFzc05hbWU6ImJnLXRyYW5zcGFyZW50IGJvcmRlci1ub25lIHRleHQtMnhsIGN1cnNvci1wb2ludGVyIHAtMCB0ZXh0LWdyYXktNDAwIGxlYWRpbmctbm9uZSBob3Zlcjp0ZXh0LWdyYXktNjAwIixjaGlsZHJlbjoiw5cifSldfSksaC5qc3goImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0Vycm9yQ2F0Y2hlci9FcnJvclRvYXN0LnRzeDoxNDIiLGNsYXNzTmFtZToib3ZlcmZsb3cteS1hdXRvIGZsZXgtMSBtaW4taC0wIixjaGlsZHJlbjpoLmpzeCgiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRXJyb3JDYXRjaGVyL0Vycm9yVG9hc3QudHN4OjE0MyIsY2xhc3NOYW1lOiJweC00IHB5LTAiLGNoaWxkcmVuOmguanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRXJyb3JDYXRjaGVyL0Vycm9yVG9hc3QudHN4OjE0NSIsY2xhc3NOYW1lOiJyb3VuZGVkLWxnIG92ZXJmbG93LWhpZGRlbiBiZy1yZWQtNTAiLGNoaWxkcmVuOltoLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0Vycm9yQ2F0Y2hlci9FcnJvclRvYXN0LnRzeDoxNDciLGNsYXNzTmFtZToiZmxleCBpdGVtcy1zdGFydCBnYXAtMiBweC00IHB5LTMgY3Vyc29yLXBvaW50ZXIgaG92ZXI6YmctcmVkLTEwMCB0cmFuc2l0aW9uLWNvbG9ycyIsb25DbGljazooKT0+dihDPT09Im1lc3NhZ2UiPyJzdGFjayI6Im1lc3NhZ2UiKSxjaGlsZHJlbjpbaC5qc3goInNwYW4iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9FcnJvckNhdGNoZXIvRXJyb3JUb2FzdC50c3g6MTUzIixjbGFzc05hbWU6InRleHQtcmVkLTYwMCB0ZXh0LXNtIHNocmluay0wIG10LTAuNSIsY2hpbGRyZW46Qz09PSJtZXNzYWdlIj8i4pa8Ijoi4pa2In0pLGguanN4KCJwIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRXJyb3JDYXRjaGVyL0Vycm9yVG9hc3QudHN4OjE1NiIsY2xhc3NOYW1lOiJ0ZXh0LXJlZC04MDAgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWQgZm9udC1tZWRpdW0gYnJlYWstd29yZHMgd2hpdGVzcGFjZS1wcmUtd3JhcCBtLTAgZmxleC0xIixjaGlsZHJlbjpqLm1haW5NZXNzYWdlfSldfSksQz09PSJzdGFjayImJkoubGVuZ3RoPjAmJmguanN4KG1nLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9FcnJvckNhdGNoZXIvRXJyb3JUb2FzdC50c3g6MTYzIixmcmFtZXM6Sn0pXX0pfSl9KSxoLmpzeCgiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRXJyb3JDYXRjaGVyL0Vycm9yVG9hc3QudHN4OjE3MCIsY2xhc3NOYW1lOkFlLmNuKCJmbGV4IGZsZXgtY29sIHhzOmZsZXgtcm93IGl0ZW1zLXN0cmV0Y2ggeHM6aXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMyBwLTQgeHM6cC02IHhzOnB0LTQgc2hyaW5rLTAiKSxjaGlsZHJlbjpjLmxlbmd0aD4xP2guanN4cyhoLkZyYWdtZW50LHtjaGlsZHJlbjpbaC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9FcnJvckNhdGNoZXIvRXJyb3JUb2FzdC50c3g6MTc3IixjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIixjaGlsZHJlbjpbaC5qc3goImJ1dHRvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0Vycm9yQ2F0Y2hlci9FcnJvclRvYXN0LnRzeDoxNzgiLG9uQ2xpY2s6aHQsY2xhc3NOYW1lOiJiZy1ncmF5LTEwMCBib3JkZXItbm9uZSByb3VuZGVkLWxnIHctOCBoLTggZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgdGV4dC1ncmF5LTYwMCB0ZXh0LWxnIGhvdmVyOmJnLWdyYXktMjAwIixjaGlsZHJlbjoi4oC5In0pLGguanN4KCJidXR0b24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9FcnJvckNhdGNoZXIvRXJyb3JUb2FzdC50c3g6MTg0IixvbkNsaWNrOmN0LGNsYXNzTmFtZToiYmctZ3JheS0xMDAgYm9yZGVyLW5vbmUgcm91bmRlZC1sZyB3LTggaC04IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGN1cnNvci1wb2ludGVyIHRleHQtZ3JheS02MDAgdGV4dC1sZyBob3ZlcjpiZy1ncmF5LTIwMCIsY2hpbGRyZW46IuKAuiJ9KSxoLmpzeHMoInNwYW4iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9FcnJvckNhdGNoZXIvRXJyb3JUb2FzdC50c3g6MTkwIixjbGFzc05hbWU6InRleHQtc20gdGV4dC1ncmF5LTYwMCB3aGl0ZXNwYWNlLW5vd3JhcCIsY2hpbGRyZW46W2QrMSwiIG9mICIsYy5sZW5ndGgsIiBlcnJvcnMiXX0pXX0pLGguanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRXJyb3JDYXRjaGVyL0Vycm9yVG9hc3QudHN4OjE5NCIsY2xhc3NOYW1lOiJmbGV4IGdhcC0yIixjaGlsZHJlbjpbaC5qc3goImJ1dHRvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0Vycm9yQ2F0Y2hlci9FcnJvclRvYXN0LnRzeDoxOTUiLG9uQ2xpY2s6KCk9PntTdChEKX0sY2xhc3NOYW1lOiJiZy13aGl0ZSB0ZXh0LWdyYXktNzAwIHJvdW5kZWQtbGcgcHgtNCB4czpweC01IHB5LTIgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBjdXJzb3ItcG9pbnRlciB0ZXh0LXNtIGZvbnQtbWVkaXVtIGhvdmVyOmJnLWdyYXktNTAgZmxleC0xIHhzOmZsZXgtbm9uZSIsY2hpbGRyZW46IkZpeCBpdCJ9KSxoLmpzeCgiYnV0dG9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRXJyb3JDYXRjaGVyL0Vycm9yVG9hc3QudHN4OjIwMyIsb25DbGljazooKT0+e1N0KCl9LGNsYXNzTmFtZToiYmctYmxhY2sgdGV4dC13aGl0ZSByb3VuZGVkLWxnIHB4LTQgeHM6cHgtNSBweS0yIGJvcmRlci1ub25lIGN1cnNvci1wb2ludGVyIHRleHQtc20gZm9udC1tZWRpdW0gaG92ZXI6YmctZ3JheS04MDAgZmxleC0xIHhzOmZsZXgtbm9uZSIsY2hpbGRyZW46IkZpeCBBbGwifSldfSldfSk6aC5qc3hzKGguRnJhZ21lbnQse2NoaWxkcmVuOltoLmpzeCgiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRXJyb3JDYXRjaGVyL0Vycm9yVG9hc3QudHN4OjIxNSIsY2xhc3NOYW1lOiJoaWRkZW4geHM6YmxvY2sifSksaC5qc3goImJ1dHRvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0Vycm9yQ2F0Y2hlci9FcnJvclRvYXN0LnRzeDoyMTYiLG9uQ2xpY2s6KCk9PntTdChEKX0sY2xhc3NOYW1lOiJiZy1ibGFjayB0ZXh0LXdoaXRlIHJvdW5kZWQtbGcgcHgtNCB4czpweC01IHB5LTIgYm9yZGVyLW5vbmUgY3Vyc29yLXBvaW50ZXIgdGV4dC1zbSBmb250LW1lZGl1bSBob3ZlcjpiZy1ncmF5LTgwMCB3LWZ1bGwgeHM6dy1hdXRvIixjaGlsZHJlbjoiRml4IGl0In0pXX0pfSldfSl9KTpoLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0Vycm9yQ2F0Y2hlci9FcnJvclRvYXN0LnRzeDoyMzQiLGNsYXNzTmFtZToiZml4ZWQgYm90dG9tLTggbGVmdC04IHotWzk5OTk5OV0gYmctcmVkLTUwMCB0ZXh0LXdoaXRlIHJvdW5kZWQtM3hsIHB4LTUgcHktMyBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBzaGFkb3ctWzBfNHB4XzEycHhfcmdiYSgwLDAsMCwwLjE1KV0gY3Vyc29yLXBvaW50ZXIgdGV4dC1iYXNlIGZvbnQtbWVkaXVtIixvbkNsaWNrOiQsY2hpbGRyZW46W2guanN4KCJzcGFuIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRXJyb3JDYXRjaGVyL0Vycm9yVG9hc3QudHN4OjIzOCIsY2xhc3NOYW1lOiJ0ZXh0LXhsIGZvbnQtYm9sZCIsY2hpbGRyZW46IuKTmCJ9KSxoLmpzeHMoInNwYW4iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9FcnJvckNhdGNoZXIvRXJyb3JUb2FzdC50c3g6MjM5IixjaGlsZHJlbjpbYy5sZW5ndGgsIiBlcnJvciIsYy5sZW5ndGg+MT8icyI6IiJdfSksaC5qc3goImJ1dHRvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0Vycm9yQ2F0Y2hlci9FcnJvclRvYXN0LnRzeDoyNDIiLG9uQ2xpY2s6Xz0+e18uc3RvcFByb3BhZ2F0aW9uKCksYXQoKX0sY2xhc3NOYW1lOiJiZy10cmFuc3BhcmVudCBib3JkZXItbm9uZSB0ZXh0LXdoaXRlIHRleHQteGwgY3Vyc29yLXBvaW50ZXIgcC0wIGxlYWRpbmctbm9uZSBob3ZlcjpvcGFjaXR5LTgwIixjaGlsZHJlbjoiw5cifSldfSl9Y29uc3QgWXI9bmV3IGRnO2Z1bmN0aW9uIHBnKCl7cmV0dXJuIGguanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL0NvbnRlbnRSb290LnRzeDo4IixpZDpqci5jb250ZW50Um9vdCxjbGFzc05hbWU6InotWzk5OTk5OV0gcmVsYXRpdmUiLHJlZjpyPT57ciYmZWkuc2V0RGlhbG9nUm9vdChyKX0sY2hpbGRyZW46W2guanN4KG9nLHsiZGF0YS1sb2MiOiJzcmMvQ29udGVudFJvb3QudHN4OjE3In0pLGguanN4KGdnLHsiZGF0YS1sb2MiOiJzcmMvQ29udGVudFJvb3QudHN4OjE4In0pXX0pfWNsYXNzIHlne2luaXQoKXtQdC5saXN0ZW5NZXNzYWdlKHt0eXBlOiJzZXRDb29raWUiLGNhbGxiYWNrOmk9Pntkb2N1bWVudC5jb29raWU9aS5jb29raWV9fSl9fWNvbnN0IHZnPW5ldyB5ZyxiZz0yMTQ3NDgzNjQ2LER1PSJkYXRhLW1hbnVzLXNlbGVjdG9yLWNhbnZhcyIsYWw9ImRhdGEtbWFudXMtc2VsZWN0b3ItaW5wdXQiLE11PTIuNSx4Zz1bOCw0XSx3Zz0iIzAwODFmMiIsU2c9InJnYmEoMCwgMCwgMCwgMCkiLEF1PSJyZ2JhKDAsIDEyMiwgMjU1LCAwLjA4KSIsQ2c9MjtmdW5jdGlvbiBSdSgpe3JldHVybiBNYXRoLm1pbih3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb3x8MSxDZyl9ZnVuY3Rpb24gbmkocixpKXtjb25zdCBjPXIubWF0Y2goL14oWzAtOS5dKykvKTtpZighY3x8IWNbMV0pcmV0dXJuIDA7Y29uc3Qgcz1OdW1iZXIucGFyc2VGbG9hdChjWzFdKSxkPU1hdGgubWluKGkud2lkdGgsaS5oZWlnaHQpLzI7cmV0dXJuIHIuaW5jbHVkZXMoIiUiKT9NYXRoLm1pbihzLzEwMCpNYXRoLm1pbihpLndpZHRoLGkuaGVpZ2h0KSxkKTovcmVtfGVtLy50ZXN0KHIpP01hdGgubWluKHMqMTYsZCk6TWF0aC5taW4ocyxkKX1jbGFzcyBFZ3tob3ZlclRhcmdldD1udWxsO2FjdGl2ZVRhcmdldD1udWxsO2NhbnZhcz1udWxsO2NvbnRleHQ9bnVsbDtob3N0PW51bGw7Y3VycmVudERwcj0xO2ZyYW1lUmVxdWVzdGVkPSExO3Jlc2l6ZVNjaGVkdWxlZD0hMTtleGNsdXNpb25SZWN0cz1uZXcgTWFwO2hhbmRsZVJlc2l6ZT0oKT0+e3RoaXMucmVzaXplU2NoZWR1bGVkfHwodGhpcy5yZXNpemVTY2hlZHVsZWQ9ITAsc2V0VGltZW91dCgoKT0+e3RoaXMucmVzaXplU2NoZWR1bGVkPSExLCEoIXRoaXMuY2FudmFzfHwhdGhpcy5jb250ZXh0KSYmKHRoaXMudXBkYXRlQ2FudmFzRGltZW5zaW9ucygpLHRoaXMuc2NoZWR1bGVSZW5kZXIoKSl9KSl9O2hhbmRsZVNjcm9sbD0oKT0+e3RoaXMuc2NoZWR1bGVSZW5kZXIoKX07bW91bnQoKXtpZih0aGlzLmNhbnZhcylyZXR1cm47Y29uc3QgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtpLnNldEF0dHJpYnV0ZShEdSwidHJ1ZSIpO2NvbnN0IGM9aS5hdHRhY2hTaGFkb3coe21vZGU6Im9wZW4ifSk7Yy5pbm5lckhUTUw9YDxjYW52YXMgc3R5bGU9InBvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDt6LWluZGV4OiR7Ymd9O3BvaW50ZXItZXZlbnRzOm5vbmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2NhbnZhcz5gO2NvbnN0IHM9Yy5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTtpZighcylyZXR1cm47Y29uc3QgZD1zLmdldENvbnRleHQoIjJkIik7ZCYmKHRoaXMuaG9zdD1pLHRoaXMuY2FudmFzPXMsdGhpcy5jb250ZXh0PWQsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGkpLHRoaXMudXBkYXRlQ2FudmFzRGltZW5zaW9ucygpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMuaGFuZGxlUmVzaXplLHtwYXNzaXZlOiEwfSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5oYW5kbGVTY3JvbGwse3Bhc3NpdmU6ITB9KSx0aGlzLnNjaGVkdWxlUmVuZGVyKCkpfXVubW91bnQoKXt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLmhhbmRsZVJlc2l6ZSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5oYW5kbGVTY3JvbGwpLHRoaXMuY2xlYXIoKSx0aGlzLmhvc3QmJnRoaXMuaG9zdC5yZW1vdmUoKSx0aGlzLmNhbnZhcz1udWxsLHRoaXMuY29udGV4dD1udWxsLHRoaXMuaG9zdD1udWxsfXNldEhvdmVyVGFyZ2V0KGkpe3RoaXMuaG92ZXJUYXJnZXQhPT1pJiYodGhpcy5ob3ZlclRhcmdldD1pLHRoaXMuc2NoZWR1bGVSZW5kZXIoKSl9c2V0QWN0aXZlVGFyZ2V0KGkpe3RoaXMuYWN0aXZlVGFyZ2V0IT09aSYmKHRoaXMuYWN0aXZlVGFyZ2V0PWksdGhpcy5zY2hlZHVsZVJlbmRlcigpKX1hZGRFeGNsdXNpb25SZWN0KGksYyl7dGhpcy5leGNsdXNpb25SZWN0cy5zZXQoaSxjKSx0aGlzLnNjaGVkdWxlUmVuZGVyKCl9cmVtb3ZlRXhjbHVzaW9uUmVjdChpKXt0aGlzLmV4Y2x1c2lvblJlY3RzLmRlbGV0ZShpKSx0aGlzLnNjaGVkdWxlUmVuZGVyKCl9Y2xlYXIoKXt0aGlzLmhvdmVyVGFyZ2V0PW51bGwsdGhpcy5hY3RpdmVUYXJnZXQ9bnVsbCx0aGlzLnNjaGVkdWxlUmVuZGVyKCl9c2NoZWR1bGVSZW5kZXIoKXshdGhpcy5jYW52YXN8fCF0aGlzLmNvbnRleHR8fHRoaXMuZnJhbWVSZXF1ZXN0ZWR8fCh0aGlzLmZyYW1lUmVxdWVzdGVkPSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMuZnJhbWVSZXF1ZXN0ZWQ9ITEsdGhpcy5yZW5kZXIoKX0pKX11cGRhdGVDYW52YXNEaW1lbnNpb25zKCl7aWYoIXRoaXMuY2FudmFzfHwhdGhpcy5jb250ZXh0KXJldHVybjtjb25zdCBpPVJ1KCkse2lubmVyV2lkdGg6Yyxpbm5lckhlaWdodDpzfT13aW5kb3c7dGhpcy5jYW52YXMuc3R5bGUud2lkdGg9YCR7Y31weGAsdGhpcy5jYW52YXMuc3R5bGUuaGVpZ2h0PWAke3N9cHhgLHRoaXMuY2FudmFzLndpZHRoPWMqaSx0aGlzLmNhbnZhcy5oZWlnaHQ9cyppLHR5cGVvZiB0aGlzLmNvbnRleHQucmVzZXRUcmFuc2Zvcm09PSJmdW5jdGlvbiI/dGhpcy5jb250ZXh0LnJlc2V0VHJhbnNmb3JtKCk6dGhpcy5jb250ZXh0LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCksdGhpcy5jb250ZXh0LnNjYWxlKGksaSksdGhpcy5jdXJyZW50RHByPWl9cmVuZGVyKCl7aWYoIXRoaXMuY2FudmFzfHwhdGhpcy5jb250ZXh0KXJldHVybjtjb25zdCBpPVJ1KCk7TWF0aC5hYnMoaS10aGlzLmN1cnJlbnREcHIpPi4wMSYmdGhpcy51cGRhdGVDYW52YXNEaW1lbnNpb25zKCk7Y29uc3QgYz10aGlzLmNvbnRleHQscz10aGlzLmNhbnZhcztjLmNsZWFyUmVjdCgwLDAscy53aWR0aCxzLmhlaWdodCksYy5zZXRMaW5lRGFzaChbXSk7Y29uc3QgZD10aGlzLmdldERyYXdhYmxlRWxlbWVudCh0aGlzLmFjdGl2ZVRhcmdldCksbT10aGlzLmdldERyYXdhYmxlRWxlbWVudCh0aGlzLmhvdmVyVGFyZ2V0KTtpZighKCFkJiYhbSkpe2lmKGMuc2F2ZSgpLHRoaXMuZXhjbHVzaW9uUmVjdHMuc2l6ZT4wKXtjLmJlZ2luUGF0aCgpLGMucmVjdCgwLDAscy53aWR0aCxzLmhlaWdodCk7Zm9yKGNvbnN0IHggb2YgdGhpcy5leGNsdXNpb25SZWN0cy52YWx1ZXMoKSljLnJlY3QoeC5sZWZ0LHgudG9wLHgud2lkdGgseC5oZWlnaHQpO2MuY2xpcCgiZXZlbm9kZCIpfWQmJk51KHMsYyxkLHtmaWxsQ29sb3I6U2d9KSxtJiZtIT09ZCYmTnUocyxjLG0se2xpbmVEYXNoOnhnfSksYy5yZXN0b3JlKCl9fWdldERyYXdhYmxlRWxlbWVudChpKXtpZighaSlyZXR1cm4gbnVsbDtjb25zdCBjPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIGMud2lkdGg8PTB8fGMuaGVpZ2h0PD0wP251bGw6aX19ZnVuY3Rpb24gTnUocixpLGMscz17bGluZVdpZHRoOk11LGZpbGxDb2xvcjpBdX0pe2NvbnN0IGQ9cy5yZWN0Pz9jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKGQud2lkdGg8PTB8fGQuaGVpZ2h0PD0wKXJldHVybjtzLmxpbmVEYXNoP2kuc2V0TGluZURhc2gocy5saW5lRGFzaCk6aS5zZXRMaW5lRGFzaChbXSk7Y29uc3QgbT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShjKSx7Ym9yZGVyVG9wTGVmdFJhZGl1czp4LGJvcmRlclRvcFJpZ2h0UmFkaXVzOlIsYm9yZGVyQm90dG9tTGVmdFJhZGl1czpDLGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOnZ9PW0sRD17dG9wOntsZWZ0Om5pKHgsZCkscmlnaHQ6bmkoUixkKX0sYm90dG9tOntsZWZ0Om5pKEMsZCkscmlnaHQ6bmkodixkKX19O2kubGluZVdpZHRoPXMubGluZVdpZHRoPz9NdSxpLnN0cm9rZVN0eWxlPXdnLGkubGluZUNhcD0icm91bmQiLGkubGluZUpvaW49InJvdW5kIixpLmJlZ2luUGF0aCgpLEQudG9wLmxlZnQ+MHx8RC50b3AucmlnaHQ+MHx8RC5ib3R0b20ucmlnaHQ+MHx8RC5ib3R0b20ubGVmdD4wPyhpLm1vdmVUbyhkLmxlZnQrRC50b3AubGVmdCxkLnRvcCksaS5saW5lVG8oZC5sZWZ0K2Qud2lkdGgtRC50b3AucmlnaHQsZC50b3ApLGkuYXJjVG8oZC5sZWZ0K2Qud2lkdGgsZC50b3AsZC5sZWZ0K2Qud2lkdGgsZC50b3ArRC50b3AucmlnaHQsRC50b3AucmlnaHQpLGkubGluZVRvKGQubGVmdCtkLndpZHRoLGQudG9wK2QuaGVpZ2h0LUQuYm90dG9tLnJpZ2h0KSxpLmFyY1RvKGQubGVmdCtkLndpZHRoLGQudG9wK2QuaGVpZ2h0LGQubGVmdCtkLndpZHRoLUQuYm90dG9tLnJpZ2h0LGQudG9wK2QuaGVpZ2h0LEQuYm90dG9tLnJpZ2h0KSxpLmxpbmVUbyhkLmxlZnQrRC5ib3R0b20ubGVmdCxkLnRvcCtkLmhlaWdodCksaS5hcmNUbyhkLmxlZnQsZC50b3ArZC5oZWlnaHQsZC5sZWZ0LGQudG9wK2QuaGVpZ2h0LUQuYm90dG9tLmxlZnQsRC5ib3R0b20ubGVmdCksaS5saW5lVG8oZC5sZWZ0LGQudG9wK0QudG9wLmxlZnQpLGkuYXJjVG8oZC5sZWZ0LGQudG9wLGQubGVmdCtELnRvcC5sZWZ0LGQudG9wLEQudG9wLmxlZnQpKTppLnJlY3QoZC5sZWZ0LGQudG9wLGQud2lkdGgsZC5oZWlnaHQpLGkuZmlsbFN0eWxlPXMuZmlsbENvbG9yPz9BdSxpLmZpbGwoKSxpLnNoYWRvd0NvbG9yPSJyZ2JhKDAsIDEyMiwgMjU1LCAwLjMpIixpLnNoYWRvd0JsdXI9NCxpLnNoYWRvd09mZnNldFg9MCxpLnNoYWRvd09mZnNldFk9MCxpLnN0cm9rZSgpLGkuc2hhZG93Q29sb3I9InRyYW5zcGFyZW50IixpLnNoYWRvd0JsdXI9MCxUZyhyLGksYyxkKX1mdW5jdGlvbiBUZyhyLGksYyxzKXtjb25zdCBkPWMudGFnTmFtZS50b0xvd2VyQ2FzZSgpLG09OCx4PTQsUj0xMCxDPTg7aS5mb250PWA2MDAgJHtSfXB4IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCBzYW5zLXNlcmlmYDtjb25zdCBEPWkubWVhc3VyZVRleHQoZCkud2lkdGgsaj17eDpzLmxlZnQseTowLHdpZHRoOkQrbSoyLGhlaWdodDpSK3gqMisyfTtqLnk9cy50b3Atai5oZWlnaHQtQyxqLnk8MCYmKGoueT1zLnRvcCtzLmhlaWdodCtDKSxqLnk+cy50b3ArZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQtQyYmKGoueT1DKSxqLng8Qz9qLng9QzpqLngrai53aWR0aD5yLndpZHRoLUMmJihqLng9ci53aWR0aC1qLndpZHRoLUMpLGkuc2V0TGluZURhc2goW10pLGkuZmlsbFN0eWxlPSIjMDA4MWYyIixpLmJlZ2luUGF0aCgpLGkucm91bmRSZWN0KGoueCxqLnksai53aWR0aCxqLmhlaWdodCw2KSxpLmZpbGwoKSxpLnNoYWRvd0NvbG9yPSJ0cmFuc3BhcmVudCIsaS5zaGFkb3dCbHVyPTAsaS5zaGFkb3dPZmZzZXRYPTAsaS5zaGFkb3dPZmZzZXRZPTAsaS5zdHJva2VTdHlsZT0icmdiYSgwLCA4MSwgMjEzLCAwLjMpIixpLmxpbmVXaWR0aD0xLGkuc3Ryb2tlKCksaS5zaGFkb3dDb2xvcj0icmdiYSgwLCAwLCAwLCAwLjI1KSIsaS5zaGFkb3dCbHVyPTIsaS5zaGFkb3dPZmZzZXRYPTAsaS5zaGFkb3dPZmZzZXRZPTEsaS5maWxsU3R5bGU9IiNmZmYiLGkudGV4dEFsaWduPSJjZW50ZXIiLGkudGV4dEJhc2VsaW5lPSJtaWRkbGUiLGkuZmlsbFRleHQoZCxqLngrai53aWR0aC8yLGoueStqLmhlaWdodC8yKSxpLnNoYWRvd0NvbG9yPSJ0cmFuc3BhcmVudCIsaS5zaGFkb3dCbHVyPTAsaS5zaGFkb3dPZmZzZXRYPTAsaS5zaGFkb3dPZmZzZXRZPTB9ZnVuY3Rpb24gRGcocj17fSl7Y29uc3R7b25LZXlEb3duOmksb25Db21wb3NpdGlvblN0YXJ0OmMsb25Db21wb3NpdGlvbkVuZDpzfT1yLGQ9VS51c2VSZWYoITEpLG09VS51c2VSZWYobnVsbCkseD1VLnVzZVJlZihudWxsKSxSPW90KGo9PnttLmN1cnJlbnQmJihjbGVhclRpbWVvdXQobS5jdXJyZW50KSxtLmN1cnJlbnQ9bnVsbCkseC5jdXJyZW50JiYoY2xlYXJUaW1lb3V0KHguY3VycmVudCkseC5jdXJyZW50PW51bGwpLGQuY3VycmVudD0hMCxjPy4oail9KSxDPW90KGo9PnttLmN1cnJlbnQ9c2V0VGltZW91dCgoKT0+e3guY3VycmVudD1zZXRUaW1lb3V0KCgpPT57ZC5jdXJyZW50PSExfSl9KSxzPy4oail9KSx2PW90KGo9PntpZihkLmN1cnJlbnQmJihqLmtleT09PSJFc2NhcGUifHxqLmtleT09PSJFbnRlciImJiFqLnNoaWZ0S2V5KSl7ai5zdG9wUHJvcGFnYXRpb24oKTtyZXR1cm59aT8uKGopfSksRD1vdCgoKT0+ZC5jdXJyZW50KTtyZXR1cm57b25Db21wb3NpdGlvblN0YXJ0OlIsb25Db21wb3NpdGlvbkVuZDpDLG9uS2V5RG93bjp2LGlzQ29tcG9zaW5nOkR9fWNvbnN0IE1nPW5ldyBTZXQoWyJyb2xlIiwibmFtZSIsImFyaWEtbGFiZWwiLCJyZWwiLCJocmVmIl0pO2Z1bmN0aW9uIEFnKHIsaSl7bGV0IGM9TWcuaGFzKHIpO2N8fD1yLnN0YXJ0c1dpdGgoImRhdGEtIikmJlduKHIpO2xldCBzPVduKGkpJiZpLmxlbmd0aDwxMDA7cmV0dXJuIHN8fD1pLnN0YXJ0c1dpdGgoIiMiKSYmV24oaS5zbGljZSgxKSksYyYmc31mdW5jdGlvbiBSZyhyKXtyZXR1cm4gV24ocil9ZnVuY3Rpb24gTmcocil7cmV0dXJuIFduKHIpfWZ1bmN0aW9uIHpnKHIpe3JldHVybiEwfWZ1bmN0aW9uIFZyKHIsaSl7aWYoci5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFKXRocm93IG5ldyBFcnJvcigiQ2FuJ3QgZ2VuZXJhdGUgQ1NTIHNlbGVjdG9yIGZvciBub24tZWxlbWVudCBub2RlIHR5cGUuIik7aWYoci50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaHRtbCIpcmV0dXJuImh0bWwiO2NvbnN0IGM9e3Jvb3Q6ZG9jdW1lbnQuYm9keSxpZE5hbWU6UmcsY2xhc3NOYW1lOk5nLHRhZ05hbWU6emcsYXR0cjpBZyx0aW1lb3V0TXM6MWUzLHNlZWRNaW5MZW5ndGg6MyxvcHRpbWl6ZWRNaW5MZW5ndGg6MixtYXhOdW1iZXJPZlBhdGhDaGVja3M6MS8wfSxzPW5ldyBEYXRlLGQ9ey4uLmMsLi4uaX0sbT1CZyhkLnJvb3QsYyk7bGV0IHgsUj0wO2Zvcihjb25zdCB2IG9mIF9nKHIsZCxtKSl7aWYobmV3IERhdGUoKS5nZXRUaW1lKCktcy5nZXRUaW1lKCk+ZC50aW1lb3V0TXN8fFI+PWQubWF4TnVtYmVyT2ZQYXRoQ2hlY2tzKXtjb25zdCBqPU9nKHIsbSk7aWYoIWopdGhyb3cgbmV3IEVycm9yKGBUaW1lb3V0OiBDYW4ndCBmaW5kIGEgdW5pcXVlIHNlbGVjdG9yIGFmdGVyICR7ZC50aW1lb3V0TXN9bXNgKTtyZXR1cm4gJG4oail9aWYoUisrLFFyKHYsbSkpe3g9djticmVha319aWYoIXgpdGhyb3cgbmV3IEVycm9yKCJTZWxlY3RvciB3YXMgbm90IGZvdW5kLiIpO2NvbnN0IEM9Wy4uLk91KHgscixkLG0scyldO3JldHVybiBDLnNvcnQoWHIpLEMubGVuZ3RoPjA/JG4oQ1swXSk6JG4oeCl9ZnVuY3Rpb24qX2cocixpLGMpe2NvbnN0IHM9W107bGV0IGQ9W10sbT1yLHg9MDtmb3IoO20mJm0hPT1jOyl7Y29uc3QgUj1rZyhtLGkpO2Zvcihjb25zdCBDIG9mIFIpQy5sZXZlbD14O2lmKHMucHVzaChSKSxtPW0ucGFyZW50RWxlbWVudCx4KyssZC5wdXNoKC4uLmt1KHMpKSx4Pj1pLnNlZWRNaW5MZW5ndGgpe2Quc29ydChYcik7Zm9yKGNvbnN0IEMgb2YgZCl5aWVsZCBDO2Q9W119fWQuc29ydChYcik7Zm9yKGNvbnN0IFIgb2YgZCl5aWVsZCBSfWZ1bmN0aW9uIFduKHIpe2lmKC9eW2EtelwtXXszLH0kL2kudGVzdChyKSl7Y29uc3QgaT1yLnNwbGl0KC8tfFtBLVpdLyk7Zm9yKGNvbnN0IGMgb2YgaSlpZihjLmxlbmd0aDw9Mnx8L1teYWVpb3VdezQsfS9pLnRlc3QoYykpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24ga2cocixpKXtjb25zdCBjPVtdLHM9ci5nZXRBdHRyaWJ1dGUoImlkIik7cyYmaS5pZE5hbWUocykmJmMucHVzaCh7bmFtZToiIyIrQ1NTLmVzY2FwZShzKSxwZW5hbHR5OjB9KTtmb3IobGV0IHg9MDt4PHIuY2xhc3NMaXN0Lmxlbmd0aDt4Kyspe2NvbnN0IFI9ci5jbGFzc0xpc3RbeF07aS5jbGFzc05hbWUoUikmJmMucHVzaCh7bmFtZToiLiIrQ1NTLmVzY2FwZShSKSxwZW5hbHR5OjF9KX1mb3IobGV0IHg9MDt4PHIuYXR0cmlidXRlcy5sZW5ndGg7eCsrKXtjb25zdCBSPXIuYXR0cmlidXRlc1t4XTtpLmF0dHIoUi5uYW1lLFIudmFsdWUpJiZjLnB1c2goe25hbWU6YFske0NTUy5lc2NhcGUoUi5uYW1lKX09IiR7Q1NTLmVzY2FwZShSLnZhbHVlKX0iXWAscGVuYWx0eToyfSl9Y29uc3QgZD1yLnRhZ05hbWUudG9Mb3dlckNhc2UoKTtpZihpLnRhZ05hbWUoZCkpe2MucHVzaCh7bmFtZTpkLHBlbmFsdHk6NX0pO2NvbnN0IHg9WnIocixkKTt4IT09dm9pZCAwJiZjLnB1c2goe25hbWU6X3UoZCx4KSxwZW5hbHR5OjEwfSl9Y29uc3QgbT1acihyKTtyZXR1cm4gbSE9PXZvaWQgMCYmYy5wdXNoKHtuYW1lOmpnKGQsbSkscGVuYWx0eTo1MH0pLGN9ZnVuY3Rpb24gJG4ocil7bGV0IGk9clswXSxjPWkubmFtZTtmb3IobGV0IHM9MTtzPHIubGVuZ3RoO3MrKyl7Y29uc3QgZD1yW3NdLmxldmVsfHwwO2kubGV2ZWw9PT1kLTE/Yz1gJHtyW3NdLm5hbWV9ID4gJHtjfWA6Yz1gJHtyW3NdLm5hbWV9ICR7Y31gLGk9cltzXX1yZXR1cm4gY31mdW5jdGlvbiB6dShyKXtyZXR1cm4gci5tYXAoaT0+aS5wZW5hbHR5KS5yZWR1Y2UoKGksYyk9PmkrYywwKX1mdW5jdGlvbiBYcihyLGkpe3JldHVybiB6dShyKS16dShpKX1mdW5jdGlvbiBacihyLGkpe2NvbnN0IGM9ci5wYXJlbnROb2RlO2lmKCFjKXJldHVybjtsZXQgcz1jLmZpcnN0Q2hpbGQ7aWYoIXMpcmV0dXJuO2xldCBkPTA7Zm9yKDtzJiYocy5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiYoaT09PXZvaWQgMHx8cy50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT1pKSYmZCsrLHMhPT1yKTspcz1zLm5leHRTaWJsaW5nO3JldHVybiBkfWZ1bmN0aW9uIE9nKHIsaSl7bGV0IGM9MCxzPXI7Y29uc3QgZD1bXTtmb3IoO3MmJnMhPT1pOyl7Y29uc3QgbT1zLnRhZ05hbWUudG9Mb3dlckNhc2UoKSx4PVpyKHMsbSk7aWYoeD09PXZvaWQgMClyZXR1cm47ZC5wdXNoKHtuYW1lOl91KG0seCkscGVuYWx0eTpOYU4sbGV2ZWw6Y30pLHM9cy5wYXJlbnRFbGVtZW50LGMrK31pZihRcihkLGkpKXJldHVybiBkfWZ1bmN0aW9uIGpnKHIsaSl7cmV0dXJuIHI9PT0iaHRtbCI/Imh0bWwiOmAke3J9Om50aC1jaGlsZCgke2l9KWB9ZnVuY3Rpb24gX3UocixpKXtyZXR1cm4gcj09PSJodG1sIj8iaHRtbCI6YCR7cn06bnRoLW9mLXR5cGUoJHtpfSlgfWZ1bmN0aW9uKmt1KHIsaT1bXSl7aWYoci5sZW5ndGg+MClmb3IobGV0IGMgb2YgclswXSl5aWVsZCprdShyLnNsaWNlKDEsci5sZW5ndGgpLGkuY29uY2F0KGMpKTtlbHNlIHlpZWxkIGl9ZnVuY3Rpb24gQmcocixpKXtyZXR1cm4gci5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfTk9ERT9yOnI9PT1pLnJvb3Q/ci5vd25lckRvY3VtZW50OnJ9ZnVuY3Rpb24gUXIocixpKXtjb25zdCBjPSRuKHIpO3N3aXRjaChpLnF1ZXJ5U2VsZWN0b3JBbGwoYykubGVuZ3RoKXtjYXNlIDA6dGhyb3cgbmV3IEVycm9yKGBDYW4ndCBzZWxlY3QgYW55IG5vZGUgd2l0aCB0aGlzIHNlbGVjdG9yOiAke2N9YCk7Y2FzZSAxOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uKk91KHIsaSxjLHMsZCl7aWYoci5sZW5ndGg+MiYmci5sZW5ndGg+Yy5vcHRpbWl6ZWRNaW5MZW5ndGgpZm9yKGxldCBtPTE7bTxyLmxlbmd0aC0xO20rKyl7aWYobmV3IERhdGUoKS5nZXRUaW1lKCktZC5nZXRUaW1lKCk+Yy50aW1lb3V0TXMpcmV0dXJuO2NvbnN0IFI9Wy4uLnJdO1Iuc3BsaWNlKG0sMSksUXIoUixzKSYmcy5xdWVyeVNlbGVjdG9yKCRuKFIpKT09PWkmJih5aWVsZCBSLHlpZWxkKk91KFIsaSxjLHMsZCkpfX1jb25zdCBMZz0iIzBjOGNlOSIsSGw9ImRhdGEtbWFudXMtZWxlbWVudC1pZCIsSGc9WyJhcHAiLCJyb290Il0sVWc9WyJQIiwiSDEiLCJIMiIsIkgzIiwiSDQiLCJINSIsIkg2IiwiQSIsIkxJIiwiVEQiLCJUSCIsIkVNIiwiU1BBTiIsIkxBQkVMIiwiU01BTEwiLCJTVFJPTkciLCJCVVRUT04iXTtmdW5jdGlvbiBLcihyKXtyZXR1cm4gciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50fHxyIGluc3RhbmNlb2YgU1ZHU1ZHRWxlbWVudH1mdW5jdGlvbiBHZyhyKXtpZighcilyZXR1cm4hMTtjb25zdCBpPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShyKTtyZXR1cm4gaS53aWR0aD09PTB8fGkuaGVpZ2h0PT09MHx8Yy5vcGFjaXR5PT09IjAifHxjLmRpc3BsYXk9PT0ibm9uZSJ8fGMudmlzaWJpbGl0eT09PSJoaWRkZW4ifHxyIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJnIub2Zmc2V0UGFyZW50PT09bnVsbH1mdW5jdGlvbiBxZyhyKXtpZighcilyZXR1cm4hMTtjb25zdCBpPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIGkudG9wPj0wJiZpLmxlZnQ+PTAmJmkuYm90dG9tPD13aW5kb3cuaW5uZXJIZWlnaHQmJmkucmlnaHQ8PXdpbmRvdy5pbm5lcldpZHRofWZ1bmN0aW9uIFlnKHIpe2lmKCFyKXJldHVybiEwO2NvbnN0IGk9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gaS5ib3R0b208MHx8aS50b3A+d2luZG93LmlubmVySGVpZ2h0fHxpLnJpZ2h0PDB8fGkubGVmdD53aW5kb3cuaW5uZXJXaWR0aH1mdW5jdGlvbiB4YShyKXtpZihyLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpcmV0dXJuITA7aWYoci5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZyIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpe2NvbnN0IGk9Z2V0Q29tcHV0ZWRTdHlsZShyKTtpZihyLmNoaWxkTm9kZXMubGVuZ3RoKXtmb3IoY29uc3QgYyBvZiBBcnJheS5mcm9tKHIuY2hpbGROb2RlcykpaWYoYy5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFJiZjLnRleHRDb250ZW50Py50cmltKCkpcmV0dXJuITB9cmV0dXJuIFVnLmluY2x1ZGVzKHIudGFnTmFtZSl8fFsiaW5saW5lIiwiaW5saW5lLWJsb2NrIl0uaW5jbHVkZXMoaS5kaXNwbGF5KX1yZXR1cm4hMX1mdW5jdGlvbiBWZygpe3JldHVyblsxZTcsLTFlMywtNGUzLC04ZTMsLTFlMTFdLmpvaW4oIiIpLnJlcGxhY2UoL1swMThdL2cscj0+KHBhcnNlSW50KHIpXmNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMSkpWzBdJjE1Pj5wYXJzZUludChyKS80KS50b1N0cmluZygxNikpfWZ1bmN0aW9uIFByKHIpe3JldHVybiByP3IuZ2V0QXR0cmlidXRlKEhsKT8/IiI6IiJ9ZnVuY3Rpb24gSnIocil7aWYoIXIpcmV0dXJuIiI7Y29uc3QgaT1QcihyKTtpZihpKXJldHVybiBpO2NvbnN0IGM9VmcoKTtyZXR1cm4gci5zZXRBdHRyaWJ1dGUoSGwsYyksY31mdW5jdGlvbiBYZyhyKXtjb25zdCBpPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFske0hsfT0iJHtyLmlkfSJdYCk7aWYoaSlyZXR1cm4gaTt0cnl7Y29uc3QgYz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHIuc2VsZWN0b3IpO2lmKGMpcmV0dXJuIGMuc2V0QXR0cmlidXRlKEhsLHIuaWQpLGN9Y2F0Y2goYyl7Y29uc29sZS53YXJuKCJJbnZhbGlkIHNlbGVjdG9yIGluIGdldEVsZW1lbnRCeUlkT3JTZWxlY3RvcjoiLHIuc2VsZWN0b3IsYyl9cmV0dXJuIG51bGx9ZnVuY3Rpb24ganUocixpKXtpZighKCFyfHwheGEocikpJiZyIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpaWYoaSl7aWYoci5pc0NvbnRlbnRFZGl0YWJsZSlyZXR1cm47ci5jb250ZW50RWRpdGFibGU9InBsYWludGV4dC1vbmx5IixyLnN0eWxlLnNldFByb3BlcnR5KCJjdXJzb3IiLCJ0ZXh0IiwiaW1wb3J0YW50Iiksci5zdHlsZS5zZXRQcm9wZXJ0eSgidGV4dC13cmFwIiwid3JhcCIsImltcG9ydGFudCIpLHIuc3R5bGUuc2V0UHJvcGVydHkoImNhcmV0LWNvbG9yIixMZywiaW1wb3J0YW50Iiksci5mb2N1cygpfWVsc2Ugci5yZW1vdmVBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpLHIuc3R5bGUucmVtb3ZlUHJvcGVydHkoImN1cnNvciIpLHIuc3R5bGUucmVtb3ZlUHJvcGVydHkoInRleHQtd3JhcCIpLHIuc3R5bGUucmVtb3ZlUHJvcGVydHkoImNhcmV0LWNvbG9yIiksci5ibHVyKCl9ZnVuY3Rpb24gZ2wocixpKXtjb25zdCBjPXJbaV07cmV0dXJuIGM/dHlwZW9mIGM9PSJvYmplY3QiJiYiYmFzZVZhbCJpbiBjP2MuYmFzZVZhbHx8IiI6dHlwZW9mIGM9PSJzdHJpbmciP2M6aT09PSJjbGFzc05hbWUiP3IuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIjpyLmdldEF0dHJpYnV0ZShpKXx8IiI6IiJ9ZnVuY3Rpb24gb2kocil7ciYmKHIuX3NyY09yaWdpbmFsPXIuX3NyY09yaWdpbmFsPz9nbChyLCJzcmMiKSxyLl9ocmVmT3JpZ2luYWw9ci5faHJlZk9yaWdpbmFsPz9nbChyLCJocmVmIiksci5faW5uZXJIVE1MT3JpZ2luYWw9ci5faW5uZXJIVE1MT3JpZ2luYWw/P3IuaW5uZXJIVE1MLHIuX3RleHRDb250ZW50T3JpZ2luYWw9ci5fdGV4dENvbnRlbnRPcmlnaW5hbD8/ci50ZXh0Q29udGVudD8/IiIsci5fY2xhc3NOYW1lT3JpZ2luYWw9ci5fY2xhc3NOYW1lT3JpZ2luYWw/P2dsKHIsImNsYXNzTmFtZSIpLHIuX21hbnVzSW1wb3J0YW50UHJvcGVydGllc3x8KHIuX21hbnVzSW1wb3J0YW50UHJvcGVydGllcz1uZXcgU2V0KSl9ZnVuY3Rpb24gV3Iocil7aWYocil7aWYoWyJJTUciLCJWSURFTyJdLmluY2x1ZGVzKHIudGFnTmFtZSkmJmdsKHIsInNyYyIpIT09ci5fc3JjT3JpZ2luYWwpe2NvbnN0IGk9ci5fc3JjT3JpZ2luYWw/PyIiO3IgaW5zdGFuY2VvZiBTVkdFbGVtZW50P3Iuc2V0QXR0cmlidXRlKCJzcmMiLGkpOnIuc3JjPWl9aWYoeGEocikmJnIudGV4dENvbnRlbnQhPT1yLl90ZXh0Q29udGVudE9yaWdpbmFsJiYoci5pbm5lckhUTUw9ci5faW5uZXJIVE1MT3JpZ2luYWx8fCIiKSwiaHJlZiJpbiByJiZnbChyLCJocmVmIikhPT1yLl9ocmVmT3JpZ2luYWwpe2NvbnN0IGk9ci5faHJlZk9yaWdpbmFsPz8iIjtyIGluc3RhbmNlb2YgU1ZHRWxlbWVudD9yLnNldEF0dHJpYnV0ZSgiaHJlZiIsaSk6ci5ocmVmPWl9aWYoZ2wociwiY2xhc3NOYW1lIikhPT1yLl9jbGFzc05hbWVPcmlnaW5hbCl7Y29uc3QgaT1yLl9jbGFzc05hbWVPcmlnaW5hbD8/IiI7ciBpbnN0YW5jZW9mIFNWR0VsZW1lbnQ/ci5zZXRBdHRyaWJ1dGUoImNsYXNzIixpKTpyIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJihyLmNsYXNzTmFtZT1pKX1pZihyLl9tYW51c0ltcG9ydGFudFByb3BlcnRpZXM/LnNpemUpe2Zvcihjb25zdCBpIG9mIHIuX21hbnVzSW1wb3J0YW50UHJvcGVydGllcylyLnN0eWxlLnJlbW92ZVByb3BlcnR5KGkpO3IuX21hbnVzSW1wb3J0YW50UHJvcGVydGllcy5jbGVhcigpfX19ZnVuY3Rpb24gWmcocil7Y29uc3QgaT1nZXRDb21wdXRlZFN0eWxlKHIpO3JldHVybntjb2xvcjppLmNvbG9yLGJhY2tncm91bmRDb2xvcjppLmJhY2tncm91bmRDb2xvcix3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodCxkaXNwbGF5OmkuZGlzcGxheSxvYmplY3RGaXQ6aS5vYmplY3RGaXQsZm9udFNpemU6aS5mb250U2l6ZSxmb250U3R5bGU6aS5mb250U3R5bGUsZm9udFdlaWdodDppLmZvbnRXZWlnaHQsZm9udEZhbWlseTppLmZvbnRGYW1pbHksdGV4dEFsaWduOmkudGV4dEFsaWduLHRleHREZWNvcmF0aW9uOmkudGV4dERlY29yYXRpb24sYm9yZGVyUmFkaXVzOmkuYm9yZGVyUmFkaXVzLGJvcmRlcldpZHRoOmkuYm9yZGVyV2lkdGgsYm9yZGVyU3R5bGU6aS5ib3JkZXJTdHlsZSxib3JkZXJDb2xvcjppLmJvcmRlckNvbG9yLG9wYWNpdHk6aS5vcGFjaXR5LG1hcmdpbkxlZnQ6aS5tYXJnaW5MZWZ0LG1hcmdpblJpZ2h0OmkubWFyZ2luUmlnaHQsbWFyZ2luVG9wOmkubWFyZ2luVG9wLG1hcmdpbkJvdHRvbTppLm1hcmdpbkJvdHRvbSxwYWRkaW5nTGVmdDppLnBhZGRpbmdMZWZ0LHBhZGRpbmdSaWdodDppLnBhZGRpbmdSaWdodCxwYWRkaW5nVG9wOmkucGFkZGluZ1RvcCxwYWRkaW5nQm90dG9tOmkucGFkZGluZ0JvdHRvbX19ZnVuY3Rpb24gUWcocixpLGMpe2lmKCFyKXJldHVybjtjb25zdCBzPWkuc3BsaXQoLyg/PVtBLVpdKS8pLmpvaW4oIi0iKS50b0xvd2VyQ2FzZSgpO2M/KHIuc3R5bGUuc2V0UHJvcGVydHkocyxjLCJpbXBvcnRhbnQiKSxpPT09ImhlaWdodCImJnIuc3R5bGUuc2V0UHJvcGVydHkoIm1pbi1oZWlnaHQiLCJhdXRvIiwiaW1wb3J0YW50Iiksci5fbWFudXNJbXBvcnRhbnRQcm9wZXJ0aWVzfHwoci5fbWFudXNJbXBvcnRhbnRQcm9wZXJ0aWVzPW5ldyBTZXQpLHIuX21hbnVzSW1wb3J0YW50UHJvcGVydGllcy5hZGQocyksaT09PSJoZWlnaHQiJiZyLl9tYW51c0ltcG9ydGFudFByb3BlcnRpZXMuYWRkKCJtaW4taGVpZ2h0IikpOihyLnN0eWxlLnJlbW92ZVByb3BlcnR5KHMpLHIuX21hbnVzSW1wb3J0YW50UHJvcGVydGllcz8uZGVsZXRlKHMpLGk9PT0iaGVpZ2h0IiYmKHIuc3R5bGUucmVtb3ZlUHJvcGVydHkoIm1pbi1oZWlnaHQiKSxyLl9tYW51c0ltcG9ydGFudFByb3BlcnRpZXM/LmRlbGV0ZSgibWluLWhlaWdodCIpKSl9ZnVuY3Rpb24gJHIocil7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJUYXJnZXQgZWxlbWVudCBpcyByZXF1aXJlZCIpO3JldHVybiBvaShyKSxKcihyKSx7aWQ6UHIociksc2VsZWN0b3I6VnIocix7c2VlZE1pbkxlbmd0aDozLG9wdGltaXplZE1pbkxlbmd0aDoyfSksdGFnTmFtZTpyLnRhZ05hbWUudG9Mb3dlckNhc2UoKSxpc1RleHQ6eGEociksaXNJbWFnZTpyLnRhZ05hbWU9PT0iSU1HIixpc1ZpZGVvOnIudGFnTmFtZT09PSJWSURFTyIsaXNDYW52YXM6ci50YWdOYW1lPT09IkNBTlZBUyIsaXNMaW5rOnIudGFnTmFtZT09PSJBIixzdHlsZTpaZyhyKSxzcmM6Z2wociwic3JjIiksaHJlZjpnbChyLCJocmVmIiksaW5uZXJIVE1MOnIuaW5uZXJIVE1MLHRleHRDb250ZW50OnIudGV4dENvbnRlbnR8fCIiLGNsYXNzTmFtZTpnbChyLCJjbGFzc05hbWUiKSxjb21tZW50OnIuX2NvbW1lbnR8fCIiLHdpbmRvdzp7aW5uZXJXaWR0aDp3aW5kb3cuaW5uZXJXaWR0aCxpbm5lckhlaWdodDp3aW5kb3cuaW5uZXJIZWlnaHR9LGpzeExvYzpyLmdldEF0dHJpYnV0ZSgiZGF0YS1sb2MiKXx8dm9pZCAwfX1mdW5jdGlvbiBLZyhyKXtyJiYocWcocil8fHIuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJjZW50ZXIifSkpfWZ1bmN0aW9uIEJ1KHIpe2NvbnN0IGk9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57eDppLmxlZnQraS53aWR0aC8yLHk6aS50b3AraS5oZWlnaHQvMn19ZnVuY3Rpb24gUGcocixpLGMpe3N3aXRjaChjKXtjYXNlInVwIjpyZXR1cm4gaS55PHIueS0wO2Nhc2UiZG93biI6cmV0dXJuIGkueT5yLnkrMDtjYXNlImxlZnQiOnJldHVybiBpLng8ci54LTA7Y2FzZSJyaWdodCI6cmV0dXJuIGkueD5yLngrMH19ZnVuY3Rpb24gTHUocixpKXtyZXR1cm4gci5jb250YWlucyhpKSYmciE9PWl9ZnVuY3Rpb24gSHUocil7bGV0IGk9MCxjPXIucGFyZW50RWxlbWVudDtmb3IoO2M7KWkrKyxjPWMucGFyZW50RWxlbWVudDtyZXR1cm4gaX1mdW5jdGlvbiBKZyhyLGksYyxzLGQpe2NvbnN0IG09cy54LWkueCx4PXMueS1pLnksUj1NYXRoLnNxcnQobSptK3gqeCk7bGV0IEM9MDtzd2l0Y2goZCl7Y2FzZSJ1cCI6Y2FzZSJkb3duIjpDPU1hdGguYWJzKG0pO2JyZWFrO2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Qz1NYXRoLmFicyh4KTticmVha31sZXQgdj0wO0x1KGMscikmJih2Kz0xZTQpLEx1KHIsYykmJih2Kz01ZTMpO2NvbnN0IEQ9TWF0aC5hYnMoSHUoYyktSHUocikpO3JldHVybiB2Kz1EKjEwMCxSK0MqMS41K3Z9ZnVuY3Rpb24gV2cocixpKXtjb25zdCBjPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIioiKSxzPVtdO2Zvcihjb25zdCBkIG9mIEFycmF5LmZyb20oYykpIShkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpJiYhKGQgaW5zdGFuY2VvZiBTVkdTVkdFbGVtZW50KXx8ciYmZD09PXJ8fEtyKGQpJiYoR2coZCl8fGkmJmQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmaShkKXx8WyJTQ1JJUFQiLCJTVFlMRSJdLmluY2x1ZGVzKGQudGFnTmFtZSl8fHMucHVzaChkKSk7cmV0dXJuIHN9ZnVuY3Rpb24gJGcocixpLGMpe2NvbnN0IHM9QnUociksZD1XZyhyLGMpO2xldCBtPW51bGwseD0xLzA7Zm9yKGNvbnN0IFIgb2YgZCl7Y29uc3QgQz1CdShSKTtpZighUGcocyxDLGkpKWNvbnRpbnVlO2NvbnN0IHY9SmcocixzLFIsQyxpKTt2PHgmJih4PXYsbT1SKX1yZXR1cm4gbX1mdW5jdGlvbiBGZyhyKXtpZighcilyZXR1cm4hMTtjb25zdCBpPXIudGFnTmFtZTtpZihbIkhUTUwiLCJCT0RZIiwiSEVBRCJdLmluY2x1ZGVzKGkpKXJldHVybiExO2lmKHIgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCl7Y29uc3QgYz1yLmlkO2lmKEhnLmluY2x1ZGVzKGMpKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIElnKHIpe2lmKCFyLnBhcmVudEVsZW1lbnQpcmV0dXJuIG51bGw7Y29uc3QgaT1yLnBhcmVudEVsZW1lbnQsYz1KcihpKSxzPVZyKGkse3NlZWRNaW5MZW5ndGg6MyxvcHRpbWl6ZWRNaW5MZW5ndGg6Mn0pO2xldCBkPW51bGwsbT1udWxsO2NvbnN0IHg9ci5uZXh0RWxlbWVudFNpYmxpbmc7cmV0dXJuIHgmJihkPUpyKHgpLG09VnIoeCx7c2VlZE1pbkxlbmd0aDozLG9wdGltaXplZE1pbkxlbmd0aDoyfSkpLHtwYXJlbnRJZDpjLHBhcmVudFNlbGVjdG9yOnMsbmV4dFNpYmxpbmdJZDpkLG5leHRTaWJsaW5nU2VsZWN0b3I6bSxvdXRlckhUTUw6ci5vdXRlckhUTUwsY29tbWVudDpyLl9jb21tZW50fX1mdW5jdGlvbiBVdShyKXtsZXQgaT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbJHtIbH09IiR7ci5wYXJlbnRJZH0iXWApO2lmKCFpKXRyeXtpPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioci5wYXJlbnRTZWxlY3RvciksaSYmaS5zZXRBdHRyaWJ1dGUoSGwsci5wYXJlbnRJZCl9Y2F0Y2gobSl7cmV0dXJuIGNvbnNvbGUud2FybigiRmFpbGVkIHRvIGZpbmQgcGFyZW50IGVsZW1lbnQgZm9yIHJlc3RvcmF0aW9uOiIsbSksbnVsbH1pZighaSlyZXR1cm4gY29uc29sZS53YXJuKCJQYXJlbnQgZWxlbWVudCBub3QgZm91bmQgZm9yIHJlc3RvcmF0aW9uIiksbnVsbDtjb25zdCBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2MuaW5uZXJIVE1MPXIub3V0ZXJIVE1MO2NvbnN0IHM9Yy5maXJzdEVsZW1lbnRDaGlsZDtpZighcylyZXR1cm4gY29uc29sZS53YXJuKCJGYWlsZWQgdG8gcGFyc2Ugb3V0ZXJIVE1MIGZvciByZXN0b3JhdGlvbiIpLG51bGw7bGV0IGQ9bnVsbDtpZihyLm5leHRTaWJsaW5nSWQmJihkPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFske0hsfT0iJHtyLm5leHRTaWJsaW5nSWR9Il1gKSwhZCYmci5uZXh0U2libGluZ1NlbGVjdG9yKSl0cnl7ZD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHIubmV4dFNpYmxpbmdTZWxlY3RvciksZCYmZC5zZXRBdHRyaWJ1dGUoSGwsci5uZXh0U2libGluZ0lkKX1jYXRjaChtKXtjb25zb2xlLndhcm4oIkZhaWxlZCB0byBmaW5kIG5leHQgc2libGluZyBmb3IgcmVzdG9yYXRpb246IixtKX1yZXR1cm4gZCYmZC5wYXJlbnRFbGVtZW50PT09aT9pLmluc2VydEJlZm9yZShzLGQpOmkuYXBwZW5kQ2hpbGQocyksci5jb21tZW50JiYocy5fY29tbWVudD1yLmNvbW1lbnQpLHN9Y29uc3QgZnQ9cj0+e2NvbnN0IGk9TnVtYmVyLnBhcnNlSW50KHIpO3JldHVybiBOdW1iZXIuaXNOYU4oaSk/MDppfSxwbD1yPT57aWYoIXJ8fHI9PT0idHJhbnNwYXJlbnQiKXJldHVybiJ0cmFuc3BhcmVudCI7Y29uc3QgaT1yLm1hdGNoKC9yZ2JhP1woKFxkKyksXHMqKFxkKyksXHMqKFxkKykvKTtpZihpKXtjb25zdCBjPU51bWJlci5wYXJzZUludChpWzFdKS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpLHM9TnVtYmVyLnBhcnNlSW50KGlbMl0pLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIiksZD1OdW1iZXIucGFyc2VJbnQoaVszXSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKTtyZXR1cm5gIyR7Y30ke3N9JHtkfWB9cmV0dXJuIHJ9O2Z1bmN0aW9uIHdhKHtsYWJlbDpyLGNoaWxkcmVuOmksaXNPcGVuOmMsb25Ub2dnbGU6c30pe3JldHVybiBoLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9Db2xsYXBzaWJsZUdyb3VwLnRzeDoxOCIsc3R5bGU6e2JvcmRlckJvdHRvbToiMXB4IHNvbGlkIHZhcigtLWJvcmRlci1tYWluKSJ9LGNsYXNzTmFtZToibGFzdDpib3JkZXItYi0wIixjaGlsZHJlbjpbaC5qc3hzKCJidXR0b24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29sbGFwc2libGVHcm91cC50c3g6MjQiLG9uQ2xpY2s6cyxjbGFzc05hbWU6InctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHktMi41IHB4LTMgaG92ZXI6YmctW3ZhcigtLWZpbGwtdHNwLXdoaXRlLWxpZ2h0KV0gYWN0aXZlOm9wYWNpdHktODAgdHJhbnNpdGlvbi1hbGwiLGNoaWxkcmVuOltoLmpzeCgic3BhbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9Db2xsYXBzaWJsZUdyb3VwLnRzeDoyOCIsY2xhc3NOYW1lOiJ0ZXh0LXNtIHRleHQtW3ZhcigtLXRleHQtcHJpbWFyeSldIixjaGlsZHJlbjpyfSksaC5qc3goInN2ZyIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9Db2xsYXBzaWJsZUdyb3VwLnRzeDoyOSIsd2lkdGg6IjE0IixoZWlnaHQ6IjE0Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMi41IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjbGFzc05hbWU6QWUuY24oInRleHQtW3ZhcigtLWljb24tdGVydGlhcnkpXSB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0yMDAiLGM/InJvdGF0ZS0xODAiOiIiKSxjaGlsZHJlbjpoLmpzeCgicG9seWxpbmUiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29sbGFwc2libGVHcm91cC50c3g6NDMiLHBvaW50czoiNiA5IDEyIDE1IDE4IDkifSl9KV19KSxoLmpzeCgiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL0NvbGxhcHNpYmxlR3JvdXAudHN4OjQ2IixjbGFzc05hbWU6ImdyaWQgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwIGVhc2UtaW4tb3V0IG92ZXJmbG93LWhpZGRlbiIsc3R5bGU6e2dyaWRUZW1wbGF0ZVJvd3M6Yz8iMWZyIjoiMGZyIixvcGFjaXR5OmM/MTowfSxjaGlsZHJlbjpoLmpzeCgiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL0NvbGxhcHNpYmxlR3JvdXAudHN4OjUzIixjbGFzc05hbWU6Im1pbi1oLTAiLGNoaWxkcmVuOmguanN4KCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29sbGFwc2libGVHcm91cC50c3g6NTQiLGNsYXNzTmFtZToicHgtMyBwYi0zIHB0LTAgc3BhY2UteS0yLjUiLGNoaWxkcmVuOml9KX0pfSldfSl9Y29uc3QgdDA9e2JhY2tncm91bmQ6InZhcigtLWZpbGwtdHNwLXdoaXRlLW1haW4pIixNb3pBcHBlYXJhbmNlOiJ0ZXh0ZmllbGQifSxlMD0idy1mdWxsIHRleHQtc20gcHgtMi41IHB5LTEuNSByb3VuZGVkLVsxMHB4XSBib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IHRleHQtW3ZhcigtLXRleHQtcHJpbWFyeSldIHBsYWNlaG9sZGVyOnRleHQtW3ZhcigtLXRleHQtZGlzYWJsZSldIG91dGxpbmUtbm9uZSBmb2N1czpyaW5nLWluc2V0IGZvY3VzOnJpbmctWzFweF0gZm9jdXM6cmluZy1bdmFyKC0tYm9yZGVyLWRhcmspXSB0cmFuc2l0aW9uLWFsbCBjdXJzb3ItZXctcmVzaXplIFsmOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uXTphcHBlYXJhbmNlLW5vbmUgWyY6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b25dOmFwcGVhcmFuY2Utbm9uZSI7ZnVuY3Rpb24geGUoe3ZhbHVlOnIsb25DaGFuZ2U6aSxwbGFjZWhvbGRlcjpjPSIiLG1pbjpzLHN0ZXA6ZD0xLGNsYXNzTmFtZTptPWUwLHN0eWxlOng9dDAsbGVmdExhYmVsOlJ9KXtjb25zdFtDLHZdPVUudXNlU3RhdGUoITEpLFtELGpdPVUudXNlU3RhdGUoITEpLEo9VS51c2VSZWYoMCksYXQ9VS51c2VSZWYoMCksJD1VLnVzZVJlZihudWxsKSxudD1VLnVzZVJlZihpKSxjdD1VLnVzZVJlZihkKSxodD1VLnVzZVJlZihzKTtVLnVzZUVmZmVjdCgoKT0+e250LmN1cnJlbnQ9aSxjdC5jdXJyZW50PWQsaHQuY3VycmVudD1zfSxbaSxkLHNdKTtjb25zdCBTdD1ZPT57aWYoZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PSQuY3VycmVudClyZXR1cm47aighMCksSi5jdXJyZW50PVkuY2xpZW50WDtjb25zdCBIPXBhcnNlRmxvYXQocil8fDA7YXQuY3VycmVudD1IfTtVLnVzZUVmZmVjdCgoKT0+e2lmKCFEJiYhQylyZXR1cm47Y29uc3QgWT1pdD0+e2lmKCFDJiZEKXtNYXRoLmFicyhpdC5jbGllbnRYLUouY3VycmVudCk+MyYmKHYoITApLGooITEpLGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yPSJldy1yZXNpemUiLGRvY3VtZW50LmJvZHkuc3R5bGUudXNlclNlbGVjdD0ibm9uZSIsJC5jdXJyZW50Py5ibHVyKCkpO3JldHVybn1pZihDKXtjb25zdCBydD1pdC5jbGllbnRYLUouY3VycmVudCxWPU1hdGgucm91bmQocnQvMikqY3QuY3VycmVudDtsZXQgeHQ9YXQuY3VycmVudCtWO2h0LmN1cnJlbnQhPT12b2lkIDAmJnh0PGh0LmN1cnJlbnQmJih4dD1odC5jdXJyZW50KSxudC5jdXJyZW50KFN0cmluZyh4dCkpfX0sSD0oKT0+e3YoITEpLGooITEpLGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yPSIiLGRvY3VtZW50LmJvZHkuc3R5bGUudXNlclNlbGVjdD0iIn07cmV0dXJuIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsWSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsSCksKCk9Pntkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLFkpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLEgpfX0sW0MsRF0pO2NvbnN0IF89aC5qc3goImlucHV0Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL0RyYWdnYWJsZUlucHV0LnRzeDoxMTYiLHJlZjokLHR5cGU6Im51bWJlciIsbWluOnMsc3RlcDpkLHZhbHVlOnIsb25DaGFuZ2U6WT0+aShZLnRhcmdldC52YWx1ZSksb25Nb3VzZURvd246U3QscGxhY2Vob2xkZXI6YyxzdHlsZTp4LGNsYXNzTmFtZTpSP2Ake219IHBsLTdgOm19KTtyZXR1cm4gUj9oLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9EcmFnZ2FibGVJbnB1dC50c3g6MTMyIixjbGFzc05hbWU6InJlbGF0aXZlIixjaGlsZHJlbjpbaC5qc3goInNwYW4iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvRHJhZ2dhYmxlSW5wdXQudHN4OjEzMyIsY2xhc3NOYW1lOiJhYnNvbHV0ZSBsZWZ0LTIuNSB0b3AtMS8yIC10cmFuc2xhdGUteS0xLzIgdGV4dC1zbSB0ZXh0LVt2YXIoLS10ZXh0LXRlcnRpYXJ5KV0gcG9pbnRlci1ldmVudHMtbm9uZSIsY2hpbGRyZW46Un0pLF9dfSk6X31mdW5jdGlvbiBsMChyKXtjb25zdFtpLGNdPVUudXNlU3RhdGUoInBhZGRpbmciKSxzPWQ9PntjKG09Pm09PT1kP251bGw6ZCl9O3JldHVybiBoLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9MYXlvdXRQYW5lbC50c3g6MzkiLHN0eWxlOntib3JkZXJUb3A6IjFweCBzb2xpZCB2YXIoLS1ib3JkZXItbWFpbikifSxjaGlsZHJlbjpbaC5qc3god2EseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9MYXlvdXRQYW5lbC50c3g6NDQiLGxhYmVsOiJQYWRkaW5nIixpc09wZW46aT09PSJwYWRkaW5nIixvblRvZ2dsZTooKT0+cygicGFkZGluZyIpLGNoaWxkcmVuOmguanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL0xheW91dFBhbmVsLnRzeDo0OSIsY2xhc3NOYW1lOiJncmlkIGdyaWQtY29scy0yIGdhcC14LTIgZ2FwLXktMyIsY2hpbGRyZW46W2guanN4KHhlLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvTGF5b3V0UGFuZWwudHN4OjUwIixtaW46MCxzdGVwOjEsdmFsdWU6ci5wYWRkaW5nVG9wLG9uQ2hhbmdlOnIub25QYWRkaW5nVG9wQ2hhbmdlLHBsYWNlaG9sZGVyOiIwIixsZWZ0TGFiZWw6IlQifSksaC5qc3goeGUseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9MYXlvdXRQYW5lbC50c3g6NTgiLG1pbjowLHN0ZXA6MSx2YWx1ZTpyLnBhZGRpbmdSaWdodCxvbkNoYW5nZTpyLm9uUGFkZGluZ1JpZ2h0Q2hhbmdlLHBsYWNlaG9sZGVyOiIwIixsZWZ0TGFiZWw6IlIifSksaC5qc3goeGUseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9MYXlvdXRQYW5lbC50c3g6NjYiLG1pbjowLHN0ZXA6MSx2YWx1ZTpyLnBhZGRpbmdCb3R0b20sb25DaGFuZ2U6ci5vblBhZGRpbmdCb3R0b21DaGFuZ2UscGxhY2Vob2xkZXI6IjAiLGxlZnRMYWJlbDoiQiJ9KSxoLmpzeCh4ZSx7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL0xheW91dFBhbmVsLnRzeDo3NCIsbWluOjAsc3RlcDoxLHZhbHVlOnIucGFkZGluZ0xlZnQsb25DaGFuZ2U6ci5vblBhZGRpbmdMZWZ0Q2hhbmdlLHBsYWNlaG9sZGVyOiIwIixsZWZ0TGFiZWw6IkwifSldfSl9KSxoLmpzeCh3YSx7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL0xheW91dFBhbmVsLnRzeDo4NSIsbGFiZWw6Ik1hcmdpbiIsaXNPcGVuOmk9PT0ibWFyZ2luIixvblRvZ2dsZTooKT0+cygibWFyZ2luIiksY2hpbGRyZW46aC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvTGF5b3V0UGFuZWwudHN4OjkwIixjbGFzc05hbWU6ImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLXgtMiBnYXAteS0zIixjaGlsZHJlbjpbaC5qc3goeGUseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9MYXlvdXRQYW5lbC50c3g6OTEiLHN0ZXA6MSx2YWx1ZTpyLm1hcmdpblRvcCxvbkNoYW5nZTpyLm9uTWFyZ2luVG9wQ2hhbmdlLHBsYWNlaG9sZGVyOiIwIixsZWZ0TGFiZWw6IlQifSksaC5qc3goeGUseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9MYXlvdXRQYW5lbC50c3g6OTgiLHN0ZXA6MSx2YWx1ZTpyLm1hcmdpblJpZ2h0LG9uQ2hhbmdlOnIub25NYXJnaW5SaWdodENoYW5nZSxwbGFjZWhvbGRlcjoiMCIsbGVmdExhYmVsOiJSIn0pLGguanN4KHhlLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvTGF5b3V0UGFuZWwudHN4OjEwNSIsc3RlcDoxLHZhbHVlOnIubWFyZ2luQm90dG9tLG9uQ2hhbmdlOnIub25NYXJnaW5Cb3R0b21DaGFuZ2UscGxhY2Vob2xkZXI6IjAiLGxlZnRMYWJlbDoiQiJ9KSxoLmpzeCh4ZSx7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL0xheW91dFBhbmVsLnRzeDoxMTIiLHN0ZXA6MSx2YWx1ZTpyLm1hcmdpbkxlZnQsb25DaGFuZ2U6ci5vbk1hcmdpbkxlZnRDaGFuZ2UscGxhY2Vob2xkZXI6IjAiLGxlZnRMYWJlbDoiTCJ9KV19KX0pLGguanN4KHdhLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvTGF5b3V0UGFuZWwudHN4OjEyMiIsbGFiZWw6IkRpbWVuc2lvbnMiLGlzT3BlbjppPT09ImRpbWVuc2lvbnMiLG9uVG9nZ2xlOigpPT5zKCJkaW1lbnNpb25zIiksY2hpbGRyZW46aC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvTGF5b3V0UGFuZWwudHN4OjEyNyIsY2xhc3NOYW1lOiJncmlkIGdyaWQtY29scy0yIGdhcC14LTIgZ2FwLXktMyIsY2hpbGRyZW46W2guanN4KHhlLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvTGF5b3V0UGFuZWwudHN4OjEyOCIsbWluOjAsc3RlcDoxLHZhbHVlOnIud2lkdGgsb25DaGFuZ2U6ci5vbldpZHRoQ2hhbmdlLHBsYWNlaG9sZGVyOiIwIixsZWZ0TGFiZWw6IlcifSksaC5qc3goeGUseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9MYXlvdXRQYW5lbC50c3g6MTM2IixtaW46MCxzdGVwOjEsdmFsdWU6ci5oZWlnaHQsb25DaGFuZ2U6ci5vbkhlaWdodENoYW5nZSxwbGFjZWhvbGRlcjoiMCIsbGVmdExhYmVsOiJIIn0pXX0pfSldfSl9ZnVuY3Rpb24gRnIoe3ZhbHVlOnIsb25DaGFuZ2U6aX0pe2NvbnN0IGM9VS51c2VSZWYobnVsbCkscz1tPT4hbXx8bT09PSJ0cmFuc3BhcmVudCI/IiNmZmZmZmYiOm0uc3RhcnRzV2l0aCgiIyIpfHxtLnN0YXJ0c1dpdGgoIiMiKT9tOiIjZmZmZmZmIixkPSgpPT57Yy5jdXJyZW50Py5jbGljaygpfTtyZXR1cm4gaC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29sb3JJbnB1dC50c3g6MjUiLGNsYXNzTmFtZToicmVsYXRpdmUgZmxleCBpdGVtcy1jZW50ZXIiLGNoaWxkcmVuOltoLmpzeCgiaW5wdXQiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29sb3JJbnB1dC50c3g6MjYiLHR5cGU6InRleHQiLHZhbHVlOnIsb25DaGFuZ2U6bT0+aShtLnRhcmdldC52YWx1ZSksb25DbGljazpkLHBsYWNlaG9sZGVyOiIjMDAwMDAwIixjbGFzc05hbWU6InctZnVsbCB0ZXh0LXNtIHB4LTIuNSBweS0xLjUgcGwtMTAgcm91bmRlZC1bMTBweF0gYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBiZy1bdmFyKC0tZmlsbC10c3Atd2hpdGUtbWFpbildIHRleHQtW3ZhcigtLXRleHQtcHJpbWFyeSldIHBsYWNlaG9sZGVyOnRleHQtW3ZhcigtLXRleHQtZGlzYWJsZSldIG91dGxpbmUtbm9uZSBmb2N1czpyaW5nLWluc2V0IGZvY3VzOnJpbmctWzFweF0gZm9jdXM6cmluZy1bdmFyKC0tYm9yZGVyLWRhcmspXSB0cmFuc2l0aW9uLWFsbCBjdXJzb3ItcG9pbnRlciJ9KSxoLmpzeCgiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL0NvbG9ySW5wdXQudHN4OjM0IixjbGFzc05hbWU6ImFic29sdXRlIGxlZnQtMi41IHBvaW50ZXItZXZlbnRzLW5vbmUiLGNoaWxkcmVuOmguanN4KCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29sb3JJbnB1dC50c3g6MzUiLGNsYXNzTmFtZToidy01IGgtNSByb3VuZGVkIGJvcmRlciBib3JkZXItYmxhY2svMjAgb3ZlcmZsb3ctaGlkZGVuIHNoYWRvdy1zbSIsc3R5bGU6e2JhY2tncm91bmRDb2xvcjpyLGJveFNoYWRvdzoiaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsMC4xKSJ9LGNoaWxkcmVuOmguanN4KCJpbnB1dCIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9Db2xvcklucHV0LnRzeDo0MiIscmVmOmMsdHlwZToiY29sb3IiLHZhbHVlOnMociksb25DaGFuZ2U6bT0+aShtLnRhcmdldC52YWx1ZSksY2xhc3NOYW1lOiJ3LVsxNTAlXSBoLVsxNTAlXSBjdXJzb3ItcG9pbnRlciBib3JkZXItMCAtbS1bMjUlXSBvcGFjaXR5LTAgcG9pbnRlci1ldmVudHMtYXV0byIsdGl0bGU6IlBpY2sgYSBjb2xvciJ9KX0pfSldfSl9Y29uc3QgYTA9e2JhY2tncm91bmQ6InZhcigtLWZpbGwtdHNwLXdoaXRlLW1haW4pIn0sbjA9InctZnVsbCB0ZXh0LXNtIHB4LTIuNSBweS0xLjUgcm91bmRlZC1bMTBweF0gYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCB0ZXh0LVt2YXIoLS10ZXh0LXByaW1hcnkpXSBwbGFjZWhvbGRlcjp0ZXh0LVt2YXIoLS10ZXh0LWRpc2FibGUpXSBvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy1pbnNldCBmb2N1czpyaW5nLVsxcHhdIGZvY3VzOnJpbmctW3ZhcigtLWJvcmRlci1kYXJrKV0gdHJhbnNpdGlvbi1hbGwiLG9uPSJ3LWZ1bGwgdGV4dC1zbSBweC0yLjUgcHktMS41IHJvdW5kZWQtWzEwcHhdIGJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1bdmFyKC0tdGV4dC1wcmltYXJ5KV0gb3V0bGluZS1ub25lIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy1bMXB4XSBmb2N1czpyaW5nLVt2YXIoLS1ib3JkZXItZGFyayldIHRyYW5zaXRpb24tYWxsIGN1cnNvci1wb2ludGVyIGFwcGVhcmFuY2Utbm9uZSIscm49e2JhY2tncm91bmQ6InZhcigtLWZpbGwtdHNwLXdoaXRlLW1haW4pIixiYWNrZ3JvdW5kSW1hZ2U6YHVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9J25vbmUnIHZpZXdCb3g9JzAgMCAyMCAyMCclM0UlM0NwYXRoIHN0cm9rZT0nJTIzNmI3MjgwJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIHN0cm9rZS13aWR0aD0nMS41JyBkPSdNNiA4bDQgNCA0LTQnLyUzRSUzQy9zdmclM0UiKWAsYmFja2dyb3VuZFBvc2l0aW9uOiJyaWdodCAwLjVyZW0gY2VudGVyIixiYWNrZ3JvdW5kU2l6ZToiMTZweCAxNnB4IixiYWNrZ3JvdW5kUmVwZWF0OiJuby1yZXBlYXQiLHBhZGRpbmdSaWdodDoiMnJlbSJ9O2Z1bmN0aW9uIG8wKHIpe2NvbnN0W2ksY109VS51c2VTdGF0ZSgiY29sb3JzIikscz1kPT57YyhtPT5tPT09ZD9udWxsOmQpfTtyZXR1cm4gaC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjcwIixzdHlsZTp7Ym9yZGVyVG9wOiIxcHggc29saWQgdmFyKC0tYm9yZGVyLW1haW4pIn0sY2hpbGRyZW46W2guanN4KHdhLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4Ojc1IixsYWJlbDoiQ29sb3JzIixpc09wZW46aT09PSJjb2xvcnMiLG9uVG9nZ2xlOigpPT5zKCJjb2xvcnMiKSxjaGlsZHJlbjpoLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6ODAiLGNsYXNzTmFtZToiZ3JpZCBncmlkLWNvbHMtMiBnYXAteC0yIGdhcC15LTMiLGNoaWxkcmVuOltyLnJlc3VsdC5pc1RleHQmJmguanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDo4MiIsY2hpbGRyZW46W2guanN4KCJsYWJlbCIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6ODMiLGNsYXNzTmFtZToidGV4dC14cyB0ZXh0LVt2YXIoLS10ZXh0LXRlcnRpYXJ5KV0gbWItMS41IGJsb2NrIixjaGlsZHJlbjoiVGV4dCBjb2xvciJ9KSxoLmpzeChGcix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDo4NiIsdmFsdWU6ci5jb2xvcixvbkNoYW5nZTpyLm9uQ29sb3JDaGFuZ2V9KV19KSxoLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6ODkiLGNoaWxkcmVuOltoLmpzeCgibGFiZWwiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjkwIixjbGFzc05hbWU6InRleHQteHMgdGV4dC1bdmFyKC0tdGV4dC10ZXJ0aWFyeSldIG1iLTEuNSBibG9jayIsY2hpbGRyZW46IkJhY2tncm91bmQifSksaC5qc3goRnIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6OTMiLHZhbHVlOnIuYmFja2dyb3VuZENvbG9yLG9uQ2hhbmdlOnIub25CYWNrZ3JvdW5kQ29sb3JDaGFuZ2V9KV19KV19KX0pLHIucmVzdWx0LmlzVGV4dCYmaC5qc3hzKHdhLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjEwMiIsbGFiZWw6IlR5cG9ncmFwaHkiLGlzT3BlbjppPT09InR5cG9ncmFwaHkiLG9uVG9nZ2xlOigpPT5zKCJ0eXBvZ3JhcGh5IiksY2hpbGRyZW46W2guanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoxMDciLGNsYXNzTmFtZToiZ3JpZCBncmlkLWNvbHMtMiBnYXAteC0yIGdhcC15LTMiLGNoaWxkcmVuOltoLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MTA4IixjaGlsZHJlbjpbaC5qc3goImxhYmVsIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoxMDkiLGNsYXNzTmFtZToidGV4dC14cyB0ZXh0LVt2YXIoLS10ZXh0LXRlcnRpYXJ5KV0gbWItMS41IGJsb2NrIixjaGlsZHJlbjoiRm9udCBzaXplIn0pLGguanN4KHhlLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjExMiIsbWluOjAsc3RlcDoxLHZhbHVlOnIuZm9udFNpemUsb25DaGFuZ2U6ci5vbkZvbnRTaXplQ2hhbmdlLHBsYWNlaG9sZGVyOiJweCJ9KV19KSxoLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MTIwIixjaGlsZHJlbjpbaC5qc3goImxhYmVsIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoxMjEiLGNsYXNzTmFtZToidGV4dC14cyB0ZXh0LVt2YXIoLS10ZXh0LXRlcnRpYXJ5KV0gbWItMS41IGJsb2NrIixjaGlsZHJlbjoiRm9udCB3ZWlnaHQifSksaC5qc3hzKCJzZWxlY3QiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjEyNCIsdmFsdWU6ci5mb250V2VpZ2h0LG9uQ2hhbmdlOmQ9PnIub25Gb250V2VpZ2h0Q2hhbmdlKGQudGFyZ2V0LnZhbHVlKSxzdHlsZTpybixjbGFzc05hbWU6b24sY2hpbGRyZW46W2guanN4KCJvcHRpb24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjEzMCIsdmFsdWU6IiIsY2hpbGRyZW46IkRlZmF1bHQifSksaC5qc3goIm9wdGlvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MTMxIix2YWx1ZToiMTAwIixjaGlsZHJlbjoiVGhpbiAoMTAwKSJ9KSxoLmpzeCgib3B0aW9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoxMzIiLHZhbHVlOiIyMDAiLGNoaWxkcmVuOiJFeHRyYSBMaWdodCAoMjAwKSJ9KSxoLmpzeCgib3B0aW9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoxMzMiLHZhbHVlOiIzMDAiLGNoaWxkcmVuOiJMaWdodCAoMzAwKSJ9KSxoLmpzeCgib3B0aW9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoxMzQiLHZhbHVlOiI0MDAiLGNoaWxkcmVuOiJOb3JtYWwgKDQwMCkifSksaC5qc3goIm9wdGlvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MTM1Iix2YWx1ZToiNTAwIixjaGlsZHJlbjoiTWVkaXVtICg1MDApIn0pLGguanN4KCJvcHRpb24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjEzNiIsdmFsdWU6IjYwMCIsY2hpbGRyZW46IlNlbWkgQm9sZCAoNjAwKSJ9KSxoLmpzeCgib3B0aW9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoxMzciLHZhbHVlOiI3MDAiLGNoaWxkcmVuOiJCb2xkICg3MDApIn0pLGguanN4KCJvcHRpb24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjEzOCIsdmFsdWU6IjgwMCIsY2hpbGRyZW46IkV4dHJhIEJvbGQgKDgwMCkifSksaC5qc3goIm9wdGlvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MTM5Iix2YWx1ZToiOTAwIixjaGlsZHJlbjoiQmxhY2sgKDkwMCkifSldfSldfSldfSksaC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjE0MyIsY2hpbGRyZW46W2guanN4KCJsYWJlbCIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MTQ0IixjbGFzc05hbWU6InRleHQteHMgdGV4dC1bdmFyKC0tdGV4dC10ZXJ0aWFyeSldIG1iLTEuNSBibG9jayIsY2hpbGRyZW46IkZvbnQgZmFtaWx5In0pLGguanN4KCJpbnB1dCIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MTQ3Iix0eXBlOiJ0ZXh0Iix2YWx1ZTpyLmZvbnRGYW1pbHksb25DaGFuZ2U6ZD0+ci5vbkZvbnRGYW1pbHlDaGFuZ2UoZC50YXJnZXQudmFsdWUpLHBsYWNlaG9sZGVyOiJlLmcuLCBBcmlhbCwgc2Fucy1zZXJpZiIsc3R5bGU6YTAsY2xhc3NOYW1lOm4wfSldfSksaC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjE1NiIsY2xhc3NOYW1lOiJncmlkIGdyaWQtY29scy0yIGdhcC14LTIgZ2FwLXktMyIsY2hpbGRyZW46W2guanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoxNTciLGNoaWxkcmVuOltoLmpzeCgibGFiZWwiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjE1OCIsY2xhc3NOYW1lOiJ0ZXh0LXhzIHRleHQtW3ZhcigtLXRleHQtdGVydGlhcnkpXSBtYi0xLjUgYmxvY2siLGNoaWxkcmVuOiJUZXh0IGFsaWduIn0pLGguanN4cygic2VsZWN0Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoxNjEiLHZhbHVlOnIudGV4dEFsaWduLG9uQ2hhbmdlOmQ9PnIub25UZXh0QWxpZ25DaGFuZ2UoZC50YXJnZXQudmFsdWUpLHN0eWxlOnJuLGNsYXNzTmFtZTpvbixjaGlsZHJlbjpbaC5qc3goIm9wdGlvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MTY3Iix2YWx1ZToiIixjaGlsZHJlbjoiRGVmYXVsdCJ9KSxoLmpzeCgib3B0aW9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoxNjgiLHZhbHVlOiJsZWZ0IixjaGlsZHJlbjoiTGVmdCJ9KSxoLmpzeCgib3B0aW9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoxNjkiLHZhbHVlOiJjZW50ZXIiLGNoaWxkcmVuOiJDZW50ZXIifSksaC5qc3goIm9wdGlvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MTcwIix2YWx1ZToicmlnaHQiLGNoaWxkcmVuOiJSaWdodCJ9KSxoLmpzeCgib3B0aW9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoxNzEiLHZhbHVlOiJqdXN0aWZ5IixjaGlsZHJlbjoiSnVzdGlmeSJ9KV19KV19KSxoLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MTc0IixjaGlsZHJlbjpbaC5qc3goImxhYmVsIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoxNzUiLGNsYXNzTmFtZToidGV4dC14cyB0ZXh0LVt2YXIoLS10ZXh0LXRlcnRpYXJ5KV0gbWItMS41IGJsb2NrIixjaGlsZHJlbjoiVGV4dCBkZWNvcmF0aW9uIn0pLGguanN4cygic2VsZWN0Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoxNzgiLHZhbHVlOnIudGV4dERlY29yYXRpb24sb25DaGFuZ2U6ZD0+ci5vblRleHREZWNvcmF0aW9uQ2hhbmdlKGQudGFyZ2V0LnZhbHVlKSxzdHlsZTpybixjbGFzc05hbWU6b24sY2hpbGRyZW46W2guanN4KCJvcHRpb24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjE4NCIsdmFsdWU6IiIsY2hpbGRyZW46IkRlZmF1bHQifSksaC5qc3goIm9wdGlvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MTg1Iix2YWx1ZToibm9uZSIsY2hpbGRyZW46Ik5vbmUifSksaC5qc3goIm9wdGlvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MTg2Iix2YWx1ZToidW5kZXJsaW5lIixjaGlsZHJlbjoiVW5kZXJsaW5lIn0pLGguanN4KCJvcHRpb24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjE4NyIsdmFsdWU6Im92ZXJsaW5lIixjaGlsZHJlbjoiT3ZlcmxpbmUifSksaC5qc3goIm9wdGlvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MTg4Iix2YWx1ZToibGluZS10aHJvdWdoIixjaGlsZHJlbjoiTGluZSBUaHJvdWdoIn0pXX0pXX0pXX0pXX0pLGguanN4KHdhLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjE5NSIsbGFiZWw6IkJvcmRlciIsaXNPcGVuOmk9PT0iYm9yZGVyIixvblRvZ2dsZTooKT0+cygiYm9yZGVyIiksY2hpbGRyZW46aC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjIwMCIsY2xhc3NOYW1lOiJncmlkIGdyaWQtY29scy0yIGdhcC14LTIgZ2FwLXktMyIsY2hpbGRyZW46W2guanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoyMDEiLGNoaWxkcmVuOltoLmpzeCgibGFiZWwiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjIwMiIsY2xhc3NOYW1lOiJ0ZXh0LXhzIHRleHQtW3ZhcigtLXRleHQtdGVydGlhcnkpXSBtYi0xLjUgYmxvY2siLGNoaWxkcmVuOiJCb3JkZXIgY29sb3IifSksaC5qc3goRnIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MjA1Iix2YWx1ZTpyLmJvcmRlckNvbG9yLG9uQ2hhbmdlOnIub25Cb3JkZXJDb2xvckNoYW5nZX0pXX0pLGguanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoyMTAiLGNoaWxkcmVuOltoLmpzeCgibGFiZWwiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjIxMSIsY2xhc3NOYW1lOiJ0ZXh0LXhzIHRleHQtW3ZhcigtLXRleHQtdGVydGlhcnkpXSBtYi0xLjUgYmxvY2siLGNoaWxkcmVuOiJSYWRpdXMifSksaC5qc3goeGUseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MjE0IixtaW46MCxzdGVwOjEsdmFsdWU6ci5ib3JkZXJSYWRpdXMsb25DaGFuZ2U6ci5vbkJvcmRlclJhZGl1c0NoYW5nZSxwbGFjZWhvbGRlcjoicHgifSldfSksaC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjIyMiIsY2hpbGRyZW46W2guanN4KCJsYWJlbCIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MjIzIixjbGFzc05hbWU6InRleHQteHMgdGV4dC1bdmFyKC0tdGV4dC10ZXJ0aWFyeSldIG1iLTEuNSBibG9jayIsY2hpbGRyZW46IkJvcmRlciBzdHlsZSJ9KSxoLmpzeHMoInNlbGVjdCIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MjI2Iix2YWx1ZTpyLmJvcmRlclN0eWxlLG9uQ2hhbmdlOmQ9PnIub25Cb3JkZXJTdHlsZUNoYW5nZShkLnRhcmdldC52YWx1ZSksc3R5bGU6cm4sY2xhc3NOYW1lOm9uLGNoaWxkcmVuOltoLmpzeCgib3B0aW9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoyMzIiLHZhbHVlOiIiLGNoaWxkcmVuOiJEZWZhdWx0In0pLGguanN4KCJvcHRpb24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjIzMyIsdmFsdWU6Im5vbmUiLGNoaWxkcmVuOiJOb25lIn0pLGguanN4KCJvcHRpb24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjIzNCIsdmFsdWU6InNvbGlkIixjaGlsZHJlbjoiU29saWQifSksaC5qc3goIm9wdGlvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MjM1Iix2YWx1ZToiZGFzaGVkIixjaGlsZHJlbjoiRGFzaGVkIn0pLGguanN4KCJvcHRpb24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjIzNiIsdmFsdWU6ImRvdHRlZCIsY2hpbGRyZW46IkRvdHRlZCJ9KSxoLmpzeCgib3B0aW9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoyMzciLHZhbHVlOiJkb3VibGUiLGNoaWxkcmVuOiJEb3VibGUifSksaC5qc3goIm9wdGlvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MjM4Iix2YWx1ZToiZ3Jvb3ZlIixjaGlsZHJlbjoiR3Jvb3ZlIn0pLGguanN4KCJvcHRpb24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjIzOSIsdmFsdWU6InJpZGdlIixjaGlsZHJlbjoiUmlkZ2UifSksaC5qc3goIm9wdGlvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MjQwIix2YWx1ZToiaW5zZXQiLGNoaWxkcmVuOiJJbnNldCJ9KSxoLmpzeCgib3B0aW9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoyNDEiLHZhbHVlOiJvdXRzZXQiLGNoaWxkcmVuOiJPdXRzZXQifSldfSldfSksaC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjI0NCIsY2hpbGRyZW46W2guanN4KCJsYWJlbCIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MjQ1IixjbGFzc05hbWU6InRleHQteHMgdGV4dC1bdmFyKC0tdGV4dC10ZXJ0aWFyeSldIG1iLTEuNSBibG9jayIsY2hpbGRyZW46IkJvcmRlciB3ZWlnaHQifSksaC5qc3goeGUseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MjQ4IixtaW46MCxzdGVwOjEsdmFsdWU6ci5ib3JkZXJXaWR0aCxvbkNoYW5nZTpyLm9uQm9yZGVyV2lkdGhDaGFuZ2UscGxhY2Vob2xkZXI6InB4In0pXX0pXX0pfSksaC5qc3god2EseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MjU5IixsYWJlbDoiRGlzcGxheSIsaXNPcGVuOmk9PT0iZGlzcGxheSIsb25Ub2dnbGU6KCk9PnMoImRpc3BsYXkiKSxjaGlsZHJlbjpoLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MjY0IixjbGFzc05hbWU6ImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLXgtMiBnYXAteS0zIixjaGlsZHJlbjpbaC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjI2NSIsY2hpbGRyZW46W2guanN4KCJsYWJlbCIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MjY2IixjbGFzc05hbWU6InRleHQteHMgdGV4dC1bdmFyKC0tdGV4dC10ZXJ0aWFyeSldIG1iLTEuNSBibG9jayIsY2hpbGRyZW46IkJlaGF2aW9yIn0pLGguanN4cygic2VsZWN0Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoyNjkiLHZhbHVlOnIuZGlzcGxheSxvbkNoYW5nZTpkPT5yLm9uRGlzcGxheUNoYW5nZShkLnRhcmdldC52YWx1ZSksc3R5bGU6cm4sY2xhc3NOYW1lOm9uLGNoaWxkcmVuOltoLmpzeCgib3B0aW9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoyNzUiLHZhbHVlOiIiLGNoaWxkcmVuOiJEZWZhdWx0In0pLGguanN4KCJvcHRpb24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjI3NiIsdmFsdWU6ImJsb2NrIixjaGlsZHJlbjoiQmxvY2sifSksaC5qc3goIm9wdGlvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6Mjc3Iix2YWx1ZToiaW5saW5lIixjaGlsZHJlbjoiSW5saW5lIn0pLGguanN4KCJvcHRpb24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjI3OCIsdmFsdWU6ImlubGluZS1ibG9jayIsY2hpbGRyZW46IklubGluZSBCbG9jayJ9KSxoLmpzeCgib3B0aW9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoyNzkiLHZhbHVlOiJmbGV4IixjaGlsZHJlbjoiRmxleCJ9KSxoLmpzeCgib3B0aW9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDoyODAiLHZhbHVlOiJpbmxpbmUtZmxleCIsY2hpbGRyZW46IklubGluZSBGbGV4In0pLGguanN4KCJvcHRpb24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjI4MSIsdmFsdWU6ImdyaWQiLGNoaWxkcmVuOiJHcmlkIn0pLGguanN4KCJvcHRpb24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjI4MiIsdmFsdWU6ImlubGluZS1ncmlkIixjaGlsZHJlbjoiSW5saW5lIEdyaWQifSksaC5qc3goIm9wdGlvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MjgzIix2YWx1ZToibm9uZSIsY2hpbGRyZW46Ik5vbmUgKEhpZGRlbikifSldfSldfSksaC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjI4NiIsY2hpbGRyZW46W2guanN4KCJsYWJlbCIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6Mjg3IixjbGFzc05hbWU6InRleHQteHMgdGV4dC1bdmFyKC0tdGV4dC10ZXJ0aWFyeSldIG1iLTEuNSBibG9jayIsY2hpbGRyZW46Ik9wYWNpdHkifSksaC5qc3goeGUseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MjkwIixtaW46MCxzdGVwOi4xLHZhbHVlOnIub3BhY2l0eSxvbkNoYW5nZTpyLm9uT3BhY2l0eUNoYW5nZSxwbGFjZWhvbGRlcjoiMC0xIn0pXX0pLChyLnJlc3VsdC5pc0ltYWdlfHxyLnJlc3VsdC5pc1ZpZGVvKSYmaC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjI5OSIsY2hpbGRyZW46W2guanN4KCJsYWJlbCIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MzAwIixjbGFzc05hbWU6InRleHQteHMgdGV4dC1bdmFyKC0tdGV4dC10ZXJ0aWFyeSldIG1iLTEuNSBibG9jayIsY2hpbGRyZW46Ik9iamVjdCBmaXQifSksaC5qc3hzKCJzZWxlY3QiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjMwMyIsdmFsdWU6ci5vYmplY3RGaXQsb25DaGFuZ2U6ZD0+ci5vbk9iamVjdEZpdENoYW5nZShkLnRhcmdldC52YWx1ZSksc3R5bGU6cm4sY2xhc3NOYW1lOm9uLGNoaWxkcmVuOltoLmpzeCgib3B0aW9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL1N0eWxlc1BhbmVsLnRzeDozMDkiLHZhbHVlOiIiLGNoaWxkcmVuOiJEZWZhdWx0In0pLGguanN4KCJvcHRpb24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjMxMCIsdmFsdWU6ImNvbnRhaW4iLGNoaWxkcmVuOiJDb250YWluIn0pLGguanN4KCJvcHRpb24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvU3R5bGVzUGFuZWwudHN4OjMxMSIsdmFsdWU6ImNvdmVyIixjaGlsZHJlbjoiQ292ZXIifSksaC5qc3goIm9wdGlvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MzEyIix2YWx1ZToiZmlsbCIsY2hpbGRyZW46IkZpbGwifSksaC5qc3goIm9wdGlvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MzEzIix2YWx1ZToibm9uZSIsY2hpbGRyZW46Ik5vbmUifSksaC5qc3goIm9wdGlvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9TdHlsZXNQYW5lbC50c3g6MzE0Iix2YWx1ZToic2NhbGUtZG93biIsY2hpbGRyZW46IlNjYWxlIERvd24ifSldfSldfSldfSl9KV19KX1jb25zdCBpaT04LHdlPTE2LFNhPTMyMCxHdT02MDA7ZnVuY3Rpb24gaTAocil7Y29uc3QgaT1VLnVzZVJlZihudWxsKSxjPVUudXNlUmVmKG51bGwpLHM9VS51c2VSZWYobnVsbCksZD1VLnVzZVJlZighMSksW20seF09VS51c2VTdGF0ZSgwKSxbUixDXT1VLnVzZVN0YXRlKDApLFt2LERdPVUudXNlU3RhdGUoITEpLFtqLEpdPVUudXNlU3RhdGUoInN0eWxlcyIpLFthdCwkXT1VLnVzZVN0YXRlKCIiKSxbbnQsY3RdPVUudXNlU3RhdGUoIiIpLFtodCxTdF09VS51c2VTdGF0ZSgiIiksW18sWV09VS51c2VTdGF0ZSgiIiksW0gsaXRdPVUudXNlU3RhdGUoIiIpLFtydCxWXT1VLnVzZVN0YXRlKCIiKSxbeHQsQmVdPVUudXNlU3RhdGUoIiIpLFt0ZSxCdF09VS51c2VTdGF0ZSgiIiksW21lLFNlXT1VLnVzZVN0YXRlKCIiKSxbTXQsQV09VS51c2VTdGF0ZSgiIiksW3EsQl09VS51c2VTdGF0ZSgiIiksW2J0LHBdPVUudXNlU3RhdGUoIiIpLFtPLFhdPVUudXNlU3RhdGUoIiIpLFtHLFpdPVUudXNlU3RhdGUoIiIpLFtzdCxJXT1VLnVzZVN0YXRlKCIiKSxbZ3QsVHRdPVUudXNlU3RhdGUoIiIpLFtKdCxLZV09VS51c2VTdGF0ZSgiIiksW0NlLFBlXT1VLnVzZVN0YXRlKCIiKSxbeWwsc25dPVUudXNlU3RhdGUoIiIpLFtDYSxyaV09VS51c2VTdGF0ZSgiIiksW2dlLHNpXT1VLnVzZVN0YXRlKCIiKSxbVWwsRm5dPVUudXNlU3RhdGUoIiIpLFtubCxjaV09VS51c2VTdGF0ZSgiIiksW0dsLHVpXT1VLnVzZVN0YXRlKCIiKSxbRWEscWxdPVUudXNlU3RhdGUoIiIpLFtXdCxKZV09VS51c2VTdGF0ZSgiIiksWyR0LGRpXT1VLnVzZVN0YXRlKCIiKSxbVGEsZmldPVUudXNlU3RhdGUoIiIpLEw9VS51c2VNZW1vKCgpPT4kcihyLnRhcmdldEVsZW1lbnQpLFtyLnRhcmdldEVsZW1lbnRdKSxjbj1vdChNPT57Y29uc3QgdHQ9ci50YXJnZXRFbGVtZW50O3R0JiYodHQudGV4dENvbnRlbnQhPT1udWxsJiYodHQudGV4dENvbnRlbnQ9TSksci5oaWdobGlnaHRlci5zY2hlZHVsZVJlbmRlcigpKX0pLHZsPW90KE09Pntjb25zdCB0dD1yLnRhcmdldEVsZW1lbnQ7dHQmJigic3JjImluIHR0JiYodHQgaW5zdGFuY2VvZiBTVkdFbGVtZW50P3R0LnNldEF0dHJpYnV0ZSgic3JjIixNKTp0eXBlb2YgdHQuc3JjPT0ic3RyaW5nIiYmKHR0LnNyYz1NKSksci5oaWdobGlnaHRlci5zY2hlZHVsZVJlbmRlcigpKX0pLHVuPW90KE09Pntjb25zdCB0dD1yLnRhcmdldEVsZW1lbnQ7dHQmJigiaHJlZiJpbiB0dCYmKHR0IGluc3RhbmNlb2YgU1ZHRWxlbWVudD90dC5zZXRBdHRyaWJ1dGUoImhyZWYiLE0pOnR5cGVvZiB0dC5ocmVmPT0ic3RyaW5nIiYmKHR0LmhyZWY9TSkpLHIuaGlnaGxpZ2h0ZXIuc2NoZWR1bGVSZW5kZXIoKSl9KSxEdD1vdCgoTSx0dCk9Pntjb25zdCBPdD1yLnRhcmdldEVsZW1lbnQ7aWYoIU90KXJldHVybjtjb25zdCBsZT1NLnNwbGl0KC8oPz1bQS1aXSkvKS5qb2luKCItIikudG9Mb3dlckNhc2UoKTt0dD9PdC5zdHlsZS5zZXRQcm9wZXJ0eShsZSx0dCwiaW1wb3J0YW50Iik6T3Quc3R5bGUucmVtb3ZlUHJvcGVydHkobGUpLHIuaGlnaGxpZ2h0ZXIuc2NoZWR1bGVSZW5kZXIoKX0pLEluPW90KCgpPT57ZC5jdXJyZW50PSEwLFdyKHIudGFyZ2V0RWxlbWVudCksci5vbkRpc3Bvc2VkKCl9KSx0bz1vdCgoKT0+e3Iub25EaXNwb3NlZCgpfSksaGk9b3QoYXN5bmMoKT0+e2NvbnN0IE09YXQudHJpbSgpLHR0PUwuY29tbWVudCxPdD1udCE9PUwudGV4dENvbnRlbnQsbGU9aHQhPT1MLnNyYyxFZT1fIT09TC5ocmVmLGFlPU0hPT10dCxMZT1wbChMLnN0eWxlLmNvbG9yKSxIZT1wbChMLnN0eWxlLmJhY2tncm91bmRDb2xvciksUWw9ZnQoTC5zdHlsZS5mb250U2l6ZSkudG9TdHJpbmcoKSx4bD1mdChMLnN0eWxlLmJvcmRlclJhZGl1cykudG9TdHJpbmcoKSxYdD1mdChMLnN0eWxlLnBhZGRpbmdUb3ApLnRvU3RyaW5nKCksaWw9ZnQoTC5zdHlsZS5wYWRkaW5nUmlnaHQpLnRvU3RyaW5nKCksdmU9ZnQoTC5zdHlsZS5wYWRkaW5nQm90dG9tKS50b1N0cmluZygpLHJlPWZ0KEwuc3R5bGUucGFkZGluZ0xlZnQpLnRvU3RyaW5nKCkscmw9ZnQoTC5zdHlsZS5tYXJnaW5Ub3ApLnRvU3RyaW5nKCksd2w9ZnQoTC5zdHlsZS5tYXJnaW5SaWdodCkudG9TdHJpbmcoKSxkbj1mdChMLnN0eWxlLm1hcmdpbkJvdHRvbSkudG9TdHJpbmcoKSxzZT1mdChMLnN0eWxlLm1hcmdpbkxlZnQpLnRvU3RyaW5nKCksS2w9ZnQoTC5zdHlsZS53aWR0aCkudG9TdHJpbmcoKSxOYT1mdChMLnN0eWxlLmhlaWdodCkudG9TdHJpbmcoKSxQbD1MLnN0eWxlLmZvbnRXZWlnaHQsJGU9TC5zdHlsZS5mb250RmFtaWx5LHphPUwuc3R5bGUudGV4dEFsaWduLF9hPUwuc3R5bGUudGV4dERlY29yYXRpb24sRmU9TC5zdHlsZS5kaXNwbGF5LGZuPUwuc3R5bGUub3BhY2l0eSxrYT1MLnN0eWxlLm9iamVjdEZpdCxPYT1mdChMLnN0eWxlLmJvcmRlcldpZHRoKS50b1N0cmluZygpLGphPUwuc3R5bGUuYm9yZGVyU3R5bGUsU2k9cGwoTC5zdHlsZS5ib3JkZXJDb2xvciksQ2k9SCE9PUxlLEJhPXJ0IT09SGUsaG49eHQhPT1RbCxtbj10ZSE9PXhsLFNsPW1lIT09WHQsQ2w9TXQhPT1pbCxpbz1xIT09dmUsZ249YnQhPT1yZSxybz1PIT09cmwsSmw9RyE9PXdsLFVlPXN0IT09ZG4scG49Z3QhPT1zZSxXbD1KdCE9PUtsLEllPUNlIT09TmEseW49eWwhPT1QbCxMYT1DYSE9PSRlLHNvPWdlIT09emEsSGE9VWwhPT1fYSxVYT1ubCE9PUZlLGNvPUdsIT09Zm4sY2U9RWEhPT1rYSxzbD1XdCE9PU9hLEdhPSR0IT09amEsJGw9VGEhPT1TaSxFaT1DaXx8QmF8fGhufHxtbnx8U2x8fENsfHxpb3x8Z258fHJvfHxKbHx8VWV8fHBufHxXbHx8SWV8fHlufHxMYXx8c298fEhhfHxVYXx8Y298fGNlfHxzbHx8R2F8fCRsO2lmKCEoT3R8fGxlfHxFZXx8RWl8fGFlKSlyZXR1cm47Y29uc3QgdW89e3RleHRDb250ZW50Ok90P3tvcmlnaW5hbDpMLnRleHRDb250ZW50LG1vZGlmaWVkOm50fTp2b2lkIDAsc3JjOmxlP3tvcmlnaW5hbDpMLnNyYyxtb2RpZmllZDpodH06dm9pZCAwLGhyZWY6RWU/e29yaWdpbmFsOkwuaHJlZixtb2RpZmllZDpffTp2b2lkIDAsY29tbWVudDphZT97b3JpZ2luYWw6dHQsbW9kaWZpZWQ6TX06dm9pZCAwLHN0eWxlOkVpP3suLi5DaSYme2NvbG9yOntvcmlnaW5hbDpMZSxtb2RpZmllZDpIfX0sLi4uQmEmJntiYWNrZ3JvdW5kQ29sb3I6e29yaWdpbmFsOkhlLG1vZGlmaWVkOnJ0fX0sLi4uaG4mJntmb250U2l6ZTp7b3JpZ2luYWw6YCR7UWx9cHhgLG1vZGlmaWVkOmAke3h0fXB4YH19LC4uLm1uJiZ7Ym9yZGVyUmFkaXVzOntvcmlnaW5hbDpgJHt4bH1weGAsbW9kaWZpZWQ6YCR7dGV9cHhgfX0sLi4uU2wmJntwYWRkaW5nVG9wOntvcmlnaW5hbDpgJHtYdH1weGAsbW9kaWZpZWQ6YCR7bWV9cHhgfX0sLi4uQ2wmJntwYWRkaW5nUmlnaHQ6e29yaWdpbmFsOmAke2lsfXB4YCxtb2RpZmllZDpgJHtNdH1weGB9fSwuLi5pbyYme3BhZGRpbmdCb3R0b206e29yaWdpbmFsOmAke3ZlfXB4YCxtb2RpZmllZDpgJHtxfXB4YH19LC4uLmduJiZ7cGFkZGluZ0xlZnQ6e29yaWdpbmFsOmAke3JlfXB4YCxtb2RpZmllZDpgJHtidH1weGB9fSwuLi5ybyYme21hcmdpblRvcDp7b3JpZ2luYWw6YCR7cmx9cHhgLG1vZGlmaWVkOmAke099cHhgfX0sLi4uSmwmJnttYXJnaW5SaWdodDp7b3JpZ2luYWw6YCR7d2x9cHhgLG1vZGlmaWVkOmAke0d9cHhgfX0sLi4uVWUmJnttYXJnaW5Cb3R0b206e29yaWdpbmFsOmAke2RufXB4YCxtb2RpZmllZDpgJHtzdH1weGB9fSwuLi5wbiYme21hcmdpbkxlZnQ6e29yaWdpbmFsOmAke3NlfXB4YCxtb2RpZmllZDpgJHtndH1weGB9fSwuLi5XbCYme3dpZHRoOntvcmlnaW5hbDpgJHtLbH1weGAsbW9kaWZpZWQ6YCR7SnR9cHhgfX0sLi4uSWUmJntoZWlnaHQ6e29yaWdpbmFsOmAke05hfXB4YCxtb2RpZmllZDpgJHtDZX1weGB9fSwuLi55biYme2ZvbnRXZWlnaHQ6e29yaWdpbmFsOlBsLG1vZGlmaWVkOnlsfX0sLi4uTGEmJntmb250RmFtaWx5OntvcmlnaW5hbDokZSxtb2RpZmllZDpDYX19LC4uLnNvJiZ7dGV4dEFsaWduOntvcmlnaW5hbDp6YSxtb2RpZmllZDpnZX19LC4uLkhhJiZ7dGV4dERlY29yYXRpb246e29yaWdpbmFsOl9hLG1vZGlmaWVkOlVsfX0sLi4uVWEmJntkaXNwbGF5OntvcmlnaW5hbDpGZSxtb2RpZmllZDpubH19LC4uLmNvJiZ7b3BhY2l0eTp7b3JpZ2luYWw6Zm4sbW9kaWZpZWQ6R2x9fSwuLi5jZSYme29iamVjdEZpdDp7b3JpZ2luYWw6a2EsbW9kaWZpZWQ6RWF9fSwuLi5zbCYme2JvcmRlcldpZHRoOntvcmlnaW5hbDpgJHtPYX1weGAsbW9kaWZpZWQ6YCR7V3R9cHhgfX0sLi4uR2EmJntib3JkZXJTdHlsZTp7b3JpZ2luYWw6amEsbW9kaWZpZWQ6JHR9fSwuLi4kbCYme2JvcmRlckNvbG9yOntvcmlnaW5hbDpTaSxtb2RpZmllZDpUYX19fTp2b2lkIDB9O00/ci50YXJnZXRFbGVtZW50Ll9jb21tZW50PU06ci50YXJnZXRFbGVtZW50Ll9jb21tZW50JiZkZWxldGUgci50YXJnZXRFbGVtZW50Ll9jb21tZW50LHIub25TYXZlQ2hhbmdlcyh7ZWxlbWVudDpMLGNoYW5nZXM6dW8sc2NyZWVuc2hvdDpudWxsfSl9KSxlbz1vdChNPT57Y3QoTSksY24oTSl9KSxEYT1vdChNPT57U3QoTSksdmwoTSl9KSxJcj1vdChNPT57WShNKSx1bihNKX0pLG1pPW90KE09PntpdChNKSxEdCgiY29sb3IiLE0pfSksZ2k9b3QoTT0+e1YoTSksRHQoImJhY2tncm91bmRDb2xvciIsTSl9KSxsbz1vdChNPT57QmUoTSksRHQoImZvbnRTaXplIixNP2Ake019cHhgOiIiKX0pLGFvPW90KE09PntCdChNKSxEdCgiYm9yZGVyUmFkaXVzIixNP2Ake019cHhgOiIiKX0pLHBpPW90KE09PntTZShNKSxEdCgicGFkZGluZ1RvcCIsTT9gJHtNfXB4YDoiIil9KSx0cz1vdChNPT57QihNKSxEdCgicGFkZGluZ0JvdHRvbSIsTT9gJHtNfXB4YDoiIil9KSxvbD1vdChNPT57QShNKSxEdCgicGFkZGluZ1JpZ2h0IixNP2Ake019cHhgOiIiKX0pLGVlPW90KE09PntwKE0pLER0KCJwYWRkaW5nTGVmdCIsTT9gJHtNfXB4YDoiIil9KSxwZT1vdChNPT57WChNKSxEdCgibWFyZ2luVG9wIixNP2Ake019cHhgOiIiKX0pLFlsPW90KE09PntaKE0pLER0KCJtYXJnaW5SaWdodCIsTT9gJHtNfXB4YDoiIil9KSxubz1vdChNPT57SShNKSxEdCgibWFyZ2luQm90dG9tIixNP2Ake019cHhgOiIiKX0pLGVzPW90KE09PntUdChNKSxEdCgibWFyZ2luTGVmdCIsTT9gJHtNfXB4YDoiIil9KSxscz1vdChNPT57S2UoTSksRHQoIndpZHRoIixNP2Ake019cHhgOiIiKX0pLHlpPW90KE09PntQZShNKSxEdCgiaGVpZ2h0IixNP2Ake019cHhgOiIiKX0pLE1hPW90KE09PntzbihNKSxEdCgiZm9udFdlaWdodCIsTSl9KSxvbz1vdChNPT57cmkoTSksRHQoImZvbnRGYW1pbHkiLE0pfSksVmw9b3QoTT0+e3NpKE0pLER0KCJ0ZXh0QWxpZ24iLE0pfSksWGw9b3QoTT0+e0ZuKE0pLER0KCJ0ZXh0RGVjb3JhdGlvbiIsTSl9KSxBYT1vdChNPT57Y2koTSksRHQoImRpc3BsYXkiLE0pfSksWmw9b3QoTT0+e3VpKE0pLER0KCJvcGFjaXR5IixNKX0pLFZ0PW90KE09PntxbChNKSxEdCgib2JqZWN0Rml0IixNKX0pLHZpPW90KE09PntKZShNKSxEdCgiYm9yZGVyV2lkdGgiLE0/YCR7TX1weGA6IiIpfSksYmk9b3QoTT0+e2RpKE0pLER0KCJib3JkZXJTdHlsZSIsTSl9KSxibD1vdChNPT57ZmkoTSksRHQoImJvcmRlckNvbG9yIixNKX0pLFdlPVUudXNlTWVtbygoKT0+e2NvbnN0IE09bnQhPT1MLnRleHRDb250ZW50LHR0PWh0IT09TC5zcmMsT3Q9XyE9PUwuaHJlZixsZT1hdC50cmltKCkhPT1MLmNvbW1lbnQsRWU9cGwoTC5zdHlsZS5jb2xvciksYWU9cGwoTC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IpLExlPWZ0KEwuc3R5bGUuZm9udFNpemUpLnRvU3RyaW5nKCksSGU9ZnQoTC5zdHlsZS5ib3JkZXJSYWRpdXMpLnRvU3RyaW5nKCksUWw9ZnQoTC5zdHlsZS5wYWRkaW5nVG9wKS50b1N0cmluZygpLHhsPWZ0KEwuc3R5bGUucGFkZGluZ1JpZ2h0KS50b1N0cmluZygpLFh0PWZ0KEwuc3R5bGUucGFkZGluZ0JvdHRvbSkudG9TdHJpbmcoKSxpbD1mdChMLnN0eWxlLnBhZGRpbmdMZWZ0KS50b1N0cmluZygpLHZlPWZ0KEwuc3R5bGUubWFyZ2luVG9wKS50b1N0cmluZygpLHJlPWZ0KEwuc3R5bGUubWFyZ2luUmlnaHQpLnRvU3RyaW5nKCkscmw9ZnQoTC5zdHlsZS5tYXJnaW5Cb3R0b20pLnRvU3RyaW5nKCksd2w9ZnQoTC5zdHlsZS5tYXJnaW5MZWZ0KS50b1N0cmluZygpLGRuPWZ0KEwuc3R5bGUud2lkdGgpLnRvU3RyaW5nKCksc2U9ZnQoTC5zdHlsZS5oZWlnaHQpLnRvU3RyaW5nKCksS2w9TC5zdHlsZS5mb250V2VpZ2h0LE5hPUwuc3R5bGUuZm9udEZhbWlseSxQbD1MLnN0eWxlLnRleHRBbGlnbiwkZT1MLnN0eWxlLnRleHREZWNvcmF0aW9uLHphPUwuc3R5bGUuZGlzcGxheSxfYT1MLnN0eWxlLm9wYWNpdHksRmU9TC5zdHlsZS5vYmplY3RGaXQsZm49ZnQoTC5zdHlsZS5ib3JkZXJXaWR0aCkudG9TdHJpbmcoKSxrYT1MLnN0eWxlLmJvcmRlclN0eWxlLE9hPXBsKEwuc3R5bGUuYm9yZGVyQ29sb3IpO3JldHVybiBNfHx0dHx8T3R8fGxlfHwoSCE9PUVlfHxydCE9PWFlfHx4dCE9PUxlfHx0ZSE9PUhlfHxtZSE9PVFsfHxNdCE9PXhsfHxxIT09WHR8fGJ0IT09aWx8fE8hPT12ZXx8RyE9PXJlfHxzdCE9PXJsfHxndCE9PXdsfHxKdCE9PWRufHxDZSE9PXNlfHx5bCE9PUtsfHxDYSE9PU5hfHxnZSE9PVBsfHxVbCE9PSRlfHxubCE9PXphfHxHbCE9PV9hfHxFYSE9PUZlfHxXdCE9PWZufHwkdCE9PWthfHxUYSE9PU9hKX0sW0wsbnQsaHQsXyxILHJ0LHh0LHRlLG1lLE10LHEsYnQsTyxHLHN0LGd0LEp0LENlLHlsLENhLGdlLFVsLG5sLEdsLEVhLFd0LCR0LFRhLHIudGFyZ2V0RWxlbWVudCxhdF0pLHtvbkNvbXBvc2l0aW9uRW5kOmFzLG9uQ29tcG9zaXRpb25TdGFydDp4aSxvbktleURvd246d2l9PURnKHtvbktleURvd246TT0+e00ua2V5PT09IkVzY2FwZSI/SW4oKTpNLmtleT09PSJFbnRlciImJiFNLnNoaWZ0S2V5JiYoTS5wcmV2ZW50RGVmYXVsdCgpLHRvKCkpfX0pLFJhPW90KChNPSExKT0+e2lmKCFpLmN1cnJlbnQpcmV0dXJuO2NvbnN0IHR0PXIudGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxPdD13aW5kb3cuaW5uZXJXaWR0aCxsZT13aW5kb3cuaW5uZXJIZWlnaHQsRWU9aS5jdXJyZW50Lm9mZnNldEhlaWdodHx8MCxhZT1FZT4wP0VlOkd1O2xldCBMZT1tLEhlPVI7aWYoIU0pe2NvbnN0IHhsPShyZSxybCk9PnJlPj13ZSYmcmUrU2E8PU90LXdlJiZybD49d2UmJnJsK2FlPD1sZS13ZSxYdD0oKT0+e2NvbnN0IHJlPXR0LnRvcCt0dC5oZWlnaHQvMi1hZS8yO3JldHVybiBNYXRoLm1heCh3ZSxNYXRoLm1pbihyZSxsZS13ZS1hZSkpfSxpbD1be2xlZnQ6dHQucmlnaHQraWksdG9wOlh0KCksbmFtZToicmlnaHQifSx7bGVmdDp0dC5sZWZ0LVNhLWlpLHRvcDpYdCgpLG5hbWU6ImxlZnQifSx7bGVmdDpNYXRoLm1heCh3ZSxNYXRoLm1pbih0dC5sZWZ0LE90LXdlLVNhKSksdG9wOnR0LmJvdHRvbStpaSxuYW1lOiJiZWxvdyJ9LHtsZWZ0Ok1hdGgubWF4KHdlLE1hdGgubWluKHR0LmxlZnQsT3Qtd2UtU2EpKSx0b3A6dHQudG9wLWFlLWlpLG5hbWU6ImFib3ZlIn1dO2xldCB2ZT1pbC5maW5kKHJlPT54bChyZS5sZWZ0LHJlLnRvcCkpO3ZlfHwodmU9aWxbMF0sdmUubGVmdD1NYXRoLm1heCh3ZSxNYXRoLm1pbih2ZS5sZWZ0LE90LXdlLVNhKSksdmUudG9wPU1hdGgubWF4KHdlLE1hdGgubWluKHZlLnRvcCxsZS13ZS1hZSkpKSxMZT12ZS5sZWZ0LEhlPXZlLnRvcCx4KExlKSxDKEhlKSxEKCEwKX1jb25zdCBRbD1uZXcgRE9NUmVjdChMZSxIZSxTYSxhZSk7ci5oaWdobGlnaHRlci5hZGRFeGNsdXNpb25SZWN0KCJjb250cm9sLXBhbmVsIixRbCl9KTtyZXR1cm4gVS51c2VFZmZlY3QoKCk9PntpZighaS5jdXJyZW50fHwhdilyZXR1cm47Y29uc3QgTT1uZXcgUmVzaXplT2JzZXJ2ZXIoKCk9PntpLmN1cnJlbnQmJlJhKCEwKX0pO3JldHVybiBNLm9ic2VydmUoaS5jdXJyZW50KSwoKT0+e00uZGlzY29ubmVjdCgpfX0sW3YsUmFdKSxVLnVzZUVmZmVjdCgoKT0+e3MuY3VycmVudCYmKHMuY3VycmVudC5zdHlsZS5oZWlnaHQ9ImF1dG8iLHMuY3VycmVudC5zdHlsZS5oZWlnaHQ9YCR7TWF0aC5taW4ocy5jdXJyZW50LnNjcm9sbEhlaWdodCwyMDApfXB4YCl9LFtudF0pLFUudXNlRWZmZWN0KCgpPT57JChMLmNvbW1lbnQpLGN0KHIudGFyZ2V0RWxlbWVudC50ZXh0Q29udGVudHx8IiIpLFN0KHIudGFyZ2V0RWxlbWVudC5zcmN8fCIiKSxZKHIudGFyZ2V0RWxlbWVudC5ocmVmfHwiIiksaXQocGwoTC5zdHlsZS5jb2xvcikpLFYocGwoTC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IpKSxCZShmdChMLnN0eWxlLmZvbnRTaXplKS50b1N0cmluZygpKSxCdChmdChMLnN0eWxlLmJvcmRlclJhZGl1cykudG9TdHJpbmcoKSksU2UoZnQoTC5zdHlsZS5wYWRkaW5nVG9wKS50b1N0cmluZygpKSxBKGZ0KEwuc3R5bGUucGFkZGluZ1JpZ2h0KS50b1N0cmluZygpKSxCKGZ0KEwuc3R5bGUucGFkZGluZ0JvdHRvbSkudG9TdHJpbmcoKSkscChmdChMLnN0eWxlLnBhZGRpbmdMZWZ0KS50b1N0cmluZygpKSxYKGZ0KEwuc3R5bGUubWFyZ2luVG9wKS50b1N0cmluZygpKSxaKGZ0KEwuc3R5bGUubWFyZ2luUmlnaHQpLnRvU3RyaW5nKCkpLEkoZnQoTC5zdHlsZS5tYXJnaW5Cb3R0b20pLnRvU3RyaW5nKCkpLFR0KGZ0KEwuc3R5bGUubWFyZ2luTGVmdCkudG9TdHJpbmcoKSksS2UoZnQoTC5zdHlsZS53aWR0aCkudG9TdHJpbmcoKSksUGUoZnQoTC5zdHlsZS5oZWlnaHQpLnRvU3RyaW5nKCkpLHNuKEwuc3R5bGUuZm9udFdlaWdodCkscmkoTC5zdHlsZS5mb250RmFtaWx5KSxzaShMLnN0eWxlLnRleHRBbGlnbiksRm4oTC5zdHlsZS50ZXh0RGVjb3JhdGlvbiksY2koTC5zdHlsZS5kaXNwbGF5KSx1aShMLnN0eWxlLm9wYWNpdHkpLHFsKEwuc3R5bGUub2JqZWN0Rml0KSxKZShmdChMLnN0eWxlLmJvcmRlcldpZHRoKS50b1N0cmluZygpKSxkaShMLnN0eWxlLmJvcmRlclN0eWxlKSxmaShwbChMLnN0eWxlLmJvcmRlckNvbG9yKSk7Y29uc3QgTT0oKT0+e2NvbnN0IEVlPXIudGFyZ2V0RWxlbWVudC50ZXh0Q29udGVudHx8IiI7Y3QoRWUpfSx0dD0oKT0+e1JhKCl9LE90PUVlPT57RWUua2V5PT09IkVzY2FwZSImJkluKCl9LGxlPSgpPT57UmEoKX07cmV0dXJuIFJhKCksYy5jdXJyZW50Py5mb2N1cygpLEwuaXNUZXh0JiZyLnRhcmdldEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLE0pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHR0KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixsZSx7cGFzc2l2ZTohMH0pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLE90KSwoKT0+e0wuaXNUZXh0JiZyLnRhcmdldEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaW5wdXQiLE0pLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHR0KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixsZSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsT3QpLHIuaGlnaGxpZ2h0ZXIucmVtb3ZlRXhjbHVzaW9uUmVjdCgiY29udHJvbC1wYW5lbCIpLGQuY3VycmVudHx8aGkoKX19LFtdKSxoLmpzeCgiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL0NvbnRyb2xQYW5lbC50c3g6MTAwNSIsY2xhc3NOYW1lOiJmaXhlZCBsZWZ0LTAgcmlnaHQtMCB0b3AtMCBib3R0b20tMCBwb2ludGVyLWV2ZW50cy1ub25lIixzdHlsZTp7ekluZGV4OjIxNDc0ODM2NDV9LGNoaWxkcmVuOmguanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL0NvbnRyb2xQYW5lbC50c3g6MTAwOSIsW2FsXToidHJ1ZSIsb25Nb3VzZURvd246TT0+TS5zdG9wUHJvcGFnYXRpb24oKSxyZWY6aSxjbGFzc05hbWU6ImFic29sdXRlIHBvaW50ZXItZXZlbnRzLWF1dG8gcm91bmRlZC1bMjBweF0gYm9yZGVyIGJvcmRlci1bdmFyKC0tYm9yZGVyLW1haW4pXSBvdmVyZmxvdy1oaWRkZW4gYmctW3ZhcigtLWJhY2tncm91bmQtbWVudS1ncmF5KV0gc2hhZG93LVswcHhfOHB4XzMycHhfMHB4X3ZhcigtLXNoYWRvdy1TKV0gZmxleCBmbGV4LWNvbCIsc3R5bGU6e2xlZnQ6bSx0b3A6Uix3aWR0aDpgJHtTYX1weGAsbWF4SGVpZ2h0OmAke0d1fXB4YCxvcGFjaXR5OnY/MTowLHRyYW5zZm9ybTp2PyJzY2FsZSgxKSI6InNjYWxlKDAuOTUpIix0cmFuc2l0aW9uOiJvcGFjaXR5IDAuMnMsIHRyYW5zZm9ybSAwLjJzIn0sY2hpbGRyZW46W2guanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL0NvbnRyb2xQYW5lbC50c3g6MTAyNSIsY2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGZsZXgtc2hyaW5rLTAiLGNoaWxkcmVuOltoLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9Db250cm9sUGFuZWwudHN4OjEwMjciLGNsYXNzTmFtZToiZmxleCBpdGVtcy1lbmQgbXgtMiBwdC0yLjUgcGItMS41IHBsLTEgZ2FwLTEuNSBib3JkZXItYiBib3JkZXItbWFpbiIsY2hpbGRyZW46W2guanN4KCJ0ZXh0YXJlYSIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9Db250cm9sUGFuZWwudHN4OjEwMjgiLHJlZjpjLHJvd3M6MSxjbGFzc05hbWU6ImZsZXgtMSB0ZXh0LXNtIHB5LTEgYmctW3ZhcigtLWJhY2tncm91bmQtbWVudS1ncmF5KV0gdGV4dC1bdmFyKC0tdGV4dC1wcmltYXJ5KV0gcGxhY2Vob2xkZXI6dGV4dC1bdmFyKC0tdGV4dC1kaXNhYmxlKV0gcmVzaXplLW5vbmUgb3ZlcmZsb3ctaGlkZGVuIix2YWx1ZTphdCxvbkNoYW5nZTpNPT4kKE0udGFyZ2V0LnZhbHVlKSxvbkNvbXBvc2l0aW9uU3RhcnQ6eGksb25Db21wb3NpdGlvbkVuZDphcyxvbktleURvd246d2kscGxhY2Vob2xkZXI6IkRlc2NyaWJlIGEgY2hhbmdlIixvbklucHV0Ok09Pntjb25zdCB0dD1NLnRhcmdldDt0dC5zdHlsZS5oZWlnaHQ9ImF1dG8iLHR0LnN0eWxlLmhlaWdodD1gJHt0dC5zY3JvbGxIZWlnaHR9cHhgfX0pLGguanN4KCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29udHJvbFBhbmVsLnRzeDoxMDcyIixjbGFzc05hbWU6InctcHggaC00IG1iLVs2cHhdIGJnLVt2YXIoLS1ib3JkZXItbWFpbildIGZsZXgtc2hyaW5rLTAifSksaC5qc3goImJ1dHRvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9Db250cm9sUGFuZWwudHN4OjEwNzMiLG9uQ2xpY2s6V2U/dG86SW4sY2xhc3NOYW1lOkFlLmNuKCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzaXplLTcgcm91bmRlZC1mdWxsIHRyYW5zaXRpb24tYWxsIGFjdGl2ZTpvcGFjaXR5LTgwIG91dGxpbmUtbm9uZSBmbGV4LXNocmluay0wIixXZT8iYmctW3ZhcigtLUJ1dHRvbi1wcmltYXJ5LWJyYW5kKV0gdGV4dC13aGl0ZSBob3ZlcjpvcGFjaXR5LTkwIGZvY3VzOm9wYWNpdHktOTAiOiJ0ZXh0LVt2YXIoLS10ZXh0LXRlcnRpYXJ5KV0gaG92ZXI6YmctW3ZhcigtLWZpbGwtdHNwLXdoaXRlLW1haW4pXSBmb2N1czpiZy1bdmFyKC0tZmlsbC10c3Atd2hpdGUtbWFpbildIiksdGl0bGU6V2U/IlNhdmUgYW5kIGNsb3NlIjoiQ2xvc2UiLGNoaWxkcmVuOldlP2guanN4KCJzdmciLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29udHJvbFBhbmVsLnRzeDoxMDg0Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOiIxNCIsaGVpZ2h0OiIxNCIsdmlld0JveDoiMCAwIDE0IDE0IixjaGlsZHJlbjpoLmpzeCgicGF0aCIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9Db250cm9sUGFuZWwudHN4OjEwOTAiLGQ6Ik02LjkyNzg2IDEzLjE4MTJDNi41OTAzMyAxMy4xODEyIDYuMzE5MDMgMTMuMDcyMyA2LjExMzk1IDEyLjg1NDRDNS45MDg4NyAxMi42NDA3IDUuODA2MzQgMTIuMzU2NiA1LjgwNjM0IDEyLjAwMlY1LjU5OTczTDUuOTI4MSAyLjkyNzMxTDYuNTQ5NzQgMy40MDc5Nkw0LjkyMTk0IDUuMzU2MkwzLjQ5MjggNi43OTE3NUMzLjM5MDI2IDYuODk0MjkgMy4yNzI3NyA2Ljk3OTc0IDMuMTQwMzIgNy4wNDgxQzMuMDEyMTUgNy4xMTY0NiAyLjg2MjYxIDcuMTUwNjMgMi42OTE3MSA3LjE1MDYzQzIuMzkyNjQgNy4xNTA2MyAyLjE0MDU2IDcuMDUyMzcgMS45MzU0OSA2Ljg1NTgzQzEuNzM0NjggNi42NTUwMyAxLjYzNDI4IDYuMzk2NTUgMS42MzQyOCA2LjA4MDM4QzEuNjM0MjggNS43NzcwNCAxLjc0OTYzIDUuNTEwMDEgMS45ODAzNSA1LjI3OTNMNi4xMDc1NCAxLjE0NTY5QzYuMjA1ODEgMS4wNDMxNSA2LjMyOTcxIDAuOTY0MTExIDYuNDc5MjUgMC45MDg1NjlDNi42Mjg3OCAwLjg0ODc1NSA2Ljc3ODMyIDAuODE4ODQ4IDYuOTI3ODYgMC44MTg4NDhDNy4wNzczOSAwLjgxODg0OCA3LjIyNjkzIDAuODQ4NzU1IDcuMzc2NDYgMC45MDg1NjlDNy41MjYgMC45NjQxMTEgNy42NTIwNCAxLjA0MzE1IDcuNzU0NTggMS4xNDU2OUwxMS44ODE4IDUuMjc5M0MxMi4xMTI1IDUuNTEwMDEgMTIuMjI3OCA1Ljc3NzA0IDEyLjIyNzggNi4wODAzOEMxMi4yMjc4IDYuMzk2NTUgMTIuMTI1MyA2LjY1NTAzIDExLjkyMDIgNi44NTU4M0MxMS43MTk0IDcuMDUyMzcgMTEuNDY5NSA3LjE1MDYzIDExLjE3MDQgNy4xNTA2M0MxMC45OTk1IDcuMTUwNjMgMTAuODQ3OCA3LjExNjQ2IDEwLjcxNTQgNy4wNDgxQzEwLjU4NzIgNi45Nzk3NCAxMC40NzE5IDYuODk0MjkgMTAuMzY5MyA2Ljc5MTc1TDguOTMzNzggNS4zNTYyTDcuMzA1OTcgMy40MDc5Nkw3LjkyNzYxIDIuOTI3MzFMOC4wNDI5NyA1LjU5OTczVjEyLjAwMkM4LjA0Mjk3IDEyLjM1NjYgNy45NDA0MyAxMi42NDA3IDcuNzM1MzUgMTIuODU0NEM3LjUzMDI3IDEzLjA3MjMgNy4yNjExMSAxMy4xODEyIDYuOTI3ODYgMTMuMTgxMloiLGZpbGw6ImN1cnJlbnRDb2xvciJ9KX0pOmguanN4cygic3ZnIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL0NvbnRyb2xQYW5lbC50c3g6MTA5NiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoiMTAiLGhlaWdodDoiMTAiLHZpZXdCb3g6IjAgMCAxNCAxNCIsZmlsbDoibm9uZSIsc3Ryb2tlV2lkdGg6IjEuNSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltoLmpzeCgibGluZSIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9Db250cm9sUGFuZWwudHN4OjExMDciLHgxOiIxNCIseTE6IjAiLHgyOiIwIix5MjoiMTQifSksaC5qc3goImxpbmUiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29udHJvbFBhbmVsLnRzeDoxMTA4Iix4MToiMCIseTE6IjAiLHgyOiIxNCIseTI6IjE0In0pXX0pfSldfSksKEwuaXNUZXh0fHxMLmlzSW1hZ2V8fEwuaXNMaW5rKSYmaC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29udHJvbFBhbmVsLnRzeDoxMTE2IixjbGFzc05hbWU6InB4LTIuNSBwdC0zIGZsZXggZmxleC1jb2wgZ2FwLTIiLGNoaWxkcmVuOltMLmlzVGV4dCYmaC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29udHJvbFBhbmVsLnRzeDoxMTE4IixjbGFzc05hbWU6ImZsZXggZmxleC1jb2wgZ2FwLTEuNSIsY2hpbGRyZW46W2guanN4KCJsYWJlbCIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9Db250cm9sUGFuZWwudHN4OjExMTkiLGNsYXNzTmFtZToidGV4dC14cyB0ZXh0LVt2YXIoLS10ZXh0LXRlcnRpYXJ5KV0gcHgtMC41IixjaGlsZHJlbjoiVGV4dCBjb250ZW50In0pLGguanN4KCJ0ZXh0YXJlYSIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9Db250cm9sUGFuZWwudHN4OjExMjIiLHJlZjpzLHN0eWxlOnttaW5IZWlnaHQ6IjM0cHgiLG1heEhlaWdodDoiMjAwcHgifSxjbGFzc05hbWU6InctZnVsbCByZXNpemUteSByb3VuZGVkLVsxMHB4XSBib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IGJnLVt2YXIoLS1maWxsLXRzcC13aGl0ZS1tYWluKV0gcHgtMi41IHB5LTEuNSB0ZXh0LXNtIHRleHQtW3ZhcigtLXRleHQtcHJpbWFyeSldIHBsYWNlaG9sZGVyOnRleHQtW3ZhcigtLXRleHQtZGlzYWJsZSldIG91dGxpbmUtbm9uZSBmb2N1czpyaW5nLWluc2V0IGZvY3VzOnJpbmctWzFweF0gZm9jdXM6cmluZy1bdmFyKC0tYm9yZGVyLWRhcmspXSBvdmVyZmxvdy15LWF1dG8iLHZhbHVlOm50LG9uQ2hhbmdlOk09PmVvKE0udGFyZ2V0LnZhbHVlKSxwbGFjZWhvbGRlcjoiRWRpdCB0ZXh0IGNvbnRlbnQuLi4iLG9uSW5wdXQ6TT0+e2NvbnN0IHR0PU0udGFyZ2V0O3R0LnN0eWxlLmhlaWdodD0iYXV0byIsdHQuc3R5bGUuaGVpZ2h0PWAke01hdGgubWluKHR0LnNjcm9sbEhlaWdodCwyMDApfXB4YH19KV19KSxMLmlzSW1hZ2UmJmguanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL0NvbnRyb2xQYW5lbC50c3g6MTE0MiIsY2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGdhcC0xLjUiLGNoaWxkcmVuOltoLmpzeCgibGFiZWwiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29udHJvbFBhbmVsLnRzeDoxMTQzIixjbGFzc05hbWU6InRleHQteHMgdGV4dC1bdmFyKC0tdGV4dC10ZXJ0aWFyeSldIHB4LTAuNSIsY2hpbGRyZW46IkltYWdlIHNvdXJjZSJ9KSxoLmpzeCgiaW5wdXQiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29udHJvbFBhbmVsLnRzeDoxMTQ2Iix0eXBlOiJ0ZXh0IixjbGFzc05hbWU6InctZnVsbCB0ZXh0LXNtIHB4LTIuNSBweS0xLjUgcm91bmRlZC1bMTBweF0gYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBiZy1bdmFyKC0tZmlsbC10c3Atd2hpdGUtbWFpbildIHRleHQtW3ZhcigtLXRleHQtcHJpbWFyeSldIHBsYWNlaG9sZGVyOnRleHQtW3ZhcigtLXRleHQtZGlzYWJsZSldIG91dGxpbmUtbm9uZSBmb2N1czpyaW5nLWluc2V0IGZvY3VzOnJpbmctWzFweF0gZm9jdXM6cmluZy1bdmFyKC0tYm9yZGVyLWRhcmspXSB0cmFuc2l0aW9uLWFsbCIsdmFsdWU6aHQsb25DaGFuZ2U6TT0+RGEoTS50YXJnZXQudmFsdWUpLHBsYWNlaG9sZGVyOiJFZGl0IGltYWdlIHNvdXJjZSBVUkwifSldfSksTC5pc0xpbmsmJmguanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL0NvbnRyb2xQYW5lbC50c3g6MTE1NiIsY2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGdhcC0xLjUiLGNoaWxkcmVuOltoLmpzeCgibGFiZWwiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29udHJvbFBhbmVsLnRzeDoxMTU3IixjbGFzc05hbWU6InRleHQteHMgdGV4dC1bdmFyKC0tdGV4dC10ZXJ0aWFyeSldIHB4LTAuNSIsY2hpbGRyZW46IkxpbmsgVVJMIn0pLGguanN4KCJpbnB1dCIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9Db250cm9sUGFuZWwudHN4OjExNjAiLHR5cGU6InRleHQiLGNsYXNzTmFtZToidy1mdWxsIHRleHQtc20gcHgtMi41IHB5LTEuNSByb3VuZGVkLVsxMHB4XSBib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IGJnLVt2YXIoLS1maWxsLXRzcC13aGl0ZS1tYWluKV0gdGV4dC1bdmFyKC0tdGV4dC1wcmltYXJ5KV0gcGxhY2Vob2xkZXI6dGV4dC1bdmFyKC0tdGV4dC1kaXNhYmxlKV0gb3V0bGluZS1ub25lIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy1bMXB4XSBmb2N1czpyaW5nLVt2YXIoLS1ib3JkZXItZGFyayldIHRyYW5zaXRpb24tYWxsIix2YWx1ZTpfLG9uQ2hhbmdlOk09PklyKE0udGFyZ2V0LnZhbHVlKSxwbGFjZWhvbGRlcjoiRWRpdCBsaW5rIFVSTCAoaHJlZikifSldfSldfSksaC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29udHJvbFBhbmVsLnRzeDoxMTczIixjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0wIHB4LTIgcHQtMSBwYi0wIixjaGlsZHJlbjpbaC5qc3hzKCJidXR0b24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29udHJvbFBhbmVsLnRzeDoxMTc0IixvbkNsaWNrOigpPT5KKCJzdHlsZXMiKSxjbGFzc05hbWU6QWUuY24oInRleHQtc20gcHgtNCBweS0yIHRyYW5zaXRpb24tYWxsIHJlbGF0aXZlIG91dGxpbmUtbm9uZSIsaj09PSJzdHlsZXMiPyJ0ZXh0LVt2YXIoLS10ZXh0LXByaW1hcnkpXSI6InRleHQtW3ZhcigtLXRleHQtdGVydGlhcnkpXSBob3Zlcjp0ZXh0LVt2YXIoLS10ZXh0LXNlY29uZGFyeSldIGZvY3VzOnRleHQtW3ZhcigtLXRleHQtc2Vjb25kYXJ5KV0gYWN0aXZlOm9wYWNpdHktODAiKSxjaGlsZHJlbjpbIlN0eWxlIixqPT09InN0eWxlcyImJmguanN4KCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29udHJvbFBhbmVsLnRzeDoxMTg1IixjbGFzc05hbWU6ImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCByaWdodC0wIGgtMC41IGJnLVt2YXIoLS10ZXh0LXByaW1hcnkpXSByb3VuZGVkLWZ1bGwifSldfSksaC5qc3hzKCJidXR0b24iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29udHJvbFBhbmVsLnRzeDoxMTg4IixvbkNsaWNrOigpPT5KKCJzcGFjaW5nIiksY2xhc3NOYW1lOkFlLmNuKCJ0ZXh0LXNtIHB4LTQgcHktMiB0cmFuc2l0aW9uLWFsbCByZWxhdGl2ZSBvdXRsaW5lLW5vbmUiLGo9PT0ic3BhY2luZyI/InRleHQtW3ZhcigtLXRleHQtcHJpbWFyeSldIjoidGV4dC1bdmFyKC0tdGV4dC10ZXJ0aWFyeSldIGhvdmVyOnRleHQtW3ZhcigtLXRleHQtc2Vjb25kYXJ5KV0gZm9jdXM6dGV4dC1bdmFyKC0tdGV4dC1zZWNvbmRhcnkpXSBhY3RpdmU6b3BhY2l0eS04MCIpLGNoaWxkcmVuOlsiTGF5b3V0IixqPT09InNwYWNpbmciJiZoLmpzeCgiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL0NvbnRyb2xQYW5lbC50c3g6MTE5OSIsY2xhc3NOYW1lOiJhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgcmlnaHQtMCBoLTAuNSBiZy1bdmFyKC0tdGV4dC1wcmltYXJ5KV0gcm91bmRlZC1mdWxsIn0pXX0pXX0pXX0pLGguanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL0NvbnRyb2xQYW5lbC50c3g6MTIwNiIsY2xhc3NOYW1lOiJyZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gZmxleC0xIixjaGlsZHJlbjpbaC5qc3goImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9Db250cm9sUGFuZWwudHN4OjEyMDciLGNsYXNzTmFtZToidHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwIGVhc2UtaW4tb3V0IixzdHlsZTp7b3BhY2l0eTpqPT09InN0eWxlcyI/MTowLHRyYW5zZm9ybTpqPT09InN0eWxlcyI/InRyYW5zbGF0ZVgoMCkiOiJ0cmFuc2xhdGVYKC0yMHB4KSIscG9zaXRpb246aj09PSJzdHlsZXMiPyJyZWxhdGl2ZSI6ImFic29sdXRlIix3aWR0aDoiMTAwJSIscG9pbnRlckV2ZW50czpqPT09InN0eWxlcyI/ImF1dG8iOiJub25lIix2aXNpYmlsaXR5Omo9PT0ic3R5bGVzIj8idmlzaWJsZSI6ImhpZGRlbiJ9LGNoaWxkcmVuOmguanN4KG8wLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db250cm9sUGFuZWwvQ29udHJvbFBhbmVsLnRzeDoxMjIxIixyZXN1bHQ6TCxjb2xvcjpILGJhY2tncm91bmRDb2xvcjpydCxvbkNvbG9yQ2hhbmdlOm1pLG9uQmFja2dyb3VuZENvbG9yQ2hhbmdlOmdpLGZvbnRTaXplOnh0LGZvbnRXZWlnaHQ6eWwsZm9udEZhbWlseTpDYSx0ZXh0QWxpZ246Z2UsdGV4dERlY29yYXRpb246VWwsb25Gb250U2l6ZUNoYW5nZTpsbyxvbkZvbnRXZWlnaHRDaGFuZ2U6TWEsb25Gb250RmFtaWx5Q2hhbmdlOm9vLG9uVGV4dEFsaWduQ2hhbmdlOlZsLG9uVGV4dERlY29yYXRpb25DaGFuZ2U6WGwsYm9yZGVyUmFkaXVzOnRlLGJvcmRlcldpZHRoOld0LGJvcmRlclN0eWxlOiR0LGJvcmRlckNvbG9yOlRhLG9uQm9yZGVyUmFkaXVzQ2hhbmdlOmFvLG9uQm9yZGVyV2lkdGhDaGFuZ2U6dmksb25Cb3JkZXJTdHlsZUNoYW5nZTpiaSxvbkJvcmRlckNvbG9yQ2hhbmdlOmJsLGRpc3BsYXk6bmwsb3BhY2l0eTpHbCxvYmplY3RGaXQ6RWEsb25EaXNwbGF5Q2hhbmdlOkFhLG9uT3BhY2l0eUNoYW5nZTpabCxvbk9iamVjdEZpdENoYW5nZTpWdH0pfSksaC5qc3goImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbnRyb2xQYW5lbC9Db250cm9sUGFuZWwudHN4OjEyNTMiLGNsYXNzTmFtZToidHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwIGVhc2UtaW4tb3V0IixzdHlsZTp7b3BhY2l0eTpqPT09InNwYWNpbmciPzE6MCx0cmFuc2Zvcm06aj09PSJzcGFjaW5nIj8idHJhbnNsYXRlWCgwKSI6InRyYW5zbGF0ZVgoMjBweCkiLHBvc2l0aW9uOmo9PT0ic3BhY2luZyI/InJlbGF0aXZlIjoiYWJzb2x1dGUiLHdpZHRoOiIxMDAlIixwb2ludGVyRXZlbnRzOmo9PT0ic3BhY2luZyI/ImF1dG8iOiJub25lIix2aXNpYmlsaXR5Omo9PT0ic3BhY2luZyI/InZpc2libGUiOiJoaWRkZW4ifSxjaGlsZHJlbjpoLmpzeChsMCx7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29udHJvbFBhbmVsL0NvbnRyb2xQYW5lbC50c3g6MTI2NyIscGFkZGluZ1RvcDptZSxwYWRkaW5nUmlnaHQ6TXQscGFkZGluZ0JvdHRvbTpxLHBhZGRpbmdMZWZ0OmJ0LG9uUGFkZGluZ1RvcENoYW5nZTpwaSxvblBhZGRpbmdSaWdodENoYW5nZTpvbCxvblBhZGRpbmdCb3R0b21DaGFuZ2U6dHMsb25QYWRkaW5nTGVmdENoYW5nZTplZSxtYXJnaW5Ub3A6TyxtYXJnaW5SaWdodDpHLG1hcmdpbkJvdHRvbTpzdCxtYXJnaW5MZWZ0Omd0LG9uTWFyZ2luVG9wQ2hhbmdlOnBlLG9uTWFyZ2luUmlnaHRDaGFuZ2U6WWwsb25NYXJnaW5Cb3R0b21DaGFuZ2U6bm8sb25NYXJnaW5MZWZ0Q2hhbmdlOmVzLHdpZHRoOkp0LGhlaWdodDpDZSxvbldpZHRoQ2hhbmdlOmxzLG9uSGVpZ2h0Q2hhbmdlOnlpfSl9KV19KV19KX0pfWNvbnN0IHIwPWVpLmNyZWF0ZU9wZW5lcihpMCx7c2luZ2xldG9uOiEwfSk7Y2xhc3MgczB7aGlzdG9yeT1bXTtjdXJyZW50SW5kZXg9LTE7bGlzdGVuZXJzPVtdO2VsZW1lbnRDYWNoZT1uZXcgTWFwO2FkZEVkaXQoaSl7dGhpcy5oaXN0b3J5PXRoaXMuaGlzdG9yeS5zbGljZSgwLHRoaXMuY3VycmVudEluZGV4KzEpO2NvbnN0IGM9dGhpcy5nZXRDYWNoZWRFbGVtZW50KGkudGFyZ2V0RGF0YS5pZCxpLnRhcmdldERhdGEpO2MmJihvaShjKSxpLnRhcmdldD1jKSx0aGlzLmhpc3RvcnkucHVzaChpKSx0aGlzLmN1cnJlbnRJbmRleD10aGlzLmhpc3RvcnkubGVuZ3RoLTEsdGhpcy5ub3RpZnlMaXN0ZW5lcnMoKX11bmRvKCl7aWYoIXRoaXMuY2FuVW5kbygpKXJldHVybiBudWxsO2NvbnN0IGk9dGhpcy5oaXN0b3J5W3RoaXMuY3VycmVudEluZGV4XSxjPWkudGFyZ2V0RGF0YS5pZDtpZihpLmNoYW5nZXMuZGVsZXRlZCl7Y29uc3QgZD1VdShpLmNoYW5nZXMuZGVsZXRlZCk7ZCYmKHRoaXMuZWxlbWVudENhY2hlLnNldChjLG5ldyBXZWFrUmVmKGQpKSxpLnRhcmdldD1kKX10aGlzLmN1cnJlbnRJbmRleC0tO2NvbnN0IHM9dGhpcy5yZWJ1aWxkRWxlbWVudFN0YXRlKGMsaS50YXJnZXREYXRhKTtyZXR1cm4gcyYmKGkudGFyZ2V0PXMpLHRoaXMubm90aWZ5TGlzdGVuZXJzKCksaX1yZWRvKCl7aWYoIXRoaXMuY2FuUmVkbygpKXJldHVybiBudWxsO3RoaXMuY3VycmVudEluZGV4Kys7Y29uc3QgaT10aGlzLmhpc3RvcnlbdGhpcy5jdXJyZW50SW5kZXhdLGM9dGhpcy5yZWJ1aWxkRWxlbWVudFN0YXRlKGkudGFyZ2V0RGF0YS5pZCxpLnRhcmdldERhdGEpO3JldHVybiBjJiYoaS50YXJnZXQ9YyksdGhpcy5ub3RpZnlMaXN0ZW5lcnMoKSxpfWNhblVuZG8oKXtyZXR1cm4gdGhpcy5jdXJyZW50SW5kZXg+PTB9Y2FuUmVkbygpe3JldHVybiB0aGlzLmN1cnJlbnRJbmRleDx0aGlzLmhpc3RvcnkubGVuZ3RoLTF9Z2V0QWN0aXZlRWRpdHMoKXtyZXR1cm4gdGhpcy5oaXN0b3J5LnNsaWNlKDAsdGhpcy5jdXJyZW50SW5kZXgrMSl9aGFzRWRpdHMoKXtyZXR1cm4gdGhpcy5jdXJyZW50SW5kZXg+PTB9Y2xlYXIoKXtjb25zdCBpPXRoaXMuZ2V0QWN0aXZlRWRpdHMoKTtmb3IobGV0IHM9aS5sZW5ndGgtMTtzPj0wO3MtLSl7Y29uc3QgZD1pW3NdO2lmKGQuY2hhbmdlcy5kZWxldGVkKXtjb25zdCBtPVV1KGQuY2hhbmdlcy5kZWxldGVkKTttJiYodGhpcy5lbGVtZW50Q2FjaGUuc2V0KGQudGFyZ2V0RGF0YS5pZCxuZXcgV2Vha1JlZihtKSksZC50YXJnZXQ9bSl9fWNvbnN0IGM9dGhpcy5jb2xsZWN0VGFyZ2V0cygpO2Zvcihjb25zdCBzIG9mIGMudmFsdWVzKCkpV3Iocyk7dGhpcy5oaXN0b3J5PVtdLHRoaXMuY3VycmVudEluZGV4PS0xLHRoaXMuZWxlbWVudENhY2hlLmNsZWFyKCksdGhpcy5ub3RpZnlMaXN0ZW5lcnMoKX1jbGVhckNvbW1lbnRzKCl7Y29uc3QgaT10aGlzLmdldEFjdGl2ZUVkaXRzKCksYz1uZXcgU2V0O2Zvcihjb25zdCBzIG9mIGkpcy5jaGFuZ2VzLmNvbW1lbnQmJmMuYWRkKHMudGFyZ2V0RGF0YS5pZCk7Zm9yKGNvbnN0IHMgb2YgYyl7Y29uc3QgZD10aGlzLmdldENhY2hlZEVsZW1lbnQocyxpLmZpbmQobT0+bS50YXJnZXREYXRhLmlkPT09cykudGFyZ2V0RGF0YSk7ZCYmZC5fY29tbWVudCYmZGVsZXRlIGQuX2NvbW1lbnR9dGhpcy5oaXN0b3J5PXRoaXMuaGlzdG9yeS5tYXAocz0+e2lmKCFzLmNoYW5nZXMuY29tbWVudClyZXR1cm4gcztjb25zdHtjb21tZW50OmQsLi4ubX09cy5jaGFuZ2VzO3JldHVybiBtLnRleHRDb250ZW50fHxtLnNyY3x8bS5ocmVmfHxtLmNsYXNzTmFtZXx8bS5kZWxldGVkfHxtLnN0eWxlJiZPYmplY3Qua2V5cyhtLnN0eWxlKS5sZW5ndGg+MD97Li4ucyxjaGFuZ2VzOm19Om51bGx9KS5maWx0ZXIocz0+cyE9PW51bGwpLHRoaXMuY3VycmVudEluZGV4Pj10aGlzLmhpc3RvcnkubGVuZ3RoJiYodGhpcy5jdXJyZW50SW5kZXg9dGhpcy5oaXN0b3J5Lmxlbmd0aC0xKSx0aGlzLm5vdGlmeUxpc3RlbmVycygpfW9uQ2hhbmdlKGkpe3JldHVybiB0aGlzLmxpc3RlbmVycy5wdXNoKGkpLCgpPT57dGhpcy5saXN0ZW5lcnM9dGhpcy5saXN0ZW5lcnMuZmlsdGVyKGM9PmMhPT1pKX19bm90aWZ5TGlzdGVuZXJzKCl7Zm9yKGNvbnN0IGkgb2YgdGhpcy5saXN0ZW5lcnMpaSgpfWdldENhY2hlZEVsZW1lbnQoaSxjKXtjb25zdCBzPXRoaXMuZWxlbWVudENhY2hlLmdldChpKTtpZihzKXtjb25zdCBtPXMuZGVyZWYoKTtpZihtJiZkb2N1bWVudC5jb250YWlucyhtKSlyZXR1cm4gbTt0aGlzLmVsZW1lbnRDYWNoZS5kZWxldGUoaSl9Y29uc3QgZD1YZyhjKTtyZXR1cm4gZCYmdGhpcy5lbGVtZW50Q2FjaGUuc2V0KGksbmV3IFdlYWtSZWYoZCkpLGR9cmVidWlsZEVsZW1lbnRTdGF0ZShpLGMpe2NvbnN0IHM9dGhpcy5nZXRDYWNoZWRFbGVtZW50KGksYyk7aWYoIXMpcmV0dXJuIG51bGw7aWYob2kocyksV3IocyksdGhpcy5jdXJyZW50SW5kZXg8MClyZXR1cm4gcztmb3IobGV0IGQ9MDtkPD10aGlzLmN1cnJlbnRJbmRleDtkKyspe2NvbnN0IG09dGhpcy5oaXN0b3J5W2RdO20udGFyZ2V0RGF0YS5pZD09PWkmJihtLnRhcmdldD1zLHRoaXMuYXBwbHlDaGFuZ2VzKHMsbS5jaGFuZ2VzKSl9cmV0dXJuIHN9YXBwbHlDaGFuZ2VzKGksYyl7aWYoYy5kZWxldGVkKXtpLnBhcmVudEVsZW1lbnQmJmRvY3VtZW50LmNvbnRhaW5zKGkpJiZpLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoaSk7cmV0dXJufWlmKGMudGV4dENvbnRlbnQmJmkudGV4dENvbnRlbnQhPT1udWxsJiYoaS50ZXh0Q29udGVudD1jLnRleHRDb250ZW50Lm1vZGlmaWVkKSxjLnNyYyYmInNyYyJpbiBpJiYoaSBpbnN0YW5jZW9mIFNWR0VsZW1lbnQ/aS5zZXRBdHRyaWJ1dGUoInNyYyIsYy5zcmMubW9kaWZpZWQpOmkuc3JjPWMuc3JjLm1vZGlmaWVkKSxjLmhyZWYmJiJocmVmImluIGkmJihpIGluc3RhbmNlb2YgU1ZHRWxlbWVudD9pLnNldEF0dHJpYnV0ZSgiaHJlZiIsYy5ocmVmLm1vZGlmaWVkKTppLmhyZWY9Yy5ocmVmLm1vZGlmaWVkKSxjLmNsYXNzTmFtZSYmKGkgaW5zdGFuY2VvZiBTVkdFbGVtZW50P2kuc2V0QXR0cmlidXRlKCJjbGFzcyIsYy5jbGFzc05hbWUubW9kaWZpZWQpOmkgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmKGkuY2xhc3NOYW1lPWMuY2xhc3NOYW1lLm1vZGlmaWVkKSksYy5jb21tZW50JiYoaS5fY29tbWVudD1jLmNvbW1lbnQubW9kaWZpZWQpLGMuc3R5bGUpe2NvbnN0IHM9T2JqZWN0LmVudHJpZXMoYy5zdHlsZSk7Zm9yKGNvbnN0W2QsbV1vZiBzKVFnKGksZCxtLm1vZGlmaWVkKX19Y29sbGVjdFRhcmdldHMoKXtjb25zdCBpPW5ldyBNYXAsYz10aGlzLmN1cnJlbnRJbmRleD49MD90aGlzLmhpc3Rvcnkuc2xpY2UoMCx0aGlzLmN1cnJlbnRJbmRleCsxKTpbXTtmb3IoY29uc3QgcyBvZiBjKXtjb25zdCBkPXMudGFyZ2V0RGF0YS5pZDtpZihpLmhhcyhkKSljb250aW51ZTtjb25zdCBtPXRoaXMuZ2V0Q2FjaGVkRWxlbWVudChkLHMudGFyZ2V0RGF0YSk7bSYmKG9pKG0pLHMudGFyZ2V0PW0saS5zZXQoZCxtKSl9cmV0dXJuIGl9fWNsYXNzIGMwe2hvdmVyVGFyZ2V0PW51bGw7YWN0aXZlVGFyZ2V0PW51bGw7cG9pbnRlckRvd249ITE7ZGlzcG9zZVNlbGVjdG9ySW5wdXQ9KCk9Pnt9O2hpZ2hsaWdodGVyPW5ldyBFZztjdXJzb3JTdHlsZUVsZW1lbnQ9bnVsbDtpc0RpcmVjdEVkaXRpbmc9ITE7cmVtb3ZlRW50ZXJLZXlMaXN0ZW5lcj1udWxsO2VkaXRIaXN0b3J5PW5ldyBzMDtkaXNwb3NlRWRpdFRvb2xiYXI9bnVsbDtkaXNwb3NlSGlzdG9yeUxpc3RlbmVyPW51bGw7ZGlzcG9zZUNvbW1lbnRNYXJrZXJzPW51bGw7aW5pdCgpe1B0Lmxpc3Rlbk1lc3NhZ2Uoe3R5cGU6ImVuYWJsZUVkaXRNb2RlIixjYWxsYmFjazooKT0+e3RoaXMuZW5hYmxlKCl9fSksUHQubGlzdGVuTWVzc2FnZSh7dHlwZToiZGlzYWJsZUVkaXRNb2RlIixjYWxsYmFjazppPT57dGhpcy5kaXNhYmxlKGkua2VlcERvbUNoYW5nZXMpLHRoaXMuY2FuY2VsKCksdGhpcy5kaXNwb3NlU2VsZWN0b3JJbnB1dCgpfX0pLFB0Lmxpc3Rlbk1lc3NhZ2Uoe3R5cGU6ImhpZGVFZGl0VG9vbEJhciIsY2FsbGJhY2s6KCk9Pnt0aGlzLmhpZGVFZGl0VG9vbGJhcigpfX0pfWVuYWJsZSgpe3RoaXMuaGlnaGxpZ2h0ZXIubW91bnQoKSx0aGlzLmluamVjdEN1cnNvclN0eWxlKCksdGhpcy5kaXNwb3NlSGlzdG9yeUxpc3RlbmVyPy4oKSx0aGlzLmRpc3Bvc2VIaXN0b3J5TGlzdGVuZXI9dGhpcy5lZGl0SGlzdG9yeS5vbkNoYW5nZSgoKT0+e3RoaXMuaGlnaGxpZ2h0ZXIuc2NoZWR1bGVSZW5kZXIoKX0pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJvdmVyIix0aGlzLmhhbmRsZVBvaW50ZXJPdmVyLCEwKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsdGhpcy5oYW5kbGVQb2ludGVyRG93biwhMCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm91dCIsdGhpcy5oYW5kbGVQb2ludGVyT3V0LCEwKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5oYW5kbGVDbGljaywhMCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5oYW5kbGVBcnJvd0tleU5hdmlnYXRpb24sITApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuaGFuZGxlVW5kb1JlZG8sITApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuaGFuZGxlRGVsZXRlLCEwKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLmhhbmRsZUdsb2JhbEVzY2FwZSwhMCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5oYW5kbGVTY3JvbGxPdXRPZlZpZXcsITApLHRoaXMuc2hvd0VkaXRUb29sYmFySWZOZWVkZWQoKSx0aGlzLnNob3dDb21tZW50TWFya2Vyc0lmTmVlZGVkKCl9ZGlzYWJsZShpPSExKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVyb3ZlciIsdGhpcy5oYW5kbGVQb2ludGVyT3ZlciwhMCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLHRoaXMuaGFuZGxlUG9pbnRlckRvd24sITApLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJvdXQiLHRoaXMuaGFuZGxlUG9pbnRlck91dCwhMCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuaGFuZGxlQ2xpY2ssITApLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuaGFuZGxlQXJyb3dLZXlOYXZpZ2F0aW9uLCEwKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLmhhbmRsZVVuZG9SZWRvLCEwKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLmhhbmRsZURlbGV0ZSwhMCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5oYW5kbGVHbG9iYWxFc2NhcGUsITApLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuaGFuZGxlU2Nyb2xsT3V0T2ZWaWV3LCEwKSx0aGlzLmhpZ2hsaWdodGVyLnVubW91bnQoKSx0aGlzLnJlbW92ZUN1cnNvclN0eWxlKCksdGhpcy5leGl0RGlyZWN0RWRpdE1vZGUoKSx0aGlzLmhpZGVFZGl0VG9vbGJhcigpLGl8fHRoaXMuZWRpdEhpc3RvcnkuY2xlYXIoKSx0aGlzLmhpZGVDb21tZW50TWFya2VycygpLHRoaXMuZGlzcG9zZUhpc3RvcnlMaXN0ZW5lcj8uKCksdGhpcy5kaXNwb3NlSGlzdG9yeUxpc3RlbmVyPW51bGwsdGhpcy5ob3ZlclRhcmdldD1udWxsLHRoaXMuYWN0aXZlVGFyZ2V0PW51bGwsdGhpcy5wb2ludGVyRG93bj0hMX1jYW5jZWwoKXt0aGlzLmV4aXREaXJlY3RFZGl0TW9kZSgpLHRoaXMucmVtb3ZlRW50ZXJLZXlMaXN0ZW5lcj8uKCksdGhpcy5yZW1vdmVFbnRlcktleUxpc3RlbmVyPW51bGwsdGhpcy5wb2ludGVyRG93bj0hMSx0aGlzLmFjdGl2ZVRhcmdldD1udWxsLHRoaXMuaG92ZXJUYXJnZXQ9bnVsbCx0aGlzLmhpZ2hsaWdodGVyLnNldEFjdGl2ZVRhcmdldChudWxsKSx0aGlzLmhpZ2hsaWdodGVyLnNldEhvdmVyVGFyZ2V0KG51bGwpfWhhbmRsZVBvaW50ZXJPdmVyPWk9Pntjb25zdCBjPWkudGFyZ2V0O2lmKCFLcihjKXx8IXRoaXMuaXNTZWxlY3RhYmxlRWxlbWVudChjKSl7dGhpcy5ob3ZlclRhcmdldD1udWxsLHRoaXMuaGlnaGxpZ2h0ZXIuc2V0SG92ZXJUYXJnZXQobnVsbCk7cmV0dXJufWlmKHRoaXMuaXNJZ25vcmVkRWxlbWVudChjKSl7dGhpcy5ob3ZlclRhcmdldD1udWxsLHRoaXMuaGlnaGxpZ2h0ZXIuc2V0SG92ZXJUYXJnZXQobnVsbCk7cmV0dXJufXRoaXMuaG92ZXJUYXJnZXQ9Yyx0aGlzLmhpZ2hsaWdodGVyLnNldEhvdmVyVGFyZ2V0KHRoaXMuaG92ZXJUYXJnZXQpfTtoYW5kbGVQb2ludGVyT3V0PWk9PntpLnRhcmdldCYmIXRoaXMuaXNTZWxlY3RhYmxlRWxlbWVudChpLnRhcmdldCl8fGkucmVsYXRlZFRhcmdldCYmaS5yZWxhdGVkVGFyZ2V0IGluc3RhbmNlb2YgTm9kZSYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKGkucmVsYXRlZFRhcmdldCl8fCh0aGlzLmhvdmVyVGFyZ2V0PW51bGwsdGhpcy5oaWdobGlnaHRlci5zZXRIb3ZlclRhcmdldChudWxsKSl9O2hhbmRsZVNjcm9sbE91dE9mVmlldz0oKT0+eyF0aGlzLmFjdGl2ZVRhcmdldHx8IXRoaXMucG9pbnRlckRvd258fHRoaXMuaXNEaXJlY3RFZGl0aW5nfHxZZyh0aGlzLmFjdGl2ZVRhcmdldCkmJih0aGlzLmRpc3Bvc2VTZWxlY3RvcklucHV0KCksdGhpcy5leGl0RGlyZWN0RWRpdE1vZGUoKSx0aGlzLnJlbW92ZUVudGVyS2V5TGlzdGVuZXI/LigpLHRoaXMucmVtb3ZlRW50ZXJLZXlMaXN0ZW5lcj1udWxsLHRoaXMucG9pbnRlckRvd249ITEsdGhpcy5hY3RpdmVUYXJnZXQ9bnVsbCx0aGlzLmhvdmVyVGFyZ2V0PW51bGwsdGhpcy5oaWdobGlnaHRlci5zZXRBY3RpdmVUYXJnZXQobnVsbCksdGhpcy5oaWdobGlnaHRlci5zZXRIb3ZlclRhcmdldChudWxsKSl9O3NlbGVjdEVsZW1lbnQoaSxjKXtpZih0aGlzLmFjdGl2ZVRhcmdldCYmaT09PXRoaXMuYWN0aXZlVGFyZ2V0JiZ4YShpKSl7dGhpcy5lbnRlckRpcmVjdEVkaXRNb2RlKGkpO3JldHVybn10aGlzLnBvaW50ZXJEb3duJiYodGhpcy5kaXNwb3NlU2VsZWN0b3JJbnB1dCgpLHRoaXMuZXhpdERpcmVjdEVkaXRNb2RlKCksdGhpcy5yZW1vdmVFbnRlcktleUxpc3RlbmVyPy4oKSx0aGlzLnJlbW92ZUVudGVyS2V5TGlzdGVuZXI9bnVsbCksdGhpcy5wb2ludGVyRG93bj0hMCx0aGlzLmFjdGl2ZVRhcmdldD1pLHRoaXMuaG92ZXJUYXJnZXQ9aSx0aGlzLmhpZ2hsaWdodGVyLnNldEFjdGl2ZVRhcmdldCh0aGlzLmFjdGl2ZVRhcmdldCksdGhpcy5oaWdobGlnaHRlci5zZXRIb3ZlclRhcmdldCh0aGlzLmhvdmVyVGFyZ2V0KSx4YShpKSYmdGhpcy5zZXR1cEVudGVyS2V5TGlzdGVuZXIoKTtjb25zdCBzPWN8fCgoKT0+e2NvbnN0IG09aS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gbmV3IE1vdXNlRXZlbnQoImNsaWNrIix7Y2xpZW50WDptLmxlZnQrbS53aWR0aC8yLGNsaWVudFk6bS50b3ArbS5oZWlnaHQvMixidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KX0pKCksZD1yMCh7dGFyZ2V0RWxlbWVudDp0aGlzLmFjdGl2ZVRhcmdldCxtb3VzZUV2ZW50OnMsaGlnaGxpZ2h0ZXI6dGhpcy5oaWdobGlnaHRlcixvblNhdmVDaGFuZ2VzOm09Pnt0aGlzLmVkaXRIaXN0b3J5LmFkZEVkaXQoe3RhcmdldDp0aGlzLmFjdGl2ZVRhcmdldCx0YXJnZXREYXRhOm0uZWxlbWVudCxjaGFuZ2VzOm0uY2hhbmdlcyxzY3JlZW5zaG90Om0uc2NyZWVuc2hvdH0pLHRoaXMuc2hvd0VkaXRUb29sYmFySWZOZWVkZWQoKSx0aGlzLnNob3dDb21tZW50TWFya2Vyc0lmTmVlZGVkKCl9LG9uRGlzcG9zZWQ6KCk9Pnt0aGlzLmNhbmNlbCgpfX0pO3RoaXMuZGlzcG9zZVNlbGVjdG9ySW5wdXQ9KCk9PntkPy5kaXNwb3NlKCl9fWhhbmRsZVBvaW50ZXJEb3duPWk9Pntjb25zdCBjPWkudGFyZ2V0OyFLcihjKXx8IXRoaXMuaXNTZWxlY3RhYmxlRWxlbWVudChjKXx8dGhpcy5pc0lnbm9yZWRFbGVtZW50KGMpfHwoaS5wcmV2ZW50RGVmYXVsdCgpLGkuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5zZWxlY3RFbGVtZW50KGMsaSkpfTtoYW5kbGVDbGljaz1pPT57Y29uc3QgYz1pLnRhcmdldDshKGMgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkmJiEoYyBpbnN0YW5jZW9mIFNWR0VsZW1lbnQpfHx0aGlzLmlzSWdub3JlZEVsZW1lbnQoYyl8fChpLnByZXZlbnREZWZhdWx0KCksaS5zdG9wUHJvcGFnYXRpb24oKSxpLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKX07aGFuZGxlQXJyb3dLZXlOYXZpZ2F0aW9uPWk9PntpZih0aGlzLmlzRGlyZWN0RWRpdGluZ3x8IVsiQXJyb3dVcCIsIkFycm93RG93biIsIkFycm93TGVmdCIsIkFycm93UmlnaHQiXS5pbmNsdWRlcyhpLmtleSkpcmV0dXJuO2NvbnN0IGM9aS50YXJnZXQ7aWYoYyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KXtjb25zdCBSPWMudGFnTmFtZTtpZihbIklOUFVUIiwiVEVYVEFSRUEiLCJTRUxFQ1QiXS5pbmNsdWRlcyhSKXx8Yy5pc0NvbnRlbnRFZGl0YWJsZSlyZXR1cm59Y29uc3Qgcz1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2lmKHMgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCl7Y29uc3QgUj1zLnRhZ05hbWU7aWYoWyJJTlBVVCIsIlRFWFRBUkVBIiwiU0VMRUNUIl0uaW5jbHVkZXMoUil8fHMuaXNDb250ZW50RWRpdGFibGUpcmV0dXJuO2xldCBDPXM7Zm9yKDtDOyl7aWYoQy5oYXNBdHRyaWJ1dGUoYWwpKXJldHVybjtDPUMucGFyZW50RWxlbWVudH19aWYoIXRoaXMuYWN0aXZlVGFyZ2V0KXJldHVybjtpLnByZXZlbnREZWZhdWx0KCksaS5zdG9wUHJvcGFnYXRpb24oKTtjb25zdCBtPXtBcnJvd1VwOiJ1cCIsQXJyb3dEb3duOiJkb3duIixBcnJvd0xlZnQ6ImxlZnQiLEFycm93UmlnaHQ6InJpZ2h0In1baS5rZXldO2lmKCFtKXJldHVybjtjb25zdCB4PSRnKHRoaXMuYWN0aXZlVGFyZ2V0LG0sUj0+dGhpcy5pc0lnbm9yZWRFbGVtZW50KFIpKTt4JiYoS2coeCksdGhpcy5zZWxlY3RFbGVtZW50KHgpKX07c2V0dXBFbnRlcktleUxpc3RlbmVyKCl7Y29uc3QgaT1jPT57aWYoYy5rZXk9PT0iRW50ZXIiJiYhYy5zaGlmdEtleSYmIWMuY3RybEtleSYmIWMubWV0YUtleSl7Y29uc3Qgcz1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2lmKHMgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCl7Y29uc3QgZD1zLnRhZ05hbWU7aWYoWyJJTlBVVCIsIlRFWFRBUkVBIiwiU0VMRUNUIl0uaW5jbHVkZXMoZCl8fHMuaXNDb250ZW50RWRpdGFibGUpcmV0dXJuO2xldCBtPXM7Zm9yKDttOyl7aWYobS5oYXNBdHRyaWJ1dGUoYWwpKXJldHVybjttPW0ucGFyZW50RWxlbWVudH19IXRoaXMuaXNEaXJlY3RFZGl0aW5nJiZ0aGlzLmFjdGl2ZVRhcmdldCYmeGEodGhpcy5hY3RpdmVUYXJnZXQpJiYoYy5wcmV2ZW50RGVmYXVsdCgpLGMuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5lbnRlckRpcmVjdEVkaXRNb2RlKHRoaXMuYWN0aXZlVGFyZ2V0KSl9fTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixpLCEwKSx0aGlzLnJlbW92ZUVudGVyS2V5TGlzdGVuZXI9KCk9Pntkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIixpLCEwKX19ZW50ZXJEaXJlY3RFZGl0TW9kZShpKXtpZih0aGlzLmlzRGlyZWN0RWRpdGluZylyZXR1cm47dGhpcy5pc0RpcmVjdEVkaXRpbmc9ITAsdGhpcy5yZW1vdmVFbnRlcktleUxpc3RlbmVyPy4oKSx0aGlzLnJlbW92ZUVudGVyS2V5TGlzdGVuZXI9bnVsbCxqdShpLCEwKSxpIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJnNldFRpbWVvdXQoKCk9Pntjb25zdCBtPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCkseD13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7bS5zZWxlY3ROb2RlQ29udGVudHMoaSkseD8ucmVtb3ZlQWxsUmFuZ2VzKCkseD8uYWRkUmFuZ2UobSl9LDApO2NvbnN0IGM9KCk9Pnt0aGlzLmV4aXREaXJlY3RFZGl0TW9kZSgpfSxzPW09PnttIGluc3RhbmNlb2YgS2V5Ym9hcmRFdmVudCYmbS5rZXk9PT0iRXNjYXBlIiYmdGhpcy5leGl0RGlyZWN0RWRpdE1vZGUoKX0sZD0oKT0+e3RoaXMuaGlnaGxpZ2h0ZXIuc2NoZWR1bGVSZW5kZXIoKX07aS5hZGRFdmVudExpc3RlbmVyKCJibHVyIixjLHtvbmNlOiEwfSksaS5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixzKSxpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixkKSxpLl9lZGl0TW9kZUNsZWFudXA9KCk9PntpLnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLGMpLGkucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIscyksaS5yZW1vdmVFdmVudExpc3RlbmVyKCJpbnB1dCIsZCl9fWV4aXREaXJlY3RFZGl0TW9kZSgpe2lmKHRoaXMuaXNEaXJlY3RFZGl0aW5nJiYodGhpcy5pc0RpcmVjdEVkaXRpbmc9ITEsdGhpcy5hY3RpdmVUYXJnZXQpKXtqdSh0aGlzLmFjdGl2ZVRhcmdldCwhMSk7Y29uc3QgaT10aGlzLmFjdGl2ZVRhcmdldC5fZWRpdE1vZGVDbGVhbnVwO2kmJihpKCksZGVsZXRlIHRoaXMuYWN0aXZlVGFyZ2V0Ll9lZGl0TW9kZUNsZWFudXApLHhhKHRoaXMuYWN0aXZlVGFyZ2V0KSYmdGhpcy5zZXR1cEVudGVyS2V5TGlzdGVuZXIoKX19aXNJZ25vcmVkRWxlbWVudChpKXtjb25zdCBjPWkudGFnTmFtZTtpZihuZXcgU2V0KFsiU0NSSVBUIiwiU1RZTEUiXSkuaGFzKGMpfHxpLmhhc0F0dHJpYnV0ZShEdSkpcmV0dXJuITA7bGV0IHM9aTtmb3IoO3M7KXtpZihzLmhhc0F0dHJpYnV0ZShhbCkpcmV0dXJuITA7cz1zLnBhcmVudEVsZW1lbnR9cmV0dXJuITF9aXNTZWxlY3RhYmxlRWxlbWVudChpKXtyZXR1cm4hIWkmJihpIGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fGkgaW5zdGFuY2VvZiBTVkdFbGVtZW50KX1pbmplY3RDdXJzb3JTdHlsZSgpe2lmKHRoaXMuY3Vyc29yU3R5bGVFbGVtZW50KXJldHVybjtjb25zdCBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7aS50ZXh0Q29udGVudD1gCiAgICAgICogeyBjdXJzb3I6IGNyb3NzaGFpciAhaW1wb3J0YW50OyB9CiAgICAgIFtjb250ZW50ZWRpdGFibGU9InRydWUiXSwgW2NvbnRlbnRlZGl0YWJsZT0icGxhaW50ZXh0LW9ubHkiXSB7IGN1cnNvcjogdGV4dCAhaW1wb3J0YW50OyB9CiAgICBgLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoaSksdGhpcy5jdXJzb3JTdHlsZUVsZW1lbnQ9aX1yZW1vdmVDdXJzb3JTdHlsZSgpe3RoaXMuY3Vyc29yU3R5bGVFbGVtZW50JiYodGhpcy5jdXJzb3JTdHlsZUVsZW1lbnQucmVtb3ZlKCksdGhpcy5jdXJzb3JTdHlsZUVsZW1lbnQ9bnVsbCl9aGFuZGxlVW5kb1JlZG89aT0+e2NvbnN0IGM9aS5rZXkudG9Mb3dlckNhc2UoKSxzPShpLmN0cmxLZXl8fGkubWV0YUtleSkmJmM9PT0ieiImJiFpLnNoaWZ0S2V5LGQ9KGkuY3RybEtleXx8aS5tZXRhS2V5KSYmKGM9PT0ieiImJmkuc2hpZnRLZXl8fGM9PT0ieSIpO2lmKCFzJiYhZClyZXR1cm47Y29uc3QgbT1pLnRhcmdldDtpZihtIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpe2NvbnN0IEM9bS50YWdOYW1lO2lmKFsiSU5QVVQiLCJURVhUQVJFQSIsIlNFTEVDVCJdLmluY2x1ZGVzKEMpfHxtLmlzQ29udGVudEVkaXRhYmxlKXJldHVybn1jb25zdCB4PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7aWYoeCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KXtjb25zdCBDPXgudGFnTmFtZTtpZihbIklOUFVUIiwiVEVYVEFSRUEiLCJTRUxFQ1QiXS5pbmNsdWRlcyhDKXx8eC5pc0NvbnRlbnRFZGl0YWJsZSlyZXR1cm47bGV0IHY9eDtmb3IoO3Y7KXtpZih2Lmhhc0F0dHJpYnV0ZShhbCkpcmV0dXJuO3Y9di5wYXJlbnRFbGVtZW50fX1pLnByZXZlbnREZWZhdWx0KCksaS5zdG9wUHJvcGFnYXRpb24oKTtsZXQgUj1udWxsO3M/KFI9dGhpcy5lZGl0SGlzdG9yeS51bmRvKCksdGhpcy5oaWdobGlnaHRlci5zY2hlZHVsZVJlbmRlcigpKTpkJiYoUj10aGlzLmVkaXRIaXN0b3J5LnJlZG8oKSx0aGlzLmhpZ2hsaWdodGVyLnNjaGVkdWxlUmVuZGVyKCkpLFImJlIudGFyZ2V0JiZkb2N1bWVudC5jb250YWlucyhSLnRhcmdldCkmJihSLnRhcmdldC5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCIsYmxvY2s6ImNlbnRlciJ9KSx0aGlzLmhpZ2hsaWdodGVyLnNldEFjdGl2ZVRhcmdldChSLnRhcmdldCksc2V0VGltZW91dCgoKT0+e3RoaXMuaGlnaGxpZ2h0ZXIuc2V0QWN0aXZlVGFyZ2V0KG51bGwpfSwxNTAwKSl9O2hhbmRsZURlbGV0ZT1pPT57aWYoaS5rZXkhPT0iRGVsZXRlIiYmaS5rZXkhPT0iQmFja3NwYWNlInx8dGhpcy5pc0RpcmVjdEVkaXRpbmcpcmV0dXJuO2NvbnN0IGM9aS50YXJnZXQ7aWYoYyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KXtjb25zdCBSPWMudGFnTmFtZTtpZihbIklOUFVUIiwiVEVYVEFSRUEiLCJTRUxFQ1QiXS5pbmNsdWRlcyhSKXx8Yy5pc0NvbnRlbnRFZGl0YWJsZSlyZXR1cm59Y29uc3Qgcz1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2lmKHMgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCl7Y29uc3QgUj1zLnRhZ05hbWU7aWYoWyJJTlBVVCIsIlRFWFRBUkVBIiwiU0VMRUNUIl0uaW5jbHVkZXMoUil8fHMuaXNDb250ZW50RWRpdGFibGUpcmV0dXJuO2xldCBDPXM7Zm9yKDtDOyl7aWYoQy5oYXNBdHRyaWJ1dGUoYWwpKXJldHVybjtDPUMucGFyZW50RWxlbWVudH19aWYoIXRoaXMuYWN0aXZlVGFyZ2V0KXJldHVybjtpZighRmcodGhpcy5hY3RpdmVUYXJnZXQpKXtjb25zb2xlLndhcm4oIkNhbm5vdCBkZWxldGUgdGhpcyBlbGVtZW50OiBpdCBpcyBhIGNyaXRpY2FsIERPTSBlbGVtZW50Iik7cmV0dXJufWkucHJldmVudERlZmF1bHQoKSxpLnN0b3BQcm9wYWdhdGlvbigpO2NvbnN0IGQ9SWcodGhpcy5hY3RpdmVUYXJnZXQpO2lmKCFkKXtjb25zb2xlLndhcm4oIkNhbm5vdCBkZWxldGUgZWxlbWVudDogbm8gcGFyZW50IGZvdW5kIik7cmV0dXJufWNvbnN0IG09JHIodGhpcy5hY3RpdmVUYXJnZXQpLHg9dGhpcy5hY3RpdmVUYXJnZXQ7dGhpcy5kaXNwb3NlU2VsZWN0b3JJbnB1dCgpLHRoaXMuZXhpdERpcmVjdEVkaXRNb2RlKCksdGhpcy5yZW1vdmVFbnRlcktleUxpc3RlbmVyPy4oKSx0aGlzLnJlbW92ZUVudGVyS2V5TGlzdGVuZXI9bnVsbCx4LnBhcmVudEVsZW1lbnQmJngucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh4KSx0aGlzLmFjdGl2ZVRhcmdldD1udWxsLHRoaXMuaG92ZXJUYXJnZXQ9bnVsbCx0aGlzLnBvaW50ZXJEb3duPSExLHRoaXMuaGlnaGxpZ2h0ZXIuc2V0QWN0aXZlVGFyZ2V0KG51bGwpLHRoaXMuaGlnaGxpZ2h0ZXIuc2V0SG92ZXJUYXJnZXQobnVsbCksdGhpcy5lZGl0SGlzdG9yeS5hZGRFZGl0KHt0YXJnZXQ6eCx0YXJnZXREYXRhOm0sY2hhbmdlczp7ZGVsZXRlZDpkfSxzY3JlZW5zaG90Om51bGx9KSx0aGlzLnNob3dFZGl0VG9vbGJhcklmTmVlZGVkKCksdGhpcy5zaG93Q29tbWVudE1hcmtlcnNJZk5lZWRlZCgpfTtzaG93RWRpdFRvb2xiYXJJZk5lZWRlZCgpe2lmKCF0aGlzLmVkaXRIaXN0b3J5Lmhhc0VkaXRzKCkpe3RoaXMuaGlkZUVkaXRUb29sYmFyKCk7cmV0dXJufXRoaXMuZGlzcG9zZUVkaXRUb29sYmFyfHxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT53MCkudGhlbigoe29wZW5FZGl0VG9vbGJhcjppfSk9Pntjb25zdCBjPWkoe2VkaXRIaXN0b3J5OnRoaXMuZWRpdEhpc3RvcnksaGlnaGxpZ2h0ZXI6dGhpcy5oaWdobGlnaHRlcixvbkFwcGx5OigpPT57dGhpcy5oYW5kbGVBcHBseUFsbCgpfSxvbkRpc2NhcmQ6KCk9Pnt0aGlzLmhhbmRsZURpc2NhcmRBbGwoKX19KTt0aGlzLmRpc3Bvc2VFZGl0VG9vbGJhcj0oKT0+e2M/LmRpc3Bvc2UoKSx0aGlzLmRpc3Bvc2VFZGl0VG9vbGJhcj1udWxsfX0pLmNhdGNoKGk9Pntjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gcmVuZGVyIEVkaXRUb29sYmFyOiIsaSl9KX1oaWRlRWRpdFRvb2xiYXIoKXt0aGlzLmRpc3Bvc2VFZGl0VG9vbGJhciYmdGhpcy5kaXNwb3NlRWRpdFRvb2xiYXIoKX1oYW5kbGVBcHBseUFsbCgpe2NvbnN0IGk9dGhpcy5lZGl0SGlzdG9yeS5nZXRBY3RpdmVFZGl0cygpO2kubGVuZ3RoIT09MCYmUHQuc2VuZE1lc3NhZ2Uoe3R5cGU6ImVkaXRzIix0bzoiY29udGFpbmVyIixwYXlsb2FkOntlZGl0czppLm1hcChjPT4oe2VsZW1lbnQ6Yy50YXJnZXREYXRhLGNoYW5nZXM6Yy5jaGFuZ2VzLHNjcmVlbnNob3Q6Yy5zY3JlZW5zaG90fSkpfX0pfWhhbmRsZURpc2NhcmRBbGwoKXt0aGlzLmVkaXRIaXN0b3J5LmNsZWFyKCksdGhpcy5oaWRlRWRpdFRvb2xiYXIoKSx0aGlzLmhpZGVDb21tZW50TWFya2VycygpLHRoaXMuaGlnaGxpZ2h0ZXIuc2NoZWR1bGVSZW5kZXIoKX1zaG93Q29tbWVudE1hcmtlcnNJZk5lZWRlZCgpe2lmKCF0aGlzLmVkaXRIaXN0b3J5Lmhhc0VkaXRzKCkpe3RoaXMuaGlkZUNvbW1lbnRNYXJrZXJzKCk7cmV0dXJufXRoaXMuZGlzcG9zZUNvbW1lbnRNYXJrZXJzfHxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5FMCkudGhlbigoe29wZW5Db21tZW50TWFya2VyczppfSk9Pntjb25zdCBjPWkoe2VkaXRIaXN0b3J5OnRoaXMuZWRpdEhpc3RvcnksaGlnaGxpZ2h0ZXI6dGhpcy5oaWdobGlnaHRlcixnZXRBY3RpdmVFbGVtZW50OigpPT50aGlzLmFjdGl2ZVRhcmdldCxvbkVsZW1lbnRTZWxlY3Q6cz0+e3RoaXMuc2VsZWN0RWxlbWVudChzKX19KTt0aGlzLmRpc3Bvc2VDb21tZW50TWFya2Vycz0oKT0+e2M/LmRpc3Bvc2UoKSx0aGlzLmRpc3Bvc2VDb21tZW50TWFya2Vycz1udWxsfX0pLmNhdGNoKGk9Pntjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gcmVuZGVyIENvbW1lbnRNYXJrZXJzOiIsaSl9KX1oaWRlQ29tbWVudE1hcmtlcnMoKXt0aGlzLmRpc3Bvc2VDb21tZW50TWFya2VycyYmdGhpcy5kaXNwb3NlQ29tbWVudE1hcmtlcnMoKSx0aGlzLmVkaXRIaXN0b3J5LmNsZWFyQ29tbWVudHMoKSx0aGlzLmhpZ2hsaWdodGVyLnNjaGVkdWxlUmVuZGVyKCl9aGFuZGxlR2xvYmFsRXNjYXBlPWk9PntpZihpLmtleSE9PSJFc2NhcGUifHx0aGlzLmFjdGl2ZVRhcmdldClyZXR1cm47Y29uc3QgYz1pLnRhcmdldDtpZihjIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpe2NvbnN0IGQ9Yy50YWdOYW1lO2lmKFsiSU5QVVQiLCJURVhUQVJFQSIsIlNFTEVDVCJdLmluY2x1ZGVzKGQpfHxjLmlzQ29udGVudEVkaXRhYmxlKXJldHVybn1jb25zdCBzPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7aWYocyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KXtjb25zdCBkPXMudGFnTmFtZTtpZihbIklOUFVUIiwiVEVYVEFSRUEiLCJTRUxFQ1QiXS5pbmNsdWRlcyhkKXx8cy5pc0NvbnRlbnRFZGl0YWJsZSlyZXR1cm47bGV0IG09cztmb3IoO207KXtpZihtLmhhc0F0dHJpYnV0ZShhbCkpcmV0dXJuO209bS5wYXJlbnRFbGVtZW50fX10aGlzLmVkaXRIaXN0b3J5Lmhhc0VkaXRzKCl8fChpLnByZXZlbnREZWZhdWx0KCksaS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmRpc2FibGUoKSxQdC5zZW5kTWVzc2FnZSh7dHlwZToiZXhpdEVkaXRNb2RlIix0bzoiY29udGFpbmVyIixwYXlsb2FkOnt9fSkpfX1jb25zdCB1MD1uZXcgYzA7Y2xhc3MgZDB7d2lyZWQ9ITE7aW5pdCgpe2lmKHRoaXMud2lyZWQpcmV0dXJuO3RoaXMud2lyZWQ9ITA7Y29uc3QgaT1zPT57dHJ5e2NvbnN0IG09bmV3IFVSTChzLHdpbmRvdy5sb2NhdGlvbi5ocmVmKS5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBtPT09InN0cmlwZS5jb20ifHxtLmVuZHNXaXRoKCIuc3RyaXBlLmNvbSIpfWNhdGNoe3JldHVybiExfX0sYz0ocyxkKT0+e1B0LnNlbmRNZXNzYWdlKHt0eXBlOiJleHRlcm5hbE5hdkF0dGVtcHQiLHRvOiJjb250YWluZXIiLHBheWxvYWQ6e2hyZWY6cyx0cmlnZ2VyOmR9fSl9O3RyeXtjb25zdCBzPXdpbmRvdy5vcGVuO3dpbmRvdy5vcGVuPSguLi5kKT0+e2NvbnN0IG09ZFswXTtyZXR1cm4gdHlwZW9mIG09PSJzdHJpbmciJiZpKG0pJiZjKG0sIndpbmRvdy5vcGVuIikscy5hcHBseSh3aW5kb3csZCl9fWNhdGNoe310cnl7Y29uc3Qgcz13aW5kb3cubmF2aWdhdGlvbjtzJiZ0eXBlb2Ygcy5hZGRFdmVudExpc3RlbmVyPT0iZnVuY3Rpb24iJiZzLmFkZEV2ZW50TGlzdGVuZXIoIm5hdmlnYXRlIixkPT57Y29uc3QgbT1kPy5kZXN0aW5hdGlvbj8udXJsO3R5cGVvZiBtPT0ic3RyaW5nIiYmaShtKSYmYyhtLCJuYXZpZ2F0aW9uIil9KX1jYXRjaHt9fX1jb25zdCBmMD1uZXcgZDA7Y2xhc3MgaDB7Y29uc3RydWN0b3IoKXt0aGlzLmluaXQoKX1hc3luYyBpbml0KCl7UHQuaW5pdCh7Y3VycmVudEVuZHBvaW50OiJjb250ZW50In0pLFB0Lmxpc3Rlbk1lc3NhZ2Uoe3R5cGU6ImNvbnRhaW5lckluaXRlZCIsY2FsbGJhY2s6KCk9PntQdC5yZWFkeVNvdXJjZS5tYXJrUmVhZHkoKX19KSxZci5pbml0KCksdmcuaW5pdCgpLGYwLmluaXQoKSxTdS5pbml0KCksdTAuaW5pdCgpLGF3YWl0IHRoaXMucmVuZGVyUm9vdCgpLHRoaXMucmVuZGVyUm9vdEZvckRldigpfXJlbmRlclJvb3RGb3JEZXYoKXt9YXN5bmMgcmVuZGVyUm9vdCgpe2lmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGpyLnJvb3QpKXJldHVybjtjb25zdCBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2MuaWQ9anIucm9vdCxjLnNldEF0dHJpYnV0ZShhbCwidHJ1ZSIpLGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChjKTtjb25zdCBzPWMuYXR0YWNoU2hhZG93KHttb2RlOiJjbG9zZWQifSksZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpLG09YXdhaXQgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+VDApLnRoZW4oeD0+eC5kZWZhdWx0KTtkLnRleHRDb250ZW50PW0scy5hcHBlbmRDaGlsZChkKSxPci5jcmVhdGVSb290KHMpLnJlbmRlcihoLmpzeChwZyx7ImRhdGEtbG9jIjoic3JjL21haW4udHN4OjEyOCJ9KSl9fW5ldyBoMDtmdW5jdGlvbiBtMCh7b25EaXNjYXJkOnIsb25BcHBseTppLGlzQXBwbHlpbmc6Yz0hMSxlZGl0Q291bnQ6c30pe2NvbnN0IGQ9Y3x8cz09PTA7cmV0dXJuIGguanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvRWRpdHNUb29sQmFyL0FjdGlvbkJ1dHRvbnMudHN4OjE3IixjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIixjaGlsZHJlbjpbaC5qc3goImJ1dHRvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9BY3Rpb25CdXR0b25zLnRzeDoxOCIsb25DbGljazpyLGRpc2FibGVkOmQsY2xhc3NOYW1lOiJweC0zIHB5LTEuNSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtW3ZhcigtLXRleHQtd2hpdGUpXSBib3JkZXItW3ZhcigtLXRleHQtdGVydGlhcnkpXSBib3JkZXItWzEuNXB4XSBob3ZlcjpiZy1bI2ZmZmZmZjBmXSBmb2N1czpiZy1bI2ZmZmZmZjBmXSBhY3RpdmU6b3BhY2l0eS05MCByb3VuZGVkLVsxMnB4XSB0cmFuc2l0aW9uLWFsbCBvdXRsaW5lLW5vbmUgZGlzYWJsZWQ6b3BhY2l0eS01MCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQiLHRpdGxlOiJEaXNjYXJkIGFsbCBjaGFuZ2VzIixjaGlsZHJlbjoiRGlzY2FyZCJ9KSxoLmpzeHMoImJ1dHRvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9BY3Rpb25CdXR0b25zLnRzeDoyNyIsb25DbGljazppLGRpc2FibGVkOmQsY2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBweC00IHB5LTEuNSB0ZXh0LXNtIGZvbnQtbWVkaXVtIGJnLVt2YXIoLS1CdXR0b24tcHJpbWFyeS1icmFuZCldIHRleHQtd2hpdGUgYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBob3ZlcjpvcGFjaXR5LTkwIGZvY3VzOm9wYWNpdHktOTAgYWN0aXZlOm9wYWNpdHktOTAgcm91bmRlZC1bMTJweF0gdHJhbnNpdGlvbi1hbGwgb3V0bGluZS1ub25lIGRpc2FibGVkOm9wYWNpdHktNTAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIix0aXRsZToiU2F2ZSBhbGwgY2hhbmdlcyIsY2hpbGRyZW46W2MmJmguanN4cygic3ZnIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvRWRpdHNUb29sQmFyL0FjdGlvbkJ1dHRvbnMudHN4OjM0IixjbGFzc05hbWU6ImFuaW1hdGUtc3BpbiBoLTQgdy00Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAyNCAyNCIsY2hpbGRyZW46W2guanN4KCJjaXJjbGUiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9FZGl0c1Rvb2xCYXIvQWN0aW9uQnV0dG9ucy50c3g6NDAiLGNsYXNzTmFtZToib3BhY2l0eS0yNSIsY3g6IjEyIixjeToiMTIiLHI6IjEwIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjQifSksaC5qc3goInBhdGgiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9FZGl0c1Rvb2xCYXIvQWN0aW9uQnV0dG9ucy50c3g6NDgiLGNsYXNzTmFtZToib3BhY2l0eS03NSIsZmlsbDoiY3VycmVudENvbG9yIixkOiJNNCAxMmE4IDggMCAwMTgtOFYwQzUuMzczIDAgMCA1LjM3MyAwIDEyaDR6bTIgNS4yOTFBNy45NjIgNy45NjIgMCAwMTQgMTJIMGMwIDMuMDQyIDEuMTM1IDUuODI0IDMgNy45MzhsMy0yLjY0N3oifSldfSksIkFwcGx5Il19KV19KX1mdW5jdGlvbiBnMCh7ZWRpdENvdW50OnIsc2hvd0VkaXRQcmV2aWV3czppLG9uQ2xpY2s6Y30pe3JldHVybiBoLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9FZGl0Q291bnRCYWRnZS50c3g6MTUiLG9uQ2xpY2s6Yyx0YWJJbmRleDowLHJvbGU6ImJ1dHRvbiIsY2xhc3NOYW1lOkFlLmNuKCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBweC0zIHB5LTEuNSByb3VuZGVkLVsxMnB4XSBjdXJzb3ItcG9pbnRlciB0cmFuc2l0aW9uLWFsbCByZWxhdGl2ZSBvdXRsaW5lLW5vbmUgdGV4dC1bdmFyKC0tdGV4dC13aGl0ZSldIGJvcmRlci1bdmFyKC0tdGV4dC10ZXJ0aWFyeSldIGJvcmRlci1bMS41cHhdIGFjdGl2ZTpvcGFjaXR5LTkwIixpPyJiZy1bI2ZmZmZmZjBmXSI6ImJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLVsjZmZmZmZmMGZdIiksY2hpbGRyZW46W2guanN4KCJzdmciLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9FZGl0c1Rvb2xCYXIvRWRpdENvdW50QmFkZ2UudHN4OjI2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOiIxOCIsaGVpZ2h0OiIxOCIsdmlld0JveDoiMCAwIDE2IDE2IixmaWxsOiJjdXJyZW50Q29sb3IiLGNoaWxkcmVuOmguanN4KCJnIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvRWRpdHNUb29sQmFyL0VkaXRDb3VudEJhZGdlLnRzeDozMyIsY2hpbGRyZW46aC5qc3goInBhdGgiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9FZGl0c1Rvb2xCYXIvRWRpdENvdW50QmFkZ2UudHN4OjM0IixkOiJNNy41Mjg4MSA3LjUyODY5QzcuNzE3MzMgNy4zNDAxNyA4IDcuMjgxOTggOC4yNDc1NiA3LjM4MDlMMTQuOTE0MiAxMC4wNDc2QzE1LjE2NzggMTAuMTQ5IDE1LjMzNCAxMC4zOTQ5IDE1LjMzMzUgMTAuNjY4QzE1LjMzMjkgMTAuOTQxMSAxNS4xNjU2IDExLjE4NjEgMTQuOTExNiAxMS4yODY1TDEyLjMxMzMgMTIuMzEzMkwxMS4yODY2IDE0LjkxMTVDMTEuMTg2MiAxNS4xNjU1IDEwLjk0MTIgMTUuMzMyOCAxMC42NjgxIDE1LjMzMzRDMTAuMzk1MSAxNS4zMzM5IDEwLjE0OTEgMTUuMTY3NyAxMC4wNDc3IDE0LjkxNDFMNy4zODEwMiA4LjI0NzQ0QzcuMjgyMSA3Ljk5OTg4IDcuMzQwMjkgNy43MTcyMSA3LjUyODgxIDcuNTI4NjlaTTEuMzMzNSAxMi42NjY3QzEuMzMzNSAxMi4yOTg1IDEuNjMxOTcgMTIgMi4wMDAxNiAxMkMyLjM2ODM1IDEyIDIuNjY2ODMgMTIuMjk4NSAyLjY2NjgzIDEyLjY2NjdDMi42NjY4MyAxMi44NDM1IDIuNzM3MTIgMTMuMDEzIDIuODYyMTQgMTMuMTM4MUMyLjk4NzE3IDEzLjI2MzEgMy4xNTY2OSAxMy4zMzM0IDMuMzMzNSAxMy4zMzM0QzMuNzAxNjkgMTMuMzMzNCA0LjAwMDE2IDEzLjYzMTkgNC4wMDAxNiAxNEM0LjAwMDE2IDE0LjM2ODIgMy43MDE2OSAxNC42NjY3IDMuMzMzNSAxNC42NjY3QzIuODAzMDYgMTQuNjY2NyAyLjI5NDUxIDE0LjQ1NTggMS45MTk0MyAxNC4wODA4QzEuNTQ0MzYgMTMuNzA1NyAxLjMzMzUgMTMuMTk3MSAxLjMzMzUgMTIuNjY2N1pNNy4zMzM1IDEzLjMzMzRDNy43MDE2OSAxMy4zMzM0IDguMDAwMTYgMTMuNjMxOSA4LjAwMDE2IDE0QzguMDAwMTYgMTQuMzY4MiA3LjcwMTY5IDE0LjY2NjcgNy4zMzM1IDE0LjY2NjdINi4wMDAxNkM1LjYzMTk3IDE0LjY2NjcgNS4zMzM1IDE0LjM2ODIgNS4zMzM1IDE0QzUuMzMzNSAxMy42MzE5IDUuNjMxOTcgMTMuMzMzNCA2LjAwMDE2IDEzLjMzMzRINy4zMzM1Wk0xMC42NjI5IDEyLjg2MjdMMTEuMTgwNSAxMS41NTQ3TDExLjIwODUgMTEuNDkyMkMxMS4yODIyIDExLjM1MDYgMTEuNDA1IDExLjIzOTcgMTEuNTU0OSAxMS4xODA0TDEyLjg2MjggMTAuNjYyOEw5LjE5Njc4IDkuMTk2NjZMMTAuNjYyOSAxMi44NjI3Wk0xLjMzMzUgMTBWOS4zMzMzN0MxLjMzMzUgOC45NjUxOCAxLjYzMTk3IDguNjY2NzEgMi4wMDAxNiA4LjY2NjcxQzIuMzY4MzUgOC42NjY3MSAyLjY2NjgzIDguOTY1MTggMi42NjY4MyA5LjMzMzM3VjEwQzIuNjY2ODMgMTAuMzY4MiAyLjM2ODM1IDEwLjY2NjcgMi4wMDAxNiAxMC42NjY3QzEuNjMxOTcgMTAuNjY2NyAxLjMzMzUgMTAuMzY4MiAxLjMzMzUgMTBaTTEzLjMzMzUgNy4zMzMzN1Y2LjAwMDA0QzEzLjMzMzUgNS42MzE4NSAxMy42MzIgNS4zMzMzNyAxNC4wMDAyIDUuMzMzMzdDMTQuMzY4NCA1LjMzMzM3IDE0LjY2NjggNS42MzE4NSAxNC42NjY4IDYuMDAwMDRWNy4zMzMzN0MxNC42NjY4IDcuNzAxNTYgMTQuMzY4NCA4LjAwMDA0IDE0LjAwMDIgOC4wMDAwNEMxMy42MzIgOC4wMDAwNCAxMy4zMzM1IDcuNzAxNTYgMTMuMzMzNSA3LjMzMzM3Wk0xLjMzMzUgNi42NjY3MVY2LjAwMDA0QzEuMzMzNSA1LjYzMTg1IDEuNjMxOTcgNS4zMzMzNyAyLjAwMDE2IDUuMzMzMzdDMi4zNjgzNSA1LjMzMzM3IDIuNjY2ODMgNS42MzE4NSAyLjY2NjgzIDYuMDAwMDRWNi42NjY3MUMyLjY2NjgzIDcuMDM0OSAyLjM2ODM1IDcuMzMzMzcgMi4wMDAxNiA3LjMzMzM3QzEuNjMxOTcgNy4zMzMzNyAxLjMzMzUgNy4wMzQ5IDEuMzMzNSA2LjY2NjcxWk0xLjMzMzUgMy4zMzMzN0MxLjMzMzUgMi44MDI5NCAxLjU0NDM2IDIuMjk0MzggMS45MTk0MyAxLjkxOTMxQzIuMjk0NTEgMS41NDQyNCAyLjgwMzA2IDEuMzMzMzcgMy4zMzM1IDEuMzMzMzdDMy43MDE2OSAxLjMzMzM3IDQuMDAwMTYgMS42MzE4NSA0LjAwMDE2IDIuMDAwMDRDNC4wMDAxNiAyLjM2ODIzIDMuNzAxNjkgMi42NjY3MSAzLjMzMzUgMi42NjY3MUMzLjE1NjY4IDIuNjY2NzEgMi45ODcxNyAyLjczNyAyLjg2MjE0IDIuODYyMDJDMi43MzcxMiAyLjk4NzA0IDIuNjY2ODMgMy4xNTY1NiAyLjY2NjgzIDMuMzMzMzdDMi42NjY4MyAzLjcwMTU2IDIuMzY4MzUgNC4wMDAwNCAyLjAwMDE2IDQuMDAwMDRDMS42MzE5NyA0LjAwMDA0IDEuMzMzNSAzLjcwMTU2IDEuMzMzNSAzLjMzMzM3Wk0xMy4zMzM1IDMuMzMzMzdDMTMuMzMzNSAzLjE1NjU2IDEzLjI2MzIgMi45ODcwNCAxMy4xMzgyIDIuODYyMDJDMTMuMDEzMiAyLjczNyAxMi44NDM2IDIuNjY2NzEgMTIuNjY2OCAyLjY2NjcxQzEyLjI5ODYgMi42NjY3MSAxMi4wMDAyIDIuMzY4MjMgMTIuMDAwMiAyLjAwMDA0QzEyLjAwMDIgMS42MzE4NSAxMi4yOTg2IDEuMzMzMzcgMTIuNjY2OCAxLjMzMzM3QzEzLjE5NzMgMS4zMzMzNyAxMy43MDU4IDEuNTQ0MjQgMTQuMDgwOSAxLjkxOTMxQzE0LjQ1NiAyLjI5NDM4IDE0LjY2NjggMi44MDI5NCAxNC42NjY4IDMuMzMzMzdDMTQuNjY2OCAzLjcwMTU2IDE0LjM2ODQgNC4wMDAwNCAxNC4wMDAyIDQuMDAwMDRDMTMuNjMyIDQuMDAwMDQgMTMuMzMzNSAzLjcwMTU2IDEzLjMzMzUgMy4zMzMzN1pNNi42NjY4MyAxLjMzMzM3QzcuMDM1MDIgMS4zMzMzNyA3LjMzMzUgMS42MzE4NSA3LjMzMzUgMi4wMDAwNEM3LjMzMzUgMi4zNjgyMyA3LjAzNTAyIDIuNjY2NzEgNi42NjY4MyAyLjY2NjcxSDYuMDAwMTZDNS42MzE5NyAyLjY2NjcxIDUuMzMzNSAyLjM2ODIzIDUuMzMzNSAyLjAwMDA0QzUuMzMzNSAxLjYzMTg1IDUuNjMxOTcgMS4zMzMzNyA2LjAwMDE2IDEuMzMzMzdINi42NjY4M1pNMTAuMDAwMiAxLjMzMzM3QzEwLjM2ODQgMS4zMzMzNyAxMC42NjY4IDEuNjMxODUgMTAuNjY2OCAyLjAwMDA0QzEwLjY2NjggMi4zNjgyMyAxMC4zNjg0IDIuNjY2NzEgMTAuMDAwMiAyLjY2NjcxSDkuMzMzNUM4Ljk2NTMxIDIuNjY2NzEgOC42NjY4MyAyLjM2ODIzIDguNjY2ODMgMi4wMDAwNEM4LjY2NjgzIDEuNjMxODUgOC45NjUzMSAxLjMzMzM3IDkuMzMzNSAxLjMzMzM3SDEwLjAwMDJaIn0pfSl9KSxoLmpzeCgic3BhbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9FZGl0Q291bnRCYWRnZS50c3g6MzciLGNsYXNzTmFtZToidGV4dC1zbSBmb250LW1lZGl1bSB0YWJ1bGFyLW51bXMiLGNoaWxkcmVuOnJ9KV19KX1mdW5jdGlvbiBwMCh7YWN0aXZlRWRpdHM6cixob3ZlcmVkRWRpdEluZGV4OmksaGlnaGxpZ2h0ZXI6YyxvbkNhcmRDbGljazpzLG9uQ2FyZEhvdmVyOmQsc2hvdzptfSl7Y29uc3QgeD1VLnVzZVJlZihudWxsKSxSPXY9PntkKHYpfSxDPSgpPT57ZChudWxsKX07cmV0dXJuIFUudXNlRWZmZWN0KCgpPT57aWYoIW0pe2MucmVtb3ZlRXhjbHVzaW9uUmVjdCgiZWRpdC1wcmV2aWV3LWNhcmRzIik7cmV0dXJufWNvbnN0IHY9KCk9PntpZih4LmN1cnJlbnQmJm0pe2NvbnN0IEQ9eC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2MuYWRkRXhjbHVzaW9uUmVjdCgiZWRpdC1wcmV2aWV3LWNhcmRzIixEKX19O3JldHVybiB2KCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdiksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdix7cGFzc2l2ZTohMH0pLCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdiksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdiksYy5yZW1vdmVFeGNsdXNpb25SZWN0KCJlZGl0LXByZXZpZXctY2FyZHMiKX19LFtjLG1dKSxoLmpzeCgiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvRWRpdHNUb29sQmFyL0VkaXRQcmV2aWV3Q2FyZHMudHN4OjU5IixyZWY6eCxjbGFzc05hbWU6ImFic29sdXRlIGJvdHRvbS1mdWxsIG1iLTIgbGVmdC0wIHJpZ2h0LTAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwIGVhc2Utb3V0IixzdHlsZTp7b3BhY2l0eTptPzE6MCx0cmFuc2Zvcm06bT8idHJhbnNsYXRlWSgwKSBzY2FsZSgxKSI6InRyYW5zbGF0ZVkoOHB4KSBzY2FsZSgwLjk4KSIscG9pbnRlckV2ZW50czptPyJhdXRvIjoibm9uZSIsdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOiJjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKSJ9LG9uTW91c2VMZWF2ZTpDLGNoaWxkcmVuOmguanN4KCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9FZGl0c1Rvb2xCYXIvRWRpdFByZXZpZXdDYXJkcy50c3g6NzIiLGNsYXNzTmFtZToicm91bmRlZC1bMTRweF0gYm9yZGVyIGJvcmRlci1bdmFyKC0tYm9yZGVyLW1haW4pXSBiZy1bcmdiKDM3LDM3LDM3KV0gc2hhZG93LVswcHhfOHB4XzMycHhfMHB4X3ZhcigtLXNoYWRvdy1TKV0gb3ZlcmZsb3ctaGlkZGVuIixzdHlsZTp7bWF4SGVpZ2h0OiI0MHZoIn0sY2hpbGRyZW46aC5qc3goImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9FZGl0UHJldmlld0NhcmRzLnRzeDo3OCIsY2xhc3NOYW1lOiJvdmVyZmxvdy15LWF1dG8iLHN0eWxlOnttYXhIZWlnaHQ6IjQwdmgifSxjaGlsZHJlbjpyLm1hcCgodixEKT0+e2NvbnN0IGo9aT09PUQsSj0hIXYuc2NyZWVuc2hvdDtyZXR1cm4gaC5qc3goImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9FZGl0UHJldmlld0NhcmRzLnRzeDo4OSIsb25DbGljazooKT0+cyhEKSxvbk1vdXNlRW50ZXI6KCk9PlIoRCksY2xhc3NOYW1lOkFlLmNuKCJweC00IGN1cnNvci1wb2ludGVyIHRyYW5zaXRpb24tYWxsIixqJiYiYmctWyNmZmZmZmYwZl0iKSxjaGlsZHJlbjpoLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9FZGl0UHJldmlld0NhcmRzLnRzeDo5OCIsY2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMi41IHB5LTIiLHN0eWxlOntib3JkZXJCb3R0b206RCE9PXIubGVuZ3RoLTE/IjFweCBzb2xpZCB2YXIoLS1pY29uLXNlY29uZGFyeSkiOiJub25lIn0sY2hpbGRyZW46W2guanN4KCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9FZGl0c1Rvb2xCYXIvRWRpdFByZXZpZXdDYXJkcy50c3g6MTA4IixjbGFzc05hbWU6QWUuY24oImZsZXgtc2hyaW5rLTAgc2l6ZS01IHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0cmFuc2l0aW9uLWFsbCB0ZXh0LVt2YXIoLS1iYWNrZ3JvdW5kLWNhcmQpXSBib3JkZXItW3ZhcigtLWljb24tc2Vjb25kYXJ5KV0gYm9yZGVyIixqJiYiYmctWyNmZmZmZmYwZl0iKSxjaGlsZHJlbjpoLmpzeCgic3BhbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9FZGl0UHJldmlld0NhcmRzLnRzeDoxMTQiLGNsYXNzTmFtZToidGV4dC14cyIsY2hpbGRyZW46RCsxfSl9KSxoLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9FZGl0UHJldmlld0NhcmRzLnRzeDoxMTgiLGNsYXNzTmFtZToiZmxleC0xIG1pbi13LTAiLGNoaWxkcmVuOltoLmpzeCgic3BhbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9FZGl0UHJldmlld0NhcmRzLnRzeDoxMTkiLGNsYXNzTmFtZTpBZS5jbigidGV4dC1zbSB0ZXh0LXdoaXRlIGZvbnQtbWVkaXVtIix2LmNoYW5nZXMuZGVsZXRlZCYmImxpbmUtdGhyb3VnaCIpLGNoaWxkcmVuOnYudGFyZ2V0RGF0YS50YWdOYW1lfSksaC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9FZGl0c1Rvb2xCYXIvRWRpdFByZXZpZXdDYXJkcy50c3g6MTI5IixjbGFzc05hbWU6InRleHQteHMgdGV4dC1bdmFyKC0tdGV4dC13aGl0ZS10c3ApXSBwdC0wLjUgbGVhZGluZy1ub25lIGdhcC0xIGZsZXggZmxleC1jb2wiLGNoaWxkcmVuOlt2LmNoYW5nZXMuY29tbWVudCYmaC5qc3goInNwYW4iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9FZGl0c1Rvb2xCYXIvRWRpdFByZXZpZXdDYXJkcy50c3g6MTMxIixjbGFzc05hbWU6ImxlYWRpbmctc251ZyIsY2hpbGRyZW46di5jaGFuZ2VzLmNvbW1lbnQubW9kaWZpZWQ9PT0iIj8iUmVtb3ZlZCBjb21tZW50IjpgQ29tbWVudDogIiR7di5jaGFuZ2VzLmNvbW1lbnQubW9kaWZpZWQuc2xpY2UoMCwzMCl9JHt2LmNoYW5nZXMuY29tbWVudC5tb2RpZmllZC5sZW5ndGg+MzA/Ii4uLiI6IiJ9ImB9KSx2LmNoYW5nZXMuZGVsZXRlZCYmaC5qc3goInNwYW4iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9FZGl0c1Rvb2xCYXIvRWRpdFByZXZpZXdDYXJkcy50c3g6MTQ0IixjaGlsZHJlbjoiRWxlbWVudCBkZWxldGVkIn0pLHYuY2hhbmdlcy50ZXh0Q29udGVudCYmaC5qc3hzKCJzcGFuIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvRWRpdHNUb29sQmFyL0VkaXRQcmV2aWV3Q2FyZHMudHN4OjE0NiIsY2xhc3NOYW1lOiJsZWFkaW5nLXNudWciLGNoaWxkcmVuOlsnVGV4dDogIicsdi5jaGFuZ2VzLnRleHRDb250ZW50Lm1vZGlmaWVkLnNsaWNlKDAsNDApLHYuY2hhbmdlcy50ZXh0Q29udGVudC5tb2RpZmllZC5sZW5ndGg+NDA/Ii4uLiI6IiIsJyInXX0pLHYuY2hhbmdlcy5zcmMmJmguanN4KCJzcGFuIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvRWRpdHNUb29sQmFyL0VkaXRQcmV2aWV3Q2FyZHMudHN4OjE1NSIsY2hpbGRyZW46IkltYWdlIHNvdXJjZSB1cGRhdGVkIn0pLHYuY2hhbmdlcy5ocmVmJiZoLmpzeHMoInNwYW4iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9FZGl0c1Rvb2xCYXIvRWRpdFByZXZpZXdDYXJkcy50c3g6MTU3IixjbGFzc05hbWU6ImxlYWRpbmctc251ZyIsY2hpbGRyZW46WyJMaW5rOiAiLHYuY2hhbmdlcy5ocmVmLm1vZGlmaWVkLnNsaWNlKDAsMzApLCIuLi4iXX0pLHYuY2hhbmdlcy5zdHlsZSYmaC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9FZGl0c1Rvb2xCYXIvRWRpdFByZXZpZXdDYXJkcy50c3g6MTYyIixjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGdhcC0xIixjaGlsZHJlbjpbT2JqZWN0LmtleXModi5jaGFuZ2VzLnN0eWxlKS5zbGljZSgwLDMpLm1hcChhdD0+aC5qc3goInNwYW4iLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9FZGl0c1Rvb2xCYXIvRWRpdFByZXZpZXdDYXJkcy50c3g6MTY2IixjbGFzc05hbWU6InB4LTEuNSBweS0wLjUgdGV4dC14cyBiZy1bI2ZmZmZmZjFhXSB0ZXh0LXdoaXRlIHJvdW5kZWQtWzhweF0iLGNoaWxkcmVuOmF0fSxhdCkpLE9iamVjdC5rZXlzKHYuY2hhbmdlcy5zdHlsZSkubGVuZ3RoPjMmJmguanN4cygic3BhbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9FZGl0UHJldmlld0NhcmRzLnRzeDoxNzQiLGNsYXNzTmFtZToidGV4dC14cyB0ZXh0LXdoaXRlIixjaGlsZHJlbjpbIisiLE9iamVjdC5rZXlzKHYuY2hhbmdlcy5zdHlsZSkubGVuZ3RoLTMsIiBtb3JlIl19KV19KSxKJiYhdi5jaGFuZ2VzLmRlbGV0ZWQmJih2LmNoYW5nZXMudGV4dENvbnRlbnR8fHYuY2hhbmdlcy5zdHlsZXx8di5jaGFuZ2VzLmNvbW1lbnQpJiZoLmpzeCgiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvRWRpdHNUb29sQmFyL0VkaXRQcmV2aWV3Q2FyZHMudHN4OjE4NSIsc3R5bGU6e2JhY2tncm91bmRJbWFnZTpgdXJsKCR7di5zY3JlZW5zaG90fSlgLGJhY2tncm91bmRTaXplOiJjb3ZlciIsYmFja2dyb3VuZFBvc2l0aW9uOiJ0b3AifSxjbGFzc05hbWU6ImgtMTIgbXQtMSByb3VuZGVkIGJvcmRlciBib3JkZXItYmxhY2svMTAifSldfSldfSldfSl9LGAke3YudGFyZ2V0RGF0YS5pZH0tJHtEfWApfSl9KX0pfSl9ZnVuY3Rpb24geTAoe2NhblVuZG86cixjYW5SZWRvOmksb25VbmRvOmMsb25SZWRvOnN9KXtyZXR1cm4gaC5qc3hzKCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9FZGl0c1Rvb2xCYXIvVW5kb1JlZG9CdXR0b25zLnRzeDoxNyIsY2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IixjaGlsZHJlbjpbaC5qc3goImJ1dHRvbiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9VbmRvUmVkb0J1dHRvbnMudHN4OjE4IixvbkNsaWNrOmMsZGlzYWJsZWQ6IXIsY2xhc3NOYW1lOkFlLmNuKCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTEuNSByb3VuZGVkLWZ1bGwgdHJhbnNpdGlvbi1hbGwgb3V0bGluZS1ub25lIixyPyJ0ZXh0LVt2YXIoLS10ZXh0LXdoaXRlKV0gaG92ZXI6YmctWyNmZmZmZmYwZl0gY3Vyc29yLXBvaW50ZXIiOiJiZy10cmFuc3BhcmVudCB0ZXh0LVt2YXIoLS10ZXh0LWRpc2FibGUpXSBjdXJzb3Itbm90LWFsbG93ZWQgb3BhY2l0eS01MCIpLHRpdGxlOiJVbmRvICjijJhaKSIsY2hpbGRyZW46aC5qc3goInN2ZyIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9VbmRvUmVkb0J1dHRvbnMudHN4OjI5Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOiIxOCIsaGVpZ2h0OiIxOCIsdmlld0JveDoiMCAwIDE2IDE2IixmaWxsOiJub25lIixjaGlsZHJlbjpoLmpzeCgicGF0aCIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9VbmRvUmVkb0J1dHRvbnMudHN4OjM2IixkOiJNMTIuNjY2NiA5LjY2NjYyQzEyLjY2NjYgOS4yNzI3MSAxMi41ODg4IDguODgyNzYgMTIuNDM4MSA4LjUxODgzQzEyLjI4NzMgOC4xNTQ4NSAxMi4wNjYzIDcuODI0MSAxMS43ODc3IDcuNTQ1NTJDMTEuNTA5MSA3LjI2Njk1IDExLjE3ODQgNy4wNDU5IDEwLjgxNDQgNi44OTUxM0MxMC40NTA1IDYuNzQ0NDEgMTAuMDYwNSA2LjY2NjYyIDkuNjY2NjIgNi42NjY2Mkg0LjI3NTk5TDYuNDcxMyA4Ljg2MTkzQzYuNzMxNjUgOS4xMjIyOCA2LjczMTY1IDkuNTQ0MjkgNi40NzEzIDkuODA0NjRDNi4yMTA5NSAxMC4wNjUgNS43ODg5NCAxMC4wNjUgNS41Mjg2IDkuODA0NjRMMi4xOTUyNiA2LjQ3MTNDMS45MzQ5MSA2LjIxMDk1IDEuOTM0OTEgNS43ODg5NCAyLjE5NTI2IDUuNTI4Nkw1LjUyODYgMi4xOTUyNkM1Ljc4ODk0IDEuOTM0OTEgNi4yMTA5NSAxLjkzNDkxIDYuNDcxMyAyLjE5NTI2QzYuNzMxNjUgMi40NTU2MSA2LjczMTY1IDIuODc3NjIgNi40NzEzIDMuMTM3OTdMNC4yNzU5OSA1LjMzMzI4SDkuNjY2NjJDMTAuMjM1NyA1LjMzMzI4IDEwLjc5OTEgNS40NDU1OSAxMS4zMjQ4IDUuNjYzMzZDMTEuODUwNiA1Ljg4MTEzIDEyLjMyODcgNi4xOTk3OCAxMi43MzExIDYuNjAyMTZDMTMuMTMzNSA3LjAwNDU1IDEzLjQ1MjEgNy40ODI2NyAxMy42Njk5IDguMDA4NDFDMTMuODg3NiA4LjUzNDE2IDEzLjk5OTkgOS4wOTc1NSAxMy45OTk5IDkuNjY2NjJDMTMuOTk5OSAxMC4yMzU3IDEzLjg4NzYgMTAuNzk5MSAxMy42Njk5IDExLjMyNDhDMTMuNDUyMSAxMS44NTA2IDEzLjEzMzUgMTIuMzI4NyAxMi43MzExIDEyLjczMTFDMTIuMzI4NyAxMy4xMzM1IDExLjg1MDYgMTMuNDUyMSAxMS4zMjQ4IDEzLjY2OTlDMTAuNzk5MSAxMy44ODc2IDEwLjIzNTcgMTMuOTk5OSA5LjY2NjYyIDEzLjk5OTlINy4zMzMyOEM2Ljk2NTA5IDEzLjk5OTkgNi42NjY2MiAxMy43MDE1IDYuNjY2NjIgMTMuMzMzM0M2LjY2NjYyIDEyLjk2NTEgNi45NjUwOSAxMi42NjY2IDcuMzMzMjggMTIuNjY2Nkg5LjY2NjYyQzEwLjA2MDUgMTIuNjY2NiAxMC40NTA1IDEyLjU4ODggMTAuODE0NCAxMi40MzgxQzExLjE3ODQgMTIuMjg3MyAxMS41MDkxIDEyLjA2NjMgMTEuNzg3NyAxMS43ODc3QzEyLjA2NjMgMTEuNTA5MSAxMi4yODczIDExLjE3ODQgMTIuNDM4MSAxMC44MTQ0QzEyLjU4ODggMTAuNDUwNSAxMi42NjY2IDEwLjA2MDUgMTIuNjY2NiA5LjY2NjYyWiIsZmlsbDoiY3VycmVudENvbG9yIn0pfSl9KSxoLmpzeCgiYnV0dG9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvRWRpdHNUb29sQmFyL1VuZG9SZWRvQnV0dG9ucy50c3g6NDMiLG9uQ2xpY2s6cyxkaXNhYmxlZDohaSxjbGFzc05hbWU6QWUuY24oImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtMS41IHJvdW5kZWQtZnVsbCB0cmFuc2l0aW9uLWFsbCBvdXRsaW5lLW5vbmUiLGk/InRleHQtW3ZhcigtLXRleHQtd2hpdGUpXSBob3ZlcjpiZy1bI2ZmZmZmZjBmXSBjdXJzb3ItcG9pbnRlciI6ImJnLXRyYW5zcGFyZW50IHRleHQtW3ZhcigtLXRleHQtZGlzYWJsZSldIG9wYWNpdHktNTAgY3Vyc29yLW5vdC1hbGxvd2VkIiksdGl0bGU6IlJlZG8gKOKMmOKHp1opIixjaGlsZHJlbjpoLmpzeCgic3ZnIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvRWRpdHNUb29sQmFyL1VuZG9SZWRvQnV0dG9ucy50c3g6NTQiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix2aWV3Qm94OiIwIDAgMTYgMTYiLGZpbGw6Im5vbmUiLGNoaWxkcmVuOmguanN4KCJwYXRoIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvRWRpdHNUb29sQmFyL1VuZG9SZWRvQnV0dG9ucy50c3g6NjEiLGQ6Ik0zLjMzMzM4IDkuNjY2NjJDMy4zMzMzOCA5LjI3MjcxIDMuNDExMTggOC44ODI3NiAzLjU2MTkgOC41MTg4M0MzLjcxMjY2IDguMTU0ODUgMy45MzM3MSA3LjgyNDEgNC4yMTIyOSA3LjU0NTUyQzQuNDkwODYgNy4yNjY5NSA0LjgyMTYyIDcuMDQ1OSA1LjE4NTYgNi44OTUxM0M1LjU0OTUzIDYuNzQ0NDEgNS45Mzk0OCA2LjY2NjYyIDYuMzMzMzggNi42NjY2MkgxMS43MjRMOS41Mjg3IDguODYxOTNDOS4yNjgzNSA5LjEyMjI4IDkuMjY4MzUgOS41NDQyOSA5LjUyODcgOS44MDQ2NEM5Ljc4OTA1IDEwLjA2NSAxMC4yMTExIDEwLjA2NSAxMC40NzE0IDkuODA0NjRMMTMuODA0NyA2LjQ3MTNDMTQuMDY1MSA2LjIxMDk1IDE0LjA2NTEgNS43ODg5NCAxMy44MDQ3IDUuNTI4NkwxMC40NzE0IDIuMTk1MjZDMTAuMjExMSAxLjkzNDkxIDkuNzg5MDUgMS45MzQ5MSA5LjUyODcgMi4xOTUyNkM5LjI2ODM1IDIuNDU1NjEgOS4yNjgzNSAyLjg3NzYyIDkuNTI4NyAzLjEzNzk3TDExLjcyNCA1LjMzMzI4SDYuMzMzMzhDNS43NjQzMiA1LjMzMzI4IDUuMjAwOTIgNS40NDU1OSA0LjY3NTE4IDUuNjYzMzZDNC4xNDk0NCA1Ljg4MTEzIDMuNjcxMzIgNi4xOTk3OCAzLjI2ODkzIDYuNjAyMTZDMi44NjY1NCA3LjAwNDU1IDIuNTQ3OSA3LjQ4MjY3IDIuMzMwMTMgOC4wMDg0MUMyLjExMjM2IDguNTM0MTYgMi4wMDAwNSA5LjA5NzU1IDIuMDAwMDUgOS42NjY2MkMyLjAwMDA1IDEwLjIzNTcgMi4xMTIzNiAxMC43OTkxIDIuMzMwMTMgMTEuMzI0OEMyLjU0NzkgMTEuODUwNiAyLjg2NjU0IDEyLjMyODcgMy4yNjg5MyAxMi43MzExQzMuNjcxMzIgMTMuMTMzNSA0LjE0OTQ0IDEzLjQ1MjEgNC42NzUxOCAxMy42Njk5QzUuMjAwOTIgMTMuODg3NiA1Ljc2NDMyIDEzLjk5OTkgNi4zMzMzOCAxMy45OTk5SDguNjY2NzJDOS4wMzQ5MSAxMy45OTk5IDkuMzMzMzggMTMuNzAxNSA5LjMzMzM4IDEzLjMzMzNDOS4zMzMzOCAxMi45NjUxIDkuMDM0OTEgMTIuNjY2NiA4LjY2NjcyIDEyLjY2NjZINi4zMzMzOEM1LjkzOTQ4IDEyLjY2NjYgNS41NDk1MyAxMi41ODg4IDUuMTg1NiAxMi40MzgxQzQuODIxNjIgMTIuMjg3MyA0LjQ5MDg2IDEyLjA2NjMgNC4yMTIyOSAxMS43ODc3QzMuOTMzNzEgMTEuNTA5MSAzLjcxMjY2IDExLjE3ODQgMy41NjE5IDEwLjgxNDRDMy40MTExOCAxMC40NTA1IDMuMzMzMzggMTAuMDYwNSAzLjMzMzM4IDkuNjY2NjJaIixmaWxsOiJjdXJyZW50Q29sb3IifSl9KX0pXX0pfWZ1bmN0aW9uIHYwKHIpe2NvbnN0W2ksY109VS51c2VTdGF0ZShyLmNhblVuZG8oKSksW3MsZF09VS51c2VTdGF0ZShyLmNhblJlZG8oKSksW20seF09VS51c2VTdGF0ZShyLmdldEFjdGl2ZUVkaXRzKCkubGVuZ3RoKSxbUixDXT1VLnVzZVN0YXRlKFtdKTtyZXR1cm4gVS51c2VFZmZlY3QoKCk9Pntjb25zdCB2PXIub25DaGFuZ2UoKCk9PntjKHIuY2FuVW5kbygpKSxkKHIuY2FuUmVkbygpKTtjb25zdCBEPXIuZ2V0QWN0aXZlRWRpdHMoKTt4KEQubGVuZ3RoKSxDKEQpfSk7cmV0dXJuIEMoci5nZXRBY3RpdmVFZGl0cygpKSx2fSxbcl0pLHtjYW5VbmRvOmksY2FuUmVkbzpzLGVkaXRDb3VudDptLGFjdGl2ZUVkaXRzOlJ9fWZ1bmN0aW9uIGIwKCl7Y29uc3RbcixpXT1VLnVzZVN0YXRlKCExKTtyZXR1cm57c2hvd0VkaXRQcmV2aWV3czpyLGhhbmRsZUVkaXRDb3VudENsaWNrOigpPT57aSghcil9fX1mdW5jdGlvbiBxdSh7ZWRpdEhpc3Rvcnk6cixoaWdobGlnaHRlcjppLG9uQXBwbHk6YyxvbkRpc2NhcmQ6c30pe2NvbnN0IGQ9VS51c2VSZWYobnVsbCksW20seF09VS51c2VTdGF0ZShudWxsKSxbUixDXT1VLnVzZVN0YXRlKCExKSx7Y2FuVW5kbzp2LGNhblJlZG86RCxlZGl0Q291bnQ6aixhY3RpdmVFZGl0czpKfT12MChyKSx7c2hvd0VkaXRQcmV2aWV3czphdCxoYW5kbGVFZGl0Q291bnRDbGljazokfT1iMCgpO1UudXNlRWZmZWN0KCgpPT57aWYobSE9PW51bGwmJkpbbV0pe2NvbnN0IF89SlttXTtfLnRhcmdldCYmZG9jdW1lbnQuY29udGFpbnMoXy50YXJnZXQpJiZpLnNldEhvdmVyVGFyZ2V0KF8udGFyZ2V0KX1lbHNlIGkuc2V0SG92ZXJUYXJnZXQobnVsbCl9LFttLEosaV0pLFUudXNlRWZmZWN0KCgpPT57Y29uc3QgXz0oKT0+e2lmKGQuY3VycmVudCl7Y29uc3QgWT1kLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aS5hZGRFeGNsdXNpb25SZWN0KCJlZGl0LXRvb2xiYXIiLFkpfX07cmV0dXJuIF8oKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIixfKSwoKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLF8pLGkucmVtb3ZlRXhjbHVzaW9uUmVjdCgiZWRpdC10b29sYmFyIil9fSxbaV0pO2NvbnN0IG50PSgpPT57Y29uc3QgXz1yLnVuZG8oKTtpLnNjaGVkdWxlUmVuZGVyKCksXyYmXy50YXJnZXQmJmRvY3VtZW50LmNvbnRhaW5zKF8udGFyZ2V0KSYmKF8udGFyZ2V0LnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjoic21vb3RoIixibG9jazoiY2VudGVyIn0pLGkuc2V0QWN0aXZlVGFyZ2V0KF8udGFyZ2V0KSxzZXRUaW1lb3V0KCgpPT57aS5zZXRBY3RpdmVUYXJnZXQobnVsbCl9LDE1MDApKX0sY3Q9KCk9Pntjb25zdCBfPXIucmVkbygpO2kuc2NoZWR1bGVSZW5kZXIoKSxfJiZfLnRhcmdldCYmZG9jdW1lbnQuY29udGFpbnMoXy50YXJnZXQpJiYoXy50YXJnZXQuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJjZW50ZXIifSksaS5zZXRBY3RpdmVUYXJnZXQoXy50YXJnZXQpLHNldFRpbWVvdXQoKCk9PntpLnNldEFjdGl2ZVRhcmdldChudWxsKX0sMTUwMCkpfSxodD1fPT57Y29uc3QgWT1KW19dO1kudGFyZ2V0JiZkb2N1bWVudC5jb250YWlucyhZLnRhcmdldCkmJihZLnRhcmdldC5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCIsYmxvY2s6ImNlbnRlciJ9KSxpLnNldEFjdGl2ZVRhcmdldChZLnRhcmdldCksc2V0VGltZW91dCgoKT0+e2kuc2V0QWN0aXZlVGFyZ2V0KG51bGwpfSwxNTAwKSl9LFN0PSgpPT57QyghMCksYygpfTtyZXR1cm4gaC5qc3goImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9FZGl0VG9vbGJhci50c3g6MTI3IixjbGFzc05hbWU6ImZpeGVkIGxlZnQtMCByaWdodC0wIHRvcC0wIGJvdHRvbS0wIHBvaW50ZXItZXZlbnRzLW5vbmUiLHN0eWxlOnt6SW5kZXg6MjE0NzQ4MzY0NX0sY2hpbGRyZW46aC5qc3goImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9FZGl0VG9vbGJhci50c3g6MTMxIixjbGFzc05hbWU6ImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCByaWdodC0wIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHBiLTgiLGNoaWxkcmVuOmguanN4cygiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvRWRpdHNUb29sQmFyL0VkaXRUb29sYmFyLnRzeDoxMzIiLHJlZjpkLFthbF06InRydWUiLG9uTW91c2VEb3duOl89Pl8uc3RvcFByb3BhZ2F0aW9uKCksY2xhc3NOYW1lOiJwb2ludGVyLWV2ZW50cy1hdXRvIGZsZXggaXRlbXMtY2VudGVyIGdhcC04IHAtMiByb3VuZGVkLVsxNHB4XSBib3JkZXIgYm9yZGVyLVt2YXIoLS1ib3JkZXItbWFpbildIGJnLVtyZ2IoMzcsMzcsMzcpXSBzaGFkb3ctWzBweF84cHhfMzJweF8wcHhfdmFyKC0tc2hhZG93LVMpXSByZWxhdGl2ZSBqdXN0aWZ5LWJldHdlZW4iLGNoaWxkcmVuOltoLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9FZGl0VG9vbGJhci50c3g6MTM4IixjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIixjaGlsZHJlbjpbaC5qc3goZzAseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9FZGl0VG9vbGJhci50c3g6MTM5IixlZGl0Q291bnQ6aixzaG93RWRpdFByZXZpZXdzOmF0LG9uQ2xpY2s6JH0pLGguanN4KHkwLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9FZGl0c1Rvb2xCYXIvRWRpdFRvb2xiYXIudHN4OjE0NSIsY2FuVW5kbzp2LGNhblJlZG86RCxvblVuZG86bnQsb25SZWRvOmN0fSldfSksaC5qc3gobTAseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0VkaXRzVG9vbEJhci9FZGl0VG9vbGJhci50c3g6MTUzIixvbkRpc2NhcmQ6cyxvbkFwcGx5OlN0LGlzQXBwbHlpbmc6UixlZGl0Q291bnQ6an0pLEoubGVuZ3RoPjAmJmguanN4KHAwLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9FZGl0c1Rvb2xCYXIvRWRpdFRvb2xiYXIudHN4OjE2MSIsYWN0aXZlRWRpdHM6Sixob3ZlcmVkRWRpdEluZGV4Om0saGlnaGxpZ2h0ZXI6aSxvbkNhcmRDbGljazpodCxvbkNhcmRIb3Zlcjp4LHNob3c6YXR9KV19KX0pfSl9Y29uc3QgeDA9ZWkuY3JlYXRlT3BlbmVyKHF1LHtzaW5nbGV0b246ITB9KSx3MD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsRWRpdFRvb2xiYXI6cXUsb3BlbkVkaXRUb29sYmFyOngwfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO2Z1bmN0aW9uIFMwKHtjb21tZW50OnIsZWxlbWVudFJlY3Q6aSxib3hSZWY6Yyxvbk1vdXNlRW50ZXI6cyxvbk1vdXNlTGVhdmU6ZCxvbkNsaWNrOm0sb25EZWxldGU6eCxpc0hpZGRlbjpSfSl7Y29uc3QgQz1VLnVzZVJlZihudWxsKSx2PVUudXNlUmVmKG51bGwpLFtELGpdPVUudXNlU3RhdGUoe3dpZHRoOjAsaGVpZ2h0OjB9KTtVLnVzZUxheW91dEVmZmVjdCgoKT0+e2lmKCFDLmN1cnJlbnQpcmV0dXJuO2NvbnN0IGl0PUMuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtqKHt3aWR0aDppdC53aWR0aCxoZWlnaHQ6aXQuaGVpZ2h0fSl9LFtyLHhdKTtjb25zdCBKPXdpbmRvdy5pbm5lcldpZHRoLGF0PXdpbmRvdy5pbm5lckhlaWdodCwkPTMwLG50PWkudG9wK2kuaGVpZ2h0LzI7bGV0IGN0PWkucmlnaHQrJCxodD1udC1ELmhlaWdodC8yO2N0K0Qud2lkdGg+Si0yMCYmKGN0PWkubGVmdC0kLUQud2lkdGgpLGN0PDIwJiYoY3Q9TWF0aC5taW4oaS5sZWZ0LEotRC53aWR0aC0yMCksY3Q9TWF0aC5tYXgoMjAsY3QpLGh0PWkuYm90dG9tKyQpLGh0PDIwP2h0PTIwOmh0K0QuaGVpZ2h0PmF0LTIwJiYoaHQ9TWF0aC5tYXgoMjAsYXQtRC5oZWlnaHQtMjApKTtjb25zdCBTdD17eDpjdCx5Omh0fSxfPVN0LnkrRC5oZWlnaHQvMixZPVN0Lng+aS5yaWdodD9pLnJpZ2h0OmkubGVmdDtyZXR1cm4gUj9udWxsOmguanN4cyhoLkZyYWdtZW50LHtjaGlsZHJlbjpbaC5qc3hzKCJzdmciLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db21tZW50TWFya2Vycy9Db21tZW50VG9vbHRpcC50c3g6ODAiLGNsYXNzTmFtZToiYWJzb2x1dGUgaW5zZXQtMCB3LWZ1bGwgaC1mdWxsIHBvaW50ZXItZXZlbnRzLW5vbmUgei1bMjE0NzQ4MzY0M10iLGNoaWxkcmVuOltoLmpzeCgibGluZSIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbW1lbnRNYXJrZXJzL0NvbW1lbnRUb29sdGlwLnRzeDo4MSIseDE6WSx5MTpudCx4MjpTdC54LHkyOl8sc3Ryb2tlOiIjMDA4MWYyIixzdHJva2VXaWR0aDoxLjUsc3Ryb2tlRGFzaGFycmF5OiIzIDIifSksaC5qc3goImNpcmNsZSIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbW1lbnRNYXJrZXJzL0NvbW1lbnRUb29sdGlwLnRzeDo5MCIsY3g6WSxjeTpudCxyOjMsZmlsbDoiIzAwODFmMiJ9KV19KSxoLmpzeHMoImRpdiIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbW1lbnRNYXJrZXJzL0NvbW1lbnRUb29sdGlwLnRzeDo5NCIscmVmOnYsY2xhc3NOYW1lOiJhYnNvbHV0ZSBncm91cCB6LVsyMTQ3NDgzNjQ0XSIsc3R5bGU6e2xlZnQ6U3QueCx0b3A6U3QueX0sb25Nb3VzZUVudGVyOnMsb25Nb3VzZUxlYXZlOmQsY2hpbGRyZW46W2guanN4KCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db21tZW50TWFya2Vycy9Db21tZW50VG9vbHRpcC50c3g6MTA1IixyZWY6SD0+e0MuY3VycmVudD1ILGMoSCl9LGNsYXNzTmFtZToicG9pbnRlci1ldmVudHMtYXV0byBjdXJzb3ItcG9pbnRlciByb3VuZGVkLVsxMHB4XSBweC0yLjUgcHktMS41IGJnLVsjMDA4MWYyXSBtYXgtdy1bMjYwcHhdIixvbkNsaWNrOm0sb25Nb3VzZURvd246SD0+SC5zdG9wUHJvcGFnYXRpb24oKSxjaGlsZHJlbjpoLmpzeCgiZGl2Iix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29tbWVudE1hcmtlcnMvQ29tbWVudFRvb2x0aXAudHN4OjExNCIsY2xhc3NOYW1lOiJmbGV4IGl0ZW1zLXN0YXJ0IGdhcC0xLjUiLGNoaWxkcmVuOmguanN4KCJwIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29tbWVudE1hcmtlcnMvQ29tbWVudFRvb2x0aXAudHN4OjExNSIsY2xhc3NOYW1lOiJmbGV4LTEgdGV4dC14cyBicmVhay13b3JkcyB3aGl0ZXNwYWNlLXByZS13cmFwIHRleHQtW3ZhcigtLXRleHQtd2hpdGUpXSIsY2hpbGRyZW46cn0pfSl9KSx4JiZoLmpzeCgiYnV0dG9uIix7ImRhdGEtbG9jIjoic3JjL21vZHVsZXMvRG9tU2VsZWN0b3IvQ29tbWVudE1hcmtlcnMvQ29tbWVudFRvb2x0aXAudHN4OjEyMyIsb25DbGljazpIPT57SC5zdG9wUHJvcGFnYXRpb24oKSx4KCl9LGNsYXNzTmFtZToiYWJzb2x1dGUgLXRvcC0xIHJpZ2h0LTAgcG9pbnRlci1ldmVudHMtYXV0byBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzaXplLTUgcm91bmRlZC1mdWxsIGJnLXdoaXRlIHNoYWRvdy1tZCB0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtcmVkLTUwMCBob3ZlcjpiZy1yZWQtNTAgdHJhbnNpdGlvbi1hbGwgb3BhY2l0eS0wIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIix0aXRsZToiRGVsZXRlIGNvbW1lbnQiLG9uTW91c2VEb3duOkg9Pkguc3RvcFByb3BhZ2F0aW9uKCksY2hpbGRyZW46aC5qc3goInN2ZyIseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbW1lbnRNYXJrZXJzL0NvbW1lbnRUb29sdGlwLnRzeDoxMzIiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6IjEwIixoZWlnaHQ6IjEwIix2aWV3Qm94OiIwIDAgMTIgMTIiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMS41IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsY2hpbGRyZW46aC5qc3goInBhdGgiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db21tZW50TWFya2Vycy9Db21tZW50VG9vbHRpcC50c3g6MTQyIixkOiJNOSAzTDMgOU0zIDNsNiA2In0pfSl9KV19KV19KX1mdW5jdGlvbiBZdSh7ZWRpdEhpc3Rvcnk6cixoaWdobGlnaHRlcjppLGdldEFjdGl2ZUVsZW1lbnQ6YyxvbkVsZW1lbnRTZWxlY3Q6c30pe2NvbnN0W2QsbV09VS51c2VTdGF0ZShudWxsKSxbeCxSXT1VLnVzZVN0YXRlKG51bGwpLFtDLHZdPVUudXNlU3RhdGUoMCksRD1VLnVzZVJlZihuZXcgTWFwKSxqPVUudXNlTWVtbygoKT0+e2NvbnN0IF89ci5nZXRBY3RpdmVFZGl0cygpLFk9bmV3IE1hcDtmb3IoY29uc3QgaXQgb2YgXyl7Y29uc3QgcnQ9aXQudGFyZ2V0O2lmKCFkb2N1bWVudC5jb250YWlucyhydCkpY29udGludWU7Y29uc3QgVj1QcihydCk7ViYmWS5zZXQoVixydCl9Y29uc3QgSD1bXTtmb3IoY29uc3RbaXQscnRdb2YgWS5lbnRyaWVzKCkpe2NvbnN0IFY9cnQuX2NvbW1lbnR8fCIiO2lmKCFWLnRyaW0oKSljb250aW51ZTtjb25zdCB4dD1ydC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt4dC53aWR0aD09PTB8fHh0LmhlaWdodD09PTB8fEgucHVzaCh7aWQ6aXQsZWxlbWVudDpydCxjb21tZW50OlYudHJpbSgpLHBvc2l0aW9uOnt4Onh0LmxlZnQseTp4dC50b3B9fSl9cmV0dXJuIEh9LFtyLEMseF0pLEo9KCk9Pntmb3IoY29uc3RbXyxZXW9mIEQuY3VycmVudC5lbnRyaWVzKCkpe2NvbnN0IEg9WS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpLmFkZEV4Y2x1c2lvblJlY3QoYGNvbW1lbnQtYm94LSR7X31gLEgpfX0sYXQ9KF8sWSk9PiEoXy5yaWdodDxZLmxlZnR8fF8ubGVmdD5ZLnJpZ2h0fHxfLmJvdHRvbTxZLnRvcHx8Xy50b3A+WS5ib3R0b20pO1UudXNlRWZmZWN0KCgpPT57Y29uc3QgXz1yLm9uQ2hhbmdlKCgpPT57dihWPT5WKzEpfSk7bGV0IFk9bnVsbCxIPW51bGw7Y29uc3QgaXQ9KCk9PntZPT09bnVsbCYmKFk9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57WT1udWxsLHYoVj0+VisxKX0pKX0scnQ9KCk9PntIJiZjbGVhclRpbWVvdXQoSCksSD1zZXRUaW1lb3V0KCgpPT57dihWPT5WKzEpfSwxMDApfTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsaXQse3Bhc3NpdmU6ITB9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIixydCx7cGFzc2l2ZTohMH0pLCgpPT57XygpLFkhPT1udWxsJiZjYW5jZWxBbmltYXRpb25GcmFtZShZKSxIJiZjbGVhclRpbWVvdXQoSCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsaXQpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHJ0KTtmb3IoY29uc3QgViBvZiBELmN1cnJlbnQua2V5cygpKWkucmVtb3ZlRXhjbHVzaW9uUmVjdChgY29tbWVudC1ib3gtJHtWfWApfX0sW3IsaV0pLFUudXNlRWZmZWN0KCgpPT57Y29uc3QgXz0oKT0+e2NvbnN0IEg9YygpO1IoSCl9O18oKTtjb25zdCBZPXNldEludGVydmFsKF8sMTAwKTtyZXR1cm4oKT0+e2NsZWFySW50ZXJ2YWwoWSl9fSxbY10pLFUudXNlRWZmZWN0KCgpPT57Y29uc3QgXz1uZXcgU2V0KGoubWFwKEg9PkguaWQpKTtmb3IoY29uc3QgSCBvZiBELmN1cnJlbnQua2V5cygpKV8uaGFzKEgpfHwoaS5yZW1vdmVFeGNsdXNpb25SZWN0KGBjb21tZW50LWJveC0ke0h9YCksRC5jdXJyZW50LmRlbGV0ZShIKSk7SigpO2NvbnN0IFk9ZD9qLmZpbmQoSD0+SC5pZD09PWQpPy5lbGVtZW50Om51bGw7WSYmZG9jdW1lbnQuY29udGFpbnMoWSk/aS5zZXRIb3ZlclRhcmdldChZKTppLnNldEhvdmVyVGFyZ2V0KG51bGwpfSxbaixkLGldKTtjb25zdCAkPV89PnttKF8pfSxudD0oKT0+e20obnVsbCl9LGN0PV89Pntjb25zdCBZPWouZmluZChIPT5ILmlkPT09Xyk7WSYmZG9jdW1lbnQuY29udGFpbnMoWS5lbGVtZW50KSYmKFkuZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCIsYmxvY2s6ImNlbnRlciJ9KSxzKFkuZWxlbWVudCkpfSxodD1fPT57Y29uc3QgWT1qLmZpbmQoSD0+SC5pZD09PV8pO2lmKFkmJmRvY3VtZW50LmNvbnRhaW5zKFkuZWxlbWVudCkpe2NvbnN0IEg9WS5lbGVtZW50LGl0PUguX2NvbW1lbnR8fCIiLHJ0PSRyKEgpO2RlbGV0ZSBILl9jb21tZW50LHIuYWRkRWRpdCh7dGFyZ2V0OkgsdGFyZ2V0RGF0YTpydCxjaGFuZ2VzOntjb21tZW50OntvcmlnaW5hbDppdCxtb2RpZmllZDoiIn19LHNjcmVlbnNob3Q6bnVsbH0pLHYoVj0+VisxKX19LFN0PShfLFkpPT57aWYoWSl7RC5jdXJyZW50LnNldChfLFkpO2NvbnN0IEg9WS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpLmFkZEV4Y2x1c2lvblJlY3QoYGNvbW1lbnQtYm94LSR7X31gLEgpfWVsc2UgRC5jdXJyZW50LmRlbGV0ZShfKSxpLnJlbW92ZUV4Y2x1c2lvblJlY3QoYGNvbW1lbnQtYm94LSR7X31gKX07cmV0dXJuIGguanN4KCJkaXYiLHsiZGF0YS1sb2MiOiJzcmMvbW9kdWxlcy9Eb21TZWxlY3Rvci9Db21tZW50TWFya2Vycy9Db21tZW50TWFya2Vycy50c3g6MjI5IixjbGFzc05hbWU6ImZpeGVkIGluc2V0LTAgcG9pbnRlci1ldmVudHMtbm9uZSIsc3R5bGU6e3pJbmRleDoyMTQ3NDgzNjQyfSxbYWxdOiJ0cnVlIixjaGlsZHJlbjpqLm1hcChfPT57bGV0IEg9eD09PV8uZWxlbWVudDtpZighSCYmeCYmZG9jdW1lbnQuY29udGFpbnMoeCkpe2NvbnN0IGl0PUQuY3VycmVudC5nZXQoXy5pZCk7aWYoaXQpe2NvbnN0IHJ0PXguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksVj1pdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtIPWF0KFYscnQpfX1yZXR1cm4gaC5qc3goUzAseyJkYXRhLWxvYyI6InNyYy9tb2R1bGVzL0RvbVNlbGVjdG9yL0NvbW1lbnRNYXJrZXJzL0NvbW1lbnRNYXJrZXJzLnRzeDoyNDkiLGNvbW1lbnQ6Xy5jb21tZW50LGVsZW1lbnRSZWN0Ol8uZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpc0hpZGRlbjpILG9uTW91c2VFbnRlcjooKT0+JChfLmlkKSxvbk1vdXNlTGVhdmU6bnQsb25DbGljazooKT0+Y3QoXy5pZCksb25EZWxldGU6KCk9Pmh0KF8uaWQpLGJveFJlZjppdD0+U3QoXy5pZCxpdCl9LF8uaWQpfSl9KX1jb25zdCBDMD1laS5jcmVhdGVPcGVuZXIoWXUse3NpbmdsZXRvbjohMH0pLEUwPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxDb21tZW50TWFya2VyczpZdSxvcGVuQ29tbWVudE1hcmtlcnM6QzB9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksVDA9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGRlZmF1bHQ6JyNtYW51cy1wcmV2aWV3ZXItY29udGVudC1yb290ey0tYmFja2dyb3VuZC1ncmF5LWxvZ2luOiAjZjhmOGY3Oy0tYmFja2dyb3VuZC1zZWxlY3Rpb246ICNiOGQzZjg7LS1iYWNrZ3JvdW5kLXRvb2wtdXNlZDogbGluZWFyLWdyYWRpZW50KCAxNzZkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgNS44OCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjYpIDUxLjI4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSA5NC45NSUgKTstLWJhY2tncm91bmQtZHJhZy1vdmVybGF5OiAjZmZmZmZmODA7LS1iYWNrZ3JvdW5kLXRoaW5raW5nOiBsaW5lYXItZ3JhZGllbnQoIDkwZGVnLCB2YXIoLS10ZXh0LXByaW1hcnkpIDAlLCAjZDlkOGQ4IDUwLjQ4JSwgdmFyKC0tdGV4dC1wcmltYXJ5KSA5OS4wNCUgKTstLWJhY2tncm91bmQtYXBwLWJhbm5lcjogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI2Y3ZjdmNyAwJSwgI2VjZWNlYyAxMDAlKTstLWJhY2tncm91bmQtc2hhcmUtaGVhZGVyOiBsaW5lYXItZ3JhZGllbnQoIDBkZWcsIHJnYmEoMjQ4LCAyNDgsIDI0NywgMCkgMCUsICNmOGY4ZjcgNDUuMDUlICk7LS10ZXh0LXByaW1hcnk6ICMzNDMyMmQ7LS10ZXh0LXNlY29uZGFyeTogIzVlNWU1YjstLXRleHQtdGVydGlhcnk6ICM4NTg0ODE7LS10ZXh0LWRpc2FibGU6ICNiOWI5Yjc7LS10ZXh0LWJsdWU6ICMwMDgxZjI7LS10ZXh0LW9uYmxhY2s6ICNmZmZmZmY7LS10ZXh0LXdoaXRlOiAjZmZmZmZmOy0tdGV4dC13aGl0ZS10c3A6ICNmZmZmZmY5OTstLXRoZW1lLXRleHQtcHJpbWFyeTogIzI2MjYyNjstLWxvZ28tY29sb3I6ICMzNDMyMmQ7LS10ZXh0LXNoaW5pbmc6ICNlNWU1ZTU7LS1iYWNrZ3JvdW5kLWdyYXktbWFpbjogI2Y4ZjhmNzstLWJhY2tncm91bmQtd2hpdGUtbWFpbjogI2ZmZmZmZjstLWJhY2tncm91bmQtbWVudS13aGl0ZTogI2ZmZmZmZjstLWJhY2tncm91bmQtbWVudS1ncmF5OiAjZjhmOGY3Oy0tYmFja2dyb3VuZC10c3AtbWVudS13aGl0ZTogI2ZmZmZmZjE0Oy0tYmFja2dyb3VuZC10c3AtY2FyZC1ncmF5OiAjMzczNTJmMGE7LS1iYWNrZ3JvdW5kLW5hdjogI2ViZWJlYjstLWJhY2tncm91bmQtY2FyZDogI2ZhZmFmYTstLWJhY2tncm91bmQtbWFzazogIzAwMDAwMGE2Oy0tYmFja2dyb3VuZC1jYXJkLWdyYXk6ICNmYWZhZmE7LS1iYWNrZ3JvdW5kLXByZXZpZXctbWFzazogIzAwMDAwMGQ5Oy0tYm9yZGVyLW1haW46ICMwMDAwMDAwZjstLWJvcmRlci13aGl0ZTogI2ZmZmZmZjMzOy0tYm9yZGVyLWJ0bi1tYWluOiAjMDAwMDAwMWY7LS1ib3JkZXItaW5wdXQtYWN0aXZlOiAjMDA4MWYyODA7LS1ib3JkZXItbGlnaHQ6ICMwMDAwMDAwYTstLWJvcmRlci1kYXJrOiAjMDAwMDAwMWY7LS1ib3JkZXItcHJpbWFyeTogIzRmNTk2NjFmOy0taWNvbi1wcmltYXJ5OiAjMzQzMjJkOy0taWNvbi1zZWNvbmRhcnk6ICM1ZTVlNWI7LS1pY29uLXRlcnRpYXJ5OiAjODU4NDgxOy0taWNvbi1kaXNhYmxlOiAjYjliOWI3Oy0taWNvbi1ibHVlOiAjMDA4MWYyOy0taWNvbi1vbmJsYWNrOiAjZmZmZmZmOy0taWNvbi13aGl0ZTogI2ZmZmZmZjstLWljb24td2hpdGUtdHNwOiAjZmZmZmZmOTk7LS1mdW5jdGlvbi1lcnJvcjogI2YyNWE1YTstLWZ1bmN0aW9uLXN1Y2Nlc3M6ICMyNWJhM2I7LS1mdW5jdGlvbi13YXJuaW5nOiAjZWZhMjAxOy0tZnVuY3Rpb24tZXJyb3ItdHNwOiAjZjI1YTVhMTQ7LS1mdW5jdGlvbi13YXJuaW5nLXRzcDogI2VmYTIwMTFmOy0tZnVuY3Rpb24tc3VjY2Vzcy10c3A6ICMyNWJhM2IxNDstLWZpbGwtYmx1ZTogIzAwODFmMjE0Oy0tZmlsbC10c3Atd2hpdGUtbWFpbjogIzM3MzUyZjBmOy0tZmlsbC10c3Atd2hpdGUtZGFyazogIzM3MzUyZjE0Oy0tZmlsbC10c3Atd2hpdGUtbGlnaHQ6ICMzNzM1MmYwYTstLWZpbGwtdHNwLWdyYXktZGFyazogIzM3MzUyZjE0Oy0tZmlsbC10c3AtZ3JheS1tYWluOiAjMzczNTJmMGE7LS1maWxsLXdoaXRlOiAjZmZmZmZmOy0tZmlsbC1ibGFjazogIzI4MjgyOTczOy0tZmlsbC1ncmF5OiAjZjhmOGY3Oy0tQnV0dG9uLXByaW1hcnktYmxhY2s6ICMxYTFhMTk7LS1CdXR0b24tcHJpbWFyeS13aGl0ZTogI2ZmZmZmZjstLUJ1dHRvbi1wcmltYXJ5LWJyYW5kOiAjMDA4MWYyOy0tQnV0dG9uLXByaW1hcnktYnJhbmQtZGlzYWJsZWQ6ICM3Y2JkZjU7LS1CdXR0b24tc2Vjb25kYXJ5LWJyYW5kOiAjMDA4MWYyMWE7LS1CdXR0b24tc2Vjb25kYXJ5LWVycm9yLWJvcmRlcjogI2YyNWE1YTgwOy0tQnV0dG9uLXNlY29uZGFyeS1lcnJvci1maWxsOiAjZmZmZmZmOy0tQnV0dG9uLXNlY29uZGFyeS1tYWluOiAjZmZmZmZmOy0tQnV0dG9uLXNlY29uZGFyeS1ncmF5OiAjMzczNTJmMGY7LS10YWItZmlsbDogcmdiYSgwLCAwLCAwLCAuMDQpOy0tdGFiLWFjdGl2ZS1ibGFjazogIzFhMWExOTstLXNoYWRvdy1MOiAjMDAwMDAwM2Q7LS1zaGFkb3ctTTogIzAwMDAwMDFmOy0tc2hhZG93LVM6ICMwMDAwMDAxNDstLXNoYWRvdy1YUzogIzAwMDAwMDBmOy0tc2hhZG93cy1pbm5lci0wOiAjZmZmZmZmMDA7LS1zaGFkb3dzLWlubmVyLTE6ICMxNjE5MWQxNDstLXNoYWRvd3MtaW5uZXItMjogIzE2MTkxZDFmOy0tc2hhZG93cy1kcm9wLTE6ICMxNjE5MWQwODstLXNoYWRvd3MtZHJvcC0yOiAjMTYxOTFkMGE7LS1zaGFkb3dzLWRyb3AtMzogIzE2MTkxZDE0Oy0tc2hhZG93cy1kcm9wLTQ6ICMxNjE5MWQxZjstLXNoYWRvd3MtaGlnaGxpZ2h0LTE6ICNjY2U1ZmY7LS1zaGFkb3dzLWhpZ2hsaWdodC0yOiAjMTQ4N2ZhOy0tc2hhZG93cy1kYW5nZXItMTogI2ZlZDdkNzstLXNoYWRvd3MtZGFuZ2VyLTI6ICNlZTNhM2E7LS1zaGFkb3dzLWNhcmQtYm9yZGVyOiAjMTYxOTFkMWY7LS1zaGFkb3dzLWNhcmQtYm9yZGVyLTI6ICMxNjE5MWQxZjstLVRvb2x0aXBzLW1haW46ICMwMDAwMDBlNjstLWdyYWR1YWwtd2hpdGUtMDogI2ZmZmZmZjAwOy0tZ3JhZHVhbC1ncmF5LTEwMDogI2ZmZmZmZjAwOy0tZ3JhZHVhbC1ncmF5LTA6ICNmZmZmZmYwMDstLWdyYWR1YWwtZGFyay0yMDogIzAwMDAwMDMzOy0tZmlsbC1pbnB1dC1jaGF0OiAjZmZmZmZmOy0tZ3JhZGllbnQtYmctbWFzay1ncmF5LTA6ICNlYWVhZWIwMDstLWdyYWR1YWwtd2hpdGUtbWVudS0wOiAjZmZmZmZmMDB9I21hbnVzLXByZXZpZXdlci1jb250ZW50LXJvb3QuZGFya3stLXRleHQtcHJpbWFyeTogI2RhZGFkYTstLXRleHQtc2Vjb25kYXJ5OiAjYWNhY2FjOy0tdGV4dC10ZXJ0aWFyeTogIzdmN2Y3ZjstLXRleHQtZGlzYWJsZTogIzVmNWY1ZjstLXRleHQtYmx1ZTogIzFhOTNmZTstLXRleHQtb25ibGFjazogIzAwMDAwMGU2Oy0tdGV4dC13aGl0ZTogI2ZmZmZmZjstLXRleHQtd2hpdGUtdHNwOiAjZmZmZmZmOTk7LS10aGVtZS10ZXh0LXByaW1hcnk6ICNkYmRiZGI7LS1sb2dvLWNvbG9yOiAjZGFkYWRhOy0tdGV4dC1zaGluaW5nOiAjNDc0NzQ3Oy0tYmFja2dyb3VuZC1ncmF5LW1haW46ICMyNzI3Mjg7LS1iYWNrZ3JvdW5kLXdoaXRlLW1haW46ICMxNjE2MTg7LS1iYWNrZ3JvdW5kLW1lbnUtd2hpdGU6ICMzODM3Mzk7LS1iYWNrZ3JvdW5kLW1lbnUtZ3JheTogIzI3MjcyODstLWJhY2tncm91bmQtdHNwLW1lbnUtd2hpdGU6ICNmZmZmZmYwZjstLWJhY2tncm91bmQtdHNwLWNhcmQtZ3JheTogI2ZmZmZmZjBmOy0tYmFja2dyb3VuZC1uYXY6ICMyMTIxMjI7LS1iYWNrZ3JvdW5kLWNhcmQ6ICMzODM3Mzk7LS1iYWNrZ3JvdW5kLW1hc2stYmxhY2s6ICMwMDAwMDBhNjstLWJhY2tncm91bmQtbWFzay13aGl0ZTogIzI3MjcyOGE2Oy0tYmFja2dyb3VuZC1jYXJkLWdyYXk6ICMzODM3Mzk7LS1iYWNrZ3JvdW5kLXByZXZpZXctbWFzazogIzAwMDAwMGQ5Oy0tYm9yZGVyLW1haW46ICNmZmZmZmYxNDstLWJvcmRlci13aGl0ZTogIzAwMDAwMDE0Oy0tYm9yZGVyLWJ0bi1tYWluOiAjZmZmZmZmMWE7LS1ib3JkZXItaW5wdXQtYWN0aXZlOiAjMWE5M2ZlODA7LS1ib3JkZXItbGlnaHQ6ICNmZmZmZmYwZjstLWJvcmRlci1kYXJrOiAjZmZmZmZmMjk7LS1ib3JkZXItcHJpbWFyeTogIzU2NTY1ZjUyOy0taWNvbi1wcmltYXJ5OiAjZGFkYWRhOy0taWNvbi1zZWNvbmRhcnk6ICNhY2FjYWM7LS1pY29uLXRlcnRpYXJ5OiAjN2Y3ZjdmOy0taWNvbi1kaXNhYmxlOiAjNWY1ZjVmOy0taWNvbi1ibHVlOiAjMWE5M2ZlOy0taWNvbi1vbmJsYWNrOiAjMDAwMDAwZDk7LS1pY29uLXdoaXRlOiAjZmZmZmZmOy0taWNvbi13aGl0ZS10c3A6ICNmZmZmZmY5OTstLWZ1bmN0aW9uLWVycm9yOiAjZWI0ZDRkOy0tZnVuY3Rpb24tc3VjY2VzczogIzVlYjkyZDstLWZ1bmN0aW9uLXdhcm5pbmc6ICNmZmJmMzY7LS1mdW5jdGlvbi1lcnJvci10c3A6ICNlYjRkNGQxNDstLWZ1bmN0aW9uLXdhcm5pbmctdHNwOiAjZmZiZjM2MWY7LS1mdW5jdGlvbi1zdWNjZXNzLXRzcDogIzI1YmEzYjFmOy0tZmlsbC1ibHVlOiAjMWE5M2ZlMWY7LS1maWxsLXRzcC13aGl0ZS1tYWluOiAjZmZmZmZmMGY7LS1maWxsLXRzcC13aGl0ZS1kYXJrOiAjZmZmZmZmMWY7LS1maWxsLXRzcC13aGl0ZS1saWdodDogI2ZmZmZmZjBhOy0tZmlsbC10c3AtZ3JheS1kYXJrOiAjMDAwMDAwNDc7LS1maWxsLXRzcC1ncmF5LW1haW46ICMwMDAwMDAzMzstLWZpbGwtd2hpdGU6ICMzZTNkM2U7LS1maWxsLWJsYWNrOiAjMjgyODI5NzM7LS1maWxsLWdyYXk6ICM0NDQzNDU7LS1CdXR0b24tcHJpbWFyeS1ibGFjazogI2ZmZmZmZjstLUJ1dHRvbi1wcmltYXJ5LXdoaXRlOiAjZmZmZmZmMTQ7LS1CdXR0b24tcHJpbWFyeS1icmFuZDogIzFhOTNmZTstLUJ1dHRvbi1wcmltYXJ5LWJyYW5kLWRpc2FibGVkOiAjMjE1ZDkzOy0tQnV0dG9uLXNlY29uZGFyeS1icmFuZDogIzFhOTNmZTFmOy0tQnV0dG9uLXNlY29uZGFyeS1lcnJvci1ib3JkZXI6ICNlYjRkNGQyOTstLUJ1dHRvbi1zZWNvbmRhcnktZXJyb3ItZmlsbDogI2ViNGQ0ZDFmOy0tQnV0dG9uLXNlY29uZGFyeS1tYWluOiAjZmZmZmZmMWY7LS1CdXR0b24tc2Vjb25kYXJ5LWdyYXk6ICNmZmZmZmYwZjstLXRhYi1maWxsOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC4wNik7LS10YWItYWN0aXZlLWJsYWNrOiAjZmZmZmZmOy0tc2hhZG93LUw6ICMwMDAwMDA2NjstLXNoYWRvdy1NOiAjMDAwMDAwM2Q7LS1zaGFkb3ctUzogIzAwMDAwMDI5Oy0tc2hhZG93LVhTOiAjMDAwMDAwMWY7LS1zaGFkb3dzLWlubmVyLTA6ICNmZmZmZmYxZjstLXNoYWRvd3MtaW5uZXItMTogI2ZmZmZmZjE0Oy0tc2hhZG93cy1pbm5lci0yOiAjZmZmZmZmMWY7LS1zaGFkb3dzLWRyb3AtMTogIzAwMDAwMDFmOy0tc2hhZG93cy1kcm9wLTI6ICMwMDAwMDAzMzstLXNoYWRvd3MtZHJvcC0zOiAjMDAwMDAwNDc7LS1zaGFkb3dzLWRyb3AtNDogIzAwMDAwMDVjOy0tc2hhZG93cy1oaWdobGlnaHQtMTogIzFiNjFhNjstLXNoYWRvd3MtaGlnaGxpZ2h0LTI6ICMxNDg3ZmE7LS1zaGFkb3dzLWRhbmdlci0xOiAjOGYxOTE5Oy0tc2hhZG93cy1kYW5nZXItMjogI2VlM2EzYTstLXNoYWRvd3MtY2FyZC1ib3JkZXI6ICNmZmZmZmYxZjstLXNoYWRvd3MtY2FyZC1ib3JkZXItMjogI2ZmZmZmZjAwOy0tVG9vbHRpcHMtbWFpbjogIzAwMDAwMGU2Oy0tZ3JhZHVhbC13aGl0ZS0wOiAjMjcyNzI4MDA7LS1ncmFkdWFsLWdyYXktMTAwOiAjNDQ0MzQ1Oy0tZ3JhZHVhbC1ncmF5LTA6ICM0NDQzNDUwMDstLWdyYWR1YWwtZGFyay0yMDogI2ZmZmZmZjMzOy0tZmlsbC1pbnB1dC1jaGF0OiAjMzYzNTM3Oy0tZ3JhZGllbnQtYmctbWFzay1ncmF5LTA6ICMxZTFlMWUwMDstLWdyYWR1YWwtd2hpdGUtbWVudS0wOiAjMzgzNzM5MDB9Kiw6YmVmb3JlLDphZnRlcnstLXR3LWJvcmRlci1zcGFjaW5nLXg6IDA7LS10dy1ib3JkZXItc3BhY2luZy15OiAwOy0tdHctdHJhbnNsYXRlLXg6IDA7LS10dy10cmFuc2xhdGUteTogMDstLXR3LXJvdGF0ZTogMDstLXR3LXNrZXcteDogMDstLXR3LXNrZXcteTogMDstLXR3LXNjYWxlLXg6IDE7LS10dy1zY2FsZS15OiAxOy0tdHctcGFuLXg6IDstLXR3LXBhbi15OiA7LS10dy1waW5jaC16b29tOiA7LS10dy1zY3JvbGwtc25hcC1zdHJpY3RuZXNzOiBwcm94aW1pdHk7LS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uOiA7LS10dy1ncmFkaWVudC12aWEtcG9zaXRpb246IDstLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uOiA7LS10dy1vcmRpbmFsOiA7LS10dy1zbGFzaGVkLXplcm86IDstLXR3LW51bWVyaWMtZmlndXJlOiA7LS10dy1udW1lcmljLXNwYWNpbmc6IDstLXR3LW51bWVyaWMtZnJhY3Rpb246IDstLXR3LXJpbmctaW5zZXQ6IDstLXR3LXJpbmctb2Zmc2V0LXdpZHRoOiAwcHg7LS10dy1yaW5nLW9mZnNldC1jb2xvcjogI2ZmZjstLXR3LXJpbmctY29sb3I6IHJnYig1OSAxMzAgMjQ2IC8gLjUpOy0tdHctcmluZy1vZmZzZXQtc2hhZG93OiAwIDAgIzAwMDA7LS10dy1yaW5nLXNoYWRvdzogMCAwICMwMDAwOy0tdHctc2hhZG93OiAwIDAgIzAwMDA7LS10dy1zaGFkb3ctY29sb3JlZDogMCAwICMwMDAwOy0tdHctYmx1cjogOy0tdHctYnJpZ2h0bmVzczogOy0tdHctY29udHJhc3Q6IDstLXR3LWdyYXlzY2FsZTogOy0tdHctaHVlLXJvdGF0ZTogOy0tdHctaW52ZXJ0OiA7LS10dy1zYXR1cmF0ZTogOy0tdHctc2VwaWE6IDstLXR3LWRyb3Atc2hhZG93OiA7LS10dy1iYWNrZHJvcC1ibHVyOiA7LS10dy1iYWNrZHJvcC1icmlnaHRuZXNzOiA7LS10dy1iYWNrZHJvcC1jb250cmFzdDogOy0tdHctYmFja2Ryb3AtZ3JheXNjYWxlOiA7LS10dy1iYWNrZHJvcC1odWUtcm90YXRlOiA7LS10dy1iYWNrZHJvcC1pbnZlcnQ6IDstLXR3LWJhY2tkcm9wLW9wYWNpdHk6IDstLXR3LWJhY2tkcm9wLXNhdHVyYXRlOiA7LS10dy1iYWNrZHJvcC1zZXBpYTogOy0tdHctY29udGFpbi1zaXplOiA7LS10dy1jb250YWluLWxheW91dDogOy0tdHctY29udGFpbi1wYWludDogOy0tdHctY29udGFpbi1zdHlsZTogfTo6YmFja2Ryb3B7LS10dy1ib3JkZXItc3BhY2luZy14OiAwOy0tdHctYm9yZGVyLXNwYWNpbmcteTogMDstLXR3LXRyYW5zbGF0ZS14OiAwOy0tdHctdHJhbnNsYXRlLXk6IDA7LS10dy1yb3RhdGU6IDA7LS10dy1za2V3LXg6IDA7LS10dy1za2V3LXk6IDA7LS10dy1zY2FsZS14OiAxOy0tdHctc2NhbGUteTogMTstLXR3LXBhbi14OiA7LS10dy1wYW4teTogOy0tdHctcGluY2gtem9vbTogOy0tdHctc2Nyb2xsLXNuYXAtc3RyaWN0bmVzczogcHJveGltaXR5Oy0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbjogOy0tdHctZ3JhZGllbnQtdmlhLXBvc2l0aW9uOiA7LS10dy1ncmFkaWVudC10by1wb3NpdGlvbjogOy0tdHctb3JkaW5hbDogOy0tdHctc2xhc2hlZC16ZXJvOiA7LS10dy1udW1lcmljLWZpZ3VyZTogOy0tdHctbnVtZXJpYy1zcGFjaW5nOiA7LS10dy1udW1lcmljLWZyYWN0aW9uOiA7LS10dy1yaW5nLWluc2V0OiA7LS10dy1yaW5nLW9mZnNldC13aWR0aDogMHB4Oy0tdHctcmluZy1vZmZzZXQtY29sb3I6ICNmZmY7LS10dy1yaW5nLWNvbG9yOiByZ2IoNTkgMTMwIDI0NiAvIC41KTstLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzogMCAwICMwMDAwOy0tdHctcmluZy1zaGFkb3c6IDAgMCAjMDAwMDstLXR3LXNoYWRvdzogMCAwICMwMDAwOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMCAjMDAwMDstLXR3LWJsdXI6IDstLXR3LWJyaWdodG5lc3M6IDstLXR3LWNvbnRyYXN0OiA7LS10dy1ncmF5c2NhbGU6IDstLXR3LWh1ZS1yb3RhdGU6IDstLXR3LWludmVydDogOy0tdHctc2F0dXJhdGU6IDstLXR3LXNlcGlhOiA7LS10dy1kcm9wLXNoYWRvdzogOy0tdHctYmFja2Ryb3AtYmx1cjogOy0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzczogOy0tdHctYmFja2Ryb3AtY29udHJhc3Q6IDstLXR3LWJhY2tkcm9wLWdyYXlzY2FsZTogOy0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZTogOy0tdHctYmFja2Ryb3AtaW52ZXJ0OiA7LS10dy1iYWNrZHJvcC1vcGFjaXR5OiA7LS10dy1iYWNrZHJvcC1zYXR1cmF0ZTogOy0tdHctYmFja2Ryb3Atc2VwaWE6IDstLXR3LWNvbnRhaW4tc2l6ZTogOy0tdHctY29udGFpbi1sYXlvdXQ6IDstLXR3LWNvbnRhaW4tcGFpbnQ6IDstLXR3LWNvbnRhaW4tc3R5bGU6IH0qLDpiZWZvcmUsOmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXItd2lkdGg6MDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNlNWU3ZWJ9OmJlZm9yZSw6YWZ0ZXJ7LS10dy1jb250ZW50OiAiIn1odG1sLDpob3N0e2xpbmUtaGVpZ2h0OjEuNTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstbW96LXRhYi1zaXplOjQ7LW8tdGFiLXNpemU6NDt0YWItc2l6ZTo0O2ZvbnQtZmFtaWx5OnVpLXNhbnMtc2VyaWYsc3lzdGVtLXVpLHNhbnMtc2VyaWYsIkFwcGxlIENvbG9yIEVtb2ppIiwiU2Vnb2UgVUkgRW1vamkiLFNlZ29lIFVJIFN5bWJvbCwiTm90byBDb2xvciBFbW9qaSI7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fWJvZHl7bWFyZ2luOjA7bGluZS1oZWlnaHQ6aW5oZXJpdH1ocntoZWlnaHQ6MDtjb2xvcjppbmhlcml0O2JvcmRlci10b3Atd2lkdGg6MXB4fWFiYnI6d2hlcmUoW3RpdGxlXSl7LXdlYmtpdC10ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIGRvdHRlZDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIGRvdHRlZH1oMSxoMixoMyxoNCxoNSxoNntmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDppbmhlcml0fWF7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246aW5oZXJpdH1iLHN0cm9uZ3tmb250LXdlaWdodDpib2xkZXJ9Y29kZSxrYmQsc2FtcCxwcmV7Zm9udC1mYW1pbHk6dWktbW9ub3NwYWNlLFNGTW9uby1SZWd1bGFyLE1lbmxvLE1vbmFjbyxDb25zb2xhcyxMaWJlcmF0aW9uIE1vbm8sQ291cmllciBOZXcsbW9ub3NwYWNlO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO2ZvbnQtc2l6ZToxZW19c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfXRhYmxle3RleHQtaW5kZW50OjA7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfWJ1dHRvbixpbnB1dCxvcHRncm91cCxzZWxlY3QsdGV4dGFyZWF7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LWZlYXR1cmUtc2V0dGluZ3M6aW5oZXJpdDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczppbmhlcml0O2ZvbnQtc2l6ZToxMDAlO2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdDtsZXR0ZXItc3BhY2luZzppbmhlcml0O2NvbG9yOmluaGVyaXQ7bWFyZ2luOjA7cGFkZGluZzowfWJ1dHRvbixzZWxlY3R7dGV4dC10cmFuc2Zvcm06bm9uZX1idXR0b24saW5wdXQ6d2hlcmUoW3R5cGU9YnV0dG9uXSksaW5wdXQ6d2hlcmUoW3R5cGU9cmVzZXRdKSxpbnB1dDp3aGVyZShbdHlwZT1zdWJtaXRdKXstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lfTotbW96LWZvY3VzcmluZ3tvdXRsaW5lOmF1dG99Oi1tb3otdWktaW52YWxpZHtib3gtc2hhZG93Om5vbmV9cHJvZ3Jlc3N7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b31bdHlwZT1zZWFyY2hdey13ZWJraXQtYXBwZWFyYW5jZTp0ZXh0ZmllbGQ7b3V0bGluZS1vZmZzZXQ6LTJweH06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Ojotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uO2ZvbnQ6aW5oZXJpdH1zdW1tYXJ5e2Rpc3BsYXk6bGlzdC1pdGVtfWJsb2NrcXVvdGUsZGwsZGQsaDEsaDIsaDMsaDQsaDUsaDYsaHIsZmlndXJlLHAscHJle21hcmdpbjowfWZpZWxkc2V0e21hcmdpbjowO3BhZGRpbmc6MH1sZWdlbmR7cGFkZGluZzowfW9sLHVsLG1lbnV7bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmc6MH1kaWFsb2d7cGFkZGluZzowfXRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbH1pbnB1dDo6LW1vei1wbGFjZWhvbGRlcix0ZXh0YXJlYTo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5OjE7Y29sb3I6IzljYTNhZn1pbnB1dDo6cGxhY2Vob2xkZXIsdGV4dGFyZWE6OnBsYWNlaG9sZGVye29wYWNpdHk6MTtjb2xvcjojOWNhM2FmfWJ1dHRvbixbcm9sZT1idXR0b25de2N1cnNvcjpwb2ludGVyfTpkaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH1pbWcsc3ZnLHZpZGVvLGNhbnZhcyxhdWRpbyxpZnJhbWUsZW1iZWQsb2JqZWN0e2Rpc3BsYXk6YmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfWltZyx2aWRlb3ttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b31baGlkZGVuXTp3aGVyZSg6bm90KFtoaWRkZW49dW50aWwtZm91bmRdKSl7ZGlzcGxheTpub25lfS5jb250YWluZXJ7d2lkdGg6MTAwJX1AbWVkaWEgKG1pbi13aWR0aDogNDc1cHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjQ3NXB4fX1AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjY0MHB4fX1AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjc2OHB4fX1AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KXsuY29udGFpbmVye21heC13aWR0aDoxMDI0cHh9fUBtZWRpYSAobWluLXdpZHRoOiAxMjgwcHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjEyODBweH19QG1lZGlhIChtaW4td2lkdGg6IDE1MzZweCl7LmNvbnRhaW5lcnttYXgtd2lkdGg6MTUzNnB4fX0ucG9pbnRlci1ldmVudHMtbm9uZXtwb2ludGVyLWV2ZW50czpub25lfS5wb2ludGVyLWV2ZW50cy1hdXRve3BvaW50ZXItZXZlbnRzOmF1dG99LnZpc2libGV7dmlzaWJpbGl0eTp2aXNpYmxlfS5pbnZpc2libGV7dmlzaWJpbGl0eTpoaWRkZW59LmZpeGVke3Bvc2l0aW9uOmZpeGVkfS5hYnNvbHV0ZXtwb3NpdGlvbjphYnNvbHV0ZX0ucmVsYXRpdmV7cG9zaXRpb246cmVsYXRpdmV9LnN0aWNreXtwb3NpdGlvbjpzdGlja3l9Lmluc2V0LTB7aW5zZXQ6MH0uLXRvcC0xe3RvcDotLjI1cmVtfS5ib3R0b20tMHtib3R0b206MH0uYm90dG9tLTh7Ym90dG9tOjJyZW19LmJvdHRvbS1mdWxse2JvdHRvbToxMDAlfS5sZWZ0LTB7bGVmdDowfS5sZWZ0LTJcXC41e2xlZnQ6LjYyNXJlbX0ubGVmdC04e2xlZnQ6MnJlbX0ucmlnaHQtMHtyaWdodDowfS5yaWdodC00e3JpZ2h0OjFyZW19LnRvcC0we3RvcDowfS50b3AtMVxcLzJ7dG9wOjUwJX0udG9wLTR7dG9wOjFyZW19LnRvcC1mdWxse3RvcDoxMDAlfS56LTUwe3otaW5kZXg6NTB9LnotXFxbLTFcXF17ei1pbmRleDotMX0uei1cXFsyMTQ3NDgzNjQzXFxde3otaW5kZXg6MjE0NzQ4MzY0M30uei1cXFsyMTQ3NDgzNjQ0XFxde3otaW5kZXg6MjE0NzQ4MzY0NH0uei1cXFs5OTk5OTlcXF17ei1pbmRleDo5OTk5OTl9LnotXFxbOTk5OVxcXXt6LWluZGV4Ojk5OTl9Li1tLVxcWzI1XFwlXFxde21hcmdpbjotMjUlfS5tLTB7bWFyZ2luOjB9Lm14LTJ7bWFyZ2luLWxlZnQ6LjVyZW07bWFyZ2luLXJpZ2h0Oi41cmVtfS5teC1hdXRve21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG99Lm1iLTF7bWFyZ2luLWJvdHRvbTouMjVyZW19Lm1iLTFcXC41e21hcmdpbi1ib3R0b206LjM3NXJlbX0ubWItMnttYXJnaW4tYm90dG9tOi41cmVtfS5tYi00e21hcmdpbi1ib3R0b206MXJlbX0ubWItNnttYXJnaW4tYm90dG9tOjEuNXJlbX0ubWItOHttYXJnaW4tYm90dG9tOjJyZW19Lm1iLVxcWzZweFxcXXttYXJnaW4tYm90dG9tOjZweH0ubWwtMXttYXJnaW4tbGVmdDouMjVyZW19Lm1yLTF7bWFyZ2luLXJpZ2h0Oi4yNXJlbX0ubXQtMFxcLjV7bWFyZ2luLXRvcDouMTI1cmVtfS5tdC0xe21hcmdpbi10b3A6LjI1cmVtfS5tdC0xMnttYXJnaW4tdG9wOjNyZW19Lm10LTJ7bWFyZ2luLXRvcDouNXJlbX0ubXQtNHttYXJnaW4tdG9wOjFyZW19Lm10LTZ7bWFyZ2luLXRvcDoxLjVyZW19Lm10LTh7bWFyZ2luLXRvcDoycmVtfS5saW5lLWNsYW1wLTJ7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6LXdlYmtpdC1ib3g7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtbGluZS1jbGFtcDoyfS5ibG9ja3tkaXNwbGF5OmJsb2NrfS5pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmlubGluZXtkaXNwbGF5OmlubGluZX0uZmxleHtkaXNwbGF5OmZsZXh9LmlubGluZS1mbGV4e2Rpc3BsYXk6aW5saW5lLWZsZXh9LmdyaWR7ZGlzcGxheTpncmlkfS5pbmxpbmUtZ3JpZHtkaXNwbGF5OmlubGluZS1ncmlkfS5oaWRkZW57ZGlzcGxheTpub25lfS5zaXplLTV7d2lkdGg6MS4yNXJlbTtoZWlnaHQ6MS4yNXJlbX0uc2l6ZS03e3dpZHRoOjEuNzVyZW07aGVpZ2h0OjEuNzVyZW19LmgtMFxcLjV7aGVpZ2h0Oi4xMjVyZW19LmgtMTJ7aGVpZ2h0OjNyZW19LmgtMntoZWlnaHQ6LjVyZW19LmgtNHtoZWlnaHQ6MXJlbX0uaC00OHtoZWlnaHQ6MTJyZW19LmgtNXtoZWlnaHQ6MS4yNXJlbX0uaC02e2hlaWdodDoxLjVyZW19LmgtOHtoZWlnaHQ6MnJlbX0uaC1cXFsxNTBcXCVcXF17aGVpZ2h0OjE1MCV9LmgtXFxbMThweFxcXXtoZWlnaHQ6MThweH0uaC1hdXRve2hlaWdodDphdXRvfS5oLWZ1bGx7aGVpZ2h0OjEwMCV9Lm1heC1oLTk2e21heC1oZWlnaHQ6MjRyZW19Lm1heC1oLVxcWzcwdmhcXF17bWF4LWhlaWdodDo3MHZofS5tYXgtaC1cXFs4MHZoXFxde21heC1oZWlnaHQ6ODB2aH0ubWluLWgtMHttaW4taGVpZ2h0OjBweH0ubWluLWgtc2NyZWVue21pbi1oZWlnaHQ6MTAwdmh9LnctMnt3aWR0aDouNXJlbX0udy00e3dpZHRoOjFyZW19LnctNXt3aWR0aDoxLjI1cmVtfS53LTZ7d2lkdGg6MS41cmVtfS53LTY0e3dpZHRoOjE2cmVtfS53LTh7d2lkdGg6MnJlbX0udy04MHt3aWR0aDoyMHJlbX0udy1cXFsxNTBcXCVcXF17d2lkdGg6MTUwJX0udy1cXFsxOHB4XFxde3dpZHRoOjE4cHh9LnctXFxbOTBcXCVcXF17d2lkdGg6OTAlfS53LWZ1bGx7d2lkdGg6MTAwJX0udy1weHt3aWR0aDoxcHh9Lm1pbi13LTB7bWluLXdpZHRoOjBweH0ubWF4LXctMnhse21heC13aWR0aDo0MnJlbX0ubWF4LXctNHhse21heC13aWR0aDo1NnJlbX0ubWF4LXctN3hse21heC13aWR0aDo4MHJlbX0ubWF4LXctXFxbMjYwcHhcXF17bWF4LXdpZHRoOjI2MHB4fS5tYXgtdy1cXFs2MDBweFxcXXttYXgtd2lkdGg6NjAwcHh9LmZsZXgtMXtmbGV4OjEgMSAwJX0uZmxleC1zaHJpbmstMCwuc2hyaW5rLTB7ZmxleC1zaHJpbms6MH0uLXRyYW5zbGF0ZS15LTFcXC8yey0tdHctdHJhbnNsYXRlLXk6IC01MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tldyh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9LnJvdGF0ZS0xODB7LS10dy1yb3RhdGU6IDE4MGRlZzt0cmFuc2Zvcm06dHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSx2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3KHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKX0udHJhbnNmb3Jte3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXcodmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfUBrZXlmcmFtZXMgc3Bpbnt0b3t0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fS5hbmltYXRlLXNwaW57YW5pbWF0aW9uOnNwaW4gMXMgbGluZWFyIGluZmluaXRlfS5jdXJzb3ItZXctcmVzaXple2N1cnNvcjpldy1yZXNpemV9LmN1cnNvci1ub3QtYWxsb3dlZHtjdXJzb3I6bm90LWFsbG93ZWR9LmN1cnNvci1wb2ludGVye2N1cnNvcjpwb2ludGVyfS5yZXNpemUtbm9uZXtyZXNpemU6bm9uZX0ucmVzaXplLXl7cmVzaXplOnZlcnRpY2FsfS5yZXNpemV7cmVzaXplOmJvdGh9Lmxpc3QtaW5zaWRle2xpc3Qtc3R5bGUtcG9zaXRpb246aW5zaWRlfS5saXN0LWRpc2N7bGlzdC1zdHlsZS10eXBlOmRpc2N9LmFwcGVhcmFuY2Utbm9uZXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmV9LmdyaWQtY29scy0xe2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMSxtaW5tYXgoMCwxZnIpKX0uZ3JpZC1jb2xzLTJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLG1pbm1heCgwLDFmcikpfS5mbGV4LWNvbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmZsZXgtd3JhcHtmbGV4LXdyYXA6d3JhcH0uaXRlbXMtc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uaXRlbXMtZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kfS5pdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5pdGVtcy1zdHJldGNoe2FsaWduLWl0ZW1zOnN0cmV0Y2h9Lmp1c3RpZnktY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lmp1c3RpZnktYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0uZ2FwLTB7Z2FwOjBweH0uZ2FwLTF7Z2FwOi4yNXJlbX0uZ2FwLTFcXC41e2dhcDouMzc1cmVtfS5nYXAtMntnYXA6LjVyZW19LmdhcC0yXFwuNXtnYXA6LjYyNXJlbX0uZ2FwLTN7Z2FwOi43NXJlbX0uZ2FwLTR7Z2FwOjFyZW19LmdhcC02e2dhcDoxLjVyZW19LmdhcC04e2dhcDoycmVtfS5nYXAteC0yey1tb3otY29sdW1uLWdhcDouNXJlbTtjb2x1bW4tZ2FwOi41cmVtfS5nYXAteS0ze3Jvdy1nYXA6Ljc1cmVtfS5zcGFjZS15LTE+Om5vdChbaGlkZGVuXSl+Om5vdChbaGlkZGVuXSl7LS10dy1zcGFjZS15LXJldmVyc2U6IDA7bWFyZ2luLXRvcDpjYWxjKC4yNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTttYXJnaW4tYm90dG9tOmNhbGMoLjI1cmVtICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSl9LnNwYWNlLXktMVxcLjU+Om5vdChbaGlkZGVuXSl+Om5vdChbaGlkZGVuXSl7LS10dy1zcGFjZS15LXJldmVyc2U6IDA7bWFyZ2luLXRvcDpjYWxjKC4zNzVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKSk7bWFyZ2luLWJvdHRvbTpjYWxjKC4zNzVyZW0gKiB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKX0uc3BhY2UteS0yPjpub3QoW2hpZGRlbl0pfjpub3QoW2hpZGRlbl0pey0tdHctc3BhY2UteS1yZXZlcnNlOiAwO21hcmdpbi10b3A6Y2FsYyguNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTttYXJnaW4tYm90dG9tOmNhbGMoLjVyZW0gKiB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKX0uc3BhY2UteS0yXFwuNT46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXR3LXNwYWNlLXktcmV2ZXJzZTogMDttYXJnaW4tdG9wOmNhbGMoLjYyNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTttYXJnaW4tYm90dG9tOmNhbGMoLjYyNXJlbSAqIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpfS5zcGFjZS15LTY+Om5vdChbaGlkZGVuXSl+Om5vdChbaGlkZGVuXSl7LS10dy1zcGFjZS15LXJldmVyc2U6IDA7bWFyZ2luLXRvcDpjYWxjKDEuNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTttYXJnaW4tYm90dG9tOmNhbGMoMS41cmVtICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSl9LmRpdmlkZS15Pjpub3QoW2hpZGRlbl0pfjpub3QoW2hpZGRlbl0pey0tdHctZGl2aWRlLXktcmV2ZXJzZTogMDtib3JkZXItdG9wLXdpZHRoOmNhbGMoMXB4ICogY2FsYygxIC0gdmFyKC0tdHctZGl2aWRlLXktcmV2ZXJzZSkpKTtib3JkZXItYm90dG9tLXdpZHRoOmNhbGMoMXB4ICogdmFyKC0tdHctZGl2aWRlLXktcmV2ZXJzZSkpfS5vdmVyZmxvdy1oaWRkZW57b3ZlcmZsb3c6aGlkZGVufS5vdmVyZmxvdy15LWF1dG97b3ZlcmZsb3cteTphdXRvfS53aGl0ZXNwYWNlLW5vd3JhcHt3aGl0ZS1zcGFjZTpub3dyYXB9LndoaXRlc3BhY2UtcHJlLXdyYXB7d2hpdGUtc3BhY2U6cHJlLXdyYXB9LnRleHQtd3JhcHt0ZXh0LXdyYXA6d3JhcH0uYnJlYWstd29yZHN7b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkfS5yb3VuZGVke2JvcmRlci1yYWRpdXM6LjI1cmVtfS5yb3VuZGVkLTN4bHtib3JkZXItcmFkaXVzOjEuNXJlbX0ucm91bmRlZC1cXFsxMHB4XFxde2JvcmRlci1yYWRpdXM6MTBweH0ucm91bmRlZC1cXFsxMnB4XFxde2JvcmRlci1yYWRpdXM6MTJweH0ucm91bmRlZC1cXFsxNHB4XFxde2JvcmRlci1yYWRpdXM6MTRweH0ucm91bmRlZC1cXFsyMHB4XFxde2JvcmRlci1yYWRpdXM6MjBweH0ucm91bmRlZC1cXFs4cHhcXF17Ym9yZGVyLXJhZGl1czo4cHh9LnJvdW5kZWQtZnVsbHtib3JkZXItcmFkaXVzOjk5OTlweH0ucm91bmRlZC1sZ3tib3JkZXItcmFkaXVzOi41cmVtfS5yb3VuZGVkLXhse2JvcmRlci1yYWRpdXM6Ljc1cmVtfS5ib3JkZXJ7Ym9yZGVyLXdpZHRoOjFweH0uYm9yZGVyLTB7Ym9yZGVyLXdpZHRoOjBweH0uYm9yZGVyLVxcWzFcXC41cHhcXF17Ym9yZGVyLXdpZHRoOjEuNXB4fS5ib3JkZXItYntib3JkZXItYm90dG9tLXdpZHRoOjFweH0uYm9yZGVyLXR7Ym9yZGVyLXRvcC13aWR0aDoxcHh9LmJvcmRlci1ub25le2JvcmRlci1zdHlsZTpub25lfS5ib3JkZXItXFxbdmFyXFwoLS1ib3JkZXItbWFpblxcKVxcXXtib3JkZXItY29sb3I6dmFyKC0tYm9yZGVyLW1haW4pfS5ib3JkZXItXFxbdmFyXFwoLS1pY29uLXNlY29uZGFyeVxcKVxcXXtib3JkZXItY29sb3I6dmFyKC0taWNvbi1zZWNvbmRhcnkpfS5ib3JkZXItXFxbdmFyXFwoLS10ZXh0LXRlcnRpYXJ5XFwpXFxde2JvcmRlci1jb2xvcjp2YXIoLS10ZXh0LXRlcnRpYXJ5KX0uYm9yZGVyLWJsYWNrXFwvMTB7Ym9yZGVyLWNvbG9yOiMwMDAwMDAxYX0uYm9yZGVyLWJsYWNrXFwvMjB7Ym9yZGVyLWNvbG9yOiMwMDAzfS5ib3JkZXItZ3JheS0yMDB7LS10dy1ib3JkZXItb3BhY2l0eTogMTtib3JkZXItY29sb3I6cmdiKDIyOSAyMzEgMjM1IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKX0uYm9yZGVyLWdyYXktMzAwey0tdHctYm9yZGVyLW9wYWNpdHk6IDE7Ym9yZGVyLWNvbG9yOnJnYigyMDkgMjEzIDIxOSAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSl9LmJvcmRlci10cmFuc3BhcmVudHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LmJnLVxcW1xcIzAwODFmMlxcXXstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMCAxMjkgMjQyIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy1cXFtcXCNmZGY0ZTBcXF17LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDI1MyAyNDQgMjI0IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy1cXFtcXCNmZmZmZmYwZlxcXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwZn0uYmctXFxbXFwjZmZmZmZmMWFcXF17YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMWF9LmJnLVxcW3JnYlxcKDM3XFwsMzdcXCwzN1xcKVxcXXstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMzcgMzcgMzcgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLVxcW3JnYmFcXCgyMzlcXCwxNjJcXCwxXFwsMFxcLjEyXFwpXFxde2JhY2tncm91bmQtY29sb3I6I2VmYTIwMTFmfS5iZy1cXFt2YXJcXCgtLUJ1dHRvbi1wcmltYXJ5LWJyYW5kXFwpXFxde2JhY2tncm91bmQtY29sb3I6dmFyKC0tQnV0dG9uLXByaW1hcnktYnJhbmQpfS5iZy1cXFt2YXJcXCgtLWJhY2tncm91bmQtbWVudS1ncmF5XFwpXFxde2JhY2tncm91bmQtY29sb3I6dmFyKC0tYmFja2dyb3VuZC1tZW51LWdyYXkpfS5iZy1cXFt2YXJcXCgtLWJvcmRlci1tYWluXFwpXFxde2JhY2tncm91bmQtY29sb3I6dmFyKC0tYm9yZGVyLW1haW4pfS5iZy1cXFt2YXJcXCgtLWZpbGwtdHNwLXdoaXRlLW1haW5cXClcXF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1maWxsLXRzcC13aGl0ZS1tYWluKX0uYmctXFxbdmFyXFwoLS10ZXh0LXByaW1hcnlcXClcXF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpfS5iZy1ibGFja3stLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMCAwIDAgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLWJsYWNrXFwvNTB7YmFja2dyb3VuZC1jb2xvcjojMDAwMDAwODB9LmJnLWdyYXktMTAwey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNDMgMjQ0IDI0NiAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uYmctZ3JheS0yMDB7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDIyOSAyMzEgMjM1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy1ncmF5LTMwMHstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjA5IDIxMyAyMTkgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLWdyYXktNTB7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDI0OSAyNTAgMjUxIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy1pbmRpZ28tMTAwey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMjQgMjMxIDI1NSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uYmctaW5kaWdvLTYwMHstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoNzkgNzAgMjI5IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy1wdXJwbGUtNTB7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDI1MCAyNDUgMjU1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy1wdXJwbGUtNjAwey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigxNDcgNTEgMjM0IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy1yZWQtNTB7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDI1NCAyNDIgMjQyIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy1yZWQtNTAwey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMzkgNjggNjggLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLXRyYW5zcGFyZW50e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmJnLXdoaXRley0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUgMjU1IDI1NSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uYmctb3BhY2l0eS03NXstLXR3LWJnLW9wYWNpdHk6IC43NX0uYmctZ3JhZGllbnQtdG8tYnJ7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tIHJpZ2h0LHZhcigtLXR3LWdyYWRpZW50LXN0b3BzKSl9LmJnLWdyYWRpZW50LXRvLXJ7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsdmFyKC0tdHctZ3JhZGllbnQtc3RvcHMpKX0uZnJvbS1ibHVlLTUwey0tdHctZ3JhZGllbnQtZnJvbTogI2VmZjZmZiB2YXIoLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXRvOiByZ2IoMjM5IDI0NiAyNTUgLyAwKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbik7LS10dy1ncmFkaWVudC1zdG9wczogdmFyKC0tdHctZ3JhZGllbnQtZnJvbSksIHZhcigtLXR3LWdyYWRpZW50LXRvKX0uZnJvbS1wdXJwbGUtMTAwey0tdHctZ3JhZGllbnQtZnJvbTogI2YzZThmZiB2YXIoLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXRvOiByZ2IoMjQzIDIzMiAyNTUgLyAwKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbik7LS10dy1ncmFkaWVudC1zdG9wczogdmFyKC0tdHctZ3JhZGllbnQtZnJvbSksIHZhcigtLXR3LWdyYWRpZW50LXRvKX0uZnJvbS1wdXJwbGUtNjAwey0tdHctZ3JhZGllbnQtZnJvbTogIzkzMzNlYSB2YXIoLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXRvOiByZ2IoMTQ3IDUxIDIzNCAvIDApIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pfS50by1ibHVlLTEwMHstLXR3LWdyYWRpZW50LXRvOiAjZGJlYWZlIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKX0udG8tYmx1ZS02MDB7LS10dy1ncmFkaWVudC10bzogIzI1NjNlYiB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbil9LnRvLWluZGlnby0xMDB7LS10dy1ncmFkaWVudC10bzogI2UwZTdmZiB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbil9Lm9iamVjdC1jb250YWluey1vLW9iamVjdC1maXQ6Y29udGFpbjtvYmplY3QtZml0OmNvbnRhaW59Lm9iamVjdC1jb3Zlcnstby1vYmplY3QtZml0OmNvdmVyO29iamVjdC1maXQ6Y292ZXJ9LnAtMHtwYWRkaW5nOjB9LnAtMVxcLjV7cGFkZGluZzouMzc1cmVtfS5wLTJ7cGFkZGluZzouNXJlbX0ucC0ze3BhZGRpbmc6Ljc1cmVtfS5wLTR7cGFkZGluZzoxcmVtfS5wLTZ7cGFkZGluZzoxLjVyZW19LnAtOHtwYWRkaW5nOjJyZW19LnB4LTBcXC41e3BhZGRpbmctbGVmdDouMTI1cmVtO3BhZGRpbmctcmlnaHQ6LjEyNXJlbX0ucHgtMXtwYWRkaW5nLWxlZnQ6LjI1cmVtO3BhZGRpbmctcmlnaHQ6LjI1cmVtfS5weC0xXFwuNXtwYWRkaW5nLWxlZnQ6LjM3NXJlbTtwYWRkaW5nLXJpZ2h0Oi4zNzVyZW19LnB4LTJ7cGFkZGluZy1sZWZ0Oi41cmVtO3BhZGRpbmctcmlnaHQ6LjVyZW19LnB4LTJcXC41e3BhZGRpbmctbGVmdDouNjI1cmVtO3BhZGRpbmctcmlnaHQ6LjYyNXJlbX0ucHgtM3twYWRkaW5nLWxlZnQ6Ljc1cmVtO3BhZGRpbmctcmlnaHQ6Ljc1cmVtfS5weC00e3BhZGRpbmctbGVmdDoxcmVtO3BhZGRpbmctcmlnaHQ6MXJlbX0ucHgtNXtwYWRkaW5nLWxlZnQ6MS4yNXJlbTtwYWRkaW5nLXJpZ2h0OjEuMjVyZW19LnB4LTZ7cGFkZGluZy1sZWZ0OjEuNXJlbTtwYWRkaW5nLXJpZ2h0OjEuNXJlbX0ucHgtOHtwYWRkaW5nLWxlZnQ6MnJlbTtwYWRkaW5nLXJpZ2h0OjJyZW19LnB5LTB7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowfS5weS0wXFwuNXtwYWRkaW5nLXRvcDouMTI1cmVtO3BhZGRpbmctYm90dG9tOi4xMjVyZW19LnB5LTF7cGFkZGluZy10b3A6LjI1cmVtO3BhZGRpbmctYm90dG9tOi4yNXJlbX0ucHktMVxcLjV7cGFkZGluZy10b3A6LjM3NXJlbTtwYWRkaW5nLWJvdHRvbTouMzc1cmVtfS5weS0ye3BhZGRpbmctdG9wOi41cmVtO3BhZGRpbmctYm90dG9tOi41cmVtfS5weS0yXFwuNXtwYWRkaW5nLXRvcDouNjI1cmVtO3BhZGRpbmctYm90dG9tOi42MjVyZW19LnB5LTN7cGFkZGluZy10b3A6Ljc1cmVtO3BhZGRpbmctYm90dG9tOi43NXJlbX0ucHktNHtwYWRkaW5nLXRvcDoxcmVtO3BhZGRpbmctYm90dG9tOjFyZW19LnB5LTh7cGFkZGluZy10b3A6MnJlbTtwYWRkaW5nLWJvdHRvbToycmVtfS5wYi0we3BhZGRpbmctYm90dG9tOjB9LnBiLTFcXC41e3BhZGRpbmctYm90dG9tOi4zNzVyZW19LnBiLTN7cGFkZGluZy1ib3R0b206Ljc1cmVtfS5wYi00e3BhZGRpbmctYm90dG9tOjFyZW19LnBiLTh7cGFkZGluZy1ib3R0b206MnJlbX0ucGwtMXtwYWRkaW5nLWxlZnQ6LjI1cmVtfS5wbC0xMHtwYWRkaW5nLWxlZnQ6Mi41cmVtfS5wbC03e3BhZGRpbmctbGVmdDoxLjc1cmVtfS5wci00e3BhZGRpbmctcmlnaHQ6MXJlbX0ucHQtMHtwYWRkaW5nLXRvcDowfS5wdC0wXFwuNXtwYWRkaW5nLXRvcDouMTI1cmVtfS5wdC0xe3BhZGRpbmctdG9wOi4yNXJlbX0ucHQtMlxcLjV7cGFkZGluZy10b3A6LjYyNXJlbX0ucHQtM3twYWRkaW5nLXRvcDouNzVyZW19LnB0LTh7cGFkZGluZy10b3A6MnJlbX0udGV4dC1sZWZ0e3RleHQtYWxpZ246bGVmdH0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LmZvbnQtbW9ub3tmb250LWZhbWlseTp1aS1tb25vc3BhY2UsU0ZNb25vLVJlZ3VsYXIsTWVubG8sTW9uYWNvLENvbnNvbGFzLExpYmVyYXRpb24gTW9ubyxDb3VyaWVyIE5ldyxtb25vc3BhY2V9LnRleHQtMnhse2ZvbnQtc2l6ZToxLjVyZW07bGluZS1oZWlnaHQ6MnJlbX0udGV4dC0zeGx7Zm9udC1zaXplOjEuODc1cmVtO2xpbmUtaGVpZ2h0OjIuMjVyZW19LnRleHQtYmFzZXtmb250LXNpemU6MXJlbTtsaW5lLWhlaWdodDoxLjVyZW19LnRleHQtbGd7Zm9udC1zaXplOjEuMTI1cmVtO2xpbmUtaGVpZ2h0OjEuNzVyZW19LnRleHQtc217Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS4yNXJlbX0udGV4dC14bHtmb250LXNpemU6MS4yNXJlbTtsaW5lLWhlaWdodDoxLjc1cmVtfS50ZXh0LXhze2ZvbnQtc2l6ZTouNzVyZW07bGluZS1oZWlnaHQ6MXJlbX0uZm9udC1ib2xke2ZvbnQtd2VpZ2h0OjcwMH0uZm9udC1tZWRpdW17Zm9udC13ZWlnaHQ6NTAwfS5mb250LW5vcm1hbHtmb250LXdlaWdodDo0MDB9LmZvbnQtc2VtaWJvbGR7Zm9udC13ZWlnaHQ6NjAwfS50YWJ1bGFyLW51bXN7LS10dy1udW1lcmljLXNwYWNpbmc6IHRhYnVsYXItbnVtcztmb250LXZhcmlhbnQtbnVtZXJpYzp2YXIoLS10dy1vcmRpbmFsKSB2YXIoLS10dy1zbGFzaGVkLXplcm8pIHZhcigtLXR3LW51bWVyaWMtZmlndXJlKSB2YXIoLS10dy1udW1lcmljLXNwYWNpbmcpIHZhcigtLXR3LW51bWVyaWMtZnJhY3Rpb24pfS5sZWFkaW5nLTV7bGluZS1oZWlnaHQ6MS4yNXJlbX0ubGVhZGluZy1ub25le2xpbmUtaGVpZ2h0OjF9LmxlYWRpbmctcmVsYXhlZHtsaW5lLWhlaWdodDoxLjYyNX0ubGVhZGluZy1zbnVne2xpbmUtaGVpZ2h0OjEuMzc1fS50ZXh0LVxcW3ZhclxcKC0tYmFja2dyb3VuZC1jYXJkXFwpXFxde2NvbG9yOnZhcigtLWJhY2tncm91bmQtY2FyZCl9LnRleHQtXFxbdmFyXFwoLS1pY29uLXByaW1hcnlcXCxcXCMzNDMyMkRcXClcXF17Y29sb3I6dmFyKC0taWNvbi1wcmltYXJ5LCMzNDMyMkQpfS50ZXh0LVxcW3ZhclxcKC0taWNvbi10ZXJ0aWFyeVxcKVxcXXtjb2xvcjp2YXIoLS1pY29uLXRlcnRpYXJ5KX0udGV4dC1cXFt2YXJcXCgtLXRleHQtZGlzYWJsZVxcKVxcXXtjb2xvcjp2YXIoLS10ZXh0LWRpc2FibGUpfS50ZXh0LVxcW3ZhclxcKC0tdGV4dC1wcmltYXJ5XFwpXFxde2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSl9LnRleHQtXFxbdmFyXFwoLS10ZXh0LXByaW1hcnlcXCxcXCMzNDMyMkRcXClcXF17Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5LCMzNDMyMkQpfS50ZXh0LVxcW3ZhclxcKC0tdGV4dC10ZXJ0aWFyeVxcKVxcXXtjb2xvcjp2YXIoLS10ZXh0LXRlcnRpYXJ5KX0udGV4dC1cXFt2YXJcXCgtLXRleHQtd2hpdGVcXClcXF17Y29sb3I6dmFyKC0tdGV4dC13aGl0ZSl9LnRleHQtXFxbdmFyXFwoLS10ZXh0LXdoaXRlLXRzcFxcKVxcXXtjb2xvcjp2YXIoLS10ZXh0LXdoaXRlLXRzcCl9LnRleHQtYmxhY2t7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDAgMCAwIC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQtYmx1ZS02MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDM3IDk5IDIzNSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LWdyYXktNDAwey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigxNTYgMTYzIDE3NSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LWdyYXktNTAwey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigxMDcgMTE0IDEyOCAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LWdyYXktNjAwey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYig3NSA4NSA5OSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LWdyYXktNzAwey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYig1NSA2NSA4MSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LWdyYXktODAwey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigzMSA0MSA1NSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LWluZGlnby02MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDc5IDcwIDIyOSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LWluZGlnby03MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDY3IDU2IDIwMiAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LXB1cnBsZS0xMDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDI0MyAyMzIgMjU1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQtcHVycGxlLTYwMHstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMTQ3IDUxIDIzNCAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LXJlZC02MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDIyMCAzOCAzOCAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LXJlZC04MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDE1MyAyNyAyNyAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LXRyYW5zcGFyZW50e2NvbG9yOnRyYW5zcGFyZW50fS50ZXh0LXdoaXRley0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigyNTUgMjU1IDI1NSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS51bmRlcmxpbmV7dGV4dC1kZWNvcmF0aW9uLWxpbmU6dW5kZXJsaW5lfS5vdmVybGluZXt0ZXh0LWRlY29yYXRpb24tbGluZTpvdmVybGluZX0ubGluZS10aHJvdWdoe3RleHQtZGVjb3JhdGlvbi1saW5lOmxpbmUtdGhyb3VnaH0ub3BhY2l0eS0we29wYWNpdHk6MH0ub3BhY2l0eS0yNXtvcGFjaXR5Oi4yNX0ub3BhY2l0eS01MHtvcGFjaXR5Oi41fS5vcGFjaXR5LTc1e29wYWNpdHk6Ljc1fS5zaGFkb3d7LS10dy1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYigwIDAgMCAvIC4xKSwgMCAxcHggMnB4IC0xcHggcmdiKDAgMCAwIC8gLjEpOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMXB4IDNweCAwIHZhcigtLXR3LXNoYWRvdy1jb2xvciksIDAgMXB4IDJweCAtMXB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LVxcWzBfNHB4XzEycHhfcmdiYVxcKDBcXCwwXFwsMFxcLDBcXC4xNVxcKVxcXXstLXR3LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsMCwwLC4xNSk7LS10dy1zaGFkb3ctY29sb3JlZDogMCA0cHggMTJweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXNoYWRvdyl9LnNoYWRvdy1cXFswXzRweF8yNHB4X3JnYmFcXCgwXFwsMFxcLDBcXCwwXFwuMTVcXClcXF17LS10dy1zaGFkb3c6IDAgNHB4IDI0cHggcmdiYSgwLDAsMCwuMTUpOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgNHB4IDI0cHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSx2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSx2YXIoLS10dy1zaGFkb3cpfS5zaGFkb3ctXFxbMHB4XzhweF8zMnB4XzBweF92YXJcXCgtLXNoYWRvdy1TXFwpXFxdey0tdHctc2hhZG93OiAwcHggOHB4IDMycHggMHB4IHZhcigtLXNoYWRvdy1TKTstLXR3LXNoYWRvdy1jb2xvcmVkOiAwcHggOHB4IDMycHggMHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LWxney0tdHctc2hhZG93OiAwIDEwcHggMTVweCAtM3B4IHJnYigwIDAgMCAvIC4xKSwgMCA0cHggNnB4IC00cHggcmdiKDAgMCAwIC8gLjEpOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMTBweCAxNXB4IC0zcHggdmFyKC0tdHctc2hhZG93LWNvbG9yKSwgMCA0cHggNnB4IC00cHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSx2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSx2YXIoLS10dy1zaGFkb3cpfS5zaGFkb3ctbWR7LS10dy1zaGFkb3c6IDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIC4xKSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gLjEpOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgNHB4IDZweCAtMXB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciksIDAgMnB4IDRweCAtMnB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LXNtey0tdHctc2hhZG93OiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAuMDUpOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMXB4IDJweCAwIHZhcigtLXR3LXNoYWRvdy1jb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LXhsey0tdHctc2hhZG93OiAwIDIwcHggMjVweCAtNXB4IHJnYigwIDAgMCAvIC4xKSwgMCA4cHggMTBweCAtNnB4IHJnYigwIDAgMCAvIC4xKTstLXR3LXNoYWRvdy1jb2xvcmVkOiAwIDIwcHggMjVweCAtNXB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciksIDAgOHB4IDEwcHggLTZweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXNoYWRvdyl9Lm91dGxpbmUtbm9uZXtvdXRsaW5lOjJweCBzb2xpZCB0cmFuc3BhcmVudDtvdXRsaW5lLW9mZnNldDoycHh9LmJsdXJ7LS10dy1ibHVyOiBibHVyKDhweCk7ZmlsdGVyOnZhcigtLXR3LWJsdXIpIHZhcigtLXR3LWJyaWdodG5lc3MpIHZhcigtLXR3LWNvbnRyYXN0KSB2YXIoLS10dy1ncmF5c2NhbGUpIHZhcigtLXR3LWh1ZS1yb3RhdGUpIHZhcigtLXR3LWludmVydCkgdmFyKC0tdHctc2F0dXJhdGUpIHZhcigtLXR3LXNlcGlhKSB2YXIoLS10dy1kcm9wLXNoYWRvdyl9LmZpbHRlcntmaWx0ZXI6dmFyKC0tdHctYmx1cikgdmFyKC0tdHctYnJpZ2h0bmVzcykgdmFyKC0tdHctY29udHJhc3QpIHZhcigtLXR3LWdyYXlzY2FsZSkgdmFyKC0tdHctaHVlLXJvdGF0ZSkgdmFyKC0tdHctaW52ZXJ0KSB2YXIoLS10dy1zYXR1cmF0ZSkgdmFyKC0tdHctc2VwaWEpIHZhcigtLXR3LWRyb3Atc2hhZG93KX0udHJhbnNpdGlvbnt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSxvcGFjaXR5LGJveC1zaGFkb3csdHJhbnNmb3JtLGZpbHRlciwtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSxvcGFjaXR5LGJveC1zaGFkb3csdHJhbnNmb3JtLGZpbHRlcixiYWNrZHJvcC1maWx0ZXI7dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcixiYWNrZ3JvdW5kLWNvbG9yLGJvcmRlci1jb2xvcix0ZXh0LWRlY29yYXRpb24tY29sb3IsZmlsbCxzdHJva2Usb3BhY2l0eSxib3gtc2hhZG93LHRyYW5zZm9ybSxmaWx0ZXIsYmFja2Ryb3AtZmlsdGVyLC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpO3RyYW5zaXRpb24tZHVyYXRpb246LjE1c30udHJhbnNpdGlvbi1hbGx7dHJhbnNpdGlvbi1wcm9wZXJ0eTphbGw7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzfS50cmFuc2l0aW9uLWNvbG9yc3t0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXN9LnRyYW5zaXRpb24tc2hhZG93e3RyYW5zaXRpb24tcHJvcGVydHk6Ym94LXNoYWRvdzt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXN9LnRyYW5zaXRpb24tdHJhbnNmb3Jte3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpO3RyYW5zaXRpb24tZHVyYXRpb246LjE1c30uZHVyYXRpb24tMjAwe3RyYW5zaXRpb24tZHVyYXRpb246LjJzfS5lYXNlLWluLW91dHt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKX0uZWFzZS1vdXR7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAsMCwuMiwxKX0qe2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdXRsaW5lOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowfSNtYW51cy1wcmV2aWV3ZXItY29udGVudC1yb290e2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJIFZhcmlhYmxlIERpc3BsYXksU2Vnb2UgVUksSGVsdmV0aWNhLCJBcHBsZSBDb2xvciBFbW9qaSIsQXJpYWwsc2Fucy1zZXJpZiwiU2Vnb2UgVUkgRW1vamkiLFNlZ29lIFVJIFN5bWJvbH06Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y3Vyc29yOnBvaW50ZXJ9Kjpob3Zlcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojYjliOWI3fTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojODU4NDgxfTo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2t7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0qe3Njcm9sbGJhci13aWR0aDp0aGluO3Njcm9sbGJhci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudH0qOmhvdmVye3Njcm9sbGJhci1jb2xvcjojYjliOWI3IHRyYW5zcGFyZW50fUBrZXlmcmFtZXMgZmFkZUluVXB7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEycHgpIHNjYWxlKC45Nil9dG97b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApIHNjYWxlKDEpfX1Aa2V5ZnJhbWVzIGZhZGVJblNjYWxlezAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoLjkyKX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlKDEpfX0ucGxhY2Vob2xkZXJcXDp0ZXh0LVxcW3ZhclxcKC0tdGV4dC1kaXNhYmxlXFwpXFxdOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnZhcigtLXRleHQtZGlzYWJsZSl9LnBsYWNlaG9sZGVyXFw6dGV4dC1cXFt2YXJcXCgtLXRleHQtZGlzYWJsZVxcKVxcXTo6cGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tdGV4dC1kaXNhYmxlKX0ubGFzdFxcOmJvcmRlci1iLTA6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tLXdpZHRoOjBweH0uaG92ZXJcXDpiZy1cXFtcXCNmZmZmZmYwZlxcXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwZn0uaG92ZXJcXDpiZy1cXFt2YXJcXCgtLWZpbGwtdHNwLXdoaXRlLWxpZ2h0XFwpXFxdOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tZmlsbC10c3Atd2hpdGUtbGlnaHQpfS5ob3ZlclxcOmJnLVxcW3ZhclxcKC0tZmlsbC10c3Atd2hpdGUtbWFpblxcKVxcXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWZpbGwtdHNwLXdoaXRlLW1haW4pfS5ob3ZlclxcOmJnLWdyYXktMTAwOmhvdmVyey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNDMgMjQ0IDI0NiAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uaG92ZXJcXDpiZy1ncmF5LTIwMDpob3ZlcnstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjI5IDIzMSAyMzUgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmhvdmVyXFw6YmctZ3JheS0zMDA6aG92ZXJ7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDIwOSAyMTMgMjE5IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5ob3ZlclxcOmJnLWdyYXktNTA6aG92ZXJ7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDI0OSAyNTAgMjUxIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5ob3ZlclxcOmJnLWdyYXktODAwOmhvdmVyey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigzMSA0MSA1NSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uaG92ZXJcXDpiZy1pbmRpZ28tNzAwOmhvdmVyey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig2NyA1NiAyMDIgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmhvdmVyXFw6YmctcHVycGxlLTcwMDpob3ZlcnstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMTI2IDM0IDIwNiAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uaG92ZXJcXDpiZy1yZWQtMTAwOmhvdmVyey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTQgMjI2IDIyNiAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uaG92ZXJcXDpiZy1yZWQtNTA6aG92ZXJ7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDI1NCAyNDIgMjQyIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5ob3ZlclxcOnRleHQtXFxbdmFyXFwoLS10ZXh0LXNlY29uZGFyeVxcKVxcXTpob3Zlcntjb2xvcjp2YXIoLS10ZXh0LXNlY29uZGFyeSl9LmhvdmVyXFw6dGV4dC1ncmF5LTYwMDpob3ZlcnstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoNzUgODUgOTkgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0uaG92ZXJcXDp0ZXh0LWluZGlnby02MDA6aG92ZXJ7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDc5IDcwIDIyOSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS5ob3ZlclxcOnRleHQtaW5kaWdvLTcwMDpob3ZlcnstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoNjcgNTYgMjAyIC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LmhvdmVyXFw6dGV4dC1wdXJwbGUtNzAwOmhvdmVyey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigxMjYgMzQgMjA2IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LmhvdmVyXFw6dGV4dC1yZWQtNTAwOmhvdmVyey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigyMzkgNjggNjggLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0uaG92ZXJcXDp1bmRlcmxpbmU6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uLWxpbmU6dW5kZXJsaW5lfS5ob3ZlclxcOm9wYWNpdHktODA6aG92ZXJ7b3BhY2l0eTouOH0uaG92ZXJcXDpvcGFjaXR5LTkwOmhvdmVye29wYWNpdHk6Ljl9LmhvdmVyXFw6c2hhZG93LXhsOmhvdmVyey0tdHctc2hhZG93OiAwIDIwcHggMjVweCAtNXB4IHJnYigwIDAgMCAvIC4xKSwgMCA4cHggMTBweCAtNnB4IHJnYigwIDAgMCAvIC4xKTstLXR3LXNoYWRvdy1jb2xvcmVkOiAwIDIwcHggMjVweCAtNXB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciksIDAgOHB4IDEwcHggLTZweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXNoYWRvdyl9LmZvY3VzXFw6YmctXFxbXFwjZmZmZmZmMGZcXF06Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMGZ9LmZvY3VzXFw6YmctXFxbdmFyXFwoLS1maWxsLXRzcC13aGl0ZS1tYWluXFwpXFxdOmZvY3Vze2JhY2tncm91bmQtY29sb3I6dmFyKC0tZmlsbC10c3Atd2hpdGUtbWFpbil9LmZvY3VzXFw6dGV4dC1cXFt2YXJcXCgtLXRleHQtc2Vjb25kYXJ5XFwpXFxdOmZvY3Vze2NvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5KX0uZm9jdXNcXDpvcGFjaXR5LTkwOmZvY3Vze29wYWNpdHk6Ljl9LmZvY3VzXFw6b3V0bGluZS1ub25lOmZvY3Vze291dGxpbmU6MnB4IHNvbGlkIHRyYW5zcGFyZW50O291dGxpbmUtb2Zmc2V0OjJweH0uZm9jdXNcXDpyaW5nLTI6Zm9jdXN7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6IHZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSB2YXIoLS10dy1yaW5nLW9mZnNldC1jb2xvcik7LS10dy1yaW5nLXNoYWRvdzogdmFyKC0tdHctcmluZy1pbnNldCkgMCAwIDAgY2FsYygycHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93LCAwIDAgIzAwMDApfS5mb2N1c1xcOnJpbmctXFxbMXB4XFxdOmZvY3Vzey0tdHctcmluZy1vZmZzZXQtc2hhZG93OiB2YXIoLS10dy1yaW5nLWluc2V0KSAwIDAgMCB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkgdmFyKC0tdHctcmluZy1vZmZzZXQtY29sb3IpOy0tdHctcmluZy1zaGFkb3c6IHZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIGNhbGMoMXB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdywgMCAwICMwMDAwKX0uZm9jdXNcXDpyaW5nLWluc2V0OmZvY3Vzey0tdHctcmluZy1pbnNldDogaW5zZXR9LmZvY3VzXFw6cmluZy1cXFt2YXJcXCgtLWJvcmRlci1kYXJrXFwpXFxdOmZvY3Vzey0tdHctcmluZy1jb2xvcjogdmFyKC0tYm9yZGVyLWRhcmspfS5mb2N1c1xcOnJpbmctcHVycGxlLTUwMDpmb2N1c3stLXR3LXJpbmctb3BhY2l0eTogMTstLXR3LXJpbmctY29sb3I6IHJnYigxNjggODUgMjQ3IC8gdmFyKC0tdHctcmluZy1vcGFjaXR5LCAxKSl9LmFjdGl2ZVxcOm9wYWNpdHktODA6YWN0aXZle29wYWNpdHk6Ljh9LmFjdGl2ZVxcOm9wYWNpdHktOTA6YWN0aXZle29wYWNpdHk6Ljl9LmRpc2FibGVkXFw6Y3Vyc29yLW5vdC1hbGxvd2VkOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH0uZGlzYWJsZWRcXDpvcGFjaXR5LTUwOmRpc2FibGVke29wYWNpdHk6LjV9Lmdyb3VwOmhvdmVyIC5ncm91cC1ob3ZlclxcOm9wYWNpdHktMTAwe29wYWNpdHk6MX1AbWVkaWEgKG1pbi13aWR0aDogNDc1cHgpey54c1xcOmJsb2Nre2Rpc3BsYXk6YmxvY2t9LnhzXFw6dy1hdXRve3dpZHRoOmF1dG99LnhzXFw6ZmxleC1ub25le2ZsZXg6bm9uZX0ueHNcXDpmbGV4LXJvd3tmbGV4LWRpcmVjdGlvbjpyb3d9LnhzXFw6aXRlbXMtY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlcn0ueHNcXDpwLTZ7cGFkZGluZzoxLjVyZW19LnhzXFw6cHgtNXtwYWRkaW5nLWxlZnQ6MS4yNXJlbTtwYWRkaW5nLXJpZ2h0OjEuMjVyZW19LnhzXFw6cHQtNHtwYWRkaW5nLXRvcDoxcmVtfX1AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpey5tZFxcOmZsZXh7ZGlzcGxheTpmbGV4fS5tZFxcOnctMVxcLzN7d2lkdGg6MzMuMzMzMzMzJX0ubWRcXDp3LTJcXC8ze3dpZHRoOjY2LjY2NjY2NyV9Lm1kXFw6Z3JpZC1jb2xzLTJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLG1pbm1heCgwLDFmcikpfS5tZFxcOmdyaWQtY29scy00e2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNCxtaW5tYXgoMCwxZnIpKX19QG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCl7LmxnXFw6Z3JpZC1jb2xzLTN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLG1pbm1heCgwLDFmcikpfX0uXFxbXFwmXFw6XFw6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvblxcXVxcOmFwcGVhcmFuY2Utbm9uZTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmV9LlxcW1xcJlxcOlxcOi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b25cXF1cXDphcHBlYXJhbmNlLW5vbmU6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lfSd9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSl9KSgpOwo8L3NjcmlwdD4KCiAgICA8ZGl2IGlkPSJyb290Ij48L2Rpdj4KCiAgICA8IS0tIFBpcGVsaW5lIENoZWNrIEJhbm5lcjogaW5qZWN0ZWQgYWZ0ZXIgUmVhY3QgbW91bnRzIC0tPgogICAgPGRpdiBpZD0icGlwZWxpbmUtY2hlY2stYmFubmVyIiByb2xlPSJiYW5uZXIiIGFyaWEtbGFiZWw9IlBpcGVsaW5lIENoZWNrIHByb21vdGlvbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJwY2ItdGV4dCI+RnJlZSBEaWFnbm9zdGljPC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJwY2ItZGl2aWRlciIgYXJpYS1oaWRkZW49InRydWUiPjwvZGl2PgogICAgICA8c3BhbiBjbGFzcz0icGNiLWhlYWRsaW5lIj5GaW5kIG91dCBleGFjdGx5IHdoZXJlIHlvdXIgZGVhbHMgc3RhbGwuPC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJwY2ItZGl2aWRlciIgYXJpYS1oaWRkZW49InRydWUiPjwvZGl2PgogICAgICA8YSBocmVmPSJodHRwczovL3BpcGVsaW5lLWNoZWNrLnZlcmNlbC5hcHAiIGNsYXNzPSJwY2ItY3RhIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIj4KICAgICAgICBDaGVjayBZb3VyIFBpcGVsaW5lCiAgICAgICAgPHNwYW4gY2xhc3M9InBjYi1jdGEtYXJyb3ciIGFyaWEtaGlkZGVuPSJ0cnVlIj4mIzg1OTQ7PC9zcGFuPgogICAgICA8L2E+CiAgICA8L2Rpdj4KCiAgICA8c2NyaXB0PgogICAgICAvLyBBZGp1c3QgYmFubmVyIHRvcCBwb3NpdGlvbiB0byBtYXRjaCBoZWFkZXIgaGVpZ2h0IGR5bmFtaWNhbGx5CiAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICBmdW5jdGlvbiBhZGp1c3RCYW5uZXIoKSB7CiAgICAgICAgICB2YXIgYmFubmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BpcGVsaW5lLWNoZWNrLWJhbm5lcicpOwogICAgICAgICAgaWYgKCFiYW5uZXIpIHJldHVybjsKICAgICAgICAgIHZhciBoZWFkZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkZXInKTsKICAgICAgICAgIGlmIChoZWFkZXIpIHsKICAgICAgICAgICAgdmFyIGggPSBoZWFkZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0OwogICAgICAgICAgICBpZiAoaCA+IDApIGJhbm5lci5zdHlsZS50b3AgPSBoICsgJ3B4JzsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gUnVuIG9uIGxvYWQgYW5kIG9uIHJlc2l6ZQogICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYWRqdXN0QmFubmVyKTsKICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgYWRqdXN0QmFubmVyKTsKICAgICAgICAvLyBBbHNvIHBvbGwgYnJpZWZseSBhZnRlciBwYWdlIGxvYWQgZm9yIFJlYWN0IHRvIHJlbmRlciB0aGUgaGVhZGVyCiAgICAgICAgdmFyIGF0dGVtcHRzID0gMDsKICAgICAgICB2YXIgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKICAgICAgICAgIGFkanVzdEJhbm5lcigpOwogICAgICAgICAgYXR0ZW1wdHMrKzsKICAgICAgICAgIGlmIChhdHRlbXB0cyA+PSAyMCkgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7CiAgICAgICAgfSwgMTAwKTsKICAgICAgfSkoKTsKICAgIDwvc2NyaXB0PgoKICAgIDxzY3JpcHQKICAgICAgZGVmZXIKICAgICAgc3JjPSJodHRwczovL21hbnVzLWFuYWx5dGljcy5jb20vdW1hbWkiCiAgICAgIGRhdGEtd2Vic2l0ZS1pZD0iMzZlNjUxNDYtMjhiYS00NjI4LTljZGItNTFlYTBhNzI5YTdkIj48L3NjcmlwdD4KCiAgICA8IS0tIE5vc2NyaXB0IGZhbGxiYWNrIGZvciBzZWFyY2ggZW5naW5lIGNyYXdsZXJzIHRoYXQgZG9uJ3QgZXhlY3V0ZSBKYXZhU2NyaXB0IC0tPgogICAgPG5vc2NyaXB0PgogICAgICA8ZGl2IHN0eWxlPSJtYXgtd2lkdGg6ODAwcHg7bWFyZ2luOjAgYXV0bztwYWRkaW5nOjJyZW07Zm9udC1mYW1pbHk6R2VvcmdpYSxzZXJpZjtjb2xvcjojRjBFREU2O2JhY2tncm91bmQ6IzBDMTIyMDsiPgogICAgICAgIDxoMT5QaXBlbGluZSBMTEM6IE93biBZb3VyIEN1c3RvbWVyIEFjcXVpc2l0aW9uIFN5c3RlbTwvaDE+CiAgICAgICAgPHA+PHN0cm9uZz5Zb3UgQnVpbHQgYSBHcmVhdCBDb21wYW55LiBOb3cgQnVpbGQgdGhlIEluZnJhc3RydWN0dXJlIFRoYXQgTGV0cyBJdCBHcm93IFdpdGhvdXQgWW91Ljwvc3Ryb25nPjwvcD4KICAgICAgICA8cD5Zb3UgYnVpbHQgeW91ciBidXNpbmVzcyBvbiB0ZWNobmljYWwgc2tpbGwgYW5kIHdvcmQgb2YgbW91dGguIEJ1dCB5b3VyIGdyb3d0aCBzdGlsbCBkZXBlbmRzIG9uIHJlZmVycmFscywgeW91ciBwZXJzb25hbCBzYWxlcyBhYmlsaXR5LCBhbmQgbWFya2V0aW5nIHByb3ZpZGVycyB3aG8gdGFrZSB5b3VyIG1vbmV5IGFuZCBsZWF2ZSBub3RoaW5nIGJlaGluZCB3aGVuIHRoZXkgZ28uIFlvdSBkZXNlcnZlIGEgY3VzdG9tZXIgYWNxdWlzaXRpb24gc3lzdGVtIHRoYXQgeW91IG93biBvdXRyaWdodCwgdGhhdCBydW5zIHdoZXRoZXIgeW91IGFyZSBvbiB0aGUgam9iIG9yIG5vdCwgYW5kIHRoYXQgZ2V0cyBtb3JlIHZhbHVhYmxlIGV2ZXJ5IHllYXIgeW91IG9wZXJhdGUgaXQuPC9wPgoKICAgICAgICA8aDI+VGhlIFByb2JsZW08L2gyPgogICAgICAgIDxwPllvdSBidWlsdCBhIHN0cm9uZyBjb21wYW55IHRocm91Z2ggdGVjaG5pY2FsIGV4Y2VsbGVuY2UuIFlvdXIgbWFya2V0aW5nIGluZnJhc3RydWN0dXJlIGRvZXMgbm90IG1hdGNoLiBZb3UgaGF2ZSBzcGVudCB0ZW5zIG9mIHRob3VzYW5kcyBvZiBkb2xsYXJzIG9uIGFnZW5jaWVzLCBjb25zdWx0YW50cywgYW5kIGFkIHBsYXRmb3Jtcy4gVGhlIHBhdHRlcm4gaXMgYWx3YXlzIHRoZSBzYW1lOiBtb250aGx5IHJldGFpbmVycywgZGFzaGJvYXJkcyBmdWxsIG9mIGltcHJlc3Npb25zIGFuZCBjbGlja3MsIGFuZCBubyBjbGVhciBjb25uZWN0aW9uIGJldHdlZW4gd2hhdCB5b3UgYXJlIHBheWluZyBhbmQgdGhlIGpvYnMgb24geW91ciBib2FyZC4gV2hlbiB5b3Ugc3RvcHBlZCBwYXlpbmcsIGV2ZXJ5dGhpbmcgc3RvcHBlZC4gWW91IG93biBub3RoaW5nIGZyb20gdGhvc2UgZW5nYWdlbWVudHMgdGhhdCBydW5zIHRvZGF5LjwvcD4KCiAgICAgICAgPGgyPlRoZSBHdWlkZTwvaDI+CiAgICAgICAgPHA+VGhpcyBpcyBub3QgYSBtYXJrZXRpbmcgZmlybSB0aGF0IHJ1bnMgeW91ciBhZHMuIEl0IGlzIGEgYnVpbGRlci4gQ3VzdG9tZXIgYWNxdWlzaXRpb24gaW5mcmFzdHJ1Y3R1cmUgaXMgY29uc3RydWN0ZWQgaW4geW91ciBhY2NvdW50cywgZXZlcnkgY29tcG9uZW50IGlzIGRvY3VtZW50ZWQsIGFuZCB0aGUgc3lzdGVtIGlzIGVpdGhlciBtYW5hZ2VkIGZvciB5b3Ugb3IgeW91ciB0ZWFtIGlzIHRyYWluZWQgdG8gcnVuIGl0IGluZGVwZW5kZW50bHkuIEV2ZXJ5IGFkIGFjY291bnQsIGV2ZXJ5IGxhbmRpbmcgcGFnZSwgZXZlcnkgQ1JNIHdvcmtmbG93LCBldmVyeSBhdXRvbWF0aW9uIGxpdmVzIGluIHlvdXIgYWNjb3VudHMgdW5kZXIgeW91ciBjcmVkZW50aWFscy4gWW91IG93biBpdCBmcm9tIGRheSBvbmUuPC9wPgoKICAgICAgICA8aDI+VHdvIFdheXMgdG8gQnVpbGQgWW91ciBHcm93dGggSW5mcmFzdHJ1Y3R1cmU8L2gyPgogICAgICAgIDxwPjxzdHJvbmc+UGlwZWxpbmUgUHJlbWl1bSBCdWlsZCArIE9wZXJhdGU6IEZyZWVkb20gZnJvbSBtYXJrZXRpbmcgd29yay48L3N0cm9uZz4gWW91ciBjb21wbGV0ZSBjdXN0b21lciBhY3F1aXNpdGlvbiBpbmZyYXN0cnVjdHVyZSBpcyBidWlsdCBhbmQgdGhlbiBtYW5hZ2VkIHBlcm1hbmVudGx5LiBBIGRlZGljYXRlZCBzdHJhdGVnaXN0LCBjYW1wYWlnbiBtYW5hZ2VyLCBhbmQgY3JlYXRpdmUgZGlyZWN0b3IgcnVuIHlvdXIgc3lzdGVtIGV2ZXJ5IGRheS4gWW91ciBtYXJrZXRpbmcgaW52b2x2ZW1lbnQgaXMgemVybyBob3VycyBwZXIgd2Vlay48L3A+CiAgICAgICAgPHA+PHN0cm9uZz5QaXBlbGluZSBQcmVtaXVtIEJ1aWxkOiBGcmVlZG9tIGZyb20gbWFya2V0aW5nIGRlcGVuZGVuY3kuPC9zdHJvbmc+IFlvdXIgY29tcGxldGUgY3VzdG9tZXIgYWNxdWlzaXRpb24gaW5mcmFzdHJ1Y3R1cmUgaXMgYnVpbHQsIGV2ZXJ5IGNvbXBvbmVudCBpcyBkb2N1bWVudGVkLCBhbmQgeW91ciB0ZWFtIGlzIHRyYWluZWQgdG8gcnVuIGl0LiBBZnRlciBoYW5kb2ZmLCB5b3Ugb3duIGFuZCBvcGVyYXRlIHRoZSBzeXN0ZW0gd2l0aCBubyBvbmdvaW5nIGZlZXMsIG5vIHJlY3VycmluZyBjb21taXRtZW50cywgYW5kIG5vIGRlcGVuZGVuY3kgb24gYW55IG91dHNpZGUgcHJvdmlkZXIuPC9wPgoKICAgICAgICA8aDI+RnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnM8L2gyPgogICAgICAgIDxkbD4KICAgICAgICAgIDxkdD5XaGF0IGRvZXMgUGlwZWxpbmUgYnVpbGQ/PC9kdD4KICAgICAgICAgIDxkZD5UaGUgc3lzdGVtIGlzIGN1c3RvbWVyIGFjcXVpc2l0aW9uIGluZnJhc3RydWN0dXJlIGJ1aWx0IGZvciBob21lIHNlcnZpY2Ugb3BlcmF0b3JzLiBFdmVyeSBjb21wb25lbnQgbGl2ZXMgaW4geW91ciBhY2NvdW50cyB1bmRlciB5b3VyIGNyZWRlbnRpYWxzLiBZb3Ugb3duIGl0IGZyb20gZGF5IG9uZS48L2RkPgogICAgICAgICAgPGR0PldoYXQgaXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBQaXBlbGluZSBQcmVtaXVtIEJ1aWxkICsgT3BlcmF0ZSBhbmQgUGlwZWxpbmUgUHJlbWl1bSBCdWlsZD88L2R0PgogICAgICAgICAgPGRkPkJvdGggcGFja2FnZXMgZGVsaXZlciB0aGUgc2FtZSBHcm93dGggSW5mcmFzdHJ1Y3R1cmUuIFBpcGVsaW5lIFByZW1pdW0gQnVpbGQgKyBPcGVyYXRlIG1lYW5zIHRoZSBzeXN0ZW0gaXMgcnVuIHBlcm1hbmVudGx5IGJ5IGEgZGVkaWNhdGVkIHRlYW0gb24geW91ciBiZWhhbGYuIFBpcGVsaW5lIFByZW1pdW0gQnVpbGQgbWVhbnMgdGhlIHN5c3RlbSBpcyBidWlsdCwgZG9jdW1lbnRlZCwgeW91ciB0ZWFtIGlzIHRyYWluZWQsIGFuZCB5b3UgcmVjZWl2ZSB0aGUga2V5cy48L2RkPgogICAgICAgICAgPGR0PldoYXQga2luZCBvZiBpbnZlc3RtZW50IGlzIHRoaXM/PC9kdD4KICAgICAgICAgIDxkZD5UaGlzIGlzIGEgc2lnbmlmaWNhbnQgaW5mcmFzdHJ1Y3R1cmUgaW52ZXN0bWVudC4gVGhlIHNwZWNpZmljcyBkZXBlbmQgb24geW91ciBidXNpbmVzcywgeW91ciBtYXJrZXQsIGFuZCB0aGUgcGF0aCB5b3UgY2hvb3NlLiBUaGUgR3Jvd3RoIEluZnJhc3RydWN0dXJlIEF1ZGl0IGlzIHdoZXJlIHlvdSB3aWxsIHNlZSB0aGUgZXhhY3QgbnVtYmVycyBmb3IgeW91ciBzaXR1YXRpb24uPC9kZD4KICAgICAgICAgIDxkdD5Ib3cgaXMgUGlwZWxpbmUgZGlmZmVyZW50IGZyb20gYSB0cmFkaXRpb25hbCBtYXJrZXRpbmcgcHJvdmlkZXI/PC9kdD4KICAgICAgICAgIDxkZD5UaGlzIGlzIG5vdCBhIG1hcmtldGluZyBmaXJtLiBJdCBpcyBhIGJ1aWxkZXIuIFRyYWRpdGlvbmFsIHByb3ZpZGVycyByZW50IHlvdSBhY2Nlc3MgdG8gdGhlaXIgc3lzdGVtcyBmb3IgYSBtb250aGx5IGZlZS4gV2hlbiB5b3Ugc3RvcCBwYXlpbmcsIGV2ZXJ5dGhpbmcgc3RvcHMuIFRoZSBzeXN0ZW0gaXMgYnVpbHQgaW4geW91ciBhY2NvdW50cy4gWW91IG93biBpdC4gTWFuYWdlbWVudCBpcyBhdmFpbGFibGUgaWYgeW91IHdhbnQgaXQsIGJ1dCB0aGUgc3lzdGVtIGlzIHlvdXJzIGVpdGhlciB3YXkuPC9kZD4KICAgICAgICAgIDxkdD5XaGF0IGlzIFBpcGVsaW5lJ3MgZ3VhcmFudGVlPzwvZHQ+CiAgICAgICAgICA8ZGQ+VGhlIGd1YXJhbnRlZSBjb3ZlcnMgYSBkZWRpY2F0ZWQgc2VuaW9yLWxldmVsIHRlYW0sIGEgcHJvdmVuIGFuZCB0cmFuc3BhcmVudCBwcm9jZXNzLCBhbmQgYSBwcm9hY3RpdmUgcHJvZmVzc2lvbmFsIGV4cGVyaWVuY2UuIElmIGF0IGFueSBwb2ludCB0aGUgc3RhbmRhcmQgaXMgbm90IGJlaW5nIG1ldCwgeW91IHBhcnQgd2F5cyBhbWljYWJseS48L2RkPgogICAgICAgIDwvZGw+CgogICAgICAgIDxwPjxhIGhyZWY9Imh0dHBzOi8vam9pbnRoZXBpcGVsaW5lLmNvbS8iIHN0eWxlPSJjb2xvcjojRDRBODUzOyI+VmlzaXQgam9pbnRoZXBpcGVsaW5lLmNvbSB0byBhcHBseSBmb3IgeW91ciBmcmVlIEdyb3d0aCBJbmZyYXN0cnVjdHVyZSBBdWRpdC48L2E+PC9wPgogICAgICAgIDxwPiZjb3B5OyAyMDI2IFBpcGVsaW5lLCBMTEMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIENvbnRhY3Q6IDxhIGhyZWY9Im1haWx0bzppbmZvQGpvaW50aGVwaXBlbGluZS5jb20iIHN0eWxlPSJjb2xvcjojRDRBODUzOyI+aW5mb0Bqb2ludGhlcGlwZWxpbmUuY29tPC9hPjwvcD4KICAgICAgPC9kaXY+CiAgICA8L25vc2NyaXB0PgogIDwvYm9keT4KCjwvaHRtbD4K"}