Content-Type: multipart/related; start=; boundary=----------ob20VL8QKHEQvTnoM6Hh2B Content-Location: http://habrahabr.ru/blogs/humour/120905/ Subject: =?utf-8?Q?=D0=9A=D0=B0=D0=BD=D1=86=D0=B5=D1=80=D0=BE=D0=B3=D0=B5=D0=BD=D0=BD=D1=8B=D0=B5=20=D0=B8=D0=B7=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F.=20=D0=A1=D0=BA=D0=B0=D0=BD=D0=B4=D0=B0=D0=BB=D1=8B,=20=D0=B8=D0=BD=D1=82=D1=80=D0=B8=D0=B3=D0=B8,=20=D1=80=D0=B0=D1=81=D1=81=D0=BB=D0=B5=D0=B4=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F!=20/=20=D0=A5=D0=B0=D0=B1=D1=80=D0=B0=D0=AE=D0=BC=D0=BE=D1=80=20/=20=D0=A5=D0=B0=D0=B1=D1=80=D0=B0=D1=85=D0=B0=D0=B1=D1=80?= MIME-Version: 1.0 ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline; filename=default.htm Content-Type: text/html; charset=utf-8; name=default.htm Content-ID: Content-Location: http://habrahabr.ru/blogs/humour/120905/ Content-Transfer-Encoding: Base64 PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJh bnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQv eGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KDQo8aHRtbCB4bWxucz0iaHR0cDov L3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sOmxhbmc9InJ1Ij4NCjxoZWFkPg0K CTxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9o dG1sOyBjaGFyc2V0PXV0Zi04IiAvPg0KCQ0KCTx0aXRsZT7QmtCw0L3RhtC10YDQ vtCz0LXQvdC90YvQtSDQuNC30LvRg9GH0LXQvdC40Y8uINCh0LrQsNC90LTQsNC7 0YssINC40L3RgtGA0LjQs9C4LCDRgNCw0YHRgdC70LXQtNC+0LLQsNC90LjRjyEg LyDQpdCw0LHRgNCw0K7QvNC+0YAgLyDQpdCw0LHRgNCw0YXQsNCx0YA8L3RpdGxl Pg0KDQoJPGxpbmsgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9jc3MvMTMwNzAw OTc4NS9hbGwuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIC8+DQoN Cg0KICAgIDxtZXRhIG5hbWU9ImFwcGxpY2F0aW9uLW5hbWUiIGNvbnRlbnQ9ItCl 0LDQsdGA0LDRhdCw0LHRgCIgLz4gDQogICAgPG1ldGEgbmFtZT0ibXNhcHBsaWNh dGlvbi10b29sdGlwIiBjb250ZW50PSLQpdCw0LHRgNCw0YXQsNCx0YAiIC8+IA0K ICAgIDxtZXRhIG5hbWU9Im1zYXBwbGljYXRpb24tc3RhcnR1cmwiIGNvbnRlbnQ9 Imh0dHA6Ly9oYWJyYWhhYnIucnUvIiAvPiANCg0KICAgIDxtZXRhIG5hbWU9Im1z YXBwbGljYXRpb24tdGFzayIgY29udGVudD0ibmFtZT3Qv9C+0YHRgtGLO2FjdGlv bi11cmk9aHR0cDovL2hhYnJhaGFici5ydS87aWNvbi11cmk9aHR0cDovL2hhYnJh aGFici5ydS9mYXZpY29uLmljbyIvPg0KICAgIDxtZXRhIG5hbWU9Im1zYXBwbGlj YXRpb24tdGFzayIgY29udGVudD0ibmFtZT1xJmE7YWN0aW9uLXVyaT1odHRwOi8v aGFicmFoYWJyLnJ1L3FhLztpY29uLXVyaT1odHRwOi8vaGFicmFoYWJyLnJ1L2Zh dmljb24uaWNvIi8+DQogICAgPG1ldGEgbmFtZT0ibXNhcHBsaWNhdGlvbi10YXNr IiBjb250ZW50PSJuYW1lPdCx0LvQvtCz0Lg7YWN0aW9uLXVyaT1odHRwOi8vaGFi cmFoYWJyLnJ1L2Jsb2dsaXN0LztpY29uLXVyaT1odHRwOi8vaGFicmFoYWJyLnJ1 L2Zhdmljb24uaWNvIi8+DQogICAgPG1ldGEgbmFtZT0ibXNhcHBsaWNhdGlvbi10 YXNrIiBjb250ZW50PSJuYW1lPdC70Y7QtNC4O2FjdGlvbi11cmk9aHR0cDovL2hh YnJhaGFici5ydS9wZW9wbGUvO2ljb24tdXJpPWh0dHA6Ly9oYWJyYWhhYnIucnUv ZmF2aWNvbi5pY28iLz4NCiAgICA8bWV0YSBuYW1lPSJtc2FwcGxpY2F0aW9uLXRh c2siIGNvbnRlbnQ9Im5hbWU90LrQvtC80L/QsNC90LjQuDthY3Rpb24tdXJpPWh0 dHA6Ly9oYWJyYWhhYnIucnUvY29tcGFuaWVzLztpY29uLXVyaT1odHRwOi8vaGFi cmFoYWJyLnJ1L2Zhdmljb24uaWNvIi8+DQo8IS0tIC9pZTkgLS0+DQoNCgkNCgkN CgkNCgkNCgk8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Imh0dHA6Ly9o YWJyYWhhYnIucnUvaS9mYXZpY29uLmljbyIgLz4NCgk8bGluayByZWw9ImltYWdl X3NyYyIgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9pL2xvZ28uZ2lmIiAvPg0K CQ0KCQ0KCQk8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0i0J3QsCDQ tNC90Y/RhSDQv9GA0LjRiNC70L7RgdGMINC80L3QtSDRgNCw0LfQvtGB0LvQsNGC 0Ywg0L/QviDQstGB0LXQuSDQutC+0LzQv9Cw0L3QuNC4INC/0LjRgdGM0LzQvi4g 0JTRg9C80LDRjiwg0YfRgtC+INGDINC60LDQttC00L7Qs9C+INCw0LTQvNC40L3Q sCDQsdGL0LvQuCwg0LXRgdGC0Ywg0Lgg0LHRg9C00YPRgiDQvdCwINC+0LHRgdC7 0YPQttC40LLQsNC90LjQuCDQuNC00LjQvtGC0YssINGA0LDRgdGB0YLQsNCy0LvR j9GO0YnQuNC1INC60LDQutGC0YPRgdGLINCy0L7QutGA0YPQsy4uLiIgLz4gDQoJ DQoNCgkNCgk8bGluayB0aXRsZT0iIiB0eXBlPSJhcHBsaWNhdGlvbi9yc3MreG1s IiByZWw9ImFsdGVybmF0ZSIgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9yc3Mv YmxvZ3MvaHVtb3VyLzEyMDkwNS8yNjY5NTdmYTQ2OWFkNDNjY2MxNWEzOTkwN2Y2 ODdjOS8iLz4NCg0KCTwhLS1baWYgSUUgNl0+PGxpbmsgcmVsPSJzdHlsZXNoZWV0 IiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Nzcy8xMzA3MDA5Nzg1L2llNi5j c3MiIG1lZGlhPSJhbGwiIC8+PCFbZW5kaWZdLS0+DQoJPCEtLVtpZiBJRSA3XT48 bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUv Y3NzLzEzMDcwMDk3ODUvaWU3LmNzcyIgbWVkaWE9ImFsbCIgLz48IVtlbmRpZl0t LT4NCgk8IS0tW2lmIElFIF0+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJo dHRwOi8vaGFicmFoYWJyLnJ1L2Nzcy8xMzA3MDA5Nzg1L2llLmNzcyIgbWVkaWE9 ImFsbCIgLz48IVtlbmRpZl0tLT4NCgkNCgkNCgk8bGluayBocmVmPSIvY3NzLzEz MDcwMDk3ODUva2FybWEuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwi IC8+DQoJPGxpbmsgaHJlZj0iL2Nzcy8xMzA3MDA5Nzg1L3Byb2ZpbGUuY3NzIiBy ZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIC8+DQoJDQoJPGxpbmsgaHJlZj0i L2Nzcy8xMzA3MDA5Nzg1L3NpZGViYXIvY2F0ZWdvcnlfYmxvZ3MuY3NzIiByZWw9 InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIC8+DQoJPGxpbmsgaHJlZj0iL2Nzcy8x MzA3MDA5Nzg1L3NpZGViYXIvYmVzdF9jb21wYW55LmNzcyIgcmVsPSJzdHlsZXNo ZWV0IiBtZWRpYT0iYWxsIiAvPg0KDQoJPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJo dHRwOi8vaGFicmFoYWJyLnJ1L2luZm8vaGVscC8iLz4NCgk8bGluayByZWw9InNl YXJjaCIgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9zZWFyY2gvIi8+DQoJPGxp bmsgcmVsPSJob21lIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1LyIvPg0KCTxz Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9oYWJyYWhh YnIucnUvanMvMTMwNzAwOTc4NS9tb290b29scy0xLjItY29yZS15Yy5qcyI+PC9z Y3JpcHQ+DQoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0 cDovL2hhYnJhaGFici5ydS9qcy8xMzA3MDA5Nzg1L3N5c3RlbS5qcyI+PC9zY3Jp cHQ+DQoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDov L2hhYnJhaGFici5ydS9qcy8xMzA3MDA5Nzg1L3RtL2luaXQuanMiPjwvc2NyaXB0 Pg0KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9o YWJyYWhhYnIucnUvanMvMTMwNzAwOTc4NS9jb21tb24uanMiPjwvc2NyaXB0Pg0K CQ0KCTwhLS1zY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6 Ly9oYWJyYWhhYnIucnUvanMvMTMwNzAwOTc4NS9vbGQtc3R1ZmYtdi0xLmpzIj48 L3NjcmlwdC0tPg0KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9 Imh0dHA6Ly9oYWJyYWhhYnIucnUvanMvMTMwNzAwOTc4NS9hbGwuanMiPjwvc2Ny aXB0Pg0KCQ0KCQkNCg0KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz cmM9Imh0dHA6Ly9oYWJyYWhhYnIucnUvanMvMTMwNzAwOTc4NS90bS92YWxpZGF0 aW9uLmpzIj48L3NjcmlwdD4NCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw dCIgc3JjPSJodHRwOi8vaGFicmFoYWJyLnJ1L2pzLzEzMDcwMDk3ODUvdG0veG1s aGFuZGxlci5qcyI+PC9zY3JpcHQ+DQoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz Y3JpcHQiIHNyYz0iaHR0cDovL2hhYnJhaGFici5ydS9qcy8xMzA3MDA5Nzg1L3Rt L2NvbnRyb2xzL2NvbnRyb2wuanMiPjwvc2NyaXB0Pg0KCTxzY3JpcHQgdHlwZT0i dGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9oYWJyYWhhYnIucnUvanMvMTMw NzAwOTc4NS90bS9mb3Jtcy9mYXZvdXJpdGVzX2FkZC5qcyI+PC9zY3JpcHQ+DQoJ PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL2hhYnJh aGFici5ydS9qcy8xMzA3MDA5Nzg1L3RtL2NvbnRyb2xzL2J1dHRvbi5qcyI+PC9z Y3JpcHQ+DQoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0 cDovL2hhYnJhaGFici5ydS9qcy8xMzA3MDA5Nzg1L3RtL2Zvcm0uanMiPjwvc2Ny aXB0Pg0KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6 Ly9oYWJyYWhhYnIucnUvanMvMTMwNzAwOTc4NS9hdXRvc3VnZ2VzdC5qcyI+PC9z Y3JpcHQ+DQoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0 cDovL2hhYnJhaGFici5ydS9qcy8xMzA3MDA5Nzg1L2hpZ2hsaWdodC5qcyI+PC9z Y3JpcHQ+DQoJDQoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KCS8q PCFbQ0RBVEFbKi8NCgl2YXIgeWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdz Y3JpcHQnKTsNCgkJeWEuc3JjID0gJ2h0dHA6Ly9hbi55YW5kZXgucnUvc3lzdGVt L2NvbnRleHQuanMnOw0KCS8qIF1dPiovDQoJPC9zY3JpcHQ+DQoJPHNjcmlwdCB0 eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KCS8qPCFbQ0RBVEFbKi8NCgl2YXIgZ2Eg PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsNCgkJZ2Euc2V0QXR0 cmlidXRlKCdhc3luYycsICd0cnVlJyk7DQoJCWdhLnNyYyA9ICgnaHR0cHM6JyA9 PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCA/ICdodHRwczovL3NzbCcgOiAn aHR0cDovL3d3dycpICsgJy5nb29nbGUtYW5hbHl0aWNzLmNvbS9nYS5qcyc7DQoJ LyogXV0+Ki8NCgk8L3NjcmlwdD4NCgkNCgk8c2NyaXB0IHR5cGU9InRleHQvamF2 YXNjcmlwdCI+DQoJLyo8IVtDREFUQVsqLw0KCQl2YXIgdGVtcD10ZW1wfHx7fTsN CgkJd2luZG93LnRlbXA9dGVtcDsNCgkJdGVtcC5iYXNlID0gKHdpbmRvdy5iYXNl X2Z1bGxfdXJsID0gJ2h0dHA6Ly9oYWJyYWhhYnIucnUvJyk7DQoJCXRlbXAuYmFz ZV9zaG9ydCA9ICdoYWJyYWhhYnIucnUnOw0KCQlobGpzLmluaXRIaWdobGlnaHRp bmdPbkxvYWQoKTsNCgkvKiBdXT4qLw0KCTwvc2NyaXB0PiANCgkNCgk8c2NyaXB0 IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvanMvMTMwNzAwOTc4NS9jb21t ZW50Rm9ybS5qcyI+PC9zY3JpcHQ+DQoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz Y3JpcHQiIHNyYz0iL2pzLzEzMDcwMDk3ODUvdm90aW5nLmpzIj48L3NjcmlwdD4N Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvanMvMTMwNzAw OTc4NS9zd2ZvYmplY3QuanMiPjwvc2NyaXB0Pg0KCTxzY3JpcHQgdHlwZT0idGV4 dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy8xMzA3MDA5Nzg1L3Bvc3RzSGFuZGxlci5q cyI+PC9zY3JpcHQ+DQoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy Yz0iL2pzLzEzMDcwMDk3ODUvaGFicmFXWUcuanMiPjwvc2NyaXB0Pg0KCTxzY3Jp cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy8xMzA3MDA5Nzg1L2Zy aWVuZGluZy5qcyI+PC9zY3JpcHQ+DQoJDQoNCgkJDQo8L2hlYWQ+DQoNCjxib2R5 IGlkPSJtYWluLXBhZ2UiIGNsYXNzPSJibG9ncyBibG9nLXBhbmVsICAiIGxhbmc9 InJ1Ij4NCgkJDQoJCQkNCg0KCQkJDQoNCgkJCQ0KCQkJDQoJCQkNCgkJCQ0KCQkJ DQoJCQkNCgkJCQ0KDQoJCQkNCg0KCQkJDQoNCgkJCQ0KCQkJPHNjcmlwdD4NCgkJ CXZhciBtYl9yYW5kb20gPSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAw MDApOw0KCQkJZG9jdW1lbnQud3JpdGUoIjxzY3JpcHQgc3JjPSdodHRwOi8vcGlu ay5oYWJyYWxhYi5ydS9jZ2ktYmluL2lmcmFtZS9oYWJyX290aGVyc185MD8iK21i X3JhbmRvbSsiJm9wdGlvbnM9RlQnPjwvc2NyIisiaXB0PiIpOw0KCQkJPC9zY3Jp cHQ+DQoJCQkNCg0KCQkJDQoNCgkJCQ0KDQoJCQkJCQkJCQ0KDQoJCQ0KDQoNCg0K PGRpdiBjbGFzcz0iaGVhZGVyIj4NCgkNCgkNCgkJPGRsIGNsYXNzPSJwYW5lbC1w ZXJzb25hbCI+Cgk8ZHQ+CgkJPGEgaHJlZj0iaHR0cDovL2dyY29vbC5oYWJyYWhh YnIucnUvIiBjbGFzcz0iaGFicmF1c2VyIj5ncmNvb2w8L2E+CgoJCQoKCgkJCgkJ PGEgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9zZXR0aW5ncy8iIGNsYXNzPSJu YXYtc2V0dGluZ3MiPtC90LDRgdGC0YDQvtC50LrQuDwvYT4KCQk8YSBocmVmPSJo dHRwOi8vaGFicmFoYWJyLnJ1L2xvZ291dC9ncmNvb2wvMzc3NjgwMjI2NS8iPtCy 0YvQudGC0Lg8L2E+CgkJCgkJCgk8L2R0PgoJPGRkPgoJCQoJICA8YSAgaHJlZj0i aHR0cDovL2dyY29vbC5oYWJyYWhhYnIucnUvbWFpbC8iPtC70LjRh9C90LDRjyDQ v9C+0YfRgtCwPC9hPgkKCQk8YSBocmVmPSJodHRwOi8vZ3Jjb29sLmhhYnJhaGFi ci5ydS9mYXZvcml0ZXMvIj7QuNC30LHRgNCw0L3QvdC+0LU8L2E+CgkJCgkJCgk8 L2RkPgoJPGRkIGNsYXNzPSJoYWJyYXVzZXItY2hhcmdlIiBpZD0idXNlcmNoYXJn ZSI+0KMg0LLQsNGBINC90LXQtNC+0YHRgtCw0YLQvtGH0L3QviDQutCw0YDQvNGL INC00LvRjyDQs9C+0LvQvtGB0L7QstCw0L3QuNGPPC9kZD4KPC9kbD4KPHNjcmlw dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwoJdmFyIHRlbXA9 dGVtcHx8e307Cgl0ZW1wLnVzZXIgPSB7ICdsb2dpbic6ICdncmNvb2wnfTsKLy9d XT4KPC9zY3JpcHQ+Cg0KCSANCgk8ZGl2IGNsYXNzPSJwYW5lbC10b29scyI+DQoJ CQ0KCQk8ZGl2IGNsYXNzPSJwYW5lbC1zZXR0aW5ncyI+DQoJCQkmbmJzcDsNCgkJ PC9kaXY+DQoJCSANCgkJPGZvcm0gY2xhc3M9InBhbmVsLXNlYXJjaCBqcy1hdXRv c3VnZ2VzdC1ob2xkZXIgIiBhY3Rpb249Imh0dHA6Ly9oYWJyYWhhYnIucnUvc2Vh cmNoLyIgbWV0aG9kPSJnZXQiIGFjY2VwdC1jaGFyc2V0PSJ1dGYtOCI+DQoJCQk8 cD4NCgkJCQk8bGFiZWwgY2xhc3M9InBhbmVsLXNlYXJjaC1sYWJlbCIgZm9yPSJz ZWFyY2giPg0KCQkJCQk8aW5wdXQgaWQ9InNlYXJjaCIgY2xhc3M9ImluLXRleHQg anMtYXV0b3N1Z2dlc3QtZmllbGQgIiB0aXRsZT0i0L/QvtC40YHQuiDQv9C+INGB 0LDQudGC0YMiIHR5cGU9InRleHQiIG5hbWU9InEiIHZhbHVlPSIiLz4gDQoJCQkJ CTxzcGFuPtC/0L7QuNGB0Log0L/QviDRgdCw0LnRgtGDPC9zcGFuPg0KCQkJCTwv bGFiZWw+DQoJCQkJPGlucHV0IGNsYXNzPSJpbi1zdWJtaXQiIHR5cGU9InN1Ym1p dCIgaWQ9ImRvIiB2YWx1ZT0iIiB0aXRsZT0iRW50ZXIhIiAvPg0KCQkJPC9wPg0K CQkJPGRpdiBjbGFzcz0ianMtYXV0b3N1Z2dlc3Qtb3V0cHV0LWNvbnRhaW5lciI+ PGRpdiBjbGFzcz0ianMtYXV0b3N1Z2dlc3Qtb3V0cHV0IGhpZGRlbiI+PC9kaXY+ PC9kaXY+DQoJCTwvZm9ybT4NCgk8L2Rpdj4NCgk8YSBjbGFzcz0ibG9nbyAiIGhy ZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvIiB0aXRsZT0i0J3QsCDQs9C70LDQstC9 0YPRjiDRgdGC0YDQsNC90LjRhtGDIj48L2E+DQoJDQoNCgk8dWwgY2xhc3M9InBh bmVsLW5hdi10b3AiPg0KCQ0KCQkNCgkJCQ0KCQkJDQoJCQkJPGxpIGNsYXNzPSJj dXJyZW50Ij48YSBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1LyI+0J/QvtGB0YLR izwvYT48L2xpPg0KCQkJDQoJCQ0KCQkNCgkJDQoJDQoJCQ0KCQkNCgkJDQoJCQk8 bGk+PGEgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9xYS8iPlEmYW1wO0E8L2E+ PC9saT4NCgkJDQoJDQoJCQ0KCQkNCgkJDQoJCQk8bGk+PGEgaHJlZj0iaHR0cDov L2hhYnJhaGFici5ydS9ibG9nbGlzdC8iPtCR0LvQvtCz0Lg8L2E+PC9saT4NCgkJ DQoJDQoJCQ0KCQkNCgkJDQoJCQk8bGk+PGEgaHJlZj0iaHR0cDovL2hhYnJhaGFi ci5ydS9wZW9wbGUvIj7Qm9GO0LTQuDwvYT48L2xpPg0KCQkNCgkNCgkJDQoJCQ0K CQkNCgkJCTxsaT48YSBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2NvbXBhbmll cy8iPtCa0L7QvNC/0LDQvdC40Lg8L2E+PC9saT4NCgkJDQoJDQoJDQoJDQoJDQoJ DQoJPGxpIHN0eWxlPSJtYXJnaW4tYm90dG9tOjA7DQoJCW1hcmdpbi1sZWZ0OjA7 DQoJCW1hcmdpbi1yaWdodDowOw0KCQltYXJnaW4tdG9wOi0xNHB4OyI+DQoJCTxz cGFuPg0KCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KCQkJLyo8 IVtDREFUQVsqLw0KCQkJdmFyIG1iX3JhbmRvbSA9IE1hdGgucm91bmQoTWF0aC5y YW5kb20oKSAqIDEwMDAwMCk7DQoJCQlkb2N1bWVudC53cml0ZSgiPHNjcmlwdCBz cmM9XCdodHRwOi8vcGluay5oYWJyYWxhYi5ydS9jZ2ktYmluL2lmcmFtZS9zcGVj aWFsPyIrbWJfcmFuZG9tKyImb3B0aW9ucz1GVFwnPjwvc2NyIisiaXB0PiIpOw0K CQkJLyogXV0+Ki8NCgkJCTwvc2NyaXB0Pg0KCQk8L3NwYW4+DQoJCQ0KCTwvbGk+ DQoJPGxpIHN0eWxlPSJtYXJnaW4tYm90dG9tOjA7DQoJCW1hcmdpbi1sZWZ0OjE1 cHg7DQoJCW1hcmdpbi1yaWdodDowOw0KCQltYXJnaW4tdG9wOi05cHg7Ij4NCgkJ PHNwYW4+DQoJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCgkJLyo8 IVtDREFUQVsqLw0KCQl2YXIgbWJfcmFuZG9tID0gTWF0aC5yb3VuZChNYXRoLnJh bmRvbSgpICogMTAwMDAwKTsNCgkJZG9jdW1lbnQud3JpdGUoIjxzY3JpcHQgc3Jj PVwnaHR0cDovL3BpbmsuaGFicmFsYWIucnUvY2dpLWJpbi9pZnJhbWUvc3BlY2lh bF8yPyIrbWJfcmFuZG9tKyImb3B0aW9ucz1GVFwnPjwvc2NyIisiaXB0PiIpOw0K CQkvKiBdXT4qLw0KCQk8L3NjcmlwdD4NCgkJPC9zcGFuPg0KCTwvbGk+DQoJDQoJ DQoNCgk8L3VsPg0KDQo8L2Rpdj4NCg0KDQo8ZGl2IGlkPSJ3cmFwcGVyIj4NCjxk aXYgaWQ9ImlubmVyIiA+DQoNCg0KCTxkaXYgaWQ9Im1haW4tY29udGVudCI+DQoJ CQ0KDQoJDQoJCQk8ZGl2IGlkPSJ2aXZhLWxhLXczYyI+CgkJPGRpdiBjbGFzcz0i YmxvZy10aXRsZSI+CgkJCTxoMiBjbGFzcz0iYmxvZy1oZWFkZXIiPgoJCQkJPGEg aHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9ibG9ncy9odW1vdXIvIiBjbGFzcz0i c2lsZW50bGluayI+0KXQsNCx0YDQsNCu0LzQvtGAPC9hPgoJCQkJCgkJCQkKCQkJ PC9oMj4KCQkJIDxkbCBjbGFzcz0iYmxvZy1pbmRleCI+CgkJCSAJPGR0PtC40L3Q tNC10LrRgTwvZHQ+CgkJCQk8ZGQ+MCwwMDwvZGQ+CgkJCSA8L2RsPgoJCTwvZGl2 PgoJPC9kaXY+CgkNCgkNCg0KCQo8ZGl2IGNsYXNzPSJwYWdlLW5hdmlnYXRpb24i PgoJPHRhYmxlIGNsYXNzPSJwYWdlLW1lbnUiPgoJCTx0cj4KCQkJPHRkIGlkPSJ3 cml0ZSIgd2lkdGg9IjIwIj4KCQkJCQoJCQkJPGEgaHJlZj0iL2FkZC90b3BpYy8i IHRpdGxlPSLQndCw0L/QuNGB0LDRgtGMINC90L7QstGL0Lkg0YXQsNCx0YDQsNGC 0L7Qv9C40LoiPjxpbWcgc3JjPSIvaS93cml0ZS10b3BpYy5wbmciIGFsdD0i0J3Q sNC/0LjRgdCw0YLRjCIgaGVpZ2h0PSIzNSIgd2lkdGg9IjM0IiAvPjwvYT4KCQkJ CQoJCQkJCgkJCTwvdGQ+CgkJCQoJCQkJCgkJCQkJPHRkIGNsYXNzPSIgY3VycmVu dCI+PGRpdj48YSBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dzL2h1bW91 ci8iIHRpdGxlPSIiPtCX0LDRhdCw0LHRgNC10L3QvdGL0LU8L2E+PC9kaXY+PC90 ZD4KCQkJCQoJCQkJCgkJCQoJCQkJCgkJCQkKCQkJCQk8dGQgY2xhc3M9IiI+PGRp dj48YSBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dzL2h1bW91ci9uZXcv IiB0aXRsZT0iIj7QndC+0LLRi9C1PC9hPiA8c3BhbiBjbGFzcz0ibmV3Ij4rMjwv c3Bhbj48L2Rpdj48L3RkPgoJCQkJCgkJCQoJCQkJCgkJCQkKCQkJCQk8dGQgY2xh c3M9IiI+PGRpdj48YSBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dzL2h1 bW91ci91bmhhYnJlZC8iIHRpdGxlPSIiPtCe0YLRhdCw0LHRgNC10L3QvdGL0LU8 L2E+PC9kaXY+PC90ZD4KCQkJCQoJCQkKCQk8L3RyPgoJPC90YWJsZT4KCQo8L2Rp dj4KDQoJCgkKCgoKCgkKCgkKCQk8ZGl2IGNsYXNzPSJoZW50cnkgIj4KCgkJCTxo MiBjbGFzcz0iZW50cnktdGl0bGUgc2luZ2xlLWVudHJ5LXRpdGxlIj4KCQkJCQoJ CQkJPHNwYW4gY2xhc3M9ImxvY2tlZCIgdGl0bGU9ItCS0LjQtNC10L0g0YLQvtC7 0YzQutC+INC/0L7QtNC/0LjRgdGH0LjQutCw0Lwg0LHQu9C+0LPQsCI+PC9zcGFu PgoKCQkJCQoKCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8c3BhbiB0aXRsZT0iaHR0 cDovL2hhYnJhaGFici5ydS9ibG9ncy9odW1vdXIvMTIwOTA1LyIgY2xhc3M9InRv cGljIj7QmtCw0L3RhtC10YDQvtCz0LXQvdC90YvQtSDQuNC30LvRg9GH0LXQvdC4 0Y8uINCh0LrQsNC90LTQsNC70YssINC40L3RgtGA0LjQs9C4LCDRgNCw0YHRgdC7 0LXQtNC+0LLQsNC90LjRjyE8L3NwYW4+CgkJCQkJCgkJCQkKCgkJCQkKCgkJCQkK CQkJCQoJCQk8L2gyPgoKCQkJCgo8ZGl2IGNsYXNzPSJjb250ZW50Ij4KCdCd0LAg 0LTQvdGP0YUg0L/RgNC40YjQu9C+0YHRjCDQvNC90LUg0YDQsNC30L7RgdC70LDR gtGMINC/0L4g0LLRgdC10Lkg0LrQvtC80L/QsNC90LjQuCDQv9C40YHRjNC80L4u INCU0YPQvNCw0Y4sINGH0YLQviDRgyDQutCw0LbQtNC+0LPQviDQsNC00LzQuNC9 0LAg0LHRi9C70LgsINC10YHRgtGMINC4INCx0YPQtNGD0YIg0L3QsCDQvtCx0YHQ u9GD0LbQuNCy0LDQvdC40Lgg0LjQtNC40L7RgtGLLCDRgNCw0YHRgdGC0LDQstC7 0Y/RjtGJ0LjQtSDQutCw0LrRgtGD0YHRiyDQstC+0LrRgNGD0LMg0LzQvtC90LjR gtC+0YDQsCDQuCDQvtC00LXQstCw0Y7RidC40LUgwqvQsNC90YLQuNC60L7QvNC/ 0YzRjtGC0LXRgNC90YvQtSDQvtGH0LrQuMK7Ljxici8+DQrQlNC70Y8g0YLQsNC6 0LjRhSDQuNC90LTQuNCy0LjQtNGD0YPQvNC+0LIg0Lgg0LHRi9C70L4g0L3QsNC/ 0LjRgdCw0L3QviDQv9C40YHRjNC80L4uINCe0YHRgtCw0LvRjNC90YvQtSDQv9GA 0L7RgdGC0L4g0L/QvtGB0LzQtdGP0LvQuNGB0YwuPGJyLz4NCjxici8+DQrQotC1 0LrRgdGCINC/0LjRgdGM0LzQsCDQv9C+0LQg0LrQsNGC0L7QvC48YnIvPg0KPGJy Lz4NCjxhIG5hbWU9ImhhYnJhY3V0Ij48L2E+PGJyLz4NCjxici8+DQrQlNC+0LHR gNC+0LUg0YPRgtGA0L4sICVjb21wYW55bmFtZSUuPGJyLz4NCiA8YnIvPg0K0J3Q sNC80LXQtNC90Lgg0LzQvdC1INGB0L3QvtCy0LAg0L/RgNC40YjQu9C+0YHRjCDQ stGL0YHQu9GD0YjQsNGC0Ywg0L7Rh9C10YDQtdC00L3Rg9GOINCy0LXRgNGB0LjR jiDQstC10YfQvdC+0Lkg0LjRgdGC0L7RgNC40Lgg0L4g0YLQvtC8INGH0YLQviDC q9C60L7QvNC/0YzRjtGC0LXRgC/Qv9GA0LjQvdGC0LXRgC/QvNGL0YjRjC/RgtC1 0LvQtdGE0L7QvSDRj9Cy0LvRj9GO0YLRgdGPINC40YHRgtC+0YfQvdC40LrQvtC8 INCy0YDQtdC00L3QvtCz0L4g0LjQt9C70YPRh9C10L3QuNGPwrsuINCi0LjQv9Cw LCDRgyDQutC+0LzQv9GM0Y7RgtC10YDQsCDQsNC00YHQutC40LUg0LzQtdCz0LDQ s9C10YDRhtGLLCDRgtC10LvQtdGE0L7QvSDigJQg0Y3RgtC+INC/0LXRgNC10LTQ sNGC0YfQuNC6INGA0LDQtNC40L7QstC+0LvQvSwg0LAg0L/RgNC40L3RgtC10YAg 0L/QtdGH0LDRgtCw0LXRgiDQstGA0LXQtNC90YvQvCDQvtC30L7QvdC+0LwuINCY 0LvQuCDQstGL0LTRi9GF0LDQtdGCINC+0LfQvtC94oCmINC40LvQuCDQstC00YvR hdCw0LXRguKApiDRh9GC0L4g0YLQsNC60L7QtSDQvtC30L7QvSDQuCDQv9C+0YfQ tdC80YMg0L7QvSDRj9Cy0LvRj9C10YLRgdGPINCy0YDQtdC00L3Ri9C8INC00L7Q utC70LDQtNGH0LjQuiDRgtCw0Log0Lgg0L3QtSDRgNCw0LfQvtCx0YDQsNC70YHR jy48YnIvPg0KIDxici8+DQrQrdGC0LjQvCDQv9C40YHRjNC80L7QvCDRjyDQvdCw 0LTQtdGO0YHRjCDRgNCw0Lcg0Lgg0L3QsNCy0YHQtdCz0LTQsCDQt9Cw0LrRgNGL 0YLRjCDQtNCw0L3QvdGD0Y4g0YLQtdC80YMuPGJyLz4NCiA8YnIvPg0KPGg0PtCY 0YLQsNC6LCDQvNCw0LvQtdC90YzQutCw0Y8g0YHQv9GA0LDQstC60LAg0LTQu9GP INC40L3RgtC10YDQtdGB0YPRjtGJ0LjRhdGB0Y8g0YLQtdC80L7QuTo8L2g0Pjxi ci8+DQo8YnIvPg0KPGI+0JbQmi3QvNC+0L3QuNGC0L7RgDwvYj4g0LDQutGC0LjQ stC90L4g0LjQt9C70YPRh9Cw0YLRjCDQvdC1INC80L7QttC10YIg0L3QuNGH0LXQ s9C+LCDQutGA0L7QvNC1INGB0LLQtdGC0LAsINGC0LDQuiDQutCw0Log0LIg0L3Q tdC8INC90LXRgiDQvdC10L7QsdGF0L7QtNC40LzRi9GFINC00LvRjyDQv9GA0L7R h9C40YUg0LjQt9C70YPRh9C10L3QuNC5INGD0YHQu9C+0LLQuNC5LiDQkiDRgdGC 0LDRgNGL0YUg0K3Qm9CiLdC80L7QvdC40YLQvtGA0LDRhSDQuNGB0L/QvtC70YzQ t9GD0LXRgtGB0Y8g0LzQtdGF0LDQvdC40LfQvCDQv9GA0LjRhtC10LvRjNC90L7Q uSDQsdC+0LzQsdCw0YDQtNC40YDQvtCy0LrQuCDQu9GO0LzQuNC90L7RhNC+0YDQ sCDRjdC70LXQutGC0YDQvtC90LDQvNC4INGBINC/0L7QvNC+0YnRjNGOINGN0LvQ tdC60YLRgNC+0LzQsNCz0L3QuNGC0L3QvtC5INGB0LjRgdGC0LXQvNGLINGD0L/R gNCw0LLQu9C10L3QuNGPINGC0YDQsNC10LrRgtC+0YDQuNC10LkuINCi0LDQvCDi gJQg0LTQsCwg0L3QtdC80L3QvtC20LrQviDRhNC+0L3QuNC70L4uINCSINCW0Jot 0LzQvtC90LjRgtC+0YDQtSDQutCw0LbQtNGL0Lkg0L/QuNC60YHQtdC70Ywg0L/R gNC10LTRgdGC0LDQstC70Y/QtdGCINGB0L7QsdC+0Lkg0YPQv9GA0LDQstC70Y/Q tdC80L7QtSDQv9C+0LvRj9GA0LjQt9GD0Y7RidC10LUg0LfQtdGA0LrQsNC70L4g 0LzQuNC60YDQvtGB0LrQvtC/0LjRh9C10YHQutC40YUg0YDQsNC30LzQtdGA0L7Q siwg0L/QvtC00YHQstC10YfQuNCy0LDQtdC80L7QtSDQu9C40LHQviDRgtC+0L3Q utC+0Lkg0LvRjtC80LjQvdC40YHRhtC10L3RgtC90L7QuSDQu9Cw0LzQv9C+0Lkg 0L/QvtC00YHQstC10YLQutC4LCDQu9C40LHQviDRgdCy0LXRgtC+0LTQuNC+0LTQ sNC80LgsINGA0LDRgdC/0L7Qu9C+0LbQtdC90L3Ri9C80Lgg0LfQsCDRgdC70L7Q tdC8INC20LjQtNC60LjRhSDQutGA0LjRgdGC0LDQu9C70L7Qsi48YnIvPg0KIDxi ci8+DQo8Yj7QodC40YHRgtC10LzQvdGL0Lkg0LHQu9C+0Lo8L2I+INGC0LXQvtGA 0LXRgtC40YfQtdGB0LrQuCDRh9GC0L4t0YLQviDQuNC30LvRg9GH0LDQtdGCLCDQ v9GA0LjQvNC10YDQvdC+INC60LDQuiDQvdCw0LrQvtCy0LDQu9GM0L3Rjywg0L3Q viDQvtC9INGC0L7QttC1INC20LXQu9C10LfQvdGL0LksINCwINC90LDRh9C40L3Q utCwINC80LDQu9C+0LzQvtGJ0L3QsNGPLCDRgtCw0Log0YfRgtC+INC30LAg0L/R gNC10LTQtdC70Ysg0LbQtdC70LXQt9C90L7Qs9C+INGP0YnQuNC60LAg0YLQvtGH 0L3QviDQvdC40YfQtdCz0L4g0L3QtSDQstGL0YXQvtC00LjRgi48YnIvPg0KIDxi ci8+DQrQkiDQvtCx0YvRh9C90YvRhSA8Yj7QvNGL0YjQsNGFPC9iPiwg0YHQstC1 0YLRj9GJ0LjRhSDQutGA0LDRgdC90YvQvCDRgdCy0LXRgtC+0Lwg0LjQty3Qv9C+ 0LQg0LHRgNGO0YXQsCwg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC/0YDQvtGB 0YLQvtC5INGB0LLQtdGC0L7QtNC40L7QtCDQvNC+0YnQvdC+0YHRgtGM0Y4gMi0x MNC80JLRgi4g0K3RgtC+INC00LDQttC1INCx0LvQuNC30LrQviDQvdC1INC70LDQ t9C10YAuINCX0LDQtNCw0YfQsCDQtNC40L7QtNCwIOKAlCDQstGB0LXQs9C+LdC7 0LjRiNGMINC+0YHQstC10YnQsNGC0Ywg0L/RgNC+0YHRgtGA0LDQvdGB0YLQstC+ INC/0L7QtCDQvNGL0YjRjNGOLjxici8+DQogPGJyLz4NCtCSIDxiPtC70LDQt9C1 0YDQvdGL0YUg0LzRi9GI0LDRhTwvYj4g0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGP INC70LDQt9C10YDQvdGL0Lkg0YHQstC10YLQvtC00LjQvtC0INC80L7RidC90L7R gdGC0YzRjiAxNS0yNdC90JLRgi4g0JHQtdC30L7Qv9Cw0YHQvdC+0Lkg0LzQvtGJ 0L3QvtGB0YLRjNGOINC00LvRjyDQutGA0LDRgtC60L7QstGA0LXQvNC10L3QvdC+ 0LPQviDQvtCx0LvRg9GH0LXQvdC40Y8g0YHQtdGC0YfQsNGC0LrQuCDQs9C70LDQ t9CwINGB0YfQuNGC0LDQtdGC0YHRjyA10LzQktGCLiDQrdGC0L4g0LIgMjAwINGA 0LDQtyDQsdC+0LvRjNGI0LUuINCS0Ysg0LfQsCAxMCDRgdC10LrRg9C90LQg0YDQ sNGB0YHQvNCw0YLRgNC40LLQsNC90LjRjyDRgdC+0LvQvdGG0LAg0YfQtdGA0LXQ tyDQv9C70L7RgtC90YPRjiDQvtCx0LvQsNGH0L3QvtGB0YLRjCDQvdCw0L3QtdGB 0ZHRgtC1INGB0LLQvtC40Lwg0LPQu9Cw0LfQsNC8INCx0L7Qu9GM0YjQtSDQstGA 0LXQtNCwLCDRh9C10Lwg0LXRgdC70Lgg0LHRg9C00LXRgtC1INCy0L3QuNC80LDR gtC10LvRjNC90L4g0YDQsNGB0YHQvNCw0YLRgNC40LLQsNGC0Ywg0LTQuNC+0LQg 0LLQutC70Y7Rh9C10L3QvdC+0Lkg0LzRi9GI0Lgg0LvQtdGCINC/0Y/RgtGM0LTQ tdGB0Y/Rgi48YnIvPg0KIDxici8+DQo8Yj7Qm9Cw0LfQtdGA0L3Ri9C5INC/0YDQ uNC90YLQtdGAPC9iPiDQvdCw0LfRi9Cy0LDQtdGC0YHRjyDQu9Cw0LfQtdGA0L3R i9C8INC90LUg0L/QvtGC0L7QvNGDINGH0YLQviDRgtCw0Lwg0LLQvdGD0YLRgNC4 INC20LDRgNC40YIg0LPQuNC/0LXRgNCx0L7Qu9C+0LjQtCDQuNC90LbQtdC90LXR gNCwINCT0LDRgNC40L3QsCwg0LAg0L/QvtGC0L7QvNGDINGH0YLQviDRgtCw0Lwg 0YDQsNCx0L7RgtCw0LXRgiDQu9Cw0LfQtdGA0L3Ri9C5INC00LjQvtC0INGH0YPR gtGMINC80L7RidC90LXQtSDRh9C10Lwg0LIg0LzRi9GI0LgsINC60L7RgtC+0YDR i9C5INGB0LLQtdGC0LjRgiDQstC+INCy0YDQsNGJ0LDRjtGJ0LXQtdGB0Y8g0LfQ tdGA0LrQsNC70L4sINGH0YLQviDQtNCw0ZHRgiDQstC+0LfQvNC+0LbQvdC+0YHR gtGMINGB0LLQtdGC0L7QstC+0LzRgyDQu9GD0YfRgyDQv9GA0L7QudGC0Lgg0LLQ tNC+0LvRjCDQstGB0LXQs9C+INGE0L7RgtC+0LHQsNGA0LDQsdCw0L3QsC4g0JTQ uNC+0LQg0LzQvtGA0LPQsNC10YIg0L3QsCDQstGL0YHQvtC60LjRhSDRh9Cw0YHR gtC+0YLQsNGFLCDQvtGC0YDQsNC20ZHQvdC90YvQuSDQu9GD0Ycg0L7RgdCy0LXR idCw0LXRgiDRhNC+0YLQvtCx0LDRgNCw0LHQsNC9LCDRj9GH0LXQudC60Lgg0LrQ vtGC0L7RgNC+0LPQviDRjdC70LXQutGC0YDQuNC30YPRjtGC0YHRjywg0Log0LrQ vtGC0L7RgNGL0Lwg0LfQsNGC0LXQvCDQv9GA0LjQu9C40L/QsNC10YIg0L/QvtGA 0L7RiNC+0Log0LjQtyDQutCw0YDRgtGA0LjQtNC20LAsINC60L7RgtC+0YDRi9C5 INC30LDRgtC10Lwg0LLQv9C10YfQsNGC0YvQstCw0LXRgtGB0Y8g0LIg0LHRg9C8 0LDQs9GDINC4INC30LDQutGA0LXQv9C70Y/QtdGC0YHRjyDQvdCwINC90LXQuSDR gtC10YDQvNC+0LLQsNC70L7QvC4g0JLRgdGRINC60LDRgtCw0YHRgtGA0L7RhNC4 0YfQtdGB0LrQvtC1INGB0YLQsNGC0LjRh9C10YHQutC+0LUg0Y3Qu9C10LrRgtGA 0LjRh9C10YHRgtCy0L4g0L/RgNC40L3Rj9C70LAg0L3QsCDRgdC10LHRjyDQsdGD 0LzQsNCz0LAuINCd0L4g0LXQuSDRg9C20LUg0LLRgdGRLdGA0LDQstC90L4g4oCU INC+0L3QsCDQuCDRgtCw0Log0LzRkdGA0YLQstCw0Y8uINCc0LDQutGB0LjQvNGD 0LwsINGH0YLQviDQvNC+0LbQtdGCINC/0YDQvtC40LfQvtC50YLQuCDigJQg0LLQ sNGI0LAg0LzRg9GB0L7RgNC90LDRjyDQutC+0YDQt9C40L3QsCDQvtC20LjQstGR 0YIg0Lgg0L/RgNC40L/QvtC80L3QuNGCINCy0LDQvCDQstGL0YDRg9Cx0LrRgyDQ tNC20YPQvdCz0LvQtdC5INCQ0LzQsNC30L7QvdC60LguPGJyLz4NCiA8YnIvPg0K PGI+0JzQvtCx0LjQu9GM0L3Ri9C5INGC0LXQu9C10YTQvtC9PC9iPiDQstCw0Ygg 0YHQsNC80YvQuSDRgdGC0YDQsNGI0L3Ri9C5INCy0YDQsNCzIOKAlCDQtdCz0L4g 0LjQt9C70YPRh9C10L3QuNC1INGB0L7RgdGC0LDQstC70Y/QtdGCINC00L4gMdCS 0YIg0LIg0L/QuNC60LUgKNGN0YLQviDQutC+0LPQtNCwINCy0Ysg0LPQvtCy0L7R gNC40YLQtSDQv9C+INGC0LXQu9C10YTQvtC90YMg0LjQtyDQutC+0LvQvtC00YbQ sCDQsiDQt9C+0L3QtSDQvdC10YPQstC10YDQtdC90L3QvtCz0L4g0L/RgNC40ZHQ vNCwKS4g0J7QsdGL0YfQvdGL0Lkg0Y3Qu9C10LrRgtGA0L7QvNCw0LPQvdC40YLQ vdGL0Lkg0YTQvtC9INCyINGB0L7RgdGC0L7Rj9C90LjQuCDQv9C+0LrQvtGPIOKA lCDQv9GA0LjQvNC10YDQvdC+INC90L7Qu9GMINC80LjQu9C70LjQstCw0YLRgi48 YnIvPg0KIDxici8+DQo8aDQ+0KLQtdC/0LXRgNGMINC/0YDQvtC50LTRkdC80YHR jyDQv9C+INCy0L3QtdGI0L3QuNC8INGD0LPRgNC+0LfQsNC8OjwvaDQ+PGJyLz4N Cjxici8+DQrQkiDQutCw0LbQtNC+0Lwg0LPQvtC70L7QstC90L7QvCDQstCw0LPQ vtC90LUgPGI+0LzQtdGC0YDQviA8L2I+0YPRgdGC0LDQvdC+0LLQu9C10L3QviDQ v9C+IDQg0Y3Qu9C10LrRgtGA0L7QtNCy0LjQs9Cw0YLQtdC70Y8g0LzQvtGJ0L3Q vtGB0YLRjNGOINC/0L4gMTYw0JrQktGCINC60LDQttC00YvQuS4g0KLQvtC90L3Q tdC70Ywg0LzQtdGC0YDQviDQv9GA0LXQtNGB0YLQsNCy0LvRj9C10YIg0LjQtyDR gdC10LHRjyDQttC10LvQtdC30L7QsdC10YLQvtC90L3Rg9GOINGC0YDRg9Cx0YMs INC/0L4g0YHRg9GC0Lgg4oCUINCy0L7Qu9C90L7QstC+0LQuINCSINC/0L7QtdC3 0LTQtSAyINCz0L7Qu9C+0LLQvdGL0YUg0LLQsNCz0L7QvdCwLiA4KjE2MD0xLjIg 0LzQtdCz0LDQstCw0YLRgtCwLiDQoi7QtS4g0LLRiyDQtNC+0LHQuNGA0LDQtdGC 0LXRgdGMINC00L4g0YDQsNCx0L7RgtGLINCyIMKr0JzQtdCz0LDQstC+0LvQvdC+ 0LLQutC1wrsuPGJyLz4NCiA8YnIvPg0KPGI+0KLRgNCw0LzQstCw0Lgg0Lgg0YLR gNC+0LvQu9C10LnQsdGD0YHRizwvYj46INC/0L4g0LTQstCwINGC0LDQutC40YUg 0LbQtSDQtNCy0LjQs9Cw0YLQtdC70Y8g0L3QsCDQstCw0LPQvtC9LiDQotC+0LvR jNC60L4g0Y3QutGA0LDQvdC40YDRg9GO0YnQtdCz0L4g0YLQvtC90L3QtdC70Y8g 0L3QtdGCLjxici8+DQogPGJyLz4NCjxiPtCi0YDQsNC80LLQsNC50L3Ri9C1INC4 INGC0YDQvtC70LvQtdC50LHRg9GB0L3Ri9C1INC/0YDQvtCy0L7QtNCwPC9iPiDR gtC+0LbQtSDRj9Cy0LvRj9GO0YLRgdGPINCw0LPRgNC10YHRgdC40LLQvdGL0LzQ uCDQuNC30LvRg9GH0LDRgtC10LvRj9C80LgsINGF0L7RgtGPINCy0YvQs9C70Y/Q tNGP0YIg0YLQsNC6INC80LjRgNC90L7igKYg0KXQvtC00LjQu9C4INC60L7Qs9C0 0LAt0L3QuNCx0YPQtNGMINC/0L7QtCDQstGL0YHQvtC60L7QstC+0LvRjNGC0L3R i9C80Lgg0LvQuNC90LjRj9C80Lg/INCh0LvRi9GI0LDQu9C4LCDQutCw0Log0L7Q vdC4INCz0YPQtNGP0YI/INCt0YLQviDQv9GA0L7QstC+0LTQsCDQtNGA0YPQsyDR gSDQtNGA0YPQs9C+0Lwg0L7QsdGB0YPQttC00LDRjtGCLCDQutGC0L4g0LzQvtGJ 0L3QtdC1INCy0LDRgSDQvtCx0LvRg9GH0LjQuyDQuCDQstCw0YjRgyDQstC10YDQ vtGP0YLQvdGD0Y4g0L/RgNC+0LTQvtC70LbQuNGC0LXQu9GM0L3QvtGB0YLRjCDQ ttC40LfQvdC4LiDQmtGB0YLQsNGC0LgsINC60L7Qs9C00LAg0LLRiyDRgSDQutGA 0LDRjyDQv9C70LDRgtGE0L7RgNC80Ysg0LIg0LzQtdGC0YDQviDQstGL0LPQu9GP 0LTRi9Cy0LDQtdGC0LUg0LIg0YLQvtC90L3QtdC70LUg0L/QvtC10LfQtCwg0LLR iyDRgdGC0L7QuNGC0LUg0L3QsCDQv9C+0Lst0LzQtdGC0YDQsCDQstGL0YjQtSDQ utC+0L3RgtCw0LrRgtC90L7Qs9C+INGA0LXQu9GM0YHQsCDQsiDRgNGD0LrRgyDR gtC+0LvRidC40L3QvtC5LiDQkCDQsiDQvdGR0LwgODI1INCy0L7Qu9GM0YIg0Lgg MTAg0LrQuNC70L7QsNC80L/QtdGAICjQvdCwINGN0LvQtdC60YLRgNC40YfQtdGB 0LrQuNC5INGB0YLRg9C7INC/0L7QtNCw0ZHRgtGB0Y8g0YDQvtCy0L3QviDQsiDR gdGC0L4g0YDQsNC3INC80LXQvdGM0YjQuNC5INGC0L7Quiwg0LAg0L7QvSwg0LzQ tdC20LTRgyDQv9GA0L7Rh9C40LwsINCz0LDRgNCw0L3RgtC40YDQvtCy0LDQvdC9 0L4g0YPQsdC40LLQsNC10YIpLjxici8+DQogPGJyLz4NCjxiPtCQ0LLRgtC+0LzQ vtCx0LjQu9GM0L3Ri9C5INCz0LXQvdC10YDQsNGC0L7RgDwvYj4sINC/0YDQuNCy 0L7QtNC40LzRi9C5INCyINC00LXQudGB0YLQstC40LUg0L/QvtGB0YDQtdC00YHR gtCy0L7QvCDRgNC10LzQtdC90L3QvtC5L9GG0LXQv9C90L7QuSDRgdCy0Y/Qt9C4 INGBINC60L7Qu9C10L3Rh9Cw0YLRi9C8INCy0LDQu9C+0Lwg0LTQstC40LPQsNGC 0LXQu9GPLCDQstGL0YDQsNCx0LDRgtGL0LLQsNC10YIg0YLQvtC6INCy0YDQsNGJ 0LXQvdC40LXQvCDQvtC00L3QvtC5INC20LXQu9C10LfQvdC+0Lkg0YTQuNCz0L7Q stC40L3RiyDQstC90YPRgtGA0Lgg0LTRgNGD0LPQvtC5INC4INGC0L7QttC1INCw 0LrRgtC40LLQvdC+INGE0L7QvdC40YIg0L3QuNC30LrQvtGH0LDRgdGC0L7RgtC9 0YvQvCDQuNC30LvRg9GH0LXQvdC40LXQvC48YnIvPg0KIDxici8+DQrQmtGB0YLQ sNGC0LgsINC+IMKr0LLQvtC70L3QvtCy0LrQsNGFwrsuIDxiPtCU0L7QvNCw0YjQ vdGP0Y8g0LzQuNC60YDQvtCy0L7Qu9C90L7QstC60LA8L2I+INC40LzQtdC10YIg 0LzQvtGJ0L3QvtGB0YLRjCDQstGB0LXQs9C+LdC70LjRiNGMINC+0LrQvtC70L4g MdCa0JLRgi4g0Jgg0L7QvdCwINC20LDRgNC40YIg0YLQsNC6LCDRh9GC0L4g0Y/Q udGG0LAg0L/QvtGC0L7QvCDQvdC1INC+0YLRgdC60YDQtdCx0LDRjtGC0YHRjyDQ vtGCINGB0YLQtdC90L7Qui4g0Jgg0LLQtdC00Ywg0LLRgdC1INGN0YLQuCDQstCw 0YLRgtGLINCyINC/0YDQvtGG0LXRgdGB0LUg0YDQsNC30L7Qs9GA0LXQstCwINCy 0L/QtdGH0LDRgtGL0LLQsNGO0YLRgdGPINCyINCy0LDRiNC4INC80LDQutCw0YDQ vtC90YshICjQsdC+0LbQtSDQvNC+0LksINGPINC+0LHRgNGR0Log0LvRjtC00LXQ uSDQvdCwINCz0L7Qu9C+0LTQvdGD0Y4g0YHQvNC10YDRgtGMKTxici8+DQogPGJy Lz4NCtCa0L7Qu9C40YfQtdGB0YLQstC+INGA0LXQsNC70YzQvdC+INCy0YDQtdC0 0L3Ri9GFINC00LvRjyDQt9C00L7RgNC+0LLRjNGPINCy0LXRidC10YHRgtCyIDxi PtCyINC80L7RgdC60L7QstGB0LrQvtC8INCy0L7Qt9C00YPRhdC1PC9iPiDRgNC1 0LTQutC+INC60L7Qs9C00LAg0L7Qv9GD0YHQutCw0LXRgtGB0Y8g0L3QuNC20LUg 0YLRgNC10YLQuCDQvtGCINC/0YDQtdC00LXQu9GM0L3QviDQtNC+0L/Rg9GB0YLQ uNC80L7QuSDQutC+0L3RhtC10L3RgtGA0LDRhtC40LguINCQINGC0LXRgNC80LjQ vSDCq9C/0YDQtdC00LXQu9GM0L3QviDQtNC+0L/Rg9GB0YLQuNC80L7QuSDQutC+ 0L3RhtC10L3RgtGA0LDRhtC40LjCuyDQvtCx0YvRh9C90L4g0YPQutCw0LfRi9Cy 0LDQtdGC0YHRjyDQtNC70Y8g0LLRgNC10LzQtdC90L3QvtCz0L4g0LjQvdGC0LXR gNCy0LDQu9CwINCyIDI0INGH0LDRgdCwLCDQsCDQstGLINC40Lwg0LTRi9GI0LjR gtC1INC/0L7RgdGC0L7Rj9C90L3Qviwg0LPQvtC00LDQvNC4Ljxici8+DQogPGJy Lz4NCtCi0LDQuiDRh9GC0L4g0Y8g0L7Rh9C10L3RjCDQvdCw0LTQtdGO0YHRjCwg 0YfRgtC+INGC0LXQv9C10YDRjCDQstGLINGC0L7Rh9C90L4g0LfQvdCw0LXRgtC1 LCDRh9C10LPQviDQstCw0Lwg0L3QsNC00L4g0LHQvtGP0YLRjNGB0Y8uPGJyLz4N CiA8YnIvPg0KPGg0PtCS0YvQstC+0LTRiyDQtNC70Y8g0YLQtdGFLCDQutGC0L4g 0L3QtSDRgdC00LXQu9Cw0Lsg0YHQvtCx0YHRgtCy0LXQvdC90YvRhTo8L2g0Pjxi ci8+DQo8YnIvPg0K0J7RhNC40YHQvdCw0Y8g0YLQtdGF0L3QuNC60LAg0LHQtdC3 0L7Qv9Cw0YHQvdCwLiDQntC90LjRidC10L3QutC+INC90LUg0L/QvtC70L3Ri9C5 INC00LDRgNC80L7QtdC0INC4INGA0LXQsNC70YzQvdC+INC+0L/QsNGB0L3Ri9C1 INGD0YHRgtGA0L7QudGB0YLQstCwINC90LAg0YDRi9C90L7QuiDQvdC1INC/0L7Q v9Cw0LTRg9GCLjxici8+DQrQn9C+0Y3RgtC+0LzRgywg0LXRgdC70Lgg0LzQvdC1 INC60YLQvi3RgtC+INGB0L3QvtCy0LAg0L3QsNGH0L3RkdGCINGA0LDRgdGB0LrQ sNC30YvQstCw0YLRjCDQv9GA0L4g0LjQt9C70YPRh9C10L3QuNGPINC+0YTQuNGB 0L3QvtC5INGC0LXRhdC90LjQutC4LCDQuNC70Lgg0Y8g0YPQt9C90LDRjiDQviDR gtC+0Lwg0YfRgtC+INC60YLQvi3RgtC+INC60L7QvNGDLdGC0L4g0L3QsNGH0LDQ uyDRgNCw0YHRgdC60LDQt9GL0LLQsNGC0Ywg0L/RgNC+INC40LfQu9GD0YfQtdC9 0LjRjyDQvtGE0LjRgdC90L7QuSDRgtC10YXQvdC40LrQuCwg0LjQu9C4INC60YLQ vi3RgtC+INC90LDRh9C90ZHRgiDRgdGC0LDQstC40YLRjCDRg9Cy0LvQsNC20L3Q uNGC0LXQu9C4INCy0L7Qt9C00YPRhdCwINGA0Y/QtNC+0Lwg0YEg0L/RgNC40L3R gtC10YDQvtC8ICjQv9C+0YLQvtC80YMg0YfRgtC+INCy0L7QtNCwINGH0LXQs9C+ LdGC0L4g0YLQsNC8INC00LXQu9Cw0LXRgiDRgSDQtdCz0L4g0LjQt9C70YPRh9C1 0L3QuNC10LwpLCDQvtGB0LXQvdGP0YLRjCBVU0It0YLQtdC70LXRhNC+0L0g0LrR gNGR0YHRgtC90YvQvCDQt9C90LDQvNC10L3QuNC10Lwg0Lgg0LjQt9Cz0L7QvdGP 0YLRjCDQtNC40LDQstC+0LvQsCDQuNC3INCy0LXQvdGC0LjQu9GP0YLQvtGA0LAs INGC0L4g0Y8g0YHQtNC10LvQsNGOINGC0LDQuiwg0YfRgtC+INCy0YHQtSDQvtGB 0YLQsNCy0YjQtdC10YHRjyDQstGA0LXQvNGPINCy0Ysg0LHRg9C00LXRgtC1INGA 0LDQsdC+0YLQsNGC0Ywg0L3QsCDRgdGH0ZHRgtCw0YUuINCSINGB0LvRg9GH0LDQ tSwg0LXRgdC70Lgg0LLRiyDRj9Cy0LvRj9C10YLQtdGB0Ywg0LfQsNGB0LvRg9C2 0LXQvdC90YvQvCDQs9C10YDQvtC10Lwg0LrQvtC80L/QsNC90LjQuCwg0LzQvtC2 0LXRgiDQsdGL0YLRjCDQstCw0Lwg0LHRg9C00LXRgiDQv9GA0LXQtNC+0YHRgtCw 0LLQu9C10L0g0LzQtdGF0LDQvdC40YfQtdGB0LrQuNC5INCw0YDQuNGE0LzQvtC8 0LXRgtGA4oCmINGF0L7RgtGPINC90LXRguKApiDRgtCw0Lwg0LTQstC40LbRg9GJ 0LjQtdGB0Y8g0LzQtdGC0LDQu9C70LjRh9C10YHQutC40LUg0YfQsNGB0YLQuOKA piDQvtC/0Y/RgtGMINC90LDQstC+0LTQutC4LCDQvtC/0Y/RgtGMINC40LfQu9GD 0YfQtdC90LjQteKApiDQsCDQvdCwINGB0YfRkdGC0LDRhSDRgdGD0YXQuNC1INC0 0LXRgNC10LLRj9GI0LrQuCDQv9C+INC80LXRgtCw0LvQu9C40YfQtdGB0LrQuNC8 INC+0YHRj9C84oCmINGH0YLQviDQtNC10LvQsNGC0YwsINC60YPQtNCwINCx0LXQ ttCw0YLRjOKApiA8YnIvPg0KIDxici8+DQrQmtC+0YDQvtGH0LUsINGB0LDQvNGL 0LUg0YPQvNC90YvQtSDQsdGD0LTRg9GCINGA0LDQsdC+0YLQsNGC0Ywg0L3QsCDR gdGH0ZHRgtC90YvRhSDQv9Cw0LvQvtGH0LrQsNGFLCDQsCDQvtGC0YfRkdGC0Ysg 0LTQtdC70LDRgtGMINGD0LPQvtC70YzQutC+0Lwg0L3QsCDQsdC10YDQtdGB0YLQ tSDQtNC+INGC0LXRhSDQv9C+0YAsINC/0L7QutCwINC90LUg0YHQtNCw0LTRg9GC INCV0JPQrSDRhdC+0YLRjyDQsdGLINC90LAgNzUg0LHQsNC70LvQvtCyINC/0L4g 0LzQsNGC0LXQvNCw0YLQuNC60LUsINGE0LjQt9C40LrQtSwg0YXQuNC80LjQuCwg 0LHQuNC+0LvQvtCz0LjQuCwg0YDRg9GB0YHQutC+0LzRgyDRj9C30YvQutGDLCDQ uNC90YTQvtGA0LzQsNGC0LjQutC1INC4INC+0YLQtNC10LvRjNC90L4g4oCUINGN 0LrQt9Cw0LzQtdC9INC/0L4g0J7QkdCWLjxici8+DQogPGJyLz4NCtChINC70Y7Q sdC+0LLRjNGOLCDQstCw0Ygg0LDQtNC80LjQvS4KCgkKCgkKCgkKPC9kaXY+CgoK CgoJCQkNCjx1bCBjbGFzcz0idGFncyIgdGl0bGU9ItCi0LXQs9C4INC6INC30LDQ v9C40YHQuCI+DQoJPGxpID48YSBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L3Rh Zy/QuNC00LjQvtGC0YsvIiByZWw9InRhZyI+0LjQtNC40L7RgtGLPC9hPjwvbGk+ PGxpID4sIDxhIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvdGFnL9C40LfQu9GD 0YfQtdC90LjQtS8iIHJlbD0idGFnIj7QuNC30LvRg9GH0LXQvdC40LU8L2E+PC9s aT48bGkgPiwgPGEgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS90YWcv0LjQt9C7 0YPRh9C10L3QuNC1INC80L7QsdC40LvRjNC90LjQutC+0LIvIiByZWw9InRhZyI+ 0LjQt9C70YPRh9C10L3QuNC1INC80L7QsdC40LvRjNC90LjQutC+0LI8L2E+PC9s aT48bGkgPiwgPGEgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS90YWcv0LLRgNC1 0LQg0LTQu9GPINC30LTQvtGA0L7QstGM0Y8vIiByZWw9InRhZyI+0LLRgNC10LQg 0LTQu9GPINC30LTQvtGA0L7QstGM0Y88L2E+PC9saT4NCjwvdWw+DQoKCQkJDQo8 ZGl2IGNsYXNzPSJlbnRyeS1pbmZvIHZvdGVfaG9sZGVyIiBpZD0iaW5mb3BhbmVs MTIwOTA1Ij4NCg0KCQk8IS0tICDQl9Cw0LrRgNGD0LPQu9GR0L3QvdGL0LUg0YPQ s9C+0LvQutC4IC0tPg0KDQoJCTxkaXYgY2xhc3M9ImNvcm5lciB0bCI+PC9kaXY+ PGRpdiBjbGFzcz0iY29ybmVyIHRyIj48L2Rpdj4NCg0KCQk8ZGl2IGNsYXNzPSJl bnRyeS1pbmZvLXdyYXAiPg0KCQkJDQoJCQkNCgkJCQk8ZGl2IGNsYXNzPSJ2b3Rp bmcgICI+DQoJCQkJCTxkaXYgY2xhc3M9ImNhbi12b3RlIj48YSB0aXRsZT0i0J3R gNCw0LLQuNGC0YHRjyIgaHJlZj0iIyIgY2xhc3M9InZvdGVfcGx1cyIgb25jbGlj az0icmV0dXJuIFZvdGVyLnZvdGUoZXZlbnQsIHRoaXMsICdwb3N0JywgJ3BsdXMn KTsiPjwvYT48L2Rpdj4NCgkJCQkJPGRpdiBjbGFzcz0iY2Fubm90LXZvdGUiPjxz cGFuIHRpdGxlPSLQndGA0LDQstC40YLRgdGPIiBjbGFzcz0idm90ZV9wbHVzIj48 L3NwYW4+PC9kaXY+DQoJCQkJCTxkaXYgY2xhc3M9Im1hcmsiPjxzcGFuIHRpdGxl PSLQktGB0LXQs9C+IDogJnVhcnI7INC4ICZkYXJyOyI+PGEgdGl0bGU9ItCf0L7R gdC80L7RgtGA0LXRgtGMINGA0LXQt9GD0LvRjNGC0LDRgiIgaHJlZj0iIyIgb25j bGljaz0icmV0dXJuIFZvdGVyLnZvdGUoZXZlbnQsIHRoaXMsICdwb3N0JywgJ3Jl c3VsdHMnKTsiPiYjODIxMjs8L2E+PC9zcGFuPjwvZGl2Pg0KCQkJCQk8ZGl2IGNs YXNzPSJjYW4tdm90ZSI+PGEgdGl0bGU9ItCd0LUg0L3RgNCw0LLQuNGC0YHRjyIg aHJlZj0iIyIgY2xhc3M9InZvdGVfbWludXMiIG9uY2xpY2s9InJldHVybiBWb3Rl ci52b3RlKGV2ZW50LCB0aGlzLCAncG9zdCcsICdtaW51cycpOyI+PC9hPjwvZGl2 Pg0KCQkJCQk8ZGl2IGNsYXNzPSJjYW5ub3Qtdm90ZSI+PHNwYW4gY2xhc3M9InZv dGVfbWludXMiPjwvc3Bhbj48L2Rpdj4NCgkJCQk8L2Rpdj4NCgkJCQ0KCQkJPGRp diBjbGFzcz0icHVibGlzaGVkIj48IS0tINCU0LDRgtCwINCyINGE0L7RgNC80LDR gtC1IElTTyDQv9C40YXQsNC10YLRgdGPINCyIHRpdGxlIC0tPg0KCQkJCTxzcGFu PiA4INC40Y7QvdGPIDIwMTEsIDE3OjA1PC9zcGFuPg0KCQkJPC9kaXY+DQoNCgkJ CQ0KCQkJDQoJCQk8ZGl2IGNsYXNzPSJ0by1mYXZzIGpzLXRvX2ZhdnNfaG9sZGVy Ij4NCgkJCQk8YSBjbGFzcz0ianMtdG9fZmF2c19hZGQiIHRpdGxlPSLQlNC+0LHQ sNCy0LjRgtGMINCyINC40LfQsdGA0LDQvdC90L7QtSIgaHJlZj0iIyIgb25jbGlj az0iZmF2c0hhbmRsZXIuZmF2b3JpdGVzU2VuZCh0aGlzLCAncG9zdHMnLCAxMjA5 MDUpOyByZXR1cm4gZmFsc2U7Ij4gPC9hPg0KCQkJPC9kaXY+DQoJCQkNCgkJCTxk aXYgY2xhc3M9ImZhdnNfY291bnQiIHRpdGxlPSLQmtC+0LvQuNGH0LXRgdGC0LLQ viDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSwg0LTQvtCx0LDQstC40LLRiNC4 0YUg0L/QvtGB0YIg0LIg0LjQt9Cx0YDQsNC90L3QvtC1Ij41PC9kaXY+DQoJCQk8 ZGl2IGNsYXNzPSJ0d2l0dGVyIj4NCgkJCQk8YSBocmVmPSJodHRwOi8vdHdpdHRl ci5jb20vaW50ZW50L3R3ZWV0P3RleHQ9aHR0cDovL2hhYnIucnUvcC8xMjA5MDUv K9Ca0LDQvdGG0LXRgNC+0LPQtdC90L3Ri9C1K9C40LfQu9GD0YfQtdC90LjRjy4r 0KHQutCw0L3QtNCw0LvRiywr0LjQvdGC0YDQuNCz0LgsK9GA0LDRgdGB0LvQtdC0 0L7QstCw0L3QuNGPISslMjNoYWJyIiB0aXRsZT0i0J7Qv9GD0LHQu9C40LrQvtCy 0LDRgtGMINGB0YHRi9C70LrRgyDQvdCwINC/0L7RgdGCINCyIFR3aXR0ZXIiIHRh cmdldD0iX2JsYW5rIj48L2E+DQoJCQk8L2Rpdj4NCgkJCTxkaXYgY2xhc3M9ImZh Y2Vib29rIj4NCgkJCQk8YSBocmVmPSJodHRwOi8vd3d3LmZhY2Vib29rLmNvbS9z aGFyZXIucGhwP3U9aHR0cDovL2hhYnJhaGFici5ydS9ibG9ncy9odW1vdXIvMTIw OTA1LyIgdGl0bGU9ItCe0L/Rg9Cx0LvQuNC60L7QstCw0YLRjCDRgdGB0YvQu9C6 0YMg0L3QsCDQv9C+0YHRgiDQsiBGYWNlYm9vayIgb25jbGljaz0id2luZG93Lm9w ZW4odGhpcy5ocmVmLCAn0J7Qv9GD0LHQu9C40LrQvtCy0LDRgtGMINGB0YHRi9C7 0LrRgyDQvdCwINC/0L7RgdGCINCyIEZhY2Vib29rJywgJ3dpZHRoPTgwMCxoZWln aHQ9MzAwJyk7IHJldHVybiBmYWxzZSI+PC9hPg0KCQkJPC9kaXY+DQoJCQkNCg0K CQkJDQoJCQkNCg0KCQkJDQoNCgkJCQ0KCQkJDQoJCQkJPGRpdiBjbGFzcz0idmNh cmQgYXV0aG9yIGZ1bGwiPg0KCQkJCQk8YSB0aXRsZT0i0JDQstGC0L7RgCDRgtC1 0LrRgdGC0LAiIGhyZWY9Imh0dHA6Ly9TdW5jaGVlei5oYWJyYWhhYnIucnUvIiBj bGFzcz0iZm4gbmlja25hbWUgdXJsIj48c3Bhbj5TdW5jaGVlejwvc3Bhbj48L2E+ DQoJCQkJPC9kaXY+DQoJCQkNCgkJCQ0KDQoJCQkNCg0KCQkJDQoNCg0KCQk8L2Rp dj4NCg0KCQk8ZGl2IGNsYXNzPSJjb3JuZXIgYmwiPjwvZGl2PjxkaXYgY2xhc3M9 ImNvcm5lciBiciI+PC9kaXY+DQo8L2Rpdj4NCg0KDQoKCQkJCgkJPC9kaXY+CgkK CgoNCg0KDQoNCgkNCg0KDQoNCgkNCgkJDQoJCQkNCgkJCQkKPGRpdiBpZD0ieHNp ZGViYXItcGxhY2VyIj48L2Rpdj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny aXB0IiBzcmM9Imh0dHA6Ly9oYWJyYWhhYnIucnUvanMvMTMwNzAwOTc4NS90bS9t b290b29scy1kcmFnLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph dmFzY3JpcHQiIHNyYz0iaHR0cDovL2hhYnJhaGFici5ydS9qcy8xMzA3MDA5Nzg1 L3RtL3NpZGViYXIvc2lkZWJhci5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0i dGV4dC9qYXZhc2NyaXB0Ij4KCWNvbW1lbnRGb3JtLnRhcmdldElkID0gJzEyMDkw NSc7Cgljb21tZW50Rm9ybS50YXJnZXRUeXBlID0gJ3Bvc3QnOwo8L3NjcmlwdD4K DQoJCQkNCgkJDQoJCTxkaXYgaWQ9ImNvbW1lbnRzIj4NCgkJCTxoMiBjbGFzcz0i Y29tbWVudHMtaGVhZGVyIj7QutC+0LzQvNC10L3RgtCw0YDQuNC4ICg8c3BhbiBj bGFzcz0ianMtY29tbWVudHMtY291bnQiPjQ8L3NwYW4+KTwvaDI+DQoJCQkNCgkJ CQk8dWwgY2xhc3M9ImhlbnRyeSI+CgkKCQk8bGkgaWQ9ImNvbW1lbnRfMzk2Nzky OSIgY2xhc3M9ImNvbW1lbnRfaG9sZGVyIHZvdGVfaG9sZGVyIj4KCQkJCgkJCQk8 ZGl2IGNsYXNzPSJtc2ctbWV0YSI+CgkJCQkJPGRpdiBjbGFzcz0iZm9sZGluZy1k b3QtaG9sZGVyIj48ZGl2IGNsYXNzPSJmb2xkaW5nLWRvdCI+PC9kaXY+PC9kaXY+ CgkJCQkJPHVsIGNsYXNzPSJtZW51IGluZm8gYXV0aG9yIGhjYXJkIj4KCQkJCQkJ PGxpIGNsYXNzPSJhdmF0YXIiPgoJCQkJCQkJPGEgaHJlZj0iaHR0cDovL0dpQlMw Ti5oYWJyYWhhYnIucnUvIiB0aXRsZT0iR2lCUzBOIj4KCQkJCQkJCQk8aW1nIHNy Yz0iaHR0cDovL2hhYnJhaGFici5ydS9tZWRpYS90aHVtYi81Yi9iNS81MS8yNTEz Ny8yNTEzN18yNHgyNC5wbmciIGFsdD0iR2lCUzBOIiAvPgoJCQkJCQkJCTxiPjwv Yj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9saT4KCQkJCQkJPGxpIGNsYXNzPSJmbiBu aWNrbmFtZSB1c2VybmFtZSI+CgkJCQkJCQk8YSBocmVmPSJodHRwOi8vR2lCUzBO LmhhYnJhaGFici5ydS8iIGNsYXNzPSJ1cmwiPkdpQlMwTjwvYT4sCgkJCQkJCTwv bGk+CgkJCQkJCTxsaSBjbGFzcz0iZGF0ZSI+CgkJCQkJCQk8YWJiciBjbGFzcz0i cHVibGlzaGVkIiB0aXRsZT0iMjAxMS0wNi0wOFQxNzoxNjoyOCswNDowMCI+IDgg 0LjRjtC90Y8gMjAxMSwgMTc6MTY8L2FiYnI+CgkJCQkJCTwvbGk+CgkJCQkJCTxs aSBjbGFzcz0iYm9va21hcmsiPgoJCQkJCQkJPGEgaHJlZj0iI2NvbW1lbnRfMzk2 NzkyOSIgdGl0bGU9ItCh0YHRi9C70LrQsCDQvdCwINC60L7QvNC80LXQvdGC0LDR gNC40LkiIHJlbD0iYm9va21hcmsiPiM8L2E+CgkJCQkJCTwvbGk+CgkJCQkJCQoJ CQkJCQk8bGkgY2xhc3M9InRvLWZhdnMganMtdG9fZmF2c19ob2xkZXIiPgoJCQkJ CQkJPGEgaHJlZj0iIyIgY2xhc3M9ImpzLXRvX2ZhdnNfYWRkIiBvbmNsaWNrPSJm YXZzSGFuZGxlci5mYXZvcml0ZXNTZW5kKHRoaXMsICdjb21tZW50cycsIDM5Njc5 MjkpOyByZXR1cm4gZmFsc2U7IiB0aXRsZT0i0JTQvtCx0LDQstC40YLRjCDQsiDQ uNC30LHRgNCw0L3QvdC+0LUiPjwvYT4KCQkJCQkJPC9saT4KCQkJCQkJCgkJCQkJ CQoJCQkJCQk8bGkgY2xhc3M9ImRvd24tdG8tY2hpbGQgaGlkZGVuIj48YSB0aXRs ZT0i0J7QsdGA0LDRgtC90L4iIG9uY2xpY2s9InJldHVybiBjb21tZW50Rm9ybS5n b1RvQ2hpbGRDb21tZW50KHRoaXMpOyIgaHJlZj0iIyI+JmRhcnI7PC9hPjwvbGk+ CgkJCQkJCTwhLS08bGkgY2xhc3M9InNpbmdsZS10cmVlIj4KCQkJCQkJCTxhIGNs YXNzPSJqcy1zZXJ2IGpzLXNpbmdsZS10cmVlIiBocmVmPScnPtCy0LXRgtC60LA8 L2E+CgkJCQkJCQk8YSBjbGFzcz0ianMtc2VydiBqcy1tdWx0aXBsYXktdHJlZSIg aHJlZj0iI2NvbW1lbnRfMzk2NzkyOSI+0LLQvtGB0YHRgtCw0L3QvtCy0LjRgtGM PC9hPgoJCQkJCQk8L2xpPi0tPgoJCQkJCQkKCQkJCQkJPGxpPgoJCQkJCQkJPHVs IGNsYXNzPSJ2b3RlIHZvdGluZyAiPgoJCQkJCQkJCTxsaSBjbGFzcz0ibWFyayI+ PHNwYW4+MDwvc3Bhbj48L2xpPgoJCQkJCQkJCTxsaSBjbGFzcz0iYnV0dG9ucyI+ CgkJCQkJCQkJCTxhIHJldj0idm90ZXItZm9yLWNvbW1lbnQ6Mzk2NzkyOSIgY2xh c3M9InZvdGVfbWludXMgdm90ZS1mb3ItY29tbWVudCIgdGl0bGU9ItCf0LvQvtGF 0L7QuSDQutC+0LzQvNC10L3RgtCw0YDQuNC5Ij48L2E+CgkJCQkJCQkJCTxhIHJl dj0idm90ZXItZm9yLWNvbW1lbnQ6Mzk2NzkyOSIgY2xhc3M9InZvdGVfcGx1cyB2 b3RlLWZvci1jb21tZW50IiB0aXRsZT0i0KXQvtGA0L7RiNC40Lkg0LrQvtC80LzQ tdC90YLQsNGA0LjQuSI+PC9hPgoJCQkJCQkJCTwvbGk+CgkJCQkJCQk8L3VsPgoJ CQkJCQk8L2xpPgoJCQkJCQkKCQkJCQk8L3VsPgoKCQkJCTwvZGl2PgoKCQkJCTxk aXYgY2xhc3M9ImVudHJ5LWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImVudHJ5 LWNvbnRlbnQtb25seSI+CgkJCQkJICAgINCu0LzQvtGA0L3QviDQuCDQv9GA0LDQ stC40LvRjNC90L4gCgkJCQkJPC9kaXY+CgkJCQkJPHAgY2xhc3M9InJlcGx5Ij48 YSBjbGFzcz0ianMtc2VydiIgaHJlZj0iP3JlcGx5X3RvPTM5Njc5MjkjY29tbWVu dF8zOTY3OTI5IiBvbmNsaWNrPSJjb21tZW50Rm9ybS5tb3ZlRm9ybSgncmVwbHlf Zm9ybV8zOTY3OTI5Jyk7IHJldHVybiBmYWxzZTsiPtC+0YLQstC10YLQuNGC0Yw8 L2E+PC9wPgoJCQkJPC9kaXY+CgoJCQkJPGRpdiBpZD0icmVwbHlfZm9ybV8zOTY3 OTI5IiBjbGFzcz0icmVwbHlfZm9ybSI+CgoJCQkJCQoJCQkJPC9kaXY+CgkJCQoK CQkJCgkJCQoJCQkKCgkJCQoJCQkJPHVsIGNsYXNzPSJoZW50cnkiPgoJCgkJPGxp IGlkPSJjb21tZW50XzM5Njc5OTciIGNsYXNzPSJjb21tZW50X2hvbGRlciB2b3Rl X2hvbGRlciI+CgkJCQoJCQkJPGRpdiBjbGFzcz0ibXNnLW1ldGEiPgoJCQkJCTxk aXYgY2xhc3M9ImZvbGRpbmctZG90LWhvbGRlciI+PGRpdiBjbGFzcz0iZm9sZGlu Zy1kb3QiPjwvZGl2PjwvZGl2PgoJCQkJCTx1bCBjbGFzcz0ibWVudSBpbmZvIGF1 dGhvciBoY2FyZCI+CgkJCQkJCTxsaSBjbGFzcz0iYXZhdGFyIj4KCQkJCQkJCTxh IGhyZWY9Imh0dHA6Ly9qb1l6by5oYWJyYWhhYnIucnUvIiB0aXRsZT0iam9Zem8i PgoJCQkJCQkJCTxpbWcgc3JjPSJodHRwOi8vaGFicmFoYWJyLnJ1L21lZGlhL3Ro dW1iLzU2LzY1LzViLzMxOTI2LzMxOTI2XzI0eDI0LmpwZyIgYWx0PSJqb1l6byIg Lz4KCQkJCQkJCQk8Yj48L2I+CgkJCQkJCQk8L2E+CgkJCQkJCTwvbGk+CgkJCQkJ CTxsaSBjbGFzcz0iZm4gbmlja25hbWUgdXNlcm5hbWUiPgoJCQkJCQkJPGEgaHJl Zj0iaHR0cDovL2pvWXpvLmhhYnJhaGFici5ydS8iIGNsYXNzPSJ1cmwiPmpvWXpv PC9hPiwKCQkJCQkJPC9saT4KCQkJCQkJPGxpIGNsYXNzPSJkYXRlIj4KCQkJCQkJ CTxhYmJyIGNsYXNzPSJwdWJsaXNoZWQiIHRpdGxlPSIyMDExLTA2LTA4VDE3OjMz OjI3KzA0OjAwIj4gOCDQuNGO0L3RjyAyMDExLCAxNzozMzwvYWJicj4KCQkJCQkJ PC9saT4KCQkJCQkJPGxpIGNsYXNzPSJib29rbWFyayI+CgkJCQkJCQk8YSBocmVm PSIjY29tbWVudF8zOTY3OTk3IiB0aXRsZT0i0KHRgdGL0LvQutCwINC90LAg0LrQ vtC80LzQtdC90YLQsNGA0LjQuSIgcmVsPSJib29rbWFyayI+IzwvYT4KCQkJCQkJ PC9saT4KCQkJCQkJCgkJCQkJCTxsaSBjbGFzcz0idG8tZmF2cyBqcy10b19mYXZz X2hvbGRlciI+CgkJCQkJCQk8YSBocmVmPSIjIiBjbGFzcz0ianMtdG9fZmF2c19h ZGQiIG9uY2xpY2s9ImZhdnNIYW5kbGVyLmZhdm9yaXRlc1NlbmQodGhpcywgJ2Nv bW1lbnRzJywgMzk2Nzk5Nyk7IHJldHVybiBmYWxzZTsiIHRpdGxlPSLQlNC+0LHQ sNCy0LjRgtGMINCyINC40LfQsdGA0LDQvdC90L7QtSI+PC9hPgoJCQkJCQk8L2xp PgoJCQkJCQkKCQkJCQkJPGxpIGNsYXNzPSJ1cC10by1wYXJlbnQiPjxhIHRpdGxl PSLQntGC0LLQtdGCINC90LAiIG9uY2xpY2s9InJldHVybiBjb21tZW50Rm9ybS5n b1RvUGFyZW50Q29tbWVudCh0aGlzKTsiIGhyZWY9IiNjb21tZW50XzM5Njc5Mjki PiZ1YXJyOzwvYT48L2xpPgoJCQkJCQk8bGkgY2xhc3M9ImRvd24tdG8tY2hpbGQg aGlkZGVuIj48YSB0aXRsZT0i0J7QsdGA0LDRgtC90L4iIG9uY2xpY2s9InJldHVy biBjb21tZW50Rm9ybS5nb1RvQ2hpbGRDb21tZW50KHRoaXMpOyIgaHJlZj0iIyI+ JmRhcnI7PC9hPjwvbGk+CgkJCQkJCTwhLS08bGkgY2xhc3M9InNpbmdsZS10cmVl Ij4KCQkJCQkJCTxhIGNsYXNzPSJqcy1zZXJ2IGpzLXNpbmdsZS10cmVlIiBocmVm PScjY29tbWVudF8zOTY3OTI5Jz7QstC10YLQutCwPC9hPgoJCQkJCQkJPGEgY2xh c3M9ImpzLXNlcnYganMtbXVsdGlwbGF5LXRyZWUiIGhyZWY9IiNjb21tZW50XzM5 Njc5OTciPtCy0L7RgdGB0YLQsNC90L7QstC40YLRjDwvYT4KCQkJCQkJPC9saT4t LT4KCQkJCQkJCgkJCQkJCTxsaT4KCQkJCQkJCTx1bCBjbGFzcz0idm90ZSB2b3Rp bmcgIj4KCQkJCQkJCQk8bGkgY2xhc3M9Im1hcmsiPjxzcGFuPjA8L3NwYW4+PC9s aT4KCQkJCQkJCQk8bGkgY2xhc3M9ImJ1dHRvbnMiPgoJCQkJCQkJCQk8YSByZXY9 InZvdGVyLWZvci1jb21tZW50OjM5Njc5OTciIGNsYXNzPSJ2b3RlX21pbnVzIHZv dGUtZm9yLWNvbW1lbnQiIHRpdGxlPSLQn9C70L7RhdC+0Lkg0LrQvtC80LzQtdC9 0YLQsNGA0LjQuSI+PC9hPgoJCQkJCQkJCQk8YSByZXY9InZvdGVyLWZvci1jb21t ZW50OjM5Njc5OTciIGNsYXNzPSJ2b3RlX3BsdXMgdm90ZS1mb3ItY29tbWVudCIg dGl0bGU9ItCl0L7RgNC+0YjQuNC5INC60L7QvNC80LXQvdGC0LDRgNC40LkiPjwv YT4KCQkJCQkJCQk8L2xpPgoJCQkJCQkJPC91bD4KCQkJCQkJPC9saT4KCQkJCQkJ CgkJCQkJPC91bD4KCgkJCQk8L2Rpdj4KCgkJCQk8ZGl2IGNsYXNzPSJlbnRyeS1j b250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJlbnRyeS1jb250ZW50LW9ubHkiPgoJ CQkJCSAgICArMTxici8+DQrQrdGC0L4g0L/QuNGB0YzQvNC+INCyINC/0LXRgNCy 0YPRjiDQvtGH0LXRgNC10LTRjCDQsNC00YDQtdGB0L7QstCw0L3QviDQvdC10LTQ sNC70LXQutC40Lwg0LvRjtC00Y/QvCwg0L/QvtGH0YLQuCDQvdC1INGA0LDQt9Cx 0LjRgNCw0Y7RidC10LnRgdGPINCyINC+0YTQuNGB0L3QvtC5INGC0LXRhdC90LjQ utC1LiDQoyDQvNC10L3RjyDQvNCw0LzQsCDQtNC+INGB0LjRhSDQv9C+0YAsINC6 INC/0YDQuNC80LXRgNGDLCDRgdCw0LTRj9GB0Ywg0LfQsCDQvNC+0Lkg0LrQvtC8 0L8g0LTQvtC80LAg0YEg0JbQmi3QvNC+0L3QuNGC0L7RgNC+0LwsINC+0LTQtdCy 0LDQtdGCINGB0L/QtdGG0LjQsNC70YzQvdGL0LUg0LfQsNGJ0LjRgtC90YvQtSDQ vtGH0LrQuDogwqvRh9GC0L4g0LHRiyDQs9C70LDQt9CwINC90LUg0L/QvtGA0YLQ uNC70LjRgdGMwrssINC4INC60LDQuiDQvdC1INGB0YLQsNGA0LDQu9GB0Y8g0LXQ tSDQv9C10YDQtdGD0YfQuNGC0YwsINGC0LDQutC4INC4INGB0LDQtNC40YLRgdGP ID1cCgkJCQkJPC9kaXY+CgkJCQkJPHAgY2xhc3M9InJlcGx5Ij48YSBjbGFzcz0i anMtc2VydiIgaHJlZj0iP3JlcGx5X3RvPTM5Njc5OTcjY29tbWVudF8zOTY3OTk3 IiBvbmNsaWNrPSJjb21tZW50Rm9ybS5tb3ZlRm9ybSgncmVwbHlfZm9ybV8zOTY3 OTk3Jyk7IHJldHVybiBmYWxzZTsiPtC+0YLQstC10YLQuNGC0Yw8L2E+PC9wPgoJ CQkJPC9kaXY+CgoJCQkJPGRpdiBpZD0icmVwbHlfZm9ybV8zOTY3OTk3IiBjbGFz cz0icmVwbHlfZm9ybSI+CgoJCQkJCQoJCQkJPC9kaXY+CgkJCQoKCQkJCgkJCQoJ CQkKCgkJCQoKCQk8L2xpPgoJCjwvdWw+CgoJCQkKCgkJPC9saT4KCQoJCTxsaSBp ZD0iY29tbWVudF8zOTY3OTg4IiBjbGFzcz0iY29tbWVudF9ob2xkZXIgdm90ZV9o b2xkZXIiPgoJCQkKCQkJCTxkaXYgY2xhc3M9Im1zZy1tZXRhIj4KCQkJCQk8ZGl2 IGNsYXNzPSJmb2xkaW5nLWRvdC1ob2xkZXIiPjxkaXYgY2xhc3M9ImZvbGRpbmct ZG90Ij48L2Rpdj48L2Rpdj4KCQkJCQk8dWwgY2xhc3M9Im1lbnUgaW5mbyBhdXRo b3IgaGNhcmQiPgoJCQkJCQk8bGkgY2xhc3M9ImF2YXRhciI+CgkJCQkJCQk8YSBo cmVmPSJodHRwOi8vc2h0MHJtLmhhYnJhaGFici5ydS8iIHRpdGxlPSJzaHQwcm0i PgoJCQkJCQkJCTxpbWcgc3JjPSJodHRwOi8vaGFicmFoYWJyLnJ1L21lZGlhL3Ro dW1iLzVlL2U4Lzg5LzMzODI5LzMzODI5XzI0eDI0LmpwZyIgYWx0PSJzaHQwcm0i IC8+CgkJCQkJCQkJPGI+PC9iPgoJCQkJCQkJPC9hPgoJCQkJCQk8L2xpPgoJCQkJ CQk8bGkgY2xhc3M9ImZuIG5pY2tuYW1lIHVzZXJuYW1lIj4KCQkJCQkJCTxhIGhy ZWY9Imh0dHA6Ly9zaHQwcm0uaGFicmFoYWJyLnJ1LyIgY2xhc3M9InVybCI+c2h0 MHJtPC9hPiwKCQkJCQkJPC9saT4KCQkJCQkJPGxpIGNsYXNzPSJkYXRlIj4KCQkJ CQkJCTxhYmJyIGNsYXNzPSJwdWJsaXNoZWQiIHRpdGxlPSIyMDExLTA2LTA4VDE3 OjMxOjQ2KzA0OjAwIj4gOCDQuNGO0L3RjyAyMDExLCAxNzozMTwvYWJicj4KCQkJ CQkJPC9saT4KCQkJCQkJPGxpIGNsYXNzPSJib29rbWFyayI+CgkJCQkJCQk8YSBo cmVmPSIjY29tbWVudF8zOTY3OTg4IiB0aXRsZT0i0KHRgdGL0LvQutCwINC90LAg 0LrQvtC80LzQtdC90YLQsNGA0LjQuSIgcmVsPSJib29rbWFyayI+IzwvYT4KCQkJ CQkJPC9saT4KCQkJCQkJCgkJCQkJCTxsaSBjbGFzcz0idG8tZmF2cyBqcy10b19m YXZzX2hvbGRlciI+CgkJCQkJCQk8YSBocmVmPSIjIiBjbGFzcz0ianMtdG9fZmF2 c19hZGQiIG9uY2xpY2s9ImZhdnNIYW5kbGVyLmZhdm9yaXRlc1NlbmQodGhpcywg J2NvbW1lbnRzJywgMzk2Nzk4OCk7IHJldHVybiBmYWxzZTsiIHRpdGxlPSLQlNC+ 0LHQsNCy0LjRgtGMINCyINC40LfQsdGA0LDQvdC90L7QtSI+PC9hPgoJCQkJCQk8 L2xpPgoJCQkJCQkKCQkJCQkJCgkJCQkJCTxsaSBjbGFzcz0iZG93bi10by1jaGls ZCBoaWRkZW4iPjxhIHRpdGxlPSLQntCx0YDQsNGC0L3QviIgb25jbGljaz0icmV0 dXJuIGNvbW1lbnRGb3JtLmdvVG9DaGlsZENvbW1lbnQodGhpcyk7IiBocmVmPSIj Ij4mZGFycjs8L2E+PC9saT4KCQkJCQkJPCEtLTxsaSBjbGFzcz0ic2luZ2xlLXRy ZWUiPgoJCQkJCQkJPGEgY2xhc3M9ImpzLXNlcnYganMtc2luZ2xlLXRyZWUiIGhy ZWY9Jyc+0LLQtdGC0LrQsDwvYT4KCQkJCQkJCTxhIGNsYXNzPSJqcy1zZXJ2IGpz LW11bHRpcGxheS10cmVlIiBocmVmPSIjY29tbWVudF8zOTY3OTg4Ij7QstC+0YHR gdGC0LDQvdC+0LLQuNGC0Yw8L2E+CgkJCQkJCTwvbGk+LS0+CgkJCQkJCQoJCQkJ CQk8bGk+CgkJCQkJCQk8dWwgY2xhc3M9InZvdGUgdm90aW5nIHBvc2l0aXZlIj4K CQkJCQkJCQk8bGkgY2xhc3M9Im1hcmsiPjxzcGFuPisxPC9zcGFuPjwvbGk+CgkJ CQkJCQkJPGxpIGNsYXNzPSJidXR0b25zIj4KCQkJCQkJCQkJPGEgcmV2PSJ2b3Rl ci1mb3ItY29tbWVudDozOTY3OTg4IiBjbGFzcz0idm90ZV9taW51cyB2b3RlLWZv ci1jb21tZW50IiB0aXRsZT0i0J/Qu9C+0YXQvtC5INC60L7QvNC80LXQvdGC0LDR gNC40LkiPjwvYT4KCQkJCQkJCQkJPGEgcmV2PSJ2b3Rlci1mb3ItY29tbWVudDoz OTY3OTg4IiBjbGFzcz0idm90ZV9wbHVzIHZvdGUtZm9yLWNvbW1lbnQiIHRpdGxl PSLQpdC+0YDQvtGI0LjQuSDQutC+0LzQvNC10L3RgtCw0YDQuNC5Ij48L2E+CgkJ CQkJCQkJPC9saT4KCQkJCQkJCTwvdWw+CgkJCQkJCTwvbGk+CgkJCQkJCQoJCQkJ CTwvdWw+CgoJCQkJPC9kaXY+CgoJCQkJPGRpdiBjbGFzcz0iZW50cnktY29udGVu dCI+CgkJCQkJPGRpdiBjbGFzcz0iZW50cnktY29udGVudC1vbmx5Ij4KCQkJCQkg ICAg0KHQv9Cw0YHQuNCx0L4uINCg0LDQt9C+0YHQu9Cw0LsuIDopCgkJCQkJPC9k aXY+CgkJCQkJPHAgY2xhc3M9InJlcGx5Ij48YSBjbGFzcz0ianMtc2VydiIgaHJl Zj0iP3JlcGx5X3RvPTM5Njc5ODgjY29tbWVudF8zOTY3OTg4IiBvbmNsaWNrPSJj b21tZW50Rm9ybS5tb3ZlRm9ybSgncmVwbHlfZm9ybV8zOTY3OTg4Jyk7IHJldHVy biBmYWxzZTsiPtC+0YLQstC10YLQuNGC0Yw8L2E+PC9wPgoJCQkJPC9kaXY+CgoJ CQkJPGRpdiBpZD0icmVwbHlfZm9ybV8zOTY3OTg4IiBjbGFzcz0icmVwbHlfZm9y bSI+CgoJCQkJCQoJCQkJPC9kaXY+CgkJCQoKCQkJCgkJCQoJCQkKCgkJCQoKCQk8 L2xpPgoJCgkJPGxpIGlkPSJjb21tZW50XzM5NjgwNjkiIGNsYXNzPSJjb21tZW50 X2hvbGRlciB2b3RlX2hvbGRlciI+CgkJCQoJCQkJPGRpdiBjbGFzcz0ibXNnLW1l dGEiPgoJCQkJCTxkaXYgY2xhc3M9ImZvbGRpbmctZG90LWhvbGRlciI+PGRpdiBj bGFzcz0iZm9sZGluZy1kb3QiPjwvZGl2PjwvZGl2PgoJCQkJCTx1bCBjbGFzcz0i bWVudSBpbmZvIGF1dGhvciBoY2FyZCI+CgkJCQkJCTxsaSBjbGFzcz0iYXZhdGFy Ij4KCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9BbGV4MjE3VmlzaC5oYWJyYWhhYnIu cnUvIiB0aXRsZT0iQWxleDIxN1Zpc2giPgoJCQkJCQkJCTxpbWcgc3JjPSJodHRw Oi8vaGFicmFoYWJyLnJ1L21lZGlhL3RodW1iLzVmL2Y5Lzk2LzM0MzM3LzM0MzM3 XzI0eDI0LmdpZiIgYWx0PSJBbGV4MjE3VmlzaCIgLz4KCQkJCQkJCQk8Yj48L2I+ CgkJCQkJCQk8L2E+CgkJCQkJCTwvbGk+CgkJCQkJCTxsaSBjbGFzcz0iZm4gbmlj a25hbWUgdXNlcm5hbWUiPgoJCQkJCQkJPGEgaHJlZj0iaHR0cDovL0FsZXgyMTdW aXNoLmhhYnJhaGFici5ydS8iIGNsYXNzPSJ1cmwiPkFsZXgyMTdWaXNoPC9hPiwK CQkJCQkJPC9saT4KCQkJCQkJPGxpIGNsYXNzPSJkYXRlIj4KCQkJCQkJCTxhYmJy IGNsYXNzPSJwdWJsaXNoZWQiIHRpdGxlPSIyMDExLTA2LTA4VDE3OjQ3OjQwKzA0 OjAwIj4gOCDQuNGO0L3RjyAyMDExLCAxNzo0NzwvYWJicj4KCQkJCQkJPC9saT4K CQkJCQkJPGxpIGNsYXNzPSJib29rbWFyayI+CgkJCQkJCQk8YSBocmVmPSIjY29t bWVudF8zOTY4MDY5IiB0aXRsZT0i0KHRgdGL0LvQutCwINC90LAg0LrQvtC80LzQ tdC90YLQsNGA0LjQuSIgcmVsPSJib29rbWFyayI+IzwvYT4KCQkJCQkJPC9saT4K CQkJCQkJCgkJCQkJCTxsaSBjbGFzcz0idG8tZmF2cyBqcy10b19mYXZzX2hvbGRl ciI+CgkJCQkJCQk8YSBocmVmPSIjIiBjbGFzcz0ianMtdG9fZmF2c19hZGQiIG9u Y2xpY2s9ImZhdnNIYW5kbGVyLmZhdm9yaXRlc1NlbmQodGhpcywgJ2NvbW1lbnRz JywgMzk2ODA2OSk7IHJldHVybiBmYWxzZTsiIHRpdGxlPSLQlNC+0LHQsNCy0LjR gtGMINCyINC40LfQsdGA0LDQvdC90L7QtSI+PC9hPgoJCQkJCQk8L2xpPgoJCQkJ CQkKCQkJCQkJCgkJCQkJCTxsaSBjbGFzcz0iZG93bi10by1jaGlsZCBoaWRkZW4i PjxhIHRpdGxlPSLQntCx0YDQsNGC0L3QviIgb25jbGljaz0icmV0dXJuIGNvbW1l bnRGb3JtLmdvVG9DaGlsZENvbW1lbnQodGhpcyk7IiBocmVmPSIjIj4mZGFycjs8 L2E+PC9saT4KCQkJCQkJPCEtLTxsaSBjbGFzcz0ic2luZ2xlLXRyZWUiPgoJCQkJ CQkJPGEgY2xhc3M9ImpzLXNlcnYganMtc2luZ2xlLXRyZWUiIGhyZWY9Jyc+0LLQ tdGC0LrQsDwvYT4KCQkJCQkJCTxhIGNsYXNzPSJqcy1zZXJ2IGpzLW11bHRpcGxh eS10cmVlIiBocmVmPSIjY29tbWVudF8zOTY4MDY5Ij7QstC+0YHRgdGC0LDQvdC+ 0LLQuNGC0Yw8L2E+CgkJCQkJCTwvbGk+LS0+CgkJCQkJCQoJCQkJCQk8bGk+CgkJ CQkJCQk8dWwgY2xhc3M9InZvdGUgdm90aW5nICI+CgkJCQkJCQkJPGxpIGNsYXNz PSJtYXJrIj48c3Bhbj4wPC9zcGFuPjwvbGk+CgkJCQkJCQkJPGxpIGNsYXNzPSJi dXR0b25zIj4KCQkJCQkJCQkJPGEgcmV2PSJ2b3Rlci1mb3ItY29tbWVudDozOTY4 MDY5IiBjbGFzcz0idm90ZV9taW51cyB2b3RlLWZvci1jb21tZW50IiB0aXRsZT0i 0J/Qu9C+0YXQvtC5INC60L7QvNC80LXQvdGC0LDRgNC40LkiPjwvYT4KCQkJCQkJ CQkJPGEgcmV2PSJ2b3Rlci1mb3ItY29tbWVudDozOTY4MDY5IiBjbGFzcz0idm90 ZV9wbHVzIHZvdGUtZm9yLWNvbW1lbnQiIHRpdGxlPSLQpdC+0YDQvtGI0LjQuSDQ utC+0LzQvNC10L3RgtCw0YDQuNC5Ij48L2E+CgkJCQkJCQkJPC9saT4KCQkJCQkJ CTwvdWw+CgkJCQkJCTwvbGk+CgkJCQkJCQoJCQkJCTwvdWw+CgoJCQkJPC9kaXY+ CgoJCQkJPGRpdiBjbGFzcz0iZW50cnktY29udGVudCI+CgkJCQkJPGRpdiBjbGFz cz0iZW50cnktY29udGVudC1vbmx5Ij4KCQkJCQkgICAg0JXRidGRINC/0YDQuNC/ 0L7QvNC90LjRgtC1INC40Lwg0YfRgtC+INC/0L7QtCDQm9Ct0J8g0LvRjtC80LjQ vdC40YHRhtC10L3RgtC90YvQtSDQu9Cw0LzQv9GLINC+0YIg0LfQtdC80LvQuCDQ t9Cw0LPQvtGA0LDRjtGC0YHRjwoJCQkJCTwvZGl2PgoJCQkJCTxwIGNsYXNzPSJy ZXBseSI+PGEgY2xhc3M9ImpzLXNlcnYiIGhyZWY9Ij9yZXBseV90bz0zOTY4MDY5 I2NvbW1lbnRfMzk2ODA2OSIgb25jbGljaz0iY29tbWVudEZvcm0ubW92ZUZvcm0o J3JlcGx5X2Zvcm1fMzk2ODA2OScpOyByZXR1cm4gZmFsc2U7Ij7QvtGC0LLQtdGC 0LjRgtGMPC9hPjwvcD4KCQkJCTwvZGl2PgoKCQkJCTxkaXYgaWQ9InJlcGx5X2Zv cm1fMzk2ODA2OSIgY2xhc3M9InJlcGx5X2Zvcm0iPgoKCQkJCQkKCQkJCTwvZGl2 PgoJCQkKCgkJCQoJCQkKCQkJCgoJCQkKCgkJPC9saT4KCQo8L3VsPgoNCgkJCQ0K CQkJDQoNCgkJCQ0KCQkJPGRpdiBjbGFzcz0iYWRkLWNvbW1lbnQiPg0KCQkJCTxo Mz48YSBocmVmPSIjbmV3X2NvbW1lbnQiIG5hbWU9Im5ld19jb21tZW50IiBvbmNs aWNrPSJjb21tZW50Rm9ybS5tb3ZlRm9ybSgncmVwbHlfZm9ybV8wJyk7IHJldHVy biBmYWxzZTsiPtCd0LDQv9C40YHQsNGC0Ywg0LrQvtC80LzQtdC90YLQsNGA0LjQ uTwvYT48L2gzPg0KCQkJCTxkaXYgaWQ9InJlcGx5X2Zvcm1fMCI+DQoJCQkJCTxk aXYgaWQ9ImpzLWZpZWxkLWhvbGRlci13aXRoLWhlbHAiPg0KCQkJCQkJPGRsIGNs YXNzPSJjb21tZW50LWhlbHAiID4NCgkJCQkJCQk8IS0tPGR0Pg0KCQkJCQkJCQk8 YSB0aXRsZT0iZ3Jjb29sIiBocmVmPSJodHRwOi8vZ3Jjb29sLmhhYnJhaGFici5y dS8iPg0KCQkJCQkJCQkJPGltZyBzcmM9Imh0dHA6Ly9oYWJyYWhhYnIucnUvbWVk aWEvdGh1bWIvZTgvOGYvZjUvMzgxMjEvMzgxMjFfMjR4MjQuanBnIiBhbHQ9Imdy Y29vbCIgY2xhc3M9InBob3RvIiBoZWlnaHQ9IjI0IiB3aWR0aD0iMjQiIC8+DQoJ CQkJCQkJCTwvYT4NCgkJCQkJCQk8L2R0Pi0tPg0KCQkJCQkJCTxkZD4NCgkJCQkJ CQkJPCEtLdCy0Ysg4oCUDQoJCQkJCQkJCTxhIGNsYXNzPSJuYW1lIiB0aXRsZT0i Z3Jjb29sIiBocmVmPSJodHRwOi8vZ3Jjb29sLmhhYnJhaGFici5ydS8iPmdyY29v bDwvYT4tLT4NCgkJCQkJCQkJPHNwYW4+DQoJCQkJCQkJCQnQnNC+0LbQvdC+INC4 0YHQv9C+0LvRjNC30L7QstCw0YLRjCA8YSBjbGFzcz0ianMtc2VydiIgb25jbGlj az0iJCgnaHRtbF90YWdzX2hlbHAnKS50b2dnbGVDbGFzcygnaGlkZGVuJyk7cmV0 dXJuIGZhbHNlOyIgaHJlZj0iIyI+aHRtbC3RgtC10LPQuDwvYT4NCgkJCQkJCQkJ PC9zcGFuPg0KCQkJCQkJCTwvZGQ+DQoJCQkJCQk8L2RsPg0KCQkJCQkJCQk8ZGl2 IGNsYXNzPSJoZWxwX2hvbGRlciI+CgkJCTxkaXYgaWQ9Imh0bWxfdGFnc19oZWxw IiBjbGFzcz0icm91bmQgdGVybXMgYmxvY2sgaGlkZGVuIj4KCQkJCTxkaXYgY2xh c3M9ImNvbnRlbnQiPgoJCQkJCTxhIGhyZWY9IiMiIGlkPSJodG1sX3RhZ3NfaGVs cF9jbG9zZSIgY2xhc3M9InN5c3RlbSIgb25jbGljaz0iJCgnaHRtbF90YWdzX2hl bHAnKS50b2dnbGVDbGFzcygnaGlkZGVuJyk7cmV0dXJuIGZhbHNlOyI+0LfQsNC6 0YDRi9GC0Yw8L2E+CgoJCQkJCTxoNT7QotC10LPQuCDQpdCw0LHRgNCw0YXQsNCx 0YDQsDwvaDU+CgkJCQkJPGRsIGNsYXNzPSJibG9ja19zZW1pIj4KCQkJCQkJPGR0 PiZsdDtzb3VyY2UgbGFuZz0i0Y/Qt9GL0LoiJmd0OyZsdDsvc291cmNlJmd0Ozwv ZHQ+CgkJCQkJCTxkZCBjbGFzcz0iZGVzY3JpcHRpb24iPtCf0L7QtNGB0LLQtdGH 0LjQstCw0LXRgiDQutC+0LQg0L/RgNC+0LPRgNCw0LzQvNGLICjQv9C+0LTQtNC1 0YDQttC40LLQsNC10YLRgdGPIGJhc2gsIGNwcCwgY3MsIHhtbCwgaHRtbCwgamF2 YSwgamF2YXNjcmlwdCwgbGlzcCwgbHVhLCBwaHAsIHBlcmwsIHB5dGhvbiwgcnVi eSwgc3FsLCBzY2FsYSwgdGV4KTwvZGQ+CgkJCQkJPC9kbD4KCQkJCQk8ZGwgY2xh c3M9ImJsb2NrX3NlbWkiPgoJCQkJCQk8ZHQ+Jmx0O3ZpZGVvJmd0OyZsdDsvdmlk ZW8mZ3Q7PC9kdD4KCgkJCQkJCTxkZCBjbGFzcz0iZGVzY3JpcHRpb24iPtCS0YHR gtCw0LLQu9GP0LXRgiDQsiDQv9C+0YHRgiDQstC40LTQtdC+LCDQtNC+0L/Rg9GB 0YLQuNC80YvQtSDRhdC+0YHRgtC40L3Qs9C4OiBZb3VUdWJlLCBSdVR1YmUsIEdv b2dsZSB2aWRlbywgVmltZW8g0Lgg0K8u0JLQuNC00LXQvjwvZGQ+CgkJCQkJPC9k bD4KCQkJCQk8ZGwgY2xhc3M9ImJsb2NrX3NlbWkiPgoJCQkJCQk8ZHQ+Jmx0O2ho IHVzZXI9JnF1b3Q7Li4uJnF1b3Q7IC8mZ3Q7PC9kdD4KCgkJCQkJCTxkZCBjbGFz cz0iZGVzY3JpcHRpb24iPtCS0YvQstC+0LTQuNGCINC40LzRjyDRjtC30LXRgNCw INC/0L7RgdGA0LXQtNC4INGC0LXQutGB0YLQsCwg0L7QsdGA0LDRgtC90YvQuSDR gdC70LXRiCAoLykg0LIg0LrQvtC90YbQtSDRgtC10LPQsCDQvtCx0Y/Qt9Cw0YLQ tdC70LXQvTwvZGQ+CgkJCQkJPC9kbD4KCgkJCQkJPGg1PtCh0YLQsNC90LTQsNGA 0YLQvdGL0LU8L2g1PgoJCQkJCTx0YWJsZSBjbGFzcz0id2lkZSI+CgkJCQkJCTx0 cj4KCQkJCQkJCTx0ZD4KCQkJCQkJCQk8ZGwgY2xhc3M9ImJsb2NrX3NlbWkiPgoJ CQkJCQkJCQk8ZHQ+Jmx0O2g0Jmd0OyZsdDsvaDQmZ3Q7PGJyLz4KCgkJCQkJCQkJ CQkmbHQ7aDUmZ3Q7Jmx0Oy9oNSZndDs8YnIvPgoJCQkJCQkJCQkJJmx0O2g2Jmd0 OyZsdDsvaDYmZ3Q7CgkJCQkJCQkJCTwvZHQ+CgkJCQkJCQkJCTxkZCBjbGFzcz0i ZGVzY3JpcHRpb24iPtCX0LDQs9C+0LvQvtCy0LrQuCDRgNCw0LfQvdC+0LPQviDR g9GA0L7QstC90Y88L2RkPgoJCQkJCQkJCTwvZGw+CgkJCQkJCQkJPGRsIGNsYXNz PSJibG9ja19zZW1pIj4KCgkJCQkJCQkJCTxkdD4mbHQ7aW1nIHNyYz0mcXVvdDsm cXVvdDsgLyZndDs8L2R0PgoJCQkJCQkJCQk8ZGQgY2xhc3M9ImRlc2NyaXB0aW9u Ij7QmNC30L7QsdGA0LDQttC10L3QuNC1LCDQsiDQsNGC0YDQuNCx0YPRgtC1IHNy YyDRg9C60LDQt9GL0LLQsNC50YLQtSDQv9C+0LvQvdGL0Lkg0L/Rg9GC0Ywg0Log 0LjQt9C+0LHRgNCw0LbQtdC90LjRjjwvZGQ+CgkJCQkJCQkJPC9kbD4KCQkJCQkJ CQk8ZGwgY2xhc3M9ImJsb2NrX3NlbWkiPgoJCQkJCQkJCQk8ZHQ+Jmx0O2EgaHJl Zj0mcXVvdDsmcXVvdDsgJmd0OyZsdDsvYSZndDs8L2R0PgoKCQkJCQkJCQkJPGRk IGNsYXNzPSJkZXNjcmlwdGlvbiI+0KHRgdGL0LvQutCwLCDQsiDQsNGC0YDQuNCx 0YPRgtC1IGhyZWYg0YPQutCw0LbQuNGC0LUg0LbQtdC70LDQtdC80YvQuSDQuNC9 0YLQtdGA0L3QtdGCLdCw0LTRgNC10YE8L2RkPgoJCQkJCQkJCTwvZGw+CgkJCQkJ CQkJPGRsIGNsYXNzPSJibG9ja19zZW1pIj4KCQkJCQkJCQkJPGR0PiZsdDtzdHJv bmcmZ3Q7Jmx0Oy9zdHJvbmcmZ3Q7PC9kdD4KCQkJCQkJCQkJPGRkIGNsYXNzPSJk ZXNjcmlwdGlvbiI+0JLRi9C00LXQu9C10L3QuNC1INCy0LDQttC90L7Qs9C+INGC 0LXQutGB0YLQsCwg0L3QsCDRgdGC0YDQsNC90LjRhtC1INCy0YvQtNC10LvRj9C1 0YLRgdGPIDxzdHJvbmc+0LbQuNGA0L3Ri9C8PC9zdHJvbmc+INC90LDRh9C10YDR gtCw0L3QuNC10Lw8L2RkPgoJCQkJCQkJCTwvZGw+CgkJCQkJCQkJPGRsIGNsYXNz PSJibG9ja19zZW1pIj4KCgkJCQkJCQkJCTxkdD4mbHQ7ZW0mZ3Q7Jmx0Oy9lbSZn dDs8L2R0PgoJCQkJCQkJCQk8ZGQgY2xhc3M9ImRlc2NyaXB0aW9uIj7QktGL0LTQ tdC70LXQvdC40LUg0LLQsNC20L3QvtCz0L4g0YLQtdC60YHRgtCwLCDQvdCwINGB 0YLRgNCw0L3QuNGG0LUg0LLRi9C00LXQu9GP0LXRgtGB0Y8gPGVtPtC60YPRgNGB 0LjQstC+0Lw8L2VtPjwvZGQ+CgkJCQkJCQkJPC9kbD4KCQkJCQkJCQk8ZGwgY2xh c3M9ImJsb2NrX3NlbWkiPgoJCQkJCQkJCQk8ZHQ+CgkJCQkJCQkJCQkmbHQ7cyZn dDsmbHQ7L3MmZ3Q7PGJyLz4KCgkJCQkJCQkJCQkmbHQ7c3RyaWtlJmd0OyZsdDsv c3RyaWtlJmd0OwoJCQkJCQkJCQk8L2R0PgoJCQkJCQkJCQk8ZGQgY2xhc3M9ImRl c2NyaXB0aW9uIj7QktGL0LTQtdC70LXQvdC90YvQuSDRgtC10LPQvtC8ICZsdDtz Jmd0OyDQuNC70Lgg0YLQtdCz0L7QvCAmbHQ7c3RyaWtlJmd0OyDRgtC10LrRgdGC INC+0YLQvtCx0YDQsNC20LDQtdGC0YHRjywg0LrQsNC6IDxzPtC30LDRh9C10YDQ utC90YPRgtGL0Lk8L3M+PC9kZD4KCQkJCQkJCQk8L2RsPgoKCQkJCQkJCQk8ZGwg Y2xhc3M9ImJsb2NrX3NlbWkiPgoJCQkJCQkJCQk8ZHQ+CgkJCQkJCQkJCQkmbHQ7 dSZndDsmbHQ7L3UmZ3Q7CgkJCQkJCQkJCTwvZHQ+CgkJCQkJCQkJCTxkZCBjbGFz cz0iZGVzY3JpcHRpb24iPtCS0YvQtNC10LvQtdC90L3Ri9C5INGC0LXQs9C+0Lwg Jmx0O3UmZ3Q7INGC0LXQutGB0YIg0L7RgtC+0LHRgNCw0LbQsNC10YLRgdGPLCDQ utCw0LogPHU+0L/QvtC00YfQtdGA0LrQvdGD0YLRi9C5PC91PjwvZGQ+CgkJCQkJ CQkJPC9kbD4KCgkJCQkJCQkJPGRsIGNsYXNzPSJibG9ja19zZW1pIj4KCQkJCQkJ CQkJPGR0PgoJCQkJCQkJCQkJJmx0O3VsJmd0OyZsdDsvdWwmZ3Q7PGJyLz4KCQkJ CQkJCQkJCSZsdDtsaSZndDsmbHQ7L2xpJmd0OwoJCQkJCQkJCQk8L2R0PgoJCQkJ CQkJCQk8ZGQgY2xhc3M9ImRlc2NyaXB0aW9uIj7QndC10L3Rg9C80LXRgNC+0LLQ sNC90L3Ri9C5INGB0L/QuNGB0L7Qujsg0LrQsNC20LTRi9C5INGN0LvQtdC80LXQ vdGCINGB0L/QuNGB0LrQsCDQt9Cw0LTQsNC10YLRgdGPINGC0LXQs9C+0LwgJmx0 O2xpJmd0Oywg0L3QsNCx0L7RgCDRjdC70LXQvNC10L3RgtC+0LIg0YHQv9C40YHQ utCwINC/0L7QvNC10YnQsNC50YLQtSDQsiDRgtC10LMgJmx0O3VsJmd0OzwvZGQ+ CgoJCQkJCQkJCTwvZGw+CgkJCQkJCQkJPGRsIGNsYXNzPSJibG9ja19zZW1pIj4K CQkJCQkJCQkJPGR0PgoJCQkJCQkJCQkJJmx0O29sJmd0OyZsdDsvb2wmZ3Q7PGJy Lz4KCQkJCQkJCQkJCSZsdDtsaSZndDsmbHQ7L2xpJmd0OwoJCQkJCQkJCQk8L2R0 PgoJCQkJCQkJCQk8ZGQgY2xhc3M9ImRlc2NyaXB0aW9uIj7QndGD0LzQtdGA0L7Q stCw0L3QvdGL0Lkg0YHQv9C40YHQvtC6OyDQutCw0LbQtNGL0Lkg0Y3Qu9C10LzQ tdC90YIg0YHQv9C40YHQutCwINC30LDQtNCw0LXRgtGB0Y8g0YLQtdCz0L7QvCAm bHQ7bGkmZ3Q7LCDQvdCw0LHQvtGAINGN0LvQtdC80LXQvdGC0L7QsiDRgdC/0LjR gdC60LAg0L/QvtC80LXRidCw0LnRgtC1INCyINGC0LXQsyAmbHQ7b2wmZ3Q7PC9k ZD4KCgkJCQkJCQkJPC9kbD4KCQkJCQkJCTwvdGQ+CgoJCQkJCQkJPHRkPgoJCQkJ CQkJCTxkbCBjbGFzcz0iYmxvY2tfc2VtaSI+CgkJCQkJCQkJCTxkdD4KCQkJCQkJ CQkJCSZsdDtociAvJmd0Ozxici8+CgkJCQkJCQkJCQkmbHQ7YmxvY2txdW90ZSZn dDsmbHQ7L2Jsb2NrcXVvdGUmZ3Q7CgkJCQkJCQkJCTwvZHQ+CgkJCQkJCQkJCTxk ZCBjbGFzcz0iZGVzY3JpcHRpb24iPtCi0LXQsyAmbHQ7aHIgLyZndDsg0LLRi9Cy 0L7QtNC40YIg0LPQvtGA0LjQt9C+0L3RgtCw0LvRjNC90YPRjiDQu9C40L3QuNGO OyDQtNC70Y8g0LLRi9C00LXQu9C10L3QuNGPINGG0LjRgtCw0YIg0LjRgdC/0L7Q u9GM0LfRg9C50YLQtSDRgtC10LMgJmx0O2Jsb2NrcXVvdGUmZ3Q7OyDRgtC10LMg Jmx0O3AmZ3Q7INC/0L7Qt9Cy0L7Qu9GP0LXRgiDQvtGC0LTQtdC70Y/RgtGMINC0 0YDRg9CzINC+0YIg0LTRgNGD0LPQsCDRhNGA0LDQs9C80LXQvdGC0Ysg0YLQtdC6 0YHRgtCwICjQv9Cw0YDQsNCz0YDQsNGE0YspPC9kZD4KCgkJCQkJCQkJPC9kbD4K CgkJCQkJCQkJPGRsIGNsYXNzPSJibG9ja19zZW1pIj4KCQkJCQkJCQkJPGR0PgoJ CQkJCQkJCQkJJmx0O3N1cCZndDsmbHQ7L3N1cCZndDs8YnIvPgoJCQkJCQkJCQkJ Jmx0O3N1YiZndDsmbHQ7L3N1YiZndDsKCQkJCQkJCQkJPC9kdD4KCQkJCQkJCQkJ PGRkIGNsYXNzPSJkZXNjcmlwdGlvbiI+0KLQtdC60YHRgiwg0LfQsNC60LvRjtGH 0LXQvdC90YvQuSDQsiDRgtC10LMgJmx0O3N1cCZndDsg0L7RgtC+0LHRgNCw0LbQ sNC10YLRgdGPINCyINCy0LjQtNC1INCy0LXRgNGF0L3QtdCz0L4g0LjQvdC00LXQ utGB0LAsICZsdDtzdWImZ3Q7IC0g0L3QuNC20L3QtdCz0L4g0LjQvdC00LXQutGB 0LA8L2RkPgoKCQkJCQkJCQk8L2RsPgoJCQkJCQkJCTxkbCBjbGFzcz0iYmxvY2tf c2VtaSI+CgkJCQkJCQkJCTxkdD4KCQkJCQkJCQkJCSZsdDthYmJyIHRpdGxlPSZx dW90OyZxdW90OyAmZ3Q7Jmx0Oy9hYmJyJmd0Ozxici8+CgkJCQkJCQkJCQkmbHQ7 YWNyb255bSB0aXRsZT0mcXVvdDsmcXVvdDsgJmd0OyZsdDsvYWNyb255bSZndDsK CQkJCQkJCQkJPC9kdD4KCgkJCQkJCQkJCTxkZCBjbGFzcz0iZGVzY3JpcHRpb24i PtCi0LXQs9C+0LwgJmx0O2FiYnImZ3Q7INCy0YvQtNC10LvRj9C10YLRgdGPINCw 0LHQsdGA0LXQstC40LDRgtGD0YDQsCwg0LIg0LDRgtGA0LjQsdGD0YLQtSB0aXRs ZSDRg9C60LDQt9GL0LLQsNC50YLQtSDQtdGRINGA0LDRgdGI0LjRhNGA0L7QstC6 0YM7INC40YHQv9C+0LvRjNC30YPQudGC0LUg0YLQtdCzICZsdDthY3JvbnltJmd0 OyDQtNC70Y8g0YPRgdGC0L7Rj9Cy0YjQuNGF0YHRjyDQsNCx0LHRgNC10LLQuNCw 0YLRg9GAPC9kZD4KCQkJCQkJCQk8L2RsPgoJCQkJCQkJCTxkbCBjbGFzcz0iYmxv Y2tfc2VtaSI+CgkJCQkJCQkJCTxkdD4KCQkJCQkJCQkJCSZsdDtwcmUmZ3Q7Jmx0 Oy9wcmUmZ3Q7CgoJCQkJCQkJCQk8L2R0PgoJCQkJCQkJCQk8ZGQgY2xhc3M9ImRl c2NyaXB0aW9uIj7QotC10LrRgdGCLCDQv9C+0LzQtdGJ0LXQvdC90YvQuSDQsiDR gtC10LMgJmx0O3ByZSZndDssINC90LUg0YTQvtGA0LzQsNGC0LjRgNGD0LXRgtGB 0Y8g0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60Lg8L2RkPgoJCQkJCQkJCTwvZGw+ CgkJCQkJCQkJPGRsIGNsYXNzPSJibG9ja19zZW1pIj4KCQkJCQkJCQkJPGR0PgoJ CQkJCQkJCQkJJmx0O25vYnImZ3Q7Jmx0Oy9ub2JyJmd0Ozxici8+CgoJCQkJCQkJ CQkJJmx0O2JyIC8mZ3Q7CgkJCQkJCQkJCTwvZHQ+CgkJCQkJCQkJCTxkZCBjbGFz cz0iZGVzY3JpcHRpb24iPtCi0LXQutGB0YIsINC/0L7QvNC10YnQtdC90L3Ri9C5 INCyINGC0LXQsyAmbHQ7bm9iciZndDssINC90LUg0L/QtdGA0LXQvdC+0YHQuNGC 0YHRjyDQvdCwINGB0YLRgNCw0L3QuNGG0LU7INC00LvRjyDQv9GA0LjQvdGD0LTQ uNGC0LXQu9GM0L3QvtCz0L4g0L/QtdGA0LXQvdC+0YHQsCDRgtC10LrRgdGC0LAg 0LjRgdC/0L7Qu9GM0LfRg9C50YLQtSDRgtC10LMgJmx0O2JyIC8mZ3Q7PC9kZD4K CQkJCQkJCQk8L2RsPgoJCQkJCQkJPC90ZD4KCQkJCQkJPC90cj4KCgkJCQkJPC90 YWJsZT4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KDQoJCQkJCQk8ZGl2 IGNsYXNzPSJqcy1maWVsZC1ob2xkZXIiIGlkPSJqcy1maWVsZC1ob2xkZXIiPgoJ PHAgY2xhc3M9ImpzLWZpZWxkLWVycm9yLW1zZyI+PC9wPgoJPGRpdiBjbGFzcz0i ZW50cnktY29udGVudCBjb21tZW50LXByZXZpZXcgaGlkZGVuIj48L2Rpdj4KCTxm b3JtIGFjdGlvbj0iI2FkZF9jb21tZW50IiBtZXRob2Q9InBvc3QiIG5hbWU9ImNv bW1lbnRfZm9ybSIgaWQ9ImNvbW1lbnRfZm9ybSI+CgkJPGZpZWxkc2V0PgoJCSAg CgkJCTxhIGlkPSJjb21tZW50X3R5cGUiIHRpdGxlPSJjb21tZW50Ij48L2E+CgkJ CTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbW1lbnRbdGFyZ2V0X3R5cGVd IiB2YWx1ZT0icG9zdCIgY2xhc3M9ImpzLWZpZWxkLWRhdGEiIC8+CgkJCTxpbnB1 dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbW1lbnRbcGFyZW50X2lkXSIgdmFsdWU9 IjAiIGNsYXNzPSJqcy1maWVsZC1kYXRhIiAvPgoJCQk8aW5wdXQgdHlwZT0iaGlk ZGVuIiBuYW1lPSJ0aW1lZmllbGQiIHZhbHVlPSIxMzA3NTQxNjk5IiBjbGFzcz0i anMtZmllbGQtZGF0YSIgLz4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0i Y29tbWVudFt0YXJnZXRfaWRdIiB2YWx1ZT0iMTIwOTA1IiBjbGFzcz0ianMtZmll bGQtZGF0YSIgLz4KCQkJPGRpdiBjbGFzcz0iZWRpdG9yIj4KICAJCQk8ZGl2IGNs YXNzPSJwYW5lbCI+ICAJCQkKICAJCQkJCgkJCQk8YSBzdHlsZT0ibWFyZ2luLWxl ZnQ6IDEwcHg7IiB0aXRsZT0i0JbQuNGA0L3Ri9C5IiBvbmNsaWNrPSJyZXR1cm4g aGFicmFXWUcuaW5zZXJ0VGFnV2l0aFRleHQodGhpcywgJ2InKTsiIGhyZWY9IiMi IHRhYmluZGV4PSItMSI+PGltZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGFsdD0i 0JYiIHNyYz0iL2kvcGFuZWwvYm9sZF9ydS5naWYiLz48L2E+CgoJCQkJPGEgdGl0 bGU9ItCa0YPRgNGB0LjQsiIgb25jbGljaz0icmV0dXJuIGhhYnJhV1lHLmluc2Vy dFRhZ1dpdGhUZXh0KHRoaXMsICdpJyk7IiBocmVmPSIjIiB0YWJpbmRleD0iLTEi PjxpbWcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBhbHQ9ItCaIiBzcmM9Ii9pL3Bh bmVsL2l0YWxpY19ydS5naWYiLz48L2E+CgoJCQkJPGEgdGl0bGU9ItCf0L7QtNGH 0ZHRgNC60L3Rg9GC0YvQuSIgb25jbGljaz0icmV0dXJuIGhhYnJhV1lHLmluc2Vy dFRhZ1dpdGhUZXh0KHRoaXMsICd1Jyk7IiBocmVmPSIjIiB0YWJpbmRleD0iLTEi PjxpbWcgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBhbHQ9Il9fIiBzcmM9Ii9pL3Bh bmVsL3VuZGVybGluZV9ydS5naWYiLz48L2E+CgoJCQkJPGEgdGl0bGU9ItCX0LDR h9GR0YDQutC90YPRgtGL0LkiIG9uY2xpY2s9InJldHVybiBoYWJyYVdZRy5pbnNl cnRUYWdXaXRoVGV4dCh0aGlzLCAncycpOyIgaHJlZj0iIyIgdGFiaW5kZXg9Ii0x Ij48aW1nIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSLigJQiIHNyYz0iL2kv cGFuZWwvc3RyaWtldGhyb3VnaC5naWYiLz48L2E+CgoJCQkJPGEgc3R5bGU9Im1h cmdpbjogYXV0byAxMHB4OyIgdGl0bGU9ItCa0L7QtCIgb25jbGljaz0icmV0dXJu IGhhYnJhV1lHLmluc2VydFRhZ1dpdGhUZXh0KHRoaXMsICdjb2RlJyk7IiBocmVm PSIjIiB0YWJpbmRleD0iLTEiIGNsYXNzPSJ0eHQiPjxpbWcgd2lkdGg9IjMwIiBo ZWlnaHQ9IjIwIiBhbHQ9ItCa0L7QtCIgc3JjPSIvaS9wYW5lbC9jb2RlLmdpZiIv PjwvYT4KCgkJCQk8YSB0aXRsZT0i0JLRgdGC0LDQstC40YLRjCDRgdGB0YvQu9C6 0YMiIG9uY2xpY2s9InJldHVybiBoYWJyYVdZRy5pbnNlcnRMaW5rKHRoaXMpOyIg aHJlZj0iIyIgdGFiaW5kZXg9Ii0xIj48aW1nIHdpZHRoPSIyMCIgaGVpZ2h0PSIy MCIgYWx0PSJBIiBzcmM9Ii9pL3BhbmVsL2xpbmsuZ2lmIi8+PC9hPgoKCQkJCTxh IHRpdGxlPSLQktGB0YLQsNCy0LjRgtGMINC40LfQvtCx0YDQsNC20LXQvdC40LUi IG9uY2xpY2s9InJldHVybiBoYWJyYVdZRy5pbnNlcnRJbWFnZSh0aGlzKTsiIGhy ZWY9IiMiIHRhYmluZGV4PSItMSI+PGltZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAi IGFsdD0iSU1HIiBzcmM9Ii9pL3BhbmVsL2ltYWdlLmdpZiIvPjwvYT4KCgogIAkJ CTwvZGl2PgogIAkJCTxkaXYgY2xhc3M9InRleHQtaG9sZGVyIj4KICAgIAkJCTx0 ZXh0YXJlYSBjb2xzPSI1MCIgcm93cz0iMTAiIG5hbWU9ImNvbW1lbnRbbWVzc2Fn ZV0iIGlkPSJqcy1maWVsZC1jb21tZW50IiBjbGFzcz0ianMtZmllbGQtZGF0YSBq cy1yZXF1aXJlZCIKICAgIAkJCW9ua2V5ZG93bj0icmV0dXJuIGhhYnJhV1lHLmlu c2VydFRhYihldmVudCwgdGhpcyk7IgogICAgCQkJb25rZXl1cD0icmV0dXJuIGhh YnJhV1lHLmluc2VydFRhYihldmVudCwgdGhpcyk7IgogICAgCQkJPjwvdGV4dGFy ZWE+ICAgICAgCQkJCiAgCQkJPC9kaXY+CgkJCTwvZGl2PgoJCQk8aW5wdXQgY2xh c3M9InByZXZpZXciIHR5cGU9ImJ1dHRvbiIgdmFsdWU9ItC/0YDQtdC00L/RgNC+ 0YHQvNC+0YLRgCIvPgoJCQk8aW5wdXQgY2xhc3M9InBvc3QiIHR5cGU9InN1Ym1p dCIgdmFsdWU9ItC90LDQv9C40YHQsNGC0YwiIG5hbWU9IndyaXRlX2NvbW1lbnQi Lz4KCQk8L2ZpZWxkc2V0PgoJPC9mb3JtPgo8L2Rpdj4NCgkJCQkJPC9kaXY+DQoJ CQkJPC9kaXY+DQoJCQk8L2Rpdj4NCgkJCQ0KDQoJCQkNCgkJPC9kaXY+DQoJDQoJ DQoKCg0KCQoNCgkKDQoJDQoJDQoJDQoNCgk8L2Rpdj4NCg0KCTxkaXYgaWQ9InNp ZGViYXIiPg0KCSAgDQoJCjxkaXYgY2xhc3M9ImxpdmUgYmxvZ2luZm8iPgoKCTxk aXYgY2xhc3M9ImJnLWJvdHQtciI+PCEtLSBmb3IgYm90dG9tIHJvdW5kZWQgY29y bmVycyAtLT4KCTxkaXYgY2xhc3M9ImJnLWJvdHQtbCI+CgoJPGgzPtCY0L3RhNC+ 0YDQvNCw0YbQuNGPINC+INCx0LvQvtCz0LU8L2gzPgoKCTxkaXYgY2xhc3M9ImJs b2ctYWJvdXQtdGV4dC1jb250ZW50Ij4KCSAKCQk8ZGl2IGNsYXNzPSJzdGF0cyI+ CiAgICAgIDxkaXYgY2xhc3M9Im1lbWJlcnNfY291bnQiIGlkPSJtZW1iZXJzX2Nv dW50Ij4xNTA3MCDRh9C40YLQsNGC0LXQu9C10Lk8L2Rpdj4KICAgICAgPGRpdiBj bGFzcz0icG9zdHNfY291bnQiPjE1NjUg0L/QvtGB0YLQvtCyPC9kaXY+ICAgIAog ICAgPC9kaXY+CiAgICAgCgkgIDxkaXYgY2xhc3M9ImpvaW4iPgkgICAKICAJCQog IAkJCiAgCQkgIDxhIGlkPSJqcy1hZGRCbG9nTWVtYmVyIiB0aXRsZT0i0L/RgNC4 0YHQvtC10LTQuNC90LjRgtGM0YHRjyDQuiDQsdC70L7Qs9GDIiBjbGFzcz0ianMt YWRkQmxvZ01lbWJlciBoaWRkZW4iIG9uY2xpY2s9ImJsb2dzSGFuZGxlci5qb2lu TGVhdmVCbG9nKCdqb2luJywgMTc2KTsgcmV0dXJuIGZhbHNlOyIgaHJlZj0iIyI+ 0J/RgNC40YHQvtC10LTQuNC90LjRgtGM0YHRjzwvYT4KICAJCSAgPGEgaWQ9Impz LXJlbW92ZUJsb2dNZW1iZXIiIHRpdGxlPSLQv9C+0LrQuNC90YPRgtGMINCx0LvQ vtCzIiBjbGFzcz0ianMtcmVtb3ZlQmxvZ01lbWJlciAiIG9uY2xpY2s9IiBibG9n c0hhbmRsZXIuam9pbkxlYXZlQmxvZygnbGVhdmUnLCAxNzYpOyByZXR1cm4gZmFs c2U7IiBocmVmPSIjIj7Qn9C+0LrQuNC90YPRgtGMPC9hPiAgCQkKICAJCQkJIAoJ CTwvZGl2PgoJCQoJPC9kaXY+CgoJPC9kaXY+Cgk8L2Rpdj48IS0tIC8vIGZvciBi b3R0b20gcm91bmRlZCBjb3JuZXJzIC0tPgo8L2Rpdj4KDQoJCgoKDQoNCgkgIA0K CQkNCg0KCQkJDQoJCQkNCgkJCQ0KDQoJCQkNCgkJCQ0KCQkJDQoJCQkNCgkJCQ0K CQkJDQoJCQkNCgkJCQ0KCQkJDQoJCQkNCg0KCQkJDQoNCgkJCQ0KCQkJCTxkaXYg Y2xhc3M9ImJhbm5lciI+DQoJCQkJCTxzY3JpcHQ+DQoJCQkJCXZhciBtYl9yYW5k b20gPSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwMDApOw0KCQkJCQlk b2N1bWVudC53cml0ZSgiPHNjcmlwdCBzcmM9J2h0dHA6Ly9waW5rLmhhYnJhbGFi LnJ1L2NnaS1iaW4vaWZyYW1lL2hhYnJfb3RoZXJzXzI0MHg0MDA/IittYl9yYW5k b20rIiZvcHRpb25zPUZUJz48L3NjciIrImlwdD4iKTsNCgkJCQkJPC9zY3JpcHQ+ DQoJCQkJPC9kaXY+DQoJCQkNCg0KCQkJDQoJCQkNCgkJCQ0KCQkJDQoJCQkJCQkN CgkJDQoNCgkJDQoJDQoJCQ0KCQ0KCQ0KCQk8ZGl2IGNsYXNzPSJsaXZlIGRhaWx5 YmVzdCI+DQoNCgkJCTxkaXYgY2xhc3M9ImJnLWJvdHQtciI+PCEtLSBmb3IgYm90 dG9tIHJvdW5kZWQgY29ybmVycyAtLT4NCgkJCTxkaXYgY2xhc3M9ImJnLWJvdHQt bCI+DQoJDQoJCQk8aDM+0JvRg9GH0YjQtdC1IDxzdXA+0LfQsCAyNCDRh9Cw0YHQ sDwvc3VwPiZuYnNwOyYjODU5NTs8L2gzPg0KDQoJCQkNCgkJCQk8ZGwgY2xhc3M9 ImFpci1jb21tZW50Ij4NCgkJCQkJPGRkPg0KCQkJCQkJPGRsPgkJCQkJCQ0KCQkJ CQkJCTxkdD48YSBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2NvbXBhbnkvYm9v a21hdGUvYmxvZy8xMjAzMTUvI2dpZnQiPjxpbWcgc3JjPSIvaS9zcGVjaWFsL2Jv b2ttYXRlL2JpZy5wbmciIGFsdD0iQm9va21hdGUiIHN0eWxlPSJ2ZXJ0aWNhbC1h bGlnbjp0b3A7ZmxvYXQ6bGVmdDtkaXNwbGF5OmJsb2NrO21hcmdpbi1yaWdodDox MHB4O21hcmdpbi10b3A6NHB4OyIgIHRpdGxlPSLQmtCw0LbQtNGL0Lkg0LTQtdC9 0Ywg0LDQstGC0L7RgCDQu9GD0YfRiNC10LPQviDQv9C+0YHRgtCwINC/0L7Qu9GD 0YfQsNC10YIg0L/QvtC00LDRgNC+0LouINCa0LvQuNC60L3QuNGC0LUg0L3QsCDQ uNC60L7QvdC60YMsINGH0YLQvtCx0Ysg0YPQt9C90LDRgtGMINCx0L7Qu9GM0YjQ tS4iIGNsYXNzPSJoZWxwLXRpcCIvPjwvYT4NCgkJCQkJCQk8YSBjbGFzcz0id2hl cmUiIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvYmxvZ3MvZ29vZ2xlLyI+R29v Z2xlPC9hPiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQkJCQkJPGRkPjxhIGNsYXNzPSJ0 b3BpYyIgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9ibG9ncy9nb29nbGUvMTIw Nzg5LyI+0J/QtdGA0LXQttC40LLQsNC90LjRjyDQrdGA0LjQutCwINCo0LzQuNC0 0YLQsDwvYT4mbmJzcDs8L2RkPg0KCQkJCQkJPC9kbD4NCgkJCQkJPC9kZD4NCgkJ CQk8L2RsPg0KCQkJDQoJCQkJPGRsIGNsYXNzPSJhaXItY29tbWVudCI+DQoJCQkJ CTxkZD4NCgkJCQkJCTxkbD4JCQkJCQkNCgkJCQkJCQk8ZHQ+DQoJCQkJCQkJPGEg Y2xhc3M9IndoZXJlIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dzL2lu dGVybmV0LyI+0JjQvdGC0LXRgNC90LXRgjwvYT4mbmJzcDsmcmFycjs8L2R0Pg0K CQkJCQkJCTxkZD48YSBjbGFzcz0idG9waWMiIGhyZWY9Imh0dHA6Ly9oYWJyYWhh YnIucnUvYmxvZ3MvaW50ZXJuZXQvMTIwNzg1LyI+0KXQsNCx0YDQrdGE0YTQtdC6 0YIu0YDRgzog0J/RgNC+0YnQsNC90LjQtSDRgSDQv9C+0LvRjNC30L7QstCw0YLQ tdC70Y/QvNC4PC9hPiZuYnNwOzwvZGQ+DQoJCQkJCQk8L2RsPg0KCQkJCQk8L2Rk Pg0KCQkJCTwvZGw+DQoJCQkNCgkJCQk8ZGwgY2xhc3M9ImFpci1jb21tZW50Ij4N CgkJCQkJPGRkPg0KCQkJCQkJPGRsPgkJCQkJCQ0KCQkJCQkJCTxkdD4NCgkJCQkJ CQk8YSBjbGFzcz0id2hlcmUiIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvYmxv Z3Mvc3RhcnR1cC8iPtCh0YLQsNGA0YLQsNC/0Ys8L2E+Jm5ic3A7JnJhcnI7PC9k dD4NCgkJCQkJCQk8ZGQ+PGEgY2xhc3M9InRvcGljIiBocmVmPSJodHRwOi8vaGFi cmFoYWJyLnJ1L2Jsb2dzL3N0YXJ0dXAvMTIwODQyLyI+SVBPIGZvciBkdW1taWVz LiDQp9Cw0YHRgtGMIDE6INCw0LrRhtC40LgsINC80LDQttC+0YDQuNGC0LDRgNC4 0LgsINC60L7QvdGC0YDQvtC70Ywg0L3QsNC0INC60L7QvNC/0LDQvdC40LXQuTwv YT4mbmJzcDs8L2RkPg0KCQkJCQkJPC9kbD4NCgkJCQkJPC9kZD4NCgkJCQk8L2Rs Pg0KCQkJDQoJCQkJPGRsIGNsYXNzPSJhaXItY29tbWVudCI+DQoJCQkJCTxkZD4N CgkJCQkJCTxkbD4JCQkJCQkNCgkJCQkJCQk8ZHQ+DQoJCQkJCQkJPGEgY2xhc3M9 IndoZXJlIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dzL3VpLyI+0JjQ vdGC0LXRgNGE0LXQudGB0Ys8L2E+Jm5ic3A7JnJhcnI7PC9kdD4NCgkJCQkJCQk8 ZGQ+PGEgY2xhc3M9InRvcGljIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Js b2dzL3VpLzEyMDgzMy8iPtCU0LXRiNC10LLRi9C5INCz0L7QstC90L7RgtGA0LDR hNC40Log0YEgdmtvbnRha3RlPC9hPiZuYnNwOzwvZGQ+DQoJCQkJCQk8L2RsPg0K CQkJCQk8L2RkPg0KCQkJCTwvZGw+DQoJCQkNCgkJCQk8ZGwgY2xhc3M9ImFpci1j b21tZW50Ij4NCgkJCQkJPGRkPg0KCQkJCQkJPGRsPgkJCQkJCQ0KCQkJCQkJCTxk dD4NCgkJCQkJCQk8YSBjbGFzcz0id2hlcmUiIGhyZWY9Imh0dHA6Ly9oYWJyYWhh YnIucnUvYmxvZ3MvamF2YXNjcmlwdC8iPkphdmFTY3JpcHQ8L2E+Jm5ic3A7JnJh cnI7PC9kdD4NCgkJCQkJCQk8ZGQ+PGEgY2xhc3M9InRvcGljIiBocmVmPSJodHRw Oi8vaGFicmFoYWJyLnJ1L2Jsb2dzL2phdmFzY3JpcHQvMTIwODQ4LyI+0KPRh9C1 0LHQvdC40LogSmF2YVNjcmlwdCAoYWxwaGEpPC9hPiZuYnNwOzwvZGQ+DQoJCQkJ CQk8L2RsPg0KCQkJCQk8L2RkPg0KCQkJCTwvZGw+DQoJCQkNCgkJCQk8ZGwgY2xh c3M9ImFpci1jb21tZW50Ij4NCgkJCQkJPGRkPg0KCQkJCQkJPGRsPgkJCQkJCQ0K CQkJCQkJCTxkdD4NCgkJCQkJCQk8YSBjbGFzcz0id2hlcmUiIGhyZWY9Imh0dHA6 Ly9oYWJyYWhhYnIucnUvYmxvZ3MvaW50ZXJuZXQvIj7QmNC90YLQtdGA0L3QtdGC PC9hPiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQkJCQkJPGRkPjxhIGNsYXNzPSJ0b3Bp YyIgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9ibG9ncy9pbnRlcm5ldC8xMjA4 MzQvIj7QoNC+0YHRgtC10LvQtdC60L7QvCDRg9C20LUg0L3QsNGH0LjQvdCw0LXR giDQsdC70L7QutC40YDQvtCy0LDRgtGMINGC0L7RgNGA0LXQvdGCINGC0YDQtdC6 0LXRgNGLPC9hPiZuYnNwOzwvZGQ+DQoJCQkJCQk8L2RsPg0KCQkJCQk8L2RkPg0K CQkJCTwvZGw+DQoJCQkNCgkJCQk8ZGwgY2xhc3M9ImFpci1jb21tZW50Ij4NCgkJ CQkJPGRkPg0KCQkJCQkJPGRsPgkJCQkJCQ0KCQkJCQkJCTxkdD4NCgkJCQkJCQk8 YSBjbGFzcz0id2hlcmUiIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvYmxvZ3Mv aW5mb3NlY3VyaXR5LyI+0JjQvdGE0L7RgNC80LDRhtC40L7QvdC90LDRjyDQsdC1 0LfQvtC/0LDRgdC90L7RgdGC0Yw8L2E+Jm5ic3A7JnJhcnI7PC9kdD4NCgkJCQkJ CQk8ZGQ+PGEgY2xhc3M9InRvcGljIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1 L2Jsb2dzL2luZm9zZWN1cml0eS8xMjA4NTEvIj7QkiDQv9C+0LjRgdC60LDRhSDQ uNC00LXQsNC70YzQvdC+0LkgQ0FQVENIQTwvYT4mbmJzcDs8L2RkPg0KCQkJCQkJ PC9kbD4NCgkJCQkJPC9kZD4NCgkJCQk8L2RsPg0KCQkJDQoJCQkJPGRsIGNsYXNz PSJhaXItY29tbWVudCI+DQoJCQkJCTxkZD4NCgkJCQkJCTxkbD4JCQkJCQkNCgkJ CQkJCQk8ZHQ+DQoJCQkJCQkJPGEgY2xhc3M9IndoZXJlIiBocmVmPSJodHRwOi8v aGFicmFoYWJyLnJ1L2Jsb2dzL3NreXBlLyI+U2t5cGU8L2E+Jm5ic3A7JnJhcnI7 PC9kdD4NCgkJCQkJCQk8ZGQ+PGEgY2xhc3M9InRvcGljIiBocmVmPSJodHRwOi8v aGFicmFoYWJyLnJ1L2Jsb2dzL3NreXBlLzEyMDg5MC8iPk1pY3Jvc29mdCDQs9C+ 0YLQvtCy0LAg0L/QtdGA0LXQtNCw0YLRjCDQpNCh0JEg0YjQuNGE0YDQvtCy0LDQ u9GM0L3Ri9C5INCw0LvQs9C+0YDQuNGC0LwgU2t5cGU8L2E+Jm5ic3A7PC9kZD4N CgkJCQkJCTwvZGw+DQoJCQkJCTwvZGQ+DQoJCQkJPC9kbD4NCgkJCQ0KCQkJCTxk bCBjbGFzcz0iYWlyLWNvbW1lbnQiPg0KCQkJCQk8ZGQ+DQoJCQkJCQk8ZGw+CQkJ CQkJDQoJCQkJCQkJPGR0Pg0KCQkJCQkJCTxhIGNsYXNzPSJ3aGVyZSIgaHJlZj0i aHR0cDovL2hhYnJhaGFici5ydS9ibG9ncy9jb3B5cmlnaHQvIj7QmtC+0L/QuNGA 0LDQudGCPC9hPiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQkJCQkJPGRkPjxhIGNsYXNz PSJ0b3BpYyIgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9ibG9ncy9jb3B5cmln aHQvMTIwNzkxLyI+0KDQsNC30LvQuNGH0L3Ri9C1INGC0LjQv9GLINC60L7QvdGC 0LXQvdGC0LAg0LIgcDJwINGB0LXRgtGP0YU8L2E+Jm5ic3A7PC9kZD4NCgkJCQkJ CTwvZGw+DQoJCQkJCTwvZGQ+DQoJCQkJPC9kbD4NCgkJCQ0KCQkJCTxkbCBjbGFz cz0iYWlyLWNvbW1lbnQiPg0KCQkJCQk8ZGQ+DQoJCQkJCQk8ZGw+CQkJCQkJDQoJ CQkJCQkJPGR0Pg0KCQkJCQkJCTxhIGNsYXNzPSJ3aGVyZSIgaHJlZj0iaHR0cDov L2hhYnJhaGFici5ydS9ibG9ncy93ZWJkZXYvIj7QktC10LEt0YDQsNC30YDQsNCx 0L7RgtC60LA8L2E+Jm5ic3A7JnJhcnI7PC9kdD4NCgkJCQkJCQk8ZGQ+PGEgY2xh c3M9InRvcGljIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dzL3dlYmRl di8xMjA4NzIvIj7QkdCw0LfQsCBHZW9JUCDigJMg0YHRgtGA0LDQvdGLINC4INCz 0L7RgNC+0LTQsCwg0LjRjtC90YwgMjAxMSAoK9GB0LrRgNC40L/RgiDQvtCx0L3Q vtCy0LvQtdC90LjRjyk8L2E+Jm5ic3A7PC9kZD4NCgkJCQkJCTwvZGw+DQoJCQkJ CTwvZGQ+DQoJCQkJPC9kbD4NCgkJCQ0KCQkJPGRpdiBjbGFzcz0iYWxsIj4mIzE3 MTsgPGEgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS90b3AvIj7QstGB0LUg0LvR g9GH0YjQuNC1PC9hPjwvZGl2Pg0KDQoJCQk8L2Rpdj4NCgkJCTwvZGl2PjwhLS0g Ly8gZm9yIGJvdHRvbSByb3VuZGVkIGNvcm5lcnMgLS0+DQoJCTwvZGl2Pg0KCQ0K DQoNCgkJCgoKPGRpdiBjbGFzcz0ibGl2ZSBuZXctZmVlZGJhY2tzIj4KCgk8ZGl2 IGNsYXNzPSJiZy1ib3R0LXIiPgoJPGRpdiBjbGFzcz0iYmctYm90dC1sIHNpbWls YXItcG9zdHMiPgoKCTxoMz7Qn9C+0YXQvtC20LjQtSDQv9C+0YHRgtGLJm5ic3A7 JiM4NTk1OzwvaDM+CgoJCQk8ZGl2PgoJCQkJCgkJCQk8ZGw+CgkJCQkJPGRkPgoJ CQkJCQk8ZGw+CgkJCQkJCQk8ZHQ+PHNwYW4gY2xhc3M9IndoZW4iPjA3LjA3LjIw MTA8L3NwYW4+Jm5ic3A7JiM4NTk0OyA8YSBjbGFzcz0id2hlcmUiIGhyZWY9Imh0 dHA6Ly9oYWJyYWhhYnIucnUvYmxvZ3MvM2RfZ3JhcGhpY3MvIj7QkNC90LjQvNCw 0YbQuNGPINC4IDNEINCz0YDQsNGE0LjQutCwPC9hPiZuYnNwOyYjODU5NDs8L2R0 PgoJCQkJCQkJPGRkPjxhIGNsYXNzPSJ0b3BpYyIgaHJlZj0iaHR0cDovL2hhYnJh aGFici5ydS9ibG9ncy8zZF9ncmFwaGljcy85ODQ5MC8iPtCe0LHRitC10LzQvdGL 0LUg0YLQtdC70LXRgtGA0LDQvdGB0LvRj9GG0LjQuCDQvtC/0LDRgdC90Ysg0LTQ u9GPINC30LTQvtGA0L7QstGM0Y88L2E+PC9kZD4KCQkJCQkJPC9kbD4KCQkJCQk8 L2RkPgoJCQkJPC9kbD4KCQkJCQoJCQkJPGRsPgoJCQkJCTxkZD4KCQkJCQkJPGRs PgoJCQkJCQkJPGR0PjxzcGFuIGNsYXNzPSJ3aGVuIj4wNC4wMi4yMDEwPC9zcGFu PiZuYnNwOyYjODU5NDsgPGEgY2xhc3M9IndoZXJlIiBocmVmPSJodHRwOi8vaGFi cmFoYWJyLnJ1L2Jsb2dzL3BvcHVsYXJfc2NpZW5jZS8iPtCd0LDRg9GH0L3Qvi3Q v9C+0L/Rg9C70Y/RgNC90L7QtTwvYT4mbmJzcDsmIzg1OTQ7PC9kdD4KCQkJCQkJ CTxkZD48YSBjbGFzcz0idG9waWMiIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUv YmxvZ3MvcG9wdWxhcl9zY2llbmNlLzgzMTIyLyI+0JHRgNGO0YHCoNCh0YLQtdGA 0LvQuNC90LMg0LLCoNGB0LLQvtGR0LzCoNCx0LvQvtCz0LUg0YPQutCw0LfRi9Cy 0LDQtdGCINC90LDCoNC70Y7QsdC+0L/Ri9GC0L3QvtC1INC40YHRgdC70LXQtNC+ 0LLQsNC90LjQtTog0LLQvtC00LjRgtGMwqDQsNCy0YLQvtC80L7QsdC40LvRjCDQ vdC1wqDQv9C+0LvQtdC30L3QtdC1INC00LvRj8Kg0LfQtNC+0YDQvtCy0YzRjywg 0YfQtdC8wqDQutGD0YDQuNGC0Yw8L2E+PC9kZD4KCQkJCQkJPC9kbD4KCQkJCQk8 L2RkPgoJCQkJPC9kbD4KCQkJCQoJCQkJPGRsPgoJCQkJCTxkZD4KCQkJCQkJPGRs PgoJCQkJCQkJPGR0PjxzcGFuIGNsYXNzPSJ3aGVuIj4xMi4wMy4yMDEwPC9zcGFu PiZuYnNwOyYjODU5NDsgPGEgY2xhc3M9IndoZXJlIiBocmVmPSJodHRwOi8vaGFi cmFoYWJyLnJ1L2Jsb2dzL3BvcHVsYXJfc2NpZW5jZS8iPtCd0LDRg9GH0L3Qvi3Q v9C+0L/Rg9C70Y/RgNC90L7QtTwvYT4mbmJzcDsmIzg1OTQ7PC9kdD4KCQkJCQkJ CTxkZD48YSBjbGFzcz0idG9waWMiIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUv YmxvZ3MvcG9wdWxhcl9zY2llbmNlLzg3Mjg4LyI+0KTQuNC70YzRgtGA0Ysg0J/Q tdGC0YDQuNC60LAg0L7QutCw0LfQsNC70LjRgdGMINCy0YDQtdC00L3RiyDQtNC7 0Y8g0LfQtNC+0YDQvtCy0YzRjzwvYT48L2RkPgoJCQkJCQk8L2RsPgoJCQkJCTwv ZGQ+CgkJCQk8L2RsPgoJCQkJCgkJCQk8ZGw+CgkJCQkJPGRkPgoJCQkJCQk8ZGw+ CgkJCQkJCQk8ZHQ+PHNwYW4gY2xhc3M9IndoZW4iPjI3LjEwLjIwMTA8L3NwYW4+ Jm5ic3A7JiM4NTk0OyA8YSBjbGFzcz0id2hlcmUiIGhyZWY9Imh0dHA6Ly9oYWJy YWhhYnIucnUvY29tcGFueS9nbGF2c3RhcnQvYmxvZy8iPtCR0LvQvtCzINC60L7Q vNC/0LDQvdC40Lgg0JPQu9Cw0LLRgdGC0LDRgNGCPC9hPiZuYnNwOyYjODU5NDs8 L2R0PgoJCQkJCQkJPGRkPjxhIGNsYXNzPSJ0b3BpYyIgaHJlZj0iaHR0cDovL2hh YnJhaGFici5ydS9jb21wYW55L2dsYXZzdGFydC9ibG9nLzEwNzAxMy8iPtCh0YLQ sNGA0YLQsNC/0Ysg0LHQtdC3INCy0YDQtdC00LAg0LTQu9GPINC/0LDQv9GLPC9h PjwvZGQ+CgkJCQkJCTwvZGw+CgkJCQkJPC9kZD4KCQkJCTwvZGw+CgkJCQkKCQkJ CTxkbD4KCQkJCQk8ZGQ+CgkJCQkJCTxkbD4KCQkJCQkJCTxkdD48c3BhbiBjbGFz cz0id2hlbiI+MjcuMDUuMjAxMDwvc3Bhbj4mbmJzcDsmIzg1OTQ7IDxhIGNsYXNz PSJ3aGVyZSIgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9ibG9ncy9jbGllbnRf c2lkZV9vcHRpbWl6YXRpb24vIj7QmtC70LjQtdC90YLRgdC60LDRjyDQvtC/0YLQ uNC80LjQt9Cw0YbQuNGPPC9hPiZuYnNwOyYjODU5NDs8L2R0PgoJCQkJCQkJPGRk PjxhIGNsYXNzPSJ0b3BpYyIgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9ibG9n cy9jbGllbnRfc2lkZV9vcHRpbWl6YXRpb24vOTQ3MzEvIj7Ql9C00L7RgNC+0LLQ sNGPINGB0LrQvtGA0L7RgdGC0Ywg0LTQu9GPINC30LTQvtGA0L7QstC+0LPQviDR gdCw0LnRgtCwLCBXRUJPIFNvZnR3YXJlINCz0L7QstC+0YDQuNGCINC90LXRgiDQ utGD0YDQtdC90LjRjjwvYT48L2RkPgoJCQkJCQk8L2RsPgoJCQkJCTwvZGQ+CgkJ CQk8L2RsPgoJCQkJCgkJCQk8ZGw+CgkJCQkJPGRkPgoJCQkJCQk8ZGw+CgkJCQkJ CQk8ZHQ+PHNwYW4gY2xhc3M9IndoZW4iPjE2LjA0LjIwMTA8L3NwYW4+Jm5ic3A7 JiM4NTk0OyA8YSBjbGFzcz0id2hlcmUiIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIu cnUvY29tcGFueS9ub21vYmlsZS9ibG9nLyI+0JHQu9C+0LMg0LrQvtC80L/QsNC9 0LjQuCBOb21vYmlsZS5SdTwvYT4mbmJzcDsmIzg1OTQ7PC9kdD4KCQkJCQkJCTxk ZD48YSBjbGFzcz0idG9waWMiIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvY29t cGFueS9ub21vYmlsZS9ibG9nLzkxMjA2LyI+0JzQvtCx0LjQu9GM0L3QuNC6INC9 0L7RgdC40YLRjCDQsiDQutCw0YDQvNCw0L3QtSDigJQg0JzQntCW0J3QniE8L2E+ PC9kZD4KCQkJCQkJPC9kbD4KCQkJCQk8L2RkPgoJCQkJPC9kbD4KCQkJCQoJCQkJ PGRsPgoJCQkJCTxkZD4KCQkJCQkJPGRsPgoJCQkJCQkJPGR0PjxzcGFuIGNsYXNz PSJ3aGVuIj4wNC4wNC4yMDEwPC9zcGFuPiZuYnNwOyYjODU5NDsgPGEgY2xhc3M9 IndoZXJlIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dzL3NtYXJ0cGhv bmVfcnUvIj7QodC80LDRgNGC0YTQvtC90Ysg0Lgg0LrQvtC80LzRg9C90LjQutCw 0YLQvtGA0Ys8L2E+Jm5ic3A7JiM4NTk0OzwvZHQ+CgkJCQkJCQk8ZGQ+PGEgY2xh c3M9InRvcGljIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dzL3NtYXJ0 cGhvbmVfcnUvODk5MDQvIj7QndCwwqDRgdGC0LXQvdCw0YXCoNCf0LXQvdC30Ysg 0L/QvtGP0LLQuNC70LDRgdGMINGA0LXQutC70LDQvNCwLCDRg9C/0L7QtNC+0LHQ u9GP0Y7RidCw0Y8g0YHQvtGC0L7QstGL0LnCoNGC0LXQu9C10YTQvtC9INC80LjQ utGA0L7QstC+0LvQvdC+0LLQvtC5wqDQv9C10YfQuDwvYT48L2RkPgoJCQkJCQk8 L2RsPgoJCQkJCTwvZGQ+CgkJCQk8L2RsPgoJCQkJCgkJCQk8ZGw+CgkJCQkJPGRk PgoJCQkJCQk8ZGw+CgkJCQkJCQk8ZHQ+PHNwYW4gY2xhc3M9IndoZW4iPjE2LjA4 LjIwMDk8L3NwYW4+Jm5ic3A7JiM4NTk0OyA8YSBjbGFzcz0id2hlcmUiIGhyZWY9 Imh0dHA6Ly9oYWJyYWhhYnIucnUvYmxvZ3MvcGVyc29uYWwvIj7Qn9C10YDRgdC+ 0L3QsNC70YzQvdGL0LUg0LHQu9C+0LPQuDwvYT4mbmJzcDsmIzg1OTQ7PC9kdD4K CQkJCQkJCTxkZD48YSBjbGFzcz0idG9waWMiIGhyZWY9Imh0dHA6Ly9oYWJyYWhh YnIucnUvYmxvZ3MvcGVyc29uYWwvNjcxOTEvIj7QmtCw0Log0LHQtdC30L7Qv9Cw 0YHQvdC+INC00LvRjyDQt9C00L7RgNC+0LLRjNGPINC/0L7QvdC40LfQuNGC0Ywg 0YPRgNC+0LLQtdC90Ywg0LvQuNCx0LjQtNC+PzwvYT48L2RkPgoJCQkJCQk8L2Rs PgoJCQkJCTwvZGQ+CgkJCQk8L2RsPgoJCQkJCgkJCQk8ZGw+CgkJCQkJPGRkPgoJ CQkJCQk8ZGw+CgkJCQkJCQk8ZHQ+PHNwYW4gY2xhc3M9IndoZW4iPjAxLjA4LjIw MDc8L3NwYW4+Jm5ic3A7JiM4NTk0OyA8YSBjbGFzcz0id2hlcmUiIGhyZWY9Imh0 dHA6Ly9oYWJyYWhhYnIucnUvYmxvZ3MvaGFyZHdhcmUvIj7QltC10LvQtdC30L48 L2E+Jm5ic3A7JiM4NTk0OzwvZHQ+CgkJCQkJCQk8ZGQ+PGEgY2xhc3M9InRvcGlj IiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dzL2hhcmR3YXJlLzEyNzQ3 LyI+0JDQstGB0YLRgNCw0LvQuNC50YHQutC40LUg0YPRh9GR0L3Ri9C1INC/0YDQ tdC00YPQv9GA0LXQttC00LDRjtGCOiDQu9Cw0LfQtdGA0L3Ri9C1INC/0YDQuNC9 0YLQtdGA0Ysg0L7Qv9Cw0YHQvdGLINC00LvRjyDQstCw0YjQtdCz0L4g0LfQtNC+ 0YDQvtCy0YzRjzwvYT48L2RkPgoJCQkJCQk8L2RsPgoJCQkJCTwvZGQ+CgkJCQk8 L2RsPgoJCQkJCgkJCQk8ZGw+CgkJCQkJPGRkPgoJCQkJCQk8ZGw+CgkJCQkJCQk8 ZHQ+PHNwYW4gY2xhc3M9IndoZW4iPjI1LjA0LjIwMDc8L3NwYW4+Jm5ic3A7JiM4 NTk0OyA8YSBjbGFzcz0id2hlcmUiIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUv YmxvZ3MvcGVyc29uYWwvIj7Qn9C10YDRgdC+0L3QsNC70YzQvdGL0LUg0LHQu9C+ 0LPQuDwvYT4mbmJzcDsmIzg1OTQ7PC9kdD4KCQkJCQkJCTxkZD48YSBjbGFzcz0i dG9waWMiIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvYmxvZ3MvcGVyc29uYWwv NzQ3Mi8iPtCj0YHQuNC70LXQvdC90L7QtSDQv9C+0LPQu9C+0YnQtdC90LjQtSDQ uNC90YTQvtGA0LzQsNGG0LjQuCDQstGA0LXQtNC40YIg0LLQsNGI0LXQvNGDINC3 0LTQvtGA0L7QstGM0Y48L2E+PC9kZD4KCQkJCQkJPC9kbD4KCQkJCQk8L2RkPgoJ CQkJPC9kbD4KCQkJCQoJCQk8L2Rpdj4KCTwvZGl2PgoJPC9kaXY+CjwvZGl2PgoK DQoJCQ0KCQkNCg0KPGRpdiBjbGFzcz0ibGl2ZSBuZXctZmVlZGJhY2tzIj4NCgkN CgkJPGRpdiBjbGFzcz0iYmctYm90dC1yIj48IS0tIGZvciBib3R0b20gcm91bmRl ZCBjb3JuZXJzIC0tPg0KCQk8ZGl2IGNsYXNzPSJiZy1ib3R0LWwiPg0KCQ0KCQk8 aDM+0J/RgNGP0LzQvtC5INGN0YTQuNGAJm5ic3A7JiM4NTk1OzwvaDM+DQoJCQ0K CQk8IS0tINCh0YLRgNC+0YfQutCwINCyINC/0YDRj9C80L7QvCDRjdGE0LjRgNC1 IC0tPg0KCQkNCgkJPGRsIGNsYXNzPSJhaXItY29tbWVudCI+DQoJCQk8ZHQgY2xh c3M9IndobyI+PGEgaHJlZj0iaHR0cDovL2FudGhvbnlfNjEzLmhhYnJhaGFici5y dS8iPmFudGhvbnlfNjEzPC9hPiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQk8ZGQ+DQoJ CQkJPGRsPg0KCQkJCQk8ZHQ+PGEgY2xhc3M9IndoZXJlIiBocmVmPSJodHRwOi8v aGFicmFoYWJyLnJ1L2NvbXBhbnkvZ29vZ2xlL2Jsb2cvIj7QkdC70L7QsyDQutC+ 0LzQv9Cw0L3QuNC4IEdvb2dsZTwvYT4mbmJzcDsmcmFycjs8L2R0Pg0KCQkJCQk8 ZGQ+PGEgY2xhc3M9InRvcGljIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Nv bXBhbnkvZ29vZ2xlL2Jsb2cvMTIwODY4LyNjb21tZW50XzM5NjgxMTIiPtCa0LDQ t9Cw0YXRgdGC0LDQvTog0LjQt9C80LXQvdC10L3QuNGPINCyINGB0YTQtdGA0LUg 0YHQstC+0LHQvtC00L3QvtCz0L4g0JjQvdGC0LXRgNC90LXRgtCwPC9hPiZuYnNw OzxzcGFuIGNsYXNzPSJ0b3RhbCI+NTI8L3NwYW4+PC9kZD4NCgkJCQk8L2RsPg0K CQkJPC9kZD4NCgkJPC9kbD4NCgkJDQoJCTxkbCBjbGFzcz0iYWlyLWNvbW1lbnQi Pg0KCQkJPGR0IGNsYXNzPSJ3aG8iPjxhIGhyZWY9Imh0dHA6Ly9ueHMuaGFicmFo YWJyLnJ1LyI+bnhzPC9hPiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQk8ZGQ+DQoJCQkJ PGRsPg0KCQkJCQk8ZHQ+PGEgY2xhc3M9IndoZXJlIiBocmVmPSJodHRwOi8vaGFi cmFoYWJyLnJ1L2Jsb2dzL3N5c2FkbS8iPtCh0LjRgdGC0LXQvNC90L7QtSDQsNC0 0LzQuNC90LjRgdGC0YDQuNGA0L7QstCw0L3QuNC1PC9hPiZuYnNwOyZyYXJyOzwv ZHQ+DQoJCQkJCTxkZD48YSBjbGFzcz0idG9waWMiIGhyZWY9Imh0dHA6Ly9oYWJy YWhhYnIucnUvYmxvZ3Mvc3lzYWRtLzEyMDgyNC8jY29tbWVudF8zOTY4MTEwIj5Q ZG1lbnUg0LjQu9C4INC60LDQuiDQvdC1INC00LDRgtGMINC90L7QstC40YfQutGD INC+0YjQuNCx0LjRgtGM0YHRjzwvYT4mbmJzcDs8c3BhbiBjbGFzcz0idG90YWwi PjI2PC9zcGFuPjwvZGQ+DQoJCQkJPC9kbD4NCgkJCTwvZGQ+DQoJCTwvZGw+DQoJ CQ0KCQk8ZGwgY2xhc3M9ImFpci1jb21tZW50Ij4NCgkJCTxkdCBjbGFzcz0id2hv Ij48YSBocmVmPSJodHRwOi8vYWxleGFvbC5oYWJyYWhhYnIucnUvIj5hbGV4YW9s PC9hPiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQk8ZGQ+DQoJCQkJPGRsPg0KCQkJCQk8 ZHQ+PGEgY2xhc3M9IndoZXJlIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Nv bXBhbnkvcmVncnUvYmxvZy8iPtCR0LvQvtCzINC60L7QvNC/0LDQvdC40LggUkVH LlJVPC9hPiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQkJCTxkZD48YSBjbGFzcz0idG9w aWMiIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvY29tcGFueS9yZWdydS9ibG9n LzEyMDg3NC8jY29tbWVudF8zOTY4MTA5Ij7QlNC10L3RjCBJUHY2PC9hPiZuYnNw OzxzcGFuIGNsYXNzPSJ0b3RhbCI+MTc8L3NwYW4+PC9kZD4NCgkJCQk8L2RsPg0K CQkJPC9kZD4NCgkJPC9kbD4NCgkJDQoJCTxkbCBjbGFzcz0iYWlyLWNvbW1lbnQi Pg0KCQkJPGR0IGNsYXNzPSJ3aG8iPjxhIGhyZWY9Imh0dHA6Ly9wbmF0YS5oYWJy YWhhYnIucnUvIj5wbmF0YTwvYT4mbmJzcDsmcmFycjs8L2R0Pg0KCQkJPGRkPg0K CQkJCTxkbD4NCgkJCQkJPGR0PjxhIGNsYXNzPSJ3aGVyZSIgaHJlZj0iaHR0cDov L2hhYnJhaGFici5ydS9ibG9ncy9wcm9ncmFtbWluZy8iPtCf0YDQvtCz0YDQsNC8 0LzQuNGA0L7QstCw0L3QuNC1PC9hPiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQkJCTxk ZD48YSBjbGFzcz0idG9waWMiIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvYmxv Z3MvcHJvZ3JhbW1pbmcvMTIwMDkwLyNjb21tZW50XzM5NjgxMDYiPtCh0YDQsNCy 0L3QuNGC0LXQu9GM0L3QvtC1INGC0LXRgdGC0LjRgNC+0LLQsNC90LjQtSDQv9GA 0L7QuNC30LLQvtC00LjRgtC10LvRjNC90L7RgdGC0Lgg0L/Qu9Cw0YLRhNC+0YDQ vCAuTmV0LCBKYXZhINC4IE1vbm88L2E+Jm5ic3A7PHNwYW4gY2xhc3M9InRvdGFs Ij4xMjQ8L3NwYW4+PC9kZD4NCgkJCQk8L2RsPg0KCQkJPC9kZD4NCgkJPC9kbD4N CgkJDQoJCTxkbCBjbGFzcz0iYWlyLWNvbW1lbnQiPg0KCQkJPGR0IGNsYXNzPSJ3 aG8iPjxhIGhyZWY9Imh0dHA6Ly9OaWtvQi5oYWJyYWhhYnIucnUvIj5OaWtvQjwv YT4mbmJzcDsmcmFycjs8L2R0Pg0KCQkJPGRkPg0KCQkJCTxkbD4NCgkJCQkJPGR0 PjxhIGNsYXNzPSJ3aGVyZSIgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9ibG9n cy9wcm9ncmFtbWluZy8iPtCf0YDQvtCz0YDQsNC80LzQuNGA0L7QstCw0L3QuNC1 PC9hPiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQkJCTxkZD48YSBjbGFzcz0idG9waWMi IGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvYmxvZ3MvcHJvZ3JhbW1pbmcvMTIw ODg3LyNjb21tZW50XzM5NjgxMDQiPtCa0LvQuNC10L3RgiDQtNC70Y8gSGFicmFT dG9yYWdlPC9hPiZuYnNwOzxzcGFuIGNsYXNzPSJ0b3RhbCI+MTE8L3NwYW4+PC9k ZD4NCgkJCQk8L2RsPg0KCQkJPC9kZD4NCgkJPC9kbD4NCgkJDQoJCTxkbCBjbGFz cz0iYWlyLWNvbW1lbnQiPg0KCQkJPGR0IGNsYXNzPSJ3aG8iPjxhIGhyZWY9Imh0 dHA6Ly9QYXBhQnViYURpb3AuaGFicmFoYWJyLnJ1LyI+UGFwYUJ1YmFEaW9wPC9h PiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQk8ZGQ+DQoJCQkJPGRsPg0KCQkJCQk8ZHQ+ PGEgY2xhc3M9IndoZXJlIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dz L2lfYW1fYWR2ZXJ0aXNpbmcvIj7QryDQv9C40LDRgNGO0YHRjDwvYT4mbmJzcDsm cmFycjs8L2R0Pg0KCQkJCQk8ZGQ+PGEgY2xhc3M9InRvcGljIiBocmVmPSJodHRw Oi8vaGFicmFoYWJyLnJ1L2Jsb2dzL2lfYW1fYWR2ZXJ0aXNpbmcvMTIwMDc1LyNj b21tZW50XzM5NjgxMDMiPtCg0LXQttGM0YLQtSwg0LHRgNCw0YLRhtGLLCDRgNC1 0LbRjNGC0LUuINCg0LXQttGM0YLQtSDQvtGB0YLQvtGA0L7QttC90L7igKY8L2E+ Jm5ic3A7PHNwYW4gY2xhc3M9InRvdGFsIj4yNzwvc3Bhbj48L2RkPg0KCQkJCTwv ZGw+DQoJCQk8L2RkPg0KCQk8L2RsPg0KCQkNCgkJPGRsIGNsYXNzPSJhaXItY29t bWVudCI+DQoJCQk8ZHQgY2xhc3M9IndobyI+PGEgaHJlZj0iaHR0cDovL3JvbWFu X3Rpay5oYWJyYWhhYnIucnUvIj5yb21hbl90aWs8L2E+Jm5ic3A7JnJhcnI7PC9k dD4NCgkJCTxkZD4NCgkJCQk8ZGw+DQoJCQkJCTxkdD48YSBjbGFzcz0id2hlcmUi IGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvYmxvZ3Mvc3RhcnR1cC8iPtCh0YLQ sNGA0YLQsNC/0Ys8L2E+Jm5ic3A7JnJhcnI7PC9kdD4NCgkJCQkJPGRkPjxhIGNs YXNzPSJ0b3BpYyIgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9ibG9ncy9zdGFy dHVwLzEyMDg0Mi8jY29tbWVudF8zOTY4MTAxIj5JUE8gZm9yIGR1bW1pZXMuINCn 0LDRgdGC0YwgMTog0LDQutGG0LjQuCwg0LzQsNC20L7RgNC40YLQsNGA0LjQuCwg 0LrQvtC90YLRgNC+0LvRjCDQvdCw0LQg0LrQvtC80L/QsNC90LjQtdC5PC9hPiZu YnNwOzxzcGFuIGNsYXNzPSJ0b3RhbCI+NzA8L3NwYW4+PC9kZD4NCgkJCQk8L2Rs Pg0KCQkJPC9kZD4NCgkJPC9kbD4NCgkJDQoJCTxkbCBjbGFzcz0iYWlyLWNvbW1l bnQiPg0KCQkJPGR0IGNsYXNzPSJ3aG8iPjxhIGhyZWY9Imh0dHA6Ly9zdGFsa2Vy cy5oYWJyYWhhYnIucnUvIj5zdGFsa2VyczwvYT4mbmJzcDsmcmFycjs8L2R0Pg0K CQkJPGRkPg0KCQkJCTxkbD4NCgkJCQkJPGR0PjxhIGNsYXNzPSJ3aGVyZSIgaHJl Zj0iaHR0cDovL2hhYnJhaGFici5ydS9ibG9ncy9ndGQvIj5HVEQ8L2E+Jm5ic3A7 JnJhcnI7PC9kdD4NCgkJCQkJPGRkPjxhIGNsYXNzPSJ0b3BpYyIgaHJlZj0iaHR0 cDovL2hhYnJhaGFici5ydS9ibG9ncy9ndGQvMTIwODk3LyNjb21tZW50XzM5Njgx MDAiPtCn0LjRgtCw0YLRjCDQutC90LjQs9C4INC/0L4g0YLQsNC50Lwt0LzQtdC9 0LXQtNC20LzQtdC90YLRgyDigJQg0L/Qu9C+0YXQvtC5INGC0LDQudC8LdC80LXQ vdC10LTQttC80LXQvdGCPC9hPiZuYnNwOzxzcGFuIGNsYXNzPSJ0b3RhbCI+MTY8 L3NwYW4+PC9kZD4NCgkJCQk8L2RsPg0KCQkJPC9kZD4NCgkJPC9kbD4NCgkJDQoJ CTxkbCBjbGFzcz0iYWlyLWNvbW1lbnQiPg0KCQkJPGR0IGNsYXNzPSJ3aG8iPjxh IGhyZWY9Imh0dHA6Ly9uaWFrcmlzbi5oYWJyYWhhYnIucnUvIj5uaWFrcmlzbjwv YT4mbmJzcDsmcmFycjs8L2R0Pg0KCQkJPGRkPg0KCQkJCTxkbD4NCgkJCQkJPGR0 PjxhIGNsYXNzPSJ3aGVyZSIgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9ibG9n cy9pbmZvc2VjdXJpdHkvIj7QmNC90YTQvtGA0LzQsNGG0LjQvtC90L3QsNGPINCx 0LXQt9C+0L/QsNGB0L3QvtGB0YLRjDwvYT4mbmJzcDsmcmFycjs8L2R0Pg0KCQkJ CQk8ZGQ+PGEgY2xhc3M9InRvcGljIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1 L2Jsb2dzL2luZm9zZWN1cml0eS8xMjA2NTkvI2NvbW1lbnRfMzk2ODA5OSI+0J/R gNGP0YfQtdC80YHRjyDQvtGCIERET1Mg0LfQsCBOQVQg0L/RgNC+0LLQsNC50LTQ tdGA0LA8L2E+Jm5ic3A7PHNwYW4gY2xhc3M9InRvdGFsIj4zNTwvc3Bhbj48L2Rk Pg0KCQkJCTwvZGw+DQoJCQk8L2RkPg0KCQk8L2RsPg0KCQkNCgkJPGRsIGNsYXNz PSJhaXItY29tbWVudCI+DQoJCQk8ZHQgY2xhc3M9IndobyI+PGEgaHJlZj0iaHR0 cDovL3NoaXR3YXJlLmhhYnJhaGFici5ydS8iPnNoaXR3YXJlPC9hPiZuYnNwOyZy YXJyOzwvZHQ+DQoJCQk8ZGQ+DQoJCQkJPGRsPg0KCQkJCQk8ZHQ+PGEgY2xhc3M9 IndoZXJlIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dzL2dvb2dsZS8i Pkdvb2dsZTwvYT4mbmJzcDsmcmFycjs8L2R0Pg0KCQkJCQk8ZGQ+PGEgY2xhc3M9 InRvcGljIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dzL2dvb2dsZS8x MjA5MDkvI2NvbW1lbnRfMzk2ODA5OCI+R29vZ2xlINC80L7QttC10YIg0L/QvtGC 0LXRgNGP0YLRjCDQtNC+0LzQtdC9IEdvb2dsZS5rejwvYT4mbmJzcDs8c3BhbiBj bGFzcz0idG90YWwiPjM8L3NwYW4+PC9kZD4NCgkJCQk8L2RsPg0KCQkJPC9kZD4N CgkJPC9kbD4NCgkJDQoJCTxkbCBjbGFzcz0iYWlyLWNvbW1lbnQiPg0KCQkJPGR0 IGNsYXNzPSJ3aG8iPjxhIGhyZWY9Imh0dHA6Ly9hc2lzLmhhYnJhaGFici5ydS8i PmFzaXM8L2E+Jm5ic3A7JnJhcnI7PC9kdD4NCgkJCTxkZD4NCgkJCQk8ZGw+DQoJ CQkJCTxkdD48YSBjbGFzcz0id2hlcmUiIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIu cnUvYmxvZ3Mvc2t5cGUvIj5Ta3lwZTwvYT4mbmJzcDsmcmFycjs8L2R0Pg0KCQkJ CQk8ZGQ+PGEgY2xhc3M9InRvcGljIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1 L2Jsb2dzL3NreXBlLzEyMDg5MC8jY29tbWVudF8zOTY4MDk0Ij5NaWNyb3NvZnQg 0LPQvtGC0L7QstCwINC/0LXRgNC10LTQsNGC0Ywg0KTQodCRINGI0LjRhNGA0L7Q stCw0LvRjNC90YvQuSDQsNC70LPQvtGA0LjRgtC8IFNreXBlPC9hPiZuYnNwOzxz cGFuIGNsYXNzPSJ0b3RhbCI+MTUxPC9zcGFuPjwvZGQ+DQoJCQkJPC9kbD4NCgkJ CTwvZGQ+DQoJCTwvZGw+DQoJCQ0KCQk8ZGwgY2xhc3M9ImFpci1jb21tZW50Ij4N CgkJCTxkdCBjbGFzcz0id2hvIj48YSBocmVmPSJodHRwOi8vYWZhbi5oYWJyYWhh YnIucnUvIj5hZmFuPC9hPiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQk8ZGQ+DQoJCQkJ PGRsPg0KCQkJCQk8ZHQ+PGEgY2xhc3M9IndoZXJlIiBocmVmPSJodHRwOi8vaGFi cmFoYWJyLnJ1L2NvbXBhbnkvZXZlcm5vdGUvYmxvZy8iPtCR0LvQvtCzINC60L7Q vNC/0LDQvdC40LggRXZlcm5vdGUgQ29ycG9yYXRpb248L2E+Jm5ic3A7JnJhcnI7 PC9kdD4NCgkJCQkJPGRkPjxhIGNsYXNzPSJ0b3BpYyIgaHJlZj0iaHR0cDovL2hh YnJhaGFici5ydS9jb21wYW55L2V2ZXJub3RlL2Jsb2cvMTIwODk1LyNjb21tZW50 XzM5NjgwOTIiPtCi0LXRhdC90L7QsdC70L7Qszog0L/QvtGH0LXQvNGDIEV2ZXJu b3RlINCy0YvQsdGA0LDQuyBBcGFjaGUgVGhyaWZ0INC00LvRjyDQv9C+0YHRgtGA 0L7QtdC90LjRjyDRgdCy0L7QtdCz0L4gQVBJPC9hPiZuYnNwOzxzcGFuIGNsYXNz PSJ0b3RhbCI+Mjwvc3Bhbj48L2RkPg0KCQkJCTwvZGw+DQoJCQk8L2RkPg0KCQk8 L2RsPg0KCQkNCgkJPGRsIGNsYXNzPSJhaXItY29tbWVudCI+DQoJCQk8ZHQgY2xh c3M9IndobyI+PGEgaHJlZj0iaHR0cDovL3hhbmVwLmhhYnJhaGFici5ydS8iPnhh bmVwPC9hPiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQk8ZGQ+DQoJCQkJPGRsPg0KCQkJ CQk8ZHQ+PGEgY2xhc3M9IndoZXJlIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1 L2Jsb2dzL2N5YmVycHVuay8iPtCa0LjQsdC10YDQv9Cw0L3QujwvYT4mbmJzcDsm cmFycjs8L2R0Pg0KCQkJCQk8ZGQ+PGEgY2xhc3M9InRvcGljIiBocmVmPSJodHRw Oi8vaGFicmFoYWJyLnJ1L2Jsb2dzL2N5YmVycHVuay8xMjA5MDAvI2NvbW1lbnRf Mzk2ODA5MSI+SW50ZXJuZXQgQXJjaGl2ZSDRgdC/0LDRgdGR0YIg0LHRg9C80LDQ ttC90YvQtSDQutC90LjQs9C4PC9hPiZuYnNwOzxzcGFuIGNsYXNzPSJ0b3RhbCI+ Njwvc3Bhbj48L2RkPg0KCQkJCTwvZGw+DQoJCQk8L2RkPg0KCQk8L2RsPg0KCQkN CgkJPGRsIGNsYXNzPSJhaXItY29tbWVudCI+DQoJCQk8ZHQgY2xhc3M9IndobyI+ PGEgaHJlZj0iaHR0cDovL0NMUi5oYWJyYWhhYnIucnUvIj5DTFI8L2E+Jm5ic3A7 JnJhcnI7PC9kdD4NCgkJCTxkZD4NCgkJCQk8ZGw+DQoJCQkJCTxkdD48YSBjbGFz cz0id2hlcmUiIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvYmxvZ3MvbWFjb3N4 ZGV2LyI+0KDQsNC30YDQsNCx0L7RgtC60LAg0L/QvtC0IEFwcGxlIGlPUzwvYT4m bmJzcDsmcmFycjs8L2R0Pg0KCQkJCQk8ZGQ+PGEgY2xhc3M9InRvcGljIiBocmVm PSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dzL21hY29zeGRldi8xMTk4NzcvI2Nv bW1lbnRfMzk2ODA4OSI+0J4g0LHQu9C+0LrQsNGFINC4INC40YUg0LjRgdC/0L7Q u9GM0LfQvtCy0LDQvdC40Lgg0LIgT2JqZWN0aXZlLUMg0YfQsNGB0YLRjCAxLdCw 0Y88L2E+Jm5ic3A7PHNwYW4gY2xhc3M9InRvdGFsIj4xMDwvc3Bhbj48L2RkPg0K CQkJCTwvZGw+DQoJCQk8L2RkPg0KCQk8L2RsPg0KCQkNCgkJPGRsIGNsYXNzPSJh aXItY29tbWVudCI+DQoJCQk8ZHQgY2xhc3M9IndobyI+PGEgaHJlZj0iaHR0cDov L0FuZHJleUl2YW5vZmYuaGFicmFoYWJyLnJ1LyI+QW5kcmV5SXZhbm9mZjwvYT4m bmJzcDsmcmFycjs8L2R0Pg0KCQkJPGRkPg0KCQkJCTxkbD4NCgkJCQkJPGR0Pjxh IGNsYXNzPSJ3aGVyZSIgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9ibG9ncy9p bnRlcm5ldC8iPtCY0L3RgtC10YDQvdC10YI8L2E+Jm5ic3A7JnJhcnI7PC9kdD4N CgkJCQkJPGRkPjxhIGNsYXNzPSJ0b3BpYyIgaHJlZj0iaHR0cDovL2hhYnJhaGFi ci5ydS9ibG9ncy9pbnRlcm5ldC8xMjA3ODUvI2NvbW1lbnRfMzk2ODA4NyI+0KXQ sNCx0YDQrdGE0YTQtdC60YIu0YDRgzog0J/RgNC+0YnQsNC90LjQtSDRgSDQv9C+ 0LvRjNC30L7QstCw0YLQtdC70Y/QvNC4PC9hPiZuYnNwOzxzcGFuIGNsYXNzPSJ0 b3RhbCI+MTM2PC9zcGFuPjwvZGQ+DQoJCQkJPC9kbD4NCgkJCTwvZGQ+DQoJCTwv ZGw+DQoJCQ0KCQk8ZGwgY2xhc3M9ImFpci1jb21tZW50Ij4NCgkJCTxkdCBjbGFz cz0id2hvIj48YSBocmVmPSJodHRwOi8vTG9uZG9uZXIuaGFicmFoYWJyLnJ1LyI+ TG9uZG9uZXI8L2E+Jm5ic3A7JnJhcnI7PC9kdD4NCgkJCTxkZD4NCgkJCQk8ZGw+ DQoJCQkJCTxkdD48YSBjbGFzcz0id2hlcmUiIGhyZWY9Imh0dHA6Ly9oYWJyYWhh YnIucnUvYmxvZ3MvaW5mb3NlY3VyaXR5LyI+0JjQvdGE0L7RgNC80LDRhtC40L7Q vdC90LDRjyDQsdC10LfQvtC/0LDRgdC90L7RgdGC0Yw8L2E+Jm5ic3A7JnJhcnI7 PC9kdD4NCgkJCQkJPGRkPjxhIGNsYXNzPSJ0b3BpYyIgaHJlZj0iaHR0cDovL2hh YnJhaGFici5ydS9ibG9ncy9pbmZvc2VjdXJpdHkvMTIwODUxLyNjb21tZW50XzM5 NjgwODQiPtCSINC/0L7QuNGB0LrQsNGFINC40LTQtdCw0LvRjNC90L7QuSBDQVBU Q0hBPC9hPiZuYnNwOzxzcGFuIGNsYXNzPSJ0b3RhbCI+ODY8L3NwYW4+PC9kZD4N CgkJCQk8L2RsPg0KCQkJPC9kZD4NCgkJPC9kbD4NCgkJDQoJCTxkbCBjbGFzcz0i YWlyLWNvbW1lbnQiPg0KCQkJPGR0IGNsYXNzPSJ3aG8iPjxhIGhyZWY9Imh0dHA6 Ly9vcGl1bS5oYWJyYWhhYnIucnUvIj5vcGl1bTwvYT4mbmJzcDsmcmFycjs8L2R0 Pg0KCQkJPGRkPg0KCQkJCTxkbD4NCgkJCQkJPGR0PjxhIGNsYXNzPSJ3aGVyZSIg aHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9ibG9ncy9oYXJkd2FyZS8iPtCW0LXQ u9C10LfQvjwvYT4mbmJzcDsmcmFycjs8L2R0Pg0KCQkJCQk8ZGQ+PGEgY2xhc3M9 InRvcGljIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dzL2hhcmR3YXJl LzEyMDcyNC8jY29tbWVudF8zOTY4MDgzIj5MaW5hcm8g0LDQvdC+0L3RgdC40YDQ vtCy0LDQu9CwINC00LXRiNC10LLRg9GOINC/0LvQsNGC0YMg0LTQu9GPIG9wZW5z b3VyY2Ug0YDQsNC30YDQsNCx0L7RgtGH0LjQutC+0LI8L2E+Jm5ic3A7PHNwYW4g Y2xhc3M9InRvdGFsIj41NTwvc3Bhbj48L2RkPg0KCQkJCTwvZGw+DQoJCQk8L2Rk Pg0KCQk8L2RsPg0KCQkNCgkJPGRsIGNsYXNzPSJhaXItY29tbWVudCI+DQoJCQk8 ZHQgY2xhc3M9IndobyI+PGEgaHJlZj0iaHR0cDovL2J1cnlfbWVfaW5fc21va2Uu aGFicmFoYWJyLnJ1LyI+YnVyeV9tZV9pbl9zbW9rZTwvYT4mbmJzcDsmcmFycjs8 L2R0Pg0KCQkJPGRkPg0KCQkJCTxkbD4NCgkJCQkJPGR0PjxhIGNsYXNzPSJ3aGVy ZSIgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9jb21wYW55L3lhbmRleC9ibG9n LyI+0JHQu9C+0LMg0LrQvtC80L/QsNC90LjQuCDQr9C90LTQtdC60YE8L2E+Jm5i c3A7JnJhcnI7PC9kdD4NCgkJCQkJPGRkPjxhIGNsYXNzPSJ0b3BpYyIgaHJlZj0i aHR0cDovL2hhYnJhaGFici5ydS9jb21wYW55L3lhbmRleC9ibG9nLzEyMDg4Mi8j Y29tbWVudF8zOTY4MDcwIj7Qr9C90LTQtdC60YEg0YTQuNC90LDQvdGB0LjRgNGD 0LXRgiDCq9CU0LfQtdC90LzQsNC90LjCuzwvYT4mbmJzcDs8c3BhbiBjbGFzcz0i dG90YWwiPjMyPC9zcGFuPjwvZGQ+DQoJCQkJPC9kbD4NCgkJCTwvZGQ+DQoJCTwv ZGw+DQoJCQ0KCQk8ZGwgY2xhc3M9ImFpci1jb21tZW50Ij4NCgkJCTxkdCBjbGFz cz0id2hvIj48YSBocmVmPSJodHRwOi8vQWxleDIxN1Zpc2guaGFicmFoYWJyLnJ1 LyI+QWxleDIxN1Zpc2g8L2E+Jm5ic3A7JnJhcnI7PC9kdD4NCgkJCTxkZD4NCgkJ CQk8ZGw+DQoJCQkJCTxkdD48YSBjbGFzcz0id2hlcmUiIGhyZWY9Imh0dHA6Ly9o YWJyYWhhYnIucnUvYmxvZ3MvaHVtb3VyLyI+0KXQsNCx0YDQsNCu0LzQvtGAPC9h PiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQkJCTxkZD48YSBjbGFzcz0idG9waWMiIGhy ZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvYmxvZ3MvaHVtb3VyLzEyMDkwNS8jY29t bWVudF8zOTY4MDY5Ij7QmtCw0L3RhtC10YDQvtCz0LXQvdC90YvQtSDQuNC30LvR g9GH0LXQvdC40Y8uINCh0LrQsNC90LTQsNC70YssINC40L3RgtGA0LjQs9C4LCDR gNCw0YHRgdC70LXQtNC+0LLQsNC90LjRjyE8L2E+Jm5ic3A7PHNwYW4gY2xhc3M9 InRvdGFsIj40PC9zcGFuPjwvZGQ+DQoJCQkJPC9kbD4NCgkJCTwvZGQ+DQoJCTwv ZGw+DQoJCQ0KCQk8ZGwgY2xhc3M9ImFpci1jb21tZW50Ij4NCgkJCTxkdCBjbGFz cz0id2hvIj48YSBocmVmPSJodHRwOi8vU2hhZGRpeC5oYWJyYWhhYnIucnUvIj5T aGFkZGl4PC9hPiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQk8ZGQ+DQoJCQkJPGRsPg0K CQkJCQk8ZHQ+PGEgY2xhc3M9IndoZXJlIiBocmVmPSJodHRwOi8vaGFicmFoYWJy LnJ1L2Jsb2dzL25ldC8iPi5ORVQ8L2E+Jm5ic3A7JnJhcnI7PC9kdD4NCgkJCQkJ PGRkPjxhIGNsYXNzPSJ0b3BpYyIgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9i bG9ncy9uZXQvMTIwNzU1LyNjb21tZW50XzM5NjgwNjYiPtCh0YLQsNCx0LjRgtGM INC40LvQuCDQvdC1INGB0YLQsNCx0LjRgtGMINGA0LXQv9C+0LfQuNGC0L7RgNC4 0Lg/PC9hPiZuYnNwOzxzcGFuIGNsYXNzPSJ0b3RhbCI+Mzwvc3Bhbj48L2RkPg0K CQkJCTwvZGw+DQoJCQk8L2RkPg0KCQk8L2RsPg0KCQkNCgkJPCEtLSAvLyDQodGC 0YDQvtGH0LrQsCDQsiDQv9GA0Y/QvNC+0Lwg0Y3RhNC40YDQtSAtLT4NCgkJPGRp diBjbGFzcz0iYWxsIj4mIzE3MTsgPGEgaHJlZj0iL2xpdmUvIj7QstC10YHRjCDQ v9GA0Y/QvNC+0Lkg0Y3RhNC40YA8L2E+PC9kaXY+DQoJCQ0KCQkJDQoJCTwvZGl2 Pg0KCQk8L2Rpdj48IS0tIC8vIGZvciBib3R0b20gcm91bmRlZCBjb3JuZXJzIC0t Pg0KPC9kaXY+DQoNCgo8ZGl2IGNsYXNzPSJsaXZlIGhlbHAiIHN0eWxlPSJiYWNr Z3JvdW5kOnVybCgvaS9jb21wYW5pZXMvbWljcm9zb2Z0L3ZzX2Zvbi5naWYpIG5v LXJlcGVhdCAwIDAgI0YwRjBFNzsiPgoJPGRpdiBjbGFzcz0iYmctYm90dC1yIj48 ZGl2IGNsYXNzPSJiZy1ib3R0LWwiPgoJCTxkaXYgY2xhc3M9InNpZGUtc2lkZSI+ CgkJCTxoMz7QodC+0LLQtdGC0YsgPGEgaHJlZj0iaHR0cDovL2Nsay5hdGRtdC5j b20vTVJSL2dvLzMyMzYyNjgzMy9kaXJlY3QvMDEvIj48aW1nIHNyYz0nL2kvY29t cGFuaWVzL21pY3Jvc29mdC92c19sb2dvLnBuZycgYWx0PSdNaWNyb3NvZnQgVmlz dWFsIFN0dWRpbycvPjwvYT48L2gzPgoJCQk8dWw+CgkJCQkKCQkJCTxsaT48YSBo cmVmPSJodHRwOi8vYmxvZ3MubXNkbi5jb20vYi9ydXNhcmFmb3JkL2FyY2hpdmUv MjAxMS8wNS8wMi8xMDE1OTkzNi5hc3B4Ij7Ql9C90LDQtdGC0LUg0LvQuCDQstGL LCDRh9GC0L7igKYg4oSWMjQ2OiBWaXN1YWwgU3R1ZGlvINCw0LLRgtC+0LzQsNGC 0LjRh9C10YHQutC4INGB0L7RhdGA0LDQvdGP0LXRgiDRgtC10LrRg9GJ0LjQtSDQ vdCw0YHRgtGA0L7QudC60Lgg0LrQsNC20LTRi9C5INGA0LDQtywg0LrQvtCz0LTQ sCDQstGLINC30LDQutGA0YvQstCw0LXRgtC1IFZTPzwvYT4gPHNtYWxsPjIg0LzQ sNGPIDIwMTE8L3NtYWxsPjwvbGk+CgkJCQkKCQkJCTxsaT48YSBocmVmPSJodHRw Oi8vYmxvZ3MubXNkbi5jb20vYi9ydXNhcmFmb3JkL2FyY2hpdmUvMjAxMS8wNC8w NS8xMDE0OTg0My5hc3B4Ij7QotC10YXQvdC40YfQtdGB0LrQuNC1INC80LDRgtC1 0YDQuNCw0LvRiyDQv9C+INC/0YDQvtC00YPQutGC0LDQvCDQuCDRgNC10YjQtdC9 0LjRj9C8IE1pY3Jvc29mdCDQvdCwINGA0YPRgdGB0LrQvtC8INGP0LfRi9C60LUg LSDQsNC/0YDQtdC70YwgMjAxMTwvYT4gPHNtYWxsPjUg0LDQv9GA0LXQu9GPIDIw MTE8L3NtYWxsPjwvbGk+CgkJCQkKCQkJCTxsaT48YSBocmVmPSJodHRwOi8vYmxv Z3MubXNkbi5jb20vYi9ydXNhcmFmb3JkL2FyY2hpdmUvMjAxMS8wNC8wNS8xMDE0 OTg0Mi5hc3B4Ij7Ql9C90LDQtdGC0LUg0LvQuCDQstGLLCDRh9GC0L7igKYg4oSW MjQ1OiDQnNC+0LbQtdGC0LUg0YHQvtGF0YDQsNC90LjRgtGMINGC0LXQutGD0YnQ uNC1INC90LDRgdGC0YDQvtC50LrQuCDQv9C10YDQtdC0INC40LzQv9C+0YDRgtC+ 0Lwg0LjQu9C4INGB0LHRgNC+0YHQvtC8PzwvYT4gPHNtYWxsPjUg0LDQv9GA0LXQ u9GPIDIwMTE8L3NtYWxsPjwvbGk+CgkJCQkKCQkJCTxsaT48YSBocmVmPSJodHRw Oi8vYmxvZ3MubXNkbi5jb20vYi9ydXNhcmFmb3JkL2FyY2hpdmUvMjAxMS8wMy8y Mi8xMDE0NDMyNi5hc3B4Ij7Ql9C90LDQtdGC0LUg0LvQuCDQstGL4oCmIOKEljI0 NDog0JIg0YfQtdC8INGA0LDQt9C90LjRhtCwINC80LXQttC00YMg0YHQsdGA0L7R gdC+0Lwg0L3QsNGB0YLRgNC+0LXQuiDQuCDQuNGFINC40LzQv9C+0YDRgtC+0Lw/ PC9hPiA8c21hbGw+MjIg0LzQsNGA0YLQsCAyMDExPC9zbWFsbD48L2xpPgoJCQkJ CgkJCQk8bGk+PGEgaHJlZj0iaHR0cDovL2Jsb2dzLm1zZG4uY29tL2IvcnVzYXJh Zm9yZC9hcmNoaXZlLzIwMTEvMDMvMjAvMTAxNDM1NDQuYXNweCI+0JfQvdCw0LXR gtC1INC70Lgg0LLRiywg0YfRgtC+4oCmIOKEljI0Mzog0JzQvtC20LXRgtC1INC0 0L7QsdCw0LLQu9GP0YLRjCDRgdCy0L7QuCDRhNCw0LnQu9GLINCyINGB0L/QuNGB 0L7QuiDQvdCwINGB0YLRgNCw0L3QuNGG0LUgSW1wb3J0IC8gRXhwb3J0IFNldHRp bmdzIOKAkyBSZXNldD88L2E+IDxzbWFsbD4yMCDQvNCw0YDRgtCwIDIwMTE8L3Nt YWxsPjwvbGk+CgkJCQkKCQkJCTxsaT48YSBocmVmPSJodHRwOi8vYmxvZ3MubXNk bi5jb20vYi9ydXNhcmFmb3JkL2FyY2hpdmUvMjAxMS8wMy8wOS8xMDEzODQ5OC5h c3B4Ij7QoNGP0LQg0LLQsNC20L3Ri9GFINGB0L7QsdGL0YLQuNC5INCyINGB0LXQ vNC10LnRgdGC0LLQtSDQuNC90YHRgtGA0YPQvNC10L3RgtC+0LIgVmlzdWFsIFN0 dWRpbyAyMDEwPC9hPiA8c21hbGw+OSDQvNCw0YDRgtCwIDIwMTE8L3NtYWxsPjwv bGk+CgkJCQkKCQkJCTxsaT48YSBocmVmPSJodHRwOi8vYmxvZ3MubXNkbi5jb20v Yi9ydXNhcmFmb3JkL2FyY2hpdmUvMjAxMS8wMy8wMS8xMDEzNTM5Ny5hc3B4Ij7Q l9C90LDQtdGC0LUg0LvQuCDQstGLLCDQutCw0LrigKYg4oSWMjQyOiDQktGL0LfR i9Cy0LDRgtGMINC80LDQutGA0L7RgdGLINGBINC60LvQsNCy0LjQsNGC0YPRgNGL ICjQuNC70Lgg0LrQsNC6INCx0YvRgdGC0YDQviDRg9Cy0LXQu9C40YfQuNGC0Ywv 0YPQvNC10L3RjNGI0LjRgtGMINGI0YDQuNGE0YIg0YLQtdC60YHRgtCwINCyINCy 0LDRiNC10Lwg0YDQtdC00LDQutGC0L7RgNC1KT88L2E+IDxzbWFsbD4xINC80LDR gNGC0LAgMjAxMTwvc21hbGw+PC9saT4KCQkJCQoJCQkJPGxpPjxhIGhyZWY9Imh0 dHA6Ly9ibG9ncy5tc2RuLmNvbS9iL3J1c2FyYWZvcmQvYXJjaGl2ZS8yMDExLzAy LzI1LzEwMTM0MDI4LmFzcHgiPtCX0L3QsNC10YLQtSDQu9C4INCy0YssINGH0YLQ vjog4oSWMjQxOiDQnNC+0LbQtdGC0LUg0LLQvtGB0L/QvtC70YzQt9C+0LLQsNGC 0YzRgdGPINC+0LrQvdC+0Lwg0LjQvdGC0LXRgNC/0YDQtdGC0LDRgtC+0YDQsCwg 0LrQsNC6INC/0YDQvtCz0YDQsNC80LzQuNGA0YPQtdC80YvQvCDQutCw0LvRjNC6 0YPQu9GP0YLQvtGA0L7QvCDQuNC70Lgg0LjQvdGB0YLRgNGD0LzQtdC90YLQvtC8 INC+0YLQu9Cw0LTQutC4PzwvYT4gPHNtYWxsPjI1INGE0LXQstGA0LDQu9GPIDIw MTE8L3NtYWxsPjwvbGk+CgkJCQkKCQkJCTxsaT48YSBocmVmPSJodHRwOi8vYmxv Z3MubXNkbi5jb20vYi9ydXNhcmFmb3JkL2FyY2hpdmUvMjAxMS8wMi8xOC8xMDEz MTI3OC5hc3B4Ij7Ql9C90LDQtdGC0LUg0LvQuCDQstGLLCDQutCw0LrigKYg4oSW MjQwOiDQo9C00LDQu9C40YLRjCDQvdC10LjRgdC/0L7Qu9GM0LfRg9C10LzRi9C1 INC00LjRgNC10LrRgtC40LLRiyDCq3VzaW5nwrs/PC9hPiA8c21hbGw+MTgg0YTQ tdCy0YDQsNC70Y8gMjAxMTwvc21hbGw+PC9saT4KCQkJCQoJCQkJPGxpPjxhIGhy ZWY9Imh0dHA6Ly9ibG9ncy5tc2RuLmNvbS9iL3J1c2FyYWZvcmQvYXJjaGl2ZS8y MDExLzAyLzExLzEwMTI3ODk4LmFzcHgiPtCS0LDRiNC1INC80L3QtdC90LjQtSDQ viBWaXN1YWwgU3R1ZGlvIDIwMTAg4oCTINC+0L/RgNC+0YEg0LrQvtC80LDQvdC0 0Ysg0YDQsNC30YDQsNCx0L7RgtC60LggVmlzdWFsIFN0dWRpby48L2E+IDxzbWFs bD4xMSDRhNC10LLRgNCw0LvRjyAyMDExPC9zbWFsbD48L2xpPgoJCQkJCgkJCTwv dWw+CgkJPC9kaXY+CgkJPGRpdiBzdHlsZT0iZmxvYXQ6bGVmdDttYXJnaW4tbGVm dDoyMHB4O2NvbG9yOiM5OTk7Ij48YSBocmVmPSJodHRwOi8vY2xrLmF0ZG10LmNv bS9NUlIvZ28vMzIzNjI2ODMyL2RpcmVjdC8wMS8iPtCh0LrQsNGH0LDRgtGMwqDQ v9GA0L7QsdC90YPRjsKg0LLQtdGA0YHQuNGOPC9hPsKg4oaTPGltZyBzcmM9Imh0 dHA6Ly92aWV3LmF0ZG10LmNvbS9NUlIvdmlldy8zMjM2MjY4MzQvZGlyZWN0LzAx LyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPjwvZGl2PjxkaXYgY2xhc3M9J2FsbCcg c3R5bGU9J21hcmdpbi10b3A6MDtmbG9hdDpyaWdodDsnPsKrwqA8YSBocmVmPSdo dHRwOi8vY2xrLmF0ZG10LmNvbS9NUlIvZ28vMzIzNjI2ODMxL2RpcmVjdC8wMS8n PtCy0YHQtcKg0YHQvtCy0LXRgtGLPC9hPjwvZGl2PgoJPC9kaXY+PC9kaXY+PCEt LSAvLyBmb3IgYm90dG9tIHJvdW5kZWQgY29ybmVycyAtLT4KCjwvZGl2PgoNCg0K DQoNCg0KCSAgCgoJPGRpdiBjbGFzcz0ibGl2ZSBiZXN0X2NvbXBhbnkiPgoKCQk8 ZGl2IGNsYXNzPSJiZy1ib3R0LXIiPjwhLS0gZm9yIGJvdHRvbSByb3VuZGVkIGNv cm5lcnMgLS0+CgkJPGRpdiBjbGFzcz0iYmctYm90dC1sIj4KCgkJPGgzPtCa0L7Q vNC/0LDQvdC40Y8g0LTQvdGPIDxpbWcgc3JjPSIvaS9iZ19jaWNsZV9oZWxwLnBu ZyIgdGl0bGU9ItCa0L7QvNC/0LDQvdC40Y8sINGH0LXQuSDQv9C+0YHRgiDQvdCw 0LHRgNCw0Lsg0LzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB 0YLQstC+INCx0LDQu9C70L7QsiDRgdGA0LXQtNC4INCy0YHQtdGFCtC+0L/Rg9Cx 0LvQuNC60L7QstCw0L3QvdGL0YUg0LIg0LrQvtGA0L/QvtGA0LDRgtC40LLQvdGL 0YUg0LHQu9C+0LPQsNGFINC/0L7RgdGC0LDRhSDQt9CwINC/0YDQvtGI0LXQtNGI 0LjQtSDRgdGD0YLQutC4LiDQo9GH0LjRgtGL0LLQsNGO0YLRgdGPINC/0L7RgdGC 0YssINC00LvRjyDQutC+0YLQvtGA0YvRhSDQuNGB0YLQtdC6INGB0YDQvtC6INCz 0L7Qu9C+0YHQvtCy0LDQvdC40Y8gPGJyPigzINC00L3RjyDRgSDQvNC+0LzQtdC9 0YLQsCDQv9GD0LHQu9C40LrQsNGG0LjQuCkuIiBjbGFzcz0iaGVscC10aXAiPjwv aDM+CgkJPGRpdiBjbGFzcz0iY29tcGFueV9pbmZvIj4KCQkJPGRpdiBjbGFzcz0i bmFtZSI+CgkJCSA8aW1nIGNsYXNzPSJmYXZpY29uIiBzcmM9Ii9tZWRpYS9jb21w YW55L2Zhdmljb24vMTIvZmF2aWNvbl8xMTgzLmljbyIgYWx0PSJLZWJydW0gQ29y cC4iIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgLz4KCQkJIDxhIGhyZWY9Imh0dHA6 Ly9oYWJyYWhhYnIucnUvY29tcGFueS9rZWJydW0vIiBjbGFzcz0idGl0bGUiPktl YnJ1bSBDb3JwLjwvYT4KCQkJPC9kaXY+CgoJCQk8cD7Qn9C+0YHQu9C10LTQvdC4 0Lkg0L/QvtGB0YI6CgkJCQk8YSBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Nv bXBhbnkva2VicnVtL2Jsb2cvMTIwNTk1LyI+TGludXgg4oCUINGB0LTQtdC70LDQ uSDQtdCz0L4g0LfQsNGJ0LjRidGR0L3QvdC10LkhPC9hPgoJCQk8L3A+CgkJCTxk aXYgY2xhc3M9Imxpa2UiPgogIAkJCTxkaXYgaWQ9ImZhbnNfY291bnQiPjU1INC/ 0L7QutC70L7QvdC90LjQutC+0LI8L2Rpdj4KICAJCQkKICAJCQkJPGEgaHJlZj0i IyIgaWQ9ImpzLWFkZEZhbiIgY2xhc3M9ImpzLWFkZEZhbi1Db21wYW55ICIgdGl0 bGU9ItCc0L3QtSDQvdGA0LDQstC40YLRgdGPINC60L7QvNC/0LDQvdC40Y8iIG9u Y2xpY2s9ImNvbXBhbmllc0hhbmRsZXIuZmFuU2VuZCgxMTgzLCB0cnVlKTsgdGhp cy5hZGRDbGFzcygnaGlkZGVuJyk7ICQoJ2pzLXJlbW92ZUZhbicpLnJlbW92ZUNs YXNzKCdoaWRkZW4nKTsgcmV0dXJuIGZhbHNlOyI+0J/RgNC40YHQvtC10LTQuNC9 0LjRgtGM0YHRjzwvYT4KICAJCQkJPGEgaHJlZj0iIyIgaWQ9ImpzLXJlbW92ZUZh biIgY2xhc3M9ImpzLXJlbW92ZUZhbi1Db21wYW55IGhpZGRlbiIgdGl0bGU9ItCa 0L7QvNC/0LDQvdC40Y8g0LzQvdC1INCx0L7Qu9GM0YjQtSDQvdC1INC90YDQsNCy 0LjRgtGB0Y8iIG9uY2xpY2s9ImNvbXBhbmllc0hhbmRsZXIuZmFuU2VuZCgxMTgz LCBmYWxzZSk7IHRoaXMuYWRkQ2xhc3MoJ2hpZGRlbicpOyAkKCdqcy1hZGRGYW4n KS5yZW1vdmVDbGFzcygnaGlkZGVuJyk7IHJldHVybiBmYWxzZTsiPtCe0YLQv9C4 0YHQsNGC0YzRgdGPINC+0YIg0LHQu9C+0LPQsCDRjdGC0L7QuSDQutC+0LzQv9Cw 0L3QuNC4PC9hPgogIAkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCgoJCTwvZGl2PgoJ CTwvZGl2PjwhLS0gLy8gZm9yIGJvdHRvbSByb3VuZGVkIGNvcm5lcnMgLS0+Cgk8 L2Rpdj4KCgoKDQoJCQ0KPGRpdiBjbGFzcz0ibGl2ZSBuZXctZmVlZGJhY2tzIj4N CgkNCgkJPGRpdiBjbGFzcz0iYmctYm90dC1yIj48IS0tIGZvciBib3R0b20gcm91 bmRlZCBjb3JuZXJzIC0tPg0KCQk8ZGl2IGNsYXNzPSJiZy1ib3R0LWwiPg0KCQ0K CQk8aDM+USZhbXA7QSZuYnNwOyYjODU5NTs8L2gzPg0KCQkNCgkJPCEtLSDQodGC 0YDQvtGH0LrQsCDQsiDQv9GA0Y/QvNC+0Lwg0Y3RhNC40YDQtSAtLT4NCgkJDQoJ CTxkbCBjbGFzcz0iYWlyLWNvbW1lbnQiPg0KCQkJPGR0IGNsYXNzPSJ3aG8iPjxh IGhyZWY9Imh0dHA6Ly9Cb2J5bGV2LmhhYnJhaGFici5ydS8iPkJvYnlsZXY8L2E+ Jm5ic3A7JnJhcnI7PC9kdD4NCgkJCTxkZD4NCgkJCQk8ZGw+DQoJCQkJCTxkZD48 YSBjbGFzcz0idG9waWMiIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvcWEvODMx MC8jY29tbWVudF80Mjk5NiI+0J/QvtC00YHQutCw0LbQuNGC0LUg0LzRi9GI0Ywh PC9hPiZuYnNwOzxzcGFuIGNsYXNzPSJ0b3RhbCI+ODwvc3Bhbj48L2RkPg0KCQkJ CTwvZGw+DQoJCQk8L2RkPg0KCQk8L2RsPg0KCQkNCgkJPGRsIGNsYXNzPSJhaXIt Y29tbWVudCI+DQoJCQk8ZHQgY2xhc3M9IndobyI+PGEgaHJlZj0iaHR0cDovL2Jl bGsuaGFicmFoYWJyLnJ1LyI+YmVsazwvYT4mbmJzcDsmcmFycjs8L2R0Pg0KCQkJ PGRkPg0KCQkJCTxkbD4NCgkJCQkJPGRkPjxhIGNsYXNzPSJ0b3BpYyIgaHJlZj0i aHR0cDovL2hhYnJhaGFici5ydS9xYS84MzA5LyNjb21tZW50XzQyOTk0Ij7QodGL 0L/Qu9GO0YLRgdGPINGD0LLQtdC00L7QvNC70LXQvdC40Y8g0L4g0L3QtdC00L7R iNC10LTRiNC10Lwg0YHQv9Cw0LzQtTwvYT4mbmJzcDs8c3BhbiBjbGFzcz0idG90 YWwiPjI8L3NwYW4+PC9kZD4NCgkJCQk8L2RsPg0KCQkJPC9kZD4NCgkJPC9kbD4N CgkJDQoJCTxkbCBjbGFzcz0iYWlyLWNvbW1lbnQiPg0KCQkJPGR0IGNsYXNzPSJ3 aG8iPjxhIGhyZWY9Imh0dHA6Ly9NaXhhbHljaC5oYWJyYWhhYnIucnUvIj5NaXhh bHljaDwvYT4mbmJzcDsmcmFycjs8L2R0Pg0KCQkJPGRkPg0KCQkJCTxkbD4NCgkJ CQkJPGRkPjxhIGNsYXNzPSJ0b3BpYyIgaHJlZj0iaHR0cDovL2hhYnJhaGFici5y dS9xYS84Mjg0LyNjb21tZW50XzQyOTg4Ij7Qo9GB0LrQvtGA0LXQvdC40LUg0YDQ sNCx0L7RgtGLINC/0YDQvtCz0YDQsNC80LzQuNGB0YLQsDwvYT4mbmJzcDs8c3Bh biBjbGFzcz0idG90YWwiPjE0PC9zcGFuPjwvZGQ+DQoJCQkJPC9kbD4NCgkJCTwv ZGQ+DQoJCTwvZGw+DQoJCQ0KCQk8ZGwgY2xhc3M9ImFpci1jb21tZW50Ij4NCgkJ CTxkdCBjbGFzcz0id2hvIj48YSBocmVmPSJodHRwOi8vaGltaWsuaGFicmFoYWJy LnJ1LyI+aGltaWs8L2E+Jm5ic3A7JnJhcnI7PC9kdD4NCgkJCTxkZD4NCgkJCQk8 ZGw+DQoJCQkJCTxkZD48YSBjbGFzcz0idG9waWMiIGhyZWY9Imh0dHA6Ly9oYWJy YWhhYnIucnUvcWEvODMxMi8jYW5zd2VyXzM1NDAyIj7QoNCw0LHQvtGC0LAg0JXQ stGA0L7Qv9C1OiDQp9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0LfQvdCw0YLR jD88L2E+Jm5ic3A7PHNwYW4gY2xhc3M9InRvdGFsIj4yPC9zcGFuPjwvZGQ+DQoJ CQkJPC9kbD4NCgkJCTwvZGQ+DQoJCTwvZGw+DQoJCQ0KCQk8ZGwgY2xhc3M9ImFp ci1jb21tZW50Ij4NCgkJCTxkdCBjbGFzcz0id2hvIj48YSBocmVmPSJodHRwOi8v dXNhdGlrb3YuaGFicmFoYWJyLnJ1LyI+dXNhdGlrb3Y8L2E+Jm5ic3A7JnJhcnI7 PC9kdD4NCgkJCTxkZD4NCgkJCQk8ZGw+DQoJCQkJCTxkZD48YSBjbGFzcz0idG9w aWMiIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvcWEvODMxMS8jYW5zd2VyXzM1 NDAxIj5wZGYgLSZndDsganBnINC90LAgRnJlZUJTRDwvYT4mbmJzcDs8c3BhbiBj bGFzcz0idG90YWwiPjI8L3NwYW4+PC9kZD4NCgkJCQk8L2RsPg0KCQkJPC9kZD4N CgkJPC9kbD4NCgkJDQoJCTxkbCBjbGFzcz0iYWlyLWNvbW1lbnQiPg0KCQkJPGR0 IGNsYXNzPSJ3aG8iPjxhIGhyZWY9Imh0dHA6Ly9NaXhhbHljaC5oYWJyYWhhYnIu cnUvIj5NaXhhbHljaDwvYT4mbmJzcDsmcmFycjs8L2R0Pg0KCQkJPGRkPg0KCQkJ CTxkbD4NCgkJCQkJPGRkPjxhIGNsYXNzPSJ0b3BpYyIgaHJlZj0iaHR0cDovL2hh YnJhaGFici5ydS9xYS84MzA2LyNhbnN3ZXJfMzUzOTgiPtCl0L7RgdGC0LjQvdCz INC60LDRgNGC0LjQvdC+0Log0LTQu9GPINGB0YLQsNGC0LXQuTwvYT4mbmJzcDs8 c3BhbiBjbGFzcz0idG90YWwiPjU8L3NwYW4+PC9kZD4NCgkJCQk8L2RsPg0KCQkJ PC9kZD4NCgkJPC9kbD4NCgkJDQoJCTxkbCBjbGFzcz0iYWlyLWNvbW1lbnQiPg0K CQkJPGR0IGNsYXNzPSJ3aG8iPjxhIGhyZWY9Imh0dHA6Ly9KdWdnbGVyLmhhYnJh aGFici5ydS8iPkp1Z2dsZXI8L2E+Jm5ic3A7JnJhcnI7PC9kdD4NCgkJCTxkZD4N CgkJCQk8ZGw+DQoJCQkJCTxkZD48YSBjbGFzcz0idG9waWMiIGhyZWY9Imh0dHA6 Ly9oYWJyYWhhYnIucnUvcWEvODMwNS8jY29tbWVudF80Mjk3NyI+0JHRi9GB0YLR gNCw0Y8g0L/QvtGC0LXRgNGPINC30LDRgNGP0LTQsCDQvdCwINGD0YHRgtGA0L7Q udGB0YLQstCw0YUsINC/0L7QtNC60LvRjtGH0LXQvdGL0YUg0LogV2ktRmkuINCa 0YLQviDRgdGC0LDQu9C60LjQstCw0LvRgdGPPzwvYT4mbmJzcDs8c3BhbiBjbGFz cz0idG90YWwiPjM8L3NwYW4+PC9kZD4NCgkJCQk8L2RsPg0KCQkJPC9kZD4NCgkJ PC9kbD4NCgkJDQoJCTxkbCBjbGFzcz0iYWlyLWNvbW1lbnQiPg0KCQkJPGR0IGNs YXNzPSJ3aG8iPjxhIGhyZWY9Imh0dHA6Ly9EZXVzTW9kdXMuaGFicmFoYWJyLnJ1 LyI+RGV1c01vZHVzPC9hPiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQk8ZGQ+DQoJCQkJ PGRsPg0KCQkJCQk8ZGQ+PGEgY2xhc3M9InRvcGljIiBocmVmPSJodHRwOi8vaGFi cmFoYWJyLnJ1L3FhLzgyOTcvI2Fuc3dlcl8zNTM5NSI+0JrRgtC+LdC90LjQsdGD 0LTRjCDRhdC+0YfQtdGCINC90LDQv9C40YHQsNGC0Ywg0LzRg9C30YvQutGDINCy INGB0YLQuNC70LUgOGJpdCDQtNC70Y8g0LHQtdGB0L/Qu9Cw0YLQvdC+0LPQviDQ v9GA0L7QtdC60YLQsD88L2E+Jm5ic3A7PHNwYW4gY2xhc3M9InRvdGFsIj4zPC9z cGFuPjwvZGQ+DQoJCQkJPC9kbD4NCgkJCTwvZGQ+DQoJCTwvZGw+DQoJCQ0KCQk8 ZGwgY2xhc3M9ImFpci1jb21tZW50Ij4NCgkJCTxkdCBjbGFzcz0id2hvIj48YSBo cmVmPSJodHRwOi8vRmVOVU1lLmhhYnJhaGFici5ydS8iPkZlTlVNZTwvYT4mbmJz cDsmcmFycjs8L2R0Pg0KCQkJPGRkPg0KCQkJCTxkbD4NCgkJCQkJPGRkPjxhIGNs YXNzPSJ0b3BpYyIgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9xYS83OTc5LyNj b21tZW50XzQyOTc0Ij7QntC/0YLQuNC80LDQu9GM0L3Ri9C5INCy0YvQstC+0LQg Qml0Q29pbiDQsiDQvdCw0LvQuNGH0L3Ri9C1INC40LvQuCBRSVdJPC9hPiZuYnNw OzxzcGFuIGNsYXNzPSJ0b3RhbCI+Mzwvc3Bhbj48L2RkPg0KCQkJCTwvZGw+DQoJ CQk8L2RkPg0KCQk8L2RsPg0KCQkNCgkJPGRsIGNsYXNzPSJhaXItY29tbWVudCI+ DQoJCQk8ZHQgY2xhc3M9IndobyI+PGEgaHJlZj0iaHR0cDovL3ZpcGVyZXQuaGFi cmFoYWJyLnJ1LyI+dmlwZXJldDwvYT4mbmJzcDsmcmFycjs8L2R0Pg0KCQkJPGRk Pg0KCQkJCTxkbD4NCgkJCQkJPGRkPjxhIGNsYXNzPSJ0b3BpYyIgaHJlZj0iaHR0 cDovL2hhYnJhaGFici5ydS9xYS84Mjg5LyNjb21tZW50XzQyOTczIj4mcXVvdDvQ n9GA0L7RgdC70YPRiNC40LLQsNC90LjQtSZxdW90OyDRgdC10YDQstC10YDQsCDQ ktCa0L7QvdGC0LDQutGC0LU8L2E+Jm5ic3A7PHNwYW4gY2xhc3M9InRvdGFsIj42 PC9zcGFuPjwvZGQ+DQoJCQkJPC9kbD4NCgkJCTwvZGQ+DQoJCTwvZGw+DQoJCQ0K CQk8ZGwgY2xhc3M9ImFpci1jb21tZW50Ij4NCgkJCTxkdCBjbGFzcz0id2hvIj48 YSBocmVmPSJodHRwOi8vY2hpa3V5b25vay5oYWJyYWhhYnIucnUvIj5jaGlrdXlv bm9rPC9hPiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQk8ZGQ+DQoJCQkJPGRsPg0KCQkJ CQk8ZGQ+PGEgY2xhc3M9InRvcGljIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1 L3FhLzgyODIvI2NvbW1lbnRfNDI5NjkiPkhUTUw1INCyIEVjbGlwc2U8L2E+Jm5i c3A7PHNwYW4gY2xhc3M9InRvdGFsIj4zPC9zcGFuPjwvZGQ+DQoJCQkJPC9kbD4N CgkJCTwvZGQ+DQoJCTwvZGw+DQoJCQ0KCQk8ZGwgY2xhc3M9ImFpci1jb21tZW50 Ij4NCgkJCTxkdCBjbGFzcz0id2hvIj48YSBocmVmPSJodHRwOi8vYmxvLmhhYnJh aGFici5ydS8iPmJsbzwvYT4mbmJzcDsmcmFycjs8L2R0Pg0KCQkJPGRkPg0KCQkJ CTxkbD4NCgkJCQkJPGRkPjxhIGNsYXNzPSJ0b3BpYyIgaHJlZj0iaHR0cDovL2hh YnJhaGFici5ydS9xYS84Mjk1LyNjb21tZW50XzQyOTY1Ij5CYXNoLCB0cmFwINGB 0LjQs9C90LDQu9CwPC9hPiZuYnNwOzxzcGFuIGNsYXNzPSJ0b3RhbCI+Mjwvc3Bh bj48L2RkPg0KCQkJCTwvZGw+DQoJCQk8L2RkPg0KCQk8L2RsPg0KCQkNCgkJPGRs IGNsYXNzPSJhaXItY29tbWVudCI+DQoJCQk8ZHQgY2xhc3M9IndobyI+PGEgaHJl Zj0iaHR0cDovL0hvdGJsYWNrLmhhYnJhaGFici5ydS8iPkhvdGJsYWNrPC9hPiZu YnNwOyZyYXJyOzwvZHQ+DQoJCQk8ZGQ+DQoJCQkJPGRsPg0KCQkJCQk8ZGQ+PGEg Y2xhc3M9InRvcGljIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L3FhLzgzMDIv I2NvbW1lbnRfNDI5NjIiPlNreXBlICsg0YHQstC+0YDQsNGH0LjQstCw0L3QuNC1 INCyINGC0YDQtdC5PC9hPiZuYnNwOzxzcGFuIGNsYXNzPSJ0b3RhbCI+Mjwvc3Bh bj48L2RkPg0KCQkJCTwvZGw+DQoJCQk8L2RkPg0KCQk8L2RsPg0KCQkNCgkJPGRs IGNsYXNzPSJhaXItY29tbWVudCI+DQoJCQk8ZHQgY2xhc3M9IndobyI+PGEgaHJl Zj0iaHR0cDovL2Zvenp5LmhhYnJhaGFici5ydS8iPmZvenp5PC9hPiZuYnNwOyZy YXJyOzwvZHQ+DQoJCQk8ZGQ+DQoJCQkJPGRsPg0KCQkJCQk8ZGQ+PGEgY2xhc3M9 InRvcGljIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L3FhLzgyODEvI2NvbW1l bnRfNDI5NjAiPtCa0LDQuiDRg9Cy0LXQu9C40YfQuNGC0YwgJnF1b3Q70LHRg9GE 0LXRgCZxdW90OyDQutC+0L3RgdC+0LvQuCBEZWJpYW4/PC9hPiZuYnNwOzxzcGFu IGNsYXNzPSJ0b3RhbCI+Mzwvc3Bhbj48L2RkPg0KCQkJCTwvZGw+DQoJCQk8L2Rk Pg0KCQk8L2RsPg0KCQkNCgkJPGRsIGNsYXNzPSJhaXItY29tbWVudCI+DQoJCQk8 ZHQgY2xhc3M9IndobyI+PGEgaHJlZj0iaHR0cDovL0FuZHJld3d3LmhhYnJhaGFi ci5ydS8iPkFuZHJld3d3PC9hPiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQk8ZGQ+DQoJ CQkJPGRsPg0KCQkJCQk8ZGQ+PGEgY2xhc3M9InRvcGljIiBocmVmPSJodHRwOi8v aGFicmFoYWJyLnJ1L3FhLzgxNzEvI2Fuc3dlcl8zNTM4NiI+0JLRi9Cx0L7RgCDR gNC+0YPRgtC10YDQsDwvYT4mbmJzcDs8c3BhbiBjbGFzcz0idG90YWwiPjk8L3Nw YW4+PC9kZD4NCgkJCQk8L2RsPg0KCQkJPC9kZD4NCgkJPC9kbD4NCgkJDQoJCTxk bCBjbGFzcz0iYWlyLWNvbW1lbnQiPg0KCQkJPGR0IGNsYXNzPSJ3aG8iPjxhIGhy ZWY9Imh0dHA6Ly9hY2hla2FsaW4uaGFicmFoYWJyLnJ1LyI+YWNoZWthbGluPC9h PiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQk8ZGQ+DQoJCQkJPGRsPg0KCQkJCQk8ZGQ+ PGEgY2xhc3M9InRvcGljIiBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L3FhLzgz MDQvI2NvbW1lbnRfNDI5NTQiPtCa0LDQuiDQt9Cw0L/QuNGB0LDRgtGMINC00LXQ udGB0YLQstC40Y8g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10Lkg0L3QsCDRgNCw 0LHQvtGH0LjRhSDRgdGC0LDQvdGG0LjRj9GFICjQvdCw0L/RgC4sINC30LDQv9C4 0YHQsNGC0Ywg0L/QvtGC0L7QuiBWTkMg0YHQviDRgdGC0LDQvdGG0LjQuCk/PC9h PiZuYnNwOzxzcGFuIGNsYXNzPSJ0b3RhbCI+Mjwvc3Bhbj48L2RkPg0KCQkJCTwv ZGw+DQoJCQk8L2RkPg0KCQk8L2RsPg0KCQkNCgkJPGRsIGNsYXNzPSJhaXItY29t bWVudCI+DQoJCQk8ZHQgY2xhc3M9IndobyI+PGEgaHJlZj0iaHR0cDovL2luZm9y bWEuaGFicmFoYWJyLnJ1LyI+aW5mb3JtYTwvYT4mbmJzcDsmcmFycjs8L2R0Pg0K CQkJPGRkPg0KCQkJCTxkbD4NCgkJCQkJPGRkPjxhIGNsYXNzPSJ0b3BpYyIgaHJl Zj0iaHR0cDovL2hhYnJhaGFici5ydS9xYS81MzI4LyNjb21tZW50XzQyOTUwIj7Q mtCw0Log0LfQsNGB0YLQsNCy0LjRgtGMINGA0LDQsdC+0YLQsNGC0Ywg0LzRi9GI 0LrRgyDQsiBNaWRuaWdodCBDb21tYW5kZXIn0LUg0YMgTWFjIE9TPzwvYT4mbmJz cDs8c3BhbiBjbGFzcz0idG90YWwiPjQ8L3NwYW4+PC9kZD4NCgkJCQk8L2RsPg0K CQkJPC9kZD4NCgkJPC9kbD4NCgkJDQoJCTxkbCBjbGFzcz0iYWlyLWNvbW1lbnQi Pg0KCQkJPGR0IGNsYXNzPSJ3aG8iPjxhIGhyZWY9Imh0dHA6Ly9hbnRvby5oYWJy YWhhYnIucnUvIj5hbnRvbzwvYT4mbmJzcDsmcmFycjs8L2R0Pg0KCQkJPGRkPg0K CQkJCTxkbD4NCgkJCQkJPGRkPjxhIGNsYXNzPSJ0b3BpYyIgaHJlZj0iaHR0cDov L2hhYnJhaGFici5ydS9xYS84MzAzLyNhbnN3ZXJfMzUzODEiPkltYWdpY2suINCa 0LDRh9C10YHRgtCy0L4g0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDQv9GA0Lgg0LrQ vtC90LLQtdGA0YLQsNGG0LjQuDwvYT4mbmJzcDs8c3BhbiBjbGFzcz0idG90YWwi PjE8L3NwYW4+PC9kZD4NCgkJCQk8L2RsPg0KCQkJPC9kZD4NCgkJPC9kbD4NCgkJ DQoJCTxkbCBjbGFzcz0iYWlyLWNvbW1lbnQiPg0KCQkJPGR0IGNsYXNzPSJ3aG8i PjxhIGhyZWY9Imh0dHA6Ly9qaW1taS5oYWJyYWhhYnIucnUvIj5qaW1taTwvYT4m bmJzcDsmcmFycjs8L2R0Pg0KCQkJPGRkPg0KCQkJCTxkbD4NCgkJCQkJPGRkPjxh IGNsYXNzPSJ0b3BpYyIgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9xYS84Mjg1 LyNjb21tZW50XzQyOTM3Ij7QntGI0LjQsdC60LAg0LIgUmVnRXhwIC0gcGhwPC9h PiZuYnNwOzxzcGFuIGNsYXNzPSJ0b3RhbCI+Mjwvc3Bhbj48L2RkPg0KCQkJCTwv ZGw+DQoJCQk8L2RkPg0KCQk8L2RsPg0KCQkNCgkJPGRsIGNsYXNzPSJhaXItY29t bWVudCI+DQoJCQk8ZHQgY2xhc3M9IndobyI+PGEgaHJlZj0iaHR0cDovL29waXVt LmhhYnJhaGFici5ydS8iPm9waXVtPC9hPiZuYnNwOyZyYXJyOzwvZHQ+DQoJCQk8 ZGQ+DQoJCQkJPGRsPg0KCQkJCQk8ZGQ+PGEgY2xhc3M9InRvcGljIiBocmVmPSJo dHRwOi8vaGFicmFoYWJyLnJ1L3FhLzgyOTIvI2NvbW1lbnRfNDI5MzQiPtCd0LUg 0LfQsNC/0YPRgdC60LDQtdGC0YHRjyB2bGMg0L/QvtC0IG1hYyBvcyBzbm93IGxl b3BhcmQ8L2E+Jm5ic3A7PHNwYW4gY2xhc3M9InRvdGFsIj4zPC9zcGFuPjwvZGQ+ DQoJCQkJPC9kbD4NCgkJCTwvZGQ+DQoJCTwvZGw+DQoJCQ0KDQoJCTxkaXYgY2xh c3M9ImFsbCI+JiMxNzE7IDxhIGhyZWY9Ii9xYS8iPtCy0YHQtSDQstC+0L/RgNC+ 0YHRizwvYT48L2Rpdj4NCgkJPC9kaXY+DQoJCTwvZGl2PjwhLS0gLy8gZm9yIGJv dHRvbSByb3VuZGVkIGNvcm5lcnMgLS0+DQo8L2Rpdj4NCg0KCQkKCQoJCgk8ZGl2 IGNsYXNzPSJyYXRpbmcgbGl2ZSBibG9ncyBjYXRlZ29yeV9ibG9ncyI+CgkJCgk8 ZGl2IGNsYXNzPSJiZy1ib3R0LXIiPjwhLS0gZm9yIGJvdHRvbSByb3VuZGVkIGNv cm5lcnMgLS0+Cgk8ZGl2IGNsYXNzPSJiZy1ib3R0LWwiPgoJCgkJPGgzPtCU0LXR gdC10YDRgiDihpM8L2gzPgoJCgkJPHRhYmxlPgoJCQoJCQk8dGJvZHk+PHRyPgoJ CQkJPCEtLSA8dGggd2lkdGg9IjUlIj48L3RoPiAvLy0tPgoJCQkJPHRoPjwvdGg+ CgkJCQk8dGggd2lkdGg9IjIyJSI+0KDQtdC50YLQuNC90LM8L3RoPgoJCQk8L3Ry PgoJCQkKCQkJPHRyPgoJCQkJPCEtLSA8dGQgY2xhc3M9InJhdGluZy1keW4gdXAi PjwvdGQ+IC8vLS0+CgkJCQk8dGQgY2xhc3M9InRpdGxlIj4KCQkJCQk8YSBocmVm PSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dzL2l0X2JpZ3JhcGh5LyI+SVQt0JHQ uNC+0LPRgNCw0YTQuNC4PC9hPgoJCQkJPC90ZD4KCQkJCTx0ZCBjbGFzcz0idmFs dWUiPgoJCQkJCTxzcGFuPjM1Niw3MDwvc3Bhbj4KCQkJCTwvdGQ+CgkJCTwvdHI+ CgkJCQoJCQk8dHI+CgkJCQk8IS0tIDx0ZCBjbGFzcz0icmF0aW5nLWR5biB1cCI+ PC90ZD4gLy8tLT4KCQkJCTx0ZCBjbGFzcz0idGl0bGUiPgoJCQkJCTxhIGhyZWY9 Imh0dHA6Ly9oYWJyYWhhYnIucnUvYmxvZ3MvbXlfYnVzaW5lc3MvIj7QnNC+0Lkg 0LHQuNC30L3QtdGBPC9hPgoJCQkJPC90ZD4KCQkJCTx0ZCBjbGFzcz0idmFsdWUi PgoJCQkJCTxzcGFuPjI3OCwwMzwvc3Bhbj4KCQkJCTwvdGQ+CgkJCTwvdHI+CgkJ CQoJCQk8dHI+CgkJCQk8IS0tIDx0ZCBjbGFzcz0icmF0aW5nLWR5biB1cCI+PC90 ZD4gLy8tLT4KCQkJCTx0ZCBjbGFzcz0idGl0bGUiPgoJCQkJCTxhIGhyZWY9Imh0 dHA6Ly9oYWJyYWhhYnIucnUvYmxvZ3MvcG9wdWxhcl9zY2llbmNlLyI+0J3QsNGD 0YfQvdC+LdC/0L7Qv9GD0LvRj9GA0L3QvtC1PC9hPgoJCQkJPC90ZD4KCQkJCTx0 ZCBjbGFzcz0idmFsdWUiPgoJCQkJCTxzcGFuPjIzMiw5ODwvc3Bhbj4KCQkJCTwv dGQ+CgkJCTwvdHI+CgkJCQoJCQk8dHI+CgkJCQk8IS0tIDx0ZCBjbGFzcz0icmF0 aW5nLWR5biB1cCI+PC90ZD4gLy8tLT4KCQkJCTx0ZCBjbGFzcz0idGl0bGUiPgoJ CQkJCTxhIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvYmxvZ3MvYXJ0aWZpY2lh bF9pbnRlbGxpZ2VuY2UvIj7QmNGB0LrRg9GB0YHRgtCy0LXQvdC90YvQuSDQuNC9 0YLQtdC70LvQtdC60YI8L2E+CgkJCQk8L3RkPgoJCQkJPHRkIGNsYXNzPSJ2YWx1 ZSI+CgkJCQkJPHNwYW4+MjIxLDY1PC9zcGFuPgoJCQkJPC90ZD4KCQkJPC90cj4K CQkJCgkJCTx0cj4KCQkJCTwhLS0gPHRkIGNsYXNzPSJyYXRpbmctZHluIHVwIj48 L3RkPiAvLy0tPgoJCQkJPHRkIGNsYXNzPSJ0aXRsZSI+CgkJCQkJPGEgaHJlZj0i aHR0cDovL2hhYnJhaGFici5ydS9ibG9ncy9oaXN0b3J5LyI+0JjRgdGC0L7RgNC4 0Y8g0JjQojwvYT4KCQkJCTwvdGQ+CgkJCQk8dGQgY2xhc3M9InZhbHVlIj4KCQkJ CQk8c3Bhbj4xODUsMTA8L3NwYW4+CgkJCQk8L3RkPgoJCQk8L3RyPgoJCQkKCQkJ PHRyPgoJCQkJPCEtLSA8dGQgY2xhc3M9InJhdGluZy1keW4gdXAiPjwvdGQ+IC8v LS0+CgkJCQk8dGQgY2xhc3M9InRpdGxlIj4KCQkJCQk8YSBocmVmPSJodHRwOi8v aGFicmFoYWJyLnJ1L2Jsb2dzL3BhdGVudC8iPtCY0L3RgtC10LvQu9C10LrRgtGD 0LDQu9GM0L3QsNGPINGB0L7QsdGB0YLQstC10L3QvdC+0YHRgtGMPC9hPgoJCQkJ PC90ZD4KCQkJCTx0ZCBjbGFzcz0idmFsdWUiPgoJCQkJCTxzcGFuPjE4NCw0Mzwv c3Bhbj4KCQkJCTwvdGQ+CgkJCTwvdHI+CgkJCQoJCQk8dHI+CgkJCQk8IS0tIDx0 ZCBjbGFzcz0icmF0aW5nLWR5biB1cCI+PC90ZD4gLy8tLT4KCQkJCTx0ZCBjbGFz cz0idGl0bGUiPgoJCQkJCTxhIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvYmxv Z3MvdGhlX2Z1dHVyZV9pc19oZXJlLyI+0JHRg9C00YPRidC10LUg0LfQtNC10YHR jDwvYT4KCQkJCTwvdGQ+CgkJCQk8dGQgY2xhc3M9InZhbHVlIj4KCQkJCQk8c3Bh bj4xNTMsNzA8L3NwYW4+CgkJCQk8L3RkPgoJCQk8L3RyPgoJCQkKCQkJPHRyPgoJ CQkJPCEtLSA8dGQgY2xhc3M9InJhdGluZy1keW4gdXAiPjwvdGQ+IC8vLS0+CgkJ CQk8dGQgY2xhc3M9InRpdGxlIj4KCQkJCQk8YSBocmVmPSJodHRwOi8vaGFicmFo YWJyLnJ1L2Jsb2dzL2Jvb2tzLyI+0KfQuNGC0LDQu9GM0L3Ri9C5INC30LDQuzwv YT4KCQkJCTwvdGQ+CgkJCQk8dGQgY2xhc3M9InZhbHVlIj4KCQkJCQk8c3Bhbj4x NTIsMDg8L3NwYW4+CgkJCQk8L3RkPgoJCQk8L3RyPgoJCQkKCQkJPHRyPgoJCQkJ PCEtLSA8dGQgY2xhc3M9InJhdGluZy1keW4gdXAiPjwvdGQ+IC8vLS0+CgkJCQk8 dGQgY2xhc3M9InRpdGxlIj4KCQkJCQk8YSBocmVmPSJodHRwOi8vaGFicmFoYWJy LnJ1L2Jsb2dzL2RlbW9zY2VuZS8iPtCU0LXQvNC+0YHRhtC10L3QsDwvYT4KCQkJ CTwvdGQ+CgkJCQk8dGQgY2xhc3M9InZhbHVlIj4KCQkJCQk8c3Bhbj4xNDEsNDQ8 L3NwYW4+CgkJCQk8L3RkPgoJCQk8L3RyPgoJCQkKCQkJPHRyPgoJCQkJPCEtLSA8 dGQgY2xhc3M9InJhdGluZy1keW4gdXAiPjwvdGQ+IC8vLS0+CgkJCQk8dGQgY2xh c3M9InRpdGxlIj4KCQkJCQk8YSBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Js b2dzL2ludGVydmlld3MvIj7QmNC90YLQtdGA0LLRjNGOPC9hPgoJCQkJPC90ZD4K CQkJCTx0ZCBjbGFzcz0idmFsdWUiPgoJCQkJCTxzcGFuPjExNCw1ODwvc3Bhbj4K CQkJCTwvdGQ+CgkJCTwvdHI+CgkJCQoJCTwvdGJvZHk+PC90YWJsZT4KCQkKCQk8 ZGl2IGNsYXNzPSJhbGwiPsKrIDxhIGhyZWY9Ii9ibG9nbGlzdC9kZXNzZXJ0LyI+ 0LLRgdC1ICDQsdC70L7Qs9C4PC9hPjwvZGl2PgoJCgk8L2Rpdj4KCTwvZGl2Pjwh LS0gLy8gZm9yIGJvdHRvbSByb3VuZGVkIGNvcm5lcnMgLS0+CgogIDwvZGl2PgoJ CgoNCgkJDQoNCg0KCQkJCgkJCg0KCQ0KCQ0KDQoJPC9kaXY+DQoNCjwvZGl2Pg0K PC9kaXY+DQoNCjxkaXYgaWQ9ImZvb3RlciI+Cgk8ZGl2IGNsYXNzPSJmb290ZXIt Y29udHRlbnQiPgoJCTxkaXYgY2xhc3M9ImJvdHRvbV9tZW51Ij4KCQkJCgkJCTxk bCBjbGFzcz0idXNlciI+CgkJCQk8ZHQ+PGEgaHJlZj0iaHR0cDovL2dyY29vbC5o YWJyYWhhYnIucnUvIj5ncmNvb2w8L2E+PC9kdD4KCQkJCTxkZD48YSBocmVmPSJo dHRwOi8vaGFicmFoYWJyLnJ1L2FkZC90b3BpYy8iPtCd0LDQv9C40YHQsNGC0Yw8 L2E+PC9kZD4KCQkJCTxkZD48YSBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2xl bnRhL2lobC8iPtCl0LDQsdGA0LDQu9C10L3RgtCwJm5ic3A7My4wPC9hPjwvZGQ+ CgkJCQk8ZGQ+PGEgaHJlZj0iaHR0cDovL2dyY29vbC5oYWJyYWhhYnIucnUvbWFp bC8iPkPQvtC+0LHRidC10L3QuNGPPC9hPjwvZGQ+CgkJCQk8ZGQ+PGEgaHJlZj0i aHR0cDovL2hhYnJhaGFici5ydS9zZXR0aW5ncy8iPtCd0LDRgdGC0YDQvtC50LrQ uDwvYT48L2RkPgoJCQkJPGRkPjxhIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUv cHBhLyI+0J/Qn9CQPC9hPjwvZGQ+CQkJCQoJCQk8L2RsPgoJCQkKCQkJCgkJCTxk bCBjbGFzcz0ic2VjdGlvbnMiPgoJCQkJPGR0PtCg0LDQt9C00LXQu9GLPC9kdD4K CQkJCTxkZD48YSBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dsaXN0LyI+ 0JHQu9C+0LPQuDwvYT48L2RkPgoJCQkJPGRkPjxhIGhyZWY9Imh0dHA6Ly9oYWJy YWhhYnIucnUvcGVvcGxlLyI+0JvRjtC00Lg8L2E+PC9kZD4KCQkJCTxkZD48YSBo cmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2NvbXBhbmllcy8iPtCa0L7QvNC/0LDQ vdC40Lg8L2E+PC9kZD4KCQkJCTxkZD48YSBocmVmPSJodHRwOi8vaGFicmFoYWJy LnJ1L2pvYi8iPtCg0LDQsdC+0YLQsDwvYT48L2RkPgoJCQkJPGRkPjxhIGhyZWY9 Imh0dHA6Ly9oYWJyYWhhYnIucnUvdG9wLyI+4oaR4oaT4oaR4oaTPC9hPjwvZGQ+ CgkJCTwvZGw+CgkJCTxkbD4KCQkJCTxkdD7QkdC70L7Qs9C4PC9kdD4KCQkJCTxk ZD48YSBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1LyI+0JLRgdC1PC9hPjwvZGQ+ CgkJCQk8ZGQ+PGEgaHJlZj0iaHR0cDovL2hhYnJhaGFici5ydS9ibG9ncy8iPtCi 0LXQvNCw0YLQuNGH0LXRgdC60LjQtTwvYT48L2RkPgoJCQkJPGRkPjxhIGhyZWY9 Imh0dHA6Ly9oYWJyYWhhYnIucnUvY29ycG9yYXRpdmUvIj7QmtC+0YDQv9C+0YDQ sNGC0LjQstC90YvQtTwvYT48L2RkPgoJCQkJPCEtLWRkPjxhIGhyZWY9Imh0dHA6 Ly9oYWJyYWhhYnIucnUvcGVyc29uYWwvIj7Qm9C40YfQvdGL0LU8L2E+PC9kZC0t PgoJCQkJPGRkPjxhIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvc2FuZGJveC8i PtCf0LXRgdC+0YfQvdC40YbQsDwvYT48L2RkPgoJCQk8L2RsPgoJCQk8ZGw+CgkJ CQk8ZHQ+0JjQvdGE0L48L2R0PgoJCQkJPGRkPjxhIGhyZWY9Imh0dHA6Ly9oYWJy YWhhYnIucnUvaW5mby9hYm91dC8iPtCeINGB0LDQudGC0LU8L2E+PC9kZD4KCQkJ CTxkZD48YSBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2luZm8vaGVscC9ydWxl cy8iPtCf0YDQsNCy0LjQu9CwPC9hPjwvZGQ+CgkJCQk8ZGQ+PGEgaHJlZj0iaHR0 cDovL2hhYnJhaGFici5ydS9pbmZvL2hlbHAvIj7Qn9C+0LzQvtGJ0Yw8L2E+PC9k ZD4KCQkJCTxkZD48YSBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2luZm8vYWdy ZWVtZW50LyI+0KHQvtCz0LvQsNGI0LXQvdC40LU8L2E+PC9kZD4KCQkJCTxkZD48 YSBocmVmPSJodHRwOi8vaGFicmFoYWJyLnJ1L2luZm8vc3RhdHMvIj7QodGC0LDR gtC40YHRgtC40LrQsDwvYT48L2RkPgoJCQk8L2RsPgoJCQk8ZGw+CgkJCQk8ZHQ+ 0KPRgdC70YPQs9C4PC9kdD4KCQkJCTxkZD48YSBocmVmPSJodHRwOi8vaGFicmFo YWJyLnJ1L2luZm8vYWR2ZXJ0aXNpbmcvIj7QoNC10LrQu9Cw0LzQsDwvYT48L2Rk PgoJCQkJPGRkPjxhIGhyZWY9Imh0dHA6Ly9oYWJyYWhhYnIucnUvaW5mby9hZHZl cnRpc2luZy9jb3Jwb3JhdGUvIj7QmtC+0YDQv9C+0YDQsNGC0LjQstC90YvQtSDQ v9Cw0LrQtdGC0Ys8L2E+PC9kZD4KCQkJPC9kbD4KCQk8L2Rpdj4KCgkJPGEgY2xh c3M9ImZvb3Rlcl9sb2dvIiBocmVmPSJodHRwOi8vdGhlbWF0aWNtZWRpYS5ydS8i PtCi0LXQvNCw0YLQuNGH0LXRgdC60LjQtSDQnNC10LTQuNCwPC9hPgoJCTxkaXYg aWQ9ImFib3V0Ij4KCQkJPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OjRweDsiPsKp IDIwMDYmIzgyMTE7MjAxMTwvc3Bhbj4gPGJyLz7CqzxhIGhyZWY9Imh0dHA6Ly93 d3cudGhlbWF0aWNtZWRpYS5ydS8iPtCi0LXQvNCw0YLQuNGH0LXRgdC60LjQtSDQ nNC10LTQuNCwPC9hPsK7PGJyLz4KCQkJPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDog MTBweDsgbWFyZ2luLWxlZnQ6NnB4OyI+CgkJCQnQodC70YPQttCx0LAg0L/QvtC0 0LTQtdGA0LbQutC4Ojxici8+CgkJCQk8YSBocmVmPSJtYWlsdG86c3VwcG9ydEBo YWJyYWhhYnIucnUiIHRpdGxlPSLQsNC00YDQtdGBINGB0LvRg9C20LHRiyDQv9C+ 0LTQtNC10YDQttC60Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkiPnN1cHBv cnRAaGFicmFoYWJyLnJ1PC9hPjxici8+PGJyLz48YnIvPgoJCQkJPGEgaHJlZj0i aHR0cDovL20uaGFicmFoYWJyLnJ1Ij7QnNC+0LHQuNC70YzQvdCw0Y8g0LLQtdGA 0YHQuNGPPC9hPgoJCQk8L2Rpdj4gCgkJPC9kaXY+CgkJCgk8L2Rpdj4KCQo8L2Rp dj4NCg0KPGRpdiBpZD0iZmF2b3VyaXRlc19hZGRfaGlkZGVuIj4KCTxkaXYgY2xh c3M9ImZhdm91cml0ZXNfYWRkIiBpZD0iZmF2b3VyaXRlc19hZGQiPgoJCTxkaXYg Y2xhc3M9ImZhdm91cml0ZXNfYWRkX2lubmVyIj4KCQkJPGZvcm0gYWN0aW9uPSIv YWpheC9mYXZvcml0ZXMvIiBjbGFzcz0idG0tZm9ybSBhamF4IiBtZXRob2Q9InBv c3QiIGlkPSJmYXZvdXJpdGVzX2FkZF9mb3JtIj4KCQkJCTxkaXY+PGEgcmV2PSJm YXZvdXJpdGVzX2FkZCIgY2xhc3M9ImZvcm0tZXh0ZW5kZXIiPjwvYT48L2Rpdj4K CQkJCTxkbD4KCQkJCQk8ZHQ+PGxhYmVsIGZvcj0iZmF2b3VyaXRlc19hZGRfdGFn cyI+0J/QvtC80LXRgtGM0YLQtSDRgtC+0L/QuNC6INC/0L7QvdGP0YLQvdGL0LzQ uCDQstCw0Lwg0LzQtdGC0LrQsNC80LgsINC10YHQu9C4INGF0L7RgtC40YLQtTwv bGFiZWw+PC9kdD4KCQkJCQk8ZGQ+CgkJCQkJCTxkaXYgY2xhc3M9ImpzLWF1dG9z dWdnZXN0LWhvbGRlciI+CgkJCQkJCQk8ZGl2PgoJCQkJCQkJCTxpbnB1dCB0eXBl PSJ0ZXh0IiBuYW1lPSJ0YWdzX3N0cmluZyIgY2xhc3M9ImpzLWF1dG9zdWdnZXN0 LWZpZWxkIiBpZD0iZmF2b3VyaXRlc19hZGRfdGFncyIgLz4KCQkJCQkJCTwvZGl2 PgoJCQkJCQkJPGRpdiBjbGFzcz0ianMtYXV0b3N1Z2dlc3Qtb3V0cHV0LWNvbnRh aW5lciI+CgkJCQkJCQkJPGRpdiBjbGFzcz0ianMtYXV0b3N1Z2dlc3Qtb3V0cHV0 Ij48L2Rpdj4KCQkJCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2RkPgoJ CQkJCTxkZCBjbGFzcz0iZGVzYyI+0JzQtdGC0LrQuCDQu9GD0YfRiNC1INGA0LDQ t9C00LXQu9GP0YLRjCDQt9Cw0L/Rj9GC0L7QuS4g0J3QsNC/0YDQuNC80LXRgDog PGVtPtC+0LHRidC10L3QuNC1LCDRgdC+0YbQuNCw0LvRjNC90YvQtSDRgdC10YLQ uCwgbXlzcGFjZS5jb20sINC/0L7QtNGA0L7RgdGC0LrQuCwg0LzQtdGA0LTQvtC6 PC9lbT48L2RkPgoJCQkJPC9kbD4KCQkJCTxkaXYgY2xhc3M9ImZhdm91cml0ZXNf YWRkX2Zvb3RlciI+CgkJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idGFy Z2V0X2lkIiB2YWx1ZT0iIiBpZD0iZmF2b3VyaXRlc19hZGRfaWQiIC8+CgkJCQkJ PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idGFyZ2V0X3R5cGUiIHZhbHVlPSJw b3N0cyIgLz4KCQkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24i IHZhbHVlPSJhZGQiIC8+CgkJCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9 ItCU0L7QsdCw0LLQuNGC0Ywg0LIg0LjQt9Cx0YDQsNC90L3QvtC1IiBpZD0iZmF2 b3VyaXRlc19hZGRfc3VibWl0IiAvPiDQuNC70LggPGEgaHJlZj0iIyIgaWQ9ImZh dm91cml0ZXNfYWRkX2NhbmNlbCI+0L7RgtC80LXQvdC40YLRjDwvYT4KCQkJCTwv ZGl2PgoJCQk8L2Zvcm0+CgkJPC9kaXY+Cgk8L2Rpdj4KPC9kaXY+DQoNCg0KDQoJ DQoNCg0KCQ0KDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQovKjwh W0NEQVRBWyovDQp2YXIgX2dhcSA9IF9nYXEgfHwgW107DQpfZ2FxLnB1c2goDQog ICAgWydfc2V0QWNjb3VudCcsICdVQS03MjYwOTQtMSddLA0KICAgIFsnX3NldERv bWFpbk5hbWUnLCAnLmhhYnJhaGFici5ydSddLA0KICAgIFsiX2FkZE9yZ2FuaWMi LCAibWFpbC5ydSIsICJxIl0sDQogICAgWyJfYWRkT3JnYW5pYyIsInJhbWJsZXIu cnUiLCAid29yZHMiXSwNCiAgICBbIl9hZGRPcmdhbmljIiwibmlnbWEucnUiLCAi cyJdLA0KICAgIFsiX2FkZE9yZ2FuaWMiLCJibG9ncy55YW5kZXgucnUiLCAidGV4 dCJdLA0KICAgIFsiX2FkZE9yZ2FuaWMiLCJ3ZWJhbHRhLnJ1IiwgInEiXSwNCiAg ICBbIl9hZGRPcmdhbmljIiwiYXBvcnQucnUiLCAiciJdLA0KICAgIFsiX2FkZE9y Z2FuaWMiLCJha2F2aXRhLmJ5IiwgInoiXSwNCiAgICBbIl9hZGRPcmdhbmljIiwi bWV0YS51YSIsICJxIl0sDQogICAgWyJfYWRkT3JnYW5pYyIsImJpZ21pci5uZXQi LCAicSJdLA0KICAgIFsiX2FkZE9yZ2FuaWMiLCJ0dXQuYnkiLCAicXVlcnkiXSwN CiAgICBbIl9hZGRPcmdhbmljIiwiYWxsLmJ5IiwgInF1ZXJ5Il0sDQogICAgWyJf YWRkT3JnYW5pYyIsImkudWEiLCAicSJdLA0KICAgIFsiX2FkZE9yZ2FuaWMiLCJv bmxpbmUudWEiLCAicSJdLA0KICAgIFsiX2FkZE9yZ2FuaWMiLCJhLnVhIiwgInMi XSwNCiAgICBbIl9hZGRPcmdhbmljIiwidWtyLm5ldCIsICJzZWFyY2hfcXVlcnki XSwNCiAgICBbIl9hZGRPcmdhbmljIiwic2VhcmNoLmNvbS51YSIsICJxIl0sDQog ICAgWyJfYWRkT3JnYW5pYyIsInNlYXJjaC51YSIsICJxdWVyeSJdLA0KICAgIFsi X2FkZE9yZ2FuaWMiLCJwb2lzay5ydSIsICJ0ZXh0Il0sDQogICAgWyJfYWRkT3Jn YW5pYyIsImttLnJ1IiwgInNxIl0sDQogICAgWyJfYWRkT3JnYW5pYyIsImxpdmVp bnRlcm5ldC5ydSIsICJhc2siXSwNCiAgICBbIl9hZGRPcmdhbmljIiwiZ29nby5y dSIsICJxIl0sDQogICAgWyJfYWRkT3JnYW5pYyIsImdkZS5ydSIsICJrZXl3b3Jk cyJdLA0KICAgIFsiX2FkZE9yZ2FuaWMiLCJxdWludHVyYS5ydSIsICJyZXF1ZXN0 Il0sDQogICAgWydfdHJhY2tQYWdldmlldyddDQopOw0KZG9jdW1lbnQuZG9jdW1l bnRFbGVtZW50LmZpcnN0Q2hpbGQuYXBwZW5kQ2hpbGQoZ2EpOw0KLyogXV0+Ki8N Cjwvc2NyaXB0Pg0KDQoNCg0KDQoNCg0KPHNjcmlwdD4NCnZhciBtYl9yYW5kb20g PSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwMDApOw0KZG9jdW1lbnQu d3JpdGUoIjxzY3JpcHQgc3JjPSdodHRwOi8vcGluay5oYWJyYWxhYi5ydS9jZ2kt YmluL2lmcmFtZS9HZW1pdXNfb3RoZXI/IittYl9yYW5kb20rIiZvcHRpb25zPUZU Jz48L3NjciIrImlwdD4iKTsNCjwvc2NyaXB0Pg0KDQoNCg0KDQogIDxkaXYgaWQ9 ImhlbHAtdGlwLXRleHQiICBjbGFzcz0iIj4NCgkJPGRpdiBpZD0iaGVscC10aXAt dGV4dC1jb250ZW50Ij48L2Rpdj4NCgkJPGRpdiBpZD0iaGVscC10aXAtdGV4dC1h cnJvdyI+PC9kaXY+DQoJPC9kaXY+DQoJDQo8L2JvZHk+DQo8L2h0bWw+DQo= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/bg-page-nav-left.gif Content-Transfer-Encoding: Base64 R0lGODlhCgAKALMAAPf49/P08/j4+PDy8Ovt6+3v7f7+/vHz8fj5+Ozu7P///+rs 6gAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAKAAoAAAQeUElpwEhrKoCXn4EnZko4 fsgpKp0qqOIBe8W8EHYEADs= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/bg-page-nav-current-left.gif Content-Transfer-Encoding: Base64 R0lGODlhCgAKAMQAAOPt9tbk8dbk8e3z+O3z+P7+/uHr9P3+/t/q9Njk8v7+/u70 +tjm8u/0+tXk8f///9Pi8IqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqK ioqKioqKioqKioqKiiwAAAAACgAKAAAFI+AjiseABND4EALkpo8CvK840+7T4G+R 8K4F0GUYQhhGhzEEADs= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/bg-page-nav-right.gif Content-Transfer-Encoding: Base64 R0lGODlhCgAKAKIAAPLz8vDy8P7+/vf39+zu7P///+rs6gAAACH5BAAAAAAALAAA AAAKAAoAAAMaaBQj9c9INWCZE0CcI5fVJxGCCJpGgBKokQAAOw== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/bg-page-nav-current-right.gif Content-Transfer-Encoding: Base64 R0lGODlhCgAKAPcAAOPt9tbk8dbk8e3z+O3z+P7+/uHr9P3+/t/q9Njk8v7+/u70 +tjm8u/0+tXk8f///9Pi8IqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqK ioqKioqKioqKioqKigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAKAAoAAAgyAB0wMLBAwYODByEohJCg AcIHCxcCMAgxokIACS0qJFBRo4ADGhcSCKkQAUkIAk5CCAgAOw== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/bg-page-subnav-corner-bottom-left.gif Content-Transfer-Encoding: Base64 R0lGODlhCgAKAPcAAOPt9tbk8dbk8e3z+O3z+P7+/uHr9P3+/t/q9Njk8v7+/u70 +tjm8u/0+tXk8f///9Pi8IqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqK ioqKioqKioqKioqKigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAKAAoAAAgtACEIHEhQAMGDCA4SJKBw 4AGDDR8wjPgAAEUFFg8+2PigQQKCHDcqWGCAgYOAADs= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/bg-page-subnav-corner-bottom-right.gif Content-Transfer-Encoding: Base64 R0lGODlhCgAKAPcAAOPt9tbk8dbk8e3z+O3z+P7+/uHr9P3+/t/q9Njk8v7+/u70 +tjm8u/0+tXk8f///9Pi8IqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqK ioqKioqKioqKioqKigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAKAAoAAAgwACEIHDjQAcGDDA4SNKBw 4IKGEBIogNjgQUMADyweBKAgI0EBBDJ6FICAwAGRGQMCADs= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/bg-user2.gif Content-Transfer-Encoding: Base64 R0lGODlhDAAMAOYAANPe5Pz//4KkutDb4szY3/b+/5u5z/3//3KWrfn//8rk8naa sYGkuszY4Mbg8qG+0dzv9tXg5sTg8t/o7vP8/4iqv9ft9NPe5qfD1Mfc56O/0YKl u+Lr8M3Z4JCwxuj2/Of0+eDz9+rw9Z68z8/n8sHe8sbT3Ju6zuDv96nE1Onw9Nbh 6cvX39Hq89Hq8u77/srW3tbh54Kku8ba56TD1u37/vL8/vL8/9ft9ebu8+Ps8bzM 1Ymsw7XR4Nnj6Yanvsnj8qrI2Or2/NTf5tvl68vY3+r3/HqdtNji6OXt8eDz+dLc 477c7bDO3t7n7d7v9s3Z4dbs9N/y98Pd6PX+/8/b4f7//+Hp7tDo8vv//+fu84Gj unKWro6uxHqctOfu9P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAMAAwAAAeEgCJfg4RfWlo5KlpgjI2O OklWBwcBAVmXCQlXHAUFVBkGBjMUNzZOEy81IF2sXUZCH0QrDyhPGzICAkohUj4X HhoQKQsLGDgWUTFIJxUjUy0uWNIkQxE9W9gMDD9BCgpLAEBNXl5H5F40DlUDEkxc 71wICDwlDQBQHQ0EBEUsJjswBgQCADs= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/png Content-Location: http://habrahabr.ru/i/icon_asterisk_16.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAA AAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5U Y3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6 eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8w Mi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRw Oi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpE ZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRv YmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20v eGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRv YmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9Inht cC5paWQ6OUJFNDFFODE1M0NCMTFFMDg4MzdEMjY1MEM4OTlCREEiIHhtcE1NOkRv Y3VtZW50SUQ9InhtcC5kaWQ6OUJFNDFFODI1M0NCMTFFMDg4MzdEMjY1MEM4OTlC REEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlp ZDo5QkU0MUU3RjUzQ0IxMUUwODgzN0QyNjUwQzg5OUJEQSIgc3RSZWY6ZG9jdW1l bnRJRD0ieG1wLmRpZDo5QkU0MUU4MDUzQ0IxMUUwODgzN0QyNjUwQzg5OUJEQSIv PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94 cGFja2V0IGVuZD0iciI/Pgl861QAAAHoSURBVHjaLJFBb9MwGIY/x3bStIEmXUFs tOk4sAOCA2ckfgASEkiIG2f+AkxwA1TxDzhxg8uk9oDEgf0CLggh7TA0RjcgJcua hCRtVccxnwOWLNmf38fv+9lk98Mu4OBlJa8RII8IIUvcP4R/45VSqqFADZlBv+Be MBRAKeV1xs1R/2JvI0liiOP4nVZ7nvfAdT04/vnjhhTiLqP0I1uuVsAYywlA0mza G7ZtwSyOhxpYX78AhBigz3CR19qiKIBzcw+Ntg++Hbz2+763tta5pIGylHB0fBhn WbatFOwJgQDWn+V5YXNOnTBcKYTh/Llu3UAwnUIYnqiqqm4JIW9aFl+Q0Wi82twc cCkVAMGJVxmGUQMoxBoGUgQoJfD9cCLYfD6HKIqgFBJ0WMY5cEZrQGCkUggEdJ3C fDEHlqTpy5Mosp0zjiNLec/z3A797yDRYRYnM86MnSwrcsuyFqzVaj3RAs75HSHE fQMjTCZHNeD7fWjZtmFy/p5RNpYVxnXbZwGf80qa/nmBidwgmIKUcqJnEAS6BTdO 0iFeeLVp24B/QbFP5WA+FP8CdIGtrcuPtcP+/tc3p6czaLfbbrfbaeF/AdMvgtAn 0+S3semnvV5v2Wg0xhoYDPy3we/Q5iZ/juLPGvgrwAAFU9Nnla+h0wAAAABJRU5E rkJggg== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/png Content-Location: http://habrahabr.ru/i/bg-folding-dot-light.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFFJREFUeNpi/P//PwMDw88/f9lZmBlI BCxAvPfa46tPX2tLizpryZKkmQlo59UnrwW5OYDk15+/SdMMdK22rOj7Lz+AJDc7 K0maGSnxM0CAAQBHCiEG+qfxeAAAAABJRU5ErkJggg== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/comments/bar/refresh.gif Content-Transfer-Encoding: Base64 R0lGODlhHAA6AOYAAN7yzV+1GajqcajfemC1GkF8E37GRHrDP0t8JG6JWpGWjT17 DJHZVnaMZYSSeo7XUnS8OoPORen522GvIur63OT21sTfsIuUhTl1CXTEMo+VikmC HJrgYZjeXpbdXJ3iZEZ6HmO1IeL30Wm8JVSqDpXcW0WFE2qHUpPbWZaYk+f42YnT TJSXkYKQdnKKX6TnbKDlaarKj1itFFqBO1eMLW7ALEaAGZiZl5/kZ1qxE1+DQzt3 DDx2DoCPc4TQRmS4H0R5GZzhY32PcGWFTKPnbHrIOn7MP4OtYUuZDLfdmXyObj6B CE6SF3G3OE+GJJDOXYW+V2iuMN/1zlCcE0B3FT53ETh3B1umIIvOVa/QlGe6JGuz L4/FYtDnvZXUYHjHN2uIVLDTk7fUn7PaklR/MsrpsUyKG+P11Njtxsfgs+X318/p u4fBV4rBW2iZQY3LWqDDhHekU12RNFqPMFihHX7LPmSWPIXOSW+7Mm2gRYHIR7nW orzYpr7aqDd0B5mZmSH5BAAAAAAALAAAAAAcADoAAAf/gH+Cg4SFhoeIiYqLjI2O j5CRghoOF40JIH6am5o6Ghs0TiAgJwqICjZpFWoqKhIUsH5/Fxt5YXtHBSeICQsG JR0fMC8CFLKzvRN4XHNDiC4LeigdQThEEseCLnIQORM2LYcNJncP09XYhTxjATlT M4cIED4rDwweHCp+NzeDIH0jAsigYqiFmSJGItRjUEKNHwwYeggCYuHADwLZBs24 kqFInQhRIDCo4KdAjB1CGtAAYGBECB6GgISokeFLG4hNzpSUAmUHBjFlMtSYgMAQ hh8jamCx00AIhpMFpDBgAweAlyIZ6OgolMIKgR9akmDo1wNiARElGAwYEMFIERMO /wxVkRFASxeYgm6kWCCCgwcGD1b42ELm0AwkOX6gKcCCkB81OIJ0QPEgQgElhxws IJFjjZsEjiUQiTzZwAIXiIYsITGGTwEwpv74oSDgBYwPHUq8sQH60AkrTLJYiFPA 1GwBtW9zKPFkgwZELBIgAALKhgIdnDiB6L2IUmxJ4MOLH0++vPnz6NOrP0/JEiNM 2Td52jDHCRBS3wsp2NAFln//slzgRBxppJHLLockUMAASSRRxoNlUICBIBcoyAWD djhzCDQMCpCEABFOOIgLdozxgRdOhGNIA2aACKKDxqhTxlpQwGMIAl4IMIaLSRjD jz9pDPDBE1UURMMAO35YRtwxGPgk0R9AoDHGWhkJMgMUa+34hBchFpAFSipJsJYX eBEChBcDIBcDDzw8YUwBFMDhUx8ijFlUIRisxWAeDSjxEw9wThkDBUmsFcdWhKSw wwtrobFACn+UhQGcSYzxoI4C0KAiIVV4wSgAZeq1AKEfNiiAF4UZMkMcaErAGCEY 0HbpGGNsgFlBZnjxwRmfwUrBpWUUugRqhwyRaxdp2FCKILMt6ayOGyTQjyEn8OCG BV3EYd0fsULo7JTOQScddXNYpwMGS6Sb7gILIMCdIt79MW0hP65n7734RhIIADs= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/comments/bar/refresh-loading.gif Content-Transfer-Encoding: Base64 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 dEIqimh4ZNz39/PnAwEAOw== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/bg-tags2.gif Content-Transfer-Encoding: Base64 R0lGODlhDAAPAOYAAP3///j//83r9czp9c7s9Yuqv9Tx9b7b4b/X5vH//+H4+tr0 9t72+Ov8/bjY4cvo9fX//9Lv9fT///n//8fm9eH1/+L1/7PT4dPx9cbl9cXk9ef6 /LnY4cnm9b/d4ej7/N/2+Zi2yoyrwI+tw7/X57rZ4bjR4e36/bLR4Zq3yr3b4ZWy x+T2/9Dt9ejw9ZGwxNTy9eXx+YurwNHt9ej7/5e0x6/J29v1+LfP4Ov8/6rF2Njz 9eL2/9Hu9abD1bXN3snc6vv8/cDe4tfz9bPS4cTi9e37/Yqqv9n09py5zaS/07LM 3KjD1qvG2LXU4eDu9qXA08LY6OX5/87h7cXa58DY55Wzx5+90MTb6ebu9LLS4crf 65OwxLfX4eL5+snn9fv//77W5fH8//L//6C7z/f6/NPv9djl7525zcrn9dbj7dvx 9ez9/+f6/+v7/e///5Gwxdby9dLu9aO/0uD0/42swf///wAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAMAA8AAAetgHZ2QVhVJAgIUWWCgkAx jHZPVIxnU3YAmBMBW2p2LmEQAWIFKWAJbiZZOCdjCUZQPwEfG2tLNhMNsxIQDQog DDpNEl6+DDcLSDtDPkxvC0IeHgcHKgYYc0pscTDWZhFyPTNkVzkRJRwcDg5dBAJo STQtBO0CAwMPDyEhbQNOFxdEtKDoQGGFFSlpvhDMkEGDhiIv4LDgYcFChQp0MtKp U2PEiDogRYiQUeAIl0AAOw== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/icos/entry-info-t-l.gif Content-Transfer-Encoding: Base64 R0lGODlhBQAFALMAAPv7+/X19fz8/Ozs7Pn5+enp6fr6+vT09P7+/vDw8Orq6v// /wAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAFAAUAAAQQcC0UxhIqEVSMPIm0KIAY AQA7 ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/icos/entry-info-t-r.gif Content-Transfer-Encoding: Base64 R0lGODlhBQAFALMAAPv7+/X19fz8/Ozs7Pn5+enp6fr6+vT09P7+/vDw8Orq6v// /wAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAFAAUAAAQPcAS0FklK1GUKrcmxAUoE ADs= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/icos/entry-info-b-l.gif Content-Transfer-Encoding: Base64 R0lGODlhBQAFALMAAPHx8fv7++zs7Pn5+fPz8/Dw8Orq6vT09P7+/vz8/Onp6f// /wAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAFAAUAAAQP0KRFCaALqYCTKgOFHEIE ADs= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/icos/entry-info-b-r.gif Content-Transfer-Encoding: Base64 R0lGODlhBQAFALMAAPHx8fv7++zs7Pn5+fPz8/Dw8Orq6vT09P7+/vz8/Onp6f// /wAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAFAAUAAAQQcMlk5AJEBoVGUckiHIgU AQA7 ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/icos/icons_vote_posts.gif Content-Transfer-Encoding: Base64 R0lGODlhIQAeAOZ/AOjo6PHx8cjIyPT09O3t7fr6+sXFxeXl5fj4+N7e3urq6vLy 8sPDw/b29s3NzdjY2NXV1dDQ0O7u7s7Ozs3o8fb+/9Lr8ev6+4fKVdnyxrzS4Zi0 xq3G1pKvw/2JWLy8vJ65zOTt89H+fdvb2+fn5/v//9Hc5aO9z8nm8ajB0t7x9rTL 25Syxd3u+P1iMf+dfMb5bfS5s2atOdfw8/yEaO9lTs3Z4v+yf3udsr71YuxaReH2 9+by+Of3+lukLv99Rfd7Wdzp8XK5QuHw+4fSF5fdI5LSYNLS0qDcbuRJNJjVaavp QMHW5P+kcPGxrP+Tc4Kitoyrv/++kP/Kn/ZTKP+WY3zBTP+kg8Xi8ZveMLfxUaPk M/39/fD7/Mb4d8v8cvxtPb/d8ez3+6zmdOhEJ+lVPv/Yr5u3yf9xOrPuRO+uqev3 4vP+//RiOdf/i5Csv9n/lPhfM/JuVN06KYakurjnkaXjbd9cVcbZ58fa6M7f6/D1 +MP2X9Tg5////////yH5BAEAAH8ALAAAAAAhAB4AAAf/gH+Cfxl1GYOIVy+LV4iD BCMSBY6EY3Bjh45XZlNTT5QSIwiRjhlIcG5udpmDL2ZSUp+IoQgFCAkBg2tIIr0i Xkqsfy9TNzc0iAMjAwXNCA8Kf7teX18w1zlGrE9STU3IggMPAQPl5QEQBEpevjnu 1kaDNDdVVUCDEAvNBQEB+gMRlGDAYASGFi0DCcq74cGDHHwRIkBAQICAg4sRBmHg s2QJBkpAmvz4UYNShAYAADighEHLli1W5NWY+QMNGh04Hwo6mdIAJStpihQRMqhG lR8ukiYF40HHoAkDFCjw6QioUKKCYpTxAIaK1zgeysR4GnUqJSFLiBCRgShGEg9t /8iATTJ2kIABBw4wOLtFLdu2SYC0AULGiSMDC/J+oCQji2MflJzMkTPH8OEFmBc7 kuGj819Hau6oofTng2nTpEPoCeGHEhMNsDVQSkCbNqUQeUrgCeHaj+8Vs337eeAo hIYKfkow4Y1IQ/ISwB0l8MOFC/FBezSIqcC9y4ogzUtUYMOB0gguzSBgX8Hjgnv3 KjiAF7SigvsUlB4UaNDgyCAOPHBXwQ479MAGD/gJwkEXBJ5ACQQFYOafgiecsOAM M4CgoYMKXoAhCA82UNFKjqRwgQUWnEFJCj2guAElRzQglQCUnCAGBRSwMEgKG7Cw wQwostBBByAcIcCRBMxogJQBJP4BQg84djBIB0GogOOVFqiwgQEEBJDSlwoEQKMg Z/SAAgpRDNJHB1meiQIFWpoAAJdefikmCYNswAMWWNCBiAlRBNECFhS0wIIJgpDA QJckAHAnIh0MEUYYUDhiAgstZNoBooOQIEA/ARiAJyJvDGEqDpTY8IYFUdhAiV4E MHAAJVDgYGulqW7gKmkHCDDrIIEAADs= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: data:image/gif;base64,R0lGODlhDwAaAOZ/APr7/LnO3bXL2uK7Vvz58NLu9friZ/z69arD0tXl7eHr8uL1+tLv89v09921Uf3phfzjcMra5dvl68nX4ef1+fz589rt9e79/+v7/Ka+zs7h6tny9d3EmqjAz+rQc+ft8d/1+PTjttSycvb///f6+/vx0rzR3vL2+P/////4rub5+/3qjf/zlu/0+fH5/MmdQtLh7PfYWP3oe83a4u/jzdi9ke3Ma8aaSbvN2r/T4PXdfunXs+LGivHWh/jbWuT4+a7K2dy2X8qbO8PW4sTc6fjaX/bUU/fUXOr6+9+5Y9bx89u1V//ukOLz9v/2usfV3uTAZ/z369GmQv/yr9yyRNDr9c3r87+RPP/4pPjgbPHWfOfCW8ygQ/zsl+jMc+jKeN719vLZgPjdXPP//7nL19yzUP/wjdCtbvzmcuXIb///x9Ho8vjkou/WgJy3x/HUafznd/nlh9WmPLXQ3fv48t67XdDj7P3pgPnx4Mrd6fjcWtewW/fw3/z46+LCcwAAACH5BAEAAH8ALAAAAAAPABoAAAf/gH+Cgy0KLYOIiTAuMImOJBEoESSOiAoJIwkKjkMmAZ8UF00CpAI5gjkuIxhIKio/CyAYFAGCJwEJYz9gDRsNFxoCJ4MAESYgSgwMGwETAIkACAwFDQVWGc+JEnMFC3YLVUASjjhrFgg4CBZEZI4dGh0ffx8ZeW6OMzPZfwATT5WCSrApARBRDyc9CgrqY0ONjSgKQ4RJoSVEIgJfBmgcsIJFHAcgy/ghQADKlBRMVjy4IwMOBDNdghD4gydJGywyIBjYycLDHj6DDvCog0aMHh9ZlvCokKiClBg+IMQwIoSOox1Uijzw8OCInB2ORLzRwUXECx1bzghCMeiFlxs0EP7QuJHmiiMOHA4ErVFjUCAAOw== Content-Transfer-Encoding: Base64 R0lGODlhDwAaAOZ/APr7/LnO3bXL2uK7Vvz58NLu9friZ/z69arD0tXl7eHr8uL1 +tLv89v09921Uf3phfzjcMra5dvl68nX4ef1+fz589rt9e79/+v7/Ka+zs7h6tny 9d3EmqjAz+rQc+ft8d/1+PTjttSycvb///f6+/vx0rzR3vL2+P/////4rub5+/3q jf/zlu/0+fH5/MmdQtLh7PfYWP3oe83a4u/jzdi9ke3Ma8aaSbvN2r/T4PXdfunX s+LGivHWh/jbWuT4+a7K2dy2X8qbO8PW4sTc6fjaX/bUU/fUXOr6+9+5Y9bx89u1 V//ukOLz9v/2usfV3uTAZ/z369GmQv/yr9yyRNDr9c3r87+RPP/4pPjgbPHWfOfC W8ygQ/zsl+jMc+jKeN719vLZgPjdXPP//7nL19yzUP/wjdCtbvzmcuXIb///x9Ho 8vjkou/WgJy3x/HUafznd/nlh9WmPLXQ3fv48t67XdDj7P3pgPnx4Mrd6fjcWtew W/fw3/z46+LCcwAAACH5BAEAAH8ALAAAAAAPABoAAAf/gH+Cgy0KLYOIiTAuMImO JBEoESSOiAoJIwkKjkMmAZ8UF00CpAI5gjkuIxhIKio/CyAYFAGCJwEJYz9gDRsN FxoCJ4MAESYgSgwMGwETAIkACAwFDQVWGc+JEnMFC3YLVUASjjhrFgg4CBZEZI4d Gh0ffx8ZeW6OMzPZfwATT5WCSrApARBRDyc9CgrqY0ONjSgKQ4RJoSVEIgJfBmgc sIJFHAcgy/ghQADKlBRMVjy4IwMOBDNdghD4gydJGywyIBjYycLDHj6DDvCog0aM Hh9ZlvCokKiClBg+IMQwIoSOox1Uijzw8OCInB2ORLzRwUXECx1bzghCMeiFlxs0 EP7QuJHmiiMOHA4ErVFjUCAAOw== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/bg-comments2.gif Content-Transfer-Encoding: Base64 R0lGODlhDAAOAOYAANDf6tbt9oWludPi7NHg6sPh8Mvb59Li7IiovLnM2bjM2NHh 6+Pq74SjuNLh64GhtcDV47fL17LG0+jv9cfY47/V46m+zMLT37vO2+rx9oCgtuju 8fz//83d56zBzvv//+ju8uPz+rjM2b/c8M/e6rzP2+/z9dvv+ouou8LV4OPz+4uo vNXr+srb5sbX4sPY5LXI1sjZ5Njt+omovIinu+Hp7r/R3YmpvNTv8szn8Oz6++r3 /sHU2q7L0qbE0cjk8N/09tDr8Pf//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAMAA4AAAdwgBkDAwcOCwQEAAAkEwAc Q5CRkB8GHUKXmJkxLTo6PJ+gnS4UQKWmpxcpODg9ra6rNiVBs7S1GCI5OT67vLkK CQE/wsPCATARKjvKJwUFyiESDDczCDQvMiMCAg01kiArECwakpIbKBUP5JImHhaR gQA7 ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/bg-author-link.gif Content-Transfer-Encoding: Base64 R0lGODlhBQAHAIABAJ2dnf///yH5BAEAAAEALAAAAAAFAAcAAAIKDA5ht8ioTFRJ FQA7 ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/bg-icon-twitter.gif Content-Transfer-Encoding: Base64 R0lGODlhDgAQAOZGAP///3PU/HLU/HHU/HDU/NfX12/T/Nvb2+jo6Nzc3NbW1t7e 3t3d3d/f39LS0u/v79ra2oHZ/O7u7tPT04jb/fz+/+bm5uPj4/r6+n3X/PT09PHx 8dXV1efn5/z8/Pj4+Pf39+3t7djY2Ljp/enp6eLi4v3+/+Xl5cDs/u35/5zh/f39 /dHx/uTk5Ob3/vb29qbk/evr65Pe/W7T/Pn5+cnu/tfz/qvm/ZHd/f7+/tnZ2XjW /OX3/nXV/OHh4Ynb/Ozs7PX19eT3/o/d/fX8/43c/f///wAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAEYALAAAAAAOABAAQAeigEYIDRAJIUaIiYgFAAIC MgCRkR8nB0aMBgYUkpEYHRCCFigBpKWkMA8XCzQRMyobJYqJjAO1trY3QC0iHhmk NRWSQRcMiBoKJB4pwZErMRwYCB1EQhsLh7JGCgCZFCA6B+EMCIsABOfo5xE2DQ+M jvDwPy4Q7jk9AUMvnAkWiAwgipgqhYNHAgnaTIzwZWoHCx8IjWhowEHEBAcYJyz4 YCQQADs= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/png Content-Location: http://habrahabr.ru/i/bg-icon-facebook.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAA AJ9JREFUOMtjYKAQMDIwMDAkVq75f+vBG5I0qimIMMxvD2FkYmBgYCBVM7IeFmIU q8oLM3SXeTKICHIzMDAwMNhEzYTLMRFjALJmdECUC7DZTJIL8AG8LjiyLB0rH9kl eA148/4rihdgfKJdEJC9BMVmGJ+qYUCdQOTiZGPQUBIjqNhIWwbOvnHvFRVdICPO x3Du6hOcirAlIDUFEQaqAAAnVClioBN0DAAAAABJRU5ErkJggg== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/link_icon2.gif Content-Transfer-Encoding: Base64 R0lGODlhFAAUAOYAAIGiu+ft8o2xy8nm9YmtxcLe7KnL3u3///r+/5G0zYisyYWp xnyivc7i79Lu+53B2NLm9Nvt9tHs87nW6pa60mSKpJ3B1pS20PT2+OX8/3ufu+D5 /+j+/9jy/nCVr7nZ6dXx/s/r+Zi40d74//P+/4+uw8Lh8Zq81Lza7Z2/1rXR5r/b 667N4KLF2uf7/qPB17ra7fX4+pi808nd64ClwL7e7u/z9q7D0YKow8Hg767O5bHT 7dr0/4mqwPb//8Xi8cbg7qnG256909/1/8Ph9LTU5bLT5a/Q4naeuf3///T5/tzl 6qTG28Da8LDR4snW37XW5snl74eow6TD2b7S4L/X5qa8yrfY57/g8rnY55WuwZ67 0OD4+W2TrOX6+7fZ68vo+sXk8931+Iimu+r8/XmZsMTX5rnO3bHN5JKtv8Th9Mfl +Mfl9NTx9IOoxXabtczn9qnL5Njz9a/L4LfR6LXW74uyx6PA2L/d66PH3bPH1rTJ 17DM3pSzx7rX4v///yH5BAAAAAAALAAAAAAUABQAAAf/gH+CgkoQTTuIO00QSoOO ghB1YBsHlQdDazsQj38ITUQcBxwZG6WlQzATCI4TaqOlIzw8HR0gDh0TKoMNKC4j YEREWFg1MDBfWHAhOjN/MXFDPCA6jZx5Jjk/DxgzKB0OITUtDQgISYMPKB8fLGZz cHADbGE5Dw1/PuZ/FFBFRkUvZIT4kSNHjSJV8B0gkU+AkyMsjAigAAQFjA9X+Pxx wcULmYUEDIhkQeACnn5GWkTw0UaOGD8HyOBg0qKFARwCsjxkkeBPBAkS7CChcoDB gxQpDNDYwkLkzSRRoljAkQJJAAYyKFBI0eeMCJotaJAoAIQGBRkJNGi4kOAEAT02 b2gEOUojwooVDC6wVaBAgAAhb2z82UPgDgUFQYBMWOBXAF8FIhjcGFSixwkBDJqo uLCgsxvIGsY4itEDgIgFGuigSUBjQQIhHgDE4HSjCwApAATcmSKkRwUrjjBgCBBg yRMtZSoor1AmzZMlxIUHAgA7 ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/lock.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAUAOZ/AN/t9s7o9tnv+qnI3L7Z6ZG1ztru9s7m8L/h8+36//r//7TG 0rrS4pq60cre7IGlv8rp+M7h7bzY6LnO3LrZ6eP0+6C+04qrwqjI2pa81KHA1bPP 35WzyXieuPX8/7PP4ef2/Of1+6vH267C0cji7rXQ4KfG2/f///X+/5Kzy93x+93w +Mfn97fT5J6/1M3q+nGXsWSKpGqQqqbF28Tc7V6Fn4mtx1qBmuXu9dLp9LrW5+n3 /LDN3eDz+oWmvcTZ6KXF2qfF2Orw9bDL3Mvn9dbk7uT0/czq+LjU5rvV5qHB2KPE 2aTC2bTI16bG3XSYsnCVrvD6/vH9/77W5L/U4bTJ2M/n86zL263L3KfC1fj6/P7/ /4+uxniaspy808Dh8a7N4Nvw+t/x/ODz/Nrm7qXE2Ze3zaXG2uP1/KbG2Zi3zbXS 4bTS467M3LjS4X+kvsLb6L7S4Oj0+pGwxu3z+N/x+4KkvLLJ2rfQ4dXg6NXt+LHO 3Zq+2FZ8lv///////yH5BAEAAH8ALAAAAAAQABQAAAf/gH+CgnQOhg4Ag4p/AAMA Cn6RAC0Ri0UOkQoeHidbfgAMg1oiKFFUHBcXc3dyHj9CgmQRO1lNinlcIQBxghMG IXaKfn8+IQYcvQcVT4t/IysHb4JVBBVQzSMgBB29NAldzQtGNME4fHxO5+rr5zgF CCwQEEcv9S9HECwsCAU2XwF6BKioM0aMijACchD5YuNBhjNYNpRwQxHPBh4DlmR4 0IGClRUgEkg5cQJFAhArrFDoAKOABgxtJK4psWHPlTQuCsCQMYAAiRwGVlRA08NA DhISBsiI4WXAhxZJJEjVgYQNGBMNYtRI0UADEyAzTJiYUUaJiwYpaty4YMZCkCFu FKbASbJBhAY1F24s6MO3r1+/CwIBADs= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: data:image/gif;base64,R0lGODlhBAAEAIAAAPDw5////yH5BAAAAAAALAAAAAAEAAQAAAIFjA8QqVwAOw== Content-Transfer-Encoding: Base64 R0lGODlhBAAEAIAAAPDw5////yH5BAAAAAAALAAAAAAEAAQAAAIFjA8QqVwAOw== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: data:image/gif;base64,R0lGODlhBAAEAIAAAPDw5////yH5BAAAAAAALAAAAAAEAAQAAAIGjANgqRwFADs= Content-Transfer-Encoding: Base64 R0lGODlhBAAEAIAAAPDw5////yH5BAAAAAAALAAAAAAEAAQAAAIGjANgqRwFADs= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: data:image/gif;base64,R0lGODlhBAAEAIAAAPDw5////yH5BAAAAAAALAAAAAAEAAQAAAIGhGOAGt0FADs= Content-Transfer-Encoding: Base64 R0lGODlhBAAEAIAAAPDw5////yH5BAAAAAAALAAAAAAEAAQAAAIGhGOAGt0FADs= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: data:image/gif;base64,R0lGODlhBAAEAIAAAPDw5////yH5BAAAAAAALAAAAAAEAAQAAAIFDG6YwVEAOw== Content-Transfer-Encoding: Base64 R0lGODlhBAAEAIAAAPDw5////yH5BAAAAAAALAAAAAAEAAQAAAIFDG6YwVEAOw== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/add_comment.gif Content-Transfer-Encoding: Base64 R0lGODlhEgAMAIAAAK+lav///yH5BAAAAAAALAAAAAASAAwAAAIgDI4Jwb0NXXwR Unarmdryjn1gllUl4iTjU3bHBk4vWAAAOw== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/comments.gif Content-Transfer-Encoding: Base64 R0lGODlhEgAMAIAAAK+lav///yH5BAAAAAAALAAAAAASAAwAAAIiDI4Jwb0NXXzq sCfj3KZermVZRYGhoSFOcnZfC1kYfFltAQA7 ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/bg_avatar_mask_mini.gif Content-Transfer-Encoding: Base64 R0lGODlhGAAYAIABAPn5+QAAACH5BAEAAAEALAAAAAAYABgAQAIdBIKpu8YPo5y0 2ouz3rx7dHSO+JXmiabqmo6aUQAAOw== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/png Content-Location: http://habrahabr.ru/i/icos/icons_vote_comments_4modes.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABoAAAA0CAMAAACjMti6AAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOFQTFRF////19fX2dnZzAAA65mZM5kA rdaZ1tbWXK0z8bu75PHd39/fzxER1jMz+N3dabRE8fju+fn5yeS7vt6t7KCg9Pnx oM+I5+fn+eTk0yIi4GZmhcJm7qqqksl3/O7u3VVVQaAR54iI762t/f397Ozs9fX1 +fz4/PHxw+G09PT05eXl8vLy9c/PTqci2kRE/vj4zufC0+nJ4+Pj7aen99bWd7tV 6fTk6urq9czM2tra3Nzc+vr6s9mg88LC/Pz82ezPu92q4uLi8LS0++vruNyn7+/v 3d3d9/f33t7e8PDw7e3tKIn5cwAAAcNJREFUeNqU0Nd2wjAMBmDJdjakhEChu2W2 dO9dutf7P1CJ5cg+HHJRJRdJvliWf1Bu+W6BAlvK58ddIHo8nqNRPiV6UynAheox jfJTIDpu9SBVrS5TMwdDcKAidT7mhqcPbSaIVGus92rn+ejKj8HSq1JdGqP9cPK+ C0zjnrroqQNqeOL7V0zd1vlsyaNSmto+LYIFR55CJYGl6gylW55bIJ0e0uPHJSBa 3ZyjRrhMdCPXZyPIOlMj3ACizVod1mUtYroMwRDsyC25knLDje2YCbZkLdV7xWHY aHrPYOlIyojGiLfXDpeAKa1LVZc71HDN85pMUW1ltmRVSk2xR4tgwZGXoZLAUnWG whTq23lBEE4PIZx4icp4mYp4NXG8Jel4NXG8Jel4qWEZryGK14xh4hXCideQiXe2 ysarieMtGnK8Bdl4C+J4Fxy5jLcyDU2IGCCVcF+IkL4EBQX6Ilrc8Mzs1Xmao34y IPrCfYAf/GbqJ9dmwr5IYB/FkGmS8PADnAR399zw+jaz55rg7b3eK0uSp2HRn+kM cY/GyETn7sWmkSX4keAvNezQX0R74nOoP2nK8KUyw8H/4w0CThf/BBgAzksgSjMm a0UAAAAASUVORK5CYII= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/png Content-Location: http://habrahabr.ru/i/bg-button-enter.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAACAAAACDCAMAAADbLOmGAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGBQTFRF8vLy5+fns7Oz////ysrKz8/P 0dHRzs7O09PTx8fHycnJ0NDQyMjI0tLS3NzczMzMzc3N4uLi2dnZy8vL3t7e4ODg 39/f4+Pj5OTk1dXV5ubm+vr6+/v7/v7+/f39////yswFHgAAACB0Uk5T//////// /////////////////////////////////wBcXBvtAAABWElEQVR42uzW23KDMAwE UNlgnBYINOn9xv//ZQkhgGQhFwf8xL5yJpNMFs1C8/6R3WLaWHt4aiaBt5fvBOfr dSrg8As0nwaBxAHqfmAFoJeDMgTUU2AYkAYD7QGaBTYZn18igO4TQALgBcCB6scF xRQcnxXN8TQFzTHt8tjm4ZoT6mTjCfyj1c53IK1Wzq8Asz2wAtDLQRkCcKsZkAYD 7QGaBVY5rZ4DQ6tnAXgBcKBiAGm183xv9d7qvdVLWp33Mdd0BWcWCB4j3AJBY4Tb D2hr3A3sCqAMA7c/XtUxQCaDKgbIZXDeAmgCyJbrX9ABpM7Y0+NLzoLxFZ8DQIGV CxMFMGMP7T5u7KHdhw5Im6LPcEtWOSDSd7gcECX9CjDbA7sCKMPAUKs6BshkUMUA uQzOWwBNABkY5IBA6iwQfEBcQA4IA4ACKxcmCqhkUHALBI0R7wH5E2AAR7t7jEpR hqMAAAAASUVORK5CYII= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/bg_avatar_mask.gif Content-Transfer-Encoding: Base64 R0lGODlhMAAwAIABAP///////yH5BAEAAAEALAAAAAAwADAAQAJDhBGpy+2/DoK0 2ouz3rz7D4biSJbmiabdpFpGe7HwTNf2jef6zvfKu5PwDj6Z74hMKpfMpvMJjUqn 1KrVZsxJsjBJAQA7 ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/png Content-Location: http://habrahabr.ru/i/tags/oldresident.png Content-Transfer-Encoding: Base64 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 rkJggg== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/png Content-Location: http://habrahabr.ru/i/tags/habred.png Content-Transfer-Encoding: Base64 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 4OCheEP7PydxA3UapgnrAAAAAElFTkSuQmCC ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/png Content-Location: http://habrahabr.ru/i/tags/unhabred.png Content-Transfer-Encoding: Base64 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 SUVORK5CYII= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/bg-corner-top-left.gif Content-Transfer-Encoding: Base64 R0lGODlhBAAEAIAAAPDw5////yH5BAAAAAAALAAAAAAEAAQAAAIFjA8QqVwAOw== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/gif Content-Location: http://habrahabr.ru/i/tm_logo_sharp.gif Content-Transfer-Encoding: Base64 R0lGODlhHwA8ANU6AKqqqsUrhaKiot2IuqOjo////+4vmtLT08zMzJ2dnctDk+Lk 5P79/P3s9bGxsfHx8u3s6/Xb6+u61p+envX49Pj5+Z+gn/34+sHBwd3d3Jycm+es zvvk57i4uNRmpsrKyu3D24+Pj/70+uOdxZiYmZqbm8fHx5eWl/jJ3f/5/dxcpsTE xJGRkf6m1P7//b6+vvz9/v3+/pWWlZWUlPv8+6CgoKKhor0idqWlpcAjfP///wAA AAAAAAAAAAAAAAAAACH5BAEAADoALAAAAAAfADwAQAb/wITNJiAah0XkcMlU2jQ1 nHQqFVgFhCxWmqVSa1Gv1NIpHBKTBQRToWAYCI0YLK7bpywZAgHR3XKAgYKDhIU5 N3+FAYuMOYuAj4WIhjcKBQOIEhwKMA2WmISThqOCiIgGLTo6NnetrTZhYiUOBQgn GhkMFQ4vDLUJc7F1AlNdXcQEUgAOAAITCUlKSUXR1Es4CKrafqTdlImhCi6YN5oR HgMcF6CDot7fpwYGAcKu9lJ09/o4sGIJbwwo6MpwgMICCzggVPgwQUy/OmTMJEiw 4MGCAxkWVEAAzMtDhw42JrCQAQIAiwAoMHTIal8dEiFCYDhAs55LKTZmmHiwrafP /59At4F7984dUW9GAykAESEGBwkDNhRosIhGCnalhpYSR05ChBFMB4jAGijpoACB Ft14hFaS1qOATN2QZwDFW7inUGyz6SqZnWQW+N70km/wnY+G6xSmAqDxMhyOAShr rNhmjQ5qClg0kaEABRwOfMUJZueymRIWKj7A8OEBnI5fWs4pc0BDGggHIOAWSbqO DVoHSqR5QIsCLQQNCQuerKw5ZMnF8C2/R+AEiRofEGAAMP1eDRYhVhxA8KD7vRAA cquK4veO3/ZcSKygELS+/Z5y8+vfz98sXLf/IXVXgFnBY8ohZQ1o1g0eXHBBAyKk MMIIDUjwRwQNkBWXggqsg1DIBgx4ooIvGh7C4SWZRABCVBKM9ZZ/h3ySYoMNNFgi jJVk+GEEAXAAQgA6hjKgkHEhKAhaBxKY4Fx0DUmUKfKk4mRRc22gTX9YypWDCj4F AQA7 ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/png Content-Location: http://habrahabr.ru/i/bg-multilogo.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAPAAAAGGCAMAAAByh/zIAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJNQTFRF////f6CwgKGwTXOGn7jE3+fr v8/Xh6a1WHyOiKe19/n6j6y6l7K/z9vh7/P1oLnEepak5+3wp77Jr8TOwNDYprnD x9XcsMTOkKi0Y4WVkK26t8rTb42dmLO/1+Hm+Pn69ff409zh4OjrvcvS0Nzi8PT1 6e7w6O7w3uXpssLKyNbdhZ+sqL7Jm7C7uMrTyNTa2OLnIGiUegAAJOpJREFUeNrs XYdi6joSlTu4d5vee/3/r9sZSTa2MYTcm/sWO2j3JgQI8dG0M0V+hHzWZ33WZ33W i8uSfdn8PXA9OdYJkZXCU4rdZryGr8I3Wc+fsWVfb7M+a+YAYAeEjH2ix4TEWtwy iCV99caqOtYJlalPbNOWDa9tMpUze1UCQ+DLUPWxLZOBqrVNnRXf0gcCSlExKVBL GWiGKQuaqQ4sQ7NaZ7OKqQ1iTbNkwRB8DaUbxKpgjk3BhG+tU2dcAHcgCBro88DW YxSzHwi+DQIPQJ3H7YpB9KuOpiuDdDXV0HwZvsPPgHyMHATsW20P6IEWeERH4xU0 ELBQXp5iqkQf2INW0SpBNk3NNxWBwhaQZRmCx931wFa1gRG0SqtBfXXBkxUjhkcU p6xlsQkeaZ5qK61y0oIse4JODdcQ7pZBLblNyw/GhqVpZgmmxqHLBoRjoU0mTDzB GmuguEZZuqbATNqKNUMTkHwordBrOzCMwECTHZhCzTIF1RJ8QfBVI1ZaQDEt01bl sSY8WD7CjUGpNdkW2pAR26ZOVLRYrR6zKqjENGQhBin7bfDPgeyRAPhjUC9k8Fwq bIgvKIowbgPggWqaYwhHiqwbD9Q6IKoRCIEqWK3gHoo/ADJpKHFgPDJjwzA0zVaE oCXcQ0fAwfgRXNM3hQAyZM0ftAfv0yWb1KeZckuqHjLQSVUIniDGlHEgq22hWYIZ CJ6mPUML+YPanqI0htqB9kynTTvOWxCW0HhXHYDHQuYoaI9EbKiGpsIKZEOjDYmG Oy1TUwXDNx9ySw28VqCqsdLw1MGOVdVjiE1DsL0nblozikmDrsRNLGPGGuZ+A4ZY EGJTfqDRt8oHXZAcN5KAxOCKiC0LKit4cO01hZItY7kH9NkYy2w3ZDDkcTPdta4J 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 B8fVuKNLfZDxMUTEGwdPn+WEatQHZT93NwXGiQM7orO8HdBKGng0zZn0nT5aZLcL znm5vC5zXT4CFcEeapGMMI/uOJxIJc07S3ue49z3BGfbqRCpM7oLRcf9fH7F4w99 1jechPzM3khs3Gz4fI+hGC+bSi85A7Pg3AuIU3IUCydmqQ2Lx3DCvDvGo1HTztPu 6en+veisrgm5Imanm0w43Qzpgz5zUSvaMQwnI9ZGCvmh8WPDRLxiRzSAU0GMuS73 tDs+GY1KA4j98/XqZDkQn4VZNfQkPOGNsInTHy2PZI5W2ndEZFvVGfEu91S8KtlU wKvRcrSfX50NueKI6WiOJZ+ug6eh+4W6bTe83raI5tGNPUwbJpNliEJL5pvlnh4i 5TlDn0bl42izFCeFUf8rlW2DT1km9ATh5BhmbKJLU8ZwhVkvG5Xt4i0d8hpJ4++4 FHbP87DL6dMZR1xwgGkOz19FduwSciJneQtOTQdMVvtwz7O7JWT3yzmWMicbIBVL HFNCP3be5yJOQtKetQTm0V91E3hAaMDFbnk/pMey9vz+B2Jr7jQ0OZ5RtPsRBKqk G3YnpXhNM4ckdLrtuXXWHIdq+06CQ4T9fvUmDnPWVrm26E5DmxAdFR7IoxPQ1e3o kjYu50yz3VDs30lSbCXgTZdKtl+T6IqrVuKlzHpZd9sZcd4+vJDeUk3uJ/c3m2qj Sk9GLMaGI9JvO2BnRfHSGLsBtRbvfFa7vPS+S/KS3AQS3sk9uqvTJl3Gc4O86DrB e/vVnMk5t4lCJyLeWopRDdq6v96ngP0W3axzJSZgvwxvQpsn4V1UmrfpNrxn8drP 8LK4lNw56VYlhaP81qQJz/2c1Z2PbtPtSbt4UJrhXT6IuaNW3U95xf3RPsO7qjrp MCEtXNfbfbMr+Jb7NuJdOXngORcALsl8Q9q+Ru2HWJZ193fhze+b/WtWf/XLBHz+ VXA351/z3yf5rM/6rM/6rM/6rM/6rM/6rM/6rM/6rM/6rM/6rM9q0JruhpIkpdPf AjfquIv1dCedfgfebc+d0Qdu71fgXXQW/NFFevCORavwurnlXoZ1b1i70q5FeC+n tOMe2ONTnQ1fOp1tq9xzOrxcGOBpZ41fT4d14fWTNFy3SaHX6w7EI6ayu5Q9N3Px heGC+jPp0LZYNV24DO+0l4nSpfZ8AfuWpKihgnz4ygwWezXKsG0R8KxHpqnUaah/ Xks80hafW5xcVGe+XLezzv02fOnN1kOpue5q0ZGKrohTyerCXbmkJI1Q3LOONGyk +W6plLYgzDSHvOtQ2bqnCNYBHrvR0MVnDrPTbCrNyCyN4P1NFW7vtKX+NtPQGTxE AbvRgj2xwCdm6wNCXpBdj6wPrtRctgFMCZV1OmSIGa58DdPdbJsOUQHoTkiLYUTf emlw5Nmh0q6nALwzixBkT+pdFmkGObqsyXZIVRjiUKcD3krqNZtdoZBBRRnEdDvt MMnOdinacicFxPjijqzhawp43cazDRTyAWUs9Vx3SG2VM0e2Ogf024CbKjx3V+tZ k4UMSHpF2wUZztJOJS5BxM43g0S9GWViDfLWRcWccrjpBVDi/3cuFewM/fcpYq/O UAeYXGfDTK8PzQHcGe6meVmDS3F3cA/Sgv7Ui6LULTEQKnG6PSkLS9MpmTWITlPf O8uIR67NrhTtKGCpdk3R5IfUTe9OZNqs9CFijJHhPbidg8skeWHf0FVPyRYj9OzG NodD6TSlWcRpe+o1LB3eUk4FvBigTyOXTKVDL9ffjExRnpEWpRxhLRM2JEovadMo SETBTS/gg6MOmUnTLYMWpcAnd9EFZAx50WGYmXCPC7+H5Pu0Xe+aliLumMQikOdO gm/ubscM+lBvwkDKFiyTIOTURMLVQ5vcgsZCEiSB3GZRR0pT6dk6LKg999Im4t3S 6EoI/ttSYXcg25e+WtSPN7LgkQJRRLCd3jTiNtrpSF+vA3VuzSvhQaKwBsDbNcLs HLhjul+lmJxSxnVaMENuWP6PmUAEVkn5cyQNT/V4p6XnF1gUkhZYw21a2dJFarzl 7Bn8lzSsl/CQPh/1csRYBejhLmRheNYE7aaJMFx3xKnGZf3YaPGti55UQoyVkM5s ES1m68MifXsXNj2B0R52h8xs3S1xv/BXXP4HRAybE1FNP10uvc7pWXX7XZL+dLqg JHF4y4Zc6ZUFvr2zXiPF5sWCk/T+xYC0M0N3FZFdR/rGoupPyFA6bGlmNewBJyW9 zvtTaFqUjZAyf2ulawoY0qnL+iD1djNgIOtZ+vZlj2lnxzIHqs6d14XcwdIIZaQd LNue0JTTw9R9d8AXpoMsup6mnXTxElz0Vq7UowxN6q1pNcDFbPndAW8PrI/NwhLZ uQjgBTmnQ3RrLssqh2lHoumWS3Zvzj8Oh0Ong8V0CvhEhhBWwUX3XlRr2iAG5PDr a7JDr3V48xg8nK574LbWhMoUiPQU8+FXLDgHDO6uNxtKl100g587bx6D16krpdto t2YavTiAE4teCcGcaqdTsP7DCSz6sEbo9fM9bwZZ2s2iC6tcnHYg7t13ghPy7t6Q yRrEnDYhMZ7uXFa9iog7I53T65GJvxV0GUnWArx1U0b0IBmmfdDebEErWC86rZk7 w+i9u0gd2lC8HBpSuKQNUuynSLcE4pUVsR4TGP0JW1LpoiFVgPVQ+rPV6c1clmWw wkdDZj0uVKjp65pcH5IvaUPwzhhSrE6t/xRx57Sd9ZoyNn4A4QI1nAHwXfQdlD3u qCEqpetDrzGNFnA60g4nf11arPxGQsylG+EvNqgwjeY7w/x/9ie6vOvMICDdpUjb N657oMtaL6QhSf/EenH88HIP2JXet9SDaozpMHDiTiU3+NIzsyZLWgG8XZzcN55n Qk2eRRiKpzeY6cuAZzMctmQ50nq2iGg7VRou3thlw2UvooXEmg7IFN3HHdJX8igX B9jemmhBZHFBulFP2n6Lc7mzg9TD2l8vomsB0m6En8bBDhytA1PMZ1p6L1hxDxuq aP6Na5YCzHTGBq+i7yrwRZKe5YTTt0W86NEL371KsYqgo92sxidvZ1E6PL2vqwYY W7IYuq/grTP1jutG2Tq5rDeVvq/3YiM80XC6eCUMd7CSO7w8f0/6zqGJ8Bg85FMd TwWN7wEfd6FTmYfLIe1VZX1498iUVeKzGvyCzDIhH07DugotqCwlZpgDn2bbEx/a OklNcdRpFodoCQM5SEa2DtuaXjHvTcA3bJ4hjbwwzJ2G4D0Np7l/PqGwO1vyVQkE Xoy2dCxxwbj0ND/L1YBAPCVur9gEj8iU1m0r1hu5bo/3/2e0l7bA6D1tjCLnCn0C 4r/tDC83keKs1nRdUeYtq4DRGRaX/giIO2sybBpgd8iufVg8uwPa6vZS4GDZpMsB nBL8u+B7FvkJgB04rsYdXeqBjA8RIt66ePosJ1TDHij7qbMtME4c2JHcxe2AVtrA o2nutOf20CI7HXDOi8VlkevyAagI9lCLZIR5dNflRCpt3lna0wznvqc4206FSJ3R XSg67GazCx5/6LG+4TTiZ/aGUuNmw2c7DMV42VR66QmYBedeQJzSg1Q4MUttWDpE U+bdMR4Nm3aedkdP9+8kd31JyQUxu510yulmRB/0mIta045hNB2yNlLED40fGibi NTuiAZwKYsxlsaPd8elwWBpA7J0uFzfLgfgszLqhJ+EJb4RN3d5wcSAztNKeKyHb qs6Id7in4lXJpgJeDxfD3ezibskFR0yHMyz5dFw8Dd0r1G070eW2RTSPbuxh2iid LiIUWjrbLnb0ECnPGXo0Kh+G24U0LYz6X6hsG3zKMqUnCKeHKGMTHZoyRmvMetmo bAdv6ZDXSBp/x6Woc5pFHU6fTjjiggNMM3j+IrFjl5ATuYtbcGo6YLLeRTue3S0g u1/MsJQ53QKpWOCYEvqx0y4XcRqR9qwFMI/eupPCA0IDLnbLexE9lrXj9z+QWnOn oenhhKLdDSFQpZ2oMy3Fa5o5pJHbac+ts2Y4VNtzUxwi7PWqN3GYsbbKZdoefd5G 6KjwQB6dgK5uR4e0cbknmu1GUu9OklIrAW87VLK9mkRXWrcSL2XWi7rbzkiz9uGF 9JZqci+9v9lUG1V6OmQxNhqSXtsBu2uKl8bYLai1dOez2uWldx2Sl+SmkPBO79Fd 3DbpMp4b5EXXKd7br+ZMzqlNFDqV8NZSjGrQ1v3lPgXstehmnWspBftleFPaPInu otKsTbfhPUmXXoaXxaX0zkm3Kikc5rcmTXnu567vfHSLkgbSwYPSDO/iQcwdtup+ ymvuj3YZ3nXVSUcpaeG63O6bXcG32LUR79rNA8+pAHBBZlvS9jVsP8SyrDu/C29+ 3+xfs3rrXybg06+Cuz39mv8+yWd91md91md91mc9XP8TYADILJZhzAosrAAAAABJ RU5ErkJggg== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline; filename=all.css Content-Type: text/css; name=all.css Content-Location: http://habrahabr.ru/css/1307009785/all.css Content-Transfer-Encoding: 8bit /* layout */ #header-wrapper { position:relative; /*overflow:hidden;*/ min-width:760px; } #wrapper { width: 95%; min-width: 725px; clear: both; margin:0 auto; /* overflow: hidden;*/ } #inner { margin:0 auto; max-width: 1200px; } #main-content { float: left; width: 66%; clear: left; margin-right: 2%; /* overflow: hidden;*/ } #sidebar { float: left; width: 31%; } /* main */ body, html { height: 100%; } body { font: .75em Verdana, sans-serif; /*12px is font-size for main content. Base font size*/ color:#000; background:#fff; } a{color: #6da3bd;} a.serv{ text-decoration:none; border-bottom:1px solid #6DA3BD; } .input-row{ margin-bottom:9px; } a.js-serv{ border-bottom: 1px dashed #6DA3BD; text-decoration:none; cursor:pointer; } a.silentlink{ text-decoration:none; color:#343434; } a.silentlink:hover{ color:#343434; } a:hover{ color:#4D7285;} .hentry .content a:visited,.entry-content a:visited{ color:#990099; } .hentry .content a:visited:hover,.entry-content a:visited:hover{ color:#C266C2; } .hentry .content .habracut a:visited{ color:#6DA3BD; } .hentry .content .habracut a:visited:hover{ color:#939393; } .entry-title a.topic:visited{ color:#B0B0B0; } .entry-title a.topic:visited:hover{ color:#939393; } a img { border:none; } address { font-style:normal; } fieldset {border:0 solid transparent;} input, select, textarea { font-size: 100%; font-family: verdana, sans-serif; } ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,body,html,blockquote,fieldset,dl,dt,dd,caption {margin:0; padding:0;} ul,ol {list-style: none;} pre,code {font-size: 1em;} ol{list-style-type: decimal; list-style-position: inside; } .published, time{ text-transform: lowercase; } h1, h2, h3, h4, h5, h6 { color:#999999; font-family:Verdana,sans-serif; font-weight:normal; margin:0 0 0 0; padding:0; } h1 { font-size:162.5%; letter-spacing:-1px; margin-bottom:0.7em; } h2 { font-size:150%; } h3 { font-size: 137.5%; } h4 { font-size: 120%; } h5 { font-size: 110%; } h6 { font-size: 100%; } table {border-collapse: collapse;} blockquote { border-left:2px solid #bbb; margin: .83em 0; padding-left:15px; clear: both; } img[align="center"] { display: block; margin: 0 auto !important; } .hidden { display: none !important;} .error{color:red;} /*Header*/ /* Sligtly modified code first coded by Aleksey Rybakov (http://flack.ru/temp/habr/head.html) */ #header-inner { margin-right:255px; } #nav-adv { margin-left:240px; } #logo { width:240px; float:left; } #info-search { width:255px; float:right; } #logo img { width:240px; height:130px; } #main-nav { padding-top:14px; text-transform:lowercase; font:1.75em 'Lucida Grande',Verdana,sans-serif; /*21px*/ } #main-nav li { display:inline; margin-right:1px; } #main-nav li a { position:relative; padding:0 3px; border-bottom:1px solid #b2b2b2; text-decoration:none; color:#b2b2b2; } #main-nav li.current a { color: #000; font-weight: normal; border-bottom:none; } #main-nav li.current a span { color: #F60; font-weight: normal; border-bottom:1px solid #000; } #main-nav li .top-Link { vertical-align: top; color: #ff9600; letter-spacing: -1px; } #main-nav li .top-link span { color: #8d8b8b; } /* Subnavigation (nearest menu level) */ #sub-nav { clear: both; margin-bottom: 20px; } #sub-nav li { display: inline; margin-right: 3px; } #sub-nav .create-blog, #sub-nav #recommend { margin-left: 15px; } #sub-nav li a { font-family: Arial, sans-serif; font-size:1.083em; /*13px*/ text-decoration: none; color:#093; padding: 0 2px; } #sub-nav .current a { color:#fff; background-color: #ff9525; padding: 0 5px;} /* // Subnavigation (nearest menu level) */ /*Text advert*/ #head-text-adv { margin: 2.5em 0 1.5em 0; /* float: left;*/ width: 98%; } .profile #head-text-adv { margin: 5em 0 0 0; /* float: left;*/ width: 98%; } #main-page #head-text-adv { margin-top: 1.2em; } #head-text-adv iframe { margin: 0; width: 100%; } /* // Text advert*/ #info-search { text-align:right; width: 255px; font:.917em Tahoma,Verdana,Helvetica,sans-serif; /*11px*/ } #info-search .avatar { float:right; width:48px; height:48px; margin:7px 19px 0 0; border:1px solid #DDD; } #info-search dl { float:right; padding:11px 13px 0 0; text-transform:lowercase; width: 170px; } #info-search dl a { color:#999; } #info-search dd { margin-top:1px; } #info-search dt { width: 170px; } #info-search dd ul { color:#000; } #info-search dd ul li { display:inline; padding:0 5px; background: url(/i/bg-info-search.gif) no-repeat 100% 100%; } #info-search dd ul li.last { padding:0; background:none; } #info-search dd ul li a { color:#000; } #info-search .habrauser { text-transform:none; font-weight:bold; color:#666; } #info-search #last-shot {margin-bottom: -1px;} #info-search form { float:left; margin-top:11px; margin-right:6px; } #info-search fieldset div { float:left; width:176px; padding:3px; background:#C9D6DE; } #info-search fieldset div input { width:170px; padding:1px 0 1px 3px; } #info-search fieldset .submit { float:left; width:49px; margin:2px 0 0 5px; } .new-mail-indicator {margin-bottom: -1px; margin-left: 2px;} /* Menu for unlogined visitors */ #info-search ul.guest_panel { margin: 2em 4.2em 1em 1em; } #info-search ul.guest_panel li { display: inline; } /* // Header */ .company_admin #sidebar{ padding-top:46px; } .help .company-help{ margin:0 20px 20px 20px; } /* Main content */ /* Горизонтальное меню над постами */ .page-navigation { overflow:hidden; width:100%; clear:both; margin-bottom: 20px; } ul.page-menu{ overflow:hidden; } .page-menu li { width:20%; float:left; } .page-menu li { padding: 0; text-align: center; background: #eaecea url(/i/bg-page-nav-left.gif) no-repeat 0 0; vertical-align: top; } .page-menu li.current { background-color: #d3e2f0; background-image: url(/i/bg-page-nav-current-left.gif); } .page-menu li b{ display:block; font-weight:400; height: 28px; position:relative; border-right: 1px solid #fff; border-bottom: 1px solid #fff; padding-top: 7px; background: url(/i/bg-page-nav-right.gif) no-repeat 100% 0; } .page-menu li.current b { background-image: url(/i/bg-page-nav-current-right.gif); } .unlogged-menu{ padding-left:35px; } .blog-menu{ } .blog-menu .page-menu td, .blog-menu .page-menu td.current{ border-bottom-width:0; } .top-page-menu{ padding-left:35px; } .page-menu { width: 100%; clear: both; font-size: 1.33em; border-collapse: collapse; } .page-menu td { padding: 0; height: 2.19em;/*35px*/ text-align: center; background: #eaecea url(/i/bg-page-nav-left.gif) no-repeat 0 0; vertical-align: top; border-right: 1px solid #fff; border-bottom: 1px solid #fff; } .page-menu td.last { border-right: none; } .page-menu td.current { background-color: #d3e2f0; background-image: url(/i/bg-page-nav-current-left.gif); border-bottom: 1px solid #d3e2f0; } .page-menu td div { padding-top: .5em; background: url(/i/bg-page-nav-right.gif) no-repeat top right; } .page-menu a,.page-menu label { color: #666; cursor:pointer; text-decoration:underline; } .page-menu a:hover,.page-menu label:hover{ color:#A3A3A3; } .page-menu .current a,.page-menu .current label { text-decoration: none; color:#000; } #company-index .page-menu td { background: none; } #company-index .page-menu td div { background: url(/i/bg-page-nav-right-company.gif) no-repeat top right; background: none; } #company-index .page-menu td div a { color: #b2b2b2; } #company-index .page-menu .current div a { color: #696969; } #company-index .page-menu td div .add { margin-left: .5em; } .profile .page-menu .current, .profile .page-menu .own { width: 50%; } body#top .page-menu .current { border-bottom-color: #fff; } #company-index .page-menu td.current { background: #f0f0e7 url(/i/corner_3.gif) no-repeat 0 0; /* border-bottom: 1px solid #f0f0e7; */ } .page-menu td.current div { background: url(/i/bg-page-nav-current-right.gif) no-repeat top right; } #company-index .page-menu td.current div { background: url(/i/corner_1.gif) no-repeat top right; } .page-menu .top img { margin-top: .1em; } .page-menu #write { height: 35px; width: 34px; margin: 0; background: #fff; } .page-menu #write img { margin: 0; outline: none; } .page-menu sup {font-size:70%; color:#999; vertical-align:baseline; position: relative; top: -8px;line-height:0;} /*Tabled page-menu*/ .page-menu td { text-align: center; } /*2 линия*/ .page-submenu { font-size: 1em; /*12px*/ float: left; clear: both; background: #D3E2F0 url(/i/bg-page-subnav-corner-bottom-left.gif) no-repeat bottom left; border-right: 1px solid #fff; } .logged { border-left: 35px solid #fff; } .right { float: right; } .page-submenu ul { padding: .5em 20px .5em 0; background: url(/i/bg-page-subnav-corner-bottom-right.gif) no-repeat bottom right; } .page-submenu li { display: inline; margin: 0 0 0 10px; } .page-submenu li.create-new-blog { padding-left: 25px; background: none; } .page-submenu li.current a {text-decoration: none;color:#000 !important;} .page-menu td .new, .page-submenu li .new { color: #390; } .page-submenu li a { color: #666; } .page-submenu li a:hover { color:#A3A3A3; } .page-submenu li .rss img { margin-bottom: -2px; } /*Простые табы (без круглых уголков и т.п., см. страницу приглашения в блог)*/ .two-simple-tabs { width: 100%; float: left; clear: both; margin: 20px 0 10px 0; font-size: 1.58em; /*19/12*/ white-space: nowrap; } .two-simple-tabs li { float: left; width: 49%; text-align: center; } .two-simple-tabs li.last { float: right; } .two-simple-tabs div { padding: .5em .5em; width: 95%; margin: 0 auto; } .two-simple-tabs .current div { background: #faeee2; } .two-simple-tabs div, .two-simple-tabs div a { color: #999; } .two-simple-tabs div .new { font: normal .89em/100% Verdana, sans-serif; /*17/19*/ color: #390; } .two-simple-tabs div a:hover{ color:#333; } /* Archive section */ .archive-navbar { margin: 30px auto -10px auto; text-align: center; } .archive-navbar a { display: inline; font: 2.17em/100% Verdana, sans-serif; color: #996; } .archive-navbar h1 { display: inline; font: normal 2.17em/100% Verdana, sans-serif; letter-spacing: -1px; margin: 0 .8em; color: #69c; } /* Информация о блоге */ /* Новые стили 24 апреля 2008 */ .blog-descr {clear:both; font-size:14px;} .blog-text-descr {margin: 10px 0 0;} .blog-descr .bg-top-r h3 { clear: both; margin-bottom: 10px; font-size: 1.63em; /*26/16*/ font-weight: normal; letter-spacing: -1px; color: #999; } .blog-descr .bg-top-r div, .blog-descr .bg-top-r p {font-size: 14px;} /* Админы, соавторы и читатели блога */ .blog-descr #admins ul, .blog-descr #coauthors ul { float: left; width: 100%; margin: .83em 0; text-align: center; } .blog-descr #admins li, .blog-descr #coauthors li { float: left; clear: right; list-style: none; margin: 0 5px; } .blog-descr #admins dl dt a img, .blog-descr #coauthors dl dt a img { display: block; margin: 0 auto; border: 1px solid #ddd; } .blog-descr #admins a, .blog-descr #coauthors a { font-size: 12px; } .people { margin: 10px 0; } .people ul { margin-top: 10px; font-size: 12px; } .people ul li { display: block; float: left; margin-right: 5px; font-size:1em; font-family:arial; line-height: 130%; } .people ul li, .people ul li a { color:#999; } .people ul li a { padding: 0 0 0 15px; background: url(/i/small_default_userpic.gif) 0 50% no-repeat; } /* // Новые стили 24 апреля 2008 */ #viva-la-w3c { width:149%; } .blog-title { overflow:hidden; padding-top:10px; margin-top:-20px; min-height: 48px; padding-bottom:8px; padding-left:35px; } #viva-la-w3c .blog-title .avatar {border: 1px solid #ddd;float:left;} .blog-info { clear: both; padding:35px 0 20px 0; } .blog-info .title a { color: #008cd2; } .blog-info .title img { border: 1px solid #ddd; } .blog-info .title .avatar { margin: 0 .83em -.45em 0; } .blog-info #buttons { margin-left: 10px; white-space: nowrap; } .blog-info #buttons img { margin: 0 .83em -.2em 0; border: 1px solid #ddd; } .blog-info .more-info { margin-left: 45px; } .blog-info .more-info .subscribers { font-size: 1em;/*12/16*/ position: relative; top: -.5em; } .blog-info .more-info .rating, .blog-info .more-info .subscribers { margin: .2em .1em 0 .1em; } .blog-panel #sidebar{ margin-top:46px; } .blogs #viva-la-w3c h2.blog-header { margin-top: 0; float:left; margin-right:30px; font: normal 300%/120% Verdana, sans-serif; letter-spacing: -1px; color:#333; } .blogs #viva-la-w3c h2.blog-header .silentlink{ position:relative; display:block; float:left; margin-right:5px; } .blogs #viva-la-w3c h2.blog-header .profiled_blog{ cursor: help;width:16px;height:16px;float:left;margin-left:2px;margin-top:10px;background: transparent url(/i/icon_asterisk_24.png) left top no-repeat; } .blogs #viva-la-w3c h2.blog-header .edit{ display:block;float:left;margin-left:10px;margin-top:18px; } .blogs h2.blog-header .blog-whois{ position:absolute; font-size:33%; line-height:1em; top:-5px; right:-20px; color:#66ccff; } .blogs h2.blog-header .blog-whois:hover{ color:#4890b4; } dl.blog-index { float:left; margin-right:19px; position:relative; } dl.blog-index dt{ position:absolute; width:100%; text-align:center; top:-6px; font-size:83%; color:#ccc; } dl.blog-index dd{ color:#CC66CC; font-size:300%; } .blog-info .more-info .rating { font-family:Arial; font-weight: bold; padding: 0 .2em; color:#fff; background-color: #d479b3; } .blog-about-text{ position:absolute; padding:27px 27px 30px; width:550px; top:200px; left:47%; z-index:99; background:#fff; border: 1px solid #999; } #js-blog_info.tipBox-too-mach-right{ margin-left:-575px; } .blog-about-text .close-blog-info{ position:absolute; top:10px; left:10px; text-decoration:none; color:#999; } .blog-about-text .close-blog-info:hover{ color:#ccc; } #js-blog_info.tipBox-too-mach-right .close-blog-info{ right:10px; left:auto; } .blog-about-text h2{ color:#333; font-size:216%; margin:0 0 13px; } .blog-about-text .blog-about-text-content{ max-height:440px; overflow-y:auto; } .blog-about-text #js-admins_moderators_holder #admins img, .blog-about-text #js-admins_moderators_holder #coauthors img, .blog-about-text #js-admins_moderators_holder span{ display:none !important; } .blog-about-text #js-admins_moderators_holder h3{ clear:left; font-size:100%; float:left; color:#000; text-transform:lowercase; margin-bottom:5px; margin-right:5px; } .blog-about-text #js-admins_moderators_holder #admins, .blog-about-text #js-admins_moderators_holder #coauthors, .blog-about-text #js-admins_moderators_holder p{ float:left; } .blog-about-text #js-admins_moderators_holder p{ margin:0; color:#ccc; } #js-admins_moderators_holder #admins *, #js-admins_moderators_holder #coauthors *{ display:inline; padding:0; margin:0; } .blog-about-text .blog-text-descr{ clear:left; padding-top:6px; } #cool-numbers { margin: -3.6em 0 2.5em 13.33em; } .blog-counts{ clear:left; font-size:133%; color:#999 ; margin-bottom:10px; } .blog-info #description { font-size: 1.33em; /*16/12*/ float: left; width: 95%; padding: 0 10px; background: #dfe9e8 url(/i/bg-description-top-left.gif) no-repeat 0 0; } .blog-info #description #inner { padding: 20px 10px; } .blog-info #description p { width: 100%; clear: both; margin: 0 0 .83em 0; padding: 0; } /* Найти в поисковых системах: Яндекс, Google, bing. */ .alter_search{padding-left:35px;} /* List of blog admins and readers */ .blogs-search{ padding-left:35px; } .blogs-search .popular-blogs{ margin-left:-2%; } .bloglist-suggest-form { font-size: 22px; padding:0; } #bloglist_suggest_form_input { height: 28px; float: left; width: 99%; } .blogs-search-side .side-rubrikator{ padding:62px 0 17px 37px; } .side-rubrikator { margin: 0; line-height:200%;font-size:133%; font-family:Arial,sans-serif;} .side-rubrikator li { margin: 0; padding: 1px 0; margin:0 6px 0 0;white-space: nowrap;color:#ccc; } .side-rubrikator li.active{ } .side-rubrikator li a{padding:0 4px;margin-left:-4px;} .side-rubrikator li .side-rubrikator-counter{color:#999;} .side-rubrikator li.active a { color: #333; text-decoration: none; background: #C5DAE5; } /* Приглашение в блог */ /*(Таблица юзеров, их предпочтений, плюс кнопки Пригласить как читателя, как писателя etc.)*/ /*Визуал: хабраникнейм и буллет юзера слева от неё.*/ .corplist-suggest-form { font-size: 22px; padding:20px 0 0 35px;} .corplist-suggest-form #corplist_suggest_form_input{height: 28px; float: left; width: 99%;} .invitation .intro { clear: both; margin-top: 20px; } .h-user { padding: 0 0 0 15px; background: url(/i/bg-user2.gif) 0 90% no-repeat; color:#999; } .td-h-user { width: 70%; font-family: Verdana, Arial, Helvetica, sans-serif; vertical-align: top; padding: 10px 0; } .td-h-user .avatar { margin-left: 10px; margin-right: 10px; border: 1px solid #ddd; float: left; } .live .td-h-user dl { margin: 0 0 0 58px; padding-right: 10px; } .td-h-user dl a { color: #666; } .td-h-user dl dd { font: .83em Verdana, sans-serif; color: #666; } .td-interests { display: inline; } .td-interests li { display: inline; font-weight: normal; } .candidates .controls { padding-right: 10px; vertical-align: middle; text-align: center; } .candidates .controls li { margin: 12px 0; } .candidates .controls a { padding: 10px 0 10px 25px; background: url(/i/corporate_icon.gif) 0 65% no-repeat; } .dailybest h3 sup { font-size: 65%; } /* Top section, filtrator */ #filtrator { margin: 3.33em 0; padding-left:35px; } #filtrator select { font-size: 1.67em; /*20/12*/ color: #333; width: 100%; } /* // Top section, filtrator */ /* Поиск по тегам */ .tag-search { margin: 0 0 14px; padding-left:35px; width: 100%; font: 26px/36px Verdana, sans-serif; color: #996; } /* .tag-search a {height: 36px; float:left; width: 20px;} .tag-search a img {margin: 11px 0 0 0;} */ .tag-search .bullet {margin: 11px 0 0 0; float:left;} .tag-search div.rarr {height: 36px; padding-left: 10px; float:left;} .tag-search .inpt-text { margin: 0 10px; padding-left:6px; float: left; color: #996; border: 1px solid #996; } .tag-search input.inpt-text {width: 50%;} /* Поиск habr.ru/search/ */ .people-section .corps-list{ padding-top:0; } .bloglist .searched-item, .corps-list .searched-item{ background:#F0E9AA; } .bloglist a .searched-item, .corps-list a .searched-item{ text-decoration:inherit; } .search-header { margin: 35px 0 20px 0; } .search-header h1 { margin: 0; font: 2em/100% Verdana, sans-serif; color: #69c; } .search-header form { margin: 6px 0 0 20px; float: left; } .search-header p { float: left; clear: both; width: 100%; margin: 20px 0 0 0; } .searched-item { background: #fffacd;/* Выделение поискового запроса в тексте выдачи*/ } .search-results { margin-top:30px; overflow: hidden; } .search-results .search-content-pad{ padding-left:35px; } .search-results .items{ padding-left:35px; } /*Меню фильтрации результатов поиска*/ .search-results-bar {font-size: 1em; margin-bottom: 30px;} .search-results-bar h2, .search-results-bar #sub-nav { display: inline; float: none; } .search-results-bar h2 {margin-right: 10px;} /*Выдача найденных комментариев*/ .search .items { margin: 30px 0 0 0; } /* Выдача найденных компаний */ .searched-companies {margin-top: 40px; clear: both;} .searched-companies .item {margin-bottom: 20px;} .searched-companies .summary { margin: -20px 0 0 40px; } .searched-companies .summary .name a { font: 2em/110% Verdana, sans-serif;/*24/12*/ letter-spacing: -1px; color: #aeaeae; } .searched-companies .summary .ceo, .searched-companies .summary .url { margin: 5px 0; } .search .tag-search { margin: 60px 0; } .search .tag-search .inpt-text { width: 100%; margin: auto 0; } .search .tag-search .inpt-btn { margin: 20px 0; background: #996; color: #fff; } .live-block-page, .mail-page-content{ padding-left:35px; } .user_profile_edit_holder{ padding-left:35px; } .profile #main-content .userinfo, .company #main-content .userinfo { width:auto; padding-left:35px; } .profile #main-content .user-recommend-user{padding-left:35px;} .profile #main-content .items, .profile #main-content .live{ margin-left:35px !important; width:auto; } .site-settings{ padding-left:35px; } #main-content .hentry .summary{ margin-left:35px !important; } .profile #main-content .items .entry-title , .profile #main-content .items .content, .profile #main-content .items .entry-info{ padding-left:0; margin-left:0; } .profile #main-content .items .tags{ margin-left:0; } .i-am-your-father-luke{ padding-left:35px !important; } #js-topic-form-title{ padding-left:35px; } #js-topic-form-swither{ padding-left:35px; } #js-topic-form-holder,.add-new-blog #main-content{ padding-left:35px; } .job-content, .fans-content, .d-block{ padding-left:35px; } #comments{ padding-left:35px; } /* Пост в блоге */ div.hentry { width: 100%; float:left; clear:both; margin: 0 0 40px; } div.hentry .page-menu, .message-page-menu{ margin-bottom:30px; } .message-page-menu{ padding-left:35px; width:auto; margin-bottom:0; } .message-page-menu li{ width:50%; } h2.single-entry-title{ padding-left:35px; } h2.inbox-message-header{ color:#000 !important; margin-top:27px; margin-bottom:7px !important; } h2.entry-title { font: 2.167em/118% normal Verdana, Tahoma, sans-serif; /*26px*/ margin-bottom: 20px; color: #767676; padding-left:35px; padding-right:30px; } h2.entry-title span{ color:#333; } .post h2.entry-title { clear: both; font: 2.833em/110% Verdana, sans-serif; /*34/26*/ /*Размер заголовка в посте раздела Персональные*/ } .post .personal h2.entry-title, .post .podcast h2.entry-title { color: #c99; /*Цвет заголовка в посте раздела Персональные*/ } .post .translation h2.entry-title { color: #c99; /*Ц. з. в переводном посте раздела Персональные*/ } .post .corporative h2.entry-title { color: #8277a3; /*Ц. з. в посте раздела Корпоративные*/ } .post .link h2.entry-title { color: #749f79; /*Ц. з. в переводном посте раздела Персональные*/ padding-left: 28px; } .entry-title a { color: #666; } .entry-title a:hover{ color:#A3A3A3; } .entry-title a.blog { color: #6da3bd; } .entry-title a.blog:hover{ color:#4D7285; } .entry-title .profiled_blog{cursor: help;padding:0 8px;height:16px;margin-left:5px;font-size:19px;background: transparent url(/i/icon_asterisk_16.png) left top no-repeat;} .corporative .entry-title a.blog { color: #8277a3; } .corporative .entry-title a.blog:hover{ color:#ABA4C2; } .entry-title .remove { margin: 0 0 0 10px; /*Удаление из избранного*/ } /* Стили для топика-события */ .vevent .entry-title {margin-bottom: 10px;} /* .vevent .entry-title a {color:#666; text-decoration:none;} .entry-title a.event-name {padding: 0 .3em .1em .3em; color:#f0f0e7 !important; background: #8bb0ad; } */ .vevent .summary { margin-bottom: 20px; padding: .1em 10px; font: 14px/140% Arial,sans-serif; color:#666; background:#f0f0e7; } /* Стили для основного контента внтури любой записи блога */ .comments { position:relative; } .hentry .content { font: 1.083em/1.54em Verdana, sans-serif;/*13px*/ margin-left: 35px; margin-bottom:0.83em; overflow:hidden; } .hentry .content, .tags, .entry-info { margin-left: 35px; } .comment_holder { float:left; width:100%; } .hentry .hentry { margin-left:20px; } .hentry .hentry .hentry .hentry .hentry .hentry .hentry .hentry .hentry .hentry .hentry .hentry .hentry .hentry .hentry .hentry .hentry .hentry .hentry .hentry .hentry .hentry .hentry { margin-left:0; } .hentry .reply_form .js-field-holder, .hentry .reply_form .help_holder, .hentry .reply_form .comment-help{ padding-left: 20px; } .msg-meta { position:relative; } li:hover > .msg-meta > .folding-dot-holder{ display:block; } .msg-meta .folding-dot-holder{ display:none; position:absolute; top:0; left:0; width:1px; height:1px; } .msg-meta .folding-dot{ width:500px; height:5px; background:red; right:0px; top:11px; position:absolute; background: url(/i/bg-folding-dot-light.png) repeat-x 100% 0; } .new-reply { background: #E8E8FF; } .new-reply-old { background: #F3F3FF; } .my-reply { background: #FDF5E6; } .hentry .content p, .profile .summary p, .profile .summary img, .user-flow .summary p, .user-flow .summary img { margin: 0 0 .83em 0; } .hentry .content img[align=left] { margin-right: 30px; margin-top: 5px; margin-bottom: 5px; } .hentry .content img[align=right] { margin-left: 30px; margin-top: 5px; margin-bottom: 5px; } .hentry .content img { max-width: 100%; vertical-align:bottom; } .hentry .content pre { white-space: pre-wrap; white-space: -o-pre-wrap; } .hentry .content table { clear: both; width: 100%; margin: 1.5em 0; border: 1px solid #ccc; } .hentry .content table caption { text-align: left; text-indent: 1em; } .hentry .content table td, .hentry .content table th { padding: .3em; border: 1px solid #ccc; } .hentry .content ol, .hentry .content ul, .profile .summary ul, .profile .summary ol, .user-flow .summary ul, .user-flow .summary ol, .info-page ul { margin: 1.5em 1em 1.5em 3em; padding: 0; } .hentry .content ol, .profile .summary ol, .user-flow .summary ol { list-style: decimal; } .hentry .content ul, .profile .summary ul, .user-flow .summary ul, .info-page ul { margin-left: 2.65em; list-style: disc; } .habraplayer { margin-bottom: 10px; } .info-page { padding-left: 35px; } ul#xsidebar { width:32px; float:right; position:fixed; top:43%; right:0; background:#999999; } ul#xsidebar.left { left:0; } ul#xsidebar .mover { padding: 0px; text-align: center; } ul#xsidebar .mover a { color: #dddddd; text-decoration: none; } ul#xsidebar li { padding-top: 2px; padding-bottom: 2px; padding-left: 2px; } /* Refresh comments button */ ul#xsidebar #refresh-comments-button .new-messages { text-align: center; } ul#xsidebar #refresh-comments-button a.button { display: block; height: 29px; width: 28px; background:url(/i/comments/bar/refresh.gif) no-repeat left top; } ul#xsidebar #refresh-comments-button a.button:hover { background:url(/i/comments/bar/refresh.gif) no-repeat left bottom; } ul#xsidebar #refresh-comments-button a.button.loading { background:url(/i/comments/bar/refresh-loading.gif) no-repeat left top; } ul#xsidebar #refresh-comments-button a.button.loading:hover { background:url(/i/comments/bar/refresh-loading.gif) no-repeat left top; } ul#xsidebar #refresh-comments-button .divider { border-top: solid 1px #5c5c5c; border-bottom: solid 1px #dddddd; width: 28px; height: 0px; margin-top: 1px; } ul#xsidebar #refresh-comments-button .new-messages { text-align: center; } ul#xsidebar #refresh-comments-button .new-messages a.count { color: white; text-decoration: none; font-weight: normal; display: block; padding: 4px 0px; } ul#xsidebar #refresh-comments-button .new-messages a.count:hover { color: #ffff55; } .tags { padding: .2em 0 .1em 18px; clear:both; list-style: none; background: #fff url(/i/bg-tags2.gif) no-repeat 0 50%; } .tags li { display: inline; } .tags li a { font-size: .83em; /*10px*/ } .tags li a{ color: #666; } .tags li a:hover { color:#A3A3A3; } .entry-info { font: .75em/2em Arial, sans-serif; /*9px/16px*/ margin-top: 2.22em; /*20*/ float:left; clear: both; padding: 0 0 5px; border: 1px solid #e5e5e5; z-index:20; position:relative; } /* Rounded corners */ /*.corners { clear:both; height:5px; }*/ .corner { width:5px; height:5px; overflow:hidden; position:absolute; font-size:0; } .tl { float:left; left:-1px; top:-1px; background:url(/i/icos/entry-info-t-l.gif) no-repeat 0 0; } .tr { float:left; right:-1px; top:-1px; background:url(/i/icos/entry-info-t-r.gif) no-repeat 0 0; } .bl { float:left; left:-1px; bottom:-1px; background:url(/i/icos/entry-info-b-l.gif) no-repeat 0 0; } .br { float:left; right:-1px; bottom:-1px; background:url(/i/icos/entry-info-b-r.gif) no-repeat 0 0; } .entry-info-wrap {clear:both;padding-left:0.56em;} .entry-info-wrap .novote {margin-left:5px;} .entry-info .entry-info-wrap div { padding: 5px .56em 0; margin-right: 12px; float: left; } .entry-info div.voting { padding:0 0 0 3px; margin-left:-0.56em; } .entry-info div.voting div {margin-right: 0;} .entry-info div.voting .mark { padding:5px .1em 0; font-size: 1.3333em; /*12/9*/ font-weight: bold; color: #a9a9a9; } .entry-info div.voting .mark a{ color:#6DA3BD; } .entry-info div.voting .mark a:hover{ color:#4D7285; } body.guest .entry-info div.voting .mark a{ color:#999; cursor:default; } .entry-info div.positive .mark { color: #390; } .entry-info div.negative .mark { color: #c00; } .entry-info div.voting a.vote_plus, .entry-info div.voting span.vote_plus, .entry-info div.voting a.vote_minus, .entry-info div.voting span.vote_minus { margin:1px 3px 0; float:left; width:11px; height:15px; font-size:0; } .entry-info div.voting div { height: 12px; border: none; } .entry-info div.voting .vote_plus { background:url(/i/icos/icons_vote_posts.gif) no-repeat left bottom; } .entry-info div.voting .vote_minus { background:url(/i/icos/icons_vote_posts.gif) no-repeat -11px bottom; padding-right: 0 !important; } body.guest .entry-info div.voting .vote_plus, .entry-info div.voting.expired .vote_plus, .entry-info div.voting.mine .vote_plus{ background:url(/i/icos/icons_vote_posts.gif) no-repeat -22px top; cursor:default; } body.guest .entry-info div.voting .vote_minus, .entry-info div.voting.expired .vote_minus, .entry-info div.voting.mine .vote_minus { background:url(/i/icos/icons_vote_posts.gif) no-repeat -22px bottom; cursor:default; } .entry-info div.voting.mine a, .entry-info div.voting.no_auth a, .entry-info div.voting.voted a { cursor: default; } .cannot-vote { display: none; } .entry-info div.voting.mine .cannot-vote, .entry-info div.voting.no_auth .cannot-vote, .entry-info div.voting.voted .cannot-vote, .entry-info div.voting.expired .cannot-vote { display: block; } .entry-info div.voting.mine .can-vote, .entry-info div.voting.no_auth .can-vote, .entry-info div.voting.voted .can-vote, .entry-info div.voting.expired .can-vote { display: none; } .entry-info div.voting.voted_plus a.vote_plus, .entry-info div.voting.voted_plus span.vote_plus { background:url(/i/icos/icons_vote_posts.gif) no-repeat left top !important; } .entry-info div.voting.voted_minus a.vote_minus, .entry-info div.voting.voted_minus span.vote_minus { background:url(/i/icos/icons_vote_posts.gif) no-repeat -11px top !important; } .entry-info div a { text-decoration: none; font-weight: 700; } /* Fav star */ ul.hentry .fav_added a, ul.hentry .to-favs a, .entry-info .to-favs a, .entry-info .fav_added a { background: url(data:image/gif;base64,R0lGODlhDwAaAOZ/APr7/LnO3bXL2uK7Vvz58NLu9friZ/z69arD0tXl7eHr8uL1+tLv89v09921Uf3phfzjcMra5dvl68nX4ef1+fz589rt9e79/+v7/Ka+zs7h6tny9d3EmqjAz+rQc+ft8d/1+PTjttSycvb///f6+/vx0rzR3vL2+P/////4rub5+/3qjf/zlu/0+fH5/MmdQtLh7PfYWP3oe83a4u/jzdi9ke3Ma8aaSbvN2r/T4PXdfunXs+LGivHWh/jbWuT4+a7K2dy2X8qbO8PW4sTc6fjaX/bUU/fUXOr6+9+5Y9bx89u1V//ukOLz9v/2usfV3uTAZ/z369GmQv/yr9yyRNDr9c3r87+RPP/4pPjgbPHWfOfCW8ygQ/zsl+jMc+jKeN719vLZgPjdXPP//7nL19yzUP/wjdCtbvzmcuXIb///x9Ho8vjkou/WgJy3x/HUafznd/nlh9WmPLXQ3fv48t67XdDj7P3pgPnx4Mrd6fjcWtewW/fw3/z46+LCcwAAACH5BAEAAH8ALAAAAAAPABoAAAf/gH+Cgy0KLYOIiTAuMImOJBEoESSOiAoJIwkKjkMmAZ8UF00CpAI5gjkuIxhIKio/CyAYFAGCJwEJYz9gDRsNFxoCJ4MAESYgSgwMGwETAIkACAwFDQVWGc+JEnMFC3YLVUASjjhrFgg4CBZEZI4dGh0ffx8ZeW6OMzPZfwATT5WCSrApARBRDyc9CgrqY0ONjSgKQ4RJoSVEIgJfBmgcsIJFHAcgy/ghQADKlBRMVjy4IwMOBDNdghD4gydJGywyIBjYycLDHj6DDvCog0aMHh9ZlvCokKiClBg+IMQwIoSOox1Uijzw8OCInB2ORLzRwUXECx1bzghCMeiFlxs0EP7QuJHmiiMOHA4ErVFjUCAAOw==) no-repeat; } .entry-info .to-favs, .entry-info .fav_added { padding-top: 3px; margin-right: 0 !important; padding-right: 0 !important; } .entry-info .to-favs a, .entry-info .fav_added a { display: block; margin-top:2px; width:15px; height:13px; font-size:0; background-position: left top; } .entry-info .to-favs a:hover, .entry-info .fav_added a { background-position: left bottom; } .entry-info .published{ margin-left:-2px; } .entry-info .published a, .entry-info .mark-as-spam a {color:#369;} .entry-info .published a { display: block; padding-left: 17px; background: url(/i/bg-published2.gif) no-repeat 0 50%; } .entry-info .published a:hover { background-image: url(/i/bg-published2.gif); } .entry-info .vcard a { color:#CF0000; padding:2px 0 3px; background:transparent; } .entry-info .vcard.full a{ padding-left:17px; background: url(/i/bg-user2.gif) no-repeat 0 50%; } .entry-info div.author { } .entry-info div.vote-for-user{ padding: 8px 0px 3px; } .entry-info div.vote-for-user a, .entry-info div.vote-for-user span{ background:#74C262; color:#fff; display:block; line-height:1em; font-size:1em; } .entry-info div.vote-for-user a{ width:11px; height:12px; background:#74C262 url(/i/bg-user-vote-up.gif) no-repeat 50% 2px; } .entry-info div.vote-for-user a:hover{ background-color:#96D189; background-position:50% -8px; } .entry-info div.vote-for-user span{ padding:1px } .entry-info div.comments {margin-right: 5px;} .entry-info a { color:#CF0000; } .entry-info a:hover { color: #F17D7D; } .entry-info1 .vcard a:visited{ color:#F17D7D; } .entry-info1 .vcard a:visited:hover{ color:#CF0000; } .entry-info .comments a { display: block; margin-top:-1px; padding: 1px 0 0px 17px; background: url(/i/bg-comments2.gif) 0 70% no-repeat; } .entry-info .comments a .new { color: #390; } .entry-info .comments a:hover .new { color: #85C266; } .entry-info original-author{ max-width:100px; } .entry-info .original-author a, .entry-info .downloaded a, .entry-info .link a { padding-left: 8px; background: url(/i/bg-author-link.gif) no-repeat 0 .08em; } .entry-info .twitter { margin-right: -2px !important; } .entry-info .twitter a { display: -moz-inline-stack; display: inline-block; background: url(/i/bg-icon-twitter.gif) 0 0 no-repeat; width: 14px; height: 16px; position: relative; top: 1px; } .entry-info .facebook { opacity: 0.5; } .entry-info .facebook:hover { opacity: 1; } .entry-info .facebook a { display: -moz-inline-stack; display: inline-block; background: url(/i/bg-icon-facebook.png) 0 0 no-repeat; width: 14px; height: 16px; position: relative; top: 1px; } /** icons for topics **/ .translation .topic,.podcast .topic,.link .topic { padding-left:29px; background: no-repeat 0 6px; } .translation .topic{ background-image: url(/i/translation_icon2.gif); } .podcast .topic{ background-image: url(/i/podcast_icon2.gif); } .link .topic{ background-image: url(/i/link_icon2.gif); } .corporative .blog { background: #fff no-repeat 0 60% ; } .podcast .topic, .post .podcast h2.entry-title { /* background: #fff url(/i/podcast_icon2.gif) 0 60% no-repeat;*/ } .podcast .topic{ background-image: url(/i/podcast_icon2.gif); } .podcast .details { font: .5em/1.92em Arial,sans-serif; color:#767676; white-space:nowrap; letter-spacing:-1px; } /* .personal .topic { color: #c99; } */ .link .topic, .post .link h2.entry-title { color: #749f79; /*background: #fff url(/i/link_icon2.gif) 0 60% no-repeat;*/ } .link .topic:hover, .post .link h2.entry-title:hover{ color:#84B18A !important; } .link .topic:visited, .post .link h2.entry-title:visited{ color:#A3C0A7 !important; } .link .topic:visited:hover, .post .link h2.entry-title:visited:hover{ color:#84B18A !important; } /*Опросы*/ .poll {margin-top:2em;} .poll:first-child {margin-top:0em;} .poll dl { float: left; clear: both; width: 100%; border: .5em solid #fff;/*<- just a little trick*/ } .poll dl dt { float: left; width: 12%; font-size: 97.6%; text-align: right; margin-left: -20px; color: #ccc; } .poll dl dt strong { color:#404040; text-align: right; } .poll dl dd { width: 87%; float: left; margin-left: 20px; } .poll .total { font-size: 97.6%; clear: both; margin-top: 1em; color: #999; } .poll fieldset { } .poll table.answer-container { margin: 0; margin-bottom: 10px; border: none; } .poll .answer-container td.input, .poll .answer-container td.label { border: none; padding: 5px 0; } .poll .answer-container td.input { width: 25px; } .poll .answer-container input { padding: 5px 0; } /*обёртка для блока с вариантами ответа*/ .poll-item { float: left; clear:both; width: 100%; margin-bottom: 20px; } .poll-item h3 { margin-bottom: 5px; color: #666; } .poll-item dl { margin: 0; padding:0; } .poll-item dd div { height: 5px; background: #dadacd; } .poll-item dd div.winner { background: #7fa0b0; } .sphinx-baner{ line-height:2em; margin-bottom:33px; } /* Внутренний голос */ .i-am-your-father-luke { display: block; clear:both; padding:.6em 0; border: none; font: normal 40px/110% Arial,sans-serif; color: #cc9; letter-spacing: -2px; } /* НЛО прилетело и написало */ .ufo-was-here { margin-left:35px; margin-bottom: 20px; font: normal 16px/110% Verdana,sans-serif; color:#666; } /*Класс для подзамочных записей*/ .locked { padding-left: 28px; background: #fff url(/i/lock.gif) no-repeat 5px 65%; } .double_locked { padding-left: 43px; background: #fff url(/i/double-lock.gif) no-repeat 5px 60%; } .hentry .edit img, .user-vacancies .edit img, .profile-title .edit img, .blog-title .edit img { border: 1px solid #ccc; margin-bottom: -2px; } .profile-title .edit img {margin-bottom: 0; } /*Листалка по страницам*/ /* Вперёд-назад */ .page-nav { overflow:hidden; clear: both; margin: 1.88em 0 .63em 0; } .company .live .page-nav { margin: 0; padding: .83em 1.67em; width: 80%; } .next-prev { font:2em/100% Tahoma, sans-serif; color:#000; } .next-prev li { display: inline; padding-right: .3em; } /* Список предыдущих страниц */ #nav-pages { font: 1.2em/100% arial; padding: 0 1em 2em 0; margin: 1em 0; list-style: none; clear: both; } #nav-pages li { float: left; } #nav-pages a, #nav-pages em { margin:0 0.2em 0 0.1em; padding: .3em .4em; display: block; } #nav-pages a:hover{ background:#c5dae5; } #nav-pages em { background:#7A9BAC; font-weight: 400; font-style: normal; color: #fff; } .blogs #main-content .page-nav, .company #main-content .page-nav, .profile #main-content .page-nav, .users-list-container{ padding-left:35px; } /*Страница со всеми тегами*/ .all-tags-page #main-content { width: 100%; margin-bottom:120px; } .all-tags-page #main-content h2 { font: 26px/110% Verdana, sans-serif; color: #999; margin-bottom: 10px; } #cloud-for-blogs, #cloud-for-comps {width: 49%;} #cloud-for-blogs { float: left; } #cloud-for-comps { float: right; } /*Страница со всеми тегами*/ /*// Main content*/ /* Sidebar. Right column */ .banner { margin: 0 auto 20px auto; width: 240px; height: 400px; clear:both; } .context-note {line-height:150%;} /* Live section */ .live { font-size:1em; /*12px*/ font-family:tahoma,arial; float: left; width: 100%; margin: 0 0 20px; background: #f0f0e7 url(data:image/gif;base64,R0lGODlhBAAEAIAAAPDw5////yH5BAAAAAAALAAAAAAEAAQAAAIFjA8QqVwAOw==) no-repeat 0 0; } .live p { margin-left: 20px; margin-right: 20px; } .live dl { margin: 0 1.67em .42em 1.67em; } /* Похожие публикации. Переписать эту лажу. Наложение со стилями из forms.css */ .live .similar-posts div {margin: 0 0 20px 0;} .profile .live .similar-posts div {margin: 0 20px 20px 20px;} .profile .live .similar-posts div dl {margin: 0 0 .42em 0;} .profile .live .similar-posts div dl dt a {padding:0; background-image:none;} .live h3, #top-flooders h3 { font-size: 2em; /*28px*/ font-weight: normal; line-height: 1.1em; letter-spacing: -1px; text-decoration: none; margin:0 0 .71em .71em; padding-top: .54em; color: #999; background: url(data:image/gif;base64,R0lGODlhBAAEAIAAAPDw5////yH5BAAAAAAALAAAAAAEAAQAAAIGjANgqRwFADs=) no-repeat top right; } .live dt, .live dd, .live dd dl, .live dl dd dl dt { margin: 0; display: inline; color:#999; } .live dl.air-comment{ padding:2px 0; margin:0 1.67em 0.42em !important; } .live span.who a, .live .where, .live .topic { margin-bottom: 1ex; line-height: 1.35em; } .live .who { padding-left: 17px; background: url(/i/bg-user2.gif) 1px 50% no-repeat; display: inline; } .live .who a, .live .where { color:#999; } .live .topic { color:#666; } /* Live' links behaviour */ .live .total { color: #C00; } .live .all { position: relative; top: 0; right: 0; margin: 0 .83em .83em 0; text-align: right; color:#999; } /*Rounded corners*/ .live .bg-top-r { background: url(data:image/gif;base64,R0lGODlhBAAEAIAAAPDw5////yH5BAAAAAAALAAAAAAEAAQAAAIGjANgqRwFADs=) no-repeat top right; float: left; width: 100%; } .live .bg-bott-l { background: url(data:image/gif;base64,R0lGODlhBAAEAIAAAPDw5////yH5BAAAAAAALAAAAAAEAAQAAAIGhGOAGt0FADs=) no-repeat bottom right; float: left; width: 100%; } .live .bg-bott-r { float: left; width: 100%; background: url(data:image/gif;base64,R0lGODlhBAAEAIAAAPDw5////yH5BAAAAAAALAAAAAAEAAQAAAIFDG6YwVEAOw==) no-repeat bottom left; } .live .bg-top-r,.profile .live div.bg-top-r{ margin-left:0 !important; background: url(data:image/gif;base64,R0lGODlhBAAEAIAAAPDw5////yH5BAAAAAAALAAAAAAEAAQAAAIGjANgqRwFADs=) no-repeat top right; } div.live .bg-top-r, div.live .bg-top-r div{ margin-bottom:0 !important; } /* // Live section */ /* Best Writers */ .best_writers{} .best_writers ul{margin: 0 1.67em 1.67em} .best_writers ul li{overflow:hidden;margin-bottom:10px;} .best_writers ul li:last-child{margin-bottom:0px;} .best_writers ul li .avatar{float:left;margin-right:10px;display:block;border:1px solid #999;} .best_writers ul li .login{float:left;display:block;margin-right:10px;margin-top:3px;} .best_writers ul li .name{float:left;display:block;font-size:91%;color:#666666;margin-top:5px;} /* Tag cloud */ .tag-cloud { float: left; width: 90%; padding: 0px; margin-top: 10px; margin-bottom: 10px; margin-left: 5%; margin-right: 5%; text-align: center; } .profile .tag-cloud { width: 98%; float:none; margin:0 auto; } .tag-cloud ul { white-space: normal; } .tag-cloud ul, .tag-cloud ul li { display: inline; } .tag-cloud a { font-size: .83em; color: #369; text-decoration: none; line-height:1.4em; } .tag-cloud a:hover { color: #85A3C2; } /* .tag-cloud a {white-space:nowrap;}*/ .tag-cloud a.w1 { font-size: 80%; } .tag-cloud a.w2 { font-size: 100%; } .tag-cloud a.w3 { font-size: 120%; } .tag-cloud a.w4 { font-size: 140%; } .tag-cloud a.w5 { font-size: 160%; } .tag-cloud a.w6 { font-size: 180%; } .tag-cloud a.w7 { font-size: 200%; } .tag-cloud a.w8 { font-size: 220%; } .tag-cloud a.w9 { font-size: 240%; } .tag-cloud a.w10 { font-size: 260%; } /* // Tag cloud */ /* Ratings (companies, blogs) */ .rating table { font-size: 1.33em; /*16px*/ width: 90%; clear: both; margin:0 0 0.71em 1.2em; border:none; border-collapse: collapse; } .rating table td { font-family: Arial, sans-serif; vertical-align: middle; padding: .3em 0; } .rating table th { font-size: .75em; /*12px*/ font-weight: normal; padding-bottom: .5em; letter-spacing: -1px; color: #999; } .rating table td { /*padding-left: 5px;*/ } .rating .title a { font: bold .94em/1.13em 'Lucida Grande', Verdana, Sans-Serif; color:#666; } .rating .title a:hover{ color:#A3A3A3; } .rating .karma-value { font-size:.94em; font-family:arial; text-align: center; color:#6c6; font-weight:bold; } .rating .value { text-align: center; } .rating .value span { font: normal normal bold .88em Arial, sans-serif; padding: .1em .5em; color: #CC66CC; } div.companies .value span{ color:#CC66CC; } .company .rating .title a { font-size: 1.25em; /*20/16*/ font-weight: normal; } .company .rating .title a.new-feedback { font-size: 11px; } .company .first { margin-top: 0; background-image: none; } /* // Ratings (companies, blogs) */ /* Jobs */ .jobs { width: 100%; } .jobs dl dt a { font: 1.17em Arial, sans-serif; /*12/14*/ color: #663; } .jobs dl dt a:hover{ color:#A3A350; } .jobs dl dt a:visited{ color:#BEBE84; } .jobs dl dt a:visited:hover{ color:#A3A350; } .jobs dl dd { font: bold 1.33em/1.4em Arial, sans-serif; /*12/16*/ padding: 0 .2em; display:inline; white-space: nowrap; color: #fff; background: #99cccc; } .live .job_item dt, .live .job_item dd { display: inline; } /*// Jobs*/ /*Top flooders*/ #top-flooders { font-size: .83em; /*10/16*/ clear: both; width: 100%; margin: 10px 10px 10px 20px; } #top-flooders h3 { font-size: 280%; margin-left: 0; } #top-flooders dl, #top-flooders dl dt, #top-flooders dl dd { margin: 0; padding: 0; } #top-flooders dl { margin-bottom: 15px; } #top-flooders dl .flooder { margin: -2.5em 10px 1em 3em; } #top-flooders dl dd dl dt a { color:#999; } #top-flooders dl dd dl dt a:hover{ color:#333; } .flooder dd a { line-height: 140%; color:#f60; } /* // Top flooders */ /* Calendar */ .calendar-table table { font-size: .92em; /*11/12*/ font-family: Arial, Helvetica, sans-serif; margin: 5px 0; text-align: center; } .calendar-table th { font-weight: normal; } .calendar-table .date { font-size: 160%; /*font-weight: bold;*/ color: #999; } .calendar-table .nav th, .calendar-table .nav td { padding-bottom: 5px; } .calendar-table .nav a { color: #909090; font-weight: bold } /* // Calendar */ /* // Sidebar. Right column*/ /* Карма. Общие стили для таблиц */ .starr { padding-right: 15px; background: url(/i/starr.gif) right 70% no-repeat; } .rating-dyn { font-size:.75em; font-family:arial; line-height: 110%; text-align: center; } .up { color:#33cc00; } .down { color:#ff0033; } /*Прилепляем футер книзу, введя див-обёртку, охватывающую всё кроме подвала*/ #nonFooter {position: relative;min-height: 100%;} * html #nonFooter {height: 100%;} /*для IE*/ .footerest #wrapper {padding-bottom: 10em;} .footerest #footer {position: relative;margin-top: -9em;} /* Comments */ /* Форма отправки коммента (или отзыва о компании) */ .add-comment { float: none; clear: both; width: 100%; margin-top: 10px; padding-bottom:5px; } .add-comment h3 { padding: 0 0 0 20px; /*margin: 0 0 10px;*/ margin: 0; font: 1.67em Verdana, sans-serif; /*20/12*/ letter-spacing: -1px; color: #afa56a; background: url(/i/add_comment.gif) 0 .5em no-repeat; } .add-comment > div, .comment_holder .reply_form { position: relative; } .add-comment h3 a {color: #afa56a;text-decoration:none; border-bottom: 1px dashed #afa56a;} .add-comment dl, dl.comment-help { float: left; width: 100%; font: .92em/100% Arial, sans-serif; /*11/12*/ /*padding: 10px 0;*/ } dl.comment-help{ padding-top:0; } .add-comment dt, .add-comment dd, dl.comment-help dt, dl.comment-help dd { float: left; } .add-comment dt img, dl.comment-help img { border: 1px solid #ddd; } .add-comment dd, dl.comment-help dd { margin: 5px 0 0 10px; color: #999; } .add-comment dd .name, dl.comment-help dd .name { font: 1em Tahoma, sans-serif; font-weight: 700; color:#666; } .add-comment dd span , dl.comment-help dd span{ margin-left: 5px; } dl.comment-help dd span{ position: absolute; right: 0px; top: -8px; z-index: 3000; } .add-comment form { clear: both; width: 100%; } .reply_form form { clear: both; width: 99%; margin-bottom: 10px; } .add-comment input, .reply_form input { margin: 10px 0; } .add-comment textarea, .reply_form textarea { border: 1px solid #c8d2df; width: 99%; resize: none; outline:none; } .editor .add-comment textarea, .editor .reply_form textarea{ border: 0px solid #c8d2df; } .add-comment .post, .reply_form .post { margin-left: 7px; } .add-comment .js-field-error-msg { color:#ff0000; } /* // Форма отправки коммента (или отзыва о компании) */ #comments { clear: both; overflow:hidden; } .comments-header-mail{ display:none; } .comments-header-visible{ display:block; } #comments h2.comments-header { margin: 0px 0 20px; padding-left: 23px; font: normal 1.67em/105% Verdana, sans-serif; /*20/12*/ letter-spacing: -1px; color: #afa56a; background: #fff url(/i/comments.gif) 0 90% no-repeat; } ul.hentry {clear: both;width: auto;} ul.hentry ul.author{ overflow: hidden; } ul.hentry ul.author li{ vertical-align:baseline !important; } ul.hentry ul li{ line-height:18px; } ul.hentry .avatar { float: left; width:24px; height:24px; list-style: none; position:relative; margin-right:10px; } ul.hentry .avatar b{ position:absolute; top:0; left:0; height:24px; width:24px; background:url(/i/bg_avatar_mask_mini.gif) no-repeat 0 0; } ul.hentry .avatar img { display:block; height:24px; width:24px; } ul.hentry .fn, ul.hentry .date, ul.hentry .bookmark, ul.hentry .to-favs, ul.hentry .fav_added, ul.hentry .up-to-parent, ul.hentry .down-to-child, ul.hentry .vote-for-user, ul.hentry .single-tree{ font-family:tahoma; float: left; color: #666; padding-top: 5px; margin-right: 10px; } ul.hentry .vote-for-user{ padding-top: 8px; margin-right:12px; margin-left: -7px; } ul.hentry .vote-for-user a, ul.hentry .vote-for-user span{ background:#74C262; color:#fff; text-decoration:none; display:block; line-height:1em; font-size:1em; } ul.hentry .vote-for-user a{ width:11px; height:12px; background:#74C262 url(/i/bg-user-vote-up.gif) no-repeat 50% 2px; } ul.hentry .vote-for-user a:hover{ background-color:#96D189; background-position:50% -8px; } ul.hentry .vote-for-user span{ padding:1px; font-size:0.83em; } ul.hentry .up-to-parent a, ul.hentry .down-to-child a { display:block; float:left; height:15px; line-height:15px; text-decoration: none; border-bottom: dotted 1px #79B1D4; } ul.hentry .to-favs a, ul.hentry .fav_added a { display:block; margin-top:3px; width:15px; height:13px; font-size:0; background-position: left top; } ul.hentry .to-favs a:hover, ul.hentry .fav_added a { background-position: left bottom; } ul.hentry .fn a { font-size: .92em; /*11px/12*/ font-weight: bold; color: #666; } ul.hentry .fn a:hover{ color:#333; } ul.hentry .fn a:visited{ } ul.hentry .fn a:visited:hover{ } ul.hentry .date, ul.hentry .bookmark { } ul.hentry .bookmark a, ul.hentry .date abbr { border: none; font-size: .83em; /*10/16*/ } ul.hentry .vote { float: right; margin-top: .4em; } ul.hentry .vote li { float: left; font: bold 1.08em/100% Arial, Helvetica, sans-serif; color: #a9a9a9; background: none; } ul.hentry .vote.positive li { color: #390; } ul.hentry .vote.negative li { color: #c00; } ul.hentry .vote .buttons, ul.hentry .vote .buttons .vote-for { margin-left: 5px; padding-right: 5px; } ul.hentry .vote .buttons a { margin-top:-11px; float:left; width:13px; height:13px; font-size:0; cursor:pointer; } ul.hentry .vote .buttons a{ background:url(/i/icos/icons_vote_comments_4modes.png) no-repeat } ul.hentry .vote .buttons a.vote_plus { margin-left:5px; background-position: -13px 0; } ul.hentry .vote .buttons a.vote_plus:hover{ background-position:-13px -13px ; } ul.hentry .vote .buttons a.vote_minus { background-position:0 0; } ul.hentry .vote .buttons a.vote_minus:hover { background-position:0 -13px; } ul.hentry .vote.expired a.vote_plus, ul.hentry .vote.mine a.vote_plus, ul.hentry .vote.no_auth a.vote_plus, ul.hentry .vote.voted a.vote_plus { background-position:-13px -39px !important; cursor:default; } ul.hentry .vote.expired a.vote_minus, ul.hentry .vote.mine a.vote_minus, ul.hentry .vote.no_auth a.vote_minus, ul.hentry .vote.voted a.vote_minus { background-position:0 -39px !important; cursor:default; } ul.hentry .vote.voted_plus a.vote_plus { background-position:-13px -26px !important; } ul.hentry .vote.voted_minus a.vote_minus { background-position:0 -26px !important; } ul.hentry .entry-content, .comment-preview { font: 1.08em Arial, sans-serif;/*13/12*/ margin: 0; padding: 10px 0 10px 0; clear: both; margin-bottom:10px; } ul.hentry .entry-content img, .comment-preview img{ display: block; max-width: 100%; } ul.hentry .entry-content .entry-content-only{ overflow-x:auto; padding-right:5px; } ul.hentry .entry-content .entry-content-only ul, .comment-preview ul{ margin: 1px 0 10px 20px; list-style: inside disc; } ul.hentry .entry-content .entry-content-only ol, .comment-preview ol{ margin: 1px 0 10px 20px; list-style: inside decimal; } ul.hentry .bad5 { opacity: 0.2 } ul.hentry .bad4 { opacity: 0.35 } ul.hentry .bad3 { opacity: 0.5 } ul.hentry .bad2 { opacity: 0.65 } ul.hentry .bad1 { opacity: 0.8 } ul.hentry .entry-content-only { transition: opacity 700ms linear; -webkit-transition: opacity 700ms linear; } ul.hentry .entry-content-only:hover { opacity: 1; } /* http://bolknote.ru/2008/07/18/~1787 */ @-moz-document url-prefix(){ ul.hentry .entry-content .entry-content-only { line-height:15.1px; padding:2px 1px; margin:-2px 0; } } ul.hentry .entry-content .entry-content-only img{ max-width:100%; display:block; } ul.hentry .entry-content p, .comment-preview p { margin: 0 0 10px 0; padding: 0; } ul.hentry p.reply, .comment-preview p.reply { margin: 5px 0 0; font: .85em Tahoma,Arial, sans-serif;/*11/13*/ } ul.hentry .entry-content .bad a { /*Ссылка Показать плохой комментарий*/ color: #ccc; } /*JS-based show-hide comments*/ .show-hide-comments { font-size: 90%; /*14/12*/ color: #999; margin-bottom: 10px; padding: .1em 0 .2em 10px; background: #FAEBD7; } .show-hide-comments a { padding: 0 5px 0 0; background: #FAEBD7; /*text-decoration: none;*/ } .show-hide-comments a:hover { color: #666; } /*for JavaScript comments extender*/ .extended { float: left; padding: 10px 10px 0 10px; background: #FFFAF0; } /* // Comments */ /* Популярные комментарии и Прямой эфир + some code from Live section. */ /*.live-section #comments { margin-top: 40px; } .live-section #comments h1 { font: normal 2em/110% Verdana, sans-serif; letter-spacing: -1px; color: #69c; } .live-section #comments h1 .rss { margin-left: 5px; } .live-section .stat { margin: 10px 0 30px 0; } */ .popular-comment { width: 100%; clear: both; overflow: hidden; } .comment-body { float:left; width:80%; } .comment-descr { font: .83em/130% Tahoma, sans-serif; /*10/12*/ vertical-align: top; width:15%; margin-right: 5%; float:left; } .comment-descr dt, .comment-descr dd { display: inline; } .comment-descr dd { color:#f00; } .live .who a, .live .where, .comment-descr .where { color:#999; } .live .who a:hover, .live a.where:hover, .comment-descr .where:hover { color:#333; } .live .topic, .comment-descr .topic, .side-side a { color:#666; } .live a.topic:hover, .comment-descr .topic:hover, .side-side a:hover{ color:#A3A3A3; } .live a.topic:visited, .comment-descr .topic:visited, .side-side a:visited { color:#B5B5B5; } .live a.topic:visited:hover, .comment-descr .topic:visited:hover, .side-side a:visited:hover { color:#A3A3A3; } .live .total { color: #C00; } .live .all { position: relative; top: 0; right: 0; margin:20px 25px 10px 0px; text-align: right; color:#999; } /*Блок с мозаикой из юзерпиков с подписями. Офигенная штука. Любите её*/ .people-mosaic {margin-top: 10px;} .people-mosaic ul {float: none;} .people-mosaic ul li { float: left; margin: 10px 10px 0 0; } .people-mosaic dl { display: block; text-align: center; } .people-mosaic dl dd a { font: 1em Arial, sans-serif; color: #008cd2; } .people-mosaic dl dt a img { padding: 1px; background: #ddd; } .img-border { border: 1px solid #ddd; } .declaration { font-size:2em; font-family:arial; line-height:140%; color:#404040; } .declaration p { margin-bottom:1em; } .alert { color:#f00; } /*Вывод юзеров по странам и городам в разделе "Люди". Код используется также для вывода компаний и блогов в результатах поиска.*/ .user-flow { clear:both; float:left; margin:30px 0; } .user-flow-item { margin: 0 0 40px 0; } .user-flow-item dt img { border: 1px solid #ccc; } .user-flow-item .summary { margin: -50px 0 0 60px; font-size: 1.08em; /*13/12*/ } .search .user-flow-item .summary { margin-top: -45px; } .who-n-when { margin: 0 0 10px 0; color: #aeaeae; } .who-n-when a { letter-spacing: -1px; color: #aeaeae; } .who-n-when .blog-name { color: #79b1d4; } .who-n-when dt { font: 2em/110% Verdana, sans-serif;/*24/12*/ } .who-n-when dd { margin-top: 5px; font: .83em/100% Verdana, sans-serif;/*10/12*/ } /*Выделение особого сообщения (системного, например. Цвет фона как у слова в поиске)*/ .special-msg { background: #fffacd; } /* Сообщение о том, что по тегу ничего не найдено */ .no-found {margin-top: 20px; font-size: 150%;padding-left:35px;} .main-search{ width:auto !important; padding-left:35px; } .main-search form{ position:relative; margin-bottom:30px; } .main-search form .page-menu { margin-top:35px; } .main-search form .page-menu li label{ } .main-search form .page-menu li input{ height:0;width:0;border:none;padding:0;position: absolute;background:transparent; overflow:hidden; } .main-search fieldset{ overflow:hidden; } .main-search .inpt-text { margin: 0 10px 0 0; padding:0 0 0 6px; font-size:22px; float: left; height:30px; color: #996; line-height:30px; border: 1px solid #996; } .main-search input.inpt-text { width: 78%; } .main-search .inpt-btn{ float:left; height:32px; width:32px; padding:0; margin:0; overflow:hidden; border:none; background:transparent url(/i/bg-button-enter.png) no-repeat scroll 0 -66px; } .main-search .inpt-btn:active{ background-position:0 -99px; } .main-search { position:relative; } #fbPanel { position: absolute; background-color: #F0F0E7; width: 400px; border: 1px silver solid; padding: 10px 10px 10px 10px; z-index: 30; } #fbPanel textarea { width: 100%; margin-bottom: 20px; } .info-text { font-size: 16px; padding-top: 20px; float: left; } #html_tags_help { margin-top: 20px; width:96%; background-color:#F0F0F0; color: black; font-size:0.9em; padding:15px 20px 20px 10px; z-index:9999; position: relative; float: left; } #html_tags_help h4 { cursor:default; color: black; font-size: 18px; margin-bottom: 10px; font-weight: bold; } #html_tags_help h5 { cursor:default; color: black; font-size: 16px; font-weight: bold; } #html_tags_help dt { color:#000; font-weight: bold; } #html_tags_help dd { color:#000; margin-bottom: 10px; } #html_tags_help #html_tags_help_content { width:290px; height:465px; overflow:auto; background-color:#fff4cd; padding:10px; } #html_tags_help_close { top:1em; right:10px; position: absolute; } a#html_tags_help_close, a#html_tags_help_close:hover, a#html_tags_help_close:visited { color: gray; font-size: 0.8em; border-bottom: 1px dashed gray; } div#godmode { left: 0px; top: 0px; width: 100%; height: 100%; position: fixed; text-align: center; vertical-align: middle; background-image: url(/i/halfvisible.gif); z-index: 10000; } div#godmode span { color: white; font-size: 72px; font-weight: bold; display: block; margin-top: 30%; } /* */ /* Advert */ .advert-page .fright_holder{ width:188px; float:left; margin: 0px 15px 15px 0px; } .advert-page .fright_holder .fright_bg_top{ background:url(/i/adv/fright_bg_top.gif) no-repeat top; width:188px; height:22px; } .advert-page .fright_holder .fright_bg_bottom{ background:url(/i/adv/fright_bg_bottom.gif) no-repeat top; width:188px; height:22px; } .advert-page .fright_holder .fright_bg_center{ background:#e5e5e5; } .advert-page .fright_holder .fright_bg_center p{ padding: 0px 20px; margin: 0px; color: #9e9e9e; font-size: 11px!important; } .advert-page .rightcolumn2, .rightcolumn3{ float: right; width: 478px; padding-left: 30px; padding-bottom: 20px; } .advert-page .rightcolumn2 img#screen { margin-top: 1em; border: solid #CCC 1px; margin-left: 2px; } /* Оформление текста в рекламном разделе */ .advert-page h1 { font: 2.5em/100% Verdana,sans-serif; /*30px/12px*/ } .advert-page h2 { clear:left; color:#FF6000; font-family:Arial,sans-serif; font-size:23px; font-weight:normal; padding-top:0.5em; } .advert-page p { line-height: 1.54em; } #buy_package_form { opacity: 0.97; display:none; left: 50%; margin-left: -212px; position:absolute; z-index: 50; } #buy_package_form #form-arrow-down{ display: none; border-top:7px solid #EFEFEF; border-left:7px solid transparent; border-right:7px solid transparent; width:1px; margin:0 0 0 20px; } #buy_package_form.package-form-too-much-right .ex_middle{ margin-left: -355px; } #buy_package_form.package-form-too-much-right #form-arrow-down{ margin-left: 379px; } #buy_package_form .habrablock{ margin-bottom: 0; } #buy_package_form .ex_middle{ width: 425px; } #buy_package_form .js-close-buy-package{ position: absolute; cursor: pointer; top: 10px; right: 14px; font-size: 1.5em; } .advert-page .habrablock { background:#EFEFEF none repeat scroll 0 50%; font-size:13px; margin-bottom:20px; vertical-align: middle; } .advert-page ul.nice { list-style-image:none; list-style-position:outside; list-style-type:none; margin:0 0 0 4ex; padding:0; } .advert-page ul.nice li { margin-bottom:1ex; padding-left:3ex; background:transparent url(/i/adv/list-style.gif) no-repeat scroll 0 5px; font-size:12px; line-height: 1.54em; } .price-table input{ background:#8BBF76; color:#FFFFFF; font-size:1.15em; } .advert-logos{ text-align:center; overflow:hidden; margin:0 auto; width:610px; } .advert-logos .adv-logo{ float:left; overflow: hidden; margin-right: 16px; } .advert-text{ font-size:1.2em; margin:2em 0; } .advert-corps{ text-align:center; } .features-trial{ text-align:center; padding:7px 18px; font-size:25px; } .features-trial span{ color:#5A5A5A; background:#E7FAEC; padding:7px 18px; } .advert-page p.intro { font-size:17px; } .advert-page .info_line { padding:10px 20px; } .advert-page .info_line .captcha-holder{overflow:hidden;} .advert-page .info_line .captcha-holder img{float:left;margin-right:10px;} .advert-page .info_line .captcha-holder a{float:left;margin-top:25px;} .advert-page .info_line .captcha-input{padding-left:120px;padding-top:5px;} .advert-page .first_line { padding-top:28px; } .advert-page .label { float:left; width:120px; } .advert-page .type_ch { height:50px; } .advert-page .button_holder { padding:10px 22px; } .advert-page img.stat { float: left; margin-right: 20px; } .ponchiki #main-content { width: 95%; } .ponchiki .checkbox, .ponchiki .radio { border:0 none !important; bottom:-2px; padding-right:12px; position:relative; width:15px !important; } .advert-page .input input, .advert-page .input textarea { border:1px solid #DDDDDD; padding:2px 4px; width:250px; } .advert-page .tm-form dl { margin-bottom: 0px !important; } #advert-form { vertical-align: middle; } #advert-form fieldset {margin:0;padding:0;} .advert-page .result { display: block; font-size: 17px; margin-left: 30px; margin-right: 30px; /* margin-top: 40%; */ text-align: center; } .price-table { width:100%; } .price-table tr.even {background: #eaf1f5;} .price-table th { padding-bottom: .5em; font: normal 150%/110% Arial,sans-serif; text-align:left; border-bottom: 1px solid #000; } .price-table td { font: 120%/150% Arial,sans-serif; vertical-align: middle; padding: .6em 4px; } .price-table td em { margin-left: -.05em; font-size:300%; color:#69c; } .price-table td span { color:#999; } /* Stat */ #flashcontent1, #flashcontent2, #flashcontent3, #flashcontent4, #flashcontent5, #flashcontent6 { float: left; } #help-shortcuts { margin-left: 20px; } #help-shortcuts dt { font-weight: bold; } #help-shortcuts dd { margin-left: 20px; margin-bottom: 10px; } /* Help */ /* Оформление текста в разделе "Помощь" */ .help h1, .company h1, .live-block-page h1 { font: 2.5em/100% Verdana,sans-serif; /*30px/12px*/ } .help h2 { clear:left; color:#FF6000; font-family:Arial,sans-serif; font-size:23px; font-weight:normal; padding-top:0.5em; } .help p { line-height: 1.54em; } .help ol{margin-top:1em;} .help li { line-height: 1.54em; margin-bottom:0.5em; } .help #main-content ul { line-height: 1.54em; } /* Habralenta */ .habralenta-settings .my-blogs { margin: auto 20px 1em 20px; } .habralenta-settings .btn-holder { padding: 20px; } .habralenta-settings .btn {margin: auto 20px 10px 20px;} #invite-page { margin: 40px; } #invite-count-label { margin-bottom: 20px; display: block; } #add-invite { float: left; width: 300px; } #add-invite .field { width: 270px; } #add-invite dl.required dt { font-weight: bold; } #add-invite .btn-bar { text-align: right; padding-right: 30px; } #invite-list { float: left; width: 320px; } #invite-list li { margin-bottom: 10px; } input.money { background:#E3A2A0 none repeat scroll 0 0; color:#FFFFFF; font-size:32px; letter-spacing:-2px; width: 130px; } span.money { color:#E3A2A0; font-size:32px; letter-spacing:-2px; } .event-subscribe-form .unsubscribe { text-decoration: none; border-bottom: dashed 1px #79B1D4; } .event-subscribe-form .unsubscribe.disabled { text-decoration: none; border-bottom: dashed 1px silver; color: silver; } .event-subscribe-form fieldset { height: 30px; } .event { margin-left: 35px; } .event .nonfriends { margin-top: 20px; } .event h3.participants { margin: 0; font: 1.67em Verdana, sans-serif; /*20/12*/ letter-spacing: -1px; color: #afa56a; } .salary-type label { display: inline; } .privacy-persnal-info{ display:none; color:red; } .privacy-persnal .privacy-persnal-info{ display:block; } .privacy-persnal span{ display:none; } .privacy-offtop { color: gray; } .field-privacy .info { display: none; } .privacy-offtop .info { display: block !important; color: red; } .privacy-offtop #js-field_privacy_text, .privacy-offtop input { display: none; } @media print { body { background: white; color:#000; font-size: 12pt; } ul.hentry .entry-content{ padding-bottom:30px; } .blog-title,.yandex-direct,.yandex{ display:none; } a:link, a:visited { color: #000; background: transparent; font-weight: bold; text-decoration: underline; } .hentry .content a:link:after, .hentry .content a:visited:after { content: " (" attr(href) ") "; font-size: 90%; } #header-wrapper,.header, #sidebar, #footer, .page-navigation, .sub-nav, .page-nav, .buttons, p.reply, .add-comment, li.bookmark, li.to-favs, li.down-to-child,.up-to-parent {display:none;} #wrapper, #main-content { width: auto; border: 0; margin: 0 2%; padding: 0; float: none !important; } div.hentry { clear:both; float:none; margin:0 0 40px; width:auto; } } .habrauserava{ height:48px; width:48px; position:relative; } .habrauserava img{ width:48px; height:48px; } .habrauserava b{ position:absolute; top:0; left:0; height:48px; width:48px; background:url(/i/bg_avatar_mask.gif) no-repeat 0 0; } .yandex-direct{ margin:10px 0;clear:left;margin-left:35px } .oauth{ padding-left:35px; margin:0 0 100px; } .oauth-app-block{ margin:30px 0; } .oauth-app-block dl{ overflow:hidden; margin:0 0 3px; } .oauth-app-block dl dt{ font-weight:700; float:left; width:164px; } .oauth-simple-auth{ padding-top:50px; float:left; width:600px; } .oauth-simple-auth h1{ font-size:2.17em; } .oauth-simple-auth form, .oauth-simple-auth .result{ padding-top:10px; } .oauth-simple-auth form .error{ color:red; } .oauth-simple-auth form p {overflow:hidden;padding:2px 0;} .oauth-simple-auth form p label{ float:left; width:160px; font-weight:700; } .oauth-simple-auth .oauth-finish{ margin-top:1.5em; font-size:1.5em; } #comments > ul > li > .msg-meta .single-tree {display:none;} ul li:nth-child(1) > .msg-meta .single-tree{display:none;} .single-threading .comment_holder{display:none;} li.single-tree-node-last > .msg-meta{background:#eef3f3;} .comment_holder li.single-tree-node, .comment_holder li.single-tree-node-last{display:block;} li.single-tree-node-last li {display:block;} .single-threading > .msg-meta .js-single-tree, .single-threading li.single-tree-node > .msg-meta .js-single-tree, .single-threading li.single-tree-node-last > .msg-meta .js-single-tree {display:none;} li > .msg-meta .js-multiplay-tree {display:none;} .single-threading li.single-tree-node-last > .msg-meta .js-multiplay-tree{display:block;} @media only screen and (max-device-width: 480px) and (-webkit-min-device-pixel-ratio:0) { #comments .hentry li .msg-meta .folding-dot-holder{ display:none !important; } } img.help-tip{ position:relative; top:3px; } #help-tip-text.help-tips-too-much-left{ margin-left:-15px; } #help-tip-text.help-tips-too-much-left #help-tip-text-arrow{ margin-left:15px; } #help-tip-text{ position:absolute; width:375px; margin-left:-187px; margin-top:-8px; display:none; color:#fff; z-index:500; opacity:0.95; } #help-tip-text-content{ position:absolute; bottom:7px; padding:15px; background:#46688b; -moz-border-radius-topleft:4px; -webkit-border-top-left-radius:4px; -moz-border-radius-topright:4px; -webkit-border-top-right-radius:4px; -moz-border-radius-bottomleft:4px; -webkit-border-bottom-left-radius:4px; -moz-border-radius-bottomright:4px; -webkit-border-bottom-right-radius:4px; border-radius:4px; } #help-tip-text-arrow{ border-top:7px solid #46688b; border-left:7px solid transparent; border-right:7px solid transparent; width:1px; margin:0 auto; } .search-ads{ margin-top:50px } .search-ads #yandex_direct{padding:10px;} .company_admin #sidebar form .wide-wide-inputs{ border-bottom:1px solid #aaa; padding-bottom:9px; margin:8px 0 12px; } .company_admin #sidebar form p{ margin-top:1em; margin-bottom:1em; } .company #sidebar{ margin-top:46px; } .side-side { padding: 0 20px 20px; } .side-side h3{ margin:0 -20px 0.71em 0; } .side-side li{ margin:9px 0; } .side-side li small{ color:#999; font-size:0.9em; } .wide-wide-inputs dl,.company_admin #sidebar form .wide-wide-inputs dl{ margin:0; } .wide-wide-inputs dt,.company_admin #sidebar form .wide-wide-inputs dt{ font-size:0.9em; margin:0; } .wide-wide-inputs dd{ padding-right:5px; } .wide-wide-inputs dd input{ width:100%; } .js-do-more-inputs{ font-size:0.9em; } #js-field-holder-with-help{ overflow:hidden; } .ponchiki #wrapper{ overflow: hidden; } #john_black{ display: none; position: absolute; top: 0; left: 0; bottom: 0; right: 0; background: #000; opacity: 0.5; z-index: 40; } /* Сайдбар с кармаграфом и т.п. */ .karma-n-statistic p { margin: 15px 0; font-size:100%; color:#666; } .karma-n-statistic h3 { margin: 15px 0; font: normal 1.5em/120% Verdana, sans-serif;/*18/12*/ letter-spacing: -1px; color: #999; } .karma-n-statistic h2{ color: #999; font-size:233% ; margin:0 0 20px; } .karma-n-statistic .stats { margin: 10px 0 35px; color:#666; overflow:hidden; font-size:116%; } .karma-n-statistic .karma-stat{ margin-bottom:50px; } .karma-n-statistic .stats dt{ float:left; clear:left; margin-right:4px; } .karma-n-statistic .stats dd{ float:left; } .karma-n-statistic .stats dd.global{ margin-bottom:30px; } .karma-n-statistic { font-family: Verdana, sans-serif; overflow: hidden; } .karma-n-statistic .tag-cloud{ text-align:left; margin-left:0; float:none; } .search-results-title{ padding-left: 35px; margin-bottom:16px; } #people-tags{ float: left; margin-top: 38px; width: 140px; } #people-tags li{ padding-bottom: 17px; transition: opacity 200ms linear; -webkit-transition: opacity 200ms linear; } #people-tags a{ display: block; height: 46px; width: 116px; font: 13px/13px Helvetica, Arial, sans-serif; text-decoration: none; position: relative; overflow: hidden; background: no-repeat 0 50%; } #people-tags a span{ visibility: hidden; } #people-tags:hover li{ opacity: 0.6; } #people-tags:hover li.active, #people-tags:hover li:hover{ opacity: 1; } #table-people-rating #people-tags li { width: 140px; } #table-people-rating #people-tags li a{ height: 46px; width: 140px; background-position: 50% 50%; background-color: #ebf0f5; border-top-left-radius: 23px; border-bottom-left-radius: 23px; -webkit-border-top-left-radius: 23px; -webkit-border-bottom-left-radius: 23px; -moz-border-radius-topleft: 23px; -moz-border-radius-bottomleft: 23px; } #table-people-rating #people-tags li.active a{ background-color: #92b3d2; } #table-people-rating #people-tags a.podcaster { background-position: 34px 50%; } #table-people-rating #people-tags li a.se_gamer { margin-top: 20px; } #people-tags a.author { background-image: url(/i/tags/author.png); } #people-tags a.star { background-image: url(/i/tags/star.png); } #people-tags a.legend { background-image: url(/i/tags/legend.png); } #people-tags a.oldresident{ background-image: url(/i/tags/oldresident.png); } #people-tags a.commentator{ background-image: url(/i/tags/commentator.png); } #people-tags a.podcaster { background-image: url(/i/tags/podcaster.png); } #people-tags a.translator { background-image: url(/i/tags/translator.png); } #people-tags a.statistic { background-image: url(/i/tags/statistic.png); } #people-tags a.humorist { background-image: url(/i/tags/humorist.png); } #people-tags a.habred { background-image: url(/i/tags/habred.png); } #people-tags a.unhabred { background-image: url(/i/tags/unhabred.png); } #people-tags a.troll { background-image: url(/i/tags/troll.png); } #people-tags a.evangelist { background-image: url(/i/tags/evangelist.png); } #people-tags a.reader { background-image: url(/i/tags/reader.png); } #people-tags a.se_gamer, #people-tags a.se_supergamer, #people-tags a.se_turbogamer { background-position: 52% 5px !important; position: relative; } #people-tags a.se_gamer { background-position: 56% 5px !important; position: relative; } #people-tags a.se_gamer span, #people-tags a.se_supergamer span, #people-tags a.se_turbogamer span { visibility: visible; position: absolute; display: block; text-align: center; width: 100%; bottom: 5px; color: #284fa2; } #people-tags a.se_gamer { background-image: url(/i/special/se/tags/gamer.png); } #people-tags a.se_supergamer { background-image: url(/i/special/se/tags/supergamer.png); } #people-tags a.se_turbogamer { background-image: url(/i/special/se/tags/turbogamer.png); } .userinfo #people-tags{ overflow: hidden; float: none; width: auto; margin-top: 0; padding-top: 6px; } .userinfo #people-tags li{ float: left; margin-bottom: 10px; } .userinfo #people-tags li a{ background-position: 50% 100%; } .habr-button{ font: 19px Arial, sans-serif; color: #fff; text-decoration:none; border:2px outset #F0F0F0; background: #cc9; padding:0 6px; display:inline-block; } .habr-button:active{ padding-left:8px; padding-right:4px; border-style:inset; } a.habr-button:hover{ background-color:#6DA3BD; color:#fff; } .side-button{ margin-bottom: 20px; } .big-nice-text{ color:#E3A2A0; font-size:32px; letter-spacing:-2px; } .nice-time{ text-transform: lowercase; } .big-nice-text input{ position: relative; top: -6px; } #karma-reset-games{ padding-left: 35px; } .karma-reseting .karma-reset-form-reseting { display: block; } .karma-noreseting .karma-reset-form-noreseting{ display: block; } .karma-reset-game{ display: none; } .karma-reset-form{ } .karma-reset-button{ margin-top: 28px; text-align: center; font-size:32px; } .karma-reset-button input{ font-size: 32px; } input.disabled{ background-color: #ddd; color: #eee; border-style: solid ; } .tab-sun{ margin-top:-3px; } .sandbox .page-nav{ padding-left: 35px; } #js-topic-version-prototype{ display: none; } .topic-preview-content{ margin-left: -35px; } .topic-preview-content .hentry{ margin-bottom: 0; } .topic-preview{ margin-top: 5px; padding: 15px; border: 5px solid #D6D6D6; } .post-title{ font: 2.17em/100% Verdana, sans-serif; letter-spacing: -1px; padding:11px 0 22px; margin: -11px 0 0; width: 100%; position: relative; z-index: 15; height: 26px; } .post-title .post-title-header{ color: #7fb084; float: left; font-size: 100%; margin: 0 ; } .post-title .post-title-list{ position: relative; float: left; } .post-title .post-title-list ul{ border: 1px solid #fff; position: absolute; top: -11px; left: 0; background: #fff; list-style: none; margin-left:4px; padding: 10px 10px 10px 8px; } .post-title .post-title-list li{ display: none; margin-bottom: 12px; } .post-title .post-title-list ul li.current{ display: block; /*float: left;*/ } .post-title .post-title-list ul a{ text-decoration: none; font-size: 100%; } .post-title .can-select ul{ border-color: #ddd; } .post-title .can-select ul li{ display: block; } #js-topic-form-holder{ overflow: hidden; } /*Плашка с кнопками визуального редактирования текста*/ .editor {} .editor .panel { background: #eaecea; float: left; width: 100%; padding: 2px 0; } .editor .panel a { display: block; width: 20px; height: 20px; overflow:hidden; float: left; margin-left:2px; text-decoration:none; } .editor .panel a:hover { background: #fff; } .editor .panel a.txt { width:auto; padding:0 2px; } .editor .panel a span { color:#4d4d4d; position:relative; top:3px; font-size:12px; font-weight:bold; letter-spacing:-1px; } .editor .panel select { float: left; margin-left:2px; } .editor .text-holder { clear:both; border-color:#d4d0c8; border-style:inset; border-width:2px 1px 1px 2px; padding:2px 2px 2px 3px; } .editor .text-holder textarea { overflow:auto; border:none; } .emply_lenta{margin-left:35px;} /* Nokia special */ #special_nokia{margin-left:35px;margin-bottom:20px;clear:both;background: #f0f0e7;padding:20px;position:relative;-webkit-border-radius: 10px;-moz-border-radius: 10px;border-radius: 10px;} #special_nokia .logo{display:block;width:105px;height:66px;position:absolute;left:20px;top:20px;background: url(/i/special/nokia/after_post_html_block/logo.png) no-repeat; } #special_nokia .ovi{display:block;width:68px;height:67px;position:absolute;right:20px;top:20px;background: url(/i/special/nokia/after_post_html_block/ovi.png) no-repeat; } #special_nokia .text{margin-left:150px;margin-right:100px;font-size:10px;font-fimily:Arial;color:#555555;} #special_nokia .text span{font-size:18px;} #special_nokia .text .links{overflow:hidden;margin-top:15px;font-size:10px;} /* common */ .hidden { display:none !important; } del.robots-noindex{display:none;} .has-two-inputs{ width:103%; } dd.has-two-inputs{ width:102%; } #comment_form input.loading { background: url(/i/form/loader_button.gif) repeat; } #comment_form.loading input.post { background: url(/i/form/loader_button.gif) repeat; } span.two-inputs{ float:left; margin-right:3%; } /* Forms */ input.wide, select.wide, textarea.wide { width:99%; } .input-row{ overflow:hidden; } .two-inputs{width:47%;margin-right:1%;} .wide-me{ overflow:hidden; } .wide-me input.two-inputs{ width:98%; } .right-stick{ float:right; margin-left:10px; } input.wide-half, select.wide-half, textarea.wide-half { width:50%; } input.checkbox {vertical-align:middle;} input.textfield {} input.large { font-size:3em; } textarea.large { height:40em; } textarea.medium { height:7em; } textarea.small { height:3em; } select.with-title option { background:#eaecea; } select.with-title option.title { background:#fff; } input.btn-big { font-size:2em; } .achtung-minen { color: #f00; display:none; } .js-marked-error .achtung-minen { display:block; } form input.btn { background:#d4d0c8 url(/i/form/loader_field.gif) no-repeat -1000px 0; outline:none; } form.save-loading input.btn-save, form.blogSave-loading input.btn-save { background:#d4d0c8 url(/i/form/loader_field.gif) repeat 0 0; } form.preview-loading input.btn-preview { background:#d4d0c8 url(/i/form/loader_field.gif) repeat 0 0; } form.draft-loading input.btn-draft { background:#d4d0c8 url(/i/form/loader_field.gif) repeat 0 0; } form .loading input.textfield { background:url(/i/form/loader_field.gif) repeat 0 0; } .topic-autosave { padding:5px; } form.autosave-loading .topic-autosave { background:url(/i/form/loader_field.gif) repeat 0 0; } .clear { clear:both; } .sublabel { margin: 2px 0 3px; font-size: 11px; color: #999; overflow:hidden; } .block { margin-bottom:2em; } .block-semi { margin-bottom:1em; } .block-super { margin-bottom:4em; } .block-tr td { padding-bottom:2em; } .block-semi-tr td { padding-bottom:1em; } .block-super-tr td { padding-bottom:4em; } .system { text-decoration:none; } .system em { font-style:normal; line-height:140%; border-bottom:1px dashed #79B1D4; } h2.forms .system { font-size:0.6em; } fieldset legend { padding:5px 5px 1.5em 5px; margin-left:-5px; } .topic-preview { display:none; } .topic-preview .habracut { padding-bottom:0.8em; margin-bottom:0.8em; border-bottom:1px dotted #999; position:relative; } .topic-preview .habracut .scissors { position:absolute; left:30px; bottom:-0.8em; padding:0 3px; color:#999; background:#fff; font-weight:bold; letter-spacing:-1px; } /* Rounded corners blocks */ .round-corner-box { margin-bottom: 20px; font-size:1em; /*12px*/ font-family:tahoma,arial; background: #f0f0e7 url(/i/bg-corner-top-left.gif) no-repeat 0 0; } .round-corner-box .bg-bott-r { width: 100%; background: url(/i/bg-corner-bottom-left.gif) no-repeat bottom left; } .round-corner-box .bg-bott-l { background: url(/i/bg-corner-bottom-right.gif) no-repeat bottom right; width: 100%; } .round-corner-box .bg-top-r { background: url(/i/bg-corner-top-right.gif) no-repeat top right; padding: 10px 20px; } /* Header inside */ .round-corner-box .bg-top-r h3 { display: block; margin:0 0 20px 0; font-size: 2.33em; /*28px*/ font-weight: normal; line-height: 1.1em; letter-spacing: -1px; text-decoration: none; color: #999; } .round-corner-box .all { text-align: right; color:#999; } /* Blocks inside rounded corners */ /* Live comments */ .live-wrapper {margin-bottom: 10px;} .live-comment {margin: 0 0 5px 0;} .live-comment dt, .live-comment dd, .live-comment dd dl, .live-comment dl dd dl dt { margin: 0; display: inline; color:#999; } .live-comment span.who a, .live-comment .where, .live-comment .topic { margin-bottom: 1ex; line-height: 1.35em; } .live-comment .who { padding-left: 16px; background: url(/i/bg-user.gif) 0 50% no-repeat; display: inline; } .live-comment .who a {color:#999;} .live-comment .where{color:#666 ;} .live-comment .topic {color:#666;} /* Live' links behaviour */ .live-comment .who a:hover, .live-comment a.where:hover { text-decoration: none; background: #f66; color:white; } .live-comment a.topic:hover { text-decoration: none; background: #6c6; color:#fff; } .live-comment .total {color: #C00;} /* Live popular companies */ .rating .title .new-feedback { padding: 0 0 0 2px; font: 11px/100% normal Arial,sans-serif; color: #fff; background: #6cf; text-decoration: none; } /* Recommendations (habraprofile) */ .round-corner-box .recommendation { margin: auto 0; padding: 10px 20px; font: 1em/150% Arial, sans-serif; /*12/12*/ } .round-corner-box .recommendationl dt a { padding-left: 16px; color: #666; background: url(/i/bg-blogs.gif) 0 80% no-repeat; } .round-corner-box .recommendation dd { color: #000; } /* // Recommendations (habraprofile) */ /* Blocks inside rounded corners */ /* // Rounded corners */ /* Company card */ form#company-card { margin-left: 20px; } form#company-card h1 { margin-bottom:1em; width:100%; clear:both; font-size:2.167em; color: #767676; font-weight: normal; margin-left: -20px; } form#company-card dl { margin-bottom:1em; width:100%; clear:both; } form#company-card dl input, form#company-card dl select, form#company-card dl label { width:100%; display:block; } form#company-card dl label { margin-bottom:0.3em; } form#company-card dl#tariff-holder { margin:0 5% 2em 0; width:50%; float:left; clear:none; } form#company-card dl#actuality-holder { width:15.7em; float:right; clear:none; line-height:1.5em; } form#company-card dl#actuality-holder dt { float:left; } form#company-card dl#actuality-holder dd { float:right; } form#company-card dl#actuality-holder * { vertical-align:middle; } form#company-card dl#actuality-holder label { display:inline; } form#company-card dl#actuality-holder input { width:6.5em; display:inline; } form#company-card dl#rss-holder { margin-top:3em; } form#company-card dl dd.error { color:#cc0000; } form#company-card input.submit { float:right; margin-right: -6px; } .zebra {text-decoration:none; border-bottom: 1px dashed #79B1D4;} /* Подчёркивание JavaScript-ссылок */ #getInviteYounger_text { color: #519500; } .sort-order a { margin-left:3px; text-decoration:none;border-bottom:#77a3bb 1px dashed; } a.sort-order_lnk_Sel { text-decoration:none; padding:0px 4px 2px 4px; background:#e8e9eb; border-color:#e8e9eb; color:#000; } .sort-order_Srch { margin:0 35px; } .answer-sort { margin-top:50px; } .answer-sort .comments-header { display:inline; } .answer-sort .sort-order { padding-left:5px; } /* futu_alert */ /* .futu_alerts_holder { position:fixed; _position:absolute; top:0; _top: expression( eval(document.documentElement.scrollTop) + "px" ); left:50%; width:450px; z-index:9999; margin-left:-225px; } */ .futu_alert_outer { position: fixed; top: 0; left: 0; width: 100%; z-index:9999; } .futu_alert_outer .frame { position:relative; z-index:9999; } .futu_alerts_holder { position:absolute; left:69%; top:0; width:30%; z-index:9999; } .futu_alerts_holder .futu_alert { position:absolute; top:-1000px; background-color:#FFEBA0; font:1em Tahoma, sans-serif; border:1px solid #FFFFFF; margin-left:60px; } .futu_alerts_holder .futu_alert .futu_alert_header { font-size:1em; margin:10px 20px 0; } .futu_alerts_holder .futu_alert .futu_alert_text { font-size:0.8em; margin:10px 20px; } .futu_alerts_holder .futu_alert .futu_alert_close_button { position:absolute; padding:10px; top:0; right:0; outline:none; } .futu_alerts_holder .message { color:#FFF; background-color:#6690C9; } .futu_alerts_holder .error { color:#FFF; background-color:#ed6060; } .futu_alerts_holder .save { color:#FFF; background-color:#73a168; } /* form */ form.tm-form dl { margin-bottom: 20px; } form.tm-form dl dd.desc { color: gray; } form.tm-form dl.required dt label { font-weight: bold; } form.tm-form dl dd.error { color: red; display: none; } form.tm-form dl.invalid dd.error { display: block; } form.tm-form .unknown-error { margin-top: 20px; margin-bottom: 20px; color: red; } form.tm-form .error-list { display: none; } form.tm-form input.loading, input.loading, button.loading { background: url(/i/form/loader_button.gif) repeat; } form.tm-form label { display: inline; } form.tm-form dl dd.categories{ overflow:hidden; margin:7px 0; } form.tm-form dl dd.categories label{ float:left; width:49%; } /* xl */ .xl-little div.hentry { margin-bottom: 10px; } .xl-panel { padding: 3px 7px; background: #f7f7f2; margin-bottom: 2em; clear: both; overflow: hidden; margin-left:35px;} .xl-panel ul { list-style: none; float: left; width: 72px; height: 20px; padding: 0; margin: 0; background: transparent url(/i/xl.gif) -112px 0 no-repeat; cursor: pointer; } .xl-panel ul li { margin: 0; padding: 0; width: 24px; height: 20px; float: left; } .xl-panel li.little:hover { background: transparent url(/i/xl.gif) -184px 0 no-repeat; } .xl-panel li.xl_view_radio_little_active { background: transparent url(/i/xl.gif) -256px 0 no-repeat !important; } .xl-panel li.medium:hover { background: transparent url(/i/xl.gif) -208px 0 no-repeat; } .xl-panel li.xl_view_radio_medium_active { background: transparent url(/i/xl.gif) -280px 0 no-repeat !important; } .xl-panel li.full:hover { background: transparent url(/i/xl.gif) -232px 0 no-repeat; } .xl-panel li.xl_view_radio_full_active { background: transparent url(/i/xl.gif) -304px 0 no-repeat !important; } .xl-panel .help { float: left; color: #999; padding-left: 10px; } .xl-panel .rss { float: right; display: block; width: 16px; height: 1.7em; overflow: hidden; text-indent: -1000px; background: transparent url(/i/feed_icon_16x16.gif) 0 50% no-repeat; } .xl_updown, .xl_hide { cursor: pointer; display: -moz-inline-stack; display: inline-block; width: 21px; height: 20px; background: transparent url(/i/xl.gif) 0 50% no-repeat; } .xl_updown:hover { background-position: -21px 50%; } .xl_downarrow { background-position: -42px 50%; } .xl_downarrow:hover { background-position: -63px 50%; } .xl_hide { width: 14px; background-position: -84px 50%; } .xl_hide:hover { background-position: -98px 50%; } /* footer */ #footer a { color: #6da3bd; } #footer a:hover{color:#4D7285;} #about { float: left; } a.footer_logo { margin: 0 1.1em 0 2%; float:left; display:block; width:31px; height:29px; background:url(/i/tm_logo_sharp.gif) no-repeat 0 0; outline:none; text-indent:-9999px; } a.footer_logo:hover { background-position:0 -31px; } #copyright-and-footer-nav { float: right; margin-right: 20px; } #copyright-and-footer-nav li { display: inline; } #footer { width: 95%; min-width: 725px; max-width: 1200px; clear: both; margin: 10px auto 0; font:.917em/120% Tahoma, Arial; /*11px/12px*/ color:#949494; position: relative; top: 20px; overflow: hidden; } #footer .footer-conttent{ border-top: 1px solid #ccc; padding: 30px 0; overflow: hidden; margin-left:35px; } .bottom_menu { width: 80%; position: relative; overflow: hidden; float: left; } .bottom_menu dl { float: left; width: 16.5%; font-size: 1em;} .bottom_menu dl.user { width: 18%; } .bottom_menu dl.sections { width: 15%; } .bottom_menu dl dt { margin-bottom: .6em; font-size: 1.2em; } .bottom_menu dl dt a { font-weight: bold; } .bottom_menu dl.user dt a { border: 0; font-weight: bold; } .bottom_menu dl dd { margin-bottom: .4em; line-height: 1.6em; } /* favourites_add */ #favourites_add_hidden { display: none; } #favourites_add { position: relative; height: 0; clear: left; z-index: 10; margin-left: 35px; } #favourites_add .favourites_add_inner { background: #f0f0e7; padding: 1em; position: absolute; top: 1em; left: 0; width: 95%; z-index: 10; } #favourites_add label { font-size: 1.1em; padding-bottom: .1em; } #favourites_add #favourites_add_tags { width: 99%; } #favourites_add dd.desc { font-size: .9em; color: #666; } #favourites_add .favourites_add_footer { margin-top: 1em; color: #666; } #favourites_add #favourites_add_cancel { color: #000; text-decoration: none; border-bottom: 1px dashed; } /* misc */ .top-tags { list-style: none; margin-bottom: 15px; } .top-tags strong { font-weight: normal; } .top-tags em { font-style: normal; float: right; text-align: right; color: #999; text-decoration: none; } .top-tags a { display: block; padding: 4px 20px; overflow: hidden; text-decoration: none; } .top-tags a strong { text-decoration: underline; } .top-tags a:hover, .top-tags a.current { background: #d2d2c9; color: #fff; } .top-tags a:hover strong, .top-tags a.current strong { text-decoration: none; } .top-tags a:hover em, .top-tags a.current em { color: #fff; } ul.tags li.fav a { color:#339900;} ul.tags li.fav a:hover{ color:#85C266; } .tags li.favourites_edit_tags { margin-left: 10px; } .tags li.favourites_edit_tags a, .tags li.favourites_edit_tags a:link, .tags li.favourites_edit_tags a:visited { color: #ccc; background: none; } .tags li.favourites_edit_tags a:hover { color: #666; } .sub-nav { clear: both; margin-bottom: 20px; } .sub-nav li { display: inline; margin-right: 3px; } .sub-nav li a { color: #093; font-size: 1.083em; padding: 0 2px; text-decoration: none; } .sub-nav li.current a { color: #fff; background: #ff9525; } /* re:store banner margins fix for opera */ @media all and (min-width: 0px) { #iStoreMenuBanner { margin-top: -2px; margin-bottom: 0; } } /* header */ /** There is new habraheader bellow; Gleb Arestov, july 09**/ .header{ padding:10px 0 0; overflow:hidden; width: 95%; margin:0 auto; min-width: 725px; max-width: 1200px; } .header .panel-personal{ float:left; } .header .panel-tools{ float:right; } .header .logo{ text-align: center; width:110px; height:110px; display:block; margin:10px auto; background:url(/i/bg-multilogo.png) no-repeat 50% -144px; } .header .logo:hover{ background-position:50% -274px; } .header a.root{ margin:0 auto; width:240px; height:130px; background-position:0 0 !important; } .panel-personal, .panel-tools { font-family: Arial, Helvetica, sans-serif; } .panel-personal{ padding-left:35px; width:250px; color:#999; line-height:1.33em; } .panel-personal dt a{ margin-right:10px; } .panel-personal .habrauser-charge{ margin-top:0.4em; font-size: 91%; line-height:1.2em; } .panel-personal a{ color:#999; } .panel-personal a:hover{ color:#333; } .panel-personal dd a{ margin-right:10px; } .panel-personal a.habrauser{ color:#343434; font-weight: 700; } .panel-personal a.habrauser:hover{ color:#858585; } .panel-personal .habrauser-newmail{ background:url(/i/icos/new-message.gif) no-repeat 0 2px; padding-left:21px; margin-left:-21px; } .panel-tools{ padding-right:1%; width:271px; } .panel-tools .panel-settings{ padding-right:28px; margin-bottom:0.66em; } .panel-settings{ text-align: right; } .panel-settings a{ color:#999; } .panel-settings a:hover{ color:#333; } .panel-settings small{ color:#ccc; font-size:1em; } .panel-tools .panel-search{ float:right; width:auto; } .panel-search{ text-align: right; margin-top:-2px; padding:2px 0 2px 2px; } .panel-search .panel-search-label{ position:relative; float:left; } .panel-search .panel-search-label span{ position:absolute; left:5px; top:3px; color:#ccc; display:none; cursor:pointer; } .panel-search label.input-placeholding span{ display:block; } .panel-search .in-text{ border:1px solid #D1D1D1; padding:2px; float:left; width:230px; margin-right:5px; height:15px; padding:2px; } .panel-search .in-text:focus{ outline:1px solid #6DA3BD; } .panel-search .in-submit{ float:left; padding:0; margin:0; border:none; height:21px; width:21px; overflow:hidden; background:transparent url(/i/bg-button-enter.png) no-repeat scroll 0 0; } .panel-search.enter-button-hightlight input.in-submit, .panel-search input.in-submit:active{ outline:none; background-position: 0px -22px; } .panel-search p{ margin: 0; } .panel-search .input-placeholding{ color:#ccc; } .panel-nav-top{ padding:30px 0 25px 35px; overflow:hidden; margin-top:-15px; min-width:1000px; text-transform: lowercase; } .panel-nav-top li{ height:36px; line-height:1.2em; float:left; font-size:250%; margin-right:26px; color:#343434; } .panel-nav-top li a{ color:#6da3bd; } .panel-nav-top li a:hover{ color:#4D7285; } .panel-nav-top li.current a{ color:#343434; } .panel-nav-top li.current-full a{ color:#000; text-decoration: none; cursor: default; } .panel-nav-top li.current a.disabled{ text-decoration:none; } .panel-nav-top li.current a:hover{ color:#000000; } .panel-nav-top li span a{ float:left; font-size:0.5em; line-height:1.2em; max-width:140px; } .panel-personal { width: 350px; } .panel-personal iframe { display: -moz-inline-stack; display: inline-block; *display: inline; *zoom: 1; margin-left: 10px; position: relative; top: 3px; } /* user_profile */ .profile-header{ float:left; width:149%; padding-left:35px; margin:-8px 0 6px; height:48px; } .profile-header h1{ float:left; margin-right:5px; } .profile-header h1 .favicon{ margin-top:14px; } .profile-header .profile-actions{ float:left; margin-right:10px; position:relative; } .profile-header .profile-actions dt{ float:left; overflow: hidden; color:#333333; padding:0; line-height:1em; height:42px; font-size:300%; } .profile-header .profile-actions dt .habrauser{ line-height:1em; padding:2px 6px 9px ; float:left; } .profile-header .profile-actions dd.menu-arr{ position:relative; z-index:2; float:left; display:none; cursor:pointer; font-size:175%; font-weight:400; line-height:46px; width:15px; padding:0 11px 0 7px; margin-left:-6px; text-align:center; vertical-align:middle; height:40px; color:#ccc; } .profile-header .profile-actions dd.menu-arr .press-done{ display:none; } .profile-header .profile-actions dd.menu-arr:hover{ color:#333; } .profile-header .profile-actions .profile-actions-menu-container{ display:none; position:absolute; width:200px; right:0; top:5px; } .company-header .profile-actions-menu-too-left .profile-actions-menu-container{ right:0; left:-21px; } .profile-header .profile-actions .profile-actions-menu{ float:right; padding:0; background:#fff; border:1px solid #333; background:#fff; margin-top:3px; } .profile-header .profile-actions .profile-actions-menu .cor-1px{ padding:1px 0; border:2px solid #333; border-width:0 2px; background:#fff; margin:0 -2px; } .profile-header .profile-actions .profile-actions-menu ul{ background:#fff; margin:0 -1px; padding:7px 40px 7px 14px; } .profile-header .profile-actions .profile-actions-menu li{ padding:5px 0; line-height:1.2em; overflow:hidden; font-size:108%; } .profile-header .profile-actions .profile-actions-menu li a{ } .profile-actions-menu li a.js-cancel{ float:right; font-size:0.8em; line-height:1.2em; padding-top:2px; } .js-you-love-this-corp .js-prof-company-addfan, .js-you-work-here .js-prof-company-worker, .js-prof-company-notworker, .js-prof-company-removefan{ display:none; } .js-you-love-this-corp .js-prof-company-removefan, .js-you-work-here .js-prof-company-notworker{ display:block; } .company-header .profile-actions .profile-actions-menu ul{ padding:22px 14px 7px 14px; } .company-header .profile-actions .profile-actions-menu-container{ width:258px; } .company-header .profile-actions .profile-actions-menu{ float:none; } .profile-header .profile-actions.profile-actions-usable dd.menu-arr{ display:block; } .profile-header .profile-actions.profile-actions-usable dt:hover{ border-color:#B7D0E5; } .profile-header .profile-actions.active dt{ border-color:transparent !important; } .profile-header .profile-actions.active dd.menu-arr{ color:#333; } .profile-header .profile-actions.active dd.menu-arr .press-can{ display:none; } .profile-header .profile-actions.active dd.menu-arr .press-done{ display:inline; } .profile-actions.active .profile-actions-menu-container{ display:block; } .profile-header .profile-karma-holder{ float:left; margin-top:-9px; margin-left: 10px; } .profile-header .profile-karma-holder dl{ text-align:center; } .profile-header .karma{ padding:0; margin-right:15px; } .profile-header .habraforce{ margin:0; padding:0; } .profile-header .profile-adm{ padding: 0 0 0; float:left; margin-left:20px; } .profile-header .profile-adm a{ display:block; float:left; margin:0 5px; width:24px; height:24px; line-height:24px; vertical-align:bottom; text-align:center; padding:6px; } .profile-header .profile-adm a.invitogiver{ background: url(/i/img-icon-invite.png) no-repeat 50% 50%; } .profile-header .profile-adm a.profedit{ background: url(/i/topic_edit.gif) no-repeat 50% 50%; } .profile-header .profile-adm a:hover{ background-color:#eee; } .profile-header .karma, .profile-header .habraforce{ font-family: Verdana, sans-serif; } .profile-header .karma a{ margin-top:9px; width:15px; height:26px; } .profile-header .karma .vote_plus { background:url(/i/icos/icons_vote_karma_big.gif) no-repeat 0 0 !important; } .profile-header .karma .vote_minus { background:url(/i/icos/icons_vote_karma_big.gif) no-repeat -16px 0 !important; } .profile-header .karma.voted_plus .vote_plus { background:url(/i/icos/icons_vote_karma_big.gif) no-repeat 0 -27px !important; } .profile-header .karma.voted_minus .vote_minus { background:url(/i/icos/icons_vote_karma_big.gif) no-repeat -16px -27px !important; } .profile-header .karma dd.vote{ display:block; } .profile-header .karma .mark, .profile-header .habraforce .number, .profile-header .habraindex .number{ background:transparent; font-size:300%; } .profile-header .karma .mark{ color:#6c6; padding:0; } .profile-header .habraforce .number{ color:#CC66CC; } .profile-header .karma dt, .profile-header .karma .total, .profile-header .habraforce dt, .profile-header .habraindex dt{ color:#ccc; } .profile-header dt{ margin-bottom:-6px; } .profile-header .karma .total{ margin-top:-4px; } .company .page-navigation{ float:none; width:auto; padding-left:35px; } .profile-header .habraindex .number{ color:#CC66CC; } .profile .profile-header{} .profile #sidebar{ margin-top:46px; } /* autosuggest */ /* autosuggest */ .js-autosuggest-holder { width:100%; position:relative; z-index:10; } .js-autosuggest-holder .js-autosuggest-output { width:100%; overflow:hidden; position:absolute; z-index:10; cursor:pointer; padding-bottom:1px; } .js-autosuggest-holder .js-autosuggest-output iframe { display:none; display/**/:block; position:absolute; top:0; left:0; z-index:-1; width:3000px; height:3000px; } .js-autosuggest-output-container { position: relative; height: 0; } .js-autosuggest-output div { text-align:left; position:relative; padding: 3px 0 3px 3px; font-size:0.9em; border:1px solid #dadada; line-height:1.4em; margin-bottom:-1px; background-color: #fff; cursor: pointer; } .js-autosuggest-output div em { font-style:normal; font-weight:bold; } .js-autosuggest-output div.active { background-color:#fdf5e6; z-index:5; border-color:#eee; } .js-autosuggest-holder .js-autosuggest-output .js-autosuggest-item { padding:3px; border-bottom:1px solid #7992b2; } .js-autosuggest-holder .js-autosuggest-output .current { background-color:#7992b2; } .js-autosuggest-holder .js-autosuggest-output .js-autosuggest-item em { font-weight:bold; font-style:normal; } .panel-search .js-autosuggest-holder{ width:100%; } .panel-search .js-autosuggest-output-container{ clear:both; width:236px; z-index:1; } .panel-search p{ position:relative;z-index:3;} /* Autosuggest в форме поиска */ #info-search .js-autosuggest-holder { position:relative; } #info-search .js-autosuggest-output { width:100.3%; left:0; top: 22px; margin-left: -3px; text-align:left; } /* Autosuggest в форме поиска по тегам*/ .tag-search { position:relative; } .tag-search .js-autosuggest-output { width:51%; left:97px; top: 37px; z-index:30; } .tag-search .js-autosuggest-output div { padding:0 6px; } .main-search .js-autosuggest-output { width: 78%; padding-right:8px; } .main-search .js-autosuggest-output div{ margin-right:-8px; } /* Autosuggest в форме поиска по тегам*/ #favourites_add .js-autosuggest-holder div{ z-index:3; position:relative; } #favourites_add .js-autosuggest-holder .js-autosuggest-output-container{ z-index:1; } #favourites_add .js-autosuggest-output { left:0; top: 000; z-index:30; } /* autosuggest */ #js-topic-form-holder .js-autosuggest-holder { position:relative; } #js-topic-form-holder .js-autosuggest-output { width:100.3%; left:0; } /* //autosuggest */ #write-post .js-autosuggest-holder { position:relative; } #write-post .js-autosuggest-output { padding:0; width:101%; margin-top: -10px; } /* //autosuggest */ /* top_companies */ .corps-list-top{ } .corps-list-top .page-nav, .corps-list-top .corps-list-top-menu{ padding-left:35px; } .corps-list{ padding-top:17px; color:#7d7c7c; font-family:Tahoma, sans-serif; } .corps-list .corps-listhead{ margin:0 0 7px; line-height:1.2em; } .corps-list .corps-listhead dt.corp-name{ height:1px; } .corps-list .corps-listhead dd.copr-habraindex{ font-family:Arial,sans-serif; font-size:100%; color:inherit; padding-left:4px; margin-right:-4px; } .corps-list li{ overflow:hidden; padding-left:35px; margin:0 0 20px; line-height:31px; } .corps-list li dt, .corps-list li dd{ float:left; } .corps-list li dt.corp-name{ font-size:208%; width:63%; } .corps-list li dt.corp-name img{ line-height:1em; height:16px; width:16px; float:left; margin:9px 12px 0 -28px; font-size:33%; } .corps-list li dd.corp-descripton{ padding-top:1px; float:none; clear:left; width:47%; line-height:1.2em; font-size:108%; } .corps-list li dd.corp-descripton p{ margin:0; } .corps-list li dd.corp-descripton p a{ color:#666; font-size:107%; } .corps-list li dd.corp-descripton p a:hover{ color:#A3A3A3; } .corps-list li dd.copr-habraindex{ width:21%; color:#CC66CC; float:right; } .corps-list li dd.copr-habraindex, .corps-list li dd.copr-habraindex-change{ font-family:Verdana, sans-serif; font-size:158%; } .corps-list li dd.habraindex-up{ color:#74c262; } .corps-list li dd.habraindex-down{ color:#ff0033; } .corps-list-page-description{ color:#999; } .corps-list-page-description p{ font-size:133%; margin:0 0 1em; } .corps-list-side .side-rubrikator{ margin-top:35px ; } .corps-list-side a.add{ color:#999; font-size:133%; } .corps-list-side a.add:hover{ color:#333; } .corps-list-side .alfikator { margin:30px 0; } .alfikator ul{ font-size:166%; overflow:hidden; color:#ccc; padding:1px 1px; padding-left:4px; margin-left:4px; margin:0 0 30px; } .alfikator ul li{ float:left; width:10%; margin-right:8px; } .alfikator ul li a{ color:#666; text-decoration:none; } .alfikator ul li a:hover{ color:#A3A3A3; } .alfikator ul li.active a{ padding:2px 4px; margin-left:-4px; color:#333; background:#C5DAE5; } /* users-lists */ h1.users-list-geo{ color:#999 ; margin:-10px 0 3px !important; } h1.users-list-geo a{color:#999;} h1.users-list-geo a:hover{color:#333;} .lion-king{ background:url(/i/bg_lion_king.png) no-repeat 0px 0px; width:23px; height:20px; position:absolute; top:-21px;left:12px; } #people-list{ margin-left:-18px; } #people-wrapper .corplist-suggest-form{margin-bottom:10px;padding-top:0;padding-left:0;} table.users-list{ width:100%; } table.users-list th { font: normal 1em/180% Arial,sans-serif; color:#999; overflow:hidden; padding:0 !important; margin:0; text-align:left; } table.users-list td { vertical-align: top; padding:0 0 26px; } table.users-list .rating-dyn { vertical-align: top; font-size: 1em; width:18px; text-align:left; } table.users-list .rating-dyn .rating-dyn-con{ position:relative; width:18px; margin-top:30px; z-index:5; } table.users-list .rating-dyn .rating-dyn-con .rating-dyn-text{ position:absolute; z-index:12; top:-7px; background:#fff; padding-right:2px; padding-top:1px; right:5px; text-align:right; white-space:nowrap; } table.users-list .userava{ width:48px; vertical-align: top; } table.users-list .userava .habrauserava{margin-top:5px;position:relative;} table.users-list .user { text-align: left; padding-left: 14px; line-height:1.2em; color:#999; } table.users-list .user dl{ padding-right:3px; } table.users-list .user .lifetime{ font-size: 100% ; color:#999; } table.users-list .user .last_post{ font-size: 100% ; color:#999; padding-right:20px; } table.users-list .user .last_post a{ color: #666666; font-size: 100% ; } table.users-list .user .last_post a:hover{ color: #333; } table.users-list .user a { } table.users-list .user dt{ margin-bottom:5px; font-size:200%; line-height: 1em; } table.users-list .userkarma{ color:#74c262; width:15%; font-size:150%; } table.users-list .userrating{ color:#CC66CC; font-size:150%; width:10%; } /* yandex_direct */ #yandex_direct{padding:1.67em;} .y5_vertical { padding: 1em 1.4em; margin-bottom: 0; } .y5_vertical .y5_all a, .y5_vertical .y5_how a, #y5_direct2 .y5_all a, #y5_direct2 .y5_how a { color: #F0F0E7 !important; } /* highlight */ pre code { font-size: 12px; padding: 0.5em; background: #f8f8f8; display: block; } pre .subst, pre .title { font-weight: normal; color: #000; } pre .comment, pre .template_comment, pre .javadoc, pre .diff .header { color: #808080; } pre .annotation, pre .decorator, pre .preprocessor, pre .doctype, pre .pi, pre .chunk, pre .shebang, pre .apache .cbracket { color: #808000; } pre .tag, pre .tag .title, pre .pi pre .id, pre .attr_selector, pre .pseudo, pre .literal, pre .keyword, pre .hexcolor, pre .css .function, pre .ini .title, pre .css .class, pre .list .title, pre .tex .command { color: #4d7386; } pre .attribute, pre .rules .keyword, pre .number, pre .date, pre .regexp, pre .tex .special { color: #2f98ff; } pre .number, pre .regexp { font-weight: normal; } pre .string, pre .value, pre .filter .argument, pre .css .function .params, pre .apache .tag { color: #339900; } pre .symbol, pre .ruby .symbol .string, pre .ruby .symbol .keyword, pre .ruby .symbol .keymethods, pre .char, pre .tex .formula { color: #968e5b; } pre .phpdoc, pre .yardoctag, pre .javadoctag { text-decoration: underline; } pre .variable, pre .envvar, pre .apache .sqbracket, pre .nginx .built_in { color: #968e5b; } pre .addition { background: #baeeba; } pre .deletion { background: #ffc8bd; } pre .diff .change { background: #bccff9; } ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline; filename=favicon.ico Content-Type: image/x-icon; name=favicon.ico Content-Location: http://habrahabr.ru/i/favicon.ico Content-Transfer-Encoding: Base64 AAABAAIAICAAAAEAIACoEAAAJgAAABAQAAABACAAaAQAAM4QAAAoAAAAIAAAAEAA AAABACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAsKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/r556/7Cgfv+woH7/sqKA/7OkgP+zpIH/sqSB/7KjgP+woHz/sKB+/7Cg fv+woH7/sqOA/7Kkgf+zpIH/s6SA/7Cgfv+woH7/sKB+/7Cgfv+woH7/rp53/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+unXj/sKB+/7Cg fv///////////////////////////7Cgfv+woH7/sKB+/7Cgfv////////////// /////////////7Cgfv+woH7/sKB+/7Cgfv+vn3v/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+//////////////////// ////////sKB+/7Cgfv+woH7/sKB+//n69///////////////////////sKB+/7Cg fv+woH7/sKB+/6+fe/+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7///////////////////////////+woH7/sKB+/7Cg fv+woH7/+vr3//////////////////////+woH7/sKB+/7Cgfv+woH7/r597/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv///////////////////////////7Cgfv+woH7/sKB+/7Cgfv/29O////////// /////////////7Cgfv+woH7/sKB+/7Cgfv+vn3v/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+//////////////////// ////////sKB+/7Cgfv+woH7/sKB+//b18P//////////////////////sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7///////////////////////////+woH7/sKB+/7Cg fv+woH7/9fTv//////////////////////+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv///////////////////////////7Cgfv+woH7/sKB+/7Cgfv////////////// /////////////7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+//////////////////// ////////////////////////////////////////////////////////sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/////////////////////////////////+vn2//// ///8+/r//v7+//////////////////////+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv////////////////////////////////////////////////////////////// /////////////7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+//////////////////// ////////////////////////////////////////////////////////sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7///////////////////////////////////////// //////////////////////////////////+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv///////////////////////////7Cgfv+woH7/sKB+/7Cgfv////////////// /////////////7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+//////////////////// ////////sKB+/7Cgfv+woH7/sKB+////////////////////////////sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7///////////////////////////+woH7/sKB+/7Cg fv+woH7///////////////////////////+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv///////////////////////////7Cgfv+woH7/sKB+/7Cgfv////////////// /////////////7Cgfv+woH7/sKB+/7Cgfv+vn3r/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+//////////////////// ////////sKB+/7Cgfv+woH7/sKB+////////////////////////////sKB+/7Cg fv+woH7/sKB+/6+fev+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7///////////////////////////+woH7/sKB+/7Cg fv+woH7///////////////////////////+woH7/sKB+/7Cgfv+woH7/r596/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv///////////////////////////7Cgfv+woH7/sKB+/7Cgfv////////////// /////////////7Cgfv+woH7/sKB+/7Cgfv+woHv/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cg fv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/7Cgfv+woH7/sKB+/wAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAgAAAA AABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwoH//sKB//7Cgf/+woH//sKB//7Cg f/+woH//sKB//7Cgf/+woH//sKB//7Cgf/+woH//sKB//wAAAAAAAAAAsKB//7Cg f/+woH//sKB//7Cgf/+woH//sKB//7Cgf/+woH//sKB//7Cgf/+woH//sKB//7Cg f/8AAAAAAAAAALCgf/+woH//sKB//////////////////7Cgf/+woH////////// ////////sKB//7Cgf/+woH//AAAAAAAAAACwoH//sKB//7Cgf/////////////// //+woH//sKB//////////////////7Cgf/+woH//sKB//wAAAAAAAAAAsKB//7Cg f/+woH//////////////////sKB//7Cgf/////////////////+woH//sKB//7Cg f/8AAAAAAAAAALCgf/+woH//sKB//////////////////7Cgf/+woH////////// ////////sKB//7Cgf/+woH//AAAAAAAAAACwoH//sKB//7Cgf/////////////// /////////////////////////////7Cgf/+woH//sKB//wAAAAAAAAAAsKB//7Cg f/+woH////////////////////////////////////////////+woH//sKB//7Cg f/8AAAAAAAAAALCgf/+woH//sKB///////////////////////////////////// ////////sKB//7Cgf/+woH//AAAAAAAAAACwoH//sKB//7Cgf/////////////// //+woH//sKB//////////////////7Cgf/+woH//sKB//wAAAAAAAAAAsKB//7Cg f/+woH//////////////////sKB//7Cgf/////////////////+woH//sKB//7Cg f/8AAAAAAAAAALCgf/+woH//sKB//////////////////7Cgf/+woH////////// ////////sKB//7Cgf/+woH//AAAAAAAAAACwoH//sKB//7Cgf/+woH//sKB//7Cg f/+woH//sKB//7Cgf/+woH//sKB//7Cgf/+woH//sKB//wAAAAAAAAAAsKB//7Cg f/+woH//sKB//7Cgf/+woH//sKB//7Cgf/+woH//sKB//7Cgf/+woH//sKB//7Cg f/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAAgAEAAIAB AACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAP// AAD//wAA ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline; filename=karma.css Content-Type: text/css; charset=utf-8; name=karma.css Content-Location: http://habrahabr.ru/css/1307009785/karma.css Content-Transfer-Encoding: 8bit .karma-holder { position: relative; clear: both; width: 100%; height: 4em; float: left; border-bottom: 20px solid #fff; /*trick for IE 6*/ white-space: nowrap; background: url(/i/bg-profile-center-line.gif) left center repeat-x; } .blogs h1 a { position: relative; font: 2.83em/2.17em Verdana, sans-serif; /*34/12*/ text-decoration: none; } body.blogs #main-content h1 a img { float: left; margin: 15px 10px 0 0; border: 1px solid #ddd; } .karma, .habraforce, .blog-rating, .habramoney { font-family: Arial, Helvetica, sans-serif; text-align: center; float: left; /*border: 1px solid red;*/ background: #fff; } .karma { padding: 0 .83em 0 55px; } .karma-holder .infinity .vote { display: none; } .karma-holder .infinity-sign { display: none; font-size: 1.83em; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; margin-top: -5px; color: gray; } .karma-holder .infinity .infinity-sign { display: block; } .habraforce, .blog-rating, .habramoney { padding: 0 1em; } .habraforce, .blog-rating { margin: 0 20px 0 20px; padding-bottom: 1.1em; } .karma dl {float:left;} .karma dd.vote { margin:0 auto; width:auto; overflow:hidden; display:inline; } .karma dt, .karma .total { font-size: .83em; } .karma .total { clear:left; } .karma a { margin:3px 3px 0; float:left; width:9px; height:20px; } .karma .mark { float:left; } .karma strong { font-weight:normal; } .karma .vote_plus { background:url(/i/icos/icons_vote_karma.gif) no-repeat left top; } .karma .vote_minus { background:url(/i/icos/icons_vote_karma.gif) no-repeat right top; } .karma.no_voting .vote_plus, .karma.no_auth .vote_plus, .karma.mine .vote_plus, .karma.voted_minus .vote_plus { background:url(/i/icos/icons_vote_karma.gif) no-repeat left bottom; } .karma.no_voting .vote_minus, .karma.no_auth .vote_minus, .karma.mine .vote_minus, .karma.voted_plus .vote_minus { background:url(/i/icos/icons_vote_karma.gif) no-repeat right bottom; } .habraforce dt, .blog-rating dt, .habramoney dt, .habramoney .pay { font-size: .83em; float: none; } .karma .total em { font-style:normal; } .karma .mark, .habraforce .number, .blog-rating .number, .habramoney .number { font-size: 1.83em; /*22/12*/ padding: 0 .15em; color: #fff; } .karma .mark { background-color:#74c262; } .habraforce .number { background: #25a8ff; } .blog-rating .number { background: #d479b3; } .habramoney .number { background: #ef7f35; } .buttons { padding: .83em 0 0 .83em; white-space: nowrap; float: right; background: #fff; } .blogs .buttons { padding-left: 0; } .karma-holder .buttons a {margin-right:8px;} .blogs .buttons img { border: 1px solid #ddd; } .blogs .karma-holder .buttons a {margin-right:0px;margin-top:4px !important;} ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/png Content-Location: http://habrahabr.ru/i/icos/blog-small-open.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAABGdBTUEAAK/INwWK 6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFQUExURfT9 /8/o/N3w+LTP4J+/17PO4PP2+LjR47nZ8/j6+3OXrpu1yXGWrrDQ63KXrn2Zq16E nnybr6DD2Iyswb/d84qsw+v2/bbQ4Mba6vb///X+/3aXr2uPqN/v9t7r8q66wYam vZ290Z680KPA1oGkvdzw/KPA0uX1/KvG2XyetI6xyJmvvsHQ2H6gtNjt/GKDmcnf 7MLLz+Dz+qXA0TdDTZ67zzE3PLHO3tDf6ODz/Oz7/vz//7bR44uwyd/w+K3O39To 86fE2K3P453A1qWoq3uEjmWKo93k6dfn78PJzszW3c3m88HV5J23yqPB2Ze70ez6 /lZqeo6rwY2xy5+90NLn8q7K3Ji1yuXm59Do9HKWrZKxxtLr/LXQ4Oz6/abI36XB 1m+Uq5m80oKhuPT+/7PO33mRpavG18bj87rQ283c5NHq8+j4/f7//////////0ah peUAAABwdFJOU/////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// /////////////////////////////////wC3YWLSAAAAsUlEQVR42mKQYGe3EY9l ZmZN9cnPz2dgzYMBDRA3LC8XChJAXEdrhiwQYGAI4eTMZ1BLyYECblElLwZTK6ZM EGAylFeOF2QIV88GA0VfuYg0fYZoS+90INDyNzDScfVkEFbNAIIkIYeA0CCXfAYF PREWFlsnO0nZYH62fIbkGA4OXmOpXDFnATagvZqMjIx+FnGR9jyJIGfocvFFBXqY q7jJSIO4QJxvZqLtng8GAAEGAFBLNxR9F8JmAAAAAElFTkSuQmCC ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/png Content-Location: http://habrahabr.ru/i/icos/company-small.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAMAAAAMCGV4AAAABGdBTUEAAK/INwWK 6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFrUExURZ3B 3f7//7DJ2eTt+sDX47XN3rzU6JCuwuft8dfm9Mjc6KvG2Pr8/Zu5zfL4/snc7aTB 3Ze0yszd6dTk8/b9//T+//n7/O7z94Koy/j//67G1oyqvZ6929rm7tno8rzR4JKu wKjA0oerzsvb5oKqyUx2mMDY5djr9ZG62ZC52Or4/dn1/3OZtMnm+ICiua7J3G6U rYuswY+wxVeBoMDb63qgv9Do84SlvI+uw9fv/dTr9OP0+snf74uswoiovef2/JSy yL3U5MHf85zB3HGWrsnk88vm832ftYGiurvW6MHc7dbo8tvs9uz6/d3w+N3v+MLY 5sjg84aw0HOYsXSbtXact9fq9VB6nG+Yt4qz1M7k8tTo9FR/nmyVsm2UrO/6/meP rfD8/1aAn+/7/3abs5G30YOku9Tn8snj84esycbf74iqwMPd7LzW5s7n85zB3dnt 9ev4/Y+319Ht/p3C3uz6/vz//3mbsv///wgIqscAAAB5dFJOU/////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// /////////////////wClVIrsAAAA0ElEQVR42mKoAAEeIX0hHjCLAUTIssoxyrHK Qvni8o7x/llhhQHy4kC+mDK3t7pJTnSUjU86t7IYAxOXqGQZBEiKcjExSPGWgAED EOTzSjFUCCb62lv7FViZ5bm5CgLNU3Rgk1CNSTIO51cyUgSZbyEinKATEhrLyGkL ts+QWSbC0yswk08gG8y3Y5YxzXDSTeUTMAfz00SEVSyLtZ0ZOT2AfA52PTaJSA3N oiB+JXd2DgZpltLS0tzkUi01IM0izaBQDgQpwS4GcSCGAkCAAQDEsz0TMIua6gAA AABJRU5ErkJggg== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline Content-Type: image/png Content-Location: http://habrahabr.ru/i/join_button_bg.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAEAAAAaCAIAAAD5ZqGGAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAA AAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5U Y3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6 eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8w Mi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRw Oi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpE ZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRv YmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20v eGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRv YmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9Inht cC5paWQ6MTY1REIxMzMyQzVCMTFFMDlBQzJEQ0I1MDVDM0RCNDEiIHhtcE1NOkRv Y3VtZW50SUQ9InhtcC5kaWQ6MTY1REIxMzQyQzVCMTFFMDlBQzJEQ0I1MDVDM0RC NDEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlp ZDoxNjVEQjEzMTJDNUIxMUUwOUFDMkRDQjUwNUMzREI0MSIgc3RSZWY6ZG9jdW1l bnRJRD0ieG1wLmRpZDoxNjVEQjEzMjJDNUIxMUUwOUFDMkRDQjUwNUMzREI0MSIv PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94 cGFja2V0IGVuZD0iciI/Pt1FlV8AAAAwSURBVHjaYnj79i0TAwMD0////8GYkZER TMPEkOVgbJgadHmQ+L9//1D0QjFAgAEAcbMp2Vt/SuEAAAAASUVORK5CYII= ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline; filename=profile.css Content-Type: text/css; name=profile.css Content-Location: http://habrahabr.ru/css/1307009785/profile.css Content-Transfer-Encoding: 8bit /* Profile header */ .profile-header { float: left; font-size: 12px; } .nick-holder { float: left; width: 100%; clear: both; } .profile-header h1 { color: #666; padding: 0; font-size: 1em; } .profile-header h1 a { font: 2.83em/135% Verdana, sans-serif; /*34px/12px*/ text-decoration: none; color: #666; } .nick-holder .avatar-link { float: left; padding-right: 15px; } .nick-holder .avatar-link img, .nick-holder .edit img, .hresume .edit img { border: 1px solid #DCDCDC; } .hresume .edit img {margin-left:10px;} .nick-holder div { float: left; } .nick-holder .twitter { font: .9em/100% Arial, sans-serif; font-weight: 400; color: #999; margin-bottom: 10px; margin-top: -10px; display: block; float: left; } /* Userinfo+microformats */ .userinfo { width: 100%; } .company .userinfo { float: left; clear:both; margin-top: 20px; } .userinfo dl { margin: 0 0 10px 0; padding:0; clear:left; font-size: 1.33em; /*16/12*/ } .userinfo dl.fn { float: left; clear: both; } .userinfo dl dt { margin: 0; padding: 0 .5em 0 0; float: left; width: 11em; color:#666; font-size: 83%; font-weight:bold; text-align: right; } .userinfo dl dd { margin: 0 0 0 11em; padding: 0 0 7px 12px; text-align: left; font-size: 83%; } /* Так выводится в профайле заголовок имя юзера */ .userinfo dl.user-name { float: none; clear: both; margin: 0 0 1em 9.85em; padding-top: 1em; } .userinfo .leader-position{ font-size:0.8em; color:#999; } .userinfo dl.user-name dt, .userinfo dl.user-name dd { display: block; float: none; width: auto; margin: 0; padding: 0; text-align: left; color: rgb(119, 119, 119); } .userinfo dl.user-name dt { font-size: 156%; font-weight: normal; } .userinfo dl.fn dd a { color: rgb(119, 119, 119); } .userinfo dl.user-name dd.twitter{ font-family: Arial, sans-serif; font-size:68%; margin:1.5em 0 1.5em -22px; padding-left:22px; color:#999; background:url(/i/bg-icon-twitter.gif) no-repeat; } .userinfo dl.user-name dd.twitter #js-twitter-status-live{ padding-top:3px; } /* // Так выводится в профайле заголовок имя юзера */ /** * Секретные заметки о пользователе */ .userinfo .note{} .userinfo .note .add_note{cursor:pointer;color: green;border-bottom:1px dashed green;} .userinfo .note .add_note.hide{display:none;} .userinfo .note .current_note.hide{display:none;} .userinfo .note .edit_note{display:none;} .userinfo .note .edit_note.show{display:block;} .userinfo .note .edit_note .description{color: #999999;font-size: 11px;margin: 2px 0 3px;overflow: hidden;} .userinfo .note .edit_note input.text{width: 32em;} .userinfo .note .edit_note input.btn{margin-right:0.2em;margin-top:0.5em;} .userinfo .note .edit_note .cancel_note{cursor:pointer;color:#6DA3BD;border-bottom:1px dashed #6DA3BD;margin-left:0.2em;} .dl_logic_wrap { margin: 0 0 20px 0; float: left; width: 100%; } .friends_list, .blogs_list, #favorite_companies_list, #working_in, #staff, .interests { width: 100%; } .friends_list ul li, .blogs_list ul li, #favorite_companies_list ul li, #working_in ul li, #staff ul li { display: inline-block; padding-left: 18px; } .interests ul li { display: inline; } .friends_list ul li a, .blogs_list ul li a, #favorite_companies_list ul li a, #working_in ul li a, #staff ul li a, .interests ul li a { margin-right: 11px; color:#666; font: normal 92.4%/1.5em arial; } .friends_list ul li a:hover, .blogs_list ul li a:hover, #favorite_companies_list ul li a:hover, #working_in ul li a:hover, #staff ul li a:hover, .interests ul li a:hover{ color:#A3A3A3 } .interests ul li a { margin: 0; } .friends_list ul li, #staff ul li { background: url(/i/bg-user2.gif) 0 50% no-repeat; } .blogs_list ul li { background: url(/i/icos/blog-small-open.png) 0 60% no-repeat; line-height: 150%; } #favorite_companies_list ul li, #working_in ul li { padding-left: 20px; background: url(/i/icos/company-small.png) 0 60% no-repeat; line-height: 150%; } .ICQ a, .Skype a { text-decoration: none; } .ICQ a img { margin: -.1em 3px 0 0; } .ICQ a > img { margin-top: -.5em; } .Skype a img { margin-right: 3px; } .Skype a > img { margin-top: -.5em; } /* Marking links to user's mutual friends and groups */ .friends_list ul li a.cross, .blogs_list ul li a.cross, #favorite_companies_list ul li a.cross, #working_in ul li a.cross, #staff ul li a.cross, .interests ul li a.cross { font-weight: bold; } .profile .banner { margin-top: 2em; } .profile . .company .userinfo { margin: 20px 0 20px 0; } /* Recommendations (user to user) */ .user-recommend-user {clear:both;} /* // Recommendations (user to user) */ /* Companies section */ .profile .live, .company .tag-cloud { background: #f0f0e7 url(/i/bg-corner-top-left.gif) no-repeat 0 0; padding: 0; } .company .tag-cloud ul { float: left; margin: 0 20px 20px; } .company .live ol { margin: 0 1.67em; } .company .live ol li { line-height: 130%; margin-bottom: .42em; /*5px*/ color: #999; } .company .live ol li a:hover { text-decoration: none; color: #fff; background: #6c6; } .company .new-feedbacks div div { padding-bottom: .84em; /*10px*/ } #stats h2 { font: normal 2.17em/110% Verdana, sans-serif; /*26/12*/ color: #999; padding-bottom: .38em; } #stats dl { margin: .83em 0; } #stats dl dt, #stats dd, #stats dl ul, #stats dl ul li { display: inline; } #stats dl dt { font: normal 1.5em/110% Verdana, sans-serif; margin-right: .3em; letter-spacing: -1px; color: #ccc; } #stats dd { line-height: 190%; color: #666; } #stats dd li { margin-right: .3em; } #stats dd a { color: #999; } .friends_list ul .empty_spaces, #staff ul .empty_spaces { margin-left:-0.7em; background:none; padding-left:0; font-size:92.4%; line-height:1.5em; } /* Шапка профайла компании */ .profile-title {margin: 0 0 20px 0;} .profile-title .favicon {float: left; clear:both; margin: .75em 23px 0 23px;} .profile-title h1 { font: 2.5em/100% Verdana,sans-serif; /*30px/12px*/ } .profile-title h1 a {color: #666; text-decoration: none;} .profile-title h1 a.admin-link {color: #ccc; font-size: 70%;text-decoration: none;} .profile-title h1 a.admin-link:hover {color: green;} /* Отзывы пользователей о компании */ .company-comments {float:left; clear:both; width:100%;} /* Resume */ .hresume h2 { font: 1.67em Arial, sans-serif; /*20/12*/ margin-top: 30px; margin-left: 7.75em; margin-bottom: 20px; letter-spacing: -1px; color: #333; float: none; clear: both; } .hresume dl dd { line-height: 100%; } #habrastat { margin-top: 40px; } .hresume .price_block { padding-top:1em; } .hresume .price_block span { color:#666633; font-size:2.8em; letter-spacing:-1px; line-height: 120%; } .hresume .price_block span.price { color:#fff; background-color:#9CC; font-size:1.1em; } .hresume .user-name { padding-top:0; } .hresume .hire_block span { color:#E3A2A0; font-family:arial,sans-serif; font-size:2.6em; letter-spacing:-1px; line-height:40px; } .hresume .hire_block input.hire_button { background-color:#E3A2A0; color:#FFF; font-size:1.1em; } .resume .vevent {margin-bottom:30px;} /* Форма выборки постов в разделе "Моё" профайла */ .filter-form ul { margin: 0 0 0 15px; padding-bottom: 10px; } .filter-form li {float: left; clear: both; margin-bottom: 5px;} .filter-form input, .filter-form label {float: left;} input.show { float: right; clear: both; margin: -10px 10px 10px 0; } /*Вакансии пользователя*/ .user-vacancies ol { list-style: decimal; margin: 0 10px 20px 40px; color: #999; } .user-vacancies {line-height: 170%;} /* Блок с выводом Избранного, постов и комментов юзера. Отступы для топиков и комментов */ .comments .items { float: left; clear: both; width: 100%; margin-top: 30px; } /* Юзернеймы и компании внутри хабратопиков и комментариев */ a.user_link { padding-left:14px; color:#666; font: normal 92.4%/1.5em arial; background: url(/i/bg-user2.gif) 0 60% no-repeat; } .company_link { padding-left:14px; color:#666; font: normal 92.4%/1.5em arial; background: url(/i/bg-company.gif) 0 60% no-repeat; } .company-header .js-addFan, .company-header .js-removeFan, #js-addWorker, #js-removeWorker, span#js-companyWorkerInactive, span#js-companyFanInactive { margin-top: 15px; display: block; width: 30px; float: left; background-repeat: no-repeat; } .company-header .js-addFan.hidden, .company-header .js-removeFan.hidden, #js-addWorker.hidden, #js-removeWorker.hidden { display: none; } .company-header a.js-addFan { background-image: url('/i/company-fav.gif'); height: 19px; margin-left: 27px; } .company-header a.js-removeFan { background-image: url('/i/company-fav.gif'); background-position: left -19px; height: 19px; margin-left: 27px; } span#js-companyFanInactive { background-image: url('/i/company-fav.gif'); background-position: left -57px; height: 19px; width: 24px; } a#js-addWorker { background-image: url('/i/company-work.gif'); height: 20px; } a#js-removeWorker { background-image: url('/i/company-work.gif'); background-position: left -20px; height: 20px; } span#js-companyWorkerInactive { background-image: url('/i/company-work.gif'); background-position: left -60px; height: 20px; width: 28px; } a#js-blogInfoSwitcher, a.js-addBlogMember, a.js-removeBlogMember { height: 20px; display: block; float: left; background-repeat: no-repeat; background-color: white; } a.js-addBlogMember, a.js-removeBlogMember { padding: 5px; height:16px; display: block; background: #dbdbdb url(/i/join_button_bg.png) repeat-x left top; text-shadow: 0 1px #ededed; color: #6b6b6b; text-decoration:none; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; border-style: solid; border-width: 1px; font-weight:bold; border-color: #afafaf #a9a9a9 #a3a3a3; } a:hover.js-addBlogMember, a:hover.js-removeBlogMember{color:#5b5b5b} a.js-addBlogMember.hidden, a.js-removeBlogMember.hidden { display: none; } a#js-blogInfoSwitcher { width: 22px; background-image: url(/i/icos/blog-info.gif); } a#js-blogInfoSwitcher.regular { background-position: left top; } a#js-blogInfoSwitcher.regular:hover { background-position: left bottom; } a#js-blogInfoSwitcher.active { background-position: left bottom; } #js-invitationList { height: 300px; margin-left: 10px; margin-right: 10px; overflow: auto; overflow-x: hidden; } .bloginfo{} .bloginfo .blog-about-text-content{margin:0 1.67em 1.67em !important;overflow:hidden;} .bloginfo .blog-about-text-content .join{float:left;overflow:hidden;margin-top:6px;} .bloginfo .blog-about-text-content .stats{float:left;overflow:hidden;color:#999999;font-size:133%;margin-right:20px;} .bloginfo .blog-about-text-content .is_banned{float:left;overflow:hidden;width: 180px;color:#999999;font-size:133%;} .bloginfo .blog-about-text-content .is_banned img{float:left;margin-right:10px;} .bloginfo .blog-about-text-content .is_banned span{float:left;margin-top:2px;} #user-contacts .label { display: block; width: 270px; float: left; } #user-contacts .end { display: block; } #user-contacts .achtung-minen { clear: both; } #user-contacts .js-field-holder input { display: block; float: left; } #user-contacts .label .name { display: block; width: 100px; font-weight: bold; float: left; } #user-contacts .label .begin { display: block; width: 170px; float: right; text-align: right; } #user-contacts .end, #user-contacts .begin { font-size: 10px; vertical-align: middle; padding-top: 3px; color: gray; } #invite-list {margin-top: 15px;} #invite-list ul li {clear: both; padding-bottom: 10px;} #invite-list ul li img {float:left; width: 24px; margin-right: 5px;} #invite-list ul li a {line-height: 24px;} #invite-list ul li a.idontlikeyouanymore { color: #c00; text-decoration: none;} #invite-list .delete {color: #ddd; text-decoration: none;} #invite-list .delete:hover {color: red;} .friends_list ul li.banned a {text-decoration: line-through;} .profile-buttons { margin: 8px 0 0 20px; } .profile-buttons a { margin-left: 10px; } .notes{margin-left:35px;} .notes table{} .notes table tr{} .notes table tr th{text-align:left;padding:5px;border-bottom:2px solid #aaa;} .notes table tr td{text-align:left;padding:5px;border-bottom:1px solid #eee;} .notes table tr td.date{color:#666666;font-size:11px;} ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline; filename=category_blogs.css Content-Type: text/css; name=category_blogs.css Content-Location: http://habrahabr.ru/css/1307009785/sidebar/category_blogs.css Content-Transfer-Encoding: 8bit /** * Блок - Другие блоги из выбранной категории. */ .category_blogs{} .category_blogs h3{} ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline; filename=best_company.css Content-Type: text/css; name=best_company.css Content-Location: http://habrahabr.ru/css/1307009785/sidebar/best_company.css Content-Transfer-Encoding: 8bit /** * Блок - компания недели */ .best_company{} .best_company h3{} .best_company h3 .help-tip{margin-bottom:2px;cursor:pointer;} .best_company .company_info{margin-bottom:20px;} .best_company .company_info .name{overflow:hidden;margin-left: 20px;margin-right: 20px;} .best_company .company_info .name img{float:left;font-size:33%;height:16px;margin:8px 10px 0px 0px;line-height: 1em;width: 16px;} .best_company .company_info .name a{float:left;font-size: 208%;} .best_company .company_info p{} .best_company .company_info p a{color:#666666} .best_company .company_info p a:hover{color:#a3a3a3} .best_company .company_info .like{overflow:hidden;margin-left:20px;} .best_company .company_info #fans_count{float:left;margin-right:10px;color: #999999;font-size: 133%;margin-top:3px;} a.js-addFan-Company, a.js-removeFan-Company { height: 20px; display: block; float: left; background-repeat: no-repeat; background-color: white; padding: 5px; height:16px; display: block; background: #dbdbdb url(/i/join_button_bg.png) repeat-x left top; text-shadow: 0 1px #ededed; color: #6b6b6b; text-decoration:none; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; border-style: solid; border-width: 1px; font-weight:bold; border-color: #afafaf #a9a9a9 #a3a3a3; } a:hover.js-addFan-Company, a:hover.js-removeFan-Company{color:#5b5b5b} ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline; filename=mootools-1.2-core-yc.js Content-Type: application/x-javascript; charset=utf-8; name=mootools-1.2-core-yc.js Content-Location: http://habrahabr.ru/js/1307009785/mootools-1.2-core-yc.js Content-Transfer-Encoding: Base64 Ly9Nb29Ub29scywgPGh0dHA6Ly9tb290b29scy5uZXQ+LCBNeSBPYmplY3QgT3Jp ZW50ZWQgKEphdmFTY3JpcHQpIFRvb2xzLiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAw OCBWYWxlcmlvIFByb2lldHRpLCA8aHR0cDovL21hZDRtaWxrLm5ldD4sIE1JVCBT dHlsZSBMaWNlbnNlLgoKdmFyIE1vb1Rvb2xzPXt2ZXJzaW9uOiIxLjIuMCIsYnVp bGQ6IiJ9O3ZhciBOYXRpdmU9ZnVuY3Rpb24oSil7Sj1KfHx7fTt2YXIgRj1KLmFm dGVySW1wbGVtZW50fHxmdW5jdGlvbigpe307dmFyIEc9Si5nZW5lcmljcztHPShH IT09ZmFsc2UpO3ZhciBIPUoubGVnYWN5Owp2YXIgRT1KLmluaXRpYWxpemU7dmFy IEI9Si5wcm90ZWN0O3ZhciBBPUoubmFtZTt2YXIgQz1FfHxIO0MuY29uc3RydWN0 b3I9TmF0aXZlO0MuJGZhbWlseT17bmFtZToibmF0aXZlIn07aWYoSCYmRSl7Qy5w cm90b3R5cGU9SC5wcm90b3R5cGU7fUMucHJvdG90eXBlLmNvbnN0cnVjdG9yPUM7 CmlmKEEpe3ZhciBEPUEudG9Mb3dlckNhc2UoKTtDLnByb3RvdHlwZS4kZmFtaWx5 PXtuYW1lOkR9O05hdGl2ZS50eXBpemUoQyxEKTt9dmFyIEk9ZnVuY3Rpb24oTSxL LE4sTCl7aWYoIUJ8fEx8fCFNLnByb3RvdHlwZVtLXSl7TS5wcm90b3R5cGVbS109 Tjt9aWYoRyl7TmF0aXZlLmdlbmVyaWNpemUoTSxLLEIpOwp9Ri5jYWxsKE0sSyxO KTtyZXR1cm4gTTt9O0MuaW1wbGVtZW50PWZ1bmN0aW9uKEwsSyxOKXtpZih0eXBl b2YgTD09InN0cmluZyIpe3JldHVybiBJKHRoaXMsTCxLLE4pO31mb3IodmFyIE0g aW4gTCl7SSh0aGlzLE0sTFtNXSxLKTt9cmV0dXJuIHRoaXM7fTtDLmFsaWFzPWZ1 bmN0aW9uKE0sSyxOKXtpZih0eXBlb2YgTT09InN0cmluZyIpe009dGhpcy5wcm90 b3R5cGVbTV07CmlmKE0pe0kodGhpcyxLLE0sTik7fX1lbHNle2Zvcih2YXIgTCBp biBNKXt0aGlzLmFsaWFzKEwsTVtMXSxLKTt9fXJldHVybiB0aGlzO307cmV0dXJu IEM7fTtOYXRpdmUuaW1wbGVtZW50PWZ1bmN0aW9uKEQsQyl7Zm9yKHZhciBCPTAs QT1ELmxlbmd0aDtCPEE7QisrKXtEW0JdLmltcGxlbWVudChDKTsKfX07TmF0aXZl LmdlbmVyaWNpemU9ZnVuY3Rpb24oQixDLEEpe2lmKCghQXx8IUJbQ10pJiZ0eXBl b2YgQi5wcm90b3R5cGVbQ109PSJmdW5jdGlvbiIpe0JbQ109ZnVuY3Rpb24oKXt2 YXIgRD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO3JldHVy biBCLnByb3RvdHlwZVtDXS5hcHBseShELnNoaWZ0KCksRCk7Cn07fX07TmF0aXZl LnR5cGl6ZT1mdW5jdGlvbihBLEIpe2lmKCFBLnR5cGUpe0EudHlwZT1mdW5jdGlv bihDKXtyZXR1cm4oJHR5cGUoQyk9PT1CKTt9O319O05hdGl2ZS5hbGlhcz1mdW5j dGlvbihFLEIsQSxGKXtmb3IodmFyIEQ9MCxDPUUubGVuZ3RoO0Q8QztEKyspe0Vb RF0uYWxpYXMoQixBLEYpOwp9fTsoZnVuY3Rpb24oQil7Zm9yKHZhciBBIGluIEIp e05hdGl2ZS50eXBpemUoQltBXSxBKTt9fSkoeyJib29sZWFuIjpCb29sZWFuLCJu YXRpdmUiOk5hdGl2ZSxvYmplY3Q6T2JqZWN0fSk7KGZ1bmN0aW9uKEIpe2Zvcih2 YXIgQSBpbiBCKXtuZXcgTmF0aXZlKHtuYW1lOkEsaW5pdGlhbGl6ZTpCW0FdLHBy b3RlY3Q6dHJ1ZX0pOwp9fSkoe1N0cmluZzpTdHJpbmcsRnVuY3Rpb246RnVuY3Rp b24sTnVtYmVyOk51bWJlcixBcnJheTpBcnJheSxSZWdFeHA6UmVnRXhwLERhdGU6 RGF0ZX0pOyhmdW5jdGlvbihCLEEpe2Zvcih2YXIgQz1BLmxlbmd0aDtDLS07Qyl7 TmF0aXZlLmdlbmVyaWNpemUoQixBW0NdLHRydWUpOwp9cmV0dXJuIGFyZ3VtZW50 cy5jYWxsZWU7fSkoQXJyYXksWyJwb3AiLCJwdXNoIiwicmV2ZXJzZSIsInNoaWZ0 Iiwic29ydCIsInNwbGljZSIsInVuc2hpZnQiLCJjb25jYXQiLCJqb2luIiwic2xp Y2UiLCJ0b1N0cmluZyIsInZhbHVlT2YiLCJpbmRleE9mIiwibGFzdEluZGV4T2Yi XSkoU3RyaW5nLFsiY2hhckF0IiwiY2hhckNvZGVBdCIsImNvbmNhdCIsImluZGV4 T2YiLCJsYXN0SW5kZXhPZiIsIm1hdGNoIiwicmVwbGFjZSIsInNlYXJjaCIsInNs aWNlIiwic3BsaXQiLCJzdWJzdHIiLCJzdWJzdHJpbmciLCJ0b0xvd2VyQ2FzZSIs InRvVXBwZXJDYXNlIiwidmFsdWVPZiJdKTsKZnVuY3Rpb24gJGNoayhBKXtyZXR1 cm4gISEoQXx8QT09PTApO31mdW5jdGlvbiAkY2xlYXIoQSl7Y2xlYXJUaW1lb3V0 KEEpO2NsZWFySW50ZXJ2YWwoQSk7cmV0dXJuIG51bGw7fWZ1bmN0aW9uICRkZWZp bmVkKEEpe3JldHVybihBIT11bmRlZmluZWQpO31mdW5jdGlvbiAkZW1wdHkoKXt9 ZnVuY3Rpb24gJGFyZ3VtZW50cyhBKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4g YXJndW1lbnRzW0FdOwp9O31mdW5jdGlvbiAkbGFtYmRhKEEpe3JldHVybih0eXBl b2YgQT09ImZ1bmN0aW9uIik/QTpmdW5jdGlvbigpe3JldHVybiBBO307fWZ1bmN0 aW9uICRleHRlbmQoQyxBKXtmb3IodmFyIEIgaW4gKEF8fHt9KSl7Q1tCXT1BW0Jd O31yZXR1cm4gQzt9ZnVuY3Rpb24gJHVubGluayhDKXt2YXIgQjsKc3dpdGNoKCR0 eXBlKEMpKXtjYXNlIm9iamVjdCI6Qj17fTtmb3IodmFyIEUgaW4gQyl7QltFXT0k dW5saW5rKENbRV0pO31icmVhaztjYXNlImhhc2giOkI9JHVubGluayhDLmdldENs ZWFuKCkpO2JyZWFrO2Nhc2UiYXJyYXkiOkI9W107Zm9yKHZhciBEPTAsQT1DLmxl bmd0aDsKRDxBO0QrKyl7QltEXT0kdW5saW5rKENbRF0pO31icmVhaztkZWZhdWx0 OnJldHVybiBDO31yZXR1cm4gQjt9ZnVuY3Rpb24gJG1lcmdlKCl7dmFyIEU9e307 Zm9yKHZhciBEPTAsQT1hcmd1bWVudHMubGVuZ3RoO0Q8QTtEKyspe3ZhciBCPWFy Z3VtZW50c1tEXTtpZigkdHlwZShCKSE9Im9iamVjdCIpe2NvbnRpbnVlOwp9Zm9y KHZhciBDIGluIEIpe3ZhciBHPUJbQ10sRj1FW0NdO0VbQ109KEYmJiR0eXBlKEcp PT0ib2JqZWN0IiYmJHR5cGUoRik9PSJvYmplY3QiKT8kbWVyZ2UoRixHKTokdW5s aW5rKEcpO319cmV0dXJuIEU7fWZ1bmN0aW9uICRwaWNrKCl7Zm9yKHZhciBCPTAs QT1hcmd1bWVudHMubGVuZ3RoOwpCPEE7QisrKXtpZihhcmd1bWVudHNbQl0hPXVu ZGVmaW5lZCl7cmV0dXJuIGFyZ3VtZW50c1tCXTt9fXJldHVybiBudWxsO31mdW5j dGlvbiAkcmFuZG9tKEIsQSl7cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20o KSooQS1CKzEpK0IpO31mdW5jdGlvbiAkc3BsYXQoQil7dmFyIEE9JHR5cGUoQik7 CnJldHVybihBKT8oKEEhPSJhcnJheSImJkEhPSJhcmd1bWVudHMiKT9bQl06Qik6 W107fXZhciAkdGltZT1EYXRlLm5vd3x8ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IERh dGUoKS5nZXRUaW1lKCk7fTtmdW5jdGlvbiAkdHJ5KCl7Zm9yKHZhciBCPTAsQT1h cmd1bWVudHMubGVuZ3RoOwpCPEE7QisrKXt0cnl7cmV0dXJuIGFyZ3VtZW50c1tC XSgpO31jYXRjaChDKXt9fXJldHVybiBudWxsO31mdW5jdGlvbiAkdHlwZShBKXtp ZihBPT11bmRlZmluZWQpe3JldHVybiBmYWxzZTt9aWYoQS4kZmFtaWx5KXtyZXR1 cm4oQS4kZmFtaWx5Lm5hbWU9PSJudW1iZXIiJiYhaXNGaW5pdGUoQSkpP2ZhbHNl OkEuJGZhbWlseS5uYW1lOwp9aWYoQS5ub2RlTmFtZSl7c3dpdGNoKEEubm9kZVR5 cGUpe2Nhc2UgMTpyZXR1cm4iZWxlbWVudCI7Y2FzZSAzOnJldHVybigvXFMvKS50 ZXN0KEEubm9kZVZhbHVlKT8idGV4dG5vZGUiOiJ3aGl0ZXNwYWNlIjt9fWVsc2V7 aWYodHlwZW9mIEEubGVuZ3RoPT0ibnVtYmVyIil7aWYoQS5jYWxsZWUpe3JldHVy biJhcmd1bWVudHMiOwp9ZWxzZXtpZihBLml0ZW0pe3JldHVybiJjb2xsZWN0aW9u Ijt9fX19cmV0dXJuIHR5cGVvZiBBO312YXIgSGFzaD1uZXcgTmF0aXZlKHtuYW1l OiJIYXNoIixpbml0aWFsaXplOmZ1bmN0aW9uKEEpe2lmKCR0eXBlKEEpPT0iaGFz aCIpe0E9JHVubGluayhBLmdldENsZWFuKCkpOwp9Zm9yKHZhciBCIGluIEEpe3Ro aXNbQl09QVtCXTt9cmV0dXJuIHRoaXM7fX0pO0hhc2guaW1wbGVtZW50KHtnZXRM ZW5ndGg6ZnVuY3Rpb24oKXt2YXIgQj0wO2Zvcih2YXIgQSBpbiB0aGlzKXtpZih0 aGlzLmhhc093blByb3BlcnR5KEEpKXtCKys7fX1yZXR1cm4gQjsKfSxmb3JFYWNo OmZ1bmN0aW9uKEIsQyl7Zm9yKHZhciBBIGluIHRoaXMpe2lmKHRoaXMuaGFzT3du UHJvcGVydHkoQSkpe0IuY2FsbChDLHRoaXNbQV0sQSx0aGlzKTt9fX0sZ2V0Q2xl YW46ZnVuY3Rpb24oKXt2YXIgQj17fTtmb3IodmFyIEEgaW4gdGhpcyl7aWYodGhp cy5oYXNPd25Qcm9wZXJ0eShBKSl7QltBXT10aGlzW0FdOwp9fXJldHVybiBCO319 KTtIYXNoLmFsaWFzKCJmb3JFYWNoIiwiZWFjaCIpO2Z1bmN0aW9uICRIKEEpe3Jl dHVybiBuZXcgSGFzaChBKTt9QXJyYXkuaW1wbGVtZW50KHtmb3JFYWNoOmZ1bmN0 aW9uKEMsRCl7Zm9yKHZhciBCPTAsQT10aGlzLmxlbmd0aDtCPEE7QisrKXtDLmNh bGwoRCx0aGlzW0JdLEIsdGhpcyk7Cn19fSk7QXJyYXkuYWxpYXMoImZvckVhY2gi LCJlYWNoIik7ZnVuY3Rpb24gJEEoQyl7aWYoQy5pdGVtKXt2YXIgRD1bXTtmb3Io dmFyIEI9MCxBPUMubGVuZ3RoO0I8QTtCKyspe0RbQl09Q1tCXTt9cmV0dXJuIEQ7 fXJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChDKTsKfWZ1bmN0aW9u ICRlYWNoKEMsQixEKXt2YXIgQT0kdHlwZShDKTsoKEE9PSJhcmd1bWVudHMifHxB PT0iY29sbGVjdGlvbiJ8fEE9PSJhcnJheSIpP0FycmF5Okhhc2gpLmVhY2goQyxC LEQpO312YXIgQnJvd3Nlcj1uZXcgSGFzaCh7RW5naW5lOntuYW1lOiJ1bmtub3du Iix2ZXJzaW9uOiIifSxQbGF0Zm9ybTp7bmFtZToobmF2aWdhdG9yLnBsYXRmb3Jt Lm1hdGNoKC9tYWN8d2lufGxpbnV4L2kpfHxbIm90aGVyIl0pWzBdLnRvTG93ZXJD YXNlKCl9LEZlYXR1cmVzOnt4cGF0aDohIShkb2N1bWVudC5ldmFsdWF0ZSksYWly OiEhKHdpbmRvdy5ydW50aW1lKX0sUGx1Z2luczp7fX0pOwppZih3aW5kb3cub3Bl cmEpe0Jyb3dzZXIuRW5naW5lPXtuYW1lOiJwcmVzdG8iLHZlcnNpb246KGRvY3Vt ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUpPzk1MDo5MjV9O31lbHNle2lmKHdp bmRvdy5BY3RpdmVYT2JqZWN0KXtCcm93c2VyLkVuZ2luZT17bmFtZToidHJpZGVu dCIsdmVyc2lvbjood2luZG93LlhNTEh0dHBSZXF1ZXN0KT81OjR9Owp9ZWxzZXtp ZighbmF2aWdhdG9yLnRhaW50RW5hYmxlZCl7QnJvd3Nlci5FbmdpbmU9e25hbWU6 IndlYmtpdCIsdmVyc2lvbjooQnJvd3Nlci5GZWF0dXJlcy54cGF0aCk/NDIwOjQx OX07fWVsc2V7aWYoZG9jdW1lbnQuZ2V0Qm94T2JqZWN0Rm9yIT1udWxsKXtCcm93 c2VyLkVuZ2luZT17bmFtZToiZ2Vja28iLHZlcnNpb246KGRvY3VtZW50LmdldEVs ZW1lbnRzQnlDbGFzc05hbWUpPzE5OjE4fTsKfX19fUJyb3dzZXIuRW5naW5lW0Jy b3dzZXIuRW5naW5lLm5hbWVdPUJyb3dzZXIuRW5naW5lW0Jyb3dzZXIuRW5naW5l Lm5hbWUrQnJvd3Nlci5FbmdpbmUudmVyc2lvbl09dHJ1ZTtpZih3aW5kb3cub3Jp ZW50YXRpb24hPXVuZGVmaW5lZCl7QnJvd3Nlci5QbGF0Zm9ybS5uYW1lPSJpcG9k IjsKfUJyb3dzZXIuUGxhdGZvcm1bQnJvd3Nlci5QbGF0Zm9ybS5uYW1lXT10cnVl O0Jyb3dzZXIuUmVxdWVzdD1mdW5jdGlvbigpe3JldHVybiAkdHJ5KGZ1bmN0aW9u KCl7cmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdCgpO30sZnVuY3Rpb24oKXtyZXR1 cm4gbmV3IEFjdGl2ZVhPYmplY3QoIk1TWE1MMi5YTUxIVFRQIik7Cn0pO307QnJv d3Nlci5GZWF0dXJlcy54aHI9ISEoQnJvd3Nlci5SZXF1ZXN0KCkpO0Jyb3dzZXIu UGx1Z2lucy5GbGFzaD0oZnVuY3Rpb24oKXt2YXIgQT0oJHRyeShmdW5jdGlvbigp e3JldHVybiBuYXZpZ2F0b3IucGx1Z2luc1siU2hvY2t3YXZlIEZsYXNoIl0uZGVz Y3JpcHRpb247Cn0sZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3Qo IlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoIikuR2V0VmFyaWFibGUoIiR2 ZXJzaW9uIik7fSl8fCIwIHIwIikubWF0Y2goL1xkKy9nKTtyZXR1cm57dmVyc2lv bjpwYXJzZUludChBWzBdfHwwKyIuIitBWzFdfHwwKSxidWlsZDpwYXJzZUludChB WzJdfHwwKX07Cn0pKCk7ZnVuY3Rpb24gJGV4ZWMoQil7aWYoIUIpe3JldHVybiBC O31pZih3aW5kb3cuZXhlY1NjcmlwdCl7d2luZG93LmV4ZWNTY3JpcHQoQik7fWVs c2V7dmFyIEE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7QS5zZXRB dHRyaWJ1dGUoInR5cGUiLCJ0ZXh0L2phdmFzY3JpcHQiKTsKQS50ZXh0PUI7ZG9j dW1lbnQuaGVhZC5hcHBlbmRDaGlsZChBKTtkb2N1bWVudC5oZWFkLnJlbW92ZUNo aWxkKEEpO31yZXR1cm4gQjt9TmF0aXZlLlVJRD0xO3ZhciAkdWlkPShCcm93c2Vy LkVuZ2luZS50cmlkZW50KT9mdW5jdGlvbihBKXtyZXR1cm4oQS51aWR8fChBLnVp ZD1bTmF0aXZlLlVJRCsrXSkpWzBdOwp9OmZ1bmN0aW9uKEEpe3JldHVybiBBLnVp ZHx8KEEudWlkPU5hdGl2ZS5VSUQrKyk7fTt2YXIgV2luZG93PW5ldyBOYXRpdmUo e25hbWU6IldpbmRvdyIsbGVnYWN5OihCcm93c2VyLkVuZ2luZS50cmlkZW50KT9u dWxsOndpbmRvdy5XaW5kb3csaW5pdGlhbGl6ZTpmdW5jdGlvbihBKXskdWlkKEEp OwppZighQS5FbGVtZW50KXtBLkVsZW1lbnQ9JGVtcHR5O2lmKEJyb3dzZXIuRW5n aW5lLndlYmtpdCl7QS5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTt9 QS5FbGVtZW50LnByb3RvdHlwZT0oQnJvd3Nlci5FbmdpbmUud2Via2l0KT93aW5k b3dbIltbRE9NRWxlbWVudC5wcm90b3R5cGVdXSJdOnt9Owp9cmV0dXJuICRleHRl bmQoQSxXaW5kb3cuUHJvdG90eXBlKTt9LGFmdGVySW1wbGVtZW50OmZ1bmN0aW9u KEIsQSl7d2luZG93W0JdPVdpbmRvdy5Qcm90b3R5cGVbQl09QTt9fSk7V2luZG93 LlByb3RvdHlwZT17JGZhbWlseTp7bmFtZToid2luZG93In19O25ldyBXaW5kb3co d2luZG93KTsKdmFyIERvY3VtZW50PW5ldyBOYXRpdmUoe25hbWU6IkRvY3VtZW50 IixsZWdhY3k6KEJyb3dzZXIuRW5naW5lLnRyaWRlbnQpP251bGw6d2luZG93LkRv Y3VtZW50LGluaXRpYWxpemU6ZnVuY3Rpb24oQSl7JHVpZChBKTtBLmhlYWQ9QS5n ZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdOwpBLmh0bWw9QS5nZXRFbGVt ZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdO0Eud2luZG93PUEuZGVmYXVsdFZpZXd8 fEEucGFyZW50V2luZG93O2lmKEJyb3dzZXIuRW5naW5lLnRyaWRlbnQ0KXskdHJ5 KGZ1bmN0aW9uKCl7QS5leGVjQ29tbWFuZCgiQmFja2dyb3VuZEltYWdlQ2FjaGUi LGZhbHNlLHRydWUpOwp9KTt9cmV0dXJuICRleHRlbmQoQSxEb2N1bWVudC5Qcm90 b3R5cGUpO30sYWZ0ZXJJbXBsZW1lbnQ6ZnVuY3Rpb24oQixBKXtkb2N1bWVudFtC XT1Eb2N1bWVudC5Qcm90b3R5cGVbQl09QTt9fSk7RG9jdW1lbnQuUHJvdG90eXBl PXskZmFtaWx5OntuYW1lOiJkb2N1bWVudCJ9fTsKbmV3IERvY3VtZW50KGRvY3Vt ZW50KTtBcnJheS5pbXBsZW1lbnQoe2V2ZXJ5OmZ1bmN0aW9uKEMsRCl7Zm9yKHZh ciBCPTAsQT10aGlzLmxlbmd0aDtCPEE7QisrKXtpZighQy5jYWxsKEQsdGhpc1tC XSxCLHRoaXMpKXtyZXR1cm4gZmFsc2U7fX1yZXR1cm4gdHJ1ZTsKfSxmaWx0ZXI6 ZnVuY3Rpb24oRCxFKXt2YXIgQz1bXTtmb3IodmFyIEI9MCxBPXRoaXMubGVuZ3Ro O0I8QTtCKyspe2lmKEQuY2FsbChFLHRoaXNbQl0sQix0aGlzKSl7Qy5wdXNoKHRo aXNbQl0pO319cmV0dXJuIEM7fSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiB0aGlz LmZpbHRlcigkZGVmaW5lZCk7Cn0saW5kZXhPZjpmdW5jdGlvbihDLEQpe3ZhciBB PXRoaXMubGVuZ3RoO2Zvcih2YXIgQj0oRDwwKT9NYXRoLm1heCgwLEErRCk6RHx8 MDtCPEE7QisrKXtpZih0aGlzW0JdPT09Qyl7cmV0dXJuIEI7fX1yZXR1cm4gLTE7 fSxtYXA6ZnVuY3Rpb24oRCxFKXt2YXIgQz1bXTsKZm9yKHZhciBCPTAsQT10aGlz Lmxlbmd0aDtCPEE7QisrKXtDW0JdPUQuY2FsbChFLHRoaXNbQl0sQix0aGlzKTt9 cmV0dXJuIEM7fSxzb21lOmZ1bmN0aW9uKEMsRCl7Zm9yKHZhciBCPTAsQT10aGlz Lmxlbmd0aDtCPEE7QisrKXtpZihDLmNhbGwoRCx0aGlzW0JdLEIsdGhpcykpe3Jl dHVybiB0cnVlOwp9fXJldHVybiBmYWxzZTt9LGFzc29jaWF0ZTpmdW5jdGlvbihD KXt2YXIgRD17fSxCPU1hdGgubWluKHRoaXMubGVuZ3RoLEMubGVuZ3RoKTtmb3Io dmFyIEE9MDtBPEI7QSsrKXtEW0NbQV1dPXRoaXNbQV07fXJldHVybiBEO30sbGlu azpmdW5jdGlvbihDKXt2YXIgQT17fTsKZm9yKHZhciBFPTAsQj10aGlzLmxlbmd0 aDtFPEI7RSsrKXtmb3IodmFyIEQgaW4gQyl7aWYoQ1tEXSh0aGlzW0VdKSl7QVtE XT10aGlzW0VdO2RlbGV0ZSBDW0RdO2JyZWFrO319fXJldHVybiBBO30sY29udGFp bnM6ZnVuY3Rpb24oQSxCKXtyZXR1cm4gdGhpcy5pbmRleE9mKEEsQikhPS0xOwp9 LGV4dGVuZDpmdW5jdGlvbihDKXtmb3IodmFyIEI9MCxBPUMubGVuZ3RoO0I8QTtC Kyspe3RoaXMucHVzaChDW0JdKTt9cmV0dXJuIHRoaXM7fSxnZXRMYXN0OmZ1bmN0 aW9uKCl7cmV0dXJuKHRoaXMubGVuZ3RoKT90aGlzW3RoaXMubGVuZ3RoLTFdOm51 bGw7fSxnZXRSYW5kb206ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5sZW5ndGgpP3Ro aXNbJHJhbmRvbSgwLHRoaXMubGVuZ3RoLTEpXTpudWxsOwp9LGluY2x1ZGU6ZnVu Y3Rpb24oQSl7aWYoIXRoaXMuY29udGFpbnMoQSkpe3RoaXMucHVzaChBKTt9cmV0 dXJuIHRoaXM7fSxjb21iaW5lOmZ1bmN0aW9uKEMpe2Zvcih2YXIgQj0wLEE9Qy5s ZW5ndGg7QjxBO0IrKyl7dGhpcy5pbmNsdWRlKENbQl0pO31yZXR1cm4gdGhpczsK fSxlcmFzZTpmdW5jdGlvbihCKXtmb3IodmFyIEE9dGhpcy5sZW5ndGg7QS0tO0Ep e2lmKHRoaXNbQV09PT1CKXt0aGlzLnNwbGljZShBLDEpO319cmV0dXJuIHRoaXM7 fSxlbXB0eTpmdW5jdGlvbigpe3RoaXMubGVuZ3RoPTA7cmV0dXJuIHRoaXM7fSxm bGF0dGVuOmZ1bmN0aW9uKCl7dmFyIEQ9W107CmZvcih2YXIgQj0wLEE9dGhpcy5s ZW5ndGg7QjxBO0IrKyl7dmFyIEM9JHR5cGUodGhpc1tCXSk7aWYoIUMpe2NvbnRp bnVlO31EPUQuY29uY2F0KChDPT0iYXJyYXkifHxDPT0iY29sbGVjdGlvbiJ8fEM9 PSJhcmd1bWVudHMiKT9BcnJheS5mbGF0dGVuKHRoaXNbQl0pOnRoaXNbQl0pOwp9 cmV0dXJuIEQ7fSxoZXhUb1JnYjpmdW5jdGlvbihCKXtpZih0aGlzLmxlbmd0aCE9 Myl7cmV0dXJuIG51bGw7fXZhciBBPXRoaXMubWFwKGZ1bmN0aW9uKEMpe2lmKEMu bGVuZ3RoPT0xKXtDKz1DO31yZXR1cm4gQy50b0ludCgxNik7fSk7cmV0dXJuKEIp P0E6InJnYigiK0ErIikiOwp9LHJnYlRvSGV4OmZ1bmN0aW9uKEQpe2lmKHRoaXMu bGVuZ3RoPDMpe3JldHVybiBudWxsO31pZih0aGlzLmxlbmd0aD09NCYmdGhpc1sz XT09MCYmIUQpe3JldHVybiJ0cmFuc3BhcmVudCI7fXZhciBCPVtdO2Zvcih2YXIg QT0wO0E8MztBKyspe3ZhciBDPSh0aGlzW0FdLTApLnRvU3RyaW5nKDE2KTsKQi5w dXNoKChDLmxlbmd0aD09MSk/IjAiK0M6Qyk7fXJldHVybihEKT9COiIjIitCLmpv aW4oIiIpO319KTtGdW5jdGlvbi5pbXBsZW1lbnQoe2V4dGVuZDpmdW5jdGlvbihB KXtmb3IodmFyIEIgaW4gQSl7dGhpc1tCXT1BW0JdO31yZXR1cm4gdGhpczt9LGNy ZWF0ZTpmdW5jdGlvbihCKXt2YXIgQT10aGlzOwpCPUJ8fHt9O3JldHVybiBmdW5j dGlvbihEKXt2YXIgQz1CLmFyZ3VtZW50cztDPShDIT11bmRlZmluZWQpPyRzcGxh dChDKTpBcnJheS5zbGljZShhcmd1bWVudHMsKEIuZXZlbnQpPzE6MCk7aWYoQi5l dmVudCl7Qz1bRHx8d2luZG93LmV2ZW50XS5leHRlbmQoQyk7Cn12YXIgRT1mdW5j dGlvbigpe3JldHVybiBBLmFwcGx5KEIuYmluZHx8bnVsbCxDKTt9O2lmKEIuZGVs YXkpe3JldHVybiBzZXRUaW1lb3V0KEUsQi5kZWxheSk7fWlmKEIucGVyaW9kaWNh bCl7cmV0dXJuIHNldEludGVydmFsKEUsQi5wZXJpb2RpY2FsKTt9aWYoQi5hdHRl bXB0KXtyZXR1cm4gJHRyeShFKTsKfXJldHVybiBFKCk7fTt9LHBhc3M6ZnVuY3Rp b24oQSxCKXtyZXR1cm4gdGhpcy5jcmVhdGUoe2FyZ3VtZW50czpBLGJpbmQ6Qn0p O30sYXR0ZW1wdDpmdW5jdGlvbihBLEIpe3JldHVybiB0aGlzLmNyZWF0ZSh7YXJn dW1lbnRzOkEsYmluZDpCLGF0dGVtcHQ6dHJ1ZX0pKCk7Cn0sYmluZDpmdW5jdGlv bihCLEEpe3JldHVybiB0aGlzLmNyZWF0ZSh7YmluZDpCLGFyZ3VtZW50czpBfSk7 fSxiaW5kV2l0aEV2ZW50OmZ1bmN0aW9uKEIsQSl7cmV0dXJuIHRoaXMuY3JlYXRl KHtiaW5kOkIsZXZlbnQ6dHJ1ZSxhcmd1bWVudHM6QX0pO30sZGVsYXk6ZnVuY3Rp b24oQixDLEEpe3JldHVybiB0aGlzLmNyZWF0ZSh7ZGVsYXk6QixiaW5kOkMsYXJn dW1lbnRzOkF9KSgpOwp9LHBlcmlvZGljYWw6ZnVuY3Rpb24oQSxDLEIpe3JldHVy biB0aGlzLmNyZWF0ZSh7cGVyaW9kaWNhbDpBLGJpbmQ6Qyxhcmd1bWVudHM6Qn0p KCk7fSxydW46ZnVuY3Rpb24oQSxCKXtyZXR1cm4gdGhpcy5hcHBseShCLCRzcGxh dChBKSk7fX0pO051bWJlci5pbXBsZW1lbnQoe2xpbWl0OmZ1bmN0aW9uKEIsQSl7 cmV0dXJuIE1hdGgubWluKEEsTWF0aC5tYXgoQix0aGlzKSk7Cn0scm91bmQ6ZnVu Y3Rpb24oQSl7QT1NYXRoLnBvdygxMCxBfHwwKTtyZXR1cm4gTWF0aC5yb3VuZCh0 aGlzKkEpL0E7fSx0aW1lczpmdW5jdGlvbihCLEMpe2Zvcih2YXIgQT0wO0E8dGhp cztBKyspe0IuY2FsbChDLEEsdGhpcyk7fX0sdG9GbG9hdDpmdW5jdGlvbigpe3Jl dHVybiBwYXJzZUZsb2F0KHRoaXMpOwp9LHRvSW50OmZ1bmN0aW9uKEEpe3JldHVy biBwYXJzZUludCh0aGlzLEF8fDEwKTt9fSk7TnVtYmVyLmFsaWFzKCJ0aW1lcyIs ImVhY2giKTsoZnVuY3Rpb24oQil7dmFyIEE9e307Qi5lYWNoKGZ1bmN0aW9uKEMp e2lmKCFOdW1iZXJbQ10pe0FbQ109ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aFtDXS5h cHBseShudWxsLFt0aGlzXS5jb25jYXQoJEEoYXJndW1lbnRzKSkpOwp9O319KTtO dW1iZXIuaW1wbGVtZW50KEEpO30pKFsiYWJzIiwiYWNvcyIsImFzaW4iLCJhdGFu IiwiYXRhbjIiLCJjZWlsIiwiY29zIiwiZXhwIiwiZmxvb3IiLCJsb2ciLCJtYXgi LCJtaW4iLCJwb3ciLCJzaW4iLCJzcXJ0IiwidGFuIl0pO1N0cmluZy5pbXBsZW1l bnQoe3Rlc3Q6ZnVuY3Rpb24oQSxCKXtyZXR1cm4oKHR5cGVvZiBBPT0ic3RyaW5n Iik/bmV3IFJlZ0V4cChBLEIpOkEpLnRlc3QodGhpcyk7Cn0sY29udGFpbnM6ZnVu Y3Rpb24oQSxCKXtyZXR1cm4oQik/KEIrdGhpcytCKS5pbmRleE9mKEIrQStCKT4t MTp0aGlzLmluZGV4T2YoQSk+LTE7fSx0cmltOmZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMucmVwbGFjZSgvXlxzK3xccyskL2csIiIpO30sY2xlYW46ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5yZXBsYWNlKC9ccysvZywiICIpLnRyaW0oKTsKfSxjYW1lbENh c2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXBsYWNlKC8tXEQvZyxmdW5jdGlv bihBKXtyZXR1cm4gQS5jaGFyQXQoMSkudG9VcHBlckNhc2UoKTt9KTt9LGh5cGhl bmF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlcGxhY2UoL1tBLVpdL2csZnVu Y3Rpb24oQSl7cmV0dXJuKCItIitBLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpKTsK fSk7fSxjYXBpdGFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVwbGFjZSgv XGJbYS16XS9nLGZ1bmN0aW9uKEEpe3JldHVybiBBLnRvVXBwZXJDYXNlKCk7fSk7 fSxlc2NhcGVSZWdFeHA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXBsYWNlKC8o Wy0uKis/XiR7fSgpfFtcXVwvXFxdKS9nLCJcXCQxIik7Cn0sdG9JbnQ6ZnVuY3Rp b24oQSl7cmV0dXJuIHBhcnNlSW50KHRoaXMsQXx8MTApO30sdG9GbG9hdDpmdW5j dGlvbigpe3JldHVybiBwYXJzZUZsb2F0KHRoaXMpO30saGV4VG9SZ2I6ZnVuY3Rp b24oQil7dmFyIEE9dGhpcy5tYXRjaCgvXiM/KFx3ezEsMn0pKFx3ezEsMn0pKFx3 ezEsMn0pJC8pOwpyZXR1cm4oQSk/QS5zbGljZSgxKS5oZXhUb1JnYihCKTpudWxs O30scmdiVG9IZXg6ZnVuY3Rpb24oQil7dmFyIEE9dGhpcy5tYXRjaCgvXGR7MSwz fS9nKTtyZXR1cm4oQSk/QS5yZ2JUb0hleChCKTpudWxsO30sc3RyaXBTY3JpcHRz OmZ1bmN0aW9uKEIpe3ZhciBBPSIiOwp2YXIgQz10aGlzLnJlcGxhY2UoLzxzY3Jp cHRbXj5dKj4oW1xzXFNdKj8pPFwvc2NyaXB0Pi9naSxmdW5jdGlvbigpe0ErPWFy Z3VtZW50c1sxXSsiXG4iO3JldHVybiIiO30pO2lmKEI9PT10cnVlKXskZXhlYyhB KTt9ZWxzZXtpZigkdHlwZShCKT09ImZ1bmN0aW9uIil7QihBLEMpOwp9fXJldHVy biBDO30sc3Vic3RpdHV0ZTpmdW5jdGlvbihBLEIpe3JldHVybiB0aGlzLnJlcGxh Y2UoQnx8KC9cXD9ceyhbXn1dKylcfS9nKSxmdW5jdGlvbihELEMpe2lmKEQuY2hh ckF0KDApPT0iXFwiKXtyZXR1cm4gRC5zbGljZSgxKTt9cmV0dXJuKEFbQ10hPXVu ZGVmaW5lZCk/QVtDXToiIjsKfSk7fX0pO0hhc2guaW1wbGVtZW50KHtoYXM6T2Jq ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxrZXlPZjpmdW5jdGlvbihCKXtm b3IodmFyIEEgaW4gdGhpcyl7aWYodGhpcy5oYXNPd25Qcm9wZXJ0eShBKSYmdGhp c1tBXT09PUIpe3JldHVybiBBO319cmV0dXJuIG51bGw7Cn0saGFzVmFsdWU6ZnVu Y3Rpb24oQSl7cmV0dXJuKEhhc2gua2V5T2YodGhpcyxBKSE9PW51bGwpO30sZXh0 ZW5kOmZ1bmN0aW9uKEEpe0hhc2guZWFjaChBLGZ1bmN0aW9uKEMsQil7SGFzaC5z ZXQodGhpcyxCLEMpO30sdGhpcyk7cmV0dXJuIHRoaXM7fSxjb21iaW5lOmZ1bmN0 aW9uKEEpe0hhc2guZWFjaChBLGZ1bmN0aW9uKEMsQil7SGFzaC5pbmNsdWRlKHRo aXMsQixDKTsKfSx0aGlzKTtyZXR1cm4gdGhpczt9LGVyYXNlOmZ1bmN0aW9uKEEp e2lmKHRoaXMuaGFzT3duUHJvcGVydHkoQSkpe2RlbGV0ZSB0aGlzW0FdO31yZXR1 cm4gdGhpczt9LGdldDpmdW5jdGlvbihBKXtyZXR1cm4odGhpcy5oYXNPd25Qcm9w ZXJ0eShBKSk/dGhpc1tBXTpudWxsOwp9LHNldDpmdW5jdGlvbihBLEIpe2lmKCF0 aGlzW0FdfHx0aGlzLmhhc093blByb3BlcnR5KEEpKXt0aGlzW0FdPUI7fXJldHVy biB0aGlzO30sZW1wdHk6ZnVuY3Rpb24oKXtIYXNoLmVhY2godGhpcyxmdW5jdGlv bihCLEEpe2RlbGV0ZSB0aGlzW0FdO30sdGhpcyk7CnJldHVybiB0aGlzO30saW5j bHVkZTpmdW5jdGlvbihCLEMpe3ZhciBBPXRoaXNbQl07aWYoQT09dW5kZWZpbmVk KXt0aGlzW0JdPUM7fXJldHVybiB0aGlzO30sbWFwOmZ1bmN0aW9uKEIsQyl7dmFy IEE9bmV3IEhhc2g7SGFzaC5lYWNoKHRoaXMsZnVuY3Rpb24oRSxEKXtBLnNldChE LEIuY2FsbChDLEUsRCx0aGlzKSk7Cn0sdGhpcyk7cmV0dXJuIEE7fSxmaWx0ZXI6 ZnVuY3Rpb24oQixDKXt2YXIgQT1uZXcgSGFzaDtIYXNoLmVhY2godGhpcyxmdW5j dGlvbihFLEQpe2lmKEIuY2FsbChDLEUsRCx0aGlzKSl7QS5zZXQoRCxFKTt9fSx0 aGlzKTtyZXR1cm4gQTt9LGV2ZXJ5OmZ1bmN0aW9uKEIsQyl7Zm9yKHZhciBBIGlu IHRoaXMpe2lmKHRoaXMuaGFzT3duUHJvcGVydHkoQSkmJiFCLmNhbGwoQyx0aGlz W0FdLEEpKXtyZXR1cm4gZmFsc2U7Cn19cmV0dXJuIHRydWU7fSxzb21lOmZ1bmN0 aW9uKEIsQyl7Zm9yKHZhciBBIGluIHRoaXMpe2lmKHRoaXMuaGFzT3duUHJvcGVy dHkoQSkmJkIuY2FsbChDLHRoaXNbQV0sQSkpe3JldHVybiB0cnVlO319cmV0dXJu IGZhbHNlO30sZ2V0S2V5czpmdW5jdGlvbigpe3ZhciBBPVtdOwpIYXNoLmVhY2go dGhpcyxmdW5jdGlvbihDLEIpe0EucHVzaChCKTt9KTtyZXR1cm4gQTt9LGdldFZh bHVlczpmdW5jdGlvbigpe3ZhciBBPVtdO0hhc2guZWFjaCh0aGlzLGZ1bmN0aW9u KEIpe0EucHVzaChCKTt9KTtyZXR1cm4gQTt9LHRvUXVlcnlTdHJpbmc6ZnVuY3Rp b24oQSl7dmFyIEI9W107Ckhhc2guZWFjaCh0aGlzLGZ1bmN0aW9uKEYsRSl7aWYo QSl7RT1BKyJbIitFKyJdIjt9dmFyIEQ7c3dpdGNoKCR0eXBlKEYpKXtjYXNlIm9i amVjdCI6RD1IYXNoLnRvUXVlcnlTdHJpbmcoRixFKTticmVhaztjYXNlImFycmF5 Ijp2YXIgQz17fTtGLmVhY2goZnVuY3Rpb24oSCxHKXtDW0ddPUg7Cn0pO0Q9SGFz aC50b1F1ZXJ5U3RyaW5nKEMsRSk7YnJlYWs7ZGVmYXVsdDpEPUUrIj0iK2VuY29k ZVVSSUNvbXBvbmVudChGKTt9aWYoRiE9dW5kZWZpbmVkKXtCLnB1c2goRCk7fX0p O3JldHVybiBCLmpvaW4oIiYiKTt9fSk7SGFzaC5hbGlhcyh7a2V5T2Y6ImluZGV4 T2YiLGhhc1ZhbHVlOiJjb250YWlucyJ9KTsKdmFyIEV2ZW50PW5ldyBOYXRpdmUo e25hbWU6IkV2ZW50Iixpbml0aWFsaXplOmZ1bmN0aW9uKEEsRil7Rj1GfHx3aW5k b3c7dmFyIEs9Ri5kb2N1bWVudDtBPUF8fEYuZXZlbnQ7aWYoQS4kZXh0ZW5kZWQp e3JldHVybiBBO310aGlzLiRleHRlbmRlZD10cnVlO3ZhciBKPUEudHlwZTsKdmFy IEc9QS50YXJnZXR8fEEuc3JjRWxlbWVudDt3aGlsZShHJiZHLm5vZGVUeXBlPT0z KXtHPUcucGFyZW50Tm9kZTt9aWYoSi50ZXN0KC9rZXkvKSl7dmFyIEI9QS53aGlj aHx8QS5rZXlDb2RlO3ZhciBNPUV2ZW50LktleXMua2V5T2YoQik7aWYoSj09Imtl eWRvd24iKXt2YXIgRD1CLTExMTsKaWYoRD4wJiZEPDEzKXtNPSJmIitEO319TT1N fHxTdHJpbmcuZnJvbUNoYXJDb2RlKEIpLnRvTG93ZXJDYXNlKCk7fWVsc2V7aWYo Si5tYXRjaCgvKGNsaWNrfG1vdXNlfG1lbnUpL2kpKXtLPSghSy5jb21wYXRNb2Rl fHxLLmNvbXBhdE1vZGU9PSJDU1MxQ29tcGF0Iik/Sy5odG1sOksuYm9keTsKdmFy IEk9e3g6QS5wYWdlWHx8QS5jbGllbnRYK0suc2Nyb2xsTGVmdCx5OkEucGFnZVl8 fEEuY2xpZW50WStLLnNjcm9sbFRvcH07dmFyIEM9e3g6KEEucGFnZVgpP0EucGFn ZVgtRi5wYWdlWE9mZnNldDpBLmNsaWVudFgseTooQS5wYWdlWSk/QS5wYWdlWS1G LnBhZ2VZT2Zmc2V0OkEuY2xpZW50WX07CmlmKEoubWF0Y2goL0RPTU1vdXNlU2Ny b2xsfG1vdXNld2hlZWwvKSl7dmFyIEg9KEEud2hlZWxEZWx0YSk/QS53aGVlbERl bHRhLzEyMDotKEEuZGV0YWlsfHwwKS8zO312YXIgRT0oQS53aGljaD09Myl8fChB LmJ1dHRvbj09Mik7dmFyIEw9bnVsbDtpZihKLm1hdGNoKC9vdmVyfG91dC8pKXtz d2l0Y2goSil7Y2FzZSJtb3VzZW92ZXIiOkw9QS5yZWxhdGVkVGFyZ2V0fHxBLmZy b21FbGVtZW50OwpicmVhaztjYXNlIm1vdXNlb3V0IjpMPUEucmVsYXRlZFRhcmdl dHx8QS50b0VsZW1lbnQ7fWlmKCEoZnVuY3Rpb24oKXt3aGlsZShMJiZMLm5vZGVU eXBlPT0zKXtMPUwucGFyZW50Tm9kZTt9cmV0dXJuIHRydWU7fSkuY3JlYXRlKHth dHRlbXB0OkJyb3dzZXIuRW5naW5lLmdlY2tvfSkoKSl7TD1mYWxzZTsKfX19fXJl dHVybiAkZXh0ZW5kKHRoaXMse2V2ZW50OkEsdHlwZTpKLHBhZ2U6SSxjbGllbnQ6 QyxyaWdodENsaWNrOkUsd2hlZWw6SCxyZWxhdGVkVGFyZ2V0OkwsdGFyZ2V0Okcs Y29kZTpCLGtleTpNLHNoaWZ0OkEuc2hpZnRLZXksY29udHJvbDpBLmN0cmxLZXks YWx0OkEuYWx0S2V5LG1ldGE6QS5tZXRhS2V5fSk7Cn19KTtFdmVudC5LZXlzPW5l dyBIYXNoKHtlbnRlcjoxMyx1cDozOCxkb3duOjQwLGxlZnQ6MzcscmlnaHQ6Mzks ZXNjOjI3LHNwYWNlOjMyLGJhY2tzcGFjZTo4LHRhYjo5LCJkZWxldGUiOjQ2fSk7 RXZlbnQuaW1wbGVtZW50KHtzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3Rv cFByb3BhZ2F0aW9uKCkucHJldmVudERlZmF1bHQoKTsKfSxzdG9wUHJvcGFnYXRp b246ZnVuY3Rpb24oKXtpZih0aGlzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbil7dGhp cy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKTt9ZWxzZXt0aGlzLmV2ZW50LmNhbmNl bEJ1YmJsZT10cnVlO31yZXR1cm4gdGhpczt9LHByZXZlbnREZWZhdWx0OmZ1bmN0 aW9uKCl7aWYodGhpcy5ldmVudC5wcmV2ZW50RGVmYXVsdCl7dGhpcy5ldmVudC5w cmV2ZW50RGVmYXVsdCgpOwp9ZWxzZXt0aGlzLmV2ZW50LnJldHVyblZhbHVlPWZh bHNlO31yZXR1cm4gdGhpczt9fSk7dmFyIENsYXNzPW5ldyBOYXRpdmUoe25hbWU6 IkNsYXNzIixpbml0aWFsaXplOmZ1bmN0aW9uKEIpe0I9Qnx8e307dmFyIEE9ZnVu Y3Rpb24oRSl7Zm9yKHZhciBEIGluIHRoaXMpe3RoaXNbRF09JHVubGluayh0aGlz W0RdKTsKfWZvcih2YXIgRiBpbiBDbGFzcy5NdXRhdG9ycyl7aWYoIXRoaXNbRl0p e2NvbnRpbnVlO31DbGFzcy5NdXRhdG9yc1tGXSh0aGlzLHRoaXNbRl0pO2RlbGV0 ZSB0aGlzW0ZdO310aGlzLmNvbnN0cnVjdG9yPUE7aWYoRT09PSRlbXB0eSl7cmV0 dXJuIHRoaXM7fXZhciBDPSh0aGlzLmluaXRpYWxpemUpP3RoaXMuaW5pdGlhbGl6 ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpczsKaWYodGhpcy5vcHRpb25zJiZ0 aGlzLm9wdGlvbnMuaW5pdGlhbGl6ZSl7dGhpcy5vcHRpb25zLmluaXRpYWxpemUu Y2FsbCh0aGlzKTt9cmV0dXJuIEM7fTskZXh0ZW5kKEEsdGhpcyk7QS5jb25zdHJ1 Y3Rvcj1DbGFzcztBLnByb3RvdHlwZT1CO3JldHVybiBBO319KTsKQ2xhc3MuaW1w bGVtZW50KHtpbXBsZW1lbnQ6ZnVuY3Rpb24oKXtDbGFzcy5NdXRhdG9ycy5JbXBs ZW1lbnRzKHRoaXMucHJvdG90eXBlLEFycmF5LnNsaWNlKGFyZ3VtZW50cykpO3Jl dHVybiB0aGlzO319KTtDbGFzcy5NdXRhdG9ycz17SW1wbGVtZW50czpmdW5jdGlv bihBLEIpeyRzcGxhdChCKS5lYWNoKGZ1bmN0aW9uKEMpeyRleHRlbmQoQSwoJHR5 cGUoQyk9PSJjbGFzcyIpP25ldyBDKCRlbXB0eSk6Qyk7Cn0pO30sRXh0ZW5kczpm dW5jdGlvbihzZWxmLGtsYXNzKXt2YXIgaW5zdGFuY2U9bmV3IGtsYXNzKCRlbXB0 eSk7ZGVsZXRlIGluc3RhbmNlLnBhcmVudDtkZWxldGUgaW5zdGFuY2UucGFyZW50 T2Y7Zm9yKHZhciBrZXkgaW4gaW5zdGFuY2Upe3ZhciBjdXJyZW50PXNlbGZba2V5 XSxwcmV2aW91cz1pbnN0YW5jZVtrZXldOwppZihjdXJyZW50PT11bmRlZmluZWQp e3NlbGZba2V5XT1wcmV2aW91cztjb250aW51ZTt9dmFyIGN0eXBlPSR0eXBlKGN1 cnJlbnQpLHB0eXBlPSR0eXBlKHByZXZpb3VzKTtpZihjdHlwZSE9cHR5cGUpe2Nv bnRpbnVlO31zd2l0Y2goY3R5cGUpe2Nhc2UiZnVuY3Rpb24iOmlmKCFhcmd1bWVu dHMuY2FsbGVlLmNhbGxlcil7c2VsZltrZXldPWV2YWwoIigiK1N0cmluZyhjdXJy ZW50KS5yZXBsYWNlKC9cYnRoaXNcLnBhcmVudFwoXHMqKFwpKT8vZyxmdW5jdGlv bihmdWxsLGNsb3NlKXtyZXR1cm4iYXJndW1lbnRzLmNhbGxlZS5fcGFyZW50Xy5j YWxsKHRoaXMiKyhjbG9zZXx8IiwgIik7Cn0pKyIpIik7fXNlbGZba2V5XS5fcGFy ZW50Xz1wcmV2aW91czticmVhaztjYXNlIm9iamVjdCI6c2VsZltrZXldPSRtZXJn ZShwcmV2aW91cyxjdXJyZW50KTt9fXNlbGYucGFyZW50PWZ1bmN0aW9uKCl7cmV0 dXJuIGFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyLl9wYXJlbnRfLmFwcGx5KHRoaXMs YXJndW1lbnRzKTsKfTtzZWxmLnBhcmVudE9mPWZ1bmN0aW9uKGRlc2NlbmRhbnQp e3JldHVybiBkZXNjZW5kYW50Ll9wYXJlbnRfLmFwcGx5KHRoaXMsQXJyYXkuc2xp Y2UoYXJndW1lbnRzLDEpKTt9O319O3ZhciBDaGFpbj1uZXcgQ2xhc3Moe2NoYWlu OmZ1bmN0aW9uKCl7dGhpcy4kY2hhaW49KHRoaXMuJGNoYWlufHxbXSkuZXh0ZW5k KGFyZ3VtZW50cyk7CnJldHVybiB0aGlzO30sY2FsbENoYWluOmZ1bmN0aW9uKCl7 cmV0dXJuKHRoaXMuJGNoYWluJiZ0aGlzLiRjaGFpbi5sZW5ndGgpP3RoaXMuJGNo YWluLnNoaWZ0KCkuYXBwbHkodGhpcyxhcmd1bWVudHMpOmZhbHNlO30sY2xlYXJD aGFpbjpmdW5jdGlvbigpe2lmKHRoaXMuJGNoYWluKXt0aGlzLiRjaGFpbi5lbXB0 eSgpOwp9cmV0dXJuIHRoaXM7fX0pO3ZhciBFdmVudHM9bmV3IENsYXNzKHthZGRF dmVudDpmdW5jdGlvbihDLEIsQSl7Qz1FdmVudHMucmVtb3ZlT24oQyk7aWYoQiE9 JGVtcHR5KXt0aGlzLiRldmVudHM9dGhpcy4kZXZlbnRzfHx7fTt0aGlzLiRldmVu dHNbQ109dGhpcy4kZXZlbnRzW0NdfHxbXTsKdGhpcy4kZXZlbnRzW0NdLmluY2x1 ZGUoQik7aWYoQSl7Qi5pbnRlcm5hbD10cnVlO319cmV0dXJuIHRoaXM7fSxhZGRF dmVudHM6ZnVuY3Rpb24oQSl7Zm9yKHZhciBCIGluIEEpe3RoaXMuYWRkRXZlbnQo QixBW0JdKTt9cmV0dXJuIHRoaXM7fSxmaXJlRXZlbnQ6ZnVuY3Rpb24oQyxCLEEp e0M9RXZlbnRzLnJlbW92ZU9uKEMpOwppZighdGhpcy4kZXZlbnRzfHwhdGhpcy4k ZXZlbnRzW0NdKXtyZXR1cm4gdGhpczt9dGhpcy4kZXZlbnRzW0NdLmVhY2goZnVu Y3Rpb24oRCl7RC5jcmVhdGUoe2JpbmQ6dGhpcyxkZWxheTpBLCJhcmd1bWVudHMi OkJ9KSgpO30sdGhpcyk7cmV0dXJuIHRoaXM7fSxyZW1vdmVFdmVudDpmdW5jdGlv bihCLEEpe0I9RXZlbnRzLnJlbW92ZU9uKEIpOwppZighdGhpcy4kZXZlbnRzfHwh dGhpcy4kZXZlbnRzW0JdKXtyZXR1cm4gdGhpczt9aWYoIUEuaW50ZXJuYWwpe3Ro aXMuJGV2ZW50c1tCXS5lcmFzZShBKTt9cmV0dXJuIHRoaXM7fSxyZW1vdmVFdmVu dHM6ZnVuY3Rpb24oQyl7Zm9yKHZhciBEIGluIHRoaXMuJGV2ZW50cyl7aWYoQyYm QyE9RCl7Y29udGludWU7Cn12YXIgQj10aGlzLiRldmVudHNbRF07Zm9yKHZhciBB PUIubGVuZ3RoO0EtLTtBKXt0aGlzLnJlbW92ZUV2ZW50KEQsQltBXSk7fX1yZXR1 cm4gdGhpczt9fSk7RXZlbnRzLnJlbW92ZU9uPWZ1bmN0aW9uKEEpe3JldHVybiBB LnJlcGxhY2UoL15vbihbQS1aXSkvLGZ1bmN0aW9uKEIsQyl7cmV0dXJuIEMudG9M b3dlckNhc2UoKTsKfSk7fTt2YXIgT3B0aW9ucz1uZXcgQ2xhc3Moe3NldE9wdGlv bnM6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnM9JG1lcmdlLnJ1bihbdGhpcy5vcHRp b25zXS5leHRlbmQoYXJndW1lbnRzKSk7aWYoIXRoaXMuYWRkRXZlbnQpe3JldHVy biB0aGlzO31mb3IodmFyIEEgaW4gdGhpcy5vcHRpb25zKXtpZigkdHlwZSh0aGlz Lm9wdGlvbnNbQV0pIT0iZnVuY3Rpb24ifHwhKC9eb25bQS1aXS8pLnRlc3QoQSkp e2NvbnRpbnVlOwp9dGhpcy5hZGRFdmVudChBLHRoaXMub3B0aW9uc1tBXSk7ZGVs ZXRlIHRoaXMub3B0aW9uc1tBXTt9cmV0dXJuIHRoaXM7fX0pO0RvY3VtZW50Lmlt cGxlbWVudCh7bmV3RWxlbWVudDpmdW5jdGlvbihBLEIpe2lmKEJyb3dzZXIuRW5n aW5lLnRyaWRlbnQmJkIpe1sibmFtZSIsInR5cGUiLCJjaGVja2VkIl0uZWFjaChm dW5jdGlvbihDKXtpZighQltDXSl7cmV0dXJuIDsKfUErPSIgIitDKyc9IicrQltD XSsnIic7aWYoQyE9ImNoZWNrZWQiKXtkZWxldGUgQltDXTt9fSk7QT0iPCIrQSsi PiI7fXJldHVybiAkLmVsZW1lbnQodGhpcy5jcmVhdGVFbGVtZW50KEEpKS5zZXQo Qik7fSxuZXdUZXh0Tm9kZTpmdW5jdGlvbihBKXtyZXR1cm4gdGhpcy5jcmVhdGVU ZXh0Tm9kZShBKTsKfSxnZXREb2N1bWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlz O30sZ2V0V2luZG93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVmYXVsdFZpZXd8 fHRoaXMucGFyZW50V2luZG93O30scHVyZ2U6ZnVuY3Rpb24oKXt2YXIgQz10aGlz LmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIik7CmZvcih2YXIgQj0wLEE9Qy5sZW5n dGg7QjxBO0IrKyl7QnJvd3Nlci5mcmVlTWVtKENbQl0pO319fSk7dmFyIEVsZW1l bnQ9bmV3IE5hdGl2ZSh7bmFtZToiRWxlbWVudCIsbGVnYWN5OndpbmRvdy5FbGVt ZW50LGluaXRpYWxpemU6ZnVuY3Rpb24oQSxCKXt2YXIgQz1FbGVtZW50LkNvbnN0 cnVjdG9ycy5nZXQoQSk7CmlmKEMpe3JldHVybiBDKEIpO31pZih0eXBlb2YgQT09 InN0cmluZyIpe3JldHVybiBkb2N1bWVudC5uZXdFbGVtZW50KEEsQik7fXJldHVy biAkKEEpLnNldChCKTt9LGFmdGVySW1wbGVtZW50OmZ1bmN0aW9uKEEsQil7aWYo IUFycmF5W0FdKXtFbGVtZW50cy5pbXBsZW1lbnQoQSxFbGVtZW50cy5tdWx0aShB KSk7Cn1FbGVtZW50LlByb3RvdHlwZVtBXT1CO319KTtFbGVtZW50LlByb3RvdHlw ZT17JGZhbWlseTp7bmFtZToiZWxlbWVudCJ9fTtFbGVtZW50LkNvbnN0cnVjdG9y cz1uZXcgSGFzaDt2YXIgSUZyYW1lPW5ldyBOYXRpdmUoe25hbWU6IklGcmFtZSIs Z2VuZXJpY3M6ZmFsc2UsaW5pdGlhbGl6ZTpmdW5jdGlvbigpe3ZhciBFPUFycmF5 LmxpbmsoYXJndW1lbnRzLHtwcm9wZXJ0aWVzOk9iamVjdC50eXBlLGlmcmFtZTok ZGVmaW5lZH0pOwp2YXIgQz1FLnByb3BlcnRpZXN8fHt9O3ZhciBCPSQoRS5pZnJh bWUpfHxmYWxzZTt2YXIgRD1DLm9ubG9hZHx8JGVtcHR5O2RlbGV0ZSBDLm9ubG9h ZDtDLmlkPUMubmFtZT0kcGljayhDLmlkLEMubmFtZSxCLmlkLEIubmFtZSwiSUZy YW1lXyIrJHRpbWUoKSk7Qj1uZXcgRWxlbWVudChCfHwiaWZyYW1lIixDKTsKdmFy IEE9ZnVuY3Rpb24oKXt2YXIgRj0kdHJ5KGZ1bmN0aW9uKCl7cmV0dXJuIEIuY29u dGVudFdpbmRvdy5sb2NhdGlvbi5ob3N0O30pO2lmKEYmJkY9PXdpbmRvdy5sb2Nh dGlvbi5ob3N0KXt2YXIgSD1uZXcgV2luZG93KEIuY29udGVudFdpbmRvdyk7dmFy IEc9bmV3IERvY3VtZW50KEIuY29udGVudFdpbmRvdy5kb2N1bWVudCk7CiRleHRl bmQoSC5FbGVtZW50LnByb3RvdHlwZSxFbGVtZW50LlByb3RvdHlwZSk7fUQuY2Fs bChCLmNvbnRlbnRXaW5kb3csQi5jb250ZW50V2luZG93LmRvY3VtZW50KTt9Oygh d2luZG93LmZyYW1lc1tDLmlkXSk/Qi5hZGRMaXN0ZW5lcigibG9hZCIsQSk6QSgp O3JldHVybiBCOwp9fSk7dmFyIEVsZW1lbnRzPW5ldyBOYXRpdmUoe2luaXRpYWxp emU6ZnVuY3Rpb24oRixCKXtCPSRleHRlbmQoe2RkdXA6dHJ1ZSxjYXNoOnRydWV9 LEIpO0Y9Rnx8W107aWYoQi5kZHVwfHxCLmNhc2gpe3ZhciBHPXt9LEU9W107Zm9y KHZhciBDPTAsQT1GLmxlbmd0aDsKQzxBO0MrKyl7dmFyIEQ9JC5lbGVtZW50KEZb Q10sIUIuY2FzaCk7aWYoQi5kZHVwKXtpZihHW0QudWlkXSl7Y29udGludWU7fUdb RC51aWRdPXRydWU7fUUucHVzaChEKTt9Rj1FO31yZXR1cm4oQi5jYXNoKT8kZXh0 ZW5kKEYsdGhpcyk6Rjt9fSk7RWxlbWVudHMuaW1wbGVtZW50KHtmaWx0ZXI6ZnVu Y3Rpb24oQSxCKXtpZighQSl7cmV0dXJuIHRoaXM7Cn1yZXR1cm4gbmV3IEVsZW1l bnRzKEFycmF5LmZpbHRlcih0aGlzLCh0eXBlb2YgQT09InN0cmluZyIpP2Z1bmN0 aW9uKEMpe3JldHVybiBDLm1hdGNoKEEpO306QSxCKSk7fX0pO0VsZW1lbnRzLm11 bHRpPWZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbigpe3ZhciBCPVtdOwp2YXIg Rj10cnVlO2Zvcih2YXIgRD0wLEM9dGhpcy5sZW5ndGg7RDxDO0QrKyl7dmFyIEU9 dGhpc1tEXVtBXS5hcHBseSh0aGlzW0RdLGFyZ3VtZW50cyk7Qi5wdXNoKEUpO2lm KEYpe0Y9KCR0eXBlKEUpPT0iZWxlbWVudCIpO319cmV0dXJuKEYpP25ldyBFbGVt ZW50cyhCKTpCOwp9O307V2luZG93LmltcGxlbWVudCh7JDpmdW5jdGlvbihCLEMp e2lmKEImJkIuJGZhbWlseSYmQi51aWQpe3JldHVybiBCO312YXIgQT0kdHlwZShC KTtyZXR1cm4oJFtBXSk/JFtBXShCLEMsdGhpcy5kb2N1bWVudCk6bnVsbDt9LCQk OmZ1bmN0aW9uKEEpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PTEmJnR5cGVvZiBBPT0i c3RyaW5nIil7cmV0dXJuIHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHMoQSk7Cn12 YXIgRj1bXTt2YXIgQz1BcnJheS5mbGF0dGVuKGFyZ3VtZW50cyk7Zm9yKHZhciBE PTAsQj1DLmxlbmd0aDtEPEI7RCsrKXt2YXIgRT1DW0RdO3N3aXRjaCgkdHlwZShF KSl7Y2FzZSJlbGVtZW50IjpFPVtFXTticmVhaztjYXNlInN0cmluZyI6RT10aGlz LmRvY3VtZW50LmdldEVsZW1lbnRzKEUsdHJ1ZSk7CmJyZWFrO2RlZmF1bHQ6RT1m YWxzZTt9aWYoRSl7Ri5leHRlbmQoRSk7fX1yZXR1cm4gbmV3IEVsZW1lbnRzKEYp O30sZ2V0RG9jdW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb2N1bWVudDt9 LGdldFdpbmRvdzpmdW5jdGlvbigpe3JldHVybiB0aGlzO319KTsKJC5zdHJpbmc9 ZnVuY3Rpb24oQyxCLEEpe0M9QS5nZXRFbGVtZW50QnlJZChDKTtyZXR1cm4oQyk/ JC5lbGVtZW50KEMsQik6bnVsbDt9OyQuZWxlbWVudD1mdW5jdGlvbihBLEQpeyR1 aWQoQSk7aWYoIUQmJiFBLiRmYW1pbHkmJiEoL15vYmplY3R8ZW1iZWQkL2kpLnRl c3QoQS50YWdOYW1lKSl7dmFyIEI9RWxlbWVudC5Qcm90b3R5cGU7CmZvcih2YXIg QyBpbiBCKXtBW0NdPUJbQ107fX1yZXR1cm4gQTt9OyQub2JqZWN0PWZ1bmN0aW9u KEIsQyxBKXtpZihCLnRvRWxlbWVudCl7cmV0dXJuICQuZWxlbWVudChCLnRvRWxl bWVudChBKSxDKTt9cmV0dXJuIG51bGw7fTskLnRleHRub2RlPSQud2hpdGVzcGFj ZT0kLndpbmRvdz0kLmRvY3VtZW50PSRhcmd1bWVudHMoMCk7Ck5hdGl2ZS5pbXBs ZW1lbnQoW0VsZW1lbnQsRG9jdW1lbnRdLHtnZXRFbGVtZW50OmZ1bmN0aW9uKEEs Qil7cmV0dXJuICQodGhpcy5nZXRFbGVtZW50cyhBLHRydWUpWzBdfHxudWxsLEIp O30sZ2V0RWxlbWVudHM6ZnVuY3Rpb24oQSxEKXtBPUEuc3BsaXQoIiwiKTsKdmFy IEM9W107dmFyIEI9KEEubGVuZ3RoPjEpO0EuZWFjaChmdW5jdGlvbihFKXt2YXIg Rj10aGlzLmdldEVsZW1lbnRzQnlUYWdOYW1lKEUudHJpbSgpKTsoQik/Qy5leHRl bmQoRik6Qz1GO30sdGhpcyk7cmV0dXJuIG5ldyBFbGVtZW50cyhDLHtkZHVwOkIs Y2FzaDohRH0pOwp9fSk7RWxlbWVudC5TdG9yYWdlPXtnZXQ6ZnVuY3Rpb24oQSl7 cmV0dXJuKHRoaXNbQV18fCh0aGlzW0FdPXt9KSk7fX07RWxlbWVudC5JbnNlcnRl cnM9bmV3IEhhc2goe2JlZm9yZTpmdW5jdGlvbihCLEEpe2lmKEEucGFyZW50Tm9k ZSl7QS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShCLEEpOwp9fSxhZnRlcjpmdW5j dGlvbihCLEEpe2lmKCFBLnBhcmVudE5vZGUpe3JldHVybiA7fXZhciBDPUEubmV4 dFNpYmxpbmc7KEMpP0EucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoQixDKTpBLnBh cmVudE5vZGUuYXBwZW5kQ2hpbGQoQik7fSxib3R0b206ZnVuY3Rpb24oQixBKXtB LmFwcGVuZENoaWxkKEIpOwp9LHRvcDpmdW5jdGlvbihCLEEpe3ZhciBDPUEuZmly c3RDaGlsZDsoQyk/QS5pbnNlcnRCZWZvcmUoQixDKTpBLmFwcGVuZENoaWxkKEIp O319KTtFbGVtZW50Lkluc2VydGVycy5pbnNpZGU9RWxlbWVudC5JbnNlcnRlcnMu Ym90dG9tO0VsZW1lbnQuSW5zZXJ0ZXJzLmVhY2goZnVuY3Rpb24oQyxCKXt2YXIg QT1CLmNhcGl0YWxpemUoKTsKRWxlbWVudC5pbXBsZW1lbnQoImluamVjdCIrQSxm dW5jdGlvbihEKXtDKHRoaXMsJChELHRydWUpKTtyZXR1cm4gdGhpczt9KTtFbGVt ZW50LmltcGxlbWVudCgiZ3JhYiIrQSxmdW5jdGlvbihEKXtDKCQoRCx0cnVlKSx0 aGlzKTtyZXR1cm4gdGhpczt9KTt9KTtFbGVtZW50LmltcGxlbWVudCh7Z2V0RG9j dW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50Owp9LGdl dFdpbmRvdzpmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuZ2V0 V2luZG93KCk7fSxnZXRFbGVtZW50QnlJZDpmdW5jdGlvbihELEMpe3ZhciBCPXRo aXMub3duZXJEb2N1bWVudC5nZXRFbGVtZW50QnlJZChEKTtpZighQil7cmV0dXJu IG51bGw7Cn1mb3IodmFyIEE9Qi5wYXJlbnROb2RlO0EhPXRoaXM7QT1BLnBhcmVu dE5vZGUpe2lmKCFBKXtyZXR1cm4gbnVsbDt9fXJldHVybiAkLmVsZW1lbnQoQixD KTt9LHNldDpmdW5jdGlvbihELEIpe3N3aXRjaCgkdHlwZShEKSl7Y2FzZSJvYmpl Y3QiOmZvcih2YXIgQyBpbiBEKXt0aGlzLnNldChDLERbQ10pOwp9YnJlYWs7Y2Fz ZSJzdHJpbmciOnZhciBBPUVsZW1lbnQuUHJvcGVydGllcy5nZXQoRCk7KEEmJkEu c2V0KT9BLnNldC5hcHBseSh0aGlzLEFycmF5LnNsaWNlKGFyZ3VtZW50cywxKSk6 dGhpcy5zZXRQcm9wZXJ0eShELEIpO31yZXR1cm4gdGhpczt9LGdldDpmdW5jdGlv bihCKXt2YXIgQT1FbGVtZW50LlByb3BlcnRpZXMuZ2V0KEIpOwpyZXR1cm4oQSYm QS5nZXQpP0EuZ2V0LmFwcGx5KHRoaXMsQXJyYXkuc2xpY2UoYXJndW1lbnRzLDEp KTp0aGlzLmdldFByb3BlcnR5KEIpO30sZXJhc2U6ZnVuY3Rpb24oQil7dmFyIEE9 RWxlbWVudC5Qcm9wZXJ0aWVzLmdldChCKTsoQSYmQS5lcmFzZSk/QS5lcmFzZS5h cHBseSh0aGlzLEFycmF5LnNsaWNlKGFyZ3VtZW50cywxKSk6dGhpcy5yZW1vdmVQ cm9wZXJ0eShCKTsKcmV0dXJuIHRoaXM7fSxtYXRjaDpmdW5jdGlvbihBKXtyZXR1 cm4oIUF8fEVsZW1lbnQuZ2V0KHRoaXMsInRhZyIpPT1BKTt9LGluamVjdDpmdW5j dGlvbihCLEEpe0VsZW1lbnQuSW5zZXJ0ZXJzLmdldChBfHwiYm90dG9tIikodGhp cywkKEIsdHJ1ZSkpO3JldHVybiB0aGlzOwp9LHdyYXBzOmZ1bmN0aW9uKEIsQSl7 Qj0kKEIsdHJ1ZSk7cmV0dXJuIHRoaXMucmVwbGFjZXMoQikuZ3JhYihCLEEpO30s Z3JhYjpmdW5jdGlvbihCLEEpe0VsZW1lbnQuSW5zZXJ0ZXJzLmdldChBfHwiYm90 dG9tIikoJChCLHRydWUpLHRoaXMpO3JldHVybiB0aGlzOwp9LGFwcGVuZFRleHQ6 ZnVuY3Rpb24oQixBKXtyZXR1cm4gdGhpcy5ncmFiKHRoaXMuZ2V0RG9jdW1lbnQo KS5uZXdUZXh0Tm9kZShCKSxBKTt9LGFkb3B0OmZ1bmN0aW9uKCl7QXJyYXkuZmxh dHRlbihhcmd1bWVudHMpLmVhY2goZnVuY3Rpb24oQSl7QT0kKEEsdHJ1ZSk7Cmlm KEEpe3RoaXMuYXBwZW5kQ2hpbGQoQSk7fX0sdGhpcyk7cmV0dXJuIHRoaXM7fSxk aXNwb3NlOmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucGFyZW50Tm9kZSk/dGhpcy5w YXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMpOnRoaXM7fSxjbG9uZTpmdW5jdGlv bihELEMpe3N3aXRjaCgkdHlwZSh0aGlzKSl7Y2FzZSJlbGVtZW50Ijp2YXIgSD17 fTsKZm9yKHZhciBHPTAsRT10aGlzLmF0dHJpYnV0ZXMubGVuZ3RoO0c8RTtHKysp e3ZhciBCPXRoaXMuYXR0cmlidXRlc1tHXSxMPUIubm9kZU5hbWUudG9Mb3dlckNh c2UoKTtpZihCcm93c2VyLkVuZ2luZS50cmlkZW50JiYoL2lucHV0L2kpLnRlc3Qo dGhpcy50YWdOYW1lKSYmKC93aWR0aHxoZWlnaHQvKS50ZXN0KEwpKXtjb250aW51 ZTsKfXZhciBLPShMPT0ic3R5bGUiJiZ0aGlzLnN0eWxlKT90aGlzLnN0eWxlLmNz c1RleHQ6Qi5ub2RlVmFsdWU7aWYoISRjaGsoSyl8fEw9PSJ1aWQifHwoTD09Imlk IiYmIUMpKXtjb250aW51ZTt9aWYoSyE9ImluaGVyaXQiJiZbInN0cmluZyIsIm51 bWJlciJdLmNvbnRhaW5zKCR0eXBlKEspKSl7SFtMXT1LOwp9fXZhciBKPW5ldyBF bGVtZW50KHRoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxIKTtpZihEIT09ZmFs c2Upe2Zvcih2YXIgST0wLEY9dGhpcy5jaGlsZE5vZGVzLmxlbmd0aDtJPEY7SSsr KXt2YXIgQT1FbGVtZW50LmNsb25lKHRoaXMuY2hpbGROb2Rlc1tJXSx0cnVlLEMp OwppZihBKXtKLmdyYWIoQSk7fX19cmV0dXJuIEo7Y2FzZSJ0ZXh0bm9kZSI6cmV0 dXJuIGRvY3VtZW50Lm5ld1RleHROb2RlKHRoaXMubm9kZVZhbHVlKTt9cmV0dXJu IG51bGw7fSxyZXBsYWNlczpmdW5jdGlvbihBKXtBPSQoQSx0cnVlKTtBLnBhcmVu dE5vZGUucmVwbGFjZUNoaWxkKHRoaXMsQSk7CnJldHVybiB0aGlzO30saGFzQ2xh c3M6ZnVuY3Rpb24oQSl7cmV0dXJuIHRoaXMuY2xhc3NOYW1lLmNvbnRhaW5zKEEs IiAiKTt9LGFkZENsYXNzOmZ1bmN0aW9uKEEpe2lmKCF0aGlzLmhhc0NsYXNzKEEp KXt0aGlzLmNsYXNzTmFtZT0odGhpcy5jbGFzc05hbWUrIiAiK0EpLmNsZWFuKCk7 Cn1yZXR1cm4gdGhpczt9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKEEpe3RoaXMuY2xh c3NOYW1lPXRoaXMuY2xhc3NOYW1lLnJlcGxhY2UobmV3IFJlZ0V4cCgiKF58XFxz KSIrQSsiKD86XFxzfCQpIiksIiQxIikuY2xlYW4oKTtyZXR1cm4gdGhpczt9LHRv Z2dsZUNsYXNzOmZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLmhhc0NsYXNzKEEpP3Ro aXMucmVtb3ZlQ2xhc3MoQSk6dGhpcy5hZGRDbGFzcyhBKTsKfSxnZXRDb21wdXRl ZFN0eWxlOmZ1bmN0aW9uKEIpe2lmKHRoaXMuY3VycmVudFN0eWxlKXtyZXR1cm4g dGhpcy5jdXJyZW50U3R5bGVbQi5jYW1lbENhc2UoKV07fXZhciBBPXRoaXMuZ2V0 V2luZG93KCkuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLG51bGwpO3JldHVybihBKT9B LmdldFByb3BlcnR5VmFsdWUoW0IuaHlwaGVuYXRlKCldKTpudWxsOwp9LGVtcHR5 OmZ1bmN0aW9uKCl7JEEodGhpcy5jaGlsZE5vZGVzKS5lYWNoKGZ1bmN0aW9uKEEp e0Jyb3dzZXIuZnJlZU1lbShBKTtFbGVtZW50LmVtcHR5KEEpO0VsZW1lbnQuZGlz cG9zZShBKTt9LHRoaXMpO3JldHVybiB0aGlzO30sZGVzdHJveTpmdW5jdGlvbigp e0Jyb3dzZXIuZnJlZU1lbSh0aGlzLmVtcHR5KCkuZGlzcG9zZSgpKTsKcmV0dXJu IG51bGw7fSxnZXRTZWxlY3RlZDpmdW5jdGlvbigpe3JldHVybiBuZXcgRWxlbWVu dHMoJEEodGhpcy5vcHRpb25zKS5maWx0ZXIoZnVuY3Rpb24oQSl7cmV0dXJuIEEu c2VsZWN0ZWQ7fSkpO30sdG9RdWVyeVN0cmluZzpmdW5jdGlvbigpe3ZhciBBPVtd Owp0aGlzLmdldEVsZW1lbnRzKCJpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSIpLmVh Y2goZnVuY3Rpb24oQil7aWYoIUIubmFtZXx8Qi5kaXNhYmxlZCl7cmV0dXJuIDt9 dmFyIEM9KEIudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT0ic2VsZWN0Iik/RWxlbWVu dC5nZXRTZWxlY3RlZChCKS5tYXAoZnVuY3Rpb24oRCl7cmV0dXJuIEQudmFsdWU7 Cn0pOigoQi50eXBlPT0icmFkaW8ifHxCLnR5cGU9PSJjaGVja2JveCIpJiYhQi5j aGVja2VkKT9udWxsOkIudmFsdWU7JHNwbGF0KEMpLmVhY2goZnVuY3Rpb24oRCl7 aWYoRCl7QS5wdXNoKEIubmFtZSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEQpKTt9 fSk7fSk7cmV0dXJuIEEuam9pbigiJiIpOwp9LGdldFByb3BlcnR5OmZ1bmN0aW9u KEMpe3ZhciBCPUVsZW1lbnQuQXR0cmlidXRlcyxBPUIuUHJvcHNbQ107dmFyIEQ9 KEEpP3RoaXNbQV06dGhpcy5nZXRBdHRyaWJ1dGUoQywyKTtyZXR1cm4oQi5Cb29s c1tDXSk/ISFEOihBKT9EOkR8fG51bGw7fSxnZXRQcm9wZXJ0aWVzOmZ1bmN0aW9u KCl7dmFyIEE9JEEoYXJndW1lbnRzKTsKcmV0dXJuIEEubWFwKGZ1bmN0aW9uKEIp e3JldHVybiB0aGlzLmdldFByb3BlcnR5KEIpO30sdGhpcykuYXNzb2NpYXRlKEEp O30sc2V0UHJvcGVydHk6ZnVuY3Rpb24oRCxFKXt2YXIgQz1FbGVtZW50LkF0dHJp YnV0ZXMsQj1DLlByb3BzW0RdLEE9JGRlZmluZWQoRSk7CmlmKEImJkMuQm9vbHNb RF0pe0U9KEV8fCFBKT90cnVlOmZhbHNlO31lbHNle2lmKCFBKXtyZXR1cm4gdGhp cy5yZW1vdmVQcm9wZXJ0eShEKTt9fShCKT90aGlzW0JdPUU6dGhpcy5zZXRBdHRy aWJ1dGUoRCxFKTtyZXR1cm4gdGhpczt9LHNldFByb3BlcnRpZXM6ZnVuY3Rpb24o QSl7Zm9yKHZhciBCIGluIEEpe3RoaXMuc2V0UHJvcGVydHkoQixBW0JdKTsKfXJl dHVybiB0aGlzO30scmVtb3ZlUHJvcGVydHk6ZnVuY3Rpb24oRCl7dmFyIEM9RWxl bWVudC5BdHRyaWJ1dGVzLEI9Qy5Qcm9wc1tEXSxBPShCJiZDLkJvb2xzW0RdKTso Qik/dGhpc1tCXT0oQSk/ZmFsc2U6IiI6dGhpcy5yZW1vdmVBdHRyaWJ1dGUoRCk7 cmV0dXJuIHRoaXM7Cn0scmVtb3ZlUHJvcGVydGllczpmdW5jdGlvbigpe0FycmF5 LmVhY2goYXJndW1lbnRzLHRoaXMucmVtb3ZlUHJvcGVydHksdGhpcyk7cmV0dXJu IHRoaXM7fX0pOyhmdW5jdGlvbigpe3ZhciBBPWZ1bmN0aW9uKEQsQixJLEMsRixI KXt2YXIgRT1EW0l8fEJdO3ZhciBHPVtdOwp3aGlsZShFKXtpZihFLm5vZGVUeXBl PT0xJiYoIUN8fEVsZW1lbnQubWF0Y2goRSxDKSkpe0cucHVzaChFKTtpZighRil7 YnJlYWs7fX1FPUVbQl07fXJldHVybihGKT9uZXcgRWxlbWVudHMoRyx7ZGR1cDpm YWxzZSxjYXNoOiFIfSk6JChHWzBdLEgpO307RWxlbWVudC5pbXBsZW1lbnQoe2dl dFByZXZpb3VzOmZ1bmN0aW9uKEIsQyl7cmV0dXJuIEEodGhpcywicHJldmlvdXNT aWJsaW5nIixudWxsLEIsZmFsc2UsQyk7Cn0sZ2V0QWxsUHJldmlvdXM6ZnVuY3Rp b24oQixDKXtyZXR1cm4gQSh0aGlzLCJwcmV2aW91c1NpYmxpbmciLG51bGwsQix0 cnVlLEMpO30sZ2V0TmV4dDpmdW5jdGlvbihCLEMpe3JldHVybiBBKHRoaXMsIm5l eHRTaWJsaW5nIixudWxsLEIsZmFsc2UsQyk7fSxnZXRBbGxOZXh0OmZ1bmN0aW9u KEIsQyl7cmV0dXJuIEEodGhpcywibmV4dFNpYmxpbmciLG51bGwsQix0cnVlLEMp Owp9LGdldEZpcnN0OmZ1bmN0aW9uKEIsQyl7cmV0dXJuIEEodGhpcywibmV4dFNp YmxpbmciLCJmaXJzdENoaWxkIixCLGZhbHNlLEMpO30sZ2V0TGFzdDpmdW5jdGlv bihCLEMpe3JldHVybiBBKHRoaXMsInByZXZpb3VzU2libGluZyIsImxhc3RDaGls ZCIsQixmYWxzZSxDKTsKfSxnZXRQYXJlbnQ6ZnVuY3Rpb24oQixDKXtyZXR1cm4g QSh0aGlzLCJwYXJlbnROb2RlIixudWxsLEIsZmFsc2UsQyk7fSxnZXRQYXJlbnRz OmZ1bmN0aW9uKEIsQyl7cmV0dXJuIEEodGhpcywicGFyZW50Tm9kZSIsbnVsbCxC LHRydWUsQyk7fSxnZXRDaGlsZHJlbjpmdW5jdGlvbihCLEMpe3JldHVybiBBKHRo aXMsIm5leHRTaWJsaW5nIiwiZmlyc3RDaGlsZCIsQix0cnVlLEMpOwp9LGhhc0No aWxkOmZ1bmN0aW9uKEIpe0I9JChCLHRydWUpO3JldHVybighIUImJiRBKHRoaXMu Z2V0RWxlbWVudHNCeVRhZ05hbWUoQi50YWdOYW1lKSkuY29udGFpbnMoQikpO319 KTt9KSgpO0VsZW1lbnQuUHJvcGVydGllcz1uZXcgSGFzaDtFbGVtZW50LlByb3Bl cnRpZXMuc3R5bGU9e3NldDpmdW5jdGlvbihBKXt0aGlzLnN0eWxlLmNzc1RleHQ9 QTsKfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHlsZS5jc3NUZXh0O30s ZXJhc2U6ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLmNzc1RleHQ9IiI7fX07RWxlbWVu dC5Qcm9wZXJ0aWVzLnRhZz17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFn TmFtZS50b0xvd2VyQ2FzZSgpOwp9fTtFbGVtZW50LlByb3BlcnRpZXMuaHJlZj17 Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuKCF0aGlzLmhyZWYpP251bGw6dGhpcy5ocmVm LnJlcGxhY2UobmV3IFJlZ0V4cCgiXiIrZG9jdW1lbnQubG9jYXRpb24ucHJvdG9j b2wrIi8vIitkb2N1bWVudC5sb2NhdGlvbi5ob3N0KSwiIik7Cn19O0VsZW1lbnQu UHJvcGVydGllcy5odG1sPXtzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbm5l ckhUTUw9QXJyYXkuZmxhdHRlbihhcmd1bWVudHMpLmpvaW4oIiIpO319O05hdGl2 ZS5pbXBsZW1lbnQoW0VsZW1lbnQsV2luZG93LERvY3VtZW50XSx7YWRkTGlzdGVu ZXI6ZnVuY3Rpb24oQixBKXtpZih0aGlzLmFkZEV2ZW50TGlzdGVuZXIpe3RoaXMu YWRkRXZlbnRMaXN0ZW5lcihCLEEsZmFsc2UpOwp9ZWxzZXt0aGlzLmF0dGFjaEV2 ZW50KCJvbiIrQixBKTt9cmV0dXJuIHRoaXM7fSxyZW1vdmVMaXN0ZW5lcjpmdW5j dGlvbihCLEEpe2lmKHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcil7dGhpcy5yZW1v dmVFdmVudExpc3RlbmVyKEIsQSxmYWxzZSk7fWVsc2V7dGhpcy5kZXRhY2hFdmVu dCgib24iK0IsQSk7Cn1yZXR1cm4gdGhpczt9LHJldHJpZXZlOmZ1bmN0aW9uKEIs QSl7dmFyIEQ9RWxlbWVudC5TdG9yYWdlLmdldCh0aGlzLnVpZCk7dmFyIEM9RFtC XTtpZigkZGVmaW5lZChBKSYmISRkZWZpbmVkKEMpKXtDPURbQl09QTt9cmV0dXJu ICRwaWNrKEMpO30sc3RvcmU6ZnVuY3Rpb24oQixBKXt2YXIgQz1FbGVtZW50LlN0 b3JhZ2UuZ2V0KHRoaXMudWlkKTsKQ1tCXT1BO3JldHVybiB0aGlzO30sZWxpbWlu YXRlOmZ1bmN0aW9uKEEpe3ZhciBCPUVsZW1lbnQuU3RvcmFnZS5nZXQodGhpcy51 aWQpO2RlbGV0ZSBCW0FdO3JldHVybiB0aGlzO319KTtFbGVtZW50LkF0dHJpYnV0 ZXM9bmV3IEhhc2goe1Byb3BzOntodG1sOiJpbm5lckhUTUwiLCJjbGFzcyI6ImNs YXNzTmFtZSIsImZvciI6Imh0bWxGb3IiLHRleHQ6KEJyb3dzZXIuRW5naW5lLnRy aWRlbnQpPyJpbm5lclRleHQiOiJ0ZXh0Q29udGVudCJ9LEJvb2xzOlsiY29tcGFj dCIsIm5vd3JhcCIsImlzbWFwIiwiZGVjbGFyZSIsIm5vc2hhZGUiLCJjaGVja2Vk IiwiZGlzYWJsZWQiLCJyZWFkb25seSIsIm11bHRpcGxlIiwic2VsZWN0ZWQiLCJu b3Jlc2l6ZSIsImRlZmVyIl0sQ2FtZWxzOlsidmFsdWUiLCJhY2Nlc3NLZXkiLCJj ZWxsUGFkZGluZyIsImNlbGxTcGFjaW5nIiwiY29sU3BhbiIsImZyYW1lQm9yZGVy IiwibWF4TGVuZ3RoIiwicmVhZE9ubHkiLCJyb3dTcGFuIiwidGFiSW5kZXgiLCJ1 c2VNYXAiXX0pOwpCcm93c2VyLmZyZWVNZW09ZnVuY3Rpb24oQSl7aWYoIUEpe3Jl dHVybiA7fWlmKEJyb3dzZXIuRW5naW5lLnRyaWRlbnQmJigvb2JqZWN0L2kpLnRl c3QoQS50YWdOYW1lKSl7Zm9yKHZhciBCIGluIEEpe2lmKHR5cGVvZiBBW0JdPT0i ZnVuY3Rpb24iKXtBW0JdPSRlbXB0eTsKfX1FbGVtZW50LmRpc3Bvc2UoQSk7fWlm KEEudWlkJiZBLnJlbW92ZUV2ZW50cyl7QS5yZW1vdmVFdmVudHMoKTt9fTsoZnVu Y3Rpb24oQil7dmFyIEM9Qi5Cb29scyxBPUIuQ2FtZWxzO0IuQm9vbHM9Qz1DLmFz c29jaWF0ZShDKTtIYXNoLmV4dGVuZChIYXNoLmNvbWJpbmUoQi5Qcm9wcyxDKSxB LmFzc29jaWF0ZShBLm1hcChmdW5jdGlvbihEKXtyZXR1cm4gRC50b0xvd2VyQ2Fz ZSgpOwp9KSkpO0IuZXJhc2UoIkNhbWVscyIpO30pKEVsZW1lbnQuQXR0cmlidXRl cyk7d2luZG93LmFkZExpc3RlbmVyKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7d2luZG93 LnJlbW92ZUxpc3RlbmVyKCJ1bmxvYWQiLGFyZ3VtZW50cy5jYWxsZWUpO2RvY3Vt ZW50LnB1cmdlKCk7CmlmKEJyb3dzZXIuRW5naW5lLnRyaWRlbnQpe0NvbGxlY3RH YXJiYWdlKCk7fX0pO0VsZW1lbnQuUHJvcGVydGllcy5ldmVudHM9e3NldDpmdW5j dGlvbihBKXt0aGlzLmFkZEV2ZW50cyhBKTt9fTtOYXRpdmUuaW1wbGVtZW50KFtF bGVtZW50LFdpbmRvdyxEb2N1bWVudF0se2FkZEV2ZW50OmZ1bmN0aW9uKEUsRyl7 dmFyIEg9dGhpcy5yZXRyaWV2ZSgiZXZlbnRzIix7fSk7CkhbRV09SFtFXXx8e2tl eXM6W10sdmFsdWVzOltdfTtpZihIW0VdLmtleXMuY29udGFpbnMoRykpe3JldHVy biB0aGlzO31IW0VdLmtleXMucHVzaChHKTt2YXIgRj1FLEE9RWxlbWVudC5FdmVu dHMuZ2V0KEUpLEM9RyxJPXRoaXM7aWYoQSl7aWYoQS5vbkFkZCl7QS5vbkFkZC5j YWxsKHRoaXMsRyk7Cn1pZihBLmNvbmRpdGlvbil7Qz1mdW5jdGlvbihKKXtpZihB LmNvbmRpdGlvbi5jYWxsKHRoaXMsSikpe3JldHVybiBHLmNhbGwodGhpcyxKKTt9 cmV0dXJuIGZhbHNlO307fUY9QS5iYXNlfHxGO312YXIgRD1mdW5jdGlvbigpe3Jl dHVybiBHLmNhbGwoSSk7fTt2YXIgQj1FbGVtZW50Lk5hdGl2ZUV2ZW50c1tGXXx8 MDsKaWYoQil7aWYoQj09Mil7RD1mdW5jdGlvbihKKXtKPW5ldyBFdmVudChKLEku Z2V0V2luZG93KCkpO2lmKEMuY2FsbChJLEopPT09ZmFsc2Upe0ouc3RvcCgpO319 O310aGlzLmFkZExpc3RlbmVyKEYsRCk7fUhbRV0udmFsdWVzLnB1c2goRCk7cmV0 dXJuIHRoaXM7fSxyZW1vdmVFdmVudDpmdW5jdGlvbihELEMpe3ZhciBCPXRoaXMu cmV0cmlldmUoImV2ZW50cyIpOwppZighQnx8IUJbRF0pe3JldHVybiB0aGlzO312 YXIgRz1CW0RdLmtleXMuaW5kZXhPZihDKTtpZihHPT0tMSl7cmV0dXJuIHRoaXM7 fXZhciBBPUJbRF0ua2V5cy5zcGxpY2UoRywxKVswXTt2YXIgRj1CW0RdLnZhbHVl cy5zcGxpY2UoRywxKVswXTt2YXIgRT1FbGVtZW50LkV2ZW50cy5nZXQoRCk7Cmlm KEUpe2lmKEUub25SZW1vdmUpe0Uub25SZW1vdmUuY2FsbCh0aGlzLEMpO31EPUUu YmFzZXx8RDt9cmV0dXJuKEVsZW1lbnQuTmF0aXZlRXZlbnRzW0RdKT90aGlzLnJl bW92ZUxpc3RlbmVyKEQsRik6dGhpczt9LGFkZEV2ZW50czpmdW5jdGlvbihBKXtm b3IodmFyIEIgaW4gQSl7dGhpcy5hZGRFdmVudChCLEFbQl0pOwp9cmV0dXJuIHRo aXM7fSxyZW1vdmVFdmVudHM6ZnVuY3Rpb24oQil7dmFyIEE9dGhpcy5yZXRyaWV2 ZSgiZXZlbnRzIik7aWYoIUEpe3JldHVybiB0aGlzO31pZighQil7Zm9yKHZhciBD IGluIEEpe3RoaXMucmVtb3ZlRXZlbnRzKEMpO31BPW51bGw7fWVsc2V7aWYoQVtC XSl7d2hpbGUoQVtCXS5rZXlzWzBdKXt0aGlzLnJlbW92ZUV2ZW50KEIsQVtCXS5r ZXlzWzBdKTsKfUFbQl09bnVsbDt9fXJldHVybiB0aGlzO30sZmlyZUV2ZW50OmZ1 bmN0aW9uKEQsQixBKXt2YXIgQz10aGlzLnJldHJpZXZlKCJldmVudHMiKTtpZigh Q3x8IUNbRF0pe3JldHVybiB0aGlzO31DW0RdLmtleXMuZWFjaChmdW5jdGlvbihF KXtFLmNyZWF0ZSh7YmluZDp0aGlzLGRlbGF5OkEsImFyZ3VtZW50cyI6Qn0pKCk7 Cn0sdGhpcyk7cmV0dXJuIHRoaXM7fSxjbG9uZUV2ZW50czpmdW5jdGlvbihELEEp e0Q9JChEKTt2YXIgQz1ELnJldHJpZXZlKCJldmVudHMiKTtpZighQyl7cmV0dXJu IHRoaXM7fWlmKCFBKXtmb3IodmFyIEIgaW4gQyl7dGhpcy5jbG9uZUV2ZW50cyhE LEIpO319ZWxzZXtpZihDW0FdKXtDW0FdLmtleXMuZWFjaChmdW5jdGlvbihFKXt0 aGlzLmFkZEV2ZW50KEEsRSk7Cn0sdGhpcyk7fX1yZXR1cm4gdGhpczt9fSk7RWxl bWVudC5OYXRpdmVFdmVudHM9e2NsaWNrOjIsZGJsY2xpY2s6Mixtb3VzZXVwOjIs bW91c2Vkb3duOjIsY29udGV4dG1lbnU6Mixtb3VzZXdoZWVsOjIsRE9NTW91c2VT Y3JvbGw6Mixtb3VzZW92ZXI6Mixtb3VzZW91dDoyLG1vdXNlbW92ZToyLHNlbGVj dHN0YXJ0OjIsc2VsZWN0ZW5kOjIsa2V5ZG93bjoyLGtleXByZXNzOjIsa2V5dXA6 Mixmb2N1czoyLGJsdXI6MixjaGFuZ2U6MixyZXNldDoyLHNlbGVjdDoyLHN1Ym1p dDoyLGxvYWQ6MSx1bmxvYWQ6MSxiZWZvcmV1bmxvYWQ6MixyZXNpemU6MSxtb3Zl OjEsRE9NQ29udGVudExvYWRlZDoxLHJlYWR5c3RhdGVjaGFuZ2U6MSxlcnJvcjox LGFib3J0OjEsc2Nyb2xsOjF9OwooZnVuY3Rpb24oKXt2YXIgQT1mdW5jdGlvbihC KXt2YXIgQz1CLnJlbGF0ZWRUYXJnZXQ7aWYoQz09dW5kZWZpbmVkKXtyZXR1cm4g dHJ1ZTt9aWYoQz09PWZhbHNlKXtyZXR1cm4gZmFsc2U7fXJldHVybigkdHlwZSh0 aGlzKSE9ImRvY3VtZW50IiYmQyE9dGhpcyYmQy5wcmVmaXghPSJ4dWwiJiYhdGhp cy5oYXNDaGlsZChDKSk7Cn07RWxlbWVudC5FdmVudHM9bmV3IEhhc2goe21vdXNl ZW50ZXI6e2Jhc2U6Im1vdXNlb3ZlciIsY29uZGl0aW9uOkF9LG1vdXNlbGVhdmU6 e2Jhc2U6Im1vdXNlb3V0Iixjb25kaXRpb246QX0sbW91c2V3aGVlbDp7YmFzZToo QnJvd3Nlci5FbmdpbmUuZ2Vja28pPyJET01Nb3VzZVNjcm9sbCI6Im1vdXNld2hl ZWwifX0pOwp9KSgpO0VsZW1lbnQuUHJvcGVydGllcy5zdHlsZXM9e3NldDpmdW5j dGlvbihBKXt0aGlzLnNldFN0eWxlcyhBKTt9fTtFbGVtZW50LlByb3BlcnRpZXMu b3BhY2l0eT17c2V0OmZ1bmN0aW9uKEEsQil7aWYoIUIpe2lmKEE9PTApe2lmKHRo aXMuc3R5bGUudmlzaWJpbGl0eSE9ImhpZGRlbiIpe3RoaXMuc3R5bGUudmlzaWJp bGl0eT0iaGlkZGVuIjsKfX1lbHNle2lmKHRoaXMuc3R5bGUudmlzaWJpbGl0eSE9 InZpc2libGUiKXt0aGlzLnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUiO319fWlm KCF0aGlzLmN1cnJlbnRTdHlsZXx8IXRoaXMuY3VycmVudFN0eWxlLmhhc0xheW91 dCl7dGhpcy5zdHlsZS56b29tPTE7fWlmKEJyb3dzZXIuRW5naW5lLnRyaWRlbnQp e3RoaXMuc3R5bGUuZmlsdGVyPShBPT0xKT8iIjoiYWxwaGEob3BhY2l0eT0iK0Eq MTAwKyIpIjsKfXRoaXMuc3R5bGUub3BhY2l0eT1BO3RoaXMuc3RvcmUoIm9wYWNp dHkiLEEpO30sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmV0cmlldmUoIm9w YWNpdHkiLDEpO319O0VsZW1lbnQuaW1wbGVtZW50KHtzZXRPcGFjaXR5OmZ1bmN0 aW9uKEEpe3JldHVybiB0aGlzLnNldCgib3BhY2l0eSIsQSx0cnVlKTsKfSxnZXRP cGFjaXR5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KCJvcGFjaXR5Iik7fSxz ZXRTdHlsZTpmdW5jdGlvbihCLEEpe3N3aXRjaChCKXtjYXNlIm9wYWNpdHkiOnJl dHVybiB0aGlzLnNldCgib3BhY2l0eSIscGFyc2VGbG9hdChBKSk7Y2FzZSJmbG9h dCI6Qj0oQnJvd3Nlci5FbmdpbmUudHJpZGVudCk/InN0eWxlRmxvYXQiOiJjc3NG bG9hdCI7Cn1CPUIuY2FtZWxDYXNlKCk7aWYoJHR5cGUoQSkhPSJzdHJpbmciKXt2 YXIgQz0oRWxlbWVudC5TdHlsZXMuZ2V0KEIpfHwiQCIpLnNwbGl0KCIgIik7QT0k c3BsYXQoQSkubWFwKGZ1bmN0aW9uKEUsRCl7aWYoIUNbRF0pe3JldHVybiIiO31y ZXR1cm4oJHR5cGUoRSk9PSJudW1iZXIiKT9DW0RdLnJlcGxhY2UoIkAiLE1hdGgu cm91bmQoRSkpOkU7Cn0pLmpvaW4oIiAiKTt9ZWxzZXtpZihBPT1TdHJpbmcoTnVt YmVyKEEpKSl7QT1NYXRoLnJvdW5kKEEpO319dGhpcy5zdHlsZVtCXT1BO3JldHVy biB0aGlzO30sZ2V0U3R5bGU6ZnVuY3Rpb24oRyl7c3dpdGNoKEcpe2Nhc2Uib3Bh Y2l0eSI6cmV0dXJuIHRoaXMuZ2V0KCJvcGFjaXR5Iik7CmNhc2UiZmxvYXQiOkc9 KEJyb3dzZXIuRW5naW5lLnRyaWRlbnQpPyJzdHlsZUZsb2F0IjoiY3NzRmxvYXQi O31HPUcuY2FtZWxDYXNlKCk7dmFyIEE9dGhpcy5zdHlsZVtHXTtpZighJGNoayhB KSl7QT1bXTtmb3IodmFyIEYgaW4gRWxlbWVudC5TaG9ydFN0eWxlcyl7aWYoRyE9 Ril7Y29udGludWU7Cn1mb3IodmFyIEUgaW4gRWxlbWVudC5TaG9ydFN0eWxlc1tG XSl7QS5wdXNoKHRoaXMuZ2V0U3R5bGUoRSkpO31yZXR1cm4gQS5qb2luKCIgIik7 fUE9dGhpcy5nZXRDb21wdXRlZFN0eWxlKEcpO31pZihBKXtBPVN0cmluZyhBKTt2 YXIgQz1BLm1hdGNoKC9yZ2JhP1woW1xkXHMsXStcKS8pOwppZihDKXtBPUEucmVw bGFjZShDWzBdLENbMF0ucmdiVG9IZXgoKSk7fX1pZihCcm93c2VyLkVuZ2luZS5w cmVzdG98fChCcm93c2VyLkVuZ2luZS50cmlkZW50JiYhJGNoayhwYXJzZUludChB KSkpKXtpZihHLnRlc3QoL14oaGVpZ2h0fHdpZHRoKSQvKSl7dmFyIEI9KEc9PSJ3 aWR0aCIpP1sibGVmdCIsInJpZ2h0Il06WyJ0b3AiLCJib3R0b20iXSxEPTA7CkIu ZWFjaChmdW5jdGlvbihIKXtEKz10aGlzLmdldFN0eWxlKCJib3JkZXItIitIKyIt d2lkdGgiKS50b0ludCgpK3RoaXMuZ2V0U3R5bGUoInBhZGRpbmctIitIKS50b0lu dCgpO30sdGhpcyk7cmV0dXJuIHRoaXNbIm9mZnNldCIrRy5jYXBpdGFsaXplKCld LUQrInB4IjsKfWlmKEJyb3dzZXIuRW5naW5lLnByZXN0byYmU3RyaW5nKEEpLnRl c3QoInB4Iikpe3JldHVybiBBO31pZihHLnRlc3QoLyhib3JkZXIoLispV2lkdGh8 bWFyZ2lufHBhZGRpbmcpLykpe3JldHVybiIwcHgiO319cmV0dXJuIEE7fSxzZXRT dHlsZXM6ZnVuY3Rpb24oQil7Zm9yKHZhciBBIGluIEIpe3RoaXMuc2V0U3R5bGUo QSxCW0FdKTsKfXJldHVybiB0aGlzO30sZ2V0U3R5bGVzOmZ1bmN0aW9uKCl7dmFy IEE9e307QXJyYXkuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oQil7QVtCXT10aGlz LmdldFN0eWxlKEIpO30sdGhpcyk7cmV0dXJuIEE7fX0pO0VsZW1lbnQuU3R5bGVz PW5ldyBIYXNoKHtsZWZ0OiJAcHgiLHRvcDoiQHB4Iixib3R0b206IkBweCIscmln aHQ6IkBweCIsd2lkdGg6IkBweCIsaGVpZ2h0OiJAcHgiLG1heFdpZHRoOiJAcHgi LG1heEhlaWdodDoiQHB4IixtaW5XaWR0aDoiQHB4IixtaW5IZWlnaHQ6IkBweCIs YmFja2dyb3VuZENvbG9yOiJyZ2IoQCwgQCwgQCkiLGJhY2tncm91bmRQb3NpdGlv bjoiQHB4IEBweCIsY29sb3I6InJnYihALCBALCBAKSIsZm9udFNpemU6IkBweCIs bGV0dGVyU3BhY2luZzoiQHB4IixsaW5lSGVpZ2h0OiJAcHgiLGNsaXA6InJlY3Qo QHB4IEBweCBAcHggQHB4KSIsbWFyZ2luOiJAcHggQHB4IEBweCBAcHgiLHBhZGRp bmc6IkBweCBAcHggQHB4IEBweCIsYm9yZGVyOiJAcHggQCByZ2IoQCwgQCwgQCkg QHB4IEAgcmdiKEAsIEAsIEApIEBweCBAIHJnYihALCBALCBAKSIsYm9yZGVyV2lk dGg6IkBweCBAcHggQHB4IEBweCIsYm9yZGVyU3R5bGU6IkAgQCBAIEAiLGJvcmRl ckNvbG9yOiJyZ2IoQCwgQCwgQCkgcmdiKEAsIEAsIEApIHJnYihALCBALCBAKSBy Z2IoQCwgQCwgQCkiLHpJbmRleDoiQCIsem9vbToiQCIsZm9udFdlaWdodDoiQCIs dGV4dEluZGVudDoiQHB4IixvcGFjaXR5OiJAIn0pOwpFbGVtZW50LlNob3J0U3R5 bGVzPXttYXJnaW46e30scGFkZGluZzp7fSxib3JkZXI6e30sYm9yZGVyV2lkdGg6 e30sYm9yZGVyU3R5bGU6e30sYm9yZGVyQ29sb3I6e319O1siVG9wIiwiUmlnaHQi LCJCb3R0b20iLCJMZWZ0Il0uZWFjaChmdW5jdGlvbihHKXt2YXIgRj1FbGVtZW50 LlNob3J0U3R5bGVzOwp2YXIgQj1FbGVtZW50LlN0eWxlcztbIm1hcmdpbiIsInBh ZGRpbmciXS5lYWNoKGZ1bmN0aW9uKEgpe3ZhciBJPUgrRztGW0hdW0ldPUJbSV09 IkBweCI7fSk7dmFyIEU9ImJvcmRlciIrRztGLmJvcmRlcltFXT1CW0VdPSJAcHgg QCByZ2IoQCwgQCwgQCkiO3ZhciBEPUUrIldpZHRoIixBPUUrIlN0eWxlIixDPUUr IkNvbG9yIjsKRltFXT17fTtGLmJvcmRlcldpZHRoW0RdPUZbRV1bRF09QltEXT0i QHB4IjtGLmJvcmRlclN0eWxlW0FdPUZbRV1bQV09QltBXT0iQCI7Ri5ib3JkZXJD b2xvcltDXT1GW0VdW0NdPUJbQ109InJnYihALCBALCBAKSI7fSk7KGZ1bmN0aW9u KCl7RWxlbWVudC5pbXBsZW1lbnQoe3Njcm9sbFRvOmZ1bmN0aW9uKEgsSSl7aWYo Qih0aGlzKSl7dGhpcy5nZXRXaW5kb3coKS5zY3JvbGxUbyhILEkpOwp9ZWxzZXt0 aGlzLnNjcm9sbExlZnQ9SDt0aGlzLnNjcm9sbFRvcD1JO31yZXR1cm4gdGhpczt9 LGdldFNpemU6ZnVuY3Rpb24oKXtpZihCKHRoaXMpKXtyZXR1cm4gdGhpcy5nZXRX aW5kb3coKS5nZXRTaXplKCk7fXJldHVybnt4OnRoaXMub2Zmc2V0V2lkdGgseTp0 aGlzLm9mZnNldEhlaWdodH07Cn0sZ2V0U2Nyb2xsU2l6ZTpmdW5jdGlvbigpe2lm KEIodGhpcykpe3JldHVybiB0aGlzLmdldFdpbmRvdygpLmdldFNjcm9sbFNpemUo KTt9cmV0dXJue3g6dGhpcy5zY3JvbGxXaWR0aCx5OnRoaXMuc2Nyb2xsSGVpZ2h0 fTt9LGdldFNjcm9sbDpmdW5jdGlvbigpe2lmKEIodGhpcykpe3JldHVybiB0aGlz LmdldFdpbmRvdygpLmdldFNjcm9sbCgpOwp9cmV0dXJue3g6dGhpcy5zY3JvbGxM ZWZ0LHk6dGhpcy5zY3JvbGxUb3B9O30sZ2V0U2Nyb2xsczpmdW5jdGlvbigpe3Zh ciBJPXRoaXMsSD17eDowLHk6MH07d2hpbGUoSSYmIUIoSSkpe0gueCs9SS5zY3Jv bGxMZWZ0O0gueSs9SS5zY3JvbGxUb3A7ST1JLnBhcmVudE5vZGU7Cn1yZXR1cm4g SDt9LGdldE9mZnNldFBhcmVudDpmdW5jdGlvbigpe3ZhciBIPXRoaXM7aWYoQihI KSl7cmV0dXJuIG51bGw7fWlmKCFCcm93c2VyLkVuZ2luZS50cmlkZW50KXtyZXR1 cm4gSC5vZmZzZXRQYXJlbnQ7fXdoaWxlKChIPUgucGFyZW50Tm9kZSkmJiFCKEgp KXtpZihEKEgsInBvc2l0aW9uIikhPSJzdGF0aWMiKXtyZXR1cm4gSDsKfX1yZXR1 cm4gbnVsbDt9LGdldE9mZnNldHM6ZnVuY3Rpb24oKXt2YXIgST10aGlzLEg9e3g6 MCx5OjB9O2lmKEIodGhpcykpe3JldHVybiBIO313aGlsZShJJiYhQihJKSl7SC54 Kz1JLm9mZnNldExlZnQ7SC55Kz1JLm9mZnNldFRvcDtpZihCcm93c2VyLkVuZ2lu ZS5nZWNrbyl7aWYoIUYoSSkpe0gueCs9QyhJKTsKSC55Kz1HKEkpO312YXIgSj1J LnBhcmVudE5vZGU7aWYoSiYmRChKLCJvdmVyZmxvdyIpIT0idmlzaWJsZSIpe0gu eCs9QyhKKTtILnkrPUcoSik7fX1lbHNle2lmKEkhPXRoaXMmJihCcm93c2VyLkVu Z2luZS50cmlkZW50fHxCcm93c2VyLkVuZ2luZS53ZWJraXQpKXtILngrPUMoSSk7 CkgueSs9RyhJKTt9fUk9SS5vZmZzZXRQYXJlbnQ7aWYoQnJvd3Nlci5FbmdpbmUu dHJpZGVudCl7d2hpbGUoSSYmIUkuY3VycmVudFN0eWxlLmhhc0xheW91dCl7ST1J Lm9mZnNldFBhcmVudDt9fX1pZihCcm93c2VyLkVuZ2luZS5nZWNrbyYmIUYodGhp cykpe0gueC09Qyh0aGlzKTsKSC55LT1HKHRoaXMpO31yZXR1cm4gSDt9LGdldFBv c2l0aW9uOmZ1bmN0aW9uKEspe2lmKEIodGhpcykpe3JldHVybnt4OjAseTowfTt9 dmFyIEw9dGhpcy5nZXRPZmZzZXRzKCksST10aGlzLmdldFNjcm9sbHMoKTt2YXIg SD17eDpMLngtSS54LHk6TC55LUkueX07dmFyIEo9KEsmJihLPSQoSykpKT9LLmdl dFBvc2l0aW9uKCk6e3g6MCx5OjB9OwpyZXR1cm57eDpILngtSi54LHk6SC55LUou eX07fSxnZXRDb29yZGluYXRlczpmdW5jdGlvbihKKXtpZihCKHRoaXMpKXtyZXR1 cm4gdGhpcy5nZXRXaW5kb3coKS5nZXRDb29yZGluYXRlcygpO312YXIgSD10aGlz LmdldFBvc2l0aW9uKEopLEk9dGhpcy5nZXRTaXplKCk7CnZhciBLPXtsZWZ0Okgu eCx0b3A6SC55LHdpZHRoOkkueCxoZWlnaHQ6SS55fTtLLnJpZ2h0PUsubGVmdCtL LndpZHRoO0suYm90dG9tPUsudG9wK0suaGVpZ2h0O3JldHVybiBLO30sY29tcHV0 ZVBvc2l0aW9uOmZ1bmN0aW9uKEgpe3JldHVybntsZWZ0OkgueC1FKHRoaXMsIm1h cmdpbi1sZWZ0IiksdG9wOkgueS1FKHRoaXMsIm1hcmdpbi10b3AiKX07Cn0scG9z aXRpb246ZnVuY3Rpb24oSCl7cmV0dXJuIHRoaXMuc2V0U3R5bGVzKHRoaXMuY29t cHV0ZVBvc2l0aW9uKEgpKTt9fSk7TmF0aXZlLmltcGxlbWVudChbRG9jdW1lbnQs V2luZG93XSx7Z2V0U2l6ZTpmdW5jdGlvbigpe3ZhciBJPXRoaXMuZ2V0V2luZG93 KCk7CmlmKEJyb3dzZXIuRW5naW5lLnByZXN0b3x8QnJvd3Nlci5FbmdpbmUud2Vi a2l0KXtyZXR1cm57eDpJLmlubmVyV2lkdGgseTpJLmlubmVySGVpZ2h0fTt9dmFy IEg9QSh0aGlzKTtyZXR1cm57eDpILmNsaWVudFdpZHRoLHk6SC5jbGllbnRIZWln aHR9O30sZ2V0U2Nyb2xsOmZ1bmN0aW9uKCl7dmFyIEk9dGhpcy5nZXRXaW5kb3co KTsKdmFyIEg9QSh0aGlzKTtyZXR1cm57eDpJLnBhZ2VYT2Zmc2V0fHxILnNjcm9s bExlZnQseTpJLnBhZ2VZT2Zmc2V0fHxILnNjcm9sbFRvcH07fSxnZXRTY3JvbGxT aXplOmZ1bmN0aW9uKCl7dmFyIEk9QSh0aGlzKTt2YXIgSD10aGlzLmdldFNpemUo KTtyZXR1cm57eDpNYXRoLm1heChJLnNjcm9sbFdpZHRoLEgueCkseTpNYXRoLm1h eChJLnNjcm9sbEhlaWdodCxILnkpfTsKfSxnZXRQb3NpdGlvbjpmdW5jdGlvbigp e3JldHVybnt4OjAseTowfTt9LGdldENvb3JkaW5hdGVzOmZ1bmN0aW9uKCl7dmFy IEg9dGhpcy5nZXRTaXplKCk7cmV0dXJue3RvcDowLGxlZnQ6MCxib3R0b206SC55 LHJpZ2h0OkgueCxoZWlnaHQ6SC55LHdpZHRoOkgueH07Cn19KTt2YXIgRD1FbGVt ZW50LmdldENvbXB1dGVkU3R5bGU7ZnVuY3Rpb24gRShILEkpe3JldHVybiBEKEgs SSkudG9JbnQoKXx8MDt9ZnVuY3Rpb24gRihIKXtyZXR1cm4gRChILCItbW96LWJv eC1zaXppbmciKT09ImJvcmRlci1ib3giO31mdW5jdGlvbiBHKEgpe3JldHVybiBF KEgsImJvcmRlci10b3Atd2lkdGgiKTsKfWZ1bmN0aW9uIEMoSCl7cmV0dXJuIEUo SCwiYm9yZGVyLWxlZnQtd2lkdGgiKTt9ZnVuY3Rpb24gQihIKXtyZXR1cm4oL14o Pzpib2R5fGh0bWwpJC9pKS50ZXN0KEgudGFnTmFtZSk7fWZ1bmN0aW9uIEEoSCl7 dmFyIEk9SC5nZXREb2N1bWVudCgpO3JldHVybighSS5jb21wYXRNb2RlfHxJLmNv bXBhdE1vZGU9PSJDU1MxQ29tcGF0Iik/SS5odG1sOkkuYm9keTsKfX0pKCk7TmF0 aXZlLmltcGxlbWVudChbV2luZG93LERvY3VtZW50LEVsZW1lbnRdLHtnZXRIZWln aHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRTaXplKCkueTt9LGdldFdpZHRo OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0U2l6ZSgpLng7fSxnZXRTY3JvbGxU b3A6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRTY3JvbGwoKS55Owp9LGdldFNj cm9sbExlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRTY3JvbGwoKS54O30s Z2V0U2Nyb2xsSGVpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0U2Nyb2xs U2l6ZSgpLnk7fSxnZXRTY3JvbGxXaWR0aDpmdW5jdGlvbigpe3JldHVybiB0aGlz LmdldFNjcm9sbFNpemUoKS54Owp9LGdldFRvcDpmdW5jdGlvbigpe3JldHVybiB0 aGlzLmdldFBvc2l0aW9uKCkueTt9LGdldExlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5nZXRQb3NpdGlvbigpLng7fX0pO05hdGl2ZS5pbXBsZW1lbnQoW0RvY3Vt ZW50LEVsZW1lbnRdLHtnZXRFbGVtZW50czpmdW5jdGlvbihILEcpe0g9SC5zcGxp dCgiLCIpOwp2YXIgQyxFPXt9O2Zvcih2YXIgRD0wLEI9SC5sZW5ndGg7RDxCO0Qr Kyl7dmFyIEE9SFtEXSxGPVNlbGVjdG9ycy5VdGlscy5zZWFyY2godGhpcyxBLEUp O2lmKEQhPTAmJkYuaXRlbSl7Rj0kQShGKTt9Qz0oRD09MCk/RjooQy5pdGVtKT8k QShDKS5jb25jYXQoRik6Qy5jb25jYXQoRik7Cn1yZXR1cm4gbmV3IEVsZW1lbnRz KEMse2RkdXA6KEgubGVuZ3RoPjEpLGNhc2g6IUd9KTt9fSk7RWxlbWVudC5pbXBs ZW1lbnQoe21hdGNoOmZ1bmN0aW9uKEIpe2lmKCFCKXtyZXR1cm4gdHJ1ZTt9dmFy IEQ9U2VsZWN0b3JzLlV0aWxzLnBhcnNlVGFnQW5kSUQoQik7CnZhciBBPURbMF0s RT1EWzFdO2lmKCFTZWxlY3RvcnMuRmlsdGVycy5ieUlEKHRoaXMsRSl8fCFTZWxl Y3RvcnMuRmlsdGVycy5ieVRhZyh0aGlzLEEpKXtyZXR1cm4gZmFsc2U7fXZhciBD PVNlbGVjdG9ycy5VdGlscy5wYXJzZVNlbGVjdG9yKEIpO3JldHVybihDKT9TZWxl Y3RvcnMuVXRpbHMuZmlsdGVyKHRoaXMsQyx7fSk6dHJ1ZTsKfX0pO3ZhciBTZWxl Y3RvcnM9e0NhY2hlOntudGg6e30scGFyc2VkOnt9fX07U2VsZWN0b3JzLlJlZ0V4 cHM9e2lkOigvIyhbXHctXSspLyksdGFnOigvXihcdyt8XCopLykscXVpY2s6KC9e KFx3K3xcKikkLyksc3BsaXR0ZXI6KC9ccyooWys+flxzXSlccyooW2EtekEtWiMu KjpcW10pL2cpLGNvbWJpbmVkOigvXC4oW1x3LV0rKXxcWyhcdyspKD86KFshKl4k fnxdPz0pWyInXT8oLio/KVsiJ10/KT9cXXw6KFtcdy1dKykoPzpcKFsiJ10/KC4q Pyk/WyInXT9cKXwkKS9nKX07ClNlbGVjdG9ycy5VdGlscz17Y2hrOmZ1bmN0aW9u KEIsQyl7aWYoIUMpe3JldHVybiB0cnVlO312YXIgQT0kdWlkKEIpO2lmKCFDW0Fd KXtyZXR1cm4gQ1tBXT10cnVlO31yZXR1cm4gZmFsc2U7fSxwYXJzZU50aEFyZ3Vt ZW50OmZ1bmN0aW9uKEYpe2lmKFNlbGVjdG9ycy5DYWNoZS5udGhbRl0pe3JldHVy biBTZWxlY3RvcnMuQ2FjaGUubnRoW0ZdOwp9dmFyIEM9Ri5tYXRjaCgvXihbKy1d P1xkKik/KFthLXpdKyk/KFsrLV0/XGQqKT8kLyk7aWYoIUMpe3JldHVybiBmYWxz ZTt9dmFyIEU9cGFyc2VJbnQoQ1sxXSk7dmFyIEI9KEV8fEU9PT0wKT9FOjE7dmFy IEQ9Q1syXXx8ZmFsc2U7dmFyIEE9cGFyc2VJbnQoQ1szXSl8fDA7CmlmKEIhPTAp e0EtLTt3aGlsZShBPDEpe0ErPUI7fXdoaWxlKEE+PUIpe0EtPUI7fX1lbHNle0I9 QTtEPSJpbmRleCI7fXN3aXRjaChEKXtjYXNlIm4iOkM9e2E6QixiOkEsc3BlY2lh bDoibiJ9O2JyZWFrO2Nhc2Uib2RkIjpDPXthOjIsYjowLHNwZWNpYWw6Im4ifTsK YnJlYWs7Y2FzZSJldmVuIjpDPXthOjIsYjoxLHNwZWNpYWw6Im4ifTticmVhaztj YXNlImZpcnN0IjpDPXthOjAsc3BlY2lhbDoiaW5kZXgifTticmVhaztjYXNlImxh c3QiOkM9e3NwZWNpYWw6Imxhc3QtY2hpbGQifTticmVhaztjYXNlIm9ubHkiOkM9 e3NwZWNpYWw6Im9ubHktY2hpbGQifTsKYnJlYWs7ZGVmYXVsdDpDPXthOihCLTEp LHNwZWNpYWw6ImluZGV4In07fXJldHVybiBTZWxlY3RvcnMuQ2FjaGUubnRoW0Zd PUM7fSxwYXJzZVNlbGVjdG9yOmZ1bmN0aW9uKEUpe2lmKFNlbGVjdG9ycy5DYWNo ZS5wYXJzZWRbRV0pe3JldHVybiBTZWxlY3RvcnMuQ2FjaGUucGFyc2VkW0VdOwp9 dmFyIEQsSD17Y2xhc3NlczpbXSxwc2V1ZG9zOltdLGF0dHJpYnV0ZXM6W119O3do aWxlKChEPVNlbGVjdG9ycy5SZWdFeHBzLmNvbWJpbmVkLmV4ZWMoRSkpKXt2YXIg ST1EWzFdLEc9RFsyXSxGPURbM10sQj1EWzRdLEM9RFs1XSxKPURbNl07aWYoSSl7 SC5jbGFzc2VzLnB1c2goSSk7Cn1lbHNle2lmKEMpe3ZhciBBPVNlbGVjdG9ycy5Q c2V1ZG8uZ2V0KEMpO2lmKEEpe0gucHNldWRvcy5wdXNoKHtwYXJzZXI6QSxhcmd1 bWVudDpKfSk7fWVsc2V7SC5hdHRyaWJ1dGVzLnB1c2goe25hbWU6QyxvcGVyYXRv cjoiPSIsdmFsdWU6Sn0pO319ZWxzZXtpZihHKXtILmF0dHJpYnV0ZXMucHVzaCh7 bmFtZTpHLG9wZXJhdG9yOkYsdmFsdWU6Qn0pOwp9fX19aWYoIUguY2xhc3Nlcy5s ZW5ndGgpe2RlbGV0ZSBILmNsYXNzZXM7fWlmKCFILmF0dHJpYnV0ZXMubGVuZ3Ro KXtkZWxldGUgSC5hdHRyaWJ1dGVzO31pZighSC5wc2V1ZG9zLmxlbmd0aCl7ZGVs ZXRlIEgucHNldWRvczt9aWYoIUguY2xhc3NlcyYmIUguYXR0cmlidXRlcyYmIUgu cHNldWRvcyl7SD1udWxsOwp9cmV0dXJuIFNlbGVjdG9ycy5DYWNoZS5wYXJzZWRb RV09SDt9LHBhcnNlVGFnQW5kSUQ6ZnVuY3Rpb24oQil7dmFyIEE9Qi5tYXRjaChT ZWxlY3RvcnMuUmVnRXhwcy50YWcpO3ZhciBDPUIubWF0Y2goU2VsZWN0b3JzLlJl Z0V4cHMuaWQpO3JldHVyblsoQSk/QVsxXToiKiIsKEMpP0NbMV06ZmFsc2VdOwp9 LGZpbHRlcjpmdW5jdGlvbihGLEMsRSl7dmFyIEQ7aWYoQy5jbGFzc2VzKXtmb3Io RD1DLmNsYXNzZXMubGVuZ3RoO0QtLTtEKXt2YXIgRz1DLmNsYXNzZXNbRF07aWYo IVNlbGVjdG9ycy5GaWx0ZXJzLmJ5Q2xhc3MoRixHKSl7cmV0dXJuIGZhbHNlO319 fWlmKEMuYXR0cmlidXRlcyl7Zm9yKEQ9Qy5hdHRyaWJ1dGVzLmxlbmd0aDsKRC0t O0Qpe3ZhciBCPUMuYXR0cmlidXRlc1tEXTtpZighU2VsZWN0b3JzLkZpbHRlcnMu YnlBdHRyaWJ1dGUoRixCLm5hbWUsQi5vcGVyYXRvcixCLnZhbHVlKSl7cmV0dXJu IGZhbHNlO319fWlmKEMucHNldWRvcyl7Zm9yKEQ9Qy5wc2V1ZG9zLmxlbmd0aDtE LS07RCl7dmFyIEE9Qy5wc2V1ZG9zW0RdOwppZighU2VsZWN0b3JzLkZpbHRlcnMu YnlQc2V1ZG8oRixBLnBhcnNlcixBLmFyZ3VtZW50LEUpKXtyZXR1cm4gZmFsc2U7 fX19cmV0dXJuIHRydWU7fSxnZXRCeVRhZ0FuZElEOmZ1bmN0aW9uKEIsQSxEKXtp ZihEKXt2YXIgQz0oQi5nZXRFbGVtZW50QnlJZCk/Qi5nZXRFbGVtZW50QnlJZChE LHRydWUpOkVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQoQixELHRydWUpOwpyZXR1cm4o QyYmU2VsZWN0b3JzLkZpbHRlcnMuYnlUYWcoQyxBKSk/W0NdOltdO31lbHNle3Jl dHVybiBCLmdldEVsZW1lbnRzQnlUYWdOYW1lKEEpO319LHNlYXJjaDpmdW5jdGlv bihKLEksTyl7dmFyIEI9W107dmFyIEM9SS50cmltKCkucmVwbGFjZShTZWxlY3Rv cnMuUmVnRXhwcy5zcGxpdHRlcixmdW5jdGlvbihaLFksWCl7Qi5wdXNoKFkpOwpy ZXR1cm4iOikiK1g7fSkuc3BsaXQoIjopIik7dmFyIEssRixFLFY7Zm9yKHZhciBV PTAsUT1DLmxlbmd0aDtVPFE7VSsrKXt2YXIgVD1DW1VdO2lmKFU9PTAmJlNlbGVj dG9ycy5SZWdFeHBzLnF1aWNrLnRlc3QoVCkpe0s9Si5nZXRFbGVtZW50c0J5VGFn TmFtZShUKTsKY29udGludWU7fXZhciBBPUJbVS0xXTt2YXIgTD1TZWxlY3RvcnMu VXRpbHMucGFyc2VUYWdBbmRJRChUKTt2YXIgVz1MWzBdLE09TFsxXTtpZihVPT0w KXtLPVNlbGVjdG9ycy5VdGlscy5nZXRCeVRhZ0FuZElEKEosVyxNKTt9ZWxzZXt2 YXIgRD17fSxIPVtdO2Zvcih2YXIgUz0wLFI9Sy5sZW5ndGg7ClM8UjtTKyspe0g9 U2VsZWN0b3JzLkdldHRlcnNbQV0oSCxLW1NdLFcsTSxEKTt9Sz1IO312YXIgRz1T ZWxlY3RvcnMuVXRpbHMucGFyc2VTZWxlY3RvcihUKTtpZihHKXtFPVtdO2Zvcih2 YXIgUD0wLE49Sy5sZW5ndGg7UDxOO1ArKyl7Vj1LW1BdO2lmKFNlbGVjdG9ycy5V dGlscy5maWx0ZXIoVixHLE8pKXtFLnB1c2goVik7Cn19Sz1FO319cmV0dXJuIEs7 fX07U2VsZWN0b3JzLkdldHRlcnM9eyIgIjpmdW5jdGlvbihILEcsSSxBLEUpe3Zh ciBEPVNlbGVjdG9ycy5VdGlscy5nZXRCeVRhZ0FuZElEKEcsSSxBKTtmb3IodmFy IEM9MCxCPUQubGVuZ3RoO0M8QjtDKyspe3ZhciBGPURbQ107aWYoU2VsZWN0b3Jz LlV0aWxzLmNoayhGLEUpKXtILnB1c2goRik7Cn19cmV0dXJuIEg7fSwiPiI6ZnVu Y3Rpb24oSCxHLEksQSxGKXt2YXIgQz1TZWxlY3RvcnMuVXRpbHMuZ2V0QnlUYWdB bmRJRChHLEksQSk7Zm9yKHZhciBFPTAsRD1DLmxlbmd0aDtFPEQ7RSsrKXt2YXIg Qj1DW0VdO2lmKEIucGFyZW50Tm9kZT09RyYmU2VsZWN0b3JzLlV0aWxzLmNoayhC LEYpKXtILnB1c2goQik7Cn19cmV0dXJuIEg7fSwiKyI6ZnVuY3Rpb24oQyxCLEEs RSxEKXt3aGlsZSgoQj1CLm5leHRTaWJsaW5nKSl7aWYoQi5ub2RlVHlwZT09MSl7 aWYoU2VsZWN0b3JzLlV0aWxzLmNoayhCLEQpJiZTZWxlY3RvcnMuRmlsdGVycy5i eVRhZyhCLEEpJiZTZWxlY3RvcnMuRmlsdGVycy5ieUlEKEIsRSkpe0MucHVzaChC KTsKfWJyZWFrO319cmV0dXJuIEM7fSwifiI6ZnVuY3Rpb24oQyxCLEEsRSxEKXt3 aGlsZSgoQj1CLm5leHRTaWJsaW5nKSl7aWYoQi5ub2RlVHlwZT09MSl7aWYoIVNl bGVjdG9ycy5VdGlscy5jaGsoQixEKSl7YnJlYWs7fWlmKFNlbGVjdG9ycy5GaWx0 ZXJzLmJ5VGFnKEIsQSkmJlNlbGVjdG9ycy5GaWx0ZXJzLmJ5SUQoQixFKSl7Qy5w dXNoKEIpOwp9fX1yZXR1cm4gQzt9fTtTZWxlY3RvcnMuRmlsdGVycz17YnlUYWc6 ZnVuY3Rpb24oQixBKXtyZXR1cm4oQT09IioifHwoQi50YWdOYW1lJiZCLnRhZ05h bWUudG9Mb3dlckNhc2UoKT09QSkpO30sYnlJRDpmdW5jdGlvbihBLEIpe3JldHVy bighQnx8KEEuaWQmJkEuaWQ9PUIpKTsKfSxieUNsYXNzOmZ1bmN0aW9uKEIsQSl7 cmV0dXJuKEIuY2xhc3NOYW1lJiZCLmNsYXNzTmFtZS5jb250YWlucyhBLCIgIikp O30sYnlQc2V1ZG86ZnVuY3Rpb24oQSxELEMsQil7cmV0dXJuIEQuY2FsbChBLEMs Qik7fSxieUF0dHJpYnV0ZTpmdW5jdGlvbihDLEQsQixFKXt2YXIgQT1FbGVtZW50 LnByb3RvdHlwZS5nZXRQcm9wZXJ0eS5jYWxsKEMsRCk7CmlmKCFBKXtyZXR1cm4g ZmFsc2U7fWlmKCFCfHxFPT11bmRlZmluZWQpe3JldHVybiB0cnVlO31zd2l0Y2go Qil7Y2FzZSI9IjpyZXR1cm4oQT09RSk7Y2FzZSIqPSI6cmV0dXJuKEEuY29udGFp bnMoRSkpO2Nhc2UiXj0iOnJldHVybihBLnN1YnN0cigwLEUubGVuZ3RoKT09RSk7 CmNhc2UiJD0iOnJldHVybihBLnN1YnN0cihBLmxlbmd0aC1FLmxlbmd0aCk9PUUp O2Nhc2UiIT0iOnJldHVybihBIT1FKTtjYXNlIn49IjpyZXR1cm4gQS5jb250YWlu cyhFLCIgIik7Y2FzZSJ8PSI6cmV0dXJuIEEuY29udGFpbnMoRSwiLSIpO31yZXR1 cm4gZmFsc2U7Cn19O1NlbGVjdG9ycy5Qc2V1ZG89bmV3IEhhc2goe2VtcHR5OmZ1 bmN0aW9uKCl7cmV0dXJuICEodGhpcy5pbm5lclRleHR8fHRoaXMudGV4dENvbnRl bnR8fCIiKS5sZW5ndGg7fSxub3Q6ZnVuY3Rpb24oQSl7cmV0dXJuICFFbGVtZW50 Lm1hdGNoKHRoaXMsQSk7fSxjb250YWluczpmdW5jdGlvbihBKXtyZXR1cm4odGhp cy5pbm5lclRleHR8fHRoaXMudGV4dENvbnRlbnR8fCIiKS5jb250YWlucyhBKTsK fSwiZmlyc3QtY2hpbGQiOmZ1bmN0aW9uKCl7cmV0dXJuIFNlbGVjdG9ycy5Qc2V1 ZG8uaW5kZXguY2FsbCh0aGlzLDApO30sImxhc3QtY2hpbGQiOmZ1bmN0aW9uKCl7 dmFyIEE9dGhpczt3aGlsZSgoQT1BLm5leHRTaWJsaW5nKSl7aWYoQS5ub2RlVHlw ZT09MSl7cmV0dXJuIGZhbHNlOwp9fXJldHVybiB0cnVlO30sIm9ubHktY2hpbGQi OmZ1bmN0aW9uKCl7dmFyIEI9dGhpczt3aGlsZSgoQj1CLnByZXZpb3VzU2libGlu Zykpe2lmKEIubm9kZVR5cGU9PTEpe3JldHVybiBmYWxzZTt9fXZhciBBPXRoaXM7 d2hpbGUoKEE9QS5uZXh0U2libGluZykpe2lmKEEubm9kZVR5cGU9PTEpe3JldHVy biBmYWxzZTsKfX1yZXR1cm4gdHJ1ZTt9LCJudGgtY2hpbGQiOmZ1bmN0aW9uKEcs RSl7Rz0oRz09dW5kZWZpbmVkKT8ibiI6Rzt2YXIgQz1TZWxlY3RvcnMuVXRpbHMu cGFyc2VOdGhBcmd1bWVudChHKTtpZihDLnNwZWNpYWwhPSJuIil7cmV0dXJuIFNl bGVjdG9ycy5Qc2V1ZG9bQy5zcGVjaWFsXS5jYWxsKHRoaXMsQy5hLEUpOwp9dmFy IEY9MDtFLnBvc2l0aW9ucz1FLnBvc2l0aW9uc3x8e307dmFyIEQ9JHVpZCh0aGlz KTtpZighRS5wb3NpdGlvbnNbRF0pe3ZhciBCPXRoaXM7d2hpbGUoKEI9Qi5wcmV2 aW91c1NpYmxpbmcpKXtpZihCLm5vZGVUeXBlIT0xKXtjb250aW51ZTt9RisrO3Zh ciBBPUUucG9zaXRpb25zWyR1aWQoQildOwppZihBIT11bmRlZmluZWQpe0Y9QStG O2JyZWFrO319RS5wb3NpdGlvbnNbRF09Rjt9cmV0dXJuKEUucG9zaXRpb25zW0Rd JUMuYT09Qy5iKTt9LGluZGV4OmZ1bmN0aW9uKEEpe3ZhciBCPXRoaXMsQz0wO3do aWxlKChCPUIucHJldmlvdXNTaWJsaW5nKSl7aWYoQi5ub2RlVHlwZT09MSYmKytD PkEpe3JldHVybiBmYWxzZTsKfX1yZXR1cm4oQz09QSk7fSxldmVuOmZ1bmN0aW9u KEIsQSl7cmV0dXJuIFNlbGVjdG9ycy5Qc2V1ZG9bIm50aC1jaGlsZCJdLmNhbGwo dGhpcywiMm4rMSIsQSk7fSxvZGQ6ZnVuY3Rpb24oQixBKXtyZXR1cm4gU2VsZWN0 b3JzLlBzZXVkb1sibnRoLWNoaWxkIl0uY2FsbCh0aGlzLCIybiIsQSk7Cn19KTtF bGVtZW50LkV2ZW50cy5kb21yZWFkeT17b25BZGQ6ZnVuY3Rpb24oQSl7aWYoQnJv d3Nlci5sb2FkZWQpe0EuY2FsbCh0aGlzKTt9fX07KGZ1bmN0aW9uKCl7dmFyIEI9 ZnVuY3Rpb24oKXtpZihCcm93c2VyLmxvYWRlZCl7cmV0dXJuIDt9QnJvd3Nlci5s b2FkZWQ9dHJ1ZTsKd2luZG93LmZpcmVFdmVudCgiZG9tcmVhZHkiKTtkb2N1bWVu dC5maXJlRXZlbnQoImRvbXJlYWR5Iik7fTtzd2l0Y2goQnJvd3Nlci5FbmdpbmUu bmFtZSl7Y2FzZSJ3ZWJraXQiOihmdW5jdGlvbigpeyhbImxvYWRlZCIsImNvbXBs ZXRlIl0uY29udGFpbnMoZG9jdW1lbnQucmVhZHlTdGF0ZSkpP0IoKTphcmd1bWVu dHMuY2FsbGVlLmRlbGF5KDUwKTsKfSkoKTticmVhaztjYXNlInRyaWRlbnQiOnZh ciBBPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOyhmdW5jdGlvbigpeygk dHJ5KGZ1bmN0aW9uKCl7QS5kb1Njcm9sbCgibGVmdCIpO3JldHVybiAkKEEpLmlu amVjdChkb2N1bWVudC5ib2R5KS5zZXQoImh0bWwiLCJ0ZW1wIikuZGlzcG9zZSgp Owp9KSk/QigpOmFyZ3VtZW50cy5jYWxsZWUuZGVsYXkoNTApO30pKCk7YnJlYWs7 ZGVmYXVsdDp3aW5kb3cuYWRkRXZlbnQoImxvYWQiLEIpO2RvY3VtZW50LmFkZEV2 ZW50KCJET01Db250ZW50TG9hZGVkIixCKTt9fSkoKTt2YXIgSlNPTj1uZXcgSGFz aCh7ZW5jb2RlOmZ1bmN0aW9uKEIpe3N3aXRjaCgkdHlwZShCKSl7Y2FzZSJzdHJp bmciOnJldHVybiciJytCLnJlcGxhY2UoL1tceDAwLVx4MWZcXCJdL2csSlNPTi4k cmVwbGFjZUNoYXJzKSsnIic7CmNhc2UiYXJyYXkiOnJldHVybiJbIitTdHJpbmco Qi5tYXAoSlNPTi5lbmNvZGUpLmZpbHRlcigkZGVmaW5lZCkpKyJdIjtjYXNlIm9i amVjdCI6Y2FzZSJoYXNoIjp2YXIgQT1bXTtIYXNoLmVhY2goQixmdW5jdGlvbihF LEQpe3ZhciBDPUpTT04uZW5jb2RlKEUpO2lmKEMpe0EucHVzaChKU09OLmVuY29k ZShEKSsiOiIrQyk7Cn19KTtyZXR1cm4ieyIrQSsifSI7Y2FzZSJudW1iZXIiOmNh c2UiYm9vbGVhbiI6cmV0dXJuIFN0cmluZyhCKTtjYXNlIGZhbHNlOnJldHVybiJu dWxsIjt9cmV0dXJuIG51bGw7fSwkc3BlY2lhbENoYXJzOnsiXGIiOiJcXGIiLCJc dCI6IlxcdCIsIlxuIjoiXFxuIiwiXGYiOiJcXGYiLCJcciI6IlxcciIsJyInOidc XCInLCJcXCI6IlxcXFwifSwkcmVwbGFjZUNoYXJzOmZ1bmN0aW9uKEEpe3JldHVy biBKU09OLiRzcGVjaWFsQ2hhcnNbQV18fCJcXHUwMCIrTWF0aC5mbG9vcihBLmNo YXJDb2RlQXQoKS8xNikudG9TdHJpbmcoMTYpKyhBLmNoYXJDb2RlQXQoKSUxNiku dG9TdHJpbmcoMTYpOwp9LGRlY29kZTpmdW5jdGlvbihzdHJpbmcsc2VjdXJlKXtp ZigkdHlwZShzdHJpbmcpIT0ic3RyaW5nInx8IXN0cmluZy5sZW5ndGgpe3JldHVy biBudWxsO31pZihzZWN1cmUmJiEoL15bLDp7fVxbXF0wLTkuXC0rRWFlZmxuci11 IFxuXHJcdF0qJC8pLnRlc3Qoc3RyaW5nLnJlcGxhY2UoL1xcLi9nLCJAIikucmVw bGFjZSgvIlteIlxcXG5ccl0qIi9nLCIiKSkpe3JldHVybiBudWxsOwp9cmV0dXJu IGV2YWwoIigiK3N0cmluZysiKSIpO319KTtOYXRpdmUuaW1wbGVtZW50KFtIYXNo LEFycmF5LFN0cmluZyxOdW1iZXJdLHt0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm4g SlNPTi5lbmNvZGUodGhpcyk7fX0pO3ZhciBDb29raWU9bmV3IENsYXNzKHtJbXBs ZW1lbnRzOk9wdGlvbnMsb3B0aW9uczp7cGF0aDpmYWxzZSxkb21haW46ZmFsc2Us ZHVyYXRpb246ZmFsc2Usc2VjdXJlOmZhbHNlLGRvY3VtZW50OmRvY3VtZW50fSxp bml0aWFsaXplOmZ1bmN0aW9uKEIsQSl7dGhpcy5rZXk9QjsKdGhpcy5zZXRPcHRp b25zKEEpO30sd3JpdGU6ZnVuY3Rpb24oQil7Qj1lbmNvZGVVUklDb21wb25lbnQo Qik7aWYodGhpcy5vcHRpb25zLmRvbWFpbil7Qis9IjsgZG9tYWluPSIrdGhpcy5v cHRpb25zLmRvbWFpbjt9aWYodGhpcy5vcHRpb25zLnBhdGgpe0IrPSI7IHBhdGg9 Iit0aGlzLm9wdGlvbnMucGF0aDsKfWlmKHRoaXMub3B0aW9ucy5kdXJhdGlvbil7 dmFyIEE9bmV3IERhdGUoKTtBLnNldFRpbWUoQS5nZXRUaW1lKCkrdGhpcy5vcHRp b25zLmR1cmF0aW9uKjI0KjYwKjYwKjEwMDApO0IrPSI7IGV4cGlyZXM9IitBLnRv R01UU3RyaW5nKCk7fWlmKHRoaXMub3B0aW9ucy5zZWN1cmUpe0IrPSI7IHNlY3Vy ZSI7Cn10aGlzLm9wdGlvbnMuZG9jdW1lbnQuY29va2llPXRoaXMua2V5KyI9IitC O3JldHVybiB0aGlzO30scmVhZDpmdW5jdGlvbigpe3ZhciBBPXRoaXMub3B0aW9u cy5kb2N1bWVudC5jb29raWUubWF0Y2goIig/Ol58OylcXHMqIit0aGlzLmtleS5l c2NhcGVSZWdFeHAoKSsiPShbXjtdKikiKTsKcmV0dXJuKEEpP2RlY29kZVVSSUNv bXBvbmVudChBWzFdKTpudWxsO30sZGlzcG9zZTpmdW5jdGlvbigpe25ldyBDb29r aWUodGhpcy5rZXksJG1lcmdlKHRoaXMub3B0aW9ucyx7ZHVyYXRpb246LTF9KSku d3JpdGUoIiIpO3JldHVybiB0aGlzO319KTtDb29raWUud3JpdGU9ZnVuY3Rpb24o QixDLEEpe3JldHVybiBuZXcgQ29va2llKEIsQSkud3JpdGUoQyk7Cn07Q29va2ll LnJlYWQ9ZnVuY3Rpb24oQSl7cmV0dXJuIG5ldyBDb29raWUoQSkucmVhZCgpO307 Q29va2llLmRpc3Bvc2U9ZnVuY3Rpb24oQixBKXtyZXR1cm4gbmV3IENvb2tpZShC LEEpLmRpc3Bvc2UoKTt9O3ZhciBTd2lmZj1uZXcgQ2xhc3Moe0ltcGxlbWVudHM6 W09wdGlvbnNdLG9wdGlvbnM6e2lkOm51bGwsaGVpZ2h0OjEsd2lkdGg6MSxjb250 YWluZXI6bnVsbCxwcm9wZXJ0aWVzOnt9LHBhcmFtczp7cXVhbGl0eToiaGlnaCIs YWxsb3dTY3JpcHRBY2Nlc3M6ImFsd2F5cyIsd01vZGU6InRyYW5zcGFyZW50Iixz d0xpdmVDb25uZWN0OnRydWV9LGNhbGxCYWNrczp7fSx2YXJzOnt9fSx0b0VsZW1l bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vYmplY3Q7Cn0saW5pdGlhbGl6ZTpm dW5jdGlvbihMLE0pe3RoaXMuaW5zdGFuY2U9IlN3aWZmXyIrJHRpbWUoKTt0aGlz LnNldE9wdGlvbnMoTSk7TT10aGlzLm9wdGlvbnM7dmFyIEI9dGhpcy5pZD1NLmlk fHx0aGlzLmluc3RhbmNlO3ZhciBBPSQoTS5jb250YWluZXIpO1N3aWZmLkNhbGxC YWNrc1t0aGlzLmluc3RhbmNlXT17fTsKdmFyIEU9TS5wYXJhbXMsRz1NLnZhcnMs Rj1NLmNhbGxCYWNrczt2YXIgSD0kZXh0ZW5kKHtoZWlnaHQ6TS5oZWlnaHQsd2lk dGg6TS53aWR0aH0sTS5wcm9wZXJ0aWVzKTt2YXIgSz10aGlzO2Zvcih2YXIgRCBp biBGKXtTd2lmZi5DYWxsQmFja3NbdGhpcy5pbnN0YW5jZV1bRF09KGZ1bmN0aW9u KE4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBOLmFwcGx5KEsub2JqZWN0LGFy Z3VtZW50cyk7Cn07fSkoRltEXSk7R1tEXT0iU3dpZmYuQ2FsbEJhY2tzLiIrdGhp cy5pbnN0YW5jZSsiLiIrRDt9RS5mbGFzaFZhcnM9SGFzaC50b1F1ZXJ5U3RyaW5n KEcpO2lmKEJyb3dzZXIuRW5naW5lLnRyaWRlbnQpe0guY2xhc3NpZD0iY2xzaWQ6 RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIjsKRS5tb3ZpZT1M O31lbHNle0gudHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giO0gu ZGF0YT1MO312YXIgSj0nPG9iamVjdCBpZD0iJytCKyciJztmb3IodmFyIEkgaW4g SCl7Sis9IiAiK0krJz0iJytIW0ldKyciJzt9Sis9Ij4iO2Zvcih2YXIgQyBpbiBF KXtpZihFW0NdKXtKKz0nPHBhcmFtIG5hbWU9IicrQysnIiB2YWx1ZT0iJytFW0Nd KyciIC8+JzsKfX1KKz0iPC9vYmplY3Q+Ijt0aGlzLm9iamVjdD0oKEEpP0EuZW1w dHkoKTpuZXcgRWxlbWVudCgiZGl2IikpLnNldCgiaHRtbCIsSikuZmlyc3RDaGls ZDt9LHJlcGxhY2VzOmZ1bmN0aW9uKEEpe0E9JChBLHRydWUpO0EucGFyZW50Tm9k ZS5yZXBsYWNlQ2hpbGQodGhpcy50b0VsZW1lbnQoKSxBKTsKcmV0dXJuIHRoaXM7 fSxpbmplY3Q6ZnVuY3Rpb24oQSl7JChBLHRydWUpLmFwcGVuZENoaWxkKHRoaXMu dG9FbGVtZW50KCkpO3JldHVybiB0aGlzO30scmVtb3RlOmZ1bmN0aW9uKCl7cmV0 dXJuIFN3aWZmLnJlbW90ZS5hcHBseShTd2lmZixbdGhpcy50b0VsZW1lbnQoKV0u ZXh0ZW5kKGFyZ3VtZW50cykpOwp9fSk7U3dpZmYuQ2FsbEJhY2tzPXt9O1N3aWZm LnJlbW90ZT1mdW5jdGlvbihvYmosZm4pe3ZhciBycz1vYmouQ2FsbEZ1bmN0aW9u KCc8aW52b2tlIG5hbWU9IicrZm4rJyIgcmV0dXJudHlwZT0iamF2YXNjcmlwdCI+ JytfX2ZsYXNoX19hcmd1bWVudHNUb1hNTChhcmd1bWVudHMsMikrIjwvaW52b2tl PiIpOwpyZXR1cm4gZXZhbChycyk7fTt2YXIgRng9bmV3IENsYXNzKHtJbXBsZW1l bnRzOltDaGFpbixFdmVudHMsT3B0aW9uc10sb3B0aW9uczp7ZnBzOjUwLHVuaXQ6 ZmFsc2UsZHVyYXRpb246NTAwLGxpbms6Imlnbm9yZSIsdHJhbnNpdGlvbjpmdW5j dGlvbihBKXtyZXR1cm4gLShNYXRoLmNvcyhNYXRoLlBJKkEpLTEpLzI7Cn19LGlu aXRpYWxpemU6ZnVuY3Rpb24oQSl7dGhpcy5zdWJqZWN0PXRoaXMuc3ViamVjdHx8 dGhpczt0aGlzLnNldE9wdGlvbnMoQSk7dGhpcy5vcHRpb25zLmR1cmF0aW9uPUZ4 LkR1cmF0aW9uc1t0aGlzLm9wdGlvbnMuZHVyYXRpb25dfHx0aGlzLm9wdGlvbnMu ZHVyYXRpb24udG9JbnQoKTsKdmFyIEI9dGhpcy5vcHRpb25zLndhaXQ7aWYoQj09 PWZhbHNlKXt0aGlzLm9wdGlvbnMubGluaz0iY2FuY2VsIjt9fSxzdGVwOmZ1bmN0 aW9uKCl7dmFyIEE9JHRpbWUoKTtpZihBPHRoaXMudGltZSt0aGlzLm9wdGlvbnMu ZHVyYXRpb24pe3ZhciBCPXRoaXMub3B0aW9ucy50cmFuc2l0aW9uKChBLXRoaXMu dGltZSkvdGhpcy5vcHRpb25zLmR1cmF0aW9uKTsKdGhpcy5zZXQodGhpcy5jb21w dXRlKHRoaXMuZnJvbSx0aGlzLnRvLEIpKTt9ZWxzZXt0aGlzLnNldCh0aGlzLmNv bXB1dGUodGhpcy5mcm9tLHRoaXMudG8sMSkpO3RoaXMuY29tcGxldGUoKTt9fSxz ZXQ6ZnVuY3Rpb24oQSl7cmV0dXJuIEE7fSxjb21wdXRlOmZ1bmN0aW9uKEMsQixB KXtyZXR1cm4gRnguY29tcHV0ZShDLEIsQSk7Cn0sY2hlY2s6ZnVuY3Rpb24oQSl7 aWYoIXRoaXMudGltZXIpe3JldHVybiB0cnVlO31zd2l0Y2godGhpcy5vcHRpb25z Lmxpbmspe2Nhc2UiY2FuY2VsIjp0aGlzLmNhbmNlbCgpO3JldHVybiB0cnVlO2Nh c2UiY2hhaW4iOnRoaXMuY2hhaW4oQS5iaW5kKHRoaXMsQXJyYXkuc2xpY2UoYXJn dW1lbnRzLDEpKSk7CnJldHVybiBmYWxzZTt9cmV0dXJuIGZhbHNlO30sc3RhcnQ6 ZnVuY3Rpb24oQixBKXtpZighdGhpcy5jaGVjayhhcmd1bWVudHMuY2FsbGVlLEIs QSkpe3JldHVybiB0aGlzO310aGlzLmZyb209Qjt0aGlzLnRvPUE7dGhpcy50aW1l PTA7dGhpcy5zdGFydFRpbWVyKCk7CnRoaXMub25TdGFydCgpO3JldHVybiB0aGlz O30sY29tcGxldGU6ZnVuY3Rpb24oKXtpZih0aGlzLnN0b3BUaW1lcigpKXt0aGlz Lm9uQ29tcGxldGUoKTt9cmV0dXJuIHRoaXM7fSxjYW5jZWw6ZnVuY3Rpb24oKXtp Zih0aGlzLnN0b3BUaW1lcigpKXt0aGlzLm9uQ2FuY2VsKCk7Cn1yZXR1cm4gdGhp czt9LG9uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLmZpcmVFdmVudCgic3RhcnQiLHRo aXMuc3ViamVjdCk7fSxvbkNvbXBsZXRlOmZ1bmN0aW9uKCl7dGhpcy5maXJlRXZl bnQoImNvbXBsZXRlIix0aGlzLnN1YmplY3QpO2lmKCF0aGlzLmNhbGxDaGFpbigp KXt0aGlzLmZpcmVFdmVudCgiY2hhaW5Db21wbGV0ZSIsdGhpcy5zdWJqZWN0KTsK fX0sb25DYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLmZpcmVFdmVudCgiY2FuY2VsIix0 aGlzLnN1YmplY3QpLmNsZWFyQ2hhaW4oKTt9LHBhdXNlOmZ1bmN0aW9uKCl7dGhp cy5zdG9wVGltZXIoKTtyZXR1cm4gdGhpczt9LHJlc3VtZTpmdW5jdGlvbigpe3Ro aXMuc3RhcnRUaW1lcigpOwpyZXR1cm4gdGhpczt9LHN0b3BUaW1lcjpmdW5jdGlv bigpe2lmKCF0aGlzLnRpbWVyKXtyZXR1cm4gZmFsc2U7fXRoaXMudGltZT0kdGlt ZSgpLXRoaXMudGltZTt0aGlzLnRpbWVyPSRjbGVhcih0aGlzLnRpbWVyKTtyZXR1 cm4gdHJ1ZTt9LHN0YXJ0VGltZXI6ZnVuY3Rpb24oKXtpZih0aGlzLnRpbWVyKXty ZXR1cm4gZmFsc2U7Cn10aGlzLnRpbWU9JHRpbWUoKS10aGlzLnRpbWU7dGhpcy50 aW1lcj10aGlzLnN0ZXAucGVyaW9kaWNhbChNYXRoLnJvdW5kKDEwMDAvdGhpcy5v cHRpb25zLmZwcyksdGhpcyk7cmV0dXJuIHRydWU7fX0pO0Z4LmNvbXB1dGU9ZnVu Y3Rpb24oQyxCLEEpe3JldHVybihCLUMpKkErQzsKfTtGeC5EdXJhdGlvbnM9eyJz aG9ydCI6MjUwLG5vcm1hbDo1MDAsImxvbmciOjEwMDB9O0Z4LkNTUz1uZXcgQ2xh c3Moe0V4dGVuZHM6RngscHJlcGFyZTpmdW5jdGlvbihELEUsQil7Qj0kc3BsYXQo Qik7dmFyIEM9QlsxXTtpZighJGNoayhDKSl7QlsxXT1CWzBdOwpCWzBdPUQuZ2V0 U3R5bGUoRSk7fXZhciBBPUIubWFwKHRoaXMucGFyc2UpO3JldHVybntmcm9tOkFb MF0sdG86QVsxXX07fSxwYXJzZTpmdW5jdGlvbihBKXtBPSRsYW1iZGEoQSkoKTtB PSh0eXBlb2YgQT09InN0cmluZyIpP0Euc3BsaXQoIiAiKTokc3BsYXQoQSk7CnJl dHVybiBBLm1hcChmdW5jdGlvbihDKXtDPVN0cmluZyhDKTt2YXIgQj1mYWxzZTtG eC5DU1MuUGFyc2Vycy5lYWNoKGZ1bmN0aW9uKEYsRSl7aWYoQil7cmV0dXJuIDt9 dmFyIEQ9Ri5wYXJzZShDKTtpZigkY2hrKEQpKXtCPXt2YWx1ZTpELHBhcnNlcjpG fTt9fSk7CkI9Qnx8e3ZhbHVlOkMscGFyc2VyOkZ4LkNTUy5QYXJzZXJzLlN0cmlu Z307cmV0dXJuIEI7fSk7fSxjb21wdXRlOmZ1bmN0aW9uKEQsQyxCKXt2YXIgQT1b XTsoTWF0aC5taW4oRC5sZW5ndGgsQy5sZW5ndGgpKS50aW1lcyhmdW5jdGlvbihF KXtBLnB1c2goe3ZhbHVlOkRbRV0ucGFyc2VyLmNvbXB1dGUoRFtFXS52YWx1ZSxD W0VdLnZhbHVlLEIpLHBhcnNlcjpEW0VdLnBhcnNlcn0pOwp9KTtBLiRmYW1pbHk9 e25hbWU6ImZ4OmNzczp2YWx1ZSJ9O3JldHVybiBBO30sc2VydmU6ZnVuY3Rpb24o QyxCKXtpZigkdHlwZShDKSE9ImZ4OmNzczp2YWx1ZSIpe0M9dGhpcy5wYXJzZShD KTt9dmFyIEE9W107Qy5lYWNoKGZ1bmN0aW9uKEQpe0E9QS5jb25jYXQoRC5wYXJz ZXIuc2VydmUoRC52YWx1ZSxCKSk7Cn0pO3JldHVybiBBO30scmVuZGVyOmZ1bmN0 aW9uKEEsRCxDLEIpe0Euc2V0U3R5bGUoRCx0aGlzLnNlcnZlKEMsQikpO30sc2Vh cmNoOmZ1bmN0aW9uKEEpe2lmKEZ4LkNTUy5DYWNoZVtBXSl7cmV0dXJuIEZ4LkNT Uy5DYWNoZVtBXTt9dmFyIEI9e307QXJyYXkuZWFjaChkb2N1bWVudC5zdHlsZVNo ZWV0cyxmdW5jdGlvbihFLEQpe3ZhciBDPUUuaHJlZjsKaWYoQyYmQy5jb250YWlu cygiOi8vIikmJiFDLmNvbnRhaW5zKGRvY3VtZW50LmRvbWFpbikpe3JldHVybiA7 fXZhciBGPUUucnVsZXN8fEUuY3NzUnVsZXM7QXJyYXkuZWFjaChGLGZ1bmN0aW9u KEksRyl7aWYoIUkuc3R5bGUpe3JldHVybiA7fXZhciBIPShJLnNlbGVjdG9yVGV4 dCk/SS5zZWxlY3RvclRleHQucmVwbGFjZSgvXlx3Ky8sZnVuY3Rpb24oSil7cmV0 dXJuIEoudG9Mb3dlckNhc2UoKTsKfSk6bnVsbDtpZighSHx8IUgudGVzdCgiXiIr QSsiJCIpKXtyZXR1cm4gO31FbGVtZW50LlN0eWxlcy5lYWNoKGZ1bmN0aW9uKEss Sil7aWYoIUkuc3R5bGVbSl18fEVsZW1lbnQuU2hvcnRTdHlsZXNbSl0pe3JldHVy biA7fUs9U3RyaW5nKEkuc3R5bGVbSl0pO0JbSl09KEsudGVzdCgvXnJnYi8pKT9L LnJnYlRvSGV4KCk6SzsKfSk7fSk7fSk7cmV0dXJuIEZ4LkNTUy5DYWNoZVtBXT1C O319KTtGeC5DU1MuQ2FjaGU9e307RnguQ1NTLlBhcnNlcnM9bmV3IEhhc2goe0Nv bG9yOntwYXJzZTpmdW5jdGlvbihBKXtpZihBLm1hdGNoKC9eI1swLTlhLWZdezMs Nn0kL2kpKXtyZXR1cm4gQS5oZXhUb1JnYih0cnVlKTsKfXJldHVybigoQT1BLm1h dGNoKC8oXGQrKSxccyooXGQrKSxccyooXGQrKS8pKSk/W0FbMV0sQVsyXSxBWzNd XTpmYWxzZTt9LGNvbXB1dGU6ZnVuY3Rpb24oQyxCLEEpe3JldHVybiBDLm1hcChm dW5jdGlvbihFLEQpe3JldHVybiBNYXRoLnJvdW5kKEZ4LmNvbXB1dGUoQ1tEXSxC W0RdLEEpKTsKfSk7fSxzZXJ2ZTpmdW5jdGlvbihBKXtyZXR1cm4gQS5tYXAoTnVt YmVyKTt9fSxOdW1iZXI6e3BhcnNlOnBhcnNlRmxvYXQsY29tcHV0ZTpGeC5jb21w dXRlLHNlcnZlOmZ1bmN0aW9uKEIsQSl7cmV0dXJuKEEpP0IrQTpCO319LFN0cmlu Zzp7cGFyc2U6JGxhbWJkYShmYWxzZSksY29tcHV0ZTokYXJndW1lbnRzKDEpLHNl cnZlOiRhcmd1bWVudHMoMCl9fSk7CkZ4LlR3ZWVuPW5ldyBDbGFzcyh7RXh0ZW5k czpGeC5DU1MsaW5pdGlhbGl6ZTpmdW5jdGlvbihCLEEpe3RoaXMuZWxlbWVudD10 aGlzLnN1YmplY3Q9JChCKTt0aGlzLnBhcmVudChBKTt9LHNldDpmdW5jdGlvbihC LEEpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PTEpe0E9QjsKQj10aGlzLnByb3BlcnR5 fHx0aGlzLm9wdGlvbnMucHJvcGVydHk7fXRoaXMucmVuZGVyKHRoaXMuZWxlbWVu dCxCLEEsdGhpcy5vcHRpb25zLnVuaXQpO3JldHVybiB0aGlzO30sc3RhcnQ6ZnVu Y3Rpb24oQyxFLEQpe2lmKCF0aGlzLmNoZWNrKGFyZ3VtZW50cy5jYWxsZWUsQyxF LEQpKXtyZXR1cm4gdGhpczsKfXZhciBCPUFycmF5LmZsYXR0ZW4oYXJndW1lbnRz KTt0aGlzLnByb3BlcnR5PXRoaXMub3B0aW9ucy5wcm9wZXJ0eXx8Qi5zaGlmdCgp O3ZhciBBPXRoaXMucHJlcGFyZSh0aGlzLmVsZW1lbnQsdGhpcy5wcm9wZXJ0eSxC KTtyZXR1cm4gdGhpcy5wYXJlbnQoQS5mcm9tLEEudG8pOwp9fSk7RWxlbWVudC5Q cm9wZXJ0aWVzLnR3ZWVuPXtzZXQ6ZnVuY3Rpb24oQSl7dmFyIEI9dGhpcy5yZXRy aWV2ZSgidHdlZW4iKTtpZihCKXtCLmNhbmNlbCgpO31yZXR1cm4gdGhpcy5lbGlt aW5hdGUoInR3ZWVuIikuc3RvcmUoInR3ZWVuOm9wdGlvbnMiLCRleHRlbmQoe2xp bms6ImNhbmNlbCJ9LEEpKTsKfSxnZXQ6ZnVuY3Rpb24oQSl7aWYoQXx8IXRoaXMu cmV0cmlldmUoInR3ZWVuIikpe2lmKEF8fCF0aGlzLnJldHJpZXZlKCJ0d2Vlbjpv cHRpb25zIikpe3RoaXMuc2V0KCJ0d2VlbiIsQSk7fXRoaXMuc3RvcmUoInR3ZWVu IixuZXcgRnguVHdlZW4odGhpcyx0aGlzLnJldHJpZXZlKCJ0d2VlbjpvcHRpb25z IikpKTsKfXJldHVybiB0aGlzLnJldHJpZXZlKCJ0d2VlbiIpO319O0VsZW1lbnQu aW1wbGVtZW50KHt0d2VlbjpmdW5jdGlvbihBLEMsQil7dGhpcy5nZXQoInR3ZWVu Iikuc3RhcnQoYXJndW1lbnRzKTtyZXR1cm4gdGhpczt9LGZhZGU6ZnVuY3Rpb24o Qyl7dmFyIEU9dGhpcy5nZXQoInR3ZWVuIiksRD0ib3BhY2l0eSIsQTsKQz0kcGlj ayhDLCJ0b2dnbGUiKTtzd2l0Y2goQyl7Y2FzZSJpbiI6RS5zdGFydChELDEpO2Jy ZWFrO2Nhc2Uib3V0IjpFLnN0YXJ0KEQsMCk7YnJlYWs7Y2FzZSJzaG93IjpFLnNl dChELDEpO2JyZWFrO2Nhc2UiaGlkZSI6RS5zZXQoRCwwKTticmVhaztjYXNlInRv Z2dsZSI6dmFyIEI9dGhpcy5yZXRyaWV2ZSgiZmFkZTpmbGFnIix0aGlzLmdldCgi b3BhY2l0eSIpPT0xKTsKRS5zdGFydChELChCKT8wOjEpO3RoaXMuc3RvcmUoImZh ZGU6ZmxhZyIsIUIpO0E9dHJ1ZTticmVhaztkZWZhdWx0OkUuc3RhcnQoRCxhcmd1 bWVudHMpO31pZighQSl7dGhpcy5lbGltaW5hdGUoImZhZGU6ZmxhZyIpO31yZXR1 cm4gdGhpczt9LGhpZ2hsaWdodDpmdW5jdGlvbihDLEEpe2lmKCFBKXtBPXRoaXMu cmV0cmlldmUoImhpZ2hsaWdodDpvcmlnaW5hbCIsdGhpcy5nZXRTdHlsZSgiYmFj a2dyb3VuZC1jb2xvciIpKTsKQT0oQT09InRyYW5zcGFyZW50Iik/IiNmZmYiOkE7 fXZhciBCPXRoaXMuZ2V0KCJ0d2VlbiIpO0Iuc3RhcnQoImJhY2tncm91bmQtY29s b3IiLEN8fCIjZmZmZjg4IixBKS5jaGFpbihmdW5jdGlvbigpe3RoaXMuc2V0U3R5 bGUoImJhY2tncm91bmQtY29sb3IiLHRoaXMucmV0cmlldmUoImhpZ2hsaWdodDpv cmlnaW5hbCIpKTsKQi5jYWxsQ2hhaW4oKTt9LmJpbmQodGhpcykpO3JldHVybiB0 aGlzO319KTtGeC5Nb3JwaD1uZXcgQ2xhc3Moe0V4dGVuZHM6RnguQ1NTLGluaXRp YWxpemU6ZnVuY3Rpb24oQixBKXt0aGlzLmVsZW1lbnQ9dGhpcy5zdWJqZWN0PSQo Qik7dGhpcy5wYXJlbnQoQSk7fSxzZXQ6ZnVuY3Rpb24oQSl7aWYodHlwZW9mIEE9 PSJzdHJpbmciKXtBPXRoaXMuc2VhcmNoKEEpOwp9Zm9yKHZhciBCIGluIEEpe3Ro aXMucmVuZGVyKHRoaXMuZWxlbWVudCxCLEFbQl0sdGhpcy5vcHRpb25zLnVuaXQp O31yZXR1cm4gdGhpczt9LGNvbXB1dGU6ZnVuY3Rpb24oRSxELEMpe3ZhciBBPXt9 O2Zvcih2YXIgQiBpbiBFKXtBW0JdPXRoaXMucGFyZW50KEVbQl0sRFtCXSxDKTsK fXJldHVybiBBO30sc3RhcnQ6ZnVuY3Rpb24oQil7aWYoIXRoaXMuY2hlY2soYXJn dW1lbnRzLmNhbGxlZSxCKSl7cmV0dXJuIHRoaXM7fWlmKHR5cGVvZiBCPT0ic3Ry aW5nIil7Qj10aGlzLnNlYXJjaChCKTt9dmFyIEU9e30sRD17fTtmb3IodmFyIEMg aW4gQil7dmFyIEE9dGhpcy5wcmVwYXJlKHRoaXMuZWxlbWVudCxDLEJbQ10pOwpF W0NdPUEuZnJvbTtEW0NdPUEudG87fXJldHVybiB0aGlzLnBhcmVudChFLEQpO319 KTtFbGVtZW50LlByb3BlcnRpZXMubW9ycGg9e3NldDpmdW5jdGlvbihBKXt2YXIg Qj10aGlzLnJldHJpZXZlKCJtb3JwaCIpO2lmKEIpe0IuY2FuY2VsKCk7fXJldHVy biB0aGlzLmVsaW1pbmF0ZSgibW9ycGgiKS5zdG9yZSgibW9ycGg6b3B0aW9ucyIs JGV4dGVuZCh7bGluazoiY2FuY2VsIn0sQSkpOwp9LGdldDpmdW5jdGlvbihBKXtp ZihBfHwhdGhpcy5yZXRyaWV2ZSgibW9ycGgiKSl7aWYoQXx8IXRoaXMucmV0cmll dmUoIm1vcnBoOm9wdGlvbnMiKSl7dGhpcy5zZXQoIm1vcnBoIixBKTt9dGhpcy5z dG9yZSgibW9ycGgiLG5ldyBGeC5Nb3JwaCh0aGlzLHRoaXMucmV0cmlldmUoIm1v cnBoOm9wdGlvbnMiKSkpOwp9cmV0dXJuIHRoaXMucmV0cmlldmUoIm1vcnBoIik7 fX07RWxlbWVudC5pbXBsZW1lbnQoe21vcnBoOmZ1bmN0aW9uKEEpe3RoaXMuZ2V0 KCJtb3JwaCIpLnN0YXJ0KEEpO3JldHVybiB0aGlzO319KTsoZnVuY3Rpb24oKXt2 YXIgQT1GeC5wcm90b3R5cGUuaW5pdGlhbGl6ZTsKRngucHJvdG90eXBlLmluaXRp YWxpemU9ZnVuY3Rpb24oQil7QS5jYWxsKHRoaXMsQik7dmFyIEM9dGhpcy5vcHRp b25zLnRyYW5zaXRpb247aWYodHlwZW9mIEM9PSJzdHJpbmciJiYoQz1DLnNwbGl0 KCI6IikpKXt2YXIgRD1GeC5UcmFuc2l0aW9ucztEPURbQ1swXV18fERbQ1swXS5j YXBpdGFsaXplKCldOwppZihDWzFdKXtEPURbImVhc2UiK0NbMV0uY2FwaXRhbGl6 ZSgpKyhDWzJdP0NbMl0uY2FwaXRhbGl6ZSgpOiIiKV07fXRoaXMub3B0aW9ucy50 cmFuc2l0aW9uPUQ7fX07fSkoKTtGeC5UcmFuc2l0aW9uPWZ1bmN0aW9uKEIsQSl7 QT0kc3BsYXQoQSk7cmV0dXJuICRleHRlbmQoQix7ZWFzZUluOmZ1bmN0aW9uKEMp e3JldHVybiBCKEMsQSk7Cn0sZWFzZU91dDpmdW5jdGlvbihDKXtyZXR1cm4gMS1C KDEtQyxBKTt9LGVhc2VJbk91dDpmdW5jdGlvbihDKXtyZXR1cm4oQzw9MC41KT9C KDIqQyxBKS8yOigyLUIoMiooMS1DKSxBKSkvMjt9fSk7fTtGeC5UcmFuc2l0aW9u cz1uZXcgSGFzaCh7bGluZWFyOiRhcmd1bWVudHMoMCl9KTsKRnguVHJhbnNpdGlv bnMuZXh0ZW5kPWZ1bmN0aW9uKEEpe2Zvcih2YXIgQiBpbiBBKXtGeC5UcmFuc2l0 aW9uc1tCXT1uZXcgRnguVHJhbnNpdGlvbihBW0JdKTt9fTtGeC5UcmFuc2l0aW9u cy5leHRlbmQoe1BvdzpmdW5jdGlvbihCLEEpe3JldHVybiBNYXRoLnBvdyhCLEFb MF18fDYpOwp9LEV4cG86ZnVuY3Rpb24oQSl7cmV0dXJuIE1hdGgucG93KDIsOCoo QS0xKSk7fSxDaXJjOmZ1bmN0aW9uKEEpe3JldHVybiAxLU1hdGguc2luKE1hdGgu YWNvcyhBKSk7fSxTaW5lOmZ1bmN0aW9uKEEpe3JldHVybiAxLU1hdGguc2luKCgx LUEpKk1hdGguUEkvMik7Cn0sQmFjazpmdW5jdGlvbihCLEEpe0E9QVswXXx8MS42 MTg7cmV0dXJuIE1hdGgucG93KEIsMikqKChBKzEpKkItQSk7fSxCb3VuY2U6ZnVu Y3Rpb24oRCl7dmFyIEM7Zm9yKHZhciBCPTAsQT0xOzE7Qis9QSxBLz0yKXtpZihE Pj0oNy00KkIpLzExKXtDPS1NYXRoLnBvdygoMTEtNipCLTExKkQpLzQsMikrQSpB OwpicmVhazt9fXJldHVybiBDO30sRWxhc3RpYzpmdW5jdGlvbihCLEEpe3JldHVy biBNYXRoLnBvdygyLDEwKi0tQikqTWF0aC5jb3MoMjAqQipNYXRoLlBJKihBWzBd fHwxKS8zKTt9fSk7WyJRdWFkIiwiQ3ViaWMiLCJRdWFydCIsIlF1aW50Il0uZWFj aChmdW5jdGlvbihCLEEpe0Z4LlRyYW5zaXRpb25zW0JdPW5ldyBGeC5UcmFuc2l0 aW9uKGZ1bmN0aW9uKEMpe3JldHVybiBNYXRoLnBvdyhDLFtBKzJdKTsKfSk7fSk7 dmFyIFJlcXVlc3Q9bmV3IENsYXNzKHtJbXBsZW1lbnRzOltDaGFpbixFdmVudHMs T3B0aW9uc10sb3B0aW9uczp7dXJsOiIiLGRhdGE6IiIsaGVhZGVyczp7IlgtUmVx dWVzdGVkLVdpdGgiOiJYTUxIdHRwUmVxdWVzdCIsQWNjZXB0OiJ0ZXh0L2phdmFz Y3JpcHQsIHRleHQvaHRtbCwgYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCwgKi8q In0sYXN5bmM6dHJ1ZSxmb3JtYXQ6ZmFsc2UsbWV0aG9kOiJwb3N0IixsaW5rOiJp Z25vcmUiLGlzU3VjY2VzczpudWxsLGVtdWxhdGlvbjp0cnVlLHVybEVuY29kZWQ6 dHJ1ZSxlbmNvZGluZzoidXRmLTgiLGV2YWxTY3JpcHRzOmZhbHNlLGV2YWxSZXNw b25zZTpmYWxzZX0saW5pdGlhbGl6ZTpmdW5jdGlvbihBKXt0aGlzLnhocj1uZXcg QnJvd3Nlci5SZXF1ZXN0KCk7CnRoaXMuc2V0T3B0aW9ucyhBKTt0aGlzLm9wdGlv bnMuaXNTdWNjZXNzPXRoaXMub3B0aW9ucy5pc1N1Y2Nlc3N8fHRoaXMuaXNTdWNj ZXNzO3RoaXMuaGVhZGVycz1uZXcgSGFzaCh0aGlzLm9wdGlvbnMuaGVhZGVycyk7 fSxvblN0YXRlQ2hhbmdlOmZ1bmN0aW9uKCl7aWYodGhpcy54aHIucmVhZHlTdGF0 ZSE9NHx8IXRoaXMucnVubmluZyl7cmV0dXJuIDsKfXRoaXMucnVubmluZz1mYWxz ZTt0aGlzLnN0YXR1cz0wOyR0cnkoZnVuY3Rpb24oKXt0aGlzLnN0YXR1cz10aGlz Lnhoci5zdGF0dXM7fS5iaW5kKHRoaXMpKTtpZih0aGlzLm9wdGlvbnMuaXNTdWNj ZXNzLmNhbGwodGhpcyx0aGlzLnN0YXR1cykpe3RoaXMucmVzcG9uc2U9e3RleHQ6 dGhpcy54aHIucmVzcG9uc2VUZXh0LHhtbDp0aGlzLnhoci5yZXNwb25zZVhNTH07 CnRoaXMuc3VjY2Vzcyh0aGlzLnJlc3BvbnNlLnRleHQsdGhpcy5yZXNwb25zZS54 bWwpO31lbHNle3RoaXMucmVzcG9uc2U9e3RleHQ6bnVsbCx4bWw6bnVsbH07dGhp cy5mYWlsdXJlKCk7fXRoaXMueGhyLm9ucmVhZHlzdGF0ZWNoYW5nZT0kZW1wdHk7 fSxpc1N1Y2Nlc3M6ZnVuY3Rpb24oKXtyZXR1cm4oKHRoaXMuc3RhdHVzPj0yMDAp JiYodGhpcy5zdGF0dXM8MzAwKSk7Cn0scHJvY2Vzc1NjcmlwdHM6ZnVuY3Rpb24o QSl7aWYodGhpcy5vcHRpb25zLmV2YWxSZXNwb25zZXx8KC8oZWNtYXxqYXZhKXNj cmlwdC8pLnRlc3QodGhpcy5nZXRIZWFkZXIoIkNvbnRlbnQtdHlwZSIpKSl7cmV0 dXJuICRleGVjKEEpO31yZXR1cm4gQS5zdHJpcFNjcmlwdHModGhpcy5vcHRpb25z LmV2YWxTY3JpcHRzKTsKfSxzdWNjZXNzOmZ1bmN0aW9uKEIsQSl7dGhpcy5vblN1 Y2Nlc3ModGhpcy5wcm9jZXNzU2NyaXB0cyhCKSxBKTt9LG9uU3VjY2VzczpmdW5j dGlvbigpe3RoaXMuZmlyZUV2ZW50KCJjb21wbGV0ZSIsYXJndW1lbnRzKS5maXJl RXZlbnQoInN1Y2Nlc3MiLGFyZ3VtZW50cykuY2FsbENoYWluKCk7Cn0sZmFpbHVy ZTpmdW5jdGlvbigpe3RoaXMub25GYWlsdXJlKCk7fSxvbkZhaWx1cmU6ZnVuY3Rp b24oKXt0aGlzLmZpcmVFdmVudCgiY29tcGxldGUiKS5maXJlRXZlbnQoImZhaWx1 cmUiLHRoaXMueGhyKTt9LHNldEhlYWRlcjpmdW5jdGlvbihBLEIpe3RoaXMuaGVh ZGVycy5zZXQoQSxCKTsKcmV0dXJuIHRoaXM7fSxnZXRIZWFkZXI6ZnVuY3Rpb24o QSl7cmV0dXJuICR0cnkoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54aHIuZ2V0UmVz cG9uc2VIZWFkZXIoQSk7fS5iaW5kKHRoaXMpKTt9LGNoZWNrOmZ1bmN0aW9uKEEp e2lmKCF0aGlzLnJ1bm5pbmcpe3JldHVybiB0cnVlOwp9c3dpdGNoKHRoaXMub3B0 aW9ucy5saW5rKXtjYXNlImNhbmNlbCI6dGhpcy5jYW5jZWwoKTtyZXR1cm4gdHJ1 ZTtjYXNlImNoYWluIjp0aGlzLmNoYWluKEEuYmluZCh0aGlzLEFycmF5LnNsaWNl KGFyZ3VtZW50cywxKSkpO3JldHVybiBmYWxzZTt9cmV0dXJuIGZhbHNlOwp9LHNl bmQ6ZnVuY3Rpb24oSSl7aWYoIXRoaXMuY2hlY2soYXJndW1lbnRzLmNhbGxlZSxJ KSl7cmV0dXJuIHRoaXM7fXRoaXMucnVubmluZz10cnVlO3ZhciBHPSR0eXBlKEkp O2lmKEc9PSJzdHJpbmcifHxHPT0iZWxlbWVudCIpe0k9e2RhdGE6SX07fXZhciBE PXRoaXMub3B0aW9uczsKST0kZXh0ZW5kKHtkYXRhOkQuZGF0YSx1cmw6RC51cmws bWV0aG9kOkQubWV0aG9kfSxJKTt2YXIgRT1JLmRhdGEsQj1JLnVybCxBPUkubWV0 aG9kO3N3aXRjaCgkdHlwZShFKSl7Y2FzZSJlbGVtZW50IjpFPSQoRSkudG9RdWVy eVN0cmluZygpO2JyZWFrO2Nhc2Uib2JqZWN0IjpjYXNlImhhc2giOkU9SGFzaC50 b1F1ZXJ5U3RyaW5nKEUpOwp9aWYodGhpcy5vcHRpb25zLmZvcm1hdCl7dmFyIEg9 ImZvcm1hdD0iK3RoaXMub3B0aW9ucy5mb3JtYXQ7RT0oRSk/SCsiJiIrRTpIO31p Zih0aGlzLm9wdGlvbnMuZW11bGF0aW9uJiZbInB1dCIsImRlbGV0ZSJdLmNvbnRh aW5zKEEpKXt2YXIgRj0iX21ldGhvZD0iK0E7CkU9KEUpP0YrIiYiK0U6RjtBPSJw b3N0Ijt9aWYodGhpcy5vcHRpb25zLnVybEVuY29kZWQmJkE9PSJwb3N0Iil7dmFy IEM9KHRoaXMub3B0aW9ucy5lbmNvZGluZyk/IjsgY2hhcnNldD0iK3RoaXMub3B0 aW9ucy5lbmNvZGluZzoiIjt0aGlzLmhlYWRlcnMuc2V0KCJDb250ZW50LXR5cGUi LCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiK0MpOwp9aWYoRSYm QT09ImdldCIpe0I9QisoQi5jb250YWlucygiPyIpPyImIjoiPyIpK0U7RT1udWxs O310aGlzLnhoci5vcGVuKEEudG9VcHBlckNhc2UoKSxCLHRoaXMub3B0aW9ucy5h c3luYyk7dGhpcy54aHIub25yZWFkeXN0YXRlY2hhbmdlPXRoaXMub25TdGF0ZUNo YW5nZS5iaW5kKHRoaXMpOwp0aGlzLmhlYWRlcnMuZWFjaChmdW5jdGlvbihLLEop e2lmKCEkdHJ5KGZ1bmN0aW9uKCl7dGhpcy54aHIuc2V0UmVxdWVzdEhlYWRlcihK LEspO3JldHVybiB0cnVlO30uYmluZCh0aGlzKSkpe3RoaXMuZmlyZUV2ZW50KCJl eGNlcHRpb24iLFtKLEtdKTt9fSx0aGlzKTsKdGhpcy5maXJlRXZlbnQoInJlcXVl c3QiKTt0aGlzLnhoci5zZW5kKEUpO2lmKCF0aGlzLm9wdGlvbnMuYXN5bmMpe3Ro aXMub25TdGF0ZUNoYW5nZSgpO31yZXR1cm4gdGhpczt9LGNhbmNlbDpmdW5jdGlv bigpe2lmKCF0aGlzLnJ1bm5pbmcpe3JldHVybiB0aGlzOwp9dGhpcy5ydW5uaW5n PWZhbHNlO3RoaXMueGhyLmFib3J0KCk7dGhpcy54aHIub25yZWFkeXN0YXRlY2hh bmdlPSRlbXB0eTt0aGlzLnhocj1uZXcgQnJvd3Nlci5SZXF1ZXN0KCk7dGhpcy5m aXJlRXZlbnQoImNhbmNlbCIpO3JldHVybiB0aGlzO319KTsoZnVuY3Rpb24oKXt2 YXIgQT17fTsKWyJnZXQiLCJwb3N0IiwicHV0IiwiZGVsZXRlIiwiR0VUIiwiUE9T VCIsIlBVVCIsIkRFTEVURSJdLmVhY2goZnVuY3Rpb24oQil7QVtCXT1mdW5jdGlv bigpe3ZhciBDPUFycmF5LmxpbmsoYXJndW1lbnRzLHt1cmw6U3RyaW5nLnR5cGUs ZGF0YTokZGVmaW5lZH0pOwpyZXR1cm4gdGhpcy5zZW5kKCRleHRlbmQoQyx7bWV0 aG9kOkIudG9Mb3dlckNhc2UoKX0pKTt9O30pO1JlcXVlc3QuaW1wbGVtZW50KEEp O30pKCk7RWxlbWVudC5Qcm9wZXJ0aWVzLnNlbmQ9e3NldDpmdW5jdGlvbihBKXt2 YXIgQj10aGlzLnJldHJpZXZlKCJzZW5kIik7CmlmKEIpe0IuY2FuY2VsKCk7fXJl dHVybiB0aGlzLmVsaW1pbmF0ZSgic2VuZCIpLnN0b3JlKCJzZW5kOm9wdGlvbnMi LCRleHRlbmQoe2RhdGE6dGhpcyxsaW5rOiJjYW5jZWwiLG1ldGhvZDp0aGlzLmdl dCgibWV0aG9kIil8fCJwb3N0Iix1cmw6dGhpcy5nZXQoImFjdGlvbiIpfSxBKSk7 Cn0sZ2V0OmZ1bmN0aW9uKEEpe2lmKEF8fCF0aGlzLnJldHJpZXZlKCJzZW5kIikp e2lmKEF8fCF0aGlzLnJldHJpZXZlKCJzZW5kOm9wdGlvbnMiKSl7dGhpcy5zZXQo InNlbmQiLEEpO310aGlzLnN0b3JlKCJzZW5kIixuZXcgUmVxdWVzdCh0aGlzLnJl dHJpZXZlKCJzZW5kOm9wdGlvbnMiKSkpOwp9cmV0dXJuIHRoaXMucmV0cmlldmUo InNlbmQiKTt9fTtFbGVtZW50LmltcGxlbWVudCh7c2VuZDpmdW5jdGlvbihBKXt2 YXIgQj10aGlzLmdldCgic2VuZCIpO0Iuc2VuZCh7ZGF0YTp0aGlzLHVybDpBfHxC Lm9wdGlvbnMudXJsfSk7cmV0dXJuIHRoaXM7fX0pO1JlcXVlc3QuSFRNTD1uZXcg Q2xhc3Moe0V4dGVuZHM6UmVxdWVzdCxvcHRpb25zOnt1cGRhdGU6ZmFsc2UsZXZh bFNjcmlwdHM6dHJ1ZSxmaWx0ZXI6ZmFsc2V9LHByb2Nlc3NIVE1MOmZ1bmN0aW9u KEMpe3ZhciBCPUMubWF0Y2goLzxib2R5W14+XSo+KFtcc1xTXSo/KTxcL2JvZHk+ L2kpOwpDPShCKT9CWzFdOkM7dmFyIEE9bmV3IEVsZW1lbnQoImRpdiIpO3JldHVy biAkdHJ5KGZ1bmN0aW9uKCl7dmFyIEQ9Ijxyb290PiIrQysiPC9yb290PiIsRztp ZihCcm93c2VyLkVuZ2luZS50cmlkZW50KXtHPW5ldyBBY3RpdmVYT2JqZWN0KCJN aWNyb3NvZnQuWE1MRE9NIik7CkcuYXN5bmM9ZmFsc2U7Ry5sb2FkWE1MKEQpO31l bHNle0c9bmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhELCJ0ZXh0L3ht bCIpO31EPUcuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInJvb3QiKVswXTtmb3IodmFy IEY9MCxFPUQuY2hpbGROb2Rlcy5sZW5ndGg7CkY8RTtGKyspe3ZhciBIPUVsZW1l bnQuY2xvbmUoRC5jaGlsZE5vZGVzW0ZdLHRydWUsdHJ1ZSk7aWYoSCl7QS5ncmFi KEgpO319cmV0dXJuIEE7fSl8fEEuc2V0KCJodG1sIixDKTt9LHN1Y2Nlc3M6ZnVu Y3Rpb24oRCl7dmFyIEM9dGhpcy5vcHRpb25zLEI9dGhpcy5yZXNwb25zZTsKQi5o dG1sPUQuc3RyaXBTY3JpcHRzKGZ1bmN0aW9uKEUpe0IuamF2YXNjcmlwdD1FO30p O3ZhciBBPXRoaXMucHJvY2Vzc0hUTUwoQi5odG1sKTtCLnRyZWU9QS5jaGlsZE5v ZGVzO0IuZWxlbWVudHM9QS5nZXRFbGVtZW50cygiKiIpO2lmKEMuZmlsdGVyKXtC LnRyZWU9Qi5lbGVtZW50cy5maWx0ZXIoQy5maWx0ZXIpOwp9aWYoQy51cGRhdGUp eyQoQy51cGRhdGUpLmVtcHR5KCkuYWRvcHQoQi50cmVlKTt9aWYoQy5ldmFsU2Ny aXB0cyl7JGV4ZWMoQi5qYXZhc2NyaXB0KTt9dGhpcy5vblN1Y2Nlc3MoQi50cmVl LEIuZWxlbWVudHMsQi5odG1sLEIuamF2YXNjcmlwdCk7fX0pO0VsZW1lbnQuUHJv cGVydGllcy5sb2FkPXtzZXQ6ZnVuY3Rpb24oQSl7dmFyIEI9dGhpcy5yZXRyaWV2 ZSgibG9hZCIpOwppZihCKXtzZW5kLmNhbmNlbCgpO31yZXR1cm4gdGhpcy5lbGlt aW5hdGUoImxvYWQiKS5zdG9yZSgibG9hZDpvcHRpb25zIiwkZXh0ZW5kKHtkYXRh OnRoaXMsbGluazoiY2FuY2VsIix1cGRhdGU6dGhpcyxtZXRob2Q6ImdldCJ9LEEp KTt9LGdldDpmdW5jdGlvbihBKXtpZihBfHwhdGhpcy5yZXRyaWV2ZSgibG9hZCIp KXtpZihBfHwhdGhpcy5yZXRyaWV2ZSgibG9hZDpvcHRpb25zIikpe3RoaXMuc2V0 KCJsb2FkIixBKTsKfXRoaXMuc3RvcmUoImxvYWQiLG5ldyBSZXF1ZXN0LkhUTUwo dGhpcy5yZXRyaWV2ZSgibG9hZDpvcHRpb25zIikpKTt9cmV0dXJuIHRoaXMucmV0 cmlldmUoImxvYWQiKTt9fTtFbGVtZW50LmltcGxlbWVudCh7bG9hZDpmdW5jdGlv bigpe3RoaXMuZ2V0KCJsb2FkIikuc2VuZChBcnJheS5saW5rKGFyZ3VtZW50cyx7 ZGF0YTpPYmplY3QudHlwZSx1cmw6U3RyaW5nLnR5cGV9KSk7CnJldHVybiB0aGlz O319KTtSZXF1ZXN0LkpTT049bmV3IENsYXNzKHtFeHRlbmRzOlJlcXVlc3Qsb3B0 aW9uczp7c2VjdXJlOnRydWV9LGluaXRpYWxpemU6ZnVuY3Rpb24oQSl7dGhpcy5w YXJlbnQoQSk7dGhpcy5oZWFkZXJzLmV4dGVuZCh7QWNjZXB0OiJhcHBsaWNhdGlv bi9qc29uIiwiWC1SZXF1ZXN0IjoiSlNPTiJ9KTsKfSxzdWNjZXNzOmZ1bmN0aW9u KEEpe3RoaXMucmVzcG9uc2UuanNvbj1KU09OLmRlY29kZShBLHRoaXMub3B0aW9u cy5zZWN1cmUpO3RoaXMub25TdWNjZXNzKHRoaXMucmVzcG9uc2UuanNvbixBKTt9 fSk7Ci8vTW9vVG9vbHMgTW9yZSwgPGh0dHA6Ly9tb290b29scy5uZXQvbW9yZT4u IENvcHlyaWdodCAoYykgMjAwNi0yMDA4IFZhbGVyaW8gUHJvaWV0dGksIDxodHRw Oi8vbWFkNG1pbGsubmV0PiwgTUlUIFN0eWxlIExpY2Vuc2UuCnZhciBBc3NldD1u ZXcgSGFzaCh7amF2YXNjcmlwdDpmdW5jdGlvbihGLEQpe0Q9JGV4dGVuZCh7b25s b2FkOiRlbXB0eSxkb2N1bWVudDpkb2N1bWVudCxjaGVjazokbGFtYmRhKHRydWUp fSxEKTt2YXIgQj1uZXcgRWxlbWVudCgic2NyaXB0Iix7c3JjOkYsdHlwZToidGV4 dC9qYXZhc2NyaXB0In0pOwp2YXIgRT1ELm9ubG9hZC5iaW5kKEIpLEE9RC5jaGVj ayxHPUQuZG9jdW1lbnQ7ZGVsZXRlIEQub25sb2FkO2RlbGV0ZSBELmNoZWNrO2Rl bGV0ZSBELmRvY3VtZW50O0IuYWRkRXZlbnRzKHtsb2FkOkUscmVhZHlzdGF0ZWNo YW5nZTpmdW5jdGlvbigpe2lmKFsibG9hZGVkIiwiY29tcGxldGUiXS5jb250YWlu cyh0aGlzLnJlYWR5U3RhdGUpKXtFKCk7Cn19fSkuc2V0UHJvcGVydGllcyhEKTtp ZihCcm93c2VyLkVuZ2luZS53ZWJraXQ0MTkpe3ZhciBDPShmdW5jdGlvbigpe2lm KCEkdHJ5KEEpKXtyZXR1cm4gO30kY2xlYXIoQyk7RSgpO30pLnBlcmlvZGljYWwo NTApO31yZXR1cm4gQi5pbmplY3QoRy5oZWFkKTt9LGNzczpmdW5jdGlvbihCLEEp e3JldHVybiBuZXcgRWxlbWVudCgibGluayIsJG1lcmdlKHtyZWw6InN0eWxlc2hl ZXQiLG1lZGlhOiJzY3JlZW4iLHR5cGU6InRleHQvY3NzIixocmVmOkJ9LEEpKS5p bmplY3QoZG9jdW1lbnQuaGVhZCk7Cn0saW1hZ2U6ZnVuY3Rpb24oQyxCKXtCPSRt ZXJnZSh7b25sb2FkOiRlbXB0eSxvbmFib3J0OiRlbXB0eSxvbmVycm9yOiRlbXB0 eX0sQik7dmFyIEQ9bmV3IEltYWdlKCk7dmFyIEE9JChEKXx8bmV3IEVsZW1lbnQo ImltZyIpO1sibG9hZCIsImFib3J0IiwiZXJyb3IiXS5lYWNoKGZ1bmN0aW9uKEUp e3ZhciBGPSJvbiIrRTsKdmFyIEc9QltGXTtkZWxldGUgQltGXTtEW0ZdPWZ1bmN0 aW9uKCl7aWYoIUQpe3JldHVybiA7fWlmKCFBLnBhcmVudE5vZGUpe0Eud2lkdGg9 RC53aWR0aDtBLmhlaWdodD1ELmhlaWdodDt9RD1ELm9ubG9hZD1ELm9uYWJvcnQ9 RC5vbmVycm9yPW51bGw7Ry5kZWxheSgxLEEsQSk7CkEuZmlyZUV2ZW50KEUsQSwx KTt9O30pO0Quc3JjPUEuc3JjPUM7aWYoRCYmRC5jb21wbGV0ZSl7RC5vbmxvYWQu ZGVsYXkoMSk7fXJldHVybiBBLnNldFByb3BlcnRpZXMoQik7fSxpbWFnZXM6ZnVu Y3Rpb24oRCxDKXtDPSRtZXJnZSh7b25Db21wbGV0ZTokZW1wdHksb25Qcm9ncmVz czokZW1wdHl9LEMpOwppZighRC5wdXNoKXtEPVtEXTt9dmFyIEE9W107dmFyIEI9 MDtELmVhY2goZnVuY3Rpb24oRil7dmFyIEU9bmV3IEFzc2V0LmltYWdlKEYse29u bG9hZDpmdW5jdGlvbigpe0Mub25Qcm9ncmVzcy5jYWxsKHRoaXMsQixELmluZGV4 T2YoRikpO0IrKztpZihCPT1ELmxlbmd0aCl7Qy5vbkNvbXBsZXRlKCk7Cn19fSk7 QS5wdXNoKEUpO30pO3JldHVybiBuZXcgRWxlbWVudHMoQSk7fX0pOwovL01vb1Rv b2xzIE1vcmUsIDxodHRwOi8vbW9vdG9vbHMubmV0L21vcmU+LiBDb3B5cmlnaHQg KGMpIDIwMDYtMjAwOCBWYWxlcmlvIFByb2lldHRpLCA8aHR0cDovL21hZDRtaWxr Lm5ldD4sIE1JVCBTdHlsZSBMaWNlbnNlLgpGeC5TY3JvbGw9bmV3IENsYXNzKHtF eHRlbmRzOkZ4LG9wdGlvbnM6e29mZnNldDp7eDowLHk6MH0sd2hlZWxTdG9wczp0 cnVlfSxpbml0aWFsaXplOmZ1bmN0aW9uKEIsQSl7dGhpcy5lbGVtZW50PXRoaXMu c3ViamVjdD0kKEIpO3RoaXMucGFyZW50KEEpO3ZhciBEPXRoaXMuY2FuY2VsLmJp bmQodGhpcyxmYWxzZSk7CmlmKCR0eXBlKHRoaXMuZWxlbWVudCkhPSJlbGVtZW50 Iil7dGhpcy5lbGVtZW50PSQodGhpcy5lbGVtZW50LmdldERvY3VtZW50KCkuYm9k eSk7fXZhciBDPXRoaXMuZWxlbWVudDtpZih0aGlzLm9wdGlvbnMud2hlZWxTdG9w cyl7dGhpcy5hZGRFdmVudCgic3RhcnQiLGZ1bmN0aW9uKCl7Qy5hZGRFdmVudCgi bW91c2V3aGVlbCIsRCk7Cn0sdHJ1ZSk7dGhpcy5hZGRFdmVudCgiY29tcGxldGUi LGZ1bmN0aW9uKCl7Qy5yZW1vdmVFdmVudCgibW91c2V3aGVlbCIsRCk7fSx0cnVl KTt9fSxzZXQ6ZnVuY3Rpb24oKXt2YXIgQT1BcnJheS5mbGF0dGVuKGFyZ3VtZW50 cyk7dGhpcy5lbGVtZW50LnNjcm9sbFRvKEFbMF0sQVsxXSk7Cn0sY29tcHV0ZTpm dW5jdGlvbihFLEQsQyl7dmFyIEI9W107dmFyIEE9MjtBLnRpbWVzKGZ1bmN0aW9u KEYpe0IucHVzaChGeC5jb21wdXRlKEVbRl0sRFtGXSxDKSk7fSk7cmV0dXJuIEI7 fSxzdGFydDpmdW5jdGlvbihDLEgpe2lmKCF0aGlzLmNoZWNrKGFyZ3VtZW50cy5j YWxsZWUsQyxIKSl7cmV0dXJuIHRoaXM7Cn12YXIgRT10aGlzLmVsZW1lbnQuZ2V0 U2l6ZSgpLEY9dGhpcy5lbGVtZW50LmdldFNjcm9sbFNpemUoKTt2YXIgQj10aGlz LmVsZW1lbnQuZ2V0U2Nyb2xsKCksRD17eDpDLHk6SH07Zm9yKHZhciBHIGluIEQp e3ZhciBBPUZbR10tRVtHXTtpZigkY2hrKERbR10pKXtEW0ddPSgkdHlwZShEW0dd KT09Im51bWJlciIpP0RbR10ubGltaXQoMCxBKTpBOwp9ZWxzZXtEW0ddPUJbR107 fURbR10rPXRoaXMub3B0aW9ucy5vZmZzZXRbR107fXJldHVybiB0aGlzLnBhcmVu dChbQi54LEIueV0sW0QueCxELnldKTt9LHRvVG9wOmZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuc3RhcnQoZmFsc2UsMCk7fSx0b0xlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5zdGFydCgwLGZhbHNlKTsKfSx0b1JpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuc3RhcnQoInJpZ2h0IixmYWxzZSk7fSx0b0JvdHRvbTpmdW5jdGlvbigp e3JldHVybiB0aGlzLnN0YXJ0KGZhbHNlLCJib3R0b20iKTt9LHRvRWxlbWVudDpm dW5jdGlvbihCKXt2YXIgQT0kKEIpLmdldFBvc2l0aW9uKHRoaXMuZWxlbWVudCk7 CnJldHVybiB0aGlzLnN0YXJ0KEEueCxBLnkpO319KTsKLy9Nb29Ub29scyBNb3Jl LCA8aHR0cDovL21vb3Rvb2xzLm5ldC9tb3JlPi4gQ29weXJpZ2h0IChjKSAyMDA2 LTIwMDggVmFsZXJpbyBQcm9pZXR0aSwgPGh0dHA6Ly9tYWQ0bWlsay5uZXQ+LCBN SVQgU3R5bGUgTGljZW5zZS4KdmFyIERyYWc9bmV3IENsYXNzKHtJbXBsZW1lbnRz OltFdmVudHMsT3B0aW9uc10sb3B0aW9uczp7c25hcDo2LHVuaXQ6InB4Iixncmlk OmZhbHNlLHN0eWxlOnRydWUsbGltaXQ6ZmFsc2UsaGFuZGxlOmZhbHNlLGludmVy dDpmYWxzZSxwcmV2ZW50RGVmYXVsdDpmYWxzZSxtb2RpZmllcnM6e3g6ImxlZnQi LHk6InRvcCJ9fSxpbml0aWFsaXplOmZ1bmN0aW9uKCl7dmFyIEI9QXJyYXkubGlu ayhhcmd1bWVudHMse29wdGlvbnM6T2JqZWN0LnR5cGUsZWxlbWVudDokZGVmaW5l ZH0pOwp0aGlzLmVsZW1lbnQ9JChCLmVsZW1lbnQpO3RoaXMuZG9jdW1lbnQ9dGhp cy5lbGVtZW50LmdldERvY3VtZW50KCk7dGhpcy5zZXRPcHRpb25zKEIub3B0aW9u c3x8e30pO3ZhciBBPSR0eXBlKHRoaXMub3B0aW9ucy5oYW5kbGUpO3RoaXMuaGFu ZGxlcz0oQT09ImFycmF5Inx8QT09ImNvbGxlY3Rpb24iKT8kJCh0aGlzLm9wdGlv bnMuaGFuZGxlKTokKHRoaXMub3B0aW9ucy5oYW5kbGUpfHx0aGlzLmVsZW1lbnQ7 CnRoaXMubW91c2U9e25vdzp7fSxwb3M6e319O3RoaXMudmFsdWU9e3N0YXJ0Ont9 LG5vdzp7fX07dGhpcy5zZWxlY3Rpb249KEJyb3dzZXIuRW5naW5lLnRyaWRlbnQp PyJzZWxlY3RzdGFydCI6Im1vdXNlZG93biI7dGhpcy5ib3VuZD17c3RhcnQ6dGhp cy5zdGFydC5iaW5kKHRoaXMpLGNoZWNrOnRoaXMuY2hlY2suYmluZCh0aGlzKSxk cmFnOnRoaXMuZHJhZy5iaW5kKHRoaXMpLHN0b3A6dGhpcy5zdG9wLmJpbmQodGhp cyksY2FuY2VsOnRoaXMuY2FuY2VsLmJpbmQodGhpcyksZXZlbnRTdG9wOiRsYW1i ZGEoZmFsc2UpfTsKdGhpcy5hdHRhY2goKTt9LGF0dGFjaDpmdW5jdGlvbigpe3Ro aXMuaGFuZGxlcy5hZGRFdmVudCgibW91c2Vkb3duIix0aGlzLmJvdW5kLnN0YXJ0 KTtyZXR1cm4gdGhpczt9LGRldGFjaDpmdW5jdGlvbigpe3RoaXMuaGFuZGxlcy5y ZW1vdmVFdmVudCgibW91c2Vkb3duIix0aGlzLmJvdW5kLnN0YXJ0KTsKcmV0dXJu IHRoaXM7fSxzdGFydDpmdW5jdGlvbihDKXtpZih0aGlzLm9wdGlvbnMucHJldmVu dERlZmF1bHQpe0MucHJldmVudERlZmF1bHQoKTt9dGhpcy5maXJlRXZlbnQoImJl Zm9yZVN0YXJ0Iix0aGlzLmVsZW1lbnQpO3RoaXMubW91c2Uuc3RhcnQ9Qy5wYWdl Owp2YXIgQT10aGlzLm9wdGlvbnMubGltaXQ7dGhpcy5saW1pdD17eDpbXSx5Oltd fTtmb3IodmFyIEQgaW4gdGhpcy5vcHRpb25zLm1vZGlmaWVycyl7aWYoIXRoaXMu b3B0aW9ucy5tb2RpZmllcnNbRF0pe2NvbnRpbnVlO31pZih0aGlzLm9wdGlvbnMu c3R5bGUpe3RoaXMudmFsdWUubm93W0RdPXRoaXMuZWxlbWVudC5nZXRTdHlsZSh0 aGlzLm9wdGlvbnMubW9kaWZpZXJzW0RdKS50b0ludCgpOwp9ZWxzZXt0aGlzLnZh bHVlLm5vd1tEXT10aGlzLmVsZW1lbnRbdGhpcy5vcHRpb25zLm1vZGlmaWVyc1tE XV07fWlmKHRoaXMub3B0aW9ucy5pbnZlcnQpe3RoaXMudmFsdWUubm93W0RdKj0t MTt9dGhpcy5tb3VzZS5wb3NbRF09Qy5wYWdlW0RdLXRoaXMudmFsdWUubm93W0Rd OwppZihBJiZBW0RdKXtmb3IodmFyIEI9MjtCLS07Qil7aWYoJGNoayhBW0RdW0Jd KSl7dGhpcy5saW1pdFtEXVtCXT0kbGFtYmRhKEFbRF1bQl0pKCk7fX19fWlmKCR0 eXBlKHRoaXMub3B0aW9ucy5ncmlkKT09Im51bWJlciIpe3RoaXMub3B0aW9ucy5n cmlkPXt4OnRoaXMub3B0aW9ucy5ncmlkLHk6dGhpcy5vcHRpb25zLmdyaWR9Owp9 dGhpcy5kb2N1bWVudC5hZGRFdmVudHMoe21vdXNlbW92ZTp0aGlzLmJvdW5kLmNo ZWNrLG1vdXNldXA6dGhpcy5ib3VuZC5jYW5jZWx9KTt0aGlzLmRvY3VtZW50LmFk ZEV2ZW50KHRoaXMuc2VsZWN0aW9uLHRoaXMuYm91bmQuZXZlbnRTdG9wKTt9LGNo ZWNrOmZ1bmN0aW9uKEEpe2lmKHRoaXMub3B0aW9ucy5wcmV2ZW50RGVmYXVsdCl7 QS5wcmV2ZW50RGVmYXVsdCgpOwp9dmFyIEI9TWF0aC5yb3VuZChNYXRoLnNxcnQo TWF0aC5wb3coQS5wYWdlLngtdGhpcy5tb3VzZS5zdGFydC54LDIpK01hdGgucG93 KEEucGFnZS55LXRoaXMubW91c2Uuc3RhcnQueSwyKSkpO2lmKEI+dGhpcy5vcHRp b25zLnNuYXApe3RoaXMuY2FuY2VsKCk7dGhpcy5kb2N1bWVudC5hZGRFdmVudHMo e21vdXNlbW92ZTp0aGlzLmJvdW5kLmRyYWcsbW91c2V1cDp0aGlzLmJvdW5kLnN0 b3B9KTsKdGhpcy5maXJlRXZlbnQoInN0YXJ0Iix0aGlzLmVsZW1lbnQpLmZpcmVF dmVudCgic25hcCIsdGhpcy5lbGVtZW50KTt9fSxkcmFnOmZ1bmN0aW9uKEEpe2lm KHRoaXMub3B0aW9ucy5wcmV2ZW50RGVmYXVsdCl7QS5wcmV2ZW50RGVmYXVsdCgp O310aGlzLm1vdXNlLm5vdz1BLnBhZ2U7CmZvcih2YXIgQiBpbiB0aGlzLm9wdGlv bnMubW9kaWZpZXJzKXtpZighdGhpcy5vcHRpb25zLm1vZGlmaWVyc1tCXSl7Y29u dGludWU7fXRoaXMudmFsdWUubm93W0JdPXRoaXMubW91c2Uubm93W0JdLXRoaXMu bW91c2UucG9zW0JdO2lmKHRoaXMub3B0aW9ucy5pbnZlcnQpe3RoaXMudmFsdWUu bm93W0JdKj0tMTsKfWlmKHRoaXMub3B0aW9ucy5saW1pdCYmdGhpcy5saW1pdFtC XSl7aWYoJGNoayh0aGlzLmxpbWl0W0JdWzFdKSYmKHRoaXMudmFsdWUubm93W0Jd PnRoaXMubGltaXRbQl1bMV0pKXt0aGlzLnZhbHVlLm5vd1tCXT10aGlzLmxpbWl0 W0JdWzFdO31lbHNle2lmKCRjaGsodGhpcy5saW1pdFtCXVswXSkmJih0aGlzLnZh bHVlLm5vd1tCXTx0aGlzLmxpbWl0W0JdWzBdKSl7dGhpcy52YWx1ZS5ub3dbQl09 dGhpcy5saW1pdFtCXVswXTsKfX19aWYodGhpcy5vcHRpb25zLmdyaWRbQl0pe3Ro aXMudmFsdWUubm93W0JdLT0odGhpcy52YWx1ZS5ub3dbQl0ldGhpcy5vcHRpb25z LmdyaWRbQl0pO31pZih0aGlzLm9wdGlvbnMuc3R5bGUpe3RoaXMuZWxlbWVudC5z ZXRTdHlsZSh0aGlzLm9wdGlvbnMubW9kaWZpZXJzW0JdLHRoaXMudmFsdWUubm93 W0JdK3RoaXMub3B0aW9ucy51bml0KTsKfWVsc2V7dGhpcy5lbGVtZW50W3RoaXMu b3B0aW9ucy5tb2RpZmllcnNbQl1dPXRoaXMudmFsdWUubm93W0JdO319dGhpcy5m aXJlRXZlbnQoImRyYWciLHRoaXMuZWxlbWVudCk7fSxjYW5jZWw6ZnVuY3Rpb24o QSl7dGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudCgibW91c2Vtb3ZlIix0aGlzLmJv dW5kLmNoZWNrKTsKdGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudCgibW91c2V1cCIs dGhpcy5ib3VuZC5jYW5jZWwpO2lmKEEpe3RoaXMuZG9jdW1lbnQucmVtb3ZlRXZl bnQodGhpcy5zZWxlY3Rpb24sdGhpcy5ib3VuZC5ldmVudFN0b3ApO3RoaXMuZmly ZUV2ZW50KCJjYW5jZWwiLHRoaXMuZWxlbWVudCk7Cn19LHN0b3A6ZnVuY3Rpb24o QSl7dGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudCh0aGlzLnNlbGVjdGlvbix0aGlz LmJvdW5kLmV2ZW50U3RvcCk7dGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudCgibW91 c2Vtb3ZlIix0aGlzLmJvdW5kLmRyYWcpO3RoaXMuZG9jdW1lbnQucmVtb3ZlRXZl bnQoIm1vdXNldXAiLHRoaXMuYm91bmQuc3RvcCk7CmlmKEEpe3RoaXMuZmlyZUV2 ZW50KCJjb21wbGV0ZSIsdGhpcy5lbGVtZW50KTt9fX0pO0VsZW1lbnQuaW1wbGVt ZW50KHttYWtlUmVzaXphYmxlOmZ1bmN0aW9uKEEpe3JldHVybiBuZXcgRHJhZyh0 aGlzLCRtZXJnZSh7bW9kaWZpZXJzOnt4OiJ3aWR0aCIseToiaGVpZ2h0In19LEEp KTsKfX0pO3ZhciBTbGlkZXI9bmV3IENsYXNzKHtJbXBsZW1lbnRzOltFdmVudHMs T3B0aW9uc10sb3B0aW9uczp7b25UaWNrOmZ1bmN0aW9uKEEpe2lmKHRoaXMub3B0 aW9ucy5zbmFwKXtBPXRoaXMudG9Qb3NpdGlvbih0aGlzLnN0ZXApO310aGlzLmtu b2Iuc2V0U3R5bGUodGhpcy5wcm9wZXJ0eSxBKTsKfSxzbmFwOmZhbHNlLG9mZnNl dDowLHJhbmdlOmZhbHNlLHdoZWVsOmZhbHNlLHN0ZXBzOjEwMCxtb2RlOiJob3Jp em9udGFsIn0saW5pdGlhbGl6ZTpmdW5jdGlvbihFLEEsRCl7dGhpcy5zZXRPcHRp b25zKEQpO3RoaXMuZWxlbWVudD0kKEUpO3RoaXMua25vYj0kKEEpOwp0aGlzLnBy ZXZpb3VzQ2hhbmdlPXRoaXMucHJldmlvdXNFbmQ9dGhpcy5zdGVwPS0xO3RoaXMu ZWxlbWVudC5hZGRFdmVudCgibW91c2Vkb3duIix0aGlzLmNsaWNrZWRFbGVtZW50 LmJpbmQodGhpcykpO2lmKHRoaXMub3B0aW9ucy53aGVlbCl7dGhpcy5lbGVtZW50 LmFkZEV2ZW50KCJtb3VzZXdoZWVsIix0aGlzLnNjcm9sbGVkRWxlbWVudC5iaW5k V2l0aEV2ZW50KHRoaXMpKTsKfXZhciBGLEI9e30sQz17eDpmYWxzZSx5OmZhbHNl fTtzd2l0Y2godGhpcy5vcHRpb25zLm1vZGUpe2Nhc2UidmVydGljYWwiOnRoaXMu YXhpcz0ieSI7dGhpcy5wcm9wZXJ0eT0idG9wIjtGPSJvZmZzZXRIZWlnaHQiO2Jy ZWFrO2Nhc2UiaG9yaXpvbnRhbCI6dGhpcy5heGlzPSJ4IjsKdGhpcy5wcm9wZXJ0 eT0ibGVmdCI7Rj0ib2Zmc2V0V2lkdGgiO310aGlzLmhhbGY9dGhpcy5rbm9iW0Zd LzI7dGhpcy5mdWxsPXRoaXMuZWxlbWVudFtGXS10aGlzLmtub2JbRl0rKHRoaXMu b3B0aW9ucy5vZmZzZXQqMik7dGhpcy5taW49JGNoayh0aGlzLm9wdGlvbnMucmFu Z2VbMF0pP3RoaXMub3B0aW9ucy5yYW5nZVswXTowOwp0aGlzLm1heD0kY2hrKHRo aXMub3B0aW9ucy5yYW5nZVsxXSk/dGhpcy5vcHRpb25zLnJhbmdlWzFdOnRoaXMu b3B0aW9ucy5zdGVwczt0aGlzLnJhbmdlPXRoaXMubWF4LXRoaXMubWluO3RoaXMu c3RlcHM9dGhpcy5vcHRpb25zLnN0ZXBzfHx0aGlzLmZ1bGw7dGhpcy5zdGVwU2l6 ZT1NYXRoLmFicyh0aGlzLnJhbmdlKS90aGlzLnN0ZXBzOwp0aGlzLnN0ZXBXaWR0 aD10aGlzLnN0ZXBTaXplKnRoaXMuZnVsbC9NYXRoLmFicyh0aGlzLnJhbmdlKTt0 aGlzLmtub2Iuc2V0U3R5bGUoInBvc2l0aW9uIiwicmVsYXRpdmUiKS5zZXRTdHls ZSh0aGlzLnByb3BlcnR5LC10aGlzLm9wdGlvbnMub2Zmc2V0KTtDW3RoaXMuYXhp c109dGhpcy5wcm9wZXJ0eTsKQlt0aGlzLmF4aXNdPVstdGhpcy5vcHRpb25zLm9m ZnNldCx0aGlzLmZ1bGwtdGhpcy5vcHRpb25zLm9mZnNldF07dGhpcy5kcmFnPW5l dyBEcmFnKHRoaXMua25vYix7c25hcDowLGxpbWl0OkIsbW9kaWZpZXJzOkMsb25E cmFnOnRoaXMuZHJhZ2dlZEtub2IuYmluZCh0aGlzKSxvblN0YXJ0OnRoaXMuZHJh Z2dlZEtub2IuYmluZCh0aGlzKSxvbkNvbXBsZXRlOmZ1bmN0aW9uKCl7dGhpcy5k cmFnZ2VkS25vYigpOwp0aGlzLmVuZCgpO30uYmluZCh0aGlzKX0pO2lmKHRoaXMu b3B0aW9ucy5zbmFwKXt0aGlzLmRyYWcub3B0aW9ucy5ncmlkPU1hdGguY2VpbCh0 aGlzLnN0ZXBXaWR0aCk7dGhpcy5kcmFnLm9wdGlvbnMubGltaXRbdGhpcy5heGlz XVsxXT10aGlzLmZ1bGw7fX0sc2V0OmZ1bmN0aW9uKEEpe2lmKCEoKHRoaXMucmFu Z2U+MCleKEE8dGhpcy5taW4pKSl7QT10aGlzLm1pbjsKfWlmKCEoKHRoaXMucmFu Z2U+MCleKEE+dGhpcy5tYXgpKSl7QT10aGlzLm1heDt9dGhpcy5zdGVwPU1hdGgu cm91bmQoQSk7dGhpcy5jaGVja1N0ZXAoKTt0aGlzLmVuZCgpO3RoaXMuZmlyZUV2 ZW50KCJ0aWNrIix0aGlzLnRvUG9zaXRpb24odGhpcy5zdGVwKSk7cmV0dXJuIHRo aXM7Cn0sY2xpY2tlZEVsZW1lbnQ6ZnVuY3Rpb24oQyl7dmFyIEI9dGhpcy5yYW5n ZTwwPy0xOjE7dmFyIEE9Qy5wYWdlW3RoaXMuYXhpc10tdGhpcy5lbGVtZW50Lmdl dFBvc2l0aW9uKClbdGhpcy5heGlzXS10aGlzLmhhbGY7QT1BLmxpbWl0KC10aGlz Lm9wdGlvbnMub2Zmc2V0LHRoaXMuZnVsbC10aGlzLm9wdGlvbnMub2Zmc2V0KTsK dGhpcy5zdGVwPU1hdGgucm91bmQodGhpcy5taW4rQip0aGlzLnRvU3RlcChBKSk7 dGhpcy5jaGVja1N0ZXAoKTt0aGlzLmVuZCgpO3RoaXMuZmlyZUV2ZW50KCJ0aWNr IixBKTt9LHNjcm9sbGVkRWxlbWVudDpmdW5jdGlvbihBKXt2YXIgQj0odGhpcy5v cHRpb25zLm1vZGU9PSJob3Jpem9udGFsIik/KEEud2hlZWw8MCk6KEEud2hlZWw+ MCk7CnRoaXMuc2V0KEI/dGhpcy5zdGVwLXRoaXMuc3RlcFNpemU6dGhpcy5zdGVw K3RoaXMuc3RlcFNpemUpO0Euc3RvcCgpO30sZHJhZ2dlZEtub2I6ZnVuY3Rpb24o KXt2YXIgQj10aGlzLnJhbmdlPDA/LTE6MTt2YXIgQT10aGlzLmRyYWcudmFsdWUu bm93W3RoaXMuYXhpc107CkE9QS5saW1pdCgtdGhpcy5vcHRpb25zLm9mZnNldCx0 aGlzLmZ1bGwtdGhpcy5vcHRpb25zLm9mZnNldCk7dGhpcy5zdGVwPU1hdGgucm91 bmQodGhpcy5taW4rQip0aGlzLnRvU3RlcChBKSk7dGhpcy5jaGVja1N0ZXAoKTt9 LGNoZWNrU3RlcDpmdW5jdGlvbigpe2lmKHRoaXMucHJldmlvdXNDaGFuZ2UhPXRo aXMuc3RlcCl7dGhpcy5wcmV2aW91c0NoYW5nZT10aGlzLnN0ZXA7CnRoaXMuZmly ZUV2ZW50KCJjaGFuZ2UiLHRoaXMuc3RlcCk7fX0sZW5kOmZ1bmN0aW9uKCl7aWYo dGhpcy5wcmV2aW91c0VuZCE9PXRoaXMuc3RlcCl7dGhpcy5wcmV2aW91c0VuZD10 aGlzLnN0ZXA7dGhpcy5maXJlRXZlbnQoImNvbXBsZXRlIix0aGlzLnN0ZXArIiIp Owp9fSx0b1N0ZXA6ZnVuY3Rpb24oQSl7dmFyIEI9KEErdGhpcy5vcHRpb25zLm9m ZnNldCkqdGhpcy5zdGVwU2l6ZS90aGlzLmZ1bGwqdGhpcy5zdGVwcztyZXR1cm4g dGhpcy5vcHRpb25zLnN0ZXBzP01hdGgucm91bmQoQi09QiV0aGlzLnN0ZXBTaXpl KTpCO30sdG9Qb3NpdGlvbjpmdW5jdGlvbihBKXtyZXR1cm4odGhpcy5mdWxsKk1h dGguYWJzKHRoaXMubWluLUEpKS8odGhpcy5zdGVwcyp0aGlzLnN0ZXBTaXplKS10 aGlzLm9wdGlvbnMub2Zmc2V0Owp9fSk7 ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline; filename=system.js Content-Type: application/x-javascript; charset=utf-8; name=system.js Content-Location: http://habrahabr.ru/js/1307009785/system.js Content-Transfer-Encoding: Base64 RWxlbWVudC5pbXBsZW1lbnQoewoJZmxhc2g6IGZ1bmN0aW9uKHRvLGZyb20scmVw cyxwcm9wLGR1cikgewoJCWlmKCFyZXBzKSB7IHJlcHMgPSAxOyB9CgkJaWYoIXBy b3ApIHsgcHJvcCA9ICdiYWNrZ3JvdW5kLWNvbG9yJzsgfQoJCWlmKCFkdXIpIHsg ZHVyID0gMjUwOyB9CgkJdmFyIGVmZmVjdCA9IG5ldyBGeC5Ud2Vlbih0aGlzLCB7 CgkJCQlkdXJhdGlvbjogZHVyLAoJCQkJbGluazogJ2NoYWluJwoJCQl9KQoJCWZv cih4ID0gMTsgeCA8PSByZXBzOyB4KyspCgkJCWVmZmVjdC5zdGFydChwcm9wLGZy b20sdG8pLnN0YXJ0KHByb3AsdG8sZnJvbSk7Cgl9LAoJcmVwbGFjZUNsYXNzOiBm dW5jdGlvbihjbGFzczEsIGNsYXNzMikgewoJCXRoaXMucmVtb3ZlQ2xhc3MoY2xh c3MxKTsKCQl0aGlzLmFkZENsYXNzKGNsYXNzMik7Cgl9LAoJc3dpdGNoQ2xhc3M6 IGZ1bmN0aW9uKGNsYXNzMSwgY2xhc3MyKSB7CgkJaWYgKHRoaXMuaGFzQ2xhc3Mo Y2xhc3MxKSkKCQkJdGhpcy5yZXBsYWNlQ2xhc3MoY2xhc3MxLCBjbGFzczIpOwoJ CWVsc2UKCQkJdGhpcy5yZXBsYWNlQ2xhc3MoY2xhc3MyLCBjbGFzczEpOwoJfQp9 KTsKCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8qKioqKioqKioq KioqKiAg0JLQndCY0JzQkNCd0JjQlSEg0JTQkNCb0KzQqNCVINCY0JTQldCiINCh 0KLQoNCQ0KjQndCr0Jkg0KHQotCQ0KDQq9CZINCa0J7QlCEgICoqKioqKioqKioq KioqKioqCi8vKioqKioqKioqKioqKioqKiAg0J7QlNCV0J3QrNCi0JUg0KHQmtCQ 0KTQkNCd0JTQoCDQn9Cg0Jgg0JLQpdCe0JTQlSDQkiDQrdCi0KMg0JfQntCd0KMh ICAqKioqKioqKioqKioqKioqKioqCi8vKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKCgovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiDQndCw0YHQ u9C10LTQvtCy0LDQvdC40LUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCkZ1bmN0aW9uLnByb3RvdHlwZS5pbmhlcml0c0Zyb20gPSBmdW5jdGlvbihC YXNlQ2xhc3MpIHsgLy8gdGhhbmtzIHRvIEtldmluIExpbmRzZXkgZm9yIHRoaXMg aWRlYQoJdmFyIEluaGVyaXRhbmNlID0gZnVuY3Rpb24oKSB7fTsKCUluaGVyaXRh bmNlLnByb3RvdHlwZSA9IEJhc2VDbGFzcy5wcm90b3R5cGU7Cgl0aGlzLnByb3Rv dHlwZSA9IG5ldyBJbmhlcml0YW5jZSgpOwoJdGhpcy5wcm90b3R5cGUuY29uc3Ry dWN0b3IgPSB0aGlzOwoJdGhpcy5zdXBlckNsYXNzID0gQmFzZUNsYXNzOwp9CgpP YmplY3QuZXh0ZW5kT2JqZWN0ID0gZnVuY3Rpb24oZGVzdGluYXRpb24sIHNvdXJj ZSkgewoJZm9yICh2YXIgcHJvcGVydHkgaW4gc291cmNlKQoJCWRlc3RpbmF0aW9u W3Byb3BlcnR5XSA9IHNvdXJjZVtwcm9wZXJ0eV07CglyZXR1cm4gZGVzdGluYXRp b247Cn07CgovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKiDQoNCw0LHQvtGC 0LAg0YEg0YHQvtCx0YvRgtC40Y/QvNC4ICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgpmdW5jdGlvbiBnZXRDaGFyQ29kZShldikgewoJaWYgKGV2LmNoYXJD b2RlKSB2YXIgY2hhckNvZGUgPSBldi5jaGFyQ29kZTsKCWVsc2UgaWYgKGV2Lmtl eUNvZGUpIHZhciBjaGFyQ29kZSA9IGV2LmtleUNvZGU7CgllbHNlIGlmIChldi53 aGljaCkgdmFyIGNoYXJDb2RlID0gZXYud2hpY2g7CgllbHNlIHZhciBjaGFyQ29k ZSA9IDA7CglyZXR1cm4gY2hhckNvZGU7Cn0KCi8vKioqKioqKioqKioqKioqKioq KioqKioqKiDQntC/0YDQtdC00LXQu9C10L3QuNC1INCx0YDQvtGD0LfQtdGA0L7Q siAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgppZiAod2luZG93LkFjdGl2 ZVhPYmplY3QpIHdpbmRvdy5pZSA9IHdpbmRvd1t3aW5kb3cuWE1MSHR0cFJlcXVl c3QgPyAnaWU3JyA6ICdpZTYnXSA9IHRydWU7CmVsc2UgaWYgKGRvY3VtZW50LmNo aWxkTm9kZXMgJiYgIWRvY3VtZW50LmFsbCAmJiAhbmF2aWdhdG9yLnRhaW50RW5h YmxlZCkgd2luZG93LndlYmtpdCA9IHdpbmRvd1t3aW5kb3cueHBhdGggPyAnd2Vi a2l0NDIwJyA6ICd3ZWJraXQ0MTknXSA9IHRydWU7CmVsc2UgaWYgKGRvY3VtZW50 LmdldEJveE9iamVjdEZvciAhPSBudWxsKSB3aW5kb3cuZ2Vja28gPSB0cnVlOwp2 YXIgaXNJRSAgPSAobmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZigiTVNJRSIp ICE9IC0xKSA/IHRydWUgOiBmYWxzZTsKdmFyIGlzV2luID0gKG5hdmlnYXRvci5h cHBWZXJzaW9uLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigid2luIikgIT0gLTEpID8g dHJ1ZSA6IGZhbHNlOwp2YXIgaXNPcGVyYSA9IChuYXZpZ2F0b3IudXNlckFnZW50 LmluZGV4T2YoIk9wZXJhIikgIT0gLTEpID8gdHJ1ZSA6IGZhbHNlOwoKCi8vKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBBSkFYICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKLyoKCXVybCAtINC+0YLQutGD0LTQ sCDQt9Cw0LPRgNGD0LbQsNC10LwKCWFqYXhDYWxsQmFja0Z1bmN0aW9uIC0g0YfR gtC+INCy0YvQt9GL0LLQsNC10Lwg0L/QviDQt9Cw0LLQtdGA0YjQtdC90LjQuCDQ t9Cw0LPRgNGD0LfQutC4CglwYXJhbXMgLSDQv9Cw0YDQsNC80LXRgtGA0Ysg0LIg 0LLQuNC00LUg0L7QsdGK0LXQutGC0LAg0LjQu9C4INC80LDRgdGB0LjQstCwCglj YWxsT2JqZWN0IC0g0LzQtdGC0L7QtNC+0Lwg0LrQsNC60L7Qs9C+INC+0LHRitC1 0LrRgtCwINGP0LLQu9GP0LXRgtGB0Y8gYWpheENhbGxCYWNrRnVuY3Rpb24gKNC1 0YHQu9C4INGN0YLQviDQvNC10YLQvtC0LCDQsCDQvdC1INCz0LvQvtCx0LDQu9GM 0L3QsNGPINGE0YPQvdGG0LjRjykKKi8KZnVuY3Rpb24gYWpheFBvc3QodXJsLCBk YXRhLCBhamF4Q2FsbEJhY2tGdW5jdGlvbiwgcGFyYW1zLCBjYWxsT2JqZWN0LCBh amF4Q2FsbEJhY2tFcnJvckZ1bmN0aW9uKSB7Cgl2YXIgYWpheE9iamVjdCA9IG51 bGw7CglpZiAod2luZG93LlhNTEh0dHBSZXF1ZXN0KSAvLyBicmFuY2ggZm9yIG5h dGl2ZSBYTUxIdHRwUmVxdWVzdCBvYmplY3QKCQlhamF4T2JqZWN0ID0gbmV3IFhN TEh0dHBSZXF1ZXN0KCk7CgllbHNlIGlmICh3aW5kb3cuQWN0aXZlWE9iamVjdCkg Ly8gYnJhbmNoIGZvciBJRS9XaW5kb3dzIEFjdGl2ZVggdmVyc2lvbgoJCWFqYXhP YmplY3QgPSBuZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKTsK CWlmKGFqYXhPYmplY3QpewoJCWFqYXhPYmplY3Qub25yZWFkeXN0YXRlY2hhbmdl ID0gZnVuY3Rpb24oKXsKCQkJYWpheEhhbmRsZXIoYWpheE9iamVjdCwgYWpheENh bGxCYWNrRnVuY3Rpb24sIHBhcmFtcywgY2FsbE9iamVjdCwgYWpheENhbGxCYWNr RXJyb3JGdW5jdGlvbik7CgkJfQoJCWFqYXhPYmplY3Qub3BlbigiUE9TVCIsIHVy bCwgdHJ1ZSk7CgkJYWpheE9iamVjdC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50 LXR5cGUiLCAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7CgkJ YWpheE9iamVjdC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LWxlbmd0aCIsIGRh dGEubGVuZ3RoKTsKCQlhamF4T2JqZWN0LnNldFJlcXVlc3RIZWFkZXIoIkNvbm5l Y3Rpb24iLCAiY2xvc2UiKTsKCQlhamF4T2JqZWN0LnNlbmQoZGF0YSk7CQoJfQp9 CgoKZnVuY3Rpb24gYWpheEhhbmRsZXIoYWpheE9iamVjdCwgYWpheENhbGxCYWNr RnVuY3Rpb24sIHBhcmFtcywgY2FsbE9iamVjdCwgYWpheENhbGxCYWNrRXJyb3JG dW5jdGlvbil7IAoJaWYgKGFqYXhPYmplY3QucmVhZHlTdGF0ZSA9PSA0KQoJCWlm IChhamF4T2JqZWN0LnN0YXR1cyA9PSAyMDApCgkJCWFqYXhDYWxsQmFja0Z1bmN0 aW9uLmNhbGwoY2FsbE9iamVjdCwgYWpheE9iamVjdCwgcGFyYW1zKTsKCQllbHNl CgkJCWlmKGFqYXhDYWxsQmFja0Vycm9yRnVuY3Rpb24pCgkJCQlhamF4Q2FsbEJh Y2tFcnJvckZ1bmN0aW9uLmNhbGwoY2FsbE9iamVjdCwgYWpheE9iamVjdCk7CQoJ CQllbHNlCgkJCQlmdXR1X2FsZXJ0KCIiLC8qKCLQktC+0LfQvdC40LrQu9CwINC+ 0YjQuNCx0LrQsCDQsiDQv9C+0LvRg9GH0LXQvdC40LggWE1MINC00LDQvdC90YvR hTo8YnIgLz4iICsgYWpheE9iamVjdC5zdGF0dXNUZXh0KSovICfQo9C/0YEhINCn 0YLQvi3RgtC+INC/0L7RiNC70L4g0L3QtSDRgtCw0LouINCf0L7Qv9GA0L7QsdGD 0LnRgtC1INC10YnQtSDRgNCw0LcuJywgZmFsc2UsICdlcnJvcicpOwp9CgpmdW5j dGlvbiBhamF4TG9hZFBvc3QodXJsLCBkYXRhLCBhamF4Q2FsbEJhY2tGdW5jdGlv biwgY2FsbE9iamVjdCwgcGFyYW1zLCBhamF4Q2FsbEJhY2tFcnJvckZ1bmN0aW9u KSB7Cgl2YXIgYWpheE9iamVjdCA9IG51bGw7CglpZiAod2luZG93LlhNTEh0dHBS ZXF1ZXN0KSAvLyBicmFuY2ggZm9yIG5hdGl2ZSBYTUxIdHRwUmVxdWVzdCBvYmpl Y3QKCQlhamF4T2JqZWN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CgllbHNlIGlm ICh3aW5kb3cuQWN0aXZlWE9iamVjdCkgLy8gYnJhbmNoIGZvciBJRS9XaW5kb3dz IEFjdGl2ZVggdmVyc2lvbgoJCWFqYXhPYmplY3QgPSBuZXcgQWN0aXZlWE9iamVj dCgiTWljcm9zb2Z0LlhNTEhUVFAiKTsKCWlmKGFqYXhPYmplY3QpewoJCWFqYXhP YmplY3Qub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKXsKCQkJYWpheExv YWRIYW5kbGVyKGFqYXhPYmplY3QsIGFqYXhDYWxsQmFja0Z1bmN0aW9uLCBjYWxs T2JqZWN0LCBwYXJhbXMsIGFqYXhDYWxsQmFja0Vycm9yRnVuY3Rpb24pOwoJCX0K CQlhamF4T2JqZWN0Lm9wZW4oIlBPU1QiLCB1cmwsIHRydWUpOwoJCWFqYXhPYmpl Y3Quc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC10eXBlIiwgImFwcGxpY2F0aW9u L3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpOwoJCWFqYXhPYmplY3Quc2V0UmVxdWVz dEhlYWRlcigiQ29udGVudC1sZW5ndGgiLCBkYXRhLmxlbmd0aCk7CgkJYWpheE9i amVjdC5zZXRSZXF1ZXN0SGVhZGVyKCJDb25uZWN0aW9uIiwgImNsb3NlIik7CgkJ YWpheE9iamVjdC5zZW5kKGRhdGEpOwoJfQp9CmZ1bmN0aW9uIGFqYXhMb2FkSGFu ZGxlcihhamF4T2JqZWN0LCBhamF4Q2FsbEJhY2tGdW5jdGlvbiwgY2FsbE9iamVj dCwgcGFyYW1zLCBhamF4Q2FsbEJhY2tFcnJvckZ1bmN0aW9uKXsKCWlmIChhamF4 T2JqZWN0LnJlYWR5U3RhdGUgPT0gNCkKCQlpZiAoYWpheE9iamVjdC5zdGF0dXMg PT0gMjAwKQoJCQlhamF4Q2FsbEJhY2tGdW5jdGlvbi5jYWxsKGNhbGxPYmplY3Qs IGFqYXhPYmplY3QsIHBhcmFtcyk7CgkJZWxzZQoJCQlpZihhamF4Q2FsbEJhY2tF cnJvckZ1bmN0aW9uKQoJCQkJYWpheENhbGxCYWNrRXJyb3JGdW5jdGlvbi5jYWxs KGNhbGxPYmplY3QsIGFqYXhPYmplY3QpOwkKCQkJZWxzZQoJCQkJZnV0dV9hbGVy dCgiIiwvKigi0JLQvtC30L3QuNC60LvQsCDQvtGI0LjQsdC60LAg0LIg0L/QvtC7 0YPRh9C10L3QuNC4IFhNTCDQtNCw0L3QvdGL0YU6PGJyIC8+IiArIGFqYXhPYmpl Y3Quc3RhdHVzVGV4dCkqLyAn0KPQv9GBISDQp9GC0L4t0YLQviDQv9C+0YjQu9C+ INC90LUg0YLQsNC6LiDQn9C+0L/RgNC+0LHRg9C50YLQtSDQtdGJ0LUg0YDQsNC3 LicsIHRydWUsICdlcnJvcicpOwp9Cg== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline; filename=init.js Content-Type: application/x-javascript; charset=utf-8; name=init.js Content-Location: http://habrahabr.ru/js/1307009785/tm/init.js Content-Transfer-Encoding: Base64 dmFyIHRtID0gKHR5cGVvZih0bSkgIT0gJ3VuZGVmaW5lZCcpID8gdG0gOiB7fTsK CmRvY3VtZW50LmlkID0gJDsgLy8g0Y3RgtC+INGH0YLQvtCx0YsgTW9vdG9vbHMg TW9yZSAxLjIuMy4xINGA0LDQsdC+0YLQsNC7INGBIE1vb3Rvb2xzIENvcmUgMS4y LjAKCi8qKgogKiDQmNC90YLQtdGA0YTQtdC50YEg0LjQvdC40YbQuNCw0LvQuNC3 0LDRhtC40Lgg0LTQu9GPINCy0YHQtdCz0L4g0L3QsCDRgdCy0LXRgtC1CiAqIEBh dXRob3IgYmVib3BraWQKKi8KCnRtLmluaXQgPSB7CglfaW5pdGlhbGl6YXRpb25z OiBbXSwKCV93aW5kb3dMb2FkZWQ6IGZhbHNlLAoJZm9ybXM6IG51bGwsCgljb250 cm9sczogbnVsbCwKCWFkZDogZnVuY3Rpb24gKGYpIHsKCQlpZiAodGhpcy5fd2lu ZG93TG9hZGVkKSB7CgkJCWYuY2FsbCh3aW5kb3cpOwoJCX0KCQllbHNlIHsKCQkJ dGhpcy5faW5pdGlhbGl6YXRpb25zLnB1c2goZik7CgkJfTsKCX0sCglfbG9hZGVk OiBmdW5jdGlvbiAoKSB7CgkJdGhpcy5fd2luZG93TG9hZGVkID0gdHJ1ZTsKCQl0 aGlzLl9pbml0aWFsaXphdGlvbnMuZWFjaCggZnVuY3Rpb24gKGYpIHsKCQkJZi5j YWxsKHdpbmRvdyk7CgkJfSk7Cgl9Cn07Cgp3aW5kb3cuYWRkRXZlbnQoJ2RvbXJl YWR5JywgdG0uaW5pdC5fbG9hZGVkLmJpbmQodG0uaW5pdCkpOwoKLyoqCiAqINCk 0YPQvdC60YbQuNGPINC00LvRjyDQu9C+0LPQuNGA0L7QstCw0L3QuNGPLCDQutC+ 0YLQvtGA0LDRjyDQvdC1INCy0YvQt9GL0LLQsNC10YIg0L7RiNC40LHQvtC6LCDQ tdGB0LvQuCDQvdC10YIg0LrQvtC90YHQvtC70LgKICogQGF1dGhvciBiZWJvcGtp ZAoqLwp0bS5sb2cgPSBmdW5jdGlvbiAoKSB7CglpZiAoKHR5cGVvZihjb25zb2xl KSAhPSAndW5kZWZpbmVkJykgJiYgKHR5cGVvZihjb25zb2xlLmxvZykgPT0gJ2Z1 bmN0aW9uJykpIHsKCSAgICAvL2ZvciAodmFyIGk9MCwgbD1hcmd1bWVudHMubGVu Z3RoOyBpPGw7IGkrKykgewoJICAgICAgICBjb25zb2xlLmxvZyhhcmd1bWVudHMp OwoJICAgLy8gfTsKCX0gZWxzZSBpZiAod2luZG93Lm9wZXJhICYmIG9wZXJhLnBv c3RFcnJvcikgewoJCW9wZXJhLnBvc3RFcnJvcihhcmd1bWVudHMpOwoJfTsKfTsK CnRtLmJhZFRhZ3MgPSBbCgknT0JKRUNUJywKCSdQQVJBTScsCgknRU1CRUQnLAoJ J05PRU1CRUQnCl07Cgp0bS5oZWxwZXJzID0gewogICAgLyoqCiAgICAgKiDQktC+ 0LfQstGA0LDRidCw0LXRgiDRhtC10LvQvtC1INGH0LjRgdC70L4g0LIg0YPQtNC+ 0LHQvdC+0Lwg0LTQu9GPINGH0LXQu9C+0LLQtdC60LAg0LLQuNC00LUgLSDRgSDQ v9GA0L7QsdC10LvQsNC80LgKICAgICAqIEBhdXRob3IgYmVib3BraWQKICAgICov CiAgICBodW1hbml6ZU51bWJlcjogZnVuY3Rpb24gKG51bWJlcikgewogICAgICAg IGlmICghbnVtYmVyKSB7IHJldHVybiAnJzsgfQogICAgICAgIHZhciBzID0gbnVt YmVyLnRvU3RyaW5nKCk7CiAgICAgICAgdmFyIHIgPSAnJzsKICAgICAgICBmb3Ig KCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgIAlyID0g ciArICgoKCgobC1pKSAlIDMpID09IDApICYmIChpICE9IDApKSA/ICcgJyA6ICcn KSArIHMuY2hhckF0KGkpOwogICAgICAgIH07CiAgICAgICAgcmV0dXJuIHI7CiAg ICB9LAoJCgkvKioKCSAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC00LDRgtGDINC4 INCy0YDQtdC80Y8g0LIg0L3QvtGA0LzQsNC70YzQvdC+0Lwg0LLQuNC00LUKCSAq IEBhdXRob3IgbWRldmlscwoJICovCglodW1hbml6ZURhdGU6IGZ1bmN0aW9uKHRp bWVzdGFtcCwgZGF0ZU9ubHkpewoJCXZhciB0b2RheSA9IG5ldyBEYXRlKCk7CgkJ dmFyIGRhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXAgKiAxMDAwKTsKCQl2YXIgbW9u dGhzID0gWyLRj9C90LLQsNGA0Y8iLCAi0YTQtdCy0YDQsNC70Y8iLCAi0LzQsNGA 0YLQsCIsICLQsNC/0YDQtdC70Y8iLCAi0LzQsNGPIiwgItC40Y7QvdGPIiwgItC4 0Y7Qu9GPIiwgItCw0LLQs9GD0YHRgtCwIiwgItGB0LXQvdGC0Y/QsdGA0Y8iLCAi 0L7QutGC0Y/QsdGA0Y8iLCAi0L3QvtGP0LHRgNGPIiwgItC00LXQutCw0LHRgNGP Il07OwoJCXZhciByZXN1bHQgPSAiIjsKCQlpZih0b2RheS5nZXREYXRlKCkgIT0g ZGF0ZS5nZXREYXRlKCkgfHwgdG9kYXkuZ2V0TW9udGgoKSAhPSBkYXRlLmdldE1v bnRoKCkgfHwgdG9kYXkuZ2V0RnVsbFllYXIoKSAhPSBkYXRlLmdldEZ1bGxZZWFy KCkpCgkJCXJlc3VsdCA9IGRhdGUuZ2V0RGF0ZSgpICsgIiAiICsgbW9udGhzW2Rh dGUuZ2V0TW9udGgoKV07CgkJaWYodG9kYXkuZ2V0RnVsbFllYXIoKSAhPSBkYXRl LmdldEZ1bGxZZWFyKCkpCgkJCXJlc3VsdCArPSAiICIgKyBkYXRlLmdldEZ1bGxZ ZWFyKCk7CgkJaWYoIWRhdGVPbmx5KSB7CgkJCWlmIChyZXN1bHQpIHJlc3VsdCAr PSAiLCAiOwoJCQlyZXN1bHQgKz0gItCyICIgKyB0bS5oZWxwZXJzLmFkZFplcm8o ZGF0ZS5nZXRIb3VycygpLCAyKSArICI6IiArIHRtLmhlbHBlcnMuYWRkWmVybyhk YXRlLmdldE1pbnV0ZXMoKSwgMik7CgkJfQoJCXJldHVybiByZXN1bHQ7Cgl9LAoJ CgkvKioKCSAqINCU0L7QsdCw0LLQu9GP0LXRgiDQvdGD0LvQuCDQv9C10YDQtdC0 INGH0LjRgdC70L7QvCDQtNC+INGC0LXRhSDQv9C+0YAsINC/0L7QutCwINC+0L3Q viDQvdC1INC00L7RgdGC0LjQs9C90LXRgiDQvdGD0LbQvdC+0Lkg0LTQu9C40L3R iwoJICogQGF1dGhvciBtZGV2aWxzCgkgKi8KCWFkZFplcm86IGZ1bmN0aW9uKG51 bWJlciwgbGVuKSB7CgkJdmFyIHMgPSBudW1iZXIudG9TdHJpbmcoKTsKCQl3aGls ZSAocy5sZW5ndGggPCBsZW4pIHM9JzAnK3M7CgkJcmV0dXJuIHM7Cgl9Cn07CgpF bGVtZW50LmltcGxlbWVudCh7CiAgICBzY3JvbGxUb01lOiBmdW5jdGlvbiAoX28p IHsKICAgICAgICB2YXIgbyA9IF9vfHx7fTsKICAgICAgICAKICAgICAgICB2YXIg eCA9IG8ueHx8MCwKICAgICAgICAgICAgeSA9IHRoaXMuZ2V0UG9zaXRpb24oKS55 ICsgKG8ueXx8MCk7CiAgICAgICAgCiAgICAgICAgKHRlbXAud2luZG93U2Nyb2xs IHx8ICh0ZW1wLndpbmRvd1Njcm9sbCA9IG5ldyBGeC5TY3JvbGwoICQoZG9jdW1l bnQuYm9keSkgLCB7ICdkdXJhdGlvbic6IDUwMCwgJ2xpbmsnOiAnY2FuY2VsJyB9 ICkgKSk7CiAgICAgICAgCiAgICAgICAgdGVtcC53aW5kb3dTY3JvbGxbIG8ubm93 ID8gJ3NldCcgOiAnc3RhcnQnIF0oMCwgdGhpcy5nZXRQb3NpdGlvbigpLnkpOwoK ICAgICAgICBpZiAobyAmJiBvLmNhbGxiYWNrKSB7CiAgICAgICAgICAgIAogICAg ICAgICAgICBvLm5vdyA/IG8uY2FsbGJhY2soKSA6IHRlbXAud2luZG93U2Nyb2xs LmFkZEV2ZW50KCdjb21wbGV0ZScsIChmdW5jdGlvbiAoY2FsbGJhY2spIHsKICAg ICAgICAgICAgICAgIHRoaXMucmVtb3ZlRXZlbnQoJ2NvbXBsZXRlJywgY2FsbGJh Y2spOwogICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgICAgfSku YmluZCh0ZW1wLndpbmRvd1Njcm9sbCwgby5jYWxsYmFjaykpOwogICAgICAgIH0K ICAgICAgICByZXR1cm4gdGhpczsKICAgIH0KfSk7Cgp0bS5yZXMgPSB7fTsKCnRt LnJlcy5fbG9hZGVkQ1NTID0gW107CnRtLnJlcy5sb2FkQ1NTID0gZnVuY3Rpb24o dXJsKSB7CglpZiAoIXRtLnJlcy5fbG9hZGVkQ1NTW3VybF0pIHsKCQl2YXIgY3Nz ID0gbmV3IEFzc2V0LmNzcyh1cmwpOwoJfQoJdG0ucmVzLl9sb2FkZWRDU1NbdXJs XSA9IHRydWU7Cn07Cgp0bS5yZXMubG9hZElNRyA9IGZ1bmN0aW9uKHVybCkgewoJ dmFyIGltZyA9IG5ldyBBc3NldC5pbWFnZSh1cmwpOwp9OwoKZnVuY3Rpb24gZCgp IHsKCXZhciBkZWJ1Z1NjcmlwdCA9IG5ldyBBc3NldC5qYXZhc2NyaXB0KCcvanMv dG0vZGVidWcuanMnLCB7aWQ6ICdkZWJ1Z1NjcmlwdCd9KTsKCXZhciBjb25zb2xl U2NyaXB0ID0gbmV3IEFzc2V0LmphdmFzY3JpcHQoJy9qcy90bS9jb25zb2xlLmpz Jywge2lkOiAnY29uc29sZVNjcmlwdCd9KTsKfQoKdG0uY3VzdG9tRXZlbnRNYW5h Z2VyID0gewoJYWRkRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50TmFtZSwgY2FsbGJhY2sp IHsKCQl0aGlzLl9ldmVudHMgfHwgKHRoaXMuX2V2ZW50cyA9IFtdKTsKCQl0aGlz Ll9ldmVudHNbZXZlbnROYW1lXSB8fCAodGhpcy5fZXZlbnRzW2V2ZW50TmFtZV0g PSBbXSk7CgkJdGhpcy5fZXZlbnRzW2V2ZW50TmFtZV0ucHVzaChjYWxsYmFjayk7 Cgl9LAoJcmVtb3ZlRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50TmFtZSwgY2FsbGJhY2sp IHsKCQl0aGlzLl9ldmVudHMgfHwgKHRoaXMuX2V2ZW50cyA9IFtdKTsKCQl0aGlz Ll9ldmVudHNbZXZlbnROYW1lXSB8fCAodGhpcy5fZXZlbnRzW2V2ZW50TmFtZV0g PSBbXSk7CgkJdGhpcy5fZXZlbnRzW2V2ZW50TmFtZV0uZXJhc2UoY2FsbGJhY2sp OwoJfSwKCWZpcmVFdmVudDogZnVuY3Rpb24oZXZlbnROYW1lKSB7CgkJdmFyIGFy Z3MgPSBbXTsKCQlmb3IgKHZhciBpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKykK CQkJYXJncy5wdXNoKGFyZ3VtZW50c1tpXSk7CgkJdGhpcy5fZXZlbnRzIHx8ICh0 aGlzLl9ldmVudHMgPSBbXSk7CgkJdGhpcy5fZXZlbnRzW2V2ZW50TmFtZV0gfHwg KHRoaXMuX2V2ZW50c1tldmVudE5hbWVdID0gW10pOwoJCXRoaXMuX2V2ZW50c1tl dmVudE5hbWVdLmZvckVhY2goZnVuY3Rpb24oaXRlbSl7aXRlbS5hcHBseSh0aGlz LCBhcmdzKTt9KTsKCQl0bS5sb2coYXJncywgZXZlbnROYW1lICsgJyAoJyArIHRo aXMuX2V2ZW50c1tldmVudE5hbWVdLmxlbmd0aCArICcpJyk7Cgl9Cn07 ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline; filename=common.js Content-Type: application/x-javascript; charset=utf-8; name=common.js Content-Location: http://habrahabr.ru/js/1307009785/common.js Content-Transfer-Encoding: Base64 dG0uaW5pdC5hZGQoZnVuY3Rpb24oKXsKCXZhciBwYWdlTmF2ID0gbnVsbDsKCWlm IChwYWdlTmF2ID0gJChkb2N1bWVudCkuZ2V0RWxlbWVudCgnLnBhZ2UtbmF2Jykp IHsKCQl2YXIgcHJldiA9IHBhZ2VOYXYuZ2V0RWxlbWVudCgnLm5leHQtcHJldiAu cHJldicpOwoJCXZhciBuZXh0ID0gcGFnZU5hdi5nZXRFbGVtZW50KCcubmV4dC1w cmV2IC5uZXh0Jyk7CgkJJCh3aW5kb3cpLmFkZEV2ZW50KCdrZXlkb3duJywgZnVu Y3Rpb24oZSl7CgkJCWlmICgoKGUuY29udHJvbCAmJiBlLmtleSA9PSAncmlnaHQn KSB8fCAoZS5hbHQgJiYgZS5rZXkgPT0gJ3JpZ2h0JykpICYmIG5leHQpIHsKCQkJ CXRvcC5sb2NhdGlvbi5ocmVmID0gbmV4dC5nZXQoImhyZWYiKTsKCQkJCWUuc3Rv cCgpOwoJCQl9IGVsc2UgaWYgKCgoZS5jb250cm9sICYmIGUua2V5ID09ICdsZWZ0 JykgfHwgKGUuYWx0ICYmIGUua2V5ID09ICdsZWZ0JykpICYmIHByZXYpIHsKCQkJ CXRvcC5sb2NhdGlvbi5ocmVmID0gcHJldi5nZXQoImhyZWYiKTsKCQkJCWUuc3Rv cCgpOwoJCQl9CgkJfSk7Cgl9Cgl2YXIgc2VhcmNoID0gJCgic2VhcmNoIik7Cglp ZiAoc2VhcmNoKSB7CgkJdmFyIGlucHV0IAkJPSBzZWFyY2gsCgkJCWxhYmVsIAkJ PSBpbnB1dC5nZXRQYXJlbnQoKSwKCQkJbGFiZWxzcGFuIAk9IGxhYmVsLmdldEVs ZW1lbnQoJ3NwYW4nKTsKCQlpZiAoaW5wdXQgJiYgbGFiZWwpIHsKCQkJCgkJCWlm ICghaW5wdXQudmFsdWUpIHsKCQkJCWxhYmVsLmFkZENsYXNzKCJpbnB1dC1wbGFj ZWhvbGRpbmciKTsKCQkJfQoKCQkJaW5wdXQuYWRkRXZlbnRzKHsKCQkJCSdmb2N1 cyc6IGZ1bmN0aW9uICgpIHsKCQkJCQlpZiAoIWxhYmVsLm5vcGxhY2Vob2xkaW5n KSB7CgkJCQkJCWxhYmVsLnJlbW92ZUNsYXNzKCJpbnB1dC1wbGFjZWhvbGRpbmci KTsKCQkJCQkJbGFiZWwubm9wbGFjZWhvbGRpbmcgPSB0cnVlOwoJCQkJCX0KCQkJ CX0sCgkJCQknYmx1cic6IGZ1bmN0aW9uICgpIHsKCQkJCQlpZiAoaW5wdXQudmFs dWUgPT0gJycpIHsKCQkJCQkJbGFiZWwuYWRkQ2xhc3MoImlucHV0LXBsYWNlaG9s ZGluZyIpOwoJCQkJCQlsYWJlbC5ub3BsYWNlaG9sZGluZyA9IGZhbHNlOwoJCQkJ CX0KCQkJCX0sCgkJCQknY2hhbmdlJyA6IGZ1bmN0aW9uKCkgewoJCQkJCWlmICgh bGFiZWwubm9wbGFjZWhvbGRpbmcpIHsKCQkJCQkJbGFiZWwucmVtb3ZlQ2xhc3Mo ImlucHV0LXBsYWNlaG9sZGluZyIpOwoJCQkJCQlsYWJlbC5ub3BsYWNlaG9sZGlu ZyA9IHRydWU7CgkJCQkJfQoJCQkJfQoJCQl9KQoJCQlsYWJlbHNwYW4uYWRkRXZl bnQoJ21vdXNlZG93bicsZnVuY3Rpb24oKXsKCQkJCWlucHV0LmZvY3VzKCk7CgkJ CQlyZXR1cm4gZmFsc2UKCQkJfSkKCQl9Cgl9Cgl2YXIgaGVscF90aXBzID0gJCQo Jy5oZWxwLXRpcCcpOwoJaWYgKGhlbHBfdGlwcyAmJiBoZWxwX3RpcHMubGVuZ3Ro KSB7CgkJdmFyIGN1cnJlbnRfdGlwID0gbnVsbDsKCQl2YXIgdGlwX2hpZGRpbmdf dGltZW91dDsKCQkKCQl2YXIgaHRfbmljZV9ub2RlID0gJCgnaGVscC10aXAtdGV4 dCcpOwoJCQlodF9uaWNlX25vZGUudGV4dF9ub2RlID0gaHRfbmljZV9ub2RlLmdl dEVsZW1lbnQoJyNoZWxwLXRpcC10ZXh0LWNvbnRlbnQnKTsKCgkJdmFyIHNob3df aGVscF90aXAgPSBmdW5jdGlvbih0ZXh0LG5vZGUpewoJCQljbGVhclRpbWVvdXQo dGlwX2hpZGRpbmdfdGltZW91dCk7CgkJCWlmIChjdXJyZW50X3RpcCA9PSBub2Rl KSB7cmV0dXJuIHRydWU7fQoJCQkKCQkJdmFyIHAgPSBub2RlLmdldFBvc2l0aW9u KCk7CgkJCQoJCQl2YXIgcHggPSBwLnggKyBub2RlLmdldFN0eWxlKCd3aWR0aCcp LnRvSW50KCkvMjsKCQkJdmFyIHB5ID0gcC55OwoJCQlub2RlCgkJCQoJCQlodF9u aWNlX25vZGUuc3R5bGUudG9wID0gcHkgKyAncHgnOwoJCQlodF9uaWNlX25vZGUu c3R5bGUubGVmdCA9IHB4ICsgJ3B4JzsKCQkJaWYgKHB4IDwgMTc5ICkgewoJCQkJ aHRfbmljZV9ub2RlLmFkZENsYXNzKCdoZWxwLXRpcHMtdG9vLW11Y2gtbGVmdCcp OwoJCQl9CgkJCQoJCQlodF9uaWNlX25vZGUudGV4dF9ub2RlLmlubmVySFRNTCA9 IHRleHQ7CgkJCWh0X25pY2Vfbm9kZS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsK CQkJY3VycmVudF90aXAgPSBodF9uaWNlX25vZGU7CgkJfQoJCXZhciBoaWRlX2hl bHBfdGlwID0gZnVuY3Rpb24oKXsKCQkJdGlwX2hpZGRpbmdfdGltZW91dCA9IHNl dFRpbWVvdXQoZnVuY3Rpb24oKXsKCQkJCWh0X25pY2Vfbm9kZS5zdHlsZS5kaXNw bGF5ID0gJyc7CgkJCQlodF9uaWNlX25vZGUudGV4dF9ub2RlLnRleHRDb250ZW50 ID0gJyc7CgkJCQlodF9uaWNlX25vZGUucmVtb3ZlQ2xhc3MoJ2hlbHAtdGlwcy10 b28tbXVjaC1sZWZ0Jyk7CgkJCX0sMzMzKQoJCQkKCQl9CgkJCgkJZm9yICh2YXIg aT0wLCBsID0gaGVscF90aXBzLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCQl2YXIg aGVscF90aXBfbm9kZSA9IGhlbHBfdGlwc1tpXTsKCQkJCgkJCXZhciBoZWxwX3Rp cF9ub2RlX2NoaWxkcyA9IGhlbHBfdGlwX25vZGUuZ2V0RWxlbWVudHMoJyonKTsK CQkJaWYgKGhlbHBfdGlwX25vZGVfY2hpbGRzICYmIGhlbHBfdGlwX25vZGVfY2hp bGRzLmxlbmd0aCkgewoJCQkJCgkJCQlmb3IgKHZhciBrPTAsIGc9IGhlbHBfdGlw X25vZGVfY2hpbGRzLmxlbmd0aDsgayA8IGc7IGsrKykgewoJCQkJCWhlbHBfdGlw X25vZGVfY2hpbGRzW2tdLmh0biA9IGhlbHBfdGlwX25vZGU7CgoJCQkJfTsKCQkJ fQoJCQl0bS5sb2coJ3p6d3d3Jyk7CgkJCQoJCQloZWxwX3RpcF9ub2RlLmh0biA9 IGhlbHBfdGlwX25vZGU7CgkJCQoJCQl2YXIgdGl0bGUgPSBoZWxwX3RpcF9ub2Rl LnRpdGxlOwoJCQlpZiAodGl0bGUubWF0Y2goJ2JyLycpKSB7CgkJCQloZWxwX3Rp cF9ub2RlLmhlbHBfdGlwID0gaGVscF90aXBfbm9kZS5nZXRFbGVtZW50KCcuaGVs cC10aXAtdGV4dCcpLmlubmVySFRNTAoJCQl9IGVsc2UgewoJCQkJaGVscF90aXBf bm9kZS5oZWxwX3RpcCA9IHRpdGxlOwoJCQl9CgkJCQoJCQloZWxwX3RpcF9ub2Rl LnRpdGxlID0gJyc7CgkJCQoJCQloZWxwX3RpcF9ub2RlLmFkZEV2ZW50cyh7CgkJ CQknbW91c2VvdmVyJzogZnVuY3Rpb24oZSl7IAoJCQkJCXNob3dfaGVscF90aXAo ZS50YXJnZXQuaHRuLmhlbHBfdGlwLGUudGFyZ2V0Lmh0bik7CgkJCQl9LAoJCQkJ J21vdXNlb3V0JzogaGlkZV9oZWxwX3RpcAoJCQl9KQoJCQkKCQkJCgkJfTsKCQlo dF9uaWNlX25vZGUuYWRkRXZlbnRzKHsKCQkJJ21vdXNlb3Zlcic6IGZ1bmN0aW9u KCl7IAoJCQkJY2xlYXJUaW1lb3V0KHRpcF9oaWRkaW5nX3RpbWVvdXQpOwoJCQl9 LAoJCQknbW91c2VvdXQnOiBoaWRlX2hlbHBfdGlwCgkJfSkKCX0KfSk7Cg== ------------ob20VL8QKHEQvTnoM6Hh2B Content-Disposition: inline; filename=all.js Content-Type: application/x-javascript; charset=utf-8; name=all.js Content-Location: http://habrahabr.ru/js/1307009785/all.js Content-Transfer-Encoding: Base64 CgovKiAgIGZhdm91cml0ZXMgICAqLwpmYXZzSGFuZGxlciA9IHsNCglidXR0b246 e30sDQoJdXJsOiAnL2FqYXgvZmF2b3JpdGVzLycsDQoJeG1sOiB7DQoJCXJlc3Bv bnNlTm9kZXM6IHsNCgkJCWVycm9yOiAnZXJyb3InLA0KCQkJcmVzdWx0OiAnbWVz c2FnZScNCgkJfSwNCg0KCQlwYXJzZTogZnVuY3Rpb24oeG1sT2JqKXsNCgkJCXZh ciB4bWxOb2RlcyA9IHt9Ow0KCQkJZm9yIChwcm9wIGluIGZhdnNIYW5kbGVyLnht bC5yZXNwb25zZU5vZGVzKXsNCgkJCQl4bWxOb2Rlc1twcm9wXSA9IHhtbE9iai5n ZXRFbGVtZW50c0J5VGFnTmFtZShmYXZzSGFuZGxlci54bWwucmVzcG9uc2VOb2Rl c1twcm9wXSk7DQoJCQl9DQoJCQlyZXR1cm4geG1sTm9kZXM7DQoJCX0NCgl9LA0K CWZhdm9yaXRlc1NlbmQgOiBmdW5jdGlvbiAoYnV0dG9uLCB0YXJnZXRfdHlwZSwg dGFyZ2V0X2lkKSB7DQoJCXZhciBob2xkZXIgPSAkKGJ1dHRvbikuZ2V0UGFyZW50 KCcuanMtdG9fZmF2c19ob2xkZXInKTsNCgkJaWYoaG9sZGVyLmhhc0NsYXNzKCd0 by1mYXZzJykpIHsNCiAgICAJCXZhciBkYXRhID0gJ2FjdGlvbj1hZGQmdGFyZ2V0 X3R5cGU9JysgdGFyZ2V0X3R5cGUgKycmdGFyZ2V0X2lkPScrIHRhcmdldF9pZDsN CgkJfQ0KCQllbHNlIGlmIChob2xkZXIuaGFzQ2xhc3MoJ2Zhdl9hZGRlZCcpKXsN CgkJCXZhciBkYXRhID0gJ2FjdGlvbj1yZW1vdmUmdGFyZ2V0X3R5cGU9JysgdGFy Z2V0X3R5cGUgKycmdGFyZ2V0X2lkPScrIHRhcmdldF9pZDsNCgkJfQ0KCQlhamF4 TG9hZFBvc3QoZmF2c0hhbmRsZXIudXJsLCBkYXRhLCBmYXZzSGFuZGxlci5mYXZv cml0ZXNTZW5kT25sb2FkLCB3aW5kb3csIHtidXR0b246IGJ1dHRvbiwgdGFyZ2V0 X3R5cGU6dGFyZ2V0X3R5cGUsIHRhcmdldF9pZDp0YXJnZXRfaWR9KTsNCgl9LA0K DQoJZmF2b3JpdGVzU2VuZE9ubG9hZCA6IGZ1bmN0aW9uKGFqYXhPYmosIHBhcmFt cykgew0KCQlpZihhamF4T2JqICYmIGFqYXhPYmoucmVzcG9uc2VYTUwpew0KDQoJ CQl2YXIgeG1sT2JqID0gYWpheE9iai5yZXNwb25zZVhNTDsNCgkJCXZhciB4bWxO b2RlcyA9IGZhdnNIYW5kbGVyLnhtbC5wYXJzZSh4bWxPYmopOw0KDQoJCQlpZih4 bWxOb2Rlcy5lcnJvciAmJiB4bWxOb2Rlcy5lcnJvci5sZW5ndGgpew0KCQkJCXZh ciBlcnJvcnNfbGVuZ3RoID0geG1sTm9kZXMuZXJyb3IubGVuZ3RoOw0KCQkJCWZv ciAodmFyIGkgPSAwOyBpIDwgZXJyb3JzX2xlbmd0aDsgaSsrKSB7DQoJCQkJCWZ1 dHVfYWxlcnQoRkFULmZhdm91cml0ZXNfaGVhZGVyLCB4bWxOb2Rlcy5lcnJvcltp XS5maXJzdENoaWxkLmRhdGEsIHRydWUsICdlcnJvcicpOw0KCQkJCX0NCgkJCX0N Cg0KCQkJdmFyIHJlc3VsdHMgPSB4bWxPYmouZ2V0RWxlbWVudHNCeVRhZ05hbWUo J3Jlc3VsdCcpOw0KCQkJaWYoeG1sTm9kZXMucmVzdWx0ICYmIHhtbE5vZGVzLnJl c3VsdC5sZW5ndGgpIHsNCg0KDQoJCQkJdmFyIG5vZGUgPSBudWxsOw0KCQkJCWlm IChyZXN1bHRzWzBdKSB7DQoJCQkJCW5vZGUgPSByZXN1bHRzWzBdOw0KCQkJCX0N Cg0KDQoJCQkJdmFyIHByZXZpb3VzX29mZiA9ICQocGFyYW1zLmJ1dHRvbikuZ2V0 UGFyZW50KCcuanMtdG9fZmF2c19ob2xkZXInKS5oYXNDbGFzcygndG8tZmF2cycp Ow0KCQkJCWlmKHByZXZpb3VzX29mZikgew0KDQoJCQkJCWlmIChub2RlKQ0KCQkJ CQkJc3dpdGNoIChub2RlLmdldEF0dHJpYnV0ZSgidHlwZSIpKSB7DQoJCQkJCQkJ Y2FzZSAnY29tcGFueV9jb21tZW50cyc6DQoJCQkJCQkJY2FzZSAnY29tbWVudHMn Og0KCQkJCQkJCQlmdXR1X2FsZXJ0KEZBVC5mYXZvdXJpdGVzX2hlYWRlciwgRkFU LmZhdm91cml0ZXNfcmVxdWVzdF9jb21tZW50X2FkZF9zdWNjZXNzLCBmYWxzZSwg J21lc3NhZ2UnKTsNCgkJCQkJCQkJYnJlYWs7DQoJCQkJCQkJY2FzZSAncG9zdHMn Og0KCQkJCQkJCQlmdXR1X2FsZXJ0KEZBVC5mYXZvdXJpdGVzX2hlYWRlciwgRkFU LmZhdm91cml0ZXNfcmVxdWVzdF9wb3N0X2FkZF9zdWNjZXNzLCBmYWxzZSwgJ21l c3NhZ2UnKTsNCgkJCQkJCQkJYnJlYWs7DQoJCQkJCQl9DQoJCQkJfQ0KCQkJCWVs c2Ugew0KDQoJCQkJCWlmIChub2RlKQ0KCQkJCQkJc3dpdGNoIChub2RlLmdldEF0 dHJpYnV0ZSgidHlwZSIpKSB7DQoJCQkJCQkJY2FzZSAnY29tcGFueV9jb21tZW50 cyc6DQoJCQkJCQkJY2FzZSAnY29tbWVudHMnOg0KCQkJCQkJCQlmdXR1X2FsZXJ0 KEZBVC5mYXZvdXJpdGVzX2hlYWRlciwgRkFULmZhdm91cml0ZXNfcmVxdWVzdF9j b21tZW50X3JlbW92ZV9zdWNjZXNzLCBmYWxzZSwgJ21lc3NhZ2UnKTsNCgkJCQkJ CQkJYnJlYWs7DQoJCQkJCQkJY2FzZSAncG9zdHMnOg0KCQkJCQkJCQlmdXR1X2Fs ZXJ0KEZBVC5mYXZvdXJpdGVzX2hlYWRlciwgRkFULmZhdm91cml0ZXNfcmVxdWVz dF9wb3N0X3JlbW92ZV9zdWNjZXNzLCBmYWxzZSwgJ21lc3NhZ2UnKTsNCgkJCQkJ CQkJYnJlYWs7DQoJCQkJCQl9DQoJCQkJCQlpZiAoIShwYXJhbXMudGFyZ2V0X3R5 cGUgPT0gJ2NvbW1lbnRzJykpIHsNCgkJCQkJCQl0ZW1wLmZhdm91cml0ZXNfYWRk ICYmIHRlbXAuZmF2b3VyaXRlc19hZGQuY2xlYXJPd25UYWdzKCQocGFyYW1zLmJ1 dHRvbikpOw0KCQkJCQkJfQ0KDQoJCQkJfQ0KDQoJCQkJaWYgKHBhcmFtcy50YXJn ZXRfdHlwZSA9PSAncG9zdHMnIHx8IHBhcmFtcy50YXJnZXRfdHlwZSA9PSAncXVl c3Rpb25zJykgew0KCQkJCQkkKHBhcmFtcy5idXR0b24pLmdldFBhcmVudCgnLmpz LXRvX2ZhdnNfaG9sZGVyJykuc3dpdGNoQ2xhc3MoJ2Zhdl9hZGRlZCcsICd0by1m YXZzJyk7DQoNCgkJCQkJdmFyIGRpdiA9IHBhcmFtcy5idXR0b24uZ2V0UGFyZW50 KCdkaXYuaGVudHJ5Jyk7DQogICAgICAgICAgICAgICAgICAgIHZhciBjb3VudCA9 IGRpdi5nZXRFbGVtZW50KCcuZmF2c19jb3VudCcpOw0KICAgICAgICAgICAgICAg ICAgICB2YXIgcHJldiA9IHBhcnNlSW50KGNvdW50LmdldCgndGV4dCcpKSB8fCAw Ow0KCQkJCQlpZiAocHJldmlvdXNfb2ZmKSB7DQogICAgICAgICAgICBjb3VudC5z ZXQoJ3RleHQnLCBwcmV2ICsgMSk7DQoJCQkJCQlwYXJhbXMuYnV0dG9uLnRpdGxl ID0n0KPQtNCw0LvQuNGC0Ywg0LjQtyDQuNC30LHRgNCw0L3QvdC+0LPQvic7DQog ICAgCQkJCWlmIChwYXJhbXMudGFyZ2V0X3R5cGUgPT0gJ3F1ZXN0aW9ucycpIHsN Cg0KICAgIAkJCQl9ZWxzZXsNCgkJCQkJCSAgdmFyIHRhZ3MgPSBkaXYuZ2V0RWxl bWVudCgnLnRhZ3MnKTsNCiAgICAJCQkJICAobmV3IEVsZW1lbnQoJ2xpJywgeyAn Y2xhc3MnOiAnZmF2b3VyaXRlc19lZGl0X3RhZ3MnLCAnaHRtbCc6ICc8YSBvbmNs aWNrPSJ0ZW1wLmZhdm91cml0ZXNfYWRkLmNoYW5nZV90YWdzKHRoaXMpOyByZXR1 cm4gZmFsc2UiIGhyZWY9IiMiPtCY0LfQvNC10L3QuNGC0Ywg0YHQstC+0Lgg0LzQ tdGC0LrQuDwvYT4nfSkpLmluamVjdCh0YWdzKTsNCiAgICAJCQkJfQ0KCQkJCQl9 IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT0gcHJldikg ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LnNldCgndGV4dCcs ICcnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb3VudC5zZXQoJ3RleHQnLCBwcmV2IC0gMSkN CiAgICAgICAgICAgICAgICAgICAgICAgIH0NCgkJCQkJCXBhcmFtcy5idXR0b24u dGl0bGUgPSfQlNC+0LHQsNCy0LjRgtGMINCyINC40LfQsdGA0LDQvdC90L7QtScN CgkJCQkJfQ0KCQkJCX0gZWxzZSBpZiAocGFyYW1zLnRhcmdldF90eXBlID09ICdj b21tZW50cycpIHsNCg0KCQkJCQkkKHBhcmFtcy5idXR0b24pLmdldFBhcmVudCgn LmpzLXRvX2ZhdnNfaG9sZGVyJykuc3dpdGNoQ2xhc3MoJ2Zhdl9hZGRlZCcsICd0 by1mYXZzJyk7DQoJCQkJfQ0KDQoJCQl9DQoJCX0NCgl9DQp9Ow0KDQp0bS5pbml0 LmFkZChmdW5jdGlvbiAoKSB7DQoJdGVtcC5mYXZvdXJpdGVzX2FkZCA9IHsNCgkJ J2luaXQnOiBmdW5jdGlvbiAoKSB7DQoJCQlpZiAodGhpcy5pbml0ZWQpIHsgcmV0 dXJuOyB9DQoJCQl2YXIgc2VsZiA9IHRoaXM7DQoJCQl0aGlzLmluaXRlZCA9IHRy dWU7DQoJCQl0aGlzLmhpZGRlbl9jb250YWluZXIgPSAkKCdmYXZvdXJpdGVzX2Fk ZF9oaWRkZW4nKTsNCgkJCXRoaXMuZm9ybSA9ICQoJ2Zhdm91cml0ZXNfYWRkX2Zv cm0nKTsNCgkJCXRoaXMuYWRkZXIgPSAkKCdmYXZvdXJpdGVzX2FkZCcpOw0KCQkJ dGhpcy50YWdzID0gJCgnZmF2b3VyaXRlc19hZGRfdGFncycpOw0KCQkJdGhpcy5p ZCA9ICQoJ2Zhdm91cml0ZXNfYWRkX2lkJyk7DQoJCQl0aGlzLmJ1dHRvbiA9ICQo J2Zhdm91cml0ZXNfYWRkX3N1Ym1pdCcpOw0KDQoJCQlCcm93c2VyLkVuZ2luZS50 cmlkZW50ICYmIHRoaXMudGFncy5hZGRFdmVudCgna2V5cHJlc3MnLCBmdW5jdGlv biAoZSkgew0KCQkJCWlmIChlLmtleSA9PSAnZW50ZXInKSB7DQoJCQkJCWUuc3Rv cCgpOw0KCQkJCQlzZWxmLmZvcm0uYXR0YWNoZWQuc3VibWl0KCk7DQoJCQkJfQ0K CQkJfSk7DQoNCgkJCXZhciBjYW5jZWwgPSAkKCdmYXZvdXJpdGVzX2FkZF9jYW5j ZWwnKTsNCg0KCQkJY2FuY2VsICYmIGNhbmNlbC5hZGRFdmVudCgnY2xpY2snLCBm dW5jdGlvbiAoZSkgew0KCQkJCWUuc3RvcCgpOw0KCQkJCXNlbGYuaGlkZSgpOw0K CQkJfSk7DQoJCX0sDQoJCSdzaG93JzogZnVuY3Rpb24gKGNvbnRhaW5lciwgaWQs IHRhZ3Nfc3RyaW5nKSB7DQoJCQkhdGhpcy5pbml0ZWQgJiYgdGhpcy5pbml0KCk7 DQoJCQl0aGlzLmlkLnZhbHVlID0gaWQ7DQoJCQlpZiAodGFnc19zdHJpbmcpIHsN CgkJCQl0aGlzLnRhZ3MudmFsdWUgPSB0YWdzX3N0cmluZzsNCgkJCQl0aGlzLmJ1 dHRvbi52YWx1ZSA9ICfQodC+0YXRgNCw0L3QuNGC0YwnOw0KCQkJfQ0KCQkJdGhp cy5jb250YWluZXIgPSBjb250YWluZXI7DQoJCQljb250YWluZXIgJiYgdGhpcy5h ZGRlci5pbmplY3QoY29udGFpbmVyKTsNCgkJCXRoaXMudGFncy5mb2N1cygpOw0K CQl9LA0KCQknaGlkZSc6IGZ1bmN0aW9uICgpIHsNCgkJCXRoaXMuYWRkZXIuaW5q ZWN0KHRoaXMuaGlkZGVuX2NvbnRhaW5lcik7DQoJCQl0aGlzLnRhZ3MudmFsdWUg PSAnJzsNCgkJCXRoaXMuaWQudmFsdWUgPSAnJzsNCgkJCXRoaXMuY29udGFpbmVy ID0gbnVsbDsNCgkJCXRoaXMuYnV0dG9uLnZhbHVlID0gJ9CU0L7QsdCw0LLQuNGC 0Ywg0LIg0LjQt9Cx0YDQsNC90L3QvtC1JzsNCgkJfSwNCgkJJ2NoYW5nZV90YWdz JzogZnVuY3Rpb24gKGJ1dHRvbikgew0KCQkJdmFyIGNvbnRhaW5lciA9ICQoYnV0 dG9uKS5nZXRQYXJlbnQoJ2Rpdi5oZW50cnknKSwNCgkJCQlpZCA9IGNvbnRhaW5l ci5nZXRFbGVtZW50KCcuZW50cnktaW5mbycpLmlkLnJlcGxhY2UoJ2luZm9wYW5l bCcsICcnKSwNCgkJCQl0YWdzX2hvbGRlciA9ICQoYnV0dG9uLnBhcmVudE5vZGUu cGFyZW50Tm9kZSksDQoJCQkJdGFncyA9IHRhZ3NfaG9sZGVyLmdldEVsZW1lbnRz KCdsaS5mYXYgYScpLA0KCQkJCXRhZ3Nfc3RyaW5nID0gJyc7DQoNCg0KCQkJZm9y ICh2YXIgaSA9IDAsIGwgPSB0YWdzLmxlbmd0aDsgaTxsOyBpKyspIHsNCgkJCQko aSE9MCkgJiYgKHRhZ3Nfc3RyaW5nICs9ICcsICcpOw0KCQkJCXRhZ3Nfc3RyaW5n ICs9IHRhZ3NbaV0uaW5uZXJIVE1MOw0KCQkJfQ0KCQkJdGhpcy5zaG93KGNvbnRh aW5lciwgaWQsIHRhZ3Nfc3RyaW5nKTsNCgkJfSwNCgkJJ2NsZWFyT3duVGFncyc6 IGZ1bmN0aW9uIChidXR0b24pIHsNCgkJCXRoaXMuY29udGFpbmVyID0gYnV0dG9u LmdldFBhcmVudCgnZGl2LmhlbnRyeScpOw0KCQkJdmFyIGZhdiA9IHRoaXMuY29u dGFpbmVyLmdldEVsZW1lbnQoJ2Rpdi5qcy10b19mYXZzX2hvbGRlcicpOw0KCQkJ ZmF2ICYmIGZhdi5yZW1vdmVDbGFzcygndG8tZmF2cycpLmFkZENsYXNzKCdmYXZf YWRkZWQnKTsNCgkJCXRoaXMuc2V0VGFncygnJywgdHJ1ZSk7DQoJCX0sDQoJCSdz ZXRUYWdzJzogZnVuY3Rpb24gKHRhZ3MsIHVuZmF2KSB7DQoJCQlpZiAoIXRoaXMu Y29udGFpbmVyKSB7IHJldHVybjsgfQ0KDQoJCQl2YXIgdGFnc19ob2xkZXIgPSB0 aGlzLmNvbnRhaW5lci5nZXRFbGVtZW50KCd1bC50YWdzJyk7DQoNCgkJCWlmICgh dGFnc19ob2xkZXIpIHsNCgkJCQlpZiAodGFncykgew0KCQkJCQl2YXIgY29udGVu dCA9IHRoaXMuY29udGFpbmVyLmdldEVsZW1lbnQoJ2Rpdi5jb250ZW50Jyk7DQoJ CQkJCXRhZ3NfaG9sZGVyID0gKG5ldyBFbGVtZW50KCd1bCcsIHsgJ2NsYXNzJzog J3RhZ3MgJ30pKS5pbmplY3QoY29udGVudCwgJ2FmdGVyJyk7DQoJCQkJfQ0KCQkJ fQ0KCQkJaWYgKHRhZ3NfaG9sZGVyKSB7DQoJCQkJdmFyIGVkaXRfdGFncyA9IHRh Z3NfaG9sZGVyLmdldEVsZW1lbnQoJ2xpLmZhdm91cml0ZXNfZWRpdF90YWdzJyk7 DQoNCgkJCQl0YWdzX2hvbGRlci5nZXRFbGVtZW50cygnbGkuZmF2JykuZGlzcG9z ZSgpOw0KDQoJCQkJaWYgKHVuZmF2KSB7DQoJCQkJICAgIGlmIChlZGl0X3RhZ3Mp IGVkaXRfdGFncy5kaXNwb3NlKCk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJaWYgKCFl ZGl0X3RhZ3MpIHsNCgkJCQkJCWVkaXRfdGFncyA9IChuZXcgRWxlbWVudCgnbGkn LCB7ICdjbGFzcyc6ICdmYXZvdXJpdGVzX2VkaXRfdGFncycsICdodG1sJzogJzxh IG9uY2xpY2s9InRlbXAuZmF2b3VyaXRlc19hZGQuY2hhbmdlX3RhZ3ModGhpcyk7 IHJldHVybiBmYWxzZTsiIGhyZWY9IiMiPtCY0LfQvNC10L3QuNGC0Ywg0YHQstC+ 0Lgg0LzQtdGC0LrQuDwvYT4nIH0pKS5pbmplY3QodGFnc19ob2xkZXIpOw0KCQkJ CQl9DQoJCQkJfQ0KDQoJCQkJdmFyIGVtcHR5ID0gISh0YWdzX2hvbGRlci5nZXRF bGVtZW50cygnbGknKS5sZW5ndGggKyAoZWRpdF90YWdzID8gLTEgOiAwICkpOw0K DQoJCQkJaWYgKCF1bmZhdiAmJiB0YWdzKSB7DQoJCQkJCXZhciB0YWdzID0gdGFn cy5zcGxpdCgnLCcpOw0KCQkJCQlmb3IodmFyIGk9MCwgbD10YWdzLmxlbmd0aDsg aTxsOyBpKyspIHsNCgkJCQkJCXZhciB0YWcgPSB0YWdzW2ldLmNsZWFuKCk7DQoJ CQkJCQkobmV3IEVsZW1lbnQoJ2xpJywgeyAnY2xhc3MnOiAnZmF2JywgJ2h0bWwn OiAoKGVtcHR5ICYmIGk9PTApID8gJycgOiAnLCAnKSArICc8YSBocmVmPSJodHRw Oi8vJyArIHRlbXAudXNlci5sb2dpbiArICcuJyArIHRlbXAuYmFzZV9zaG9ydCAr ICcvZmF2b3JpdGVzL3RhZy8nICsgdGFnICsgJyI+JyArIHRhZyArICc8L2E+J30p KS5pbmplY3QoZWRpdF90YWdzLCAnYmVmb3JlJyk7DQoJCQkJCX0NCgkJCQl9DQoN CgkJCQlpZiAoIXRhZ3NfaG9sZGVyLmdldEVsZW1lbnRzKCdsaScpLmxlbmd0aCkg eyB0YWdzX2hvbGRlci5kaXNwb3NlKCk7IH0NCg0KCQkJCXRoaXMuY29udGFpbmVy ID0gbnVsbDsNCgkJCX0NCgkJfQ0KCX07DQp9KTsNCgoKCgovKiAgIGZ1dHVfYWxl cnQgICAqLwpmdW5jdGlvbiBmdXR1X2FsZXJ0KGhlYWRlciwgdGV4dCwgY2xvc2Us IGNsYXNzTmFtZSkgew0KCWlmICghJCgnZnV0dV9hbGVydHNfaG9sZGVyJykpIHsN CgkJdmFyIGZ1dHVBbGVydE91dGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn ZGl2Jyk7DQoJCWZ1dHVBbGVydE91dGVyLmNsYXNzTmFtZSA9ICdmdXR1X2FsZXJ0 X291dGVyJzsNCgkJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmdXR1QWxlcnRP dXRlcik7DQoJCXZhciBmdXR1QWxlcnRGcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVs ZW1lbnQoJ2RpdicpOw0KCQlmdXR1QWxlcnRGcmFtZS5jbGFzc05hbWUgPSAnZnJh bWUnOw0KCQlmdXR1QWxlcnRPdXRlci5hcHBlbmRDaGlsZChmdXR1QWxlcnRGcmFt ZSk7DQoJCQ0KCQl2YXIgZnV0dUFsZXJ0c0hvbGRlciA9IGRvY3VtZW50LmNyZWF0 ZUVsZW1lbnQoJ2RpdicpOw0KCQlmdXR1QWxlcnRzSG9sZGVyLmlkID0gJ2Z1dHVf YWxlcnRzX2hvbGRlcic7DQoJCWZ1dHVBbGVydHNIb2xkZXIuY2xhc3NOYW1lID0g J2Z1dHVfYWxlcnRzX2hvbGRlcic7DQoJCWZ1dHVBbGVydEZyYW1lLmFwcGVuZENo aWxkKGZ1dHVBbGVydHNIb2xkZXIpOw0KCQkNCgl9IGVsc2Ugew0KDQoNCgl9DQoJ dmFyIGZ1dHVBbGVydCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0K CWZ1dHVBbGVydC5jbGFzc05hbWUgPSAnZnV0dV9hbGVydCAnICsgY2xhc3NOYW1l Ow0KCSQoJ2Z1dHVfYWxlcnRzX2hvbGRlcicpLmFwcGVuZENoaWxkKGZ1dHVBbGVy dCk7DQoNCgl2YXIgZnV0dUFsZXJ0SGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgnZGl2Jyk7DQoJZnV0dUFsZXJ0SGVhZGVyLmNsYXNzTmFtZSA9ICdmdXR1 X2FsZXJ0X2hlYWRlcic7DQoJZnV0dUFsZXJ0LmFwcGVuZENoaWxkKGZ1dHVBbGVy dEhlYWRlcik7DQoJDQoJZnV0dUFsZXJ0SGVhZGVyLmlubmVySFRNTCA9IGhlYWRl cjsNCglpZiAoY2xvc2UpIHsNCgkJdmFyIGZ1dHVBbGVydENsb3NlQnV0dG9uID0g ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOw0KCQlmdXR1QWxlcnRDbG9zZUJ1 dHRvbi5ocmVmID0gJyMnOw0KCQlmdXR1QWxlcnRDbG9zZUJ1dHRvbi5jbGFzc05h bWUgPSAnZnV0dV9hbGVydF9jbG9zZV9idXR0b24nOw0KCQlmdXR1QWxlcnRDbG9z ZUJ1dHRvbi5vbmNsaWNrID0gZnVuY3Rpb24oZXYpIHsNCgkJCWlmKCFldikgew0K CQkJCWV2PXdpbmRvdy5ldmVudDsNCgkJCX0NCgkJCWlmICghZG9jdW1lbnQuYWxs KSBldi5wcmV2ZW50RGVmYXVsdCgpOyBlbHNlIGV2LnJldHVyblZhbHVlID0gZmFs c2U7DQoJCQkkKGZ1dHVBbGVydCkuZGlzcG9zZSgpDQoJCX0NCgkJZnV0dUFsZXJ0 LmFwcGVuZENoaWxkKGZ1dHVBbGVydENsb3NlQnV0dG9uKTsNCgkJDQoJCXZhciBm dXR1QWxlcnRDbG9zZUJ1dHRvbkljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50 KCdpbWcnKTsNCgkJZnV0dUFsZXJ0Q2xvc2VCdXR0b25JY29uLnNyYyA9ICcvaS9i dXR0b25zL2J0bl9jbG9zZS5naWYnOw0KCQlmdXR1QWxlcnRDbG9zZUJ1dHRvbi5h cHBlbmRDaGlsZChmdXR1QWxlcnRDbG9zZUJ1dHRvbkljb24pOw0KCX0NCgkNCgkN Cgl2YXIgZnV0dUFsZXJ0VGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp dicpOw0KCWZ1dHVBbGVydFRleHQuY2xhc3NOYW1lID0gJ2Z1dHVfYWxlcnRfdGV4 dCc7DQoJZnV0dUFsZXJ0LmFwcGVuZENoaWxkKGZ1dHVBbGVydFRleHQpOw0KDQoJ DQoJZnV0dUFsZXJ0VGV4dC5pbm5lckhUTUwgPSB0ZXh0Ow0KCQ0KCWZ1dHVBbGVy dC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7DQoJZnV0dUFsZXJ0LnN0eWxl LnRvcCA9ICcwJzsNCglmdXR1QWxlcnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7 DQoNCgkNCglpZiAoIWNsb3NlKSB7DQoJCSQoZnV0dUFsZXJ0KS5hZGRFdmVudCgi Y2xpY2siLGZ1bmN0aW9uKCl7DQoJCQkkKGZ1dHVBbGVydCkuZGlzcG9zZSgpDQoJ CX0pDQoJCXNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyAkKGZ1dHVBbGVydCkuZGlz cG9zZSgpIH0sIDMwMDApOw0KCQkNCgl9DQp9DQoNCi8vIEZ1dHUgQWxlcnQgVGV4 dHMNCnZhciBGQVQgPSB7DQoJcHJlbG9hZGVyIDogJ9CS0LDRiCDQt9Cw0L/RgNC+ 0YEg0L7RgtC/0YDQsNCy0LvQtdC9INC/0L4g0YHQtdC60YDQtdGC0L3QvtC5INC7 0LjQvdC40LguINCW0LTQuNGC0LUg0L/QvtC20LDQu9GD0LnRgdGC0LAg0L7RgtCy 0LXRgtCwJywNCgllbXB0eTogJ9Cd0YMg0LTQu9GPINC90LDRh9Cw0LvQsCDRgdC6 0LDQttC40YLQtSwg0YfRgtC+INCy0Ysg0L3QsNC80LXRgNC10L3RiyDQtNC10LvQ sNGC0YwnLA0KDQoJLy8g0L/RgNC+0YTQuNC70YwNCglwcm9maWxlX2hlYWRlciA6 ICfQpdCw0LHRgNCw0YXQsNCx0YAgLSDQndCw0YHRgtGA0L7QudC60LgnLA0KDQoJ Ly8g0YDQtdC30Y7QvNC1DQoJcmVzdW1lX2hlYWRlciA6ICfQpdCw0LHRgNCw0YXQ sNCx0YAg4oCUINCg0LXQt9GO0LzQtScsDQoJDQoJLy8g0L/QvtGH0YLQsA0KCW1h aWxfaGVhZGVyIDogJ9Cl0LDQsdGA0LDRhdCw0LHRgCDigJQg0J/QvtGH0YLQsCcs DQoJbWFpbF9sZXR0ZXJfc2VuZF9yZXF1ZXN0IDogJ9CS0Ysg0L7RgtC/0YDQsNCy 0LjQu9C4INC30LDQv9GA0L7RgSDQvdCwINC+0YLQv9GA0LDQstC60YMg0L/QuNGB 0YzQvNCwLicsDQoJbWFpbF9sZXR0ZXJfZGVsZXRlIDogJ9Cf0LjRgdGM0LzQviDR g9C00LDQu9C10L3QvicsDQoNCgkvLyDQutC+0LzQvNC10L3RgtCw0YDQuNC4DQoJ Y29tbWVudHNfaGVhZGVyIDogJ9Cl0LDQsdGA0LDRhdCw0LHRgCDigJQg0JrQvtC8 0LzQtdC90YLQsNGA0LjQuCcsDQoJY29tbWVudHNfZXJyb3JfYmxhbmtfbWVzc2Fn ZSA6ICfQktCy0LXQtNC40YLQtSDRh9GC0L4t0L3QuNCx0YPQtNGMIScsDQoJY29t bWVudHNfYWRkX3N1Y2Nlc3MgOiAn0JLRiyDQtNC+0LHQsNCy0LjQu9C4INC60L7Q vNC80LXQvdGC0LDRgNC40LkuJywNCgljb21tZW50c19hZGRfcmVxdWVzdCA6ICfQ ktGLINC+0YLQv9GA0LDQstC40LvQuCDQt9Cw0L/RgNC+0YEg0L3QsCDQtNC+0LHQ sNCy0LvQtdC90LjQtSDQutC+0LzQvNC10L3RgtCw0YDQuNGPLicsDQoNCgkvLyDQ s9C+0YHQvtCy0LDQvdC40LUNCgl2b3RpbmdzX2hlYWRlciA6ICfQpdCw0LHRgNCw 0YXQsNCx0YAg4oCUINCT0L7Qu9C+0YHQvtCy0LDQvdC40Y8nLA0KCXZvdGluZ3Nf dW5rbm93bl9lcnJvciA6ICfQndC10L7Qv9C+0LfQvdCw0L3QvdCw0Y8g0YHRgtGA 0LDQvdC90LDRjyDQvtGI0LjQsdC60LAnLA0KCXZvdGluZ3NfZXJyb3Jfc2VsZiA6 ICfQk9C+0LvQvtGB0L7QstCw0YLRjCDQt9CwINGB0LLQvtC4INCy0LXRidC4INC9 0LXQu9GM0LfRjycsDQoJdm90aW5nc19lcnJvcl9wcm9oaWJpdGVkIDogJ9CS0LDQ vCDQt9Cw0L/RgNC10YnQtdC90L4g0LfQtNC10YHRjCDQs9C+0LvQvtGB0L7QstCw 0YLRjCcsDQoJdm90aW5nc19lcnJvcl9pc19leHBpcmVkIDogJ9CS0YDQtdC80Y8g 0LPQvtC70L7RgdC+0LLQsNC90LjRjyDQv9GA0L7RiNC70L4nLA0KCXZvdGluZ3Nf ZXJyb3Jfbm9fYWNjZXNzIDogJ9Ct0YLQviDQtNC10LnRgdGC0LLQuNC1INC00L7R gdGC0YPQv9C90L4g0YLQvtC70YzQutC+INC00LvRjyDQt9Cw0YDQtdCz0LjRgdGC 0YDQuNGA0L7QstCw0L3QvdGL0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10Lkn LA0KDQoJLy8g0LHQu9C+0LPQuA0KCWJsb2dzOiB7DQoJCWhlYWRlcjogJ9Cl0LDQ sdGA0LDRhdCw0LHRgCDigJQg0JHQu9C+0LPQuCcsDQoJCWRpc2FibGVkOiAn0JLQ sNGI0LAg0L/RgNC+0YHRjNCx0LAg0L4g0L/QvtC00L/QuNGB0LrQtS/QstGB0YLR g9C/0LvQtdC90LjQuCDQsiDQsdC70L7QsyDRg9C20LUg0LHRi9C70LAg0L7RgtC/ 0YDQsNCy0LvQtdC90LAg0LzQvtC00LXRgNCw0YLQvtGA0YMnLA0KCQllbXB0eV9m aWVsZDogJ9Cd0YMg0LLQstC10LTQuNGC0LUg0YXQvtGC0Ywg0YfRgtC+LdC90LjQ sdGD0LTRjCEnLA0KCQlibG9nX2pvaW46ICfQktGLINCy0YHRgtGD0L/QuNC70Lgg 0LIg0LHQu9C+0LMnLA0KCQlibG9nX2xlYXZlOiAn0JLRiyDQv9C+0LrQuNC90YPQ u9C4INCx0LvQvtCzJw0KCX0sDQoNCg0KCS8vINGA0LXQs9C40YHRgtGA0LDRhtC4 0Y8NCglyZWdpc3RyYXRpb246IHsNCgkJaGVhZGVyOiAn0KXQsNCx0YDQsNGF0LDQ sdGAIOKAlCDQoNC10LPQuNGB0YLRgNCw0YbQuNGPJywNCgkJZXJyb3I6ICfQntGI 0LjQsdC60LA6INC/0YDQvtCy0LXRgNGM0YLQtSDQv9GA0LDQstC40LvRjNC90L7R gdGC0Ywg0LfQsNC/0L7Qu9C90LXQvdC40Y8g0YTQvtGA0LzRiycNCgl9LA0KDQoJ Ly8g0L/QvtGB0YLRiw0KCXBvc3RzX2hlYWRlciA6ICfQpdCw0LHRgNCw0YXQsNCx 0YAg4oCUINCf0YPQsdC70LjQutCw0YbQuNC4JywNCglwb3N0c19zbGlkZXNob3df YWRkIDogJ9Ch0LvQsNC50LTRiNC+0YMg0LTQvtCx0LDQstC70LXQvdC+JywNCg0K CS8vINCU0L7QsdCw0LLQu9C10L3QuNC1INCyINC00YDRg9C30YzRjw0KCWZyaWVu ZGxpZXJfaGVhZGVyIDogJ9Cl0LDQsdGA0LDRhdCw0LHRgCDigJQg0JTRgNGD0LfR jNGPJywNCglmcmllbmRsaWVyX3Vua25vd25fZXJyb3IgOiAn0J3QtdC+0L/QvtC3 0L3QsNC90L3QsNGPINGB0YLRgNCw0L3QvdCw0Y8g0L7RiNC40LHQutCwJywNCg0K CS8vINCd0LDRgdGC0YDQvtC50LrQuA0KCXVzZXJfc2V0dGluZ3NfaGVhZGVyIDog J9Cl0LDQsdGA0LDRhdCw0LHRgCDigJQg0J3QsNGB0YLRgNC+0LnQutC4INC/0L7Q u9GM0LfQvtCy0LDRgtC10LvRjycsDQoJdXNlcl9zZXR0aW5nc19zYXZlX3N1Y2Nl c3MgOiAn0J3QsNGB0YLRgNC+0LnQutC4INC+0LHQvdC+0LLQu9C10L3RiycsDQoJ dXNlcl9zZXR0aW5nc191bmtub3duX2Vycm9yIDogJ9Cd0LXQuNC30LLQtdGB0YLQ vdCw0Y8g0L7RiNC40LHQutCwJywNCgkNCgkvLyDQmtCw0YDRgtCwINCx0LvQvtCz 0L7Qsg0KCWJsb2dfbWFwX2hlYWRlciA6ICfQpdCw0LHRgNCw0YXQsNCx0YAg4oCU INCa0LDRgNGC0LAg0LHQu9C+0LPQvtCyJywNCglibG9nX2Vycm9yX25vX2JyYW5k IDogJ9Cc0LDRgNC60LAg0L3QtSDQvdCw0LnQtNC10L3QsCcsDQoJYmxvZ19lcnJv cl9ub19tb2RlbCA6ICfQnNC+0LTQtdC70Ywg0L3QtSDQvdCw0LnQtNC10L3QsCcs DQoJYmxvZ19lcnJvcl9ub19ibG9nIDogJ9CR0LvQvtCzINC90LUg0L3QsNC50LTQ tdC9JywNCgkNCgkvLyDQmtCw0YDRgtCwDQoJZ21hcF9oZWFkZXIgOiAn0KXQsNCx 0YDQsNGF0LDQsdGAIOKAlCDQmtCw0YDRgtGLJywNCglnbWFwX21hcmtlcl9hZGRf c3VjY2VzcyA6ICfQntCx0YrQtdC60YIg0LTQvtCx0LDQstC70LXQvScsDQoJZ21h cF9tYXJrZXJfYWRkX25vX21hcmtlciA6ICfQn9C+0LbQsNC70YPQudGB0YLQsCwg 0LrQu9C40LrQvdC40YLQtSDQvdCwINC60LDRgNGC0YMg0LTQu9GPINC00L7QsdCw 0LLQu9C10L3QuNGPINC+0LHRitC10LrRgtCwJywNCglnbWFwX3NlYXJjaF9wbGFj ZV9ub19hZGRyZXNzX2Vycm9yIDogJ9Cf0L7QttCw0LvRg9C50YHRgtCwLCDRg9GC 0L7Rh9C90LjRgtC1LCDRh9GC0L4sINGB0L7QsdGB0YLQstC10L3QvdC+LCDQuNGB 0LrQsNGC0YwuJywNCgkNCgkvLyDQmNC30LHRgNCw0L3QvdC+0LUNCglmYXZvdXJp dGVzX2hlYWRlciA6ICAn0KXQsNCx0YDQsNGF0LDQsdGAIOKAlCDQmNC30LHRgNCw 0L3QvdC+0LUnLA0KCWZhdm91cml0ZXNfcmVxdWVzdF9hZGQgOiAgJ9Cl0LDQsdGA 0LDRhdCw0LHRgCDigJQg0JLRiyDQv9C+0YHQu9Cw0LvQuCDQt9Cw0L/RgNC+0YEg 0L3QsCDQtNC+0LHQsNCy0LvQtdC90LjQtSDQv9C+0YHRgtCwINCyINC40LfQsdGA 0LDQvdC90L7QtScsDQoJZmF2b3VyaXRlc19yZXF1ZXN0X3JlbW92ZSA6ICAn0KXQ sNCx0YDQsNGF0LDQsdGAIOKAlCDQktGLINC/0L7RgdC70LDQu9C4INC30LDQv9GA 0L7RgSDQvdCwINGD0LTQsNC70LXQvdC40LUg0L/QvtGB0YLQsCDQuNC3INC40LfQ sdGA0LDQvdC90L7Qs9C+JywNCg0KCWZhdm91cml0ZXNfcmVxdWVzdF9wb3N0X2Fk ZF9zdWNjZXNzIDogICfQpdCw0LHRgNCw0YXQsNCx0YAg4oCUINCS0Ysg0LTQvtCx 0LDQstC40LvQuCDQv9C+0YHRgiDQsiDQuNC30LHRgNCw0L3QvdC+0LUnLA0KCWZh dm91cml0ZXNfcmVxdWVzdF9wb3N0X3JlbW92ZV9zdWNjZXNzIDogICfQpdCw0LHR gNCw0YXQsNCx0YAg4oCUINCS0Ysg0YPQtNCw0LvQuNC70Lgg0L/QvtGB0YIg0LjQ tyDQuNC30LHRgNCw0L3QvdC+0LPQvicsDQoJDQoJZmF2b3VyaXRlc19yZXF1ZXN0 X2NvbW1lbnRfYWRkX3N1Y2Nlc3MgOiAgJ9Cl0LDQsdGA0LDRhdCw0LHRgCDigJQg 0JLRiyDQtNC+0LHQsNCy0LjQu9C4INC60L7QvNC80LXQvdGC0LDRgNC40Lkg0LIg 0LjQt9Cx0YDQsNC90L3QvtC1JywNCglmYXZvdXJpdGVzX3JlcXVlc3RfY29tbWVu dF9yZW1vdmVfc3VjY2VzcyA6ICAn0KXQsNCx0YDQsNGF0LDQsdGAIOKAlCDQktGL INGD0LTQsNC70LjQu9C4INC60L7QvNC80LXQvdGC0LDRgNC40Lkg0LjQtyDQuNC3 0LHRgNCw0L3QvdC+0LPQvicsDQoNCgkvLyDQn9Cf0JANCglwcGFfaGVhZGVyIDog J9Cf0J/QkCcsDQoJDQoJDQoJLy8g0JPQtdC+DQoJZ2VvX2hlYWRlciA6ICAn0KXQ sNCx0YDQsNGF0LDQsdGAIOKAlCDQodGC0YDQsNC90YsnLA0KCQ0KCS8vIA0KCWNv bXBhbmllc19oZWFkZXIgOiAgJ9Cl0LDQsdGA0LDRhdCw0LHRgCDigJQg0JrQvtC8 0L/QsNC90LjQuCcsDQoJDQoJcG9sbF9oZWFkZXIgOiAn0KXQsNCx0YDQsNGF0LDQ sdGAIOKAlCDQntC/0YDQvtGB0YsnLA0KCWZhaWx0dXJlIDogJ9Cl0LDQsdGA0LDR hdCw0LHRgCDigJQg0J7RiNC40LHQutCwJywNCgkvLyBhamF4IGVycm9yDQoJYWph eF9lcnJvciA6ICfQpdCw0LHRgNCw0YXQsNCx0YAg4oCUINCe0YjQuNCx0LrQsCBB amF4LdC30LDQv9GA0L7RgdCwJw0KfTsNCgoKCgovKiAgIGdlbyAgICovCmdlb0hh bmRsZXIgPSB7DQoJdXJsOiAnL2FqYXgvZ2VvLycsDQoJY2xhc3NOYW1lcyA6IHsN CgkJYWxsSG9sZGVyOiAnanMtZ2VvX2Jsb2NrX2hvbGRlcicsDQoJCWNvdW50cnlI b2xkZXI6ICdqcy1nZW9fY291bnRyeV9zZWxlY3RfaG9sZGVyJywNCgkJcmVnaW9u SG9sZGVyOiAnanMtZ2VvX3JlZ2lvbl9zZWxlY3RfaG9sZGVyJywNCgkJY2l0eUhv bGRlcjogJ2pzLWdlb19jaXR5X3NlbGVjdF9ob2xkZXInLA0KCQljb3VudHJ5U2Vs ZWN0OiAnanMtZ2VvX2NvdW50cnlfc2VsZWN0JywNCgkJcmVnaW9uU2VsZWN0OiAn anMtZ2VvX3JlZ2lvbl9zZWxlY3QnLA0KCQljaXR5U2VsZWN0OiAnanMtZ2VvX2Np dHlfc2VsZWN0Jw0KCX0sDQoJeG1sOiB7DQoJCXJlc3BvbnNlTm9kZXM6IHsNCgkJ CWVycm9yIDogJ2Vycm9yJywNCgkJCXJlc3VsdCA6ICdtZXNzYWdlJywNCgkJCXJl Z2lvbiA6ICdyZWdpb24nLA0KCQkJY2l0eSA6ICdjaXR5Jw0KCQl9LA0KDQoJCXBh cnNlOiBmdW5jdGlvbih4bWxPYmopew0KCQkJdmFyIHhtbE5vZGVzID0ge307DQoJ CQlmb3IgKHByb3AgaW4gZ2VvSGFuZGxlci54bWwucmVzcG9uc2VOb2Rlcykgew0K CQkJCXhtbE5vZGVzW3Byb3BdID0geG1sT2JqLmdldEVsZW1lbnRzQnlUYWdOYW1l KGdlb0hhbmRsZXIueG1sLnJlc3BvbnNlTm9kZXNbcHJvcF0pOw0KCQkJfQ0KCQkJ cmV0dXJuIHhtbE5vZGVzOw0KCQl9DQoJfSwNCgkNCglzZW5kRGF0YSA6IGZ1bmN0 aW9uIChzZWxlY3Rfb2JqLCBzZW5kX3R5cGUsIGdldF90eXBlKSB7DQoJCQ0KCQl2 YXIgYWxsSG9sZGVyID0gJChzZWxlY3Rfb2JqKS5nZXRQYXJlbnQoJy4nICsgZ2Vv SGFuZGxlci5jbGFzc05hbWVzLmFsbEhvbGRlcik7DQoJCWlmIChzZWxlY3Rfb2Jq LnZhbHVlID09ICcnKSB7DQoJCQlpZiAoZ2V0X3R5cGUgPT0gJ3JlZ2lvbnMnKSB7 DQoJCQkJJChhbGxIb2xkZXIpLmdldEVsZW1lbnQoJy4nICsgZ2VvSGFuZGxlci5j bGFzc05hbWVzLnJlZ2lvbkhvbGRlcikuYWRkQ2xhc3MoJ2hpZGRlbicpOw0KCQkJ CSQoYWxsSG9sZGVyKS5nZXRFbGVtZW50KCcuJyArIGdlb0hhbmRsZXIuY2xhc3NO YW1lcy5jaXR5SG9sZGVyKS5hZGRDbGFzcygnaGlkZGVuJyk7DQoJCQkJJChhbGxI b2xkZXIpLmdldEVsZW1lbnQoJy4nICsgZ2VvSGFuZGxlci5jbGFzc05hbWVzLnJl Z2lvblNlbGVjdCkuc2VsZWN0ZWRJbmRleCA9IDA7DQoJCQkJJChhbGxIb2xkZXIp LmdldEVsZW1lbnQoJy4nICsgZ2VvSGFuZGxlci5jbGFzc05hbWVzLmNpdHlTZWxl Y3QpLnNlbGVjdGVkSW5kZXggPSAwOw0KCQkJfSBlbHNlIGlmIChnZXRfdHlwZSA9 PSAnY2l0aWVzJykgew0KCQkJCSQoYWxsSG9sZGVyKS5nZXRFbGVtZW50KCcuJyAr IGdlb0hhbmRsZXIuY2xhc3NOYW1lcy5jaXR5SG9sZGVyKS5hZGRDbGFzcygnaGlk ZGVuJyk7DQoJCQkJJChhbGxIb2xkZXIpLmdldEVsZW1lbnQoJy4nICsgZ2VvSGFu ZGxlci5jbGFzc05hbWVzLmNpdHlTZWxlY3QpLnNlbGVjdGVkSW5kZXggPSAwOw0K CQkJfQ0KCQkJDQoJCX0gZWxzZSB7DQoJCQl2YXIgZGF0YSA9IHNlbmRfdHlwZSAr ICc9JyArIHNlbGVjdF9vYmoudmFsdWU7DQoJCQl2YXIgdXJsID0gJy9hamF4L2dl by8nICsgZ2V0X3R5cGUgKyAnLyc7DQoJCQlhamF4TG9hZFBvc3QodXJsLCBkYXRh LCBnZW9IYW5kbGVyLnNlbmREYXRhT25sb2FkLCB3aW5kb3csIHtzZWxlY3Rfb2Jq OnNlbGVjdF9vYmosIHNlbmRfdHlwZTpzZW5kX3R5cGUsIGdldF90eXBlOmdldF90 eXBlfSk7DQoJCX0NCgl9LA0KCQ0KCXNlbmREYXRhT25sb2FkIDogZnVuY3Rpb24o YWpheE9iaiwgcGFyYW1zKSB7DQoJCWlmKGFqYXhPYmogJiYgYWpheE9iai5yZXNw b25zZVhNTCl7DQoJCQl2YXIgeG1sT2JqID0gYWpheE9iai5yZXNwb25zZVhNTDsN CgkJCXZhciB4bWxOb2RlcyA9IGdlb0hhbmRsZXIueG1sLnBhcnNlKHhtbE9iaik7 DQoJCQlpZih4bWxOb2Rlcy5lcnJvciAmJiB4bWxOb2Rlcy5lcnJvci5sZW5ndGgp ew0KCQkJCXZhciBlcnJvcnNfbGVuZ3RoID0geG1sTm9kZXMuZXJyb3IubGVuZ3Ro Ow0KCQkJCWZvciAodmFyIGkgPSAwOyBpIDwgZXJyb3JzX2xlbmd0aDsgaSsrKSB7 DQoJCQkJCWZ1dHVfYWxlcnQoRkFULmdlb19oZWFkZXIsIHhtbE5vZGVzLmVycm9y W2ldLmZpcnN0Q2hpbGQuZGF0YSwgdHJ1ZSwgJ2Vycm9yJyk7DQoJCQkJfQ0KCQkJ fQ0KCQkJaWYoeG1sTm9kZXMucmVzdWx0ICYmIHhtbE5vZGVzLnJlc3VsdC5sZW5n dGgpIHsNCgkJCQlnZW9IYW5kbGVyLnNob3dSZXN1bHQoeG1sTm9kZXMsIHBhcmFt cyk7DQoJCQl9DQoJCX0NCgl9LA0KCQ0KCXNob3dSZXN1bHQgOiBmdW5jdGlvbiAo eG1sTm9kZXMsIHBhcmFtcykgew0KDQoJCXZhciBhbGxIb2xkZXIgPSAkKHBhcmFt cy5zZWxlY3Rfb2JqKS5nZXRQYXJlbnQoJy4nICsgZ2VvSGFuZGxlci5jbGFzc05h bWVzLmFsbEhvbGRlcik7DQogICAgICAgIA0KCQlpZiAocGFyYW1zLmdldF90eXBl ID09ICdyZWdpb25zJykgew0KCQkJdmFyIHNlbGVjdFJlZ2lvbnMgPSAkKGFsbEhv bGRlcikuZ2V0RWxlbWVudCgnLicgKyBnZW9IYW5kbGVyLmNsYXNzTmFtZXMucmVn aW9uU2VsZWN0KTsNCgkJCXZhciBzZWxlY3RSZWdpb25zSG9sZGVyID0gJChhbGxI b2xkZXIpLmdldEVsZW1lbnQoJy4nICsgZ2VvSGFuZGxlci5jbGFzc05hbWVzLnJl Z2lvbkhvbGRlcik7DQoJCQkNCgkJCXZhciBjdXJPcHRpb25zID0gc2VsZWN0UmVn aW9ucy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnb3B0aW9uJyk7DQoJCQl2YXIgY3Vy T3B0aW9uc0xlbmd0aCA9IGN1ck9wdGlvbnMubGVuZ3RoOw0KCQkJDQoJCQlmb3Ig KHZhciBpID0gMTsgaSA8IGN1ck9wdGlvbnNMZW5ndGg7IGkrKykgew0KCQkJCXNl bGVjdFJlZ2lvbnMucmVtb3ZlKDEpOw0KCQkJfQ0KCQkJDQoJCQlpZiAoeG1sTm9k ZXMucmVnaW9uICYmIHhtbE5vZGVzLnJlZ2lvbi5sZW5ndGgpIHsNCgkJCQlsID0g eG1sTm9kZXMucmVnaW9uLmxlbmd0aDsNCgkJCQlmb3IgKHZhciBpID0gMDsgaSA8 IGw7IGkrKykgew0KCQkJCQl2YXIgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgnb3B0aW9uJyk7DQoJCQkJCW9wdGlvbi52YWx1ZSA9IHhtbE5vZGVzLnJl Z2lvbltpXS5nZXRBdHRyaWJ1dGUoJ2lkJyk7DQoJCQkJCW9wdGlvbi5pbm5lckhU TUwgPSB4bWxOb2Rlcy5yZWdpb25baV0uZmlyc3RDaGlsZC5kYXRhOw0KCQkJCQlz ZWxlY3RSZWdpb25zLmFwcGVuZENoaWxkKG9wdGlvbik7DQoJCQkJCSQoc2VsZWN0 UmVnaW9ucykucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpOw0KCQkJCQkkKHNlbGVjdFJl Z2lvbnNIb2xkZXIpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTsNCgkJCQl9DQoJCQkJ JChhbGxIb2xkZXIpLmdldEVsZW1lbnQoJy4nICsgZ2VvSGFuZGxlci5jbGFzc05h bWVzLmNpdHlIb2xkZXIpLmFkZENsYXNzKCdoaWRkZW4nKTsNCgkJCQkkKGFsbEhv bGRlcikuZ2V0RWxlbWVudCgnLicgKyBnZW9IYW5kbGVyLmNsYXNzTmFtZXMuY2l0 eVNlbGVjdCkuc2VsZWN0ZWRJbmRleCA9IDA7DQoJCQl9DQoJCQkNCgkJfSBlbHNl IGlmIChwYXJhbXMuZ2V0X3R5cGUgPT0gJ2NpdGllcycpIHsNCgkJCXZhciBzZWxl Y3RDaXRpZXMgPSAkKGFsbEhvbGRlcikuZ2V0RWxlbWVudCgnLicgKyBnZW9IYW5k bGVyLmNsYXNzTmFtZXMuY2l0eVNlbGVjdCk7DQoJCQl2YXIgc2VsZWN0Q2l0aWVz SG9sZGVyID0gJChhbGxIb2xkZXIpLmdldEVsZW1lbnQoJy4nICsgZ2VvSGFuZGxl ci5jbGFzc05hbWVzLmNpdHlIb2xkZXIpOw0KCQkJDQoJCQl2YXIgY3VyT3B0aW9u cyA9IHNlbGVjdENpdGllcy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnb3B0aW9uJyk7 DQoJCQl2YXIgY3VyT3B0aW9uc0xlbmd0aCA9IGN1ck9wdGlvbnMubGVuZ3RoOw0K CQkJDQoJCQlmb3IgKHZhciBpID0gMTsgaSA8IGN1ck9wdGlvbnNMZW5ndGg7IGkr Kykgew0KCQkJCXNlbGVjdENpdGllcy5yZW1vdmUoMSk7DQoJCQl9DQoJCQlpZiAo eG1sTm9kZXMuY2l0eSAmJiB4bWxOb2Rlcy5jaXR5Lmxlbmd0aCkgew0KCQkJCWwg PSB4bWxOb2Rlcy5jaXR5Lmxlbmd0aDsNCgkJCQlmb3IgKHZhciBpID0gMDsgaSA8 IGw7IGkrKykgew0KCQkJCQl2YXIgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgnb3B0aW9uJyk7DQoJCQkJCW9wdGlvbi52YWx1ZSA9IHhtbE5vZGVzLmNp dHlbaV0uZ2V0QXR0cmlidXRlKCdpZCcpOw0KCQkJCQlvcHRpb24uaW5uZXJIVE1M ID0geG1sTm9kZXMuY2l0eVtpXS5maXJzdENoaWxkLmRhdGE7DQoJCQkJCXNlbGVj dENpdGllcy5hcHBlbmRDaGlsZChvcHRpb24pOw0KCQkJCQkkKHNlbGVjdENpdGll cykucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpOw0KCQkJCQkkKHNlbGVjdENpdGllc0hv bGRlcikucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpOw0KCQkJCX0NCgkJCX0NCgkJfQ0K CX0NCn07CgoKCi8qICAgYWpheEZvcm0gICAqLwovKg0KCWFqYXhGb3JtQ2xhc3MN CgnQkdCw0LfQvtCy0YvQuSDQutC70LDRgdGBLCDQvdC1INC/0YDQuNC80LXQvdGP 0Y7RidC40LnRgdGPINGB0LDQvNC+0YHRgtC+0Y/RgtC10LvRjNC90L4gKNC+0YIg 0L3QtdCz0L4g0YPQttC1INC90LDRgdC70LXQtNGD0Y7RgiDQv9C+0LTQutC70LDR gdGB0YssINC+0LHRgdC70YPQttC40LLQsNGO0YnQuNC1INC60L7QvdC60YDQtdGC 0L3Ri9C1INGE0L7RgNC80YspDQoNCiovDQp2YXIgYWpheEZvcm1DbGFzcyA9IGZ1 bmN0aW9uKCl7DQoNCgkvLyDQstC+0LfQvNC+0LbQvdGL0LUgdXJsICjQt9Cw0LTQ sNGO0YLRgdGPINGB0LLQvtC40Lwg0LrQvtC90LrRgNC10YLQvdGL0Lwg0L/QvtC0 0LrQu9Cw0YHRgdC+0LwpDQoJLy8g0L/RgNC4INC+0YLQv9GA0LDQstC60LUg0LTQ sNC90L3Ri9GFINC90LAg0YHQtdGA0LLQtdGAINC90LAg0YTQvtGA0LzRgyDQvdCw 0LLQtdGI0LjQstCw0Y7RgtGB0Y8g0LDQvdCw0LvQvtCz0LjRh9C90YvQtSDQutC7 0LDRgdGB0Ys6DQoJLy8gc2F2ZS1sb2FkaW5nLCBwcmV2aWV3LWxvYWRpbmcsIGRy YWZ0LWxvYWRpbmcNCgl0aGlzLmFqYXhVcmxzID0gew0KCQlzYXZlOiAnJyAvLyDR gdC+0YXRgNCw0L3QtdC90LjQtSDQv9C+0YHRgtCwDQoJCS8vcHJldmlldzogJycs IC8vINC/0YDQtdC00L/RgNC+0YHQvNC+0YLRgA0KCQkvL2RyYWZ0OiAnJywgLy8g 0LIg0YfQtdGA0L3QvtCy0LjQutC4DQoJCS8vYXV0b3NhdmU6ICcnIC8vINCyINCw 0LLRgtC+0YHRjdC50LINCgl9Ow0KDQoJLy8g0JjQvNC10L3QsCB4bWwg0L3QvtC0 0L7QsiDQuCDRgdC+0L7RgtCy0LXRgdGC0LLRg9GO0YnQuNC1INC40Lwg0LjQvNC1 0L3QsCDRhNGD0L3QutGG0LjQuS3QvtCx0YDQsNCx0L7RgtGH0LjQutC+0LINCgl0 aGlzLnhtbFJlc3BvbnNlID0gew0KCQltZXNzYWdlOiB7DQoJCQlub2RlOiAnbWVz c2FnZScsDQoJCQloYW5kbGVyOiBudWxsDQoJCX0sDQoNCgkJZXJyb3I6IHsNCgkJ CW5vZGU6ICdlcnJvcicsDQoJCQloYW5kbGVyOiAneG1sUmVzcG9uc2VIYW5kbGVy X2Vycm9yJw0KCQl9LA0KDQoJCXJlZGlyZWN0OiB7DQoJCQlub2RlOiAncmVkaXJl Y3RfdXJsJywNCgkJCWhhbmRsZXI6ICd4bWxSZXNwb25zZUhhbmRsZXJfcmVkaXJl Y3QnDQoJCX0NCgl9Ow0KDQoJLy8g0JjRgdC/0L7Qu9GM0LfRg9C10LzRi9C1INCy INGE0L7RgNC80LUgY2xhc3NOYW1lcw0KCXRoaXMuY2xhc3NOYW1lcyA9IHsNCgkJ ZmllbGRIb2xkZXI6ICdqcy1maWVsZC1ob2xkZXInLCAvLyDQutC+0L3RgtC10LnQ vdC10YAt0YDQvtC00LjRgtC10LvRjCDQv9C+0LvRjyDRhNC+0YDQvNGLINC4INC+ 0YjQuNCx0LrQuA0KCQlmaWVsZERhdGE6ICdqcy1maWVsZC1kYXRhJywgLy8g0L/Q vtC70LUg0YTQvtGA0LzRiywg0LrQvtGC0L7RgNC+0LUg0L3Rg9C20L3QviDRgdC1 0YDQuNCw0LvQuNC30L7QstCw0YLRjA0KCQlmaWVsZEVycm9yTXNnQm94OiAnanMt ZmllbGQtZXJyb3ItbXNnJywgLy8g0LrQvtC90YLQtdC50L3QtdGAINC00LvRjyDQ stGL0LLQvtC00LAg0YHQvtC+0LHRidC10L3QuNGPINC+0LEg0L7RiNC40LHQutC1 DQoJCWZpZWxkTWFya2VkRXJyb3I6ICdqcy1tYXJrZWQtZXJyb3InLCAvLyDQv9C+ 0LzQtdGH0LDQtdC8INC60L7QvdGC0LXQudC90LXRgCwg0LXRgdC70Lgg0LIg0L/Q vtC70LUgLSDQvtGI0LjQsdC60LANCgkJZmllbGRNYXJrZWRDaGVja2VkOiAnanMt bWFya2VkLWNoZWNrZWQnLCAvLyDQv9C+0LzQtdGH0LDQtdC8INC60L7QvdGC0LXQ udC90LXRgCwg0LXRgdC70Lgg0L/QvtC70LUg0L/RgNC+0YjQu9C+INC/0YDQvtCy 0LXRgNC60YMNCgkJZmllbGRJc1JlcXVpcmVkOiAnanMtcmVxdWlyZWQnLCAvLyDQ v9C+0LvQtSwg0L7QsdGP0LfQsNGC0LXQu9GM0L3QvtC1INC00LvRjyDQt9Cw0L/Q vtC70L3QtdC90LjRjyANCgkJZmllbGRQYXNzXzE6ICdqcy1wYXNzLWZpZWxkLW1h aW4nLCAvLyDQv9C+0LvQtSDRgSDQvtGB0L3QvtCy0L3Ri9C8INC/0LDRgNC+0LvQ tdC8DQoJCWZpZWxkUGFzc18yOiAnanMtcGFzcy1maWVsZC1yZXBlYXQnLCAvLyDQ v9C+0LvQtSDRgSDQv9C+0LLRgtC+0YDQvtC8INC/0LDRgNC+0LvRjw0KCQlpc0xv YWRpbmc6ICdsb2FkaW5nJywgLy8g0L/RgNC10LvQvtCw0LTQtdGADQoJCXVua25v d25FcnJvckhvbGRlcjogJ2pzLXVua25vd24tZXJyb3ItaG9sZGVyJywgLy8g0LTQ tdGA0LbQsNGC0LXQu9GMINCy0YvQstC+0LTQsCDQvdC10L7Qv9C+0LfQvdCw0L3Q vdC+0Lkg0L7RiNC40LHQutC4DQoJCXVua25vd25FcnJvck1zZzogJ2pzLXVua25v d24tZXJyb3ItbXNnJyAvLyDRgdCw0LzQviDQv9C+0LvQtSDQvdC10L7Qv9C+0LfQ vdCw0L3QvdC+0Lkg0L7RiNC40LHQutC4DQoJfTsNCg0KCS8vINCS0YvQstC+0LTQ uNC80YvQtSDQutC70LjQtdC90YLQvtC8INGB0L7QvtCx0YnQtdC90LjRjyDQvtCx INC+0YjQuNCx0LrQsNGFDQoJdGhpcy5lcnJvck1lc3NhZ2VzID0gew0KCQlmaWVs ZElzRW1wdHk6ICfQndC10L7QsdGF0L7QtNC40LzQviDQt9Cw0L/QvtC70L3QuNGC 0Ywg0Y3RgtC+INC/0L7Qu9C1JywNCgkJaW5wdXRJc0luY29ycmVjdDogJ9CS0Ysg 0LLQstC10LvQuCDQvdC10LTQvtC/0YPRgdGC0LjQvNGL0Lkg0YHQuNC80LLQvtC7 JywNCgkJaW5wdXRJc0luc3VmZmljaWVudDogJ9CS0Ysg0LLQstC10LvQuCDQvdC1 0LTQvtGB0YLQsNGC0L7Rh9C90L4g0YHQuNC80LLQvtC70L7QsicsDQoJCWVtYWls SXNJbmNvcnJlY3Q6ICfQktGLINCy0LLQtdC70Lgg0L3QtdC00L7Qv9GD0YHRgtC4 0LzRi9C5IGVtYWlsJywNCgkJdXJsSXNJbmNvcnJlY3Q6ICfQktGLINCy0LLQtdC7 0Lgg0L3QtdC00L7Qv9GD0YHRgtC40LzRi9C5IHVybCcsDQoJCWlucHV0Q2hhcnNO dW1iZXJJc0luY29ycmVjdDogJ9CS0Ysg0LLQstC10LvQuCDQvdC10LLQtdGA0L3Q vtC1INGH0LjRgdC70L4g0LHRg9C60LInLA0KCQlwYXNzd29yZElzU2hvcnQ6ICfQ n9Cw0YDQvtC70Ywg0YHQu9C40YjQutC+0Lwg0LrQvtGA0L7RgtC60LjQuScsDQoJ CXBhc3N3b3Jkc0FyZU5vdEVxdWFsOiAn0J/QsNGA0L7Qu9C4INC90LUg0YHQvtCy 0L/QsNC00LDRjtGCJywNCgkJdW5rbm93bkVycm9yOiAn0J3QtdC+0L/QvtC30L3Q sNC90L3QsNGPINC+0YjQuNCx0LrQsCcgLy8g0J/Rg9GB0YLQvtC1INGB0L7QvtCx 0YnQtdC90LjQtSDQvtCxINC+0YjQuNCx0LrQtQ0KCX07DQoNCn07DQoNCg0KT2Jq ZWN0LmV4dGVuZE9iamVjdCgNCglhamF4Rm9ybUNsYXNzLnByb3RvdHlwZSwgew0K DQoJLy8J0J/QtdGA0LXQutC70Y7Rh9C10L3QuNC1INC80LXQttC00YMg0YTQvtGA 0LzQsNC80Lgg0L3QsCDRgdGC0YDQsNC90LjRhtC1DQoJc3dpdGNoRm9ybTogZnVu Y3Rpb24obGluayl7DQoJCQkkKCdyZWctd3JhcHBlcicpLmNsYXNzTmFtZSA9IGxp bmsuY2xhc3NOYW1lOw0KCQkJcmV0dXJuIGZhbHNlOw0KCX0sDQoNCg0KCS8vINCf 0LXRgNC10LLQvtC00LjQvCB4bWwg0LTQtdGA0LXQstC+INCyINC+0LHRitC10LrR gg0KCXBhcnNlWE1MOiBmdW5jdGlvbih4bWxPYmopew0KCQkJdmFyIHhtbE5vZGVz ID0ge307DQoJCQlmb3IgKHByb3AgaW4gdGhpcy54bWxSZXNwb25zZSl7DQoJCQkJ eG1sTm9kZXNbcHJvcF0gPSB4bWxPYmouZ2V0RWxlbWVudHNCeVRhZ05hbWUodGhp cy54bWxSZXNwb25zZVtwcm9wXS5ub2RlKTsNCgkJCX0NCgkJCXJldHVybiB4bWxO b2RlczsNCgl9LA0KDQoNCgkvLyDQktC+0LfQstGA0LDRidCw0LXRgiDQsdC70L7Q uiDQstGL0LLQvtC00LAg0L7RiNC40LHQutC4INC00LvRjyDQtNCw0L3QvdC+0LPQ viDQv9C+0LvRjyDRhNC+0YDQvNGLDQoJZ2V0RXJyb3JNc2dCb3hCeUZpZWxkOiBm dW5jdGlvbihmaWVsZCl7DQoJCQl2YXIgZmllbGRIb2xkZXIgPSAkKGZpZWxkKS5n ZXRQYXJlbnQoJy4nICsgdGhpcy5jbGFzc05hbWVzLmZpZWxkSG9sZGVyKTsNCgkJ CWlmKGZpZWxkSG9sZGVyKXsNCgkJCQl2YXIgZXJyb3JNc2dCb3hlcyA9ICQoZmll bGRIb2xkZXIpLmdldEVsZW1lbnRzKCcuJyArIHRoaXMuY2xhc3NOYW1lcy5maWVs ZEVycm9yTXNnQm94KTsNCgkJCQlpZihlcnJvck1zZ0JveGVzICYmIGVycm9yTXNn Qm94ZXMubGVuZ3RoKXsNCgkJCQkJcmV0dXJuIGVycm9yTXNnQm94ZXNbMF07DQoJ CQkJfSANCgkJCX1lbHNlIHsNCgkJCQlyZXR1cm4gbnVsbDsNCgkJCX0NCgl9LA0K DQoNCgkvLyANCgljb21wbGV0ZUZvcm06IGZ1bmN0aW9uKHJlZGlyZWN0VXJsKXsN CgkJCWlmKHJlZGlyZWN0VXJsKXsNCgkJCQl3aW5kb3cubG9jYXRpb24uaHJlZiA9 IHJlZGlyZWN0VXJsOw0KCQkJfSBlbHNlIHsNCgkJCQl3aW5kb3cubG9jYXRpb24u aHJlZiA9ICIvIjsNCgkJCX0NCgl9LA0KDQoNCgkvLwnQn9GA0L7QstC10YDQutCw INC30LDQv9C+0LvQvdC10L3QvdC+0YHRgtC4INGE0L7RgNC80Ysg0Lgg0L7RgtGB 0YPRgtGB0LLQuNGPINC+0YjQuNCx0L7QuiAo0YHQtNC10LvQsNGC0YwgY2xhc3NO YW1lPSdyZXF1aXJlZCcg0LTQu9GPINC/0L7Qu9C10LkpDQoJY2hlY2tGb3JtQ29t cGxpdGlvbjogZnVuY3Rpb24oZm9ybSl7DQoJCQl2YXIgZm9ybUlzQ29tcGxpdGVk ID0gdHJ1ZTsgDQoJCQl2YXIgZGF0YXMgPSAkKGZvcm0pLmdldEVsZW1lbnRzKCcu JyArIHRoaXMuY2xhc3NOYW1lcy5maWVsZERhdGEpOw0KDQoJCQlmb3IgKHZhciBp PTAsIGxlbmd0aD1kYXRhcy5sZW5ndGg7IGk8bGVuZ3RoOyBpKyspew0KCQkJCQ0K CQkJCQ0KCQkJCXZhciBmaWVsZEhvbGRlciA9ICQoZGF0YXNbaV0pLmdldFBhcmVu dCgnLicgKyB0aGlzLmNsYXNzTmFtZXMuZmllbGRIb2xkZXIpOw0KCQkJCQ0KCQkJ CWlmICgNCgkJCQkJCShkYXRhc1tpXS52YWx1ZSA9PSAnJyAmJiAvLyDQv9GD0YHR gtC+0LUg0L7QsdGP0LfQsNGC0LXQu9GM0L3QvtC1INC/0L7Qu9C1DQoJCQkJCQkJ JChkYXRhc1tpXSkuaGFzQ2xhc3ModGhpcy5jbGFzc05hbWVzLmZpZWxkSXNSZXF1 aXJlZCkpIHx8DQoJCQkJCQkNCgkJCQkJCShkYXRhc1tpXS5nZXRBdHRyaWJ1dGUo J3R5cGUnKSA9PSAnY2hlY2tib3gnICYmIC8vINC+0LHRj9C30LDRgtC10LvRjNC9 0YvQuSDRh9C10LrQsdC+0LrRgQ0KCQkJCQkJCSQoZGF0YXNbaV0pLmhhc0NsYXNz KHRoaXMuY2xhc3NOYW1lcy5maWVsZElzUmVxdWlyZWQpICYmDQoJCQkJCQkJIWRh dGFzW2ldLmNoZWNrZWQpDQoJCQkJCSl7DQoJCQkJCWZvcm1Jc0NvbXBsaXRlZCA9 IGZhbHNlOw0KCQkJCQl0aGlzLm1hcmtGaWVsZF9lcnJvcihkYXRhc1tpXSwgdGhp cy5lcnJvck1lc3NhZ2VzLmZpZWxkSXNFbXB0eSk7DQoNCgkJCQl9IGVsc2UgaWYo DQoJCQkJCQkoZmllbGRIb2xkZXIgJiYgLy8g0L/QvtC70LUg0YEg0L3QtdC40YHQ v9GA0LDQstC70LXQvdC90L7QuSDQvtGI0LjQsdC60L7QuQ0KCQkJCQkJCSQoZmll bGRIb2xkZXIpLmhhc0NsYXNzKHRoaXMuY2xhc3NOYW1lcy5maWVsZE1hcmtlZEVy cm9yKSkNCgkJCQkJKXsNCgkJCQkJdmFyIGVycm9yTXNnQm94ID0gdGhpcy5nZXRF cnJvck1zZ0JveEJ5RmllbGQoZGF0YXNbaV0pOw0KCQkJCQlpZiAoZXJyb3JNc2dC b3gpIHsNCgkJCQkJCWVycm9yTXNnQm94LmlubmVySFRNTCA9ICcnOw0KCQkJCQl9 DQoJDQoJCQkJCXRoaXMubWFya0ZpZWxkX2NsZWFyKGRhdGFzW2ldKTsNCgkJCQl9 DQoJCQl9DQoJCQlyZXR1cm4gZm9ybUlzQ29tcGxpdGVkOw0KCX0sDQoNCgkvLyDQ odC10YDQuNCw0LvQuNC30LDRhtC40Y8g0L/QvtC70LXQuSDRhNC+0YDQvNGLDQoJ c2VyaWFsaXplRm9ybTogZnVuY3Rpb24oZm9ybSl7DQoJCQl2YXIgZGF0YSA9ICcn Ow0KCQkJDQoJCQl2YXIgZGF0YXMgPSAkKGZvcm0pLmdldEVsZW1lbnRzKCcuJyAr IHRoaXMuY2xhc3NOYW1lcy5maWVsZERhdGEpOw0KCQkJZm9yICh2YXIgaT0wLCBs ZW5ndGg9ZGF0YXMubGVuZ3RoOyBpPGxlbmd0aDsgaSsrKXsNCgkJCQl2YXIgdHlw ZSA9IGRhdGFzW2ldLmdldEF0dHJpYnV0ZSgndHlwZScpOw0KCQkJCXZhciBwYXJh bSA9IGRhdGFzW2ldLmdldEF0dHJpYnV0ZSgnbmFtZScpOw0KCQkJCXZhciB2YWx1 ZSA9IGRhdGFzW2ldLnZhbHVlOw0KDQoJCQkJaWYodHlwZSA9PSAncmFkaW8nICYm ICFkYXRhc1tpXS5jaGVja2VkKXsNCgkJCQkJY29udGludWU7DQoJCQkJfQ0KDQoJ CQkJaWYodHlwZSA9PSAnY2hlY2tib3gnKXsNCgkJCQkJdmFsdWUgPSBkYXRhc1tp XS5jaGVja2VkID8gdHJ1ZSA6IGZhbHNlOw0KCQkJCX0gZWxzZSB7DQoJCQkJCXZh bHVlID0gZGF0YXNbaV0udmFsdWU7DQoJCQkJfQ0KCQkJCWRhdGEgKz0gKGkhPTAg PyAnJicgOiAnJykgKyBwYXJhbSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh2 YWx1ZSk7DQoJCQl9DQoJCQlyZXR1cm4gZGF0YTsNCgl9LA0KCQ0KCS8vINCh0LXR gNC40LDQu9C40LfQsNGG0LjRjyDQv9C+0LvQtdC5INGE0L7RgNC80YsNCgljbGFz c2ljU2VyaWFsaXplRm9ybTogZnVuY3Rpb24oZm9ybSl7DQoJCQl2YXIgZGF0YSA9 ICcnOw0KCQkJDQoJCQl2YXIgZGF0YXMgPSAkKGZvcm0pLmdldEVsZW1lbnRzKCcu JyArIHRoaXMuY2xhc3NOYW1lcy5maWVsZERhdGEpOw0KCQkJZm9yICh2YXIgaT0w LCBsZW5ndGg9ZGF0YXMubGVuZ3RoOyBpPGxlbmd0aDsgaSsrKXsNCgkJCQl2YXIg dHlwZSA9IGRhdGFzW2ldLmdldEF0dHJpYnV0ZSgndHlwZScpOw0KCQkJCXZhciBw YXJhbSA9IGRhdGFzW2ldLmdldEF0dHJpYnV0ZSgnbmFtZScpOw0KCQkJCXZhciB2 YWx1ZSA9IGRhdGFzW2ldLnZhbHVlOw0KDQoJCQkJaWYodHlwZSA9PSAncmFkaW8n ICYmICFkYXRhc1tpXS5jaGVja2VkKXsNCgkJCQkJY29udGludWU7DQoJCQkJfQ0K DQoJCQkJaWYodHlwZSA9PSAnY2hlY2tib3gnICYmICFkYXRhc1tpXS5jaGVja2Vk KXsNCgkJCQkJY29udGludWU7DQoJCQkJfQ0KCQkJCWRhdGEgKz0gKGRhdGEhPScn ID8gJyYnIDogJycpICsgcGFyYW0gKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQo dmFsdWUpOw0KCQkJfQ0KCQkJcmV0dXJuIGRhdGE7DQoJfSwNCg0KCS8vINCh0LXR gNC40LDQu9C40LfQsNGG0LjRjyDQv9C+0LvQtdC5INGE0L7RgNC80YsNCglyZWFs U2VyaWFsaXplRm9ybTogZnVuY3Rpb24oZm9ybSl7DQoJCQl2YXIgZGF0YSA9ICcn Ow0KCQkJDQoJCQl2YXIgZGF0YXMgPSBmb3JtLmVsZW1lbnRzOw0KCQkJZm9yICh2 YXIgaT0wLCBsZW5ndGg9ZGF0YXMubGVuZ3RoOyBpPGxlbmd0aDsgaSsrKXsNCgkJ CQl2YXIgdHlwZSA9IGRhdGFzW2ldLmdldEF0dHJpYnV0ZSgndHlwZScpOw0KCQkJ CXZhciBwYXJhbSA9IGRhdGFzW2ldLmdldEF0dHJpYnV0ZSgnbmFtZScpOw0KCQkJ CXZhciB2YWx1ZSA9IGRhdGFzW2ldLnZhbHVlOw0KDQoJCQkJaWYodHlwZSA9PSAn cmFkaW8nICYmICFkYXRhc1tpXS5jaGVja2VkKXsNCgkJCQkJY29udGludWU7DQoJ CQkJfQ0KDQoJCQkJaWYodHlwZSA9PSAnY2hlY2tib3gnICYmICFkYXRhc1tpXS5j aGVja2VkKXsNCgkJCQkJY29udGludWU7DQoJCQkJfQ0KCQkJCWRhdGEgKz0gKGRh dGEhPScnID8gJyYnIDogJycpICsgcGFyYW0gKyAnPScgKyBlbmNvZGVVUklDb21w b25lbnQodmFsdWUpOw0KCQkJfQ0KCQkJcmV0dXJuIGRhdGE7DQoJfSwNCg0KDQoJ Ly8g0J7RgtC/0YDQsNCy0LrQsCDQstGB0LXRhSDQv9C+0LvQtdC5INGE0L7RgNC8 0Ysg0L3QsCDRgdC10YDQstC10YANCgkvLyBzdWJtaXRUeXBlIC0g0L3QtdC+0LHR j9C30LDRgtC10LvRjNC90YvQuSDQv9Cw0YDQsNC80LXRgtGADQoJLy8gZkNoZWNr Rm9ybUNvbXBsaXRpb24gLSDQvdC10L7QsdGP0LfQsNGC0LXQu9GM0L3Ri9C5INC/ 0LDRgNCw0LzQtdGC0YAgKNGB0LLQvtGPINGE0YPQvdC60YbQuNGPINC/0YDQvtCy 0LXRgNC60Lgg0YTQvtGA0LzRiyDQvdCwINC30LDQv9C+0LvQvdC10L3QvdC+0YHR gtGMKQ0KCS8vCQlmQ2hlY2tGb3JtQ29tcGxpdGlvbiA9PSBmKCl7fSAo0L3QtSDQ vdCw0LTQviDQv9GA0L7QstC10YDRj9GC0YwpDQoJLy8JCWZDaGVja0Zvcm1Db21w bGl0aW9uID09IGZhbHNlINC40LvQuCBmQ2hlY2tGb3JtQ29tcGxpdGlvbiA9PSB1 bmRlZmluZWQgKNC90LDQtNC+INC/0YDQvtCy0LXRgNGP0YLRjCkNCglzZW5kRGF0 YTogZnVuY3Rpb24gKGZvcm0sIHN1Ym1pdFR5cGUsIGZDaGVja0Zvcm1Db21wbGl0 aW9uLCBjbGFzc2ljU2VyaWFsaXplKXsNCgkJCS8vINCf0YDQvtCy0LXRgNC60LAg 0L3QsCDQt9Cw0L/QvtC70L3QtdC90L3QvtGB0YLRjCDQstGB0LXRhSDQv9C+0LvQ tdC5INC4INC90LAg0LjRhSDQstCw0LvQuNC00L3QvtGB0YLRjA0KCQkJaWYoIWZD aGVja0Zvcm1Db21wbGl0aW9uICYmICF0aGlzLmNoZWNrRm9ybUNvbXBsaXRpb24o Zm9ybSkpIHsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9IGVsc2UgaWYoZkNoZWNr Rm9ybUNvbXBsaXRpb24gJiYgIWZDaGVja0Zvcm1Db21wbGl0aW9uKGZvcm0pKXsN CgkJCQlhbGVydCgnZmFsc2UnKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoN CgkJCS8vINCX0LDQtNCw0LXQvCDQutC70LDRgdGB0L3QtdC50LwsINC+0L/RgNC1 0LTQtdC70Y/RjtGJ0LjQuSwg0YfRgtC+INC40LzQtdC90L3QviDQs9GA0YPQt9C4 0YLRgdGPINCyINC00LDQvdC90YvQuSDQvNC+0LzQtdC90YINCgkJCXZhciBsb2Fk aW5nQ2xhc3NOYW1lID0gKHN1Ym1pdFR5cGUgfHwgJ3NhdmUnKSArICctJyArIHRo aXMuY2xhc3NOYW1lcy5pc0xvYWRpbmc7DQoNCgkJCS8vINCf0YDQvtCy0LXRgNC6 0LAg0YLQvtCz0L4sINGH0YLQviDRhNC+0YDQvNCwINC90LUg0L7QsdGA0LDQsdCw 0YLRi9Cy0LDQtdGCINGD0LbQtSDRgtC+0LPQviwg0YfRgtC+INC80Ysg0LfQsNC/ 0YDQvtGB0LjQu9C4INCyINC00LDQvdC90YvQuSDQvNC+0LzQtdC90YINCgkJCWlm KCQoZm9ybSkuaGFzQ2xhc3MobG9hZGluZ0NsYXNzTmFtZSkpew0KCQkJCXJldHVy biBmYWxzZTsNCgkJCX0NCgkJCQ0KCQkJLy8g0LXRgdC70Lggc3VibWl0VHlwZSDQ vdC1INC/0LXRgNC10LTQsNC9LCDRgtC+INC40YHQv9C+0LvRjNC30YPQtdC8IHRo aXMuYWpheFVybHMuc2F2ZQ0KCQkJdmFyIHVybCA9IHRoaXMuYWpheFVybHNbc3Vi bWl0VHlwZV0gfHwgdGhpcy5hamF4VXJscy5zYXZlOw0KCQkJDQoJCQlpZiAoIWNs YXNzaWNTZXJpYWxpemUpIHsNCgkJCQl2YXIgZGF0YSA9IHRoaXMuc2VyaWFsaXpl Rm9ybShmb3JtKTsNCgkJCX0gZWxzZSB7DQoJCQkJdmFyIGRhdGEgPSB0aGlzLmNs YXNzaWNTZXJpYWxpemVGb3JtKGZvcm0pOw0KCQkJfQ0KDQoJCQl2YXIgcGFyYW1z ID0gew0KCQkJCWZvcm06IGZvcm0sDQoJCQkJbG9hZGluZ0NsYXNzTmFtZTogbG9h ZGluZ0NsYXNzTmFtZQ0KCQkJfTsNCg0KCQkJJChmb3JtKS5hZGRDbGFzcyhsb2Fk aW5nQ2xhc3NOYW1lKTsNCgkJCQ0KCQkJYWpheFBvc3QoDQoJCQkJdXJsLA0KCQkJ CWRhdGEsDQoJCQkJdGhpcy5zZW5kRGF0YU9ubG9hZCwNCgkJCQlwYXJhbXMsDQoJ CQkJdGhpcyk7DQoJCQkNCgkJCXRoaXMuX2Zvcm0gPSAkKGZvcm0pOw0KCQkJcmV0 dXJuIGZhbHNlOw0KCX0sDQoNCg0KCS8vINCn0YLQtdC90LjQtSDQvtGC0LLQtdGC 0LAg0YHQtdGA0LLQtdGA0LAg0L3QsCDQv9C10YDQtdGB0YvQu9C60YMgINCy0YHQ tdGFINC00LDQvdC90YvRhSDRhNC+0YDQvNGLINC4INC+0LHRgNCw0LHQvtGC0LrQ sCDQstGL0LTQsNC90L3Ri9GFINC+0YjQuNCx0L7Qug0KCXNlbmREYXRhT25sb2Fk OiBmdW5jdGlvbiAoYWpheE9iaiwgcGFyYW1zKXsNCg0KCQkJaWYgKHRoaXMuX2Zv cm0pIHRoaXMuX2Zvcm0ucmVtb3ZlQ2xhc3MocGFyYW1zLmxvYWRpbmdDbGFzc05h bWUpOw0KCQkJaWYoYWpheE9iaiAmJiBhamF4T2JqLnJlc3BvbnNlWE1MKXsNCgkJ CQl2YXIgeG1sT2JqID0gYWpheE9iai5yZXNwb25zZVhNTDsNCgkJCQl2YXIgeG1s Tm9kZXMgPSB0aGlzLnBhcnNlWE1MKHhtbE9iaik7DQoNCgkJCQlmb3IgKHByb3Ag aW4geG1sTm9kZXMpew0KCQkJCQlpZih0aGlzW3RoaXMueG1sUmVzcG9uc2VbcHJv cF0uaGFuZGxlcl0pIHsNCgkJCQkJCXRoaXNbdGhpcy54bWxSZXNwb25zZVtwcm9w XS5oYW5kbGVyXSh4bWxOb2RlcywgcGFyYW1zKTsNCgkJCQkJfQ0KCQkJCX0NCgkJ CX0NCgl9LA0KDQoJLy8g0J7QsdGA0LDQsdC+0YLRh9C40Log0L7RgtCy0LXRgtCw INGB0LXRgNCy0LXRgNCwINC/0YDQuCDQv9C+0LvRg9GH0LXQvdC40Lgg0L7RiNC4 0LHQutC4DQoJeG1sUmVzcG9uc2VIYW5kbGVyX2Vycm9yOiBmdW5jdGlvbih4bWxO b2RlcywgcGFyYW1zKXsNCgkJaWYoeG1sTm9kZXMuZXJyb3IgJiYgeG1sTm9kZXMu ZXJyb3IubGVuZ3RoKSB7DQoJCQkkKHBhcmFtcy5mb3JtKS5yZW1vdmVDbGFzcyhw YXJhbXMubG9hZGluZ0NsYXNzTmFtZSk7DQoNCgkJCWZvciAodmFyIGk9MDsgaTx4 bWxOb2Rlcy5lcnJvci5sZW5ndGg7IGkrKyl7DQoJCQkJdmFyIGZpZWxkTWFya2Vk RXJyb3IgPSBwYXJhbXMuZm9ybVt4bWxOb2Rlcy5lcnJvcltpXS5nZXRBdHRyaWJ1 dGUoJ2ZpZWxkJyldOw0KCQkJCXZhciBlcnJvck1lc3NhZ2UgPSB4bWxOb2Rlcy5l cnJvcltpXS5maXJzdENoaWxkID8geG1sTm9kZXMuZXJyb3JbaV0uZmlyc3RDaGls ZC5kYXRhIDogdGhpcy5lcnJvck1lc3NhZ2VzLnVua25vd25FcnJvcjsNCg0KCQkJ CWlmKCFmaWVsZE1hcmtlZEVycm9yKSB7DQoJCQkJCWZpZWxkTWFya2VkRXJyb3Ig PSAkKHBhcmFtcy5mb3JtKS5nZXRFbGVtZW50KCcuJyArIHRoaXMuY2xhc3NOYW1l cy51bmtub3duRXJyb3JNc2cpOw0KCQkJCX0gDQoJCQkJDQoJCQkJaWYgKGZpZWxk TWFya2VkRXJyb3IpIHsNCgkJCQkJdGhpcy5tYXJrRmllbGRfZXJyb3IoZmllbGRN YXJrZWRFcnJvciwgZXJyb3JNZXNzYWdlKTsNCgkJCQl9DQoJCQl9DQoNCgkJfQ0K CX0sDQoNCgkvLyDQntCx0YDQsNCx0L7RgtGH0LjQuiDQvtGC0LLQtdGC0LAg0YHQ tdGA0LLQtdGA0LAg0L/RgNC4INGA0LXQtNC40YDQtdC60YLQtQ0KCXhtbFJlc3Bv bnNlSGFuZGxlcl9yZWRpcmVjdDogZnVuY3Rpb24oeG1sTm9kZXMsIHBhcmFtcyl7 DQoJCWlmKHhtbE5vZGVzLnJlZGlyZWN0ICYmIHhtbE5vZGVzLnJlZGlyZWN0Lmxl bmd0aCkgew0KCQkJdGhpcy5jb21wbGV0ZUZvcm0oeG1sTm9kZXMucmVkaXJlY3Rb MF0uZmlyc3RDaGlsZC5kYXRhKTsNCgkJfQ0KCX0sDQoNCg0KCS8vINCf0LXRgNC1 0YHRi9C70LrQsCDQv9C+0LvQtdC5INGE0L7RgNC80YsgKNC/0LXRgNCy0L7QtSDQ v9C+0LvQtSDQvNCw0YHRgdC40LLQsCAtINGC0LXQutGD0YnQtdC1KQ0KCWNoZWNr RGF0YTogZnVuY3Rpb24gKGZpZWxkcywgYWN0aW9uLCBzdWJtaXRUeXBlKXsNCgkJ CQ0KCQkJLy8g0LXRgdC70Lggc3VibWl0VHlwZSDQvdC1INC/0LXRgNC10LTQsNC9 LCDRgtC+INC40YHQv9C+0LvRjNC30YPQtdC8IHRoaXMuYWpheFVybHMuc2F2ZQ0K CQkJdmFyIHVybCA9IHRoaXMuYWpheFVybHNbc3VibWl0VHlwZV0gfHwgdGhpcy5h amF4VXJscy5zYXZlOw0KDQoJCQl2YXIgZGF0YSA9ICIiOw0KCQkJdmFyIGZpZWxk Ow0KCQkJDQoJCQlpZiAoZmllbGRzLmxlbmd0aCAmJiBmaWVsZHMubGVuZ3RoID4g MSkgew0KCQkJCWZpZWxkID0gZmllbGRzWzBdOw0KCQkJCQ0KCQkJCWZvciAodmFy IGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aDsgaSsrKSB7DQoJCQkJCXZhciB0eXBl ID0gZmllbGRzW2ldLmdldEF0dHJpYnV0ZSgndHlwZScpOw0KCQkJCQl2YXIgcGFy YW0gPSBmaWVsZHNbaV0uZ2V0QXR0cmlidXRlKCduYW1lJyk7DQoJCQkJCXZhciB2 YWx1ZTsNCg0KCQkJCQlpZih0eXBlID09ICdjaGVja2JveCcpew0KCQkJCQkJdmFs dWUgPSBmaWVsZHNbaV0uY2hlY2tlZCA/IHRydWUgOiBmYWxzZTsNCgkJCQkJfSBl bHNlIHsNCgkJCQkJCXZhbHVlID0gZmllbGRzW2ldLnZhbHVlOw0KCQkJCQl9DQoN CgkJCQkJZGF0YSArPSAoaSE9MCA/ICcmJyA6ICcnKSArIHBhcmFtICsgJz0nICsg ZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKTsNCgkJCQl9DQoJCQkJDQoJCQl9IGVs c2Ugew0KCQkJCWZpZWxkID0gZmllbGRzLmxlbmd0aCA/IGZpZWxkc1swXSA6IGZp ZWxkczsNCgkJCQl2YXIgcGFyYW0gPSBmaWVsZC5nZXRBdHRyaWJ1dGUoJ25hbWUn KTsNCgkJCQl2YXIgdmFsdWUgPSBmaWVsZC52YWx1ZTsNCgkJCQlkYXRhID0gcGFy YW0gKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpOw0KCQkJfQ0KCQkJ DQoNCgkJCWRhdGEgKz0gIiZhY3Rpb249IiArIGFjdGlvbjsNCg0KCQkJdmFyIGZp ZWxkUGFyZW50ID0gJChmaWVsZCkuZ2V0UGFyZW50KCcuJyArIHRoaXMuY2xhc3NO YW1lcy5maWVsZEhvbGRlcik7DQoJCQlpZihmaWVsZFBhcmVudCkgJChmaWVsZFBh cmVudCkuYWRkQ2xhc3ModGhpcy5jbGFzc05hbWVzLmlzTG9hZGluZyk7DQoJCQkN CgkJCWFqYXhQb3N0KA0KCQkJCXVybCwNCgkJCQlkYXRhLA0KCQkJCXRoaXMuY2hl Y2tEYXRhT25sb2FkLA0KCQkJCWZpZWxkLA0KCQkJCXRoaXMpOw0KCX0sDQoNCgkN CgkvLyDQp9GC0LXQvdC40LUg0L7RgtCy0LXRgtCwINGB0LXRgNCy0LXRgNCwINC9 0LAg0L/QtdGA0LXRgdGL0LvQutGDINC60L7QvdC60YDQtdGC0L3QvtCz0L4g0L/Q vtC70Y8g0YTQvtGA0LzRiyDQuCDQvtCx0YDQsNCx0L7RgtC60LAg0LLRi9C00LDQ vdC90YvRhSDQvtGI0LjQsdC+0LoNCgljaGVja0RhdGFPbmxvYWQ6IGZ1bmN0aW9u IChhamF4T2JqLCBmaWVsZCl7DQoJCQkNCgkJCXZhciBmaWVsZFBhcmVudCA9ICQo ZmllbGQpLmdldFBhcmVudCgnLicgKyB0aGlzLmNsYXNzTmFtZXMuZmllbGRIb2xk ZXIpOw0KCQkJaWYoZmllbGRQYXJlbnQpICQoZmllbGRQYXJlbnQpLnJlbW92ZUNs YXNzKHRoaXMuY2xhc3NOYW1lcy5pc0xvYWRpbmcpOw0KDQoJCQlpZihhamF4T2Jq ICYmIGFqYXhPYmoucmVzcG9uc2VYTUwpew0KCQkJCQ0KCQkJCXZhciB4bWxPYmog PSBhamF4T2JqLnJlc3BvbnNlWE1MOw0KCQkJCXZhciB4bWxOb2RlcyA9IHRoaXMu cGFyc2VYTUwoeG1sT2JqKTsNCgkJCQkNCgkJCQlpZih4bWxOb2Rlcy5lcnJvciAm JiB4bWxOb2Rlcy5lcnJvci5sZW5ndGgpIHsNCgkJCQkJZm9yICh2YXIgaT0wOyBp PHhtbE5vZGVzLmVycm9yLmxlbmd0aDsgaSsrKXsNCgkJCQkJCXZhciBmaWVsZE1h cmtlZEVycm9yID0gZmllbGQ7DQoJCQkJCQl2YXIgZXJyb3JNZXNzYWdlID0geG1s Tm9kZXMuZXJyb3JbaV0uZmlyc3RDaGlsZC5kYXRhOw0KCQkJCQkJdGhpcy5tYXJr RmllbGRfZXJyb3IoZmllbGRNYXJrZWRFcnJvciwgZXJyb3JNZXNzYWdlKTsNCgkJ CQkJfQ0KDQoJCQkJfSBlbHNlIGlmKHhtbE5vZGVzLnJlZGlyZWN0ICYmIHhtbE5v ZGVzLnJlZGlyZWN0Lmxlbmd0aCkgew0KCQkJCQl0aGlzLmNvbXBsZXRlRm9ybSh4 bWxOb2Rlcy5yZWRpcmVjdFswXS5maXJzdENoaWxkLmRhdGEpOw0KDQoJCQkJfSBl bHNlIHsNCgkJCQkJdGhpcy5tYXJrRmllbGRfY2hlY2tlZChmaWVsZCk7DQoJCQkJ fQ0KDQoJCQl9DQoJfSwNCg0KDQoNCg0KCS8vINCe0YfQuNGJ0LDQtdC8INC/0L7Q u9C1INC+0YIg0LvRjtCx0YvRhSDQvtGC0LzQtdGC0L7Qug0KCW1hcmtGaWVsZF9j bGVhcjogZnVuY3Rpb24oZmllbGQpew0KCQkJdmFyIGZpZWxkSG9sZGVyID0gJChm aWVsZCkuZ2V0UGFyZW50KCcuJyArIHRoaXMuY2xhc3NOYW1lcy5maWVsZEhvbGRl cik7DQoJCQlpZihmaWVsZEhvbGRlcil7DQoJCQkJJChmaWVsZEhvbGRlcikucmVt b3ZlQ2xhc3ModGhpcy5jbGFzc05hbWVzLmZpZWxkTWFya2VkRXJyb3IpOw0KCQkJ CSQoZmllbGRIb2xkZXIpLnJlbW92ZUNsYXNzKHRoaXMuY2xhc3NOYW1lcy5maWVs ZE1hcmtlZENoZWNrZWQpOw0KCQkJfQ0KCX0sDQoNCg0KCS8vINCe0YLQvNC10YfQ sNC10Lwg0L/QvtC70LUg0LrQsNC6INC/0YDQvtGI0LXQtNGI0LXQtSDQv9GA0L7Q stC10YDQutGDDQoJbWFya0ZpZWxkX2NoZWNrZWQ6IGZ1bmN0aW9uKGZpZWxkKXsN CgkJCXZhciBmaWVsZEhvbGRlciA9ICQoZmllbGQpLmdldFBhcmVudCgnLicgKyB0 aGlzLmNsYXNzTmFtZXMuZmllbGRIb2xkZXIpOw0KCQkJaWYoZmllbGRIb2xkZXIp ew0KCQkJCSQoZmllbGRIb2xkZXIpLnJlbW92ZUNsYXNzKHRoaXMuY2xhc3NOYW1l cy5maWVsZE1hcmtlZEVycm9yKTsNCgkJCQkkKGZpZWxkSG9sZGVyKS5hZGRDbGFz cyh0aGlzLmNsYXNzTmFtZXMuZmllbGRNYXJrZWRDaGVja2VkKTsNCgkJCX0NCgl9 LA0KDQoNCgkvLyDQntGC0LzQtdGH0LDQtdC8INC/0L7Qu9C1INC60LDQuiDQvtGI 0LjQsdC+0YfQvdC+0LUg0Lgg0LLRi9Cy0L7QtNC40Lwg0YHQvtC+0LHRidC10L3Q uNC1INC+0LEg0L7RiNC40LHQutC1DQoJbWFya0ZpZWxkX2Vycm9yOiBmdW5jdGlv bihmaWVsZCwgZXJyb3JNZXNzYWdlKSB7DQoJCQl2YXIgZmllbGRIb2xkZXIgPSAk KGZpZWxkKS5nZXRQYXJlbnQoJy4nICsgdGhpcy5jbGFzc05hbWVzLmZpZWxkSG9s ZGVyKTsNCgkJCWlmKGZpZWxkSG9sZGVyKXsNCgkJCQkkKGZpZWxkSG9sZGVyKS5y ZW1vdmVDbGFzcyh0aGlzLmNsYXNzTmFtZXMuZmllbGRNYXJrZWRDaGVja2VkKTsN CgkJCQkkKGZpZWxkSG9sZGVyKS5hZGRDbGFzcyh0aGlzLmNsYXNzTmFtZXMuZmll bGRNYXJrZWRFcnJvcik7DQoNCgkJCQl2YXIgZXJyb3JNc2dCb3ggPSB0aGlzLmdl dEVycm9yTXNnQm94QnlGaWVsZChmaWVsZCk7DQoJCQkJaWYoZXJyb3JNc2dCb3gp ew0KCQkJCQllcnJvck1zZ0JveC5pbm5lckhUTUwgPSBlcnJvck1lc3NhZ2U7DQoJ CQkJfQ0KCQkJfQ0KCQkJDQoJfSwNCg0KDQoJLy8J0J/RgNC+0LLQtdGA0LrQsCDQ v9C+0LvRjyDQvdCwINC/0YPRgdGC0L7RgtGDDQoJY2hlY2tGaWVsZF9lbXB0eTog ZnVuY3Rpb24oZSwgZmllbGQpew0KDQoJCQlpZihlID09IG51bGwgJiYgZmllbGQu dmFsdWUgIT0gJycpIHsNCgkJCQl0aGlzLm1hcmtGaWVsZF9jbGVhcihmaWVsZCk7 DQoJCQkJcmV0dXJuOw0KCQkJfQ0KDQoJCQlpZighZSkgZSA9IHdpbmRvdy5ldmVu dDsNCgkJCQ0KCQkJc3dpdGNoKGUudHlwZSl7DQoJCQkJY2FzZSAnYmx1cic6DQoJ CQkJCWlmKGZpZWxkLnZhbHVlLmxlbmd0aCAhPSAwKXsNCgkJCQkJCXRoaXMubWFy a0ZpZWxkX2NsZWFyKGZpZWxkKTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCg0KCQkJ CWNhc2UgJ2tleXVwJzoNCgkJCQkJdGhpcy5tYXJrRmllbGRfY2xlYXIoZmllbGQp Ow0KCQkJCQlicmVhazsNCg0KCQkJCWNhc2UgJ2NoYW5nZSc6DQoJCQkJCWlmKGZp ZWxkLnZhbHVlICE9ICcnKXsNCgkJCQkJCXRoaXMubWFya0ZpZWxkX2NsZWFyKGZp ZWxkKTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCX0NCgl9DQoNCn0pOwoKCgov KiAgIHBvbGxGb3JtICAgKi8KdmFyIHBvbGxGb3JtQ2xhc3MgPSBmdW5jdGlvbigp ew0KCXBvbGxGb3JtQ2xhc3Muc3VwZXJDbGFzcy5hcHBseSh0aGlzLCBhcmd1bWVu dHMpOw0KDQoJdGhpcy5hamF4VXJscyA9IHsNCgkJc2F2ZTogIi9hamF4L3BvbGwv Ig0KCX07DQoJDQoJT2JqZWN0LmV4dGVuZE9iamVjdCgNCgkJdGhpcy54bWxSZXNw b25zZSwgew0KCQkNCgkJdHdpdHRlciA6IHsNCgkJCW5vZGU6ICd0d2l0dGVyJywN CgkJCWhhbmRsZXI6ICd4bWxSZXNwb25zZUhhbmRsZXJfdHdpdHRlcicNCgkJfSwN CgkJDQoJCXJlZ2lvbiA6IHsNCgkJCW5vZGU6ICdyZWdpb24nLA0KCQkJaGFuZGxl cjogJ3htbFJlc3BvbnNlSGFuZGxlcl9yZWdpb24nDQoJCX0sDQoJCQ0KCQljaXR5 IDogew0KCQkJbm9kZTogJ2NpdHknLA0KCQkJaGFuZGxlcjogJ3htbFJlc3BvbnNl SGFuZGxlcl9jaXR5Jw0KCQl9LA0KCQkNCgkJdGV4dCA6IHsNCgkJCW5vZGU6ICd0 ZXh0JywNCgkJCWhhbmRsZXI6ICd4bWxSZXNwb25zZUhhbmRsZXJfdGV4dCcNCgkJ fSwNCgkJDQoJCWh0bWwgOiB7DQoJCQlub2RlOiAnaHRtbCcsDQoJCQloYW5kbGVy OiAneG1sUmVzcG9uc2VIYW5kbGVyX2h0bWwnDQoJCX0NCgl9KTsNCg0KfTsNCg0K cG9sbEZvcm1DbGFzcy5pbmhlcml0c0Zyb20oYWpheEZvcm1DbGFzcyk7DQoNCk9i amVjdC5leHRlbmRPYmplY3QoDQoJcG9sbEZvcm1DbGFzcy5wcm90b3R5cGUsIHsN CgkNCglzZW5kRGF0YTogZnVuY3Rpb24gKGZvcm0sIHN1Ym1pdFR5cGUsIHBvc3Rf aWQpew0KCQkvLyDQl9Cw0LTQsNC10Lwg0LrQu9Cw0YHRgdC90LXQudC8LCDQvtC/ 0YDQtdC00LXQu9GP0Y7RidC40LksINGH0YLQviDQuNC80LXQvdC90L4g0LPRgNGD 0LfQuNGC0YHRjyDQsiDQtNCw0L3QvdGL0Lkg0LzQvtC80LXQvdGCDQoJCXZhciBs b2FkaW5nQ2xhc3NOYW1lID0gKHN1Ym1pdFR5cGUgfHwgJ3NhdmUnKSArICctJyAr IHRoaXMuY2xhc3NOYW1lcy5pc0xvYWRpbmc7DQoNCgkJLy8g0J/RgNC+0LLQtdGA 0LrQsCDRgtC+0LPQviwg0YfRgtC+INGE0L7RgNC80LAg0L3QtSDQvtCx0YDQsNCx 0LDRgtGL0LLQsNC10YIg0YPQttC1INGC0L7Qs9C+LCDRh9GC0L4g0LzRiyDQt9Cw 0L/RgNC+0YHQuNC70Lgg0LIg0LTQsNC90L3Ri9C5INC80L7QvNC10L3Rgg0KCQlp ZigkKGZvcm0pLmhhc0NsYXNzKGxvYWRpbmdDbGFzc05hbWUpKXsNCgkJCXJldHVy biBmYWxzZTsNCgkJfQ0KCQlpZiAoc3VibWl0VHlwZSA9PSAncG9sbCcpIHsNCgkJ CXZhciBkYXRhID0gJ2FjdGlvbj12b3RlJzsNCgkJfSBlbHNlIGlmIChzdWJtaXRU eXBlID09ICdjYW5jZWwnKSB7DQoJCQl2YXIgZGF0YSA9ICdhY3Rpb249cGFzcyc7 DQoJCX0NCgkJZGF0YSArPSAnJnBvc3RfaWQ9JyArIHBvc3RfaWQgKyAnJic7DQoJ CWRhdGEgKz0gdGhpcy5jbGFzc2ljU2VyaWFsaXplRm9ybShmb3JtKTsNCgkJDQoJ CQ0KCQkvLyDQtdGB0LvQuCBzdWJtaXRUeXBlINC90LUg0L/QtdGA0LXQtNCw0L0s INGC0L4g0LjRgdC/0L7Qu9GM0LfRg9C10LwgdGhpcy5hamF4VXJscy5zYXZlDQoJ CXZhciB1cmwgPSB0aGlzLmFqYXhVcmxzW3N1Ym1pdFR5cGVdIHx8IHRoaXMuYWph eFVybHMuc2F2ZTsNCgkJDQoJCQ0KCQl2YXIgcGFyYW1zID0gew0KCQkJZm9ybTog Zm9ybSwNCgkJCWxvYWRpbmdDbGFzc05hbWU6IGxvYWRpbmdDbGFzc05hbWUNCgkJ fTsNCg0KCQkkKGZvcm0pLmFkZENsYXNzKGxvYWRpbmdDbGFzc05hbWUpOw0KCQkN CgkJYWpheFBvc3QoDQoJCQl1cmwsDQoJCQlkYXRhLA0KCQkJdGhpcy5zZW5kRGF0 YU9ubG9hZCwNCgkJCXBhcmFtcywNCgkJCXRoaXMpOw0KCQkNCgkJcmV0dXJuIGZh bHNlOw0KCX0sDQoJeG1sUmVzcG9uc2VIYW5kbGVyX2h0bWw6IGZ1bmN0aW9uKHht bE5vZGVzLCBwYXJhbXMpew0KCQlpZih4bWxOb2Rlcy5odG1sICYmIHhtbE5vZGVz Lmh0bWwubGVuZ3RoKSB7DQoJCQlwYXJhbXMuZm9ybS5wYXJlbnROb2RlLmlubmVy SFRNTCA9IHhtbE5vZGVzLmh0bWxbMF0uZmlyc3RDaGlsZC5kYXRhOw0KCQl9DQoJ fSwNCgkvLyDQntCx0YDQsNCx0L7RgtGH0LjQuiDQvtGC0LLQtdGC0LAg0YHQtdGA 0LLQtdGA0LAg0L/RgNC4INC/0L7Qu9GD0YfQtdC90LjQuCDQvtGI0LjQsdC60LgN Cgl4bWxSZXNwb25zZUhhbmRsZXJfZXJyb3I6IGZ1bmN0aW9uKHhtbE5vZGVzLCBw YXJhbXMpew0KCQlpZih4bWxOb2Rlcy5lcnJvciAmJiB4bWxOb2Rlcy5lcnJvci5s ZW5ndGgpIHsNCgkJCSQocGFyYW1zLmZvcm0pLnJlbW92ZUNsYXNzKHBhcmFtcy5s b2FkaW5nQ2xhc3NOYW1lKTsNCg0KCQkJZm9yICh2YXIgaT0wOyBpPHhtbE5vZGVz LmVycm9yLmxlbmd0aDsgaSsrKXsNCgkJCQl2YXIgZmllbGRNYXJrZWRFcnJvciA9 IHBhcmFtcy5mb3JtW3htbE5vZGVzLmVycm9yW2ldLmdldEF0dHJpYnV0ZSgnZmll bGQnKV07DQoJCQkJaWYgKGZpZWxkTWFya2VkRXJyb3IpIHsNCgkJCQkJdmFyIGVy cm9yTWVzc2FnZSA9IHhtbE5vZGVzLmVycm9yW2ldLmZpcnN0Q2hpbGQgPyB4bWxO b2Rlcy5lcnJvcltpXS5maXJzdENoaWxkLmRhdGEgOiB0aGlzLmVycm9yTWVzc2Fn ZXMudW5rbm93bkVycm9yOw0KDQoJCQkJCWlmKCFmaWVsZE1hcmtlZEVycm9yKQ0K CQkJCQkJZmllbGRNYXJrZWRFcnJvciA9ICQocGFyYW1zLmZvcm0pLmdldEVsZW1l bnQoJy4nICsgdGhpcy5jbGFzc05hbWVzLnVua25vd25FcnJvck1zZyk7DQoNCgkJ CQkJdGhpcy5tYXJrRmllbGRfZXJyb3IoZmllbGRNYXJrZWRFcnJvciwgZXJyb3JN ZXNzYWdlKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQl2YXIgZXJyb3JNZXNzYWdlID0g eG1sTm9kZXMuZXJyb3JbaV0uZmlyc3RDaGlsZCA/IHhtbE5vZGVzLmVycm9yW2ld LmZpcnN0Q2hpbGQuZGF0YSA6IHRoaXMuZXJyb3JNZXNzYWdlcy51bmtub3duRXJy b3I7DQoJCQkJCWZ1dHVfYWxlcnQoRkFULnBvbGxfaGVhZGVyLCBlcnJvck1lc3Nh Z2UsIGZhbHNlLCAnZXJyb3InKTsNCgkJCQl9DQoJCQl9DQoNCgkJfQ0KCX0NCn0p Ow0KDQoNCnZhciBwb2xsRm9ybSA9IG5ldyBwb2xsRm9ybUNsYXNzKCk7CgoKCi8q ICAgYmxvZ3MgICAqLwpibG9nc0hhbmRsZXIgPSB7DQoNCgl1cmxfbGVhdmVfam9p bjogJy9hamF4L2Jsb2dzL21lbWJlcnNoaXAvJywNCgl1cmxfZ2V0X2luZm86ICcv YWpheC9ibG9ncy9nZXRpbmZvLycsDQoJDQoJeG1sOiB7DQoJCXJlc3BvbnNlTm9k ZXM6IHsNCgkJCWVycm9yIDogJ2Vycm9yJywNCgkJCW1lbWJlcnNfY291bnRfc3Ry IDogJ21lbWJlcnNfY291bnRfc3RyJywNCgkJCXJlc3VsdCA6ICdtZXNzYWdlJywN CgkJCXBhcmFtIDogJ3BhcmFtJywNCgkJCWRpdmNvbnRlbnQgOiAnZGl2Y29udGVu dCcNCgkJfSwNCg0KCQlwYXJzZTogZnVuY3Rpb24oeG1sT2JqKXsNCgkJCXZhciB4 bWxOb2RlcyA9IHt9Ow0KCQkJZm9yIChwcm9wIGluIGJsb2dzSGFuZGxlci54bWwu cmVzcG9uc2VOb2Rlcykgew0KCQkJCXhtbE5vZGVzW3Byb3BdID0geG1sT2JqLmdl dEVsZW1lbnRzQnlUYWdOYW1lKGJsb2dzSGFuZGxlci54bWwucmVzcG9uc2VOb2Rl c1twcm9wXSk7DQoJCQl9DQoJCQlyZXR1cm4geG1sTm9kZXM7DQoJCX0NCgl9LA0K CQ0KCWpvaW5MZWF2ZUJsb2cgOiBmdW5jdGlvbihhY3Rpb24sIHRhcmdldF9pZCkg ew0KCQl2YXIgZGF0YSA9ICdhY3Rpb249JysgYWN0aW9uICsnJmJsb2dfaWQ9JyAr IHRhcmdldF9pZDsNCgkJYWpheExvYWRQb3N0KGJsb2dzSGFuZGxlci51cmxfbGVh dmVfam9pbiArIGFjdGlvbiArICcvJywgZGF0YSwgYmxvZ3NIYW5kbGVyLmpvaW5M ZWF2ZUJsb2dPbmxvYWQpOw0KCX0sDQoJDQoJDQoJam9pbkxlYXZlQmxvZ09ubG9h ZCA6IGZ1bmN0aW9uKGFqYXhPYmopIHsNCgkJaWYoYWpheE9iaiAmJiBhamF4T2Jq LnJlc3BvbnNlWE1MKXsNCgkJCXZhciB4bWxPYmogPSBhamF4T2JqLnJlc3BvbnNl WE1MOw0KCQkJdmFyIHhtbE5vZGVzID0gYmxvZ3NIYW5kbGVyLnhtbC5wYXJzZSh4 bWxPYmopOw0KCQkJaWYoeG1sTm9kZXMuZXJyb3IgJiYgeG1sTm9kZXMuZXJyb3Iu bGVuZ3RoKXsNCgkJCQl2YXIgZXJyb3JzX2xlbmd0aCA9IHhtbE5vZGVzLmVycm9y Lmxlbmd0aDsNCgkJCQlmb3IgKHZhciBpID0gMDsgaSA8IGVycm9yc19sZW5ndGg7 IGkrKykgew0KCQkJCQlmdXR1X2FsZXJ0KEZBVC5ibG9ncy5oZWFkZXIsIHhtbE5v ZGVzLmVycm9yW2ldLmZpcnN0Q2hpbGQuZGF0YSwgdHJ1ZSwgJ2Vycm9yJyk7DQoJ CQkJfQ0KCQkJfQ0KCQkJaWYoeG1sTm9kZXMucmVzdWx0ICYmIHhtbE5vZGVzLnJl c3VsdC5sZW5ndGgpIHsNCgkJCQlpZih4bWxOb2Rlcy5wYXJhbSAmJiB4bWxOb2Rl cy5wYXJhbS5sZW5ndGgpIHsNCgkJCQkJaWYgKHhtbE5vZGVzLnBhcmFtWzBdLmZp cnN0Q2hpbGQuZGF0YSA9PSAnbGVhdmUnKSB7DQoJCQkJCQkkKCdqcy1hZGRCbG9n TWVtYmVyJykucmVtb3ZlQ2xh