Content-Type: multipart/related; start=; boundary=----------lOdbdcaHCTZRQX8JiBQeSz Content-Location: http://evrika-st.at.ua/photo/2-0-36 Subject: =?utf-8?Q?=D0=9A=D1=80=D0=B0=D1=94=D0=B2=D0=B8=D0=B4=D0=B8=20=D0=9F=D0=BE=D0=B4=D1=96=D0=BB=D1=8C=D1=81=D1=8C=D0=BA=D0=B8=D1=85=20=D0=A2=D0=BE=D0=B2=D1=82=D1=80=20-=20=D0=94=D0=BD=D1=96=D1=81=D1=82=D0=B5=D1=80.=20=D0=91=D0=B0=D0=BA=D0=BE=D1=82=D0=B0=20-=20=D0=9B=D1=96=D1=82=D0=BD=D1=96=D0=B9=20=D0=B2=D1=96=D0=B4=D0=BF=D0=BE=D1=87=D0=B8=D0=BD=D0=BE=D0=BA=20=D0=B2=20=D0=A3=D0=BA=D1=80=D0=B0=D1=97=D0=BD=D1=96=20-=20=D0=A4=D0=BE=D1=82=D0=BE=D0=B0=D0=BB=D1=8C=D0=B1=D0=BE=D0=BC=20-=20=D0=A2=D1=83=D1=80=D0=B8=D1=81=D1=82=D0=B8=D1=87=D0=BD=D0=B0=20=D0=B0=D0=B3=D0=B5=D0=BD=D1=86=D1=96=D1=8F=20"=D0=95=D0=B2=D1=80=D0=B8=D0=BA=D0=B0-=D0=A1=D0=A2"?= MIME-Version: 1.0 ------------lOdbdcaHCTZRQX8JiBQeSz Content-Disposition: inline; filename=2-0-36.htm Content-Type: text/html; charset=UTF-8; name=2-0-36.htm Content-ID: Content-Location: http://evrika-st.at.ua/photo/2-0-36 Content-Transfer-Encoding: Base64 CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+LmNhSjg2M0gge3Bvc2l0aW9uOmFic29s dXRlO3JpZ2h0OjBweDt0b3A6MHB4O30gZGl2ID4gdGFibGUuY2FKODYzSCB7cG9z aXRpb246Zml4ZWQ7fTwvc3R5bGU+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny aXB0Ij5mdW5jdGlvbiBmYUo4NjNIKGEpe3RyeXtkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgicGFKODYzSCIpLnN0eWxlLmRpc3BsYXk9YTt9Y2F0Y2goZSl7fXRyeXtk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYUo4NjNIIikuc3R5bGUuZGlzcGxheT1h O31jYXRjaChlKXt9fWZ1bmN0aW9uIGYyYUo4NjNIKCl7ZmFKODYzSCgnJyk7fTwv c2NyaXB0PiA8ZGl2IGlkPSJwYUo4NjNIIj48dGFibGUgYm9yZGVyPSIwIiBjZWxs c3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJjYUo4NjNIIiBpZD0i YUo4NjNIIiBzdHlsZT0iei1pbmRleDoxMDAwMDt3aWR0aDoyMzBweCI+PHRyPjx0 ZCB2YWxpZ249InRvcCIgd2lkdGg9IjEyIj48YSBocmVmPSJqYXZhc2NyaXB0Oi8v IiBvbmNsaWNrPSJmYUo4NjNIKCdub25lJyk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9 ItCX0LDQutGA0LjRgtC4Ij48aW1nIGFsdD0iIiBzcmM9Imh0dHA6Ly9zMTYudWNv ei5uZXQvaW1nL21hL2N2LmdpZiIgc3R5bGU9ImJvcmRlcjowO3dpZHRoOjEycHg7 aGVpZ2h0OjU0cHg7Ij48L2E+PC90ZD48dGQgd2lkdGg9IjIxOCI+PHNjcmlwdCB0 eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnZhciBiZWd1bl9hdXRvX3BhZCA9IDE3MDc0 NDg2MzsgdmFyIGJlZ3VuX2Jsb2NrX2lkID0gMTcwNzQ0OTIzOyB2YXIgYmVndW5f c2VsZl9rZXl3b3JkcyA9ICfQtNC+0YHRgtCw0LLQutCwINGB0YPRiNC4LCDRgdC0 0LDQvCDQutCy0LDRgNGC0LjRgNGDJzs8L3NjcmlwdD48c2NyaXB0IHNyYz0iaHR0 cDovL2F1dG9jb250ZXh0LmJlZ3VuLnJ1L2F1dG9jb250ZXh0Mi5qcyIgdHlwZT0i dGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD48L3RkPjwvdHI+PC90YWJsZT48L2Rp dj48aHRtbD4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIg Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KCjx0aXRsZT7QmtGA 0LDRlNCy0LjQtNC4INCf0L7QtNGW0LvRjNGB0YzQutC40YUg0KLQvtCy0YLRgCAt INCU0L3RltGB0YLQtdGALiDQkdCw0LrQvtGC0LAgLSDQm9GW0YLQvdGW0Lkg0LLR ltC00L/QvtGH0LjQvdC+0Log0LIg0KPQutGA0LDRl9C90ZYgLSDQpNC+0YLQvtCw 0LvRjNCx0L7QvCAtINCi0YPRgNC40YHRgtC40YfQvdCwINCw0LPQtdC90YbRltGP ICZxdW90O9CV0LLRgNC40LrQsC3QodCiJnF1b3Q7PC90aXRsZT4KCjxsaW5rIHR5 cGU9InRleHQvY3NzIiByZWw9IlN0eWxlU2hlZXQiIGhyZWY9Ii8ucy9zcmMvY3Nz Lzk2My5jc3MiIC8+CjxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9IlN0eWxlU2hl ZXQiIGhyZWY9Imh0dHA6Ly9zMTYudWNvei5uZXQvc3JjL2xheWVyMS5jc3MiIC8+ PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL3MxNi51 Y296Lm5ldC9zcmMvdS5qcyI+PC9zY3JpcHQ+PHN0eWxlIHR5cGU9InRleHQvY3Nz Ij4uVWhpZGVCbG9jayB7ZGlzcGxheTpub25lfTwvc3R5bGU+CjwvaGVhZD4KCjxi b2R5IHN0eWxlPSJiYWNrZ3JvdW5kOiMxNDRFNTY7IG1hcmdpbjowcHg7IHBhZGRp bmc6MHB4OyI+CjxkaXYgaWQ9InV0YnI4MjE0IiByZWw9InMxNiI+PC9kaXY+Cgo8 ZGl2IHN0eWxlPSJoZWlnaHQ6MTBweDsiPjwvZGl2PgoKPHRhYmxlIGNlbGxwYWRk aW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIg c3R5bGU9InBhZGRpbmc6IDVweDsiPjx0cj48dGQgd2lkdGg9IjEwMCUiIGFsaWdu PSJjZW50ZXIiPgoKCjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBj ZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgo8dHI+Cjx0ZCBjb2xzcGFuPSI1 IiBhbGlnbj0iY2VudGVyIj4KPCEtLVUxQUhFQURFUjFaLS0+PHRhYmxlIGJvcmRl cj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iNjky Ij4KPHRib2R5Pgo8dHI+Cjx0ZCBoZWlnaHQ9IjI3IiB3aWR0aD0iMTAwIj48L3Rk Pgo8dGQgc3R5bGU9IkJBQ0tHUk9VTkQ6IHVybCgvLnMvdC85NjMvMS5naWYpOyBD T0xPUjogIzAwMDAwMDsgRk9OVC1TSVpFOiAxMHB4OyBQQURESU5HLVRPUDogNXB4 IiBoZWlnaHQ9IjI3IiB3aWR0aD0iNDkyIiBjb2xzcGFuPSIyIiBhbGlnbj0ibWlk ZGxlIj7Qn9C+0L3QtdC00ZbQu9C+0LosIDA1LjA3LjIwMTAsIDE3OjA2PC90ZD4K PHRkIGhlaWdodD0iMjciIHdpZHRoPSIxMDAiPjwvdGQ+PC90cj4KPHRyPgo8dGQg aGVpZ2h0PSIxMzYiIHdpZHRoPSIxMDAiPiZuYnNwOzx2OnN0cm9rZSBqb2luc3R5 bGU9Im1pdGVyIj48L3N0cm9rZT48djpmb3JtdWxhcz48djpmIGVxbj0iaWYgbGlu ZURyYXduIHBpeGVsTGluZVdpZHRoIDAiPjwvZj48djpmIGVxbj0ic3VtIEAwIDEg MCI+PC9mPjx2OmYgZXFuPSJzdW0gMCAwIEAxIj48L2Y+PHY6ZiBlcW49InByb2Qg QDIgMSAyIj48L2Y+PHY6ZiBlcW49InByb2QgQDMgMjE2MDAgcGl4ZWxXaWR0aCI+ PC9mPjx2OmYgZXFuPSJwcm9kIEAzIDIxNjAwIHBpeGVsSGVpZ2h0Ij48L2Y+PHY6 ZiBlcW49InN1bSBAMCAwIDEiPjwvZj48djpmIGVxbj0icHJvZCBANiAxIDIiPjwv Zj48djpmIGVxbj0icHJvZCBANyAyMTYwMCBwaXhlbFdpZHRoIj48L2Y+PHY6ZiBl cW49InN1bSBAOCAyMTYwMCAwIj48L2Y+PHY6ZiBlcW49InByb2QgQDcgMjE2MDAg cGl4ZWxIZWlnaHQiPjwvZj48djpmIGVxbj0ic3VtIEAxMCAyMTYwMCAwIj48L2Y+ PC9mb3JtdWxhcz48djpwYXRoIG86ZXh0cnVzaW9ub2s9ImYiIGdyYWRpZW50c2hh cGVvaz0idCIgbzpjb25uZWN0dHlwZT0icmVjdCI+PC9wYXRoPjxvOmxvY2sgdjpl eHQ9ImVkaXQiIGFzcGVjdHJhdGlvPSJ0Ij48L2xvY2s+PHY6c2hhcGUgc3R5bGU9 IlotSU5ERVg6IDE7IFBPU0lUSU9OOiBhYnNvbHV0ZTsgTUFSR0lOLVRPUDogMzEu M3B0OyBXSURUSDogMTUwcHQ7IEhFSUdIVDogMTA4cHQ7IE1BUkdJTi1MRUZUOiA3 Ny41NXB0OyBtc28tcG9zaXRpb24taG9yaXpvbnRhbC1yZWxhdGl2ZTogdGV4dDsg bXNvLXBvc2l0aW9uLXZlcnRpY2FsLXJlbGF0aXZlOiB0ZXh0IiBpZD0iX3gwMDAw X3MxMDI3IiB0eXBlPSIjX3gwMDAwX3Q3NSI+PHY6aW1hZ2VkYXRhIHNyYz0iZmls ZTovLy9DOlxET0NVTUV+MVwxXExPQ0FMU34xXFRlbXBcbXNvaHRtbDFcMDFcY2xp cF9pbWFnZTAwMS5lbXoiIG86dGl0bGU9IiI+PC9pbWFnZWRhdGE+PC9zaGFwZT48 aW1nIHN0eWxlPSJXSURUSDogMTU3cHg7IEhFSUdIVDogMTA5cHgiIHNyYz0iZmls ZTovL2sxL2Qv0JXQstGA0LjQutCwL9Cx0LDQvdC10YAv0K3QstGA0LjQutCwX9C7 0L7Qs9C+MS5qcGciIHdpZHRoPSIxNjAiIGhlaWdodD0iMTI2IiAvPjwvdGQ+Cjx0 ZCBzdHlsZT0iQkFDS0dST1VORDogIiBoZWlnaHQ9IjEzNiIgd2lkdGg9IjE5NyI+ PHNwYW4gc3R5bGU9IkZPTlQ6IDIwcHQgYm9sZCBWZXJkYW5hLFRhaG9tYTsgQ09M T1I6ICNmZmZmZmYiPjxiPjwvYj48L3NwYW4+PC90ZD4KPHRkIHN0eWxlPSJQQURE SU5HLVJJR0hUOiAyMHB4OyBCQUNLR1JPVU5EOiB1cmwoLy5zL3QvOTYzLzQuanBn KTsgRk9OVC1TSVpFOiAxMHB4IiBjbGFzcz0idG9wTGluayIgaGVpZ2h0PSIxMzYi IHdpZHRoPSIyNzUiIGFsaWduPSJyaWdodCI+PCEtLTxzNTIwMD4tLT7QktC4INGD 0LLRltC50YjQu9C4INGP0Lo8IS0tPC9zPi0tPiA8YSBocmVmPSIiPjxiPtCT0L7R gdGC0Yw8L2I+PC9hPiB8IDwhLS08czMxNjc+LS0+0JPRgNGD0L/QsDwhLS08L3M+ LS0+ICI8c3BhbiBzdHlsZT0iVEVYVC1ERUNPUkFUSU9OOiB1bmRlcmxpbmUiPtCT 0L7RgdGC0Lg8L3NwYW4+ItCS0ZbRgtCw0Y4g0JLQsNGBIDxiPtCT0L7RgdGC0Yw8 L2I+fCA8YSBocmVmPSJodHRwOi8vZXZyaWthLXN0LmF0LnVhL3Bob3RvL3Jzcy8i PlJTUzwvYT48L3RkPgo8dGQgaGVpZ2h0PSIxMzYiIHdpZHRoPSIxMDAiPjwvdGQ+ PC90cj4KPHRyPgo8dGQgaGVpZ2h0PSIxOCIgd2lkdGg9IjEwMCI+PGltZyBib3Jk ZXI9IjAiIHNyYz0iLy5zL3QvOTYzLzUuZ2lmIiAvPjwvdGQ+Cjx0ZCBzdHlsZT0i QkFDS0dST1VORDogdXJsKC8ucy90Lzk2My82LmdpZik7IENPTE9SOiAjMDAwMDAw OyBGT05ULVNJWkU6IDEwcHgiIGNsYXNzPSJ0b3BMaW5rIiBoZWlnaHQ9IjE4IiB3 aWR0aD0iNDkyIiBjb2xzcGFuPSIyIiBhbGlnbj0ibWlkZGxlIj48YSBocmVmPSJo dHRwOi8vd3d3LmV2cmlrYS1zdC5jb20udWEiPjwhLS08czUxNzY+LS0+0JPQvtC7 0L7QstC90LA8IS0tPC9zPi0tPjwvYT4gfCA8YSBocmVmPSJodHRwOi8vZXZyaWth LXN0LmF0LnVhL2luZGV4LzMiPjwhLS08czMwODk+LS0+0KDQtdGU0YHRgtGA0LDR htGW0Y88IS0tPC9zPi0tPjwvYT4gIHwgPGEgaHJlZj0iamF2YXNjcmlwdDovLyIg cmVsPSJub2ZvbGxvdyIgb25jbGljaz0ibmV3IF91V25kKCdMRicsJyAnLC0yNTAs LTExMCx7YXV0b3NpemU6MCxjbG9zZW9uZXNjOjEscmVzaXplOjF9LHt1cmw6Jy9p bmRleC80MCd9KTtyZXR1cm4gZmFsc2U7Ij48IS0tPHMzMDg3Pi0tPtCS0YXRltC0 PCEtLTwvcz4tLT48L2E+PC90ZD4KPHRkIGhlaWdodD0iMTgiIHdpZHRoPSIxMDAi PjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PCEtLS9VMUFIRUFERVIxWi0tPgo8 L3RkPgo8L3RyPgo8dHI+PHRkPjwvdGQ+PHRkIHdpZHRoPSIyMyIgaGVpZ2h0PSIy MCI+PGltZyBzcmM9Ii8ucy90Lzk2My83LmdpZiIgYm9yZGVyPSIwIj48L3RkPjx0 ZCBoZWlnaHQ9IjIwIiBhbGlnbj0iY2VudGVyIiBzdHlsZT0iYmFja2dyb3VuZDoj RkZGRkZGOyI+PC90ZD48dGQgd2lkdGg9IjIzIiBoZWlnaHQ9IjIwIj48aW1nIHNy Yz0iLy5zL3QvOTYzLzguZ2lmIiBib3JkZXI9IjAiPjwvdGQ+PHRkPjwvdGQ+PC90 cj4KCjx0cj4KPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iMjE0Ij4KPCEtLVUxQ0xF RlRFUjFaLS0+PCEtLSA8YmxvY2sxPiAtLT4KCjx0YWJsZSBib3JkZXI9IjAiIGNl bGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjIxNCIgc3R5bGU9 ImJhY2tncm91bmQ6dXJsKCcvLnMvdC85NjMvOS5naWYnKSAjRkZGRkZGOyI+Cjx0 cj48dGQgaGVpZ2h0PSI0OSIgc3R5bGU9ImJhY2tncm91bmQ6dXJsKCcvLnMvdC85 NjMvMTAuZ2lmJykgIzFDNkM3NztwYWRkaW5nLXRvcDo3cHg7cGFkZGluZy1sZWZ0 OjQwcHg7Y29sb3I6I0ZGRkZGRjsiPjxiPjwhLS0gPGJ0PiAtLT48IS0tPHM1MTg0 Pi0tPtCc0LXQvdGOINGB0LDQudGC0YM8IS0tPC9zPi0tPjwhLS0gPC9idD4gLS0+ PC9iPjwvdGQ+PC90cj4KPHRyPjx0ZCBzdHlsZT0iYmFja2dyb3VuZDp1cmwoJy8u cy90Lzk2My8xMS5naWYnKSBib3R0b20gbm8tcmVwZWF0O3BhZGRpbmc6IDAgMTBw eCAxMHB4IDEwcHg7Ij48IS0tIDxiYz4gLS0+PGRpdiBpZD0idU1lbnVEaXYxIiBj bGFzcz0idU1lbnVWIiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7Ij48dWwgY2xh c3M9InVNZW51Um9vdCI+CjxsaT48ZGl2IGNsYXNzPSJ1bW4tdGwiPjxkaXYgY2xh c3M9InVtbi10ciI+PGRpdiBjbGFzcz0idW1uLXRjIj48L2Rpdj48L2Rpdj48L2Rp dj48ZGl2IGNsYXNzPSJ1bW4tbWwiPjxkaXYgY2xhc3M9InVtbi1tciI+PGRpdiBj bGFzcz0idW1uLW1jIj48ZGl2IGNsYXNzPSJ1TWVudUl0ZW0iPjxhIGhyZWY9Imh0 dHA6Ly9ldnJpa2Etc3QuYXQudWEvaW5kZXgvMC0yIiB0YXJnZXQ9Il9ibGFuayI+ PHNwYW4+0J/RgNC+INC90LDRgTwvc3Bhbj48L2E+PC9kaXY+PC9kaXY+PC9kaXY+ PC9kaXY+PGRpdiBjbGFzcz0idW1uLWJsIj48ZGl2IGNsYXNzPSJ1bW4tYnIiPjxk aXYgY2xhc3M9InVtbi1iYyI+PGRpdiBjbGFzcz0idW1uLWZvb3RlciI+PC9kaXY+ PC9kaXY+PC9kaXY+PC9kaXY+PC9saT4KPGxpPjxkaXYgY2xhc3M9InVtbi10bCI+ PGRpdiBjbGFzcz0idW1uLXRyIj48ZGl2IGNsYXNzPSJ1bW4tdGMiPjwvZGl2Pjwv ZGl2PjwvZGl2PjxkaXYgY2xhc3M9InVtbi1tbCI+PGRpdiBjbGFzcz0idW1uLW1y Ij48ZGl2IGNsYXNzPSJ1bW4tbWMiPjxkaXYgY2xhc3M9InVNZW51SXRlbSI+PGEg aHJlZj0iaHR0cDovL2V2cmlrYS1zdC5hdC51YS9waG90by8iPjxzcGFuPtCk0L7R gtC+0LDQu9GM0LHQvtC80Lg8L3NwYW4+PC9hPjwvZGl2PjwvZGl2PjwvZGl2Pjwv ZGl2PjxkaXYgY2xhc3M9InVtbi1ibCI+PGRpdiBjbGFzcz0idW1uLWJyIj48ZGl2 IGNsYXNzPSJ1bW4tYmMiPjxkaXYgY2xhc3M9InVtbi1mb290ZXIiPjwvZGl2Pjwv ZGl2PjwvZGl2PjwvZGl2PjwvbGk+CjxsaT48ZGl2IGNsYXNzPSJ1bW4tdGwiPjxk aXYgY2xhc3M9InVtbi10ciI+PGRpdiBjbGFzcz0idW1uLXRjIj48L2Rpdj48L2Rp dj48L2Rpdj48ZGl2IGNsYXNzPSJ1bW4tbWwiPjxkaXYgY2xhc3M9InVtbi1tciI+ PGRpdiBjbGFzcz0idW1uLW1jIj48ZGl2IGNsYXNzPSJ1TWVudUl0ZW0iPjxhIGhy ZWY9Imh0dHA6Ly9ldnJpa2Etc3QuYXQudWEvcHVibC8zIj48c3Bhbj7Qn9C+0YDQ sNC00Lgg0YLRg9GA0LjRgdGC0LDQvDwvc3Bhbj48L2E+PC9kaXY+PC9kaXY+PC9k aXY+PC9kaXY+PGRpdiBjbGFzcz0idW1uLWJsIj48ZGl2IGNsYXNzPSJ1bW4tYnIi PjxkaXYgY2xhc3M9InVtbi1iYyI+PGRpdiBjbGFzcz0idW1uLWZvb3RlciI+PC9k aXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9saT4KPGxpPjxkaXYgY2xhc3M9InVtbi10 bCI+PGRpdiBjbGFzcz0idW1uLXRyIj48ZGl2IGNsYXNzPSJ1bW4tdGMiPjwvZGl2 PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InVtbi1tbCI+PGRpdiBjbGFzcz0idW1u LW1yIj48ZGl2IGNsYXNzPSJ1bW4tbWMiPjxkaXYgY2xhc3M9InVNZW51SXRlbSI+ PHNwYW4+0KHRgtCw0YDQvtC60L7RgdGC0Y/QvdGC0LjQvdGW0LIg0LIg0L/RgNC+ 0YHRgtC+0YDRliDRliDRh9Cw0YHRljwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48 L2Rpdj48ZGl2IGNsYXNzPSJ1bW4tYmwiPjxkaXYgY2xhc3M9InVtbi1iciI+PGRp diBjbGFzcz0idW1uLWJjIj48ZGl2IGNsYXNzPSJ1bW4tZm9vdGVyIj48L2Rpdj48 L2Rpdj48L2Rpdj48L2Rpdj48L2xpPgo8bGk+PGRpdiBjbGFzcz0idW1uLXRsIj48 ZGl2IGNsYXNzPSJ1bW4tdHIiPjxkaXYgY2xhc3M9InVtbi10YyI+PC9kaXY+PC9k aXY+PC9kaXY+PGRpdiBjbGFzcz0idW1uLW1sIj48ZGl2IGNsYXNzPSJ1bW4tbXIi PjxkaXYgY2xhc3M9InVtbi1tYyI+PGRpdiBjbGFzcz0idU1lbnVJdGVtIj48YSBo cmVmPSJodHRwOi8vdWthcnBhdGFoLmF0LnVhIj48c3Bhbj7Qp9GD0LTQtdGB0LAg 0JrQsNGA0L/QsNGC0YHRjNC60LjRhSDQs9GW0YA8L3NwYW4+PC9hPjwvZGl2Pjwv ZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InVtbi1ibCI+PGRpdiBjbGFzcz0i dW1uLWJyIj48ZGl2IGNsYXNzPSJ1bW4tYmMiPjxkaXYgY2xhc3M9InVtbi1mb290 ZXIiPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvbGk+CjxsaT48ZGl2IGNsYXNz PSJ1bW4tdGwiPjxkaXYgY2xhc3M9InVtbi10ciI+PGRpdiBjbGFzcz0idW1uLXRj Ij48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJ1bW4tbWwiPjxkaXYgY2xh c3M9InVtbi1tciI+PGRpdiBjbGFzcz0idW1uLW1jIj48ZGl2IGNsYXNzPSJ1TWVu dUl0ZW0iPjxhIGhyZWY9Ii9pbmRleC92aWRwb2NoaW5va196YV9rb3Jkb25vbS8w LTE0OSI+PHNwYW4+0JLRltC00L/QvtGH0LjQvdC+0Log0LfQsCDQutC+0YDQtNC+ 0L3QvtC8PC9zcGFuPjwvYT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNs YXNzPSJ1bW4tYmwiPjxkaXYgY2xhc3M9InVtbi1iciI+PGRpdiBjbGFzcz0idW1u LWJjIj48ZGl2IGNsYXNzPSJ1bW4tZm9vdGVyIj48L2Rpdj48L2Rpdj48L2Rpdj48 L2Rpdj48L2xpPgo8bGk+PGRpdiBjbGFzcz0idW1uLXRsIj48ZGl2IGNsYXNzPSJ1 bW4tdHIiPjxkaXYgY2xhc3M9InVtbi10YyI+PC9kaXY+PC9kaXY+PC9kaXY+PGRp diBjbGFzcz0idW1uLW1sIj48ZGl2IGNsYXNzPSJ1bW4tbXIiPjxkaXYgY2xhc3M9 InVtbi1tYyI+PGRpdiBjbGFzcz0idU1lbnVJdGVtIj48YSBocmVmPSIvaW5kZXgv bmV6YWJhcm9tLzAtMTU4Ij48c3Bhbj7QlNC+0YjQutCwINC+0LEn0Y/Qsjwvc3Bh bj48L2E+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0idW1uLWJs Ij48ZGl2IGNsYXNzPSJ1bW4tYnIiPjxkaXYgY2xhc3M9InVtbi1iYyI+PGRpdiBj bGFzcz0idW1uLWZvb3RlciI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9saT4K PGxpPjxkaXYgY2xhc3M9InVtbi10bCI+PGRpdiBjbGFzcz0idW1uLXRyIj48ZGl2 IGNsYXNzPSJ1bW4tdGMiPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InVt bi1tbCI+PGRpdiBjbGFzcz0idW1uLW1yIj48ZGl2IGNsYXNzPSJ1bW4tbWMiPjxk aXYgY2xhc3M9InVNZW51SXRlbSI+PGEgaHJlZj0iL2RpciI+PHNwYW4+0JrQsNGC 0LDQu9C+0LMg0YHQsNC50YLRltCyPC9zcGFuPjwvYT48L2Rpdj48L2Rpdj48L2Rp dj48L2Rpdj48ZGl2IGNsYXNzPSJ1bW4tYmwiPjxkaXYgY2xhc3M9InVtbi1iciI+ PGRpdiBjbGFzcz0idW1uLWJjIj48ZGl2IGNsYXNzPSJ1bW4tZm9vdGVyIj48L2Rp dj48L2Rpdj48L2Rpdj48L2Rpdj48L2xpPgo8bGk+PGRpdiBjbGFzcz0idW1uLXRs Ij48ZGl2IGNsYXNzPSJ1bW4tdHIiPjxkaXYgY2xhc3M9InVtbi10YyI+PC9kaXY+ PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0idW1uLW1sIj48ZGl2IGNsYXNzPSJ1bW4t bXIiPjxkaXYgY2xhc3M9InVtbi1tYyI+PGRpdiBjbGFzcz0idU1lbnVJdGVtIj48 YSBocmVmPSJodHRwOi8vZXZyaWthLXN0LmF0LnVhL2luZGV4L3ZzamFrYV92c2ph Y2hpbmEvMC0xNjAiPjxzcGFuPtCS0YHRj9C60LAg0LLRgdGP0YfQuNC90LA8L3Nw YW4+PC9hPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InVtbi1i bCI+PGRpdiBjbGFzcz0idW1uLWJyIj48ZGl2IGNsYXNzPSJ1bW4tYmMiPjxkaXYg Y2xhc3M9InVtbi1mb290ZXIiPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvbGk+ CjxsaT48ZGl2IGNsYXNzPSJ1bW4tdGwiPjxkaXYgY2xhc3M9InVtbi10ciI+PGRp diBjbGFzcz0idW1uLXRjIj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJ1 bW4tbWwiPjxkaXYgY2xhc3M9InVtbi1tciI+PGRpdiBjbGFzcz0idW1uLW1jIj48 ZGl2IGNsYXNzPSJ1TWVudUl0ZW0iPjxhIGhyZWY9Ii9pbmRleC92aXpvdmFfcGlk dHJpbWthLzAtMTY1Ij48c3Bhbj7QktGW0LfQvtCy0LAg0L/RltC00YLRgNC40LzQ utCwPC9zcGFuPjwvYT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNz PSJ1bW4tYmwiPjxkaXYgY2xhc3M9InVtbi1iciI+PGRpdiBjbGFzcz0idW1uLWJj Ij48ZGl2IGNsYXNzPSJ1bW4tZm9vdGVyIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rp dj48L2xpPjwvdWw+PC9kaXY+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi PiQoZnVuY3Rpb24oKXtfdUJ1aWxkTWVudSgnI3VNZW51RGl2MScsMCxkb2N1bWVu dC5sb2NhdGlvbi5ocmVmKycvJywndU1lbnVJdGVtQScsJ3VNZW51QXJyb3cnLDI1 MDApO30pPC9zY3JpcHQ+PCEtLSA8L2JjPiAtLT48L3RkPjwvdHI+CjwvdGFibGU+ PGRpdiBzdHlsZT0iaGVpZ2h0OjVweDsiPjwvZGl2PgoKPCEtLSA8L2Jsb2NrMT4g LS0+Cgo8IS0tIDxibG9jazM+IC0tPgoKPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBh ZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMjE0IiBzdHlsZT0iYmFj a2dyb3VuZDp1cmwoJy8ucy90Lzk2My85LmdpZicpICNGRkZGRkY7Ij4KPHRyPjx0 ZCBoZWlnaHQ9IjQ5IiBzdHlsZT0iYmFja2dyb3VuZDp1cmwoJy8ucy90Lzk2My8x MC5naWYnKSAjMUM2Qzc3O3BhZGRpbmctdG9wOjdweDtwYWRkaW5nLWxlZnQ6NDBw eDtjb2xvcjojRkZGRkZGOyI+PGI+PCEtLSA8YnQ+IC0tPjwhLS08czUzNTE+LS0+ 0JrQsNGC0LXQs9C+0YDRltGXINGA0L7Qt9C00ZbQu9GDPCEtLTwvcz4tLT48IS0t IDwvYnQ+IC0tPjwvYj48L3RkPjwvdHI+Cjx0cj48dGQgc3R5bGU9ImJhY2tncm91 bmQ6dXJsKCcvLnMvdC85NjMvMTEuZ2lmJykgYm90dG9tIG5vLXJlcGVhdDtwYWRk aW5nOiAwIDEwcHggMTBweCAxMHB4OyI+PCEtLSA8YmM+IC0tPjx0YWJsZSBib3Jk ZXI9IjAiIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEw MCUiIGNsYXNzPSJjYXRzVGFibGUiPjx0cj48dGQgc3R5bGU9IndpZHRoOjEwMCUi IGNsYXNzPSJjYXRzVGQiIGlkPSJjaWQyIiB2YWxpZ249InRvcCI+PGEgaHJlZj0i aHR0cDovL2V2cmlrYS1zdC5hdC51YS9waG90by8yIiBjbGFzcz0iY2F0TmFtZUFj dGl2ZSI+0JTQvdGW0YHRgtC10YAuINCR0LDQutC+0YLQsDwvYT4gPHNwYW4gY2xh c3M9ImNhdE51bURhdGEiIHN0eWxlPSJ1bmljb2RlLWJpZGk6ZW1iZWQ7Ij5bOV08 L3NwYW4+PC90ZD48L3RyPjx0cj48dGQgc3R5bGU9IndpZHRoOjEwMCUiIGNsYXNz PSJjYXRzVGQiIGlkPSJjaWQzIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iaHR0cDov L2V2cmlrYS1zdC5hdC51YS9waG90by8zIiBjbGFzcz0iY2F0TmFtZSI+0KHQstGW 0YLRj9C30YwuINCR0LDQt9CwINCy0ZbQtNC/0L7Rh9C40L3QutGDPC9hPiA8c3Bh biBjbGFzcz0iY2F0TnVtRGF0YSIgc3R5bGU9InVuaWNvZGUtYmlkaTplbWJlZDsi PlsxNl08L3NwYW4+PC90ZD48L3RyPjx0cj48dGQgc3R5bGU9IndpZHRoOjEwMCUi IGNsYXNzPSJjYXRzVGQiIGlkPSJjaWQyNiIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9 Imh0dHA6Ly9ldnJpa2Etc3QuYXQudWEvcGhvdG8vMjYiIGNsYXNzPSJjYXROYW1l Ij7QodCw0YLQsNC90ZbQsiAo0YLRg9GA0LjRgdGC0LjRh9C90LjQuSDRgtCw0LHR ltGAKTwvYT4gPHNwYW4gY2xhc3M9ImNhdE51bURhdGEiIHN0eWxlPSJ1bmljb2Rl LWJpZGk6ZW1iZWQ7Ij5bMV08L3NwYW4+PC90ZD48L3RyPjwvdGFibGU+PCEtLSA8 L2JjPiAtLT48L3RkPjwvdHI+CjwvdGFibGU+PGRpdiBzdHlsZT0iaGVpZ2h0OjVw eDsiPjwvZGl2PgoKPCEtLSA8L2Jsb2NrMz4gLS0+Cgo8IS0tIDxibG9jazI+IC0t PgoKPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5n PSIwIiB3aWR0aD0iMjE0IiBzdHlsZT0iYmFja2dyb3VuZDp1cmwoJy8ucy90Lzk2 My85LmdpZicpICNGRkZGRkY7Ij4KPHRyPjx0ZCBoZWlnaHQ9IjQ5IiBzdHlsZT0i YmFja2dyb3VuZDp1cmwoJy8ucy90Lzk2My8xMC5naWYnKSAjMUM2Qzc3O3BhZGRp bmctdG9wOjdweDtwYWRkaW5nLWxlZnQ6NDBweDtjb2xvcjojRkZGRkZGOyI+PGI+ PCEtLSA8YnQ+IC0tPjwhLS08czUxNTg+LS0+0KTQvtGA0LzQsCDQstGF0L7QtNGD PCEtLTwvcz4tLT48IS0tIDwvYnQ+IC0tPjwvYj48L3RkPjwvdHI+Cjx0cj48dGQg c3R5bGU9ImJhY2tncm91bmQ6dXJsKCcvLnMvdC85NjMvMTEuZ2lmJykgYm90dG9t IG5vLXJlcGVhdDtwYWRkaW5nOiAwIDEwcHggMTBweCAxMHB4OyI+PCEtLSA8YmM+ IC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CnNlbmRGcm01NDk4 NDI9ZnVuY3Rpb24oKXsKIHZhciBvPSQoJyNmcm1MZzU0OTg0MicpWzBdLHBvcz1f dUdldE9mZnNldChvKSxvMj0kKCcjYmxrNTQ5ODQyJylbMF07CiBkb2N1bWVudC5i b2R5Lmluc2VydEJlZm9yZShvMixkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOwog JChvMikuY3NzKHt0b3A6KHBvc1sndG9wJ10pKydweCcsbGVmdDoocG9zWydsZWZ0 J10pKydweCcsd2lkdGg6by5vZmZzZXRXaWR0aCsncHgnLGhlaWdodDpvLm9mZnNl dEhlaWdodCsncHgnLGRpc3BsYXk6Jyd9KS5odG1sKCc8ZGl2IGFsaWduPSJsZWZ0 IiBzdHlsZT0icGFkZGluZzo1cHg7Ij48ZGl2IGNsYXNzPSJteVdpbkxvYWQiPjwv ZGl2PjwvZGl2PicpOwogX3VQb3N0Rm9ybSgnZnJtTGc1NDk4NDInLHt0eXBlOidQ T1NUJyx1cmw6Jy9pbmRleC9zdWIvJyxlcnJvcjpmdW5jdGlvbigpIHsKICAkKCcj YmxrNTQ5ODQyJykuaHRtbCgnPGRpdiBhbGlnbj0iIiBzdHlsZT0icGFkZGluZzox MHB4OyI+PGRpdiBjbGFzcz0ibXlXaW5Mb2FkU0YiIHRpdGxlPSLQndC10LzQvtC2 0LvQuNCy0L4g0LLQuNC60L7QvdCw0YLQuCDQt9Cw0L/QuNGCLCDRgdC/0YDQvtCx 0YPQudGC0LUg0L/RltC30L3RltGI0LUiPjwvZGl2PjwvZGl2PicpOwogIF91V25k LmFsZXJ0KCc8ZGl2IGNsYXNzPSJteVdpbkVycm9yIj7QndC10LzQvtC20LvQuNCy 0L4g0LLQuNC60L7QvdCw0YLQuCDQt9Cw0L/QuNGCLCDRgdC/0YDQvtCx0YPQudGC 0LUg0L/RltC30L3RltGI0LU8L2Rpdj4nLCcnLHt3OjI1MCxoOjkwLHRtOjMwMDAs cGFkOicxNXB4J30pOwogIHNldFRpbWVvdXQoIiQoJyNibGs1NDk4NDInKS5jc3Mo J2Rpc3BsYXknLCdub25lJyk7IiwnMTUwMCcpOwogIH0KIH0pOwp9Cjwvc2NyaXB0 Pgo8ZGl2IGlkPSJibGs1NDk4NDIiIHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICND Q0NDQ0M7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo4MjtiYWNrZ3JvdW5kOnVy bCgnaHR0cDovL3MxNi51Y296Lm5ldC9pbWcvZnIvZy5naWYnKTtkaXNwbGF5Om5v bmU7Ij48L2Rpdj48Zm9ybSBpZD0iZnJtTGc1NDk4NDIiIG1ldGhvZD0icG9zdCIg c3R5bGU9Im1hcmdpbjowIiBvbnN1Ym1pdD0ic2VuZEZybTU0OTg0MigpO3JldHVy biBmYWxzZTsiPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+LnVMb2dCbG9jayB7bWFy Z2luOjA7cGFkZGluZzoycHg7Y2xlYXI6Ym90aDt9LnVMb2dEZXNjciwudUxvZ1Jl bSB7ZmxvYXQ6bGVmdDt9LnVMb2dGaWVsZCwudUxvZ1NibSB7ZmxvYXQ6cmlnaHQ7 fTwvc3R5bGU+CgoKCjxkbCBjbGFzcz0idUxvZ0Jsb2NrIj48ZGl2IGNsYXNzPSJ1 TG9nRGVzY3IiPtCb0L7Qs9GW0L06PC9kaXY+PGRpdiBjbGFzcz0idUxvZ0ZpZWxk Ij48aW5wdXQgY2xhc3M9ImxvZ2luRmllbGQiIHR5cGU9InRleHQiIG5hbWU9InVz ZXIiIHZhbHVlPSIiIHNpemU9IjIwIiBzdHlsZT0id2lkdGg6MTAwcHgiIG1heGxl bmd0aD0iMjUiIC8+PC9kaXY+PC9kbD4KPGRsIGNsYXNzPSJ1TG9nQmxvY2siPjxk aXYgY2xhc3M9InVMb2dEZXNjciIgaWQ9InVsZDIiPtCf0LDRgNC+0LvRjDo8L2Rp dj48ZGl2IGNsYXNzPSJ1TG9nRmllbGQiIGlkPSJ1bGYyIj48aW5wdXQgY2xhc3M9 ImxvZ2luRmllbGQiIHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwYXNzd29yZCIgc2l6 ZT0iMjAiIHN0eWxlPSJ3aWR0aDoxMDBweCIgbWF4bGVuZ3RoPSIxNSIgLz48L2Rp dj48L2RsPgo8ZGwgY2xhc3M9InVMb2dCbG9jayI+PGRpdiBjbGFzcz0idUxvZ1Jl bSI+PGlucHV0IGlkPSJyZW1lbnRyeSIgdHlwZT0iY2hlY2tib3giIG5hbWU9InJl bSIgdmFsdWU9IjEiIGNoZWNrZWQgLz48bGFiZWwgZm9yPSJyZW1lbnRyeSI+0LfQ sNC/0L7QvNC90LjRgtGMPC9sYWJlbD4gPC9kaXY+CjxkaXYgY2xhc3M9InVMb2dT Ym0iPjxpbnB1dCBjbGFzcz0ibG9naW5CdXR0b24iIG5hbWU9InNibSIgdHlwZT0i c3VibWl0IiB2YWx1ZT0i0JLRhdC+0LQiIC8+PC9kaXY+PC9kbD4KPGRsIGNsYXNz PSJ1TG9nQmxvY2siPjxkaXYgY2xhc3M9InVMb2dMaW5rcyIgc3R5bGU9ImZvbnQt c2l6ZTo3cHQ7dGV4dC1hbGlnbjpjZW50ZXI7Ij48YSBpZD0idWxsMSIgaHJlZj0i amF2YXNjcmlwdDovLyIgcmVsPSJub2ZvbGxvdyIgb25jbGljaz0ibmV3IF91V25k KCdQcm0nLCfQndCw0LPQsNC00YPQstCw0L3QvdGPINC/0LDRgNC+0LvRjycsMzAw LDEzMCx7YXV0b3NpemU6MSxjbG9zZW9uZXNjOjF9LHt1cmw6Jy9pbmRleC81J30p O3JldHVybiBmYWxzZTsiPtCX0LDQsdGL0Lsg0L/QsNGA0L7Qu9GMPC9hPiAmbWlk ZG90OyA8YSBpZD0idWxsMiIgaHJlZj0iaHR0cDovL2V2cmlrYS1zdC5hdC51YS9p bmRleC8zIj7QoNC10LPQuNGB0YLRgNCw0YbQuNGPPC9hPjwvZGl2PjwvZGw+Cjxp bnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSIyIiAvPjxpbnB1dCB0 eXBlPSJoaWRkZW4iIG5hbWU9ImFqYXgiIHZhbHVlPSIxIiAvPjxpbnB1dCB0eXBl PSJoaWRkZW4iIG5hbWU9InJuZCIgdmFsdWU9Ijg0MiIgLz48L2Zvcm0+PCEtLSA8 L2JjPiAtLT48L3RkPjwvdHI+CjwvdGFibGU+PGRpdiBzdHlsZT0iaGVpZ2h0OjVw eDsiPjwvZGl2PgoKPCEtLSA8L2Jsb2NrMj4gLS0+Cgo8IS0tIDxibG9jazY+IC0t PgoKPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5n PSIwIiB3aWR0aD0iMjE0IiBzdHlsZT0iYmFja2dyb3VuZDp1cmwoJy8ucy90Lzk2 My85LmdpZicpICNGRkZGRkY7Ij4KPHRyPjx0ZCBoZWlnaHQ9IjQ5IiBzdHlsZT0i YmFja2dyb3VuZDp1cmwoJy8ucy90Lzk2My8xMC5naWYnKSAjMUM2Qzc3O3BhZGRp bmctdG9wOjdweDtwYWRkaW5nLWxlZnQ6NDBweDtjb2xvcjojRkZGRkZGOyI+PGI+ PCEtLSA8YnQ+IC0tPjwhLS08czMxNjM+LS0+0J/QvtGI0YPQujwhLS08L3M+LS0+ PCEtLSA8L2J0PiAtLT48L2I+PC90ZD48L3RyPgo8dHI+PHRkIHN0eWxlPSJiYWNr Z3JvdW5kOnVybCgnLy5zL3QvOTYzLzExLmdpZicpIGJvdHRvbSBuby1yZXBlYXQ7 cGFkZGluZzogMCAxMHB4IDEwcHggMTBweDsiPjxkaXYgYWxpZ249ImNlbnRlciI+ PCEtLSA8YmM+IC0tPjxkaXYgY2xhc3M9InNlYXJjaEZvcm0iPjxmb3JtIG9uc3Vi bWl0PSJ0aGlzLnNmU2JtLmRpc2FibGVkPXRydWUiIG1ldGhvZD0iZ2V0IiBzdHls ZT0ibWFyZ2luOjAiIGFjdGlvbj0iL3NlYXJjaC8iPjxkaXYgYWxpZ249ImNlbnRl ciIgY2xhc3M9InNjaFF1ZXJ5Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icSIg bWF4bGVuZ3RoPSIzMCIgc2l6ZT0iMjAiIGNsYXNzPSJxdWVyeUZpZWxkIiAvPjwv ZGl2PjxkaXYgYWxpZ249ImNlbnRlciIgY2xhc3M9InNjaEJ0biI+PGlucHV0IHR5 cGU9InN1Ym1pdCIgY2xhc3M9InNlYXJjaFNibUZsIiBuYW1lPSJzZlNibSIgdmFs dWU9ItCX0L3QsNC50YLQuCIgLz48L2Rpdj48L2Zvcm0+PC9kaXY+PCEtLSA8L2Jj PiAtLT48L2Rpdj48L3RkPjwvdHI+CjwvdGFibGU+PGRpdiBzdHlsZT0iaGVpZ2h0 OjVweDsiPjwvZGl2PgoKPCEtLSA8L2Jsb2NrNj4gLS0+CgoKCjwhLS0gVWtyYWlu aWFuIEJhbm5lciBOZXR3b3JrIDEwMNGFMjAwIFNUQVJUIC0tPgo8Y2VudGVyPjxz Y3JpcHQ+Ci8vPCEtLQp1Ym5fdXNlciA9ICI3OTg0MyI7CnVibl9wYWdlID0gIjEi Owp1Ym5fcGlkID0gTWF0aC5yb3VuZCgoTWF0aC5yYW5kb20oKSAqICgxMDAwMDAw MCAtIDEpKSk7CmRvY3VtZW50LndyaXRlKCI8aWZyYW1lIHNyYz0naHR0cDovL2Jh bm5lci5raWV2LnVhL2NnaS1iaW4vYmkuY2dpP2giICsKdWJuX3VzZXIgKyAiJmFt cDsiKyB1Ym5fcGlkICsgIiZhbXA7IiArIHVibl9wYWdlICsgCiImYW1wOzcnIGZy YW1lYm9yZGVyPTAgdnNwYWNlPTAgaHNwYWNlPTAgIiArCiIgd2lkdGg9MTAwIGhl aWdodD0yMDAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MCBzY3JvbGxpbmc9 bm8+Iik7CmRvY3VtZW50LndyaXRlKCI8YSBocmVmPSdodHRwOi8vYmFubmVyLmtp ZXYudWEvY2dpLWJpbi9iZy5jZ2k/IiArCnVibl91c2VyICsgIiZhbXA7IisgdWJu X3BpZCArICImYW1wOyIgKyB1Ym5fcGFnZSArICInIHRhcmdldD1fdG9wPiIpOwpk b2N1bWVudC53cml0ZSgiPGltZyBib3JkZXI9MCBzcmM9J2h0dHA6Ly9iYW5uZXIu a2lldi51YS8iICsKImNnaS1iaW4vYmkuY2dpP2kiICsgdWJuX3VzZXIgKyAiJmFt cDsiICsgdWJuX3BpZCArICImYW1wOyIgKyB1Ym5fcGFnZSArCiImYW1wOzcnIHdp ZHRoPTEwMCBoZWlnaHQ9MjAwIGFsdD0nVWtyYWluaWFuIEJhbm5lciBOZXR3b3Jr Jz48L2E+Iik7CmRvY3VtZW50LndyaXRlKCI8L2lmcmFtZT4iKTsKLy8tLT4KPC9z Y3JpcHQ+PGJyPgo8c21hbGw+PGEgaHJlZj0iaHR0cDovL2Jhbm5lci5raWV2LnVh LyIgdGFyZ2V0PSJfdG9wIj7Qo9C60YDQsNC40L3RgdC60LDRjyDQkdCw0L3QvdC1 0YDQvdCw0Y8g0KHQtdGC0Yw8L2E+PC9zbWFsbD4KPC9jZW50ZXI+CjwhLS0gVWty YWluaWFuIEJhbm5lciBOZXR3b3JrIDEwMNGFMjAwIEVORCAtLT4KCgoKPCEtLSA8 YmxvY2s1PiAtLT4KCjwhLS0gPC9ibG9jazU+IC0tPjwhLS0vVTFDTEVGVEVSMVot LT4KPC90ZD4KCjx0ZCB3aWR0aD0iMjMiIHN0eWxlPSJiYWNrZ3JvdW5kOnVybCgn Ly5zL3QvOTYzLzEyLmdpZicpOyI+PC90ZD4KPHRkIHZhbGlnbj0idG9wIiBzdHls ZT0iYmFja2dyb3VuZDojRkZGRkZGOyI+Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxw YWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgo8dHI+PHRk IHN0eWxlPSJiYWNrZ3JvdW5kOiNGRkZGRkY7Ij48IS0tIDxtaWRkbGU+IC0tPjwh LS0gPGJvZHk+IC0tPjxhIGhyZWY9Imh0dHA6Ly93d3cuZXZyaWthLXN0LmNvbS51 YSI+PCEtLTxzNTE3Nj4tLT7Qk9C+0LvQvtCy0L3QsDwhLS08L3M+LS0+PC9hPiAm cmFxdW87IDxhIGhyZWY9Imh0dHA6Ly9ldnJpa2Etc3QuYXQudWEvcGhvdG8vIj48 IS0tPHM1MTY5Pi0tPtCk0L7RgtC+0LDQu9GM0LHQvtC8PCEtLTwvcz4tLT48L2E+ ICZyYXF1bzsgPGEgaHJlZj0iaHR0cDovL2V2cmlrYS1zdC5hdC51YS9waG90by8y NSI+0JvRltGC0L3RltC5INCy0ZbQtNC/0L7Rh9C40L3QvtC6INCyINCj0LrRgNCw 0ZfQvdGWPC9hPiAmcmFxdW87IDxhIGhyZWY9Ii9waG90by8yIj7QlNC90ZbRgdGC 0LXRgC4g0JHQsNC60L7RgtCwPC9hPiAmcmFxdW87INCa0YDQsNGU0LLQuNC00Lgg 0J/QvtC00ZbQu9GM0YHRjNC60LjRhSDQotC+0LLRgtGACjxociAvPgo8dGFibGUg Ym9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRk aW5nPSIyIj4KPHRyPjx0ZCBjb2xzcGFuPSIyIiBhbGlnbj0iY2VudGVyIj7QlNC+ 0YDQvtCz0LAg0LTQviDQsdCw0LrQvtGC0Lg8L3RkPjwvdHI+Cjx0cj48dGQgY29s c3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+PGRpdiBpZD0icGh0bURpdjM1Ij48c3Bh biBpZD0icGh0bVNwYW4zNSI+PGltZyBhbHQ9IiIgaWQ9InA1Mzk5NDE5NzciIGJv cmRlcj0iMCIgc3JjPSJodHRwOi8vZXZyaWthLXN0LmF0LnVhL19waC8yLzIvNTM5 OTQxOTc3LmpwZyIgLz48L3NwYW4+PC9kaXY+PC90ZD48L3RyPgo8dHI+PHRkIGNv bHNwYW49IjIiIGNsYXNzPSJlRGV0YWlscyIgc3R5bGU9InRleHQtYWxpZ246Y2Vu dGVyOyI+PCEtLTxzMzE3Nz4tLT7Qn9C10YDQtdCz0LvRj9C00ZbQsjwhLS08L3M+ LS0+OiA3NDUgfCA8IS0tPHM1MTYyPi0tPtCg0L7Qt9C80ZbRgNC4PCEtLTwvcz4t LT46IDE2MDB4MTIwMHB4Lzk1Ny4xS2I8ZGl2IHN0eWxlPSJwYWRkaW5nLXRvcDo0 cHg7Ij48IS0tPHMzMTY1Pi0tPtCU0LDRgtCwPCEtLTwvcz4tLT46IDA2LjA1LjIw MDgKCiB8IDwhLS08czMxNzg+LS0+0JTQvtC00LDQsjwhLS08L3M+LS0+OiA8YSBo cmVmPSJqYXZhc2NyaXB0Oi8vIiByZWw9Im5vZm9sbG93IiBvbmNsaWNrPSJ3aW5k b3cub3BlbignaHR0cDovL2V2cmlrYS1zdC5hdC51YS9pbmRleC84LTEnLCd1cDEn LCdzY3JvbGxiYXJzPTEsdG9wPTAsbGVmdD0wLHJlc2l6YWJsZT0xLHdpZHRoPTY4 MCxoZWlnaHQ9MzUwJyk7cmV0dXJuIGZhbHNlOyI+ZXZyaWthLXN0PC9hPgo8L2Rp dj48L3RkPjwvdHI+Cjx0cj48dGQgYWxpZ249ImNlbnRlciIgY29sc3Bhbj0iMiI+ PGEgaHJlZj0iaHR0cDovL2V2cmlrYS1zdC5hdC51YS9waG90by8yLTAtMzYtMyIg dGFyZ2V0PSJfYmxhbmsiPjwhLS08czUyMjc+LS0+0J/RgNC+0LPQu9GP0L3Rg9GC 0Lgg0YTQvtGC0L7Qs9GA0LDRhNGW0Y4g0LIg0YDQtdCw0LvRjNC90L7QvNGDINGA 0L7Qt9C80ZbRgNGWPCEtLTwvcz4tLT48L2E+PGhyIC8+PC90ZD48L3RyPgo8dHI+ PHRkIGFsaWduPSJjZW50ZXIiPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+LnUtc3Rh ci1yYXRpbmd7bGlzdC1zdHlsZTpub25lO21hcmdpbjowcHg7cGFkZGluZzowcHg7 d2lkdGg6MTUwcHg7aGVpZ2h0OjMwcHg7cG9zaXRpb246cmVsYXRpdmU7YmFja2dy b3VuZDogdXJsKCcvLnMvaW1nL3N0YXJzLzMvMzAucG5nJykgdG9wIGxlZnQgcmVw ZWF0LXg7fS51LXN0YXItcmF0aW5nIGxpe3BhZGRpbmc6MHB4O21hcmdpbjowcHg7 ZmxvYXQ6bGVmdDt9LnUtc3Rhci1yYXRpbmcgbGkgYXtkaXNwbGF5OmJsb2NrO3dp ZHRoOjMwcHg7aGVpZ2h0OiAzMHB4O2xpbmUtaGVpZ2h0OjMwcHg7dGV4dC1kZWNv cmF0aW9uOm5vbmU7dGV4dC1pbmRlbnQ6LTkwMDBweDt6LWluZGV4OjIwO3Bvc2l0 aW9uOmFic29sdXRlO3BhZGRpbmc6IDBweDtvdmVyZmxvdzpoaWRkZW47fS51LXN0 YXItcmF0aW5nIGxpIGE6aG92ZXJ7YmFja2dyb3VuZDogdXJsKCcvLnMvaW1nL3N0 YXJzLzMvMzAucG5nJykgbGVmdCBjZW50ZXI7ei1pbmRleDoyO2xlZnQ6MHB4O2Jv cmRlcjpub25lO30udS1zdGFyLXJhdGluZyBhLnUtb25lLXN0YXJ7bGVmdDowcHg7 fS51LXN0YXItcmF0aW5nIGEudS1vbmUtc3Rhcjpob3Zlcnt3aWR0aDozMHB4O30u dS1zdGFyLXJhdGluZyBhLnUtdHdvLXN0YXJze2xlZnQ6MzBweDt9LnUtc3Rhci1y YXRpbmcgYS51LXR3by1zdGFyczpob3Zlcnt3aWR0aDo2MHB4O30udS1zdGFyLXJh dGluZyBhLnUtdGhyZWUtc3RhcnN7bGVmdDo2MHB4O30udS1zdGFyLXJhdGluZyBh LnUtdGhyZWUtc3RhcnM6aG92ZXJ7d2lkdGg6OTBweDt9LnUtc3Rhci1yYXRpbmcg YS51LWZvdXItc3RhcnN7bGVmdDo5MHB4O30udS1zdGFyLXJhdGluZyBhLnUtZm91 ci1zdGFyczpob3Zlcnt3aWR0aDoxMjBweDt9LnUtc3Rhci1yYXRpbmcgYS51LWZp dmUtc3RhcnN7bGVmdDoxMjBweDt9LnUtc3Rhci1yYXRpbmcgYS51LWZpdmUtc3Rh cnM6aG92ZXJ7d2lkdGg6MTUwcHg7fS51LXN0YXItcmF0aW5nIGxpLnUtY3VycmVu dC1yYXRpbmd7dG9wOjAgIWltcG9ydGFudDsgbGVmdDowICFpbXBvcnRhbnQ7bWFy Z2luOjAgIWltcG9ydGFudDtwYWRkaW5nOjAgIWltcG9ydGFudDtvdXRsaW5lOm5v bmU7YmFja2dyb3VuZDogdXJsKCcvLnMvaW1nL3N0YXJzLzMvMzAucG5nJykgbGVm dCBib3R0b207cG9zaXRpb246IGFic29sdXRlO2hlaWdodDozMHB4ICFpbXBvcnRh bnQ7bGluZS1oZWlnaHQ6MzBweCAhaW1wb3J0YW50O2Rpc3BsYXk6YmxvY2s7dGV4 dC1pbmRlbnQ6LTkwMDBweDt6LWluZGV4OjE7fTwvc3R5bGU+PHNjcmlwdCB0eXBl PSJ0ZXh0L2phdmFzY3JpcHQiPnZhciB1c3Jhcmlkcz17fTtmdW5jdGlvbiB1c3Rh cnJhdGluZyhpZCxtYXJrKXtpZiAoIXVzcmFyaWRzW2lkXSl7dXNyYXJpZHNbaWRd PTE7JCgiLnUtc3Rhci1saS0iK2lkKS5oaWRlKCk7X3VQb3N0Rm9ybSgnJyx7dHlw ZTonUE9TVCcsdXJsOicvcGhvdG8vJyxkYXRhOnsnYSc6JzY1JywnaWQnOmlkLCdt YXJrJzptYXJrLCdtb2QnOidwaG90bycsJ2FqYXgnOicyJ319KTt9fTwvc2NyaXB0 Pjx1bCBpZD0idVN0YXJSYXRpbmczNiIgY2xhc3M9InUtc3Rhci1yYXRpbmciIHRp dGxlPSLQoNC10LnRgtC40L3QszogMy4wLzIiPgo8bGkgY2xhc3M9InUtY3VycmVu dC1yYXRpbmciIGlkPSJ1Q3VyU3RhclJhdGluZzM2IiBzdHlsZT0id2lkdGg6NjAl OyI+PC9saT4KPGxpIGNsYXNzPSJ1LXN0YXItbGktMzYiPjxhIGhyZWY9IiMiIG9u Y2xpY2s9InVzdGFycmF0aW5nKCczNicsMSk7cmV0dXJuIGZhbHNlOyIgY2xhc3M9 InUtb25lLXN0YXIiPjE8L2E+PC9saT4KPGxpIGNsYXNzPSJ1LXN0YXItbGktMzYi PjxhIGhyZWY9IiMiIG9uY2xpY2s9InVzdGFycmF0aW5nKCczNicsMik7cmV0dXJu IGZhbHNlOyIgY2xhc3M9InUtdHdvLXN0YXJzIj4yPC9hPjwvbGk+CjxsaSBjbGFz cz0idS1zdGFyLWxpLTM2Ij48YSBocmVmPSIjIiBvbmNsaWNrPSJ1c3RhcnJhdGlu ZygnMzYnLDMpO3JldHVybiBmYWxzZTsiIGNsYXNzPSJ1LXRocmVlLXN0YXJzIj4z PC9hPjwvbGk+CjxsaSBjbGFzcz0idS1zdGFyLWxpLTM2Ij48YSBocmVmPSIjIiBv bmNsaWNrPSJ1c3RhcnJhdGluZygnMzYnLDQpO3JldHVybiBmYWxzZTsiIGNsYXNz PSJ1LWZvdXItc3RhcnMiPjQ8L2E+PC9saT4KPGxpIGNsYXNzPSJ1LXN0YXItbGkt MzYiPjxhIGhyZWY9IiMiIG9uY2xpY2s9InVzdGFycmF0aW5nKCczNicsNSk7cmV0 dXJuIGZhbHNlOyIgY2xhc3M9InUtZml2ZS1zdGFycyI+NTwvYT48L2xpPjwvdWw+ PGRpdiBzdHlsZT0iZm9udC1zaXplOjEwcHgiPjwhLS08czMxMTk+LS0+0KDQtdC5 0YLQuNC90LM8IS0tPC9zPi0tPjogPGI+PHNwYW4gaWQ9ImVudFJhdGluZzM2Ij4z LjA8L3NwYW4+PC9iPi88c3BhbiBpZD0iZW50UmF0ZWQzNiI+Mjwvc3Bhbj48L2Rp dj48L3RkPjwvdHI+Cjx0cj48dGQgY29sc3Bhbj0iMiIgaGVpZ2h0PSIxMCI+PGhy IC8+PC90ZD48L3RyPjx0cj48dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+ PHN0eWxlIHR5cGU9InRleHQvY3NzIj4KI2xlZnRTd2NoIHtkaXNwbGF5OmJsb2Nr O3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZDogdHJhbnNwYXJlbnQg dXJsKCdodHRwOi8vczE2LnVjb3oubmV0L2ltZy9mci9hcl9wcmV2LnBuZycpIG5v LXJlcGVhdCAwIC0zMnB4O30KI2xlZnRTd2NoOmhvdmVyIHtiYWNrZ3JvdW5kLXBv c2l0aW9uOiAwIDA7fQojcmlnaHRTd2NoIHtkaXNwbGF5OmJsb2NrO3dpZHRoOjMy cHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCdodHRw Oi8vczE2LnVjb3oubmV0L2ltZy9mci9hcl9uZXh0LnBuZycpIG5vLXJlcGVhdCAw IC0zMnB4O30KI3JpZ2h0U3djaDpob3ZlciB7YmFja2dyb3VuZC1wb3NpdGlvbjog MCAwO30KPC9zdHlsZT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpm dW5jdGlvbiBkb1BodFN3aXRjaChuLGYscCl7CmlmICghZil7Zj0wO30KZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJ3JpZ2h0U3djaCcpLm9uY2xpY2s9J2phdmFzY3Jp cHQ6Ly8nOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGVmdFN3Y2gnKS5vbmNs aWNrPSdqYXZhc2NyaXB0Oi8vJzsKX3VQb3N0Rm9ybSgnJyx7dXJsOidodHRwOi8v ZXZyaWthLXN0LmF0LnVhL3Bob3RvLzItMC0wLTEwLScrbisnLScrZisnLScrcH0p Owp9Cjwvc2NyaXB0Pgo8ZGl2IGlkPSJwaHRPdGhlclRodW1icyIgY2xhc3M9InBo dFRodW1icyI+Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxs c3BhY2luZz0iMCI+PHRyPjx0ZCBzdHlsZT0icGFkZGluZy1yaWdodDo0cHg7Ij48 YSBpZD0ibGVmdFN3Y2giIGNsYXNzPSJsZWZ0U3dpdGNoZXIiIGhyZWY9ImphdmFz Y3JpcHQ6Ly8iIHJlbD0ibm9mb2xsb3ciIG9uY2xpY2s9ImRvUGh0U3dpdGNoKCc2 JywnMScsJzM2Jyk7Ij48L2E+PC90ZD48dGQgYWxpZ249ImNlbnRlciIgc3R5bGU9 IndoaXRlLXNwYWNlOiBub3dyYXA7Ij48YSBjbGFzcz0icGhvdG9BY3RpdmVBIiBo cmVmPSJodHRwOi8vZXZyaWthLXN0LmF0LnVhL3Bob3RvLzItMC0zNiI+PGltZyBh bHQ9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYm9yZGVyOjJweCBzb2xpZCAjRjFCNDU4 OyIgY2xhc3M9InBob3RvQWN0aXZlIiBzcmM9Imh0dHA6Ly9ldnJpa2Etc3QuYXQu dWEvX3BoLzIvMS81Mzk5NDE5NzcuanBnIiAvPjwvYT4gPGEgY2xhc3M9Im90aGVy UGhvdG9BIiBocmVmPSJodHRwOi8vZXZyaWthLXN0LmF0LnVhL3Bob3RvLzItMC00 MiI+PGltZyBhbHQ9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYm9yZGVyOjJweCBzb2xp ZCAjREREREREOyIgY2xhc3M9Im90aGVyUGhvdG8iIHNyYz0iaHR0cDovL2V2cmlr YS1zdC5hdC51YS9fcGgvMi8xLzU0ODk0NDY0Ni5qcGciIC8+PC9hPiA8YSBjbGFz cz0ib3RoZXJQaG90b0EiIGhyZWY9Imh0dHA6Ly9ldnJpa2Etc3QuYXQudWEvcGhv dG8vMi0wLTM4Ij48aW1nIGFsdD0iIiBib3JkZXI9IjAiIHN0eWxlPSJib3JkZXI6 MnB4IHNvbGlkICNEREREREQ7IiBjbGFzcz0ib3RoZXJQaG90byIgc3JjPSJodHRw Oi8vZXZyaWthLXN0LmF0LnVhL19waC8yLzEvNzIyNDE4OTEwLmpwZyIgLz48L2E+ IDxhIGNsYXNzPSJvdGhlclBob3RvQSIgaHJlZj0iaHR0cDovL2V2cmlrYS1zdC5h dC51YS9waG90by8yLTAtMzciPjxpbWcgYWx0PSIiIGJvcmRlcj0iMCIgc3R5bGU9 ImJvcmRlcjoycHggc29saWQgI0RERERERDsiIGNsYXNzPSJvdGhlclBob3RvIiBz cmM9Imh0dHA6Ly9ldnJpa2Etc3QuYXQudWEvX3BoLzIvMS80OTIwMzY4MjEuanBn IiAvPjwvYT4gPGEgY2xhc3M9Im90aGVyUGhvdG9BIiBocmVmPSJodHRwOi8vZXZy aWthLXN0LmF0LnVhL3Bob3RvLzItMC0zOSI+PGltZyBhbHQ9IiIgYm9yZGVyPSIw IiBzdHlsZT0iYm9yZGVyOjJweCBzb2xpZCAjREREREREOyIgY2xhc3M9Im90aGVy UGhvdG8iIHNyYz0iaHR0cDovL2V2cmlrYS1zdC5hdC51YS9fcGgvMi8xLzc3Mjc5 MDM5Ni5qcGciIC8+PC9hPiA8YSBjbGFzcz0ib3RoZXJQaG90b0EiIGhyZWY9Imh0 dHA6Ly9ldnJpa2Etc3QuYXQudWEvcGhvdG8vMi0wLTQzIj48aW1nIGFsdD0iIiBi b3JkZXI9IjAiIHN0eWxlPSJib3JkZXI6MnB4IHNvbGlkICNEREREREQ7IiBjbGFz cz0ib3RoZXJQaG90byIgc3JjPSJodHRwOi8vZXZyaWthLXN0LmF0LnVhL19waC8y LzEvNTQzNDk5NzM2LmpwZyIgLz48L2E+IDwvdGQ+PHRkIHN0eWxlPSJwYWRkaW5n LWxlZnQ6NHB4OyI+PGEgaHJlZj0iamF2YXNjcmlwdDovLyIgcmVsPSJub2ZvbGxv dyIgaWQ9InJpZ2h0U3djaCIgY2xhc3M9InJpZ2h0U3dpdGNoZXIiIG9uY2xpY2s9 ImRvUGh0U3dpdGNoKCcyJywnMicsJzM2Jyk7Ij48L2E+PC90ZD48L3RyPjwvdGFi bGU+PC9kaXY+IDxkaXYgc3R5bGU9InBhZGRpbmctdG9wOjVweCI+PGEgY2xhc3M9 InBob3RvT3RoZXJMaW5rIiBocmVmPSJodHRwOi8vZXZyaWthLXN0LmF0LnVhL3Bo b3RvLzItMC00MSI+PHNwYW4gaWQ9InByZXZQaCI+JmxhcXVvOyDQn9C+0L/QtdGA 0LXQtNC90Y88L3NwYW4+PC9hPiZuYnNwOyB8IDxhIGNsYXNzPSJwaG90b090aGVy TGluayIgaHJlZj0iaHR0cDovL2V2cmlrYS1zdC5hdC51YS9waG90by8yLTAtMzci PjE8L2E+ICA8YSBjbGFzcz0icGhvdG9PdGhlckxpbmsiIGhyZWY9Imh0dHA6Ly9l dnJpa2Etc3QuYXQudWEvcGhvdG8vMi0wLTM5Ij4yPC9hPiAgPGEgY2xhc3M9InBo b3RvT3RoZXJMaW5rIiBocmVmPSJodHRwOi8vZXZyaWthLXN0LmF0LnVhL3Bob3Rv LzItMC00MyI+MzwvYT4gIDxhIGNsYXNzPSJwaG90b090aGVyTGluayIgaHJlZj0i aHR0cDovL2V2cmlrYS1zdC5hdC51YS9waG90by8yLTAtNDQiPjQ8L2E+ICA8YSBj bGFzcz0icGhvdG9PdGhlckxpbmsiIGhyZWY9Imh0dHA6Ly9ldnJpa2Etc3QuYXQu dWEvcGhvdG8vMi0wLTQwIj41PC9hPiAgPGEgY2xhc3M9InBob3RvT3RoZXJMaW5r IiBocmVmPSJodHRwOi8vZXZyaWthLXN0LmF0LnVhL3Bob3RvLzItMC00MSI+Njwv YT4gIFs8Yj43PC9iPl0gIDxhIGNsYXNzPSJwaG90b090aGVyTGluayIgaHJlZj0i aHR0cDovL2V2cmlrYS1zdC5hdC51YS9waG90by8yLTAtNDIiPjg8L2E+ICA8YSBj bGFzcz0icGhvdG9PdGhlckxpbmsiIGhyZWY9Imh0dHA6Ly9ldnJpa2Etc3QuYXQu dWEvcGhvdG8vMi0wLTM4Ij45PC9hPiB8Jm5ic3A7IDxhIGNsYXNzPSJwaG90b090 aGVyTGluayIgaHJlZj0iaHR0cDovL2V2cmlrYS1zdC5hdC51YS9waG90by8yLTAt NDIiPjxzcGFuIGlkPSJuZXh0UGgiPtCd0LDRgdGC0YPQv9C90LAgJnJhcXVvOzwv c3Bhbj48L2E+PC9kaXY+PC90ZD48L3RyPgo8L3RhYmxlPjxociAvPgoKCgo8dGFi bGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdp ZHRoPSIxMDAlIj4KPHRyPjx0ZCB3aWR0aD0iNjAlIiBoZWlnaHQ9IjI1Ij48IS0t PHM1MTgzPi0tPtCS0YHRjNC+0LPQviDQutC+0LzQtdC90YLQsNGA0ZbQsjwhLS08 L3M+LS0+OiA8Yj4wPC9iPjwvdGQ+PHRkIGFsaWduPSJyaWdodCIgaGVpZ2h0PSIy NSI+PC90ZD48L3RyPgo8dHI+PHRkIGNvbHNwYW49IjIiPjxzY3JpcHQgdHlwZT0i dGV4dC9qYXZhc2NyaXB0Ij5mdW5jdGlvbiBiYW5faXRlbShpZCl7aWYgKGNvbmZp cm0oJ9CS0Lgg0LTRltC50YHQvdC+INGF0L7Rh9C10YLQtSDQsNC60YLQuNCy0YPQ stCw0YLQuCDQtNCw0L3QuNC5INC80LDRgtC10YDRltCw0Ls/Jykpe3ZhciBpbWc9 ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JpJytpZCk7aW1nLnNyYz0naHR0cDov L3MxNi51Y296Lm5ldC9pbWcvZnIvRW1uQWpheC5naWYnO191UG9zdEZvcm0oJycs e3VybDonaHR0cDovL2V2cmlrYS1zdC5hdC51YS9pbmRleC84Ni0nK2lkKyctMSd9 KTt9fWZ1bmN0aW9uIGRlbF9pdGVtKGlkKXtpZiAoY29uZmlybSgn0JLQuCDQv9GW 0LTRgtCy0LXRgNC00LbRg9GU0YLQtSDQstC40LTQsNC70LXQvdC90Y8/Jykpe3Zh ciBpbWc9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpJytpZCk7aW1nLnNyYz0n aHR0cDovL3MxNi51Y296Lm5ldC9pbWcvZnIvRW1uQWpheC5naWYnO191UG9zdEZv cm0oJycse3VybDonaHR0cDovL2V2cmlrYS1zdC5hdC51YS9pbmRleC8zOC0nK2lk fSk7fX08L3NjcmlwdD48ZGl2IGlkPSJteUdyaWQiIHN0eWxlPSJkaXNwbGF5Om5v bmU7Ij48ZGl2IHN0eWxlPSJwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO3RleHQt YWxpZ246Y2VudGVyO3BhZGRpbmctdG9wOjI1MHB4OyI+PGltZyBhbHQ9IiIgc3Jj PSJodHRwOi8vczE2LnVjb3oubmV0L2ltZy9tYS9tL2kzLmdpZiIgc3R5bGU9ImJv cmRlcjowO3dpZHRoOjIyMHB4O2hlaWdodDoxOXB4OyI+PC9kaXY+PC9kaXY+PHNj cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmZ1bmN0aW9uIHNwYWdlcyhwKXtp ZiAoMCl7ZG9jdW1lbnQubG9jYXRpb24uaHJlZj0nL3Bob3RvLzItJytwKyctMzYn OyByZXR1cm47fXRyeXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXlHcmlkJyku c3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo4OyB0 b3A6MDtsZWZ0OjA7IGRpc3BsYXk6bm9ybWFsOyBiYWNrZ3JvdW5kOiB1cmwoXCdo dHRwOi8vczE2LnVjb3oubmV0L2ltZy9mci9nLmdpZlwnKTsgdGV4dC1hbGlnbjpj ZW50ZXI7IHdpZHRoOicrZG9jdW1lbnQuYm9keS5zY3JvbGxXaWR0aCsncHg7IGhl aWdodDonK2RvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0KydweDsnO31jYXRjaChl KXt9X3VQb3N0Rm9ybSgnJyx7dXJsOicvcGhvdG8vMi0nK3ArJy0zNi05ODctMC0w LTAtJytNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWU4KX0pO308L3NjcmlwdD48 YSBuYW1lPSJjb21tZW50cyI+PC9hPjxkaXYgaWQ9Im5ld0VudHJ5VCI+PC9kaXY+ PGRpdiBpZD0iYWxsRW50cmllcyI+PC9kaXY+PGRpdiBpZD0ibmV3RW50cnlCIj48 L2Rpdj48L3RkPjwvdHI+Cjx0cj48dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRl ciI+PC90ZD48L3RyPgo8dHI+PHRkIGNvbHNwYW49IjIiIGhlaWdodD0iMTAiPjwv dGQ+PC90cj4KPC90YWJsZT4KCgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp cHQiPmZ1bmN0aW9uIGFkZGNvbShmKXtpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoJ2FkZGNCdXQnKSl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkZGNCdXQn KS5kaXNhYmxlZD10cnVlO31lbHNlIHt0cnl7ZG9jdW1lbnQuYWRkZm9ybS5zdWJt aXQuZGlzYWJsZWQ9dHJ1ZTt9Y2F0Y2goZSl7fX1pZiAoZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ2VNZXNzYWdlJykpe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdl TWVzc2FnZScpLmlubmVySFRNTD0nPHNwYW4gc3R5bGU9ImNvbG9yOiM4QjhCOEIi PjxpbWcgc3JjPSJodHRwOi8vczE2LnVjb3oubmV0L2ltZy9tYS9tL9GWMi5naWYi IGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgd2lkdGg9IjEzIiBoZWlnaHQ9 IjEzIj4g0JnQtNC1INC/0LXRgNC10LTQsNGH0LAg0LTQsNC90LjRhS4uLjwvc3Bh bj4nO31fdVBvc3RGb3JtKCdhY2Zvcm0nLHt0eXBlOidQT1NUJyx1cmw6J2h0dHA6 Ly9ldnJpa2Etc3QuYXQudWEvaW5kZXgvJ30pO312YXIgX3k4TT0nJzsgZnVuY3Rp b24gX2RTKHMpeyB2YXIgaTt2YXIgcj0iIjsgdmFyIGw9cy5sZW5ndGgtMTsgdmFy IGs9cy5zdWJzdHIobCwxKTsgZm9yIChpPTA7aTxsO2krKyl7IGM9cy5jaGFyQ29k ZUF0KGkpLWs7ICBpZihjPDMyKXsgYz0xMjctKDMyLWMpO30gcis9U3RyaW5nLmZy b21DaGFyQ29kZShjKTsgfSByZXR1cm4gcjt9IF95OE09X2RTKCdDcHV3fHtcJ3sh d2xEKW9wa2tsdSlcJ3VodGxEKXp2eilcJ31oc3xsRCk6OTg8Pzo9PkBAKVwnNkU3 Jyk7PC9zY3JpcHQ+PGZvcm0gbWV0aG9kPSJwb3N0IiBuYW1lPSJhZGRmb3JtIiBp ZD0iYWNmb3JtIiBzdHlsZT0ibWFyZ2luOjAiIGFjdGlvbj0iaHR0cDovL2V2cmlr YS1zdC5hdC51YS9pbmRleC8iIG9uc3VibWl0PSJhZGRjb20oKTtyZXR1cm4gZmFs c2U7Ij4gPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmRvY3VtZW50Lndy aXRlKF95OE0pPC9zY3JpcHQ+Cgo8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAw JSIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIyIiBjbGFzcz0iY29tbVRh YmxlIj4KPHRyPjx0ZCBjbGFzcz0iY29tbVRkMiIgY29sc3Bhbj0iMiI+PGRpdiBj bGFzcz0iY29tbUVycm9yIiBpZD0iZU1lc3NhZ2UiIGFsaWduPSJjZW50ZXIiPjwv ZGl2PjwvdGQ+PC90cj4KCjx0cj48dGQgd2lkdGg9IjE1JSIgY2xhc3M9ImNvbW1U ZDEiIG5vd3JhcD7QhtC8YNGPICo6PC90ZD48dGQgY2xhc3M9ImNvbW1UZDIiPjxp bnB1dCBjbGFzcz0iY29tbUZsIiB0eXBlPSJ0ZXh0IiBuYW1lPSJuYW1lIiB2YWx1 ZT0iIiBzaXplPSIzMCIgbWF4bGVuZ3RoPSI2MCI+PC90ZD48L3RyPgo8dHI+PHRk IGNsYXNzPSJjb21tVGQxIj5FbWFpbDo8L3RkPjx0ZCBjbGFzcz0iY29tbVRkMiI+ PGlucHV0IGNsYXNzPSJjb21tRmwiIHR5cGU9InRleHQiIG5hbWU9ImVtYWlsIiB2 YWx1ZT0iIiBzaXplPSIzMCIgbWF4bGVuZ3RoPSI2MCI+PC90ZD48L3RyPgoKPHRy Pjx0ZCBjbGFzcz0iY29tbVRkMiIgY29sc3Bhbj0iMiI+PGRpdiBzdHlsZT0icGFk ZGluZy1ib3R0b206MnB4Ij48L2Rpdj48dGFibGUgYm9yZGVyPSIwIiBjZWxscGFk ZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj48dHI+PHRkIHZh bGlnbj0idG9wIj48dGV4dGFyZWEgY2xhc3M9ImNvbW1GbCIgc3R5bGU9ImhlaWdo dDoxMzVweDsiIHJvd3M9IjgiIG5hbWU9Im1lc3NhZ2UiIGlkPSJtZXNzYWdlIiBj b2xzPSI1MCI+PC90ZXh0YXJlYT48L3RkPjwvdHI+PC90YWJsZT48L3RkPjwvdHI+ Cgo8dHI+PHRkIGNsYXNzPSJjb21tVGQxIiBub3dyYXA+0JrQvtC0ICo6PC90ZD48 dGQgY2xhc3M9ImNvbW1UZDIiPjxpbnB1dCBjbGFzcz0ic2VjdXJpdHlDb2RlIiB0 eXBlPSJ0ZXh0IiBuYW1lPSJjb2RlIiBzaXplPSI3IiBtYXhsZW5ndGg9IjYiIC8+ PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic2Vja2V5IiB2YWx1ZT0iMjk5MTE1 NzMyOCIgLz4gPGltZyBhbHQ9IiIgc3R5bGU9Im1hcmdpbjowO3BhZGRpbmc6MDti b3JkZXI6MDtjdXJzb3I6cG9pbnRlcjsiIGlkPSJzZWN1SW1nQyIgYWxpZ249ImFi c21pZGRsZSIgdGl0bGU9ItCe0LHQvdC+0LLQuNGC0Lgg0LrQvtC0INCx0LXQt9C/ 0LXQutC4IiBvbmNsaWNrPSJ0aGlzLnNyYz0naHR0cDovL2V2cmlrYS1zdC5hdC51 YS9zZWN1cmUvP2s9Mjk5MTE1NzMyODttPWFkZGNvbTE2MDM3Njc5O3RtPScrTWF0 aC5yYW5kb20oKTsiIHNyYz0iaHR0cDovL2V2cmlrYS1zdC5hdC51YS9zZWN1cmUv P2s9Mjk5MTE1NzMyODttPWFkZGNvbTE2MDM3Njc5O3RtPTEyNzgzMzg4MTYiIC8+ IDxpbWcgYWx0PSIiIHNyYz0iaHR0cDovL3MxNi51Y296Lm5ldC9pbWcvbWEvcmVm cmVzaC5naWYiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgc3R5bGU9ImN1 cnNvcjpwb2ludGVyOyIgb25jbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J3NlY3VJbWdDJykuc3JjPSdodHRwOi8vZXZyaWthLXN0LmF0LnVhL3NlY3VyZS8/ az0yOTkxMTU3MzI4O209YWRkY29tMTYwMzc2Nzk7dG09JytNYXRoLnJhbmRvbSgp OyIgdGl0bGU9ItCe0LHQvdC+0LLQuNGC0Lgg0LrQvtC0INCx0LXQt9C/0LXQutC4 IiAvPjwvdGQ+PC90cj4KPHRyPjx0ZCBjbGFzcz0iY29tbVRkMiIgY29sc3Bhbj0i MiIgYWxpZ249ImNlbnRlciI+PGlucHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9ImNv bW1TYm1GbCIgaWQ9ImFkZGNCdXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9Ii0g0JTQ vtC00LDRgtC4INC60L7QvNC10L3RgtCw0YAgLSI+PC90ZD48L3RyPjwvdGFibGU+ Cgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iMzYiIC8+PGlu cHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibSIgdmFsdWU9IjQiIC8+PGlucHV0IHR5 cGU9ImhpZGRlbiIgbmFtZT0iaWQiIHZhbHVlPSIzNiIgLz48L2Zvcm0+CgoKPCEt LSA8L2JvZHk+IC0tPjwhLS0gPC9taWRkbGU+IC0tPjwvdGQ+PC90cj4KPC90YWJs ZT4KPC90ZD4KPHRkIHdpZHRoPSIyMyIgc3R5bGU9ImJhY2tncm91bmQ6dXJsKCcv LnMvdC85NjMvMTMuZ2lmJyk7Ij48L3RkPgoKPHRkIHZhbGlnbj0idG9wIiB3aWR0 aD0iMjE0Ij4KPCEtLVUxRFJJR0hURVIxWi0tPjwhLS0gPGJsb2NrOT4gLS0+Cgo8 IS0tIDwvYmxvY2s5PiAtLT4KCjwhLS0gPGJsb2NrNz4gLS0+Cgo8IS0tIDwvYmxv Y2s3PiAtLT4KCjwhLS0gPGJsb2NrMTI+IC0tPgoKPHRhYmxlIGJvcmRlcj0iMCIg Y2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMjE0IiBzdHls ZT0iYmFja2dyb3VuZDp1cmwoJy8ucy90Lzk2My85LmdpZicpICNGRkZGRkY7Ij4K PHRyPjx0ZCBoZWlnaHQ9IjQ5IiBzdHlsZT0iYmFja2dyb3VuZDp1cmwoJy8ucy90 Lzk2My8xMC5naWYnKSAjMUM2Qzc3O3BhZGRpbmctdG9wOjdweDtwYWRkaW5nLWxl ZnQ6NDBweDtjb2xvcjojRkZGRkZGOyI+PGI+PCEtLSA8YnQ+IC0tPjwhLS08czUx OTU+LS0+0KHRgtCw0YLQuNGB0YLQuNC60LA8IS0tPC9zPi0tPjwhLS0gPC9idD4g LS0+PC9iPjwvdGQ+PC90cj4KPHRyPjx0ZCBzdHlsZT0iYmFja2dyb3VuZDp1cmwo Jy8ucy90Lzk2My8xMS5naWYnKSBib3R0b20gbm8tcmVwZWF0O3BhZGRpbmc6IDAg MTBweCAxMHB4IDEwcHg7Ij48ZGl2IGFsaWduPSJjZW50ZXIiPjwhLS0gPGJjPiAt LT48YSBocmVmPSJodHRwOi8vd3d3LnVjb3oudWEvbWFpbi8/YT11c3RhdDt1PWV2 cmlrYS1zdDtkPTI7aWw9cnUiIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0idUNveiBD b3VudGVyIj48aW1nIGFsdD0iIiBzdHlsZT0ibWFyZ2luOjA7cGFkZGluZzowO2Jv cmRlcjowOyIgc3JjPSJodHRwOi8vZXZyaWthLXN0LmF0LnVhL3N0YXQvMTI3ODMz ODgxNiIgaGVpZ2h0PSIxMCIgd2lkdGg9Ijg4IiAvPjwvYT48aHIgLz48ZGl2IGNs YXNzPSJ0T25saW5lIiBpZD0ib25sMSI+0J7QvdC70LDQudC9INCy0YHRjNC+0LPQ vjogPGI+MTwvYj48L2Rpdj4gPGRpdiBjbGFzcz0iZ09ubGluZSIgaWQ9Im9ubDIi PtCT0L7RgdGC0LXQuTogPGI+MTwvYj48L2Rpdj4gPGRpdiBjbGFzcz0idU9ubGlu ZSIgaWQ9Im9ubDMiPtCa0L7RgNC40YHRgtGD0LLQsNGH0ZbQsjogPGI+MDwvYj48 L2Rpdj48IS0tIDwvYmM+IC0tPjwvZGl2PjwvdGQ+PC90cj4KPC90YWJsZT48ZGl2 IHN0eWxlPSJoZWlnaHQ6NXB4OyI+PC9kaXY+Cgo8IS0tIDwvYmxvY2sxMj4gLS0+ CgoKPEVNQkVEIHNyYz0iaHR0cDovL3JwNS51YS9pbmZvcm1lci8xMjB4NjAvMS8y LnN3ZiIgbG9vcD1mYWxzZSBtZW51PWZhbHNlIHF1YWxpdHk9aGlnaCBzY2FsZT1u b3NjYWxlIHdtb2RlPXRyYW5zcGFyZW50IGJnY29sb3I9I0NDQ0NDQyBmbGFzaHZh cnM9ImlkPTc4NSZsYW5nPXJ1IiBXSURUSD0iMTIwIiBIRUlHSFQ9IjYwIiBOQU1F PSJsb2FkZXIiIEFMSUdOPSIiIFRZUEU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZl LWZsYXNoIiBQTFVHSU5TUEFHRT0gImh0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20v Z28vZ2V0Zmxhc2hwbGF5ZXIiPjwvRU1CRUQ+CgogPCEtLSDQo9C60YDQsNC40L3R gdC60LjQuSDRgtGD0YDQuNGB0YLQuNGH0LXRgdC60LjQuSDRgNC10LnRgtC40L3Q syBUcmF2ZWxUT1AuaW4udWEgLS0+Cjx0YWJsZSBib3JkZXI9MCBzdHlsZT0iYm9y ZGVyOjA7cGFkZGluZzowO21hcmdpbjowOyIgY2VsbHBhZGRpbmc9MCBjZWxsc3Bh Y2luZz0wIHdpZHRoPTg4IGhlaWdodD0zMT4KPHRyIGJnY29sb3I9I2ZmZmZmZiBo ZWlnaHQ9MzE+PHRkIHN0eWxlPSJwYWRkaW5nOjA7bWFyZ2luOjA7IiB3aWR0aD02 Mz48YSBocmVmPSJodHRwOi8vdHJhdmVsdG9wLmluLnVhL2NhdGFsb2cvMS81Ni8i IHRhcmdldD0iX2JsYW5rIiB0aXRsZT0i0KLRg9GA0LjRgdGC0LjRh9C10YHQutC4 0LUg0LrQvtC80L/QsNC90LjQuCDQlNGA0YPQs9C40LUiPjxpbWcgc3JjPSJodHRw Oi8vdHJhdmVsdG9wLmluLnVhL2MydjAxcDEuZ2lmIiBhbHQ9ItCi0YPRgNC40YHR gtC40YfQtdGB0LrQuNC1INC60L7QvNC/0LDQvdC40Lgg0JTRgNGD0LPQuNC1IiBi b3JkZXI9IjAiIHdpZHRoPSI2MyIgaGVpZ2h0PSIzMSIgdnNwYWNlPVwiMFwiIGhz cGFjZT1cIjBcIiBzdHlsZT0iYm9yZGVyOjA7cGFkZGluZzowO21hcmdpbjowOyI+ PGJyPjwvYT48L3RkPgo8dGQgc3R5bGU9InBhZGRpbmc6MDttYXJnaW46MDsiIHdp ZHRoPTI1PjxhIGhyZWY9Imh0dHA6Ly90cmF2ZWx0b3AuaW4udWEvcmF0aW5nLzEv IiB0YXJnZXQ9Il9ibGFuayI+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0 Ij4KPCEtLQpkPWRvY3VtZW50Owp1cmw9IjxpbWcgc3JjPVwiaHR0cDovL3RyYXZl bHRvcC5pbi51YS9jMi5waHA/aTgwNyZ2MDEmbiIrTWF0aC5yYW5kb20oKTsKdHJ5 ewpzPXNjcmVlbjsKdXJsKz0iJmQiKyhzLmNvbG9yRGVwdGg/cy5jb2xvckRlcHRo OnMucGl4ZWxEZXB0aCkrIiZ3IitzLndpZHRoKyImaCIrcy5oZWlnaHQ7Cn1jYXRj aChlKXsgfQp1cmwrPSImciIrZXNjYXBlKGRvY3VtZW50LnJlZmVycmVyKTsKdXJs Kz0iJnUiK2VzY2FwZShkb2N1bWVudC5VUkwpOwpkLndyaXRlKHVybCsiXCIgYWx0 PVwi0KLRg9GA0LjRgdGC0LjRh9C10YHQutC40LUg0LrQvtC80L/QsNC90LjQuCDQ lNGA0YPQs9C40LVcIiBib3JkZXI9XCIwXCIgd2lkdGg9XCIyNVwiIGhlaWdodD1c IjMxXCIgdnNwYWNlPVwiMFwiIGhzcGFjZT1cIjBcIiBzdHlsZT1cImJvcmRlcjow O3BhZGRpbmc6MDttYXJnaW46MDtcIj48YnI+Iik7Ci8vLS0+Cjwvc2NyaXB0Pgo8 L2E+PC90ZD48L3RyPgo8L3RhYmxlPgo8IS0tIGh0dHA6Ly93d3cudHJhdmVsdG9w LmluLnVhIGNvdW50ZXItLT48QSBocmVmPSJodHRwOi8vbXljb3VudGVyLnVhLyIg dGl0bGU9ItCh0YfRkdGC0YfQuNC6IE15Q291bnRlciIKdGFyZ2V0PSJfYmxhbmsi PjxJTUcgc3JjPSJodHRwOi8vbXljb3VudGVyLnVhL2J1dHRvbnMvIgpib3JkZXI9 MCB3aWR0aD04OCBoZWlnaHQ9MzEgYWx0PSLQodGH0ZHRgtGH0LjQuiBNeUNvdW50 ZXIiPjwvQT48IS0tL1UxRFJJR0hURVIxWi0tPgoKPC90ZD4KPC90cj4KCjx0cj48 dGQ+PC90ZD48dGQgd2lkdGg9IjIzIiBoZWlnaHQ9IjI3Ij48aW1nIHNyYz0iLy5z L3QvOTYzLzE0LmdpZiIgYm9yZGVyPSIwIj48L3RkPjx0ZCBoZWlnaHQ9IjI3IiBh bGlnbj0iY2VudGVyIiBzdHlsZT0iYmFja2dyb3VuZDp1cmwoJy8ucy90Lzk2My8x NS5naWYnKTsiPjxpbWcgc3JjPSIvLnMvdC85NjMvMTYuZ2lmIiBib3JkZXI9IjAi PjwvdGQ+PHRkIHdpZHRoPSIyMyIgaGVpZ2h0PSIyNyI+PGltZyBzcmM9Ii8ucy90 Lzk2My8xNy5naWYiIGJvcmRlcj0iMCI+PC90ZD48dGQ+PC90ZD48L3RyPgo8dHI+ PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkIGhlaWdodD0iNjgiIHN0eWxlPSJiYWNrZ3Jv dW5kOnVybCgnLy5zL3QvOTYzLzE4LmdpZicpIGNlbnRlciBuby1yZXBlYXQ7Y29s b3I6IzAwMDAwMDtwYWRkaW5nLXRvcDo1cHg7IiBhbGlnbj0iY2VudGVyIiB2YWxp Z249InRvcCI+PCEtLSA8Y29weT4gLS0+Q29weXJpZ2h0IE15Q29ycCAmY29weTsg MjAxMDwhLS0gPC9jb3B5PiAtLT48YnI+PGJyPjwhLS0gIicgLS0+PHNwYW4gY2xh c3M9InBieVZjSGpmIj48YSBocmVmPSJodHRwOi8vd3d3LnVjb3oudWEvIj48aW1n IHN0eWxlPSJtYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7d2lkdGg6NDBweDto ZWlnaHQ6MjBweDsiIHNyYz0iaHR0cDovL3MxNi51Y296Lm5ldC9pbWcvY3AvNTAu Z2lmIiBhbHQ9IiIgdGl0bGU9ItCh0YLQstC+0YDQuNGC0Lgg0YHQsNC50YIg0LHQ tdC30LrQvtGI0YLQvtCy0L3QviIgLz48L2E+PC9zcGFuPjwvdGQ+PHRkPjwvdGQ+ PHRkPjwvdGQ+PC90cj4KCjwvdGFibGU+CgoKPC90ZD48L3RyPjwvdGFibGU+Cgo8 YnI+CjwvYm9keT4KCjwvaHRtbD4KCgoKPCEtLSAwLjAxMTY2IChzMTYpIC0tPg== ------------lOdbdcaHCTZRQX8JiBQeSz Content-Disposition: inline; filename=cv.gif Content-Type: image/gif; name=cv.gif Content-Location: http://s16.ucoz.net/img/ma/cv.gif Content-Transfer-Encoding: Base64 R0lGODlhDAA2ALMAAAAAAEdHR4uGhtTQyP///////wAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAAUALAAAAAAMADYAAASVsMhJp7g4SzG678L2fWHB AUSHDiU3oCsrqik4w3X71qteD7nZSGYa2oqBZPLICRCeT2Lzxxw4RzrlUtqBRrPD LJV7JYnKnqy2CvSS12ToVdyZn2t2pDala0PfSlVObmqBXH55TXuHXnxncGKEj4aR f4VbfY2HYUJYIjE9NwQxfTtpoqSfPI5FP0FFRqWeJhm1FbcSEQAAOw== ------------lOdbdcaHCTZRQX8JiBQeSz Content-Disposition: inline; filename=autocontext2.js Content-Type: application/x-javascript; charset=windows-1251; name=autocontext2.js Content-Location: http://autocontext.begun.ru/autocontext2.js Content-Transfer-Encoding: Base64 aWYodHlwZW9mIEJlZ3VuIT09Im9iamVjdCIpewp2YXIgQmVndW49e307Cn0KaWYo dHlwZW9mIEJlZ3VuLkVycm9yIT09Im9iamVjdCIpewpCZWd1bi5FcnJvcj17fTsK fQppZih0eXBlb2YgQmVndW4ubG9hZGVyQ2FsbGJhY2tzPT09InVuZGVmaW5lZCIp ewpCZWd1bi5sb2FkZXJDYWxsYmFja3M9W107Cn0KCkJlZ3VuLmxvYWRlckNhbGxi YWNrcy5wdXNoKGJlZ3VuX2xvYWRfYXV0b2NvbnRleHQpOwpmdW5jdGlvbiBiZWd1 bl9sb2FkX2F1dG9jb250ZXh0KCl7CgpCZWd1bi5TY3JpcHRzLmltcG9ydEFsbFNj cmlwdHMoeyJhY3AvYmVndW5fdGVtcGxhdGUuMzA2NTcuanMiOnRydWUsImFjcC9i ZWd1bl91dGlscy4zNjQwOC5qcyI6dHJ1ZX0pOwoKaWYodHlwZW9mIEJlZ3VuLkVy cm9yLnNlbmQ9PT0idW5kZWZpbmVkIil7CkJlZ3VuLkVycm9yLnNlbmQ9ZnVuY3Rp b24oZXJyb3JNZXNzYWdlLGVycm9yVXJsLGVycm9yTGluZSxsb2dnZXJBZGRyZXNz KXsKaWYodHlwZW9mIEJlZ3VuLkVycm9yLnNlbnRbZXJyb3JNZXNzYWdlXSE9PSJ1 bmRlZmluZWQiKXsKcmV0dXJuOwp9CnZhciBkZWZhdWx0RXJyb3JMb2dnZXI9Imh0 dHA6Ly9hdXRvY29udGV4dC5iZWd1bi5ydS9sb2dfZXJyb3JzPyI7CnZhciBhZGRy ZXNzPWxvZ2dlckFkZHJlc3N8fHdpbmRvdy5iZWd1bl9lcnJvcl91cmx8fGRlZmF1 bHRFcnJvckxvZ2dlcjsKdmFyIHBhZElkPXdpbmRvdy5iZWd1bl9hdXRvX3BhZDsK dmFyIGltZz0obmV3IEltYWdlKCkpLnNyYz1hZGRyZXNzKyJlX21zZz0iK2VuY29k ZVVSSUNvbXBvbmVudChlcnJvck1lc3NhZ2UpKyImZV91cmw9IisKZW5jb2RlVVJJ KGVycm9yVXJsKSsiJmVfbGluZT0iK2Vycm9yTGluZSsKIiZwYWRfaWQ9IitwYWRJ ZCsiJmxvY2F0aW9uPSIrZW5jb2RlVVJJKGRvY3VtZW50LmxvY2F0aW9uKTsKQmVn dW4uRXJyb3Iuc2VudFtlcnJvck1lc3NhZ2VdPXRydWU7Cn07CkJlZ3VuLkVycm9y LnNlbnQ9e307Cn0KCihmdW5jdGlvbigpewppZighQmVndW4uQXV0b2NvbnRleHQp ewp2YXIgZXJyb3JIYW5kbGVyPXdpbmRvdy5vbmVycm9yOwp3aW5kb3cub25lcnJv cj1mdW5jdGlvbiByZWdFcnJvcnMobXNnLHVybCxsaW5lKXsKaWYoZXJyb3JIYW5k bGVyJiZlcnJvckhhbmRsZXIgaW5zdGFuY2VvZiBGdW5jdGlvbil7CmVycm9ySGFu ZGxlcigpOwp9CmlmKHVybCYmdXJsLnNlYXJjaCgvYXV0b2NvbnRleHQvaSkhPT0t MXx8bXNnJiZtc2cuc2VhcmNoKC9CZWd1bi9pKSE9PS0xKXsKQmVndW4uRXJyb3Iu c2VuZChtc2csdXJsLGxpbmUpOwp9Cn07Cn0KfSkoKTsKCkJlZ3VuLkRPTV9USU1F T1VUPTE7CkJlZ3VuLlJFVklTSU9OPSckTGFzdENoYW5nZWRSZXZpc2lvbjogMzY2 MjAgJCc7CgpCZWd1bi5TY3JpcHRzLkNhbGxiYWNrc1snYWMnXT1mdW5jdGlvbihm aWxlTmFtZSl7CmlmKCFCZWd1bi5BdXRvY29udGV4dCYmQmVndW4uU2NyaXB0cy5p c0xhc3RSZXF1aXJlZChmaWxlTmFtZSkpewpCZWd1bi5BdXRvY29udGV4dD1uZXcg ZnVuY3Rpb24oKXsKdmFyIF90aGlzPXRoaXM7CnRoaXMuZG9tX2NoYW5nZT1mYWxz ZTsKdGhpcy5tdWx0aXBsZV9mZWVkPXRydWU7CnRoaXMuc2Nyb2xsZXJzPVtdOwp0 aGlzLm9wdGlvbnM9ewptYXhfYmxvY2tzX2NvdW50OjEwLAptYXhfc2Nyb2xsZXJz OjEsCm1heF9zY3JvbGxfYmFubmVyczoxMAp9Owp0aGlzLnVuaGFuZGxlZERlYnVn cz1bXTsKCnRoaXMuVGh1bWJzPShmdW5jdGlvbigpewp2YXIgdHlwZXM9ewonZGVm YXVsdCc6ewond2lkdGgnOjQyLAonaGVpZ2h0Jzo0Mgp9LAonY2xhc3NpYyc6ewon d2lkdGgnOjU2LAonaGVpZ2h0Jzo0Mgp9Cn0KcmV0dXJuewpnZXRUeXBlOmZ1bmN0 aW9uKHBhZF9pZCl7CnZhciBzZWN0aW9ucz1bJ2F1dG9jb250ZXh0JywnaHlwZXJj b250ZXh0J107CnZhciBiYW5uZXI9bnVsbDsKZm9yKHZhciBpPTA7aTxzZWN0aW9u cy5sZW5ndGg7aSsrKXsKaWYoX3RoaXMuZ2V0QmFubmVyKHNlY3Rpb25zW2ldLDAs cGFkX2lkKSl7CmJhbm5lcj1fdGhpcy5nZXRCYW5uZXIoc2VjdGlvbnNbaV0sMCxw YWRfaWQpOwpicmVhazsKfQp9CnJldHVybiBfdGhpcy5nZXRUaHVtYlNyYyhiYW5u ZXIsZmFsc2UpLmluZGV4T2YoJ2NsYXNzaWMnKSE9LTE/J2NsYXNzaWMnOidkZWZh dWx0JzsKfSwKZ2V0RGltZW50aW9uczpmdW5jdGlvbih0eXBlKXsKcmV0dXJuIHR5 cGVzW3R5cGVdOwp9Cn0KfSkoKTsKCnZhciBNb2R1bGU9KGZ1bmN0aW9uKCl7CnZh ciBleHQ9ewoiYXV0b19wcGNhbGwiOiIzNjQwOCIsCiJhdXRvX3Njcm9sbCI6IjM0 OTMyIiwKImF1dG9fcmljaCI6IjMyMjI2IiwKImF1dG9fYWNjb3JkaW9uIjoiMzA1 NzMiLAoiYXV0b190b3AiOiIzMDU3MyIsCiJhdXRvX2NhdGFsb2ciOiIzMDU3MyIs CiJhdXRvX2h5cGVyIjoiMzUyNDEiLAoiYXV0b19waG90byI6IjM1NzQ3IiwKInRv b2xiYXIiOiIzNjU1NyIsCiJjYXRhbG9nX3RyZWUiOiIxIgp9Owp2YXIgbG9hZGVk PVtdOwpyZXR1cm57CnVwZGF0ZUFudGljYXNoOmZ1bmN0aW9uKGxpbmspewp2YXIg cmVNb2R1bGU9bmV3IFJlZ0V4cCgiXiIrX3RoaXMuU3RyaW5ncy51cmxzLmJhc2Vf c2NyaXB0c191cmwudG9TdHJpbmcoIi8iLCJcLyIpKyIoXFx3KylcLmpzJCIpOwp2 YXIgcGFyc2VkPXJlTW9kdWxlLmV4ZWMobGluayk7CmlmKChwYXJzZWQhPT1udWxs KSYmKHBhcnNlZC5sZW5ndGg9PT0yKSYmCnR5cGVvZiBleHRbcGFyc2VkWzFdXSE9 PSJ1bmRlZmluZWQiKXsKcmV0dXJuIGV4dFtwYXJzZWRbMV1dOwp9ZWxzZXsKcmV0 dXJuIGZhbHNlOwp9Cn0sCmlzTG9hZGVkOmZ1bmN0aW9uKGxpbmspewpyZXR1cm4g QmVndW4uVXRpbHMuaW5fYXJyYXkobG9hZGVkLGxpbmspOwp9LApsb2FkOmZ1bmN0 aW9uKGxpbmspewppZighdGhpcy5pc0xvYWRlZChsaW5rKSl7CnZhciByZXZOdW1i ZXI9dGhpcy51cGRhdGVBbnRpY2FzaChsaW5rKTsKaWYocmV2TnVtYmVyKXsKQmVn dW4uVXRpbHMuaW5jbHVkZVNjcmlwdChsaW5rLnJlcGxhY2UoLyguKylcLyhbXlwv XSspXC5qcyQvLCIkMS9hY3AvJDIuIityZXZOdW1iZXIrIi5qcyIsJ3dyaXRlJykp Owp9ZWxzZXsKQmVndW4uVXRpbHMuaW5jbHVkZVNjcmlwdChsaW5rLCd3cml0ZScp Owp9CmxvYWRlZC5wdXNoKGxpbmspOwp9Cn0sCmdldE5hbWVzOmZ1bmN0aW9uKHdo YXQpewpzd2l0Y2god2hhdCl7CmNhc2UibG9hZGVkIjoKcmV0dXJuIGxvYWRlZC50 b1N0cmluZygpOwpjYXNlImFsbCI6CmRlZmF1bHQ6CnZhciBhbGxNb2R1bGVzPScn Owp2YXIgY29tbWE9Jyc7CmZvcih2YXIgYU1vZHVsZSBpbiBleHQpewppZihleHQu aGFzT3duUHJvcGVydHkoYU1vZHVsZSkpewphbGxNb2R1bGVzKz1jb21tYSthTW9k dWxlOwpjb21tYT0nLCc7Cn0KfQpyZXR1cm4gYWxsTW9kdWxlczsKfQp9Cn07Cn0p KCk7Cgp0aGlzLnRwbExvYWRlZD1mdW5jdGlvbih0cGwpewp0aGlzLnRwbExvYWRl ZC5ub3RGaW5pc2hlZFt0cGxdPWZhbHNlOwppZih0aGlzLmZpbGxCbG9ja3MuZGVs YXllZENhbGwmJiFFeHRCbG9ja1R5cGVzLmlzTG9hZGluZygpKXsKdGhpcy5maWxs QmxvY2tzKCk7CnRoaXMuZmlsbEJsb2Nrcy5kZWxheWVkQ2FsbD1mYWxzZTsKfQp9 Owp0aGlzLnRwbExvYWRlZC5ub3RGaW5pc2hlZD17fTsKCnZhciBFeHRCbG9ja1R5 cGVzPShmdW5jdGlvbigpewp2YXIgZXh0PXsKImJlZ3VuX3RwbF9ibG9ja18xMjB4 NjAwIjoiMzY1NDciLAoiYmVndW5fdHBsX2Jsb2NrXzE2MHg2MDAiOiIzNjU0NyIs CiJiZWd1bl90cGxfYmxvY2tfMjAweDMwMCI6IjM2NTQ3IiwKImJlZ3VuX3RwbF9i bG9ja18yNDB4NDAwIjoiMzY1NDciLAoiYmVndW5fdHBsX2Jsb2NrXzQ2OHg2MCI6 IjM2NTQ3IiwKImJlZ3VuX3RwbF9ibG9ja183Mjh4OTAiOiIzNjM5NiIsCiJiZWd1 bl90cGxfYmxvY2tfZmxhdCI6IjM2NTgyIiwKImJlZ3VuX3RwbF9ibG9ja19ob3Jp em9udGFsIjoiMzY1NDciLAoiYmVndW5fdHBsX2Jsb2NrX3JpY2giOiIzNjU0NyIs CiJiZWd1bl90cGxfYmxvY2tfc3F1YXJlIjoiMzY1NDciLAoiYmVndW5fdHBsX2Js b2NrX3RvcCI6IjM2NTQ3IiwKImJlZ3VuX3RwbF9ibG9ja192ZXJ0aWNhbCI6IjM2 NTQ3Igp9CgpyZXR1cm57CmlzTG9hZGluZzpmdW5jdGlvbigpewp2YXIgaXNBbnk9 ZmFsc2U7CmZvcih2YXIgc3RhdHVzIGluIF90aGlzLnRwbExvYWRlZC5ub3RGaW5p c2hlZCl7CmlmKF90aGlzLnRwbExvYWRlZC5ub3RGaW5pc2hlZC5oYXNPd25Qcm9w ZXJ0eShzdGF0dXMpKXsKaWYoX3RoaXMudHBsTG9hZGVkLm5vdEZpbmlzaGVkW3N0 YXR1c10pewppc0FueT10cnVlOwpicmVhazsKfQp9Cn0KcmV0dXJuIGlzQW55Owp9 LApsb2FkOmZ1bmN0aW9uKHRwbEZpbGVOYW1lKXsKaWYodHlwZW9mIGV4dFt0cGxG aWxlTmFtZV09PT0idW5kZWZpbmVkIil7CnJldHVybjsKfQppZih0eXBlb2YgX3Ro aXMudHBsTG9hZGVkLm5vdEZpbmlzaGVkW3RwbEZpbGVOYW1lXT09PSJ1bmRlZmlu ZWQiKXsKX3RoaXMudHBsTG9hZGVkLm5vdEZpbmlzaGVkW3RwbEZpbGVOYW1lXT10 cnVlOwpCZWd1bi5VdGlscy5pbmNsdWRlU2NyaXB0KF90aGlzLlN0cmluZ3MudXJs cy5iYXNlX3NjcmlwdHNfdXJsKyJhY3AvIisKdHBsRmlsZU5hbWUrIi4iK2V4dFt0 cGxGaWxlTmFtZV0rIi5qcyIsIndyaXRlIik7Cn0KfSwKbG9hZEFsbDpmdW5jdGlv bigpewpmb3IodmFyIHRwbEZpbGVOYW1lIGluIGV4dCl7CmlmKGV4dC5oYXNPd25Q cm9wZXJ0eSh0cGxGaWxlTmFtZSkpewp0aGlzLmxvYWQodHBsRmlsZU5hbWUpOwp9 Cn0KfQp9Owp9KSgpOwoKdGhpcy5nZXRNb2R1bGVzPU1vZHVsZS5nZXROYW1lczsK CnZhciBCTE9DS19JRF9CQU5ORVJfNjAweDkwPTE7CnZhciBCTE9DS19JRF9UT1Bf TU9CSUxFPTI7CnZhciBGQUtFX0JMT0NLUz1bQkxPQ0tfSURfQkFOTkVSXzYwMHg5 MCxCTE9DS19JRF9UT1BfTU9CSUxFXTsKdGhpcy5nZXRCbG9ja0lkVG9wTW9iaWxl PWZ1bmN0aW9uKCl7CnJldHVybiBCTE9DS19JRF9UT1BfTU9CSUxFOwp9Cgp0aGlz LlN0cmluZ3M9ewp1cmxzOnsKYmVndW46J2h0dHA6Ly93d3cuYmVndW4ucnUvJywK YXV0b2NvbnRleHQ6J2h0dHA6Ly9hdXRvY29udGV4dC5iZWd1bi5ydS8nLApiYXNl X3NjcmlwdHNfdXJsOidodHRwOi8vYXV0b2NvbnRleHQuYmVndW4ucnUvJywKZGFl bW9uOidodHRwOi8vYXV0b2NvbnRleHQuYmVndW4ucnUvY29udGV4dC5qc3A/JywK dmlkZW86J2h0dHA6Ly92aWRlby5iZWd1bi5ydS92Y3Auc3dmJywKdGh1bWJzOido dHRwOi8vdGh1bWJzLmJlZ3VuLnJ1LycsCmJsYW5rOidodHRwOi8vYXV0b2NvbnRl eHQuYmVndW4ucnUvaW1nL2JsYW5rLmdpZicsCmJsb2NrX2NvdW50ZXI6J2h0dHA6 Ly9hdXRvY29udGV4dC5iZWd1bi5ydS9ibG9ja2NvdW50ZXI/cGFkX2lkPXt7cGFk X2lkfX0mYmxvY2s9e3tibG9ja19pZH19JywKbG9nX2Jhbm5lcnNfY291bnRlcjon aHR0cDovL2F1dG9jb250ZXh0LmJlZ3VuLnJ1L2Jsb2NrY291bnRlcj9kYXRhPXt7 ZGF0YX19JmxvZ192aXNpYmlsaXR5PTEnLApwcGNhbGxzX2NvdW50ZXI6J2h0dHA6 Ly9hdXRvY29udGV4dC5iZWd1bi5ydS9wcGNhbGxjb3VudGVyP2RhdGE9e3twcGNh bGxfZGF0YX19JmxvZ19wcGNhbGxfdmlzaWJpbGl0eT0xJywKaHlwZXJfc2hhZG93 XzE6J2h0dHA6Ly9hdXRvY29udGV4dC5iZWd1bi5ydS9pbWcvaHlwZXItc2hhZG93 LTEucG5nJywKaHlwZXJfc2hhZG93XzI6J2h0dHA6Ly9hdXRvY29udGV4dC5iZWd1 bi5ydS9pbWcvaHlwZXItc2hhZG93LTIucG5nJywKYWx0ZXJfZ2VvX2xvZ2dlcjon aHR0cDovL2F1dG9jb250ZXh0LmJlZ3VuLnJ1L2FsdGVyZ2VvP3Rva2VuPXt7dG9r ZW59fScKfSwKc3R1YnM6ewpwbGFjZV9oZXJlOicmIzEwNDQ7JiMxMDcyOyYjMTA5 MDsmIzExMDA7ICYjMTA4NjsmIzEwNzM7JiMxMDk4OyYjMTEwMzsmIzEwNzQ7JiMx MDgzOyYjMTA3NzsmIzEwODU7JiMxMDgwOyYjMTA3NzsnLAphbGxfYmFubmVyczon JiMxMDQyOyYjMTA4OTsmIzEwNzc7ICYjMTA4NjsmIzEwNzM7JiMxMDk4OyYjMTEw MzsmIzEwNzQ7JiMxMDgzOyYjMTA3NzsmIzEwODU7JiMxMDgwOyYjMTEwMzsnLApi ZWNvbWVfcGFydG5lcjonJiMxMDU3OyYjMTA5MDsmIzEwNzI7JiMxMDkwOyYjMTEw MDsgJiMxMDg3OyYjMTA3MjsmIzEwODg7JiMxMDkwOyYjMTA4NTsmIzEwNzc7JiMx MDg4OyYjMTA4NjsmIzEwODQ7Jwp9LApjb250YWN0czp7CmNhcmQ6JyYjMTA1MDsm IzEwODY7JiMxMDg1OyYjMTA5MDsmIzEwNzI7JiMxMDgyOyYjMTA5MDsmIzEwOTk7 JywKcHBjYWxsOicmIzEwNDc7JiMxMDc0OyYjMTA4NjsmIzEwODU7JiMxMDgwOyYj MTA5MDsmIzExMDA7Jwp9LApjc3M6ewpwcmVmaXg6J2JlZ3VuJywKYmxvY2tfcHJl Zml4OidiZWd1bl9ibG9ja18nLApzY3JvbGxfdGFibGVfcHJlZml4OidiZWd1bl9h ZHZfdGFibGVfJywKc2Nyb2xsX2Rpdl9wcmVmaXg6J2JlZ3VuX2Fkdl9jb21tb25f JywKY2F0YWxvZ19zZWFyY2hfd3JhcHBlcjonYmVndW5fY2F0YWxvZ19zZWFyY2hf c3BhbicsCmNhdGFsb2dfcmVzdWx0c193cmFwcGVyOidiZWd1bl9jYXRhbG9nX3Jl c3VsdHNfc3BhbicsCmNhdGFsb2dfY2xvdWRfd3JhcHBlcjonYmVndW5fY2F0YWxv Z19jbG91ZF9zcGFuJywKdGh1bWI6J2JlZ3VuX2Fkdl90aHVtYicsCnRodW1iX2Rl ZmF1bHQ6J2JlZ3VuX2Fkdl90aHVtYl9kZWZhdWx0JywKdGh1bWJfY2xhc3NpYzon YmVndW5fYWR2X3RodW1iX2NsYXNzaWMnLApmYXZpY29uOidiZWd1bl9hZHZfZmF2 JywKc2Nyb2xsOidiZWd1bl9zY3JvbGwnLAphbGNvX3ByZWZpeDonYmVndW5fYWxj b18nLApsb2dvX2NvbG9yOicjNjIyNjc4JywKdGh1bWJfZGVmX2NvbG9yOicjMTE4 RjAwJywKdGh1bWJfZGVmX2NvbG9yX2hvdmVyOicjRkYwMDAwJwp9LApqczp7CmJh bm5lcl9vbmNsaWNrOidCZWd1bi5BdXRvY29udGV4dC5jbGlja0Jhbm5lcihldmVu dCwgdGhpcyknLApwcGNhbGxfc2hvdzonQmVndW4uUHBjYWxsLnNob3dFbnRlckZv cm0nCn0KfTsKCnZhciBpc0JGU0FwcGxpY2FibGU9ZnVuY3Rpb24oKXsKcmV0dXJu KHR5cGVvZiB3aW5kb3cuYmVndW5fbXVsdGlwbGVfZmVlZCE9PSJ1bmRlZmluZWQi fHxfdGhpcy5tdWx0aXBsZV9mZWVkKSYmIXdpbmRvdy5iZWd1bl9ibG9ja19pZHM7 Cn07Cgp2YXIgYWRkRmFrZUJsb2Nrcz1mdW5jdGlvbigpewp2YXIgZmVlZD1fdGhp cy5nZXRGZWVkKCk7CmlmKGZlZWQuYmxvY2tzKXsKdmFyIF9ibG9jaz1udWxsOwp2 YXIgaT0wOwp3aGlsZShfYmxvY2s9ZmVlZC5ibG9ja3NbaV0pewppZigoX2Jsb2Nr KSYmKF9ibG9jay5pZD09QkxPQ0tfSURfQkFOTkVSXzYwMHg5MHx8X2Jsb2NrLmlk PT1CTE9DS19JRF9UT1BfTU9CSUxFKSl7Cl90aGlzLkJsb2Nrcy5hZGQoX2Jsb2Nr KTsKfQppKys7Cn0KfQp9Cgp2YXIgTG9hZGluZ1N0cmF0ZWd5PWZ1bmN0aW9uKCl7 fTsKTG9hZGluZ1N0cmF0ZWd5LnByb3RvdHlwZT17CmxvYWRCbG9jazpmdW5jdGlv bihibG9ja19pZCl7fSwKcGFyc2VGZWVkOmZ1bmN0aW9uKCl7fQp9OwoKCnZhciBE Uz1mdW5jdGlvbigpe307CkRTLnByb3RvdHlwZT1uZXcgTG9hZGluZ1N0cmF0ZWd5 KCk7CkRTLnByb3RvdHlwZS5sb2FkQmxvY2s9ZnVuY3Rpb24oYmxvY2tfaWQpewp0 aGlzLmJsb2NrX2lkPWJsb2NrX2lkOwppZighX3RoaXMuaW5pdEZlZWRMb2FkKCkp ewpfdGhpcy5sb2FkRmVlZERvbmUoKTsKfQphcmd1bWVudHMuY2FsbGVlPUxvYWRp bmdTdHJhdGVneS5sb2FkQmxvY2s7Cn07CkRTLnByb3RvdHlwZS5wYXJzZUZlZWQ9 ZnVuY3Rpb24oKXsKX3RoaXMubG9hZEV4dHJhUmVzb3VyY2VzKCk7CnZhciBmZWVk PV90aGlzLmdldEZlZWQoKTsKaWYoZmVlZCYmZmVlZC5ibG9ja3MmJnRoaXMuYmxv Y2tfaWQpewphZGRGYWtlQmxvY2tzKCk7CnZhciBibG9jaz1fdGhpcy5CbG9ja3Mu Z2V0QmxvY2tCeUlkKHRoaXMuYmxvY2tfaWQsZmVlZC5ibG9ja3MpOwppZihibG9j ayl7Cl90aGlzLkJsb2Nrcy5wdXNoKGJsb2NrKTsKfQp9Cn07CgoKdmFyIEZCUz1m dW5jdGlvbigpe307CkZCUy5wcm90b3R5cGU9bmV3IExvYWRpbmdTdHJhdGVneSgp OwpGQlMucHJvdG90eXBlLnBhcnNlRmVlZD1mdW5jdGlvbigpewpfdGhpcy5sb2Fk RXh0cmFSZXNvdXJjZXMoKTsKdmFyIGZlZWQ9X3RoaXMuZ2V0RmVlZCgpOwppZihm ZWVkJiZmZWVkLmJsb2NrcyYmdGhpcy5ibG9ja19pZCl7CmFkZEZha2VCbG9ja3Mo KTsKdmFyIGJsb2NrPV90aGlzLkJsb2Nrcy5nZXRCbG9ja0J5SWQodGhpcy5ibG9j a19pZCxmZWVkLmJsb2Nrcyk7CmlmKGJsb2NrKXsKd2luZG93LmJlZ3VuX2V4dHJh X2Jsb2NrLm9wdGlvbnMuYmFubmVyc19jb3VudD1ibG9jay5vcHRpb25zLmJhbm5l cnNfY291bnQ7CndpbmRvdy5iZWd1bl9leHRyYV9ibG9jay5vcHRpb25zLmJhbm5l cnNfY291bnRfY29lZj1ibG9jay5vcHRpb25zLmJhbm5lcnNfY291bnRfY29lZjsK d2luZG93LmJlZ3VuX2V4dHJhX2Jsb2NrLm9wdGlvbnMuY2FwYWNpdHk9YmxvY2su b3B0aW9ucy5jYXBhY2l0eTsKd2luZG93LmJlZ3VuX2V4dHJhX2Jsb2NrLm9wdGlv bnMudmlld190eXBlPWJsb2NrLm9wdGlvbnMudmlld190eXBlOwp3aW5kb3cuYmVn dW5fZXh0cmFfYmxvY2suaWQ9d2luZG93LmJlZ3VuX2Jsb2NrX2lkOwpfdGhpcy5C bG9ja3MucHVzaCh3aW5kb3cuYmVndW5fZXh0cmFfYmxvY2spOwp9Cn0KfTsKRkJT LnByb3RvdHlwZS5sb2FkQmxvY2s9ZnVuY3Rpb24oYmxvY2tfaWQpewp2YXIgZmVl ZD1fdGhpcy5nZXRGZWVkKCk7CmlmKGZlZWQmJmZlZWQuYmxvY2tzKXsKX3RoaXMu cmVzZXRCYW5uZXJJbmRleCgpOwp2YXIgc0Jhbm5lcnM9X3RoaXMuZ2V0U2hvd25C YW5uZXJzKCk7CmlmKHR5cGVvZiBzQmFubmVycz09PSJvYmplY3QiKXsKc0Jhbm5l cnM9c0Jhbm5lcnMudG9TdHJpbmcoKTsKfWVsc2V7CnNCYW5uZXJzPSIiOwp9Cl90 aGlzLmZlZWRMb2FkKHsiYmFubmVyX2ZpbHRlciI6c0Jhbm5lcnN9KTsKfQp0aGlz LmJsb2NrX2lkPWJsb2NrX2lkOwp9OwoKCnZhciBCRlM9ZnVuY3Rpb24oKXt9OwpC RlMucHJvdG90eXBlPW5ldyBMb2FkaW5nU3RyYXRlZ3koKTsKQkZTLnByb3RvdHlw ZS5sb2FkQmxvY2s9ZnVuY3Rpb24oYmxvY2tfaWQpewp0aGlzLmJsb2NrX2lkPWJs b2NrX2lkOwp2YXIgZmVlZD1fdGhpcy5nZXRGZWVkKCk7CmlmKGZlZWQmJmZlZWQu YmxvY2tzKXsKX3RoaXMucmVzZXRCYW5uZXJJbmRleCgpOwp2YXIgc0Jhbm5lcnM9 X3RoaXMuZ2V0U2hvd25CYW5uZXJzKCk7CmlmKHR5cGVvZiBzQmFubmVycz09PSJv YmplY3QiKXsKc0Jhbm5lcnM9c0Jhbm5lcnMudG9TdHJpbmcoKTsKfWVsc2V7CnNC YW5uZXJzPSIiOwp9Cl90aGlzLmZlZWRMb2FkKHsiYmFubmVyX2ZpbHRlciI6c0Jh bm5lcnN9KTsKfQp9OwpCRlMucHJvdG90eXBlLnBhcnNlRmVlZD1mdW5jdGlvbigp ewoobmV3IERTKS5wYXJzZUZlZWQuYXBwbHkodGhpcyk7Cn07Cgp0aGlzLmdldExv YWRpbmdTdHJhdGVneT1mdW5jdGlvbigpewppZih3aW5kb3cuYmVndW5fZXh0cmFf YmxvY2spewppZighYXJndW1lbnRzLmNhbGxlZS5mYnMpewphcmd1bWVudHMuY2Fs bGVlLmZicz1uZXcgRkJTKCk7Cn0KcmV0dXJuIGFyZ3VtZW50cy5jYWxsZWUuZmJz Owp9ZWxzZSBpZihpc0JGU0FwcGxpY2FibGUoKSl7CmlmKCFhcmd1bWVudHMuY2Fs bGVlLmJmcyl7CmFyZ3VtZW50cy5jYWxsZWUuYmZzPW5ldyBCRlMoKTsKfQpyZXR1 cm4gYXJndW1lbnRzLmNhbGxlZS5iZnM7Cn1lbHNlewppZighYXJndW1lbnRzLmNh bGxlZS5kcyl7CmFyZ3VtZW50cy5jYWxsZWUuZHM9bmV3IERTKCk7Cn0KcmV0dXJu IGFyZ3VtZW50cy5jYWxsZWUuZHM7Cn0KfTsKdGhpcy5zZXRPcHRpb25zPWZ1bmN0 aW9uKG9wdGlvbnMpewpCZWd1bi5leHRlbmQoX3RoaXMub3B0aW9ucyxvcHRpb25z fHx7fSk7Cn07CnRoaXMucmVxdWVzdFBhcmFtcz17CiJwYWRfaWQiOicnLAoiYmxv Y2tfaWQiOicnLAoibiI6JycsCiJsbXQiOkRhdGUucGFyc2UoZG9jdW1lbnQubGFz dE1vZGlmaWVkKS8xMDAwLAoic2Vuc2VfbW9kZSI6J2N1c3RvbScsCiJ1dF9zY3Jl ZW5fd2lkdGgiOnNjcmVlbi53aWR0aHx8MCwKInV0X3NjcmVlbl9oZWlnaHQiOnNj cmVlbi5oZWlnaHR8fDAsCiJqc29uIjoxLAoianNjYWxsIjonbG9hZEZlZWREb25l JywKImNvbmRpdGlvbl9pZCI6d2luZG93LmJlZ3VuX2NvbmRpdGlvbl9pZHx8Jycs CiJmcm1fbGV2ZWwiOicnLAoiZnJtX3RvcCI6JycsCiJmb3JjZV9qc19saW5rIjon JywKImhvb2tEYXRhIjonJywKIm1pc2NfaWQiOndpbmRvdy5iZWd1bl9taXNjX2lk fHx3aW5kb3cubWlzY19pZCwKIm92ZXJyaWRkZW4iOicnLAoidmVyc2lvbiI6Jycs CiJiYW5uZXJfZmlsdGVyIjonJywKInN0b3B3b3JkcyI6d2luZG93LnN0b3B3b3Jk c3x8JycsCiJiZWd1bl9zZWxmX2tleXdvcmRzIjp3aW5kb3cuYmVndW5fc2VsZl9r ZXl3b3Jkc3x8JycsCiJyZWYiOmRvY3VtZW50LnJlZmVycmVyLAoicmVhbF9yZWZl ciI6ZG9jdW1lbnQubG9jYXRpb24KfTsKdGhpcy5yZXNwb25zZVBhcmFtcz17fTsK dGhpcy5wcmVwYXJlUmVxdWVzdFBhcmFtcz1mdW5jdGlvbihuZXdWYWx1ZXMpewp2 YXIgY29tbWE9IiI7Cl90aGlzLnJlcXVlc3RQYXJhbXMucGFkX2lkPXdpbmRvdy5i ZWd1bl9hdXRvX3BhZDsKaWYoc2VsZi5wYXJlbnQpewp0cnl7CnZhciBleHRyYV9k YXRhPXNlbGYucGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3R0b21C YW5uZXJEYXRhSWQnKXx8bnVsbDsKaWYoZXh0cmFfZGF0YSYmZXh0cmFfZGF0YS5p bm5lckhUTUwpewpfdGhpcy5yZXF1ZXN0UGFyYW1zLmhvb2tEYXRhPWV4dHJhX2Rh dGEuaW5uZXJIVE1MOwp9Cn1jYXRjaChlKXt9Cn0KdmFyIHZlcnNpb249QmVndW4u UkVWSVNJT04ucmVwbGFjZSgvXEQvZ2ksJycpOwpfdGhpcy5yZXF1ZXN0UGFyYW1z LnZlcnNpb249dmVyc2lvbjsKaWYodHlwZW9mKHdpbmRvdy5iZWd1bl9qc19mb3Jj ZV9sb2FkKSE9J3VuZGVmaW5lZCcmJndpbmRvdy5iZWd1bl9qc19mb3JjZV9sb2Fk KXsKX3RoaXMucmVxdWVzdFBhcmFtcy5mb3JjZV9qc19saW5rPU1vZHVsZS5nZXRO YW1lcygnYWxsJyk7CkV4dEJsb2NrVHlwZXMubG9hZEFsbCgpOwp2YXIgbW9kdWxl TmFtZXM9X3RoaXMucmVxdWVzdFBhcmFtcy5mb3JjZV9qc19saW5rLnNwbGl0KCcs Jyk7CnZhciBiYXNlVXJsPV90aGlzLlN0cmluZ3MudXJscy5iYXNlX3NjcmlwdHNf dXJsOwpmb3IodmFyIGo9MDtqPG1vZHVsZU5hbWVzLmxlbmd0aDtqKyspewppZiht b2R1bGVOYW1lc1tqXSE9PSJ0b29sYmFyIil7Ck1vZHVsZS5sb2FkKGJhc2VVcmwr bW9kdWxlTmFtZXNbal0rIi5qcyIpOwp9Cn0KfQp2YXIgZnJhbWVfbGV2ZWw9KGZ1 bmN0aW9uKCl7CnZhciBsZXZlbD0wOwp2YXIgX3BhcmVudD1zZWxmOwp3aGlsZShf cGFyZW50IT09dG9wJiZsZXZlbDw5OTkpewpfcGFyZW50PV9wYXJlbnQucGFyZW50 OwpsZXZlbCsrOwp9CnJldHVybiBsZXZlbDsKfSkoKTsKaWYoZnJhbWVfbGV2ZWwp ewpfdGhpcy5yZXF1ZXN0UGFyYW1zLmZybV9sZXZlbD1mcmFtZV9sZXZlbDsKdHJ5 ewpfdGhpcy5yZXF1ZXN0UGFyYW1zLmZybV90b3A9dG9wLmxvY2F0aW9uLmhyZWY7 Cn1jYXRjaChleGMpewpfdGhpcy5yZXF1ZXN0UGFyYW1zLmZybV90b3A9J3RvcCBu b3QgYWNjZXNzaWJsZSc7Cn0KfQoKaWYodHlwZW9mIEJlZ3VuLkF1dG9jb250ZXh0 LmlzTm90Rmlyc3RSZXF1ZXN0PT09InVuZGVmaW5lZCIpewpCZWd1bi5BdXRvY29u dGV4dC5pc05vdEZpcnN0UmVxdWVzdD10cnVlOwpjb21tYT0iLCI7Cl90aGlzLnJl cXVlc3RQYXJhbXMuYmxvY2tfaWQ9QkxPQ0tfSURfQkFOTkVSXzYwMHg5MCtjb21t YStCTE9DS19JRF9UT1BfTU9CSUxFOwp3aW5kb3cuYWx0ZXJnZW9fdG9rZW5fY2Fs bGJhY2s9ZnVuY3Rpb24odG9rZW4pewpCZWd1bi5VdGlscy5pbmNsdWRlQ291bnRl cihfdGhpcy5TdHJpbmdzLnVybHMuYWx0ZXJfZ2VvX2xvZ2dlcix7InRva2VuIjp0 b2tlbn0pOwp9Owp9CgppZih3aW5kb3cuYmVndW5fYmxvY2tfaWRzKXsKX3RoaXMu cmVxdWVzdFBhcmFtcy5ibG9ja19pZCs9Y29tbWErd2luZG93LmJlZ3VuX2Jsb2Nr X2lkcy5yZXBsYWNlKC9ccy9nLCIiKTsKfWVsc2V7CmlmKHdpbmRvdy5iZWd1bl9i bG9ja19pZCYmaXNCRlNBcHBsaWNhYmxlKCkpewpfdGhpcy5yZXF1ZXN0UGFyYW1z LmJsb2NrX2lkKz1jb21tYSt3aW5kb3cuYmVndW5fYmxvY2tfaWQ7Cn0KfQoKaWYo d2luZG93LmJlZ3VuX3JlcXVlc3RfcGFyYW1zJiZ3aW5kb3cuYmVndW5fcmVxdWVz dF9wYXJhbXMuY29uc3RydWN0b3I9PT1PYmplY3Qpewp3aW5kb3cuYmVndW5fcmVx dWVzdF9wYXJhbXMub3ZlcnJpZGRlbj0xOwpCZWd1bi5leHRlbmQoX3RoaXMucmVx dWVzdFBhcmFtcyx3aW5kb3cuYmVndW5fcmVxdWVzdF9wYXJhbXMpOwp9CmlmKG5l d1ZhbHVlcyl7CkJlZ3VuLmV4dGVuZChfdGhpcy5yZXF1ZXN0UGFyYW1zLG5ld1Zh bHVlcyk7Cn0KdmFyIHRoZVBhZD1fdGhpcy5nZXRQYWQoKTsKaWYodHlwZW9mIHRo ZVBhZC5ycT09PSJ1bmRlZmluZWQiKXsKdGhlUGFkLnJxPTA7Cn1lbHNlewp0aGVQ YWQucnErKzsKfQppZih0eXBlb2YgQmVndW4ucGFnZUlkPT09InVuZGVmaW5lZCIp ewpCZWd1bi5wYWdlSWQ9TWF0aC5mbG9vcigxMDAwMDAwMDAwMDAwMCpNYXRoLnJh bmRvbSgpKyhuZXcgRGF0ZSgpKS52YWx1ZU9mKCkpOwp9Cl90aGlzLnJlcXVlc3RQ YXJhbXMucnE9KHRoZVBhZC5ycSkudG9TdHJpbmcoKTsKX3RoaXMucmVxdWVzdFBh cmFtcy5wYWdlX2lkPUJlZ3VuLnBhZ2VJZDsKfTsKdGhpcy5pc0V2ZW50VHJhY2tp bmdPbj1mdW5jdGlvbigpewpyZXR1cm4gX3RoaXMucmVzcG9uc2VQYXJhbXNbInRy YWNrX2V2ZW50cyJdOwp9Owp0aGlzLmluaXQ9ZnVuY3Rpb24oKXsKX3RoaXMuQ3Vz dG9taXphdGlvbi5pbml0KCk7Cl90aGlzLlBhZHMuaW5pdCgpOwpfdGhpcy5pbml0 Q3VycmVudEJsb2NrKCk7CmlmKHR5cGVvZiBhcmd1bWVudHMuY2FsbGVlLnJ1bj09 PSJ1bmRlZmluZWQiKXsKYXJndW1lbnRzLmNhbGxlZS5ydW49dHJ1ZTsKfQp9Owp0 aGlzLmluaXRUb29sYmFyPWZ1bmN0aW9uKGRlYnVnKXsKaWYoQmVndW4uVG9vbGJh cil7CnZhciB0b29sYmFyPUJlZ3VuLlRvb2xiYXIuaW5pdChkZWJ1Zyk7Cn0KfTsK dGhpcy5pbml0SHlwZXJjb250ZXh0QmxvY2s9ZnVuY3Rpb24oYmxvY2sscGFkX2lk KXsKaWYoIUJlZ3VuLkh5cGVyY29udGV4dHx8IWJsb2NrKXsKcmV0dXJuOwp9CnRo aXMuaHlwZXJCbG9jaz1uZXcgQmVndW4uSHlwZXJjb250ZXh0KGJsb2NrLHBhZF9p ZCk7Cn07CnRoaXMuaW5pdFBob3RvY29udGV4dEJsb2NrPWZ1bmN0aW9uKGJsb2Nr LHBhZF9pZCl7CmlmKCFCZWd1bi5QaG90b2NvbnRleHR8fCFibG9jayl7CnJldHVy bjsKfQp0aGlzLnBob3RvQmxvY2s9bmV3IEJlZ3VuLlBob3RvY29udGV4dChibG9j ayxwYWRfaWQpOwp9Owp0aGlzLmluaXRTY3JvbGxCbG9jaz1mdW5jdGlvbihibG9j ayl7CmlmKEJlZ3VuLlNjcm9sbGVyKXsKdmFyIHNldEhlaWdodD1mdW5jdGlvbihi bG9jayxzY3JvbGxfZGl2LHNjcm9sbF90YWJsZSl7CnZhciB0cnM9c2Nyb2xsX3Rh YmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0cicpOwp2YXIgaGVpZ2h0Owp2YXIg aTsKdmFyIGJhbm5lcnNfY291bnQ9TnVtYmVyKGJsb2NrLm9wdGlvbnMuYmFubmVy c19jb3VudCk7CmlmKGJhbm5lcnNfY291bnQ9PT0xKXsKaGVpZ2h0PXRyc1swXS5v ZmZzZXRIZWlnaHQ7CmZvcihpPTE7aTx0cnMubGVuZ3RoO2krKyl7CmlmKHRyc1tp XS5vZmZzZXRIZWlnaHQ+aGVpZ2h0KXsKaGVpZ2h0PXRyc1tpXS5vZmZzZXRIZWln aHQ7Cn0KfQp9ZWxzZXsKaGVpZ2h0PTA7CmZvcihpPTA7aTxiYW5uZXJzX2NvdW50 O2krKyl7CmlmKHRyc1tpXSl7CnZhciBoPXRyc1tpXS5vZmZzZXRIZWlnaHQ7Cmhl aWdodCs9aDsKfQp9Cn0Kc2Nyb2xsX2Rpdi5zdHlsZS5oZWlnaHQ9aGVpZ2h0Kydw eCc7CnNjcm9sbF9kaXYuc3R5bGUub3ZlcmZsb3c9J2hpZGRlbic7Cn07CnZhciBp bml0PWZ1bmN0aW9uKGJsb2NrLHNjcm9sbF9kaXYsc2Nyb2xsX3RhYmxlLGlzX2hv cml6b250YWwpewp2YXIgYmFubmVyc19jb3VudD1OdW1iZXIoYmxvY2sub3B0aW9u cy5iYW5uZXJzX2NvdW50KTsKdmFyIGJhbm5lcnNfY291bnRfY29lZj1OdW1iZXIo YmxvY2sub3B0aW9ucy5iYW5uZXJzX2NvdW50X2NvZWYpfHwxOwooZnVuY3Rpb24o KXsKaWYoIXNjcm9sbF9kaXYub2Zmc2V0SGVpZ2h0KXsKd2luZG93LnNldFRpbWVv dXQoYXJndW1lbnRzLmNhbGxlZSxCZWd1bi5ET01fVElNRU9VVCk7Cn0KdmFyIHNj cm9sbGVyPShuZXcgQmVndW4uU2Nyb2xsZXIoCnNjcm9sbF90YWJsZSwKewpoZWln aHQ6c2Nyb2xsX2Rpdi5vZmZzZXRIZWlnaHQsCmJhbm5lcnNfY291bnQ6YmFubmVy c19jb3VudCwKYmFubmVyc19jb3VudF9jb2VmOmJhbm5lcnNfY291bnRfY29lZiwK aXNfaG9yaXpvbnRhbDppc19ob3Jpem9udGFsLApzY3JvbGxfdGltZW91dDooYmxv Y2smJmJsb2NrLm9wdGlvbnMmJmJsb2NrLm9wdGlvbnMuanNvbiYmYmxvY2sub3B0 aW9ucy5qc29uLnNjcm9sbF90aW1lb3V0KXx8bnVsbAp9CikpOwoKX3RoaXMuc2Ny b2xsZXJzLnB1c2goc2Nyb2xsZXIpOwpzY3JvbGxlci5zdGFydCgpOwp9KSgpOwp9 Owp2YXIgc2Nyb2xsX2Rpdj1CZWd1bi4kKF90aGlzLlN0cmluZ3MuY3NzLnNjcm9s bF9kaXZfcHJlZml4K2Jsb2NrLmlkKTsKdmFyIHNjcm9sbF90YWJsZT1CZWd1bi4k KF90aGlzLlN0cmluZ3MuY3NzLnNjcm9sbF90YWJsZV9wcmVmaXgrYmxvY2suaWQp Owp2YXIgaXNfaG9yaXpvbnRhbDsKaWYoIWJsb2NrLnNjcm9sbGluZyYmTnVtYmVy KGJsb2NrLm9wdGlvbnMudXNlX3Njcm9sbCkmJnNjcm9sbF9kaXYmJnNjcm9sbF90 YWJsZSl7CmlmKF90aGlzLkJsb2Nrcy5jaGVja1R5cGUoYmxvY2ssJ2hvcml6b250 YWwnKXx8X3RoaXMuQmxvY2tzLmNoZWNrVHlwZShibG9jaywnNzI4eDkwJyl8fF90 aGlzLkJsb2Nrcy5jaGVja1R5cGUoYmxvY2ssJzQ2OHg2MCcpKXsKaXNfaG9yaXpv bnRhbD10cnVlOwp9ZWxzZXsKaXNfaG9yaXpvbnRhbD1mYWxzZTsKfQppZihfdGhp cy5CbG9ja3MuY2hlY2tUeXBlKGJsb2NrLCd2ZXJ0aWNhbCcpfHxfdGhpcy5CbG9j a3MuY2hlY2tUeXBlKGJsb2NrLCdmbGF0JykpewooZnVuY3Rpb24oYmxvY2ssc2Ny b2xsX2RpdixzY3JvbGxfdGFibGUsaXNfaG9yaXpvbnRhbCl7CmlmKHNjcm9sbF90 YWJsZS5vZmZzZXRIZWlnaHQpewpzZXRIZWlnaHQoYmxvY2ssc2Nyb2xsX2Rpdixz Y3JvbGxfdGFibGUpOwpzY3JvbGxfZGl2LnN0eWxlLndpZHRoPXNjcm9sbF9kaXYu b2Zmc2V0V2lkdGgrJ3B4JzsKaW5pdChibG9jayxzY3JvbGxfZGl2LHNjcm9sbF90 YWJsZSxpc19ob3Jpem9udGFsKTsKfWVsc2V7CnZhciBmdW5jPWFyZ3VtZW50cy5j YWxsZWU7CndpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CmZ1bmMoYmxvY2ss c2Nyb2xsX2RpdixzY3JvbGxfdGFibGUsaXNfaG9yaXpvbnRhbCk7Cn0sQmVndW4u RE9NX1RJTUVPVVQpOwp9Cn0pKGJsb2NrLHNjcm9sbF9kaXYsc2Nyb2xsX3RhYmxl LGlzX2hvcml6b250YWwpOwp9ZWxzZSBpZihfdGhpcy5CbG9ja3MuY2hlY2tUeXBl KGJsb2NrLCdob3Jpem9udGFsJykpewooZnVuY3Rpb24oYmxvY2ssc2Nyb2xsX2Rp dixzY3JvbGxfdGFibGUsaXNfaG9yaXpvbnRhbCl7CmlmKHNjcm9sbF9kaXYub2Zm c2V0SGVpZ2h0KXsKc2Nyb2xsX2Rpdi5zdHlsZS5oZWlnaHQ9KHNjcm9sbF9kaXYu b2Zmc2V0SGVpZ2h0KjAuNykrJ3B4JzsKaW5pdChibG9jayxzY3JvbGxfZGl2LHNj cm9sbF90YWJsZSxpc19ob3Jpem9udGFsKTsKfWVsc2V7CnZhciBmdW5jPWFyZ3Vt ZW50cy5jYWxsZWU7CndpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CmZ1bmMo YmxvY2ssc2Nyb2xsX2RpdixzY3JvbGxfdGFibGUsaXNfaG9yaXpvbnRhbCk7Cn0s QmVndW4uRE9NX1RJTUVPVVQpOwp9Cn0pKGJsb2NrLHNjcm9sbF9kaXYsc2Nyb2xs X3RhYmxlLGlzX2hvcml6b250YWwpOwp9ZWxzZXsKaW5pdChibG9jayxzY3JvbGxf ZGl2LHNjcm9sbF90YWJsZSxpc19ob3Jpem9udGFsKTsKfQpibG9jay5zY3JvbGxp bmc9dHJ1ZTsKfQp9Cn07CnRoaXMuaW5pdEFjY29yZGlvbkJsb2NrPWZ1bmN0aW9u KGJsb2NrKXsKaWYoIUJlZ3VuLkFjY29yZGlvbil7CnJldHVybiBmYWxzZTsKfQp2 YXIgYWNjb3JkaW9uX2Rpdj1fdGhpcy5CbG9ja3MuZ2V0RG9tT2JqKGJsb2NrLmlk KTsKaWYoIWJsb2NrLmlzX2FjY29yZGlvbl9wcm9jZXNzaW5nJiZOdW1iZXIoYmxv Y2sub3B0aW9ucy51c2VfYWNjb3JkaW9uKSYmYWNjb3JkaW9uX2Rpdil7CnZhciBh Y2NvcmRpb249KG5ldyBCZWd1bi5BY2NvcmRpb24oYWNjb3JkaW9uX2RpdikpOwph Y2NvcmRpb24uaW5pdCgpOwpibG9jay5pc19hY2NvcmRpb25fcHJvY2Vzc2luZz10 cnVlOwp9Cn07CnRoaXMuaW5pdEF1dG9Ub3BCbG9jaz1mdW5jdGlvbihibG9jayl7 CmlmKCFCZWd1bi5hdXRvVG9wKXsKcmV0dXJuIGZhbHNlOwp9CnZhciBhdXRvX3Rv cF9kaXY9X3RoaXMuQmxvY2tzLmdldERvbU9iaihibG9jay5pZCk7CmlmKCFibG9j ay5pc19hdXRvX3RvcF9wcm9jZXNzaW5nJiZfdGhpcy5CbG9ja3MuY2hlY2tUeXBl KGJsb2NrLCd0b3AnKSYmYXV0b190b3BfZGl2KXsKdmFyIGRpdnM9YXV0b190b3Bf ZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKTsKdmFyIGF1dG9fdG9wX2Rp dl9pbm5lcj1udWxsOwpmb3IodmFyIGk9MCxsPWRpdnMubGVuZ3RoO2k8bDtpKysp ewppZihCZWd1bi5VdGlscy5oYXNDbGFzc05hbWUoZGl2c1tpXSwnYmVndW5fY29s bGFwc2FibGUnKSl7CmF1dG9fdG9wX2Rpdl9pbm5lcj1kaXZzW2ldOwp9Cn0KdmFy IGJvZHk9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKSYmZG9j dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXTsKaWYoQmVndW4u QnJvd3NlciYmQmVndW4uQnJvd3Nlci5JRSYmKGRvY3VtZW50LmRvY3VtZW50RWxl bWVudHx8Ym9keSkmJmF1dG9fdG9wX2Rpdl9pbm5lcil7CmF1dG9fdG9wX2Rpdl9p bm5lci5zdHlsZS53aWR0aD0oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVu dFdpZHRofHxib2R5LmNsaWVudFdpZHRoKSsncHgnOwp3aW5kb3cub25yZXNpemU9 ZnVuY3Rpb24oKXsKYXV0b190b3BfZGl2X2lubmVyLnN0eWxlLndpZHRoPShkb2N1 bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGh8fGJvZHkuY2xpZW50V2lk dGgpKydweCc7Cn07CmlmKEJlZ3VuLkJyb3dzZXIudmVyc2lvbigpPD02KXsKYXV0 b190b3BfZGl2LnN0eWxlLmRpc3BsYXk9J25vbmUnOwp9Cn0KdmFyIGF1dG9fdG9w PShuZXcgQmVndW4uYXV0b1RvcChhdXRvX3RvcF9kaXYpKTsKYXV0b190b3AuaW5p dCgpOwpibG9jay5pc19hdXRvX3RvcF9wcm9jZXNzaW5nPXRydWU7Cn0KfTsKdGhp cy5nZXRSaWNoU2l6ZXM9ZnVuY3Rpb24oaW1nLG1heCl7CnZhciBpc19pbWdfcHJv cGVydGllc19lcXVhbD1pbWcud2lkdGg9PWltZy5oZWlnaHQ7CnZhciByZXM9e307 CmlmKCFpc19pbWdfcHJvcGVydGllc19lcXVhbCl7CnZhciBtYXhfcHJvcGVydHk9 aW1nLndpZHRoPmltZy5oZWlnaHQ/J3dpZHRoJzonaGVpZ2h0JzsKdmFyIG1pbl9w cm9wZXJ0eT1tYXhfcHJvcGVydHk9PSd3aWR0aCc/J2hlaWdodCc6J3dpZHRoJzsK dmFyIHJhdGlvPWltZ1ttaW5fcHJvcGVydHldL2ltZ1ttYXhfcHJvcGVydHldOwpy ZXNbbWF4X3Byb3BlcnR5XT1tYXg7CmltZy5zdHlsZVttYXhfcHJvcGVydHldPW1h eCsncHgnOwp2YXIgbWF4X21pbl9wcm9wZXJ0eT1NYXRoLnJvdW5kKG1heCpyYXRp byk7CnJlc1ttaW5fcHJvcGVydHldPW1heF9taW5fcHJvcGVydHk7CmltZy5zdHls ZVttaW5fcHJvcGVydHldPW1heF9taW5fcHJvcGVydHkrJ3B4JzsKfWVsc2V7CnJl cy53aWR0aD1tYXg7CnJlcy5oZWlnaHQ9bWF4OwppbWcuc3R5bGUud2lkdGg9bWF4 KydweCc7CmltZy5zdHlsZS5oZWlnaHQ9bWF4KydweCc7Cn0KcmV0dXJuIHJlczsK fTsKdGhpcy5jYWxsUmljaD1mdW5jdGlvbihvcHRpb25zLHJpY2hfYmxvY2tzX2Rp dixibG9jayl7CnZhciByaWNoX2Jsb2Nrcz0obmV3IEJlZ3VuLnJpY2hCbG9ja3Mo cmljaF9ibG9ja3NfZGl2LG9wdGlvbnMpKTsKcmljaF9ibG9ja3MuaW5pdCgpOwpi bG9jay5pc19yaWNoX2Jsb2Nrc19wcm9jZXNzaW5nPXRydWU7Cn07CnRoaXMuaW5p dEF1dG9SaWNoQmxvY2s9ZnVuY3Rpb24oYmxvY2spewppZighQmVndW4ucmljaEJs b2Nrcyl7CnJldHVybiBmYWxzZTsKfQp2YXIgcmljaF9ibG9ja3NfZGl2PV90aGlz LkJsb2Nrcy5nZXREb21PYmooYmxvY2suaWQpOwppZighYmxvY2suaXNfcmljaF9i bG9ja3NfcHJvY2Vzc2luZyYmcmljaF9ibG9ja3NfZGl2KXsKdmFyIG9wdGlvbnM9 e307CnZhciBtaW49NzA7CnZhciBtYXg9MjAwOwp2YXIgaXNJbkZyYW1lPXdpbmRv dyE9d2luZG93LnRvcDsKaWYoX3RoaXMuQmxvY2tzLmNoZWNrVHlwZShibG9jaywn dmVydGljYWwnKSl7Cm9wdGlvbnM9ewppc19lcXVhbDp0cnVlCn0KaWYoaXNJbkZy YW1lKXsKb3B0aW9ucy5sZWZ0X21heF9kZWZhdWx0PTEwOwpvcHRpb25zLnRvcF9t YXhfZGVmYXVsdD0tMzA7Cm1heD0xMjU7Cn1lbHNlewpvcHRpb25zLmxlZnRfbWF4 X2RlZmF1bHQ9LTI3LjU7Cm9wdGlvbnMudG9wX21heF9kZWZhdWx0PS02Ny41Owp9 Cn1lbHNlIGlmKF90aGlzLkJsb2Nrcy5jaGVja1R5cGUoYmxvY2ssJzcyOHg5MCcp KXsKb3B0aW9ucz17CmlzX2VxdWFsOnRydWUKfQppZihpc0luRnJhbWUpewpvcHRp b25zLmxlZnRfbWF4X2RlZmF1bHQ9LTEwOwpvcHRpb25zLnRvcF9tYXhfZGVmYXVs dD0tODsKbWF4PTg4Owp9ZWxzZXsKb3B0aW9ucy5sZWZ0X21heF9kZWZhdWx0PS02 NjsKb3B0aW9ucy50b3BfbWF4X2RlZmF1bHQ9LTY0Owp9Cn1lbHNlIGlmKF90aGlz LkJsb2Nrcy5jaGVja1R5cGUoYmxvY2ssJzEyMHg2MDAnKSl7Cm9wdGlvbnM9ewpp c19lcXVhbDp0cnVlCn0KaWYoaXNJbkZyYW1lKXsKb3B0aW9ucy5sZWZ0X21heF9k ZWZhdWx0PS0xMDsKb3B0aW9ucy50b3BfbWF4X2RlZmF1bHQ9LTEwOwptYXg9MTIw Owp9ZWxzZXsKb3B0aW9ucy5sZWZ0X21heF9kZWZhdWx0PS01MDsKb3B0aW9ucy50 b3BfbWF4X2RlZmF1bHQ9LTUwOwp9Cn1lbHNlIGlmKF90aGlzLkJsb2Nrcy5jaGVj a1R5cGUoYmxvY2ssJzE2MHg2MDAnKSl7Cm9wdGlvbnM9ewppc19lcXVhbDp0cnVl Cn0KaWYoaXNJbkZyYW1lKXsKb3B0aW9ucy5sZWZ0X21heF9kZWZhdWx0PS0xMDsK b3B0aW9ucy50b3BfbWF4X2RlZmF1bHQ9LTEwOwptYXg9MTYwOwp9ZWxzZXsKb3B0 aW9ucy5sZWZ0X21heF9kZWZhdWx0PS0zMDsKb3B0aW9ucy50b3BfbWF4X2RlZmF1 bHQ9LTMwOwp9Cn0KaWYodHlwZW9mIF90aGlzLl9iaWdfcmljaF9zaXplcz09PSJ1 bmRlZmluZWQiKXsKX3RoaXMuX2JpZ19yaWNoX3NpemVzPXt9Owp9CnZhciBzbWFs bF9pbWFnZXM9W107CnZhciBpOwp2YXIgbDsKdmFyIGNlbGxzPUJlZ3VuLlV0aWxz LmdldEVsZW1lbnRzQnlDbGFzc05hbWUocmljaF9ibG9ja3NfZGl2LCd0ZCcsJ2Jl Z3VuX2Fkdl9yaWNoJyk7CnZhciBsbj0wOwpmb3IoaT0wLGw9Y2VsbHMubGVuZ3Ro O2k8bDtpKyspewpzbWFsbF9pbWFnZXNbaV09QmVndW4uVXRpbHMuZ2V0RWxlbWVu dHNCeUNsYXNzTmFtZShjZWxsc1tpXSwnaW1nJywnYmVndW5fYWR2X3BpY3R1cmUn KSYmQmVndW4uVXRpbHMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjZWxsc1tpXSwn aW1nJywnYmVndW5fYWR2X3BpY3R1cmUnKVswXTsKaWYoc21hbGxfaW1hZ2VzW2ld KXsKbG4rPTI7Cn0KfQpibG9jay5sbj1sbjsKZm9yKGk9MCxsPXNtYWxsX2ltYWdl cy5sZW5ndGg7aTxsO2krKyl7CmlmKHNtYWxsX2ltYWdlc1tpXSl7CnZhciBzZXRT aXplcz1mdW5jdGlvbihudW0saW1hZ2UsbWF4LGtleSxvYmosYmxvY2spewp2YXIg c2l6ZXM9X3RoaXMuZ2V0UmljaFNpemVzLmNhbGwob2JqLGltYWdlLG1heCk7Cm9i ai5fYmlnX3JpY2hfc2l6ZXNbJ2ltZ193aWR0aF8nK2tleSsnXycrbnVtXT1zaXpl cy53aWR0aDsKb2JqLl9iaWdfcmljaF9zaXplc1snaW1nX2hlaWdodF8nK2tleSsn XycrbnVtXT1zaXplcy5oZWlnaHQ7CmlmKC0tYmxvY2subG49PTApewpvcHRpb25z LnNpemVzPW9iai5fYmlnX3JpY2hfc2l6ZXM7Cm9iai5jYWxsUmljaChvcHRpb25z LHJpY2hfYmxvY2tzX2RpdixibG9jayk7CmltYWdlLm9ubG9hZD1udWxsOwp9Cn0K dmFyIGRldGVjdEltZ0RpbWVuc2lvbnM9ZnVuY3Rpb24oaW1nLGksdmFsdWUsa2V5 LG9iaixibG9jayl7CmlmKGltZy5jb21wbGV0ZSl7CnNldFNpemVzKGksaW1nLHZh bHVlLGtleSxvYmosYmxvY2spOwp9ZWxzZXsKd2luZG93LnNldFRpbWVvdXQoKGZ1 bmN0aW9uKGltZyxpLHZhbHVlLGtleSxvYmosYmxvY2spewpyZXR1cm4gZnVuY3Rp b24oKXsKZGV0ZWN0SW1nRGltZW5zaW9ucyhpbWcsaSx2YWx1ZSxrZXksb2JqLGJs b2NrKTsKfTsKfSkoaW1nLGksdmFsdWUsa2V5LG9iaixibG9jayksQmVndW4uRE9N X1RJTUVPVVQpOwp9Cn07CmRldGVjdEltZ0RpbWVuc2lvbnMoc21hbGxfaW1hZ2Vz W2ldLGksbWluLCdtaW4nLF90aGlzLGJsb2NrKTsKdmFyIGJpZz1uZXcgSW1hZ2Uo KTsKYmlnLnNyYz1zbWFsbF9pbWFnZXNbaV0uZ2V0QXR0cmlidXRlKCdfYmlnX3Bo b3RvX3NyYycpOwpkZXRlY3RJbWdEaW1lbnNpb25zKGJpZyxpLG1heCwnbWF4Jyxf dGhpcyxibG9jayk7Cn0KfQp9Cn07CnRoaXMuaW5pdEF1dG9DYXRhbG9nQmxvY2s9 ZnVuY3Rpb24oYmxvY2spewppZighQmVndW4uQ2F0YWxvZyl7CnJldHVybiBmYWxz ZTsKfQppZighYmxvY2suaXNfY2F0YWxvZ19wcm9jZXNzaW5nKXsKdmFyIGZlZWQ9 dGhpcy5nZXRGZWVkKCk7CnZhciBjYXRhbG9nPShuZXcgQmVndW4uQ2F0YWxvZyhi bG9jayxmZWVkKSk7CmNhdGFsb2cuaW5pdCgpOwpibG9jay5pc19jYXRhbG9nX3By b2Nlc3Npbmc9dHJ1ZTsKfQp9Owp0aGlzLnJlc2V0TWF4U2Nyb2xsZXJzPWZ1bmN0 aW9uKCl7Cl90aGlzLm1heFNjcm9sbGVycz1fdGhpcy5vcHRpb25zLm1heF9zY3Jv bGxlcnM7Cn07CnRoaXMubG9hZEV4dHJhUmVzb3VyY2VzPWZ1bmN0aW9uKCl7CnZh ciBmZWVkPV90aGlzLmdldEZlZWQoKTsKaWYoIWZlZWQpewpyZXR1cm47Cn0KdmFy IGxpbmtzPWZlZWQubGlua3M7CmlmKGxpbmtzKXsKdmFyIGk9MDsKdmFyIGxpbms9 bnVsbDsKd2hpbGUobGluaz1saW5rc1tpXSl7CnN3aXRjaChsaW5rLnR5cGUpewpj YXNlJ2pzJzoKTW9kdWxlLmxvYWQobGluay51cmwpOwpicmVhazsKY2FzZSdjc3Mn OgpCZWd1bi5VdGlscy5pbmNsdWRlQ1NTRmlsZShsaW5rLnVybCk7CmJyZWFrOwpj YXNlJ2ltZyc6CihuZXcgSW1hZ2UoKSkuc3JjPWxpbmsudXJsOwpicmVhazsKY2Fz ZSdmcmFtZSc6CnZhciB2YXJzPXt1cmw6bGluay51cmx9Owpkb2N1bWVudC53cml0 ZSgobmV3IEJlZ3VuLlRlbXBsYXRlKF90aGlzLlRwbHMuZ2V0SFRNTCgnbGlua19p ZnJhbWUnKSkpLmV2YWx1YXRlKHZhcnMpKTsKYnJlYWs7CmNhc2Unc3dmJzoKdmFy IGlzRmxhc2hJbnN0YWxsZWQ9QmVndW4uVXRpbHMuY2hlY2tGbGFzaCgpOwppZihp c0ZsYXNoSW5zdGFsbGVkKXsKdmFyIHN3Zl91cmw9bGluay51cmw7CkJlZ3VuLlV0 aWxzLmFkZEV2ZW50KHdpbmRvdywnbG9hZCcsZnVuY3Rpb24oKXsKQmVndW4uVXRp bHMuaW5jbHVkZVNXRihzd2ZfdXJsKTsKfSk7Cn0KYnJlYWs7CmRlZmF1bHQ6Cihu ZXcgSW1hZ2UoKSkuc3JjPWxpbmsudXJsOwp9CmkrKzsKfQp9CnZhciBpc1BwY2Fs bDsKdmFyIGlzU2Nyb2xsOwp2YXIgaXNSaWNoOwp2YXIgaXNUb3A7CnZhciBpc0h5 cGVyOwp2YXIgaXNDYXRhbG9nOwp2YXIgaXNBY2NvcmRpb247CnZhciBpc1Bob3Rv Owp2YXIgaXNUb29sYmFyOwp2YXIgYmxvY2tzPWZlZWQuYmxvY2tzOwpmb3IodmFy IGs9MDtrPGJsb2Nrcy5sZW5ndGg7aysrKXsKaWYoX3RoaXMuQmxvY2tzLmNoZWNr VHlwZShibG9ja3Nba10sJ3RvcCcpKXsKaXNUb3A9dHJ1ZTsKfQppZihfdGhpcy5C bG9ja3MuY2hlY2tUeXBlKGJsb2Nrc1trXSwnaHlwZXInKSl7CmlzSHlwZXI9dHJ1 ZTsKfQppZihfdGhpcy5CbG9ja3MuY2hlY2tUeXBlKGJsb2Nrc1trXSwncGhvdG8n KSl7CmlzUGhvdG89dHJ1ZTsKfQppZihibG9ja3Nba10ub3B0aW9ucyl7CmlmKEJl Z3VuLlV0aWxzLmluTGlzdChibG9ja3Nba10ub3B0aW9ucy5ibG9ja19vcHRpb25z LCdKU0NhdGFsb2cnKSl7CmlzQ2F0YWxvZz10cnVlOwp9CmlmKGJsb2Nrc1trXS5v cHRpb25zLnVzZV9zY3JvbGwpewppc1Njcm9sbD10cnVlOwp9CmlmKGJsb2Nrc1tr XS5vcHRpb25zLnVzZV9hY2NvcmRpb24pewppc0FjY29yZGlvbj10cnVlOwp9Cn0K fQp2YXIgZmVlZEJhbm5lcnM9ZmVlZC5iYW5uZXJzOwpmb3IodmFyIGJhbm5lcnNH cm91cCBpbiBmZWVkQmFubmVycyl7CmlmKGZlZWRCYW5uZXJzLmhhc093blByb3Bl cnR5KGJhbm5lcnNHcm91cCkmJmZlZWRCYW5uZXJzW2Jhbm5lcnNHcm91cF0ubGVu Z3RoKXsKZm9yKHZhciBqPTA7ajxmZWVkQmFubmVyc1tiYW5uZXJzR3JvdXBdLmxl bmd0aDtqKyspewppZihmZWVkQmFubmVyc1tiYW5uZXJzR3JvdXBdW2pdLnBwY2Fs bCl7CmlzUHBjYWxsPXRydWU7Cn0KaWYoZmVlZEJhbm5lcnNbYmFubmVyc0dyb3Vw XVtqXS52aWV3X3R5cGUmJmZlZWRCYW5uZXJzW2Jhbm5lcnNHcm91cF1bal0udmll d190eXBlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigicmljaCIpIT09LTEpewppc1Jp Y2g9dHJ1ZTsKfQp9Cn0KfQppZihmZWVkLmRlYnVnJiZmZWVkLmRlYnVnLnJlcXVl c3Qpewppc1Rvb2xiYXI9dHJ1ZTsKfQp2YXIgbG9hZE1vZHVsZT1mdW5jdGlvbihm bGFnLGpzRmlsZSl7CnZhciBiYXNlVXJsPV90aGlzLlN0cmluZ3MudXJscy5iYXNl X3NjcmlwdHNfdXJsOwppZihmbGFnKXsKTW9kdWxlLmxvYWQoYmFzZVVybCtqc0Zp bGUpOwp9Cn07CmxvYWRNb2R1bGUoaXNQcGNhbGwsImF1dG9fcHBjYWxsLmpzIik7 CmxvYWRNb2R1bGUoaXNTY3JvbGwsImF1dG9fc2Nyb2xsLmpzIik7CmxvYWRNb2R1 bGUoaXNSaWNoLCJhdXRvX3JpY2guanMiKTsKbG9hZE1vZHVsZShpc1RvcCwiYXV0 b190b3AuanMiKTsKbG9hZE1vZHVsZShpc0h5cGVyLCJhdXRvX2h5cGVyLmpzIik7 CmxvYWRNb2R1bGUoaXNDYXRhbG9nLCJhdXRvX2NhdGFsb2cuanMiKTsKbG9hZE1v ZHVsZShpc0FjY29yZGlvbiwiYXV0b19hY2NvcmRpb24uanMiKTsKbG9hZE1vZHVs ZShpc1Bob3RvLCJhdXRvX3Bob3RvLmpzIik7CmxvYWRNb2R1bGUoaXNUb29sYmFy LCJ0b29sYmFyLmpzIik7Cn07CnRoaXMuZHJhdz1mdW5jdGlvbigpewppZighYXJn dW1lbnRzLmNhbGxlZS5ydW4pewpfdGhpcy5CbG9ja3MuaW5pdCgpOwp9CmFyZ3Vt ZW50cy5jYWxsZWUucnVuPXRydWU7Cl90aGlzLmxvYWRUb29sYmFyKCk7CmlmKEV4 dEJsb2NrVHlwZXMuaXNMb2FkaW5nKCkpewpfdGhpcy5maWxsQmxvY2tzLmRlbGF5 ZWRDYWxsPXRydWU7Cn1lbHNlewpfdGhpcy5maWxsQmxvY2tzKCk7Cn0KfTsKdGhp cy51c2VCbG9ja0lkRGlzdHI9ZnVuY3Rpb24oKXsKcmV0dXJuISEoX3RoaXMuZ2V0 QmFubmVyKCdhdXRvY29udGV4dCcsMCkmJl90aGlzLmdldEJhbm5lcignYXV0b2Nv bnRleHQnLDApWyJibG9ja19pZCJdKTsKfTsKdGhpcy5pbml0Q3VycmVudEJsb2Nr PWZ1bmN0aW9uKCl7CmlmKHR5cGVvZiB3aW5kb3cuYmVndW5fYXV0b19wYWQhPT0i dW5kZWZpbmVkIiYmd2luZG93LmJlZ3VuX2F1dG9fcGFkPjApewppZih3aW5kb3cu YmVndW5fYmxvY2tfaWRzKXsKaWYodHlwZW9mIF90aGlzLmN1cnJlbnRJZEluZGV4 PT09InVuZGVmaW5lZCIpewpfdGhpcy5jdXJyZW50SWRJbmRleD0wOwp9ZWxzZXsK X3RoaXMuY3VycmVudElkSW5kZXgrKzsKfQp2YXIgYmxvY2tJZHM9d2luZG93LmJl Z3VuX2Jsb2NrX2lkcy5yZXBsYWNlKC9ccy9nLCIiKS5zcGxpdCgiLCIpOwppZihi bG9ja0lkcy5sZW5ndGgmJmJsb2NrSWRzLmxlbmd0aD5fdGhpcy5jdXJyZW50SWRJ bmRleCl7Cl90aGlzLnByaW50QmxvY2tQbGFjZShibG9ja0lkc1tfdGhpcy5jdXJy ZW50SWRJbmRleF0pOwpfdGhpcy5nZXRMb2FkaW5nU3RyYXRlZ3koKS5sb2FkQmxv Y2soYmxvY2tJZHNbX3RoaXMuY3VycmVudElkSW5kZXhdKTsKX3RoaXMuaW5pdEZl ZWRMb2FkKCk7Cn0KfWVsc2UgaWYodHlwZW9mIHdpbmRvdy5iZWd1bl9ibG9ja19p ZCE9PSJ1bmRlZmluZWQiJiZ3aW5kb3cuYmVndW5fYmxvY2tfaWQ+MCl7CmlmKHdp bmRvdy5iZWd1bl9leHRyYV9ibG9jayYmdHlwZW9mIGJlZ3VuQXV0b1J1biE9PSJm dW5jdGlvbiIpewp2YXIgdG90YWxfYmFubmVycz13aW5kb3cuYmVndW5fdG90YWxf YmFubmVyc3x8X3RoaXMuZ2V0QWN0dWFsQmxvY2tCYW5uZXJzQ291bnQoKTsKdmFy IEZBS0VfQkxPQ0tfT0ZGU0VUPTIwMDsKd2luZG93LmJlZ3VuX2Jsb2NrX2lkPUZB S0VfQkxPQ0tfT0ZGU0VUK3BhcnNlSW50KHRvdGFsX2Jhbm5lcnMpOwp9CmlmKCF3 aW5kb3cuYmVndW5fZXh0cmFfYmxvY2t8fCFfdGhpcy5pc09sZEJsb2NrKCkpewpf dGhpcy5wcmludEJsb2NrUGxhY2Uod2luZG93LmJlZ3VuX2Jsb2NrX2lkKTsKfQpf dGhpcy5nZXRMb2FkaW5nU3RyYXRlZ3koKS5sb2FkQmxvY2sod2luZG93LmJlZ3Vu X2Jsb2NrX2lkKTsKX3RoaXMuaW5pdEZlZWRMb2FkKCk7Cn1lbHNlIGlmKChfdGhp cy5pbml0LnJ1bil8fCh0eXBlb2Ygd2luZG93LmJlZ3VuX3RvdGFsX2Jhbm5lcnM9 PT0idW5kZWZpbmVkIikpewpCZWd1bi5FcnJvci5zZW5kKCJiZWd1bl9ibG9ja19p ZCBpcyBtaXNzaW5nIixkb2N1bWVudC5sb2NhdGlvbiwtMSk7Cn0KfQp9Owp0aGlz LmdldEFjdHVhbEJsb2NrQmFubmVyc0NvdW50PWZ1bmN0aW9uKGJsb2NrKXsKaWYo dHlwZW9mIGJsb2NrPT09InVuZGVmaW5lZCIpewppZih0eXBlb2Ygd2luZG93LmJl Z3VuX2V4dHJhX2Jsb2NrIT09InVuZGVmaW5lZCIpewpibG9jaz13aW5kb3cuYmVn dW5fZXh0cmFfYmxvY2s7Cn1lbHNlewpyZXR1cm4gMDsKfQp9CnZhciBjb2VmPU1h dGguY2VpbChOdW1iZXIoYmxvY2sub3B0aW9ucy5iYW5uZXJzX2NvdW50X2NvZWYp KXx8MTsKcmV0dXJuIE51bWJlcihibG9jay5vcHRpb25zLmJhbm5lcnNfY291bnQp KmNvZWY7Cn07CnRoaXMuaW5pdEZlZWRMb2FkPWZ1bmN0aW9uKCl7CmlmKF90aGlz LmlzRmVlZFN0YXJ0ZWQoKSl7CnJldHVybiBmYWxzZTsKfQppZihpc0JGU0FwcGxp Y2FibGUoKXx8d2luZG93LmJlZ3VuX2V4dHJhX2Jsb2NrfHwhX3RoaXMuZ2V0RmVl ZCgpKXsKX3RoaXMuc2V0RmVlZFN0YXJ0ZWQoKTsKdGhpcy5mZWVkTG9hZCgpOwp9 CnJldHVybiBmYWxzZTsKfTsKdGhpcy5mZWVkTG9hZD1mdW5jdGlvbihwYXJhbXNV cGRhdGUpewpfdGhpcy5wcmVwYXJlUmVxdWVzdFBhcmFtcyhwYXJhbXNVcGRhdGUp OwpCZWd1bi5VdGlscy5pbmNsdWRlU2NyaXB0KAooX3RoaXMuU3RyaW5ncy51cmxz LmRhZW1vbitCZWd1bi5VdGlscy50b1F1ZXJ5KF90aGlzLnJlcXVlc3RQYXJhbXMp KS5zdWJzdHJpbmcoMCwxNTI0KS5yZXBsYWNlKC8lWzAtOWEtZkEtRl0/JC8sJycp LAond3JpdGUnLAp1bmRlZmluZWQsCnVuZGVmaW5lZCwKJ2JlZ3VuQWRzJwopOwpf dGhpcy5yZXF1ZXN0UGFyYW1zLmJsb2NrX2lkPSIiOwpfdGhpcy5yZXF1ZXN0UGFy YW1zLmJlZ3VuX3NlbGZfa2V5d29yZHM9IiI7CnJldHVybiB0cnVlOwp9Owp0aGlz LmdldEdyYXBoSFRNTD1mdW5jdGlvbihncmFwaF9iYW5uZXIsY2FsbGJhY2ssd2lk dGgsaGVpZ2h0KXsKd2lkdGg9d2lkdGh8fDI0MDsKaGVpZ2h0PWhlaWdodHx8NDAw Owp2YXIgdHlwZT0naW1nJzsKaWYoKCJzd2YiPT1ncmFwaF9iYW5uZXIubWltZSl8 fCgiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giPT1ncmFwaF9iYW5uZXIu bWltZSkpewp0eXBlPSdzd2YnOwp9ZWxzZSBpZigoImpzIj09Z3JhcGhfYmFubmVy Lm1pbWUpfHwoImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCI9PWdyYXBoX2Jhbm5l ci5taW1lKSl7CnR5cGU9J2pzJzsKQmVndW4uVXRpbHMuaW5jbHVkZVNjcmlwdChn cmFwaF9iYW5uZXIuc291cmNlLCdhcHBlbmQnLGNhbGxiYWNrfHxudWxsKTsKfQp2 YXIgdmFycz17J3VybCc6Z3JhcGhfYmFubmVyLnVybCwnc291cmNlJzpncmFwaF9i YW5uZXIuc291cmNlLCd3aWR0aCc6d2lkdGgsJ2hlaWdodCc6aGVpZ2h0fTsKcmV0 dXJuKG5ldyBCZWd1bi5UZW1wbGF0ZShfdGhpcy5UcGxzLmdldEhUTUwoJ3NlYXJj aF9iYW5uZXJfJyt0eXBlKSkpLmV2YWx1YXRlKHZhcnMpOwp9Owp0aGlzLmluaXRG aWxsZWRCYW5uZXJzRGF0YT1mdW5jdGlvbihibG9jayl7CmlmKGJsb2NrJiYhYmxv Y2suZmlsbGVkX2Jhbm5lcnNfZGF0YSl7CmJsb2NrLmZpbGxlZF9iYW5uZXJzX2Rh dGE9ewp0ZXh0OjAsCmdyYXBoOjAsCmNvZGU6MAp9Owp9Cn07CnRoaXMuaW5zZXJ0 Tm9uVGV4dEJsb2NrPWZ1bmN0aW9uKGJsb2NrKXsKaWYoX3RoaXMuQmxvY2tzLmNo ZWNrVHlwZShibG9jaywnaHlwZXInKSl7CnJldHVybjsKfQp0aGlzLmluaXRGaWxs ZWRCYW5uZXJzRGF0YShibG9jayk7CmFyZ3VtZW50cy5jYWxsZWUuYmxvY2tzSGFu ZGxlZD1hcmd1bWVudHMuY2FsbGVlLmJsb2Nrc0hhbmRsZWR8fFtdOwppZihCZWd1 bi5VdGlscy5pbl9hcnJheShhcmd1bWVudHMuY2FsbGVlLmJsb2Nrc0hhbmRsZWQs YmxvY2spKXsKcmV0dXJuOwp9ZWxzZXsKYXJndW1lbnRzLmNhbGxlZS5ibG9ja3NI YW5kbGVkLnB1c2goYmxvY2spOwp9CnZhciBmZXRjaEJhbm5lcnM9ZnVuY3Rpb24o YmxvY2tfaWQsdHlwZSl7CnZhciBpPTA7CnZhciBvYmo9W107CnZhciBiYW5uZXI9 bnVsbDsKd2hpbGUoYmFubmVyPV90aGlzLmdldEJhbm5lcih0eXBlLGkpKXsKaWYo YmFubmVyLmJsb2NrX2lkPT1ibG9ja19pZCl7Cm9ialtvYmoubGVuZ3RoXT1iYW5u ZXI7Cn0KaSsrOwp9CnJldHVybiBvYmo7Cn07CgppZighYXJndW1lbnRzLmNhbGxl ZS5jb2RlX3BhdGNoZWQpewp2YXIgZmVlZD1fdGhpcy5nZXRGZWVkKCk7CmlmKGZl ZWQmJmZlZWQuY29kZSYmZmVlZC5iYW5uZXJzJiYhZmVlZC5iYW5uZXJzLmNvZGUp ewpmZWVkLmJhbm5lcnMuY29kZT1mZWVkLmNvZGU7Cn0KYXJndW1lbnRzLmNhbGxl ZS5jb2RlX3BhdGNoZWQ9dHJ1ZTsKfQp2YXIgYmxvY2tfaWQ9YmxvY2suaWQ7CnZh ciBjb2Rlcz1mZXRjaEJhbm5lcnMoYmxvY2tfaWQsJ2NvZGUnKTsKdmFyIGdyYXBo cz1mZXRjaEJhbm5lcnMoYmxvY2tfaWQsJ2dyYXBoJyk7CmlmKGNvZGVzKXsKZm9y KHZhciBpPTAsbD1jb2Rlcy5sZW5ndGg7aTxsO2krKyl7CmlmKGNvZGVzW2ldLmpz JiZjb2Rlc1tpXS5qcyE9JycpewpCZWd1bi5VdGlscy5ldmFsU2NyaXB0KGNvZGVz W2ldLmpzKTsKYmxvY2suZmlsbGVkX2Jhbm5lcnNfZGF0YS5jb2RlKys7CmJsb2Nr Lm5vblRleHRCYW5uZXJzSW5zZXJ0ZWQ9dHJ1ZTsKfQp9Cn0KdmFyIHR5cGU9Ymxv Y2smJmJsb2NrLm9wdGlvbnMmJmJsb2NrLm9wdGlvbnMuZGltZW5zaW9ucyYmYmxv Y2sub3B0aW9ucy5kaW1lbnNpb25zLnR5cGU7CmlmKGdyYXBocyl7CmZvcih2YXIg aT0wLGw9Z3JhcGhzLmxlbmd0aDtpPGw7aSsrKXsKaWYoZ3JhcGhzW2ldLmxvYWRl ZCl7CmNvbnRpbnVlOwp9CmlmKGJsb2NrLm9wdGlvbnMudmlld190eXBlJiZibG9j ay5vcHRpb25zLnZpZXdfdHlwZS5pbmRleE9mKCdHcmFwaCcpIT0tMSl7CmlmKCFh cmd1bWVudHMuY2FsbGVlLmJhbm5lcl82MDB4OTBfaW5zZXJ0ZWQmJmJsb2NrX2lk PT1CTE9DS19JRF9CQU5ORVJfNjAweDkwKXsKdmFyIGh0bWw9X3RoaXMuZ2V0R3Jh cGhIVE1MKGdyYXBoc1tpXSxudWxsLDYwMCw5MCk7Cl90aGlzLnByZXBhcmVUb3BH cmFwaEJhbm5lcihibG9jay5pZCk7Cl90aGlzLmRpc3BhdGNoQmxvY2tEcmF3Q2Fs bGJhY2soYmxvY2spOwphcmd1bWVudHMuY2FsbGVlLmJhbm5lcl82MDB4OTBfaW5z ZXJ0ZWQ9dHJ1ZTsKfWVsc2V7CmlmKCFhcmd1bWVudHMuY2FsbGVlLnRvcF9tb2Jp bGVfaW5zZXJ0ZWQmJmJsb2NrX2lkPT1CTE9DS19JRF9UT1BfTU9CSUxFJiZfdGhp cy5nZXRGZWVkKCkucGFyYW1zLmlzX21vYmlsZSl7Cl90aGlzLnByZXBhcmVUb3BN b2JpbGVCbG9jayhibG9jay5pZCk7CmFyZ3VtZW50cy5jYWxsZWUudG9wX21vYmls ZV9pbnNlcnRlZD10cnVlOwp9CnZhciBvYmo9X3RoaXMuZ2V0R3JhcGhEaW1lbnNp b25zKGJsb2NrLm9wdGlvbnMudmlld190eXBlKTsKdmFyIGh0bWw9X3RoaXMuZ2V0 R3JhcGhIVE1MKGdyYXBoc1tpXSxmdW5jdGlvbigpewppZih0eXBlb2YgYmVndW5K c0Jhbm5lclN0cmluZz09PSJzdHJpbmciKXsKdmFyIGVsZW09X3RoaXMuQmxvY2tz LmdldERvbU9iaihibG9jay5pZCk7CmVsZW0uaW5uZXJIVE1MPWJlZ3VuSnNCYW5u ZXJTdHJpbmc7Cn0KfSxvYmoud2lkdGgsb2JqLmhlaWdodCk7Cn0KYmxvY2suZmls bGVkX2Jhbm5lcnNfZGF0YS5ncmFwaCsrOwpibG9jay5ub25UZXh0QmFubmVyc0lu c2VydGVkPXRydWU7CmdyYXBoc1tpXS5sb2FkZWQ9dHJ1ZTsKdmFyIGJsb2NrX3Bs YWNlPV90aGlzLkJsb2Nrcy5nZXREb21PYmooYmxvY2tfaWQpOwppZihodG1sJiZi bG9ja19wbGFjZSl7CmJsb2NrX3BsYWNlLmlubmVySFRNTD1odG1sOwpyZXR1cm47 Cn0KfQp9Cn0KaWYoIWFyZ3VtZW50cy5jYWxsZWUudG9wX21vYmlsZV9pbnNlcnRl ZCYmYmxvY2tfaWQ9PUJMT0NLX0lEX1RPUF9NT0JJTEUmJl90aGlzLmdldEZlZWQo KS5wYXJhbXMuaXNfbW9iaWxlJiZmZXRjaEJhbm5lcnMoQkxPQ0tfSURfVE9QX01P QklMRSwnYXV0b2NvbnRleHQnKS5sZW5ndGgpewpfdGhpcy5wcmVwYXJlVG9wTW9i aWxlQmxvY2soYmxvY2tfaWQpOwphcmd1bWVudHMuY2FsbGVlLnRvcF9tb2JpbGVf aW5zZXJ0ZWQ9dHJ1ZTsKfQoKfTsKdGhpcy5nZXRHcmFwaERpbWVuc2lvbnM9ZnVu Y3Rpb24oc3JjKXsKdmFyIGRpbWVuc2lvbnM9c3JjLm1hdGNoKC8oXGQqKXgoXGQq KSQvKXx8WzAsMF07CnJldHVybnsKd2lkdGg6ZGltZW5zaW9uc1sxXSwKaGVpZ2h0 OmRpbWVuc2lvbnNbMl0KfQp9Owp0aGlzLnByZXBhcmVUb3BNb2JpbGVCbG9jaz1m dW5jdGlvbihibG9ja19pZCl7CnRyeXsKdmFyIHZhcnM9e2lkOl90aGlzLlN0cmlu Z3MuY3NzLmJsb2NrX3ByZWZpeCtibG9ja19pZH07CnZhciBibG9ja193cmFwcGVy PXRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmVndW5fdG9wX21vYmlsZV9i bG9ja193cmFwcGVyJyk7CmlmKCFibG9ja193cmFwcGVyKXsKdmFyIGJvPXRvcC5k b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnQk9EWScpOwp2YXIgYmxvY2tf d3JhcHBlcj10b3AuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CmJsb2Nr X3dyYXBwZXIuaWQ9J2JlZ3VuX3RvcF9tb2JpbGVfYmxvY2tfd3JhcHBlcic7CmJv WzBdLmluc2VydEJlZm9yZShibG9ja193cmFwcGVyLGJvWzBdLmZpcnN0Q2hpbGQp Owp9CmJsb2NrX3dyYXBwZXIuaW5uZXJIVE1MPShuZXcgQmVndW4uVGVtcGxhdGUo X3RoaXMuVHBscy5nZXRIVE1MKCdibGNrX3BsYWNlJykpKS5ldmFsdWF0ZSh2YXJz KTsKfWNhdGNoKGUpe30KfTsKdGhpcy5wcmVwYXJlVG9wR3JhcGhCYW5uZXI9ZnVu Y3Rpb24oYmxvY2tfaWQpewp0cnl7CnZhciB2YXJzPXtpZDpfdGhpcy5TdHJpbmdz LmNzcy5ibG9ja19wcmVmaXgrYmxvY2tfaWR9Owp2YXIgYmFubmVyX3dyYXBwZXI9 dG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZWd1bl90b3BfZ3JhcGhfYmFu bmVyX3dyYXBwZXInKTsKaWYoIWJhbm5lcl93cmFwcGVyKXsKdmFyIGJvPXRvcC5k b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnQk9EWScpOwp2YXIgYmFubmVy X3dyYXBwZXI9dG9wLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwpiYW5u ZXJfd3JhcHBlci5pZD0nYmVndW5fdG9wX2dyYXBoX2Jhbm5lcl93cmFwcGVyJzsK Ym9bMF0uaW5zZXJ0QmVmb3JlKGJhbm5lcl93cmFwcGVyLGJvWzBdLmZpcnN0Q2hp bGQpOwp9CmJhbm5lcl93cmFwcGVyLmlubmVySFRNTD0obmV3IEJlZ3VuLlRlbXBs YXRlKF90aGlzLlRwbHMuZ2V0SFRNTCgndG9wX2dyYXBoX2Jhbm5lcicpKSkuZXZh bHVhdGUodmFycyk7Cn1jYXRjaChlKXt9Cn07CnRoaXMuaXNPbGRCbG9jaz1mdW5j dGlvbigpewp2YXIgaXNQYWROZXc9ZnVuY3Rpb24ocGFyYW1zKXsKaWYoIXBhcmFt c3x8IXdpbmRvdy5iZWd1bl9hdXRvX3BhZCl7CnJldHVybiBmYWxzZTsKfQpyZXR1 cm4gQmVndW4uVXRpbHMuaW5fYXJyYXkocGFyYW1zLnNwbGl0KCcsJyksd2luZG93 LmJlZ3VuX2F1dG9fcGFkKTsKfTsKaWYodHlwZW9mIF90aGlzLnJlc3BvbnNlUGFy YW1zWydvbGRfYmxvY2tzJ10hPT0idW5kZWZpbmVkIiYmTnVtYmVyKF90aGlzLnJl c3BvbnNlUGFyYW1zWydvbGRfYmxvY2tzJ10pIT0wJiZ0eXBlb2YgYmVndW5BdXRv UnVuPT0nZnVuY3Rpb24nKXsKdmFyIGZlZWQ9X3RoaXMuZ2V0RmVlZCgpOwppZihm ZWVkJiZmZWVkLmNvb2tpZXMmJmZlZWQuY29va2llcy5qc19mb3JjZV9uZXdfcGFk cyYmaXNQYWROZXcoZmVlZC5jb29raWVzLmpzX2ZvcmNlX25ld19wYWRzKSl7CnJl dHVybiBmYWxzZTsKfQpyZXR1cm4gdHJ1ZTsKfQpyZXR1cm4gZmFsc2U7Cn07CnRo aXMucmVuZGVyT2xkQmxvY2s9ZnVuY3Rpb24oKXsKaWYoX3RoaXMuaXNPbGRCbG9j aygpKXsKYmVndW5BdXRvUnVuKCk7CnJldHVybiB0cnVlOwp9CnJldHVybiBmYWxz ZTsKfTsKdGhpcy5sb2FkRmVlZERvbmU9ZnVuY3Rpb24oKXsKdGhpcy5DYWxsYmFj a3MuZGlzcGF0Y2goJ2ZlZWQnLCdsb2FkJyx0aGlzLFt3aW5kb3cuYmVndW5BZHNd KTsKdmFyIGV4dGVuZFZpc3VhbE9wdGlvbnM9ZnVuY3Rpb24obmV3VmlzdWFsT3B0 aW9ucyl7CkJlZ3VuLmV4dGVuZCh0aGlzLm9wdGlvbnMudmlzdWFsLG5ld1Zpc3Vh bE9wdGlvbnMpOwp9Owp2YXIgc2V0QmxvY2tCYW5uZXJDb21wb25lbnRzPWZ1bmN0 aW9uKGNvbXBvbmVudHNQYXJhbXMpewpmb3IodmFyIHBhcmFtIGluIGNvbXBvbmVu dHNQYXJhbXMpewppZihjb21wb25lbnRzUGFyYW1zLmhhc093blByb3BlcnR5KHBh cmFtKSl7CmlmKHR5cGVvZiB0aGlzLm9wdGlvbnMudmlzdWFsW3BhcmFtXSE9PSJv YmplY3QiKXsKdGhpcy5vcHRpb25zLnZpc3VhbFtwYXJhbV09e307Cn0KaWYoIWNv bXBvbmVudHNQYXJhbXNbcGFyYW1dKXsKdGhpcy5vcHRpb25zLnZpc3VhbFtwYXJh bV1bImRpc3BsYXkiXT0ibm9uZSI7Cn1lbHNlewp0aGlzLm9wdGlvbnMudmlzdWFs W3BhcmFtXVsiZGlzcGxheSJdPSIiOwp9Cn0KfQp9Owp2YXIgc2V0VGh1bWJQYXJh bXM9ZnVuY3Rpb24odmlzdWFsUGFyYW1zKXsKdmFyIG1peGluVGh1bWI9e307CmZv cih2YXIgcGFyYW0gaW4gdmlzdWFsUGFyYW1zKXsKaWYodmlzdWFsUGFyYW1zLmhh c093blByb3BlcnR5KHBhcmFtKSl7CmlmKHR5cGVvZiBtaXhpblRodW1iLnRodW1i U3R5bGVzPT09InVuZGVmaW5lZCIpewptaXhpblRodW1iLnRodW1iU3R5bGVzPXt9 Owp9Cm1peGluVGh1bWIudGh1bWJTdHlsZXNbcGFyYW1dPXZpc3VhbFBhcmFtc1tw YXJhbV07Cn0KfQpCZWd1bi5leHRlbmQodGhpcy5vcHRpb25zLnZpc3VhbCxtaXhp blRodW1iKTsKfTsKZm9yKHZhciBpPTA7d2luZG93LmJlZ3VuQWRzJiZ3aW5kb3cu YmVndW5BZHMuYmxvY2tzJiZpPHdpbmRvdy5iZWd1bkFkcy5ibG9ja3MubGVuZ3Ro O2krKyl7CndpbmRvdy5iZWd1bkFkcy5ibG9ja3NbaV0uc2V0VmlzdWFsT3B0aW9u cz1leHRlbmRWaXN1YWxPcHRpb25zOwppZih0eXBlb2Ygd2luZG93LmJlZ3VuQWRz LmJsb2Nrc1tpXS5vcHRpb25zLmpzb249PSJvYmplY3QiJiZ0eXBlb2Ygd2luZG93 LmJlZ3VuQWRzLmJsb2Nrc1tpXS5vcHRpb25zLmpzb24uYmFubmVyX2NvbXBvbmVu dHM9PSJvYmplY3QiKXsKc2V0QmxvY2tCYW5uZXJDb21wb25lbnRzLmNhbGwod2lu ZG93LmJlZ3VuQWRzLmJsb2Nrc1tpXSx3aW5kb3cuYmVndW5BZHMuYmxvY2tzW2ld Lm9wdGlvbnMuanNvbi5iYW5uZXJfY29tcG9uZW50cyk7Cn0Kd2luZG93LmJlZ3Vu QWRzLmJsb2Nrc1tpXS5zZXRCYW5uZXJDb21wb25lbnRzPXNldEJsb2NrQmFubmVy Q29tcG9uZW50czsKd2luZG93LmJlZ3VuQWRzLmJsb2Nrc1tpXS5zZXRUaHVtYk9w dGlvbnM9c2V0VGh1bWJQYXJhbXM7Cl90aGlzLmluaXRGaWxsZWRCYW5uZXJzRGF0 YSh3aW5kb3cuYmVndW5BZHMuYmxvY2tzW2ldKTsKCmlmKHdpbmRvdy5iZWd1bkFk cy5ibG9ja3NbaV0mJndpbmRvdy5iZWd1bkFkcy5ibG9ja3NbaV0ub3B0aW9ucyYm d2luZG93LmJlZ3VuQWRzLmJsb2Nrc1tpXS5vcHRpb25zLmRpbWVuc2lvbnMmJndp bmRvdy5iZWd1bkFkcy5ibG9ja3NbaV0ub3B0aW9ucy5kaW1lbnNpb25zLnR5cGUm JndpbmRvdy5iZWd1bkFkcy5ibG9ja3NbaV0ub3B0aW9ucy5kaW1lbnNpb25zLnR5 cGUudG9Mb3dlckNhc2UpewpFeHRCbG9ja1R5cGVzLmxvYWQoImJlZ3VuX3RwbF9i bG9ja18iK3dpbmRvdy5iZWd1bkFkcy5ibG9ja3NbaV0ub3B0aW9ucy5kaW1lbnNp b25zLnR5cGUpOwp9Cn0KaWYod2luZG93LmJlZ3VuX2V4dHJhX2Jsb2NrJiZ3aW5k b3cuYmVndW5fZXh0cmFfYmxvY2sub3B0aW9ucyYmd2luZG93LmJlZ3VuX2V4dHJh X2Jsb2NrLm9wdGlvbnMuZGltZW5zaW9ucyYmd2luZG93LmJlZ3VuX2V4dHJhX2Js b2NrLm9wdGlvbnMuZGltZW5zaW9ucy50eXBlJiZ3aW5kb3cuYmVndW5fZXh0cmFf YmxvY2sub3B0aW9ucy5kaW1lbnNpb25zLnR5cGUudG9Mb3dlckNhc2UpewpFeHRC bG9ja1R5cGVzLmxvYWQoImJlZ3VuX3RwbF9ibG9ja18iK3dpbmRvdy5iZWd1bl9l eHRyYV9ibG9jay5vcHRpb25zLmRpbWVuc2lvbnMudHlwZSk7Cn0KX3RoaXMuZ2V0 UGFkKCkuZmVlZD13aW5kb3cuYmVndW5BZHM7CkJlZ3VuLmV4dGVuZChfdGhpcy5y ZXNwb25zZVBhcmFtcyxfdGhpcy5nZXRGZWVkKCkmJl90aGlzLmdldEZlZWQoKS5w YXJhbXN8fHt9KTsKaWYoIV90aGlzLnJlbmRlck9sZEJsb2NrKCkpewpfdGhpcy5n ZXRMb2FkaW5nU3RyYXRlZ3koKS5wYXJzZUZlZWQoKTsKZm9yKHZhciBpPTA7aTxG QUtFX0JMT0NLUy5sZW5ndGg7aSsrKXsKdmFyIGJsb2NrPV90aGlzLkJsb2Nrcy5n ZXRCbG9ja0J5SWQoRkFLRV9CTE9DS1NbaV0pOwppZihibG9jayl7CmlmKEZBS0Vf QkxPQ0tTW2ldPT1CTE9DS19JRF9UT1BfTU9CSUxFKXsKZm9yKHZhciBqPTA7ajxf dGhpcy5nZXRCbG9ja3MoKS5sZW5ndGg7aisrKXsKaWYoIUJlZ3VuLlV0aWxzLmlu X2FycmF5KEZBS0VfQkxPQ0tTLF90aGlzLmdldEJsb2NrcygpW2pdLmlkKSl7CmJs b2NrLm9wdGlvbnMudmlzdWFsPV90aGlzLmdldEJsb2NrcygpW2pdLm9wdGlvbnMu dmlzdWFsOwpicmVhazsKfQp9Cn0KX3RoaXMuaW5zZXJ0Tm9uVGV4dEJsb2NrKGJs b2NrKTsKfQp9Cl90aGlzLmRyYXcoKTsKfQp9Owp0aGlzLnByaW50QmxvY2tQbGFj ZT1mdW5jdGlvbihibG9ja19pZCl7CnZhciB2YXJzPXtpZDpfdGhpcy5TdHJpbmdz LmNzcy5ibG9ja19wcmVmaXgrYmxvY2tfaWR9OwppZihkb2N1bWVudC5ib2R5KXsK ZG9jdW1lbnQud3JpdGUoKG5ldyBCZWd1bi5UZW1wbGF0ZShfdGhpcy5UcGxzLmdl dEhUTUwoJ2JsY2tfcGxhY2UnKSkpLmV2YWx1YXRlKHZhcnMpKTsKfWVsc2V7CmRv Y3VtZW50LndyaXRlKCI8Ym9keT4iKyhuZXcgQmVndW4uVGVtcGxhdGUoX3RoaXMu VHBscy5nZXRIVE1MKCdibGNrX3BsYWNlJykpKS5ldmFsdWF0ZSh2YXJzKSsiPC9i b2R5PiIpOwp9Cn07CnRoaXMucHJpbnREZWZhdWx0U3R5bGU9ZnVuY3Rpb24oKXsK QmVndW4uVXRpbHMuaW5jbHVkZVN0eWxlKF90aGlzLlRwbHMuZ2V0Q1NTKCdkZWZh dWx0JyksJ3dyaXRlJyk7Cn07CnZhciBnZXRCR0NvbG9yPWZ1bmN0aW9uKGJsb2Nr KXsKdmFyIGJnY29sb3I9QmVndW4uVXRpbHMuZ2V0U3R5bGUoYmxvY2ssJ2JhY2tn cm91bmQtY29sb3InKTsKd2hpbGUoYmdjb2xvcj09J3RyYW5zcGFyZW50Jyl7Cmlm KGJsb2NrLm5vZGVOYW1lPT0nQk9EWScpewp2YXIgYm9keV9iZz1CZWd1bi5VdGls cy5nZXRTdHlsZShibG9jaywnYmFja2dyb3VuZC1jb2xvcicpOwppZihib2R5X2Jn PT0ndHJhbnNwYXJlbnQnKXsKYmdjb2xvcj0nI0ZGRkZGRic7Cn1lbHNlewpiZ2Nv bG9yPUJlZ3VuLlV0aWxzLmdldFN0eWxlKGJsb2NrLCdiYWNrZ3JvdW5kLWNvbG9y Jyk7Cn0KYnJlYWs7Cn0KYmxvY2s9YmxvY2sucGFyZW50Tm9kZTsKYmdjb2xvcj1C ZWd1bi5VdGlscy5nZXRTdHlsZShibG9jaywnYmFja2dyb3VuZC1jb2xvcicpOwp9 CnJldHVybiBiZ2NvbG9yOwp9Owp0aGlzLmdldExvZ29Db2xvcj1mdW5jdGlvbihz dHlsZXMsYmxvY2tfaWQpewp2YXIgZGVmYXVsdF9sb2dvX2NvbG9yPV90aGlzLlN0 cmluZ3MuY3NzLmxvZ29fY29sb3I7CmlmKHN0eWxlcy5ibG9jayl7CnZhciBpc19s b2dvX3RyYW5zcGFyZW50PWZhbHNlOwppZigoc3R5bGVzLmJsb2NrLmJhY2tncm91 bmRDb2xvciYmc3R5bGVzLmJsb2NrLmJhY2tncm91bmRDb2xvci50b0xvd2VyQ2Fz ZSgpPT0ndHJhbnNwYXJlbnQnKXx8IXN0eWxlcy5ibG9jay5iYWNrZ3JvdW5kQ29s b3Ipewp2YXIgYmxvY2s9X3RoaXMuQmxvY2tzLmdldERvbU9iaihibG9ja19pZCk7 CnZhciB0b051bWJlcnM9ZnVuY3Rpb24oc3RyKXsKdmFyIHJldD1bXTsKc3RyLnJl cGxhY2UoLyguLikvZyxmdW5jdGlvbihzdHIpewpyZXQucHVzaChwYXJzZUludChz dHIsMTYpKTsKfSk7CnJldHVybiByZXQ7Cn07CnZhciBhcmVDb2xvcnNUb29DbG9z ZT1mdW5jdGlvbihjMSxjMixkZWx0YSl7CmZvcih2YXIgaT0wO2k8YXJndW1lbnRz Lmxlbmd0aDtpKyspewppZigwPT1hcmd1bWVudHNbaV0uaW5kZXhPZignIycpKXsK YXJndW1lbnRzW2ldPXRvTnVtYmVycyhhcmd1bWVudHNbaV0uc2xpY2UoMSkpOwp9 ZWxzZXsKcmV0dXJuIGZhbHNlOwp9Cn0KZGVsdGE9ZGVsdGF8fDEwMDsKcmV0dXJu KE1hdGguc3FydCgoYzFbMF0tYzJbMF0pKihjMVswXS1jMlswXSkrKGMxWzFdLWMy WzFdKSooYzFbMV0tYzJbMV0pKyhjMVsyXS1jMlsyXSkqKGMxWzJdLWMyWzJdKSk8 ZGVsdGEpOwp9Owp2YXIgY29udmVydENvbG9yPWZ1bmN0aW9uKGNvbG9yX3N0cmlu Zyl7CmlmKGNvbG9yX3N0cmluZy5jaGFyQXQoMCk9PScjJyl7CmNvbG9yX3N0cmlu Zz1jb2xvcl9zdHJpbmcuc3Vic3RyKDEsNik7Cn0KY29sb3Jfc3RyaW5nPWNvbG9y X3N0cmluZy5yZXBsYWNlKC8gL2csJycpOwpjb2xvcl9zdHJpbmc9Y29sb3Jfc3Ry aW5nLnRvTG93ZXJDYXNlKCk7CnZhciBzaW1wbGVfY29sb3JzPXthbGljZWJsdWU6 J2YwZjhmZicsYW50aXF1ZXdoaXRlOidmYWViZDcnLGFxdWE6JzAwZmZmZicsYXF1 YW1hcmluZTonN2ZmZmQ0JyxhenVyZTonZjBmZmZmJyxiZWlnZTonZjVmNWRjJyxi aXNxdWU6J2ZmZTRjNCcsYmxhY2s6JzAwMDAwMCcsYmxhbmNoZWRhbG1vbmQ6J2Zm ZWJjZCcsYmx1ZTonMDAwMGZmJyxibHVldmlvbGV0Oic4YTJiZTInLGJyb3duOidh NTJhMmEnLGJ1cmx5d29vZDonZGViODg3JyxjYWRldGJsdWU6JzVmOWVhMCcsY2hh cnRyZXVzZTonN2ZmZjAwJyxjaG9jb2xhdGU6J2QyNjkxZScsY29yYWw6J2ZmN2Y1 MCcsY29ybmZsb3dlcmJsdWU6JzY0OTVlZCcsY29ybnNpbGs6J2ZmZjhkYycsY3Jp bXNvbjonZGMxNDNjJyxjeWFuOicwMGZmZmYnLGRhcmtibHVlOicwMDAwOGInLGRh cmtjeWFuOicwMDhiOGInLGRhcmtnb2xkZW5yb2Q6J2I4ODYwYicsZGFya2dyYXk6 J2E5YTlhOScsZGFya2dyZWVuOicwMDY0MDAnLGRhcmtraGFraTonYmRiNzZiJyxk YXJrbWFnZW50YTonOGIwMDhiJyxkYXJrb2xpdmVncmVlbjonNTU2YjJmJyxkYXJr b3JhbmdlOidmZjhjMDAnLGRhcmtvcmNoaWQ6Jzk5MzJjYycsZGFya3JlZDonOGIw MDAwJyxkYXJrc2FsbW9uOidlOTk2N2EnLGRhcmtzZWFncmVlbjonOGZiYzhmJyxk YXJrc2xhdGVibHVlOic0ODNkOGInLGRhcmtzbGF0ZWdyYXk6JzJmNGY0ZicsZGFy a3R1cnF1b2lzZTonMDBjZWQxJyxkYXJrdmlvbGV0Oic5NDAwZDMnLGRlZXBwaW5r OidmZjE0OTMnLGRlZXBza3libHVlOicwMGJmZmYnLGRpbWdyYXk6JzY5Njk2OScs ZG9kZ2VyYmx1ZTonMWU5MGZmJyxmZWxkc3BhcjonZDE5Mjc1JyxmaXJlYnJpY2s6 J2IyMjIyMicsZmxvcmFsd2hpdGU6J2ZmZmFmMCcsZm9yZXN0Z3JlZW46JzIyOGIy MicsZnVjaHNpYTonZmYwMGZmJyxnYWluc2Jvcm86J2RjZGNkYycsZ2hvc3R3aGl0 ZTonZjhmOGZmJyxnb2xkOidmZmQ3MDAnLGdvbGRlbnJvZDonZGFhNTIwJyxncmF5 Oic4MDgwODAnLGdyZWVuOicwMDgwMDAnLGdyZWVueWVsbG93OidhZGZmMmYnLGhv bmV5ZGV3OidmMGZmZjAnLGhvdHBpbms6J2ZmNjliNCcsaW5kaWFucmVkOidjZDVj NWMnLGluZGlnbzonNGIwMDgyJyxpdm9yeTonZmZmZmYwJyxraGFraTonZjBlNjhj JyxsYXZlbmRlcjonZTZlNmZhJyxsYXZlbmRlcmJsdXNoOidmZmYwZjUnLGxhd25n cmVlbjonN2NmYzAwJyxsZW1vbmNoaWZmb246J2ZmZmFjZCcsbGlnaHRibHVlOidh ZGQ4ZTYnLGxpZ2h0Y29yYWw6J2YwODA4MCcsbGlnaHRjeWFuOidlMGZmZmYnLGxp Z2h0Z29sZGVucm9keWVsbG93OidmYWZhZDInLGxpZ2h0Z3JleTonZDNkM2QzJyxs aWdodGdyZWVuOic5MGVlOTAnLGxpZ2h0cGluazonZmZiNmMxJyxsaWdodHNhbG1v bjonZmZhMDdhJyxsaWdodHNlYWdyZWVuOicyMGIyYWEnLGxpZ2h0c2t5Ymx1ZTon ODdjZWZhJyxsaWdodHNsYXRlYmx1ZTonODQ3MGZmJyxsaWdodHNsYXRlZ3JheTon Nzc4ODk5JyxsaWdodHN0ZWVsYmx1ZTonYjBjNGRlJyxsaWdodHllbGxvdzonZmZm ZmUwJyxsaW1lOicwMGZmMDAnLGxpbWVncmVlbjonMzJjZDMyJyxsaW5lbjonZmFm MGU2JyxtYWdlbnRhOidmZjAwZmYnLG1hcm9vbjonODAwMDAwJyxtZWRpdW1hcXVh bWFyaW5lOic2NmNkYWEnLG1lZGl1bWJsdWU6JzAwMDBjZCcsbWVkaXVtb3JjaGlk OidiYTU1ZDMnLG1lZGl1bXB1cnBsZTonOTM3MGQ4JyxtZWRpdW1zZWFncmVlbjon M2NiMzcxJyxtZWRpdW1zbGF0ZWJsdWU6JzdiNjhlZScsbWVkaXVtc3ByaW5nZ3Jl ZW46JzAwZmE5YScsbWVkaXVtdHVycXVvaXNlOic0OGQxY2MnLG1lZGl1bXZpb2xl dHJlZDonYzcxNTg1JyxtaWRuaWdodGJsdWU6JzE5MTk3MCcsbWludGNyZWFtOidm NWZmZmEnLG1pc3R5cm9zZTonZmZlNGUxJyxtb2NjYXNpbjonZmZlNGI1JyxuYXZh am93aGl0ZTonZmZkZWFkJyxuYXZ5OicwMDAwODAnLG9sZGxhY2U6J2ZkZjVlNics b2xpdmU6JzgwODAwMCcsb2xpdmVkcmFiOic2YjhlMjMnLG9yYW5nZTonZmZhNTAw JyxvcmFuZ2VyZWQ6J2ZmNDUwMCcsb3JjaGlkOidkYTcwZDYnLHBhbGVnb2xkZW5y b2Q6J2VlZThhYScscGFsZWdyZWVuOic5OGZiOTgnLHBhbGV0dXJxdW9pc2U6J2Fm ZWVlZScscGFsZXZpb2xldHJlZDonZDg3MDkzJyxwYXBheWF3aGlwOidmZmVmZDUn LHBlYWNocHVmZjonZmZkYWI5JyxwZXJ1OidjZDg1M2YnLHBpbms6J2ZmYzBjYics cGx1bTonZGRhMGRkJyxwb3dkZXJibHVlOidiMGUwZTYnLHB1cnBsZTonODAwMDgw JyxyZWQ6J2ZmMDAwMCcscm9zeWJyb3duOidiYzhmOGYnLHJveWFsYmx1ZTonNDE2 OWUxJyxzYWRkbGVicm93bjonOGI0NTEzJyxzYWxtb246J2ZhODA3Micsc2FuZHli cm93bjonZjRhNDYwJyxzZWFncmVlbjonMmU4YjU3JyxzZWFzaGVsbDonZmZmNWVl JyxzaWVubmE6J2EwNTIyZCcsc2lsdmVyOidjMGMwYzAnLHNreWJsdWU6Jzg3Y2Vl Yicsc2xhdGVibHVlOic2YTVhY2QnLHNsYXRlZ3JheTonNzA4MDkwJyxzbm93Oidm ZmZhZmEnLHNwcmluZ2dyZWVuOicwMGZmN2YnLHN0ZWVsYmx1ZTonNDY4MmI0Jyx0 YW46J2QyYjQ4YycsdGVhbDonMDA4MDgwJyx0aGlzdGxlOidkOGJmZDgnLHRvbWF0 bzonZmY2MzQ3Jyx0dXJxdW9pc2U6JzQwZTBkMCcsdmlvbGV0OidlZTgyZWUnLHZp b2xldHJlZDonZDAyMDkwJyx3aGVhdDonZjVkZWIzJyx3aGl0ZTonZmZmZmZmJyx3 aGl0ZXNtb2tlOidmNWY1ZjUnLHllbGxvdzonZmZmZjAwJyx5ZWxsb3dncmVlbjon OWFjZDMyJ307CmZvcih2YXIga2V5IGluIHNpbXBsZV9jb2xvcnMpewppZihjb2xv cl9zdHJpbmc9PWtleSl7CmNvbG9yX3N0cmluZz1zaW1wbGVfY29sb3JzW2tleV07 Cn0KfQp2YXIgY29sb3JfZGVmcz1bCnsKcmU6L15yZ2JcKChcZHsxLDN9KSxccyoo XGR7MSwzfSksXHMqKFxkezEsM30pXCkkLywKZXhhbXBsZTpbJ3JnYigxMjMsIDIz NCwgNDUpJywncmdiKDI1NSwyMzQsMjQ1KSddLApwcm9jZXNzOmZ1bmN0aW9uKGJp dHMpewpyZXR1cm5bCnBhcnNlSW50KGJpdHNbMV0pLApwYXJzZUludChiaXRzWzJd KSwKcGFyc2VJbnQoYml0c1szXSkKXTsKfQp9LAp7CnJlOi9eKFx3ezJ9KShcd3sy fSkoXHd7Mn0pJC8sCmV4YW1wbGU6WycjMDBmZjAwJywnMzM2Njk5J10sCnByb2Nl c3M6ZnVuY3Rpb24oYml0cyl7CnJldHVyblsKcGFyc2VJbnQoYml0c1sxXSwxNiks CnBhcnNlSW50KGJpdHNbMl0sMTYpLApwYXJzZUludChiaXRzWzNdLDE2KQpdOwp9 Cn0sCnsKcmU6L14oXHd7MX0pKFx3ezF9KShcd3sxfSkkLywKZXhhbXBsZTpbJyNm YjAnLCdmMGYnXSwKcHJvY2VzczpmdW5jdGlvbihiaXRzKXsKcmV0dXJuWwpwYXJz ZUludChiaXRzWzFdK2JpdHNbMV0sMTYpLApwYXJzZUludChiaXRzWzJdK2JpdHNb Ml0sMTYpLApwYXJzZUludChiaXRzWzNdK2JpdHNbM10sMTYpCl07Cn0KfQpdOwpm b3IodmFyIGk9MDtpPGNvbG9yX2RlZnMubGVuZ3RoO2krKyl7CnZhciByZT1jb2xv cl9kZWZzW2ldLnJlOwp2YXIgcHJvY2Vzc29yPWNvbG9yX2RlZnNbaV0ucHJvY2Vz czsKdmFyIGJpdHM9cmUuZXhlYyhjb2xvcl9zdHJpbmcpOwppZihiaXRzKXsKY2hh bm5lbHM9cHJvY2Vzc29yKGJpdHMpOwp0aGlzLnI9Y2hhbm5lbHNbMF07CnRoaXMu Zz1jaGFubmVsc1sxXTsKdGhpcy5iPWNoYW5uZWxzWzJdOwp0aGlzLm9rPXRydWU7 Cn0KfQp0aGlzLnI9KHRoaXMucjwwfHxpc05hTih0aGlzLnIpKT8wOigodGhpcy5y PjI1NSk/MjU1OnRoaXMucik7CnRoaXMuZz0odGhpcy5nPDB8fGlzTmFOKHRoaXMu ZykpPzA6KCh0aGlzLmc+MjU1KT8yNTU6dGhpcy5nKTsKdGhpcy5iPSh0aGlzLmI8 MHx8aXNOYU4odGhpcy5iKSk/MDooKHRoaXMuYj4yNTUpPzI1NTp0aGlzLmIpOwoK dmFyIHI9dGhpcy5yLnRvU3RyaW5nKDE2KTsKdmFyIGc9dGhpcy5nLnRvU3RyaW5n KDE2KTsKdmFyIGI9dGhpcy5iLnRvU3RyaW5nKDE2KTsKaWYoci5sZW5ndGg9PTEp ewpyPScwJytyOwp9CmlmKGcubGVuZ3RoPT0xKXsKZz0nMCcrZzsKfQppZihiLmxl bmd0aD09MSl7CmI9JzAnK2I7Cn0KcmV0dXJuJyMnK3IrZytiOwp9OwoKdmFyIGdl dFJlYWxCRz1mdW5jdGlvbihiZ2NvbG9yKXsKdmFyIHRlbXBfc3R1Yj1kb2N1bWVu dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKdGVtcF9zdHViLnN0eWxlLmhlaWdodD0n MCc7CnRlbXBfc3R1Yi5zdHlsZS5vdmVyZmxvdz0naGlkZGVuJzsKdGVtcF9zdHVi LnN0eWxlLmJhY2tncm91bmRDb2xvcj1iZ2NvbG9yOwpkb2N1bWVudC5ib2R5LmFw cGVuZENoaWxkKHRlbXBfc3R1Yik7CnZhciByZWFsX2NvbG9yPUJlZ3VuLlV0aWxz LmdldFN0eWxlKHRlbXBfc3R1YiwnYmFja2dyb3VuZC1jb2xvcicpOwp0ZW1wX3N0 dWIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0ZW1wX3N0dWIpOwpyZXR1cm4gcmVh bF9jb2xvcjsKfTsKdmFyIGJnY29sb3I9Z2V0QkdDb2xvcihibG9jayk7CnZhciB0 ZW1wX2xvZ29fY29sb3I9Z2V0UmVhbEJHKHN0eWxlcy5ibG9jay5ib3JkZXJDb2xv cik7CmJnY29sb3I9Z2V0UmVhbEJHKGJnY29sb3IpOwoKYmdjb2xvcj1jb252ZXJ0 Q29sb3IoYmdjb2xvcik7CnRlbXBfbG9nb19jb2xvcj1jb252ZXJ0Q29sb3IodGVt cF9sb2dvX2NvbG9yKTsKCmlmKGJnY29sb3I9PXRlbXBfbG9nb19jb2xvcnx8YXJl Q29sb3JzVG9vQ2xvc2UoYmdjb2xvcix0ZW1wX2xvZ29fY29sb3IpKXsKaXNfbG9n b190cmFuc3BhcmVudD10cnVlOwp9Cn0KdmFyIGlzX2RlZmF1bHRfY29sb3I9KCgh c3R5bGVzLmJsb2NrLmJvcmRlckNvbG9yfHxzdHlsZXMuYmxvY2suYm9yZGVyQ29s b3IudG9Mb3dlckNhc2UoKT09J3RyYW5zcGFyZW50Jyl8fCh0eXBlb2Ygc3R5bGVz LmJsb2NrLmJhY2tncm91bmRDb2xvciE9PSJ1bmRlZmluZWQiJiZ0eXBlb2Ygc3R5 bGVzLmJsb2NrLmJvcmRlckNvbG9yIT09InVuZGVmaW5lZCImJnN0eWxlcy5ibG9j ay5iYWNrZ3JvdW5kQ29sb3IudG9Mb3dlckNhc2UoKT09c3R5bGVzLmJsb2NrLmJv cmRlckNvbG9yLnRvTG93ZXJDYXNlKCkpKTsKcmV0dXJuKGlzX2RlZmF1bHRfY29s b3J8fGlzX2xvZ29fdHJhbnNwYXJlbnQpP2RlZmF1bHRfbG9nb19jb2xvcjpzdHls ZXMuYmxvY2suYm9yZGVyQ29sb3I7Cn1lbHNlewpyZXR1cm4gZGVmYXVsdF9sb2dv X2NvbG9yOwp9Cn07CnZhciBwcmVwYXJlQ29sb3JTdHlsZXM9ZnVuY3Rpb24oc3R5 bGVzKXsKdmFyIGNoZWNrQ29sb3JEZWY9ZnVuY3Rpb24ob2JqLHByb3ApewppZihv YmohPT1udWxsJiZ0eXBlb2Ygb2JqIT09InVuZGVmaW5lZCIpewppZihvYmpbcHJv cF09PT0iIil7Cm9ialtwcm9wXT0idHJhbnNwYXJlbnQiOwp9Cn0KfQoKdmFyIGNo ZWNrQmdDb2xvcj1mdW5jdGlvbihvYmopewpjaGVja0NvbG9yRGVmKG9iaiwiYmFj a2dyb3VuZENvbG9yIik7Cn0KCnZhciBjaGVja0JvcmRlckNvbG9yPWZ1bmN0aW9u KG9iail7CmNoZWNrQ29sb3JEZWYob2JqLCJib3JkZXJDb2xvciIpOwp9Cgp2YXIg bWtUcmFuc3BhcmVudEJvcmRlcnNGb3JJRT1mdW5jdGlvbihvYmopewppZihvYmoh PT1udWxsJiZ0eXBlb2Ygb2JqIT09InVuZGVmaW5lZCImJkJlZ3VuLkJyb3dzZXIu SUUmJkJlZ3VuLkJyb3dzZXIubGVzcyg3KSYmb2JqLmJvcmRlckNvbG9yJiYob2Jq LmJvcmRlckNvbG9yLnRvTG93ZXJDYXNlKCk9PSd0cmFuc3BhcmVudCd8fG9iai5i b3JkZXJDb2xvcj09JycpKXsKb2JqLmJvcmRlckNvbG9yPSJ3aGl0ZSI7Cm9iai5m aWx0ZXI9ImNocm9tYShjb2xvcj13aGl0ZSkiOwpvYmoudHJhbnNwYXJlbnRCb3Jk ZXJzPSd0cmFuc3BhcmVudEJvcmRlcnMnOwp9Cn0KCmNoZWNrQmdDb2xvcihzdHls ZXMuYmxvY2tfaG92ZXIpOwpjaGVja0JvcmRlckNvbG9yKHN0eWxlcy5ibG9ja19o b3Zlcik7CgpjaGVja0JnQ29sb3Ioc3R5bGVzLmJsb2NrKTsKY2hlY2tCb3JkZXJD b2xvcihzdHlsZXMuYmxvY2spOwoKbWtUcmFuc3BhcmVudEJvcmRlcnNGb3JJRShz dHlsZXMuYmxvY2spOwpta1RyYW5zcGFyZW50Qm9yZGVyc0ZvcklFKHN0eWxlcy5i bG9ja19ob3Zlcik7Cn07CnRoaXMucHJpbnRCbG9ja1N0eWxlPWZ1bmN0aW9uKGJs b2NrX2lkLHN0eWxlcyxwYWQpewpzdHlsZXM9c3R5bGVzfHx7fTsKdmFyIHZhcnM9 e307CnZhciBibG9jaz1fdGhpcy5CbG9ja3MuZ2V0QmxvY2tCeUlkKGJsb2NrX2lk LGZhbHNlLHBhZC5wYWRfaWQpOwp2YXJzLmJsb2NrX2lkPWJsb2NrX2lkfHwtMTsK dmFycy5waG9uZV9tYXJnaW5fdG9wPTE7CnZhcnMucGhvbmVfbWFyZ2luX3RvcD1z dHlsZXMuZG9tYWluJiZzdHlsZXMuZG9tYWluLmZvbnRTaXplP3N0eWxlcy5kb21h aW4uZm9udFNpemUtOToxOwp2YXJzLmJsb2NrX2xvZ29fY29sb3I9dGhpcy5nZXRM b2dvQ29sb3Ioc3R5bGVzLGJsb2NrX2lkKTsKcHJlcGFyZUNvbG9yU3R5bGVzKHN0 eWxlcyk7CmZvcih2YXIga2V5IGluIHN0eWxlcyl7CmlmKHN0eWxlc1trZXldJiZz dHlsZXMuaGFzT3duUHJvcGVydHkmJnN0eWxlcy5oYXNPd25Qcm9wZXJ0eShrZXkp KXsKZm9yKHZhciBrZXkyIGluIHN0eWxlc1trZXldKXsKaWYoc3R5bGVzW2tleV1b a2V5Ml0mJnN0eWxlc1trZXldLmhhc093blByb3BlcnR5JiZzdHlsZXNba2V5XS5o YXNPd25Qcm9wZXJ0eShrZXkyKSl7CnZhcnNba2V5Kyc6JytrZXkyXT10eXBlb2Yg c3R5bGVzW2tleV1ba2V5Ml09PSdudW1iZXInP3N0eWxlc1trZXldW2tleTJdKydw eCc6c3R5bGVzW2tleV1ba2V5Ml07Cn0KfQp9Cn0KdmFyIGNzc190ZXh0PShuZXcg QmVndW4uVGVtcGxhdGUoX3RoaXMuVHBscy5nZXRDU1MoJ2Jsb2NrJykpKS5ldmFs dWF0ZSh2YXJzKTsKY3NzX3RleHQrPShuZXcgQmVndW4uVGVtcGxhdGUoX3RoaXMu VHBscy5nZXRDU1MoJ2Jsb2NrXycrYmxvY2sub3B0aW9ucy5kaW1lbnNpb25zLnR5 cGUudG9Mb3dlckNhc2UoKSkpKS5ldmFsdWF0ZSh2YXJzKTsKdmFyIGNzc190ZXh0 X2Zvcl9pZT0obmV3IEJlZ3VuLlRlbXBsYXRlKF90aGlzLlRwbHMuZ2V0Q1NTKCdm b3JPcGVyYUlFJykpKS5ldmFsdWF0ZSh2YXJzKTsKaWYoQmVndW4uQnJvd3Nlci5J RXx8QmVndW4uQnJvd3Nlci5PcGVyYSl7CmNzc190ZXh0Kz1jc3NfdGV4dF9mb3Jf aWU7Cn0KaWYoYmxvY2tfaWQ9PUJMT0NLX0lEX1RPUF9NT0JJTEUpewpCZWd1bi5V dGlscy5pbmNsdWRlU3R5bGUoY3NzX3RleHQsJ2FwcGVuZCcsJ2JlZ3VuLWJsb2Nr LWNzcy0nK2Jsb2NrX2lkLHRvcCk7Cn1lbHNlewpCZWd1bi5VdGlscy5pbmNsdWRl U3R5bGUoY3NzX3RleHQsJ2FwcGVuZCcsJ2JlZ3VuLWJsb2NrLWNzcy0nK2Jsb2Nr X2lkKTsKfQp9Owp0aGlzLmlzRmVlZFN0YXJ0ZWQ9ZnVuY3Rpb24oKXsKcmV0dXJu ISFfdGhpcy5nZXRQYWQoKS5mZWVkX3N0YXJ0ZWQ7Cn07CnRoaXMuc2V0RmVlZFN0 YXJ0ZWQ9ZnVuY3Rpb24oKXsKX3RoaXMuZ2V0UGFkKCkuZmVlZF9zdGFydGVkPXRy dWU7Cn07CnRoaXMuZ2V0QmFubmVySW5kZXg9ZnVuY3Rpb24ocGFkX2lkLHNlY3Rp b24sYmFubmVyX2lkKXsKaWYoIWJhbm5lcl9pZCl7CnJldHVybiBfdGhpcy5nZXRQ YWQocGFkX2lkKS5iYW5uZXJfaW5kZXg7Cn1lbHNlewpzZWN0aW9uPXNlY3Rpb258 fCdhdXRvY29udGV4dCc7CnZhciBiYW5uZXJfaW5kZXg9MDsKd2hpbGUoYmFubmVy PV90aGlzLmdldEJhbm5lcihzZWN0aW9uLGJhbm5lcl9pbmRleCxwYWRfaWQpKXsK aWYoYmFubmVyLmJhbm5lcl9pZD09YmFubmVyX2lkKXsKcmV0dXJuIGJhbm5lcl9p bmRleDsKfQpiYW5uZXJfaW5kZXgrKzsKfQp9Cn07CnRoaXMuc2V0QmFubmVySW5k ZXg9ZnVuY3Rpb24oaW5kZXgscGFkX2lkKXsKX3RoaXMuZ2V0UGFkKHBhZF9pZCku YmFubmVyX2luZGV4PWluZGV4Owp9Owp0aGlzLmluY0Jhbm5lckluZGV4PWZ1bmN0 aW9uKHBhZF9pZCl7Cl90aGlzLnNldEJhbm5lckluZGV4KF90aGlzLmdldEJhbm5l ckluZGV4KHBhZF9pZCkrMSxwYWRfaWQpOwp9Owp0aGlzLnJlc2V0QmFubmVySW5k ZXg9ZnVuY3Rpb24ocGFkX2lkKXsKX3RoaXMuc2V0QmFubmVySW5kZXgoMCxwYWRf aWQpOwp9Owp0aGlzLnJlZ2lzdGVyU2hvd25CYW5uZXI9ZnVuY3Rpb24oc2hvd25C YW5uZXIpewp2YXIgYmFubmVySWQ9c2hvd25CYW5uZXImJnNob3duQmFubmVyLmJh bm5lcl9pZDsKaWYoIWJhbm5lcklkKXsKcmV0dXJuOwp9CmlmKCFfdGhpcy5iYW5u ZXJzKXsKX3RoaXMuYmFubmVycz1bYmFubmVySWRdOwp9ZWxzZXsKX3RoaXMuYmFu bmVycy5wdXNoKGJhbm5lcklkKTsKfQp9Owp0aGlzLmdldFNob3duQmFubmVycz1m dW5jdGlvbigpewpyZXR1cm4gX3RoaXMuYmFubmVyczsKfTsKdGhpcy5nZXRQYWQ9 ZnVuY3Rpb24ocGFkX2lkKXsKcmV0dXJuIF90aGlzLlBhZHMuZ2V0UGFkKHBhZF9p ZHx8d2luZG93LmJlZ3VuX2F1dG9fcGFkKTsKfTsKdGhpcy5nZXRGZWVkPWZ1bmN0 aW9uKHBhZF9pZCl7CnJldHVybiBfdGhpcy5nZXRQYWQocGFkX2lkKS5mZWVkOwp9 Owp0aGlzLmdldEJsb2NrPWZ1bmN0aW9uKGluZGV4LHBhZCl7CmlmKHR5cGVvZiBw YWQ9PT0idW5kZWZpbmVkIil7CnBhZD1fdGhpcy5nZXRQYWQoKTsKfQp2YXIgcGFk QmxvY2tzPXBhZC5ibG9ja3M7CmlmKHBhZEJsb2Nrcy5sZW5ndGg+aW5kZXgpewpy ZXR1cm4gcGFkQmxvY2tzW2luZGV4XTsKfWVsc2V7CnJldHVybiBudWxsOwp9Cn07 CnRoaXMuZ2V0QmxvY2tzPWZ1bmN0aW9uKHBhZF9pZCl7CnZhciBibG9ja3M9W107 CmlmKHBhZF9pZCl7CmJsb2Nrcz1fdGhpcy5nZXRQYWQocGFkX2lkKS5ibG9ja3M7 Cn1lbHNlewp2YXIgcGFkcz1fdGhpcy5QYWRzLmdldFBhZHMoKTsKZm9yKHZhciBp PTAsbD1wYWRzLmxlbmd0aDtpPGw7aSsrKXsKZm9yKHZhciBqPTAsbj1wYWRzW2ld LmJsb2Nrcy5sZW5ndGg7ajxuO2orKyl7CmJsb2Nrcy5wdXNoKHBhZHNbaV0uYmxv Y2tzW2pdKTsKfQp9Cn0KcmV0dXJuIGJsb2NrczsKfTsKdGhpcy5nZXRCYW5uZXI9 ZnVuY3Rpb24odHlwZSxpbmRleCxwYWRfaWQpewp0cnl7CnJldHVybiBfdGhpcy5n ZXRQYWQocGFkX2lkKS5mZWVkLmJhbm5lcnNbdHlwZV1baW5kZXhdOwp9Y2F0Y2go ZSl7CnJldHVybiBudWxsOwp9Cn07CnRoaXMuZ2V0QmFubmVycz1mdW5jdGlvbihw YWRfaWQpewpyZXR1cm4gX3RoaXMuZ2V0RmVlZChwYWRfaWQpLmJhbm5lcnM7Cn07 CnRoaXMuZ2V0U3R1Yj1mdW5jdGlvbih0eXBlLHBhZF9pZCl7CnJldHVybiBfdGhp cy5nZXRGZWVkKHBhZF9pZCkuc3R1YnNbdHlwZV18fG51bGw7Cn07CnRoaXMuZ2V0 UmljaFBpY3R1cmVTcmM9ZnVuY3Rpb24oYmFubmVyKXsKdmFyIGJhbm5lcl9pZD1i YW5uZXIuYmFubmVyX2lkKycnOwppZihfdGhpcy5TdHJpbmdzLnVybHMucmljaF9w aWN0dXJlX2JpZyYmX3RoaXMuU3RyaW5ncy51cmxzLnJpY2hfcGljdHVyZV9zbWFs bCYmYmFubmVyX2lkKXsKdmFyIHNtYWxsPShuZXcgQmVndW4uVGVtcGxhdGUoX3Ro aXMuU3RyaW5ncy51cmxzLnJpY2hfcGljdHVyZV9zbWFsbCkpLmV2YWx1YXRlKHti YW5uZXJfaWQ6YmFubmVyX2lkfSk7CnZhciBiaWc9KG5ldyBCZWd1bi5UZW1wbGF0 ZShfdGhpcy5TdHJpbmdzLnVybHMucmljaF9waWN0dXJlX2JpZykpLmV2YWx1YXRl KHtiYW5uZXJfaWQ6YmFubmVyX2lkfSk7CnJldHVybnsKc21hbGw6c21hbGwsCmJp ZzpiaWcKfTsKfQp2YXIgc3JjPV90aGlzLnJlc3BvbnNlUGFyYW1zWyd0aHVtYnNf c3JjJ10/J2h0dHA6Ly8nK190aGlzLnJlc3BvbnNlUGFyYW1zWyd0aHVtYnNfc3Jj J10rJy8nOl90aGlzLlN0cmluZ3MudXJscy50aHVtYnM7CnZhciBzdGNfczsKdmFy IHNyY19iOwppZihiYW5uZXJfaWQmJmJhbm5lcl9pZC5sZW5ndGg+Myl7CnNyYys9 J3JpY2gvJzsKc3JjKz1iYW5uZXJfaWQuY2hhckF0KGJhbm5lcl9pZC5sZW5ndGgt Mik7CnNyYys9Jy8nK2Jhbm5lcl9pZC5jaGFyQXQoYmFubmVyX2lkLmxlbmd0aC0x KTsKc3JjKz0nLycrYmFubmVyX2lkOwpzcmNfcz1zcmMrJ3MnOwpzcmNfYj1zcmMr J2InOwp9ZWxzZXsKc3JjX3M9X3RoaXMuU3RyaW5ncy51cmxzLmJsYW5rOwpzcmNf Yj1zcmNfczsKfQppZihiYW5uZXIuaW1hZ2VzJiZiYW5uZXIuaW1hZ2VzLnJpY2hw cmV2aWV3KXsKc3JjX3M9YmFubmVyLmltYWdlcy5yaWNocHJldmlldzsKfQppZihi YW5uZXIuaW1hZ2VzJiZiYW5uZXIuaW1hZ2VzLnJpY2gpewpzcmNfYj1iYW5uZXIu aW1hZ2VzLnJpY2g7Cn0KcmV0dXJuewpzbWFsbDpzcmNfcywKYmlnOnNyY19iCn07 Cn07CnRoaXMuZ2V0VGh1bWJTcmM9ZnVuY3Rpb24oYmFubmVyLGZha2Upewp2YXIg c3JjPV90aGlzLnJlc3BvbnNlUGFyYW1zWyd0aHVtYnNfc3JjJ10/J2h0dHA6Ly8n K190aGlzLnJlc3BvbnNlUGFyYW1zWyd0aHVtYnNfc3JjJ10rJy8nOl90aGlzLlN0 cmluZ3MudXJscy50aHVtYnM7CnZhciBiYW5uZXJfaWQ9YmFubmVyLmJhbm5lcl9p ZCsnJzsKaWYoYmFubmVyX2lkJiZiYW5uZXJfaWQubGVuZ3RoPjMpewp2YXIgdGhl bWF0aWM9YmFubmVyLnRoZW1hdGljcz8oYmFubmVyLnRoZW1hdGljcy5zcGxpdCgn LCcpWzBdKycnKTonMSc7CnNyYys9YmFubmVyX2lkLmNoYXJBdChiYW5uZXJfaWQu bGVuZ3RoLTIpOwpzcmMrPScvJytiYW5uZXJfaWQuY2hhckF0KGJhbm5lcl9pZC5s ZW5ndGgtMSk7CnNyYys9Jy8nK2Jhbm5lcl9pZCsnLmpwZyc7CnNyYys9Jz90PScr dGhlbWF0aWMrJyZyPScrYmFubmVyX2lkLmNoYXJBdChiYW5uZXJfaWQubGVuZ3Ro LTMpOwp9ZWxzZXsKc3JjPXNyYysnZW1wdHkuanBnJzsKfQppZihiYW5uZXIuaW1h Z2VzJiZiYW5uZXIuaW1hZ2VzLnRoZW1hdGljKXsKc3JjPWJhbm5lci5pbWFnZXMu dGhlbWF0aWM7Cn0KaWYoQmVndW4uQnJvd3Nlci5JRSYmQmVndW4uQnJvd3Nlci52 ZXJzaW9uKCk8PTYmJmZha2UpewpzcmM9X3RoaXMuU3RyaW5ncy51cmxzLmJsYW5r Owp9CnJldHVybiBzcmM7Cn07CnRoaXMuZ2V0RmF2aWNvblNyYz1mdW5jdGlvbihi YW5uZXIpewp2YXIgc3JjPV90aGlzLnJlc3BvbnNlUGFyYW1zWyd0aHVtYnNfc3Jj J10/J2h0dHA6Ly8nK190aGlzLnJlc3BvbnNlUGFyYW1zWyd0aHVtYnNfc3JjJ10r Jy8nOl90aGlzLlN0cmluZ3MudXJscy50aHVtYnM7CnZhciBiYW5uZXJfaWQ9YmFu bmVyLmJhbm5lcl9pZCsnJzsKaWYoYmFubmVyX2lkJiZiYW5uZXJfaWQubGVuZ3Ro PjMpewpzcmMrPSdmYXZpY29uLyc7CnNyYys9YmFubmVyX2lkLmNoYXJBdChiYW5u ZXJfaWQubGVuZ3RoLTIpOwpzcmMrPScvJytiYW5uZXJfaWQuY2hhckF0KGJhbm5l cl9pZC5sZW5ndGgtMSk7CnNyYys9Jy8nK2Jhbm5lcl9pZCsnLmpwZyc7Cn1lbHNl ewpzcmM9X3RoaXMuU3RyaW5ncy51cmxzLmJsYW5rOwp9CmlmKGJhbm5lci5pbWFn ZXMmJmJhbm5lci5pbWFnZXMuZmF2aWNvbil7CnNyYz1iYW5uZXIuaW1hZ2VzLmZh dmljb247Cn0KcmV0dXJuIHNyYzsKfTsKdGhpcy5nZXRCYW5uZXJDb250YWN0cz1m dW5jdGlvbihiYW5uZXIsYmxvY2ssZnVsbERvbWFpbixwYWRfaWQsc2VjdGlvbixi YW5uZXJfaWQpewp2YXIgcmVzdWx0PXRoaXMuZ2V0QmFubmVyQ2FyZFBQY2FsbERh dGEoYmFubmVyLGJsb2NrLHBhZF9pZCxzZWN0aW9uLGJhbm5lcl9pZCk7CnZhciBi YW5uZXJfY29udGFjdHNfbmFtZXM9cmVzdWx0LmlzX3VybF9leGlzdD9bJ2RvbWFp bicsJ2dlbyddOlsnZ2VvJ107CnJldHVybiByZXN1bHQuYmFubmVyX2NvbnRhY3Rz LmNvbmNhdCh0aGlzLmdldEJhbm5lckRvbWFpbkdlb0hUTUwoYmFubmVyLGJsb2Nr LGJhbm5lcl9jb250YWN0c19uYW1lcyxmdWxsRG9tYWluKSk7Cn07CnRoaXMuZ2V0 QmFubmVyQ2FyZFBQY2FsbERhdGE9ZnVuY3Rpb24oYmFubmVyLGJsb2NrLHBhZF9p ZCxzZWN0aW9uLGJhbm5lcl9pZCl7CnZhciBiYW5uZXJfY29udGFjdHM9W107CnZh ciBpc191cmxfZXhpc3Q9dHJ1ZTsKdmFyIGNhcmRzX21vZGU9YmFubmVyWydjYXJk c19tb2RlJ107CnZhciBpc19wcGNhbGw9YmFubmVyWydwcGNhbGwnXTsKdmFyIHZh cnM9e307CmZ1bmN0aW9uIF9jYXJkKHVzZV9waG9uZSl7CnZhcnMuY2FyZF90ZXh0 PV90aGlzLlN0cmluZ3MuY29udGFjdHMuY2FyZDsKdmFycy51cmw9X3RoaXMuYWRk TWlzYzJVUkwoYmxvY2sub3B0aW9ucy5taXNjX2lkLGJhbm5lci5jYXJkKTsKdmFy cy5waG9uZT11c2VfcGhvbmU/KG5ldyBCZWd1bi5UZW1wbGF0ZShfdGhpcy5UcGxz LmdldEhUTUwoJ2JubnJfcGhvbmUnKSkpLmV2YWx1YXRlKHZhcnMpOicnOwp2YXJz Lm5vX3Bob25lX2NsYXNzPXVzZV9waG9uZT8nJzonYmVndW5fYWR2X3Bob25lX25v X2ljb24nOwpiYW5uZXJfY29udGFjdHMucHVzaCgobmV3IEJlZ3VuLlRlbXBsYXRl KF90aGlzLlRwbHMuZ2V0SFRNTCgnYm5ucl9jYXJkJykpKS5ldmFsdWF0ZSh2YXJz KSk7Cn0KZnVuY3Rpb24gX3BwY2FsbCh1c2VfcGhvbmUpewp2YXJzLnBwY2FsbF90 ZXh0PV90aGlzLlN0cmluZ3MuY29udGFjdHMucHBjYWxsOwp2YXJzLmJhbm5lcl9p bmRleD1fdGhpcy5nZXRCYW5uZXJJbmRleChwYWRfaWQsc2VjdGlvbixiYW5uZXJf aWQpOwp2YXJzLnBhZF9pZD13aW5kb3cuYmVndW5fYXV0b19wYWR8fCcnOwp2YXJz LnBob25lPXVzZV9waG9uZT8obmV3IEJlZ3VuLlRlbXBsYXRlKF90aGlzLlRwbHMu Z2V0SFRNTCgnYm5ucl9waG9uZScpKSkuZXZhbHVhdGUodmFycyk6Jyc7CnZhcnMu bGluaz1iYW5uZXIucHBjYWxsX2Zvcm0/YmFubmVyLnBwY2FsbF9mb3JtOicnOwp2 YXJzLmlzX21vYmlsZT1fdGhpcy5nZXRGZWVkKHBhZF9pZCkucGFyYW1zLmlzX21v YmlsZTsKYmFubmVyX2NvbnRhY3RzLnB1c2goKG5ldyBCZWd1bi5UZW1wbGF0ZShf dGhpcy5UcGxzLmdldEhUTUwoJ2JubnJfcHBjYWxsJykpKS5ldmFsdWF0ZSh2YXJz KSk7Cn0KaWYoY2FyZHNfbW9kZT09J0NhcmQnJiZpc19wcGNhbGw9PWZhbHNlKXsK X2NhcmQodHJ1ZSk7CmlzX3VybF9leGlzdD1mYWxzZTsKfWVsc2UgaWYoY2FyZHNf bW9kZT09J0NhcmQnJiZpc19wcGNhbGw9PXRydWUpewpfcHBjYWxsKHRydWUpOwpf Y2FyZChmYWxzZSk7CmlzX3VybF9leGlzdD1mYWxzZTsKfWVsc2UgaWYoY2FyZHNf bW9kZT09J1VybCcmJmlzX3BwY2FsbD09ZmFsc2UpewoKfWVsc2UgaWYoY2FyZHNf bW9kZT09J1VybCcmJmlzX3BwY2FsbD09dHJ1ZSl7Cl9wcGNhbGwodHJ1ZSk7Cn1l bHNlIGlmKGNhcmRzX21vZGU9PSdDYXJkLCBVcmwnJiZpc19wcGNhbGw9PWZhbHNl KXsKX2NhcmQodHJ1ZSk7Cn1lbHNlIGlmKGNhcmRzX21vZGU9PSdDYXJkLCBVcmwn JiZpc19wcGNhbGw9PXRydWUpewpfcHBjYWxsKHRydWUpOwpfY2FyZChmYWxzZSk7 Cn0KcmV0dXJuewpiYW5uZXJfY29udGFjdHM6YmFubmVyX2NvbnRhY3RzLAppc191 cmxfZXhpc3Q6aXNfdXJsX2V4aXN0Cn07Cn07CnRoaXMuZ2V0QmFubmVyRG9tYWlu R2VvSFRNTD1mdW5jdGlvbihiYW5uZXIsYmxvY2ssYmFubmVyX2NvbnRhY3RzX25h bWVzLGZ1bGxEb21haW4pewp2YXIgYmFubmVyX2NvbnRhY3RzPVtdOwp2YXIgaT0w Owp2YXIgYmFubmVyX2NvbnRhY3RzX25hbWU9bnVsbDsKdmFyIHZhcnM9e307Cndo aWxlKGJhbm5lcl9jb250YWN0c19uYW1lPWJhbm5lcl9jb250YWN0c19uYW1lc1tp XSl7CnZhcnNbYmFubmVyX2NvbnRhY3RzX25hbWVdPWJhbm5lcltiYW5uZXJfY29u dGFjdHNfbmFtZV07CnZhcnMuc3RhdHVzPWJhbm5lci5zdGF0dXM7CnZhcnMudXJs PV90aGlzLmFkZE1pc2MyVVJMKGJsb2NrLm9wdGlvbnMubWlzY19pZCxiYW5uZXIu dXJsKTsKdmFycy5mdWxsRG9tYWluPWZ1bGxEb21haW47CmlmKHZhcnNbYmFubmVy X2NvbnRhY3RzX25hbWVdKXsKYmFubmVyX2NvbnRhY3RzLnB1c2goKG5ldyBCZWd1 bi5UZW1wbGF0ZShfdGhpcy5UcGxzLmdldEhUTUwoJ2JubnJfJytiYW5uZXJfY29u dGFjdHNfbmFtZSkpKS5ldmFsdWF0ZSh2YXJzKSk7Cn0KaSsrOwp9CnJldHVybiBi YW5uZXJfY29udGFjdHM7Cn07CnRoaXMuYWRkTWlzYzJVUkw9ZnVuY3Rpb24obWlz Y19pZCx1cmwpewpyZXR1cm4obWlzY19pZD4wP3VybCsnJm1pc2MyPScrKE51bWJl cihtaXNjX2lkKTw8OCk6dXJsKTsKfTsKdGhpcy5jbGlja0Jhbm5lcj1mdW5jdGlv bihjbGlja19ldmVudCxvcmlnX2VsZW0pewpjbGlja19ldmVudD1jbGlja19ldmVu dHx8d2luZG93LmV2ZW50OwppZihjbGlja19ldmVudC5kb25lKXsKcmV0dXJuOwp9 CnZhciBjdXJyX2VsZW09Y2xpY2tfZXZlbnQudGFyZ2V0fHxjbGlja19ldmVudC5z cmNFbGVtZW50Owp2YXIgaXNJbnNpZGVUYWc9ZnVuY3Rpb24oY2hpbGRfZWxlbSxw YXJlbnRfdGFnKXsKdmFyIGNoaWxkX2VsZW1fcGFyZW50PWNoaWxkX2VsZW07CmRv ewppZihjaGlsZF9lbGVtX3BhcmVudC50YWdOYW1lJiZjaGlsZF9lbGVtX3BhcmVu dC50YWdOYW1lLnRvVXBwZXJDYXNlKCk9PXBhcmVudF90YWcudG9VcHBlckNhc2Uo KSl7CnJldHVybiB0cnVlOwp9Cn13aGlsZShjaGlsZF9lbGVtX3BhcmVudD1jaGls ZF9lbGVtX3BhcmVudC5wYXJlbnROb2RlKTsKcmV0dXJuIGZhbHNlOwp9OwppZihj dXJyX2VsZW0udGFnTmFtZS50b1VwcGVyQ2FzZSgpPT0nQSd8fGlzSW5zaWRlVGFn KGN1cnJfZWxlbSwnQScpKXsKY2xpY2tfZXZlbnQuZG9uZT10cnVlOwpfdGhpcy5D YWxsYmFja3MuZGlzcGF0Y2goJ2Jhbm5lcicsJ2NsaWNrJyxjdXJyX2VsZW0pOwpp Zih0aGlzLmlzRXZlbnRUcmFja2luZ09uKCkpewpfdGhpcy5jbGlja0hhbmRsZXIo b3JpZ19lbGVtKS5hcHBseShfdGhpcyk7Cn0KfWVsc2UgaWYob3JpZ19lbGVtLmdl dEF0dHJpYnV0ZSgnX3VybCcpKXsKdmFyIGFueUxpbms9Y3Vycl9lbGVtLmdldEVs ZW1lbnRzQnlUYWdOYW1lKCJhIilbMF07CmlmKGFueUxpbmsmJnR5cGVvZiBhbnlM aW5rLmNsaWNrIT09InVuZGVmaW5lZCIpewppZih0eXBlb2YgY2xpY2tfZXZlbnQu cHJldmVudERlZmF1bHQhPT0idW5kZWZpbmVkIil7CmNsaWNrX2V2ZW50LnByZXZl bnREZWZhdWx0KCk7Cn1lbHNlewpjbGlja19ldmVudC5yZXR1cm5WYWx1ZT1mYWxz ZTsKfQppZih0eXBlb2YgY2xpY2tfZXZlbnQuc3RvcFByb3BhZ2F0aW9uIT09InVu ZGVmaW5lZCIpewpjbGlja19ldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKfWVsc2V7 CmNsaWNrX2V2ZW50LmNhbmNlbEJ1YmJsZT10cnVlOwp9CmFueUxpbmsuY2xpY2so KTsKfWVsc2V7Cl90aGlzLkNhbGxiYWNrcy5kaXNwYXRjaCgnYmFubmVyJywnY2xp Y2snLGN1cnJfZWxlbSk7CmlmKHRoaXMuaXNFdmVudFRyYWNraW5nT24oKSl7Cl90 aGlzLmNsaWNrSGFuZGxlcihvcmlnX2VsZW0pLmFwcGx5KF90aGlzKTsKfQp3aW5k b3cub3BlbihvcmlnX2VsZW0uZ2V0QXR0cmlidXRlKCdfdXJsJykpOwp9Cn0KfTsK dGhpcy5nZXRCYW5uZXJIVE1MPWZ1bmN0aW9uKGJhbm5lcixibG9jayxibG9ja19i YW5uZXJfY291bnQpewp2YXIgQkFOTkVSX1NIT1JUX1BBUlRfTEVOR1RIPTEzOwpm dW5jdGlvbiBwcmVwYXJlQmFubmVyTW9kZShiYW5uZXIpewpiYW5uZXI9YmFubmVy fHx7fTsKdmFyIHBvc3NpYmxlX2NhcmRzX21vZGVzPVsnQ2FyZCwgVXJsJywnQ2Fy ZCcsJ1VybCddOwppZigoIWJhbm5lclsnY2FyZHNfbW9kZSddKXx8IUJlZ3VuLlV0 aWxzLmluX2FycmF5KHBvc3NpYmxlX2NhcmRzX21vZGVzLGJhbm5lclsnY2FyZHNf bW9kZSddKSl7CmJhbm5lclsnY2FyZHNfbW9kZSddPSdDYXJkLCBVcmwnOwp9Cmlm KCFiYW5uZXJbJ3VybCddJiYhYmFubmVyWydjYXJkJ10pewpyZXR1cm57fTsKfQpp ZighYmFubmVyWyd1cmwnXSYmYmFubmVyWydjYXJkJ10pewpiYW5uZXJbJ2NhcmRz X21vZGUnXT0nQ2FyZCc7Cn0KaWYoYmFubmVyWyd1cmwnXSYmIWJhbm5lclsnY2Fy ZCddKXsKYmFubmVyWydjYXJkc19tb2RlJ109J1VybCc7Cn0KaWYoYmFubmVyWydj YXJkc19tb2RlJ109PSdDYXJkJyl7CmJhbm5lclsndXJsJ109YmFubmVyWydjYXJk J107Cn0KcmV0dXJuIGJhbm5lcjsKfQoKYmFubmVyPXByZXBhcmVCYW5uZXJNb2Rl KGJhbm5lcik7CmlmKGJhbm5lcil7CmlmKGJhbm5lci5kb21haW4pewpiYW5uZXIu ZG9tYWluPWJhbm5lci5kb21haW4ucmVwbGFjZSgvJnNoeTsvZywnJyk7CmJhbm5l ci5mdWxsRG9tYWluPWJhbm5lci5kb21haW47CmlmKGJhbm5lci5kb21haW4ubWF0 Y2goLyYjeDQyNjsmI3g0MzU7JiN4NDNkOyYjeDQzMDs6IC8pKXsKYmFubmVyLnN0 YXR1cz1iYW5uZXIuZG9tYWluOwp9ZWxzZXsKYmFubmVyLnN0YXR1cz0naHR0cDov LycrYmFubmVyLmRvbWFpbisnLyc7CmlmKGJhbm5lci5kb21haW4ubGVuZ3RoPjIq QkFOTkVSX1NIT1JUX1BBUlRfTEVOR1RIKzMpewpiYW5uZXIuZG9tYWluPWJhbm5l ci5kb21haW4uc3Vic3RyaW5nKDAsQkFOTkVSX1NIT1JUX1BBUlRfTEVOR1RIKQor JyZoZWxsaXA7JytiYW5uZXIuZG9tYWluLnNsaWNlKC1CQU5ORVJfU0hPUlRfUEFS VF9MRU5HVEgpOwp9Cn0KfWVsc2V7CmJhbm5lci5mdWxsRG9tYWluPWJhbm5lci5k b21haW49YmFubmVyLnN0YXR1cz0nJzsKfQpiYW5uZXIuZG9tYWluPWJhbm5lci5k b21haW4ucmVwbGFjZSgvXC4vZywnLiZzaHk7Jyk7CnZhciBiYW5uZXJfY29udGFj dHM9X3RoaXMuZ2V0QmFubmVyQ29udGFjdHMoYmFubmVyLGJsb2NrLGJhbm5lci5m dWxsRG9tYWluKTsKdmFyIHZhcnM9e307CkJlZ3VuLmV4dGVuZCh2YXJzLGJhbm5l cik7CmlmKGJsb2NrLm9wdGlvbnMudmlzdWFsLnRpdGxlJiZibG9jay5vcHRpb25z LnZpc3VhbC50aXRsZS5kaXNwbGF5JiZibG9jay5vcHRpb25zLnZpc3VhbC50aXRs ZS5kaXNwbGF5PT0ibm9uZSIpewp2YXJzLnN0eWxlVGl0bGU9IiBzdHlsZT1cImRp c3BsYXk6IG5vbmVcIiI7Cn0KaWYoYmxvY2sub3B0aW9ucy52aXN1YWwudGV4dCYm YmxvY2sub3B0aW9ucy52aXN1YWwudGV4dC5kaXNwbGF5JiZibG9jay5vcHRpb25z LnZpc3VhbC50ZXh0LmRpc3BsYXk9PSJub25lIil7CnZhcnMuc3R5bGVUZXh0PSIg c3R5bGU9XCJkaXNwbGF5OiBub25lXCIiOwp9CmlmKGJsb2NrLm9wdGlvbnMudmlz dWFsLmNvbnRhY3QmJmJsb2NrLm9wdGlvbnMudmlzdWFsLmNvbnRhY3QuZGlzcGxh eSYmYmxvY2sub3B0aW9ucy52aXN1YWwuY29udGFjdC5kaXNwbGF5PT0ibm9uZSIp ewp2YXJzLnN0eWxlQ29udGFjdD0iIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIjsK fQp2YXJzLmNvbnRhY3Q9YmFubmVyX2NvbnRhY3RzLmpvaW4oX3RoaXMuVHBscy5n ZXRIVE1MKCdibm5yX2dsdWUnKSk7CnZhcnMudXJsPV90aGlzLmFkZE1pc2MyVVJM KGJsb2NrLm9wdGlvbnMubWlzY19pZCxiYW5uZXIudXJsKTsKdmFycy5vbmNsaWNr PV90aGlzLlN0cmluZ3MuanMuYmFubmVyX29uY2xpY2s7CnZhcnMuYmxvY2tfaWQ9 YmxvY2suaWQ7CnZhcnMuYmFubmVyX2lkPWJhbm5lci5iYW5uZXJfaWQ7CnZhcnMu aWQ9YmxvY2tfYmFubmVyX2NvdW50fHwwOwp2YXJzLmRlc2NyPXZhcnMuZGVzY3Iu cmVwbGFjZSgvKFwsfFwufFw/fFwhfFw6KShcU1xEKS9nLCckMSAkMicpOwp2YXJz LmJhbm5lcl93aWR0aD1NYXRoLnJvdW5kKDEwMC9OdW1iZXIoX3RoaXMuZ2V0QWN0 dWFsQmxvY2tCYW5uZXJzQ291bnQoYmxvY2spKSkrJyUnOwppZihfdGhpcy5CbG9j a3MuY2hlY2tUeXBlKGJsb2NrLCdzcXVhcmUnKSYmYmxvY2sub3B0aW9ucy5qc29u JiZibG9jay5vcHRpb25zLmpzb24uY29sKXsKdmFycy5iYW5uZXJfd2lkdGg9TWF0 aC5yb3VuZCgxMDAvTnVtYmVyKGJsb2NrLm9wdGlvbnMuanNvbi5jb2wpKSsnJSc7 Cn0KdmFycy5ibm5yX2FsY289X3RoaXMuY2hlY2tCYW5uZXJWaWV3VHlwZShiYW5u ZXIsJ2FsY28nKT8obmV3IEJlZ3VuLlRlbXBsYXRlKF90aGlzLlRwbHMuZ2V0SFRN TCgnYm5ucl9hbGNvX2F0dG4nKSkpLmV2YWx1YXRlKHt9KTonJzsKdmFyIGlzX3Vz ZV9yaWNoPScnOwoKdmFycy5jc3NfZmF2aWNvbj1OdW1iZXIoYmxvY2sub3B0aW9u cy5zaG93X2Zhdmljb25zKT9fdGhpcy5TdHJpbmdzLmNzcy5mYXZpY29uOicnOwp2 YXJzLmZhdmljb249TnVtYmVyKGJsb2NrLm9wdGlvbnMuc2hvd19mYXZpY29ucyk/ J3N0eWxlPSJ6b29tOjE7YmFja2dyb3VuZC1pbWFnZTp1cmwoJytfdGhpcy5nZXRG YXZpY29uU3JjKGJhbm5lcikrJykgIWltcG9ydGFudDtiYWNrZ3JvdW5kLXJlcGVh dDpuby1yZXBlYXQgIWltcG9ydGFudDsiJzonJzsKdmFycy50aHVtYj0nJzsKdmFy cy5waWN0dXJlPScnOwp2YXIgZ2V0VGh1bWJBZGRpdGlvbmFsU3R5bGVzPWZ1bmN0 aW9uKCl7CnZhciBERUZBVUxUX1NUWUxFPSIgbWFyZ2luOiA4cHggYXV0byA1cHgg N3B4ICFpbXBvcnRhbnQ7IjsKaWYoIWJsb2NrLm9wdGlvbnMudmlzdWFsLnRodW1i U3R5bGVzKXsKcmV0dXJuIERFRkFVTFRfU1RZTEU7Cn0KdmFyIHN0eWxlU3RyaW5n PSIgIjsKZm9yKHZpc3VhbFBhcmFtIGluIGJsb2NrLm9wdGlvbnMudmlzdWFsLnRo dW1iU3R5bGVzKXsKaWYoYmxvY2sub3B0aW9ucy52aXN1YWwudGh1bWJTdHlsZXMu aGFzT3duUHJvcGVydHkodmlzdWFsUGFyYW0pKXsKc3R5bGVTdHJpbmcrPXZpc3Vh bFBhcmFtKyI6IitibG9jay5vcHRpb25zLnZpc3VhbC50aHVtYlN0eWxlc1t2aXN1 YWxQYXJhbV0rIiAhaW1wb3J0YW50OyI7Cn0KfQppZihzdHlsZVN0cmluZz09PSIi KXsKc3R5bGVTdHJpbmc9REVGQVVMVF9TVFlMRTsKfQpyZXR1cm4gc3R5bGVTdHJp bmc7Cn07CmlmKCF2YXJzLmZhdmljb24pewppZihfdGhpcy5jaGVja0Jhbm5lclZp ZXdUeXBlKGJhbm5lciwncmljaCcpKXsKdmFyIHBpY3R1cmVzPV90aGlzLmdldFJp Y2hQaWN0dXJlU3JjKGJhbm5lcik7CnZhcnMucGljdHVyZT0obmV3IEJlZ3VuLlRl bXBsYXRlKF90aGlzLlRwbHMuZ2V0SFRNTCgnYm5ucl9waWN0dXJlJykpKS5ldmFs dWF0ZSh7c3JjOnBpY3R1cmVzLnNtYWxsLGJpZ19waG90b19zcmM6cGljdHVyZXMu YmlnLHVybDpiYW5uZXIudXJsfSk7CnZhciBpc191c2VfcmljaD0nX3JpY2gnOwp9 ZWxzZXsKdmFycy50aHVtYj1OdW1iZXIoYmxvY2sub3B0aW9ucy5zaG93X3RodW1i bmFpbHMpPyhuZXcgQmVndW4uVGVtcGxhdGUoX3RoaXMuVHBscy5nZXRIVE1MKCdi bm5yX3RodW1iJykpKS5ldmFsdWF0ZSh7CnVybDpiYW5uZXIudXJsLApzcmM6X3Ro aXMuZ2V0VGh1bWJTcmMoYmFubmVyLHRydWUpLApiZ2NvbG9yOl90aGlzLlRodW1i cy5nZXRUeXBlKCk9PSdjbGFzc2ljJz8oKHR5cGVvZiBibG9jay5vcHRpb25zLnZp c3VhbC50aHVtYiE9J3VuZGVmaW5lZCcpP2Jsb2NrLm9wdGlvbnMudmlzdWFsLnRo dW1iLmJhY2tncm91bmRDb2xvcjpfdGhpcy5TdHJpbmdzLmNzcy50aHVtYl9kZWZf Y29sb3IpOid0cmFuc3BhcmVudCcsCndpZHRoOl90aGlzLlRodW1icy5nZXREaW1l bnRpb25zKF90aGlzLlRodW1icy5nZXRUeXBlKCkpLndpZHRoLApoZWlnaHQ6X3Ro aXMuVGh1bWJzLmdldERpbWVudGlvbnMoX3RoaXMuVGh1bWJzLmdldFR5cGUoKSku aGVpZ2h0LApwbmdmaXg6KEJlZ3VuLkJyb3dzZXIuSUUmJkJlZ3VuLkJyb3dzZXIu dmVyc2lvbigpPD02KT8nc3R5bGU9ImZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5z Zm9ybS5NaWNyb3NvZnQuQWxwaGFJbWFnZUxvYWRlcihzcmM9XCcnK190aGlzLmdl dFRodW1iU3JjKGJhbm5lcixmYWxzZSkrJ1wnLCBzaXppbmdNZXRob2Q9XCdpbWFn ZVwnKTsiJzonJywKYWRkaXRpb25hbFN0eWxlczpnZXRUaHVtYkFkZGl0aW9uYWxT dHlsZXMoKSwKbW91c2VfZXZlbnRzOl90aGlzLlRodW1icy5nZXRUeXBlKCk9PSdj bGFzc2ljJz8nb25tb3VzZW92ZXI9InRoaXMuc3R5bGUuYmFja2dyb3VuZCA9IFwn JysoKHR5cGVvZiBibG9jay5vcHRpb25zLnZpc3VhbC50aHVtYl9ob3ZlciE9J3Vu ZGVmaW5lZCcpP2Jsb2NrLm9wdGlvbnMudmlzdWFsLnRodW1iX2hvdmVyLmJhY2tn cm91bmRDb2xvcjpfdGhpcy5TdHJpbmdzLmNzcy50aHVtYl9kZWZfY29sb3JfaG92 ZXIpKydcJyIgb25tb3VzZW91dD0idGhpcy5zdHlsZS5iYWNrZ3JvdW5kID0gXCcn KygodHlwZW9mIGJsb2NrLm9wdGlvbnMudmlzdWFsLnRodW1iIT0ndW5kZWZpbmVk Jyk/YmxvY2sub3B0aW9ucy52aXN1YWwudGh1bWIuYmFja2dyb3VuZENvbG9yOl90 aGlzLlN0cmluZ3MuY3NzLnRodW1iX2RlZl9jb2xvcikrJ1wnIic6JycKfSk6Jyc7 CnZhcnMucGljdHVyZT12YXJzLnRodW1iOwp9Cn0KdmFyIGlzX3VzZV9hY2NvcmRp b249TnVtYmVyKGJsb2NrLm9wdGlvbnMudXNlX2FjY29yZGlvbik/J191c2VfYWNj b3JkaW9uJzonJzsKcmV0dXJuKG5ldyBCZWd1bi5UZW1wbGF0ZShfdGhpcy5UcGxz LmdldEhUTUwoJ2Jhbm5lcl8nK2Jsb2NrLm9wdGlvbnMuZGltZW5zaW9ucy50eXBl LnRvTG93ZXJDYXNlKCkraXNfdXNlX3JpY2graXNfdXNlX2FjY29yZGlvbikpKS5l dmFsdWF0ZSh2YXJzKTsKfWVsc2V7CnJldHVybicnOwp9Cn07CnRoaXMuY2hlY2tC YW5uZXJWaWV3VHlwZT1mdW5jdGlvbihiYW5uZXIsdmlld3R5cGUpewpyZXR1cm4g QmVndW4uVXRpbHMuaW5MaXN0KGJhbm5lci52aWV3X3R5cGUsdmlld3R5cGUpOwp9 Owp0aGlzLmdldFRhYmxlV2l0aEFkcz1mdW5jdGlvbihibG9ja0lkKXsKdmFyIGdl dFNpbmdsZVRhYmxlPWZ1bmN0aW9uKGlkKXsKdmFyIGVsZW1lbnQ9X3RoaXMuQmxv Y2tzLmdldERvbU9iaihpZCk7CmlmKCFlbGVtZW50KXsKcmV0dXJuIHVuZGVmaW5l ZDsKfQp2YXIgdGFibGVzPWVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRh YmxlIik7CmZvcih2YXIgaT0wO2k8dGFibGVzLmxlbmd0aDtpKyspewppZih0YWJs ZXNbaV0uY2xhc3NOYW1lJiZ0YWJsZXNbaV0uY2xhc3NOYW1lLmluZGV4T2YoImJl Z3VuX2Fkdl90YWJsZSIpPi0xKXsKcmV0dXJuIHRhYmxlc1tpXTsKfQp9CnJldHVy biB1bmRlZmluZWQ7Cn07CnN3aXRjaCh0eXBlb2YgYmxvY2tJZCl7CmNhc2UibnVt YmVyIjoKY2FzZSJzdHJpbmciOgpyZXR1cm4gZ2V0U2luZ2xlVGFibGUoYmxvY2tJ ZCk7CmRlZmF1bHQ6CnZhciBibG9ja3M9X3RoaXMuZ2V0QmxvY2tzKCk7CnZhciBy ZXM9W107CmZvcih2YXIgaT0wO2k8YmxvY2tzLmxlbmd0aDtpKyspewp2YXIgdGJs PWdldFNpbmdsZVRhYmxlKGJsb2Nrc1tpXS5pZCk7CmlmKHRibCl7CnJlcy5wdXNo KHRibCk7Cn0KfQpyZXR1cm4ocmVzLmxlbmd0aD4wP3Jlczp1bmRlZmluZWQpOwp9 Cn07CnRoaXMudXBkYXRlVXJsUGFyYW1JblRkPWZ1bmN0aW9uKHRkLHBhcmFtLHZh bHVlKXsKdmFyIHVwZGF0ZVBhcmFtSW5MaW5rPWZ1bmN0aW9uKGxpbmsscGFyYW0s dmFsdWUpewp2YXIgaHJlZlRleHQ9bGluay5nZXRBdHRyaWJ1dGUoImhyZWYiKTsK dmFyIGxpbmtDb250ZW50PWxpbmsuZmlyc3RDaGlsZC5ub2RlVmFsdWU7CmlmKGhy ZWZUZXh0LmluZGV4T2YoJ2h0dHA6Ly8nKT09LTEmJmhyZWZUZXh0LmluZGV4T2Yo J2h0dHBzOi8vJyk9PS0xKXsKcmV0dXJuIGZhbHNlOwp9CnZhciBuZXdIcmVmOwpp ZihocmVmVGV4dC5pbmRleE9mKCI/Iik9PT0tMSl7CmhyZWZUZXh0PWhyZWZUZXh0 KyI/YWRkaW5nUGFyYW1zIjsKfQppZihocmVmVGV4dC5pbmRleE9mKCImIitwYXJh bSsiPSIpPT09LTEpewpuZXdIcmVmPWhyZWZUZXh0KyImIitwYXJhbSsiPSIrdmFs dWU7Cmxpbmsuc2V0QXR0cmlidXRlKCJocmVmIixuZXdIcmVmKTsKbGluay5maXJz dENoaWxkLm5vZGVWYWx1ZT1saW5rQ29udGVudDsKdGQuc2V0QXR0cmlidXRlKCJf dXJsIixuZXdIcmVmKTsKfWVsc2V7CnZhciBmaXJzdFBvc2l0aW9uPWhyZWZUZXh0 LmluZGV4T2YoIiYiK3BhcmFtKyI9IikrcGFyYW0ubGVuZ3RoKzE7CnZhciBsYXN0 UG9zaXRpb249aHJlZlRleHQuaW5kZXhPZigiJiIsZmlyc3RQb3NpdGlvbisxKTsK aWYobGFzdFBvc2l0aW9uPT09LTEpewpuZXdIcmVmPWhyZWZUZXh0LnN1YnN0cmlu ZygwLGZpcnN0UG9zaXRpb24rMSkrdmFsdWU7Cmxpbmsuc2V0QXR0cmlidXRlKCJo cmVmIixuZXdIcmVmKTsKbGluay5maXJzdENoaWxkLm5vZGVWYWx1ZT1saW5rQ29u dGVudDsKdGQuc2V0QXR0cmlidXRlKCJfdXJsIixuZXdIcmVmKTsKfWVsc2V7Cm5l d0hyZWY9aHJlZlRleHQuc3Vic3RyaW5nKDAsZmlyc3RQb3NpdGlvbisxKSt2YWx1 ZStocmVmVGV4dC5zbGljZShsYXN0UG9zaXRpb24pOwpsaW5rLnNldEF0dHJpYnV0 ZSgiaHJlZiIsbmV3SHJlZik7CmxpbmsuZmlyc3RDaGlsZC5ub2RlVmFsdWU9bGlu a0NvbnRlbnQ7CnRkLnNldEF0dHJpYnV0ZSgiX3VybCIsbmV3SHJlZik7Cn0KfQp9 Owp2YXIgbGlua3NJblRkPXRkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIik7CmZv cih2YXIgaT0wLGxlbj1saW5rc0luVGQubGVuZ3RoO2k8bGVuO2krKyl7CnVwZGF0 ZVBhcmFtSW5MaW5rKGxpbmtzSW5UZFtpXSxwYXJhbSx2YWx1ZSk7Cn0KfTsKdGhp cy5nZXRCbG9ja0hUTUw9ZnVuY3Rpb24oYmFubmVyc19odG1sX2FycixibG9jayxw YWQpewppZighYmFubmVyc19odG1sX2Fycil7CnJldHVybicnOwp9CnZhciBiYW5u ZXJzX2h0bWw9YmFubmVyc19odG1sX2Fyci5qb2luKCcnKTsKdmFyIHN0dWJfZGlz cGxheT1OdW1iZXIoX3RoaXMucmVzcG9uc2VQYXJhbXNbJ3N0dWInXSk/Jyc6J25v bmUnOwppZihibG9jay5vcHRpb25zJiYodHlwZW9mIGJsb2NrLm9wdGlvbnMuanNv biE9J3VuZGVmaW5lZCcpJiYodHlwZW9mIGJsb2NrLm9wdGlvbnMuanNvbi5zdHVi IT0ndW5kZWZpbmVkJykpewpzdHViX2Rpc3BsYXk9TnVtYmVyKGJsb2NrLm9wdGlv bnMuanNvbi5zdHViKT8nJzonbm9uZSc7Cn0KdmFyIGxvZ29fZGlzcGxheT0nJzsK aWYoYmxvY2sub3B0aW9ucyYmKHR5cGVvZiBibG9jay5vcHRpb25zLmpzb24hPSd1 bmRlZmluZWQnKSYmKHR5cGVvZiBibG9jay5vcHRpb25zLmpzb24ubG9nbyE9J3Vu ZGVmaW5lZCcpKXsKbG9nb19kaXNwbGF5PShOdW1iZXIoYmxvY2sub3B0aW9ucy5q c29uLmxvZ28pKT8nJzonbm9uZSc7Cn0KdmFyIGV4dGVuZGVkX2Jsb2NrX2NsYXNz PScnOwppZihzdHViX2Rpc3BsYXk9PSdub25lJyYmbG9nb19kaXNwbGF5PT0nbm9u ZScpewpleHRlbmRlZF9ibG9ja19jbGFzcz0nYmVndW5fZXh0ZW5kZWRfYmxvY2sn Owp9ZWxzZSBpZihzdHViX2Rpc3BsYXk9PSdub25lJyYmbG9nb19kaXNwbGF5PT0n Jyl7CmV4dGVuZGVkX2Jsb2NrX2NsYXNzPSdiZWd1bl9leHRlbmRlZF9ibG9ja193 aXRoX2xvZ28nOwp9Cgp2YXIgdmFycz17fTsKdmFyIGJsb2NrX2hvdmVyX2h0bWw9 Jyc7CnZhciBibG9ja19vcHRzPWJsb2NrLm9wdGlvbnMudmlzdWFsfHx7fTsKaWYo YmxvY2tfb3B0cy5ibG9jayYmYmxvY2tfb3B0cy5ibG9ja19ob3ZlciYmYmxvY2tf b3B0cy5ibG9ja19ob3Zlci5iYWNrZ3JvdW5kQ29sb3ImJmJsb2NrX29wdHMuYmxv Y2tfaG92ZXIuYm9yZGVyQ29sb3Ipewp2YXJzLmJnY29sb3Jfb3Zlcj1ibG9ja19v cHRzLmJsb2NrX2hvdmVyLmJhY2tncm91bmRDb2xvcjsKdmFycy5icmRjb2xvcl9v dmVyPWJsb2NrX29wdHMuYmxvY2tfaG92ZXIuYm9yZGVyQ29sb3I7CnZhcnMuYmdj b2xvcl9vdXQ9YmxvY2tfb3B0cy5ibG9jay5iYWNrZ3JvdW5kQ29sb3J8fCd0cmFu c3BhcmVudCc7CnZhcnMuYnJkY29sb3Jfb3V0PWJsb2NrX29wdHMuYmxvY2suYm9y ZGVyQ29sb3J8fCd0cmFuc3BhcmVudCc7CnZhcnMuYmxvY2tfaWQ9YmxvY2suaWQ7 CmJsb2NrX2hvdmVyX2h0bWw9KG5ldyBCZWd1bi5UZW1wbGF0ZShfdGhpcy5UcGxz LmdldEhUTUwoJ2JsY2tfaG92ZXInKSkpLmV2YWx1YXRlKHZhcnMpOwp9CnZhciBw YWRfaWQ9cGFkLnBhZF9pZDsKdmFycz17CmJsb2NrX2lkOmJsb2NrLmlkLApibG9j a19ob3ZlcjpibG9ja19ob3Zlcl9odG1sLApiYW5uZXJzOmJhbm5lcnNfaHRtbCwK YmFubmVyc19jb3VudDpiYW5uZXJzX2h0bWxfYXJyLmxlbmd0aCwKCnNjcm9sbF9k aXZfaWQ6X3RoaXMuU3RyaW5ncy5jc3Muc2Nyb2xsX2Rpdl9wcmVmaXgrYmxvY2su aWQsCnNjcm9sbF90YWJsZV9pZDpfdGhpcy5TdHJpbmdzLmNzcy5zY3JvbGxfdGFi bGVfcHJlZml4K2Jsb2NrLmlkLApibG9ja193aWR0aDpOdW1iZXIoYmxvY2sub3B0 aW9ucy5kaW1lbnNpb25zLndpZHRoKT9OdW1iZXIoYmxvY2sub3B0aW9ucy5kaW1l bnNpb25zLndpZHRoKSsncHgnOicnLApibG9ja19zY3JvbGxfY2xhc3M6TnVtYmVy KGJsb2NrLm9wdGlvbnMudXNlX3Njcm9sbCk/X3RoaXMuU3RyaW5ncy5jc3Muc2Ny b2xsOicnLApiZWd1bl91cmw6X3RoaXMuU3RyaW5ncy51cmxzLmJlZ3VuLApiZWNv bWVfcGFydG5lcl9kaXNwbGF5OnN0dWJfZGlzcGxheSwKYmVjb21lX3BhcnRuZXJf dXJsOl90aGlzLmdldFN0dWIoJ2JlY29tZV9wYXJ0bmVyJyxwYWRfaWQpLApiZWNv bWVfcGFydG5lcl90ZXh0Ol90aGlzLlN0cmluZ3Muc3R1YnMuYmVjb21lX3BhcnRu ZXIsCnBsYWNlX2hlcmVfZGlzcGxheTpzdHViX2Rpc3BsYXksCnBsYWNlX2hlcmVf dXJsOl90aGlzLmdldFN0dWIoJ3BsYWNlX2hlcmUnLHBhZF9pZCksCnBsYWNlX2hl cmVfdGV4dDpfdGhpcy5TdHJpbmdzLnN0dWJzLnBsYWNlX2hlcmUsCmFsbF9iYW5u ZXJzX2Rpc3BsYXk6c3R1Yl9kaXNwbGF5LAphbGxfYmFubmVyc191cmw6X3RoaXMu Z2V0U3R1YignYWxsX2Jhbm5lcnMnLHBhZF9pZCksCmFsbF9iYW5uZXJzX3RleHQ6 X3RoaXMuU3RyaW5ncy5zdHVicy5hbGxfYmFubmVycywKY3NzX3RodW1ibmFpbHM6 TnVtYmVyKGJsb2NrLm9wdGlvbnMuc2hvd190aHVtYm5haWxzKSYmIU51bWJlcihi bG9jay5vcHRpb25zLnNob3dfZmF2aWNvbnMpP190aGlzLlN0cmluZ3MuY3NzLnRo dW1iKycgJysoX3RoaXMuVGh1bWJzLmdldFR5cGUoKT09J2NsYXNzaWMnP190aGlz LlN0cmluZ3MuY3NzLnRodW1iX2NsYXNzaWM6X3RoaXMuU3RyaW5ncy5jc3MudGh1 bWJfZGVmYXVsdCk6JycsCmxvZ29fZGlzcGxheTpsb2dvX2Rpc3BsYXksCmV4dGVu ZGVkX2Jsb2NrX2NsYXNzOmV4dGVuZGVkX2Jsb2NrX2NsYXNzLApibG9ja19hbGNv OmJsb2NrLmlzX2FsY28/KG5ldyBCZWd1bi5UZW1wbGF0ZShfdGhpcy5UcGxzLmdl dEhUTUwoJ2Jsb2NrX2FsY28nKSkpLmV2YWx1YXRlKHt9KTonJywKYmVndW5fYWxj b19pZDpibG9jay5pc19hbGNvP190aGlzLlN0cmluZ3MuY3NzLmFsY29fcHJlZml4 K2Jsb2NrLmlkOicnLAp0cmFuc3BhcmVudF9ib3JkZXJzX2NsYXNzOihibG9ja19v cHRzJiYoKGJsb2NrX29wdHMuYmxvY2smJmJsb2NrX29wdHMuYmxvY2sudHJhbnNw YXJlbnRCb3JkZXJzKXx8KGJsb2NrX29wdHMuYmxvY2tfaG92ZXImJmJsb2NrX29w dHMuYmxvY2tfaG92ZXIudHJhbnNwYXJlbnRCb3JkZXJzKSkpPyd0cmFuc3BhcmVu dEJvcmRlcnMnOicnCn07CnZhciBpc191c2VfYWNjb3JkaW9uPU51bWJlcihibG9j ay5vcHRpb25zLnVzZV9hY2NvcmRpb24pPydfdXNlX2FjY29yZGlvbic6Jyc7CnJl dHVybihuZXcgQmVndW4uVGVtcGxhdGUoX3RoaXMuVHBscy5nZXRIVE1MKCdibG9j a18nK2Jsb2NrLm9wdGlvbnMuZGltZW5zaW9ucy50eXBlLnRvTG93ZXJDYXNlKCkr aXNfdXNlX2FjY29yZGlvbikpKS5ldmFsdWF0ZSh2YXJzKTsKfTsKdGhpcy5jbGlj a0hhbmRsZXI9ZnVuY3Rpb24odGFyZ2V0VGQpewpyZXR1cm4gZnVuY3Rpb24oKXsK dmFyIG5vd1RpbWU9KG5ldyBEYXRlKS52YWx1ZU9mKCk7CnRoaXMudXBkYXRlVXJs UGFyYW1JblRkKHRhcmdldFRkLCJjbGlja190aW1lIixub3dUaW1lKTsKdGhpcy51 cGRhdGVVcmxQYXJhbUluVGQodGFyZ2V0VGQsImZyYW1lX2xldmVsIixfdGhpcy5y ZXF1ZXN0UGFyYW1zLmZybV9sZXZlbCk7Cn07Cn07CnRoaXMucHJpbnRCbG9jaz1m dW5jdGlvbihiYW5uZXJzX2h0bWwsYmxvY2sscGFkKXsKaWYoX3RoaXMuaXNPbGRC bG9jaygpKXsKcmV0dXJuOwp9CmlmKGJhbm5lcnNfaHRtbC5sZW5ndGgpewp2YXIg cmVnRXZlbnRzPWZ1bmN0aW9uKCl7CmlmKCFfdGhpcy5pc0V2ZW50VHJhY2tpbmdP bigpKXsKcmV0dXJuIHVuZGVmaW5lZDsKfQp2YXIgbW91c2VPdmVySGFuZGxlcj1m dW5jdGlvbih0YXJnZXRUZCl7CnJldHVybiBmdW5jdGlvbihlKXsKaWYoIWUpewp2 YXIgZT13aW5kb3cuZXZlbnQ7Cn0KdmFyIHJlbFRhcmdldD1lLnJlbGF0ZWRUYXJn ZXR8fGUuZnJvbUVsZW1lbnQ7CmlmKHJlbFRhcmdldD09PXRhcmdldFRkKXsKcmV0 dXJuOwp9CnZhciB0ZEVsZW1lbnRzPXRhcmdldFRkLmdldEVsZW1lbnRzQnlUYWdO YW1lKCIqIik7CmZvcih2YXIgaT0wO2k8dGRFbGVtZW50cy5sZW5ndGg7aSsrKXsK aWYodGRFbGVtZW50c1tpXT09PXJlbFRhcmdldCl7CnJldHVybjsKfQp9CmlmKCFh cmd1bWVudHMuY2FsbGVlLmNvdW50KXsKYXJndW1lbnRzLmNhbGxlZS5jb3VudD0x Owp9CnZhciBub3dUaW1lPShuZXcgRGF0ZSkudmFsdWVPZigpOwpfdGhpcy51cGRh dGVVcmxQYXJhbUluVGQodGFyZ2V0VGQsIm1vdXNlb3Zlcl90aW1lIixub3dUaW1l KTsKX3RoaXMudXBkYXRlVXJsUGFyYW1JblRkKHRhcmdldFRkLCJtb3VzZW92ZXJf Y291bnQiLGFyZ3VtZW50cy5jYWxsZWUuY291bnQrKyk7Cn07Cn07CnZhciBtb3Vz ZURvd25IYW5kbGVyPWZ1bmN0aW9uKHRhcmdldFRkKXsKcmV0dXJuIGZ1bmN0aW9u KCl7CnZhciBub3dUaW1lPShuZXcgRGF0ZSkudmFsdWVPZigpOwpfdGhpcy51cGRh dGVVcmxQYXJhbUluVGQodGFyZ2V0VGQsIm1vdXNlZG93bl90aW1lIixub3dUaW1l KTsKfTsKfTsKdmFyIHRkcz1fdGhpcy5nZXRUYWJsZVdpdGhBZHMoYmxvY2suaWQp LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwp2YXIgc2hvd1RpbWU9KG5ldyBE YXRlKS52YWx1ZU9mKCk7CmZvcih2YXIgaT0wO2k8dGRzLmxlbmd0aDtpKyspewpf dGhpcy51cGRhdGVVcmxQYXJhbUluVGQodGRzW2ldLCJzaG93X3RpbWUiLHNob3dU aW1lKTsKQmVndW4uVXRpbHMuYWRkRXZlbnQodGRzW2ldLCJtb3VzZW92ZXIiLG1v dXNlT3ZlckhhbmRsZXIodGRzW2ldKSk7CkJlZ3VuLlV0aWxzLmFkZEV2ZW50KHRk c1tpXSwibW91c2Vkb3duIixtb3VzZURvd25IYW5kbGVyKHRkc1tpXSkpOwp9Cn07 CnZhciBlbGVtPV90aGlzLkJsb2Nrcy5nZXREb21PYmooYmxvY2suaWQpOwoKaWYo IWVsZW0pewpyZXR1cm4gZmFsc2U7Cn0KdGhpcy5zZXRFeHRyYUJsb2NrUmVzcG9u c2VQYXJhbXMoYmxvY2spOwpfdGhpcy5kb21fY2hhbmdlPXRydWU7CnZhciBodG1s PV90aGlzLmdldEJsb2NrSFRNTChiYW5uZXJzX2h0bWwsYmxvY2sscGFkKTsKdmFy IHNob3c9c2hvd0RlZmF1bHQ9ZnVuY3Rpb24oZWxlbSxodG1sKXsKZWxlbS5pbm5l ckhUTUw9aHRtbDsKX3RoaXMuZG9tX2NoYW5nZT1mYWxzZTsKcmVnRXZlbnRzKCk7 Cn07CgoKaWYoQmVndW4uQnJvd3Nlci5JRSl7CnNob3c9ZnVuY3Rpb24oZWxlbSxo dG1sKXsKdmFyIG49ZWxlbS5jbG9uZU5vZGUodHJ1ZSk7Cm4uaW5uZXJIVE1MPWh0 bWw7CmVsZW0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobixlbGVtKTsKZWxlbS5w YXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW0pOwpfdGhpcy5kb21fY2hhbmdlPWZh bHNlOwpyZWdFdmVudHMoKTsKfTsKdmFyIGFwcGVuZFRhYmxlQ2VsbD1mdW5jdGlv bih0cixlbGVtKXsKaWYodHIub2Zmc2V0SGVpZ2h0KXsKdmFyIHRkPWRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CnRyLmFwcGVuZENoaWxkKHRkKTsKdGQuaW5u ZXJIVE1MPWVsZW0ub3V0ZXJIVE1MOwpzaG93KHRkLmZpcnN0Q2hpbGQsaHRtbCk7 CmVsZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtKTsKfWVsc2V7CnZhciBm dW5jPWFyZ3VtZW50cy5jYWxsZWU7CndpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9u KCl7CmZ1bmModHIsZWxlbSk7Cn0sQmVndW4uRE9NX1RJTUVPVVQpOwp9Cn07CnZh ciBwYXJlbnQ9bnVsbDsKaWYoKHBhcmVudD1lbGVtLnBhcmVudE5vZGUpJiYocGFy ZW50LnRhZ05hbWUpJiYoQmVndW4uVXRpbHMuaW5fYXJyYXkoWydvbCcsJ3VsJywn bGknXSxwYXJlbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpKSkpewp3aW5kb3cuc2V0 VGltZW91dChmdW5jdGlvbigpewp2YXIgcGFyZW50Mj1wYXJlbnQucGFyZW50Tm9k ZTsKcGFyZW50Mi5pbnNlcnRCZWZvcmUoZWxlbSxwYXJlbnQpOwpzaG93RGVmYXVs dChlbGVtLGh0bWwpOwp9LEJlZ3VuLkRPTV9USU1FT1VUKTsKfWVsc2UgaWYoKHBh cmVudCkmJihwYXJlbnQ9ZWxlbS5wYXJlbnROb2RlLnBhcmVudE5vZGUpJiYocGFy ZW50LnRhZ05hbWUpKXsKdHJ5ewpzaG93KGVsZW0saHRtbCk7Cn1jYXRjaChlKXsK c3dpdGNoKHBhcmVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkpewpjYXNlJ3RhYmxl JzoKdmFyIHRyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CndpbmRvdy5z ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CnBhcmVudC5sYXN0Q2hpbGQuYXBwZW5kQ2hp bGQodHIpOwphcHBlbmRUYWJsZUNlbGwodHIsZWxlbSk7Cn0sQmVndW4uRE9NX1RJ TUVPVVQpOwpicmVhazsKY2FzZSd0cic6CndpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0 aW9uKCl7CmFwcGVuZFRhYmxlQ2VsbChwYXJlbnQsZWxlbSk7Cn0sQmVndW4uRE9N X1RJTUVPVVQpOwpicmVhazsKY2FzZSd0aGVhZCc6CmNhc2UndGJvZHknOgpjYXNl J3Rmb290JzoKdmFyIHRyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7Cndp bmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CnBhcmVudC5hcHBlbmRDaGlsZCh0 cik7CmFwcGVuZFRhYmxlQ2VsbCh0cixlbGVtKTsKfSxCZWd1bi5ET01fVElNRU9V VCk7CmJyZWFrOwpkZWZhdWx0OgpfdGhpcy5kb21fY2hhbmdlPWZhbHNlOwp9Cn0K fWVsc2V7CnRyeXsKc2hvdyhlbGVtLGh0bWwpOwp9Y2F0Y2goZSl7Cl90aGlzLmRv bV9jaGFuZ2U9ZmFsc2U7Cn0KfQp9ZWxzZXsKc2hvdyhlbGVtLGh0bWwpOwp9CnJl dHVybiB0cnVlOwp9ZWxzZXsKcmV0dXJuIGZhbHNlOwp9Cn07CnRoaXMuaGlkZUJs b2NrPWZ1bmN0aW9uKGJsb2NrX2lkKXsKdmFyIGVsZW09X3RoaXMuQmxvY2tzLmdl dERvbU9iaihibG9ja19pZCk7CmlmKGVsZW0pewplbGVtLmlubmVySFRNTD0nJzsK fQp9Owp0aGlzLmRpc3BhdGNoQmxvY2tEcmF3Q2FsbGJhY2s9ZnVuY3Rpb24oYmxv Y2spewppZihibG9jayYmIWJsb2NrLmRyYXdDYWxsYmFja0Rpc3BhdGNoZWQpewpf dGhpcy5DYWxsYmFja3MuZGlzcGF0Y2goJ2Jsb2NrJywnZHJhdycsX3RoaXMsW2Js b2NrXSk7CmJsb2NrLmRyYXdDYWxsYmFja0Rpc3BhdGNoZWQ9dHJ1ZTsKfQp9Owp0 aGlzLmZpbGxCbG9ja3M9ZnVuY3Rpb24oKXsKdmFyIHBhZD1fdGhpcy5nZXRQYWQo KTsKdmFyIGlzVmFsaWRTcXVhcmVCbG9jaz1mdW5jdGlvbihibG9jayl7CnJldHVy bihfdGhpcy5CbG9ja3MuY2hlY2tUeXBlKGJsb2NrLCdzcXVhcmUnKSYmYmxvY2su b3B0aW9ucy5qc29uJiZibG9jay5vcHRpb25zLmpzb24ucm93JiZibG9jay5vcHRp b25zLmpzb24uY29sKTsKfTsKdmFyIGJsb2NrPW51bGw7CnZhciBibG9ja19pbmRl eD0wOwp2YXIgb3V0X29mX2Jhbm5lcnM9ZmFsc2U7CmlmKHR5cGVvZiBhcmd1bWVu dHMuY2FsbGVlLmJsb2Nrc0hhbmRsZWQ9PT0idW5kZWZpbmVkIil7CmFyZ3VtZW50 cy5jYWxsZWUuYmxvY2tzSGFuZGxlZD1bXTsKfQp3aGlsZSgoYmxvY2s9X3RoaXMu Z2V0QmxvY2soYmxvY2tfaW5kZXgscGFkKSkmJighb3V0X29mX2Jhbm5lcnMpKXsK aWYoIV90aGlzLkJsb2Nrcy5nZXREb21PYmooYmxvY2suaWQpKXsKYmxvY2tfaW5k ZXgrKzsKY29udGludWU7Cn0KaWYoIUJlZ3VuLlV0aWxzLmluX2FycmF5KGFyZ3Vt ZW50cy5jYWxsZWUuYmxvY2tzSGFuZGxlZCxibG9jaykpewpfdGhpcy5DYWxsYmFj a3MuZGlzcGF0Y2goJ2Jsb2NrJywncHJlZHJhdycsX3RoaXMsW2Jsb2NrXSk7Cmlm KGJsb2NrLm9wdGlvbnMmJmJsb2NrLm9wdGlvbnMudmlzdWFsKXsKX3RoaXMucHJp bnRCbG9ja1N0eWxlKGJsb2NrLmlkLGJsb2NrLm9wdGlvbnMudmlzdWFsLHBhZCk7 Cn0KYXJndW1lbnRzLmNhbGxlZS5ibG9ja3NIYW5kbGVkLnB1c2goYmxvY2spOwp9 CmlmKGJsb2NrLmxvYWRlZHx8X3RoaXMuQmxvY2tzLmlzRGVsZXRlZChibG9jaykp ewpibG9ja19pbmRleCsrOwpjb250aW51ZTsKfQppZihibG9jay5ub25UZXh0QmFu bmVyc0luc2VydGVkKXsKX3RoaXMuZGlzcGF0Y2hCbG9ja0RyYXdDYWxsYmFjayhi bG9jayk7CmJsb2NrX2luZGV4Kys7CmNvbnRpbnVlOwp9CmlmKEJlZ3VuLlV0aWxz LmluTGlzdCgoYmxvY2sub3B0aW9ucyYmYmxvY2sub3B0aW9ucy5ibG9ja19vcHRp b25zKSwnSlNDYXRhbG9nJykpewp2YXIgaW5pdEF1dG9DYXRhbG9nPWZ1bmN0aW9u KGJsb2NrKXsKaWYoIUJlZ3VuLkNhdGFsb2d8fCFCZWd1bi4kKF90aGlzLlN0cmlu Z3MuY3NzLmNhdGFsb2dfc2VhcmNoX3dyYXBwZXIpfHwhQmVndW4uJChfdGhpcy5T dHJpbmdzLmNzcy5jYXRhbG9nX3Jlc3VsdHNfd3JhcHBlcil8fCFCZWd1bi4kKF90 aGlzLlN0cmluZ3MuY3NzLmNhdGFsb2dfY2xvdWRfd3JhcHBlcil8fF90aGlzLmRv bV9jaGFuZ2Upewp3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpewppbml0QXV0 b0NhdGFsb2coYmxvY2spOwp9LEJlZ3VuLkRPTV9USU1FT1VUKTsKfWVsc2V7Cl90 aGlzLmluaXRBdXRvQ2F0YWxvZ0Jsb2NrKGJsb2NrKTsKfQp9Owppbml0QXV0b0Nh dGFsb2coYmxvY2spOwpibG9jay5sb2FkZWQ9dHJ1ZTsKYmxvY2tfaW5kZXgrKzsK Y29udGludWU7Cn1lbHNlIGlmKF90aGlzLkJsb2Nrcy5jaGVja1R5cGUoYmxvY2ss J2h5cGVyJykpewp2YXIgcGFkX2lkPXdpbmRvdy5iZWd1bl9hdXRvX3BhZDsKdmFy IGluaXRIeXBlcmNvbnRleHQ9ZnVuY3Rpb24oYmxvY2sscGFkX2lkKXsKaWYoIUJl Z3VuLkh5cGVyY29udGV4dHx8X3RoaXMuZG9tX2NoYW5nZSl7CndpbmRvdy5zZXRU aW1lb3V0KGZ1bmN0aW9uKCl7CmluaXRIeXBlcmNvbnRleHQoYmxvY2sscGFkX2lk KTsKfSxCZWd1bi5ET01fVElNRU9VVCk7Cn1lbHNlewpfdGhpcy5pbml0SHlwZXJj b250ZXh0QmxvY2soYmxvY2sscGFkX2lkKTsKfQp9Owppbml0SHlwZXJjb250ZXh0 KGJsb2NrLHBhZF9pZCk7CmJsb2NrLmxvYWRlZD10cnVlOwpibG9ja19pbmRleCsr Owpjb250aW51ZTsKfWVsc2UgaWYoX3RoaXMuQmxvY2tzLmNoZWNrVHlwZShibG9j aywncGhvdG8nKSl7CnZhciBwYWRfaWQ9d2luZG93LmJlZ3VuX2F1dG9fcGFkOwp2 YXIgaW5pdFBob3RvY29udGV4dD1mdW5jdGlvbihibG9jayxwYWRfaWQpewppZigh QmVndW4uUGhvdG9jb250ZXh0fHxfdGhpcy5kb21fY2hhbmdlKXsKd2luZG93LnNl dFRpbWVvdXQoZnVuY3Rpb24oKXsKaW5pdFBob3RvY29udGV4dChibG9jayxwYWRf aWQpOwp9LEJlZ3VuLkRPTV9USU1FT1VUKTsKfWVsc2V7Cl90aGlzLmluaXRQaG90 b2NvbnRleHRCbG9jayhibG9jayxwYWRfaWQpOwp9Cn07CmluaXRQaG90b2NvbnRl eHQoYmxvY2sscGFkX2lkKTsKYmxvY2subG9hZGVkPXRydWU7CmJsb2NrX2luZGV4 Kys7CmNvbnRpbnVlOwp9CnZhciBiYW5uZXJzX2h0bWw9W107CnZhciBibG9ja19i YW5uZXJfY291bnQ9MDsKdmFyIGJhbm5lcj1udWxsOwp0aGlzLnNldEV4dHJhQmxv Y2tSZXNwb25zZVBhcmFtcyhibG9jayk7CmlmKE51bWJlcihibG9jay5vcHRpb25z LnVzZV9zY3JvbGwpJiYoTnVtYmVyKGJsb2NrLm9wdGlvbnMudXNlX2FjY29yZGlv bil8fF90aGlzLkJsb2Nrcy5jaGVja1R5cGUoYmxvY2ssJ3RvcCcpfHxfdGhpcy5C bG9ja3MuY2hlY2tUeXBlKGJsb2NrLCdyaWNoJykpKXsKYmxvY2sub3B0aW9ucy51 c2Vfc2Nyb2xsPTA7Cn0KdmFyIGJhbm5lcnNfY291bnQ7CnZhciBiYW5uZXJfaHRt bDsKaWYoX3RoaXMudXNlQmxvY2tJZERpc3RyKCkpewp2YXIgaT0wOwpiYW5uZXJz X2NvdW50PV90aGlzLmdldEFjdHVhbEJsb2NrQmFubmVyc0NvdW50KGJsb2NrKTsK d2hpbGUoYmFubmVyPV90aGlzLmdldEJhbm5lcignYXV0b2NvbnRleHQnLGkscGFk LnBhZF9pZCkpewppZihiYW5uZXIuYmxvY2tfaWQmJmJhbm5lci5ibG9ja19pZD09 YmxvY2suaWQmJiFiYW5uZXIuZGlzYWJsZWQpewpiYW5uZXJfaHRtbD0nJzsKaWYo aXNWYWxpZFNxdWFyZUJsb2NrKGJsb2NrKSl7CmlmKGJsb2NrX2Jhbm5lcl9jb3Vu dCVOdW1iZXIoYmxvY2sub3B0aW9ucy5qc29uLmNvbCk9PTApewpiYW5uZXJfaHRt bCs9Jzx0cj4nOwp9CmJhbm5lcl9odG1sKz1fdGhpcy5nZXRCYW5uZXJIVE1MKGJh bm5lcixibG9jaywoYmxvY2tfYmFubmVyX2NvdW50KzEpKTsKaWYoKGJsb2NrX2Jh bm5lcl9jb3VudCsxKSVOdW1iZXIoYmxvY2sub3B0aW9ucy5qc29uLmNvbCk9PTAp ewpiYW5uZXJfaHRtbCs9JzwvdHI+JzsKfQp9ZWxzZXsKYmFubmVyX2h0bWw9X3Ro aXMuZ2V0QmFubmVySFRNTChiYW5uZXIsYmxvY2ssKGJsb2NrX2Jhbm5lcl9jb3Vu dCsxKSk7Cn0KaWYoYmFubmVyX2h0bWwpewpiYW5uZXJzX2h0bWwucHVzaChiYW5u ZXJfaHRtbCk7CmJsb2NrLmZpbGxlZF9iYW5uZXJzX2RhdGEudGV4dCsrOwpfdGhp cy5DYWxsYmFja3MuZGlzcGF0Y2goJ2Jhbm5lcicsJ2RyYXcnLF90aGlzLFtiYW5u ZXJdKTsKX3RoaXMucmVnaXN0ZXJTaG93bkJhbm5lcihiYW5uZXIpOwp9CmlmKF90 aGlzLmNoZWNrQmFubmVyVmlld1R5cGUoYmFubmVyLCdhbGNvJykpewpibG9jay5p c19hbGNvPXRydWU7Cn0KYmxvY2tfYmFubmVyX2NvdW50Kys7Cn0KaSsrOwp9Cn1l bHNlewpiYW5uZXJzX2NvdW50PV90aGlzLmdldEFjdHVhbEJsb2NrQmFubmVyc0Nv dW50KGJsb2NrKTsKd2hpbGUoYmxvY2tfYmFubmVyX2NvdW50PGJhbm5lcnNfY291 bnQpewpiYW5uZXI9X3RoaXMuZ2V0QmFubmVyKCdhdXRvY29udGV4dCcsX3RoaXMu Z2V0QmFubmVySW5kZXgocGFkLnBhZF9pZCkscGFkLnBhZF9pZCl8fG51bGw7Cmlm KGJhbm5lcil7CmlmKF90aGlzLmNoZWNrQmFubmVyVmlld1R5cGUoYmFubmVyLCdh bGNvJykpewpibG9jay5pc19hbGNvPXRydWU7Cn0KYmFubmVyX2h0bWw9Jyc7Cmlm KGlzVmFsaWRTcXVhcmVCbG9jayhibG9jaykpewppZihibG9ja19iYW5uZXJfY291 bnQlTnVtYmVyKGJsb2NrLm9wdGlvbnMuanNvbi5jb2wpPT0wKXsKYmFubmVyX2h0 bWwrPSc8dHI+JzsKfQpiYW5uZXJfaHRtbCs9X3RoaXMuZ2V0QmFubmVySFRNTChi YW5uZXIsYmxvY2ssKGJsb2NrX2Jhbm5lcl9jb3VudCsxKSk7CmlmKChibG9ja19i YW5uZXJfY291bnQrMSklTnVtYmVyKGJsb2NrLm9wdGlvbnMuanNvbi5jb2wpPT0w KXsKYmFubmVyX2h0bWwrPSc8L3RyPic7Cn0KfWVsc2V7CmJhbm5lcl9odG1sPV90 aGlzLmdldEJhbm5lckhUTUwoYmFubmVyLGJsb2NrLChibG9ja19iYW5uZXJfY291 bnQrMSkpOwp9CmlmKGJhbm5lcl9odG1sKXsKYmFubmVyc19odG1sLnB1c2goYmFu bmVyX2h0bWwpOwpibG9jay5maWxsZWRfYmFubmVyc19kYXRhLnRleHQrKzsKX3Ro aXMuQ2FsbGJhY2tzLmRpc3BhdGNoKCdiYW5uZXInLCdkcmF3JyxfdGhpcyxbYmFu bmVyXSk7Cl90aGlzLnJlZ2lzdGVyU2hvd25CYW5uZXIoYmFubmVyKTsKfQp9ZWxz ZXsKb3V0X29mX2Jhbm5lcnM9dHJ1ZTsKYnJlYWs7Cn0KYmxvY2tfYmFubmVyX2Nv dW50Kys7Cl90aGlzLmluY0Jhbm5lckluZGV4KHBhZC5wYWRfaWQpOwp9Cn0KaWYo aXNWYWxpZFNxdWFyZUJsb2NrKGJsb2NrKSYmYmxvY2tfYmFubmVyX2NvdW50PGJh bm5lcnNfY291bnQmJmJsb2NrX2Jhbm5lcl9jb3VudCE9MCl7CmZvcihibG9ja19i YW5uZXJfY291bnQ7YmxvY2tfYmFubmVyX2NvdW50PGJhbm5lcnNfY291bnQ7Ymxv Y2tfYmFubmVyX2NvdW50Kyspewp2YXIgYmFubmVyX2h0bWw9Jyc7CmlmKGJsb2Nr X2Jhbm5lcl9jb3VudCVOdW1iZXIoYmxvY2sub3B0aW9ucy5qc29uLmNvbCk9PTAp ewpiYW5uZXJfaHRtbCs9Jzx0cj4nOwp9CmJhbm5lcl9odG1sKz0nPHRkPiZuYnNw OzwvdGQ+JzsKaWYoKGJsb2NrX2Jhbm5lcl9jb3VudCsxKSVOdW1iZXIoYmxvY2su b3B0aW9ucy5qc29uLmNvbCk9PTApewpiYW5uZXJfaHRtbCs9JzwvdHI+JzsKfQpi YW5uZXJzX2h0bWwucHVzaChiYW5uZXJfaHRtbCk7Cn0KfQppZihfdGhpcy5wcmlu dEJsb2NrKGJhbm5lcnNfaHRtbCxibG9jayxwYWQpKXsKYmxvY2subG9hZGVkPXRy dWU7Cn0KX3RoaXMuZGlzcGF0Y2hCbG9ja0RyYXdDYWxsYmFjayhibG9jayk7Cl90 aGlzLmxvYWRNb2R1bGVzKGJsb2NrLHBhZCk7CmJsb2NrX2luZGV4Kys7Cn0KfTsK dGhpcy5maWxsQmxvY2tzLmRlbGF5ZWRDYWxsPWZhbHNlOwp0aGlzLmJlZ3VuVG9v bGJhckxvYWRlZD1mdW5jdGlvbigpewppZighQmVndW4uVG9vbGJhcnx8IUJlZ3Vu LlRvb2xiYXIuaW5pdCl7CnJldHVybjsKfQp3aGlsZSh0aGlzLnVuaGFuZGxlZERl YnVncy5sZW5ndGg+MCl7CkJlZ3VuLlRvb2xiYXIuaW5pdCh0aGlzLnVuaGFuZGxl ZERlYnVncy5wb3AoKSk7Cn0KfTsKdGhpcy5sb2FkTW9kdWxlcz1mdW5jdGlvbihi bG9jayxwYWQpewp2YXIgaW5pdEV4dHJhTW9kdWxlPWZ1bmN0aW9uKG9iak5hbWUs ZnVuYyxvYmplY3QpewppZighd2luZG93LkJlZ3VuW29iak5hbWVdfHxfdGhpcy5k b21fY2hhbmdlKXsKd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXsKaW5pdEV4 dHJhTW9kdWxlKG9iak5hbWUsZnVuYyxvYmplY3QpOwp9LEJlZ3VuLkRPTV9USU1F T1VUKTsKfWVsc2V7CmZ1bmMob2JqZWN0KTsKfQp9Owp2YXIgYmFubmVyc0NvbnRh aW5WaWV3VHlwZT1mdW5jdGlvbih2aWV3X3R5cGUsc2VjdGlvbil7CnZhciBzZWN0 aW9uPXNlY3Rpb258fCdhdXRvY29udGV4dCc7CnZhciBoYXNWaWV3VHlwZT1mYWxz ZTsKZm9yKHZhciBpPTA7aTxfdGhpcy5nZXRCYW5uZXJzKHBhZC5wYWRfaWQpW3Nl Y3Rpb25dLmxlbmd0aDtpKyspewppZihfdGhpcy5jaGVja0Jhbm5lclZpZXdUeXBl KF90aGlzLmdldEJhbm5lcnMocGFkLnBhZF9pZClbc2VjdGlvbl1baV0sdmlld190 eXBlKSl7Cmhhc1ZpZXdUeXBlPXRydWU7CmJyZWFrOwp9Cn0KcmV0dXJuIGhhc1Zp ZXdUeXBlOwp9OwppZihOdW1iZXIoYmxvY2sub3B0aW9ucy51c2Vfc2Nyb2xsKSl7 CmluaXRFeHRyYU1vZHVsZSgnU2Nyb2xsZXInLF90aGlzLmluaXRTY3JvbGxCbG9j ayxibG9jayk7Cn1lbHNlIGlmKE51bWJlcihibG9jay5vcHRpb25zLnVzZV9hY2Nv cmRpb24pKXsKaW5pdEV4dHJhTW9kdWxlKCdBY2NvcmRpb24nLF90aGlzLmluaXRB Y2NvcmRpb25CbG9jayxibG9jayk7Cn1lbHNlIGlmKF90aGlzLkJsb2Nrcy5jaGVj a1R5cGUoYmxvY2ssJ3RvcCcpKXsKaW5pdEV4dHJhTW9kdWxlKCdhdXRvVG9wJyxf dGhpcy5pbml0QXV0b1RvcEJsb2NrLGJsb2NrKTsKfWVsc2UgaWYoX3RoaXMuQmxv Y2tzLmNoZWNrVHlwZShibG9jaywncmljaCcpfHxfdGhpcy5CbG9ja3MuY2hlY2tW aWV3VHlwZShibG9jaywncmljaCcpfHxiYW5uZXJzQ29udGFpblZpZXdUeXBlKCdy aWNoJykpewp2YXIgcmljaEJsb2Nrc0Rpdj1fdGhpcy5CbG9ja3MuZ2V0RG9tT2Jq KGJsb2NrLmlkKTsKaWYocmljaEJsb2Nrc0Rpdil7CkJlZ3VuLlV0aWxzLmFkZENs YXNzTmFtZShyaWNoQmxvY2tzRGl2LCdiZWd1bl9hdXRvX3JpY2gnKTsKfQppbml0 RXh0cmFNb2R1bGUoJ3JpY2hCbG9ja3MnLF90aGlzLmluaXRBdXRvUmljaEJsb2Nr LGJsb2NrKTsKfQp9Owp0aGlzLmxvYWRUb29sYmFyPWZ1bmN0aW9uKCl7CnZhciBm ZWVkPXRoaXMuZ2V0RmVlZCgpOwppZihmZWVkJiZmZWVkLmRlYnVnKXsKdmFyIGRl YnVnQ29weT17fTsKZm9yKHZhciBkZWJ1Z0VudGl0eSBpbiB3aW5kb3cuYmVndW5B ZHMuZGVidWcpewppZihmZWVkLmRlYnVnLmhhc093blByb3BlcnR5KGRlYnVnRW50 aXR5KSl7CmRlYnVnQ29weVtkZWJ1Z0VudGl0eV09ZmVlZC5kZWJ1Z1tkZWJ1Z0Vu dGl0eV07Cn0KfQp0aGlzLnVuaGFuZGxlZERlYnVncy5wdXNoKGRlYnVnQ29weSk7 CmRlbGV0ZSBmZWVkLmRlYnVnOwp0aGlzLmJlZ3VuVG9vbGJhckxvYWRlZCgpOwp9 Cn07CnRoaXMubnVsbEdsb2JhbEJsb2NrUGFyYW1zPWZ1bmN0aW9uKCl7CndpbmRv dy5iZWd1bl9ibG9ja19pZD1udWxsOwp3aW5kb3cuYmVndW5fZXh0cmFfYmxvY2s9 bnVsbDsKfTsKdGhpcy5zZXRFeHRyYUJsb2NrUmVzcG9uc2VQYXJhbXM9ZnVuY3Rp b24oYmxvY2spewpibG9jay5vcHRpb25zLnVzZV9zY3JvbGw9dHlwZW9mIGJsb2Nr Lm9wdGlvbnMudXNlX3Njcm9sbCE9J251bWJlcic/TnVtYmVyKF90aGlzLnJlc3Bv bnNlUGFyYW1zWydhdXRvc2Nyb2xsJ10pOmJsb2NrLm9wdGlvbnMudXNlX3Njcm9s bDsKYmxvY2sub3B0aW9ucy5zaG93X3RodW1ibmFpbHM9dHlwZW9mIGJsb2NrLm9w dGlvbnMuc2hvd190aHVtYm5haWxzIT0nbnVtYmVyJ3x8aXNOYU4oYmxvY2sub3B0 aW9ucy5zaG93X3RodW1ibmFpbHMpP051bWJlcihfdGhpcy5yZXNwb25zZVBhcmFt c1sndGh1bWJzJ10pOmJsb2NrLm9wdGlvbnMuc2hvd190aHVtYm5haWxzOwp9Owp9 OwoKKGZ1bmN0aW9uKCl7CnZhciBhYz1CZWd1bi5BdXRvY29udGV4dDsKCmFjLk1v bml0b3I9bmV3IGZ1bmN0aW9uKCl7CnZhciBfdGhpcz10aGlzOwp0aGlzLmluaXQ9 ZnVuY3Rpb24oKXsKQmVndW4uVXRpbHMuYWRkRXZlbnQod2luZG93LCdsb2FkJyxm dW5jdGlvbigpewpfdGhpcy5wcmVwYXJlKCk7Cn0pOwpCZWd1bi5VdGlscy5hZGRF dmVudCh3aW5kb3csJ3VubG9hZCcsZnVuY3Rpb24oKXsKX3RoaXMuc2VuZChfdGhp cy5kYXRhfHwnbm9uZScpOwp9KTsKQmVndW4uVXRpbHMuYWRkRXZlbnQod2luZG93 LCdzY3JvbGwnLGZ1bmN0aW9uKCl7Cl90aGlzLmNvdW50KCk7Cn0pOwp9Owp0aGlz LnByZXBhcmU9ZnVuY3Rpb24oKXsKdmFyIHBhZHM9YWMuUGFkcy5nZXRQYWRzKCk7 CmlmKHBhZHMubGVuZ3RoPT09MCl7CkJlZ3VuLkVycm9yLnNlbmQoImJlZ3VuX2F1 dG9fcGFkIGlzIG1pc3NpbmciLGRvY3VtZW50LmxvY2F0aW9uLC0xKTsKcmV0dXJu Owp9CmZvcih2YXIgbj0wLGxuPXBhZHMubGVuZ3RoO248bG47bisrKXsKZm9yKHZh ciBpPTAsbGVuZ3RoPXBhZHNbbl0uYmxvY2tzLmxlbmd0aDtpPGxlbmd0aDtpKysp ewp2YXIgZG9tX29iaj1hYy5CbG9ja3MuZ2V0RG9tT2JqKHBhZHNbbl0uYmxvY2tz W2ldLmlkKTsKaWYoYWMuQmxvY2tzLmlzRGVsZXRlZChwYWRzW25dLmJsb2Nrc1tp XSl8fCFkb21fb2JqKXsKY29udGludWU7Cn0KcGFkc1tuXS5ibG9ja3NbaV0uaGlk ZGVuPWZhbHNlOwpwYWRzW25dLmJsb2Nrc1tpXS5kb21fb2JqPWRvbV9vYmo7CnZh ciBiYW5uZXJzX2lkPVtdOwp2YXIgdGRzPWRvbV9vYmouZ2V0RWxlbWVudHNCeVRh Z05hbWUoJ3RkJyk7CmZvcih2YXIgaz0wLGw9dGRzLmxlbmd0aDtrPGw7aysrKXsK aWYodGRzW2tdLmdldEF0dHJpYnV0ZSgnX2Jhbm5lcl9pZCcpJiZ0ZHNba10uZ2V0 QXR0cmlidXRlKCdfYmFubmVyX2lkJykhPScnJiZ0eXBlb2YodGRzW2tdLmdldEF0 dHJpYnV0ZSgnX2Jhbm5lcl9pZCcpKSE9dW5kZWZpbmVkKXsKYmFubmVyc19pZFti YW5uZXJzX2lkLmxlbmd0aF09dGRzW2tdLmdldEF0dHJpYnV0ZSgnX2Jhbm5lcl9p ZCcpOwp9Cn0KcGFkc1tuXS5ibG9ja3NbaV0uYmFubmVyc19pZD1iYW5uZXJzX2lk LmpvaW4oJywnKTsKfQp9CnRoaXMuY291bnQoKTsKfTsKdGhpcy5jb3VudD1mdW5j dGlvbigpewp2YXIgZGF0YT1bXTsKdmFyIHZpc2libGVCYW5uZXJzRGF0YT1bXTsK dmFyIHBhZHM9YWMuUGFkcy5nZXRQYWRzKCk7CmZvcih2YXIgbj0wLGxuPXBhZHMu bGVuZ3RoO248bG47bisrKXsKdmFyIGhpZGRlbkJhbm5lcnNPYmo9W107CnZhciB2 aXNpYmxlQmFubmVyc09iaj1bXTsKZm9yKHZhciBpPTAsbD1wYWRzW25dLmJsb2Nr cy5sZW5ndGg7aTxsO2krKyl7CnZhciB2aWV3cG9ydGhlaWdodD1CZWd1bi5VdGls cy5jb3VudFdpbmRvd1NpemUoKS5oZWlnaHQ7CnZhciBzY3JvbGxlZE9mWT1CZWd1 bi5VdGlscy5nZXRTY3JvbGxYWSgpLnk7CnZhciBkb21fb2JqPXBhZHNbbl0uYmxv Y2tzW2ldLmRvbV9vYmo7CmlmKGRvbV9vYmopewppZighcGFkc1tuXS5ibG9ja3Nb aV0uYWxyZWFkeVNlZW4pewppZighcGFkc1tuXS5ibG9ja3NbaV0uYmFubmVyc19p ZCl7CnBhZHNbbl0uYmxvY2tzW2ldLmFscmVhZHlTZWVuPXRydWU7CmNvbnRpbnVl Owp9CnZhciBibG9ja190b3BfcG9zPUJlZ3VuLlV0aWxzLmZpbmRQb3MoZG9tX29i aikmJkJlZ3VuLlV0aWxzLmZpbmRQb3MoZG9tX29iaikudG9wOwppZihibG9ja190 b3BfcG9zPnZpZXdwb3J0aGVpZ2h0K3Njcm9sbGVkT2ZZKXsKcGFkc1tuXS5ibG9j a3NbaV0uaGlkZGVuPXRydWU7CmhpZGRlbkJhbm5lcnNPYmpbaGlkZGVuQmFubmVy c09iai5sZW5ndGhdPXsKaWQ6cGFkc1tuXS5ibG9ja3NbaV0uaWQsCmJhbm5lcnNf aWQ6cGFkc1tuXS5ibG9ja3NbaV0uYmFubmVyc19pZAp9Owp9ZWxzZXsKcGFkc1tu XS5ibG9ja3NbaV0uaGlkZGVuPWZhbHNlOwp2aXNpYmxlQmFubmVyc09ialt2aXNp YmxlQmFubmVyc09iai5sZW5ndGhdPXsKaWQ6cGFkc1tuXS5ibG9ja3NbaV0uaWQs CmJhbm5lcnNfaWQ6cGFkc1tuXS5ibG9ja3NbaV0uYmFubmVyc19pZAp9CnBhZHNb bl0uYmxvY2tzW2ldLmFscmVhZHlTZWVuPXRydWU7CnZhciBibG9ja0FscmVhZHlT ZWVuPWFjLkJsb2Nrcy5nZXRCbG9ja0J5SWQocGFkc1tuXS5ibG9ja3NbaV0uaWQs aGlkZGVuQmFubmVyc09iaik7CmRlbGV0ZSBibG9ja0FscmVhZHlTZWVuOwp9Cn0K fQp9CmlmKGhpZGRlbkJhbm5lcnNPYmoubGVuZ3RoKXsKZGF0YVtkYXRhLmxlbmd0 aF09ewpwYWRfaWQ6cGFkc1tuXS5wYWRfaWQsCmhpZGRlbjpoaWRkZW5CYW5uZXJz T2JqCn07Cn1lbHNlewpkYXRhPVtdOwp9CmlmKHZpc2libGVCYW5uZXJzT2JqLmxl bmd0aCl7CnRoaXMuc2VuZChCZWd1bi5VdGlscy50b0pTT04oewpwYWRfaWQ6cGFk c1tuXS5wYWRfaWQsCnZpc2libGU6dmlzaWJsZUJhbm5lcnNPYmoKfSkpOwp9Cn0K aWYoZGF0YS5sZW5ndGgpewp0aGlzLmRhdGE9ZGF0YS5sZW5ndGg/QmVndW4uVXRp bHMudG9KU09OKGRhdGEpOidub25lJzsKfQp9Owp0aGlzLnNlbmQ9ZnVuY3Rpb24o ZGF0YSl7CnZhciBzcmM9YWMuU3RyaW5ncy51cmxzLmxvZ19iYW5uZXJzX2NvdW50 ZXI7CkJlZ3VuLlV0aWxzLmluY2x1ZGVDb3VudGVyKHNyYyx7CmRhdGE6ZGF0YQp9 KTsKfTsKfTsKCmFjLlBhZHM9bmV3IGZ1bmN0aW9uKCl7CnZhciBwYWRzPVtdOwp0 aGlzLmluaXQ9ZnVuY3Rpb24oKXsKaWYodHlwZW9mIHdpbmRvdy5iZWd1bl9hdXRv X3BhZCE9PSJ1bmRlZmluZWQiJiYhdGhpcy5nZXRQYWQoKSl7CnRoaXMucHVzaCh3 aW5kb3cuYmVndW5fYXV0b19wYWQpOwp9Cn07CnRoaXMucHVzaD1mdW5jdGlvbihw YWRfaWQpewpwYWRzW3BhZHMubGVuZ3RoXT17CnBhZF9pZDpwYWRfaWQsCmZlZWQ6 bnVsbCwKYmxvY2tzOltdLApiYW5uZXJfaW5kZXg6MCwKZmVlZF9zdGFydGVkOmZh bHNlCn07Cn07CnRoaXMuZ2V0UGFkPWZ1bmN0aW9uKHBhZF9pZCl7CnBhZF9pZD1w YWRfaWR8fHdpbmRvdy5iZWd1bl9hdXRvX3BhZDsKZm9yKHZhciBpPTAsbD1wYWRz Lmxlbmd0aDtpPGw7aSsrKXsKaWYocGFkc1tpXS5wYWRfaWQ9PXBhZF9pZCl7CnJl dHVybiBwYWRzW2ldOwp9Cn0KcmV0dXJuIG51bGw7Cn07CnRoaXMuZ2V0UGFkcz1m dW5jdGlvbigpewpyZXR1cm4gcGFkczsKfTsKfTsKCmFjLkJsb2Nrcz1uZXcgZnVu Y3Rpb24oKXsKdGhpcy5pbml0PWZ1bmN0aW9uKCl7CmFjLnJlc2V0QmFubmVySW5k ZXgoKTsKYWMucmVzZXRNYXhTY3JvbGxlcnMoKTsKfTsKdGhpcy5hZGQ9ZnVuY3Rp b24oZWxlbSxwYWRfaWQpewp2YXIgYmxvY2tzPWFjLmdldFBhZChwYWRfaWQpLmJs b2NrczsKYmxvY2tzW2Jsb2Nrcy5sZW5ndGhdPWVsZW07Cn07CnRoaXMucHVzaD1m dW5jdGlvbihlbGVtLHBhZF9pZCl7CmlmKHR5cGVvZiB3aW5kb3cuYmVndW5fYXV0 b19wYWQhPT0idW5kZWZpbmVkIiYmZWxlbS5pZCl7CnRoaXMubG9hZEJsb2NrQ291 bnRlcih3aW5kb3cuYmVndW5fYXV0b19wYWQsZWxlbS5pZCk7Cn0KdmFyIGJsb2Nr cz1hYy5nZXRQYWQocGFkX2lkKS5ibG9ja3M7CmlmKHdpbmRvdy5iZWd1bl9leHRy YV9ibG9jayl7CmJsb2Nrc1swXT1lbGVtOwp9ZWxzZXsKYmxvY2tzW2Jsb2Nrcy5s ZW5ndGhdPWVsZW07Cn0KaWYoIWFjLmlzRmVlZFN0YXJ0ZWQoKSl7CmFjLmluaXRG ZWVkTG9hZCgpOwp9ZWxzZSBpZighIWFjLmdldEZlZWQoKSl7CmFjLmluc2VydE5v blRleHRCbG9jayhlbGVtKTsKYWMuZHJhdygpOwp9CmFjLm51bGxHbG9iYWxCbG9j a1BhcmFtcygpOwp9Owp0aGlzLmRlbD1mdW5jdGlvbihibG9ja19pZCxwYWRfaWQp ewp2YXIgYmxvY2s9bnVsbDsKdmFyIGk9MDsKdmFyIGJsb2Nrcz1hYy5nZXRQYWQo cGFkX2lkKS5ibG9ja3M7CndoaWxlKGJsb2NrPWJsb2Nrc1tpXSl7CmlmKGJsb2Nr LmlkPT1ibG9ja19pZCl7CmJsb2Nrc1tpXS5pZD0tMTsKYmxvY2tzW2ldLm9wdGlv bnMuYmFubmVyc19jb3VudD0wOwpicmVhazsKfQppKys7Cn0KfTsKdGhpcy5kZWxl dGVBbGw9ZnVuY3Rpb24ocGFkX2lkKXsKdmFyIGJsb2Nrcz1hYy5nZXRQYWQocGFk X2lkKS5ibG9ja3M7CndoaWxlKGJsb2Nrcy5wb3AoKSl7fQp9Owp0aGlzLmlzRGVs ZXRlZD1mdW5jdGlvbihibG9jayl7CmJsb2NrLmlkPT0tMSYmYmxvY2sub3B0aW9u cy5iYW5uZXJzX2NvdW50PT0wOwp9Owp0aGlzLnB1c2hBbGw9ZnVuY3Rpb24oYmxv Y2tzLHBhZF9pZCl7CnRoaXMuZGVsZXRlQWxsKHBhZF9pZCk7CnRoaXMuaW5pdCgp OwoKdmFyIGJsb2NrPW51bGw7CnZhciBpPTA7CndoaWxlKGJsb2NrPWJsb2Nrc1tp XSl7CnRoaXMucHVzaChibG9jayk7CmkrKzsKfQp9Owp0aGlzLmxvYWRCbG9ja0Nv dW50ZXI9ZnVuY3Rpb24ocGFkX2lkLGJsb2NrX2lkKXsKaWYodGhpcy5sZW5ndGg+ MCl7CkJlZ3VuLlV0aWxzLmluY2x1ZGVDb3VudGVyKGFjLlN0cmluZ3MudXJscy5i bG9ja19jb3VudGVyLHsncGFkX2lkJzpwYWRfaWQsJ2Jsb2NrX2lkJzpibG9ja19p ZH0pOwp9Cn07CnRoaXMuZ2V0QmxvY2tCeUlkPWZ1bmN0aW9uKGJsb2NrX2lkLGJs b2NrcyxwYWRfaWQpewp2YXIgYmxvY2s9bnVsbDsKdmFyIGk9MDsKYmxvY2tzPWJs b2Nrc3x8YWMuZ2V0UGFkKHBhZF9pZCkuYmxvY2tzOwp3aGlsZShibG9jaz1ibG9j a3NbaV0pewppZihibG9jay5pZD09YmxvY2tfaWQpewpyZXR1cm4gYmxvY2s7Cn0K aSsrOwp9CnJldHVybiBudWxsOwp9Owp0aGlzLmdldERvbU9iaj1mdW5jdGlvbihi bG9ja19pZCl7CnZhciByZXN1bHRCbG9jazsKaWYoYWMuZ2V0QmxvY2tJZFRvcE1v YmlsZSgpPT1ibG9ja19pZCl7CnRyeXsKcmVzdWx0QmxvY2s9dG9wLmRvY3VtZW50 JiZ0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYWMuU3RyaW5ncy5jc3MuYmxv Y2tfcHJlZml4K2Jsb2NrX2lkKTsKfWNhdGNoKGUpe30KfQpyZXR1cm4gcmVzdWx0 QmxvY2t8fEJlZ3VuLiQoYWMuU3RyaW5ncy5jc3MuYmxvY2tfcHJlZml4K2Jsb2Nr X2lkKXx8bnVsbDsKfTsKdGhpcy5jaGVja1R5cGU9ZnVuY3Rpb24oYmxvY2ssdHlw ZSl7CnJldHVybihibG9jayYmYmxvY2sub3B0aW9ucyYmYmxvY2sub3B0aW9ucy5k aW1lbnNpb25zJiZibG9jay5vcHRpb25zLmRpbWVuc2lvbnMudHlwZSYmYmxvY2su b3B0aW9ucy5kaW1lbnNpb25zLnR5cGUudG9Mb3dlckNhc2UoKT09dHlwZSk7Cn07 CnRoaXMuY2hlY2tWaWV3VHlwZT1mdW5jdGlvbihibG9jayx2aWV3dHlwZSl7CnJl dHVybiBCZWd1bi5VdGlscy5pbkxpc3QoKGJsb2NrLm9wdGlvbnMmJmJsb2NrLm9w dGlvbnMudmlld190eXBlKSx2aWV3dHlwZSk7Cn07Cn07CgphYy5DYWxsYmFja3M9 bmV3IGZ1bmN0aW9uKCl7CnZhciBfY2FsbGJhY2tzPXt9Owp2YXIgX2V4dGVuZD1m dW5jdGlvbihkZXN0aW5hdGlvbixzb3VyY2Upewpmb3IodmFyIHByb3BlcnR5IGlu IHNvdXJjZSl7CmlmKHR5cGVvZiBzb3VyY2VbcHJvcGVydHldPT0nb2JqZWN0Jyl7 CnZhciBuZXdfb2JqPXt9Owpmb3IodmFyIHByb3BlcnR5MiBpbiBzb3VyY2VbcHJv cGVydHldKXsKaWYodHlwZW9mIHNvdXJjZVtwcm9wZXJ0eV1bcHJvcGVydHkyXT09 J2Z1bmN0aW9uJyl7CmlmKCh0eXBlb2YgZGVzdGluYXRpb25bcHJvcGVydHldIT09 InVuZGVmaW5lZCIpJiYodHlwZW9mIGRlc3RpbmF0aW9uW3Byb3BlcnR5XVtwcm9w ZXJ0eTJdPT0nZnVuY3Rpb24nKSl7Cm5ld19vYmpbcHJvcGVydHkyXT1mdW5jdGlv bihvbGRfZnVuYyxuZXdfZnVuYyxwcm9wZXJ0eTIpewpyZXR1cm4gZnVuY3Rpb24o YXJncyl7Cm9sZF9mdW5jLmFwcGx5KHByb3BlcnR5Mj09J2NsaWNrJz90aGlzOmFj LFthcmdzXSk7Cm5ld19mdW5jLmFwcGx5KHByb3BlcnR5Mj09J2NsaWNrJz90aGlz OmFjLFthcmdzXSk7Cn07Cn0oZGVzdGluYXRpb25bcHJvcGVydHldW3Byb3BlcnR5 Ml0sc291cmNlW3Byb3BlcnR5XVtwcm9wZXJ0eTJdLHByb3BlcnR5Mik7Cn1lbHNl ewpuZXdfb2JqW3Byb3BlcnR5Ml09ZnVuY3Rpb24oZnVuYyxwcm9wZXJ0eTIpewpy ZXR1cm4gZnVuY3Rpb24oYXJncyl7CmZ1bmMuYXBwbHkocHJvcGVydHkyPT0nY2xp Y2snP3RoaXM6YWMsW2FyZ3NdKTsKfTsKfShzb3VyY2VbcHJvcGVydHldW3Byb3Bl cnR5Ml0scHJvcGVydHkyKTsKfQp9Cn0KZGVzdGluYXRpb25bcHJvcGVydHldPW5l d19vYmo7Cn0KfQpyZXR1cm4gZGVzdGluYXRpb247Cn07CnRoaXMucmVnaXN0ZXI9 ZnVuY3Rpb24oY2FsbGJhY2tzKXsKX2V4dGVuZChfY2FsbGJhY2tzLGNhbGxiYWNr cyk7Cn07CnRoaXMuZGlzcGF0Y2g9ZnVuY3Rpb24ob2JqLG1ldGhvZCxjb250ZXh0 X29iaixhcmdzKXsKaWYoX2NhbGxiYWNrc1tvYmpdJiZ0eXBlb2YgX2NhbGxiYWNr c1tvYmpdW21ldGhvZF09PSdmdW5jdGlvbicpewphcmdzPWFyZ3N8fFtdOwpfY2Fs bGJhY2tzW29ial1bbWV0aG9kXS5hcHBseShjb250ZXh0X29ianx8dGhpcyxhcmdz KTsKfWVsc2V7CnJldHVybiBudWxsOwp9Cn07CnRoaXMuZ2V0Q2FsbGJhY2tzPWZ1 bmN0aW9uKCl7CnJldHVybiBfY2FsbGJhY2tzOwp9Owp9OwoKYWMuVHBscz1uZXcg ZnVuY3Rpb24oKXsKdmFyIGNzcz17fTsKY3NzWydkZWZhdWx0J109J1wKLmJlZ3Vu X2FkdiAqLCAuYmVndW5fYWR2IGRpdiwgLmJlZ3VuX2FkdiAqOmxpbmssIC5iZWd1 bl9hZHYgKjp2aXNpdGVkLCAuYmVndW5fYWR2ICo6aG92ZXIsIC5iZWd1bl9hZHYg KjphY3RpdmUge1wKYmFja2dyb3VuZDogbm9uZTsgLyogbm8gIWltcG9ydGFudCBm b3IgaG92ZXIgKi9cCmJvcmRlcjogbm9uZTsgLyogbm8gIWltcG9ydGFudCBmb3Ig aG92ZXIgKi9cCndpZHRoOiBhdXRvOyBcCmhlaWdodDogYXV0bzsgXAovKmhlaWdo dDogYXV0byAhaW1wb3J0YW50OyovIC8qIHVzZWQgZm9yIHNjcm9sbGluZyAqL1wK fVwKI2JlZ3VuLWRlZmF1bHQtY3NzIHtkaXNwbGF5Om5vbmUgIWltcG9ydGFudDt9 XAonOwpjc3NbJ2Jsb2NrJ109Jy5iZWd1bl9hZHYgKiB7Y2xlYXI6bm9uZSAhaW1w b3J0YW50O2NvbG9yOiMwMDAgIWltcG9ydGFudDtmbG9hdDpub25lICFpbXBvcnRh bnQ7bWFyZ2luOjAgIWltcG9ydGFudDtwYWRkaW5nOjAgIWltcG9ydGFudDtsZXR0 ZXItc3BhY2luZzpub3JtYWwgIWltcG9ydGFudDt3b3JkLXNwYWNpbmc6bm9ybWFs ICFpbXBvcnRhbnQ7ei1pbmRleDphdXRvICFpbXBvcnRhbnQ7Zm9udC1zaXplOjEy cHggIWltcG9ydGFudDtmb250Om5vcm1hbCBub3JtYWwgMTJweCBBcmlhbCxzYW5z LXNlcmlmICFpbXBvcnRhbnQ7dGV4dC10cmFuc2Zvcm06bm9uZSAhaW1wb3J0YW50 O2xpc3Qtc3R5bGU6bm9uZSAhaW1wb3J0YW50O3Bvc2l0aW9uOnN0YXRpYyAhaW1w b3J0YW50O3RleHQtaW5kZW50OjAgIWltcG9ydGFudDt2aXNpYmlsaXR5OnZpc2li bGUgIWltcG9ydGFudDt3aWR0aDphdXRvICFpbXBvcnRhbnQ7fS5iZWd1bl9hZHYg LmJlZ3VuX2Fkdl9jb21tb24gdHIsLmJlZ3VuX2FkdiAuYmVndW5fYWR2X2NvbW1v biB0ZCwuYmVndW5fYWR2IC5iZWd1bl9hZHZfY29tbW9uIGEsLmJlZ3VuX2FkdiAu YmVndW5fYWR2X2NvbW1vbiBiLC5iZWd1bl9hZHYgLmJlZ3VuX2Fkdl9jb21tb24g ZGl2LC5iZWd1bl9hZHYgLmJlZ3VuX2Fkdl9jb21tb24gc3BhbiwuYmVndW5fYWR2 IC5iZWd1bl9hZHZfc3lzICosLmJlZ3VuX2FkdiAuYmVndW5fYWR2X2FsbCAqe2Jh Y2tncm91bmQ6bm9uZSAhaW1wb3J0YW50O2JvcmRlcjpub25lICFpbXBvcnRhbnQ7 fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0ge2hlaWdodDphdXRvICFpbXBvcnRh bnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2FkdiB7Zm9udDox MnB4LzE4cHggQXJpYWwsc2Fucy1zZXJpZiAhaW1wb3J0YW50O2NvbG9yOiMwMDAg IWltcG9ydGFudDt0ZXh0LWFsaWduOmxlZnQgIWltcG9ydGFudDt9I2JlZ3VuX2Js b2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2IGIge2ZvbnQtd2VpZ2h0OmJvbGQg IWltcG9ydGFudDtkaXNwbGF5OmlubGluZSAhaW1wb3J0YW50O30jYmVndW5fYmxv Y2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHYgdGQge2ZvbnQtc2l6ZToxMXB4ICFp bXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdiwj YmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHYgdGFibGUsI2JlZ3Vu X2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2IHRkLCNiZWd1bl9ibG9ja197 e2Jsb2NrX2lkfX0gLmJlZ3VuX2FkdiBkaXYge3BhZGRpbmc6MCAhaW1wb3J0YW50 O3RleHQtYWxpZ246bGVmdCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9j a19pZH19IC5iZWd1bl9hZHYgdGFibGUge2JvcmRlcjpub25lICFpbXBvcnRhbnQ7 Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9j a197e2Jsb2NrX2lkfX0gLmJlZ3VuX2FkdiB0ZCB7dmVydGljYWwtYWxpZ246bWlk ZGxlICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3Vu X2Fkdl9zeXMge3dpZHRoOjEwMCUgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7 YmxvY2tfaWR9fSAuYmVndW5fYWR2X3N5c19zaWduX3VwIHt2ZXJ0aWNhbC1hbGln bjptaWRkbGUgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAu YmVndW5fYWR2X2NlbGwsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5f YWR2X2FsbCB7dGV4dC1hbGlnbjpsZWZ0ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9j a197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9idWxsaXQge2NvbG9yOiNhYWEgIWlt cG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3Rp dGxlLCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl90ZXh0IHt3 aGl0ZS1zcGFjZTpub3JtYWwgIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrICFpbXBv cnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl90aXRs ZSwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfdGl0bGUgKiB7 Zm9udC13ZWlnaHQ6Ym9sZCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9j a19pZH19IC5iZWd1bl9hZHZfc3lzX2xvZ28gZGl2IHt2ZXJ0aWNhbC1hbGlnbjpt aWRkbGUgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVn dW5fYWR2X3N5c19sb2dvIGE6bGluaywjYmVndW5fYmxvY2tfe3tibG9ja19pZH19 IC5iZWd1bl9hZHZfc3lzX2xvZ28gYTp2aXNpdGVkLCNiZWd1bl9ibG9ja197e2Js b2NrX2lkfX0gLmJlZ3VuX2Fkdl9zeXNfbG9nbyBhOmhvdmVyLCNiZWd1bl9ibG9j a197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9zeXNfbG9nbyBhOmFjdGl2ZSB7Y29s b3I6e3tibG9ja19sb2dvX2NvbG9yfX0gIWltcG9ydGFudDt0ZXh0LWRlY29yYXRp b246bm9uZSAhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OmJvbGQgIWltcG9ydGFudDtm b250LXN0eWxlOml0YWxpYyAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9j a19pZH19IC5iZWd1bl9hZHZfc3lzX2xvZ28gYSB7bWFyZ2luLXRvcDotMXB4ICFp bXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9z eXNfc2lnbl91cCBkaXYge3RleHQtYWxpZ246cmlnaHQgIWltcG9ydGFudDt9I2Jl Z3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2V4dCAuYmVndW5fYWR2 X3N5c19sb2dvLCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9l eHQgLmJlZ3VuX2Fkdl9zeXNfbG9nbyAqIHtmb250LXNpemU6MTNweCAhaW1wb3J0 YW50O2xpbmUtaGVpZ2h0OjE3cHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7 YmxvY2tfaWR9fSAuYmVndW5fYWR2X3ZlciAuYmVndW5fYWR2X2NlbGwgLmJlZ3Vu X2Fkdl9jZWxsLCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl92 ZXIgLmJlZ3VuX2Fkdl9hbGwge3BhZGRpbmc6NXB4IDJweCA0cHggNXB4ICFpbXBv cnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9leHQg LmJlZ3VuX2Fkdl9zeXNfbG9nbyBkaXYge3dpZHRoOjMuOGVtICFpbXBvcnRhbnQ7 aGVpZ2h0OjIuN2V4ICFpbXBvcnRhbnQ7bGVmdDotNHB4ICFpbXBvcnRhbnQ7cG9z aXRpb246cmVsYXRpdmUgIWltcG9ydGFudDt0b3A6LTJweCAhaW1wb3J0YW50O30j YmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfZXh0IC5iZWd1bl9h ZHZfdGV4dCB7cGFkZGluZzoycHggMCA0cHggMCAhaW1wb3J0YW50O30jYmVndW5f YmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfZXh0IC5iZWd1bl9hZHZfY29u dGFjdCBzcGFuIHtwYWRkaW5nLXJpZ2h0OjAuMmVtICFpbXBvcnRhbnQ7fSNiZWd1 bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9leHQuYmVndW5fYWR2X3Zl ciAuYmVndW5fYWR2X3N5c19zaWduX3VwIHtwYWRkaW5nLXJpZ2h0OjVweCAhaW1w b3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfZml4 IC5iZWd1bl9hZHZfY2VsbCB7cGFkZGluZzowIDVweCAwIDlweCAhaW1wb3J0YW50 O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfZml4IC5iZWd1 bl9hZHZfY2VsbCwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZf Zml4IC5iZWd1bl9hZHZfY2VsbCAqIHtmb250LXNpemU6MTFweCAhaW1wb3J0YW50 O2xpbmUtaGVpZ2h0OjExcHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7Ymxv Y2tfaWR9fSAuYmVndW5fYWR2X2ZpeCAuYmVndW5fYWR2X3RpdGxlIHtmb250LXNp emU6MTJweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEzcHggIWltcG9ydGFudDtt YXJnaW4tYm90dG9tOjJweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9j a19pZH19IC5iZWd1bl9hZHZfZml4IC5iZWd1bl9hZHZfdGl0bGUgKiB7Zm9udC1z aXplOjEycHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxM3B4ICFpbXBvcnRhbnQ7 fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9maXggLmJlZ3Vu X2Fkdl90ZXh0LCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9m aXggLmJlZ3VuX2Fkdl90ZXh0ICoge2ZvbnQtc2l6ZToxMXB4ICFpbXBvcnRhbnQ7 bGluZS1oZWlnaHQ6MTJweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9j a19pZH19IC5iZWd1bl9hZHZfZml4IC5iZWd1bl9hZHZfc3lzX2xvZ28sI2JlZ3Vu X2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2ZpeCAuYmVndW5fYWR2X3N5 c19sb2dvICoge2ZvbnQtc2l6ZToxM3B4ICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6 MTdweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1 bl9hZHZfZml4IC5iZWd1bl9hZHZfYWxsLCNiZWd1bl9ibG9ja197e2Jsb2NrX2lk fX0gLmJlZ3VuX2Fkdl9maXggLmJlZ3VuX2Fkdl9hbGwgKiwjYmVndW5fYmxvY2tf e3tibG9ja19pZH19IC5iZWd1bl9hZHZfZml4IC5iZWd1bl9hZHZfc3lzX3NpZ25f dXAsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2ZpeCAuYmVn dW5fYWR2X3N5c19zaWduX3VwICoge2ZvbnQ6OXB4LzExcHggVGFob21hLEFyaWFs LHNhbnMtc2VyaWYgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9 fSAuYmVndW5fYWR2X2ZpeCAuYmVndW5fYWR2X3N5c19sb2dvIHtwb3NpdGlvbjpy ZWxhdGl2ZSAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5i ZWd1bl9hZHZfZml4IC5iZWd1bl9hZHZfc3lzX2xvZ28gZGl2IHtoZWlnaHQ6MTdw eCAhaW1wb3J0YW50O2Zsb2F0OmxlZnQgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2Nr X3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2ZpeCAuYmVndW5fYWR2X2NvbW1vbiB7 b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2Nr X2lkfX0uYmVndW5fYXV0b19yaWNoIC5iZWd1bl9hZHZfZml4IC5iZWd1bl9hZHZf Y29tbW9uIHtvdmVyZmxvdzp2aXNpYmxlICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9j a197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9maXggLmJlZ3VuX2Fkdl90ZXh0IHtw YWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lk fX0gLmJlZ3VuX2Fkdl9maXggLmJlZ3VuX2Fkdl9jb250YWN0IHNwYW4ge3BhZGRp bmctcmlnaHQ6MnB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lk fX0gLmJlZ3VuX2Fkdl9maXhfdmVyIC5iZWd1bl9hZHZfc3lzX2xvZ28sI2JlZ3Vu X2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2V4dCAuYmVndW5fYWR2X3N5 c19sb2dvIHtwYWRkaW5nLWxlZnQ6OXB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9j a197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9maXhfdmVyIC5iZWd1bl9hZHZfc3lz X2xvZ28gZGl2IHt3aWR0aDo1MXB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197 e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9maXhfdmVyIC5iZWd1bl9hZHZfc3lzX3Np Z25fdXAgZGl2IHt3aWR0aDo5MyUgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7 YmxvY2tfaWR9fSAuYmVndW5fYWR2X2ZpeF92ZXIgLmJlZ3VuX2Fkdl9hbGwge2hl aWdodDoxOHB4ICFpbXBvcnRhbnQ7cGFkZGluZzoycHggMCAwIDlweCAhaW1wb3J0 YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfZml4X3Zl ciAuYmVndW5fYWR2X2Jsb2NrIHttYXJnaW46NXB4IDAgIWltcG9ydGFudDt9I2Jl Z3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2ZpeF9ob3IgLmJlZ3Vu X2Fkdl9jb21tb24ge21hcmdpbi10b3A6N3B4ICFpbXBvcnRhbnQ7dGV4dC1hbGln bjpsZWZ0ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJl Z3VuX2Fkdl9maXhfaG9yIC5iZWd1bl9hZHZfYmxvY2sge21hcmdpbjowICFpbXBv cnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9maXhf aG9yIC5iZWd1bl9hZHZfc3lzX2xvZ28ge3dpZHRoOjUzcHggIWltcG9ydGFudDtm bG9hdDpsZWZ0ICFpbXBvcnRhbnQ7cGFkZGluZzowICFpbXBvcnRhbnQ7fSNiZWd1 bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9maXhfaG9yIC5iZWd1bl9h ZHZfc3lzX2xvZ28gZGl2IHt3aWR0aDo1M3B4ICFpbXBvcnRhbnQ7fSNiZWd1bl9i bG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9maXhfaG9yIC5iZWd1bl9hZHZf c3lzX3NpZ25fdXAge3dpZHRoOjUzcHggIWltcG9ydGFudDtmbG9hdDpsZWZ0ICFp bXBvcnRhbnQ7Y2xlYXI6bGVmdCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3ti bG9ja19pZH19IC5iZWd1bl9hZHZfZml4X2hvciAuYmVndW5fYWR2X3N5c19zaWdu X3VwIGRpdiB7cGFkZGluZy1sZWZ0OjRweCAhaW1wb3J0YW50O3RleHQtYWxpZ246 bGVmdCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1 bl9hZHZfZml4X2hvciAuYmVndW5fYWR2X3RhYmxlIHttYXJnaW4tbGVmdDo2MHB4 ICFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayAhaW1wb3J0YW50O30jYmVndW5fYmxv Y2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfZXh0IC5iZWd1bl9hZHZfY2VsbCAu YmVndW5fYWR2X2NlbGwsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5f YWR2X2V4dCAuYmVndW5fYWR2X2FsbCB7cGFkZGluZzo1cHggMnB4IDRweCA1cHgg IWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2 IC5iZWd1bl9hZHZfZmF2IHtwYWRkaW5nLWxlZnQ6MjJweCAhaW1wb3J0YW50O2Jh Y2tncm91bmQtcG9zaXRpb246bGVmdCAxcHggIWltcG9ydGFudDtiYWNrZ3JvdW5k LXJlcGVhdDpuby1yZXBlYXQgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7Ymxv Y2tfaWR9fSAuYmVndW5fYWR2IC5iYW5uZXJzX2NvdW50XzEgLmJlZ3VuX2Fkdl9m YXYge3BhZGRpbmctbGVmdDowICFpbXBvcnRhbnQ7YmFja2dyb3VuZC1wb3NpdGlv bjotMTAwMHB4IC0xMDAwcHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7Ymxv Y2tfaWR9fSAuYmVndW5fYWR2X2ZhdiAuYmVndW5fYWR2X3RpdGxlIGEge2JhY2tn cm91bmQtcG9zaXRpb246LTEwMDBweCAtMTAwMHB4ICFpbXBvcnRhbnQ7fSNiZWd1 bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl90ZXh0LCNiZWd1bl9ibG9j a197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl90ZXh0ICoge2NvbG9yOiMwMDAgIWlt cG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2Js b2NrIHtib3JkZXI6bm9uZSAhaW1wb3J0YW50O2N1cnNvcjpwb2ludGVyICFpbXBv cnRhbnQ7Y3Vyc29yOmhhbmQgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7Ymxv Y2tfaWR9fSAuYmVndW5fc2Nyb2xsIHtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFu dDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fc2Nyb2xsIHtwb3Np dGlvbjpyZWxhdGl2ZSAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19p ZH19IC5iZWd1bl9hZHYgLmJlZ3VuX2Fkdl9jZWxsIC5iZWd1bl9hZHZfcGhvbmUg KiB7Zm9udC1zaXplOjFweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9j a19pZH19IC5iZWd1bl9hZHZfcGhvbmUge3dpZHRoOjEycHggIWltcG9ydGFudDtt YXJnaW46MXB4IDNweCAwIDAgIWltcG9ydGFudDtwb3NpdGlvbjphYnNvbHV0ZSAh aW1wb3J0YW50O3RvcDowICFpbXBvcnRhbnQ7bGVmdDowICFpbXBvcnRhbnQ7fSNi ZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9waG9uZV93cmFwcGVy IHtwYWRkaW5nLWxlZnQ6MTVweCAhaW1wb3J0YW50O3doaXRlLXNwYWNlOm5vd3Jh cCAhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlICFpbXBvcnRhbnQ7ZGlzcGxh eTppbmxpbmUtYmxvY2sgIWltcG9ydGFudDtfZGlzcGxheTppbmxpbmUgIWltcG9y dGFudDt6b29tOjEgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9 fSAuYmVndW5fYWR2X3Bob25lX3dyYXBwZXIuYmVndW5fYWR2X3Bob25lX25vX2lj b24ge3BhZGRpbmctbGVmdDowICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Js b2NrX2lkfX0gZGl2LmJlZ3VuX2Fkdl9jb250YWN0ID4gLmJlZ3VuX2Fkdl9waG9u ZSB7bWFyZ2luOjAgNXB4IDAgMCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3ti bG9ja19pZH19IC5iZWd1bl9hZHZfcGhvbmUgYiB7Ym9yZGVyOiMxMThmMDAgc29s aWQgMCAhaW1wb3J0YW50O2hlaWdodDoxcHggIWltcG9ydGFudDtmb250LXNpemU6 MXB4ICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MXB4ICFpbXBvcnRhbnQ7ZGlzcGxh eTpibG9jayAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50O30j YmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfcGhvbmUgLnAwLCNi ZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9waG9uZSAucDEsI2Jl Z3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3Bob25lIC5wMywjYmVn dW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfcGhvbmUgLnA1LCNiZWd1 bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9waG9uZSAucDgge2JhY2tn cm91bmQtY29sb3I6IzExOGYwMCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3ti bG9ja19pZH19IC5iZWd1bl9hZHZfcGhvbmUgLnAxLCNiZWd1bl9ibG9ja197e2Js b2NrX2lkfX0gLmJlZ3VuX2Fkdl9waG9uZSAucDcsI2JlZ3VuX2Jsb2NrX3t7Ymxv Y2tfaWR9fSAuYmVndW5fYWR2X3Bob25lIC5wOCB7bWFyZ2luOjAgMXB4ICFpbXBv cnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9waG9u ZSAucDIsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3Bob25l IC5wNyB7Ym9yZGVyLXdpZHRoOjAgNHB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9j a197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9waG9uZSAucDMsI2JlZ3VuX2Jsb2Nr X3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3Bob25lIC5wNiB7bWFyZ2luOjAgMnB4 ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fk dl9waG9uZSAucDAge21hcmdpbjowIDNweCAhaW1wb3J0YW50O30jYmVndW5fYmxv Y2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfcGhvbmUgLnA0IHtib3JkZXItd2lk dGg6MCAzcHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAu YmVndW5fYWR2X3Bob25lIC5wNSB7bWFyZ2luOjAgNHB4ICFpbXBvcnRhbnQ7fSNi ZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9waG9uZSAucDYge2Jv cmRlci13aWR0aDowIDJweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9j a19pZH19IC5iZWd1bl9hZHZfcGhvbmUgLnA4IHtoZWlnaHQ6MnB4ICFpbXBvcnRh bnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9waG9uZSBi IHtib3JkZXItY29sb3I6e3tkb21haW46Y29sb3J9fSAhaW1wb3J0YW50O30jYmVn dW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfcGhvbmUgLnAwLCNiZWd1 bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9waG9uZSAucDEsI2JlZ3Vu X2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3Bob25lIC5wMywjYmVndW5f YmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfcGhvbmUgLnA1LCNiZWd1bl9i bG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9waG9uZSAucDgge2JhY2tncm91 bmQtY29sb3I6e3tkb21haW46Y29sb3J9fSAhaW1wb3J0YW50O30jYmVndW5fYmxv Y2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfcGhvbmUge2ZvbnQtc2l6ZToxMXB4 ICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MTFweCAhaW1wb3J0YW50O21hcmdpbi10 b3A6e3twaG9uZV9tYXJnaW5fdG9wfX0gcHggIWltcG9ydGFudDt9I2JlZ3VuX2Js b2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3RpdGxlIGEsI2JlZ3VuX2Jsb2Nr X3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3RpdGxlIGEgKiB7Y29sb3I6e3t0aXRs ZTpjb2xvcn19ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0g LmJlZ3VuX2FkdiAuYmVndW5fYWR2X3RpdGxlIGE6aG92ZXIsI2JlZ3VuX2Jsb2Nr X3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2IC5iZWd1bl9hZHZfdGl0bGUgYTpob3Zl ciAqIHtjb2xvcjojZjAwICFpbXBvcnRhbnQ7Y29sb3I6e3t0aXRsZV9ob3Zlcjpj b2xvcn19ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJl Z3VuX2Fkdl90aXRsZSwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9h ZHZfdGl0bGUgKiB7Zm9udC1zaXplOnt7dGl0bGU6Zm9udFNpemV9fSAhaW1wb3J0 YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfYWxsLCNi ZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9hbGwgKiB7Y29sb3I6 e3tkb21haW46Y29sb3J9fSAhaW1wb3J0YW50O2ZvbnQtc2l6ZTp7e2RvbWFpbjpm b250U2l6ZX19ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0g LmJlZ3VuX2Fkdl90ZXh0LCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3Vu X2Fkdl90ZXh0ICoge2NvbG9yOnt7dGV4dDpjb2xvcn19ICFpbXBvcnRhbnQ7Zm9u dC1zaXplOnt7dGV4dDpmb250U2l6ZX19ICFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0 aW9uOm5vbmUgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAu YmVndW5fYWR2X2NvbnRhY3QsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVn dW5fYWR2X2NvbnRhY3QgYSwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1 bl9hZHZfY29udGFjdCBzcGFuIHtjb2xvcjp7e2RvbWFpbjpjb2xvcn19ICFpbXBv cnRhbnQ7Zm9udC1zaXplOnt7ZG9tYWluOmZvbnRTaXplfX0gIWltcG9ydGFudDt9 I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3N5c19zaWduX3Vw LCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9zeXNfc2lnbl91 cCAqIHtjb2xvcjp7e2RvbWFpbjpjb2xvcn19ICFpbXBvcnRhbnQ7Zm9udC1zaXpl Ont7ZG9tYWluOmZvbnRTaXplfX0gIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7 YmxvY2tfaWR9fSAuYmVndW5fYWR2X2NvbnRhY3QgYSB7Y29sb3I6e3tkb21haW46 Y29sb3J9fSAhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjpub25lICFpbXBvcnRh bnQ7ZGlzcGxheTppbmxpbmUgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7Ymxv Y2tfaWR9fSAuYmVndW5fYWR2X2NvbnRhY3Qgc3BhbiB7ZGlzcGxheTppbmxpbmUg IWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2 IC5iZWd1bl9hZHZfdGh1bWIgLmJlZ3VuX3RodW1iIHtmbG9hdDpsZWZ0ICFpbXBv cnRhbnQ7ZGlzcGxheTpibG9jayAhaW1wb3J0YW50O3otaW5kZXg6MSAhaW1wb3J0 YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50O3pvb206MSAhaW1wb3J0YW50 O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHYgLmJlZ3VuX2Fk dl90aHVtYiAuYmVndW5fdGh1bWIgaW1nIHt6LWluZGV4OjIwICFpbXBvcnRhbnQ7 fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2FkdiAuYmVndW5fYWR2 X3JpY2ggLmJlZ3VuX2Fkdl9pbWFnZSB7ZmxvYXQ6bGVmdCAhaW1wb3J0YW50O21h cmdpbi1yaWdodDoxMHB4ICFpbXBvcnRhbnQ7dG9wOjhweCAhaW1wb3J0YW50O3dp ZHRoOjcwcHggIWltcG9ydGFudDtoZWlnaHQ6NzBweCAhaW1wb3J0YW50O3Bvc2l0 aW9uOnJlbGF0aXZlICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lk fX0gLmJlZ3VuX2Fkdl92ZXIgLmJlZ3VuX2Fkdl9yaWNoIC5iZWd1bl9hZHZfaW1h Z2Uge3RvcDo1cHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9 fSAuYmVndW5fYWR2IC5iZWd1bl9hZHZfdGh1bWIgLmJlZ3VuX2Fkdl9ibG9jayB7 bWFyZ2luLWxlZnQ6NjBweCAhaW1wb3J0YW50O196b29tOjEgIWltcG9ydGFudDt9 I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2IC5iZWd1bl9hZHZf dGh1bWJfZGVmYXVsdCAuYmVndW5fYWR2X2Jsb2NrIHttYXJnaW4tbGVmdDo2MHB4 ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fk diAuYmVndW5fYWR2X3RodW1iX2NsYXNzaWMgLmJlZ3VuX2Fkdl9ibG9jayB7bWFy Z2luLWxlZnQ6NzRweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19p ZH19IC5iZWd1bl9hZHYgLmJlZ3VuX2Fkdl9yaWNoIC5iZWd1bl9hZHZfYmxvY2sg e21hcmdpbi1sZWZ0OjgwcHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7Ymxv Y2tfaWR9fSAuYmVndW5fYWR2X2FjY29yZGlvbiAuYWNjb3JkaW9uX3NlY3Rpb24g LmJlZ3VuX2Fkdl9jZWxsIC5iZWd1bl9hZHZfYmxvY2sgLmJlZ3VuX2Fkdl90aXRs ZSwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfYWNjb3JkaW9u IC5hY2NvcmRpb25fc2VjdGlvbiAuYmVndW5fYWR2X2NlbGwgLmJlZ3VuX2Fkdl9i bG9jayAuc2VjdGlvbiB7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudCAhaW1w b3J0YW50O19ib3JkZXI6bm9uZSAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3ti bG9ja19pZH19IC5iZWd1bl9hZHZfYWNjb3JkaW9uIC5hY2NvcmRpb25fc2VjdGlv biAuYmVndW5fYWR2X2NlbGwge3ZlcnRpY2FsLWFsaWduOnRvcCAhaW1wb3J0YW50 O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfYWNjb3JkaW9u IC5iZWd1bl9hZHZfYmxvY2sge21hcmdpbjo1cHggMCAwICFpbXBvcnRhbnQ7fSNi ZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0uYmVndW5fYXV0b19yaWNoIC5iZWd1bl9h ZHYgLmJhbm5lcnNfY291bnRfMSAuYmVndW5fYWR2X2NlbGwsI2JlZ3VuX2Jsb2Nr X3t7YmxvY2tfaWR9fS5iZWd1bl9hdXRvX3JpY2ggLmJlZ3VuX2FkdiAuYmFubmVy c19jb3VudF8xIC5iZWd1bl9hZHZfY2VsbCAqLCNiZWd1bl9ibG9ja197e2Jsb2Nr X2lkfX0uYmVndW5fYXV0b19yaWNoIC5iZWd1bl9hZHYgLmJhbm5lcnNfY291bnRf MSAuYmVndW5fYWR2X3RleHQsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fS5iZWd1 bl9hdXRvX3JpY2ggLmJlZ3VuX2FkdiAuYmFubmVyc19jb3VudF8xIC5iZWd1bl9h ZHZfdGV4dCAqLCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0uYmVndW5fYXV0b19y aWNoIC5iZWd1bl9hZHYgLmJhbm5lcnNfY291bnRfMSAuYmVndW5fYWR2X3RpdGxl LCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0uYmVndW5fYXV0b19yaWNoIC5iZWd1 bl9hZHYgLmJhbm5lcnNfY291bnRfMSAuYmVndW5fYWR2X3RpdGxlICoge3RleHQt YWxpZ246bGVmdCAhaW1wb3J0YW50O30jYmVndW5fdG9wX2dyYXBoX2Jhbm5lciB7 bWFyZ2luOjJweCAwcHggMnB4IDBweCAhaW1wb3J0YW50O2JvcmRlcjpub25lICFp bXBvcnRhbnQ7Ym9yZGVyLXNwYWNpbmc6MHB4ICFpbXBvcnRhbnQ7YmFja2dyb3Vu ZC1jb2xvcjojZmZmICFpbXBvcnRhbnQ7fSNiZWd1bl90b3BfZ3JhcGhfYmFubmVy IC5iZWd1bl90b3BfZ3JhcGhfYmFubmVyX2xlZnRfY29sLCNiZWd1bl90b3BfZ3Jh cGhfYmFubmVyIC5iZWd1bl90b3BfZ3JhcGhfYmFubmVyX3JpZ2h0X2NvbCB7aGVp Z2h0OjkwcHggIWltcG9ydGFudDt3aWR0aDo1MCUgIWltcG9ydGFudDtiYWNrZ3Jv dW5kLWNvbG9yOiNmZmYgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tf aWR9fSAuYmVndW5fYWR2IC5iZWd1bl9hZHZfY2VsbCAuYmVndW5fYWR2X3Bob25l X3dyYXBwZXIgLmJlZ3VuX2Fkdl9waG9uZSAqLCNiZWd1bl9ibG9ja197e2Jsb2Nr X2lkfX0uYmVndW5fYXV0b19yaWNoIC5iZWd1bl9hZHYgLmJlZ3VuX2Fkdl9jZWxs IC5iZWd1bl9hZHZfcGhvbmVfd3JhcHBlciAuYmVndW5fYWR2X3Bob25lICoge2Zv bnQtc2l6ZToxcHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9 fSAuYmVndW5fYWR2X3ZlciAuYmVndW5fYWR2X3Bob25lIHttYXJnaW4tdG9wOjNw eCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9h ZHYgLmJlZ3VuX2FsY29fbWVzc2FnZSB7cGFkZGluZzoxMnB4IDEwcHggMTVweCAy MHB4ICFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUgIWltcG9ydGFudDt0b3A6 MHB4ICFpbXBvcnRhbnQ7Zm9udC1zaXplOjlweCAhaW1wb3J0YW50O2xpbmUtaGVp Z2h0OjEuMmVtICFpbXBvcnRhbnQ7Y29sb3I6IzMzMzMzMyAhaW1wb3J0YW50O3Rl eHQtdHJhbnNmb3JtOnVwcGVyY2FzZSAhaW1wb3J0YW50O2JhY2tncm91bmQtY29s b3I6I0YwRjBGMCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19 IC5iZWd1bl9hZHYgLmJlZ3VuX2FsY29fbWVzc2FnZSBzcGFuLmJlZ3VuX2FsY29f YXR0ZW50aW9uLCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2FkdiAu YmVndW5fYWR2X3RpdGxlIHNwYW4uYmVndW5fYWxjb19hdHRlbnRpb24ge2NvbG9y OiNGRjAwMDAgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAu YmVndW5fYWR2IC5iZWd1bl9hbGNvX21lc3NhZ2Ugc3Bhbi5iZWd1bl9hbGNvX2F0 dGVudGlvbiB7bGVmdDoxMHB4ICFpbXBvcnRhbnQ7cG9zaXRpb246YWJzb2x1dGUg IWltcG9ydGFudDt0b3A6MTBweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3ti bG9ja19pZH19IC5iZWd1bl9hZHYgLmJlZ3VuX2Fkdl90aXRsZSBzcGFuLmJlZ3Vu X2FsY29fYXR0ZW50aW9uIHttYXJnaW4tbGVmdDo1cHggIWltcG9ydGFudDtmb250 LXdlaWdodDpib2xkICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lk fX0gLmJlZ3VuX2Fkdl92ZXIgLmJlZ3VuX2FsY29fbWVzc2FnZSB7cGFkZGluZzox MHB4IDdweCAxMHB4IDdweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9j a19pZH19IC5iZWd1bl9hZHZfdmVyIC5iZWd1bl9hbGNvX21lc3NhZ2Ugc3Bhbi5i ZWd1bl9hbGNvX2F0dGVudGlvbiB7cG9zaXRpb246c3RhdGljICFpbXBvcnRhbnQ7 dG9wOjAgIWltcG9ydGFudDtsZWZ0OjAgIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6 NXB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gI2JlZ3Vu X2FsY29fe3tibG9ja19pZH19LmJlZ3VuX2Fkdl92ZXIge2JvcmRlci1jb2xsYXBz ZTpjb2xsYXBzZSAhaW1wb3J0YW50O31cCiNiZWd1bl9ibG9ja197e2Jsb2NrX2lk fX0gLmJlZ3VuX2FkdiB7XApiYWNrZ3JvdW5kLWNvbG9yOiB7e2Jsb2NrOmJhY2tn cm91bmRDb2xvcn19OyAvKiBubyAhaW1wb3J0YW50IGZvciBob3ZlciAqL1wKYm9y ZGVyOiAxcHggc29saWQge3tibG9jazpib3JkZXJDb2xvcn19OyAvKiBubyAhaW1w b3J0YW50IGZvciBob3ZlciAqL1wKZmlsdGVyOiB7e2Jsb2NrOmZpbHRlcn19OyAv KiBubyAhaW1wb3J0YW50IGZvciBob3ZlciAqL1wKfVwKI2JlZ3VuX2Jsb2NrX3t7 YmxvY2tfaWR9fSAuYmVndW5fYWR2LmJlZ3VuX2hvdmVyIHtcCmJhY2tncm91bmQt Y29sb3I6IHt7YmxvY2tfaG92ZXI6YmFja2dyb3VuZENvbG9yfX07IC8qIG5vICFp bXBvcnRhbnQgZm9yIGhvdmVyICovXApib3JkZXI6IDFweCBzb2xpZCB7e2Jsb2Nr X2hvdmVyOmJvcmRlckNvbG9yfX07IC8qIG5vICFpbXBvcnRhbnQgZm9yIGhvdmVy ICovXApmaWx0ZXI6IHt7YmxvY2tfaG92ZXI6ZmlsdGVyfX07IC8qIG5vICFpbXBv cnRhbnQgZm9yIGhvdmVyICovXAp9XAojYmVndW5fYmxvY2tfe3tibG9ja19pZH19 IC5iZWd1bl9hZHYgLmJlZ3VuX2Fkdl9yaWNoIC5iZWd1bl9hY3RpdmVfaW1hZ2Ug e1wKei1pbmRleDoxMDAwO1wKfVwKI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAu YmVndW5fYWR2IC5iZWd1bl9hZHZfcmljaCAuYmVndW5fYWN0aXZlX2ltYWdlIGlt ZyB7XAp6LWluZGV4OjEwMDAgIWltcG9ydGFudDtcCn1cCiNiZWd1bl9ibG9ja197 e2Jsb2NrX2lkfX0gLmJlZ3VuX2FkdiAuYmVndW5fYWR2X3JpY2ggLmJlZ3VuX2Fk dl9pbWFnZSBpbWcge1wKYm9yZGVyOjFweCBzb2xpZCB7e2Jsb2NrOmJvcmRlckNv bG9yfX07XApwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50O1wKdG9wOjA7XAps ZWZ0OjA7XAp6LWluZGV4OjIwO1wKY3Vyc29yOnBvaW50ZXI7XAp9XAojYmVndW5f YmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHYgLmJlZ3VuX2Fkdl9yaWNoIC5i ZWd1bl9hZHZfcGljdHVyZSB7XAovKndpZHRoOjcwcHg7XApoZWlnaHQ6NzBweDsq L1wKcG9zaXRpb246YWJzb2x1dGUgIWltcG9ydGFudDtcCnotaW5kZXg6MjA7XAp9 XAojYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfYWNjb3JkaW9u IC5iZWd1bl9hZHZfdGFibGUgdHIuYWNjb3JkaW9uX3NlY3Rpb24gLnNlY3Rpb24g e1wKcGFkZGluZy10b3A6MXB4O1wKaGVpZ2h0OjFweDtcCm92ZXJmbG93OmhpZGRl bjtcCnBvc2l0aW9uOnJlbGF0aXZlICFpbXBvcnRhbnQ7XAp9XAojYmVndW5fYmxv Y2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHYuYmVndW5fYWR2X2FjY29yZGlvbiAu YmVndW5fYWR2X2NvbW1vbiAuYmVndW5fYWR2X3RhYmxlIHRyLmFjY29yZGlvbl9z ZWN0aW9uLmV4cGFuZGVkIHRkIHtcCmJhY2tncm91bmQtY29sb3I6e3thY2NvcmRp b246YmFja2dyb3VuZENvbG9yfX0gIWltcG9ydGFudDtcCn1cCiNiZWd1bl9ibG9j a197e2Jsb2NrX2lkfX0gLmJlZ3VuX2NvbGxhcHNlZCB7XApoZWlnaHQ6NDVweCAh aW1wb3J0YW50O1wKb3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnQ7XAp9XAojYmVn dW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9jb2xsYXBzZWQgLmJlZ3VuX2Fk dl90aXRsZSB7XAptYXJnaW4tYm90dG9tOjMwcHggIWltcG9ydGFudDtcCn1cCic7 CmNzc1snZm9yT3BlcmFJRSddPSdcCiNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0g LmJlZ3VuX2Fkdl9jb250YWN0IHNwYW4uYmVndW5fYWR2X3Bob25lIHtcCmZsb2F0 Om5vbmUgIWltcG9ydGFudDtcCnBvc2l0aW9uOnN0YXRpYyAhaW1wb3J0YW50O1wK dmVydGljYWwtYWxpZ246IHRvcDtcCmRpc3BsYXk6aW5saW5lLWJsb2NrICFpbXBv cnRhbnQ7XAp9XAojYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZf cGhvbmVfd3JhcHBlciB7XApwYWRkaW5nLWxlZnQ6MCAhaW1wb3J0YW50O1wKcG9z aXRpb246c3RhdGljICFpbXBvcnRhbnQ7XApkaXNwbGF5OmlubGluZSAhaW1wb3J0 YW50O1wKfVwKJzsKdmFyIGh0bWw9e307Cmh0bWxbJ2JsY2tfcGxhY2UnXT0nPGRp diBpZD0ie3tpZH19Ij48L2Rpdj4nOwpodG1sWydsaW5rX2lmcmFtZSddPSc8aWZy YW1lIHNyYz0ie3t1cmx9fSIgc3R5bGU9ImhlaWdodDowO3dpZHRoOjA7Ym9yZGVy OjAiPjwvaWZyYW1lPic7Cmh0bWxbJ2JubnJfZ2x1ZSddPScgPHNwYW4gY2xhc3M9 ImJlZ3VuX2Fkdl9idWxsaXQiPiAmIzE0OTsgPC9zcGFuPiAnOwpodG1sWydibm5y X3Bob25lJ109J1wKPHNwYW4gY2xhc3M9ImJlZ3VuX2Fkdl9waG9uZSI+PGIgY2xh c3M9InAwIj48L2I+PGIgY2xhc3M9InAxIj48L2I+PGIgY2xhc3M9InAyIj48L2I+ PGIgY2xhc3M9InA0Ij48YiBjbGFzcz0icDMiPjwvYj48L2I+PGIgY2xhc3M9InA1 Ij48L2I+PGIgY2xhc3M9InA2Ij48YiBjbGFzcz0icDEiPjwvYj48L2I+PGIgY2xh c3M9InA3Ij48L2I+PGIgY2xhc3M9InA4Ij48L2I+PC9zcGFuPlwKJzsKaHRtbFsn Ym5ucl9jYXJkJ109J1wKPHNwYW4gY2xhc3M9ImJlZ3VuX2Fkdl9waG9uZV93cmFw cGVyIHt7bm9fcGhvbmVfY2xhc3N9fSI+e3twaG9uZX19PHNwYW4gY2xhc3M9ImJl Z3VuX2Fkdl9jYXJkIj48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0ie3t1cmx9fSIg Y2xhc3M9InNuYXBfbm9zaG90cyI+e3tjYXJkX3RleHR9fTwvYT48L3NwYW4+PC9z cGFuPlwKJzsKaHRtbFsnYm5ucl9wcGNhbGwnXT0nXAo8c3BhbiBjbGFzcz0iYmVn dW5fYWR2X3Bob25lX3dyYXBwZXIiPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgw KSIgb25jbGljaz0iJythYy5TdHJpbmdzLmpzLnBwY2FsbF9zaG93Kycoe3tiYW5u ZXJfaW5kZXh9fSwgdGhpcywgZXZlbnQsIHt7cGFkX2lkfX0sIFwne3tsaW5rfX1c Jywge3tpc19tb2JpbGV9fSkiPnt7cGhvbmV9fTxzcGFuIGNsYXNzPSJiZWd1bl9h ZHZfY2FyZCIgdGl0bGU9IiYjMTA0NzsmIzEwNzQ7JiMxMDg2OyYjMTA4NTsmIzEw ODY7JiMxMDgyOyYjMzI7JiMxMDczOyYjMTA3NzsmIzEwODk7JiMxMDg3OyYjMTA4 MzsmIzEwNzI7JiMxMDkwOyYjMTA4NTsmIzEwOTk7JiMxMDgxOyI+e3twcGNhbGxf dGV4dH19PC9zcGFuPjwvYT48L3NwYW4+XAonOwpodG1sWydibm5yX2RvbWFpbidd PSdcCjxzcGFuIGNsYXNzPSJiZWd1bl9hZHZfY29udGFjdCI+PGEgY2xhc3M9InNu YXBfbm9zaG90cyIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Int7dXJsfX0iIG9ubW91 c2VvdmVyPSJzdGF0dXM9XCd7e3N0YXR1c319XCc7cmV0dXJuIHRydWUiIG9ubW91 c2VvdXQ9InN0YXR1cz1cJ1wnO3JldHVybiB0cnVlIiB0aXRsZT0ie3tmdWxsRG9t YWlufX0iPnt7ZG9tYWlufX08L2E+PC9zcGFuPiBcCic7Cmh0bWxbJ2JubnJfZ2Vv J109J1wKPHNwYW4gY2xhc3M9ImJlZ3VuX2Fkdl9jaXR5Ij48YSBjbGFzcz0ic25h cF9ub3Nob3RzIiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0ie3t1cmx9fSIgb25tb3Vz ZW92ZXI9InN0YXR1cz1cJ3t7c3RhdHVzfX1cJztyZXR1cm4gdHJ1ZSIgb25tb3Vz ZW91dD0ic3RhdHVzPVwnXCc7cmV0dXJuIHRydWUiIHRpdGxlPSJ7e2Z1bGxEb21h aW59fSI+e3tnZW99fTwvYT48L3NwYW4+XAonOwpodG1sWydibm5yX3RodW1iJ109 J1wKPGEgaHJlZj0ie3t1cmx9fSIgY2xhc3M9ImJlZ3VuX3RodW1iIHNuYXBfbm9z aG90cyIgc3R5bGU9IndpZHRoOnt7d2lkdGh9fXB4ICFpbXBvcnRhbnQ7aGVpZ2h0 Ont7aGVpZ2h0fX1weCAhaW1wb3J0YW50O3t7YWRkaXRpb25hbFN0eWxlc319IiB0 YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Int7c3JjfX0iIHt7cG5nZml4fX0ge3tt b3VzZV9ldmVudHN9fSB3aWR0aD0ie3t3aWR0aH19IiBoZWlnaHQ9Int7aGVpZ2h0 fX0iIGFsdD0iIiBzdHlsZT0id2lkdGg6e3t3aWR0aH19cHggIWltcG9ydGFudDti YWNrZ3JvdW5kLWNvbG9yOnt7Ymdjb2xvcn19OyIgLz48L2E+XAonOwpodG1sWydi bm5yX3BpY3R1cmUnXT0nXAo8ZGl2IGNsYXNzPSJiZWd1bl9hZHZfaW1hZ2UiPjxh IGhyZWY9Int7dXJsfX0iIGNsYXNzPSJzbmFwX25vc2hvdHMiIHRhcmdldD0iX2Js YW5rIj48aW1nIHNyYz0ie3tzcmN9fSIgX2JpZ19waG90b19zcmM9Int7YmlnX3Bo b3RvX3NyY319IiBfc21hbGxfcGhvdG9fc3JjPSJ7e3NyY319IiBjbGFzcz0iYmVn dW5fYWR2X3BpY3R1cmUiIGFsdD0iIiAvPjwvYT48L2Rpdj5cCic7Cmh0bWxbJ2Js b2NrX2FsY28nXT0nXAo8ZGl2IGNsYXNzPSJiZWd1bl9hbGNvX21lc3NhZ2UiPjxz cGFuIGNsYXNzPSJiZWd1bl9hbGNvX2F0dGVudGlvbiI+Kjwvc3Bhbj5cCiYjMTA2 MzsmIzEwODg7JiMxMDc3OyYjMTA3OTsmIzEwODQ7JiMxMDc3OyYjMTA4ODsmIzEw ODU7JiMxMDg2OyYjMTA3NzsgJiMxMDkxOyYjMTA4NzsmIzEwODY7JiMxMDkwOyYj MTA4ODsmIzEwNzc7JiMxMDczOyYjMTA4MzsmIzEwNzc7JiMxMDg1OyYjMTA4MDsm IzEwNzc7ICYjMTA3MjsmIzEwODM7JiMxMDgyOyYjMTA4NjsmIzEwNzU7JiMxMDg2 OyYjMTA4MzsmIzExMDM7ICYjMTA3NDsmIzEwODg7JiMxMDc3OyYjMTA3NjsmIzEw ODA7JiMxMDkwOyAmIzEwNDI7JiMxMDcyOyYjMTA5NjsmIzEwNzc7JiMxMDg0OyYj MTA5MTsgJiMxMDc5OyYjMTA3NjsmIzEwODY7JiMxMDg4OyYjMTA4NjsmIzEwNzQ7 JiMxMTAwOyYjMTEwMjtcCjwvZGl2PlwKJzsKaHRtbFsnYm5ucl9hbGNvX2F0dG4n XT0nXAo8c3BhbiBjbGFzcz0iYmVndW5fYWxjb19hdHRlbnRpb24iPio8L3NwYW4+ XAonOwpodG1sWydibGNrX2hvdmVyJ109JyBvbm1vdXNlb3Zlcj0iQmVndW4uVXRp bHMuYWRkQ2xhc3NOYW1lKHRoaXMsIFwnYmVndW5faG92ZXJcJyk7IiBvbm1vdXNl b3V0PSJCZWd1bi5VdGlscy5yZW1vdmVDbGFzc05hbWUodGhpcywgXCdiZWd1bl9o b3ZlclwnKTsiJzsKaHRtbFsndG9wX2dyYXBoX2Jhbm5lciddPSc8dGFibGUgaWQ9 ImJlZ3VuX3RvcF9ncmFwaF9iYW5uZXIiPjx0Ym9keT48dHI+PHRkIGNsYXNzPSJi ZWd1bl90b3BfZ3JhcGhfYmFubmVyX2xlZnRfY29sIj48L3RkPjx0ZCBpZD0ie3tp ZH19Ij48L3RkPjx0ZCBjbGFzcz0iYmVndW5fdG9wX2dyYXBoX2Jhbm5lcl9yaWdo dF9jb2wiPjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+JzsKaHRtbFsnc2VhcmNo X2Jhbm5lcl9zd2YnXT0nPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1B RTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIHdpZHRoPSJ7e3dpZHRofX0iIGhl aWdodD0ie3toZWlnaHR9fSI+PHBhcmFtIG5hbWU9Im1vdmllIiBWQUxVRT0ie3tz b3VyY2V9fSZsaW5rMT17e3VybH19Ij48cGFyYW0gbmFtZT0id21vZGUiIHZhbHVl PSJvcGFxdWUiPjxwYXJhbSBuYW1lPSJhbGxvd1NjcmlwdEFjY2VzcyIgdmFsdWU9 ImFsd2F5cyI+PHBhcmFtIG5hbWU9InF1YWxpdHkiIFZBTFVFPSJoaWdoIj48ZW1i ZWQgc3JjPSJ7e3NvdXJjZX19JmxpbmsxPXt7dXJsfX0iIHF1YWxpdHk9ImhpZ2gi IHdpZHRoPSJ7e3dpZHRofX0iIGhlaWdodD0ie3toZWlnaHR9fSIgdHlwZT0iYXBw bGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIHdtb2RlPSJvcGFxdWUiPjwvZW1i ZWQ+PC9vYmplY3Q+JzsKaHRtbFsnc2VhcmNoX2Jhbm5lcl9qcyddPScnOwpodG1s WydzZWFyY2hfYmFubmVyX2ltZyddPSc8YSBocmVmPSJ7e3VybH19IiB0YXJnZXQ9 Il9ibGFuayI+PGltZyBzcmM9Int7c291cmNlfX0mcmVkaXI9MSIgYm9yZGVyPSIw IiB3aWR0aD0ie3t3aWR0aH19IiBoZWlnaHQ9Int7aGVpZ2h0fX0iIHN0eWxlPSJ3 aWR0aDp7e3dpZHRofX1weDtoZWlnaHQ6e3toZWlnaHR9fXB4OyIgLz48L2E+JzsK CnRoaXMuZ2V0Q1NTPWZ1bmN0aW9uKHR5cGUpewpyZXR1cm4gY3NzW3R5cGVdOwp9 Owp0aGlzLmdldEhUTUw9ZnVuY3Rpb24odHlwZSl7CnJldHVybiBodG1sW3R5cGVd Owp9Owp0aGlzLmFkZFRwbHM9ZnVuY3Rpb24obmV3VHBscyl7CnZhciB0eXBlcz1b J2h0bWwnLCdjc3MnXTsKdmFyIGk9MDsKdmFyIHR5cGU9bnVsbDsKdmFyIGlzX2Rl ZmF1bHRfY3NzX292ZXJyaWRlPWZhbHNlOwppZihjc3NbJ2RlZmF1bHQnXSYmd2lu ZG93WydiZWd1bl9jc3NfdHBscyddJiZ3aW5kb3dbJ2JlZ3VuX2Nzc190cGxzJ11b J2RlZmF1bHQnXSYmY3NzWydkZWZhdWx0J10hPXdpbmRvd1snYmVndW5fY3NzX3Rw bHMnXVsnZGVmYXVsdCddKXsKaXNfZGVmYXVsdF9jc3Nfb3ZlcnJpZGU9dHJ1ZTsK fQp2YXIgdHBsQ29udGFpbmVyPXR5cGVvZiBuZXdUcGxzPT09InVuZGVmaW5lZCI/ d2luZG93Om5ld1RwbHM7CndoaWxlKHR5cGU9dHlwZXNbaV0pewppZih0eXBlb2Yg dHBsQ29udGFpbmVyWydiZWd1bl8nK3R5cGUrJ190cGxzJ10hPT0idW5kZWZpbmVk Iil7CnZhciBqPTA7CnZhciB0cGw9bnVsbDsKd2hpbGUodHBsPXRwbENvbnRhaW5l clsnYmVndW5fJyt0eXBlKydfdHBscyddW2pdKXsKQmVndW4uZXh0ZW5kKGV2YWwo dHlwZSksdHBsKTsKaisrOwp9Cn0KaSsrOwp9CnJldHVybiBpc19kZWZhdWx0X2Nz c19vdmVycmlkZTsKfTsKfTsKCmFjLkN1c3RvbWl6YXRpb249bmV3IGZ1bmN0aW9u KCl7CnZhciBfdGhpcz10aGlzOwp2YXIgY2FsbGJhY2tzTG9nZ2VkPWZhbHNlOwp0 aGlzLmluaXQ9ZnVuY3Rpb24oKXsKaWYodHlwZW9mIHdpbmRvdy5iZWd1bl91cmxz IT09InVuZGVmaW5lZCIpewpfdGhpcy5zZXRVUkxzKHdpbmRvdy5iZWd1bl91cmxz KTsKd2luZG93LmJlZ3VuX3VybHM9bnVsbDsKfQppZih0eXBlb2Ygd2luZG93LmJl Z3VuX2NhbGxiYWNrcyE9PSJ1bmRlZmluZWQiKXsKaWYoIWNhbGxiYWNrc0xvZ2dl ZCl7CkJlZ3VuLlV0aWxzLmluY2x1ZGVDb3VudGVyKCJodHRwOi8vYXV0b2NvbnRl eHQuYmVndW4ucnUvYmxvY2tjdXN0b20/cGFkX2lkPXt7cGFkX2lkfX0mbG9nX2Nh bGxiYWNrcz0xIix7InBhZF9pZCI6KHdpbmRvdy5iZWd1bl9hdXRvX3BhZHx8Jycp fSk7CmNhbGxiYWNrc0xvZ2dlZD10cnVlOwp9Cl90aGlzLnNldENhbGxiYWNrcyh3 aW5kb3cuYmVndW5fY2FsbGJhY2tzKTsKd2luZG93LmJlZ3VuX2NhbGxiYWNrcz1u dWxsOwp9CmlmKF90aGlzLnNldFRwbHMoKXx8IWFyZ3VtZW50cy5jYWxsZWUucnVu KXsKYWMucHJpbnREZWZhdWx0U3R5bGUoKTsKYXJndW1lbnRzLmNhbGxlZS5ydW49 dHJ1ZTsKCn0KfTsKdGhpcy5zZXRVUkxzPWZ1bmN0aW9uKHVybHMpewpCZWd1bi5l eHRlbmQoYWMuU3RyaW5ncy51cmxzLHVybHN8fHt9KTsKfTsKdGhpcy5zZXRDYWxs YmFja3M9ZnVuY3Rpb24oY2FsbGJhY2tzKXsKYWMuQ2FsbGJhY2tzLnJlZ2lzdGVy KGNhbGxiYWNrc3x8e30pOwp9Owp0aGlzLnNldFRwbHM9ZnVuY3Rpb24obmV3VHBs cyl7CmFjLlRwbHMuYWRkVHBscyhuZXdUcGxzKTsKfTsKfTsKfSkoKTsKCihmdW5j dGlvbigpewp2YXIgYWM9QmVndW4uQXV0b2NvbnRleHQ7CgpmdW5jdGlvbiBvbkNv bnRlbnQoZil7CnZhciBhLGQ9ZG9jdW1lbnQsdz13aW5kb3csYz0iX19vbkNvbnRl bnRfXyIsZT0iYWRkRXZlbnRMaXN0ZW5lciIsbz0ib3BlcmEiLHI9InJlYWR5U3Rh dGUiLApzPSI8c2NyIi5jb25jYXQoImlwdCBkZWZlciBzcmM9Jy8vOicgb24iLHIs ImNoYW5nZT0naWYgKHRoaXMuIixyLCI9PVwiY29tcGxldGVcIikge3RoaXMucGFy ZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKTsiLGMsIigpfSc+PC9zY3IiLCJpcHQ+ Iik7CndbY109KGZ1bmN0aW9uKG8pewpyZXR1cm4gZnVuY3Rpb24oKXsKd1tjXT1m dW5jdGlvbigpe307CmZvcihhPWFyZ3VtZW50cy5jYWxsZWU7IWEuZG9uZTthLmRv bmU9MSl7CmYobz9vKCk6byk7Cn0KfTsKfSkod1tjXSk7CmlmKGRbZV0pewpkW2Vd KCJET01Db250ZW50TG9hZGVkIix3W2NdLGZhbHNlKTsKfQp2YXIgYmI9QmVndW4u QnJvd3NlcjsKaWYoKGJiLldlYktpdCl8fChiYi5PcGVyYSYmYmIubGVzcyg5KSkp ewooZnVuY3Rpb24oKXsKL2xvYWRlZHxjb21wbGV0ZS8udGVzdChkW3JdKT93W2Nd KCk6c2V0VGltZW91dChhcmd1bWVudHMuY2FsbGVlLDEpOwp9KSgpOwp9ZWxzZSBp ZihiYi5JRSl7CmQud3JpdGUocyk7Cn0KfQoKb25Db250ZW50KGZ1bmN0aW9uKCl7 CmFjLkNhbGxiYWNrcy5kaXNwYXRjaCgnYmxvY2tzJywnZHJhdycsYWMpOwp2YXIg cHBjYWxscz0oZnVuY3Rpb24oKXsKdmFyIHJlcz0iWyI7CnZhciBzZXBhcmF0ZVBh ZHM9IiI7CnZhciBzZXBhcmF0ZUJsb2NrczsKdmFyIHBhZ2VQYWRzPWFjLlBhZHMu Z2V0UGFkcygpOwp2YXIgaXNBbnlQcGNhbGxBZD1mYWxzZTsKZm9yKHZhciBpPTA7 aTxwYWdlUGFkcy5sZW5ndGg7aSsrKXsKcmVzKz1zZXBhcmF0ZVBhZHMrIntcInBh ZF9pZFwiOiIrcGFnZVBhZHNbaV0ucGFkX2lkKyIsXCJibG9ja3NcIjpbIjsKc2Vw YXJhdGVCbG9ja3M9IiI7CmZvcih2YXIgaj0wO2o8cGFnZVBhZHNbaV0uYmxvY2tz Lmxlbmd0aDtqKyspewp2YXIgYmxvY2tFbGVtZW50PWFjLkJsb2Nrcy5nZXREb21P YmoocGFnZVBhZHNbaV0uYmxvY2tzW2pdLmlkKTsKaWYoIWJsb2NrRWxlbWVudCl7 CmNvbnRpbnVlOwp9CnZhciBsaW5rcz1ibG9ja0VsZW1lbnQuZ2V0RWxlbWVudHNC eVRhZ05hbWUoImEiKTsKdmFyIHF1YW50aXR5PTA7CmZvcih2YXIgaz0wO2s8bGlu a3MubGVuZ3RoO2srKyl7CnZhciBvbkNsaWNrQXR0cj1saW5rc1trXS5nZXRBdHRy aWJ1dGUoIm9uY2xpY2siKTsKaWYob25DbGlja0F0dHImJm9uQ2xpY2tBdHRyLnRv U3RyaW5nKCkuaW5kZXhPZihhYy5TdHJpbmdzLmpzLnBwY2FsbF9zaG93KSE9PS0x KXsKcXVhbnRpdHkrKzsKaXNBbnlQcGNhbGxBZD10cnVlOwp9Cn0KcmVzKz1zZXBh cmF0ZUJsb2Nrcysie1wiaWRcIjoiK3BhZ2VQYWRzW2ldLmJsb2Nrc1tqXS5pZCsi LFwicHBjYWxsX2NvdW50XCI6IitxdWFudGl0eSsifSI7CnNlcGFyYXRlQmxvY2tz PSIsIjsKfQpyZXMrPSJdfSI7CnNlcGFyYXRlUGFkcz0iLCI7Cn0KaWYoaXNBbnlQ cGNhbGxBZCl7CnJldHVybiByZXMrIl0iOwp9ZWxzZXsKcmV0dXJuIiI7Cn0KfSko KTsKaWYocHBjYWxscy5sZW5ndGg+Mil7CkJlZ3VuLlV0aWxzLmluY2x1ZGVDb3Vu dGVyKGFjLlN0cmluZ3MudXJscy5wcGNhbGxzX2NvdW50ZXIseydwcGNhbGxfZGF0 YSc6ZW5jb2RlVVJJQ29tcG9uZW50KHBwY2FsbHMpfSk7Cn0KaWYoIUJlZ3VuLkJy b3dzZXIuSUUpewp2YXIgc3R5bGVFbGVtZW50cz1kb2N1bWVudC5nZXRFbGVtZW50 c0J5VGFnTmFtZSgic3R5bGUiKTsKZm9yKHZhciBpPTA7aTxzdHlsZUVsZW1lbnRz Lmxlbmd0aDtpKyspewp2YXIgc3R5bGVJZD1zdHlsZUVsZW1lbnRzW2ldLmdldEF0 dHJpYnV0ZSgiaWQiKTsKaWYoKCFzdHlsZUlkfHwhL2JlZ3VuLWJsb2NrLWNzcy0v LnRlc3Qoc3R5bGVJZCkpJiYvI2JlZ3VuX2Jsb2NrXy9pLnRlc3Qoc3R5bGVFbGVt ZW50c1tpXS5pbm5lckhUTUwpKXsKQmVndW4uVXRpbHMuaW5jbHVkZUNvdW50ZXIo Imh0dHA6Ly9hdXRvY29udGV4dC5iZWd1bi5ydS9ibG9ja2N1c3RvbT9wYWRfaWQ9 e3twYWRfaWR9fSZsb2dfY3NzX292ZXJyaWRlPTEiLHsicGFkX2lkIjood2luZG93 LmJlZ3VuX2F1dG9fcGFkfHwnJyl9KTsKYnJlYWs7Cn0KfQp9CmFjLmRvbUNvbnRl bnRMb2FkZWQ9dHJ1ZTsKfSk7CgphYy5Nb25pdG9yLmluaXQoKTsKfSkoKTsKQmVn dW4uQXV0b2NvbnRleHQuaW5pdCgpOwp9Cn0KCmlmKHR5cGVvZiBCZWd1bi5BdXRv Y29udGV4dD09PSJvYmplY3QiKXsKQmVndW4uQXV0b2NvbnRleHQuaW5pdCgpOwp9 CgpCZWd1bi5TY3JpcHRzLmFkZFN0cmljdEZ1bmN0aW9uKEJlZ3VuLlNjcmlwdHMu Q2FsbGJhY2tzWydhYyddKTsKfQoKaWYodHlwZW9mIEJlZ3VuLlNjcmlwdHMhPT0i b2JqZWN0Iil7CihmdW5jdGlvbigpewp2YXIgc2NyaXB0cz17CiJiZWd1bl9zY3Jp cHRzIjoiMjk1NjEiCn07CnZhciBiYXNlVXJsPXdpbmRvdy5iZWd1bl91cmxzJiZ3 aW5kb3cuYmVndW5fdXJscy5iYXNlX3NjcmlwdHNfdXJsP3dpbmRvdy5iZWd1bl91 cmxzLmJhc2Vfc2NyaXB0c191cmw6Imh0dHA6Ly9hdXRvY29udGV4dC5iZWd1bi5y dS8iOwpmb3IodmFyIHNjcmlwdE5hbWUgaW4gc2NyaXB0cyl7CmlmKHNjcmlwdHMu aGFzT3duUHJvcGVydHkoc2NyaXB0TmFtZSkpewpkb2N1bWVudC53cml0ZSgiPHNj ciIrImlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIgc3JjPVwiIitiYXNlVXJs KyJhY3AvIitzY3JpcHROYW1lKyIuIitzY3JpcHRzW3NjcmlwdE5hbWVdKyIuanMi KyJcIj48L3NjciIrImlwdD4iKTsKfQp9Cn0pKCk7Cn1lbHNlewppZih0eXBlb2Yg QmVndW4uU2NyaXB0cy5hZGRTdHJpY3RGdW5jdGlvbiE9PSJ1bmRlZmluZWQiKXsK YmVndW5fbG9hZF9hdXRvY29udGV4dCgpOwp9Cn0K ------------lOdbdcaHCTZRQX8JiBQeSz Content-Disposition: inline Content-Type: image/gif Content-Location: http://evrika-st.at.ua/.s/t/963/20.gif Content-Transfer-Encoding: Base64 R0lGODlhCAAIAIAAABROVv///yH5BAAAAAAALAAAAAAIAAgAAAINjI+Ap5rRGJwm voVDAQA7 ------------lOdbdcaHCTZRQX8JiBQeSz Content-Disposition: inline; filename=963.css Content-Type: text/css; charset=UTF-8; name=963.css Content-Location: http://evrika-st.at.ua/.s/src/css/963.css Content-Transfer-Encoding: 8bit /* General Style */ a:link {text-decoration:underline; color:#2B7E7E;} a:active {text-decoration:underline; color:#2B7E7E;} a:visited {text-decoration:underline; color:#2B7E7E;} a:hover {text-decoration:none; color:#000000;} .topLink a:link {text-decoration:none; color:#FFFFFF;} .topLink a:active {text-decoration:none; color:#FFFFFF;} .topLink a:visited {text-decoration:none; color:#FFFFFF;} .topLink a:hover {text-decoration:none; color:#000000;} td, body {font-family:verdana,arial,helvetica; font-size:8pt;} form {padding:0px;margin:0px;} input,textarea,select {vertical-align:middle; font-size:8pt; font-family:verdana,arial,helvetica;} .copy {font-size:7pt;} a.noun:link {text-decoration:none; color:#1C6C77} a.noun:active {text-decoration:none; color:#1C6C77} a.noun:visited {text-decoration:none; color:#1C6C77} a.noun:hover {text-decoration:underline; color:#000000} hr {color:#1C6C77;height:1px;} label {cursor:pointer;cursor:hand} .blocktitle {font-family:Verdana,Sans-Serif;color:#C24747;font-size:12px;} a.menu1:link {text-decoration:underline; color:#FFCC00} a.menu1:active {text-decoration:underline; color:#FFCC00} a.menu1:visited {text-decoration:underline; color:#FFCC00} a.menu1:hover {text-decoration:underline; color:#000000} .menuTd {padding-left:12px;padding-right:10px; background: url('/.s/t/963/19.gif') no-repeat 0px 3px;} .mframe {border-left:1px solid #E5E7EA; border-right:1px solid #E5E7EA;} .colgray {border-right:1px solid #E5E7EA;} .colwhite {border-right:1px solid #FAFAFA;} .msep {border-top:1px solid #FAFAFA;} /* ------------- */ /* Menus */ ul.uz, ul.uMenuRoot {list-style: none; margin: 0 0 0 0; padding-left: 0px;} li.menus {margin: 0; padding: 0 0 0 13px; background: url('/.s/t/963/20.gif') no-repeat 0px 3px; margin-bottom: .6em;} /* ----- */ /* Site Menus */ .uMenuH li {float:left;padding:0 5px;} .uMenuV .uMenuItem {font-weight:normal;} .uMenuV li a:link {text-decoration:none; color:#1C6C77} .uMenuV li a:active {text-decoration:none; color:#1C6C77} .uMenuV li a:visited {text-decoration:none; color:#1C6C77} .uMenuV li a:hover {text-decoration:none; color:#000000} .uMenuV a.uMenuItemA:link {text-decoration:none; color:#CCA301} .uMenuV a.uMenuItemA:visited {text-decoration:none; color:#CCA301} .uMenuV a.uMenuItemA:hover {text-decoration:none; color:#CCA301} .uMenuV .uMenuArrow {position:absolute;width:10px;height:10px;right:0;top:3px;background:url('/.s/img/wd/1/ar1.gif') no-repeat 0 0;} .uMenuV li {margin: 0; padding: 0 0 0 13px; background: url('/.s/t/963/20.gif') no-repeat 0px 3px; margin-bottom: .6em;} /* --------- */ /* Module Part Menu */ .catsTd {padding: 0 0 6px 13px; background: url('/.s/t/963/20.gif') no-repeat 0px 3px;} .catName {font-family:Verdana,Tahoma,Arial,Sans-Serif;font-size:11px;} .catNameActive {font-family:Verdana,Tahoma,Arial,Sans-Serif;font-size:11px;} .catNumData {font-size:7pt;color:#1C6C77;} .catDescr {font-size:7pt; padding-left:10px;} a.catName:link {text-decoration:none; color:#1C6C77;} a.catName:visited {text-decoration:none; color:#1C6C77;} a.catName:hover {text-decoration:none; color:#000000;} a.catName:active {text-decoration:none; color:#1C6C77;} a.catNameActive:link {text-decoration:none; color:#CCA301;} a.catNameActive:visited {text-decoration:none; color:#CCA301;} a.catNameActive:hover {text-decoration:none; color:#000000;} a.catNameActive:active {text-decoration:none; color:#000000;} /* ----------------- */ /* Entries Style */ .eBlock {} .eTitle {font-family:Verdana,Arial,Sans-Serif;font-size:13px;font-weight:bold;color:#CCA301; padding: 1px 0 1px 20px; background: url('/.s/t/963/21.gif') no-repeat;} .eTitle a:link {text-decoration:underline; color:#CCA301;} .eTitle a:visited {text-decoration:underline; color:#CCA301;} .eTitle a:hover {text-decoration:underline; color:#000000;} .eTitle a:active {text-decoration:underline; color:#CCA301;} .eMessage {text-align:justify;padding-bottom:5px;} .eText {text-align:justify;padding-bottom:5px;padding-top:5px;border-top:1px solid #1C6C77} .eDetails {border-top:1px dashed #DDDDDD;border-bottom:1px dashed #DDDDDD;font-family:Verdana,Tahoma,Arial,Sans-Serif;color:#636363;padding-bottom:5px;padding-top:3px;text-align:left;font-size:7pt;} .eDetails1 {border-top:1px dashed #DDDDDD;border-bottom:1px dashed #DDDDDD;font-family:Verdana,Tahoma,Arial,Sans-Serif;color:#636363;padding-bottom:5px;padding-top:3px;text-align:left;font-size:8pt;} .eDetails2 {border-bottom:1px dashed #DDDDDD;font-family:Verdana,Tahoma,Arial,Sans-Serif;color:#636363;padding-bottom:5px;padding-top:3px;text-align:left;font-size:8pt;} .eRating {font-size:7pt;} .eAttach {margin: 16px 0 0 0; padding: 0 0 0 15px; background: url('/.s/t/963/22.gif') no-repeat 0px 0px;} /* ------------- */ /* Entry Manage Table */ .manTable {} .manTdError {color:#FF0000;} .manTd1 {} .manTd2 {} .manTd3 {} .manTdSep {} .manHr {} .manTdBrief {} .manTdText {} .manTdFiles {} .manFlFile {} .manTdBut {} .manFlSbm {} .manFlRst {} .manFlCnt {} /* ------------------ */ /* Comments Style */ .cAnswer {padding-left:15px;padding-top:4px;font-style:italic;} .cBlock1 {background:#F1F2F3; border:1px solid #DDDDDD;} .cBlock2 {background:#F1F2F3; border:1px solid #DDDDDD;} /* -------------- */ /* Comments Form Style */ .commTable {border:1px solid #CECECE;background:#FAFAFA;} .commTd1 {color:#000000;} .commTd2 {} .commFl {color:#1C6C77;width:100%;background:#FEFAFA;border:1px solid #1C6C77;} .smiles {border:1px inset;background:#FFFFFF;} .commReg {padding: 10 0 10 0px; text-align:center;} .commError {color:#FF0000;} .securityCode {color:#1C6C77;background:#FEFAFA;border:1px solid #1C6C77;} /* ------------------- */ /* Archive Menu */ .archUl {list-style: none; margin:0; padding-left:0;} .archLi {padding: 0 0 3px 10px; background: url('/.s/t/963/23.gif') no-repeat 0px 4px; font-family:Tahoma,Arial,Sans-Serif;} a.archLink:link {text-decoration:underline; color:#1C6C77;} a.archLink:visited {text-decoration:underline; color:#1C6C77;} a.archLink:hover {text-decoration:none; color:#000000;} a.archLink:active {text-decoration:none; color:#000000;} /* ------------ */ /* Archive Style */ .archiveCalendars {text-align:center;color:#0000FF;} .archiveDateTitle {font-weight:bold;color:#1C6C77;padding-top:15px;} .archEntryHr {width:250px;color:#DDDDDD;} .archiveeTitle li {margin-left: 15px; padding: 0 0 0 15px; background: url('/.s/t/963/24.gif') no-repeat 0px 4px; margin-bottom: .6em;} .archiveEntryTime {width:65px;font-style:italic;} .archiveEntryComms {font-size:9px;color:#C3C3C3;} a.archiveDateTitleLink:link {text-decoration:none; color:#1C6C77} a.archiveDateTitleLink:visited {text-decoration:none; color:#1C6C77} a.archiveDateTitleLink:hover {text-decoration:underline; color:#1C6C77} a.archiveDateTitleLink:active {text-decoration:underline; color:#1C6C77} .archiveNoEntry {text-align:center;color:#0000FF;} /* ------------- */ /* Calendar Style */ .calMonth {} .calWday {color:#FFFFFF; background:#62AAB4; width:18px;} .calWdaySe {color:#FFFFFF; background:#1C6C77; width:18px;} .calWdaySu {color:#FFFFFF; background:#1C6C77; width:18px; font-weight:bold;} .calMday {background:#FFFFFF; border: 1px solid #CECECE;} .calMdayA {background:#FFCC00;font-weight:bold;} .calMdayIs {background:#CECECE;font-weight:bold; border: 1px solid #CECECE;color:#555555;} .calMdayIsA {border:1px solid #FFCC00; background:#CECECE;font-weight:bold;} a.calMonthLink:link,a.calMdayLink:link {text-decoration:none; color:#1C6C77;} a.calMonthLink:visited,a.calMdayLink:visited {text-decoration:none; color:#1C6C77;} a.calMonthLink:hover,a.calMdayLink:hover {text-decoration:underline; color:#1C6C77;} a.calMonthLink:active,a.calMdayLink:active {text-decoration:underline; color:#000000;} /* -------------- */ /* Poll styles */ .pollBut {width:110px;} .pollBody {padding:7px; margin:0px; background:#FFFFFF} .textResults {background:#EBE0E0} .textResultsTd {background:#FFFFFF} .pollNow {border-bottom:1px solid #EBE0E0; border-left:1px solid #EBE0E0; border-right:1px solid #EBE0E0;} .pollNowTd {} .totalVotesTable {border-bottom:1px solid #EBE0E0; border-left:1px solid #EBE0E0; border-right:1px solid #EBE0E0;} .totalVotesTd {background:#FFFFFF;} /* ---------- */ /* User Group Marks */ a.groupModer:link,a.groupModer:visited,a.groupModer:hover {color:blue;} a.groupAdmin:link,a.groupAdmin:visited,a.groupAdmin:hover {color:red;} a.groupVerify:link,a.groupVerify:visited,a.groupVerify:hover {color:green;} /* ---------------- */ /* Other Styles */ .replaceTable {background:#FAFAFA;height:100px;width:300px;border:1px solid #1C6C77;} .replaceBody {background:#144E56;} .legendTd {font-size:7pt;} /* ------------ */ /* ===== forum Start ===== */ /* General forum Table View */ .gTable {background:#1C6C77;} .gTableTop {padding:2px;background:url('/.s/t/963/25.gif') #1D6F7B;color:#FFFFFF;font-weight:bold;height:21px;padding-left:17px;font-size:10pt;} .gTableSubTop {padding:2px;background:url('/.s/t/963/26.gif') bottom #FFB800;color:#000000;height:20px;font-size:10px;} .gTableBody {padding:2px;background:#FAFAFA;} .gTableBody1 {padding:2px;background:#FFFFFF;} .gTableBottom {padding:2px;background:#FAFAFA;} .gTableLeft {padding:2px;background:#FAFAFA;font-weight:bold;color:#1C6C77} .gTableRight {padding:2px;background:#FAFAFA} .gTableError {padding:2px;background:#FAFAFA;color:#FF0000;} /* ------------------------ */ /* Forums Styles */ .forumNameTd,.forumLastPostTd {padding:2px;background:#FFFFFF} .forumIcoTd,.forumThreadTd,.forumPostTd {padding:2px;background:#FAFAFA} .forumLastPostTd,.forumArchive {padding:2px;font-size:7pt;} a.catLink:link {text-decoration:none; color:#FFFFFF;} a.catLink:visited {text-decoration:none; color:#FFFFFF;} a.catLink:hover {text-decoration:underline; color:#000000;} a.catLink:active {text-decoration:underline; color:#FFFFFF;} .lastPostGuest,.lastPostUser,.threadAuthor {font-weight:bold} .archivedForum{font-size:7pt;color:#FF0000;font-weight:bold;} /* ------------- */ /* forum Titles & other */ .forum {font-weight:bold;font-size:9pt;} .forumDescr,.forumModer {color:#858585;font-size:7pt;} .forumViewed {font-size:9px;} a.forum:link, a.lastPostUserLink:link, a.forumLastPostLink:link, a.threadAuthorLink:link {text-decoration:none; color:#1C6C77;} a.forum:visited, a.lastPostUserLink:visited, a.forumLastPostLink:visited, a.threadAuthorLink:visited {text-decoration:none; color:#1C6C77;} a.forum:hover, a.lastPostUserLink:hover, a.forumLastPostLink:hover, a.threadAuthorLink:hover {text-decoration:underline; color:#99BDC2;} a.forum:active, a.lastPostUserLink:active, a.forumLastPostLink:active, a.threadAuthorLink:active {text-decoration:underline; color:#1C6C77;} /* -------------------- */ /* forum Navigation Bar */ .forumNamesBar {font-weight:bold;font-size:7pt;} .forumBarKw {font-weight:normal;} a.forumBarA:link {text-decoration:none; color:#000000;} a.forumBarA:visited {text-decoration:none; color:#000000;} a.forumBarA:hover {text-decoration:none; color:#1C6C77;} a.forumBarA:active {text-decoration:underline; color:#1C6C77;} /* -------------------- */ /* forum Fast Navigation Blocks */ .fastNav,.fastSearch,.fastLoginForm {font-size:7pt;} /* ---------------------------- */ /* forum Fast Navigation Menu */ .fastNavMain {background:#F0C6C6;} .fastNavCat {background:#F9E6E6;} .fastNavCatA {background:#F9E6E6;color:#0000FF} .fastNavForumA {color:#0000FF} /* -------------------------- */ /* forum Page switches */ .switches {background:#86BAC2;} .pagesInfo {background:#FFFFFF;padding-right:10px;font-size:7pt;} .switch {background:#FFFFFF;width:15px;font-size:7pt;} .switchActive {background:#FFCC00;font-weight:bold;color:#000000;width:15px} a.switchDigit:link,a.switchBack:link,a.switchNext:link {text-decoration:none; color:#000000;} a.switchDigit:visited,a.switchBack:visited,a.switchNext:visited {text-decoration:none; color:#000000;} a.switchDigit:hover,a.switchBack:hover,a.switchNext:hover {text-decoration:underline; color:#FF0000;} a.switchDigit:active,a.switchBack:active,a.switchNext:active {text-decoration:underline; color:#FF0000;} /* ------------------- */ /* forum Threads Style */ .threadNametd,.threadAuthTd,.threadLastPostTd {padding:2px;padding:2px;background:#FFFFFF} .threadIcoTd,.threadPostTd,.threadViewTd {padding:2px;background:#FAFAFA} .threadLastPostTd {padding:2px;font-size:7pt;} .threadDescr {color:#858585;font-size:7pt;} .threadNoticeLink {font-weight:bold;} .threadsType {padding:2px;background:#ECECEC;height:20px;font-weight:bold;font-size:7pt;color:#1C6C77;padding-left:40px;} .threadsDetails {padding:2px;background:#FFCC00;height:20px;color:#000000;} .forumOnlineBar {padding:2px;background:#144E56;height:20px;color:#FFFFFF;} a.threadPinnedLink:link {text-decoration:none; color:#0000FF;} a.threadPinnedLink:visited {text-decoration:none; color:#0000FF;} a.threadPinnedLink:hover {text-decoration:none; color:#FF0000;} a.threadPinnedLink:active {text-decoration:underline; color:#FF0000;} a.threadLink:link {text-decoration:none; color:#1C6C77;} a.threadLink:visited {text-decoration:none; color:#1C6C77;} a.threadLink:hover {text-decoration:underline; color:#000000;} a.threadLink:active {text-decoration:underline; color:#000000;} .postpSwithces {font-size:7pt;} .thDescr {font-weight:normal;} .threadFrmBlock {font-size:7pt;text-align:right;} /* ------------------- */ /* forum Posts View */ .postTable {} .postPoll {background:#FAFAFA;text-align:center;} .postFirst {background:#FAFAFA;border-bottom:3px solid #FFCC00;} .postRest1 {background:#FAFAFA;} .postRest2 {background:#FAFAFA;} .postSeparator {height:3px;background:#144E56;} .postTdTop {background:url('/.s/t/963/26.gif') bottom #FFB800;color:#000000;height:20px;} .postBottom {background: #ECECEC;color:#000000;height:20px;} .postUser {font-weight:bold;} .postTdInfo {text-align:center;padding:5px; background:#FAFAFA;} .postRankName {margin-top:5px;} .postRankIco {margin-bottom:5px;margin-bottom:5px;} .reputation {margin-top:5px;} .signatureHr {margin-top:20px;color:#965A5A;} .posttdMessage {padding:5px; background:#FFFFFF;} .pollQuestion {text-align:center;font-weight:bold;} .pollButtons,.pollTotal {text-align:center;} .pollSubmitBut,.pollreSultsBut {width:140px;font-size:7pt;} .pollSubmit {font-weight:bold;} .pollEnd {text-align:center;height:30px;} .codeMessage {background:#FFFFFF;font-size:9px;} .quoteMessage {background:#FFFFFF;font-size:9px;} .signatureView {font-size:7pt;} .edited {padding-top:30px;font-size:7pt;text-align:right;color:gray;} .editedBy {font-weight:bold;font-size:8pt;} .statusBlock {padding-top:3px;} .statusOnline {color:#0000FF;} .statusOffline {color:#FF0000;} /* ------------------ */ /* forum AllInOne Fast Add */ .newThreadBlock {background: #F9F9F9;border: 1px solid #B2B2B2;} .newPollBlock {background: #F9F9F9;border: 1px solid #B2B2B2;} .newThreadItem {padding: 0 0 0 8px; background: url('/.s/t/963/27.gif') no-repeat 0px 4px;} .newPollItem {padding: 0 0 0 8px; background: url('/.s/t/963/27.gif') no-repeat 0px 4px;} /* ----------------------- */ /* forum Post Form */ .pollBut, .loginButton, .searchSbmFl, .commSbmFl, .signButton {font-size:7pt;background: #1C6C77;color:#FFFFFF;border:1px outset #1C6C77;} .codeButtons {font-size:7pt;background: #1C6C77;color:#FFFFFF;border:1px outset #1C6C77;} .codeCloseAll {font-size:7pt;background: #1C6C77;color:#FFFFFF;border:1px outset #1C6C77;font-weight:bold;} .postNameFl,.postDescrFl {background:#FEFAFA;border:1px solid #1C6C77;width:400px} .postPollFl,.postQuestionFl {background:#FEFAFA;border:1px solid #1C6C77;width:400px} .postResultFl {background:#FEFAFA;border:1px solid #1C6C77;width:50px} .postAnswerFl {background:#FEFAFA;border:1px solid #1C6C77;width:300px} .postTextFl {background:#FEFAFA;border:1px solid #1C6C77;width:100%;height:150px} .postUserFl {background:#FEFAFA;border:1px solid #1C6C77;width:300px} .pollHelp {font-weight:normal;font-size:7pt;padding-top:3px;} .smilesPart {padding-top:5px;text-align:center} /* ----------------- */ /* ====== forum End ====== */ ------------lOdbdcaHCTZRQX8JiBQeSz Content-Disposition: inline; filename=layer1.css Content-Type: text/css; charset=UTF-8; name=layer1.css Content-Location: http://s16.ucoz.net/src/layer1.css Content-Transfer-Encoding: 8bit .cuzadpn {position:absolute;top:0;left:0;width:100%;background:#CAD9EC url('/.s/img/wd/1/abbg.gif') repeat-x; height:24px;} div > div.cuzadpn {position:fixed;} #uzadmp {padding-left:4px} .cuzadpn, .cuzadpn td {font:normal normal normal 8pt/normal Tahoma,'ms sans serif',Arial !important;color:#000000 !important;} .cuzadpn form {padding:0;margin:0;} .cuzadpn input {padding:1px 3px; border:1px solid #B5B8C8; background:#FFFFFF url(/.s/img/wd/1/text-bg.gif) repeat-x 0 0; font-family:Tahoma,Arial;font-size:8pt;color:#515151;} .u-menu .xw-mc{background:#CAD9EC;border-right:1px solid #DFE8F6;border-bottom:1px solid #DFE8F6;border-top:1px solid #a3bae9;border-left:1px solid #a3bae9;} .u-menu .u-menubody {border-left:1px solid #DFE8F6;border-top:1px solid #DFE8F6;border-bottom:1px solid #a3bae9;border-right:1px solid #a3bae9;background:transparent !important;} .u-menuvsep {background: url('/.s/img/wd/1/spr.gif') repeat-x 0 3px;padding: 3px 0;} .u-menuvitem {position:relative;padding: 2px 16px 2px 4px;white-space: nowrap;overflow: visible;line-height:18px;zoom:1;color:#000000;text-align:left;} .u-menu .u-menuitemhl {background: #DEE7F6 url('/.s/img/wd/1/menubg.gif') repeat-x scroll 0 0;cursor:pointer;} .u-menuarrow {background:transparent url(/.s/img/wd/1/ar1.gif) no-repeat scroll 5px 8px;height:16px;width:16px;position:absolute;right:0;top:0} .u-menuvitemparent {} .u-menuh {padding-top:1px;} .u-menuh .u-menubody {background:transparent} .u-menuhsep {border-left:2px ridge #CAD9EC;height:100%} .u-menuhitem {padding:0;white-space: nowrap;overflow: visible;cursor:pointer;color:#000000;text-align:left;} .u-menuh .u-menuitemhl {cursor:pointer;} .u-menuitemhl .admBarLeft {background: transparent url('/.s/img/wd/1/tb-btn-sprite.gif') no-repeat 0 0;} .u-menuitemhl .admBarRight {background: transparent url('/.s/img/wd/1/tb-btn-sprite.gif') no-repeat 0 -21px;} .u-menuitemhl .admBarCenter {background: #DEE7F6 url('/.s/img/wd/1/tb-btn-sprite.gif') repeat-x 0 -42px;} .admBarLeft,.admBarRight {width:3px;height:21px;float:left;} .admBarCenter {height:21px;float:left} .admBarCenter div {;padding:3px 3px 0 3px;font-weight:normal;} .u-menu a:link,.u-menu a:visited,.u-menu a:hover,.u-menu a:active {text-decoration:none;color:#000000;cursor:pointer;} .u-wndmenufr {border-left:1px solid #DFE8F6;border-top:1px solid #DFE8F6;border-bottom:1px solid #a3bae9;border-right:1px solid #a3bae9;} .u-wndmenu {overflow:hidden} .u-wndmenu .u-menuhitem {padding: 2px 6px 2px 6px;white-space: nowrap;overflow: visible;cursor:pointer} .pbarContainer {text-align:left;position:absolute; z-index:56; top:5px; right:7px; height:13px; width:49px; padding:0 2px; font-size:1px; background:url('/.s/img/wd/1/discuse.gif') top no-repeat; cursor:help;} .pbarFiller {height:3px; margin:5px 0; background:#51B5EA;} * html .pbarContainer {width:53px;} /* ============== */ .x-unselectable {-moz-user-select:-moz-none;} .x-selectable {-moz-user-select:text} .x-sh, .x-sh *{overflow:hidden;margin:0;border:0} .xsl *,.xsr *,.xsb * {height:100%} .x-sh .xstl{padding-top:6px;background:transparent url( /.s/img/wd/1/shadow-h.png ) no-repeat 0 0;} .x-sh .xsml{background:transparent url( /.s/img/wd/1/shadow-h.png ) repeat-y -6px 0;} .x-sh .xstr{padding-top:6px;background:transparent url( /.s/img/wd/1/shadow-h.png ) no-repeat -18px 0;} .x-sh .xsmr{background:transparent url( /.s/img/wd/1/shadow-h.png ) repeat-y -12px 0;} .x-sh .xsbl{padding-left:6px;background:transparent url( /.s/img/wd/1/shadow.png ) no-repeat 0 -12px;} .x-sh .xsbc{background:transparent url( /.s/img/wd/1/shadow.png ) repeat-x 0 -36px;} .x-sh .xsbr{padding-right:6px;background:transparent url( /.s/img/wd/1/shadow.png ) no-repeat right -6px;} .xt{position:relative;overflow:hidden;width:15px;height:15px;float:right;cursor:pointer;background:transparent url(/.s/img/wd/1/tool-sprites.gif) no-repeat;margin-left:2px;margin-top:4px;} .xt-close{background-position:0 0;} .xt-close-over{background-position:-15px 0;} .xt-mini{background-position:0 -15px;} .xt-mini-over{background-position:-15px -15px;} .xt-maxi{background-position:0 -30px;} .xt-maxi-over{background-position:-15px -30px;} .xt-rest{background-position:0 -45px;} .xt-rest-over{background-position:-15px -45px;} .xw-hdr{text-align:left;white-space:nowrap;padding:1px 0 0 0;white-space:nowrap;zoom:1;height:24px} .xw-hdr-text{vertical-align:3px;cursor:default;color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;line-height:20px;} .xw-sps {height:4px;overflow:hidden;position:absolute;width:100%;z-index:1} .xw-tsps{height:6px} .xw-resize .xw-tl {cursor:nw-resize} .xw-resize .xw-tr {cursor:ne-resize} .xw-resize .xw-sps {cursor:n-resize} .xw-resize .xw-ml {cursor:w-resize} .xw-resize .xw-mr {cursor:e-resize} .xw-resize .xw-mc {cursor:default} .xw-resize .xw-bl {cursor:sw-resize} .xw-resize .xw-br {cursor:se-resize} .xw-resize .xw-bc {cursor:s-resize} .xw-dragging .xw-tl {opacity:0.7;filter:Alpha(Opacity='70');} .xw-tc{background:transparent url(/.s/img/wd/1/top-bottom.png) repeat-x 0 0;overflow:hidden;zoom:1;position:relative;font-size:0;line-height:0;} .xw-tl{background:transparent url(/.s/img/wd/1/left-corners.png) no-repeat 0 0;padding-left:6px;position:relative;zoom:1} .xw-tr{background:transparent url(/.s/img/wd/1/right-corners.png) no-repeat right 0;padding-right:6px;position:relative;zoom:1} .xw-bc{background:transparent url(/.s/img/wd/1/top-bottom.png) repeat-x 0 bottom;zoom:1;font-size:0;line-height:0;overflow:hidden;} .xw-bcm{height:2px;background:transparent url(/.s/img/wd/1/top-bottom.png) repeat-x 0 bottom;zoom:1} .xw-bc .xw-footer{padding-bottom:6px;font-size:0;line-height:0;zoom:1;} .xw-bcm .xw-footer{padding-bottom:2px;font-size:0;line-height:0;zoom:1;} .xw-bl{background:transparent url(/.s/img/wd/1/left-corners.png) no-repeat 0 bottom;padding-left:6px;zoom:1;} .xw-br{background:transparent url(/.s/img/wd/1/right-corners.png) no-repeat right bottom;padding-right:6px;zoom:1;} .xw-mc{border:1px solid #99bbe8;padding:0;margin:0;font:normal 11px tahoma,arial,helvetica,sans-serif;background:#CAD9EC;zoom:1;} .xw-ml{background:transparent url(/.s/img/wd/1/left-right.png) repeat-y 0 0;padding-left:6px;zoom:1;} .xw-mr{background:transparent url(/.s/img/wd/1/left-right.png) repeat-y right 0;padding-right:6px;zoom:1;} .xw-bc {height:6px;} .xw-icon{width:16px;margin:2px 2px 0 0;height:16px;} .xw-body{background:transparent} .xw-draggable,.xw-draggable .xw-hdr-text{cursor:move;} .xw-plain .xw-mc{background:#CAD9EC;border-right:1px solid #DFE8F6;border-bottom:1px solid #DFE8F6;border-top:1px solid #a3bae9;border-left:1px solid #a3bae9;} .xw-plain .xw-body{padding:3px;border-left:1px solid #DFE8F6;border-top:1px solid #DFE8F6;border-bottom:1px solid #a3bae9;border-right:1px solid #a3bae9;background:transparent !important;} .xw-blank {background:#a3bae9;opacity:0.4;filter:Alpha(Opacity='40');overflow:hidden} .myWinGrid {background:#000000 url('/.s/img/1px.gif');opacity:0.25;filter:alpha(opacity=25);} .myWinCont,.myWinCont td, .myWinCont dl,.myWinCont dt {color:#000000;font-size:8pt;font-family:Tahoma,Arial;} .myWinCont a:link, .myWinCont a:visited{text-decoration:underline;color:#515151;} .myWinCont a:hover,.myWinCont a:active{text-decoration:none;color:#000000;} .myWinError {color:red;} .myWinSuccess {color:blue;} .myWinCont {overflow:hidden;-moz-user-select:text} .myWinCont form {padding:0px;margin:0px;} .myWinCont input, .myWinCont select {font-family:Tahoma,Arial;font-size:8pt;color:#515151;vertical-align:middle;} .myWinCont input[type='checkbox'], .myWinCont input[type='radio'] {height:16px;width:16px;} .myWinCont input[type='text'],.myWinCont input[type='password'] {padding:2px 3px;border:1px solid #B5B8C8; background:#ffffff url(/.s/img/wd/1/text-bg.gif) repeat-x 0 0;} .myWinCont textarea {padding:2px 3px;border:1px solid #B5B8C8; background:#ffffff url(/.s/img/wd/1/text-bg.gif) repeat-x 0 0;} .myWinCont input[readonly] {color:#BBBBBB} .myWinCont textarea {font-family:'Courier New';font-size:9pt;} .myWinCont input[type='text']:focus,.myWinCont input[type='password']:focus, .myWinCont textarea:focus {border:1px solid #799ADF; background:#ffffff url(/.s/img/wd/1/text-bg-focus.gif) repeat-x 0 0;} .myWinCont input[type='checkbox'],.myWinCont input[type='radio'] {margin:1px 2px 0 1px;} .myWinCont hr {height:1px;border:1px dashed #a3bae9;border-top:0px;background:transparent;} .myWinCont label {cursor:pointer;display:inline; margin:0;vertical-align:middle;} .myWinCont legend {padding-bottom:2px;padding-left:3px;padding-right:3px; font-size:10px; color:#15428b;} .myWinCont fieldset {border:1px solid #a3bae9; padding:2px 5px; margin-bottom:3px;} .myWinCont ul {list-style:none; margin: 0 0 0 3px; padding-left: 0px;} .myWinCont li {margin:2px 0 2px 0; padding: 0 0 0 14px; background: url('/.s/img/wd/1/li.png') no-repeat 0 2px;} .myWinCont .fHelp {font-size:7pt;color:#8A8A8A;} .myWinLoad {margin:0;width:31px;height:31px;background:url('/.s/img/wd/1/ajax.gif') no-repeat 0 0;} .myWinLoadS {margin:0;width:16px;height:16px;background:url('/.s/img/wd/1/ajaxs.gif') no-repeat 0 0;} .myWinLoadSD {margin:0;width:16px;height:16px;background:url('/.s/img/icon/ok.png') no-repeat 0 0;} .myWinLoadSF {margin:0;width:16px;height:16px;background:url('/.s/img/icon/er.png') no-repeat 0 0;cursor:help;} .myWinPollG {margin:0;width:215px;height:131px;background:url('/.s/img/wd/1/gridh.gif') no-repeat 0 0;} .myWinPollT {background:#a3bae9;} .myWinPollTd {background:#D5E1F0;} .myWinTD1 {background:#CAD9EC;} .myWinTD2 {background:#DFE8F6;} .myWinCont .pgSwch, .myWinCont .pgSwchA {padding:2px 5px 2px 5px; border:1px solid #a3bae9; font-weight:bold; line-height:2em;} .myWinCont .pgSwchA {background:#DFE8F6;} .myWinCont a.pgSwch:link, .myWinCont a.pgSwch:visited {text-decoration:none; color:#3288B5;} .myWinCont a.pgSwch:hover {text-decoration:none; background:#DFE8F6; color:#000000} /* ============== */ .myBtnCont {padding:0 4px 2px 4px;width:auto;white-space:nowrap;cursor:pointer;} .myBtnCont a:link, .myBtnCont a:visited, .myBtnCont a:hover, .myBtnCont a:active {text-decoration:none; font-family:tahoma,arial,verdana; color:#000000; font-size:8pt;} .myBtnDis a:link, .myBtnDis a:visited, .myBtnDis a:hover, .myBtnDis a:active {color:#B3B3B3;} .myBtnLeftA {background: transparent url('/.s/img/wd/1/btn-sprite.gif') no-repeat 0 -133px;} .myBtnRightA {background: transparent url('/.s/img/wd/1/btn-sprite.gif') no-repeat 0 -152px;} .myBtnCenterA {background: #E3E7EB url('/.s/img/wd/1/btn-sprite.gif') repeat-x 0 -171px;height:19px;} .overBtn .myBtnLeftA,.downBtn .myBtnLeftA,.overBtn .myBtnLeft,.downBtn .myBtnLeft {background-position: 0 -57px;} .overBtn .myBtnRightA,.downBtn .myBtnRightA,.overBtn .myBtnRight,.downBtn .myBtnRight {background-position: 0 -76px;} .overBtn .myBtnCenter,.overBtn .myBtnCenterA {background-position: 0 -95px;} .downBtn .myBtnCenter,.downBtn .myBtnCenterA {background-position: 0 -114px;} .myBtnLeftA, .myBtnRightA, .myBtnLeft, .myBtnRight {width:3px;height:19px;white-space:nowrap;} .myBtnLeftA img, .myBtnRightA img, .myBtnLeft img, .myBtnRight img {width:3px;} .myBtnLeft {background: transparent url('/.s/img/wd/1/btn-sprite.gif') no-repeat 0 0;} .myBtnRight {background: transparent url('/.s/img/wd/1/btn-sprite.gif') no-repeat 0 -19px;} .myBtnCenter {background: #E3E7EB url('/.s/img/wd/1/btn-sprite.gif') repeat-x 0 -38px;height:19px;} /* ============== */ /* ============== */ .u-sugglist {overflow:auto;position:relative;border:1px solid #799ADF;border-top:0px;background:#FFFFFF} .u-suggcont {text-align:left;padding-left:3px;background:#FFFFFF;border-collapse:separate;border-spacing:0} .u-suggrowhl {background:#DEE7F6 !important} .u-suggcell0 {color:#515151;} .u-suggmark {font-weight:bold;} .u-suggcell1 {} .u-suggcont td {} .u-suggcell2 {} .u-suggrow {} /* ============== */ /* ============== */ .u-tabc-p {position:relative;overflow:hidden;} .u-tabc-listp {} .u-tabc-list {height:26px} .u-tabc-scrbut {position:absolute;background: transparent;right:0px;top:0;width:43px;height:26px;z-index:5} .u-tabc-scrl, .u-tabc-scrr {width:18px;float:left;height:22px;display:inline;overflow:hidden;font-size:1px} .u-tabc-scrl {margin:4px 0 0 7px;background:transparent url(/.s/img/wd/1/scroll-left.gif) no-repeat scroll 0 0;cursor:pointer;} .u-tabc-scrr {margin:4px 0 0 0;background:transparent url(/.s/img/wd/1/scroll-right.gif) no-repeat scroll -18px 0;cursor:pointer;} .u-tabc-tab {overflow:hidden;cursor:pointer; float:left;padding-right:1px;position:relative;z-index:1;zoom:1;display:inline; height:26px;} .u-tabc-tab-act {color:#15428B;z-index:2;height:26px; margin-bottom:0px} .u-tabc-tab-over {color:#15428B;} .u-tabc-pbot {display:none;height:3px;overflow:hidden;font-size:1px;} .u-tabc-tabl {padding-bottom:10px; margin-top:2px;padding-right:10px;background:transparent url(/.s/img/wd/1/tabs-sprite.gif) no-repeat scroll right -351px; position:relative;} .u-tabc-tab-act .u-tabc-tabl {padding-bottom:10px; margin-top:0px; background:transparent url(/.s/img/wd/1/tabs-sprite.gif) no-repeat scroll right -351px} .u-tabc-tabr {padding-left:10px;background:transparent url('/.s/img/wd/1/tabs-sprite.gif') no-repeat scroll 0 -51px} .u-tabc-tabr-wcl {padding-right:28px} .u-tabc-label {background:transparent url(/.s/img/wd/1/tabs-sprite.gif) repeat-x scroll 0 -201px;font-size:12px;white-space:nowrap;cursor:pointer;font-family:tahoma,arial,helvetica; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; padding:6px 0;} .u-tabc-closebut {display:none;width:16px;height:16px;position:absolute;right:9px;top:3px;overflow:hidden;font-size:1px} .u-tabc-closebut-over {display:none; } .u-tabc-icon {display:none; margin-right:3px; width:16px;height:16px;vertical-align:-4px} .u-tabc-body {padding:2px;border:1px solid #99bbe8} .u-tabc-content {overflow:auto;-moz-user-select:text} /* ============== */ /* ============== */ .u-combo {padding:0;white-space:nowrap;border-collapse: separate;border:1px solid #B5B8C8;} .u-combofocus .u-comboeditcell {} .u-comboeditcell {background:#EFEFEF;vertical-align:top;border-right:1px solid #B5B8C8;border-spacing:0} .u-comboedit {color:#000000;font-weight:normal;outline:none;font-size:11px;font-family:Verdana,Tahoma,Arial;background:transparent no-repeat 2px 2px;vertical-align:top;border:0;padding:0 0 0 2px;margin-top:2px;text-align:left;} .u-comboedit::-moz-focus-inner { border: 0; } .u-comboeditimg {padding-left:20px !important} .u-combobut {width:16px;height:18px;background:url('/.s/img/wd/1/trigger.gif') no-repeat 0 0;vertical-align:top;padding:0;margin:0} .u-combobuthl {background-position:-16px 0} .u-comboopen .u-combobut {background-position:-32px 0 !important} .u-combolist {color:#000000;font-weight:normal;overflow:auto;position:relative;border:1px solid #B5B8C8;border-top:0px;background:#FFFFFF;} .u-combocont {border-collapse:separate;border-spacing:0;} .u-combocont td {font-size:11px;font-family:Verdana,Tahoma,Arial;} .u-comborowhl {background:#EEEEEE !important; cursor:pointer;} .u-comborowsel {} .u-comborowicon {vertical-align:0px;margin:0 3px 0 1px} .u-combocell0 {} .u-combocell1 {} /* ============== */ #gcatalog .gcont { height:430px; min-width:200px; position:relative } #gcatalog .ghead { height:24px; line-height:24px; padding-left: 5px; background: #D4E0F1 url(/.s/img/wd/1/cmp-bg.gif) repeat-x 0 0 } #gcatalog .gitem { width:47%; min-width:200px; float:left; margin:2px; padding:3px; text-decoration:none; font-size:12px; border: #A3BAE9 1px solid; -moz-border-radius: 3px; -webkit-border-radius: 3px; background-color:transparent } #gcatalog .gitem:hover, #gcatalog a.gsel { background-color:#DFE8F6; border: #12151A 1px solid; color:#000 } #gcatalog .gitem img { background: url(/.s/img/icon/ajsml.gif) no-repeat 8px 8px; width:32px; height:32px; border: 1px solid #a3bae9; float:left; margin-right:6px } #gcatalog .gname { font-size:12px; padding-bottom:3px } #gcatalog .gpage { padding:2px 5px 2px 5px; border-left:1px solid #a3bae9; border-top:1px solid #a3bae9; border-bottom:1px solid #a3bae9;} #ggoods { overflow:hidden } #gcats { overflow-x:hidden; overflow-y:scroll; padding-right:5px } #gcats ul.cat-tree { display:none; list-style:none!important; margin:0!important; padding:0 0 0 16px!important; line-height: 14px; text-align:left } #gcats .cat-tree li { background:none!important; padding:0!important; } #gcats .cat-tree i { padding-left:12px; height: 14px; background:transparent url(/.s/img/wd/1/sb.gif) 0 2px no-repeat } #gcats .cat-tree u { padding-left:12px; height: 14px; background:transparent url(/.s/img/icon/pm.gif) no-repeat } #gcats .cat-tree u.plus { background-position:0 3px;} #gcats .cat-tree u.minus { background-position:0 -18px } #gcats .cat-tree a { text-decoration:none } #gcats .cat-tree a:hover { text-decoration:underline } ------------lOdbdcaHCTZRQX8JiBQeSz Content-Disposition: inline; filename=u.js Content-Type: text/javascript; charset=UTF-8; name=u.js Content-Location: http://s16.ucoz.net/src/u.js Content-Transfer-Encoding: Quoted-Printable /* * jQuery JavaScript Library v1.3.2 * http://jquery.com/ * * Copyright (c) 2009 John Resig * Dual licensed under the MIT and GPL licenses. * http://docs.jquery.com/License * * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) * Revision: 6246 */ (function(){var g=3Dthis,j,z=3Dg.jQuery,p=3Dg.$,b=3Dg.jQuery=3Dg.$=3Dfun= ction(E,F){return new b.fn.init(E,F)},D=3D/^[^<]*(<(.|\s)+>)[^>]*$|^#([\= w-]+)$/,k=3D/^.[^:#\[\.,]*$/;b.fn=3Db.prototype=3D{init:function(E,H){E=3D= E||document;if(E.nodeType){this[0]=3DE;this.length=3D1;this.context=3DE;= return this}if(typeof E=3D=3D=3D"string"){var G=3DD.exec(E);if(G&&(G[1]|= |!H)){if(G[1]){E=3Db.clean([G[1]],H)}else{var I=3Ddocument.getElementByI= d(G[3]);if(I&&I.id!=3DG[3]){return b().find(E)}var F=3Db(I||[]);F.contex= t=3Ddocument;F.selector=3DE;return F}}else{return b(H).find(E)}}else{if(= b.isFunction(E)){return b(document).ready(E)}}if(E.selector&&E.context){= this.selector=3DE.selector;this.context=3DE.context}return this.setArray= (b.isArray(E)?E:b.makeArray(E))},selector:"",jquery:"1.3.2",size:functio= n(){return this.length},get:function(E){return E=3D=3D=3Dj?Array.prototy= pe.slice.call(this):this[E]},pushStack:function(F,H,E){var G=3Db(F);G.pr= evObject=3Dthis;G.context=3Dthis.context;if(H=3D=3D=3D"find"){G.selector= =3Dthis.selector+(this.selector?" ":"")+E}else{if(H){G.selector=3Dthis.s= elector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=3D0;= Array.prototype.push.apply(this,E);return this},each:function(F,E){retur= n b.each(this,F,E)},index:function(E){return b.inArray(E&&E.jquery?E[0]:= E,this)},attr:function(E,H,G){var F=3DE;if(typeof E=3D=3D=3D"string"){if= (H=3D=3D=3Dj){return this[0]&&b[G||"attr"](this[0],E)}else{F=3D{};F[E]=3D= H}}return this.each(function(I){for(E in F){b.attr(G?this.style:this,E,b= .prop(this,F[E],G,I,E))}})},css:function(E,F){if((E=3D=3D"width"||E=3D=3D= "height")&&parseFloat(F)<0){F=3Dj}return this.attr(E,F,"curCSS")},text:f= unction(F){if(typeof F!=3D=3D"object"&&F!=3Dnull){return this.empty().ap= pend((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E= =3D"";b.each(F||this,function(){b.each(this.childNodes,function(){if(thi= s.nodeType!=3D8){E+=3Dthis.nodeType!=3D1?this.nodeValue:b.fn.text([this]= )}})});return E},wrapAll:function(E){if(this[0]){var F=3Db(E,this[0].own= erDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map= (function(){var G=3Dthis;while(G.firstChild){G=3DG.firstChild}return G})= .append(this)}return this},wrapInner:function(E){return this.each(functi= on(){b(this).contents().wrapAll(E)})},wrap:function(E){return this.each(= function(){b(this).wrapAll(E)})},append:function(){return this.domManip(= arguments,true,function(E){if(this.nodeType=3D=3D1){this.appendChild(E)}= })},prepend:function(){return this.domManip(arguments,true,function(E){i= f(this.nodeType=3D=3D1){this.insertBefore(E,this.firstChild)}})},before:= function(){return this.domManip(arguments,false,function(E){this.parentN= ode.insertBefore(E,this)})},after:function(){return this.domManip(argume= nts,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})= },end:function(){return this.prevObject||b([])},push:[].push,sort:[].sor= t,splice:[].splice,find:function(E){if(this.length=3D=3D=3D1){var F=3Dth= is.pushStack([],"find",E);F.length=3D0;b.find(E,this[0],F);return F}else= {return this.pushStack(b.unique(b.map(this,function(G){return b.find(E,G= )})),"find",E)}},clone:function(F){var E=3Dthis.map(function(){if(!b.sup= port.noCloneEvent&&!b.isXMLDoc(this)){var I=3Dthis.outerHTML;if(!I){var = J=3Dthis.ownerDocument.createElement("div");J.appendChild(this.cloneNode= (true));I=3DJ.innerHTML}return b.clean([I.replace(/ jQuery\d+=3D"(?:\d+|= null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}})= ;if(F=3D=3D=3Dtrue){var H=3Dthis.find("*").andSelf(),G=3D0;E.find("*").a= ndSelf().each(function(){if(this.nodeName!=3D=3DH[G].nodeName){return}va= r I=3Db.data(H[G],"events");for(var K in I){for(var J in I[K]){b.event.a= dd(this,K,I[K][J],I[K][J].data)}}G++})}return E},filter:function(E){retu= rn this.pushStack(b.isFunction(E)&&b.grep(this,function(G,F){return E.ca= ll(G,F)})||b.multiFilter(E,b.grep(this,function(F){return F.nodeType=3D=3D= =3D1})),"filter",E)},closest:function(E){var G=3Db.expr.match.POS.test(E= )?b(E):null,F=3D0;return this.map(function(){var H=3Dthis;while(H&&H.own= erDocument){if(G?G.index(H)>-1:b(H).is(E)){b.data(H,"closest",F);return = H}H=3DH.parentNode;F++}})},not:function(E){if(typeof E=3D=3D=3D"string")= {if(k.test(E)){return this.pushStack(b.multiFilter(E,this,true),"not",E)= }else{E=3Db.multiFilter(E,this)}}var F=3DE.length&&E[E.length-1]!=3D=3Dj= &&!E.nodeType;return this.filter(function(){return F?b.inArray(this,E)<0= :this!=3DE})},add:function(E){return this.pushStack(b.unique(b.merge(thi= s.get(),typeof E=3D=3D=3D"string"?b(E):b.makeArray(E))))},is:function(E)= {return !!E&&b.multiFilter(E,this).length>0},hasClass:function(E){return= !!E&&this.is("."+E)},val:function(L){if(L=3D=3D=3Dj){var F=3Dthis[0];if= (F){if(b.nodeName(F,"option")){return(F.attributes.value||{}).specified?= F.value:F.text}if(b.nodeName(F,"select")){var I=3DF.selectedIndex,M=3D[]= ,K=3DF.options,H=3DF.type=3D=3D"select-one";if(I<0){return null}for(var = G=3DH?I:0,J=3DH?I+1:K.length;G=3D0||b.in= Array(this.name,L)>=3D0)}else{if(b.nodeName(this,"select")){var N=3Db.ma= keArray(L);b("option",this).each(function(){this.selected=3D(b.inArray(t= his.value,N)>=3D0||b.inArray(this.text,N)>=3D0)});if(!N.length){this.sel= ectedIndex=3D-1}}else{this.value=3DL}}})},html:function(E){return E=3D=3D= =3Dj?(this[0]?this[0].innerHTML.replace(/ jQuery\d+=3D"(?:\d+|null)"/g,"= "):null):this.empty().append(E)},replaceWith:function(E){return this.aft= er(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function= (){return this.pushStack(Array.prototype.slice.apply(this,arguments),"sl= ice",Array.prototype.slice.call(arguments).join(","))},map:function(E){r= eturn this.pushStack(b.map(this,function(G,F){return E.call(G,F,G)}))},a= ndSelf:function(){return this.add(this.prevObject)},domManip:function(J,= M,L){if(this[0]){var E=3D(this[0].ownerDocument||this[0]).createDocument= Fragment(),G=3Db.clean(J,(this[0].ownerDocument||this[0]),E),I=3DE.first= Child;if(I){for(var H=3D0,F=3Dthis.length;H1||H>0?E.cloneNode(true):E)}}if(G){b.each(G,r)}}return this;f= unction K(N,O){return M&&b.nodeName(N,"table")&&b.nodeName(O,"tr")?(N.ge= tElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElem= ent("tbody"))):N}}};b.fn.init.prototype=3Db.fn;function r(E,F){if(F.src)= {b.ajax({url:F.src,async:false,dataType:"script"})}else{b.globalEval(F.t= ext||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.remov= eChild(F)}}function d(){return +new Date}b.extend=3Db.fn.extend=3Dfuncti= on(){var L=3Darguments[0]||{},I=3D1,F=3Darguments.length,E=3Dfalse,H;if(= typeof L=3D=3D=3D"boolean"){E=3DL;L=3Darguments[1]||{};I=3D2}if(typeof L= !=3D=3D"object"&&!b.isFunction(L)){L=3D{}}if(F=3D=3DI){L=3Dthis;--I}for(= ;I-1}},swap:function(H,G,I){var E=3D= {};for(var F in G){E[F]=3DH.style[F];H.style[F]=3DG[F]}I.call(H);for(var= F in G){H.style[F]=3DE[F]}},css:function(H,F,J,E){if(F=3D=3D"width"||F=3D= =3D"height"){var L,G=3D{position:"absolute",visibility:"hidden",display:= "block"},K=3DF=3D=3D"width"?["Left","Right"]:["Top","Bottom"];function I= (){L=3DF=3D=3D"width"?H.offsetWidth:H.offsetHeight;if(E=3D=3D=3D"border"= ){return}b.each(K,function(){if(!E){L-=3DparseFloat(b.curCSS(H,"padding"= +this,true))||0}if(E=3D=3D=3D"margin"){L+=3DparseFloat(b.curCSS(H,"margi= n"+this,true))||0}else{L-=3DparseFloat(b.curCSS(H,"border"+this+"Width",= true))||0}})}if(H.offsetWidth!=3D=3D0){I()}else{b.swap(H,G,I)}return Mat= h.max(0,Math.round(L))}return b.curCSS(H,F,J)},curCSS:function(I,E,G){va= r L,F=3DI.style;if(E=3D=3D"opacity"&&!b.support.opacity){L=3Db.attr(F,"o= pacity");return L=3D=3D""?"1":L}if(E.match(/float/i)){E=3Dw}if(!G&&F&&F[= E]){L=3DF[E]}else{if(A.getComputedStyle){if(E.match(/float/i)){E=3D"floa= t"}E=3DE.replace(/([A-Z])/g,"-$1").toLowerCase();var M=3DA.getComputedSt= yle(I,null);if(M){L=3DM.getPropertyValue(E)}if(E=3D=3D"opacity"&&L=3D=3D= ""){L=3D"1"}}else{if(I.currentStyle){var K=3DE.replace(/\-(\w)/g,functio= n(O,N){return N.toUpperCase()});L=3DI.currentStyle[E]||I.currentStyle[K]= ;if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var J=3DF.left,H=3DI.runtimeS= tyle.left;I.runtimeStyle.left=3DI.currentStyle.left;F.left=3DL||0;L=3DF.= pixelLeft+"px";F.left=3DJ;I.runtimeStyle.left=3DH}}}}return L},clean:fun= ction(F,K,J){K=3DK||document;if(typeof K.createElement=3D=3D=3D"undefine= d"){K=3DK.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!J&&F.len= gth=3D=3D=3D1&&typeof F[0]=3D=3D=3D"string"){var H=3D/^<(\w+)\s*\/?>$/.e= xec(F[0]);if(H){return[K.createElement(H[1])]}}var G=3D[],E=3D[],L=3DK.c= reateElement("div");b.each(F,function(P,S){if(typeof S=3D=3D=3D"number")= {S+=3D""}if(!S){return}if(typeof S=3D=3D=3D"string"){S=3DS.replace(/(<(\= w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|= link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=3DS.replace(/= ^\s+/,"").substring(0,10).toLowerCase();var Q=3D!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,= "","
"]||!O.indexOf("","<= /table>"]||(!O.indexOf("",""]||!O.indexOf("",""]||!b.support.htmlSerialize&&[1,"div=
","
"]||[0,"",""];L.innerHTML=3DQ[1]+S+Q[2];while(Q[0]--){L=3D= L.lastChild}if(!b.support.tbody){var R=3D/= "&&!R?L.childNodes:[];for(var M=3DN.length-1;M>=3D0;--M){if(b.nodeName(N= [M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])= }}}if(!b.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.crea= teTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=3Db.makeArray(L.childNode= s)}if(S.nodeType){G.push(S)}else{G=3Db.merge(G,S)}});if(J){for(var I=3D0= ;G[I];I++){if(b.nodeName(G[I],"script")&&(!G[I].type||G[I].type.toLowerC= ase()=3D=3D=3D"text/javascript")){E.push(G[I].parentNode?G[I].parentNode= .removeChild(G[I]):G[I])}else{if(G[I].nodeType=3D=3D=3D1){G.splice.apply= (G,[I+1,0].concat(b.makeArray(G[I].getElementsByTagName("script"))))}J.a= ppendChild(G[I])}}return E}return G},attr:function(J,H,K){if(!J||J.nodeT= ype=3D=3D3||J.nodeType=3D=3D8){return j}var G=3D!b.isXMLDoc(J),L=3DK!=3D= =3Dj;H=3DG&&b.props[H]||H;if(J.tagName){var I=3D/href|src|style/.test(H)= ;if(H=3D=3D"selected"&&J.parentNode){J.parentNode.selectedIndex}if(H in = J&&G&&!I){if(L){if(H=3D=3D"type"&&b.nodeName(J,"input")&&J.parentNode){t= hrow"type property can't be changed"}J[H]=3DK}if(b.nodeName(J,"form")&&J= .getAttributeNode(H)){return J.getAttributeNode(H).nodeValue}if(H=3D=3D"= tabIndex"){var F=3DJ.getAttributeNode("tabIndex");return F&&F.specified?= F.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.n= odeName.match(/^(a|area)$/i)&&J.href?0:j}return J[H]}if(!b.support.style= &&G&&H=3D=3D"style"){return b.attr(J.style,"cssText",K)}if(L){J.setAttri= bute(H,""+K)}var E=3D!b.support.hrefNormalized&&G&&I?J.getAttribute(H,2)= :J.getAttribute(H);return E=3D=3D=3Dnull?j:E}if(!b.support.opacity&&H=3D= =3D"opacity"){if(L){J.zoom=3D1;J.filter=3D(J.filter||"").replace(/alpha\= ([^)]*\)/,"")+(parseInt(K)+""=3D=3D"NaN"?"":"alpha(opacity=3D"+K*100+")"= )}return J.filter&&J.filter.indexOf("opacity=3D")>=3D0?(parseFloat(J.fil= ter.match(/opacity=3D([^)]*)/)[1])/100)+"":""}H=3DH.replace(/-([a-z])/ig= ,function(N,M){return M.toUpperCase()});if(L){J[H]=3DK}return J[H]},trim= :function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(= G){var E=3D[];if(G!=3Dnull){var F=3DG.length;if(F=3D=3Dnull||typeof G=3D= =3D=3D"string"||b.isFunction(G)||G.setInterval){E[0]=3DG}else{while(F){E= [--F]=3DG[F]}}}return E},inArray:function(G,H){for(var F=3D0,E=3DH.lengt= h;F0?this.clone(true):this).get();b.fn[F= ].apply(b(G[L]),J);K=3DK.concat(J)}return this.pushStack(K,E,H)}});b.eac= h({removeAttr:function(E){b.attr(this,E,"");if(this.nodeType=3D=3D1){thi= s.removeAttribute(E)}},addClass:function(E){b.className.add(this,E)},rem= oveClass:function(E){b.className.remove(this,E)},toggleClass:function(F,= E){if(typeof E!=3D=3D"boolean"){E=3D!b.className.has(this,F)}b.className= [E?"add":"remove"](this,F)},remove:function(E){if(!E||b.filter(E,[this])= .length){b("*",this).add([this]).each(function(){b.event.remove(this);b.= removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)= }}},empty:function(){b(this).children().remove();while(this.firstChild){= this.removeChild(this.firstChild)}}},function(E,F){b.fn[E]=3Dfunction(){= return this.each(F,arguments)}});function l(E,F){return E[0]&&parseInt(b= .curCSS(E[0],F,true),10)||0}var i=3D"jQuery"+d(),v=3D0,B=3D{};b.extend({= cache:{},data:function(F,E,G){F=3DF=3D=3Dg?B:F;var H=3DF[i];if(!H){H=3DF= [i]=3D++v}if(E&&!b.cache[H]){b.cache[H]=3D{}}if(G!=3D=3Dj){b.cache[H][E]= =3DG}return E?b.cache[H][E]:H},removeData:function(F,E){F=3DF=3D=3Dg?B:F= ;var H=3DF[i];if(E){if(b.cache[H]){delete b.cache[H][E];E=3D"";for(E in = b.cache[H]){break}if(!E){b.removeData(F)}}}else{try{delete F[i]}catch(G)= {if(F.removeAttribute){F.removeAttribute(i)}}delete b.cache[H]}},queue:f= unction(F,E,H){if(F){E=3D(E||"fx")+"queue";var G=3Db.data(F,E);if(!G||b.= isArray(H)){G=3Db.data(F,E,b.makeArray(H))}else{if(H){G.push(H)}}}return= G},dequeue:function(H,G){var E=3Db.queue(H,G),F=3DE.shift();if(!G||G=3D= =3D=3D"fx"){F=3DE[0]}if(F!=3D=3Dj){F.call(H)}}});b.fn.extend({data:funct= ion(E,G){var H=3DE.split(".");H[1]=3DH[1]?"."+H[1]:"";if(G=3D=3D=3Dj){va= r F=3Dthis.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F=3D=3D=3Dj&&thi= s.length){F=3Db.data(this[0],E)}return F=3D=3D=3Dj&&H[1]?this.data(H[0])= :F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function()= {b.data(this,E,G)})}},removeData:function(E){return this.each(function()= {b.removeData(this,E)})},queue:function(E,F){if(typeof E!=3D=3D"string")= {F=3DE;E=3D"fx"}if(F=3D=3D=3Dj){return b.queue(this[0],E)}return this.ea= ch(function(){var G=3Db.queue(this,E,F);if(E=3D=3D"fx"&&G.length=3D=3D1)= {G[0].call(this)}})},dequeue:function(E){return this.each(function(){b.d= equeue(this,E)})}}); /* * Sizzle CSS Selector Engine - v0.9.3 * Copyright 2009, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){var R=3D/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"= ][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,I=3D0,= L=3DObject.prototype.toString;var N=3Dfunction(Y,U,ab,ac){ab=3Dab||[];U=3D= U||document;if(U.nodeType!=3D=3D1&&U.nodeType!=3D=3D9){return[]}if(!Y||t= ypeof Y!=3D=3D"string"){return ab}var Z=3D[],W,af,ai,T,ad,V,X=3Dtrue;R.l= astIndex=3D0;while((W=3DR.exec(Y))!=3D=3Dnull){Z.push(W[1]);if(W[2]){V=3D= RegExp.rightContext;break}}if(Z.length>1&&G.exec(Y)){if(Z.length=3D=3D=3D= 2&&F.relative[Z[0]]){af=3DH(Z[0]+Z[1],U)}else{af=3DF.relative[Z[0]]?[U]:= N(Z.shift(),U);while(Z.length){Y=3DZ.shift();if(F.relative[Y]){Y+=3DZ.sh= ift()}af=3DH(Y,af)}}}else{var ae=3Dac?{expr:Z.pop(),set:E(ac)}:N.find(Z.= pop(),Z.length=3D=3D=3D1&&U.parentNode?U.parentNode:U,Q(U));af=3DN.filte= r(ae.expr,ae.set);if(Z.length>0){ai=3DE(af)}else{X=3Dfalse}while(Z.lengt= h){var ah=3DZ.pop(),ag=3Dah;if(!F.relative[ah]){ah=3D""}else{ag=3DZ.pop(= )}if(ag=3D=3Dnull){ag=3DU}F.relative[ah](ai,ag,Q(U))}}if(!ai){ai=3Daf}if= (!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(L.call(a= i)=3D=3D=3D"[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeT= ype=3D=3D=3D1){for(var aa=3D0;ai[aa]!=3Dnull;aa++){if(ai[aa]&&(ai[aa]=3D= =3D=3Dtrue||ai[aa].nodeType=3D=3D=3D1&&J(U,ai[aa]))){ab.push(af[aa])}}}e= lse{for(var aa=3D0;ai[aa]!=3Dnull;aa++){if(ai[aa]&&ai[aa].nodeType=3D=3D= =3D1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){N(V,U,ab,ac);if(K){hasDupl= icate=3Dfalse;ab.sort(K);if(hasDuplicate){for(var aa=3D1;aa":function(Z,W,aa){var V=3Dtypeof W=3D=3D=3D"string";if(V&= &!/\W/.test(W)){W=3Daa?W:W.toUpperCase();for(var X=3D0,T=3DZ.length;X=3D0)){if(!U){Z.push(X)}}else{if(U){T[W]=3Dfalse}}}}re= turn false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U= ,T){for(var V=3D0;T[V]=3D=3D=3Dfalse;V++){}return T[V]&&Q(T[V])?U[1]:U[1= ].toUpperCase()},CHILD:function(T){if(T[1]=3D=3D"nth"){var U=3D/(-?)(\d*= )n((?:\+|-)?\d*)/.exec(T[2]=3D=3D"even"&&"2n"||T[2]=3D=3D"odd"&&"2n+1"||= !/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=3D(U[1]+(U[2]||1))-0;T[3]=3DU[3= ]-0}T[0]=3DI++;return T},ATTR:function(W,T,U,Y,X,Z){var V=3DW[1].replace= (/\\/g,"");if(!Z&&F.attrMap[V]){W[1]=3DF.attrMap[V]}if(W[2]=3D=3D=3D"~=3D= "){W[4]=3D" "+W[4]+" "}return W},PSEUDO:function(W,T,U,Y,X){if(W[1]=3D=3D= =3D"not"){if(W[3].match(R).length>1||/^\w/.test(W[3])){W[3]=3DN(W[3],nul= l,null,T)}else{var V=3DN.filter(W[3],T,U,true^X);if(!U){Y.push.apply(Y,V= )}return false}}else{if(F.match.POS.test(W[0])||F.match.CHILD.test(W[0])= ){return true}}return W},POS:function(T){T.unshift(true);return T}},filt= ers:{enabled:function(T){return T.disabled=3D=3D=3Dfalse&&T.type!=3D=3D"= hidden"},disabled:function(T){return T.disabled=3D=3D=3Dtrue},checked:fu= nction(T){return T.checked=3D=3D=3Dtrue},selected:function(T){T.parentNo= de.selectedIndex;return T.selected=3D=3D=3Dtrue},parent:function(T){retu= rn !!T.firstChild},empty:function(T){return !T.firstChild},has:function(= V,U,T){return !!N(T[3],V).length},header:function(T){return/h\d/i.test(T= .nodeName)},text:function(T){return"text"=3D=3D=3DT.type},radio:function= (T){return"radio"=3D=3D=3DT.type},checkbox:function(T){return"checkbox"=3D= =3D=3DT.type},file:function(T){return"file"=3D=3D=3DT.type},password:fun= ction(T){return"password"=3D=3D=3DT.type},submit:function(T){return"subm= it"=3D=3D=3DT.type},image:function(T){return"image"=3D=3D=3DT.type},rese= t:function(T){return"reset"=3D=3D=3DT.type},button:function(T){return"bu= tton"=3D=3D=3DT.type||T.nodeName.toUpperCase()=3D=3D=3D"BUTTON"},input:f= unction(T){return/input|select|textarea|button/i.test(T.nodeName)}},setF= ilters:{first:function(U,T){return T=3D=3D=3D0},last:function(V,U,T,W){r= eturn U=3D=3D=3DW.length-1},even:function(U,T){return T%2=3D=3D=3D0},odd= :function(U,T){return T%2=3D=3D=3D1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0=3D= =3DU},eq:function(V,U,T){return T[3]-0=3D=3DU}},filter:{PSEUDO:function(= Z,W,X,aa){var V=3DW[1],U=3DF.filters[V];if(U){return U(Z,X,W,aa)}else{if= (V=3D=3D=3D"contains"){return(Z.textContent||Z.innerText||"").indexOf(W[= 3])>=3D0}else{if(V=3D=3D=3D"not"){var Y=3DW[3];for(var X=3D0,T=3DY.lengt= h;X=3D0)}}},ID:function(U,T){return U.nodeType=3D=3D=3D1&&U.g= etAttribute("id")=3D=3D=3DT},TAG:function(U,T){return(T=3D=3D=3D"*"&&U.n= odeType=3D=3D=3D1)||U.nodeName=3D=3D=3DT},CLASS:function(U,T){return(" "= +(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:functio= n(X,V){var U=3DV[1],Z=3DF.attrHandle[U]?F.attrHandle[U](X):X[U]!=3Dnull?= X[U]:X.getAttribute(U),Y=3DZ+"",W=3DV[2],T=3DV[4];return Z=3D=3Dnull?W=3D= =3D=3D"!=3D":W=3D=3D=3D"=3D"?Y=3D=3D=3DT:W=3D=3D=3D"*=3D"?Y.indexOf(T)>=3D= 0:W=3D=3D=3D"~=3D"?(" "+Y+" ").indexOf(T)>=3D0:!T?Y&&Z!=3D=3Dfalse:W=3D=3D= =3D"!=3D"?Y!=3DT:W=3D=3D=3D"^=3D"?Y.indexOf(T)=3D=3D=3D0:W=3D=3D=3D"$=3D= "?Y.substr(Y.length-T.length)=3D=3D=3DT:W=3D=3D=3D"|=3D"?Y=3D=3D=3DT||Y.= substr(0,T.length+1)=3D=3D=3DT+"-":false},POS:function(X,V,W,Y){var U=3D= V[2],T=3DF.setFilters[U];if(T){return T(X,W,V,Y)}}}};var G=3DF.match.POS= ;for(var O in F.match){F.match[O]=3DRegExp(F.match[O].source+/(?![^\[]*\= ])(?![^\(]*\))/.source)}var E=3Dfunction(U,T){U=3DArray.prototype.slice.= call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.s= lice.call(document.documentElement.childNodes)}catch(M){E=3Dfunction(X,W= ){var U=3DW||[];if(L.call(X)=3D=3D=3D"[object Array]"){Array.prototype.p= ush.apply(U,X)}else{if(typeof X.length=3D=3D=3D"number"){for(var V=3D0,T= =3DX.length;V";var T=3Ddocument.documentElement;T.inse= rtBefore(U,T.firstChild);if(!!document.getElementById(V)){F.find.ID=3Dfu= nction(X,Y,Z){if(typeof Y.getElementById!=3D=3D"undefined"&&!Z){var W=3D= Y.getElementById(X[1]);return W?W.id=3D=3D=3DX[1]||typeof W.getAttribute= Node!=3D=3D"undefined"&&W.getAttributeNode("id").nodeValue=3D=3D=3DX[1]?= [W]:j:[]}};F.filter.ID=3Dfunction(Y,W){var X=3Dtypeof Y.getAttributeNode= !=3D=3D"undefined"&&Y.getAttributeNode("id");return Y.nodeType=3D=3D=3D1= &&X&&X.nodeValue=3D=3D=3DW}}T.removeChild(U)})();(function(){var T=3Ddoc= ument.createElement("div");T.appendChild(document.createComment(""));if(= T.getElementsByTagName("*").length>0){F.find.TAG=3Dfunction(U,Y){var X=3D= Y.getElementsByTagName(U[1]);if(U[1]=3D=3D=3D"*"){var W=3D[];for(var V=3D= 0;X[V];V++){if(X[V].nodeType=3D=3D=3D1){W.push(X[V])}}X=3DW}return X}}T.= innerHTML=3D"";if(T.firstChild&&typeof T.firstChild.ge= tAttribute!=3D=3D"undefined"&&T.firstChild.getAttribute("href")!=3D=3D"#= "){F.attrHandle.href=3Dfunction(U){return U.getAttribute("href",2)}}})()= ;if(document.querySelectorAll){(function(){var T=3DN,U=3Ddocument.create= Element("div");U.innerHTML=3D"

";if(U.querySelector= All&&U.querySelectorAll(".TEST").length=3D=3D=3D0){return}N=3Dfunction(Y= ,X,V,W){X=3DX||document;if(!W&&X.nodeType=3D=3D=3D9&&!Q(X)){try{return E= (X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};N.find=3DT.find;= N.filter=3DT.filter;N.selectors=3DT.selectors;N.matches=3DT.matches})()}= if(document.getElementsByClassName&&document.documentElement.getElements= ByClassName){(function(){var T=3Ddocument.createElement("div");T.innerHT= ML=3D"
";if(T.getEl= ementsByClassName("e").length=3D=3D=3D0){return}T.lastChild.className=3D= "e";if(T.getElementsByClassName("e").length=3D=3D=3D1){return}F.order.sp= lice(1,0,"CLASS");F.find.CLASS=3Dfunction(U,V,W){if(typeof V.getElements= ByClassName!=3D=3D"undefined"&&!W){return V.getElementsByClassName(U[1])= }}})()}function P(U,ab,Y,ac,aa,ad){var Z=3DU=3D=3D"previousSibling"&&!ad= ;for(var W=3D0,V=3Dac.length;W0){X=3DT;break}}}T=3DT[U]}ac[W]=3DX}}}var J=3Ddocument.compareDocumen= tPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function= (U,T){return U!=3D=3DT&&(U.contains?U.contains(T):true)};var Q=3Dfunctio= n(T){return T.nodeType=3D=3D=3D9&&T.documentElement.nodeName!=3D=3D"HTML= "||!!T.ownerDocument&&Q(T.ownerDocument)};var H=3Dfunction(T,Z){var aa=3D= [],W=3D"",X,V=3DZ.nodeType?[Z]:Z;while((X=3DF.match.PSEUDO.exec(T))){W+=3D= X[0];T=3DT.replace(F.match.PSEUDO,"")}T=3DF.relative[T]?T+"*":T;for(var = Y=3D0,U=3DV.length;Y0||T.offsetHeight>0};N.selectors.filters.animated=3Dfu= nction(T){return b.grep(b.timers,function(U){return T=3D=3D=3DU.elem}).l= ength};b.multiFilter=3Dfunction(V,T,U){if(U){V=3D":not("+V+")"}return N.= matches(V,T)};b.dir=3Dfunction(V,U){var T=3D[],W=3DV[U];while(W&&W!=3Ddo= cument){if(W.nodeType=3D=3D1){T.push(W)}W=3DW[U]}return T};b.nth=3Dfunct= ion(X,W,U,V){W=3DW||1;var T=3D0;for(;X;X=3DX[U]){if(X.nodeType=3D=3D1&&+= +T=3D=3DW){break}}return X};b.sibling=3Dfunction(V,U){var T=3D[];for(;V;= V=3DV.nextSibling){if(V.nodeType=3D=3D1&&V!=3DU){T.push(V)}}return T};re= turn;g.Sizzle=3DN})();b.event=3D{add:function(J,G,I,K){if(J.nodeType=3D=3D= 3||J.nodeType=3D=3D8){return}if(J.setInterval&&J!=3Dg){J=3Dg}if(!I.guid)= {I.guid=3Dthis.guid++}if(K!=3D=3Dj){var H=3DI;I=3Dthis.proxy(H);I.data=3D= K}var F=3Db.data(J,"events")||b.data(J,"events",{}),E=3Db.data(J,"handle= ")||b.data(J,"handle",function(){return typeof b!=3D=3D"undefined"&&!b.e= vent.triggered?b.event.handle.apply(arguments.callee.elem,arguments):j})= ;E.elem=3DJ;b.each(G.split(/\s+/),function(M,N){var O=3DN.split(".");N=3D= O.shift();I.type=3DO.slice().sort().join(".");var L=3DF[N];if(b.event.sp= ecialAll[N]){b.event.specialAll[N].setup.call(J,K,O)}if(!L){L=3DF[N]=3D{= };if(!b.event.special[N]||b.event.special[N].setup.call(J,K,O)=3D=3D=3Df= alse){if(J.addEventListener){J.addEventListener(N,E,false)}else{if(J.att= achEvent){J.attachEvent("on"+N,E)}}}}L[I.guid]=3DI;b.event.global[N]=3Dt= rue});J=3Dnull},guid:1,global:{},remove:function(L,I,K){if(L.nodeType=3D= =3D3||L.nodeType=3D=3D8){return}var H=3Db.data(L,"events"),G,F;if(H){if(= I=3D=3D=3Dj||(typeof I=3D=3D=3D"string"&&I.charAt(0)=3D=3D".")){for(var = J in H){this.remove(L,J+(I||""))}}else{if(I.type){K=3DI.handler;I=3DI.ty= pe}b.each(I.split(/\s+/),function(N,P){var Q=3DP.split(".");P=3DQ.shift(= );var O=3DRegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(= H[P]){if(K){delete H[P][K.guid]}else{for(var M in H[P]){if(O.test(H[P][M= ].type)){delete H[P][M]}}}if(b.event.specialAll[P]){b.event.specialAll[P= ].teardown.call(L,Q)}for(G in H[P]){break}if(!G){if(!b.event.special[P]|= |b.event.special[P].teardown.call(L,Q)=3D=3D=3Dfalse){if(L.removeEventLi= stener){L.removeEventListener(P,b.data(L,"handle"),false)}else{if(L.deta= chEvent){L.detachEvent("on"+P,b.data(L,"handle"))}}}G=3Dnull;delete H[P]= }}})}for(G in H){break}if(!G){var E=3Db.data(L,"handle");if(E){E.elem=3D= null}b.removeData(L,"events");b.removeData(L,"handle")}}},trigger:functi= on(J,K,I,G){var H=3DJ.type||J;if(!G){J=3Dtypeof J=3D=3D=3D"object"?J[i]?= J:b.extend(b.Event(H),J):b.Event(H);if(H.indexOf("!")>=3D0){J.type=3DH=3D= H.slice(0,-1);J.exclusive=3Dtrue}if(!I){J.stopPropagation();if(this.glob= al[H]){b.each(b.cache,function(){if(this.events&&this.events[H]){b.event= .trigger(J,K,this.handle.elem)}})}}if(!I||I.nodeType=3D=3D3||I.nodeType=3D= =3D8){return j}J.result=3Dj;J.target=3DI;K=3Db.makeArray(K);K.unshift(J)= }J.currentTarget=3DI;var E=3Db.data(I,"handle");if(E){E.apply(I,K)}if((!= I[H]||(b.nodeName(I,"a")&&H=3D=3D"click"))&&I["on"+H]&&I["on"+H].apply(I= ,K)=3D=3D=3Dfalse){J.result=3Dfalse}if(!G&&I[H]&&!J.isDefaultPrevented()= &&!(b.nodeName(I,"a")&&H=3D=3D"click")){this.triggered=3Dtrue;try{I[H]()= }catch(L){}}this.triggered=3Dfalse;if(!J.isPropagationStopped()){var F=3D= I.parentNode||I.ownerDocument;if(F){b.event.trigger(J,K,F,true)}}},handl= e:function(K){var J,E;K=3Darguments[0]=3Db.event.fix(K||g.event);K.curre= ntTarget=3Dthis;var L=3DK.type.split(".");K.type=3DL.shift();J=3D!L.leng= th&&!K.exclusive;var I=3DRegExp("(^|\\.)"+L.slice().sort().join(".*\\.")= +"(\\.|$)");E=3D(b.data(this,"events")||{})[K.type];for(var G in E){var = H=3DE[G];if(J||I.test(H.type)){K.handler=3DH;K.data=3DH.data;var F=3DH.a= pply(this,arguments);if(F!=3D=3Dj){K.result=3DF;if(F=3D=3D=3Dfalse){K.pr= eventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()= ){break}}}},props:"altKey attrChange attrName bubbles button cancelable = charCode clientX clientY ctrlKey currentTarget data detail eventPhase fr= omElement handler keyCode metaKey newValue originalTarget pageX pageY pr= evValue relatedNode relatedTarget screenX screenY shiftKey srcElement ta= rget toElement view wheelDelta which".split(" "),fix:function(H){if(H[i]= ){return H}var F=3DH;H=3Db.Event(F);for(var G=3Dthis.props.length,J;G;){= J=3Dthis.props[--G];H[J]=3DF[J]}if(!H.target){H.target=3DH.srcElement||d= ocument}if(H.target.nodeType=3D=3D3){H.target=3DH.target.parentNode}if(!= H.relatedTarget&&H.fromElement){H.relatedTarget=3DH.fromElement=3D=3DH.t= arget?H.toElement:H.fromElement}if(H.pageX=3D=3Dnull&&H.clientX!=3Dnull)= {var I=3Ddocument.documentElement,E=3Ddocument.body;H.pageX=3DH.clientX+= (I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=3DH.clie= ntY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((= H.charCode||H.charCode=3D=3D=3D0)?H.charCode:H.keyCode)){H.which=3DH.cha= rCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=3DH.ctrlKey}if(!H.w= hich&&H.button){H.which=3D(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))= }return H},proxy:function(F,E){E=3DE||function(){return F.apply(this,arg= uments)};E.guid=3DF.guid=3DF.guid||E.guid||this.guid++;return E},special= :{ready:{setup:q,teardown:function(){}}},specialAll:{live:{setup:functio= n(E,F){b.event.add(this,F[0],n)},teardown:function(G){if(G.length){var F= =3D0,E=3DRegExp("(^|\\.)"+G[0]+"(\\.|$)");b.each((b.data(this,"events").= live||{}),function(){if(E.test(this.type)){F++}});if(F<1){b.event.remove= (this,G[0],n)}}}}}};b.Event=3Dfunction(E){if(!this.preventDefault){retur= n new b.Event(E)}if(E&&E.type){this.originalEvent=3DE;this.type=3DE.type= }else{this.type=3DE}this.timeStamp=3Dd();this[i]=3Dtrue};function f(){re= turn false}function u(){return true}b.Event.prototype=3D{preventDefault:= function(){this.isDefaultPrevented=3Du;var E=3Dthis.originalEvent;if(!E)= {return}if(E.preventDefault){E.preventDefault()}E.returnValue=3Dfalse},s= topPropagation:function(){this.isPropagationStopped=3Du;var E=3Dthis.ori= ginalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.can= celBubble=3Dtrue},stopImmediatePropagation:function(){this.isImmediatePr= opagationStopped=3Du;this.stopPropagation()},isDefaultPrevented:f,isProp= agationStopped:f,isImmediatePropagationStopped:f};var a=3Dfunction(F){va= r E=3DF.relatedTarget;while(E&&E!=3Dthis){try{E=3DE.parentNode}catch(G){= E=3Dthis}}if(E!=3Dthis){F.type=3DF.data;b.event.handle.apply(this,argume= nts)}};b.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,= E){b.event.special[E]=3D{setup:function(){b.event.add(this,F,a,E)},teard= own:function(){b.event.remove(this,F,a)}}});b.fn.extend({bind:function(F= ,G,E){return F=3D=3D"unload"?this.one(F,G,E):this.each(function(){b.even= t.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=3Db.event.proxy(F||= H,function(I){b(this).unbind(I,E);return(F||H).apply(this,arguments)});r= eturn this.each(function(){b.event.add(this,G,E,F&&H)})},unbind:function= (F,E){return this.each(function(){b.event.remove(this,F,E)})},trigger:fu= nction(E,F){return this.each(function(){b.event.trigger(E,F,this)})},tri= ggerHandler:function(E,G){if(this[0]){var F=3Db.Event(E);F.preventDefaul= t();F.stopPropagation();b.event.trigger(F,G,this[0]);return F.result}},t= oggle:function(G){var E=3Darguments,F=3D1;while(F
a';var G=3DK.getElementsByTagName("*"),E=3DK.getElementsByTa= gName("a")[0];if(!G||!G.length||!E){return}b.support=3D{leadingWhitespac= e:K.firstChild.nodeType=3D=3D3,tbody:!K.getElementsByTagName("tbody").le= ngth,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagNam= e("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,styl= e:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("hre= f")=3D=3D=3D"/a",opacity:E.style.opacity=3D=3D=3D"0.5",cssFloat:!!E.styl= e.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};H.type=3D"t= ext/javascript";try{H.appendChild(document.createTextNode("window."+J+"=3D= 1;"))}catch(I){}F.insertBefore(H,F.firstChild);if(g[J]){b.support.script= Eval=3Dtrue;delete g[J]}F.removeChild(H);if(K.attachEvent&&K.fireEvent){= K.attachEvent("onclick",function(){b.support.noCloneEvent=3Dfalse;K.deta= chEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("oncli= ck")}b(function(){var L=3Ddocument.createElement("div");L.style.width=3D= L.style.paddingLeft=3D"1px";document.body.appendChild(L);b.boxModel=3Db.= support.boxModel=3DL.offsetWidth=3D=3D=3D2;document.body.removeChild(L).= style.display=3D"none"})})();var w=3Db.support.cssFloat?"cssFloat":"styl= eFloat";b.props=3D{"for":"htmlFor","class":"className","float":w,cssFloa= t:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"= cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};b.fn.extend({_load:b= .fn.load,load:function(G,K,I){if(typeof G!=3D=3D"string"){return this._l= oad(G)}var J=3DG.indexOf(" ");if(J>=3D0){var E=3DG.slice(J,G.length);G=3D= G.slice(0,J)}var H=3D"GET";if(K){if(b.isFunction(K)){I=3DK;K=3Dnull}else= {if(typeof K=3D=3D=3D"object"){K=3Db.param(K);H=3D"POST"}}}var F=3Dthis;= b.ajax({url:G,type:H,dataType:"html",data:K,complete:function(L,M){if(M=3D= =3D"success"||M=3D=3D"notmodified"){F.html(E?b("
").append(L.respon= seText.replace(//g,"")).find(E):L.responseText)}= if(I){F.each(I,[L.responseText,M,L])}}});return this},serialize:function= (){return b.param(this.serializeArray())},serializeArray:function(){retu= rn this.map(function(){return this.elements?b.makeArray(this.elements):t= his}).filter(function(){return this.name&&!this.disabled&&(this.checked|= |/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.= test(this.type))}).map(function(E,F){var G=3Db(this).val();return G=3D=3D= null?null:b.isArray(G)?b.map(G,function(I,H){return{name:F.name,value:I}= }):{name:F.name,value:G}}).get()}});b.each("ajaxStart,ajaxStop,ajaxCompl= ete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){b.fn[F]=3Df= unction(G){return this.bind(F,G)}});var s=3Dd();b.extend({get:function(E= ,G,H,F){if(b.isFunction(G)){H=3DG;G=3Dnull}return b.ajax({type:"GET",url= :E,data:G,success:H,dataType:F})},getScript:function(E,F){return b.get(E= ,null,F,"script")},getJSON:function(E,F,G){return b.get(E,F,G,"json")},p= ost:function(E,G,H,F){if(b.isFunction(G)){H=3DG;G=3D{}}return b.ajax({ty= pe:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){b.e= xtend(b.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,typ= e:"GET",contentType:"application/x-www-form-urlencoded",processData:true= ,async:true,xhr:function(){return g.ActiveXObject?new ActiveXObject("Mic= rosoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, te= xt/xml",html:"text/html",script:"text/javascript, application/javascript= ",json:"application/json, text/javascript",text:"text/plain",_default:"*= /*"}},lastModified:{},ajax:function(L){L=3Db.extend(true,L,b.extend(true= ,{},b.ajaxSettings,L));var V,F=3D/=3D\?(&|$)/g,Q,S,G=3DL.type.toUpperCas= e();if(L.data&&L.processData&&typeof L.data!=3D=3D"string"){L.data=3Db.p= aram(L.data)}if(L.dataType=3D=3D"jsonp"){if(G=3D=3D"GET"){if(!L.url.matc= h(F)){L.url+=3D(L.url.match(/\?/)?"&":"?")+(L.jsonp||"callback")+"=3D?"}= }else{if(!L.data||!L.data.match(F)){L.data=3D(L.data?L.data+"&":"")+(L.j= sonp||"callback")+"=3D?"}}L.dataType=3D"json"}if(L.dataType=3D=3D"json"&= &(L.data&&L.data.match(F)||L.url.match(F))){V=3D"jsonp"+s++;if(L.data){L= .data=3D(L.data+"").replace(F,"=3D"+V+"$1")}L.url=3DL.url.replace(F,"=3D= "+V+"$1");L.dataType=3D"script";g[V]=3Dfunction(X){S=3DX;H();U();g[V]=3D= j;try{delete g[V]}catch(Y){}if(I){I.removeChild(N)}}}if(L.dataType=3D=3D= "script"&&L.cache=3D=3Dnull){L.cache=3Dfalse}if(L.cache=3D=3D=3Dfalse&&G= =3D=3D"GET"){var E=3Dd();var T=3DL.url.replace(/(\?|&)_=3D.*?(&|$)/,"$1_= =3D"+E+"$2");L.url=3DT+((T=3D=3DL.url)?(L.url.match(/\?/)?"&":"?")+"_=3D= "+E:"")}if(L.data&&G=3D=3D"GET"){L.url+=3D(L.url.match(/\?/)?"&":"?")+L.= data;L.data=3Dnull}if(L.global&&!b.active++){b.event.trigger("ajaxStart"= )}var P=3D/^(\w+:)?\/\/([^\/?#]+)/.exec(L.url);if(L.dataType=3D=3D"scrip= t"&&G=3D=3D"GET"&&P&&(P[1]&&P[1]!=3Dlocation.protocol||P[2]!=3Dlocation.= host)){var I=3Ddocument.getElementsByTagName("head")[0];var N=3Ddocument= .createElement("script");N.src=3DL.url;if(L.scriptCharset){N.charset=3DL= .scriptCharset}if(!V){var M=3Dfalse;N.onload=3DN.onreadystatechange=3Dfu= nction(){if(!M&&(!this.readyState||this.readyState=3D=3D"loaded"||this.r= eadyState=3D=3D"complete")){M=3Dtrue;H();U();N.onload=3DN.onreadystatech= ange=3Dnull;I.removeChild(N)}}}I.appendChild(N);return j}var K=3Dfalse;v= ar J=3DL.xhr();if(L.username){J.open(G,L.url,L.async,L.username,L.passwo= rd)}else{J.open(G,L.url,L.async)}try{if(L.data){J.setRequestHeader("Cont= ent-Type",L.contentType)}if(L.ifModified){J.setRequestHeader("If-Modifie= d-Since",b.lastModified[L.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRe= questHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Acc= ept",L.dataType&&L.accepts[L.dataType]?L.accepts[L.dataType]+", */*":L.a= ccepts._default)}catch(R){}if(L.beforeSend&&L.beforeSend(J,L)=3D=3D=3Dfa= lse){if(L.global&&!--b.active){b.event.trigger("ajaxStop")}J.abort();ret= urn false}if(L.global){b.event.trigger("ajaxSend",[J,L])}var W=3Dfunctio= n(Y){if(J.readyState=3D=3D0){if(O){clearInterval(O);O=3Dnull;if(L.global= &&!--b.active){b.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyStat= e=3D=3D4||Y=3D=3D"timeout")){K=3Dtrue;if(O){clearInterval(O);O=3Dnull}Q=3D= Y=3D=3D"timeout"?"timeout":!b.httpSuccess(J)?"error":L.ifModified&&b.htt= pNotModified(J,L.url)?"notmodified":"success";if(Q=3D=3D"success"){try{S= =3Db.httpData(J,L.dataType,L)}catch(Z){Q=3D"parsererror"}}if(Q=3D=3D"suc= cess"){var X;try{X=3DJ.getResponseHeader("Last-Modified")}catch(Z){}if(L= .ifModified&&X){b.lastModified[L.url]=3DX}if(!V){H()}}else{b.handleError= (L,J,Q)}U();if(Y){J.abort()}if(L.async){J=3Dnull}}}};if(L.async){var O=3D= setInterval(W,13);if(L.timeout>0){setTimeout(function(){if(J&&!K){W("tim= eout")}},L.timeout)}}try{J.send(L.data)}catch(R){b.handleError(L,J,null,= R)}if(!L.async){W()}function H(){if(L.success){L.success(S,Q)}if(L.globa= l){b.event.trigger("ajaxSuccess",[J,L])}}function U(){if(L.complete){L.c= omplete(J,Q)}if(L.global){b.event.trigger("ajaxComplete",[J,L])}if(L.glo= bal&&!--b.active){b.event.trigger("ajaxStop")}}return J},handleError:fun= ction(E,H,F,G){if(E.error){E.error(H,F,G)}if(E.global){b.event.trigger("= ajaxError",[H,E,G])}},active:0,httpSuccess:function(F){try{return !F.sta= tus&&location.protocol=3D=3D"file:"||(F.status>=3D200&&F.status<300)||F.= status=3D=3D304||F.status=3D=3D1223}catch(E){}return false},httpNotModif= ied:function(H,E){try{var G=3DH.getResponseHeader("Last-Modified");retur= n H.status=3D=3D304||G=3D=3Db.lastModified[E]}catch(F){}return false},ht= tpData:function(J,H,G){var F=3DJ.getResponseHeader("content-type"),E=3DH= =3D=3D"xml"||!H&&F&&F.indexOf("xml")>=3D0,I=3DE?J.responseXML:J.response= Text;if(E&&I.documentElement.tagName=3D=3D"parsererror"){throw"parsererr= or"}if(G&&G.dataFilter){I=3DG.dataFilter(I,H)}if(typeof I=3D=3D=3D"strin= g"){if(H=3D=3D"script"){b.globalEval(I)}if(H=3D=3D"json"){I=3Dg["eval"](= "("+I+")")}}return I},param:function(E){var G=3D[];function H(I,J){G[G.l= ength]=3DencodeURIComponent(I)+"=3D"+encodeURIComponent(J)}if(b.isArray(= E)||E.jquery){b.each(E,function(){H(this.name,this.value)})}else{for(var= F in E){if(b.isArray(E[F])){b.each(E[F],function(){H(F,this)})}else{H(F= ,b.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+"= )}});var e=3D{},c,m=3D[["height","marginTop","marginBottom","paddingTop"= ,"paddingBottom"],["width","marginLeft","marginRight","paddingLeft","pad= dingRight"],["opacity"]];function t(F,E){var G=3D{};b.each(m.concat.appl= y([],m.slice(0,E)),function(){G[this]=3DF});return G}b.fn.extend({show:f= unction(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=3D= 0,F=3Dthis.length;H").appendTo= ("body");K=3DI.css("display");if(K=3D=3D=3D"none"){K=3D"block"}I.remove(= );e[G]=3DK}b.data(this[H],"olddisplay",K)}}for(var H=3D0,F=3Dthis.length= ;H=3D0;H--){if(E[H].elem=3D=3Dthis){if(G){E[H](true)}E.splice(H,1)}}})= ;if(!G){this.dequeue()}return this}});b.each({slideDown:t("show",1),slid= eUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOu= t:{opacity:"hide"}},function(E,F){b.fn[E]=3Dfunction(G,H){return this.an= imate(F,G,H)}});b.extend({speed:function(G,H,F){var E=3Dtypeof G=3D=3D=3D= "object"?G:{complete:F||!F&&H||b.isFunction(G)&&G,duration:G,easing:F&&H= ||H&&!b.isFunction(H)&&H};E.duration=3Db.fx.off?0:typeof E.duration=3D=3D= =3D"number"?E.duration:b.fx.speeds[E.duration]||b.fx.speeds._default;E.o= ld=3DE.complete;E.complete=3Dfunction(){if(E.queue!=3D=3Dfalse){b(this).= dequeue()}if(b.isFunction(E.old)){E.old.call(this)}};return E},easing:{l= inear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-M= ath.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.optio= ns=3DE;this.elem=3DF;this.prop=3DG;if(!E.orig){E.orig=3D{}}}});b.fx.prot= otype=3D{update:function(){if(this.options.step){this.options.step.call(= this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this= );if((this.prop=3D=3D"height"||this.prop=3D=3D"width")&&this.elem.style)= {this.elem.style.display=3D"block"}},cur:function(F){if(this.elem[this.p= rop]!=3Dnull&&(!this.elem.style||this.elem.style[this.prop]=3D=3Dnull)){= return this.elem[this.prop]}var E=3DparseFloat(b.css(this.elem,this.prop= ,F));return E&&E>-10000?E:parseFloat(b.curCSS(this.elem,this.prop))||0},= custom:function(I,H,G){this.startTime=3Dd();this.start=3DI;this.end=3DH;= this.unit=3DG||this.unit||"px";this.now=3Dthis.start;this.pos=3Dthis.sta= te=3D0;var E=3Dthis;function F(J){return E.step(J)}F.elem=3Dthis.elem;F.= baduserfunc=3D1;if(F()&&b.timers.push(F)&&!c){c=3DsetInterval(function()= {var J=3Db.timers;for(var K=3D0;K=3Dthis.options.duration+this.startTime){this.now=3Dthis.= end;this.pos=3Dthis.state=3D1;this.update();this.options.curAnim[this.pr= op]=3Dtrue;var E=3Dtrue;for(var F in this.options.curAnim){if(this.optio= ns.curAnim[F]!=3D=3Dtrue){E=3Dfalse}}if(E){if(this.options.display!=3Dnu= ll){this.elem.style.overflow=3Dthis.options.overflow;this.elem.style.dis= play=3Dthis.options.display;if(b.css(this.elem,"display")=3D=3D"none"){t= his.elem.style.display=3D"block"}}if(this.options.hide){b(this.elem).hid= e()}if(this.options.hide||this.options.show){for(var I in this.options.c= urAnim){b.attr(this.elem.style,I,this.options.orig[I])}}if(arguments.cal= lee&&arguments.callee.caller&&arguments.callee.caller.baduserfunc=3D=3D1= ){arguments.callee.caller.baduserfunc=3D2}this.options.complete.call(thi= s.elem);if(arguments.callee&&arguments.callee.caller&&arguments.callee.c= aller.baduserfunc=3D=3D2){arguments.callee.caller.baduserfunc=3D1}}retur= n false}else{var J=3DG-this.startTime;this.state=3DJ/this.options.durati= on;this.pos=3Db.easing[this.options.easing||(b.easing.swing?"swing":"lin= ear")](this.state,J,0,1,this.options.duration);this.now=3Dthis.start+((t= his.end-this.start)*this.pos);this.update()}return true}};b.extend(b.fx,= {speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){b.att= r(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E= .elem.style[E.prop]!=3Dnull){E.elem.style[E.prop]=3DE.now+E.unit}else{E.= elem[E.prop]=3DE.now}}}});if(document.documentElement.getBoundingClientR= ect){b.fn.offset=3Dfunction(){if(!this[0]){return{top:0,left:0}}if(this[= 0]=3D=3D=3Dthis[0].ownerDocument.body){return b.offset.bodyOffset(this[0= ])}var G=3Dthis[0].getBoundingClientRect(),K=3Dthis[0].ownerDocument,F=3D= K.body,E=3DK.documentElement,J=3DE.clientTop||F.clientTop||0,L=3DE.clien= tLeft||F.clientLeft||0,I=3DG.top+(self.pageYOffset||b.boxModel&&E.scroll= Top||F.scrollTop)-J,H=3DG.left+(self.pageXOffset||b.boxModel&&E.scrollLe= ft||F.scrollLeft)-L;return{top:I,left:H}}}else{b.fn.offset=3Dfunction(){= if(!this[0]){return{top:0,left:0}}if(this[0]=3D=3D=3Dthis[0].ownerDocume= nt.body){return b.offset.bodyOffset(this[0])}b.offset.initialized||b.off= set.initialize();var I=3Dthis[0],E=3DI.offsetParent,M=3DI,O=3DI.ownerDoc= ument,L,G=3DO.documentElement,J=3DO.body,F=3DO.defaultView,K=3DF.getComp= utedStyle(I,null),N=3DI.offsetTop,H=3DI.offsetLeft;while((I=3DI.parentNo= de)&&I!=3D=3DJ&&I!=3D=3DG){L=3DF.getComputedStyle(I,null);N-=3DI.scrollT= op,H-=3DI.scrollLeft;if(I=3D=3D=3DE){N+=3DI.offsetTop,H+=3DI.offsetLeft;= if(b.offset.doesNotAddBorder&&!(b.offset.doesAddBorderForTableAndCells&&= /^t(able|d|h)$/i.test(I.tagName))){N+=3DparseInt(L.borderTopWidth,10)||0= ,H+=3DparseInt(L.borderLeftWidth,10)||0}M=3DE,E=3DI.offsetParent}if(b.of= fset.subtractsBorderForOverflowNotVisible&&L.overflow!=3D=3D"visible"){N= +=3DparseInt(L.borderTopWidth,10)||0,H+=3DparseInt(L.borderLeftWidth,10)= ||0}K=3DL}if(K.position=3D=3D=3D"relative"||K.position=3D=3D=3D"static")= {N+=3DJ.offsetTop,H+=3DJ.offsetLeft}if(K.position=3D=3D=3D"fixed"){N+=3D= Math.max(G.scrollTop,J.scrollTop),H+=3DMath.max(G.scrollLeft,J.scrollLef= t)}return{top:N,left:H}}}b.offset=3D{initialize:function(){if(this.initi= alized){return}var K=3Ddocument.body,L=3Ddocument.createElement("div"),G= ,F,N,H,M,E,I=3DK.style.marginTop,J=3D'
';M=3D{position:"absolut= e",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"h= idden"};for(E in M){L.style[E]=3DM[E]}L.innerHTML=3DJ;K.insertBefore(L,K= .firstChild);G=3DL.firstChild,F=3DG.firstChild,H=3DG.nextSibling.firstCh= ild.firstChild;this.doesNotAddBorder=3D(F.offsetTop!=3D=3D5);this.doesAd= dBorderForTableAndCells=3D(H.offsetTop=3D=3D=3D5);G.style.overflow=3D"hi= dden",G.style.position=3D"relative";this.subtractsBorderForOverflowNotVi= sible=3D(F.offsetTop=3D=3D=3D-5);K.style.marginTop=3D"1px";this.doesNotI= ncludeMarginInBodyOffset=3D(K.offsetTop=3D=3D=3D0);K.style.marginTop=3DI= ;K.removeChild(L);this.initialized=3Dtrue},bodyOffset:function(E){b.offs= et.initialized||b.offset.initialize();var G=3DE.offsetTop,F=3DE.offsetLe= ft;if(b.offset.doesNotIncludeMarginInBodyOffset){G+=3DparseInt(b.curCSS(= E,"marginTop",true),10)||0,F+=3DparseInt(b.curCSS(E,"marginLeft",true),1= 0)||0}return{top:G,left:F}}};b.fn.extend({position:function(){var I=3D0,= H=3D0,F;if(this[0]){var G=3Dthis.offsetParent(),J=3Dthis.offset(),E=3D/^= body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=3Dl(thi= s,"marginTop");J.left-=3Dl(this,"marginLeft");E.top+=3Dl(G,"borderTopWid= th");E.left+=3Dl(G,"borderLeftWidth");F=3D{top:J.top-E.top,left:J.left-E= .left}}return F},offsetParent:function(){var E=3Dthis[0].offsetParent||d= ocument.body;while(E&&(!/^body|html$/i.test(E.tagName)&&b.css(E,"positio= n")=3D=3D"static")){E=3DE.offsetParent}return b(E)}});b.each(["Left","To= p"],function(F,E){var G=3D"scroll"+E;b.fn[G]=3Dfunction(H){if(!this[0]){= return null}return H!=3D=3Dj?this.each(function(){this=3D=3Dg||this=3D=3D= document?g.scrollTo(!F?H:b(g).scrollLeft(),F?H:b(g).scrollTop()):this[G]= =3DH}):this[0]=3D=3Dg||this[0]=3D=3Ddocument?self[F?"pageYOffset":"pageX= Offset"]||b.boxModel&&document.documentElement[G]||document.body[G]:this= [0][G]}});b.each(["Height","Width"],function(I,G){var E=3DI?"Left":"Top"= ,H=3DI?"Right":"Bottom",F=3DG.toLowerCase();b.fn["inner"+G]=3Dfunction()= {return this[0]?b.css(this[0],F,false,"padding"):null};b.fn["outer"+G]=3D= function(K){return this[0]?b.css(this[0],F,false,K?"margin":"border"):nu= ll};var J=3DG.toLowerCase();b.fn[J]=3Dfunction(K){return this[0]=3D=3Dg?= document.compatMode=3D=3D"CSS1Compat"&&document.documentElement["client"= +G]||document.body["client"+G]:this[0]=3D=3Ddocument?Math.max(document.d= ocumentElement["client"+G],document.body["scroll"+G],document.documentEl= ement["scroll"+G],document.body["offset"+G],document.documentElement["of= fset"+G]):K=3D=3D=3Dj?(this.length?b.css(this[0],J):null):this.css(J,typ= eof K=3D=3D=3D"string"?K:K+"px")}})})();(function(b){b.fn.ajaxSubmit=3Df= unction(m){if(!this.length){a("ajaxSubmit: skipping submit process - no = element selected");return this}if(typeof m=3D=3D"function"){m=3D{success= :m}}var d=3Db.trim(this.attr("action"));if(d){d=3D(d.match(/^([^#]+)/)||= [])[1]}d=3Dd||window.location.href||"";m=3Db.extend({url:d,type:this.att= r("method")||"GET"},m||{});var t=3D{};this.trigger("form-pre-serialize",= [this,m,t]);if(t.veto){a("ajaxSubmit: submit vetoed via form-pre-seriali= ze trigger");return this}if(m.beforeSerialize&&m.beforeSerialize(this,m)= =3D=3D=3Dfalse){a("ajaxSubmit: submit aborted via beforeSerialize callba= ck");return this}var o=3Dthis.formToArray(m.semantic);if(m.data){m.extra= Data=3Dm.data;for(var g in m.data){if(m.data[g] instanceof Array){for(va= r i in m.data[g]){o.push({name:g,value:m.data[g][i]})}}else{o.push({name= :g,value:m.data[g]})}}}if(m.beforeSubmit&&m.beforeSubmit(o,this,m)=3D=3D= =3Dfalse){a("ajaxSubmit: submit aborted via beforeSubmit callback");retu= rn this}this.trigger("form-submit-validate",[o,this,m,t]);if(t.veto){a("= ajaxSubmit: submit vetoed via form-submit-validate trigger");return this= }var e=3Db.param(o);if(m.type.toUpperCase()=3D=3D"GET"){m.url+=3D(m.url.= indexOf("?")>=3D0?"&":"?")+e;m.data=3Dnull}else{m.data=3De}var u=3Dthis,= f=3D[];if(m.resetForm){f.push(function(){u.resetForm()})}if(m.clearForm)= {f.push(function(){u.clearForm()})}if(!m.dataType&&m.target){var r=3Dm.s= uccess||function(){};f.push(function(j){b(m.target).html(j).each(r,argum= ents)})}else{if(m.success){f.push(m.success)}}m.success=3Dfunction(q,n){= for(var k=3D0,j=3Df.length;k');var D=3DB[0];B.css({position:"absolute",top:"-1000= px",left:"-1000px"});var F=3D{aborted:0,responseText:null,responseXML:nu= ll,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getRespo= nseHeader:function(){},setRequestHeader:function(){},abort:function(){th= is.aborted=3D1;B.attr("src","about:blank")}};var C=3Dk.global;if(C&&!b.a= ctive++){b.event.trigger("ajaxStart")}if(C){b.event.trigger("ajaxSend",[= F,k])}if(G.beforeSend&&G.beforeSend(F,G)=3D=3D=3Dfalse){G.global&&b.acti= ve--;return}if(F.aborted){return}var E=3D0;var A=3D0;var j=3Dq.clk;if(j)= {var w=3Dj.name;if(w&&!j.disabled){m.extraData=3Dm.extraData||{};m.extra= Data[w]=3Dj.value;if(j.type=3D=3D"image"){m.extraData[name+".x"]=3Dq.clk= _x;m.extraData[name+".y"]=3Dq.clk_y}}}setTimeout(function(){var J=3Du.at= tr("target"),H=3Du.attr("action");q.setAttribute("target",v);if(q.getAtt= ribute("method")!=3D"POST"){q.setAttribute("method","POST")}if(q.getAttr= ibute("action")!=3Dk.url){q.setAttribute("action",k.url)}if(!m.skipEncod= ingOverride){u.attr({encoding:"multipart/form-data",enctype:"multipart/f= orm-data"})}if(b.browser.opera&&parseFloat(b.browser.version)>9.799&&!k.= timeout){k.timeout=3D3*60000}if(k.timeout){setTimeout(function(){A=3Dtru= e;x()},k.timeout)}var I=3D[];try{if(m.extraData){for(var K in m.extraDat= a){I.push(b('').appendTo(q)[0])}}B.appendTo("body");D.attachEvent?D.attachE= vent("onload",x):D.addEventListener("load",x,false);q.submit()}finally{q= .setAttribute("action",H);J?q.setAttribute("target",J):u.removeAttr("tar= get");b(I).remove()}},10);var y=3D0;function x(){if(E++){return}D.detach= Event?D.detachEvent("onload",x):D.removeEventListener("load",x,false);va= r H=3Dtrue;try{if(A){throw"timeout"}var I,K;K=3DD.contentWindow?D.conten= tWindow.document:D.contentDocument?D.contentDocument:D.document;if((!K||= !K.body||K.body.innerHTML=3D=3D"")&&!y){if(!(b.browser.opera&&parseFloat= (b.browser.version)>9.799&&K&&K.baseURI=3D=3D"about:blank")){y=3D1}E--;s= etTimeout(x,100);return}F.responseText=3DK.body?K.body.innerHTML:null;F.= responseXML=3DK.XMLDocument?K.XMLDocument:K;F.getResponseHeader=3Dfuncti= on(L){var M=3D{"content-type":k.dataType};return M[L]};if(k.dataType=3D=3D= "json"||k.dataType=3D=3D"script"){var n=3DK.getElementsByTagName("textar= ea")[0];F.responseText=3Dn?n.value:F.responseText}else{if(k.dataType=3D=3D= "xml"&&!F.responseXML&&F.responseText!=3Dnull){F.responseXML=3Dz(F.respo= nseText)}}I=3Db.httpData(F,k.dataType)}catch(J){H=3Dfalse;b.handleError(= k,F,"error",J)}if(H){k.success(I,"success");if(C){b.event.trigger("ajaxS= uccess",[F,k])}}if(C){b.event.trigger("ajaxComplete",[F,k])}if(C&&!--b.a= ctive){b.event.trigger("ajaxStop")}if(k.complete){k.complete(F,H?"succes= s":"error")}setTimeout(function(){B.remove();F.responseXML=3Dnull},100)}= function z(n,H){if(window.ActiveXObject){H=3Dnew ActiveXObject("Microsof= t.XMLDOM");H.async=3D"false";H.loadXML(n)}else{H=3D(new DOMParser()).par= seFromString(n,"text/xml")}return(H&&H.documentElement&&H.documentElemen= t.tagName!=3D"parsererror")?H:null}}};b.fn.ajaxForm=3Dfunction(c){return= this.ajaxFormUnbind().bind("submit.form-plugin",function(){b(this).ajax= Submit(c);return false}).each(function(){b(":submit,input:image",this).b= ind("click.form-plugin",function(f){var d=3Dthis.form;d.clk=3Dthis;if(th= is.type=3D=3D"image"){if(f.offsetX!=3Dundefined){d.clk_x=3Df.offsetX;d.c= lk_y=3Df.offsetY}else{if(typeof b.fn.offset=3D=3D"function"){var g=3Db(t= his).offset();d.clk_x=3Df.pageX-g.left;d.clk_y=3Df.pageY-g.top}else{d.cl= k_x=3Df.pageX-this.offsetLeft;d.clk_y=3Df.pageY-this.offsetTop}}}setTime= out(function(){d.clk=3Dd.clk_x=3Dd.clk_y=3Dnull},10)})})};b.fn.ajaxFormU= nbind=3Dfunction(){this.unbind("submit.form-plugin");return this.each(fu= nction(){b(":submit,input:image",this).unbind("click.form-plugin")})};b.= fn.formToArray=3Dfunction(q){var p=3D[];if(this.length=3D=3D0){return p}= var d=3Dthis[0];var h=3Dq?d.getElementsByTagName("*"):d.elements;if(!h){= return p}for(var k=3D0,m=3Dh.length;k=3D1.3?0:1};b.window=3Dfunct= ion(d){return c(window)._scrollable()};c.fn._scrollable=3Dfunction(){ret= urn this.map(function(){var e=3Dthis,d=3D!e.nodeName||c.inArray(e.nodeNa= me.toLowerCase(),["iframe","#document","html","body"])!=3D-1;if(!d){retu= rn e}var f=3D(e.contentWindow||e).document||e.ownerDocument||e;return c.= browser.safari||f.compatMode=3D=3D"BackCompat"?f.body:f.documentElement}= )};c.fn.scrollTo=3Dfunction(f,e,d){if(typeof e=3D=3D"object"){d=3De;e=3D= 0}if(typeof d=3D=3D"function"){d=3D{onAfter:d}}if(f=3D=3D"max"){f=3D9000= 000000}d=3Dc.extend({},b.defaults,d);e=3De||d.speed||d.duration;d.queue=3D= d.queue&&d.axis.length>1;if(d.queue){e/=3D2}d.offset=3Da(d.offset);d.ove= r=3Da(d.over);return this._scrollable().each(function(){var l=3Dthis,i=3D= c(l),j=3Df,h,g=3D{},m=3Di.is("html,body");switch(typeof j){case"number":= case"string":if(/^([+-]=3D)?\d+(\.\d+)?(px|%)?$/.test(j)){j=3Da(j);break= }j=3Dc(j,this);case"object":if(j.is||j.style){h=3D(j=3Dc(j)).offset()}}c= .each(d.axis.split(""),function(q,r){var s=3Dr=3D=3D"x"?"Left":"Top",u=3D= s.toLowerCase(),p=3D"scroll"+s,o=3Dl[p],n=3Db.max(l,r);if(h){g[p]=3Dh[u]= +(m?0:o-i.offset()[u]);if(d.margin){g[p]-=3DparseInt(j.css("margin"+s))|= |0;g[p]-=3DparseInt(j.css("border"+s+"Width"))||0}g[p]+=3Dd.offset[u]||0= ;if(d.over[u]){g[p]+=3Dj[r=3D=3D"x"?"width":"height"]()*d.over[u]}}else{= var t=3Dj[u];g[p]=3Dt.slice&&t.slice(-1)=3D=3D"%"?parseFloat(t)/100*n:t}= if(/^\d+$/.test(g[p])){g[p]=3Dg[p]<=3D0?0:Math.min(g[p],n)}if(!q&&d.queu= e){if(o!=3Dg[p]){k(d.onAfterFirst)}delete g[p]}});k(d.onAfter);function = k(n){i.animate(g,e,d.easing,n&&function(){n.call(this,f,d)})}}).end()};b= .max=3Dfunction(i,h){var g=3Dh=3D=3D"x"?"Width":"Height",j=3D"scroll"+g;= if(!c(i).is("html,body")){return i[j]-c(i)[g.toLowerCase()]()}var f=3D"c= lient"+g,e=3Di.ownerDocument.documentElement,d=3Di.ownerDocument.body;re= turn Math.max(e[j],d[j])-Math.min(e[f],d[f])};function a(d){return typeo= f d=3D=3D"object"?d:{top:d,left:d}}})(jQuery);(function(b){var a=3Db.pre= load=3Dfunction(f,h){if(f.split){f=3Db(f)}h=3Db.extend({},a.defaults,h);= var e=3Db.map(f,function(k){if(!k){return}if(k.split){return h.base+k+h.= ext}var l=3Dk.src||k.href;if(typeof h.placeholder=3D=3D"string"&&k.src){= k.src=3Dh.placeholder}if(l&&h.find){l=3Dl.replace(h.find,h.replace)}retu= rn l||null});var i=3D{loaded:0,failed:0,next:0,done:0,total:e.length};if= (!i.total){return c()}var j=3Db(Array(h.threshold+1).join("")).loa= d(g).error(g).bind("abort",g).each(d);function g(k){i.element=3Dthis;i.f= ound=3Dk.type=3D=3D"load";i.image=3Dthis.src;i.index=3Dthis.index;var l=3D= i.original=3Df[this.index];i[i.found?"loaded":"failed"]++;i.done++;if(h.= enforceCache){a.cache.push(b("").attr("src",i.image)[0])}if(h.plac= eholder&&l.src){l.src=3Di.found?i.image:h.notFound||l.src}if(h.onComplet= e){h.onComplete(i)}if(i.done0&&have_active[= gr].indexOf(","+id+",")=3D=3D-1){o.show_menu(par,tp,mid,dy,dx)}}}};_uMen= u.schedule_hidechild=3Dfunction(id){var o=3D_uMenu.get(id);if(o){var gr=3D= o.group;with(_uMenu.prototype){if(timerid2[gr]){clearTimeout(timerid2[gr= ])}timerid2[gr]=3DsetTimeout("_uMenu.hide('"+id+"',1);_uMenu.prototype.t= imerid2['"+gr+"']=3D0;",800)}}};_uMenu.prototype=3D{donothide:[],all_men= us:[],have_active:[],timerid:[],timerid2:[],global_set:false,init:functi= on(c,a,b){this.id=3Dc;this.obj=3D$("#"+c)[0];if(!this.obj){return}this.o= bj._umenu=3Dthis;if(!a){a=3Dc}this.parentid=3Da;if(!b){b=3D"def"}this.gr= oup=3Db;this.obj.style.display=3D"none";$(this.obj).bind("click",this,fu= nction(d){d.data.donothide[d.data.group]=3Dtrue});if(this.all_menus[b]=3D= =3Dundefined){this.all_menus[b]=3D[]}if(this.have_active[b]=3D=3Dundefin= ed){this.have_active[b]=3D""}this.all_menus[b][c]=3Dthis;if(!this.global= _set){$(document).bind("click",_uMenu.hideAll);$(window).bind("resize",_= uMenu.hideAll);_uMenu.prototype.global_set=3Dtrue}},show_menu:function(p= ar,tp,mid,dy,dx){var ddX=3D0;var ddY=3D0;if(this.timerid2[this.group]){c= learTimeout(this.timerid2[this.group])}if(this.have_active[this.group].i= ndexOf(","+this.id+",")>=3D0){this.hide_menu();return}if(!dy){dy=3D0}if(= !dx){dx=3D0}if(mid){ddX=3D$("#"+mid)[0].offsetLeft;ddY=3D$("#"+mid)[0].o= ffsetTop}this.allmenus_hidenp();if(!par){par=3Dthis.obj.parentNode}else{= par=3D$("#"+par)[0]}var pos=3D_uGetOffset(par);pos.left+=3Ddx-ddX;pos.to= p+=3Ddy-ddY;if(tp=3D=3D"r"){pos.left+=3Dpar.offsetWidth-4}else{pos.top+=3D= par.offsetHeight+1}var ww=3D$(window).width();with(this.obj.style){left=3D= pos.left+"px";top=3Dpos.top+"px";display=3D"";visibility=3D"visible"}try= {if(pos.left+this.obj.offsetWidth>ww){pos.left=3Dww-this.obj.offsetWidth= -5;this.obj.style.left=3Dpos.left+"px"}}catch(e){}if(!this.have_active[t= his.group]){this.have_active[this.group]=3D""}this.have_active[this.grou= p]+=3D","+this.id+",";if(this.timerid[this.group]){clearTimeout(this.tim= erid[this.group])}this.donothide[this.group]=3Dtrue;this.timerid[this.gr= oup]=3DsetTimeout("with(_uMenu.prototype){donothide['"+this.group+"']=3D= false;timerid['"+this.group+"']=3Dnull;};",100)},allmenus_hidenp:functio= n(){var b=3D{};var c=3Dthis.id;while(this.all_menus[this.group][c]&&this= .all_menus[this.group][c].parentid!=3Dc&&c){b[this.all_menus[this.group]= [c].parentid]=3D1;c=3Dthis.all_menus[this.group][c].parentid}for(var a i= n this.all_menus[this.group]){if(b[a]=3D=3D1){continue}this.all_menus[th= is.group][a].hide_menu()}},hide_menu:function(){with(this){hide_child();= var x=3Dhave_active[group].indexOf(","+id+",");if(x>=3D0){have_active[gr= oup]=3Dhave_active[group].substring(0,x)}obj.style.display=3D"none";obj.= style.visibility=3D"hidden"}},hide_child:function(){with(this){for(var i= in all_menus[group]){if(all_menus[group][i].parentid=3D=3Did&&i!=3Did){= all_menus[group][i].hide_menu()}}}}};function _uMENU(d,h,g,c,b){this.con= structor=3D_uMENU;this.name=3Dd;this.pos=3D$.extend({pos:null,alignObj:n= ull,align:"d",parent:null,parentfocus:null,dx:0,dy:0,childdy:0,childdx:0= },h||{});this.props=3D$.extend({parentnode:null,design:_uMENU.defdesign|= |"std",hidden:g.statical&&c&&c.length>0?0:1,shadow:1,addclass:"",withmar= ks:null,highlight:1,statical:g.horiz?1:0,hidetimer:0,horiz:0,noabs:0,wid= th:0,onshow:null,onhide:null,ondestroy:null,onitem:null,onldown:null,onr= down:null,thispar:null,onreadycreate:null,wnd:null,rtl:0},g||{});this.st= ate=3D{visible:false,init:false,destroyed:false};this.design=3Dthis.prop= s.design&&_uMENU.designs[this.props.design]?_uMENU.designs[this.props.de= sign]:_uMENU.designs.std;this.idx=3D_uMENU.nextidx++;_uMENU.all[this.idx= ]=3Dthis;if(!this.pos.parent){this.zpos=3D_uMENU.defz}else{this.zpos=3Dt= his.pos.parent.zpos+5}this.xpos=3Dthis.ypos=3D0;this.width=3D10;this.hei= ght=3D10;this.elems=3D[];this.add_elems=3Dc&&c.length>0?[c]:[];this.del_= elems=3D[];this.pend_show=3Dnull;this.appendtimer=3Dnull;this.decor=3D{w= :0,h:0};this.frame=3Dnull;this.childtimer=3Dnull;this.sh=3Dnull;this.hid= etimer=3Dnull;this.hlitem=3D-1;this.have_active=3Dnull;this._focus=3Dnew= _uFocus({type:1,thispar:this,owner:this,parent:this.pos.parentfocus?thi= s.pos.parentfocus:(this.pos.parent?this.pos.parent._focus:(this.props.wn= d?this.props.wnd._focus:null)),onkeydown:this.onkeydown,ondeactivate:thi= s.onfocusdeactivate});var f=3Ddocument.createElement("div");f.id=3D"_ume= nu"+this.idx;if(!this.props.parentnode){$($("body")[0]).prepend(f)}else{= this.props.parentnode.appendChild(f)}this.top=3Df;$(f).addClass("x-unsel= ectable").css({visibility:"hidden",display:"block"});var a=3Ddocument.cr= eateElement("div");f.appendChild(a);this.menu=3Da;if(!this.props.noabs){= $(f).css({position:"absolute",zIndex:this.zpos});if($.browser.msie&&pars= eFloat($.browser.version)<7){var e=3D'