CINXE.COM
Leading Fournisseur de Solutions Solaires Innovantes en Tunisie | FusionSolar Tunisia
<!DOCTYPE html> <html lang="en" data-region="tn"> <head id="Head1"><meta name="keywords" content="Leading Fournisseur de Solutions Solaires Innovantes en Tunisie"><meta name="description" content="FusionSolar est un leading fournisseur de solutions solaires innovantes en Tunisie, en partenariat avec des installateurs, des services publics et d'autres parties prenantes professionnels pour promouvoir l'utilisation durable et efficace de l'énergie renouvelable. Nous pouvons offrir des solutions solaires puissantes adaptées aux besoins de nos clients en Tunisie et au-delà."><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title> Leading Fournisseur de Solutions Solaires Innovantes en Tunisie | FusionSolar Tunisia </title> <meta name="applicable-device" content="pc,mobile"> <link rel="canonical" href="https://solar.huawei.com/tn/"> <link rel="stylesheet" href="/Assets/Solar/v4/css/aui3.css?ver=202411131551"> <link rel="stylesheet" href="/Assets/Solar/v4/css/common.css?ver=202411131551"> <link rel="stylesheet" type="text/css" href="/-/media/SolarV4/solar-version2/common/seo/common-style.css?ver=202411131551"> <style> .nav-top-right .js-header-login,.nav-top-right .js-header-account,.nav-top-right .js-header-logout,.container .js-mheader-login,.container .js-mheader-account{ display:none !important; } </style> <link rel="stylesheet" type="text/css" href="/Assets/Solar/v4/js/utils/swiper-new.min.css?ver=202411131551"> <link rel="stylesheet" type="text/css" href="/Assets/Solar/v4/css/index.css?ver=202411131551"> <style type="text/css"> .home_global .home_glb_content { will-change: transform; } /* 修改首页增加一屏轮播的被切情况 -- 开始 */ .dig_banner .dig_swiper_picture>img { height: auto; } @media screen and (max-width: 1440px) { .dig_banner .dig_swiper_picture>img { height: auto; } } .dig_banner { height: auto; } /* 修改首页增加一屏轮播的被切情况 -- 结束 */ </style><link rel="Shortcut Icon" href="/Assets/solar/v4/img/img_ent_en_logo_ico.ico"></head> <body class="aui3 ev_no_wcag"> <form method="post" action="/tn" id="form1"> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTc0MDY0NDU1Mw8WAh4TVmFsaWRhdGVSZXF1ZXN0TW9kZQIBFgYCAg9kFgJmD2QWAmYPZBYMAgEPFgIeBFRleHQFjDA8ZGl2IGNsYXNzPSJuYXYtYWxsTGFuZ0JveCI+CiAgICA8ZGl2IGNsYXNzPSJpY29uLWNsb3NlIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImN1cnItbGFuZyI+PHNwYW4gY2xhc3M9Imljb24tY3VyciI+PC9zcGFuPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9lbiI+RnVzaW9uU29sYXIgR2xvYmFsIC8gRW5nbGlzaDwvYT4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iYWxsTGFuZyI+CiAgICAgICAgPGRpdiBjbGFzcz0iYXJlYUl0ZW0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhVGV4dCI+QXNpYSBQYWNpZmljPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdMaXN0Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vYXUiPkF1c3RyYWxpYSAvIEVuZ2xpc2g8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL2NuIj5DaGluYSAvIOeugOS9k+S4reaWhzwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vaGsiPkhvbmcgS29uZywgQ2hpbmEgLyDnuYHpq5TkuK3mloc8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL2lkIj5JbmRvbmVzaWEgLyBJbmRvbmVzaWFuPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9qcCI+SmFwYW4gLyDml6XmnKzoqp48L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL215Ij5NYWxheXNpYSAvIEVuZ2xpc2g8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3BoIj5QaGlsaXBwaW5lcyAvIEVuZ2xpc2g8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3NnIj5TaW5nYXBvcmUgLyBFbmdsaXNoPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9rciI+U291dGggS29yZWEgLyDtlZzqta3slrQ8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3RoIj5UaGFpbGFuZCAvIOC5hOC4l+C4ojwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vdm4iPlZpZXRuYW0gLyBFbmdsaXNoPC9hPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhSXRlbSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFyZWFUZXh0Ij5FdXJvcGU8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0xpc3QiPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vYXQiPkF1c3RyaWEgLyBEZXV0c2NoPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9iZS1mciI+QmVsZ2l1bSAvIEZyYW7Dp2FpczwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vYmUiPkJlbGdpdW0gLyBOZWRlcmxhbmRzPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9iZyI+QnVsZ2FyaWEgLyDQsdGK0LvQs9Cw0YDRgdC60Lg8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL2hyIj5Dcm9hdGlhIC8gaHJ2YXRza2k8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL2N6Ij5DemVjaGlhIC8gxI1lxaF0aW5hPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9kayI+RGVubWFyayAvIERhbnNrPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9mciI+RnJhbmNlIC8gRnJhbsOnYWlzPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9kZSI+R2VybWFueSAvIERldXRzY2g8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL2dyIj5HcmVlY2UgLyDOlc67zrvOt869zrnOus6sPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9odSI+SHVuZ2FyeSAvIEh1bmdhcmlhbjwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vaWUiPklyZWxhbmQgLyBFbmdsaXNoPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9pdCI+SXRhbHkgLyBJdGFsaWFubzwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vbmwiPk5ldGhlcmxhbmRzIC8gRHV0Y2g8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3BsIj5Qb2xhbmQgLyBQb2xpc2g8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3B0Ij5Qb3J0dWdhbCAvIHBvcnR1Z3XDqnM8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3JvIj5Sb21hbmlhIC8gcm9tw6JuxIM8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3NrIj5TbG92YWtpYSAvIHNsb3ZlbsSNaW5hPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9lcyI+U3BhaW4gLyBFc3Bhw7FvbDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vc2UiPlN3ZWRlbiAvIFN2ZW5za2E8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL2NoIj5Td2l0emVybGFuZCAvIERldXRzY2g8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL2NoLWZyIj5Td2l0emVybGFuZCAvIEZyYW7Dp2FpczwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vdHIiPlTDvHJraXllIC8gVMO8cmvDp2U8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3VhIj5Va3JhaW5lIC8g0KPQutGA0LDRl9C90LA8L2E+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFyZWFJdGVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXJlYVRleHQiPkxhdGluIEFtZXJpY2E8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0xpc3QiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9iciI+QnJhemlsIC8gUG9ydHVndWVzZTwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vbGF0YW0iPkxhdGluIEFtZXJpY2EgLyBFc3Bhw7FvbDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vbXgiPk3DqXhpY28gLyBFc3Bhw7FvbDwvYT48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYXJlYUl0ZW0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhVGV4dCI+TWlkZGxlIEVhc3QgJmFtcDsgQWZyaWNhPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdMaXN0Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vZWciPkVneXB0IC8g2KfZhNmE2LrYqSDYp9mE2LnYsdio2YrYqTwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20va2UiPktlbnlhIC8gRW5nbGlzaDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vbWEiPk1vcm9jY28gLyBGcmFuw6dhaXM8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL25nIj5OaWdlcmlhIC8gRW5nbGlzaDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vcGsiPlBha2lzdGFuIC8gRW5nbGlzaDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vc2EiPlNhdWRpIEFyYWJpYSAvINin2YTZhNi62Kkg2KfZhNi52LHYqNmK2KkgPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9zYS1lbiI+U2F1ZGkgQXJhYmlhIC8gRW5nbGlzaDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vemEiPlNvdXRoIEFmcmljYSAvIEVuZ2xpc2g8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3RuIj5UdW5pc2lhIC8gRnJhbsOnYWlzPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9hZSI+VUFFIC8g2KfZhNmE2LrYqSDYp9mE2LnYsdio2YrYqTwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vYWUtZW4iPlVBRSAvIEVuZ2xpc2g8L2E+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgIDwvZGl2Pgo8L2Rpdj5kAgIPFgIeC18hSXRlbUNvdW50AgYWDGYPZBYEZg8VBA8vdG4vaG9tZS1vd25lcnMA2wN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdGaXJzdF9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzogJ0ZpcnN0X05hdmlnYXRpb24nLCdldmVudExhYmVsJzonSG9tZSBPd25lcnMnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319CU1hIG1haXNvbmQCAQ8WAh8CAv////8PZAIBD2QWBGYPFQQTL3RuL2J1c2luZXNzLW93bmVycwDfA3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0ZpcnN0X05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOiAnRmlyc3RfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidCdXNpbmVzcyBPd25lcnMnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319CVBNRSAmIFRQRWQCAQ8WAh8CAv////8PZAICD2QWBGYPFQQYL3RuL3V0aWxpdHktcGxhbnQtb3duZXJzAOQDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnRmlyc3RfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6ICdGaXJzdF9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1V0aWxpdHkgUGxhbnQgT3duZXJzJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQ5HcmFuZHMgUHJvamV0c2QCAQ8WAh8CAv////8PZAIDD2QWBGYPFQQdL3RuL3Byb2Zlc3Npb25hbHMvcmVzaWRlbnRpYWwA3QN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdGaXJzdF9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzogJ0ZpcnN0X05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUHJvZmVzc2lvbmFscycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0ZUHJvZmVzc2lvbm5lbHMgZHUgc2VjdGV1cmQCAQ8WBB8CAgYeB1Zpc2libGVnFgxmD2QWAmYPFQQdL3RuL3Byb2Zlc3Npb25hbHMvcmVzaWRlbnRpYWwAggR0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1Byb2Zlc3Npb25hbHMnKycrJysnUmVzaWRlbnRpYWwgU21hcnQgUFYgJiBFU1MgU29sdXRpb24nKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319Qk5vcyBzb2x1dGlvbnMgcGhvdG92b2x0YcOvcXVlcyBldCBkZSBzdG9ja2FnZSBwb3VyIGxlIHLDqXNpZGVudGllbGQCAQ9kFgJmDxUEFS90bi9wcm9mZXNzaW9uYWxzL2MtaQD5A3RyeSB7ICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidQcm9mZXNzaW9uYWxzJysnKycrJ0MmSSBTbWFydCBQViAmIEVTUyBTb2x1dGlvbicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX1OTm9zIHNvbHV0aW9ucyBwaG90b3ZvbHRhw69xdWVzIGV0IGRlIHN0b2thZ2UgcG91ciBsZXMgZW50cmVwcmlzZXMgY29tbWVyY2lhbGVzZAICD2QWAmYPFQQZL3RuL3Byb2Zlc3Npb25hbHMvdXRpbGl0eQD4A3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUHJvZmVzc2lvbmFscycrJysnKydVdGlsaXR5IFNtYXJ0IFBWIFNvbHV0aW9uJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fTZOb3Mgc29sdXRpb25zIHBob3Rvdm9sdGHDr3F1ZXMgcG91ciBsZXMgZ3JhbmRzIHByb2pldHNkAgMPZBYCZg8VBBUvdG4vcHJvZmVzc2lvbmFscy9lc3MAgAR0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1Byb2Zlc3Npb25hbHMnKycrJysnVXRpbGl0eSBTbWFydCBTdHJpbmcgRVNTIFNvbHV0aW9uJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fT9Ob3Mgc29sdXRpb25zIGRlIHN0b2NrYWdlIGludGVsbGlnZW50ZXMgcG91ciBsZXMgZ3JhbmRzIHByb2pldHNkAgQPZBYCZg8VBBwvdG4vcHJvZmVzc2lvbmFscy9taWNyby1ncmlkAPgDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidQcm9mZXNzaW9uYWxzJysnKycrJ1NtYXJ0IE1pY3JvLWdyaWQgU29sdXRpb24nKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319I1NvbHV0aW9uIG1pY3JvLXLDqXNlYXUgaW50ZWxsaWdlbnRlZAIFD2QWAmYPFQQdL3RuL3Byb2Zlc3Npb25hbHMvU21hcnREZXNpZ24A7gN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1Byb2Zlc3Npb25hbHMnKycrJysnU21hcnREZXNpZ24gMi4wJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQ9TbWFydERlc2lnbiAyLjBkAgQPZBYEZg8VBCEvdG4vcGFydG5lcnMvcGFydG5lci1pbnRyb2R1Y3Rpb24A2AN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdGaXJzdF9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzogJ0ZpcnN0X05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUGFydG5lcnMnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319C1BhcnRlbmFpcmVzZAIBDxYEHwICBh8DZxYMZg9kFgJmDxUEIS90bi9wYXJ0bmVycy9wYXJ0bmVyLWludHJvZHVjdGlvbgDuA3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUGFydG5lcnMnKycrJysnUGFydG5lciBJbnRyb2R1Y3Rpb24nKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319G1Byw6lzZW50YXRpb24gZHUgcGFydGVuYWlyZWQCAQ9kFgJmDxUEU2h0dHBzOi8vcGFydG5lci5odWF3ZWkuY29tL2VwbHVzLyMvZW4vd2ViL3JlZ2lzdHJhdGlvbi1ndWlkYW5jZT9zb3VyY2U9Y2hhbm5lbC1ob21lBl9ibGFua+kDdHJ5IHsgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1BhcnRuZXJzJysnKycrJ0JlY29tZSBhIFBhcnRuZXInKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319FURldmVuZXogdW4gcGFydGVuYWlyZWQCAg9kFgJmDxUEMGh0dHBzOi8vZGlnaXRhbHBvd2VyLmh1YXdlaS5jb20vcGFydG5lciMvZW4vbWFpbgZfYmxhbmvmA3RyeSB7ICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidQYXJ0bmVycycrJysnKydQb3dlci1QYXJ0bmVyJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRVOb3MgcGFydGVuYWlyZXMtUG93ZXJkAgMPZBYCZg8VBDBodHRwczovL2NvbW11bml0eS5zb2xhci5odWF3ZWkuY29tL3RuL2luZGV4Lmh0bWwGX2JsYW5r7gN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1BhcnRuZXJzJysnKycrJ0luc3RhbGxlcnMgQ29tbXVuaXR5JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fR1Db21tdW5hdXTDqSBkZXMgaW5zdGFsbGF0ZXVyc2QCBA9kFgJmDxUEIS90bi9wYXJ0bmVycy9tYXA/dHlwZT1kaXN0cmlidXRvcgDrA3RyeSB7ICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidQYXJ0bmVycycrJysnKydGaW5kIGEgRGlzdHJpYnV0b3InKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319F1Ryb3V2ZXIgdW4gZGlzdHJpYnV0ZXVyZAIFD2QWAmYPFQQfL3RuL3BhcnRuZXJzL21hcD90eXBlPWluc3RhbGxlcgDqA3RyeSB7ICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidQYXJ0bmVycycrJysnKydGaW5kIGFuIEluc3RhbGxlcicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0XVHJvdXZlciB1biBpbnN0YWxsYXRldXJkAgUPZBYEZg8VBB4vdG4vcHJvZmVzc2lvbmFscy9hbGwtcHJvZHVjdHMA2AN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdGaXJzdF9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzogJ0ZpcnN0X05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUHJvZHVjdHMnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319CFByb2R1aXRzZAIBDxYCHwIC/////w9kAgMPFgIfAgIDFgZmD2QWBGYPFQQXL3RuL3NlcnZpY2Utc3VwcG9ydC90c2MA1wN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdGaXJzdF9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzogJ0ZpcnN0X05hdmlnYXRpb24nLCdldmVudExhYmVsJzonU3VwcG9ydCcrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0KQXNzaXN0YW5jZWQCAQ8WBB8CAgIfA2cWBGYPZBYCZg8VBBcvdG4vc2VydmljZS1zdXBwb3J0L3RzYwDxA3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonU3VwcG9ydCcrJysnKydUZWNobmljYWwgU3VwcG9ydCBDZW50ZXInKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319G0NlbnRyZSBkZSBzdXBwb3J0IHRlY2huaXF1ZWQCAQ9kFgJmDxUEUGh0dHBzOi8vZGlnaXRhbHBvd2VyLmh1YXdlaS5jb20vcm9ib3RjaGF0LyMvaG9tZS9pbmRleD9sYW5nPWZyX0ZSJmRvbWFpbj1zbWFydHB2Bl9ibGFua+cDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidTdXBwb3J0JysnKycrJ09ubGluZSBTdXBwb3J0JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRNBc3Npc3RhbmNlIGVuIGxpZ25lZAIBD2QWBGYPFQQwaHR0cHM6Ly9jb21tdW5pdHkuc29sYXIuaHVhd2VpLmNvbS90bi9pbmRleC5odG1sBl9ibGFua9gDdHJ5IHsgICAgZ3RhZygnZXZlbnQnLCdGaXJzdF9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzogJ0ZpcnN0X05hdmlnYXRpb24nLCdldmVudExhYmVsJzonQ29tbXVuaXR5JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQtDb21tdW5hdXTDqWQCAQ8WAh8CAv////8PZAICD2QWBGYPFQQiaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL2VuL2luZm8vLwZfYmxhbmvYA3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0ZpcnN0X05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOiAnRmlyc3RfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidEb3dubG9hZCcrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0QVMOpbMOpY2hhcmdlbWVudGQCAQ8WBB8CAgIfA2cWBGYPZBYCZg8VBCJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vZW4vaW5mby8vBl9ibGFua+oDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidEb3dubG9hZCcrJysnKydQcm9kdWN0IERvY3VtZW50JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRVEb2N1bWVudGF0aW9uIHByb2R1aXRkAgEPZBYCZg8VBDlodHRwczovL2RpZ2l0YWxwb3dlci5odWF3ZWkuY29tL3Bvd2VyLW1hcmtldGluZy8jL2VuL2hvbWUGX2JsYW5r6QN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J0Rvd25sb2FkJysnKycrJ1Bvd2VyLU1hcmtldGluZycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0RRW5lcmdpZS1NYXJrZXRpbmdkAgQPFgIfAgIBFgJmD2QWAmYPFQQNL3RuL29yZGVyLW5vdwCeA3RyeSB7ICAgIGd0YWcoJ2V2ZW50JywnQnV5X0NsaWNrJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidCdXlfQ2xpY2snLCdldmVudExhYmVsJzonT3JkZXIgTm93JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRRDb21tYW5kZXogbWFpbnRlbmFudGQCBg8WAh8CAgkWEmYPZBYEAgEPFgYeBGhyZWYFDy90bi9ob21lLW93bmVycx4GdGFyZ2V0ZB4Hb25jbGljawXbA3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0ZpcnN0X05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOiAnRmlyc3RfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidIb21lIE93bmVycycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0WAmYPFQEJTWEgbWFpc29uZAIFDxYCHwIC/////w9kAgEPZBYEAgEPFgYfBAUTL3RuL2J1c2luZXNzLW93bmVycx8FZB8GBd8DdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnRmlyc3RfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6ICdGaXJzdF9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J0J1c2luZXNzIE93bmVycycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0WAmYPFQEJUE1FICYgVFBFZAIFDxYCHwIC/////w9kAgIPZBYEAgEPFgYfBAUYL3RuL3V0aWxpdHktcGxhbnQtb3duZXJzHwVkHwYF5AN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdGaXJzdF9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzogJ0ZpcnN0X05hdmlnYXRpb24nLCdldmVudExhYmVsJzonVXRpbGl0eSBQbGFudCBPd25lcnMnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319FgJmDxUBDkdyYW5kcyBQcm9qZXRzZAIFDxYCHwIC/////w9kAgMPZBYGAgEPFgQfBAUMamF2YXNjcmlwdDo7HwYF3QN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdGaXJzdF9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzogJ0ZpcnN0X05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUHJvZmVzc2lvbmFscycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0WAmYPFQEZUHJvZmVzc2lvbm5lbHMgZHUgc2VjdGV1cmQCAw8WAh8DZ2QCBQ8WBB8CAgYfA2cWDAIBD2QWAmYPFQQdL3RuL3Byb2Zlc3Npb25hbHMvcmVzaWRlbnRpYWwAggR0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1Byb2Zlc3Npb25hbHMnKycrJysnUmVzaWRlbnRpYWwgU21hcnQgUFYgJiBFU1MgU29sdXRpb24nKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319Qk5vcyBzb2x1dGlvbnMgcGhvdG92b2x0YcOvcXVlcyBldCBkZSBzdG9ja2FnZSBwb3VyIGxlIHLDqXNpZGVudGllbGQCAg9kFgJmDxUEFS90bi9wcm9mZXNzaW9uYWxzL2MtaQD5A3RyeSB7ICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidQcm9mZXNzaW9uYWxzJysnKycrJ0MmSSBTbWFydCBQViAmIEVTUyBTb2x1dGlvbicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX1OTm9zIHNvbHV0aW9ucyBwaG90b3ZvbHRhw69xdWVzIGV0IGRlIHN0b2thZ2UgcG91ciBsZXMgZW50cmVwcmlzZXMgY29tbWVyY2lhbGVzZAIDD2QWAmYPFQQZL3RuL3Byb2Zlc3Npb25hbHMvdXRpbGl0eQD4A3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUHJvZmVzc2lvbmFscycrJysnKydVdGlsaXR5IFNtYXJ0IFBWIFNvbHV0aW9uJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fTZOb3Mgc29sdXRpb25zIHBob3Rvdm9sdGHDr3F1ZXMgcG91ciBsZXMgZ3JhbmRzIHByb2pldHNkAgQPZBYCZg8VBBUvdG4vcHJvZmVzc2lvbmFscy9lc3MAgAR0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1Byb2Zlc3Npb25hbHMnKycrJysnVXRpbGl0eSBTbWFydCBTdHJpbmcgRVNTIFNvbHV0aW9uJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fT9Ob3Mgc29sdXRpb25zIGRlIHN0b2NrYWdlIGludGVsbGlnZW50ZXMgcG91ciBsZXMgZ3JhbmRzIHByb2pldHNkAgUPZBYCZg8VBBwvdG4vcHJvZmVzc2lvbmFscy9taWNyby1ncmlkAPgDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidQcm9mZXNzaW9uYWxzJysnKycrJ1NtYXJ0IE1pY3JvLWdyaWQgU29sdXRpb24nKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319I1NvbHV0aW9uIG1pY3JvLXLDqXNlYXUgaW50ZWxsaWdlbnRlZAIGD2QWAmYPFQQdL3RuL3Byb2Zlc3Npb25hbHMvU21hcnREZXNpZ24A7gN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1Byb2Zlc3Npb25hbHMnKycrJysnU21hcnREZXNpZ24gMi4wJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQ9TbWFydERlc2lnbiAyLjBkAgQPZBYGAgEPFgQfBAUMamF2YXNjcmlwdDo7HwYF2AN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdGaXJzdF9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzogJ0ZpcnN0X05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUGFydG5lcnMnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319FgJmDxUBC1BhcnRlbmFpcmVzZAIDDxYCHwNnZAIFDxYEHwICBh8DZxYMAgEPZBYCZg8VBCEvdG4vcGFydG5lcnMvcGFydG5lci1pbnRyb2R1Y3Rpb24A7gN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1BhcnRuZXJzJysnKycrJ1BhcnRuZXIgSW50cm9kdWN0aW9uJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRtQcsOpc2VudGF0aW9uIGR1IHBhcnRlbmFpcmVkAgIPZBYCZg8VBFNodHRwczovL3BhcnRuZXIuaHVhd2VpLmNvbS9lcGx1cy8jL2VuL3dlYi9yZWdpc3RyYXRpb24tZ3VpZGFuY2U/c291cmNlPWNoYW5uZWwtaG9tZQZfYmxhbmvpA3RyeSB7ICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidQYXJ0bmVycycrJysnKydCZWNvbWUgYSBQYXJ0bmVyJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRVEZXZlbmV6IHVuIHBhcnRlbmFpcmVkAgMPZBYCZg8VBDBodHRwczovL2RpZ2l0YWxwb3dlci5odWF3ZWkuY29tL3BhcnRuZXIjL2VuL21haW4GX2JsYW5r5gN0cnkgeyAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUGFydG5lcnMnKycrJysnUG93ZXItUGFydG5lcicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0VTm9zIHBhcnRlbmFpcmVzLVBvd2VyZAIED2QWAmYPFQQwaHR0cHM6Ly9jb21tdW5pdHkuc29sYXIuaHVhd2VpLmNvbS90bi9pbmRleC5odG1sBl9ibGFua+4DdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidQYXJ0bmVycycrJysnKydJbnN0YWxsZXJzIENvbW11bml0eScrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0dQ29tbXVuYXV0w6kgZGVzIGluc3RhbGxhdGV1cnNkAgUPZBYCZg8VBCEvdG4vcGFydG5lcnMvbWFwP3R5cGU9ZGlzdHJpYnV0b3IA6wN0cnkgeyAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUGFydG5lcnMnKycrJysnRmluZCBhIERpc3RyaWJ1dG9yJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRdUcm91dmVyIHVuIGRpc3RyaWJ1dGV1cmQCBg9kFgJmDxUEHy90bi9wYXJ0bmVycy9tYXA/dHlwZT1pbnN0YWxsZXIA6gN0cnkgeyAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUGFydG5lcnMnKycrJysnRmluZCBhbiBJbnN0YWxsZXInKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319F1Ryb3V2ZXIgdW4gaW5zdGFsbGF0ZXVyZAIFD2QWBAIBDxYGHwQFHi90bi9wcm9mZXNzaW9uYWxzL2FsbC1wcm9kdWN0cx8FZB8GBdgDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnRmlyc3RfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6ICdGaXJzdF9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1Byb2R1Y3RzJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRYCZg8VAQhQcm9kdWl0c2QCBQ8WAh8CAv////8PZAIGD2QWBgIBDxYEHwQFDGphdmFzY3JpcHQ6Ox8GBdcDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnRmlyc3RfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6ICdGaXJzdF9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1N1cHBvcnQnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319FgJmDxUBCkFzc2lzdGFuY2VkAgMPFgIfA2dkAgUPFgQfAgICHwNnFgQCAQ9kFgJmDxUEFy90bi9zZXJ2aWNlLXN1cHBvcnQvdHNjAPEDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidTdXBwb3J0JysnKycrJ1RlY2huaWNhbCBTdXBwb3J0IENlbnRlcicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0bQ2VudHJlIGRlIHN1cHBvcnQgdGVjaG5pcXVlZAICD2QWAmYPFQRQaHR0cHM6Ly9kaWdpdGFscG93ZXIuaHVhd2VpLmNvbS9yb2JvdGNoYXQvIy9ob21lL2luZGV4P2xhbmc9ZnJfRlImZG9tYWluPXNtYXJ0cHYGX2JsYW5r5wN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1N1cHBvcnQnKycrJysnT25saW5lIFN1cHBvcnQnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319E0Fzc2lzdGFuY2UgZW4gbGlnbmVkAgcPZBYEAgEPFgYfBAUwaHR0cHM6Ly9jb21tdW5pdHkuc29sYXIuaHVhd2VpLmNvbS90bi9pbmRleC5odG1sHwUFBl9ibGFuax8GBdgDdHJ5IHsgICAgZ3RhZygnZXZlbnQnLCdGaXJzdF9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzogJ0ZpcnN0X05hdmlnYXRpb24nLCdldmVudExhYmVsJzonQ29tbXVuaXR5JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRYCZg8VAQtDb21tdW5hdXTDqWQCBQ8WAh8CAv////8PZAIID2QWBgIBDxYEHwQFDGphdmFzY3JpcHQ6Ox8GBdgDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnRmlyc3RfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6ICdGaXJzdF9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J0Rvd25sb2FkJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRYCZg8VARBUw6lsw6ljaGFyZ2VtZW50ZAIDDxYCHwNnZAIFDxYEHwICAh8DZxYEAgEPZBYCZg8VBCJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vZW4vaW5mby8vBl9ibGFua+oDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidEb3dubG9hZCcrJysnKydQcm9kdWN0IERvY3VtZW50JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRVEb2N1bWVudGF0aW9uIHByb2R1aXRkAgIPZBYCZg8VBDlodHRwczovL2RpZ2l0YWxwb3dlci5odWF3ZWkuY29tL3Bvd2VyLW1hcmtldGluZy8jL2VuL2hvbWUGX2JsYW5r6QN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J0Rvd25sb2FkJysnKycrJ1Bvd2VyLU1hcmtldGluZycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0RRW5lcmdpZS1NYXJrZXRpbmdkAgcPFgIfAgIBFgJmD2QWAmYPFQQNL3RuL29yZGVyLW5vdwCeA3RyeSB7ICAgIGd0YWcoJ2V2ZW50JywnQnV5X0NsaWNrJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidCdXlfQ2xpY2snLCdldmVudExhYmVsJzonT3JkZXIgTm93JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRRDb21tYW5kZXogbWFpbnRlbmFudGQCBA9kFgxmD2QWAmYPZBYCAgEPFgIfAgIBFgJmD2QWAmYPFQUAaC8tL21lZGlhL1NvbGFyVjQvc29sYXItdmVyc2lvbjIvbWlkZGxlLWVhc3QtYWZyaWNhL21hL2hvbWVwYWdlL3N3aXBlcmJhbm5lci9iYW5uZXItcHYtbWFnemluZS9tYS1tb2IucG5nZy8tL21lZGlhL1NvbGFyVjQvc29sYXItdmVyc2lvbjIvbWlkZGxlLWVhc3QtYWZyaWNhL21hL2hvbWVwYWdlL3N3aXBlcmJhbm5lci9iYW5uZXItcHYtbWFnemluZS9tYS1wYy5wbmewCzxkaXYgY2xhc3M9ImZpcnN0LWJ1dHRvbiI+CiAgICA8cCBjbGFzcz0ia3YtYnRuMyI+IDxhCiAgICAgICAgICAgIGhyZWY9Ii9kb3dubG9hZD9wPSUyZi0lMmZtZWRpYSUyZlNvbGFyVjQlMmZzb2xhci12ZXJzaW9uMiUyZmNvbW1vbiUyZmhvbWVwYWdlJTJmc3dpcGVyYmFubmVyJTJmYmFubmVyLXB2LW1hZ3ppbmUlMmZwdi1tYWd6aW5lLUZ1c2lvblNvbGFyLVNwZWNpYWwtRWRpdGlvbi0yMDIzMDkyNy5wZGYiCiAgICAgICAgICAgIG9uY2xpY2sgPSJ0cnkgewogICAgICAgICAgICAgICAgZ3RhZygnZXZlbnQnLCAnQmFubmVyIENsaWNrJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiAkKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOiBkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOiAnQmFubmVyIENsaWNrJywnZXZlbnRMYWJlbCc6ICdNYWtpbmcgdGhlIE1vc3Qgb2YgRXZlcnkgUmF5JysnKycrJzAtMScrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KTsKICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319Ij50w6lsw6ljaGFyZ2VyPC9hPgogICAgPC9wPgo8L2Rpdj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KICAgIC5maXJzdC1idXR0b24gewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIH0KCiAgICAuZmlyc3QtYnV0dG9uIC5rdi1idG4zIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAxNi4ydnc7CiAgICAgICAgbGVmdDogMi42dnc7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgfQoKICAgIC5maXJzdC1idXR0b24gLmt2LWJ0bjMgYSB7CiAgICAgICAgd2lkdGg6IDkuMzc1dnc7CiAgICAgICAgaGVpZ2h0OiAyLjcwODMzM3Z3OwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQoKICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgLmZpcnN0LWJ1dHRvbiAua3YtYnRuMyB7CiAgICAgICAgICAgIHRvcDogNDYuMnZ3OwogICAgICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgICAgICB9CgogICAgICAgIC5maXJzdC1idXR0b24gLmt2LWJ0bjMgYSB7CiAgICAgICAgICAgIHdpZHRoOiAyMC4zNzV2dzsKICAgICAgICAgICAgaGVpZ2h0OiA2LjIwODMzM3Z3OwogICAgICAgIH0KICAgIH0KPC9zdHlsZT4AZAICD2QWAmYPZBYCZg8PFgIfA2hkZAIDD2QWAmYPZBYCAgEPFgIfAgIDFgZmD2QWAmYPFQQrLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS9ob21lX2ljb24xLnN2Zwpob21lIGljb24xBjExMDkuNSptaWxsaWFyZHMgZGUga1doIGQnw6luZXJnaWUgdmVydGUgcHJvZHVpdGVkAgEPZBYCZg8VBCsvLS9tZWRpYS9Tb2xhclY0L2ltYWdlcy9Ib21lL2hvbWVfaWNvbjIuc3ZnCmhvbWUgaWNvbjIDNTI3Nm1pbGxpb25zIGRlIHRvbm5lcyBkJ8OpbWlzc2lvbnMgZGUgQ0/igoIgw6ljb25vbWlzw6llc2QCAg9kFgJmDxUEKy8tL21lZGlhL1NvbGFyVjQvaW1hZ2VzL0hvbWUvaG9tZV9pY29uMy5zdmcKaG9tZSBpY29uMwM3MTknbWlsbGlvbnMgZCdhcmJyZXMgw6lxdWl2YWxlbnRzIHBsYW50w6lzZAIED2QWAmYPZBYCZg8WAh8CAgUWCmYPZBYCZg8VBQAsLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS9jYXJvdXNlMTc2OC5wbmcpLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS9jYXJvdXNlMS5wbmcIY2Fyb3VzZTEsVG91dGUgbGEgcHVpc3NhbmNlIGRlcyBvbmR1bGV1cnMgZGUgY2hhw65uZSBkAgEPZBYCZg8VBQAsLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS9jYXJvdXNlMjc2OC5wbmcpLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS9jYXJvdXNlMi5wbmcIY2Fyb3VzZTJCRGUgbm91dmVsbGVzIGlubm92YXRpb25zIHBvdXIgbGVzIHN5c3TDqG1lcyBkZSBzdG9ja2FnZSBkJ8OpbmVyZ2llZAICD2QWAmYPFQUALC8tL21lZGlhL1NvbGFyVjQvaW1hZ2VzL0hvbWUvY2Fyb3VzZTM3NjgucG5nKS8tL21lZGlhL1NvbGFyVjQvaW1hZ2VzL0hvbWUvY2Fyb3VzZTMucG5nCGNhcm91c2UzH1RvdWpvdXJzIHBsdXMgZGUgY29ubmVjdGl2aXTDqSBkAgMPZBYCZg8VBQAsLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS9jYXJvdXNlNDc2OC5wbmcpLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS9jYXJvdXNlNC5wbmcIY2Fyb3VzZTQpUGlvbm5pZXIgZGFucyBsYSBzw6ljdXJpdMOpIGRlcyBzeXN0w6htZXNkAgQPZBYCZg8VBQZhY3RpdmUsLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS9jYXJvdXNlNTc2OC5wbmcpLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS9jYXJvdXNlNS5wbmcIY2Fyb3VzZTVCTGVhZGVyIGVuIG1hdGnDqHJlIGRlIGNvbm5leGlvbiBhdSByw6lzZWF1IMOpbGVjdHJpcXVlIGludGVsbGlnZW50ZAIFD2QWAmYPZBYCZg8WAh8CAgUWCmYPZBYCZg8VEBJob21lX3B2U3lzdGVtX3RhZzAkLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS9wdjEucG5nA3B2MSNTb2x1dGlvbiBpbnRlbGxpZ2VudGUgbWljcm8tcsOpc2VhdRZob21lX3B2U3lzdGVtX3RhZ19zdWIwJS8tL21lZGlhL1NvbGFyVjQvaW1hZ2VzL0hvbWUvc3ViMS5wbmcEc3ViMSNTb2x1dGlvbiBpbnRlbGxpZ2VudGUgbWljcm8tcsOpc2VhdRgvdG4vdXRpbGl0eS1wbGFudC1vd25lcnMA9AN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTY2VuZV9TZWxlY3Rpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6ICQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6J2hvbWUgcGFnZScsJ2V2ZW50QWN0aW9uJzonU2NlbmVfU2VsZWN0aW9uJywnZXZlbnRMYWJlbCc6J1NtYXJ0IE1pY3JvLWdyaWQgU29sdXRpb24nKycrJysnVXRpbGl0eSBQbGFudCBPd25lcnMnKycrJysgKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fShQcm9wcmnDqXRhaXJlcyBkZSBjZW50cmFsZXMgw6lsZWN0cmlxdWVzHC90bi9wcm9mZXNzaW9uYWxzL21pY3JvLWdyaWQA7AN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTY2VuZV9TZWxlY3Rpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6ICQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6J2hvbWUgcGFnZScsJ2V2ZW50QWN0aW9uJzonU2NlbmVfU2VsZWN0aW9uJywnZXZlbnRMYWJlbCc6J1NtYXJ0IE1pY3JvLWdyaWQgU29sdXRpb24nKycrJysnUHJvZmVzc2lvbmFscycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0OUHJvZmVzc2lvbm5lbHNkAgEPZBYCZg8VEBJob21lX3B2U3lzdGVtX3RhZzEkLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS9wdjIucG5nA3B2MjpTb2x1dGlvbiBwaG90b3ZvbHRhw69xdWUgaW50ZWxsaWdlbnRlIHBvdXIgZ3JhbmRzIHByb2pldHMgFmhvbWVfcHZTeXN0ZW1fdGFnX3N1YjElLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS9zdWIyLnBuZwRzdWIyOlNvbHV0aW9uIHBob3Rvdm9sdGHDr3F1ZSBpbnRlbGxpZ2VudGUgcG91ciBncmFuZHMgcHJvamV0cyAYL3RuL3V0aWxpdHktcGxhbnQtb3duZXJzAPQDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU2NlbmVfU2VsZWN0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiAkKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOidob21lIHBhZ2UnLCdldmVudEFjdGlvbic6J1NjZW5lX1NlbGVjdGlvbicsJ2V2ZW50TGFiZWwnOidVdGlsaXR5IFNtYXJ0IFBWIFNvbHV0aW9uJysnKycrJ1V0aWxpdHkgUGxhbnQgT3duZXJzJysnKycrICh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0oUHJvcHJpw6l0YWlyZXMgZGUgY2VudHJhbGVzIMOpbGVjdHJpcXVlcxkvdG4vcHJvZmVzc2lvbmFscy91dGlsaXR5AO0DdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU2NlbmVfU2VsZWN0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiAkKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOidob21lIHBhZ2UnLCdldmVudEFjdGlvbic6J1NjZW5lX1NlbGVjdGlvbicsJ2V2ZW50TGFiZWwnOidVdGlsaXR5IFNtYXJ0IFBWIFNvbHV0aW9uJysnKycrICdQcm9mZXNzaW9uYWxzJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQ5Qcm9mZXNzaW9ubmVsc2QCAg9kFgJmDxUQEmhvbWVfcHZTeXN0ZW1fdGFnMiQvLS9tZWRpYS9Tb2xhclY0L2ltYWdlcy9Ib21lL3B2My5wbmcDcHYzK05vcyBTb2x1dGlvbnMgQ29tbWVyY2lhbGVzIGV0IEluZHVzdHJpZWxsZXMWaG9tZV9wdlN5c3RlbV90YWdfc3ViMiUvLS9tZWRpYS9Tb2xhclY0L2ltYWdlcy9Ib21lL3N1YjMucG5nBHN1YjMrTm9zIFNvbHV0aW9ucyBDb21tZXJjaWFsZXMgZXQgSW5kdXN0cmllbGxlcxMvdG4vYnVzaW5lc3Mtb3duZXJzAPADdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU2NlbmVfU2VsZWN0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiAkKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOidob21lIHBhZ2UnLCdldmVudEFjdGlvbic6J1NjZW5lX1NlbGVjdGlvbicsJ2V2ZW50TGFiZWwnOidDJkkgU21hcnQgUFYgJiBFU1MgU29sdXRpb24nKycrJysnQnVzaW5lc3MgT3duZXJzJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRxQcm9wcmnDqXRhaXJlcyBkJ2VudHJlcHJpc2VzFS90bi9wcm9mZXNzaW9uYWxzL2MtaQDuA3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1NjZW5lX1NlbGVjdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzogJCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5JzonaG9tZSBwYWdlJywnZXZlbnRBY3Rpb24nOidTY2VuZV9TZWxlY3Rpb24nLCdldmVudExhYmVsJzonQyZJIFNtYXJ0IFBWICYgRVNTIFNvbHV0aW9uJysnKycrJ1Byb2Zlc3Npb25hbHMnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DlByb2Zlc3Npb25uZWxzZAIDD2QWAmYPFRASaG9tZV9wdlN5c3RlbV90YWczJC8tL21lZGlhL1NvbGFyVjQvaW1hZ2VzL0hvbWUvcHY0LnBuZwNwdjQdTm9zIFNvbHV0aW9ucyByw6lzaWRlbnRpZWxsZXMWaG9tZV9wdlN5c3RlbV90YWdfc3ViMyUvLS9tZWRpYS9Tb2xhclY0L2ltYWdlcy9Ib21lL3N1YjQucG5nBHN1YjQdTm9zIFNvbHV0aW9ucyByw6lzaWRlbnRpZWxsZXMPL3RuL2hvbWUtb3duZXJzAPQDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU2NlbmVfU2VsZWN0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiAkKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOidob21lIHBhZ2UnLCdldmVudEFjdGlvbic6J1NjZW5lX1NlbGVjdGlvbicsJ2V2ZW50TGFiZWwnOidSZXNpZGVudGlhbCBTbWFydCBQViAmIEVTUyBTb2x1dGlvbicrJysnKydIb21lIE93bmVycycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0ZUHJvcHJpw6l0YWlyZXMgZGUgbWFpc29ucx0vdG4vcHJvZmVzc2lvbmFscy9yZXNpZGVudGlhbAD2A3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1NjZW5lX1NlbGVjdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzogJCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5JzonaG9tZSBwYWdlJywnZXZlbnRBY3Rpb24nOidTY2VuZV9TZWxlY3Rpb24nLCdldmVudExhYmVsJzonUmVzaWRlbnRpYWwgU21hcnQgUFYgJiBFU1MgU29sdXRpb24nKycrJysnUHJvZmVzc2lvbmFscycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0OUHJvZmVzc2lvbm5lbHNkAgQPZBYCZg8VEBJob21lX3B2U3lzdGVtX3RhZzQkLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS9wdjUucG5nA3B2NTZTb2x1dGlvbiBkZSBzdG9ja2FnZSBkZSBsJ8OpbmVyZ2llIHBvdXIgZ3JhbmRzIHByb2pldHMWaG9tZV9wdlN5c3RlbV90YWdfc3ViNCUvLS9tZWRpYS9Tb2xhclY0L2ltYWdlcy9Ib21lL3N1YjUucG5nBHN1YjU2U29sdXRpb24gZGUgc3RvY2thZ2UgZGUgbCfDqW5lcmdpZSBwb3VyIGdyYW5kcyBwcm9qZXRzGC90bi91dGlsaXR5LXBsYW50LW93bmVycwD7A3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1NjZW5lX1NlbGVjdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzogJCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5JzonaG9tZSBwYWdlJywnZXZlbnRBY3Rpb24nOidTY2VuZV9TZWxlY3Rpb24nLCdldmVudExhYmVsJzonVXRpbGl0eSBTbWFydCBTdHJpbmcgRVNTIFNvbHV0aW9uJysnKycrJ1V0aWxpdHkgUGxhbnQgT3duZXJzJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fShQcm9wcmnDqXRhaXJlcyBkZSBjZW50cmFsZXMgw6lsZWN0cmlxdWVzFS90bi9wcm9mZXNzaW9uYWxzL2VzcwD0A3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1NjZW5lX1NlbGVjdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzogJCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5JzonaG9tZSBwYWdlJywnZXZlbnRBY3Rpb24nOidTY2VuZV9TZWxlY3Rpb24nLCdldmVudExhYmVsJzonVXRpbGl0eSBTbWFydCBTdHJpbmcgRVNTIFNvbHV0aW9uJysnKycrJ1Byb2Zlc3Npb25hbHMnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DlByb2Zlc3Npb25uZWxzZAIGD2QWAmYPZBYCZg8WAh8CAgMWBmYPZBYEZg8VAxhpbkNvbnRfbGVmdF92YWx1ZV95ZWxsb3cEMTYwK0FjZW50cmVzIG1vbmRpYXV4IGQnYXNzaXN0YW5jZSB0ZWNobmlxdWUgZXQgZGUgcGnDqGNlcyBkw6l0YWNow6llc2QCAQ8WAh8CAgQWCAIBD2QWAmYPFQIBNRxjZW50cmVzIGRlIHN1cHBvcnQgdGVjaG5pcXVlZAICD2QWAmYPFQIBNS5jZW50cmVzIGQnZXhwbG9pdGF0aW9uIGRlcyBwacOoY2VzIGTDqXRhY2jDqWVzZAIDD2QWAmYPFQIBMi5jZW50cmVzIGRlIHLDqXBhcmF0aW9uIGRlcyBwacOoY2VzIGTDqXRhY2jDqWVzZAIED2QWAmYPFQIEMTQwKy5jZW50cmVzIGQnZXhwbG9pdGF0aW9uIGRlcyBwacOoY2VzIGTDqXRhY2jDqWVzZAIBD2QWBGYPFQMYaW5Db250X2xlZnRfdmFsdWVfb3JhbmdlBTE3NjArFHBhcnRlbmFpcmVzIG1vbmRpYXV4ZAIBDxYCHwICAxYGAgEPZBYCZg8VAgUxNzAwKxRwYXJ0ZW5haXJlcyBkZSB2ZW50ZWQCAg9kFgJmDxUCAzYwKxZwYXJ0ZW5haXJlcyBkZSBzZXJ2aWNlZAIDD2QWAmYPFQIFMjAwMCsYaW5zdGFsbGF0ZXVycyBjZXJ0aWZpw6lzZAICD2QWBGYPFQMXaW5Db250X2xlZnRfdmFsdWVfZ3JlZW4CMTcdY2VudHJlcyBkZSByZWNoZXJjaGUgbW9uZGlhdXhkAgEPFgIfAgIDFgYCAQ9kFgJmDxUCATUXY2VudHJlcyBkZSBjb21ww6l0ZW5jZXNkAgIPZBYCZg8VAgIxMiZjZW50cmVzIGRlIHJlY2hlcmNoZSBldCBkw6l2ZWxvcHBlbWVudGQCAw9kFgJmDxUCBDIzJSsuZGVzIHJldmVudXMgc3VyIGxhIHJlY2hlcmNoZSBldCBkw6l2ZWxvcHBlbWVudGQCBQ9kFgJmD2QWAmYPZBYIAgIPFgIfAgIFFgpmD2QWBGYPFQEYw4AgcHJvcG9zIGRlIEZ1c2lvblNvbGFyZAIBDxYCHwICAhYEAgEPZBYCZg8VBBMvdG4vc3VjY2Vzcy1zdG9yaWVzAPgDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsICdldmVudExhYmVsJzogJ0Fib3V0IEZ1c2lvblNvbGFyJysnKycrJ1N1Y2Nlc3MgU3RvcmllcycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319F1TDqW1vaWduYWdlcyBkZSBjbGllbnRzZAICD2QWAmYPFQQIL3RuL2Jsb2cA8AN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdCb3R0b21fTmF2aWdhdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdldmVudEFjdGlvbic6J0JvdHRvbV9OYXZpZ2F0aW9uJywgJ2V2ZW50TGFiZWwnOiAnQWJvdXQgRnVzaW9uU29sYXInKycrJysnQmxvZ3MnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319BUJsb2dzZAIBD2QWBGYPFQEUUHJvZHVpdHMgZXQgc29sdXRpb25kAgEPFgIfAgIHFg4CAQ9kFgJmDxUEHS90bi9wcm9mZXNzaW9uYWxzL3Jlc2lkZW50aWFsAI4EdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsICdldmVudExhYmVsJzogJ1Byb2R1Y3RzICYgU29sdXRpb24nKycrJysnUmVzaWRlbnRpYWwgU21hcnQgUFYgJiBFU1MgU29sdXRpb24nKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fTZTb2x1dGlvbiByw6lzaWRlbnRpZWxsZSBwaG90b3ZvbHRhw69xdWUgZXQgZGUgc3RvY2thZ2VkAgIPZBYCZg8VBBUvdG4vcHJvZmVzc2lvbmFscy9jLWkAhgR0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdCb3R0b21fTmF2aWdhdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdldmVudEFjdGlvbic6J0JvdHRvbV9OYXZpZ2F0aW9uJywgJ2V2ZW50TGFiZWwnOiAnUHJvZHVjdHMgJiBTb2x1dGlvbicrJysnKydDJkkgU21hcnQgUFYgJiBFU1MgU29sdXRpb24nKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fUNTb2x1dGlvbiBwaG90b3ZvbHRhw69xdWUgZXQgZGUgc3RvY2thZ2UgQ29tbWVyY2lhbGUgZXQgSW5kdXN0cmllbGxlZAIDD2QWAmYPFQQZL3RuL3Byb2Zlc3Npb25hbHMvdXRpbGl0eQCDBHRyeSB7ICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsICdldmVudExhYmVsJzogJ1Byb2R1Y3RzICYgU29sdXRpb24nKycrJysnVXRpbGl0eSBTbWFydCBQViBTb2x1dGlvbicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319LFNvbHV0aW9uIHBob3Rvdm9sdGHDr3F1ZSBwb3VyIGdyYW5kcyBwcm9qZXRzZAIED2QWAmYPFQQVL3RuL3Byb2Zlc3Npb25hbHMvZXNzAIsEdHJ5IHsgICAgZ3RhZygnZXZlbnQnLCdCb3R0b21fTmF2aWdhdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdldmVudEFjdGlvbic6J0JvdHRvbV9OYXZpZ2F0aW9uJywgJ2V2ZW50TGFiZWwnOiAnUHJvZHVjdHMgJiBTb2x1dGlvbicrJysnKydVdGlsaXR5IFNtYXJ0IFN0cmluZyBFU1MgU29sdXRpb24nKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fShTb2x1dGlvbiBkZSBzdG9ja2FnZSBwb3VyIGdyYW5kcyBwcm9qZXRzZAIFD2QWAmYPFQQcL3RuL3Byb2Zlc3Npb25hbHMvbWljcm8tZ3JpZACEBHRyeSB7ICAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdQcm9kdWN0cyAmIFNvbHV0aW9uJysnKycrJ1NtYXJ0IE1pY3JvLWdyaWQgU29sdXRpb24nKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fSNTb2x1dGlvbiBtaWNyby1yw6lzZWF1IGludGVsbGlnZW50ZWQCBg9kFgJmDxUEHi90bi9wcm9mZXNzaW9uYWxzL2FsbC1wcm9kdWN0cwD3A3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdQcm9kdWN0cyAmIFNvbHV0aW9uJysnKycrJ0FsbCBQcm9kdWN0cycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319EVRvdXMgbGVzIHByb2R1aXRzZAIHD2QWAmYPFQQdL3RuL3Byb2Zlc3Npb25hbHMvU21hcnREZXNpZ24A+gN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdCb3R0b21fTmF2aWdhdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdldmVudEFjdGlvbic6J0JvdHRvbV9OYXZpZ2F0aW9uJywgJ2V2ZW50TGFiZWwnOiAnUHJvZHVjdHMgJiBTb2x1dGlvbicrJysnKydTbWFydERlc2lnbiAyLjAnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRBTbWFydERlc2lnbsKgMi4wZAICD2QWBGYPFQELUGFydGVuYWlyZXNkAgEPFgIfAgIFFgoCAQ9kFgJmDxUEIS90bi9wYXJ0bmVycy9wYXJ0bmVyLWludHJvZHVjdGlvbgD0A3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdQYXJ0bmVycycrJysnKydQYXJ0bmVyIEludHJvZHVjdGlvbicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319G1Byw6lzZW50YXRpb24gZHUgcGFydGVuYWlyZWQCAg9kFgJmDxUEU2h0dHBzOi8vcGFydG5lci5odWF3ZWkuY29tL2VwbHVzLyMvZW4vd2ViL3JlZ2lzdHJhdGlvbi1ndWlkYW5jZT9zb3VyY2U9Y2hhbm5lbC1ob21lBl9ibGFua+8DdHJ5IHsgICAgZ3RhZygnZXZlbnQnLCdCb3R0b21fTmF2aWdhdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdldmVudEFjdGlvbic6J0JvdHRvbV9OYXZpZ2F0aW9uJywgJ2V2ZW50TGFiZWwnOiAnUGFydG5lcnMnKycrJysnQmVjb21lIGEgUGFydG5lcicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319FURldmVuZXogdW4gcGFydGVuYWlyZWQCAw9kFgJmDxUEIS90bi9wYXJ0bmVycy9tYXA/dHlwZT1kaXN0cmlidXRvcgD0A3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdQYXJ0bmVycycrJysnKydGaW5kIGEgRGlzdHJpYnV0b3InKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319F1Ryb3V2ZXIgdW4gZGlzdHJpYnV0ZXVyZAIED2QWAmYPFQQfL3RuL3BhcnRuZXJzL21hcD90eXBlPWluc3RhbGxlcgDzA3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdQYXJ0bmVycycrJysnKydGaW5kIGFuIEluc3RhbGxlcicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0XVHJvdXZlciB1biBpbnN0YWxsYXRldXJkAgUPZBYCZg8VBDFodHRwczovL2RpZ2l0YWxwb3dlci5odWF3ZWkuY29tL3BhcnRuZXIvIy9lbi9tYWluBl9ibGFua+0DdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsICdldmVudExhYmVsJzogJ1BhcnRuZXJzJysnKycrJ1Bvd2VyLVBhcnRuZXInKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRVOb3MgcGFydGVuYWlyZXMtUG93ZXJkAgMPZBYEZg8VARVTZXJ2aWNlIGV0IGFzc2lzdGFuY2VkAgEPFgIfAgIFFgoCAQ9kFgJmDxUEFy90bi9zZXJ2aWNlLXN1cHBvcnQvdHNjAIEEdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsICdldmVudExhYmVsJzogJ1NlcnZpY2UgJiBTdXBwb3J0JysnKycrJ1RlY2huaWNhbCBTdXBwb3J0IENlbnRlcicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319G0NlbnRyZSBkZSBzdXBwb3J0IHRlY2huaXF1ZWQCAg9kFgJmDxUEOWh0dHBzOi8vZGlnaXRhbHBvd2VyLmh1YXdlaS5jb20vcG93ZXItbWFya2V0aW5nLyMvZW4vaG9tZQZfYmxhbmv4A3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdTZXJ2aWNlICYgU3VwcG9ydCcrJysnKydQb3dlci1NYXJrZXRpbmcnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRFFbmVyZ2llLU1hcmtldGluZ2QCAw9kFgJmDxUEImh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9lbi9pbmZvLy8GX2JsYW5r+QN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdCb3R0b21fTmF2aWdhdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdldmVudEFjdGlvbic6J0JvdHRvbV9OYXZpZ2F0aW9uJywgJ2V2ZW50TGFiZWwnOiAnU2VydmljZSAmIFN1cHBvcnQnKycrJysnUHJvZHVjdCBEb2N1bWVudCcrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319FURvY3VtZW50YXRpb24gcHJvZHVpdGQCBA9kFgJmDxUEMGh0dHBzOi8vY29tbXVuaXR5LnNvbGFyLmh1YXdlaS5jb20vdG4vaW5kZXguaHRtbAZfYmxhbmvyA3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdTZXJ2aWNlICYgU3VwcG9ydCcrJysnKydDb21tdW5pdHknKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQtDb21tdW5hdXTDqWQCBQ9kFgJmDxUEUGh0dHBzOi8vZGlnaXRhbHBvd2VyLmh1YXdlaS5jb20vcm9ib3RjaGF0LyMvaG9tZS9pbmRleD9sYW5nPWZyX0ZSJmRvbWFpbj1zbWFydHB2Bl9ibGFua/cDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsICdldmVudExhYmVsJzogJ1NlcnZpY2UgJiBTdXBwb3J0JysnKycrJ09ubGluZSBTdXBwb3J0JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0TQXNzaXN0YW5jZSBlbiBsaWduZWQCBA9kFgRmDxUBDUxpZW5zIHJhcGlkZXNkAgEPFgIfAgIFFgoCAQ9kFgJmDxUEGmh0dHBzOi8vd3d3Lmh1YXdlaS5jb20vZW4vBl9ibGFua/IDdHJ5IHsgICAgZ3RhZygnZXZlbnQnLCdCb3R0b21fTmF2aWdhdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdldmVudEFjdGlvbic6J0JvdHRvbV9OYXZpZ2F0aW9uJywgJ2V2ZW50TGFiZWwnOiAnUXVpY2sgTGlua3MnKycrJysnSHVhd2VpIENvcnBvcmF0ZScrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319EEh1YXdlaSBDb3Jwb3JhdGVkAgIPZBYCZg8VBBhodHRwczovL2UuaHVhd2VpLmNvbS9lbi8GX2JsYW5r8wN0cnkgeyAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdRdWljayBMaW5rcycrJysnKydIdWF3ZWkgRW50ZXJwcmlzZScrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319Ekh1YXdlacKgRW50ZXJwcmlzZWQCAw9kFgJmDxUELmh0dHBzOi8vZGlnaXRhbHBvd2VyLmh1YXdlaS5jb20vZW4vP2Zyb209c29sYXIGX2JsYW5r9wN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdCb3R0b21fTmF2aWdhdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdldmVudEFjdGlvbic6J0JvdHRvbV9OYXZpZ2F0aW9uJywgJ2V2ZW50TGFiZWwnOiAnUXVpY2sgTGlua3MnKycrJysnSHVhd2VpIERpZ2l0YWwgUG93ZXInKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRrDiW5lcmdpZSBudW3DqXJpcXVlIEh1YXdlaWQCBA9kFgJmDxUEWWh0dHBzOi8vaW50bC5mdXNpb25zb2xhci5odWF3ZWkuY29tL3B2bXN3ZWJzaXRlL25vbG9naW4vYXNzZXRzL2J1aWxkL2luZGV4Lmh0bWwjL2p1bXBwYWdlAIwEdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsICdldmVudExhYmVsJzogJ1F1aWNrIExpbmtzJysnKycrJ0Rvd25sb2FkIEZ1c2lvblNvbGFyIEFwcCAoTW9iaWxlIFZlcnNpb24pJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0nVMOpbMOpY2hhcmdlciBsJ2FwcGxpY2F0aW9uIEZ1c2lvblNvbGFyZAIFD2QWAmYPFQQkaHR0cHM6Ly9pbnRsLmZ1c2lvbnNvbGFyLmh1YXdlaS5jb20vBl9ibGFua/gDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsICdldmVudExhYmVsJzogJ1F1aWNrIExpbmtzJysnKycrJ0Z1c2lvblNvbGFyIFNtYXJ0UFZNUycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319HFBWTVMgaW50ZWxsaWdlbnQgRnVzaW9uU29sYXJkAgMPFgIfAQUlwqkgMjAyNCBIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkLmQCBA8WAh8CAgQWCGYPZBYCZg8VA8cEPGEgY2xhc3M9Iml0ZW0tbGluayIgaHJlZj0iaHR0cHM6Ly93d3cuaHVhd2VpLmNvbS9lbi9sZWdhbCIgdGFyZ2V0PSJfYmxhbmsiIG9uY2xpY2s9InRyeSB7ICAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCdldmVudExhYmVsJzogJ1Rlcm1zIG9mIFVzZScrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0iICByZWw9Im5vcmVmZXJyZXIiPhhDb25kaXRpb25zIGQndXRpbGlzYXRpb24EPC9hPmQCAQ9kFgJmDxUDpwQ8YSBjbGFzcz0iaXRlbS1saW5rIiBocmVmPSIvdG4vcHJpdmFjeSIgdGFyZ2V0PSIiIG9uY2xpY2s9InRyeSB7ICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOiAnUHJpdmFjeScrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0iICByZWw9Im5vcmVmZXJyZXIiPhBDb25maWRlbnRpYWxpdMOpBDwvYT5kAgIPZBYCZg8VA6gEPGEgY2xhc3M9Iml0ZW0tbGluayIgaHJlZj0iL3RuL2Nvb2tpZXMiIHRhcmdldD0iIiBvbmNsaWNrPSJ0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdCb3R0b21fTmF2aWdhdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdldmVudEFjdGlvbic6J0JvdHRvbV9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6ICdDb29raWVzJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fSIgIHJlbD0ibm9yZWZlcnJlciI+B0Nvb2tpZXMEPC9hPmQCAw9kFgJmDxUDcjxhIGNsYXNzPSJpdGVtLWxpbmsiIGhyZWY9ImphdmFzY3JpcHQ6OyIgdGFyZ2V0PSIiIG9uY2xpY2s9InV0YWcuZ2Rwci5zaG93Q29uc2VudFByZWZlcmVuY2VzKCkiICByZWw9Im5vcmVmZXJyZXIiPg9Db29raWUgU2V0dGluZ3MEPC9hPmQCBQ9kFgICAQ8WAh8BBacLPGEgY2xhc3M9InNvY2lhbC1pdGVtIiBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tcGFueS9odWF3ZWktZGlnaXRhbHBvd2VyLy8iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vcmVmZXJyZXIiPgogICAgPHNwYW4gY2xhc3M9ImZvb3Rlci1saW5rLWltZyBsaW5rLWltZy1saW5rZWRpbiI+PC9zcGFuPgo8L2E+CjxhIGNsYXNzPSJzb2NpYWwtaXRlbSIgaHJlZj0iaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL0h1YXdlaUZ1c2lvblNvbGFyLyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9yZWZlcnJlciI+CiAgICA8c3BhbiBjbGFzcz0iZm9vdGVyLWxpbmstaW1nIGxpbmstaW1nLWZhY2Vib29rIj48L3NwYW4+CjwvYT4KPGEgY2xhc3M9InNvY2lhbC1pdGVtIiBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL0h1YXdlaVNvbGFyIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub3JlZmVycmVyIj4KICAgIDxzcGFuIGNsYXNzPSJmb290ZXItbGluay1pbWcgbGluay1pbWctdHdpdHRlciI+PC9zcGFuPgo8L2E+CjxhIGNsYXNzPSJzb2NpYWwtaXRlbSIgaHJlZj0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vYy9IdWF3ZWlGdXNpb25Tb2xhciIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9yZWZlcnJlciI+CiAgICA8c3BhbiBjbGFzcz0iZm9vdGVyLWxpbmstaW1nIGxpbmstaW1nLXlvdXR1YmUiPjwvc3Bhbj4KPC9hPgo8IS0tIDxkaXYgY2xhc3M9InNvY2lhbC1pdGVtIHNvY2lhbC1pY29uIj4KICAgIDxzcGFuIGNsYXNzPSJmb290ZXItbGluay1pbWcgbGluay1pbWctd2VjaGF0Ij4KICAgIDwvc3Bhbj4KICAgIDxkaXYgY2xhc3M9ImhvdmVyLXBvcCI+CiAgICAgICAgPGRpdiBjbGFzcz0iaWNvbi1jbG9zZSI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icG9wLXRleHQiPgogICAgICAgICAgICA8cD7lrpjmlrnlvq7kv6E8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icG9wLWltZyI+CiAgICAgICAgICAgIDxpbWcgc3JjPSIvQXNzZXRzL1NvbGFyL3Y0L2ltZy9jb21tb24vd2VjaGF0LnBuZyI+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNvY2lhbC1pdGVtIHNvY2lhbC1pY29uIGxhc3QtaWNvbiI+CiAgICA8c3BhbiBjbGFzcz0iZm9vdGVyLWxpbmstaW1nIGxpbmstaW1nLXRvdXRpYW8iPgogICAgPC9zcGFuPgogICAgPGRpdiBjbGFzcz0iaG92ZXItcG9wIj4KICAgICAgICA8ZGl2IGNsYXNzPSJpY29uLWNsb3NlIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwb3AtdGV4dCI+CiAgICAgICAgICAgIDxwPuWktOadoTwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwb3AtaW1nIj4KICAgICAgICAgICAgPGltZyBzcmM9Ii9Bc3NldHMvU29sYXIvdjQvaW1nL2NvbW1vbi90b3V0aWFvLnBuZyI+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+IC0tPmRkFDpt2hoKqKLVE8YqK3e/g0BUBFULNYnH1NlpYZWDd0M="> </div> </form> <input type="hidden" id="hidUserStatusUrl" value="/en/user"> <div id="pageHeaderWrapper" class=""> <div class="global_header_wrapper"> <div class="global_header_fixed"> <div class="nav-wrapper"> <div class="nav-top"> <div class="nav-top-right"> <div class="nav-top-item"> <a href="/tn/online-experience-hall?step=card" target="" onclick="try { gtag('event','Navigation_Function',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Navigation_Function','eventLabel':'Online Experience Hall'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Salle d'expérience en ligne</a> </div> <div class="nav-top-item nav-top-language"> <span class="language_ic"></span> <span>Tunisia</span> <span class="language_select"></span> </div> </div> </div> <div class="nav-language"> <div class="nav-allLangBox"> <div class="icon-close"></div> <div class="curr-lang"><span class="icon-curr"></span> <a href="https://solar.huawei.com/en">FusionSolar Global / English</a> </div> <div class="allLang"> <div class="areaItem"> <div class="areaText">Asia Pacific</div> <div class="langList"> <div class="langItem"><a href="https://solar.huawei.com/au">Australia / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/cn">China / 简体中文</a></div> <div class="langItem"><a href="https://solar.huawei.com/hk">Hong Kong, China / 繁體中文</a></div> <div class="langItem"><a href="https://solar.huawei.com/id">Indonesia / Indonesian</a></div> <div class="langItem"><a href="https://solar.huawei.com/jp">Japan / 日本語</a></div> <div class="langItem"><a href="https://solar.huawei.com/my">Malaysia / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/ph">Philippines / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/sg">Singapore / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/kr">South Korea / 한국어</a></div> <div class="langItem"><a href="https://solar.huawei.com/th">Thailand / ไทย</a></div> <div class="langItem"><a href="https://solar.huawei.com/vn">Vietnam / English</a></div> </div> </div> <div class="areaItem"> <div class="areaText">Europe</div> <div class="langList"> <div class="langItem"><a href="https://solar.huawei.com/at">Austria / Deutsch</a></div> <div class="langItem"><a href="https://solar.huawei.com/be-fr">Belgium / Français</a></div> <div class="langItem"><a href="https://solar.huawei.com/be">Belgium / Nederlands</a></div> <div class="langItem"><a href="https://solar.huawei.com/bg">Bulgaria / български</a></div> <div class="langItem"><a href="https://solar.huawei.com/hr">Croatia / hrvatski</a></div> <div class="langItem"><a href="https://solar.huawei.com/cz">Czechia / čeština</a></div> <div class="langItem"><a href="https://solar.huawei.com/dk">Denmark / Dansk</a></div> <div class="langItem"><a href="https://solar.huawei.com/fr">France / Français</a></div> <div class="langItem"><a href="https://solar.huawei.com/de">Germany / Deutsch</a></div> <div class="langItem"><a href="https://solar.huawei.com/gr">Greece / Ελληνικά</a></div> <div class="langItem"><a href="https://solar.huawei.com/hu">Hungary / Hungarian</a></div> <div class="langItem"><a href="https://solar.huawei.com/ie">Ireland / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/it">Italy / Italiano</a></div> <div class="langItem"><a href="https://solar.huawei.com/nl">Netherlands / Dutch</a></div> <div class="langItem"><a href="https://solar.huawei.com/pl">Poland / Polish</a></div> <div class="langItem"><a href="https://solar.huawei.com/pt">Portugal / português</a></div> <div class="langItem"><a href="https://solar.huawei.com/ro">Romania / română</a></div> <div class="langItem"><a href="https://solar.huawei.com/sk">Slovakia / slovenčina</a></div> <div class="langItem"><a href="https://solar.huawei.com/es">Spain / Español</a></div> <div class="langItem"><a href="https://solar.huawei.com/se">Sweden / Svenska</a></div> <div class="langItem"><a href="https://solar.huawei.com/ch">Switzerland / Deutsch</a></div> <div class="langItem"><a href="https://solar.huawei.com/ch-fr">Switzerland / Français</a></div> <div class="langItem"><a href="https://solar.huawei.com/tr">Türkiye / Türkçe</a></div> <div class="langItem"><a href="https://solar.huawei.com/ua">Ukraine / Україна</a></div> </div> </div> <div class="areaItem"> <div class="areaText">Latin America</div> <div class="langList"> <div class="langItem"><a href="https://solar.huawei.com/br">Brazil / Portuguese</a></div> <div class="langItem"><a href="https://solar.huawei.com/latam">Latin America / Español</a></div> <div class="langItem"><a href="https://solar.huawei.com/mx">México / Español</a></div> </div> </div> <div class="areaItem"> <div class="areaText">Middle East & Africa</div> <div class="langList"> <div class="langItem"><a href="https://solar.huawei.com/eg">Egypt / اللغة العربية</a></div> <div class="langItem"><a href="https://solar.huawei.com/ke">Kenya / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/ma">Morocco / Français</a></div> <div class="langItem"><a href="https://solar.huawei.com/ng">Nigeria / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/pk">Pakistan / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/sa">Saudi Arabia / اللغة العربية </a></div> <div class="langItem"><a href="https://solar.huawei.com/sa-en">Saudi Arabia / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/za">South Africa / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/tn">Tunisia / Français</a></div> <div class="langItem"><a href="https://solar.huawei.com/ae">UAE / اللغة العربية</a></div> <div class="langItem"><a href="https://solar.huawei.com/ae-en">UAE / English</a></div> </div> </div> </div> </div> </div> </div> <div class="pageheader_container" id="pageHeader"> <div class="pageheader"> <div class="pageheader-box grid--align-spread"> <div class="pageheader-menu-left"> <a class="header-left" href="/tn"> <div class="header-logo"> <img src="/-/media/SolarV4/Common/logo-v1.svg" alt="logo v1" class="whiteLogo"> <img src="/-/media/SolarV4/Common/logo-dark-v2.svg" alt="logo dark v2" class="darkLogo"> </div> </a> <div class="pageheader-menu"> <ul> <li class="menu_item_li "><a class="menu_item_a" href="/tn/home-owners" target="" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Home Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Ma maison</a> <div class="submenu submenu-hidden"> </div> </li> <li class="menu_item_li "><a class="menu_item_a" href="/tn/business-owners" target="" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Business Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">PME & TPE</a> <div class="submenu submenu-hidden"> </div> </li> <li class="menu_item_li "><a class="menu_item_a" href="/tn/utility-plant-owners" target="" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Utility Plant Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Grands Projets</a> <div class="submenu submenu-hidden"> </div> </li> <li class="menu_item_li "><a class="menu_item_a" href="/tn/professionals/residential" target="" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Professionals'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Professionnels du secteur</a> <div class="submenu submenu-hidden"> <a href="/tn/professionals/residential" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'Residential Smart PV & ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">Nos solutions photovoltaïques et de stockage pour le résidentiel</div> </a> <a href="/tn/professionals/c-i" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'C&I Smart PV & ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">Nos solutions photovoltaïques et de stokage pour les entreprises commerciales</div> </a> <a href="/tn/professionals/utility" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'Utility Smart PV Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">Nos solutions photovoltaïques pour les grands projets</div> </a> <a href="/tn/professionals/ess" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'Utility Smart String ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">Nos solutions de stockage intelligentes pour les grands projets</div> </a> <a href="/tn/professionals/micro-grid" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'Smart Micro-grid Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">Solution micro-réseau intelligente</div> </a> <a href="/tn/professionals/SmartDesign" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'SmartDesign 2.0'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">SmartDesign 2.0</div> </a> </div> </li> <li class="menu_item_li "><a class="menu_item_a" href="/tn/partners/partner-introduction" target="" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Partners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Partenaires</a> <div class="submenu submenu-hidden"> <a href="/tn/partners/partner-introduction" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Partner Introduction'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">Présentation du partenaire</div> </a> <a href="https://partner.huawei.com/eplus/#/en/web/registration-guidance?source=channel-home" target="_blank" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Become a Partner'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">Devenez un partenaire</div> </a> <a href="https://digitalpower.huawei.com/partner#/en/main" target="_blank" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Power-Partner'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">Nos partenaires-Power</div> </a> <a href="https://community.solar.huawei.com/tn/index.html" target="_blank" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Installers Community'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">Communauté des installateurs</div> </a> <a href="/tn/partners/map?type=distributor" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Find a Distributor'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">Trouver un distributeur</div> </a> <a href="/tn/partners/map?type=installer" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Find an Installer'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">Trouver un installateur</div> </a> </div> </li> <li class="menu_item_li "><a class="menu_item_a" href="/tn/professionals/all-products" target="" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Products'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Produits</a> <div class="submenu submenu-hidden"> </div> </li> </ul> </div> </div> <div class="pageheader-menu-right"> <div class="pageheader-menu"> <ul> <li class="menu_item_li "><a class="menu_item_a" href="/tn/service-support/tsc" target="" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Support'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Assistance</a> <div class="submenu submenu-hidden"> <a href="/tn/service-support/tsc" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Support'+'+'+'Technical Support Center'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">Centre de support technique</div> </a> <a href="https://digitalpower.huawei.com/robotchat/#/home/index?lang=fr_FR&domain=smartpv" target="_blank" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Support'+'+'+'Online Support'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">Assistance en ligne</div> </a> </div> </li> <li class="menu_item_li "><a class="menu_item_a" href="https://community.solar.huawei.com/tn/index.html" target="_blank" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Community'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Communauté</a> <div class="submenu submenu-hidden"> </div> </li> <li class="menu_item_li "><a class="menu_item_a" href="https://solar.huawei.com/en/info/" target="_blank" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Download'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Téléchargement</a> <div class="submenu submenu-hidden"> <a href="https://solar.huawei.com/en/info/" target="_blank" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Download'+'+'+'Product Document'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">Documentation produit</div> </a> <a href="https://digitalpower.huawei.com/power-marketing/#/en/home" target="_blank" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Download'+'+'+'Power-Marketing'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">Energie-Marketing</div> </a> </div> </li> </ul> </div> <div class="pageheader-right grid--vertical-align-center"> <a href="/tn/order-now" target="" onclick="try { gtag('event','Buy_Click',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Buy_Click','eventLabel':'Order Now'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="header-contact"> <button id="ev_bt_1005" class="ev_button default border-radius-24" title="" tabindex="0" type="button"> <span class="ev_button_text">Commandez maintenant</span> </button> </div> </a> </div> </div> </div> </div> <div class="pageheader-min"> <div class="pageheader-min-box grid--align-spread"> <a class="header-left" href="/tn"> <div class="headerLeft"> <span class="header-min-logo"> <img src="/-/media/SolarV4/Common/logo-v1.svg" alt="logo v1" class="min-white-logo"> <img src="/-/media/SolarV4/Common/logo-dark-v2.svg" alt="logo dark v2" class="min-dark-logo"> </span> </div> </a> <div class="nav-top-min nav-top-language"><span class="language_ic"></span><span>Tunisia</span><span class="language_select"></span></div> <div class="container"> </div> <div class="headerRight grid--vertical-align-center"> <span class="header-icon header-min-setting"></span> <span class="header-icon header-min-close"></span> </div> </div> </div> <div class="header-drawer"> <ul class="header-drawer-box"> <li class="textItem"> <div class="textItem_div"> <a href="/tn/home-owners" id="header_0_rptMobileMainNav_lkLink_0" class="item-link" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Home Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>Ma maison</span> </a> </div> </li> <li class="textItem"> <div class="textItem_div"> <a href="/tn/business-owners" id="header_0_rptMobileMainNav_lkLink_1" class="item-link" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Business Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>PME & TPE</span> </a> </div> </li> <li class="textItem"> <div class="textItem_div"> <a href="/tn/utility-plant-owners" id="header_0_rptMobileMainNav_lkLink_2" class="item-link" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Utility Plant Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>Grands Projets</span> </a> </div> </li> <li class="textItem"> <div class="textItem_div"> <a href="javascript:;" id="header_0_rptMobileMainNav_lkLink_3" class="item-link" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Professionals'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>Professionnels du secteur</span> </a> <span class="textItem_arr"></span> </div> <ul class="submenu" style="display: none;"> <li class="textItem"><a class="item-link" href="/tn/professionals/residential" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'Residential Smart PV & ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Nos solutions photovoltaïques et de stockage pour le résidentiel</a></li> <li class="textItem"><a class="item-link" href="/tn/professionals/c-i" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'C&I Smart PV & ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Nos solutions photovoltaïques et de stokage pour les entreprises commerciales</a></li> <li class="textItem"><a class="item-link" href="/tn/professionals/utility" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'Utility Smart PV Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Nos solutions photovoltaïques pour les grands projets</a></li> <li class="textItem"><a class="item-link" href="/tn/professionals/ess" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'Utility Smart String ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Nos solutions de stockage intelligentes pour les grands projets</a></li> <li class="textItem"><a class="item-link" href="/tn/professionals/micro-grid" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'Smart Micro-grid Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Solution micro-réseau intelligente</a></li> <li class="textItem"><a class="item-link" href="/tn/professionals/SmartDesign" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'SmartDesign 2.0'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">SmartDesign 2.0</a></li> </ul> </li> <li class="textItem"> <div class="textItem_div"> <a href="javascript:;" id="header_0_rptMobileMainNav_lkLink_4" class="item-link" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Partners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>Partenaires</span> </a> <span class="textItem_arr"></span> </div> <ul class="submenu" style="display: none;"> <li class="textItem"><a class="item-link" href="/tn/partners/partner-introduction" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Partner Introduction'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Présentation du partenaire</a></li> <li class="textItem"><a class="item-link" href="https://partner.huawei.com/eplus/#/en/web/registration-guidance?source=channel-home" target="_blank" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Become a Partner'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Devenez un partenaire</a></li> <li class="textItem"><a class="item-link" href="https://digitalpower.huawei.com/partner#/en/main" target="_blank" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Power-Partner'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Nos partenaires-Power</a></li> <li class="textItem"><a class="item-link" href="https://community.solar.huawei.com/tn/index.html" target="_blank" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Installers Community'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Communauté des installateurs</a></li> <li class="textItem"><a class="item-link" href="/tn/partners/map?type=distributor" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Find a Distributor'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Trouver un distributeur</a></li> <li class="textItem"><a class="item-link" href="/tn/partners/map?type=installer" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Find an Installer'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Trouver un installateur</a></li> </ul> </li> <li class="textItem"> <div class="textItem_div"> <a href="/tn/professionals/all-products" id="header_0_rptMobileMainNav_lkLink_5" class="item-link" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Products'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>Produits</span> </a> </div> </li> <li class="textItem"> <div class="textItem_div"> <a href="javascript:;" id="header_0_rptMobileMainNav_lkLink_6" class="item-link" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Support'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>Assistance</span> </a> <span class="textItem_arr"></span> </div> <ul class="submenu" style="display: none;"> <li class="textItem"><a class="item-link" href="/tn/service-support/tsc" target="" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Support'+'+'+'Technical Support Center'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Centre de support technique</a></li> <li class="textItem"><a class="item-link" href="https://digitalpower.huawei.com/robotchat/#/home/index?lang=fr_FR&domain=smartpv" target="_blank" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Support'+'+'+'Online Support'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Assistance en ligne</a></li> </ul> </li> <li class="textItem"> <div class="textItem_div"> <a href="https://community.solar.huawei.com/tn/index.html" id="header_0_rptMobileMainNav_lkLink_7" class="item-link" target="_blank" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Community'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>Communauté</span> </a> </div> </li> <li class="textItem"> <div class="textItem_div"> <a href="javascript:;" id="header_0_rptMobileMainNav_lkLink_8" class="item-link" onclick="try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Download'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>Téléchargement</span> </a> <span class="textItem_arr"></span> </div> <ul class="submenu" style="display: none;"> <li class="textItem"><a class="item-link" href="https://solar.huawei.com/en/info/" target="_blank" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Download'+'+'+'Product Document'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Documentation produit</a></li> <li class="textItem"><a class="item-link" href="https://digitalpower.huawei.com/power-marketing/#/en/home" target="_blank" onclick="try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Download'+'+'+'Power-Marketing'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Energie-Marketing</a></li> </ul> </li> <li class="textItem"> <div class="textItem_div"> <a class="item-link" href="/tn/online-experience-hall?step=card" target="" onclick="try { gtag('event','Navigation_Function',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Navigation_Function','eventLabel':'Online Experience Hall'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>Salle d'expérience en ligne</span> </a> </div> </li> <li class="textItem"> <div class="textItem_div"> <a class="item-link" href="/tn/order-now" target="" onclick="try { gtag('event','Buy_Click',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Buy_Click','eventLabel':'Order Now'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>Commandez maintenant</span> </a> </div> </li> </ul> </div> </div> </div> </div> </div> <input id="pagelang" type="hidden" value="fr-tn"> <div class="main"> <!--HWDocContent--> <div id="dig_swiper_banner" class="dig_banner"> <div class="swiper dig_swiper"> <div class="swiper-wrapper"> <div class="swiper-slide"> <picture class="dig_banner_picture"> <source media="(max-width:768px)" srcset="/-/media/SolarV4/solar-version2/middle-east-africa/ma/homepage/swiperbanner/banner-pv-magzine/ma-mob.png"></source> <img src="/-/media/SolarV4/solar-version2/middle-east-africa/ma/homepage/swiperbanner/banner-pv-magzine/ma-pc.png"> </picture> <div class="dig_banner_content"> <div class="first-button"> <p class="kv-btn3"> <a href="/download?p=%2f-%2fmedia%2fSolarV4%2fsolar-version2%2fcommon%2fhomepage%2fswiperbanner%2fbanner-pv-magzine%2fpv-magzine-FusionSolar-Special-Edition-20230927.pdf" onclick="try { gtag('event', 'Banner Click',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory': document.location.pathname,'eventAction': 'Banner Click','eventLabel': 'Making the Most of Every Ray'+'+'+'0-1'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}); } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">télécharger</a> </p> </div> <style type="text/css"> .first-button { position: relative; } .first-button .kv-btn3 { position: absolute; top: 16.2vw; left: 2.6vw; opacity: 0; line-height: 1.6; } .first-button .kv-btn3 a { width: 9.375vw; height: 2.708333vw; display: block; } @media screen and (max-width: 768px) { .first-button .kv-btn3 { top: 46.2vw; left: 50%; transform: translateX(-50%); } .first-button .kv-btn3 a { width: 20.375vw; height: 6.208333vw; } } </style> </div> </div> </div> <div class="swiper-pagination dig_BannerSwiper_pagination"></div> </div> </div> <div class="home_banner"> <video autoplay="" loop="" muted="" playsinline="" poster="/-/media/SolarV4/images/Home/bannerPoster.jpg" src="/-/media/SolarV4/images/Home/homepage_1129.mp4"> </video> <div class="home_banner_content"> <div class="home_banner_title"> <p> Passons à l'énergie solaire,<br> Favorisons le changement,<br> Ensemble </p> </div> <div class="banner-buttons home_banner_btn"> <button class="ev_button default button-transparent border-radius-24" title="" tabindex="0" type="button"> <span class="ev_button_text">Histoires réussies</span> </button> </div> </div> </div> <div class="home_banner_HiddenedVideo"> <div class="home_banner_HV_content"> <img class="home_banner_HV_close" src="/Assets/Solar/v4/img/Home/close.png" alt="HV_close"><video src="/-/media/Solar/videos/MP4/2022Global-SuccessStories.mp4" poster="" controls="true"> </video> </div> </div> <div class="home_dig_panel"> <div class="home_dig_panel_items"> <div class="home_dig_panel_item"> <h2> <img src="/-/media/SolarV4/images/Home/home_icon1.svg" alt="home icon1"> 1109.5</h2> <p>milliards de kWh d'énergie verte produite</p> </div> <div class="home_dig_panel_item"> <h2> <img src="/-/media/SolarV4/images/Home/home_icon2.svg" alt="home icon2"> 527</h2> <p>millions de tonnes d'émissions de CO₂ économisées</p> </div> <div class="home_dig_panel_item"> <h2> <img src="/-/media/SolarV4/images/Home/home_icon3.svg" alt="home icon3"> 719</h2> <p>millions d'arbres équivalents plantés</p> </div> </div> </div> <div class="home_XA"> <div class="dig_carouse_accordion"> <div class="dig_carouse_headerTitle"> Précurseur, Innovateur, Créateur de valeur </div> <div class="dig_carouse_accordion_box"> <div class="dig_carouse_accordion_li "> <picture class="dig_swiper_picture"> <source media="(max-width:768px)" srcset="/-/media/SolarV4/images/Home/carouse1768.png"></source> <img src="/-/media/SolarV4/images/Home/carouse1.png" alt="carouse1"> </picture> <div class="dig_ca_text_wrap"> <div class="dig_ca_li_title"> Toute la puissance des onduleurs de chaîne </div> </div> <div class="dig_ca_mock"></div> </div> <div class="dig_carouse_accordion_li "> <picture class="dig_swiper_picture"> <source media="(max-width:768px)" srcset="/-/media/SolarV4/images/Home/carouse2768.png"></source> <img src="/-/media/SolarV4/images/Home/carouse2.png" alt="carouse2"> </picture> <div class="dig_ca_text_wrap"> <div class="dig_ca_li_title"> De nouvelles innovations pour les systèmes de stockage d'énergie </div> </div> <div class="dig_ca_mock"></div> </div> <div class="dig_carouse_accordion_li "> <picture class="dig_swiper_picture"> <source media="(max-width:768px)" srcset="/-/media/SolarV4/images/Home/carouse3768.png"></source> <img src="/-/media/SolarV4/images/Home/carouse3.png" alt="carouse3"> </picture> <div class="dig_ca_text_wrap"> <div class="dig_ca_li_title"> Toujours plus de connectivité </div> </div> <div class="dig_ca_mock"></div> </div> <div class="dig_carouse_accordion_li "> <picture class="dig_swiper_picture"> <source media="(max-width:768px)" srcset="/-/media/SolarV4/images/Home/carouse4768.png"></source> <img src="/-/media/SolarV4/images/Home/carouse4.png" alt="carouse4"> </picture> <div class="dig_ca_text_wrap"> <div class="dig_ca_li_title"> Pionnier dans la sécurité des systèmes </div> </div> <div class="dig_ca_mock"></div> </div> <div class="dig_carouse_accordion_li active"> <picture class="dig_swiper_picture"> <source media="(max-width:768px)" srcset="/-/media/SolarV4/images/Home/carouse5768.png"></source> <img src="/-/media/SolarV4/images/Home/carouse5.png" alt="carouse5"> </picture> <div class="dig_ca_text_wrap"> <div class="dig_ca_li_title"> Leader en matière de connexion au réseau électrique intelligent </div> </div> <div class="dig_ca_mock"></div> </div> </div> </div> </div> <div class="home_pvSystem"> <!-- <video muted src="https://solar.huawei.com/~/media/Solar/videos/_ver2.webm" ></video> --> <video autoplay="" muted="" playsinline="" src="/-/media/SolarV4/images/Home/_ver2.mp4"> </video> <img class="home_pvSystem_bg_m" src="/-/media/SolarV4/images/Home/pvSystem.jpg" alt="pvSystem"> <div class="home_pvSystem_tag home_pvSystem_tag0"> <img src="/-/media/SolarV4/images/Home/pv1.png" alt="pv1"><span class="home_pvSystem_tag_desc">Solution intelligente micro-réseau</span> <div class="home_pvSystem_tag_sub home_pvSystem_tag_sub0"> <img src="/-/media/SolarV4/images/Home/sub1.png" alt="sub1"> <p class="home_pvSystem_sub_title">Solution intelligente micro-réseau</p> <div class="home_pvSystem_sub_btns"> <span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon1"></span><a href="/tn/utility-plant-owners" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'Smart Micro-grid Solution'+'+'+'Utility Plant Owners'+'+'+ (window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Propriétaires de centrales électriques</a> </span><span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon2"></span><a href="/tn/professionals/micro-grid" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'Smart Micro-grid Solution'+'+'+'Professionals'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Professionnels</a> </span> </div> </div> </div> <div class="home_pvSystem_tag home_pvSystem_tag1"> <img src="/-/media/SolarV4/images/Home/pv2.png" alt="pv2"><span class="home_pvSystem_tag_desc">Solution photovoltaïque intelligente pour grands projets </span> <div class="home_pvSystem_tag_sub home_pvSystem_tag_sub1"> <img src="/-/media/SolarV4/images/Home/sub2.png" alt="sub2"> <p class="home_pvSystem_sub_title">Solution photovoltaïque intelligente pour grands projets </p> <div class="home_pvSystem_sub_btns"> <span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon1"></span><a href="/tn/utility-plant-owners" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'Utility Smart PV Solution'+'+'+'Utility Plant Owners'+'+'+ (window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Propriétaires de centrales électriques</a> </span><span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon2"></span><a href="/tn/professionals/utility" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'Utility Smart PV Solution'+'+'+ 'Professionals'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Professionnels</a> </span> </div> </div> </div> <div class="home_pvSystem_tag home_pvSystem_tag2"> <img src="/-/media/SolarV4/images/Home/pv3.png" alt="pv3"><span class="home_pvSystem_tag_desc">Nos Solutions Commerciales et Industrielles</span> <div class="home_pvSystem_tag_sub home_pvSystem_tag_sub2"> <img src="/-/media/SolarV4/images/Home/sub3.png" alt="sub3"> <p class="home_pvSystem_sub_title">Nos Solutions Commerciales et Industrielles</p> <div class="home_pvSystem_sub_btns"> <span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon1"></span><a href="/tn/business-owners" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'C&I Smart PV & ESS Solution'+'+'+'Business Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Propriétaires d'entreprises</a> </span><span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon2"></span><a href="/tn/professionals/c-i" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'C&I Smart PV & ESS Solution'+'+'+'Professionals'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Professionnels</a> </span> </div> </div> </div> <div class="home_pvSystem_tag home_pvSystem_tag3"> <img src="/-/media/SolarV4/images/Home/pv4.png" alt="pv4"><span class="home_pvSystem_tag_desc">Nos Solutions résidentielles</span> <div class="home_pvSystem_tag_sub home_pvSystem_tag_sub3"> <img src="/-/media/SolarV4/images/Home/sub4.png" alt="sub4"> <p class="home_pvSystem_sub_title">Nos Solutions résidentielles</p> <div class="home_pvSystem_sub_btns"> <span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon1"></span><a href="/tn/home-owners" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'Residential Smart PV & ESS Solution'+'+'+'Home Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Propriétaires de maisons</a> </span><span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon2"></span><a href="/tn/professionals/residential" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'Residential Smart PV & ESS Solution'+'+'+'Professionals'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Professionnels</a> </span> </div> </div> </div> <div class="home_pvSystem_tag home_pvSystem_tag4"> <img src="/-/media/SolarV4/images/Home/pv5.png" alt="pv5"><span class="home_pvSystem_tag_desc">Solution de stockage de l'énergie pour grands projets</span> <div class="home_pvSystem_tag_sub home_pvSystem_tag_sub4"> <img src="/-/media/SolarV4/images/Home/sub5.png" alt="sub5"> <p class="home_pvSystem_sub_title">Solution de stockage de l'énergie pour grands projets</p> <div class="home_pvSystem_sub_btns"> <span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon1"></span><a href="/tn/utility-plant-owners" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'Utility Smart String ESS Solution'+'+'+'Utility Plant Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Propriétaires de centrales électriques</a> </span><span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon2"></span><a href="/tn/professionals/ess" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'Utility Smart String ESS Solution'+'+'+'Professionals'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Professionnels</a> </span> </div> </div> </div> </div> <div class="home_global_container"> <div class="home_global"> <div class="home_glb_canvas home_glb_canvas_mobile"> <canvas id="homeGlbCanvas" width="784" height="784"></canvas> </div> <div class="home_glb_content"> <div class="home_glb_inner_content"> <div class="inCont_left"> <span class="inCont_left_value inCont_left_value_yellow">160+</span><span class="inCont_left_desc">centres mondiaux d'assistance technique et de pièces détachées</span> </div> <div class="inCont_split"></div> <div class="inCont_right"> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">5</span> <div class="inCont_right_subItem_desc"> centres de support technique </div> </div> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">5</span> <div class="inCont_right_subItem_desc"> centres d'exploitation des pièces détachées </div> </div> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">2</span> <div class="inCont_right_subItem_desc"> centres de réparation des pièces détachées </div> </div> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">140+</span> <div class="inCont_right_subItem_desc"> centres d'exploitation des pièces détachées </div> </div> </div> </div> </div> <div class="home_glb_content"> <div class="home_glb_inner_content"> <div class="inCont_left"> <span class="inCont_left_value inCont_left_value_orange">1760+</span><span class="inCont_left_desc">partenaires mondiaux</span> </div> <div class="inCont_split"></div> <div class="inCont_right"> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">1700+</span> <div class="inCont_right_subItem_desc"> partenaires de vente </div> </div> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">60+</span> <div class="inCont_right_subItem_desc"> partenaires de service </div> </div> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">2000+</span> <div class="inCont_right_subItem_desc"> installateurs certifiés </div> </div> </div> </div> </div> <div class="home_glb_content"> <div class="home_glb_inner_content"> <div class="inCont_left"> <span class="inCont_left_value inCont_left_value_green">17</span><span class="inCont_left_desc">centres de recherche mondiaux</span> </div> <div class="inCont_split"></div> <div class="inCont_right"> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">5</span> <div class="inCont_right_subItem_desc"> centres de compétences </div> </div> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">12</span> <div class="inCont_right_subItem_desc"> centres de recherche et développement </div> </div> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">23%+</span> <div class="inCont_right_subItem_desc"> des revenus sur la recherche et développement </div> </div> </div> </div> </div> </div> </div> <script> var earchFolder = 'en'; </script> <div class="home_onlineHall"> <video autoplay="" loop="" muted="" playsinline="" poster="" src="/-/media/SolarV4/images/Home/online-hall.mp4"> </video> <div class="hO_hallTitle"> <span class="hO_circle"></span> <h2>Visite virtuelle de nos projets </h2> <p>Découvrez nos projets de référence et nos de salles d'exposition avec une visite virtuelle immersive.</p> </div> <div class="banner-buttons hO_btn"> <a href="/tn/online-experience-hall?step=card" target="" onclick="try { gtag('event', 'Online_Experience_Entry Interaction',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory': 'home page','eventAction': 'Online_Experience_Entry','eventLabel': 'Take a Tour Now'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <button id="ev_bt_1007" class="ev_button default button-transparent border-radius-24" title="" tabindex="0" type="button"> <span class="ev_button_text">Faites-y un tour maintenant</span> </button> </a> </div> </div> <!--/HWDocContent--> </div> <div id="pageFooterWrapper" class="dark"> <div class="page-footer"> <div class="footer-main"> <div class="footer-note"> <p> </p> </div> <div class="footer-top-pc"> <div class="footer-item"> <p class="footer-col-title"> À propos de FusionSolar <span class="textItem_arr"></span> </p> <ul class="footer-col-list"> <li> <a href="/tn/success-stories" target="" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'About FusionSolar'+'+'+'Success Stories'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Témoignages de clients</a> </li> <li> <a href="/tn/blog" target="" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'About FusionSolar'+'+'+'Blogs'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Blogs</a> </li> </ul> </div> <div class="footer-item"> <p class="footer-col-title"> Produits et solution <span class="textItem_arr"></span> </p> <ul class="footer-col-list"> <li> <a href="/tn/professionals/residential" target="" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Products & Solution'+'+'+'Residential Smart PV & ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Solution résidentielle photovoltaïque et de stockage</a> </li> <li> <a href="/tn/professionals/c-i" target="" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Products & Solution'+'+'+'C&I Smart PV & ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Solution photovoltaïque et de stockage Commerciale et Industrielle</a> </li> <li> <a href="/tn/professionals/utility" target="" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Products & Solution'+'+'+'Utility Smart PV Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Solution photovoltaïque pour grands projets</a> </li> <li> <a href="/tn/professionals/ess" target="" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Products & Solution'+'+'+'Utility Smart String ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Solution de stockage pour grands projets</a> </li> <li> <a href="/tn/professionals/micro-grid" target="" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Products & Solution'+'+'+'Smart Micro-grid Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Solution micro-réseau intelligente</a> </li> <li> <a href="/tn/professionals/all-products" target="" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Products & Solution'+'+'+'All Products'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Tous les produits</a> </li> <li> <a href="/tn/professionals/SmartDesign" target="" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Products & Solution'+'+'+'SmartDesign 2.0'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">SmartDesign 2.0</a> </li> </ul> </div> <div class="footer-item"> <p class="footer-col-title"> Partenaires <span class="textItem_arr"></span> </p> <ul class="footer-col-list"> <li> <a href="/tn/partners/partner-introduction" target="" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Partners'+'+'+'Partner Introduction'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Présentation du partenaire</a> </li> <li> <a href="https://partner.huawei.com/eplus/#/en/web/registration-guidance?source=channel-home" target="_blank" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Partners'+'+'+'Become a Partner'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Devenez un partenaire</a> </li> <li> <a href="/tn/partners/map?type=distributor" target="" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Partners'+'+'+'Find a Distributor'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Trouver un distributeur</a> </li> <li> <a href="/tn/partners/map?type=installer" target="" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Partners'+'+'+'Find an Installer'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Trouver un installateur</a> </li> <li> <a href="https://digitalpower.huawei.com/partner/#/en/main" target="_blank" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Partners'+'+'+'Power-Partner'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Nos partenaires-Power</a> </li> </ul> </div> <div class="footer-item"> <p class="footer-col-title"> Service et assistance <span class="textItem_arr"></span> </p> <ul class="footer-col-list"> <li> <a href="/tn/service-support/tsc" target="" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Service & Support'+'+'+'Technical Support Center'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Centre de support technique</a> </li> <li> <a href="https://digitalpower.huawei.com/power-marketing/#/en/home" target="_blank" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Service & Support'+'+'+'Power-Marketing'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Energie-Marketing</a> </li> <li> <a href="https://solar.huawei.com/en/info/" target="_blank" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Service & Support'+'+'+'Product Document'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Documentation produit</a> </li> <li> <a href="https://community.solar.huawei.com/tn/index.html" target="_blank" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Service & Support'+'+'+'Community'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Communauté</a> </li> <li> <a href="https://digitalpower.huawei.com/robotchat/#/home/index?lang=fr_FR&domain=smartpv" target="_blank" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Service & Support'+'+'+'Online Support'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Assistance en ligne</a> </li> </ul> </div> <div class="footer-item"> <p class="footer-col-title"> Liens rapides <span class="textItem_arr"></span> </p> <ul class="footer-col-list"> <li> <a href="https://www.huawei.com/en" target="_blank" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Quick Links'+'+'+'Huawei Corporate'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Huawei Corporate</a> </li> <li> <a href="https://e.huawei.com/en" target="_blank" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Quick Links'+'+'+'Huawei Enterprise'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Huawei Enterprise</a> </li> <li> <a href="https://digitalpower.huawei.com/en/?from=solar" target="_blank" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Quick Links'+'+'+'Huawei Digital Power'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Énergie numérique Huawei</a> </li> <li> <a href="https://intl.fusionsolar.huawei.com/pvmswebsite/nologin/assets/build/index.html#/jumppage" target="" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Quick Links'+'+'+'Download FusionSolar App (Mobile Version)'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Télécharger l'application FusionSolar</a> </li> <li> <a href="https://intl.fusionsolar.huawei.com" target="_blank" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Quick Links'+'+'+'FusionSolar SmartPVMS'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">PVMS intelligent FusionSolar</a> </li> </ul> </div> </div> <div class="footer-buttom"> <div class="footer-copyright-content"> <div class="footer-copyright footer-copyright-item"> © 2024 Huawei Technologies Co., Ltd. </div> <div class="footer-law"> <span class="footer-copyright-item"> <a class="item-link" href="https://www.huawei.com/en/legal" target="_blank" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation','eventLabel': 'Terms of Use'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}" rel="noreferrer"> Conditions d'utilisation </a> </span> <span class="footer-copyright-item"> <a class="item-link" href="/tn/privacy" target="" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation','eventLabel': 'Privacy'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}" rel="noreferrer"> Confidentialité </a> </span> <span class="footer-copyright-item"> <a class="item-link" href="/tn/cookies" target="" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation','eventLabel': 'Cookies'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}" rel="noreferrer"> Cookies </a> </span> <span class="footer-copyright-item"> <a class="item-link" href="javascript:;" target="" onclick="utag.gdpr.showConsentPreferences()" rel="noreferrer"> Cookie Settings </a> </span> </div> </div> <div class="footer-link"> <a class="social-item" href="https://www.linkedin.com/company/huawei-digitalpower/" target="_blank" rel="noreferrer"> <span class="footer-link-img link-img-linkedin"></span> </a> <a class="social-item" href="https://www.facebook.com/HuaweiFusionSolar" target="_blank" rel="noreferrer"> <span class="footer-link-img link-img-facebook"></span> </a> <a class="social-item" href="https://twitter.com/HuaweiSolar" target="_blank" rel="noreferrer"> <span class="footer-link-img link-img-twitter"></span> </a> <a class="social-item" href="https://www.youtube.com/c/HuaweiFusionSolar" target="_blank" rel="noreferrer"> <span class="footer-link-img link-img-youtube"></span> </a> <!-- <div class="social-item social-icon"> <span class="footer-link-img link-img-wechat"> </span> <div class="hover-pop"> <div class="icon-close"></div> <div class="pop-text"> <p>官方微信</p> </div> <div class="pop-img"> <img src="/Assets/Solar/v4/img/common/wechat.png"> </div> </div> </div> <div class="social-item social-icon last-icon"> <span class="footer-link-img link-img-toutiao"> </span> <div class="hover-pop"> <div class="icon-close"></div> <div class="pop-text"> <p>头条</p> </div> <div class="pop-img"> <img src="/Assets/Solar/v4/img/common/toutiao.png"> </div> </div> </div> --> </div> </div> </div> </div> </div> <div id="pageSideTips"> <div class="side-tips"> <div class="side-tip"> <div class="icon-download"></div> <div class="hover grid--vertical-align-center"> <a href="https://digitalpower.huawei.com/power-marketing/#/en/home" target="_blank"> <div class="side-tip-text ml18">Energie-Marketing</div> </a> <div class="side-tip-line ml12"></div> <a href="https://solar.huawei.com/en/info/" target="_blank"> <div class="side-tip-text ml12">Documentation produit</div> </a> <div class="icon-download"></div> </div> </div> <div class="side-tip"> <a href="https://community.solar.huawei.com/tn/index.html" target="_blank"> <div class="icon-community"></div> <div class="hover grid--vertical-align-center"> <div class="side-tip-text ml24">Communauté</div> <div class="icon-community"></div> </div> </a> </div> <div class="side-tip"> <a href="https://digitalpower.huawei.com/robotchat/#/home/index?lang=fr_FR&domain=smartpv" target="_blank"> <div class="icon-onlineChat"></div> <div class="hover grid--vertical-align-center"> <div class="side-tip-text ml24">Assistance en ligne</div> <div class="icon-onlineChat"></div> </div> </a> </div> <div class='side-tip back-top'> <span></span> </div> </div> </div> <script src="/Assets/Solar/v4/js/utils/jquery-3.6.0.min.js?ver=202411131551"></script> <!--<script src="/Assets/Solar/v4/js/utils/common.js"></script>--> <script src="/Assets/Solar/v4/js/utils/publicPages.js?ver=202411131551"></script> <!--Solar track code--> <script type="text/javascript"> var utag_data = { site_name: "solar", site_type: "website" }; </script> <script type="text/javascript"> (function(a,b,c,d){ a=((navigator.languages && navigator.languages.length) ? navigator.languages[0] : (navigator.browserLanguage || navigator.userLanguage || navigator.language || 'en')).toLowerCase() == "zh-cn" ? '//tags.tiqcdn.cn/utag/huawei/solar/prod/utag.js' : '//tags.tiqcdn.com/utag/huawei/solar/prod/utag.js'; b=document; c='script'; d=b.createElement(c); d.src=a; d.type='text/java'+c; d.async=true; a=b.getElementsByTagName(c)[0]; a.parentNode.insertBefore(d,a); })(); </script> <script src="/-/media/SolarV4/solar-version2/common/seo/common-seo.js?ver=202411131551"></script> <script src="/-/media/SolarV4/solar-version2/common/data-analysis/analysis-v2.js?ver=202411131551"></script> <script src="/Assets/Solar/v4/js/utils/bvideo.js?ver=202411131551"></script> <script src="/Assets/Solar/v4/js/utils/oft.js?ver=202411131551"></script> <script src="/Assets/Solar/v4/js/utils/swiper-new.min.js?ver=202411131551"></script> <!--<script src="/Assets/Solar/v4/js/utils/publicPages.js"></script>--> <script src="/Assets/Solar/v4/js/utils/swiper-new.min.js?ver=202411131551"></script> <script async="" src="/Assets/Solar/v4/js/index.js?ver=202411131551"></script> </body> </html>