Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LWRlZ3JlYXNlci1tdWx0aXN1cmYtYXNjaXVnYW1hbm8tdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdERUdSRUFTRVIrTVVMVElTVVJGK0FTQ0lVR0FNQU5PJywKICAgICAgaXRlbV9pZDogJ0lUQV9QUkRFMDAwMzYwOTZXJywKICAgICAgcHJpY2U6ICfigqwxNiw1MCcsCiAgICAgIGl0ZW1fYnJhbmQ6ICdTdGFuaG9tZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnU3RhbmhvbWUnLAogICAgICBpdGVtX2NhdGVnb3J5MjogJ0N1cmEgZGVsbGEgY2FzYScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogICAgLy8gU2VuZCAiZmluaXNoZWQiIGV2ZW50CiAgICBpZiAoYXhQcm9kdWN0TGlzdC5sZW5ndGggPT09IHdpbmRvdy50aGVtZS5pdGVtc19jb3VudCkgewogICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2xpc3RfY29tcGxldGUnLAogICAgICAgIGF4UHJvZHVjdExpc3Q6IGF4UHJvZHVjdExpc3QsCiAgICAgIH0pOwogICAgfQogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgcHJvZHVjdC1taW5pYXR1cmUgcHJvZHVjdC1jYXJkLXdyYXBwZXIgdW5kZXJsaW5lLWxpbmtzLWhvdmVyIGd0bS1jYXJkLXByb2R1Y3QgZ3RtLWNhcmQtcHJvZHVjdC1kZWdyZWFzZXItbXVsdGlzdXJmLWFzY2l1Z2FtYW5vLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiIiBndG0tY2FyZC1kYXRhPScKICAgICAgICB7CiAgICAgICAgICAgICJpdGVtX25hbWUiOiAiREVHUkVBU0VSK01VTFRJU1VSRitBU0NJVUdBTUFOTyIsCiAgICAgICAgICAgICJpdGVtX2lkIjogIklUQV9QUkRFMDAwMzYwOTZXIiwKICAgICAgICAgICAgInByaWNlIjogIuKCrDE2LDUwIiwKICAgICAgICAgICAgIml0ZW1fYnJhbmQiOiAiU3RhbmhvbWUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTEiOiAiIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkyIjogImhvdXNlaG9sZC1jbGVhbmVycyIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MDk2XzJmNmM0OWQ1LTdiYTEtNDVkMy1hYzJlLTJlMzQ0ZGEzNDc4MC5qcGc/dj0xNzMwMzgxNDg4JndpZHRoPTE2NSAxNjV3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MDk2XzJmNmM0OWQ1LTdiYTEtNDVkMy1hYzJlLTJlMzQ0ZGEzNDc4MC5qcGc/dj0xNzMwMzgxNDg4JndpZHRoPTM2MCAzNjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MDk2XzJmNmM0OWQ1LTdiYTEtNDVkMy1hYzJlLTJlMzQ0ZGEzNDc4MC5qcGc/dj0xNzMwMzgxNDg4JndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MDk2XzJmNmM0OWQ1LTdiYTEtNDVkMy1hYzJlLTJlMzQ0ZGEzNDc4MC5qcGc/dj0xNzMwMzgxNDg4JndpZHRoPTcyMCA3MjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MDk2XzJmNmM0OWQ1LTdiYTEtNDVkMy1hYzJlLTJlMzQ0ZGEzNDc4MC5qcGc/dj0xNzMwMzgxNDg4JndpZHRoPTk0MCA5NDB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MDk2XzJmNmM0OWQ1LTdiYTEtNDVkMy1hYzJlLTJlMzQ0ZGEzNDc4MC5qcGc/dj0xNzMwMzgxNDg4JndpZHRoPTEwNjYgMTA2NncsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYwOTZfMmY2YzQ5ZDUtN2JhMS00NWQzLWFjMmUtMmUzNDRkYTM0NzgwLmpwZz92PTE3MzAzODE0ODggMTIwMHcKICAgICAgICAgICAgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjA5Nl8yZjZjNDlkNS03YmExLTQ1ZDMtYWMyZS0yZTM0NGRhMzQ3ODAuanBnP3Y9MTczMDM4MTQ4OCZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSJERUdSRUFTRVIrTVVMVElTVVJGK0FTQ0lVR0FNQU5PIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0Xzk4MTkwOTc4OTExNDkiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iOTgxOTA5Nzg5MTE0OSIgZGF0YS12YXJpYW50LWlkPSI1MDQ2NDU5MTgzOTU2NSIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuaXQvcHJvZHVjdHMvZGVncmVhc2VyLW11bHRpc3VyZi1hc2NpdWdhbWFubyI+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2JhZGdlIHRvcCBsZWZ0Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFuaG9tZQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi05ODE5MDk3ODkxMTQ5IiA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9kZWdyZWFzZXItbXVsdGlzdXJmLWFzY2l1Z2FtYW5vIiBpZD0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5Nzg5MTE0OSIgY2xhc3M9ImZ1bGwtdW5zdHlsZWQtbGluayBmdWxsLXVuc3R5bGVkLWxpbmstcHJvZHVjdCIgYXJpYS1sYWJlbGxlZGJ5PSJDYXJkTGluay10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi05ODE5MDk3ODkxMTQ5IEJhZGdlLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTk4MTkwOTc4OTExNDkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IE5hdGFsZSBjb24gRGVncmVhc2VyLCBNdWx0aSBTdXJmYWNlIGUgc2ltcGF0aWNvIGFzY2l1Z2FtYW5vIGVsZm8gCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIERFR1JFQVNFUitNVUxUSVNVUkYrQVNDSVVHQU1BTk8KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWluZm9ybWF0aW9uIj48c3BhbiBjbGFzcz0iY2FwdGlvbi1sYXJnZSBsaWdodCI+PC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24tZm9ybS1yYXRpbmctcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nLXByaWNlIj4KPGRpdgogIGNsYXNzPSIKICAgIHByaWNlICIKPgogIDxkaXYgY2xhc3M9InByaWNlX19jb250YWluZXIiPjxkaXYgY2xhc3M9InByaWNlX19yZWd1bGFyIj48c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gZGkgbGlzdGlubzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgIOKCrDE2LDUwCiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2VfX3NhbGUiPgogICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIHNjb250YXRvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1zYWxlIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIOKCrDE2LDUwCiAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gZGkgbGlzdGlubzwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxzIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICA8L3M+CiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPHNtYWxsIGNsYXNzPSJ1bml0LXByaWNlIGNhcHRpb24gaGlkZGVuIj4KICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+UHJlenpvIHVuaXRhcmlvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cGVyJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjxhIGhyZWY9Ii9wcm9kdWN0cy9kZWdyZWFzZXItbXVsdGlzdXJmLWFzY2l1Z2FtYW5vIiBjbGFzcz0icXVpY2stYWRkIHF1aWNrLWFkZC1leWUgcXVpY2stYWRkLW1vYmlsZSBleHRyYS1sYXJnZS11cC1oaWRlIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJpY29uIGljb24tZXllIiB3aWR0aD0iMjQuNzY0IiBoZWlnaHQ9IjEzLjMxOCI+CiAgPGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNyIgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiPgogIDxwYXRoIGQ9Ik0xMC40OC40NGguMDM3YTExLjk4MyAxMS45ODMgMCAwIDEgNS42NDEgMS40MjRBMTIuMjUzIDEyLjI1MyAwIDAgMSAxOC41IDMuNDk3YTEyLjQ1NyAxMi40NTcgMCAwIDEgMS43MzQgMS44OTQgMTIuNDIyIDEyLjQyMiAwIDAgMS0xLjcyOCAyLjEwNiAxMi4wNzcgMTIuMDc3IDAgMCAxLTIuMzc5IDEuODEgMTEuNjc2IDExLjY3NiAwIDAgMS0yLjc3MSAxLjE2MSAxMS42IDExLjYgMCAwIDEtMy4wNjMuNDFoLS4wMzlhMTEuNjEzIDExLjYxMyAwIDAgMS0yLjk3Ni0uNCAxMS42NjMgMTEuNjYzIDAgMCAxLTIuNy0xLjEwNiAxMi4wNDcgMTIuMDQ3IDAgMCAxLTIuMzM1LTEuNzE3IDEyLjQgMTIuNCAwIDAgMS0xLjcxMi0yIDEyLjQ2NCAxMi40NjQgMCAwIDEgMS43NTMtMiAxMi4yNzEgMTIuMjcxIDAgMCAxIDIuMzg4LTEuNzIzIDExLjk4MiAxMS45ODIgMCAwIDEgNS44LTEuNDkzWm0wLS40NEExMi41ODcgMTIuNTg3IDAgMCAwIDAgNS42NTVhMTIuMyAxMi4zIDAgMCAwIDEwLjI1MyA1LjY2M2guMDRhMTIuMzI0IDEyLjMyNCAwIDAgMCAxMC40NzEtNS45NDJBMTIuNTc1IDEyLjU3NSAwIDAgMCAxMC41MTgtLjAwM2gtLjA0MSIvPgogIDxwYXRoIGQ9Ik0xMC4zODIuNzM0YTQuNzQxIDQuNzQxIDAgMCAxIDIuNy44MzkgNC44ODkgNC44ODkgMCAwIDEgLjcxNS42IDQuOTUgNC45NSAwIDAgMSAxLjMxOSAyLjQ5MyA1LjA4IDUuMDggMCAwIDEgMCAxLjk5MSA0Ljk0OCA0Ljk0OCAwIDAgMS0xLjMxOSAyLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMS0uNzE1LjYgNC44IDQuOCAwIDAgMS0uODIuNDUzIDQuNzQ5IDQuNzQ5IDAgMCAxLTMuNzUzIDAgNC44IDQuOCAwIDAgMS0uODItLjQ1MyA0LjkxNSA0LjkxNSAwIDAgMS0xLjMwNi0xLjMzMSA0Ljk0OSA0Ljk0OSAwIDAgMS0uNzI4LTEuNzYzIDUuMDggNS4wOCAwIDAgMSAwLTEuOTkxIDQuOTQ0IDQuOTQ0IDAgMCAxIDEuMzE5LTIuNDkzIDQuODg5IDQuODg5IDAgMCAxIC43MTUtLjYgNC44IDQuOCAwIDAgMSAuODItLjQ1MyA0LjczIDQuNzMgMCAwIDEgMS44NzctLjM4Nm0wLS41YTUuNDI5IDUuNDI5IDAgMSAwIDUuMzMgNS40MjkgNS4zOCA1LjM4IDAgMCAwLTUuMzMtNS40MjkiLz4KICA8cGF0aCBkPSJNMTMuMDgzIDUuNzU5YTIuNjgzIDIuNjgzIDAgMSAxLTIuNjgyLTIuNzMyIDIuNzA3IDIuNzA3IDAgMCAxIDIuNjgyIDIuNzMyIi8+CiAgPC9nPgo8L3N2Zz4KICA8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQtaG92ZXIiPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfOTgxOTA5Nzg5MTE0OSIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSI5ODE5MDk3ODkxMTQ5IiBkYXRhLXZhcmlhbnQtaWQ9IjUwNDY0NTkxODM5NTY1IiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5pdC9wcm9kdWN0cy9kZWdyZWFzZXItbXVsdGlzdXJmLWFzY2l1Z2FtYW5vIj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2hlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCBOYXRhbGUgY29uIERlZ3JlYXNlciwgTXVsdGkgU3VyZmFjZSBlIHNpbXBhdGljbyBhc2NpdWdhbWFubyBlbGZvCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBERUdSRUFTRVIrTVVMVElTVVJGK0FTQ0lVR0FNQU5PCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIGNhcmRfX3ZhcmlhbnQta2V5X3BvaW50cyI+PGxpPjxzcGFuPklsIHNldCBwZXIgc2dyYXNzYXJlIGUgcHVsaXJlIGVmZmljYWNlbWVudGUgbGUgc3RvdmlnbGllIGUgdHV0dGUgbGUgc3VwZXJmaWNpIGRlbGxhIGN1Y2luYS48L3NwYW4+PC9saT48bGk+PHNwYW4+SSBwcm9kb3R0aSBjb250ZW5nb25vIGZpbm8gYWwgOTUlIGQnaW5ncmVkaWVudGkgZGkgb3JpZ2luZSBuYXR1cmFsZS48L3NwYW4+PC9saT48bGk+PHNwYW4+TCdhc2NpdWdhbWFubyBlbGZvIMOoIGwnaWRlYWxlIHBlciBkZWNvcmFyZSBsYSB0dWEgY3VjaW5hIGVkIMOoIGFuY2hlIHVuJ290dGltYSBpZGVhIHJlZ2FsbyE8L3NwYW4+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9InF1aWNrLWFkZCBuby1qcy1oaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Byb2R1Y3RzL2RlZ3JlYXNlci1tdWx0aXN1cmYtYXNjaXVnYW1hbm8iIGNsYXNzPSJxdWljay1hZGRfX2xpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InF1aWNrLWFkZF9fc3VibWl0IGJ1dHRvbiBidXR0b24tLWZ1bGwtd2lkdGggYnV0dG9uLS1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVkZXJlIGlsIHByb2RvdHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4=
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LTJ4LWRlZ3JlYXNlci1hc2NpdWdhbWFuby10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYicpOwogICAgcHJvZHVjdENhcmRzLmZvckVhY2goZnVuY3Rpb24gKGNhcmQpIHsKICAgICAgaWYgKGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKSAhPT0gbnVsbCkgewogICAgICAgIGxpc3ROYW1lID0gY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpLmdldEF0dHJpYnV0ZSgnZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpOwogICAgICB9CiAgICAgIGNhcmQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICB2YXIgcHJvZHVjdERhdGEgPSBKU09OLnBhcnNlKGNhcmQuZ2V0QXR0cmlidXRlKCdndG0tY2FyZC1kYXRhJykpOwogICAgICAgIC8vIE5lZWQgdG8gcHVzaCBsaXN0TmFtZQogICAgICAgIHByb2R1Y3REYXRhWydpdGVtX2xpc3RfbmFtZSddID0gbGlzdE5hbWU7CiAgICAgICAgLy8gUHVzaCBjbGlja2VkIHByb2R1Y3QKICAgICAgICBheEl0ZW0ucHVzaChwcm9kdWN0RGF0YSk7CiAgICAgICAgLy8gU2VuZCAiY2xpY2siIGV2ZW50CiAgICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2NsaWNrJywKICAgICAgICAgIGF4SXRlbTogYXhJdGVtCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSk7CgogICAgLy8gUHVzaCBhbGwgcHJvZHVjdCBpbiBkYXRhTGF5ZXIKICAgIGF4UHJvZHVjdExpc3QucHVzaCh7CiAgICAgIGl0ZW1fbmFtZTogJzJYIERFR1JFQVNFUitBU0NJVUdBTUFOTycsCiAgICAgIGl0ZW1faWQ6ICdJVEFfUFJERTAwMDM2MDk3VycsCiAgICAgIHByaWNlOiAn4oKsMTUsNTAnLAogICAgICBpdGVtX2JyYW5kOiAnU3RhbmhvbWUnLAogICAgICBpdGVtX2NhdGVnb3J5MTogJ1N0YW5ob21lJywKICAgICAgaXRlbV9jYXRlZ29yeTI6ICdDdXJhIGRlbGxhIGNhc2EnLAogICAgICBpdGVtX2NhdGVnb3J5MzogJycsCiAgICAgIGl0ZW1fdmFyaWFudDogJ0RlZmF1bHQgVGl0bGUnLAogICAgICBpdGVtX2xpc3RfbmFtZTogbGlzdE5hbWUKICAgIH0pOwoKICAgIC8vIFNlbmQgImZpbmlzaGVkIiBldmVudAogICAgaWYgKGF4UHJvZHVjdExpc3QubGVuZ3RoID09PSB3aW5kb3cudGhlbWUuaXRlbXNfY291bnQpIHsKICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9saXN0X2NvbXBsZXRlJywKICAgICAgICBheFByb2R1Y3RMaXN0OiBheFByb2R1Y3RMaXN0LAogICAgICB9KTsKICAgIH0KICB9KTsKCiAgZnVuY3Rpb24gY2xpY2tQcm9kdWN0KHByb2R1Y3REYXRhKSB7fQo8L3NjcmlwdD4KCgo8c2NyaXB0IGRlZmVyPgogIGZ1bmN0aW9uIHN3eW1DYWxsYmFja0ZuKHN3YXQpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N3eW06Y29sbGVjdGlvbnMtbG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgICBzd2F0LmluaXRpYWxpemVBY3Rpb25CdXR0b25zKCc8PENvbGxlY3Rpb25zIEdyaWQgUEFSRU5UIFNlbGVjdG9yID4+Jyk7CiAgICB9KTsKICB9CiAgaWYgKCF3aW5kb3cuU3d5bUNhbGxiYWNrcykgewogICAgd2luZG93LlN3eW1DYWxsYmFja3MgPSBbXTsKICB9CiAgd2luZG93LlN3eW1DYWxsYmFja3MucHVzaChzd3ltQ2FsbGJhY2tGbik7Cjwvc2NyaXB0PgoKCiAgICAKICAgIAogICAgPGRpdiBjbGFzcz0iY2FyZC13cmFwcGVyIHByb2R1Y3QtbWluaWF0dXJlIHByb2R1Y3QtY2FyZC13cmFwcGVyIHVuZGVybGluZS1saW5rcy1ob3ZlciBndG0tY2FyZC1wcm9kdWN0IGd0bS1jYXJkLXByb2R1Y3QtMngtZGVncmVhc2VyLWFzY2l1Z2FtYW5vLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiIiBndG0tY2FyZC1kYXRhPScKICAgICAgICB7CiAgICAgICAgICAgICJpdGVtX25hbWUiOiAiMlggREVHUkVBU0VSK0FTQ0lVR0FNQU5PIiwKICAgICAgICAgICAgIml0ZW1faWQiOiAiSVRBX1BSREUwMDAzNjA5N1ciLAogICAgICAgICAgICAicHJpY2UiOiAi4oKsMTUsNTAiLAogICAgICAgICAgICAiaXRlbV9icmFuZCI6ICJTdGFuaG9tZSIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MSI6ICIiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAiaG91c2Vob2xkLWNsZWFuZXJzIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkzIjogbnVsbCwKICAgICAgICAgICAgIml0ZW1fdmFyaWFudCI6ICJEZWZhdWx0IFRpdGxlIgogICAgICAgIH0KICAgICc+CiAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9IgogICAgICAgIGNhcmQgY2FyZC0tc3RhbmRhcmQKICAgICAgICAgY2FyZC0tbWVkaWEKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIgogICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNhcmRfX2lubmVyIGNvbG9yLWJhY2tncm91bmQtMSBncmFkaWVudCByYXRpbyIKICAgICAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICAgICAgPjxkaXYgY2xhc3M9ImNhcmRfX21lZGlhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEgbWVkaWEtLXRyYW5zcGFyZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY3NldD0iLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYwOTdfOWM3ODUwN2QtZmM4Zi00NzQ1LWE5YzktZTI2MjMzMjgxYjU5LmpwZz92PTE3MzAzODE1MTEmd2lkdGg9MTY1IDE2NXcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYwOTdfOWM3ODUwN2QtZmM4Zi00NzQ1LWE5YzktZTI2MjMzMjgxYjU5LmpwZz92PTE3MzAzODE1MTEmd2lkdGg9MzYwIDM2MHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYwOTdfOWM3ODUwN2QtZmM4Zi00NzQ1LWE5YzktZTI2MjMzMjgxYjU5LmpwZz92PTE3MzAzODE1MTEmd2lkdGg9NTMzIDUzM3csLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYwOTdfOWM3ODUwN2QtZmM4Zi00NzQ1LWE5YzktZTI2MjMzMjgxYjU5LmpwZz92PTE3MzAzODE1MTEmd2lkdGg9NzIwIDcyMHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYwOTdfOWM3ODUwN2QtZmM4Zi00NzQ1LWE5YzktZTI2MjMzMjgxYjU5LmpwZz92PTE3MzAzODE1MTEmd2lkdGg9OTQwIDk0MHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYwOTdfOWM3ODUwN2QtZmM4Zi00NzQ1LWE5YzktZTI2MjMzMjgxYjU5LmpwZz92PTE3MzAzODE1MTEmd2lkdGg9MTA2NiAxMDY2dywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjA5N185Yzc4NTA3ZC1mYzhmLTQ3NDUtYTljOS1lMjYyMzMyODFiNTkuanBnP3Y9MTczMDM4MTUxMSAxMjAwdwogICAgICAgICAgICAgICAgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9Ii8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MDk3XzljNzg1MDdkLWZjOGYtNDc0NS1hOWM5LWUyNjIzMzI4MWI1OS5qcGc/dj0xNzMwMzgxNTExJndpZHRoPTUzMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9IihtaW4td2lkdGg6IDE2MDBweCkgMzY3cHgsIChtaW4td2lkdGg6IDk5MHB4KSBjYWxjKCgxMDB2dyAtIDEzMHB4KSAvIDQpLCAobWluLXdpZHRoOiA3NTBweCkgY2FsYygoMTAwdncgLSAxMjBweCkgLyAzKSwgY2FsYygoMTAwdncgLSAzNXB4KSAvIDIpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9IjJYIERFR1JFQVNFUitBU0NJVUdBTUFOTyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im1vdGlvbi1yZWR1Y2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF85ODE5MDk3OTIzOTE3IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9Ijk4MTkwOTc5MjM5MTciIGRhdGEtdmFyaWFudC1pZD0iNTA0NjQ1OTE4NzIzMzMiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzLzJ4LWRlZ3JlYXNlci1hc2NpdWdhbWFubyI+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2JhZGdlIHRvcCBsZWZ0Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFuaG9tZQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi05ODE5MDk3OTIzOTE3IiA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy8yeC1kZWdyZWFzZXItYXNjaXVnYW1hbm8iIGlkPSJDYXJkTGluay10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi05ODE5MDk3OTIzOTE3IiBjbGFzcz0iZnVsbC11bnN0eWxlZC1saW5rIGZ1bGwtdW5zdHlsZWQtbGluay1wcm9kdWN0IiBhcmlhLWxhYmVsbGVkYnk9IkNhcmRMaW5rLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTk4MTkwOTc5MjM5MTcgQmFkZ2UtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5NzkyMzkxNyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgTmF0YWxlIGNvbiAyIERlZ3JlYXNlciBlIHNpbXBhdGljbyBhc2NpdWdhbWFubyBlbGZvIAogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICAyWCBERUdSRUFTRVIrQVNDSVVHQU1BTk8KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWluZm9ybWF0aW9uIj48c3BhbiBjbGFzcz0iY2FwdGlvbi1sYXJnZSBsaWdodCI+PC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24tZm9ybS1yYXRpbmctcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nLXByaWNlIj4KPGRpdgogIGNsYXNzPSIKICAgIHByaWNlICIKPgogIDxkaXYgY2xhc3M9InByaWNlX19jb250YWluZXIiPjxkaXYgY2xhc3M9InByaWNlX19yZWd1bGFyIj48c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gZGkgbGlzdGlubzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgIOKCrDE1LDUwCiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2VfX3NhbGUiPgogICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIHNjb250YXRvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1zYWxlIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIOKCrDE1LDUwCiAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gZGkgbGlzdGlubzwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxzIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICA8L3M+CiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPHNtYWxsIGNsYXNzPSJ1bml0LXByaWNlIGNhcHRpb24gaGlkZGVuIj4KICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+UHJlenpvIHVuaXRhcmlvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cGVyJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjxhIGhyZWY9Ii9wcm9kdWN0cy8yeC1kZWdyZWFzZXItYXNjaXVnYW1hbm8iIGNsYXNzPSJxdWljay1hZGQgcXVpY2stYWRkLWV5ZSBxdWljay1hZGQtbW9iaWxlIGV4dHJhLWxhcmdlLXVwLWhpZGUiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgY2xhc3M9Imljb24gaWNvbi1leWUiIHdpZHRoPSIyNC43NjQiIGhlaWdodD0iMTMuMzE4Ij4KICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9Ii43IiBjbGlwLXBhdGg9InVybCgjcHJlZml4X19hKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSI+CiAgPHBhdGggZD0iTTEwLjQ4LjQ0aC4wMzdhMTEuOTgzIDExLjk4MyAwIDAgMSA1LjY0MSAxLjQyNEExMi4yNTMgMTIuMjUzIDAgMCAxIDE4LjUgMy40OTdhMTIuNDU3IDEyLjQ1NyAwIDAgMSAxLjczNCAxLjg5NCAxMi40MjIgMTIuNDIyIDAgMCAxLTEuNzI4IDIuMTA2IDEyLjA3NyAxMi4wNzcgMCAwIDEtMi4zNzkgMS44MSAxMS42NzYgMTEuNjc2IDAgMCAxLTIuNzcxIDEuMTYxIDExLjYgMTEuNiAwIDAgMS0zLjA2My40MWgtLjAzOWExMS42MTMgMTEuNjEzIDAgMCAxLTIuOTc2LS40IDExLjY2MyAxMS42NjMgMCAwIDEtMi43LTEuMTA2IDEyLjA0NyAxMi4wNDcgMCAwIDEtMi4zMzUtMS43MTcgMTIuNCAxMi40IDAgMCAxLTEuNzEyLTIgMTIuNDY0IDEyLjQ2NCAwIDAgMSAxLjc1My0yIDEyLjI3MSAxMi4yNzEgMCAwIDEgMi4zODgtMS43MjMgMTEuOTgyIDExLjk4MiAwIDAgMSA1LjgtMS40OTNabTAtLjQ0QTEyLjU4NyAxMi41ODcgMCAwIDAgMCA1LjY1NWExMi4zIDEyLjMgMCAwIDAgMTAuMjUzIDUuNjYzaC4wNGExMi4zMjQgMTIuMzI0IDAgMCAwIDEwLjQ3MS01Ljk0MkExMi41NzUgMTIuNTc1IDAgMCAwIDEwLjUxOC0uMDAzaC0uMDQxIi8+CiAgPHBhdGggZD0iTTEwLjM4Mi43MzRhNC43NDEgNC43NDEgMCAwIDEgMi43LjgzOSA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LjYgNC45NSA0Ljk1IDAgMCAxIDEuMzE5IDIuNDkzIDUuMDggNS4wOCAwIDAgMSAwIDEuOTkxIDQuOTQ4IDQuOTQ4IDAgMCAxLTEuMzE5IDIuNDkzIDQuODg5IDQuODg5IDAgMCAxLS43MTUuNiA0LjggNC44IDAgMCAxLS44Mi40NTMgNC43NDkgNC43NDkgMCAwIDEtMy43NTMgMCA0LjggNC44IDAgMCAxLS44Mi0uNDUzIDQuOTE1IDQuOTE1IDAgMCAxLTEuMzA2LTEuMzMxIDQuOTQ5IDQuOTQ5IDAgMCAxLS43MjgtMS43NjMgNS4wOCA1LjA4IDAgMCAxIDAtMS45OTEgNC45NDQgNC45NDQgMCAwIDEgMS4zMTktMi40OTMgNC44ODkgNC44ODkgMCAwIDEgLjcxNS0uNiA0LjggNC44IDAgMCAxIC44Mi0uNDUzIDQuNzMgNC43MyAwIDAgMSAxLjg3Ny0uMzg2bTAtLjVhNS40MjkgNS40MjkgMCAxIDAgNS4zMyA1LjQyOSA1LjM4IDUuMzggMCAwIDAtNS4zMy01LjQyOSIvPgogIDxwYXRoIGQ9Ik0xMy4wODMgNS43NTlhMi42ODMgMi42ODMgMCAxIDEtMi42ODItMi43MzIgMi43MDcgMi43MDcgMCAwIDEgMi42ODIgMi43MzIiLz4KICA8L2c+Cjwvc3ZnPgogIDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudC1ob3ZlciI+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF85ODE5MDk3OTIzOTE3IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9Ijk4MTkwOTc5MjM5MTciIGRhdGEtdmFyaWFudC1pZD0iNTA0NjQ1OTE4NzIzMzMiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzLzJ4LWRlZ3JlYXNlci1hc2NpdWdhbWFubyI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgTmF0YWxlIGNvbiAyIERlZ3JlYXNlciBlIHNpbXBhdGljbyBhc2NpdWdhbWFubyBlbGZvCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICAyWCBERUdSRUFTRVIrQVNDSVVHQU1BTk8KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+SWwgc2V0IHBlciBzZ3Jhc3NhcmUgZSBwdWxpcmUgZWZmaWNhY2VtZW50ZSBsZSBzdG92aWdsaWUgZSB0dXR0ZSBsZSBzdXBlcmZpY2kgZGVsbGEgY3VjaW5hLjwvc3Bhbj48L2xpPjxsaT48c3Bhbj5JbCBEZWdyZWFzZXIgY29udGllbmUgb2x0cmUgaWwgOTIlIGQnaW5ncmVkaWVudGkgZGkgb3JpZ2luZSBuYXR1cmFsZS48L3NwYW4+PC9saT48bGk+PHNwYW4+TCdhc2NpdWdhbWFubyBlbGZvIMOoIGwnaWRlYWxlIHBlciBkZWNvcmFyZSBsYSB0dWEgY3VjaW5hIGVkIMOoIGFuY2hlIHVuJ290dGltYSBpZGVhIHJlZ2FsbyE8L3NwYW4+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9InF1aWNrLWFkZCBuby1qcy1oaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Byb2R1Y3RzLzJ4LWRlZ3JlYXNlci1hc2NpdWdhbWFubyIgY2xhc3M9InF1aWNrLWFkZF9fbGluayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icXVpY2stYWRkX19zdWJtaXQgYnV0dG9uIGJ1dHRvbi0tZnVsbC13aWR0aCBidXR0b24tLXByaW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWRlcmUgaWwgcHJvZG90dG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pg==
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LWRhaWx5LWxpc3MtYXNjaXVnYW1hbm8tdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdEQUlMWStMSVNTK0FTQ0lVR0FNQU5PJywKICAgICAgaXRlbV9pZDogJ0lUQV9QUkRFMDAwMzYwOTlXJywKICAgICAgcHJpY2U6ICfigqwxNyw5MCcsCiAgICAgIGl0ZW1fYnJhbmQ6ICdTdGFuaG9tZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnU3RhbmhvbWUnLAogICAgICBpdGVtX2NhdGVnb3J5MjogJ0N1cmEgZGVsIGJ1Y2F0bycsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogICAgLy8gU2VuZCAiZmluaXNoZWQiIGV2ZW50CiAgICBpZiAoYXhQcm9kdWN0TGlzdC5sZW5ndGggPT09IHdpbmRvdy50aGVtZS5pdGVtc19jb3VudCkgewogICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2xpc3RfY29tcGxldGUnLAogICAgICAgIGF4UHJvZHVjdExpc3Q6IGF4UHJvZHVjdExpc3QsCiAgICAgIH0pOwogICAgfQogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgcHJvZHVjdC1taW5pYXR1cmUgcHJvZHVjdC1jYXJkLXdyYXBwZXIgdW5kZXJsaW5lLWxpbmtzLWhvdmVyIGd0bS1jYXJkLXByb2R1Y3QgZ3RtLWNhcmQtcHJvZHVjdC1kYWlseS1saXNzLWFzY2l1Z2FtYW5vLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiIiBndG0tY2FyZC1kYXRhPScKICAgICAgICB7CiAgICAgICAgICAgICJpdGVtX25hbWUiOiAiREFJTFkrTElTUytBU0NJVUdBTUFOTyIsCiAgICAgICAgICAgICJpdGVtX2lkIjogIklUQV9QUkRFMDAwMzYwOTlXIiwKICAgICAgICAgICAgInByaWNlIjogIuKCrDE3LDkwIiwKICAgICAgICAgICAgIml0ZW1fYnJhbmQiOiAiU3RhbmhvbWUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTEiOiAiIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkyIjogImxhdW5kcnktYW5kLWxpbmVuLWNhcmUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTMiOiBudWxsLAogICAgICAgICAgICAiaXRlbV92YXJpYW50IjogIkRlZmF1bHQgVGl0bGUiCiAgICAgICAgfQogICAgJz4KICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0iCiAgICAgICAgY2FyZCBjYXJkLS1zdGFuZGFyZAogICAgICAgICBjYXJkLS1tZWRpYQogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAiCiAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICA+CiAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iY2FyZF9faW5uZXIgY29sb3ItYmFja2dyb3VuZC0xIGdyYWRpZW50IHJhdGlvIgogICAgICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgICAgICA+PGRpdiBjbGFzcz0iY2FyZF9fbWVkaWEiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYSBtZWRpYS0tdHJhbnNwYXJlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Jjc2V0PSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjA5OV85MTIwMjNiMi1mYjQyLTQyNzQtYjg0MC04M2M4NGI3YmRhMzguanBnP3Y9MTczMDM4MTU0NCZ3aWR0aD0xNjUgMTY1dywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjA5OV85MTIwMjNiMi1mYjQyLTQyNzQtYjg0MC04M2M4NGI3YmRhMzguanBnP3Y9MTczMDM4MTU0NCZ3aWR0aD0zNjAgMzYwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjA5OV85MTIwMjNiMi1mYjQyLTQyNzQtYjg0MC04M2M4NGI3YmRhMzguanBnP3Y9MTczMDM4MTU0NCZ3aWR0aD01MzMgNTMzdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjA5OV85MTIwMjNiMi1mYjQyLTQyNzQtYjg0MC04M2M4NGI3YmRhMzguanBnP3Y9MTczMDM4MTU0NCZ3aWR0aD03MjAgNzIwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjA5OV85MTIwMjNiMi1mYjQyLTQyNzQtYjg0MC04M2M4NGI3YmRhMzguanBnP3Y9MTczMDM4MTU0NCZ3aWR0aD05NDAgOTQwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjA5OV85MTIwMjNiMi1mYjQyLTQyNzQtYjg0MC04M2M4NGI3YmRhMzguanBnP3Y9MTczMDM4MTU0NCZ3aWR0aD0xMDY2IDEwNjZ3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MDk5XzkxMjAyM2IyLWZiNDItNDI3NC1iODQwLTgzYzg0YjdiZGEzOC5qcGc/dj0xNzMwMzgxNTQ0IDEyMDB3CiAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0iLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYwOTlfOTEyMDIzYjItZmI0Mi00Mjc0LWI4NDAtODNjODRiN2JkYTM4LmpwZz92PTE3MzAzODE1NDQmd2lkdGg9NTMzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz0iKG1pbi13aWR0aDogMTYwMHB4KSAzNjdweCwgKG1pbi13aWR0aDogOTkwcHgpIGNhbGMoKDEwMHZ3IC0gMTMwcHgpIC8gNCksIChtaW4td2lkdGg6IDc1MHB4KSBjYWxjKCgxMDB2dyAtIDEyMHB4KSAvIDMpLCBjYWxjKCgxMDB2dyAtIDM1cHgpIC8gMikiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD0iREFJTFkrTElTUytBU0NJVUdBTUFOTyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im1vdGlvbi1yZWR1Y2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF85ODE5MDk3OTg5NDUzIiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9Ijk4MTkwOTc5ODk0NTMiIGRhdGEtdmFyaWFudC1pZD0iNTA0NjQ1OTE5Mzc4NjkiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzL2RhaWx5LWxpc3MtYXNjaXVnYW1hbm8iPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19iYWRnZSB0b3AgbGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPjxkaXYgY2xhc3M9ImNhcmRfX3R5cGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhbmhvbWUKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHAgY2xhc3M9ImNhcmRfX2hlYWRpbmcgaDUiICBpZD0idGl0bGUtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5Nzk4OTQ1MyIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvZGFpbHktbGlzcy1hc2NpdWdhbWFubyIgaWQ9IkNhcmRMaW5rLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTk4MTkwOTc5ODk0NTMiIGNsYXNzPSJmdWxsLXVuc3R5bGVkLWxpbmsgZnVsbC11bnN0eWxlZC1saW5rLXByb2R1Y3QiIGFyaWEtbGFiZWxsZWRieT0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5Nzk4OTQ1MyBCYWRnZS10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi05ODE5MDk3OTg5NDUzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCBOYXRhbGUgY29uIERhaWx5IFdhc2gsIExpc3MmRnJlc2ggZSBzaW1wYXRpY28gYXNjaXVnYW1hbm8gZWxmbyAKICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgREFJTFkrTElTUytBU0NJVUdBTUFOTwogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBkaSBsaXN0aW5vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAg4oKsMTcsOTAKICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZV9fc2FsZSI+CiAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gc2NvbnRhdG88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXNhbGUgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAg4oKsMTcsOTAKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBkaSBsaXN0aW5vPC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgICAgPHMgY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgIDwvcz4KICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8c21hbGwgY2xhc3M9InVuaXQtcHJpY2UgY2FwdGlvbiBoaWRkZW4iPgogICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5QcmV6em8gdW5pdGFyaW88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDxzcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Lzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4mbmJzcDtwZXImbmJzcDs8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3NtYWxsPgogIDwvZGl2PjwvZGl2PgoKPC9kaXY+PGEgaHJlZj0iL3Byb2R1Y3RzL2RhaWx5LWxpc3MtYXNjaXVnYW1hbm8iIGNsYXNzPSJxdWljay1hZGQgcXVpY2stYWRkLWV5ZSBxdWljay1hZGQtbW9iaWxlIGV4dHJhLWxhcmdlLXVwLWhpZGUiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgY2xhc3M9Imljb24gaWNvbi1leWUiIHdpZHRoPSIyNC43NjQiIGhlaWdodD0iMTMuMzE4Ij4KICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9Ii43IiBjbGlwLXBhdGg9InVybCgjcHJlZml4X19hKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSI+CiAgPHBhdGggZD0iTTEwLjQ4LjQ0aC4wMzdhMTEuOTgzIDExLjk4MyAwIDAgMSA1LjY0MSAxLjQyNEExMi4yNTMgMTIuMjUzIDAgMCAxIDE4LjUgMy40OTdhMTIuNDU3IDEyLjQ1NyAwIDAgMSAxLjczNCAxLjg5NCAxMi40MjIgMTIuNDIyIDAgMCAxLTEuNzI4IDIuMTA2IDEyLjA3NyAxMi4wNzcgMCAwIDEtMi4zNzkgMS44MSAxMS42NzYgMTEuNjc2IDAgMCAxLTIuNzcxIDEuMTYxIDExLjYgMTEuNiAwIDAgMS0zLjA2My40MWgtLjAzOWExMS42MTMgMTEuNjEzIDAgMCAxLTIuOTc2LS40IDExLjY2MyAxMS42NjMgMCAwIDEtMi43LTEuMTA2IDEyLjA0NyAxMi4wNDcgMCAwIDEtMi4zMzUtMS43MTcgMTIuNCAxMi40IDAgMCAxLTEuNzEyLTIgMTIuNDY0IDEyLjQ2NCAwIDAgMSAxLjc1My0yIDEyLjI3MSAxMi4yNzEgMCAwIDEgMi4zODgtMS43MjMgMTEuOTgyIDExLjk4MiAwIDAgMSA1LjgtMS40OTNabTAtLjQ0QTEyLjU4NyAxMi41ODcgMCAwIDAgMCA1LjY1NWExMi4zIDEyLjMgMCAwIDAgMTAuMjUzIDUuNjYzaC4wNGExMi4zMjQgMTIuMzI0IDAgMCAwIDEwLjQ3MS01Ljk0MkExMi41NzUgMTIuNTc1IDAgMCAwIDEwLjUxOC0uMDAzaC0uMDQxIi8+CiAgPHBhdGggZD0iTTEwLjM4Mi43MzRhNC43NDEgNC43NDEgMCAwIDEgMi43LjgzOSA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LjYgNC45NSA0Ljk1IDAgMCAxIDEuMzE5IDIuNDkzIDUuMDggNS4wOCAwIDAgMSAwIDEuOTkxIDQuOTQ4IDQuOTQ4IDAgMCAxLTEuMzE5IDIuNDkzIDQuODg5IDQuODg5IDAgMCAxLS43MTUuNiA0LjggNC44IDAgMCAxLS44Mi40NTMgNC43NDkgNC43NDkgMCAwIDEtMy43NTMgMCA0LjggNC44IDAgMCAxLS44Mi0uNDUzIDQuOTE1IDQuOTE1IDAgMCAxLTEuMzA2LTEuMzMxIDQuOTQ5IDQuOTQ5IDAgMCAxLS43MjgtMS43NjMgNS4wOCA1LjA4IDAgMCAxIDAtMS45OTEgNC45NDQgNC45NDQgMCAwIDEgMS4zMTktMi40OTMgNC44ODkgNC44ODkgMCAwIDEgLjcxNS0uNiA0LjggNC44IDAgMCAxIC44Mi0uNDUzIDQuNzMgNC43MyAwIDAgMSAxLjg3Ny0uMzg2bTAtLjVhNS40MjkgNS40MjkgMCAxIDAgNS4zMyA1LjQyOSA1LjM4IDUuMzggMCAwIDAtNS4zMy01LjQyOSIvPgogIDxwYXRoIGQ9Ik0xMy4wODMgNS43NTlhMi42ODMgMi42ODMgMCAxIDEtMi42ODItMi43MzIgMi43MDcgMi43MDcgMCAwIDEgMi42ODIgMi43MzIiLz4KICA8L2c+Cjwvc3ZnPgogIDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudC1ob3ZlciI+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF85ODE5MDk3OTg5NDUzIiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9Ijk4MTkwOTc5ODk0NTMiIGRhdGEtdmFyaWFudC1pZD0iNTA0NjQ1OTE5Mzc4NjkiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzL2RhaWx5LWxpc3MtYXNjaXVnYW1hbm8iPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IE5hdGFsZSBjb24gRGFpbHkgV2FzaCwgTGlzcyZGcmVzaCBlIHNpbXBhdGljbyBhc2NpdWdhbWFubyBlbGZvCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBEQUlMWStMSVNTK0FTQ0lVR0FNQU5PCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIGNhcmRfX3ZhcmlhbnQta2V5X3BvaW50cyI+PGxpPjxzcGFuPkRldGVyc2l2byBlZmZpY2FjZSBwZXIgY2FwaSBiaWFuY2hpIG8gY29sb3JhdGkuPC9zcGFuPjwvbGk+PGxpPjxzcGFuPkVsaW1pbmEgbGUgcGllZ2hlIGRhIHR1dHRpIGkgdGlwaSBkaSB0ZXNzdXRpLjwvc3Bhbj48L2xpPjxsaT48c3Bhbj5CdWNhdG8gZnJlc2NvIGUgcHJvZnVtYXRvLlNpbXBhdGljbyBhc2NpdWdhbWFubyBlbGZvLjwvc3Bhbj48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0icXVpY2stYWRkIG5vLWpzLWhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvZGFpbHktbGlzcy1hc2NpdWdhbWFubyIgY2xhc3M9InF1aWNrLWFkZF9fbGluayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icXVpY2stYWRkX19zdWJtaXQgYnV0dG9uIGJ1dHRvbi0tZnVsbC13aWR0aCBidXR0b24tLXByaW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWRlcmUgaWwgcHJvZG90dG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pg==
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LTJ4LWRhaWx5LWFzY2l1Z2FtYW5vLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiJyk7CiAgICBwcm9kdWN0Q2FyZHMuZm9yRWFjaChmdW5jdGlvbiAoY2FyZCkgewogICAgICBpZiAoY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpICE9PSBudWxsKSB7CiAgICAgICAgbGlzdE5hbWUgPSBjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykuZ2V0QXR0cmlidXRlKCdndG0tdHJhY2tpbmctY3Jvc3NzZWxsJyk7CiAgICAgIH0KICAgICAgY2FyZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgIHZhciBwcm9kdWN0RGF0YSA9IEpTT04ucGFyc2UoY2FyZC5nZXRBdHRyaWJ1dGUoJ2d0bS1jYXJkLWRhdGEnKSk7CiAgICAgICAgLy8gTmVlZCB0byBwdXNoIGxpc3ROYW1lCiAgICAgICAgcHJvZHVjdERhdGFbJ2l0ZW1fbGlzdF9uYW1lJ10gPSBsaXN0TmFtZTsKICAgICAgICAvLyBQdXNoIGNsaWNrZWQgcHJvZHVjdAogICAgICAgIGF4SXRlbS5wdXNoKHByb2R1Y3REYXRhKTsKICAgICAgICAvLyBTZW5kICJjbGljayIgZXZlbnQKICAgICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfY2xpY2snLAogICAgICAgICAgYXhJdGVtOiBheEl0ZW0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyBQdXNoIGFsbCBwcm9kdWN0IGluIGRhdGFMYXllcgogICAgYXhQcm9kdWN0TGlzdC5wdXNoKHsKICAgICAgaXRlbV9uYW1lOiAnMlggREFJTFkrQVNDSVVHQU1BTk8nLAogICAgICBpdGVtX2lkOiAnSVRBX1BSREUwMDAzNjA5OFcnLAogICAgICBwcmljZTogJ+KCrDE4LDUwJywKICAgICAgaXRlbV9icmFuZDogJ1N0YW5ob21lJywKICAgICAgaXRlbV9jYXRlZ29yeTE6ICdTdGFuaG9tZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkyOiAnQ3VyYSBkZWwgYnVjYXRvJywKICAgICAgaXRlbV9jYXRlZ29yeTM6ICcnLAogICAgICBpdGVtX3ZhcmlhbnQ6ICdEZWZhdWx0IFRpdGxlJywKICAgICAgaXRlbV9saXN0X25hbWU6IGxpc3ROYW1lCiAgICB9KTsKCiAgICAvLyBTZW5kICJmaW5pc2hlZCIgZXZlbnQKICAgIGlmIChheFByb2R1Y3RMaXN0Lmxlbmd0aCA9PT0gd2luZG93LnRoZW1lLml0ZW1zX2NvdW50KSB7CiAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfbGlzdF9jb21wbGV0ZScsCiAgICAgICAgYXhQcm9kdWN0TGlzdDogYXhQcm9kdWN0TGlzdCwKICAgICAgfSk7CiAgICB9CiAgfSk7CgogIGZ1bmN0aW9uIGNsaWNrUHJvZHVjdChwcm9kdWN0RGF0YSkge30KPC9zY3JpcHQ+CgoKPHNjcmlwdCBkZWZlcj4KICBmdW5jdGlvbiBzd3ltQ2FsbGJhY2tGbihzd2F0KSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzd3ltOmNvbGxlY3Rpb25zLWxvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgc3dhdC5pbml0aWFsaXplQWN0aW9uQnV0dG9ucygnPDxDb2xsZWN0aW9ucyBHcmlkIFBBUkVOVCBTZWxlY3RvciA+PicpOwogICAgfSk7CiAgfQogIGlmICghd2luZG93LlN3eW1DYWxsYmFja3MpIHsKICAgIHdpbmRvdy5Td3ltQ2FsbGJhY2tzID0gW107CiAgfQogIHdpbmRvdy5Td3ltQ2FsbGJhY2tzLnB1c2goc3d5bUNhbGxiYWNrRm4pOwo8L3NjcmlwdD4KCgogICAgCiAgICAKICAgIDxkaXYgY2xhc3M9ImNhcmQtd3JhcHBlciBwcm9kdWN0LW1pbmlhdHVyZSBwcm9kdWN0LWNhcmQtd3JhcHBlciB1bmRlcmxpbmUtbGlua3MtaG92ZXIgZ3RtLWNhcmQtcHJvZHVjdCBndG0tY2FyZC1wcm9kdWN0LTJ4LWRhaWx5LWFzY2l1Z2FtYW5vLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiIiBndG0tY2FyZC1kYXRhPScKICAgICAgICB7CiAgICAgICAgICAgICJpdGVtX25hbWUiOiAiMlggREFJTFkrQVNDSVVHQU1BTk8iLAogICAgICAgICAgICAiaXRlbV9pZCI6ICJJVEFfUFJERTAwMDM2MDk4VyIsCiAgICAgICAgICAgICJwcmljZSI6ICLigqwxOCw1MCIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIlN0YW5ob21lIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIiIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MiI6ICJsYXVuZHJ5LWFuZC1saW5lbi1jYXJlIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkzIjogbnVsbCwKICAgICAgICAgICAgIml0ZW1fdmFyaWFudCI6ICJEZWZhdWx0IFRpdGxlIgogICAgICAgIH0KICAgICc+CiAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9IgogICAgICAgIGNhcmQgY2FyZC0tc3RhbmRhcmQKICAgICAgICAgY2FyZC0tbWVkaWEKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIgogICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNhcmRfX2lubmVyIGNvbG9yLWJhY2tncm91bmQtMSBncmFkaWVudCByYXRpbyIKICAgICAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICAgICAgPjxkaXYgY2xhc3M9ImNhcmRfX21lZGlhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEgbWVkaWEtLXRyYW5zcGFyZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY3NldD0iLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYwOThfODZjZDJhNDQtYzFhYy00ZmMwLThjNzctNTUyYjZjZDZkMGY2LmpwZz92PTE3MzAzODE1Mjcmd2lkdGg9MTY1IDE2NXcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYwOThfODZjZDJhNDQtYzFhYy00ZmMwLThjNzctNTUyYjZjZDZkMGY2LmpwZz92PTE3MzAzODE1Mjcmd2lkdGg9MzYwIDM2MHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYwOThfODZjZDJhNDQtYzFhYy00ZmMwLThjNzctNTUyYjZjZDZkMGY2LmpwZz92PTE3MzAzODE1Mjcmd2lkdGg9NTMzIDUzM3csLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYwOThfODZjZDJhNDQtYzFhYy00ZmMwLThjNzctNTUyYjZjZDZkMGY2LmpwZz92PTE3MzAzODE1Mjcmd2lkdGg9NzIwIDcyMHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYwOThfODZjZDJhNDQtYzFhYy00ZmMwLThjNzctNTUyYjZjZDZkMGY2LmpwZz92PTE3MzAzODE1Mjcmd2lkdGg9OTQwIDk0MHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYwOThfODZjZDJhNDQtYzFhYy00ZmMwLThjNzctNTUyYjZjZDZkMGY2LmpwZz92PTE3MzAzODE1Mjcmd2lkdGg9MTA2NiAxMDY2dywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjA5OF84NmNkMmE0NC1jMWFjLTRmYzAtOGM3Ny01NTJiNmNkNmQwZjYuanBnP3Y9MTczMDM4MTUyNyAxMjAwdwogICAgICAgICAgICAgICAgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9Ii8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MDk4Xzg2Y2QyYTQ0LWMxYWMtNGZjMC04Yzc3LTU1MmI2Y2Q2ZDBmNi5qcGc/dj0xNzMwMzgxNTI3JndpZHRoPTUzMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9IihtaW4td2lkdGg6IDE2MDBweCkgMzY3cHgsIChtaW4td2lkdGg6IDk5MHB4KSBjYWxjKCgxMDB2dyAtIDEzMHB4KSAvIDQpLCAobWluLXdpZHRoOiA3NTBweCkgY2FsYygoMTAwdncgLSAxMjBweCkgLyAzKSwgY2FsYygoMTAwdncgLSAzNXB4KSAvIDIpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9IjJYIERBSUxZK0FTQ0lVR0FNQU5PIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0Xzk4MTkwOTc5NTY2ODUiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iOTgxOTA5Nzk1NjY4NSIgZGF0YS12YXJpYW50LWlkPSI1MDQ2NDU5MTkwNTEwMSIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuaXQvcHJvZHVjdHMvMngtZGFpbHktYXNjaXVnYW1hbm8iPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19iYWRnZSB0b3AgbGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPjxkaXYgY2xhc3M9ImNhcmRfX3R5cGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhbmhvbWUKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHAgY2xhc3M9ImNhcmRfX2hlYWRpbmcgaDUiICBpZD0idGl0bGUtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5Nzk1NjY4NSIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvMngtZGFpbHktYXNjaXVnYW1hbm8iIGlkPSJDYXJkTGluay10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi05ODE5MDk3OTU2Njg1IiBjbGFzcz0iZnVsbC11bnN0eWxlZC1saW5rIGZ1bGwtdW5zdHlsZWQtbGluay1wcm9kdWN0IiBhcmlhLWxhYmVsbGVkYnk9IkNhcmRMaW5rLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTk4MTkwOTc5NTY2ODUgQmFkZ2UtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5Nzk1NjY4NSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgTmF0YWxlIGNvbiAyIERhaWx5IFdhc2ggZSBzaW1wYXRpY28gYXNjaXVnYW1hbm8gZWxmbyAKICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgMlggREFJTFkrQVNDSVVHQU1BTk8KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWluZm9ybWF0aW9uIj48c3BhbiBjbGFzcz0iY2FwdGlvbi1sYXJnZSBsaWdodCI+PC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24tZm9ybS1yYXRpbmctcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nLXByaWNlIj4KPGRpdgogIGNsYXNzPSIKICAgIHByaWNlICIKPgogIDxkaXYgY2xhc3M9InByaWNlX19jb250YWluZXIiPjxkaXYgY2xhc3M9InByaWNlX19yZWd1bGFyIj48c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gZGkgbGlzdGlubzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgIOKCrDE4LDUwCiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2VfX3NhbGUiPgogICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIHNjb250YXRvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1zYWxlIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIOKCrDE4LDUwCiAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gZGkgbGlzdGlubzwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxzIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICA8L3M+CiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPHNtYWxsIGNsYXNzPSJ1bml0LXByaWNlIGNhcHRpb24gaGlkZGVuIj4KICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+UHJlenpvIHVuaXRhcmlvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cGVyJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjxhIGhyZWY9Ii9wcm9kdWN0cy8yeC1kYWlseS1hc2NpdWdhbWFubyIgY2xhc3M9InF1aWNrLWFkZCBxdWljay1hZGQtZXllIHF1aWNrLWFkZC1tb2JpbGUgZXh0cmEtbGFyZ2UtdXAtaGlkZSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iaWNvbiBpY29uLWV5ZSIgd2lkdGg9IjI0Ljc2NCIgaGVpZ2h0PSIxMy4zMTgiPgogIDxnIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iLjciIGNsaXAtcGF0aD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIj4KICA8cGF0aCBkPSJNMTAuNDguNDRoLjAzN2ExMS45ODMgMTEuOTgzIDAgMCAxIDUuNjQxIDEuNDI0QTEyLjI1MyAxMi4yNTMgMCAwIDEgMTguNSAzLjQ5N2ExMi40NTcgMTIuNDU3IDAgMCAxIDEuNzM0IDEuODk0IDEyLjQyMiAxMi40MjIgMCAwIDEtMS43MjggMi4xMDYgMTIuMDc3IDEyLjA3NyAwIDAgMS0yLjM3OSAxLjgxIDExLjY3NiAxMS42NzYgMCAwIDEtMi43NzEgMS4xNjEgMTEuNiAxMS42IDAgMCAxLTMuMDYzLjQxaC0uMDM5YTExLjYxMyAxMS42MTMgMCAwIDEtMi45NzYtLjQgMTEuNjYzIDExLjY2MyAwIDAgMS0yLjctMS4xMDYgMTIuMDQ3IDEyLjA0NyAwIDAgMS0yLjMzNS0xLjcxNyAxMi40IDEyLjQgMCAwIDEtMS43MTItMiAxMi40NjQgMTIuNDY0IDAgMCAxIDEuNzUzLTIgMTIuMjcxIDEyLjI3MSAwIDAgMSAyLjM4OC0xLjcyMyAxMS45ODIgMTEuOTgyIDAgMCAxIDUuOC0xLjQ5M1ptMC0uNDRBMTIuNTg3IDEyLjU4NyAwIDAgMCAwIDUuNjU1YTEyLjMgMTIuMyAwIDAgMCAxMC4yNTMgNS42NjNoLjA0YTEyLjMyNCAxMi4zMjQgMCAwIDAgMTAuNDcxLTUuOTQyQTEyLjU3NSAxMi41NzUgMCAwIDAgMTAuNTE4LS4wMDNoLS4wNDEiLz4KICA8cGF0aCBkPSJNMTAuMzgyLjczNGE0Ljc0MSA0Ljc0MSAwIDAgMSAyLjcuODM5IDQuODg5IDQuODg5IDAgMCAxIC43MTUuNiA0Ljk1IDQuOTUgMCAwIDEgMS4zMTkgMi40OTMgNS4wOCA1LjA4IDAgMCAxIDAgMS45OTEgNC45NDggNC45NDggMCAwIDEtMS4zMTkgMi40OTMgNC44ODkgNC44ODkgMCAwIDEtLjcxNS42IDQuOCA0LjggMCAwIDEtLjgyLjQ1MyA0Ljc0OSA0Ljc0OSAwIDAgMS0zLjc1MyAwIDQuOCA0LjggMCAwIDEtLjgyLS40NTMgNC45MTUgNC45MTUgMCAwIDEtMS4zMDYtMS4zMzEgNC45NDkgNC45NDkgMCAwIDEtLjcyOC0xLjc2MyA1LjA4IDUuMDggMCAwIDEgMC0xLjk5MSA0Ljk0NCA0Ljk0NCAwIDAgMSAxLjMxOS0yLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LS42IDQuOCA0LjggMCAwIDEgLjgyLS40NTMgNC43MyA0LjczIDAgMCAxIDEuODc3LS4zODZtMC0uNWE1LjQyOSA1LjQyOSAwIDEgMCA1LjMzIDUuNDI5IDUuMzggNS4zOCAwIDAgMC01LjMzLTUuNDI5Ii8+CiAgPHBhdGggZD0iTTEzLjA4MyA1Ljc1OWEyLjY4MyAyLjY4MyAwIDEgMS0yLjY4Mi0yLjczMiAyLjcwNyAyLjcwNyAwIDAgMSAyLjY4MiAyLjczMiIvPgogIDwvZz4KPC9zdmc+CiAgPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50LWhvdmVyIj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0Xzk4MTkwOTc5NTY2ODUiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iOTgxOTA5Nzk1NjY4NSIgZGF0YS12YXJpYW50LWlkPSI1MDQ2NDU5MTkwNTEwMSIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuaXQvcHJvZHVjdHMvMngtZGFpbHktYXNjaXVnYW1hbm8iPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IE5hdGFsZSBjb24gMiBEYWlseSBXYXNoIGUgc2ltcGF0aWNvIGFzY2l1Z2FtYW5vIGVsZm8KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDJYIERBSUxZK0FTQ0lVR0FNQU5PCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIGNhcmRfX3ZhcmlhbnQta2V5X3BvaW50cyI+PGxpPjxzcGFuPkVmZmljYWNlIHBlciBjYXBpIGJpYW5jaGkgbyBjb2xvcmF0aS48L3NwYW4+PC9saT48bGk+PHNwYW4+TGFzY2lhIHVuYSBkZWxpY2F0YSBmcmFncmFuemEgZnJlc2NhIGUgZnJpenphbnRlLjwvc3Bhbj48L2xpPjxsaT48c3Bhbj5Db250aWVuZSBvbHRyZSBsJzg3JSBkJ2luZ3JlZGllbnRpIGRpIG9yaWdpbmUgbmF0dXJhbGUuPC9zcGFuPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJxdWljay1hZGQgbm8tanMtaGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy8yeC1kYWlseS1hc2NpdWdhbWFubyIgY2xhc3M9InF1aWNrLWFkZF9fbGluayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icXVpY2stYWRkX19zdWJtaXQgYnV0dG9uIGJ1dHRvbi0tZnVsbC13aWR0aCBidXR0b24tLXByaW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWRlcmUgaWwgcHJvZG90dG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pg==
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LWRhaWx5LXB1cmUtYXNjaXVnYW1hbm8tdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdEQUlMWStQVVJFK0FTQ0lVR0FNQU5PJywKICAgICAgaXRlbV9pZDogJ0lUQV9QUkRFMDAwMzYxMDBXJywKICAgICAgcHJpY2U6ICfigqwxNyw1MCcsCiAgICAgIGl0ZW1fYnJhbmQ6ICdTdGFuaG9tZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnU3RhbmhvbWUnLAogICAgICBpdGVtX2NhdGVnb3J5MjogJ0N1cmEgZGVsIGJ1Y2F0bycsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogICAgLy8gU2VuZCAiZmluaXNoZWQiIGV2ZW50CiAgICBpZiAoYXhQcm9kdWN0TGlzdC5sZW5ndGggPT09IHdpbmRvdy50aGVtZS5pdGVtc19jb3VudCkgewogICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2xpc3RfY29tcGxldGUnLAogICAgICAgIGF4UHJvZHVjdExpc3Q6IGF4UHJvZHVjdExpc3QsCiAgICAgIH0pOwogICAgfQogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgcHJvZHVjdC1taW5pYXR1cmUgcHJvZHVjdC1jYXJkLXdyYXBwZXIgdW5kZXJsaW5lLWxpbmtzLWhvdmVyIGd0bS1jYXJkLXByb2R1Y3QgZ3RtLWNhcmQtcHJvZHVjdC1kYWlseS1wdXJlLWFzY2l1Z2FtYW5vLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiIiBndG0tY2FyZC1kYXRhPScKICAgICAgICB7CiAgICAgICAgICAgICJpdGVtX25hbWUiOiAiREFJTFkrUFVSRStBU0NJVUdBTUFOTyIsCiAgICAgICAgICAgICJpdGVtX2lkIjogIklUQV9QUkRFMDAwMzYxMDBXIiwKICAgICAgICAgICAgInByaWNlIjogIuKCrDE3LDUwIiwKICAgICAgICAgICAgIml0ZW1fYnJhbmQiOiAiU3RhbmhvbWUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTEiOiAiIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkyIjogImxhdW5kcnktYW5kLWxpbmVuLWNhcmUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTMiOiBudWxsLAogICAgICAgICAgICAiaXRlbV92YXJpYW50IjogIkRlZmF1bHQgVGl0bGUiCiAgICAgICAgfQogICAgJz4KICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0iCiAgICAgICAgY2FyZCBjYXJkLS1zdGFuZGFyZAogICAgICAgICBjYXJkLS1tZWRpYQogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAiCiAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICA+CiAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iY2FyZF9faW5uZXIgY29sb3ItYmFja2dyb3VuZC0xIGdyYWRpZW50IHJhdGlvIgogICAgICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgICAgICA+PGRpdiBjbGFzcz0iY2FyZF9fbWVkaWEiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYSBtZWRpYS0tdHJhbnNwYXJlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Jjc2V0PSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwMF8xMjVkYWFmOS1kOTY3LTQ0ZTEtYTQ4Yy04NGJkNzkxOTQyNzIuanBnP3Y9MTczMDM4MTU2MSZ3aWR0aD0xNjUgMTY1dywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwMF8xMjVkYWFmOS1kOTY3LTQ0ZTEtYTQ4Yy04NGJkNzkxOTQyNzIuanBnP3Y9MTczMDM4MTU2MSZ3aWR0aD0zNjAgMzYwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwMF8xMjVkYWFmOS1kOTY3LTQ0ZTEtYTQ4Yy04NGJkNzkxOTQyNzIuanBnP3Y9MTczMDM4MTU2MSZ3aWR0aD01MzMgNTMzdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwMF8xMjVkYWFmOS1kOTY3LTQ0ZTEtYTQ4Yy04NGJkNzkxOTQyNzIuanBnP3Y9MTczMDM4MTU2MSZ3aWR0aD03MjAgNzIwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwMF8xMjVkYWFmOS1kOTY3LTQ0ZTEtYTQ4Yy04NGJkNzkxOTQyNzIuanBnP3Y9MTczMDM4MTU2MSZ3aWR0aD05NDAgOTQwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwMF8xMjVkYWFmOS1kOTY3LTQ0ZTEtYTQ4Yy04NGJkNzkxOTQyNzIuanBnP3Y9MTczMDM4MTU2MSZ3aWR0aD0xMDY2IDEwNjZ3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAwXzEyNWRhYWY5LWQ5NjctNDRlMS1hNDhjLTg0YmQ3OTE5NDI3Mi5qcGc/dj0xNzMwMzgxNTYxIDEyMDB3CiAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0iLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYxMDBfMTI1ZGFhZjktZDk2Ny00NGUxLWE0OGMtODRiZDc5MTk0MjcyLmpwZz92PTE3MzAzODE1NjEmd2lkdGg9NTMzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz0iKG1pbi13aWR0aDogMTYwMHB4KSAzNjdweCwgKG1pbi13aWR0aDogOTkwcHgpIGNhbGMoKDEwMHZ3IC0gMTMwcHgpIC8gNCksIChtaW4td2lkdGg6IDc1MHB4KSBjYWxjKCgxMDB2dyAtIDEyMHB4KSAvIDMpLCBjYWxjKCgxMDB2dyAtIDM1cHgpIC8gMikiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD0iREFJTFkrUFVSRStBU0NJVUdBTUFOTyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im1vdGlvbi1yZWR1Y2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF85ODE5MDk4MDIyMjIxIiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9Ijk4MTkwOTgwMjIyMjEiIGRhdGEtdmFyaWFudC1pZD0iNTA0NjQ1OTE5NzA2MzciIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzL2RhaWx5LXB1cmUtYXNjaXVnYW1hbm8iPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19iYWRnZSB0b3AgbGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPjxkaXYgY2xhc3M9ImNhcmRfX3R5cGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhbmhvbWUKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHAgY2xhc3M9ImNhcmRfX2hlYWRpbmcgaDUiICBpZD0idGl0bGUtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5ODAyMjIyMSIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvZGFpbHktcHVyZS1hc2NpdWdhbWFubyIgaWQ9IkNhcmRMaW5rLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTk4MTkwOTgwMjIyMjEiIGNsYXNzPSJmdWxsLXVuc3R5bGVkLWxpbmsgZnVsbC11bnN0eWxlZC1saW5rLXByb2R1Y3QiIGFyaWEtbGFiZWxsZWRieT0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5ODAyMjIyMSBCYWRnZS10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi05ODE5MDk4MDIyMjIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCBOYXRhbGUgY29uIERhaWx5IFdhc2gsIFB1cmUgU29mdCBlIHNpbXBhdGljbyBhc2NpdWdhbWFubyBlbGZvIAogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBEQUlMWStQVVJFK0FTQ0lVR0FNQU5PCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbmZvcm1hdGlvbiI+PHNwYW4gY2xhc3M9ImNhcHRpb24tbGFyZ2UgbGlnaHQiPjwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uLWZvcm0tcmF0aW5nLXByaWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGluZy1wcmljZSI+CjxkaXYKICBjbGFzcz0iCiAgICBwcmljZSAiCj4KICA8ZGl2IGNsYXNzPSJwcmljZV9fY29udGFpbmVyIj48ZGl2IGNsYXNzPSJwcmljZV9fcmVndWxhciI+PHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIGRpIGxpc3Rpbm88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICDigqwxNyw1MAogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InByaWNlX19zYWxlIj4KICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBzY29udGF0bzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICDigqwxNyw1MAogICAgICA8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIGRpIGxpc3Rpbm88L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgPC9zPgogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxzbWFsbCBjbGFzcz0idW5pdC1wcmljZSBjYXB0aW9uIGhpZGRlbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPlByZXp6byB1bml0YXJpbzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAgPHNwYW4+PC9zcGFuPgogICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPiZuYnNwO3BlciZuYnNwOzwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvc3Bhbj4KICAgIDwvc21hbGw+CiAgPC9kaXY+PC9kaXY+Cgo8L2Rpdj48YSBocmVmPSIvcHJvZHVjdHMvZGFpbHktcHVyZS1hc2NpdWdhbWFubyIgY2xhc3M9InF1aWNrLWFkZCBxdWljay1hZGQtZXllIHF1aWNrLWFkZC1tb2JpbGUgZXh0cmEtbGFyZ2UtdXAtaGlkZSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iaWNvbiBpY29uLWV5ZSIgd2lkdGg9IjI0Ljc2NCIgaGVpZ2h0PSIxMy4zMTgiPgogIDxnIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iLjciIGNsaXAtcGF0aD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIj4KICA8cGF0aCBkPSJNMTAuNDguNDRoLjAzN2ExMS45ODMgMTEuOTgzIDAgMCAxIDUuNjQxIDEuNDI0QTEyLjI1MyAxMi4yNTMgMCAwIDEgMTguNSAzLjQ5N2ExMi40NTcgMTIuNDU3IDAgMCAxIDEuNzM0IDEuODk0IDEyLjQyMiAxMi40MjIgMCAwIDEtMS43MjggMi4xMDYgMTIuMDc3IDEyLjA3NyAwIDAgMS0yLjM3OSAxLjgxIDExLjY3NiAxMS42NzYgMCAwIDEtMi43NzEgMS4xNjEgMTEuNiAxMS42IDAgMCAxLTMuMDYzLjQxaC0uMDM5YTExLjYxMyAxMS42MTMgMCAwIDEtMi45NzYtLjQgMTEuNjYzIDExLjY2MyAwIDAgMS0yLjctMS4xMDYgMTIuMDQ3IDEyLjA0NyAwIDAgMS0yLjMzNS0xLjcxNyAxMi40IDEyLjQgMCAwIDEtMS43MTItMiAxMi40NjQgMTIuNDY0IDAgMCAxIDEuNzUzLTIgMTIuMjcxIDEyLjI3MSAwIDAgMSAyLjM4OC0xLjcyMyAxMS45ODIgMTEuOTgyIDAgMCAxIDUuOC0xLjQ5M1ptMC0uNDRBMTIuNTg3IDEyLjU4NyAwIDAgMCAwIDUuNjU1YTEyLjMgMTIuMyAwIDAgMCAxMC4yNTMgNS42NjNoLjA0YTEyLjMyNCAxMi4zMjQgMCAwIDAgMTAuNDcxLTUuOTQyQTEyLjU3NSAxMi41NzUgMCAwIDAgMTAuNTE4LS4wMDNoLS4wNDEiLz4KICA8cGF0aCBkPSJNMTAuMzgyLjczNGE0Ljc0MSA0Ljc0MSAwIDAgMSAyLjcuODM5IDQuODg5IDQuODg5IDAgMCAxIC43MTUuNiA0Ljk1IDQuOTUgMCAwIDEgMS4zMTkgMi40OTMgNS4wOCA1LjA4IDAgMCAxIDAgMS45OTEgNC45NDggNC45NDggMCAwIDEtMS4zMTkgMi40OTMgNC44ODkgNC44ODkgMCAwIDEtLjcxNS42IDQuOCA0LjggMCAwIDEtLjgyLjQ1MyA0Ljc0OSA0Ljc0OSAwIDAgMS0zLjc1MyAwIDQuOCA0LjggMCAwIDEtLjgyLS40NTMgNC45MTUgNC45MTUgMCAwIDEtMS4zMDYtMS4zMzEgNC45NDkgNC45NDkgMCAwIDEtLjcyOC0xLjc2MyA1LjA4IDUuMDggMCAwIDEgMC0xLjk5MSA0Ljk0NCA0Ljk0NCAwIDAgMSAxLjMxOS0yLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LS42IDQuOCA0LjggMCAwIDEgLjgyLS40NTMgNC43MyA0LjczIDAgMCAxIDEuODc3LS4zODZtMC0uNWE1LjQyOSA1LjQyOSAwIDEgMCA1LjMzIDUuNDI5IDUuMzggNS4zOCAwIDAgMC01LjMzLTUuNDI5Ii8+CiAgPHBhdGggZD0iTTEzLjA4MyA1Ljc1OWEyLjY4MyAyLjY4MyAwIDEgMS0yLjY4Mi0yLjczMiAyLjcwNyAyLjcwNyAwIDAgMSAyLjY4MiAyLjczMiIvPgogIDwvZz4KPC9zdmc+CiAgPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50LWhvdmVyIj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0Xzk4MTkwOTgwMjIyMjEiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iOTgxOTA5ODAyMjIyMSIgZGF0YS12YXJpYW50LWlkPSI1MDQ2NDU5MTk3MDYzNyIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuaXQvcHJvZHVjdHMvZGFpbHktcHVyZS1hc2NpdWdhbWFubyI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgTmF0YWxlIGNvbiBEYWlseSBXYXNoLCBQdXJlIFNvZnQgZSBzaW1wYXRpY28gYXNjaXVnYW1hbm8gZWxmbwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgREFJTFkrUFVSRStBU0NJVUdBTUFOTwogICAgICAgICAgICAgICAgICAgIDwvZGl2Pjx1bCBjbGFzcz0ibGlzdC11bnN0eWxlZCBjYXJkX192YXJpYW50LWtleV9wb2ludHMiPjxsaT48c3Bhbj5EZXRlcnNpdm8gZWZmaWNhY2UgcGVyIGNhcGkgYmlhbmNoaSBvIGNvbG9yYXRpLjwvc3Bhbj48L2xpPjxsaT48c3Bhbj5BbW1vcmJpZGlzY2kgZSBwcm90ZWdnaSBpbCBidWNhdG8gZ3JhemllIGFsbGEgZm9ybXVsYSBjb25jZW50cmF0YSBkaSBQdXJlIFNvZnQuPC9zcGFuPjwvbGk+PGxpPjxzcGFuPkJ1Y2F0byBmcmVzY28gZSBwcm9mdW1hdG8uU2ltcGF0aWNvIGFzY2l1Z2FtYW5vIGVsZm8uPC9zcGFuPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJxdWljay1hZGQgbm8tanMtaGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9kYWlseS1wdXJlLWFzY2l1Z2FtYW5vIiBjbGFzcz0icXVpY2stYWRkX19saW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hZGRfX3N1Ym1pdCBidXR0b24gYnV0dG9uLS1mdWxsLXdpZHRoIGJ1dHRvbi0tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlZGVyZSBpbCBwcm9kb3R0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LWRhaWx5LWRlZ3JlYXNlci1zdGFud2ljay1ib3JzYS10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYicpOwogICAgcHJvZHVjdENhcmRzLmZvckVhY2goZnVuY3Rpb24gKGNhcmQpIHsKICAgICAgaWYgKGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKSAhPT0gbnVsbCkgewogICAgICAgIGxpc3ROYW1lID0gY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpLmdldEF0dHJpYnV0ZSgnZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpOwogICAgICB9CiAgICAgIGNhcmQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICB2YXIgcHJvZHVjdERhdGEgPSBKU09OLnBhcnNlKGNhcmQuZ2V0QXR0cmlidXRlKCdndG0tY2FyZC1kYXRhJykpOwogICAgICAgIC8vIE5lZWQgdG8gcHVzaCBsaXN0TmFtZQogICAgICAgIHByb2R1Y3REYXRhWydpdGVtX2xpc3RfbmFtZSddID0gbGlzdE5hbWU7CiAgICAgICAgLy8gUHVzaCBjbGlja2VkIHByb2R1Y3QKICAgICAgICBheEl0ZW0ucHVzaChwcm9kdWN0RGF0YSk7CiAgICAgICAgLy8gU2VuZCAiY2xpY2siIGV2ZW50CiAgICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2NsaWNrJywKICAgICAgICAgIGF4SXRlbTogYXhJdGVtCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSk7CgogICAgLy8gUHVzaCBhbGwgcHJvZHVjdCBpbiBkYXRhTGF5ZXIKICAgIGF4UHJvZHVjdExpc3QucHVzaCh7CiAgICAgIGl0ZW1fbmFtZTogJ0RBSUxZK0RFR1JFQVNFUitTVEFOV0lDSytCT1JTQScsCiAgICAgIGl0ZW1faWQ6ICdJVEFfUFJERTAwMDM2MTAxVycsCiAgICAgIHByaWNlOiAn4oKsMjQsOTAnLAogICAgICBpdGVtX2JyYW5kOiAnU3RhbmhvbWUnLAogICAgICBpdGVtX2NhdGVnb3J5MTogJ1N0YW5ob21lJywKICAgICAgaXRlbV9jYXRlZ29yeTI6ICdDdXJhIGRlbCBidWNhdG8nLAogICAgICBpdGVtX2NhdGVnb3J5MzogJycsCiAgICAgIGl0ZW1fdmFyaWFudDogJ0RlZmF1bHQgVGl0bGUnLAogICAgICBpdGVtX2xpc3RfbmFtZTogbGlzdE5hbWUKICAgIH0pOwoKICAgIC8vIFNlbmQgImZpbmlzaGVkIiBldmVudAogICAgaWYgKGF4UHJvZHVjdExpc3QubGVuZ3RoID09PSB3aW5kb3cudGhlbWUuaXRlbXNfY291bnQpIHsKICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9saXN0X2NvbXBsZXRlJywKICAgICAgICBheFByb2R1Y3RMaXN0OiBheFByb2R1Y3RMaXN0LAogICAgICB9KTsKICAgIH0KICB9KTsKCiAgZnVuY3Rpb24gY2xpY2tQcm9kdWN0KHByb2R1Y3REYXRhKSB7fQo8L3NjcmlwdD4KCgo8c2NyaXB0IGRlZmVyPgogIGZ1bmN0aW9uIHN3eW1DYWxsYmFja0ZuKHN3YXQpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N3eW06Y29sbGVjdGlvbnMtbG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgICBzd2F0LmluaXRpYWxpemVBY3Rpb25CdXR0b25zKCc8PENvbGxlY3Rpb25zIEdyaWQgUEFSRU5UIFNlbGVjdG9yID4+Jyk7CiAgICB9KTsKICB9CiAgaWYgKCF3aW5kb3cuU3d5bUNhbGxiYWNrcykgewogICAgd2luZG93LlN3eW1DYWxsYmFja3MgPSBbXTsKICB9CiAgd2luZG93LlN3eW1DYWxsYmFja3MucHVzaChzd3ltQ2FsbGJhY2tGbik7Cjwvc2NyaXB0PgoKCiAgICAKICAgIAogICAgPGRpdiBjbGFzcz0iY2FyZC13cmFwcGVyIHByb2R1Y3QtbWluaWF0dXJlIHByb2R1Y3QtY2FyZC13cmFwcGVyIHVuZGVybGluZS1saW5rcy1ob3ZlciBndG0tY2FyZC1wcm9kdWN0IGd0bS1jYXJkLXByb2R1Y3QtZGFpbHktZGVncmVhc2VyLXN0YW53aWNrLWJvcnNhLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiIiBndG0tY2FyZC1kYXRhPScKICAgICAgICB7CiAgICAgICAgICAgICJpdGVtX25hbWUiOiAiREFJTFkrREVHUkVBU0VSK1NUQU5XSUNLK0JPUlNBIiwKICAgICAgICAgICAgIml0ZW1faWQiOiAiSVRBX1BSREUwMDAzNjEwMVciLAogICAgICAgICAgICAicHJpY2UiOiAi4oKsMjQsOTAiLAogICAgICAgICAgICAiaXRlbV9icmFuZCI6ICJTdGFuaG9tZSIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MSI6ICIiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAibGF1bmRyeS1hbmQtbGluZW4tY2FyZSIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAxXzZkZDdmM2E5LWYzMTktNGM2Ni1hMjQ1LTIxMGM5YzZjNDNlOC5qcGc/dj0xNzMwMzc2ODI1JndpZHRoPTE2NSAxNjV3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAxXzZkZDdmM2E5LWYzMTktNGM2Ni1hMjQ1LTIxMGM5YzZjNDNlOC5qcGc/dj0xNzMwMzc2ODI1JndpZHRoPTM2MCAzNjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAxXzZkZDdmM2E5LWYzMTktNGM2Ni1hMjQ1LTIxMGM5YzZjNDNlOC5qcGc/dj0xNzMwMzc2ODI1JndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAxXzZkZDdmM2E5LWYzMTktNGM2Ni1hMjQ1LTIxMGM5YzZjNDNlOC5qcGc/dj0xNzMwMzc2ODI1JndpZHRoPTcyMCA3MjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAxXzZkZDdmM2E5LWYzMTktNGM2Ni1hMjQ1LTIxMGM5YzZjNDNlOC5qcGc/dj0xNzMwMzc2ODI1JndpZHRoPTk0MCA5NDB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAxXzZkZDdmM2E5LWYzMTktNGM2Ni1hMjQ1LTIxMGM5YzZjNDNlOC5qcGc/dj0xNzMwMzc2ODI1JndpZHRoPTEwNjYgMTA2NncsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYxMDFfNmRkN2YzYTktZjMxOS00YzY2LWEyNDUtMjEwYzljNmM0M2U4LmpwZz92PTE3MzAzNzY4MjUgMTIwMHcKICAgICAgICAgICAgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwMV82ZGQ3ZjNhOS1mMzE5LTRjNjYtYTI0NS0yMTBjOWM2YzQzZTguanBnP3Y9MTczMDM3NjgyNSZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSJEQUlMWStERUdSRUFTRVIrU1RBTldJQ0srQk9SU0EiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJtb3Rpb24tcmVkdWNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfOTgxOTA5ODA1NDk4OSIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSI5ODE5MDk4MDU0OTg5IiBkYXRhLXZhcmlhbnQtaWQ9IjUwNDY0NTkyMDAzNDA1IiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5pdC9wcm9kdWN0cy9kYWlseS1kZWdyZWFzZXItc3RhbndpY2stYm9yc2EiPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19iYWRnZSB0b3AgbGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPjxkaXYgY2xhc3M9ImNhcmRfX3R5cGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhbmhvbWUKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHAgY2xhc3M9ImNhcmRfX2hlYWRpbmcgaDUiICBpZD0idGl0bGUtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5ODA1NDk4OSIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvZGFpbHktZGVncmVhc2VyLXN0YW53aWNrLWJvcnNhIiBpZD0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5ODA1NDk4OSIgY2xhc3M9ImZ1bGwtdW5zdHlsZWQtbGluayBmdWxsLXVuc3R5bGVkLWxpbmstcHJvZHVjdCIgYXJpYS1sYWJlbGxlZGJ5PSJDYXJkTGluay10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi05ODE5MDk4MDU0OTg5IEJhZGdlLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTk4MTkwOTgwNTQ5ODkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VwZXIgU2V0IE5hdGFsZSBjb24gRGVncmVhc2VyLCBEYWlseSBXYXNoLCBTdGFuLVdpY2sgZSBCb3JzYSBSb3NzYSBOYXRhbGl6aWEgCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIERBSUxZK0RFR1JFQVNFUitTVEFOV0lDSytCT1JTQQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBkaSBsaXN0aW5vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAg4oKsMjQsOTAKICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZV9fc2FsZSI+CiAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gc2NvbnRhdG88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXNhbGUgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAg4oKsMjQsOTAKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBkaSBsaXN0aW5vPC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgICAgPHMgY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgIDwvcz4KICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8c21hbGwgY2xhc3M9InVuaXQtcHJpY2UgY2FwdGlvbiBoaWRkZW4iPgogICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5QcmV6em8gdW5pdGFyaW88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDxzcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Lzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4mbmJzcDtwZXImbmJzcDs8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3NtYWxsPgogIDwvZGl2PjwvZGl2PgoKPC9kaXY+PGEgaHJlZj0iL3Byb2R1Y3RzL2RhaWx5LWRlZ3JlYXNlci1zdGFud2ljay1ib3JzYSIgY2xhc3M9InF1aWNrLWFkZCBxdWljay1hZGQtZXllIHF1aWNrLWFkZC1tb2JpbGUgZXh0cmEtbGFyZ2UtdXAtaGlkZSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iaWNvbiBpY29uLWV5ZSIgd2lkdGg9IjI0Ljc2NCIgaGVpZ2h0PSIxMy4zMTgiPgogIDxnIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iLjciIGNsaXAtcGF0aD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIj4KICA8cGF0aCBkPSJNMTAuNDguNDRoLjAzN2ExMS45ODMgMTEuOTgzIDAgMCAxIDUuNjQxIDEuNDI0QTEyLjI1MyAxMi4yNTMgMCAwIDEgMTguNSAzLjQ5N2ExMi40NTcgMTIuNDU3IDAgMCAxIDEuNzM0IDEuODk0IDEyLjQyMiAxMi40MjIgMCAwIDEtMS43MjggMi4xMDYgMTIuMDc3IDEyLjA3NyAwIDAgMS0yLjM3OSAxLjgxIDExLjY3NiAxMS42NzYgMCAwIDEtMi43NzEgMS4xNjEgMTEuNiAxMS42IDAgMCAxLTMuMDYzLjQxaC0uMDM5YTExLjYxMyAxMS42MTMgMCAwIDEtMi45NzYtLjQgMTEuNjYzIDExLjY2MyAwIDAgMS0yLjctMS4xMDYgMTIuMDQ3IDEyLjA0NyAwIDAgMS0yLjMzNS0xLjcxNyAxMi40IDEyLjQgMCAwIDEtMS43MTItMiAxMi40NjQgMTIuNDY0IDAgMCAxIDEuNzUzLTIgMTIuMjcxIDEyLjI3MSAwIDAgMSAyLjM4OC0xLjcyMyAxMS45ODIgMTEuOTgyIDAgMCAxIDUuOC0xLjQ5M1ptMC0uNDRBMTIuNTg3IDEyLjU4NyAwIDAgMCAwIDUuNjU1YTEyLjMgMTIuMyAwIDAgMCAxMC4yNTMgNS42NjNoLjA0YTEyLjMyNCAxMi4zMjQgMCAwIDAgMTAuNDcxLTUuOTQyQTEyLjU3NSAxMi41NzUgMCAwIDAgMTAuNTE4LS4wMDNoLS4wNDEiLz4KICA8cGF0aCBkPSJNMTAuMzgyLjczNGE0Ljc0MSA0Ljc0MSAwIDAgMSAyLjcuODM5IDQuODg5IDQuODg5IDAgMCAxIC43MTUuNiA0Ljk1IDQuOTUgMCAwIDEgMS4zMTkgMi40OTMgNS4wOCA1LjA4IDAgMCAxIDAgMS45OTEgNC45NDggNC45NDggMCAwIDEtMS4zMTkgMi40OTMgNC44ODkgNC44ODkgMCAwIDEtLjcxNS42IDQuOCA0LjggMCAwIDEtLjgyLjQ1MyA0Ljc0OSA0Ljc0OSAwIDAgMS0zLjc1MyAwIDQuOCA0LjggMCAwIDEtLjgyLS40NTMgNC45MTUgNC45MTUgMCAwIDEtMS4zMDYtMS4zMzEgNC45NDkgNC45NDkgMCAwIDEtLjcyOC0xLjc2MyA1LjA4IDUuMDggMCAwIDEgMC0xLjk5MSA0Ljk0NCA0Ljk0NCAwIDAgMSAxLjMxOS0yLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LS42IDQuOCA0LjggMCAwIDEgLjgyLS40NTMgNC43MyA0LjczIDAgMCAxIDEuODc3LS4zODZtMC0uNWE1LjQyOSA1LjQyOSAwIDEgMCA1LjMzIDUuNDI5IDUuMzggNS4zOCAwIDAgMC01LjMzLTUuNDI5Ii8+CiAgPHBhdGggZD0iTTEzLjA4MyA1Ljc1OWEyLjY4MyAyLjY4MyAwIDEgMS0yLjY4Mi0yLjczMiAyLjcwNyAyLjcwNyAwIDAgMSAyLjY4MiAyLjczMiIvPgogIDwvZz4KPC9zdmc+CiAgPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50LWhvdmVyIj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0Xzk4MTkwOTgwNTQ5ODkiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iOTgxOTA5ODA1NDk4OSIgZGF0YS12YXJpYW50LWlkPSI1MDQ2NDU5MjAwMzQwNSIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuaXQvcHJvZHVjdHMvZGFpbHktZGVncmVhc2VyLXN0YW53aWNrLWJvcnNhIj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2hlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1cGVyIFNldCBOYXRhbGUgY29uIERlZ3JlYXNlciwgRGFpbHkgV2FzaCwgU3Rhbi1XaWNrIGUgQm9yc2EgUm9zc2EgTmF0YWxpemlhCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBEQUlMWStERUdSRUFTRVIrU1RBTldJQ0srQk9SU0EKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+U2dyYXNzYXRvcmUgcGVyIHN0b3ZpZ2xpZSBlIHN1cGVyZmljaSBkZWxsYSBjdWNpbmEuPC9zcGFuPjwvbGk+PGxpPjxzcGFuPkRldGVyc2l2byBlZmZpY2FjZSBwZXIgY2FwaSBiaWFuY2hpIG8gY29sb3JhdGkuPC9zcGFuPjwvbGk+PGxpPjxzcGFuPkFzc29yYmUgaSBjYXR0aXZpIG9kb3JpIG5lZ2xpIGFtYmllbnRpLkJvcnNhIE5hdGFsaXppYSBzcGF6aW9zYSwgY29tb2RhIGUgZGkgdGVuZGVuemEuPC9zcGFuPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJxdWljay1hZGQgbm8tanMtaGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9kYWlseS1kZWdyZWFzZXItc3RhbndpY2stYm9yc2EiIGNsYXNzPSJxdWljay1hZGRfX2xpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InF1aWNrLWFkZF9fc3VibWl0IGJ1dHRvbiBidXR0b24tLWZ1bGwtd2lkdGggYnV0dG9uLS1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVkZXJlIGlsIHByb2RvdHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4=
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LWRlZXAtZXhwcmVzcy1zcG9uZ2UtcGxhaWQtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdERUVQK0VYUFJFU1MrU1BPTkdFK1BMQUlEJywKICAgICAgaXRlbV9pZDogJ0lUQV9QUkRFMDAwMzYxMDJXJywKICAgICAgcHJpY2U6ICfigqwyMyw5MCcsCiAgICAgIGl0ZW1fYnJhbmQ6ICdTdGFuaG9tZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnU3RhbmhvbWUnLAogICAgICBpdGVtX2NhdGVnb3J5MjogJ0N1cmEgZGVsbGEgY2FzYScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogICAgLy8gU2VuZCAiZmluaXNoZWQiIGV2ZW50CiAgICBpZiAoYXhQcm9kdWN0TGlzdC5sZW5ndGggPT09IHdpbmRvdy50aGVtZS5pdGVtc19jb3VudCkgewogICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2xpc3RfY29tcGxldGUnLAogICAgICAgIGF4UHJvZHVjdExpc3Q6IGF4UHJvZHVjdExpc3QsCiAgICAgIH0pOwogICAgfQogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgcHJvZHVjdC1taW5pYXR1cmUgcHJvZHVjdC1jYXJkLXdyYXBwZXIgdW5kZXJsaW5lLWxpbmtzLWhvdmVyIGd0bS1jYXJkLXByb2R1Y3QgZ3RtLWNhcmQtcHJvZHVjdC1kZWVwLWV4cHJlc3Mtc3BvbmdlLXBsYWlkLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiIiBndG0tY2FyZC1kYXRhPScKICAgICAgICB7CiAgICAgICAgICAgICJpdGVtX25hbWUiOiAiREVFUCtFWFBSRVNTK1NQT05HRStQTEFJRCIsCiAgICAgICAgICAgICJpdGVtX2lkIjogIklUQV9QUkRFMDAwMzYxMDJXIiwKICAgICAgICAgICAgInByaWNlIjogIuKCrDIzLDkwIiwKICAgICAgICAgICAgIml0ZW1fYnJhbmQiOiAiU3RhbmhvbWUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTEiOiAiIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkyIjogImhvdXNlaG9sZC1jbGVhbmVycyIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAyXzVkYjViN2RmLWYyYWEtNGYxYi1iZTkxLWJjYmU2MDcwNTUyOC5qcGc/dj0xNzMwMzc2ODMxJndpZHRoPTE2NSAxNjV3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAyXzVkYjViN2RmLWYyYWEtNGYxYi1iZTkxLWJjYmU2MDcwNTUyOC5qcGc/dj0xNzMwMzc2ODMxJndpZHRoPTM2MCAzNjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAyXzVkYjViN2RmLWYyYWEtNGYxYi1iZTkxLWJjYmU2MDcwNTUyOC5qcGc/dj0xNzMwMzc2ODMxJndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAyXzVkYjViN2RmLWYyYWEtNGYxYi1iZTkxLWJjYmU2MDcwNTUyOC5qcGc/dj0xNzMwMzc2ODMxJndpZHRoPTcyMCA3MjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAyXzVkYjViN2RmLWYyYWEtNGYxYi1iZTkxLWJjYmU2MDcwNTUyOC5qcGc/dj0xNzMwMzc2ODMxJndpZHRoPTk0MCA5NDB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAyXzVkYjViN2RmLWYyYWEtNGYxYi1iZTkxLWJjYmU2MDcwNTUyOC5qcGc/dj0xNzMwMzc2ODMxJndpZHRoPTEwNjYgMTA2NncsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYxMDJfNWRiNWI3ZGYtZjJhYS00ZjFiLWJlOTEtYmNiZTYwNzA1NTI4LmpwZz92PTE3MzAzNzY4MzEgMTIwMHcKICAgICAgICAgICAgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwMl81ZGI1YjdkZi1mMmFhLTRmMWItYmU5MS1iY2JlNjA3MDU1MjguanBnP3Y9MTczMDM3NjgzMSZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSJERUVQK0VYUFJFU1MrU1BPTkdFK1BMQUlEIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0Xzk4MTkwOTgwODc3NTciIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iOTgxOTA5ODA4Nzc1NyIgZGF0YS12YXJpYW50LWlkPSI1MDQ2NDU5MjAzNjE3MyIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuaXQvcHJvZHVjdHMvZGVlcC1leHByZXNzLXNwb25nZS1wbGFpZCI+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2JhZGdlIHRvcCBsZWZ0Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFuaG9tZQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi05ODE5MDk4MDg3NzU3IiA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9kZWVwLWV4cHJlc3Mtc3BvbmdlLXBsYWlkIiBpZD0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5ODA4Nzc1NyIgY2xhc3M9ImZ1bGwtdW5zdHlsZWQtbGluayBmdWxsLXVuc3R5bGVkLWxpbmstcHJvZHVjdCIgYXJpYS1sYWJlbGxlZGJ5PSJDYXJkTGluay10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi05ODE5MDk4MDg3NzU3IEJhZGdlLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTk4MTkwOTgwODc3NTciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VwZXIgU2V0IE5hdGFsZSBjb24gRGVlcCBHZWwsIEV4cHJlc3MgU2hpbmUsIEJhdGhyb29tIFNwb25nZSBlIFBsYWlkIE5hdGFsZSAKICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgREVFUCtFWFBSRVNTK1NQT05HRStQTEFJRAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBkaSBsaXN0aW5vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAg4oKsMjMsOTAKICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZV9fc2FsZSI+CiAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gc2NvbnRhdG88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXNhbGUgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAg4oKsMjMsOTAKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBkaSBsaXN0aW5vPC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgICAgPHMgY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgIDwvcz4KICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8c21hbGwgY2xhc3M9InVuaXQtcHJpY2UgY2FwdGlvbiBoaWRkZW4iPgogICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5QcmV6em8gdW5pdGFyaW88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDxzcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Lzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4mbmJzcDtwZXImbmJzcDs8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3NtYWxsPgogIDwvZGl2PjwvZGl2PgoKPC9kaXY+PGEgaHJlZj0iL3Byb2R1Y3RzL2RlZXAtZXhwcmVzcy1zcG9uZ2UtcGxhaWQiIGNsYXNzPSJxdWljay1hZGQgcXVpY2stYWRkLWV5ZSBxdWljay1hZGQtbW9iaWxlIGV4dHJhLWxhcmdlLXVwLWhpZGUiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgY2xhc3M9Imljb24gaWNvbi1leWUiIHdpZHRoPSIyNC43NjQiIGhlaWdodD0iMTMuMzE4Ij4KICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9Ii43IiBjbGlwLXBhdGg9InVybCgjcHJlZml4X19hKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSI+CiAgPHBhdGggZD0iTTEwLjQ4LjQ0aC4wMzdhMTEuOTgzIDExLjk4MyAwIDAgMSA1LjY0MSAxLjQyNEExMi4yNTMgMTIuMjUzIDAgMCAxIDE4LjUgMy40OTdhMTIuNDU3IDEyLjQ1NyAwIDAgMSAxLjczNCAxLjg5NCAxMi40MjIgMTIuNDIyIDAgMCAxLTEuNzI4IDIuMTA2IDEyLjA3NyAxMi4wNzcgMCAwIDEtMi4zNzkgMS44MSAxMS42NzYgMTEuNjc2IDAgMCAxLTIuNzcxIDEuMTYxIDExLjYgMTEuNiAwIDAgMS0zLjA2My40MWgtLjAzOWExMS42MTMgMTEuNjEzIDAgMCAxLTIuOTc2LS40IDExLjY2MyAxMS42NjMgMCAwIDEtMi43LTEuMTA2IDEyLjA0NyAxMi4wNDcgMCAwIDEtMi4zMzUtMS43MTcgMTIuNCAxMi40IDAgMCAxLTEuNzEyLTIgMTIuNDY0IDEyLjQ2NCAwIDAgMSAxLjc1My0yIDEyLjI3MSAxMi4yNzEgMCAwIDEgMi4zODgtMS43MjMgMTEuOTgyIDExLjk4MiAwIDAgMSA1LjgtMS40OTNabTAtLjQ0QTEyLjU4NyAxMi41ODcgMCAwIDAgMCA1LjY1NWExMi4zIDEyLjMgMCAwIDAgMTAuMjUzIDUuNjYzaC4wNGExMi4zMjQgMTIuMzI0IDAgMCAwIDEwLjQ3MS01Ljk0MkExMi41NzUgMTIuNTc1IDAgMCAwIDEwLjUxOC0uMDAzaC0uMDQxIi8+CiAgPHBhdGggZD0iTTEwLjM4Mi43MzRhNC43NDEgNC43NDEgMCAwIDEgMi43LjgzOSA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LjYgNC45NSA0Ljk1IDAgMCAxIDEuMzE5IDIuNDkzIDUuMDggNS4wOCAwIDAgMSAwIDEuOTkxIDQuOTQ4IDQuOTQ4IDAgMCAxLTEuMzE5IDIuNDkzIDQuODg5IDQuODg5IDAgMCAxLS43MTUuNiA0LjggNC44IDAgMCAxLS44Mi40NTMgNC43NDkgNC43NDkgMCAwIDEtMy43NTMgMCA0LjggNC44IDAgMCAxLS44Mi0uNDUzIDQuOTE1IDQuOTE1IDAgMCAxLTEuMzA2LTEuMzMxIDQuOTQ5IDQuOTQ5IDAgMCAxLS43MjgtMS43NjMgNS4wOCA1LjA4IDAgMCAxIDAtMS45OTEgNC45NDQgNC45NDQgMCAwIDEgMS4zMTktMi40OTMgNC44ODkgNC44ODkgMCAwIDEgLjcxNS0uNiA0LjggNC44IDAgMCAxIC44Mi0uNDUzIDQuNzMgNC43MyAwIDAgMSAxLjg3Ny0uMzg2bTAtLjVhNS40MjkgNS40MjkgMCAxIDAgNS4zMyA1LjQyOSA1LjM4IDUuMzggMCAwIDAtNS4zMy01LjQyOSIvPgogIDxwYXRoIGQ9Ik0xMy4wODMgNS43NTlhMi42ODMgMi42ODMgMCAxIDEtMi42ODItMi43MzIgMi43MDcgMi43MDcgMCAwIDEgMi42ODIgMi43MzIiLz4KICA8L2c+Cjwvc3ZnPgogIDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudC1ob3ZlciI+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF85ODE5MDk4MDg3NzU3IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9Ijk4MTkwOTgwODc3NTciIGRhdGEtdmFyaWFudC1pZD0iNTA0NjQ1OTIwMzYxNzMiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzL2RlZXAtZXhwcmVzcy1zcG9uZ2UtcGxhaWQiPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VwZXIgU2V0IE5hdGFsZSBjb24gRGVlcCBHZWwsIEV4cHJlc3MgU2hpbmUsIEJhdGhyb29tIFNwb25nZSBlIFBsYWlkIE5hdGFsZQogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgREVFUCtFWFBSRVNTK1NQT05HRStQTEFJRAogICAgICAgICAgICAgICAgICAgIDwvZGl2Pjx1bCBjbGFzcz0ibGlzdC11bnN0eWxlZCBjYXJkX192YXJpYW50LWtleV9wb2ludHMiPjxsaT48c3Bhbj5HZWwgRGlzaW5jcm9zdGFudGUgY2hlIGVsaW1pbmEgdHV0dGUgbGUgdHJhY2NlIGRpIHNwb3JjbyBuZWwgYmFnbm8uPC9zcGFuPjwvbGk+PGxpPjxzcGFuPlB1bGl0b3JlIGFudGljYWxjYXJlIHBlciBsZSBzdXBlcmZpY2kgZGVsIGJhZ25vLjwvc3Bhbj48L2xpPjxsaT48c3Bhbj5TcHVnbmEgZG91YmxlLWZhY2UgZWZmaWNhY2UgY29udHJvIGwnYWNjdW11bG8gZGkgY2FsY2FyZSBuZWwgYmFnbm8uUGxhaWQgTmF0YWxlLCBtb3JiaWRvIGUgYWNjb2dsaWVudGUhPC9zcGFuPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJxdWljay1hZGQgbm8tanMtaGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9kZWVwLWV4cHJlc3Mtc3BvbmdlLXBsYWlkIiBjbGFzcz0icXVpY2stYWRkX19saW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hZGRfX3N1Ym1pdCBidXR0b24gYnV0dG9uLS1mdWxsLXdpZHRoIGJ1dHRvbi0tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlZGVyZSBpbCBwcm9kb3R0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LTJ4LWh5ZHJhLWhhbmQtcGx1bS1wZWNhbi10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYicpOwogICAgcHJvZHVjdENhcmRzLmZvckVhY2goZnVuY3Rpb24gKGNhcmQpIHsKICAgICAgaWYgKGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKSAhPT0gbnVsbCkgewogICAgICAgIGxpc3ROYW1lID0gY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpLmdldEF0dHJpYnV0ZSgnZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpOwogICAgICB9CiAgICAgIGNhcmQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICB2YXIgcHJvZHVjdERhdGEgPSBKU09OLnBhcnNlKGNhcmQuZ2V0QXR0cmlidXRlKCdndG0tY2FyZC1kYXRhJykpOwogICAgICAgIC8vIE5lZWQgdG8gcHVzaCBsaXN0TmFtZQogICAgICAgIHByb2R1Y3REYXRhWydpdGVtX2xpc3RfbmFtZSddID0gbGlzdE5hbWU7CiAgICAgICAgLy8gUHVzaCBjbGlja2VkIHByb2R1Y3QKICAgICAgICBheEl0ZW0ucHVzaChwcm9kdWN0RGF0YSk7CiAgICAgICAgLy8gU2VuZCAiY2xpY2siIGV2ZW50CiAgICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2NsaWNrJywKICAgICAgICAgIGF4SXRlbTogYXhJdGVtCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSk7CgogICAgLy8gUHVzaCBhbGwgcHJvZHVjdCBpbiBkYXRhTGF5ZXIKICAgIGF4UHJvZHVjdExpc3QucHVzaCh7CiAgICAgIGl0ZW1fbmFtZTogJzJYIEhZRFJBIEhBTkQgUExVTSAmIFBFQ0FOJywKICAgICAgaXRlbV9pZDogJ0lUQV9QUkRFMDAwMzYxMDNXJywKICAgICAgcHJpY2U6ICfigqw5LDkwJywKICAgICAgaXRlbV9icmFuZDogJ1N0YW5ob21lJywKICAgICAgaXRlbV9jYXRlZ29yeTE6ICdTdGFuaG9tZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkyOiAnQ3VyYSBkZWxsYSBmYW1pZ2xpYScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogICAgLy8gU2VuZCAiZmluaXNoZWQiIGV2ZW50CiAgICBpZiAoYXhQcm9kdWN0TGlzdC5sZW5ndGggPT09IHdpbmRvdy50aGVtZS5pdGVtc19jb3VudCkgewogICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2xpc3RfY29tcGxldGUnLAogICAgICAgIGF4UHJvZHVjdExpc3Q6IGF4UHJvZHVjdExpc3QsCiAgICAgIH0pOwogICAgfQogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgcHJvZHVjdC1taW5pYXR1cmUgcHJvZHVjdC1jYXJkLXdyYXBwZXIgdW5kZXJsaW5lLWxpbmtzLWhvdmVyIGd0bS1jYXJkLXByb2R1Y3QgZ3RtLWNhcmQtcHJvZHVjdC0yeC1oeWRyYS1oYW5kLXBsdW0tcGVjYW4tdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2IiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICIyWCBIWURSQSBIQU5EIFBMVU0gJiBQRUNBTiIsCiAgICAgICAgICAgICJpdGVtX2lkIjogIklUQV9QUkRFMDAwMzYxMDNXIiwKICAgICAgICAgICAgInByaWNlIjogIuKCrDksOTAiLAogICAgICAgICAgICAiaXRlbV9icmFuZCI6ICJTdGFuaG9tZSIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MSI6ICIiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAiaHlnaWVuZS1hbmQtY2FyZSIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAzXzI4ODdkZjBjLTIwZGYtNGVlNC1hNzE4LTY5NDcxNzdiMTRhNS5qcGc/dj0xNzMwMzc2ODM4JndpZHRoPTE2NSAxNjV3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAzXzI4ODdkZjBjLTIwZGYtNGVlNC1hNzE4LTY5NDcxNzdiMTRhNS5qcGc/dj0xNzMwMzc2ODM4JndpZHRoPTM2MCAzNjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAzXzI4ODdkZjBjLTIwZGYtNGVlNC1hNzE4LTY5NDcxNzdiMTRhNS5qcGc/dj0xNzMwMzc2ODM4JndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAzXzI4ODdkZjBjLTIwZGYtNGVlNC1hNzE4LTY5NDcxNzdiMTRhNS5qcGc/dj0xNzMwMzc2ODM4JndpZHRoPTcyMCA3MjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAzXzI4ODdkZjBjLTIwZGYtNGVlNC1hNzE4LTY5NDcxNzdiMTRhNS5qcGc/dj0xNzMwMzc2ODM4JndpZHRoPTk0MCA5NDB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTAzXzI4ODdkZjBjLTIwZGYtNGVlNC1hNzE4LTY5NDcxNzdiMTRhNS5qcGc/dj0xNzMwMzc2ODM4JndpZHRoPTEwNjYgMTA2NncsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYxMDNfMjg4N2RmMGMtMjBkZi00ZWU0LWE3MTgtNjk0NzE3N2IxNGE1LmpwZz92PTE3MzAzNzY4MzggMTIwMHcKICAgICAgICAgICAgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwM18yODg3ZGYwYy0yMGRmLTRlZTQtYTcxOC02OTQ3MTc3YjE0YTUuanBnP3Y9MTczMDM3NjgzOCZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSIyWCBIWURSQSBIQU5EIFBMVU0gJmFtcDsgUEVDQU4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJtb3Rpb24tcmVkdWNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfOTgxOTA5ODEyMDUyNSIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSI5ODE5MDk4MTIwNTI1IiBkYXRhLXZhcmlhbnQtaWQ9IjUwNDY0NTkyMDY4OTQxIiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5pdC9wcm9kdWN0cy8yeC1oeWRyYS1oYW5kLXBsdW0tcGVjYW4iPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19iYWRnZSB0b3AgbGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPjxkaXYgY2xhc3M9ImNhcmRfX3R5cGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhbmhvbWUKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHAgY2xhc3M9ImNhcmRfX2hlYWRpbmcgaDUiICBpZD0idGl0bGUtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5ODEyMDUyNSIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvMngtaHlkcmEtaGFuZC1wbHVtLXBlY2FuIiBpZD0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5ODEyMDUyNSIgY2xhc3M9ImZ1bGwtdW5zdHlsZWQtbGluayBmdWxsLXVuc3R5bGVkLWxpbmstcHJvZHVjdCIgYXJpYS1sYWJlbGxlZGJ5PSJDYXJkTGluay10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi05ODE5MDk4MTIwNTI1IEJhZGdlLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTk4MTkwOTgxMjA1MjUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IDIgSHlkcmEgSGFuZCBOYXRhbGUgCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDJYIEhZRFJBIEhBTkQgUExVTSAmYW1wOyBQRUNBTgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBkaSBsaXN0aW5vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAg4oKsOSw5MAogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InByaWNlX19zYWxlIj4KICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBzY29udGF0bzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICDigqw5LDkwCiAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gZGkgbGlzdGlubzwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxzIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICA8L3M+CiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPHNtYWxsIGNsYXNzPSJ1bml0LXByaWNlIGNhcHRpb24gaGlkZGVuIj4KICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+UHJlenpvIHVuaXRhcmlvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cGVyJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjxhIGhyZWY9Ii9wcm9kdWN0cy8yeC1oeWRyYS1oYW5kLXBsdW0tcGVjYW4iIGNsYXNzPSJxdWljay1hZGQgcXVpY2stYWRkLWV5ZSBxdWljay1hZGQtbW9iaWxlIGV4dHJhLWxhcmdlLXVwLWhpZGUiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgY2xhc3M9Imljb24gaWNvbi1leWUiIHdpZHRoPSIyNC43NjQiIGhlaWdodD0iMTMuMzE4Ij4KICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9Ii43IiBjbGlwLXBhdGg9InVybCgjcHJlZml4X19hKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSI+CiAgPHBhdGggZD0iTTEwLjQ4LjQ0aC4wMzdhMTEuOTgzIDExLjk4MyAwIDAgMSA1LjY0MSAxLjQyNEExMi4yNTMgMTIuMjUzIDAgMCAxIDE4LjUgMy40OTdhMTIuNDU3IDEyLjQ1NyAwIDAgMSAxLjczNCAxLjg5NCAxMi40MjIgMTIuNDIyIDAgMCAxLTEuNzI4IDIuMTA2IDEyLjA3NyAxMi4wNzcgMCAwIDEtMi4zNzkgMS44MSAxMS42NzYgMTEuNjc2IDAgMCAxLTIuNzcxIDEuMTYxIDExLjYgMTEuNiAwIDAgMS0zLjA2My40MWgtLjAzOWExMS42MTMgMTEuNjEzIDAgMCAxLTIuOTc2LS40IDExLjY2MyAxMS42NjMgMCAwIDEtMi43LTEuMTA2IDEyLjA0NyAxMi4wNDcgMCAwIDEtMi4zMzUtMS43MTcgMTIuNCAxMi40IDAgMCAxLTEuNzEyLTIgMTIuNDY0IDEyLjQ2NCAwIDAgMSAxLjc1My0yIDEyLjI3MSAxMi4yNzEgMCAwIDEgMi4zODgtMS43MjMgMTEuOTgyIDExLjk4MiAwIDAgMSA1LjgtMS40OTNabTAtLjQ0QTEyLjU4NyAxMi41ODcgMCAwIDAgMCA1LjY1NWExMi4zIDEyLjMgMCAwIDAgMTAuMjUzIDUuNjYzaC4wNGExMi4zMjQgMTIuMzI0IDAgMCAwIDEwLjQ3MS01Ljk0MkExMi41NzUgMTIuNTc1IDAgMCAwIDEwLjUxOC0uMDAzaC0uMDQxIi8+CiAgPHBhdGggZD0iTTEwLjM4Mi43MzRhNC43NDEgNC43NDEgMCAwIDEgMi43LjgzOSA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LjYgNC45NSA0Ljk1IDAgMCAxIDEuMzE5IDIuNDkzIDUuMDggNS4wOCAwIDAgMSAwIDEuOTkxIDQuOTQ4IDQuOTQ4IDAgMCAxLTEuMzE5IDIuNDkzIDQuODg5IDQuODg5IDAgMCAxLS43MTUuNiA0LjggNC44IDAgMCAxLS44Mi40NTMgNC43NDkgNC43NDkgMCAwIDEtMy43NTMgMCA0LjggNC44IDAgMCAxLS44Mi0uNDUzIDQuOTE1IDQuOTE1IDAgMCAxLTEuMzA2LTEuMzMxIDQuOTQ5IDQuOTQ5IDAgMCAxLS43MjgtMS43NjMgNS4wOCA1LjA4IDAgMCAxIDAtMS45OTEgNC45NDQgNC45NDQgMCAwIDEgMS4zMTktMi40OTMgNC44ODkgNC44ODkgMCAwIDEgLjcxNS0uNiA0LjggNC44IDAgMCAxIC44Mi0uNDUzIDQuNzMgNC43MyAwIDAgMSAxLjg3Ny0uMzg2bTAtLjVhNS40MjkgNS40MjkgMCAxIDAgNS4zMyA1LjQyOSA1LjM4IDUuMzggMCAwIDAtNS4zMy01LjQyOSIvPgogIDxwYXRoIGQ9Ik0xMy4wODMgNS43NTlhMi42ODMgMi42ODMgMCAxIDEtMi42ODItMi43MzIgMi43MDcgMi43MDcgMCAwIDEgMi42ODIgMi43MzIiLz4KICA8L2c+Cjwvc3ZnPgogIDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudC1ob3ZlciI+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF85ODE5MDk4MTIwNTI1IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9Ijk4MTkwOTgxMjA1MjUiIGRhdGEtdmFyaWFudC1pZD0iNTA0NjQ1OTIwNjg5NDEiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzLzJ4LWh5ZHJhLWhhbmQtcGx1bS1wZWNhbiI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgMiBIeWRyYSBIYW5kIE5hdGFsZQogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgMlggSFlEUkEgSEFORCBQTFVNICZhbXA7IFBFQ0FOCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIGNhcmRfX3ZhcmlhbnQta2V5X3BvaW50cyI+PGxpPjxzcGFuPklkZWFsZSBwZXIgaWRyYXRhcmUgbGUgbWFuaSBvZ25pIGdpb3Juby48L3NwYW4+PC9saT48bGk+PHNwYW4+TGVuaXNjZSBlIHByb3RlZ2dlIGdyYXppZSBhbGxhIHN1YSBmb3JtdWxhIGFycmljY2hpdGEgY29uIGFsb2UgdmVyYS48L3NwYW4+PC9saT48bGk+PHNwYW4+Q29udGllbmUgb2x0cmUgaWwgOTglIGRpIGluZ3JlZGllbnRpIGRpIG9yaWdpbmUgbmF0dXJhbGUuPC9zcGFuPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJxdWljay1hZGQgbm8tanMtaGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy8yeC1oeWRyYS1oYW5kLXBsdW0tcGVjYW4iIGNsYXNzPSJxdWljay1hZGRfX2xpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InF1aWNrLWFkZF9fc3VibWl0IGJ1dHRvbiBidXR0b24tLWZ1bGwtd2lkdGggYnV0dG9uLS1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVkZXJlIGlsIHByb2RvdHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4=
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LTJ4LWJhbG0tcmVwYWlyLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiJyk7CiAgICBwcm9kdWN0Q2FyZHMuZm9yRWFjaChmdW5jdGlvbiAoY2FyZCkgewogICAgICBpZiAoY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpICE9PSBudWxsKSB7CiAgICAgICAgbGlzdE5hbWUgPSBjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykuZ2V0QXR0cmlidXRlKCdndG0tdHJhY2tpbmctY3Jvc3NzZWxsJyk7CiAgICAgIH0KICAgICAgY2FyZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgIHZhciBwcm9kdWN0RGF0YSA9IEpTT04ucGFyc2UoY2FyZC5nZXRBdHRyaWJ1dGUoJ2d0bS1jYXJkLWRhdGEnKSk7CiAgICAgICAgLy8gTmVlZCB0byBwdXNoIGxpc3ROYW1lCiAgICAgICAgcHJvZHVjdERhdGFbJ2l0ZW1fbGlzdF9uYW1lJ10gPSBsaXN0TmFtZTsKICAgICAgICAvLyBQdXNoIGNsaWNrZWQgcHJvZHVjdAogICAgICAgIGF4SXRlbS5wdXNoKHByb2R1Y3REYXRhKTsKICAgICAgICAvLyBTZW5kICJjbGljayIgZXZlbnQKICAgICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfY2xpY2snLAogICAgICAgICAgYXhJdGVtOiBheEl0ZW0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyBQdXNoIGFsbCBwcm9kdWN0IGluIGRhdGFMYXllcgogICAgYXhQcm9kdWN0TGlzdC5wdXNoKHsKICAgICAgaXRlbV9uYW1lOiAnMlggQkFMTSBSRVBBSVInLAogICAgICBpdGVtX2lkOiAnSVRBX1BSREUwMDAzNjEwNFcnLAogICAgICBwcmljZTogJ+KCrDEzLDkwJywKICAgICAgaXRlbV9icmFuZDogJ1N0YW5ob21lJywKICAgICAgaXRlbV9jYXRlZ29yeTE6ICdTdGFuaG9tZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkyOiAnQ3VyYSBkZWxsYSBmYW1pZ2xpYScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogICAgLy8gU2VuZCAiZmluaXNoZWQiIGV2ZW50CiAgICBpZiAoYXhQcm9kdWN0TGlzdC5sZW5ndGggPT09IHdpbmRvdy50aGVtZS5pdGVtc19jb3VudCkgewogICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2xpc3RfY29tcGxldGUnLAogICAgICAgIGF4UHJvZHVjdExpc3Q6IGF4UHJvZHVjdExpc3QsCiAgICAgIH0pOwogICAgfQogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgcHJvZHVjdC1taW5pYXR1cmUgcHJvZHVjdC1jYXJkLXdyYXBwZXIgdW5kZXJsaW5lLWxpbmtzLWhvdmVyIGd0bS1jYXJkLXByb2R1Y3QgZ3RtLWNhcmQtcHJvZHVjdC0yeC1iYWxtLXJlcGFpci10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYiIgZ3RtLWNhcmQtZGF0YT0nCiAgICAgICAgewogICAgICAgICAgICAiaXRlbV9uYW1lIjogIjJYIEJBTE0gUkVQQUlSIiwKICAgICAgICAgICAgIml0ZW1faWQiOiAiSVRBX1BSREUwMDAzNjEwNFciLAogICAgICAgICAgICAicHJpY2UiOiAi4oKsMTMsOTAiLAogICAgICAgICAgICAiaXRlbV9icmFuZCI6ICJTdGFuaG9tZSIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MSI6ICIiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAiaHlnaWVuZS1hbmQtY2FyZSIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTA0X2JiZGY3YTE0LTVhMmYtNDUzOS1iYzk5LTc3YjA3OWIwYjBkNy5qcGc/dj0xNzMwMzc2ODQ1JndpZHRoPTE2NSAxNjV3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTA0X2JiZGY3YTE0LTVhMmYtNDUzOS1iYzk5LTc3YjA3OWIwYjBkNy5qcGc/dj0xNzMwMzc2ODQ1JndpZHRoPTM2MCAzNjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTA0X2JiZGY3YTE0LTVhMmYtNDUzOS1iYzk5LTc3YjA3OWIwYjBkNy5qcGc/dj0xNzMwMzc2ODQ1JndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTA0X2JiZGY3YTE0LTVhMmYtNDUzOS1iYzk5LTc3YjA3OWIwYjBkNy5qcGc/dj0xNzMwMzc2ODQ1JndpZHRoPTcyMCA3MjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTA0X2JiZGY3YTE0LTVhMmYtNDUzOS1iYzk5LTc3YjA3OWIwYjBkNy5qcGc/dj0xNzMwMzc2ODQ1JndpZHRoPTk0MCA5NDB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTA0X2JiZGY3YTE0LTVhMmYtNDUzOS1iYzk5LTc3YjA3OWIwYjBkNy5qcGc/dj0xNzMwMzc2ODQ1JndpZHRoPTEwNjYgMTA2NncsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYxMDRfYmJkZjdhMTQtNWEyZi00NTM5LWJjOTktNzdiMDc5YjBiMGQ3LmpwZz92PTE3MzAzNzY4NDUgMTIwMHcKICAgICAgICAgICAgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwNF9iYmRmN2ExNC01YTJmLTQ1MzktYmM5OS03N2IwNzliMGIwZDcuanBnP3Y9MTczMDM3Njg0NSZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSIyWCBCQUxNIFJFUEFJUiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im1vdGlvbi1yZWR1Y2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF85ODE5MDk4MTUzMjkzIiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9Ijk4MTkwOTgxNTMyOTMiIGRhdGEtdmFyaWFudC1pZD0iNTA0NjQ1OTIxMDE3MDkiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzLzJ4LWJhbG0tcmVwYWlyIj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fYmFkZ2UgdG9wIGxlZnQiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj48ZGl2IGNsYXNzPSJjYXJkX190eXBlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YW5ob21lCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjxwIGNsYXNzPSJjYXJkX19oZWFkaW5nIGg1IiAgaWQ9InRpdGxlLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTk4MTkwOTgxNTMyOTMiID4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Byb2R1Y3RzLzJ4LWJhbG0tcmVwYWlyIiBpZD0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5ODE1MzI5MyIgY2xhc3M9ImZ1bGwtdW5zdHlsZWQtbGluayBmdWxsLXVuc3R5bGVkLWxpbmstcHJvZHVjdCIgYXJpYS1sYWJlbGxlZGJ5PSJDYXJkTGluay10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi05ODE5MDk4MTUzMjkzIEJhZGdlLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTk4MTkwOTgxNTMyOTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IDIgQmFsbSBSZXBhaXIgCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDJYIEJBTE0gUkVQQUlSCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbmZvcm1hdGlvbiI+PHNwYW4gY2xhc3M9ImNhcHRpb24tbGFyZ2UgbGlnaHQiPjwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uLWZvcm0tcmF0aW5nLXByaWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGluZy1wcmljZSI+CjxkaXYKICBjbGFzcz0iCiAgICBwcmljZSAiCj4KICA8ZGl2IGNsYXNzPSJwcmljZV9fY29udGFpbmVyIj48ZGl2IGNsYXNzPSJwcmljZV9fcmVndWxhciI+PHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIGRpIGxpc3Rpbm88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICDigqwxMyw5MAogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InByaWNlX19zYWxlIj4KICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBzY29udGF0bzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICDigqwxMyw5MAogICAgICA8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIGRpIGxpc3Rpbm88L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgPC9zPgogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxzbWFsbCBjbGFzcz0idW5pdC1wcmljZSBjYXB0aW9uIGhpZGRlbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPlByZXp6byB1bml0YXJpbzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAgPHNwYW4+PC9zcGFuPgogICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPiZuYnNwO3BlciZuYnNwOzwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvc3Bhbj4KICAgIDwvc21hbGw+CiAgPC9kaXY+PC9kaXY+Cgo8L2Rpdj48YSBocmVmPSIvcHJvZHVjdHMvMngtYmFsbS1yZXBhaXIiIGNsYXNzPSJxdWljay1hZGQgcXVpY2stYWRkLWV5ZSBxdWljay1hZGQtbW9iaWxlIGV4dHJhLWxhcmdlLXVwLWhpZGUiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgY2xhc3M9Imljb24gaWNvbi1leWUiIHdpZHRoPSIyNC43NjQiIGhlaWdodD0iMTMuMzE4Ij4KICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9Ii43IiBjbGlwLXBhdGg9InVybCgjcHJlZml4X19hKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSI+CiAgPHBhdGggZD0iTTEwLjQ4LjQ0aC4wMzdhMTEuOTgzIDExLjk4MyAwIDAgMSA1LjY0MSAxLjQyNEExMi4yNTMgMTIuMjUzIDAgMCAxIDE4LjUgMy40OTdhMTIuNDU3IDEyLjQ1NyAwIDAgMSAxLjczNCAxLjg5NCAxMi40MjIgMTIuNDIyIDAgMCAxLTEuNzI4IDIuMTA2IDEyLjA3NyAxMi4wNzcgMCAwIDEtMi4zNzkgMS44MSAxMS42NzYgMTEuNjc2IDAgMCAxLTIuNzcxIDEuMTYxIDExLjYgMTEuNiAwIDAgMS0zLjA2My40MWgtLjAzOWExMS42MTMgMTEuNjEzIDAgMCAxLTIuOTc2LS40IDExLjY2MyAxMS42NjMgMCAwIDEtMi43LTEuMTA2IDEyLjA0NyAxMi4wNDcgMCAwIDEtMi4zMzUtMS43MTcgMTIuNCAxMi40IDAgMCAxLTEuNzEyLTIgMTIuNDY0IDEyLjQ2NCAwIDAgMSAxLjc1My0yIDEyLjI3MSAxMi4yNzEgMCAwIDEgMi4zODgtMS43MjMgMTEuOTgyIDExLjk4MiAwIDAgMSA1LjgtMS40OTNabTAtLjQ0QTEyLjU4NyAxMi41ODcgMCAwIDAgMCA1LjY1NWExMi4zIDEyLjMgMCAwIDAgMTAuMjUzIDUuNjYzaC4wNGExMi4zMjQgMTIuMzI0IDAgMCAwIDEwLjQ3MS01Ljk0MkExMi41NzUgMTIuNTc1IDAgMCAwIDEwLjUxOC0uMDAzaC0uMDQxIi8+CiAgPHBhdGggZD0iTTEwLjM4Mi43MzRhNC43NDEgNC43NDEgMCAwIDEgMi43LjgzOSA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LjYgNC45NSA0Ljk1IDAgMCAxIDEuMzE5IDIuNDkzIDUuMDggNS4wOCAwIDAgMSAwIDEuOTkxIDQuOTQ4IDQuOTQ4IDAgMCAxLTEuMzE5IDIuNDkzIDQuODg5IDQuODg5IDAgMCAxLS43MTUuNiA0LjggNC44IDAgMCAxLS44Mi40NTMgNC43NDkgNC43NDkgMCAwIDEtMy43NTMgMCA0LjggNC44IDAgMCAxLS44Mi0uNDUzIDQuOTE1IDQuOTE1IDAgMCAxLTEuMzA2LTEuMzMxIDQuOTQ5IDQuOTQ5IDAgMCAxLS43MjgtMS43NjMgNS4wOCA1LjA4IDAgMCAxIDAtMS45OTEgNC45NDQgNC45NDQgMCAwIDEgMS4zMTktMi40OTMgNC44ODkgNC44ODkgMCAwIDEgLjcxNS0uNiA0LjggNC44IDAgMCAxIC44Mi0uNDUzIDQuNzMgNC43MyAwIDAgMSAxLjg3Ny0uMzg2bTAtLjVhNS40MjkgNS40MjkgMCAxIDAgNS4zMyA1LjQyOSA1LjM4IDUuMzggMCAwIDAtNS4zMy01LjQyOSIvPgogIDxwYXRoIGQ9Ik0xMy4wODMgNS43NTlhMi42ODMgMi42ODMgMCAxIDEtMi42ODItMi43MzIgMi43MDcgMi43MDcgMCAwIDEgMi42ODIgMi43MzIiLz4KICA8L2c+Cjwvc3ZnPgogIDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudC1ob3ZlciI+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF85ODE5MDk4MTUzMjkzIiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9Ijk4MTkwOTgxNTMyOTMiIGRhdGEtdmFyaWFudC1pZD0iNTA0NjQ1OTIxMDE3MDkiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzLzJ4LWJhbG0tcmVwYWlyIj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2hlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCAyIEJhbG0gUmVwYWlyCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICAyWCBCQUxNIFJFUEFJUgogICAgICAgICAgICAgICAgICAgIDwvZGl2Pjx1bCBjbGFzcz0ibGlzdC11bnN0eWxlZCBjYXJkX192YXJpYW50LWtleV9wb2ludHMiPjxsaT48c3Bhbj5MZW5pc2NlIGxlIG1hbmkgbW9sdG8gc2VjY2hlIGUgZGFsbGEgcGVsbGUgaW5kZWJvbGl0YS48L3NwYW4+PC9saT48bGk+PHNwYW4+QXJyaWNjaGl0byBjb24gYnVycm8gZGkga2FyaXTDqS48L3NwYW4+PC9saT48bGk+PHNwYW4+Q29udGllbmUgcGnDuSBkZWwgOTglIGQnaW5ncmVkaWVudGkgZGkgb3JpZ2luZSBuYXR1cmFsZS48L3NwYW4+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9InF1aWNrLWFkZCBuby1qcy1oaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Byb2R1Y3RzLzJ4LWJhbG0tcmVwYWlyIiBjbGFzcz0icXVpY2stYWRkX19saW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hZGRfX3N1Ym1pdCBidXR0b24gYnV0dG9uLS1mdWxsLXdpZHRoIGJ1dHRvbi0tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlZGVyZSBpbCBwcm9kb3R0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LXN3ZWV0LWxpcHMtYmFsbS1yZXBhaXItdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdTV0VFVCBMSVBTICsgQkFMTSBSRVBBSVInLAogICAgICBpdGVtX2lkOiAnSVRBX1BSREUwMDAzNjEwNVcnLAogICAgICBwcmljZTogJ+KCrDExLDkwJywKICAgICAgaXRlbV9icmFuZDogJ1N0YW5ob21lJywKICAgICAgaXRlbV9jYXRlZ29yeTE6ICdTdGFuaG9tZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkyOiAnQmFsc2FtbyBwZXIgbGUgbGFiYnJhJywKICAgICAgaXRlbV9jYXRlZ29yeTM6ICcnLAogICAgICBpdGVtX3ZhcmlhbnQ6ICdEZWZhdWx0IFRpdGxlJywKICAgICAgaXRlbV9saXN0X25hbWU6IGxpc3ROYW1lCiAgICB9KTsKCiAgICAvLyBTZW5kICJmaW5pc2hlZCIgZXZlbnQKICAgIGlmIChheFByb2R1Y3RMaXN0Lmxlbmd0aCA9PT0gd2luZG93LnRoZW1lLml0ZW1zX2NvdW50KSB7CiAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfbGlzdF9jb21wbGV0ZScsCiAgICAgICAgYXhQcm9kdWN0TGlzdDogYXhQcm9kdWN0TGlzdCwKICAgICAgfSk7CiAgICB9CiAgfSk7CgogIGZ1bmN0aW9uIGNsaWNrUHJvZHVjdChwcm9kdWN0RGF0YSkge30KPC9zY3JpcHQ+CgoKPHNjcmlwdCBkZWZlcj4KICBmdW5jdGlvbiBzd3ltQ2FsbGJhY2tGbihzd2F0KSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzd3ltOmNvbGxlY3Rpb25zLWxvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgc3dhdC5pbml0aWFsaXplQWN0aW9uQnV0dG9ucygnPDxDb2xsZWN0aW9ucyBHcmlkIFBBUkVOVCBTZWxlY3RvciA+PicpOwogICAgfSk7CiAgfQogIGlmICghd2luZG93LlN3eW1DYWxsYmFja3MpIHsKICAgIHdpbmRvdy5Td3ltQ2FsbGJhY2tzID0gW107CiAgfQogIHdpbmRvdy5Td3ltQ2FsbGJhY2tzLnB1c2goc3d5bUNhbGxiYWNrRm4pOwo8L3NjcmlwdD4KCgogICAgCiAgICAKICAgIDxkaXYgY2xhc3M9ImNhcmQtd3JhcHBlciBwcm9kdWN0LW1pbmlhdHVyZSBwcm9kdWN0LWNhcmQtd3JhcHBlciB1bmRlcmxpbmUtbGlua3MtaG92ZXIgZ3RtLWNhcmQtcHJvZHVjdCBndG0tY2FyZC1wcm9kdWN0LXN3ZWV0LWxpcHMtYmFsbS1yZXBhaXItdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2IiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJTV0VFVCBMSVBTICsgQkFMTSBSRVBBSVIiLAogICAgICAgICAgICAiaXRlbV9pZCI6ICJJVEFfUFJERTAwMDM2MTA1VyIsCiAgICAgICAgICAgICJwcmljZSI6ICLigqwxMSw5MCIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIlN0YW5ob21lIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIiIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MiI6ICJsaXBzLWNhcmUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTMiOiBudWxsLAogICAgICAgICAgICAiaXRlbV92YXJpYW50IjogIkRlZmF1bHQgVGl0bGUiCiAgICAgICAgfQogICAgJz4KICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0iCiAgICAgICAgY2FyZCBjYXJkLS1zdGFuZGFyZAogICAgICAgICBjYXJkLS1tZWRpYQogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAiCiAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICA+CiAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iY2FyZF9faW5uZXIgY29sb3ItYmFja2dyb3VuZC0xIGdyYWRpZW50IHJhdGlvIgogICAgICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgICAgICA+PGRpdiBjbGFzcz0iY2FyZF9fbWVkaWEiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYSBtZWRpYS0tdHJhbnNwYXJlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Jjc2V0PSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwNV81ZWQ1Y2VjOS1hODFhLTRkNGItYTc2Yy1mNjI0YWVlY2I5NWUuanBnP3Y9MTczMDM4MTU4MSZ3aWR0aD0xNjUgMTY1dywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwNV81ZWQ1Y2VjOS1hODFhLTRkNGItYTc2Yy1mNjI0YWVlY2I5NWUuanBnP3Y9MTczMDM4MTU4MSZ3aWR0aD0zNjAgMzYwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwNV81ZWQ1Y2VjOS1hODFhLTRkNGItYTc2Yy1mNjI0YWVlY2I5NWUuanBnP3Y9MTczMDM4MTU4MSZ3aWR0aD01MzMgNTMzdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwNV81ZWQ1Y2VjOS1hODFhLTRkNGItYTc2Yy1mNjI0YWVlY2I5NWUuanBnP3Y9MTczMDM4MTU4MSZ3aWR0aD03MjAgNzIwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwNV81ZWQ1Y2VjOS1hODFhLTRkNGItYTc2Yy1mNjI0YWVlY2I5NWUuanBnP3Y9MTczMDM4MTU4MSZ3aWR0aD05NDAgOTQwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwNV81ZWQ1Y2VjOS1hODFhLTRkNGItYTc2Yy1mNjI0YWVlY2I5NWUuanBnP3Y9MTczMDM4MTU4MSZ3aWR0aD0xMDY2IDEwNjZ3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTA1XzVlZDVjZWM5LWE4MWEtNGQ0Yi1hNzZjLWY2MjRhZWVjYjk1ZS5qcGc/dj0xNzMwMzgxNTgxIDEyMDB3CiAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0iLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYxMDVfNWVkNWNlYzktYTgxYS00ZDRiLWE3NmMtZjYyNGFlZWNiOTVlLmpwZz92PTE3MzAzODE1ODEmd2lkdGg9NTMzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz0iKG1pbi13aWR0aDogMTYwMHB4KSAzNjdweCwgKG1pbi13aWR0aDogOTkwcHgpIGNhbGMoKDEwMHZ3IC0gMTMwcHgpIC8gNCksIChtaW4td2lkdGg6IDc1MHB4KSBjYWxjKCgxMDB2dyAtIDEyMHB4KSAvIDMpLCBjYWxjKCgxMDB2dyAtIDM1cHgpIC8gMikiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD0iU1dFRVQgTElQUyArIEJBTE0gUkVQQUlSIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0Xzk4MTkwOTgxODYwNjEiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iOTgxOTA5ODE4NjA2MSIgZGF0YS12YXJpYW50LWlkPSI1MDQ2NDU5MjEzNDQ3NyIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuaXQvcHJvZHVjdHMvc3dlZXQtbGlwcy1iYWxtLXJlcGFpciI+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2JhZGdlIHRvcCBsZWZ0Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFuaG9tZQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi05ODE5MDk4MTg2MDYxIiA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9zd2VldC1saXBzLWJhbG0tcmVwYWlyIiBpZD0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5ODE4NjA2MSIgY2xhc3M9ImZ1bGwtdW5zdHlsZWQtbGluayBmdWxsLXVuc3R5bGVkLWxpbmstcHJvZHVjdCIgYXJpYS1sYWJlbGxlZGJ5PSJDYXJkTGluay10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi05ODE5MDk4MTg2MDYxIEJhZGdlLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTk4MTkwOTgxODYwNjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IFN3ZWV0IExpcHMgZSBCYWxtIFJlcGFpciAKICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgU1dFRVQgTElQUyArIEJBTE0gUkVQQUlSCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbmZvcm1hdGlvbiI+PHNwYW4gY2xhc3M9ImNhcHRpb24tbGFyZ2UgbGlnaHQiPjwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uLWZvcm0tcmF0aW5nLXByaWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGluZy1wcmljZSI+CjxkaXYKICBjbGFzcz0iCiAgICBwcmljZSAiCj4KICA8ZGl2IGNsYXNzPSJwcmljZV9fY29udGFpbmVyIj48ZGl2IGNsYXNzPSJwcmljZV9fcmVndWxhciI+PHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIGRpIGxpc3Rpbm88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICDigqwxMSw5MAogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InByaWNlX19zYWxlIj4KICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBzY29udGF0bzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICDigqwxMSw5MAogICAgICA8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIGRpIGxpc3Rpbm88L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgPC9zPgogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxzbWFsbCBjbGFzcz0idW5pdC1wcmljZSBjYXB0aW9uIGhpZGRlbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPlByZXp6byB1bml0YXJpbzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAgPHNwYW4+PC9zcGFuPgogICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPiZuYnNwO3BlciZuYnNwOzwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvc3Bhbj4KICAgIDwvc21hbGw+CiAgPC9kaXY+PC9kaXY+Cgo8L2Rpdj48YSBocmVmPSIvcHJvZHVjdHMvc3dlZXQtbGlwcy1iYWxtLXJlcGFpciIgY2xhc3M9InF1aWNrLWFkZCBxdWljay1hZGQtZXllIHF1aWNrLWFkZC1tb2JpbGUgZXh0cmEtbGFyZ2UtdXAtaGlkZSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iaWNvbiBpY29uLWV5ZSIgd2lkdGg9IjI0Ljc2NCIgaGVpZ2h0PSIxMy4zMTgiPgogIDxnIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iLjciIGNsaXAtcGF0aD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIj4KICA8cGF0aCBkPSJNMTAuNDguNDRoLjAzN2ExMS45ODMgMTEuOTgzIDAgMCAxIDUuNjQxIDEuNDI0QTEyLjI1MyAxMi4yNTMgMCAwIDEgMTguNSAzLjQ5N2ExMi40NTcgMTIuNDU3IDAgMCAxIDEuNzM0IDEuODk0IDEyLjQyMiAxMi40MjIgMCAwIDEtMS43MjggMi4xMDYgMTIuMDc3IDEyLjA3NyAwIDAgMS0yLjM3OSAxLjgxIDExLjY3NiAxMS42NzYgMCAwIDEtMi43NzEgMS4xNjEgMTEuNiAxMS42IDAgMCAxLTMuMDYzLjQxaC0uMDM5YTExLjYxMyAxMS42MTMgMCAwIDEtMi45NzYtLjQgMTEuNjYzIDExLjY2MyAwIDAgMS0yLjctMS4xMDYgMTIuMDQ3IDEyLjA0NyAwIDAgMS0yLjMzNS0xLjcxNyAxMi40IDEyLjQgMCAwIDEtMS43MTItMiAxMi40NjQgMTIuNDY0IDAgMCAxIDEuNzUzLTIgMTIuMjcxIDEyLjI3MSAwIDAgMSAyLjM4OC0xLjcyMyAxMS45ODIgMTEuOTgyIDAgMCAxIDUuOC0xLjQ5M1ptMC0uNDRBMTIuNTg3IDEyLjU4NyAwIDAgMCAwIDUuNjU1YTEyLjMgMTIuMyAwIDAgMCAxMC4yNTMgNS42NjNoLjA0YTEyLjMyNCAxMi4zMjQgMCAwIDAgMTAuNDcxLTUuOTQyQTEyLjU3NSAxMi41NzUgMCAwIDAgMTAuNTE4LS4wMDNoLS4wNDEiLz4KICA8cGF0aCBkPSJNMTAuMzgyLjczNGE0Ljc0MSA0Ljc0MSAwIDAgMSAyLjcuODM5IDQuODg5IDQuODg5IDAgMCAxIC43MTUuNiA0Ljk1IDQuOTUgMCAwIDEgMS4zMTkgMi40OTMgNS4wOCA1LjA4IDAgMCAxIDAgMS45OTEgNC45NDggNC45NDggMCAwIDEtMS4zMTkgMi40OTMgNC44ODkgNC44ODkgMCAwIDEtLjcxNS42IDQuOCA0LjggMCAwIDEtLjgyLjQ1MyA0Ljc0OSA0Ljc0OSAwIDAgMS0zLjc1MyAwIDQuOCA0LjggMCAwIDEtLjgyLS40NTMgNC45MTUgNC45MTUgMCAwIDEtMS4zMDYtMS4zMzEgNC45NDkgNC45NDkgMCAwIDEtLjcyOC0xLjc2MyA1LjA4IDUuMDggMCAwIDEgMC0xLjk5MSA0Ljk0NCA0Ljk0NCAwIDAgMSAxLjMxOS0yLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LS42IDQuOCA0LjggMCAwIDEgLjgyLS40NTMgNC43MyA0LjczIDAgMCAxIDEuODc3LS4zODZtMC0uNWE1LjQyOSA1LjQyOSAwIDEgMCA1LjMzIDUuNDI5IDUuMzggNS4zOCAwIDAgMC01LjMzLTUuNDI5Ii8+CiAgPHBhdGggZD0iTTEzLjA4MyA1Ljc1OWEyLjY4MyAyLjY4MyAwIDEgMS0yLjY4Mi0yLjczMiAyLjcwNyAyLjcwNyAwIDAgMSAyLjY4MiAyLjczMiIvPgogIDwvZz4KPC9zdmc+CiAgPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50LWhvdmVyIj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0Xzk4MTkwOTgxODYwNjEiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iOTgxOTA5ODE4NjA2MSIgZGF0YS12YXJpYW50LWlkPSI1MDQ2NDU5MjEzNDQ3NyIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuaXQvcHJvZHVjdHMvc3dlZXQtbGlwcy1iYWxtLXJlcGFpciI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgU3dlZXQgTGlwcyBlIEJhbG0gUmVwYWlyCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBTV0VFVCBMSVBTICsgQkFMTSBSRVBBSVIKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+TGVuaXNjZSBsZSBtYW5pIG1vbHRvIHNlY2NoZSBlIGRhbGxhIHBlbGxlIGluZGVib2xpdGEuPC9zcGFuPjwvbGk+PGxpPjxzcGFuPklkcmF0YSBlIHByb3RlZ2dlIGxlIGxhYmJyYS48L3NwYW4+PC9saT48bGk+PHNwYW4+RmlubyBhbCA5OCUgZCdpbmdyZWRpZW50aSBkaSBvcmlnaW5lIG5hdHVyYWxlLjwvc3Bhbj48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0icXVpY2stYWRkIG5vLWpzLWhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvc3dlZXQtbGlwcy1iYWxtLXJlcGFpciIgY2xhc3M9InF1aWNrLWFkZF9fbGluayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icXVpY2stYWRkX19zdWJtaXQgYnV0dG9uIGJ1dHRvbi0tZnVsbC13aWR0aCBidXR0b24tLXByaW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWRlcmUgaWwgcHJvZG90dG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pg==
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LTJ4LXN3ZWV0LWxpcHMtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICcyWCBTV0VFVCBMSVBTJywKICAgICAgaXRlbV9pZDogJ0lUQV9QUkRFMDAwMzYxMDZXJywKICAgICAgcHJpY2U6ICfigqw5LDkwJywKICAgICAgaXRlbV9icmFuZDogJ1N0YW5ob21lJywKICAgICAgaXRlbV9jYXRlZ29yeTE6ICdTdGFuaG9tZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkyOiAnQmFsc2FtbyBwZXIgbGUgbGFiYnJhJywKICAgICAgaXRlbV9jYXRlZ29yeTM6ICcnLAogICAgICBpdGVtX3ZhcmlhbnQ6ICdEZWZhdWx0IFRpdGxlJywKICAgICAgaXRlbV9saXN0X25hbWU6IGxpc3ROYW1lCiAgICB9KTsKCiAgICAvLyBTZW5kICJmaW5pc2hlZCIgZXZlbnQKICAgIGlmIChheFByb2R1Y3RMaXN0Lmxlbmd0aCA9PT0gd2luZG93LnRoZW1lLml0ZW1zX2NvdW50KSB7CiAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfbGlzdF9jb21wbGV0ZScsCiAgICAgICAgYXhQcm9kdWN0TGlzdDogYXhQcm9kdWN0TGlzdCwKICAgICAgfSk7CiAgICB9CiAgfSk7CgogIGZ1bmN0aW9uIGNsaWNrUHJvZHVjdChwcm9kdWN0RGF0YSkge30KPC9zY3JpcHQ+CgoKPHNjcmlwdCBkZWZlcj4KICBmdW5jdGlvbiBzd3ltQ2FsbGJhY2tGbihzd2F0KSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzd3ltOmNvbGxlY3Rpb25zLWxvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgc3dhdC5pbml0aWFsaXplQWN0aW9uQnV0dG9ucygnPDxDb2xsZWN0aW9ucyBHcmlkIFBBUkVOVCBTZWxlY3RvciA+PicpOwogICAgfSk7CiAgfQogIGlmICghd2luZG93LlN3eW1DYWxsYmFja3MpIHsKICAgIHdpbmRvdy5Td3ltQ2FsbGJhY2tzID0gW107CiAgfQogIHdpbmRvdy5Td3ltQ2FsbGJhY2tzLnB1c2goc3d5bUNhbGxiYWNrRm4pOwo8L3NjcmlwdD4KCgogICAgCiAgICAKICAgIDxkaXYgY2xhc3M9ImNhcmQtd3JhcHBlciBwcm9kdWN0LW1pbmlhdHVyZSBwcm9kdWN0LWNhcmQtd3JhcHBlciB1bmRlcmxpbmUtbGlua3MtaG92ZXIgZ3RtLWNhcmQtcHJvZHVjdCBndG0tY2FyZC1wcm9kdWN0LTJ4LXN3ZWV0LWxpcHMtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2IiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICIyWCBTV0VFVCBMSVBTIiwKICAgICAgICAgICAgIml0ZW1faWQiOiAiSVRBX1BSREUwMDAzNjEwNlciLAogICAgICAgICAgICAicHJpY2UiOiAi4oKsOSw5MCIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIlN0YW5ob21lIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIiIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MiI6ICJsaXBzLWNhcmUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTMiOiBudWxsLAogICAgICAgICAgICAiaXRlbV92YXJpYW50IjogIkRlZmF1bHQgVGl0bGUiCiAgICAgICAgfQogICAgJz4KICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0iCiAgICAgICAgY2FyZCBjYXJkLS1zdGFuZGFyZAogICAgICAgICBjYXJkLS1tZWRpYQogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAiCiAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICA+CiAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iY2FyZF9faW5uZXIgY29sb3ItYmFja2dyb3VuZC0xIGdyYWRpZW50IHJhdGlvIgogICAgICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgICAgICA+PGRpdiBjbGFzcz0iY2FyZF9fbWVkaWEiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYSBtZWRpYS0tdHJhbnNwYXJlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Jjc2V0PSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwNl8xYTg2YTFjMS00YjA1LTQyZjctOTA1ZS1kMWE0YjRjZjRhYmQuanBnP3Y9MTczMDM4MTU5NyZ3aWR0aD0xNjUgMTY1dywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwNl8xYTg2YTFjMS00YjA1LTQyZjctOTA1ZS1kMWE0YjRjZjRhYmQuanBnP3Y9MTczMDM4MTU5NyZ3aWR0aD0zNjAgMzYwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwNl8xYTg2YTFjMS00YjA1LTQyZjctOTA1ZS1kMWE0YjRjZjRhYmQuanBnP3Y9MTczMDM4MTU5NyZ3aWR0aD01MzMgNTMzdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwNl8xYTg2YTFjMS00YjA1LTQyZjctOTA1ZS1kMWE0YjRjZjRhYmQuanBnP3Y9MTczMDM4MTU5NyZ3aWR0aD03MjAgNzIwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwNl8xYTg2YTFjMS00YjA1LTQyZjctOTA1ZS1kMWE0YjRjZjRhYmQuanBnP3Y9MTczMDM4MTU5NyZ3aWR0aD05NDAgOTQwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwNl8xYTg2YTFjMS00YjA1LTQyZjctOTA1ZS1kMWE0YjRjZjRhYmQuanBnP3Y9MTczMDM4MTU5NyZ3aWR0aD0xMDY2IDEwNjZ3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTA2XzFhODZhMWMxLTRiMDUtNDJmNy05MDVlLWQxYTRiNGNmNGFiZC5qcGc/dj0xNzMwMzgxNTk3IDEyMDB3CiAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0iLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYxMDZfMWE4NmExYzEtNGIwNS00MmY3LTkwNWUtZDFhNGI0Y2Y0YWJkLmpwZz92PTE3MzAzODE1OTcmd2lkdGg9NTMzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz0iKG1pbi13aWR0aDogMTYwMHB4KSAzNjdweCwgKG1pbi13aWR0aDogOTkwcHgpIGNhbGMoKDEwMHZ3IC0gMTMwcHgpIC8gNCksIChtaW4td2lkdGg6IDc1MHB4KSBjYWxjKCgxMDB2dyAtIDEyMHB4KSAvIDMpLCBjYWxjKCgxMDB2dyAtIDM1cHgpIC8gMikiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD0iMlggU1dFRVQgTElQUyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im1vdGlvbi1yZWR1Y2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF85ODE5MDk4MjE4ODI5IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9Ijk4MTkwOTgyMTg4MjkiIGRhdGEtdmFyaWFudC1pZD0iNTA0NjQ1OTIxNjcyNDUiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzLzJ4LXN3ZWV0LWxpcHMiPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19iYWRnZSB0b3AgbGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPjxkaXYgY2xhc3M9ImNhcmRfX3R5cGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhbmhvbWUKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHAgY2xhc3M9ImNhcmRfX2hlYWRpbmcgaDUiICBpZD0idGl0bGUtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5ODIxODgyOSIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvMngtc3dlZXQtbGlwcyIgaWQ9IkNhcmRMaW5rLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTk4MTkwOTgyMTg4MjkiIGNsYXNzPSJmdWxsLXVuc3R5bGVkLWxpbmsgZnVsbC11bnN0eWxlZC1saW5rLXByb2R1Y3QiIGFyaWEtbGFiZWxsZWRieT0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5ODIxODgyOSBCYWRnZS10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi05ODE5MDk4MjE4ODI5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCAyIFN3ZWV0IExpcHMgCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDJYIFNXRUVUIExJUFMKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWluZm9ybWF0aW9uIj48c3BhbiBjbGFzcz0iY2FwdGlvbi1sYXJnZSBsaWdodCI+PC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24tZm9ybS1yYXRpbmctcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nLXByaWNlIj4KPGRpdgogIGNsYXNzPSIKICAgIHByaWNlICIKPgogIDxkaXYgY2xhc3M9InByaWNlX19jb250YWluZXIiPjxkaXYgY2xhc3M9InByaWNlX19yZWd1bGFyIj48c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gZGkgbGlzdGlubzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgIOKCrDksOTAKICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZV9fc2FsZSI+CiAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gc2NvbnRhdG88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXNhbGUgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAg4oKsOSw5MAogICAgICA8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIGRpIGxpc3Rpbm88L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgPC9zPgogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxzbWFsbCBjbGFzcz0idW5pdC1wcmljZSBjYXB0aW9uIGhpZGRlbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPlByZXp6byB1bml0YXJpbzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAgPHNwYW4+PC9zcGFuPgogICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPiZuYnNwO3BlciZuYnNwOzwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvc3Bhbj4KICAgIDwvc21hbGw+CiAgPC9kaXY+PC9kaXY+Cgo8L2Rpdj48YSBocmVmPSIvcHJvZHVjdHMvMngtc3dlZXQtbGlwcyIgY2xhc3M9InF1aWNrLWFkZCBxdWljay1hZGQtZXllIHF1aWNrLWFkZC1tb2JpbGUgZXh0cmEtbGFyZ2UtdXAtaGlkZSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iaWNvbiBpY29uLWV5ZSIgd2lkdGg9IjI0Ljc2NCIgaGVpZ2h0PSIxMy4zMTgiPgogIDxnIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iLjciIGNsaXAtcGF0aD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIj4KICA8cGF0aCBkPSJNMTAuNDguNDRoLjAzN2ExMS45ODMgMTEuOTgzIDAgMCAxIDUuNjQxIDEuNDI0QTEyLjI1MyAxMi4yNTMgMCAwIDEgMTguNSAzLjQ5N2ExMi40NTcgMTIuNDU3IDAgMCAxIDEuNzM0IDEuODk0IDEyLjQyMiAxMi40MjIgMCAwIDEtMS43MjggMi4xMDYgMTIuMDc3IDEyLjA3NyAwIDAgMS0yLjM3OSAxLjgxIDExLjY3NiAxMS42NzYgMCAwIDEtMi43NzEgMS4xNjEgMTEuNiAxMS42IDAgMCAxLTMuMDYzLjQxaC0uMDM5YTExLjYxMyAxMS42MTMgMCAwIDEtMi45NzYtLjQgMTEuNjYzIDExLjY2MyAwIDAgMS0yLjctMS4xMDYgMTIuMDQ3IDEyLjA0NyAwIDAgMS0yLjMzNS0xLjcxNyAxMi40IDEyLjQgMCAwIDEtMS43MTItMiAxMi40NjQgMTIuNDY0IDAgMCAxIDEuNzUzLTIgMTIuMjcxIDEyLjI3MSAwIDAgMSAyLjM4OC0xLjcyMyAxMS45ODIgMTEuOTgyIDAgMCAxIDUuOC0xLjQ5M1ptMC0uNDRBMTIuNTg3IDEyLjU4NyAwIDAgMCAwIDUuNjU1YTEyLjMgMTIuMyAwIDAgMCAxMC4yNTMgNS42NjNoLjA0YTEyLjMyNCAxMi4zMjQgMCAwIDAgMTAuNDcxLTUuOTQyQTEyLjU3NSAxMi41NzUgMCAwIDAgMTAuNTE4LS4wMDNoLS4wNDEiLz4KICA8cGF0aCBkPSJNMTAuMzgyLjczNGE0Ljc0MSA0Ljc0MSAwIDAgMSAyLjcuODM5IDQuODg5IDQuODg5IDAgMCAxIC43MTUuNiA0Ljk1IDQuOTUgMCAwIDEgMS4zMTkgMi40OTMgNS4wOCA1LjA4IDAgMCAxIDAgMS45OTEgNC45NDggNC45NDggMCAwIDEtMS4zMTkgMi40OTMgNC44ODkgNC44ODkgMCAwIDEtLjcxNS42IDQuOCA0LjggMCAwIDEtLjgyLjQ1MyA0Ljc0OSA0Ljc0OSAwIDAgMS0zLjc1MyAwIDQuOCA0LjggMCAwIDEtLjgyLS40NTMgNC45MTUgNC45MTUgMCAwIDEtMS4zMDYtMS4zMzEgNC45NDkgNC45NDkgMCAwIDEtLjcyOC0xLjc2MyA1LjA4IDUuMDggMCAwIDEgMC0xLjk5MSA0Ljk0NCA0Ljk0NCAwIDAgMSAxLjMxOS0yLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LS42IDQuOCA0LjggMCAwIDEgLjgyLS40NTMgNC43MyA0LjczIDAgMCAxIDEuODc3LS4zODZtMC0uNWE1LjQyOSA1LjQyOSAwIDEgMCA1LjMzIDUuNDI5IDUuMzggNS4zOCAwIDAgMC01LjMzLTUuNDI5Ii8+CiAgPHBhdGggZD0iTTEzLjA4MyA1Ljc1OWEyLjY4MyAyLjY4MyAwIDEgMS0yLjY4Mi0yLjczMiAyLjcwNyAyLjcwNyAwIDAgMSAyLjY4MiAyLjczMiIvPgogIDwvZz4KPC9zdmc+CiAgPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50LWhvdmVyIj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0Xzk4MTkwOTgyMTg4MjkiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iOTgxOTA5ODIxODgyOSIgZGF0YS12YXJpYW50LWlkPSI1MDQ2NDU5MjE2NzI0NSIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuaXQvcHJvZHVjdHMvMngtc3dlZXQtbGlwcyI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgMiBTd2VldCBMaXBzCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICAyWCBTV0VFVCBMSVBTCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIGNhcmRfX3ZhcmlhbnQta2V5X3BvaW50cyI+PGxpPjxzcGFuPklkcmF0YSBlIHByb3RlZ2dlIGxlIGxhYmJyYS48L3NwYW4+PC9saT48bGk+PHNwYW4+Rm9ybXVsYSBhIGJhc2UgZGkgYnVycm8gZGkga2FyaXTDqS48L3NwYW4+PC9saT48bGk+PHNwYW4+Q29udGllbmUgcGnDuSBkZWwgOTYlIGQnaW5ncmVkaWVudGkgZGkgb3JpZ2luZSBuYXR1cmFsZS48L3NwYW4+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9InF1aWNrLWFkZCBuby1qcy1oaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Byb2R1Y3RzLzJ4LXN3ZWV0LWxpcHMiIGNsYXNzPSJxdWljay1hZGRfX2xpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InF1aWNrLWFkZF9fc3VibWl0IGJ1dHRvbiBidXR0b24tLWZ1bGwtd2lkdGggYnV0dG9uLS1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVkZXJlIGlsIHByb2RvdHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4=
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LXNvZnQtc2hvd2VyLWh5ZHJhLWhhbmQtcGx1bS1wZWMtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdTT0ZUIFNIT1dFUiArIEhZRFJBIEhBTkQgUExVTSAmIFBFQycsCiAgICAgIGl0ZW1faWQ6ICdJVEFfUFJERTAwMDM2MTA3VycsCiAgICAgIHByaWNlOiAn4oKsMTQsOTAnLAogICAgICBpdGVtX2JyYW5kOiAnU3RhbmhvbWUnLAogICAgICBpdGVtX2NhdGVnb3J5MTogJ1N0YW5ob21lJywKICAgICAgaXRlbV9jYXRlZ29yeTI6ICdDdXJhIGRlbCBjb3JwbycsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogICAgLy8gU2VuZCAiZmluaXNoZWQiIGV2ZW50CiAgICBpZiAoYXhQcm9kdWN0TGlzdC5sZW5ndGggPT09IHdpbmRvdy50aGVtZS5pdGVtc19jb3VudCkgewogICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2xpc3RfY29tcGxldGUnLAogICAgICAgIGF4UHJvZHVjdExpc3Q6IGF4UHJvZHVjdExpc3QsCiAgICAgIH0pOwogICAgfQogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgcHJvZHVjdC1taW5pYXR1cmUgcHJvZHVjdC1jYXJkLXdyYXBwZXIgdW5kZXJsaW5lLWxpbmtzLWhvdmVyIGd0bS1jYXJkLXByb2R1Y3QgZ3RtLWNhcmQtcHJvZHVjdC1zb2Z0LXNob3dlci1oeWRyYS1oYW5kLXBsdW0tcGVjLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiIiBndG0tY2FyZC1kYXRhPScKICAgICAgICB7CiAgICAgICAgICAgICJpdGVtX25hbWUiOiAiU09GVCBTSE9XRVIgKyBIWURSQSBIQU5EIFBMVU0gJiBQRUMiLAogICAgICAgICAgICAiaXRlbV9pZCI6ICJJVEFfUFJERTAwMDM2MTA3VyIsCiAgICAgICAgICAgICJwcmljZSI6ICLigqwxNCw5MCIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIlN0YW5ob21lIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIiIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MiI6ICJib2R5IiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkzIjogbnVsbCwKICAgICAgICAgICAgIml0ZW1fdmFyaWFudCI6ICJEZWZhdWx0IFRpdGxlIgogICAgICAgIH0KICAgICc+CiAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9IgogICAgICAgIGNhcmQgY2FyZC0tc3RhbmRhcmQKICAgICAgICAgY2FyZC0tbWVkaWEKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIgogICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNhcmRfX2lubmVyIGNvbG9yLWJhY2tncm91bmQtMSBncmFkaWVudCByYXRpbyIKICAgICAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICAgICAgPjxkaXYgY2xhc3M9ImNhcmRfX21lZGlhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEgbWVkaWEtLXRyYW5zcGFyZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY3NldD0iLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYxMDdfYjMyN2Y3MTQtYmE4Zi00ZmIyLTg0ZjAtYTVlYTE4ZTlmMjk0LmpwZz92PTE3MzAzNzY4NjQmd2lkdGg9MTY1IDE2NXcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYxMDdfYjMyN2Y3MTQtYmE4Zi00ZmIyLTg0ZjAtYTVlYTE4ZTlmMjk0LmpwZz92PTE3MzAzNzY4NjQmd2lkdGg9MzYwIDM2MHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYxMDdfYjMyN2Y3MTQtYmE4Zi00ZmIyLTg0ZjAtYTVlYTE4ZTlmMjk0LmpwZz92PTE3MzAzNzY4NjQmd2lkdGg9NTMzIDUzM3csLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYxMDdfYjMyN2Y3MTQtYmE4Zi00ZmIyLTg0ZjAtYTVlYTE4ZTlmMjk0LmpwZz92PTE3MzAzNzY4NjQmd2lkdGg9NzIwIDcyMHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYxMDdfYjMyN2Y3MTQtYmE4Zi00ZmIyLTg0ZjAtYTVlYTE4ZTlmMjk0LmpwZz92PTE3MzAzNzY4NjQmd2lkdGg9OTQwIDk0MHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMzYxMDdfYjMyN2Y3MTQtYmE4Zi00ZmIyLTg0ZjAtYTVlYTE4ZTlmMjk0LmpwZz92PTE3MzAzNzY4NjQmd2lkdGg9MTA2NiAxMDY2dywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18zNjEwN19iMzI3ZjcxNC1iYThmLTRmYjItODRmMC1hNWVhMThlOWYyOTQuanBnP3Y9MTczMDM3Njg2NCAxMjAwdwogICAgICAgICAgICAgICAgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9Ii8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzM2MTA3X2IzMjdmNzE0LWJhOGYtNGZiMi04NGYwLWE1ZWExOGU5ZjI5NC5qcGc/dj0xNzMwMzc2ODY0JndpZHRoPTUzMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9IihtaW4td2lkdGg6IDE2MDBweCkgMzY3cHgsIChtaW4td2lkdGg6IDk5MHB4KSBjYWxjKCgxMDB2dyAtIDEzMHB4KSAvIDQpLCAobWluLXdpZHRoOiA3NTBweCkgY2FsYygoMTAwdncgLSAxMjBweCkgLyAzKSwgY2FsYygoMTAwdncgLSAzNXB4KSAvIDIpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9IlNPRlQgU0hPV0VSICsgSFlEUkEgSEFORCBQTFVNICZhbXA7IFBFQyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im1vdGlvbi1yZWR1Y2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF85ODE5MDk4MjUxNTk3IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9Ijk4MTkwOTgyNTE1OTciIGRhdGEtdmFyaWFudC1pZD0iNTA0NjQ1OTIyMDAwMTMiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzL3NvZnQtc2hvd2VyLWh5ZHJhLWhhbmQtcGx1bS1wZWMiPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19iYWRnZSB0b3AgbGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPjxkaXYgY2xhc3M9ImNhcmRfX3R5cGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhbmhvbWUKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHAgY2xhc3M9ImNhcmRfX2hlYWRpbmcgaDUiICBpZD0idGl0bGUtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5ODI1MTU5NyIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvc29mdC1zaG93ZXItaHlkcmEtaGFuZC1wbHVtLXBlYyIgaWQ9IkNhcmRMaW5rLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTk4MTkwOTgyNTE1OTciIGNsYXNzPSJmdWxsLXVuc3R5bGVkLWxpbmsgZnVsbC11bnN0eWxlZC1saW5rLXByb2R1Y3QiIGFyaWEtbGFiZWxsZWRieT0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItOTgxOTA5ODI1MTU5NyBCYWRnZS10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi05ODE5MDk4MjUxNTk3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCBTb2Z0IFNob3dlciBlIEh5ZHJhIEhhbmQgTmF0YWxlIAogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBTT0ZUIFNIT1dFUiArIEhZRFJBIEhBTkQgUExVTSAmYW1wOyBQRUMKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWluZm9ybWF0aW9uIj48c3BhbiBjbGFzcz0iY2FwdGlvbi1sYXJnZSBsaWdodCI+PC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24tZm9ybS1yYXRpbmctcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nLXByaWNlIj4KPGRpdgogIGNsYXNzPSIKICAgIHByaWNlICIKPgogIDxkaXYgY2xhc3M9InByaWNlX19jb250YWluZXIiPjxkaXYgY2xhc3M9InByaWNlX19yZWd1bGFyIj48c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gZGkgbGlzdGlubzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgIOKCrDE0LDkwCiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2VfX3NhbGUiPgogICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIHNjb250YXRvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1zYWxlIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIOKCrDE0LDkwCiAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gZGkgbGlzdGlubzwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxzIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICA8L3M+CiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPHNtYWxsIGNsYXNzPSJ1bml0LXByaWNlIGNhcHRpb24gaGlkZGVuIj4KICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+UHJlenpvIHVuaXRhcmlvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cGVyJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjxhIGhyZWY9Ii9wcm9kdWN0cy9zb2Z0LXNob3dlci1oeWRyYS1oYW5kLXBsdW0tcGVjIiBjbGFzcz0icXVpY2stYWRkIHF1aWNrLWFkZC1leWUgcXVpY2stYWRkLW1vYmlsZSBleHRyYS1sYXJnZS11cC1oaWRlIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJpY29uIGljb24tZXllIiB3aWR0aD0iMjQuNzY0IiBoZWlnaHQ9IjEzLjMxOCI+CiAgPGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNyIgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiPgogIDxwYXRoIGQ9Ik0xMC40OC40NGguMDM3YTExLjk4MyAxMS45ODMgMCAwIDEgNS42NDEgMS40MjRBMTIuMjUzIDEyLjI1MyAwIDAgMSAxOC41IDMuNDk3YTEyLjQ1NyAxMi40NTcgMCAwIDEgMS43MzQgMS44OTQgMTIuNDIyIDEyLjQyMiAwIDAgMS0xLjcyOCAyLjEwNiAxMi4wNzcgMTIuMDc3IDAgMCAxLTIuMzc5IDEuODEgMTEuNjc2IDExLjY3NiAwIDAgMS0yLjc3MSAxLjE2MSAxMS42IDExLjYgMCAwIDEtMy4wNjMuNDFoLS4wMzlhMTEuNjEzIDExLjYxMyAwIDAgMS0yLjk3Ni0uNCAxMS42NjMgMTEuNjYzIDAgMCAxLTIuNy0xLjEwNiAxMi4wNDcgMTIuMDQ3IDAgMCAxLTIuMzM1LTEuNzE3IDEyLjQgMTIuNCAwIDAgMS0xLjcxMi0yIDEyLjQ2NCAxMi40NjQgMCAwIDEgMS43NTMtMiAxMi4yNzEgMTIuMjcxIDAgMCAxIDIuMzg4LTEuNzIzIDExLjk4MiAxMS45ODIgMCAwIDEgNS44LTEuNDkzWm0wLS40NEExMi41ODcgMTIuNTg3IDAgMCAwIDAgNS42NTVhMTIuMyAxMi4zIDAgMCAwIDEwLjI1MyA1LjY2M2guMDRhMTIuMzI0IDEyLjMyNCAwIDAgMCAxMC40NzEtNS45NDJBMTIuNTc1IDEyLjU3NSAwIDAgMCAxMC41MTgtLjAwM2gtLjA0MSIvPgogIDxwYXRoIGQ9Ik0xMC4zODIuNzM0YTQuNzQxIDQuNzQxIDAgMCAxIDIuNy44MzkgNC44ODkgNC44ODkgMCAwIDEgLjcxNS42IDQuOTUgNC45NSAwIDAgMSAxLjMxOSAyLjQ5MyA1LjA4IDUuMDggMCAwIDEgMCAxLjk5MSA0Ljk0OCA0Ljk0OCAwIDAgMS0xLjMxOSAyLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMS0uNzE1LjYgNC44IDQuOCAwIDAgMS0uODIuNDUzIDQuNzQ5IDQuNzQ5IDAgMCAxLTMuNzUzIDAgNC44IDQuOCAwIDAgMS0uODItLjQ1MyA0LjkxNSA0LjkxNSAwIDAgMS0xLjMwNi0xLjMzMSA0Ljk0OSA0Ljk0OSAwIDAgMS0uNzI4LTEuNzYzIDUuMDggNS4wOCAwIDAgMSAwLTEuOTkxIDQuOTQ0IDQuOTQ0IDAgMCAxIDEuMzE5LTIuNDkzIDQuODg5IDQuODg5IDAgMCAxIC43MTUtLjYgNC44IDQuOCAwIDAgMSAuODItLjQ1MyA0LjczIDQuNzMgMCAwIDEgMS44NzctLjM4Nm0wLS41YTUuNDI5IDUuNDI5IDAgMSAwIDUuMzMgNS40MjkgNS4zOCA1LjM4IDAgMCAwLTUuMzMtNS40MjkiLz4KICA8cGF0aCBkPSJNMTMuMDgzIDUuNzU5YTIuNjgzIDIuNjgzIDAgMSAxLTIuNjgyLTIuNzMyIDIuNzA3IDIuNzA3IDAgMCAxIDIuNjgyIDIuNzMyIi8+CiAgPC9nPgo8L3N2Zz4KICA8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQtaG92ZXIiPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfOTgxOTA5ODI1MTU5NyIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSI5ODE5MDk4MjUxNTk3IiBkYXRhLXZhcmlhbnQtaWQ9IjUwNDY0NTkyMjAwMDEzIiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5pdC9wcm9kdWN0cy9zb2Z0LXNob3dlci1oeWRyYS1oYW5kLXBsdW0tcGVjIj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2hlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCBTb2Z0IFNob3dlciBlIEh5ZHJhIEhhbmQgTmF0YWxlCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBTT0ZUIFNIT1dFUiArIEhZRFJBIEhBTkQgUExVTSAmYW1wOyBQRUMKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+RGV0ZXJnZSBpbCB2aXNvIGUgaWwgY29ycG8gc2VuemEgc2VjY2FyZSBsYSBwZWxsZS48L3NwYW4+PC9saT48bGk+PHNwYW4+SWRlYWxlIHBlciBpZHJhdGFyZSBsZSBtYW5pIG9nbmkgZ2lvcm5vLjwvc3Bhbj48L2xpPjxsaT48c3Bhbj5Qcm9mdW1vIGZydXR0YXRvIGUgZ29sb3NvIGRpIHBydWduYSBlIG5vY2kgcGVjYW4sIHN1IHBlbGxlIGUgbWFuaSE8L3NwYW4+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9InF1aWNrLWFkZCBuby1qcy1oaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Byb2R1Y3RzL3NvZnQtc2hvd2VyLWh5ZHJhLWhhbmQtcGx1bS1wZWMiIGNsYXNzPSJxdWljay1hZGRfX2xpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InF1aWNrLWFkZF9fc3VibWl0IGJ1dHRvbiBidXR0b24tLWZ1bGwtd2lkdGggYnV0dG9uLS1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVkZXJlIGlsIHByb2RvdHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4=