{"id":3567,"date":"2026-08-15T23:49:43","date_gmt":"2026-08-15T21:49:43","guid":{"rendered":"https:\/\/numpex.org\/projets-appel-a-projets-2025\/"},"modified":"2026-09-10T22:28:49","modified_gmt":"2026-09-10T20:28:49","slug":"projets-appel-a-projets-2025","status":"publish","type":"page","link":"https:\/\/numpex.org\/fr\/projets-appel-a-projets-2025\/","title":{"rendered":"Projets \u2013 Appel \u00e0 projets 2025"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_row row_height_percent=\u00a0\u00bb0&Prime; overlay_alpha=\u00a0\u00bb50&Prime; gutter_size=\u00a0\u00bb3&Prime; column_width_percent=\u00a0\u00bb100&Prime; shift_y=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; sticky=\u00a0\u00bbyes\u00a0\u00bb content_parallax=\u00a0\u00bb0&Prime; uncode_shortcode_id=\u00a0\u00bb716742&Prime; css=\u00a0\u00bb.vc_custom_1785869798726{margin-top: 1% !important;}\u00a0\u00bb][vc_column width=\u00a0\u00bb1\/1&Prime;][vc_raw_html]PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBOdW1QRXgg4oCUIE1lbnUgZGUgc2VjdGlvbnMgc3RpY2t5IOKAlCB2LjYuNAogIE5hb3MgQWdlbmN5IMK3IDIwMjYtMDktMTAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKPHN0eWxlPgogIDpyb290eyAtLW5weC10b3A6IDYwcHg7IH0gLyogaGF1dGV1ciBkdSBoZWFkZXIgVW5jb2RlIHN0aWNreSAqLwogIC5ucHgtc3VibmF2ewogICAgYmFja2dyb3VuZDogI0UwOTkwMDsgLyogb3JhbmdlIGQnYWNjZW50dWF0aW9uIE51bVBFeCAqLwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwwLDAsLjA4KTsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICB3aWR0aDogMTAwJTsKICAgIHotaW5kZXg6IDQwOwogIH0KICAubnB4LXN1Ym5hdltoaWRkZW5deyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KICAubnB4LXN1Ym5hdi5ucHgtc3R1Y2t7IGJvcmRlci1yYWRpdXM6IDAgMCAxMnB4IDEycHg7IH0KICAubnB4LXN1Ym5hdi5ucHgtc3R1Y2t7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IHZhcigtLW5weC10b3ApOwogICAgbGVmdDogMDsgcmlnaHQ6IDA7CiAgfQogIC5ucHgtc3VibmF2X19pbm5lcnsKICAgIC8qIHYuNi40IDogbWV0cmlxdWVzIHBpbG90ZWVzIHBhciB2YXJpYWJsZXMuIExlcyB2YWxldXJzIGRlIHJlcGxpCiAgICAgICBTT05UIGNlbGxlcyBkZSBsYSB2LjYuMiA6IHNhbnMgSlMsIHJlbmR1IGlkZW50aXF1ZS4gKi8KICAgIG1heC13aWR0aDogMTE0MHB4OwogICAgbWFyZ2luOiAwIGF1dG87CiAgICBwYWRkaW5nOiAwIDI0cHg7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiBub3dyYXA7CiAgICBnYXA6IDAgdmFyKC0tbnB4LWdhcCwgMTBweCk7CiAgICBtaW4taGVpZ2h0OiA0NnB4OwogICAgcGFkZGluZy10b3A6IDZweDsKICAgIHBhZGRpbmctYm90dG9tOiA2cHg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZm9udC1zaXplOiB2YXIoLS1ucHgtZnMsIDExcHgpOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1ucHgtbHMsIC4xMmVtKTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgb3ZlcmZsb3cteTogaGlkZGVuOwogICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lOwogICAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lOwogICAgLyogZm9udC1mYW1pbHk6ICdQb3BwaW5zJywgc3lzdGVtLXVpLCBzYW5zLXNlcmlmOyAqLwogIH0KICAubnB4LXN1Ym5hdl9faW5uZXI6Oi13ZWJraXQtc2Nyb2xsYmFyeyBkaXNwbGF5OiBub25lOyB9CiAgLyogU3DDqWNpZmljaXTDqSByZW5mb3Jjw6llICsgIWltcG9ydGFudCA6IG5ldXRyYWxpc2UgbGVzIGNvdWxldXJzIGRlIGxpZW5zIGR1IHRow6htZSBVbmNvZGUgKG9yYW5nZSBhdSBzdXJ2b2wvY2xpYykgKi8KICBuYXYubnB4LXN1Ym5hdiAubnB4LXN1Ym5hdl9faW5uZXIgYSwKICBuYXYubnB4LXN1Ym5hdiAubnB4LXN1Ym5hdl9faW5uZXIgYTp2aXNpdGVkewogICAgY29sb3I6IHJnYmEoMjU1LDI1MCwyNDMsLjg4KSAhaW1wb3J0YW50OyAvKiBibGFuYyBjYXNzw6kgKi8KICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgcGFkZGluZzogOHB4IHZhcigtLW5weC1weCwgMTRweCk7CiAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgIHRyYW5zaXRpb246IGNvbG9yIC4xOHMsIGJhY2tncm91bmQtY29sb3IgLjE4czsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7ICAvKiB2LjYuNCA6IHVuIGxpYmVsbGUgbmUgc2UgY291cGUgamFtYWlzICovCiAgICBmbGV4OiAwIDAgYXV0bzsgICAgICAgLyogdi42LjQgOiBsZXMgcGFzdGlsbGVzIG5lIHNlIGNvbXByaW1lbnQgcGFzICovCiAgfQogIG5hdi5ucHgtc3VibmF2IC5ucHgtc3VibmF2X19pbm5lciBhOmhvdmVyLAogIG5hdi5ucHgtc3VibmF2IC5ucHgtc3VibmF2X19pbm5lciBhOmZvY3VzLAogIG5hdi5ucHgtc3VibmF2IC5ucHgtc3VibmF2X19pbm5lciBhOmFjdGl2ZXsKICAgIGNvbG9yOiAjRkZGRkZGICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC4xMik7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDsKICB9CiAgbmF2Lm5weC1zdWJuYXYgLm5weC1zdWJuYXZfX2lubmVyIGEubnB4LWFjdGl2ZSwKICBuYXYubnB4LXN1Ym5hdiAubnB4LXN1Ym5hdl9faW5uZXIgYS5ucHgtYWN0aXZlOmhvdmVyewogICAgY29sb3I6ICNGRkZGRkYgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICNBODZGMDA7IC8qIG9yYW5nZSBmb25jw6ksIGFwbGF0IHNpbXBsZSAqLwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICB9Cjwvc3R5bGU+Cgo8bmF2IGNsYXNzPSJucHgtc3VibmF2IiBhcmlhLWxhYmVsPSJQYWdlIHNlY3Rpb25zIiBoaWRkZW4+CiAgPGRpdiBjbGFzcz0ibnB4LXN1Ym5hdl9faW5uZXIiPjwvZGl2Pgo8L25hdj4KCjxzY3JpcHQ+CihmdW5jdGlvbigpewogICd1c2Ugc3RyaWN0JzsKCiAgLyogPT09PT09PT09PT09PT09PT09PT0gQ09ORklHIFNJVEUgPT09PT09PT09PT09PT09PT09PT0KICAgICBTZXVsZSB6b25lIMOgIGFkYXB0ZXIgcG91ciByw6l1dGlsaXNlciBsZSBibG9jIGFpbGxldXJzLiAqLwogIHZhciBQUkVGSVggPSAnbmF2LSc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHByw6lmaXhlIGRlcyBSb3cgSUQgw6AgZMOpdGVjdGVyICovCiAgdmFyIFNUUklQICA9IFsvLShlbnxmcikkL2ksIC8tZXhhLVthLXowLTldKyQvaV07ICAgLyogc3VmZml4ZXMgZCd1bmljaXTDqSDDoCBpZ25vcmVyICAqLwoKICAvKiBSZXBsaSBwb3VyIGxlcyBwYWdlcyBQQVMgRU5DT1JFIE1JR1LDiUVTIHZlcnMgbGUgcHLDqWZpeGUgbmF2LQogICAgICh0eXBpcXVlbWVudCBsZXMgdHJhZHVjdGlvbnMgV1BNTCBkb250IGxlcyBSb3cgSUQgbidvbnQgcGFzIMOpdMOpCiAgICAgcmVub21tw6lzKS4gVXRpbGlzw6kgVU5JUVVFTUVOVCBzaSBsYSBwYWdlIG5lIGNvbnRpZW50IGF1Y3VuZSByb3cKICAgICDCqyBuYXYtIMK7LiBSZXByZW5kIGxlcyBjbMOpcyBkZSBsYSB2LjUgOiB1bmUgcm93IG5vbW3DqWUKICAgICDCqyBjb25zb3J0aXVtLWV4YS1tYS1lbiDCuyBvdSBzaW1wbGVtZW50IMKrIGNvbnNvcnRpdW0gwrsgZXN0CiAgICAgcmV0cm91dsOpZS4gTGlzdGUgZmVybcOpZSA9IGF1Y3VuIHJpc3F1ZSBkZSBmYXV4IHBvc2l0aWYuICovCiAgdmFyIExFR0FDWV9LRVlTID0gWwogICAgJ292ZXJ2aWV3JywgJ2NvbnNvcnRpdW0nLCAncmVzdWx0cycsICdtZXRyaWNzJywgJ3NvZnR3YXJlJywKICAgICduZXdzJywgJ2V2ZW50cycsICdhZ2VuZGEnLCAndGVhbScsICdjb250YWN0JwogIF07CgogIHZhciBMQUJFTFMgPSB7CiAgICAvKiBMaWJlbGzDqXMgcHLDqWbDqXLDqXMgcGFyIGNsw6kuIFRvdXRlIGNsw6kgYWJzZW50ZSBlc3QgYWZmaWNow6llCiAgICAgICBjYXBpdGFsaXPDqWUgdGVsbGUgcXVlbGxlIChuYXYtam9pbi11cyAtPiDCqyBKb2luIFVzIMK7KS4gKi8KICAgIGVuOiB7CiAgICAgICdjb25zb3J0aXVtJzogJ0NvbnNvcnRpdW0gJiBXb3JrcGFja2FnZXMnLAogICAgICAncmVzdWx0cyc6ICAgICdSZXN1bHRzICYgSW1wYWN0JywKICAgICAgJ21ldHJpY3MnOiAgICAnUHJvamVjdCBNZXRyaWNzJywKICAgICAgJ3RlYW0nOiAgICAgICAnVGhlIFRlYW0nCiAgICB9LAogICAgZnI6IHsKICAgICAgJ292ZXJ2aWV3JzogICAnUHLDqXNlbnRhdGlvbicsCiAgICAgICdjb25zb3J0aXVtJzogJ0NvbnNvcnRpdW0gZXQgbG90cyBkZSB0cmF2YWlsJywKICAgICAgJ3Jlc3VsdHMnOiAgICAnUsOpc3VsdGF0cyBldCBpbXBhY3QnLAogICAgICAnbWV0cmljcyc6ICAgICdDaGlmZnJlcyBjbMOpcycsCiAgICAgICdzb2Z0d2FyZSc6ICAgJ0xvZ2ljaWVscycsCiAgICAgICduZXdzJzogICAgICAgJ0FjdHVhbGl0w6lzJywKICAgICAgJ2V2ZW50cyc6ICAgICAnw4l2w6huZW1lbnRzJywKICAgICAgJ3RlYW0nOiAgICAgICAnTOKAmcOpcXVpcGUnCiAgICB9CiAgfTsKICB2YXIgU1RJQ0tfTU9ERSA9ICd1bmNvZGUnOyAvKiAndW5jb2RlJyA9IGxhIHJvdyBnw6hyZSBsZSBzdGlja3kgwrcgJ2pzJyA9IGxlIHNjcmlwdCBjb2xsZSBsdWktbcOqbWUgKi8KICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKICB2YXIgREVCVUcgPSAvWz8mXW5weGRlYnVnPTEvLnRlc3Qod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7CiAgZnVuY3Rpb24gbG9nKCl7CiAgICBpZighREVCVUcgfHwgIXdpbmRvdy5jb25zb2xlIHx8ICFjb25zb2xlLmxvZykgcmV0dXJuOwogICAgY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgWydbbnB4LXN1Ym5hdl0nXS5jb25jYXQoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKSk7CiAgfQoKICAvKiAtLS0tIExhbmd1ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgPGh0bWwgbGFuZz4gcG9zw6kgcGFyIFdQTUwuIFJlcGxpcyBzdWNjZXNzaWZzIHNpIGwnYXR0cmlidXQgbWFucXVlIDoKICAgICB1biBhbmPDqnRyZSBwb3J0ZXVyIGRlIGxhbmcsIHB1aXMgbGVzIGNsYXNzZXMgZHUgYm9keS4gKi8KICBmdW5jdGlvbiBkZXRlY3RMYW5nKGVsKXsKICAgIHZhciB0YWcgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJykgfHwgJyc7CiAgICBpZighdGFnICYmIGVsICYmIGVsLmNsb3Nlc3QpewogICAgICB2YXIgaG9zdCA9IGVsLmNsb3Nlc3QoJ1tsYW5nXScpOwogICAgICBpZihob3N0KXsgdGFnID0gaG9zdC5nZXRBdHRyaWJ1dGUoJ2xhbmcnKSB8fCAnJzsgfQogICAgfQogICAgaWYoIXRhZyl7CiAgICAgIHZhciBjbHMgPSAoZG9jdW1lbnQuYm9keSAmJiBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSkgfHwgJyc7CiAgICAgIGlmKC8oPzpsYW5nfGxhbmd1YWdlKS1mclxifGZyW18tXUZSL2kudGVzdChjbHMpKXsgdGFnID0gJ2ZyJzsgfQogICAgfQogICAgcmV0dXJuIC9eZnIvaS50ZXN0KHRhZykgPyAnZnInIDogJ2VuJzsKICB9CgogIGZ1bmN0aW9uIGtleU9mKGlkKXsKICAgIHZhciBrID0gaWQuc2xpY2UoUFJFRklYLmxlbmd0aCkudG9Mb3dlckNhc2UoKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBTVFJJUC5sZW5ndGg7IGkrKyl7IGsgPSBrLnJlcGxhY2UoU1RSSVBbaV0sICcnKTsgfQogICAgcmV0dXJuIGs7CiAgfQogIGZ1bmN0aW9uIHRpdGxlQ2FzZShrZXkpewogICAgcmV0dXJuIGtleS5zcGxpdCgnLScpLm1hcChmdW5jdGlvbih3KXsKICAgICAgcmV0dXJuIHcgPyB3LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdy5zbGljZSgxKSA6IHc7CiAgICB9KS5qb2luKCcgJyk7CiAgfQoKICAvKiBEb3VibGUgc8OpY3VyaXTDqSA6IMOpY2FydGUgbGVzIG1lbnVzIGfDqW7DqXLDqXMgcGFyIFdvcmRQcmVzcyBldCB0b3V0IGNlCiAgICAgcXVpIHZpdCBkYW5zIGxhIG5hdmlnYXRpb24gb3UgbGUgaGVhZGVyIOKAlCBpbmNoYW5nw6kgZGVwdWlzIGxhIHYuNi4xLiAqLwogIGZ1bmN0aW9uIGlzU2VjdGlvbkNhbmRpZGF0ZShlbCl7CiAgICB2YXIgdGFnID0gZWwudGFnTmFtZTsKICAgIGlmKHRhZyA9PT0gJ1VMJyB8fCB0YWcgPT09ICdMSScgfHwgdGFnID09PSAnQScgfHwgdGFnID09PSAnTkFWJyl7IHJldHVybiBmYWxzZTsgfQogICAgaWYoZWwuY2xvc2VzdCAmJiBlbC5jbG9zZXN0KCduYXYsIGhlYWRlciwgLm5weC1zdWJuYXYnKSl7IHJldHVybiBmYWxzZTsgfQogICAgcmV0dXJuIHRydWU7CiAgfQoKICBmdW5jdGlvbiBpbkRvY3VtZW50T3JkZXIoYSwgYil7CiAgICB2YXIgcG9zID0gYS5zZWN0aW9uLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIuc2VjdGlvbik7CiAgICByZXR1cm4gKHBvcyAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKSA\/IC0xIDogMTsKICB9CgogIC8qIC0tLS0gRMOpY291dmVydGUgZGVzIHNlY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgMSkgTW9kZSBub21pbmFsIDogdG91dGVzIGxlcyByb3dzIGRvbnQgbCdpZCBjb21tZW5jZSBwYXIgwqsgbmF2LSDCuy4KICAgICAyKSBSZXBsaSA6IHNpIGV0IHNldWxlbWVudCBzaSBsZSBtb2RlIDEgbmUgZG9ubmUgUklFTiwgb24gY2hlcmNoZQogICAgICAgIGxlcyBjbMOpcyBow6lyaXTDqWVzIGRlIGxhIHYuNSwgYXZlYyBvdSBzYW5zIHN1ZmZpeGUuCiAgICAgUmVudm9pZSB7IGVudHJpZXM6IFsuLi5dLCBtb2RlOiAncHJlZml4JyB8ICdsZWdhY3knIHwgJ25vbmUnIH0uICovCiAgZnVuY3Rpb24gZGlzY292ZXIoZGljdCl7CiAgICB2YXIgc2VlbiA9IE9iamVjdC5jcmVhdGUobnVsbCksIGVudHJpZXMgPSBbXTsKCiAgICBmdW5jdGlvbiBwdXNoKGVsLCBrZXkpewogICAgICBpZighZWwgfHwgIWtleSB8fCBzZWVuW2tleV0peyByZXR1cm47IH0KICAgICAgc2VlbltrZXldID0gdHJ1ZTsKICAgICAgZW50cmllcy5wdXNoKHsgc2VjdGlvbjogZWwsIGtleToga2V5LCBsYWJlbDogZGljdFtrZXldIHx8IHRpdGxlQ2FzZShrZXkpIH0pOwogICAgfQoKICAgIHZhciBmb3VuZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZF49IicgKyBQUkVGSVggKyAnIl0nKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBmb3VuZC5sZW5ndGg7IGkrKyl7CiAgICAgIGlmKCFpc1NlY3Rpb25DYW5kaWRhdGUoZm91bmRbaV0pKXsgY29udGludWU7IH0KICAgICAgcHVzaChmb3VuZFtpXSwga2V5T2YoZm91bmRbaV0uaWQpKTsKICAgIH0KICAgIGlmKGVudHJpZXMubGVuZ3RoKXsKICAgICAgd2FybklmUGFydGlhbGx5TWlncmF0ZWQoc2Vlbik7CiAgICAgIHJldHVybiB7IGVudHJpZXM6IGVudHJpZXMsIG1vZGU6ICdwcmVmaXgnIH07CiAgICB9CgogICAgZm9yKHZhciBqID0gMDsgaiA8IExFR0FDWV9LRVlTLmxlbmd0aDsgaisrKXsKICAgICAgdmFyIGsgID0gTEVHQUNZX0tFWVNbal07CiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGspIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tpZF49IicgKyBrICsgJy0iXScpOwogICAgICBpZihlbCAmJiBpc1NlY3Rpb25DYW5kaWRhdGUoZWwpKXsgcHVzaChlbCwgayk7IH0KICAgIH0KICAgIGlmKGVudHJpZXMubGVuZ3RoKXsKICAgICAgZW50cmllcy5zb3J0KGluRG9jdW1lbnRPcmRlcik7IC8qIGxhIGxpc3RlIGRlcyBjbMOpcyBuZSBzdWl0IHBhcyBsJ29yZHJlIGRlIGxhIHBhZ2UgKi8KICAgICAgcmV0dXJuIHsgZW50cmllczogZW50cmllcywgbW9kZTogJ2xlZ2FjeScgfTsKICAgIH0KCiAgICByZXR1cm4geyBlbnRyaWVzOiBlbnRyaWVzLCBtb2RlOiAnbm9uZScgfTsKICB9CgogIC8qIC0tLS0gTWlncmF0aW9uIHBhcnRpZWxsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIENhcyBwacOoZ2UgOiBzdXIgdW5lIG3Dqm1lIHBhZ2UgY2VydGFpbmVzIHJvd3Mgb250IMOpdMOpIHJlbm9tbcOpZXMgZW4KICAgICBuYXYt4oCmIGV0IGQnYXV0cmVzIG5vbi4gTGUgbW9kZSBub21pbmFsIGwnZW1wb3J0ZSBldCBsZXMgcm93cyBub24KICAgICByZW5vbW3DqWVzIGRpc3BhcmFpc3NlbnQgU0lMRU5DSUVVU0VNRU5UIGR1IG1lbnUuIE9uIGxlIHNpZ25hbGUuICovCiAgZnVuY3Rpb24gd2FybklmUGFydGlhbGx5TWlncmF0ZWQoc2Vlbil7CiAgICBpZighd2luZG93LmNvbnNvbGUgfHwgIWNvbnNvbGUud2Fybil7IHJldHVybjsgfQogICAgdmFyIHN0cmFnZ2xlcnMgPSBbXTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBMRUdBQ1lfS0VZUy5sZW5ndGg7IGkrKyl7CiAgICAgIHZhciBrID0gTEVHQUNZX0tFWVNbaV07CiAgICAgIGlmKHNlZW5ba10peyBjb250aW51ZTsgfSAvKiBkw6lqw6AgcHLDqXNlbnQgdmlhIHVuZSByb3cgbmF2LSAqLwogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChrKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbaWRePSInICsgayArICctIl0nKTsKICAgICAgaWYoZWwgJiYgaXNTZWN0aW9uQ2FuZGlkYXRlKGVsKSl7IHN0cmFnZ2xlcnMucHVzaChrICsgJyAoIycgKyBlbC5pZCArICcpJyk7IH0KICAgIH0KICAgIGlmKCFzdHJhZ2dsZXJzLmxlbmd0aCl7IHJldHVybjsgfQogICAgY29uc29sZS53YXJuKAogICAgICAnW25weC1zdWJuYXZdIE1pZ3JhdGlvbiBpbmNvbXBsZXRlIHN1ciBjZXR0ZSBwYWdlIDogJyArIHN0cmFnZ2xlcnMubGVuZ3RoICsKICAgICAgJyByb3cocykgcG9ydGVudCBlbmNvcmUgdW4gYW5jaWVuIFJvdyBJRCBldCBzb250IEFCU0VOVEVTIGR1IG1lbnUgLT4gJyArCiAgICAgIHN0cmFnZ2xlcnMuam9pbignLCAnKSArICdcbicgKwogICAgICAnTGVzIHJlbm9tbWVyIGF2ZWMgbGUgcHJlZml4ZSAiJyArIFBSRUZJWCArICciIChleC4gJyArIFBSRUZJWCArIExFR0FDWV9LRVlTWzBdICsgJykuJwogICAgKTsKICB9CgogIC8qIC0tLS0gTWVzc2FnZSBkZSBkaWFnbm9zdGljIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIEludmlzaWJsZSBwb3VyIGxlcyB2aXNpdGV1cnMsIGTDqWNpc2lmIHBvdXIgbGEgcGVyc29ubmUgcXVpIHJlcHJlbmQKICAgICBsZSBkb3NzaWVyIDogb24gZGl0IGNlIHF1aSBhIMOpdMOpIGNoZXJjaMOpIGV0IGNlIHF1aSBhIMOpdMOpIHRyb3V2w6kuICovCiAgZnVuY3Rpb24gd2Fybk5vdGhpbmdGb3VuZCgpewogICAgaWYoIXdpbmRvdy5jb25zb2xlIHx8ICFjb25zb2xlLndhcm4peyByZXR1cm47IH0KICAgIHZhciB3aXRoSWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaWRdJyk7CiAgICBjb25zb2xlLndhcm4oCiAgICAgICdbbnB4LXN1Ym5hdl0gQXVjdW5lIHNlY3Rpb24gdHJvdXbDqWUgOiBsYSBiYXJyZSByZXN0ZSBtYXNxdcOpZS5cbicgKwogICAgICAnLSBSZWNoZXJjaMOpIGVuIHByaW9yaXTDqSA6IGRlcyBSb3cgSUQgY29tbWVuw6dhbnQgcGFyICInICsgUFJFRklYICsgJyIgKGV4LiBuYXYtb3ZlcnZpZXcpLlxuJyArCiAgICAgICctIFB1aXMsIGVuIHJlcGxpLCBsZXMgY2xlcyBoZXJpdGVlcyA6ICcgKyBMRUdBQ1lfS0VZUy5qb2luKCcsICcpICsgJy5cbicgKwogICAgICAnLSBQYWdlIGxhbmc9IicgKyAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnbGFuZycpIHx8ICcoYWJzZW50KScpICsgJyIsICcgKwogICAgICB3aXRoSWQubGVuZ3RoICsgJyBlbGVtZW50KHMpIHBvcnRlbnQgdW4gaWQuXG4nICsKICAgICAgJy0gQ2F1c2UgbGEgcGx1cyBmcmVxdWVudGUgOiBsZXMgUm93IElEIGRlIENFVFRFIHBhZ2UgbmUgc29udCBwYXMgbm9tbWVzLiAnICsKICAgICAgJ1NvdXMgV1BNTCB1bmUgdHJhZHVjdGlvbiBlc3QgdW4gcG9zdCBkaXN0aW5jdCDigJQgcmVub21tZXIgbGVzIFJvdyBJRCBkZSBsYSBwYWdlICcgKwogICAgICAnc291cmNlIG5lIHJlbm9tbWUgcGFzIGNldXggZGUgbGEgdHJhZHVjdGlvbiA6IGlsIGZhdXQgbGVzIHNhaXNpciBzdXIgY2hhcXVlIGxhbmd1ZS5cbicgKwogICAgICAnLSBQb3VyIGxhIGxpc3RlIGRlcyBpZHMgcHJlc2VudHMsIHJlY2hhcmdlciBsYSBwYWdlIGF2ZWMgP25weGRlYnVnPTEnCiAgICApOwogICAgaWYoREVCVUcpewogICAgICB2YXIgaWRzID0gW107CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCB3aXRoSWQubGVuZ3RoOyBpKyspeyBpZHMucHVzaCh3aXRoSWRbaV0uaWQpOyB9CiAgICAgIGNvbnNvbGUud2FybignW25weC1zdWJuYXZdIGlkcyBwcmVzZW50cyBzdXIgbGEgcGFnZSA6JywgaWRzKTsKICAgIH0KICB9CgogIC8qIC0tLS0gSW5pdGlhbGlzYXRpb24gZCd1bmUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBSZW52b2llIHRydWUgc2kgbGEgYmFycmUgYSDDqXTDqSBjb25zdHJ1aXRlLCBmYWxzZSBzJ2lsIG4neSBhdmFpdAogICAgIGF1Y3VuZSBzZWN0aW9uIChsJ2luc3RhbmNlIHJlc3RlIGFsb3JzIMOpbGlnaWJsZSDDoCB1bmUgbm91dmVsbGUKICAgICB0ZW50YXRpdmUgOiBkYXRhLW5weC1yZWFkeSBuJ2VzdCBwb3PDqSBxdSdlbiBjYXMgZGUgc3VjY8OocykuICovCiAgZnVuY3Rpb24gaW5pdChuYXYpewogICAgdmFyIGlubmVyID0gbmF2LnF1ZXJ5U2VsZWN0b3IoJy5ucHgtc3VibmF2X19pbm5lcicpOwogICAgaWYoIWlubmVyKXsKICAgICAgbmF2LnNldEF0dHJpYnV0ZSgnZGF0YS1ucHgtcmVhZHknLCAnMScpOyAvKiBiYWxpc2FnZSBpbmF0dGVuZHUgOiBuZSBwYXMgYm91Y2xlciBkZXNzdXMgKi8KICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgdmFyIGxhbmcgID0gZGV0ZWN0TGFuZyhuYXYpOwogICAgdmFyIGRpY3QgID0gTEFCRUxTW2xhbmddIHx8IHt9OwogICAgdmFyIGZvdW5kID0gZGlzY292ZXIoZGljdCk7CiAgICB2YXIgZW50cmllcyA9IGZvdW5kLmVudHJpZXM7CgogICAgaWYoIWVudHJpZXMubGVuZ3RoKXsgcmV0dXJuIGZhbHNlOyB9CgogICAgbmF2LnNldEF0dHJpYnV0ZSgnZGF0YS1ucHgtcmVhZHknLCAnMScpOwogICAgbG9nKCdtb2RlID0nLCBmb3VuZC5tb2RlLCAnfCBsYW5nID0nLCBsYW5nLCAnfCBlbnRyZWVzID0nLCBlbnRyaWVzLm1hcChmdW5jdGlvbihlKXsKICAgICAgcmV0dXJuIGUua2V5ICsgJyAtPiAnICsgZS5sYWJlbCArICcgKCMnICsgZS5zZWN0aW9uLmlkICsgJyknOwogICAgfSkpOwoKICAgIGlubmVyLmlubmVySFRNTCA9ICcnOwogICAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uKGUpewogICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgICAgYS5ocmVmID0gJyMnICsgZS5zZWN0aW9uLmlkOwogICAgICBhLnRleHRDb250ZW50ID0gZS5sYWJlbDsKICAgICAgaW5uZXIuYXBwZW5kQ2hpbGQoYSk7CiAgICAgIGUubGluayA9IGE7CiAgICB9KTsKICAgIG5hdi5yZW1vdmVBdHRyaWJ1dGUoJ2hpZGRlbicpOwoKICAgIC8qIC0tLS0gdi42LjQgOiBsYSBiYXJyZSB0aWVudCBzdXIgdW5lIGxpZ25lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgZmxleC13cmFwOm5vd3JhcCBzdXBwcmltZSBsYSAyZSBsaWduZS4gT24gbWVzdXJlIGV0IG9uIHJldGllbnQgbGUKICAgICAgIFBSRU1JRVIgcGFsaWVyIHF1aSByZW50cmUuIExlIHBhbGllciAwIGVzdCBsZSByZW5kdSB2LjYuMiA6IHVuZQogICAgICAgYmFycmUgcXVpIHJlbnRyYWl0IGRlamEgbmUgYm91Z2UgcGFzIGQndW4gcGl4ZWwuIFNpIG1lbWUgbGUKICAgICAgIHBsYW5jaGVyIGRlYm9yZGUgKHRlbGVwaG9uZSksIGxhIGJhcnJlIGRlZmlsZSBob3Jpem9udGFsZW1lbnQuCiAgICAgICBUb3V0IGVzdCBlbnZlbG9wcGUgOiBlbiBjYXMgZCdlcnJldXIgb24gcmV2aWVudCBhdSBwYWxpZXIgMC4gKi8KICAgIHZhciBTVEVQUyA9IFsKICAgICAgeyBmczogJzExcHgnLCAgIGxzOiAnLjEyZW0nLCBweDogJzE0cHgnLCBnYXA6ICcxMHB4JyB9LCAvKiByZW5kdSB2LjYuMiAqLwogICAgICB7IGZzOiAnMTFweCcsICAgbHM6ICcuMDllbScsIHB4OiAnMTNweCcsIGdhcDogJzlweCcgIH0sCiAgICAgIHsgZnM6ICcxMC41cHgnLCBsczogJy4wN2VtJywgcHg6ICcxMnB4JywgZ2FwOiAnOHB4JyAgfSwKICAgICAgeyBmczogJzEwcHgnLCAgIGxzOiAnLjA2ZW0nLCBweDogJzExcHgnLCBnYXA6ICc3cHgnICB9LAogICAgICB7IGZzOiAnOS41cHgnLCAgbHM6ICcuMDVlbScsIHB4OiAnMTBweCcsIGdhcDogJzZweCcgIH0sCiAgICAgIHsgZnM6ICc5cHgnLCAgICBsczogJy4wNGVtJywgcHg6ICc5cHgnLCAgZ2FwOiAnNXB4JyAgfSAgLyogcGxhbmNoZXIgKi8KICAgIF07CiAgICBmdW5jdGlvbiBhcHBseVN0ZXAocyl7CiAgICAgIHZhciBzdCA9IGlubmVyLnN0eWxlOwogICAgICBzdC5zZXRQcm9wZXJ0eSgnLS1ucHgtZnMnLCAgcy5mcyk7CiAgICAgIHN0LnNldFByb3BlcnR5KCctLW5weC1scycsICBzLmxzKTsKICAgICAgc3Quc2V0UHJvcGVydHkoJy0tbnB4LXB4JywgIHMucHgpOwogICAgICBzdC5zZXRQcm9wZXJ0eSgnLS1ucHgtZ2FwJywgcy5nYXApOwogICAgfQogICAgZnVuY3Rpb24gb3ZlcmZsb3dpbmcoKXsgcmV0dXJuIGlubmVyLnNjcm9sbFdpZHRoID4gaW5uZXIuY2xpZW50V2lkdGggKyAxOyB9CgogICAgdmFyIGZpdHRpbmcgPSBmYWxzZSwgbGFzdFcgPSAtMTsKICAgIGZ1bmN0aW9uIGZpdCgpewogICAgICBpZihmaXR0aW5nKXsgcmV0dXJuOyB9CiAgICAgIGZpdHRpbmcgPSB0cnVlOwogICAgICB0cnl7CiAgICAgICAgLyogQmFycmUgbm9uIG1lc3VyYWJsZSAobWFzcXVlZSwgb25nbGV0IHJlcGxpZSkgOiBuZSByaWVuIGNvbmNsdXJlLiAqLwogICAgICAgIGlmKGlubmVyLmNsaWVudFdpZHRoID4gNDApewogICAgICAgICAgdmFyIGksIGNob3NlbiA9IFNURVBTLmxlbmd0aCAtIDE7CiAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBTVEVQUy5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgIGFwcGx5U3RlcChTVEVQU1tpXSk7CiAgICAgICAgICAgIGlmKCFvdmVyZmxvd2luZygpKXsgY2hvc2VuID0gaTsgYnJlYWs7IH0KICAgICAgICAgIH0KICAgICAgICAgIGlmKGNob3NlbiAhPT0gaSl7IGFwcGx5U3RlcChTVEVQU1tjaG9zZW5dKTsgfQogICAgICAgICAgbGFzdFcgPSBuYXYuY2xpZW50V2lkdGg7CiAgICAgICAgfQogICAgICB9Y2F0Y2goZXJyKXsKICAgICAgICBhcHBseVN0ZXAoU1RFUFNbMF0pOyAgLyogamFtYWlzIGRlIGJhcnJlIGNhc3NlZSAqLwogICAgICB9CiAgICAgIGZpdHRpbmcgPSBmYWxzZTsKICAgIH0KICAgIGZpdCgpOwoKICAgIC8qIExhIHBvbGljZSBkdSB0aGVtZSBhcnJpdmUgZW4gYXN5bmNocm9uZSA6IHJlbWVzdXJlciBhIHNvbiBhcnJpdmVlLiAqLwogICAgaWYoZG9jdW1lbnQuZm9udHMgJiYgZG9jdW1lbnQuZm9udHMucmVhZHkgJiYgZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbil7CiAgICAgIHRyeXsgZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbihmaXQsIGZpdCk7IH1jYXRjaChlcnIpe30KICAgIH0KICAgIHNldFRpbWVvdXQoZml0LCA2MDApOwogICAgc2V0VGltZW91dChmaXQsIDIwMDApOwoKICAgIC8qIExlIHBhc3NhZ2UgZW4gc3RpY2t5IGNoYW5nZSBsYSBsYXJnZXVyIHNhbnMgZXZlbmVtZW50IHJlc2l6ZS4gKi8KICAgIGlmKHdpbmRvdy5SZXNpemVPYnNlcnZlcil7CiAgICAgIHRyeXsKICAgICAgICBuZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24oKXsKICAgICAgICAgIGlmKG5hdi5jbGllbnRXaWR0aCAhPT0gbGFzdFcpeyBmaXQoKTsgfQogICAgICAgIH0pLm9ic2VydmUobmF2KTsKICAgICAgfWNhdGNoKGVycil7fQogICAgfQoKICAgIC8qIEVuIG1vZGUgZGVmaWxlbWVudCwgZ2FyZGVyIGxhIHBhc3RpbGxlIGFjdGl2ZSB2aXNpYmxlLiAqLwogICAgZnVuY3Rpb24gcmV2ZWFsKGxpbmspewogICAgICBpZighbGluayB8fCAhb3ZlcmZsb3dpbmcoKSl7IHJldHVybjsgfQogICAgICB2YXIgbCA9IGxpbmsub2Zmc2V0TGVmdCwgciA9IGwgKyBsaW5rLm9mZnNldFdpZHRoOwogICAgICB2YXIgdnMgPSBpbm5lci5zY3JvbGxMZWZ0LCB2ZSA9IHZzICsgaW5uZXIuY2xpZW50V2lkdGg7CiAgICAgIGlmKGwgPCB2cyl7IGlubmVyLnNjcm9sbExlZnQgPSBNYXRoLm1heCgwLCBsIC0gMTIpOyB9CiAgICAgIGVsc2UgaWYociA+IHZlKXsgaW5uZXIuc2Nyb2xsTGVmdCA9IHIgLSBpbm5lci5jbGllbnRXaWR0aCArIDEyOyB9CiAgICB9CgogICAgZnVuY3Rpb24gdG9wT2Zmc2V0KCl7CiAgICAgIHZhciB2ID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0tbnB4LXRvcCcpOwogICAgICByZXR1cm4gcGFyc2VJbnQodiwgMTApIHx8IDA7CiAgICB9CiAgICAvKiBEw6lmaWxlbWVudCBhdmVjIGNvbXBlbnNhdGlvbiBkZXMgZGV1eCBtZW51cy4gKi8KICAgIGZ1bmN0aW9uIHRvdGFsT2Zmc2V0KCl7IHJldHVybiB0b3BPZmZzZXQoKSArIG5hdi5vZmZzZXRIZWlnaHQgKyA4OyB9CgogICAgLyogLS0tLSBDb2xsYWdlIDogZml4ZWQgKyBwbGFjZWhvbGRlciBhbnRpLXNhdXQgKG1vZGUgJ2pzJykgLS0tLSAqLwogICAgdmFyIHBoID0gbnVsbDsKICAgIGlmKFNUSUNLX01PREUgPT09ICdqcycpewogICAgICBwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICBwaC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICBuYXYucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocGgsIG5hdik7CiAgICB9CiAgICBmdW5jdGlvbiBzdGljaygpewogICAgICBpZighcGgpeyByZXR1cm47IH0KICAgICAgdmFyIGFuY2hvciA9IChwaC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScpID8gbmF2IDogcGg7CiAgICAgIHZhciBzaG91bGQgPSBhbmNob3IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIDw9IHRvcE9mZnNldCgpOwogICAgICBpZihzaG91bGQgJiYgIW5hdi5jbGFzc0xpc3QuY29udGFpbnMoJ25weC1zdHVjaycpKXsKICAgICAgICBwaC5zdHlsZS5oZWlnaHQgID0gbmF2Lm9mZnNldEhlaWdodCArICdweCc7CiAgICAgICAgcGguc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgbmF2LmNsYXNzTGlzdC5hZGQoJ25weC1zdHVjaycpOwogICAgICB9ZWxzZSBpZighc2hvdWxkICYmIG5hdi5jbGFzc0xpc3QuY29udGFpbnMoJ25weC1zdHVjaycpKXsKICAgICAgICBuYXYuY2xhc3NMaXN0LnJlbW92ZSgnbnB4LXN0dWNrJyk7CiAgICAgICAgcGguc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgfQogICAgfQoKICAgIC8qIC0tLS0gU2VjdGlvbiBhY3RpdmUgLS0tLSAqLwogICAgdmFyIGxhc3RDdXJyZW50ID0gbnVsbDsKICAgIGZ1bmN0aW9uIGhpZ2hsaWdodCgpewogICAgICB2YXIgbGltaXQgPSB0b3RhbE9mZnNldCgpICsgNDsKICAgICAgdmFyIGN1cnJlbnQgPSBudWxsOwogICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZSl7CiAgICAgICAgaWYoZS5zZWN0aW9uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCA8PSBsaW1pdCl7IGN1cnJlbnQgPSBlOyB9CiAgICAgIH0pOwogICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZSl7CiAgICAgICAgZS5saW5rLmNsYXNzTGlzdC50b2dnbGUoJ25weC1hY3RpdmUnLCBlID09PSBjdXJyZW50KTsKICAgICAgfSk7CiAgICAgIGlmKGN1cnJlbnQgIT09IGxhc3RDdXJyZW50KXsKICAgICAgICBsYXN0Q3VycmVudCA9IGN1cnJlbnQ7CiAgICAgICAgaWYoY3VycmVudCl7IHJldmVhbChjdXJyZW50LmxpbmspOyB9CiAgICAgIH0KICAgIH0KCiAgICAvKiAtLS0tIENsaWMgc3VyIHVuZSBlbnRyw6llIC0tLS0gKi8KICAgIHZhciBzbW9vdGggPSAhd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlczsKICAgIGVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlKXsKICAgICAgZS5saW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgdmFyIHkgPSBlLnNlY3Rpb24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0IC0gdG90YWxPZmZzZXQoKTsKICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IHksIGJlaGF2aW9yOiBzbW9vdGggPyAnc21vb3RoJyA6ICdhdXRvJyB9KTsKICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgJyMnICsgZS5zZWN0aW9uLmlkKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBmdW5jdGlvbiBvblNjcm9sbCgpeyBzdGljaygpOyBoaWdobGlnaHQoKTsgfQogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSk7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZnVuY3Rpb24oKXsgZml0KCk7IG9uU2Nyb2xsKCk7IH0pOwogICAgb25TY3JvbGwoKTsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLyogLS0tLSBBbW9yw6dhZ2UgOiB0b3V0ZXMgbGVzIGluc3RhbmNlcywgYXZlYyBxdWVscXVlcyByZWxhbmNlcyAtLS0tLS0KICAgICBMZXMgcm93cyBVbmNvZGUgcGV1dmVudCDDqnRyZSBpbmplY3TDqWVzIGFwcsOocyBsZSBET01Db250ZW50TG9hZGVkCiAgICAgKGxhenkgLyBBSkFYKSA6IG9uIHJldGVudGUgcGVuZGFudCB+Miw1IHMgYXZhbnQgZGUgY29uY2x1cmUuICovCiAgZnVuY3Rpb24gYm9vdCgpewogICAgdmFyIG5hdnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubnB4LXN1Ym5hdjpub3QoW2RhdGEtbnB4LXJlYWR5XSknKTsKICAgIHZhciBwZW5kaW5nID0gMDsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBuYXZzLmxlbmd0aDsgaSsrKXsKICAgICAgaWYoIWluaXQobmF2c1tpXSkpeyBwZW5kaW5nKys7IH0KICAgIH0KICAgIHJldHVybiBwZW5kaW5nOwogIH0KCiAgZnVuY3Rpb24gcnVuKCl7CiAgICBpZihib290KCkgPT09IDApeyByZXR1cm47IH0KICAgIHZhciB0cmllcyA9IDA7CiAgICB2YXIgdGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICB0cmllcysrOwogICAgICB2YXIgbGFzdCA9IHRyaWVzID49IDY7IC8qIDYgeCA0MDAgbXMgKi8KICAgICAgaWYoYm9vdCgpID09PSAwIHx8IGxhc3QpewogICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpOwogICAgICAgIGlmKGxhc3QgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm5weC1zdWJuYXY6bm90KFtkYXRhLW5weC1yZWFkeV0pJykpewogICAgICAgICAgd2Fybk5vdGhpbmdGb3VuZCgpOwogICAgICAgIH0KICAgICAgfQogICAgfSwgNDAwKTsKICB9CgogIGlmKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJyl7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgcnVuKTsKICB9ZWxzZXsKICAgIHJ1bigpOwogIH0KfSkoKTsKPC9zY3JpcHQ+[\/vc_raw_html][\/vc_column][\/vc_row][vc_row unlock_row_content=\u00a0\u00bbyes\u00a0\u00bb row_height_percent=\u00a0\u00bb0&Prime; override_padding=\u00a0\u00bbyes\u00a0\u00bb h_padding=\u00a0\u00bb5&Prime; top_padding=\u00a0\u00bb5&Prime; bottom_padding=\u00a0\u00bb5&Prime; back_color=\u00a0\u00bbcolor-xsdn\u00a0\u00bb overlay_alpha=\u00a0\u00bb50&Prime; gutter_size=\u00a0\u00bb4&Prime; column_width_percent=\u00a0\u00bb100&Prime; shift_y=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; top_divider=\u00a0\u00bbgradient\u00a0\u00bb bottom_divider=\u00a0\u00bbgradient\u00a0\u00bb inverted_device_order=\u00a0\u00bbyes\u00a0\u00bb uncode_shortcode_id=\u00a0\u00bb371393&Prime; back_color_type=\u00a0\u00bbuncode-palette\u00a0\u00bb][vc_column column_width_percent=\u00a0\u00bb100&Prime; gutter_size=\u00a0\u00bb3&Prime; style=\u00a0\u00bbdark\u00a0\u00bb overlay_alpha=\u00a0\u00bb50&Prime; shift_x=\u00a0\u00bb0&Prime; shift_y=\u00a0\u00bb0&Prime; shift_y_down=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; medium_width=\u00a0\u00bb0&Prime; mobile_width=\u00a0\u00bb0&Prime; css_animation=\u00a0\u00bbalpha-anim\u00a0\u00bb animation_speed=\u00a0\u00bb1000&Prime; sticky=\u00a0\u00bbyes\u00a0\u00bb width=\u00a0\u00bb1\/4&Prime; uncode_shortcode_id=\u00a0\u00bb202619&Prime;][vc_single_image media=\u00a0\u00bb2082&Prime; media_width_percent=\u00a0\u00bb65&Prime; alignment=\u00a0\u00bbcenter\u00a0\u00bb uncode_shortcode_id=\u00a0\u00bb575096&Prime;][vc_row_inner row_inner_height_percent=\u00a0\u00bb0&Prime; overlay_alpha=\u00a0\u00bb50&Prime; gutter_size=\u00a0\u00bb4&Prime; shift_y=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; limit_content=\u00a0\u00bb\u00a0\u00bb][vc_column_inner column_width_percent=\u00a0\u00bb100&Prime; gutter_size=\u00a0\u00bb3&Prime; style=\u00a0\u00bbdark\u00a0\u00bb back_color=\u00a0\u00bbcolor-583231&Prime; overlay_alpha=\u00a0\u00bb50&Prime; radius=\u00a0\u00bbstd\u00a0\u00bb shadow=\u00a0\u00bbstd\u00a0\u00bb shift_x=\u00a0\u00bb0&Prime; shift_y=\u00a0\u00bb0&Prime; shift_y_down=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; medium_width=\u00a0\u00bb4&Prime; mobile_width=\u00a0\u00bb0&Prime; width=\u00a0\u00bb1\/1&Prime; uncode_shortcode_id=\u00a0\u00bb117253&Prime; back_color_type=\u00a0\u00bbuncode-palette\u00a0\u00bb][vc_custom_heading text_color=\u00a0\u00bbcolor-xsdn\u00a0\u00bb text_size=\u00a0\u00bbh3&Prime; uncode_shortcode_id=\u00a0\u00bb857587&Prime; text_color_type=\u00a0\u00bbuncode-palette\u00a0\u00bb subheading=\u00a0\u00bbAppel \u00e0 projets 2025&Prime;]Programme NumPex[\/vc_custom_heading][\/vc_column_inner][\/vc_row_inner][\/vc_column][vc_column column_width_percent=\u00a0\u00bb100&Prime; position_vertical=\u00a0\u00bbmiddle\u00a0\u00bb gutter_size=\u00a0\u00bb3&Prime; font_family=\u00a0\u00bbfont-613363&Prime; overlay_alpha=\u00a0\u00bb50&Prime; shift_x=\u00a0\u00bb0&Prime; shift_y=\u00a0\u00bb0&Prime; shift_y_down=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; medium_width=\u00a0\u00bb0&Prime; mobile_width=\u00a0\u00bb0&Prime; css_animation=\u00a0\u00bbalpha-anim\u00a0\u00bb animation_speed=\u00a0\u00bb1000&Prime; width=\u00a0\u00bb3\/4&Prime; uncode_shortcode_id=\u00a0\u00bb484410&Prime;][vc_row_inner row_inner_height_percent=\u00a0\u00bb0&Prime; row_padding=\u00a0\u00bb0&Prime; overlay_alpha=\u00a0\u00bb50&Prime; gutter_size=\u00a0\u00bb3&Prime; shift_y=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; uncode_shortcode_id=\u00a0\u00bb842540&Prime; limit_content=\u00a0\u00bb\u00a0\u00bb el_id=\u00a0\u00bbnav-overview\u00a0\u00bb][vc_column_inner column_width_percent=\u00a0\u00bb100&Prime; align_horizontal=\u00a0\u00bbalign_center\u00a0\u00bb gutter_size=\u00a0\u00bb3&Prime; style=\u00a0\u00bblight\u00a0\u00bb overlay_alpha=\u00a0\u00bb50&Prime; shift_x=\u00a0\u00bb0&Prime; shift_y=\u00a0\u00bb0&Prime; shift_y_down=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; medium_width=\u00a0\u00bb0&Prime; mobile_width=\u00a0\u00bb0&Prime; width=\u00a0\u00bb1\/1&Prime; uncode_shortcode_id=\u00a0\u00bb205708&Prime;][vc_custom_heading text_color=\u00a0\u00bbaccent\u00a0\u00bb heading_semantic=\u00a0\u00bbh6&Prime; text_size=\u00a0\u00bbh6&Prime; text_transform=\u00a0\u00bbuppercase\u00a0\u00bb uncode_shortcode_id=\u00a0\u00bb370188&Prime; text_color_type=\u00a0\u00bbuncode-palette\u00a0\u00bb]Programme NumPEx[\/vc_custom_heading][vc_custom_heading text_size=\u00a0\u00bbh1&Prime; uncode_shortcode_id=\u00a0\u00bb690316&Prime;]Quatre nouveaux projets issus de l&rsquo;appel \u00e0 projets 2025[\/vc_custom_heading][vc_column_text text_lead=\u00a0\u00bbyes\u00a0\u00bb uncode_shortcode_id=\u00a0\u00bb642992&Prime;]<\/p>\n<p data-dc-tpl=\"35\" data-om-id=\"f43a0987:40\">Le programme NumPEx lance son premier appel \u00e0 projets afin de soutenir les avanc\u00e9es dans les domaines du calcul haute performance (HPC), de l&rsquo;analyse de donn\u00e9es haute performance (HPDA) et de l&rsquo;intelligence artificielle (IA). Notre programme de recherche \u00ab France 2030 \u00bb vise \u00e0 d\u00e9velopper des logiciels capables de faire fonctionner les futures machines exascale, ainsi qu\u2019\u00e0 pr\u00e9parer les principaux codes d\u2019application scientifiques et industriels. <\/p>\n<p>[\/vc_column_text][vc_column_text text_lead=\u00a0\u00bbyes\u00a0\u00bb text_color=\u00a0\u00bbcolor-177487&Prime; uncode_shortcode_id=\u00a0\u00bb103959&Prime; text_color_type=\u00a0\u00bbuncode-palette\u00a0\u00bb]<\/p>\n<p data-dc-tpl=\"36\" data-om-id=\"f43a0987:41\"><strong>Cet appel \u00e0 projets s&rsquo;articule autour de trois axes :<\/strong><\/p>\n<p>[\/vc_column_text][vc_raw_html]PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBOdW1QRXggLSBCbG9jIDMgYXhlcyBkZSBsIGFwcGVsIChDYWxsIDIwMjUpIC0gdi4xCiAgTmFvcyBBZ2VuY3kgLSAyMDI2LTA4LTE1CiAgSU5TRVJUSU9OIDogUmF3IEhUTUwgVW5jb2RlLCByb3cgbmF2LW92ZXJ2aWV3LCBzb3VzIGxlIGNoYXBvLgogIENPTlRFTlUgOiBsZXMgMyBheGVzIGRlIGwgYXBwZWwsIHZlcmJhdGltIGRlIGxhIHBhZ2UgZGUgbCBhcHBlbC4KICBBSk9VVEVSIFVOIEFYRSA6IGR1cGxpcXVlciB1biA8ZGl2IGNsYXNzPSJucHgtYzI1LWF4ZXNfX2NhcmQiPiBldAogIGluY3JlbWVudGVyIGxlIG51bWVybyBkYW5zIDxzcGFuIGNsYXNzPSJucHgtYzI1LWF4ZXNfX251bSI+LgogIFJlc3BvbnNpdmUgOiAzIGNvbG9ubmVzICg+PSA3NjBweCkgcHVpcyBlbXBpbGVtZW50Lgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+PHN0eWxlPi5ucHgtYzI1LWF4ZXN7ZGlzcGxheTpncmlkO2dyaWQtYXV0by1yb3dzOjFmcjtnYXA6MTZweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO2ZvbnQtZmFtaWx5OmluaGVyaXR9CiAgLm5weC1jMjUtYXhlc19fY2FyZHtiYWNrZ3JvdW5kOiNGRkZGRkY7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjJweDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxMnB4O2JveC1zaGFkb3c6MCAycHggMTBweCByZ2JhKDAsMCwwLC4wNSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjE4cyBlYXNlLGJveC1zaGFkb3cgLjE4cyBlYXNlfQogIC5ucHgtYzI1LWF4ZXNfX2NhcmQ6aG92ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7Ym94LXNoYWRvdzowIDhweCAyMnB4IHJnYmEoMCwwLDAsLjEwKX0KICAubnB4LWMyNS1heGVzX19udW17d2lkdGg6MzRweDtoZWlnaHQ6MzRweDtmbGV4LXNocmluazowO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDojMTYyMjdBO2NvbG9yOiNGRkZGRkY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NzAwO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0KICAubnB4LWMyNS1heGVzX190eHR7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOiMxQzFFMjQ7bGluZS1oZWlnaHQ6MS41NTt0ZXh0LXdyYXA6cHJldHR5fQogIEBtZWRpYSAobWluLXdpZHRoOjc2MHB4KXsubnB4LWMyNS1heGVze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMywxZnIpfX0KICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsubnB4LWMyNS1heGVzX19jYXJke3RyYW5zaXRpb246bm9uZX19Cjwvc3R5bGU+PGRpdiBjbGFzcz0ibnB4LWMyNS1heGVzIj48ZGl2IGNsYXNzPSJucHgtYzI1LWF4ZXNfX2NhcmQiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWF4ZXNfX251bSIgYXJpYS1oaWRkZW49InRydWUiPjE8L3NwYW4+PHNwYW4gY2xhc3M9Im5weC1jMjUtYXhlc19fdHh0Ij5FbWVyZ2luZyBBSSBtZXRob2RzLCBhbGdvcml0aG1zIGFuZCBzb2Z0d2FyZSBmb3Igc2NpZW50aWZpYyBjb21wdXRpbmcgYW5kIEhQQyBmb3IgQUk8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS1heGVzX19jYXJkIj48c3BhbiBjbGFzcz0ibnB4LWMyNS1heGVzX19udW0iIGFyaWEtaGlkZGVuPSJ0cnVlIj4yPC9zcGFuPjxzcGFuIGNsYXNzPSJucHgtYzI1LWF4ZXNfX3R4dCI+UHJvZ3JhbW1pbmcgbW9kZWxzIGFkYXB0ZWQgdG8gYWNjZWxlcmF0ZWQgYXJjaGl0ZWN0dXJlczwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWF4ZXNfX2NhcmQiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWF4ZXNfX251bSIgYXJpYS1oaWRkZW49InRydWUiPjM8L3NwYW4+PHNwYW4gY2xhc3M9Im5weC1jMjUtYXhlc19fdHh0Ij5Xb3JrZmxvd3MgZm9yIHNjaWVudGlmaWMgZGF0YSBhbmFseXNpcywgd2l0aCB0aGUgU0tBIHByb2plY3QgYXMgYSB1c2UgY2FzZTwvc3Bhbj48L2Rpdj48L2Rpdj4=[\/vc_raw_html][vc_empty_space empty_h=\u00a0\u00bb2&Prime;][vc_raw_html]PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBOdW1QRXggLSBCbG9jIDQgdHVpbGVzIGNoaWZmcmVzIChDYWxsIDIwMjUpIC0gdi4xCiAgTmFvcyBBZ2VuY3kgLSAyMDI2LTA4LTE1CiAgSU5TRVJUSU9OIDogUmF3IEhUTUwgVW5jb2RlLCByb3cgbmF2LW92ZXJ2aWV3LCBzb3VzIGxlcyAzIGF4ZXMuCiAgUEFMRVRURSA6IHZhbGV1cnMgZW4gTWFyaW5lIGQgRXRhdCAjMTYyMjdBLgogIEFKT1VURVIgVU5FIFRVSUxFIDogZHVwbGlxdWVyIHVuIDxkaXYgY2xhc3M9Im5weC1jMjUtbWV0X190aWxlIj4uCiAgUmVzcG9uc2l2ZSA6IDQgY29sICg+PSAxMTAwcHgpIC0gMngyICg+PSA1NjBweCkgLSBlbXBpbGVtZW50Lgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+PHN0eWxlPi5ucHgtYzI1LW1ldHtkaXNwbGF5OmdyaWQ7Z3JpZC1hdXRvLXJvd3M6MWZyO2dhcDoxNHB4O2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7Zm9udC1mYW1pbHk6aW5oZXJpdH0KICAubnB4LWMyNS1tZXRfX3RpbGV7YmFja2dyb3VuZDojRkZGRkZGO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OXB4O2JveC1zaGFkb3c6MCAycHggMTBweCByZ2JhKDAsMCwwLC4wNSl9CiAgLm5weC1jMjUtbWV0X192YWx1ZXtmb250LXNpemU6MzFweDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzE2MjI3QTtsaW5lLWhlaWdodDoxLjA1fQogIC5ucHgtYzI1LW1ldF9fbGFiZWx7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS41O2NvbG9yOiM1QTYwNjh9CiAgQG1lZGlhIChtaW4td2lkdGg6NTYwcHgpey5ucHgtYzI1LW1ldHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsMWZyKX19CiAgQG1lZGlhIChtaW4td2lkdGg6MTEwMHB4KXsubnB4LWMyNS1tZXR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg0LDFmcil9fQo8L3N0eWxlPjxkaXYgY2xhc3M9Im5weC1jMjUtbWV0Ij48ZGl2IGNsYXNzPSJucHgtYzI1LW1ldF9fdGlsZSI+PGRpdiBjbGFzcz0ibnB4LWMyNS1tZXRfX3ZhbHVlIj40PC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS1tZXRfX2xhYmVsIj5wcm9qZWN0cyBmdW5kZWQ8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LW1ldF9fdGlsZSI+PGRpdiBjbGFzcz0ibnB4LWMyNS1tZXRfX3ZhbHVlIj4zPC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS1tZXRfX2xhYmVsIj5yZXNlYXJjaCBheGVzPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS1tZXRfX3RpbGUiPjxkaXYgY2xhc3M9Im5weC1jMjUtbWV0X192YWx1ZSI+4oKsNE08L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LW1ldF9fbGFiZWwiPnRvdGFsIGJ1ZGdldDwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Im5weC1jMjUtbWV0X190aWxlIj48ZGl2IGNsYXNzPSJucHgtYzI1LW1ldF9fdmFsdWUiPjQ4PC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS1tZXRfX2xhYmVsIj5tb250aHMgbWF4aW11bSBkdXJhdGlvbjwvZGl2PjwvZGl2PjwvZGl2Pg==[\/vc_raw_html][vc_empty_space empty_h=\u00a0\u00bb2&Prime;][\/vc_column_inner][\/vc_row_inner][vc_row_inner limit_content=\u00a0\u00bb\u00a0\u00bb][vc_column_inner column_width_percent=\u00a0\u00bb100&Prime; gutter_size=\u00a0\u00bb3&Prime; overlay_alpha=\u00a0\u00bb50&Prime; shift_x=\u00a0\u00bb0&Prime; shift_y=\u00a0\u00bb0&Prime; shift_y_down=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; medium_width=\u00a0\u00bb0&Prime; mobile_width=\u00a0\u00bb0&Prime; width=\u00a0\u00bb1\/1&Prime; uncode_shortcode_id=\u00a0\u00bb411290&Prime;][vc_raw_html]PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBOdW1QRXggLSBCbG9jIGZyaXNlIGNocm9ub2xvZ2lxdWUgZGUgbCBhcHBlbCAoQ2FsbCAyMDI1KSAtIHYuMS4yCiAgTmFvcyBBZ2VuY3kgLSAyMDI2LTA4LTE3CiAgSU5TRVJUSU9OIDogUmF3IEhUTUwgVW5jb2RlLCByb3cgbmF2LW92ZXJ2aWV3LCBzb3VzIGxlcyB0dWlsZXMuCiAgdi4xLjIgOiBqYWxvbiAzIGRhdGUgTWF5IDIwMjYgYXZlYyBsaWVuIHZlcnMgbCBhcnRpY2xlIGQgYW5ub25jZSA7CiAgamFsb25zIDEgZXQgMyBjbGlxdWFibGVzIChtZW1lIG9uZ2xldCkgOyBsZXMgZGV1eCBib3V0b25zIG9udCBsYSBtZW1lCiAgbGFyZ2V1ciwgdGV4dGUgYSBnYXVjaGUsIGFsaWduZXMgZW4gcGllZCBkZSBjb2xvbm5lIDsgY2Fzc2UgU0FHZS1IUEMgLwogIEtPS1RBSUxTIGFsaWduZWUgc3VyIGxlIGJyaWVmIHYuMS4xLgogIEFKT1VURVIgVU4gSkFMT04gOiBkdXBsaXF1ZXIgdW4gPGRpdiBjbGFzcz0ibnB4LWMyNS10bF9faXQiPiBldAogIGFqdXN0ZXIgcmVwZWF0KDQsMWZyKSBhdSBub21icmUgZGUgamFsb25zLgogIFJlc3BvbnNpdmUgOiByYWlsICsgY29sb25uZXMgKD49IDUyMXB4KSwgZW1waWxlbWVudCBzaW1wbGUgZW4gZGVzc291cy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPjxzdHlsZT4ubnB4LWMyNS10bHtkaXNwbGF5OmdyaWQ7Z2FwOjI0cHg7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtmb250LWZhbWlseTppbmhlcml0fQogIC5ucHgtYzI1LXRsX19pdHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1yb3dzOmF1dG8gYXV0byBhdXRvO2JvcmRlci1sZWZ0OjJweCBzb2xpZCByZ2JhKDIyNCwxNTMsMCwuNik7cGFkZGluZy1sZWZ0OjE1cHh9CiAgLm5weC1jMjUtdGxfX2RhdGV7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjEzZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOiNBODU0MDg7bGluZS1oZWlnaHQ6MS4zNX0KICAubnB4LWMyNS10bF9fcmFpbHJvd3tkaXNwbGF5Om5vbmV9CiAgLm5weC1jMjUtdGxfX2JvZHl7cGFkZGluZy10b3A6MTBweDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo3cHg7aGVpZ2h0OjEwMCU7Ym94LXNpemluZzpib3JkZXItYm94fQogIC5ucHgtYzI1LXRsX190aXRsZXtmb250LXNpemU6MTUuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMUMxRTI0O2xpbmUtaGVpZ2h0OjEuMzU7bGV0dGVyLXNwYWNpbmc6LjAxZW19CiAgLm5weC1jMjUtdGxfX2xpbmV7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS42O2NvbG9yOiM1QTYwNjg7dGV4dC13cmFwOnByZXR0eX0KICAubnB4LWMyNS10bCBhLm5weC1jMjUtdGxfX2N0YXttYXJnaW4tdG9wOmF1dG87YWxpZ24tc2VsZjpmbGV4LXN0YXJ0O21pbi13aWR0aDoxODZweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7dGV4dC1kZWNvcmF0aW9uOm5vbmUgIWltcG9ydGFudDtiYWNrZ3JvdW5kOiNGRkZGRkY7Ym9yZGVyOjFweCBzb2xpZCAjQTg1NDA4O2NvbG9yOiNBODU0MDggIWltcG9ydGFudDtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjZweCAxNHB4O2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2dhcDo3cHg7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xNXMgZWFzZSxjb2xvciAuMTVzIGVhc2V9CiAgLm5weC1jMjUtdGwgYS5ucHgtYzI1LXRsX19jdGE6aG92ZXIsLm5weC1jMjUtdGwgYS5ucHgtYzI1LXRsX19jdGE6Zm9jdXN7YmFja2dyb3VuZDojQTg1NDA4O2NvbG9yOiNGRkZGRkYgIWltcG9ydGFudH0KICAubnB4LWMyNS10bCBhLm5weC1jMjUtdGxfX2N0YTpmb2N1cy12aXNpYmxle291dGxpbmU6MnB4IHNvbGlkICNBODU0MDg7b3V0bGluZS1vZmZzZXQ6M3B4fQogIEBtZWRpYSAobWluLXdpZHRoOjUyMXB4KXsKICAgIC5ucHgtYzI1LXRse2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNCwxZnIpO2NvbHVtbi1nYXA6MThweDtyb3ctZ2FwOjB9CiAgICAubnB4LWMyNS10bF9faXR7Z3JpZC10ZW1wbGF0ZS1yb3dzOjM2cHggMTZweCBtaW5tYXgoMCwxZnIpO2JvcmRlci1sZWZ0OjA7cGFkZGluZy1sZWZ0OjB9CiAgICAubnB4LWMyNS10bF9fcmFpbHJvd3tkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfQogICAgLm5weC1jMjUtdGxfX3JhaWx7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0Oi0xOHB4O3RvcDo3cHg7Ym9yZGVyLXRvcDoycHggZG90dGVkIHJnYmEoMjI0LDE1MywwLC42KX0KICAgIC5ucHgtYzI1LXRsX19pdDpsYXN0LWNoaWxkIC5ucHgtYzI1LXRsX19yYWlse3JpZ2h0OjB9CiAgICAubnB4LWMyNS10bF9fZG90e3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDt3aWR0aDoxNHB4O2hlaWdodDoxNHB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDojRTA5OTAwO2JveC1zaGFkb3c6MCAwIDAgM3B4ICNGRkZGRkZ9CiAgfQo8L3N0eWxlPjxkaXYgY2xhc3M9Im5weC1jMjUtdGwiIGFyaWEtbGFiZWw9IlRpbWVsaW5lIG9mIHRoZSAyMDI1IGNhbGwgZm9yIHByb3Bvc2FscyI+PGRpdiBjbGFzcz0ibnB4LWMyNS10bF9faXQiIGFyaWEtbGFiZWw9IkRlY2VtYmVyIDIwMjQg4oCUIENhbGwgZm9yIHByb3Bvc2FscyBwdWJsaXNoZWQiPjxkaXYgY2xhc3M9Im5weC1jMjUtdGxfX2RhdGUiPkRlY2VtYmVyIDIwMjQ8L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LXRsX19yYWlscm93Ij48c3BhbiBjbGFzcz0ibnB4LWMyNS10bF9fcmFpbCIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj48c3BhbiBjbGFzcz0ibnB4LWMyNS10bF9fZG90IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Im5weC1jMjUtdGxfX2JvZHkiPjxkaXYgY2xhc3M9Im5weC1jMjUtdGxfX3RpdGxlIj5DYWxsIGZvciBwcm9wb3NhbHMgcHVibGlzaGVkPC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS10bF9fbGluZSI+4oCcTnVtw6lyaXF1ZSBwb3VyIGzigJlFeGFzY2FsZeKAnSDigJQgQUksIHByb2dyYW1taW5nIG1vZGVscyBhbmQgZGF0YSB3b3JrZmxvd3MgZm9yIGV4YXNjYWxlPC9kaXY+PGEgY2xhc3M9Im5weC1jMjUtdGxfX2N0YSIgaHJlZj0iaHR0cHM6Ly9udW1wZXgub3JnL2ZyL2FwcGVsLWEtcHJvcG9zaXRpb25zLW51bWVyaXF1ZS1wb3VyLWxleGFzY2FsZS1lbi1hbmdsYWlzLyI+UmVhZCB0aGUgY2FsbCA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+4oaSPC9zcGFuPjwvYT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LXRsX19pdCIgYXJpYS1sYWJlbD0iQXByaWwgMTUsIDIwMjUg4oCUIFN1Ym1pc3Npb25zIGNsb3NlIj48ZGl2IGNsYXNzPSJucHgtYzI1LXRsX19kYXRlIj5BcHJpbCAxNSwgMjAyNTwvZGl2PjxkaXYgY2xhc3M9Im5weC1jMjUtdGxfX3JhaWxyb3ciPjxzcGFuIGNsYXNzPSJucHgtYzI1LXRsX19yYWlsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPjxzcGFuIGNsYXNzPSJucHgtYzI1LXRsX19kb3QiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS10bF9fYm9keSI+PGRpdiBjbGFzcz0ibnB4LWMyNS10bF9fdGl0bGUiPlN1Ym1pc3Npb25zIGNsb3NlPC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS10bF9fbGluZSI+RXZhbHVhdGlvbiB0aHJvdWdoIHRoZSBBTlIgcGxhdGZvcm08L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LXRsX19pdCIgYXJpYS1sYWJlbD0iTWF5IDIwMjYg4oCUIFRoZSBmb3VyIHNlbGVjdGVkIHByb2plY3RzIGFubm91bmNlZCI+PGRpdiBjbGFzcz0ibnB4LWMyNS10bF9fZGF0ZSI+TWF5IDIwMjY8L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LXRsX19yYWlscm93Ij48c3BhbiBjbGFzcz0ibnB4LWMyNS10bF9fcmFpbCIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj48c3BhbiBjbGFzcz0ibnB4LWMyNS10bF9fZG90IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Im5weC1jMjUtdGxfX2JvZHkiPjxkaXYgY2xhc3M9Im5weC1jMjUtdGxfX3RpdGxlIj5UaGUgZm91ciBzZWxlY3RlZCBwcm9qZWN0cyBhbm5vdW5jZWQ8L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LXRsX19saW5lIj5EQUlNT1MsIFNBR2UtSFBDLCBLT0tUQUlMUyBhbmQgQVNUUkEgam9pbiB0aGUgcHJvZ3JhbTwvZGl2PjxhIGNsYXNzPSJucHgtYzI1LXRsX19jdGEiIGhyZWY9Imh0dHBzOi8vbnVtcGV4Lm9yZy9mci9yZXN1bHRhdHMtZGUtbGFwcGVsLWEtcHJvamV0cy1udW1wZXgvIj5SZWFkIHRoZSBhbm5vdW5jZW1lbnQgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPuKGkjwvc3Bhbj48L2E+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS10bF9faXQiIGFyaWEtbGFiZWw9Ikp1bmUgOCwgMjAyNiDigJQgUHJlc2VudGF0aW9uIHdlYmluYXIiPjxkaXYgY2xhc3M9Im5weC1jMjUtdGxfX2RhdGUiPkp1bmUgOCwgMjAyNjwvZGl2PjxkaXYgY2xhc3M9Im5weC1jMjUtdGxfX3JhaWxyb3ciPjxzcGFuIGNsYXNzPSJucHgtYzI1LXRsX19yYWlsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPjxzcGFuIGNsYXNzPSJucHgtYzI1LXRsX19kb3QiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS10bF9fYm9keSI+PGRpdiBjbGFzcz0ibnB4LWMyNS10bF9fdGl0bGUiPlByZXNlbnRhdGlvbiB3ZWJpbmFyPC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS10bF9fbGluZSI+VGhlIGZvdXIgbGF1cmVhdGUgcHJvamVjdHMgcHJlc2VudGVkIHRvIHRoZSBjb21tdW5pdHk8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4=[\/vc_raw_html][\/vc_column_inner][\/vc_row_inner][vc_row_inner limit_content=\u00a0\u00bb\u00a0\u00bb][vc_column_inner width=\u00a0\u00bb1\/1&Prime;][vc_empty_space empty_h=\u00a0\u00bb2&Prime;][vc_separator sep_color=\u00a0\u00bbcolor-prif\u00a0\u00bb uncode_shortcode_id=\u00a0\u00bb283929&Prime; sep_color_type=\u00a0\u00bbuncode-palette\u00a0\u00bb][vc_empty_space empty_h=\u00a0\u00bb2&Prime; el_id=\u00a0\u00bbnav-daimos\u00a0\u00bb][\/vc_column_inner][\/vc_row_inner][vc_row_inner row_inner_height_percent=\u00a0\u00bb0&Prime; row_padding=\u00a0\u00bb0&Prime; overlay_alpha=\u00a0\u00bb50&Prime; gutter_size=\u00a0\u00bb3&Prime; shift_y=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; uncode_shortcode_id=\u00a0\u00bb515706&Prime; limit_content=\u00a0\u00bb\u00a0\u00bb][vc_column_inner column_width_percent=\u00a0\u00bb100&Prime; align_horizontal=\u00a0\u00bbalign_center\u00a0\u00bb gutter_size=\u00a0\u00bb3&Prime; style=\u00a0\u00bblight\u00a0\u00bb overlay_alpha=\u00a0\u00bb50&Prime; shift_x=\u00a0\u00bb0&Prime; shift_y=\u00a0\u00bb0&Prime; shift_y_down=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; medium_width=\u00a0\u00bb0&Prime; mobile_width=\u00a0\u00bb0&Prime; width=\u00a0\u00bb1\/1&Prime; uncode_shortcode_id=\u00a0\u00bb205708&Prime;][vc_custom_heading text_color=\u00a0\u00bbaccent\u00a0\u00bb heading_semantic=\u00a0\u00bbh6&Prime; text_size=\u00a0\u00bbh6&Prime; text_transform=\u00a0\u00bbuppercase\u00a0\u00bb uncode_shortcode_id=\u00a0\u00bb510685&Prime; text_color_type=\u00a0\u00bbuncode-palette\u00a0\u00bb]Appelez le 2025[\/vc_custom_heading][vc_custom_heading text_size=\u00a0\u00bbh1&Prime; uncode_shortcode_id=\u00a0\u00bb174936&Prime;]DAIMOS[\/vc_custom_heading][vc_custom_heading text_color=\u00a0\u00bbcolor-jevc\u00a0\u00bb heading_semantic=\u00a0\u00bbh3&Prime; uncode_shortcode_id=\u00a0\u00bb384495&Prime; text_color_type=\u00a0\u00bbuncode-palette\u00a0\u00bb]Optimisation de l&rsquo;entra\u00eenement des mod\u00e8les d&rsquo;IA distribu\u00e9s \u00e0 grande \u00e9chelle[\/vc_custom_heading][\/vc_column_inner][\/vc_row_inner][vc_row_inner row_inner_height_percent=\u00a0\u00bb0&Prime; row_padding=\u00a0\u00bb0&Prime; overlay_alpha=\u00a0\u00bb50&Prime; gutter_size=\u00a0\u00bb3&Prime; shift_y=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; uncode_shortcode_id=\u00a0\u00bb515706&Prime; limit_content=\u00a0\u00bb\u00a0\u00bb][vc_column_inner column_width_percent=\u00a0\u00bb100&Prime; align_horizontal=\u00a0\u00bbalign_center\u00a0\u00bb gutter_size=\u00a0\u00bb3&Prime; style=\u00a0\u00bblight\u00a0\u00bb overlay_alpha=\u00a0\u00bb50&Prime; shift_x=\u00a0\u00bb0&Prime; shift_y=\u00a0\u00bb0&Prime; shift_y_down=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; medium_width=\u00a0\u00bb0&Prime; mobile_width=\u00a0\u00bb0&Prime; width=\u00a0\u00bb1\/1&Prime; uncode_shortcode_id=\u00a0\u00bb205708&Prime;][vc_raw_html]PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBOdW1QRXggLSBCbG9jIGJhbmRlYXUgZCBpZGVudGl0ZSBwcm9qZXQgLSBEQUlNT1MgKENhbGwgMjAyNSkgLSB2LjEuMgogIE5hb3MgQWdlbmN5IC0gMjAyNi0wOC0xNwogIElOU0VSVElPTiA6IFJhdyBIVE1MIFVuY29kZSwgcm93IG5hdi1kYWltb3MsIHNvdXMgbGUgc291cy10aXRyZQogIGRldmVsb3BwZS4gUmVtcGxhY2UgbGUgYmxvYyBucHgtYzI1LWNhbGxheGlzLWRhaW1vcy5odG1sICh2LjEpLgogIENPTlRFTlUgOiB1bmUgY2FydGUsIHRyb2lzIGNlbGx1bGVzIC0gUHJvamVjdCBsZWFkZXIgLyBDYWxsIGF4aXMKICAodmVyYmF0aW0pIC8gQnVkZ2V0LiBGaWxldCBzdXBlcmlldXIgZGVncmFkZSBtYXJpbmUtb3JhbmdlLgogIFBIT1RPIExFQURFUiA6IHJlbXBsYWNlciA8c3BhbiBjbGFzcz0ibnB4LWMyNS1iYW5kX19pbmkiPi4uLjwvc3Bhbj5wYXIgPGltZyBjbGFzcz0ibnB4LWMyNS1iYW5kX19waWMiIHNyYz0iVVJMIG1lZGlhdGhlcXVlIiBhbHQ9IiIgbG9hZGluZz0ibGF6eSI+IGxlIGpvdXIgb3UgbGUgcG9ydHJhaXQgZXN0IGZvdXJuaS4KICBSZXNwb25zaXZlIDogMyBjZWxsdWxlcyBlbiBsaWduZSAoPj0gNzAwcHgpLCBlbXBpbGVlcyBlbiBkZXNzb3VzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+PHN0eWxlPi5ucHgtYzI1LWJhbmR7bWF4LXdpZHRoOjg2MHB4O21hcmdpbjowIGF1dG87YmFja2dyb3VuZDojRkZGRkZGO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yYWRpdXM6MTJweDtib3gtc2hhZG93OjAgMnB4IDEwcHggcmdiYSgwLDAsMCwuMDUpO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtmb250LWZhbWlseTppbmhlcml0fQogIC5ucHgtYzI1LWJhbmRfX2Jhcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtoZWlnaHQ6NHB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMxNjIyN0EgMCUsIzE2MjI3QSA1NSUsI0YwODEzQyA1NSUsI0YwODEzQyAxMDAlKX0KICAubnB4LWMyNS1iYW5kX19jZWxse3BhZGRpbmc6MjBweCAxOHB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6NHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpO2JveC1zaXppbmc6Ym9yZGVyLWJveH0KICAubnB4LWMyNS1iYW5kX19jZWxsLS1sZWFke2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEzcHh9CiAgLm5weC1jMjUtYmFuZF9faW5pe3dpZHRoOjUycHg7aGVpZ2h0OjUycHg7ZmxleC1zaHJpbms6MDtib3JkZXItcmFkaXVzOjk5OXB4O2JvcmRlcjozcHggc29saWQgI0VFRjJGQTtiYWNrZ3JvdW5kOiNFRUYyRkE7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQtc2l6ZToxN3B4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMTYyMjdBO2xldHRlci1zcGFjaW5nOi4wNGVtfQogIC5ucHgtYzI1LWJhbmRfX3BpY3t3aWR0aDo1MnB4O2hlaWdodDo1MnB4O2ZsZXgtc2hyaW5rOjA7Ym9yZGVyLXJhZGl1czo5OTlweDtib3JkZXI6M3B4IHNvbGlkICNFRUYyRkE7b2JqZWN0LWZpdDpjb3ZlcjtkaXNwbGF5OmJsb2NrfQogIC5ucHgtYzI1LWJhbmRfX2NvbHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoycHg7bWluLXdpZHRoOjB9CiAgLm5weC1jMjUtYmFuZF9fbGJse2ZvbnQtc2l6ZToxMHB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMTZlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6IzZFNzQ3RX0KICAubnB4LWMyNS1iYW5kX19uYW1le2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxNjIyN0E7bGluZS1oZWlnaHQ6MS4zfQogIC5ucHgtYzI1LWJhbmRfX3N1Yntmb250LXNpemU6MTEuNXB4O2NvbG9yOiM1QTYwNjg7bGluZS1oZWlnaHQ6MS40fQogIC5ucHgtYzI1LWJhbmRfX2F4aXN7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1MDA7Y29sb3I6IzFDMUUyNDtsaW5lLWhlaWdodDoxLjU7dGV4dC13cmFwOnByZXR0eX0KICAubnB4LWMyNS1iYW5kX19jZWxsLS1idWRnZXR7YmFja2dyb3VuZDojRUVGMkZBO2JvcmRlci1ib3R0b206MH0KICAubnB4LWMyNS1iYW5kX19jZWxsLS1idWRnZXQgLm5weC1jMjUtYmFuZF9fbGJse2NvbG9yOiMxNjIyN0F9CiAgLm5weC1jMjUtYmFuZF9fYW1vdW50e2ZvbnQtc2l6ZToyMXB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMTYyMjdBO2xpbmUtaGVpZ2h0OjEuMX0KICBAbWVkaWEgKG1pbi13aWR0aDo3MDBweCl7CiAgICAubnB4LWMyNS1iYW5ke2dyaWQtdGVtcGxhdGUtY29sdW1uczoxLjI1ZnIgMS40NWZyIC44ZnJ9CiAgICAubnB4LWMyNS1iYW5kX19jZWxse2JvcmRlci1ib3R0b206MDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpfQogICAgLm5weC1jMjUtYmFuZF9fY2VsbC0tYnVkZ2V0e2JvcmRlci1yaWdodDowfQogIH0KPC9zdHlsZT48ZGl2IGNsYXNzPSJucHgtYzI1LWJhbmQiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2JhciIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj48ZGl2IGNsYXNzPSJucHgtYzI1LWJhbmRfX2NlbGwgbnB4LWMyNS1iYW5kX19jZWxsLS1sZWFkIj48c3BhbiBjbGFzcz0ibnB4LWMyNS1iYW5kX19pbmkiIGFyaWEtaGlkZGVuPSJ0cnVlIj5KSDwvc3Bhbj48c3BhbiBjbGFzcz0ibnB4LWMyNS1iYW5kX19jb2wiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2xibCI+UHJvamVjdCBsZWFkZXI8L3NwYW4+PHNwYW4gY2xhc3M9Im5weC1jMjUtYmFuZF9fbmFtZSI+SnVsaWVuIEhlcnJtYW5uPC9zcGFuPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX3N1YiI+Q05SUyByZXNlYXJjaGVyPC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWJhbmRfX2NlbGwiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2xibCI+Q2FsbCBheGlzPC9zcGFuPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2F4aXMiPlNXIGZvciB0aGUgZWZmaWNpZW50IHRyYWluaW5nIG9mIGxhcmdlIEFJIG1vZGVsczwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWJhbmRfX2NlbGwgbnB4LWMyNS1iYW5kX19jZWxsLS1idWRnZXQiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2xibCI+QnVkZ2V0PC9zcGFuPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2Ftb3VudCI+4oKsOTAwSzwvc3Bhbj48L2Rpdj48L2Rpdj4=[\/vc_raw_html][vc_empty_space empty_h=\u00a0\u00bb2&Prime;][vc_column_text uncode_shortcode_id=\u00a0\u00bb171502&Prime;]L&rsquo;entra\u00eenement de mod\u00e8les d&rsquo;IA \u00e0 grande \u00e9chelle pose des d\u00e9fis majeurs, notamment en termes de co\u00fbt de calcul et d&rsquo;efficacit\u00e9 \u00e9nerg\u00e9tique. Ce projet s&rsquo;attache \u00e0 r\u00e9soudre ces probl\u00e8mes en d\u00e9veloppant une nouvelle pile logicielle d\u00e9di\u00e9e \u00e0 l&rsquo;apprentissage profond \u00e0 grande \u00e9chelle, fond\u00e9e sur une int\u00e9gration \u00e9troite des avanc\u00e9es algorithmiques, de l&rsquo;optimisation au niveau des syst\u00e8mes et de cas d&rsquo;utilisation concrets. Il s&rsquo;inscrit directement dans les priorit\u00e9s du programme PEPR NumPEx consacr\u00e9 au calcul haute performance (HPC) pour l&rsquo;IA.[\/vc_column_text][vc_empty_space empty_h=\u00a0\u00bb2&Prime;][vc_raw_html]PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBOdW1QRXggLSBCbG9jIHNjaGVtYSBhcmNoaXRlY3R1cmUgREFJTU9TIChDYWxsIDIwMjUpIC0gdi4xCiAgTmFvcyBBZ2VuY3kgLSAyMDI2LTA4LTE1CiAgSU5TRVJUSU9OIDogUmF3IEhUTUwgVW5jb2RlLCByb3cgbmF2LWRhaW1vcywgc291cyBsYSBsaWduZSBDYWxsIGF4aXMuCiAgQ09OVEVOVSA6IHNjaGVtYSByZWRlc3NpbmUgZGFucyBsYSBEQSBkdSBzaXRlLCBsaWJlbGxlcyB2ZXJiYXRpbSBkdQogIGRlY2sgY2xpZW50IChtZW50aW9ucyBOdW1QRXggZXQgQWxpY2UgUmVjb3F1ZSBjb21wcmlzZXMpLiBBdWN1bmUgaW1hZ2UgOgogIHRvdXQgZXN0IGR1IHRleHRlIEhUTUwsIGRvbmMgdHJhZHVpc2libGUgcGFyIFdQTUwuCiAgTElFTlMgOiBjaGlwcyBFeGEtU29mVCBldCBFeGEtTUEgdmVycyBsZXMgcGFnZXMgUEMsIG1lbWUgb25nbGV0LgogIFJlc3BvbnNpdmUgOiBiYW5kZWF1eCBsYXRlcmF1eCB2ZXJ0aWNhdXggKD49IDkwMHB4KSBwdWlzIGhvcml6b250YXV4IDsKICBzb3VzLWJsb2NzIHN1ciAyIGNvbG9ubmVzICg+PSA3NjBweCkgcHVpcyBlbXBpbGVzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+PHN0eWxlPi5ucHgtYzI1LWRnbXtkaXNwbGF5OmdyaWQ7Z2FwOjE0cHg7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtmb250LWZhbWlseTppbmhlcml0fQogIC5ucHgtYzI1LWRnbV9fc2lkZXtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoxNHB4IDEycHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMDNlbTtsaW5lLWhlaWdodDoxLjR9CiAgLm5weC1jMjUtZGdtX19zaWRlLS1ucHtiYWNrZ3JvdW5kOiMxNjIyN0E7Y29sb3I6I0ZGRkZGRjtmb250LXNpemU6MTMuNXB4O2xldHRlci1zcGFjaW5nOi4wNWVtfQogIC5ucHgtYzI1LWRnbV9fc2lkZS0taHBje2JhY2tncm91bmQ6I0ZGRkZGRjtib3JkZXI6MS41cHggc29saWQgIzdGQTNEODtjb2xvcjojMTYyMjdBfQogIC5ucHgtYzI1LWRnbV9fY29yZXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxNHB4O21pbi13aWR0aDowfQogIC5ucHgtYzI1LWRnbV9fYXBwc3tiYWNrZ3JvdW5kOiNFRUYyRkE7Ym9yZGVyOjEuNXB4IHNvbGlkIHJnYmEoMjIsMzQsMTIyLC40NSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MTZweCAxOHB4O3RleHQtYWxpZ246Y2VudGVyfQogIC5ucHgtYzI1LWRnbV9fYXBwcyBie2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMTYyMjdBO2xldHRlci1zcGFjaW5nOi4wM2VtO2Rpc3BsYXk6YmxvY2t9CiAgLm5weC1jMjUtZGdtX19hcHBzIHNwYW57bWFyZ2luLXRvcDo1cHg7Zm9udC1zaXplOjEzLjVweDtjb2xvcjojM0Y0NDRDO2xpbmUtaGVpZ2h0OjEuNTtkaXNwbGF5OmJsb2NrfQogIC5ucHgtYzI1LWRnbV9fYm94e2JhY2tncm91bmQ6I0ZGRkZGRjtib3JkZXI6MS41cHggc29saWQgcmdiYSgyMiwzNCwxMjIsLjQ1KTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoxOHB4fQogIC5ucHgtYzI1LWRnbV9fdHRse3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMTYyMjdBO2xldHRlci1zcGFjaW5nOi4wNmVtfQogIC5ucHgtYzI1LWRnbV9fc3Vie2Rpc3BsYXk6Z3JpZDtnYXA6MTJweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO21hcmdpbi10b3A6MTRweH0KICAubnB4LWMyNS1kZ21fX2NlbGx7YmFja2dyb3VuZDojRjdGOEZBO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMSk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTRweCAxNnB4fQogIC5ucHgtYzI1LWRnbV9fY2VsbCBoNHttYXJnaW46MDtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMUMxRTI0O2xpbmUtaGVpZ2h0OjEuNH0KICAubnB4LWMyNS1kZ21fX2NlbGwgdWx7bWFyZ2luOjhweCAwIDA7cGFkZGluZy1sZWZ0OjE2cHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NHB4O2ZvbnQtc2l6ZToxMi41cHg7bGluZS1oZWlnaHQ6MS41NTtjb2xvcjojNUE2MDY4fQogIC5ucHgtYzI1LWRnbV9fcmVmc3ttYXJnaW46MCBhdXRvO21heC13aWR0aDo1MjBweDtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjE2cHh9CiAgLm5weC1jMjUtZGdtX19yZWZ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXJ9CiAgLm5weC1jMjUtZGdtX19zdGVte2hlaWdodDozMHB4O2JvcmRlci1sZWZ0OjJweCBkYXNoZWQgcmdiYSgyMiwzNCwxMjIsLjQ1KX0KICAubnB4LWMyNS1kZ21fX3JlZnMgYXt0ZXh0LWRlY29yYXRpb246bm9uZSAhaW1wb3J0YW50O2JhY2tncm91bmQ6I0ZGRkZGRjtib3JkZXI6MS41cHggc29saWQgI0YwODEzQztjb2xvcjojQTg1NDA4ICFpbXBvcnRhbnQ7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo3MDA7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjlweCAyMHB4O2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo3cHg7bGV0dGVyLXNwYWNpbmc6LjAyZW07dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xNXMgZWFzZSxjb2xvciAuMTVzIGVhc2V9CiAgLm5weC1jMjUtZGdtX19yZWZzIGE6aG92ZXIsLm5weC1jMjUtZGdtX19yZWZzIGE6Zm9jdXN7YmFja2dyb3VuZDojRjA4MTNDO2NvbG9yOiNGRkZGRkYgIWltcG9ydGFudH0KICAubnB4LWMyNS1kZ21fX3JlZnMgYTpmb2N1cy12aXNpYmxle291dGxpbmU6MnB4IHNvbGlkICNBODU0MDg7b3V0bGluZS1vZmZzZXQ6M3B4fQogIEBtZWRpYSAobWluLXdpZHRoOjc2MHB4KXsKICAgIC5ucHgtYzI1LWRnbV9fc3Vie2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyfQogICAgLm5weC1jMjUtZGdtX19zdWI+ZGl2Om50aC1jaGlsZCgxKXtncmlkLWNvbHVtbjoxO2dyaWQtcm93OjF9CiAgICAubnB4LWMyNS1kZ21fX3N1Yj5kaXY6bnRoLWNoaWxkKDIpe2dyaWQtY29sdW1uOjE7Z3JpZC1yb3c6Mn0KICAgIC5ucHgtYzI1LWRnbV9fc3ViPmRpdjpudGgtY2hpbGQoMyl7Z3JpZC1jb2x1bW46MjtncmlkLXJvdzoxLzM7YWxpZ24tc2VsZjpjZW50ZXJ9CiAgfQogIEBtZWRpYSAobWluLXdpZHRoOjkwMHB4KXsKICAgIC5ucHgtYzI1LWRnbXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0byBtaW5tYXgoMCwxZnIpIGF1dG99CiAgICAubnB4LWMyNS1kZ21fX3NpZGV7d3JpdGluZy1tb2RlOnZlcnRpY2FsLXJsO3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX0KICB9Cjwvc3R5bGU+PGRpdiBjbGFzcz0ibnB4LWMyNS1kZ20iIGFyaWEtbGFiZWw9IkRBSU1PUyBhcmNoaXRlY3R1cmUiPjxkaXYgY2xhc3M9Im5weC1jMjUtZGdtX19zaWRlIG5weC1jMjUtZGdtX19zaWRlLS1ucCI+TnVtUEV4PC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS1kZ21fX2NvcmUiPjxkaXYgY2xhc3M9Im5weC1jMjUtZGdtX19hcHBzIj48Yj5BcHBsaWNhdGlvbnM8L2I+PHNwYW4+V2VhdGhlciBGb3JlY2FzdGluZyAoPHN0cm9uZz5BbmVtb2k8L3N0cm9uZz4pPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Im5weC1jMjUtZGdtX19ib3giPjxkaXYgY2xhc3M9Im5weC1jMjUtZGdtX190dGwiPkRBSU1PUzwvZGl2PjxkaXYgY2xhc3M9Im5weC1jMjUtZGdtX19zdWIiPjxkaXYgY2xhc3M9Im5weC1jMjUtZGdtX19jZWxsIj48aDQ+U2NhbGFibGUgVHJhaW5pbmcgUGFyYWRpZ21zPC9oND48dWw+PGxpPkdlbmVyYWwgUHVycG9zZSBUcmFpbmluZzwvbGk+PGxpPlRyYW5zZm9ybWVycywgTXVsdGltb2RhbCBtb2RlbHM8L2xpPjxsaT5BbHRlcm5hdGl2ZSB0byBCYWNrcHJvcGFnYXRpb248L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS1kZ21fX2NlbGwiPjxoND5TY2FsYWJsZSBHTk5zPC9oND48dWw+PGxpPkFwcGxpY2F0aW9uLWRyaXZlbiBhbGdvcml0aG1zPC9saT48bGk+TW9kZWwgdHJhaW5pbmcgb24gSFBDPC9saT48bGk+TUxERCBmb3IgR05OczwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWRnbV9fY2VsbCI+PGg0PkludGVncmF0aW9uICYgVG9vbHM8L2g0Pjx1bD48bGk+QnJpZGdlIGZyb20gcmVzZWFyY2ggdG8gcHJhY3RpY2U8L2xpPjxsaT5BZGFwdGF0aXZlIGNvbW11bmljYXRpb248L2xpPjxsaT5JbnRlZ3JhdGlvbiBvZiBhbGdvcml0aG1zIGluIDxlbT5BbmVtb2k8L2VtPjwvbGk+PGxpPkJlbmNobWFyayBhbmQgZGVtb25zdHJhdG9yczwvbGk+PC91bD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWRnbV9fc2lkZSBucHgtYzI1LWRnbV9fc2lkZS0taHBjIj5BbGljZSBSZWNvcXVlIEV4YXNjYWxlIFN1cGVyY29tcHV0ZXI8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWRnbV9fcmVmcyI+PGRpdiBjbGFzcz0ibnB4LWMyNS1kZ21fX3JlZiI+PHNwYW4gY2xhc3M9Im5weC1jMjUtZGdtX19zdGVtIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPjxhIGhyZWY9Imh0dHBzOi8vbnVtcGV4Lm9yZy9mci9leGEtc29mdC1sb2dpY2llbHMtZXQtb3V0aWxzLWhwYy8iPkV4YS1Tb2ZUIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj7ihpI8L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9Im5weC1jMjUtZGdtX19yZWYiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWRnbV9fc3RlbSIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj48YSBocmVmPSJodHRwczovL251bXBleC5vcmcvZnIvZXhhLW1hLW1ldGhvZGVzLWV0LWFsZ29yaXRobWVzLXBvdXItZXhhc2NhbGUvIj5FeGEtTUEgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPuKGkjwvc3Bhbj48L2E+PC9kaXY+PC9kaXY+[\/vc_raw_html][\/vc_column_inner][\/vc_row_inner][vc_row_inner limit_content=\u00a0\u00bb\u00a0\u00bb][vc_column_inner width=\u00a0\u00bb1\/1&Prime;][vc_empty_space empty_h=\u00a0\u00bb2&Prime;][vc_separator sep_color=\u00a0\u00bbcolor-prif\u00a0\u00bb uncode_shortcode_id=\u00a0\u00bb283929&Prime; sep_color_type=\u00a0\u00bbuncode-palette\u00a0\u00bb][vc_empty_space empty_h=\u00a0\u00bb2&Prime; el_id=\u00a0\u00bbnav-sage-hpc\u00a0\u00bb][\/vc_column_inner][\/vc_row_inner][vc_row_inner row_inner_height_percent=\u00a0\u00bb0&Prime; row_padding=\u00a0\u00bb0&Prime; overlay_alpha=\u00a0\u00bb50&Prime; gutter_size=\u00a0\u00bb3&Prime; shift_y=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; uncode_shortcode_id=\u00a0\u00bb515706&Prime; limit_content=\u00a0\u00bb\u00a0\u00bb][vc_column_inner column_width_percent=\u00a0\u00bb100&Prime; align_horizontal=\u00a0\u00bbalign_center\u00a0\u00bb gutter_size=\u00a0\u00bb3&Prime; style=\u00a0\u00bblight\u00a0\u00bb overlay_alpha=\u00a0\u00bb50&Prime; shift_x=\u00a0\u00bb0&Prime; shift_y=\u00a0\u00bb0&Prime; shift_y_down=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; medium_width=\u00a0\u00bb0&Prime; mobile_width=\u00a0\u00bb0&Prime; width=\u00a0\u00bb1\/1&Prime; uncode_shortcode_id=\u00a0\u00bb205708&Prime;][vc_custom_heading text_color=\u00a0\u00bbaccent\u00a0\u00bb heading_semantic=\u00a0\u00bbh6&Prime; text_size=\u00a0\u00bbh6&Prime; text_transform=\u00a0\u00bbuppercase\u00a0\u00bb uncode_shortcode_id=\u00a0\u00bb193964&Prime; text_color_type=\u00a0\u00bbuncode-palette\u00a0\u00bb]Appelez le 2025[\/vc_custom_heading][vc_custom_heading heading_semantic=\u00a0\u00bbh3&Prime; text_size=\u00a0\u00bbh1&Prime; uncode_shortcode_id=\u00a0\u00bb359895&Prime;]SAGE-HPC[\/vc_custom_heading][vc_custom_heading text_color=\u00a0\u00bbcolor-jevc\u00a0\u00bb heading_semantic=\u00a0\u00bbh3&Prime; uncode_shortcode_id=\u00a0\u00bb207086&Prime; text_color_type=\u00a0\u00bbuncode-palette\u00a0\u00bb]Strat\u00e9gies intelligentes pour l&rsquo;optimisation multi-fid\u00e9lit\u00e9 dans les environnements de calcul haute performance (HPC) \u00e0 l&rsquo;exascale[\/vc_custom_heading][\/vc_column_inner][\/vc_row_inner][vc_row_inner row_inner_height_percent=\u00a0\u00bb0&Prime; row_padding=\u00a0\u00bb0&Prime; overlay_alpha=\u00a0\u00bb50&Prime; gutter_size=\u00a0\u00bb3&Prime; shift_y=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; uncode_shortcode_id=\u00a0\u00bb957282&Prime; limit_content=\u00a0\u00bb\u00a0\u00bb][vc_column_inner column_width_percent=\u00a0\u00bb100&Prime; align_horizontal=\u00a0\u00bbalign_center\u00a0\u00bb gutter_size=\u00a0\u00bb3&Prime; style=\u00a0\u00bblight\u00a0\u00bb overlay_alpha=\u00a0\u00bb50&Prime; shift_x=\u00a0\u00bb0&Prime; shift_y=\u00a0\u00bb0&Prime; shift_y_down=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; medium_width=\u00a0\u00bb0&Prime; mobile_width=\u00a0\u00bb0&Prime; width=\u00a0\u00bb1\/1&Prime; uncode_shortcode_id=\u00a0\u00bb205708&Prime;][vc_raw_html]PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBOdW1QRXggLSBCbG9jIGJhbmRlYXUgZCBpZGVudGl0ZSBwcm9qZXQgLSBTQUdFLUhQQyAoQ2FsbCAyMDI1KSAtIHYuMS4yCiAgTmFvcyBBZ2VuY3kgLSAyMDI2LTA4LTE3CiAgSU5TRVJUSU9OIDogUmF3IEhUTUwgVW5jb2RlLCByb3cgbmF2LXNhZ2UtaHBjLCBzb3VzIGxlIHNvdXMtdGl0cmUKICBkZXZlbG9wcGUuIFJlbXBsYWNlIGxlIGJsb2MgbnB4LWMyNS1jYWxsYXhpcy1zYWdlLWhwYy5odG1sICh2LjEpLgogIENPTlRFTlUgOiB1bmUgY2FydGUsIHRyb2lzIGNlbGx1bGVzIC0gUHJvamVjdCBsZWFkZXIgLyBDYWxsIGF4aXMKICAodmVyYmF0aW0pIC8gQnVkZ2V0LiBGaWxldCBzdXBlcmlldXIgZGVncmFkZSBtYXJpbmUtb3JhbmdlLgogIFBIT1RPIExFQURFUiA6IHJlbXBsYWNlciA8c3BhbiBjbGFzcz0ibnB4LWMyNS1iYW5kX19pbmkiPi4uLjwvc3Bhbj5wYXIgPGltZyBjbGFzcz0ibnB4LWMyNS1iYW5kX19waWMiIHNyYz0iVVJMIG1lZGlhdGhlcXVlIiBhbHQ9IiIgbG9hZGluZz0ibGF6eSI+IGxlIGpvdXIgb3UgbGUgcG9ydHJhaXQgZXN0IGZvdXJuaS4KICBSZXNwb25zaXZlIDogMyBjZWxsdWxlcyBlbiBsaWduZSAoPj0gNzAwcHgpLCBlbXBpbGVlcyBlbiBkZXNzb3VzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+PHN0eWxlPi5ucHgtYzI1LWJhbmR7bWF4LXdpZHRoOjg2MHB4O21hcmdpbjowIGF1dG87YmFja2dyb3VuZDojRkZGRkZGO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yYWRpdXM6MTJweDtib3gtc2hhZG93OjAgMnB4IDEwcHggcmdiYSgwLDAsMCwuMDUpO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtmb250LWZhbWlseTppbmhlcml0fQogIC5ucHgtYzI1LWJhbmRfX2Jhcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtoZWlnaHQ6NHB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMxNjIyN0EgMCUsIzE2MjI3QSA1NSUsI0YwODEzQyA1NSUsI0YwODEzQyAxMDAlKX0KICAubnB4LWMyNS1iYW5kX19jZWxse3BhZGRpbmc6MjBweCAxOHB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6NHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpO2JveC1zaXppbmc6Ym9yZGVyLWJveH0KICAubnB4LWMyNS1iYW5kX19jZWxsLS1sZWFke2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEzcHh9CiAgLm5weC1jMjUtYmFuZF9faW5pe3dpZHRoOjUycHg7aGVpZ2h0OjUycHg7ZmxleC1zaHJpbms6MDtib3JkZXItcmFkaXVzOjk5OXB4O2JvcmRlcjozcHggc29saWQgI0VFRjJGQTtiYWNrZ3JvdW5kOiNFRUYyRkE7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQtc2l6ZToxN3B4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMTYyMjdBO2xldHRlci1zcGFjaW5nOi4wNGVtfQogIC5ucHgtYzI1LWJhbmRfX3BpY3t3aWR0aDo1MnB4O2hlaWdodDo1MnB4O2ZsZXgtc2hyaW5rOjA7Ym9yZGVyLXJhZGl1czo5OTlweDtib3JkZXI6M3B4IHNvbGlkICNFRUYyRkE7b2JqZWN0LWZpdDpjb3ZlcjtkaXNwbGF5OmJsb2NrfQogIC5ucHgtYzI1LWJhbmRfX2NvbHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoycHg7bWluLXdpZHRoOjB9CiAgLm5weC1jMjUtYmFuZF9fbGJse2ZvbnQtc2l6ZToxMHB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMTZlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6IzZFNzQ3RX0KICAubnB4LWMyNS1iYW5kX19uYW1le2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxNjIyN0E7bGluZS1oZWlnaHQ6MS4zfQogIC5ucHgtYzI1LWJhbmRfX3N1Yntmb250LXNpemU6MTEuNXB4O2NvbG9yOiM1QTYwNjg7bGluZS1oZWlnaHQ6MS40fQogIC5ucHgtYzI1LWJhbmRfX2F4aXN7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1MDA7Y29sb3I6IzFDMUUyNDtsaW5lLWhlaWdodDoxLjU7dGV4dC13cmFwOnByZXR0eX0KICAubnB4LWMyNS1iYW5kX19jZWxsLS1idWRnZXR7YmFja2dyb3VuZDojRUVGMkZBO2JvcmRlci1ib3R0b206MH0KICAubnB4LWMyNS1iYW5kX19jZWxsLS1idWRnZXQgLm5weC1jMjUtYmFuZF9fbGJse2NvbG9yOiMxNjIyN0F9CiAgLm5weC1jMjUtYmFuZF9fYW1vdW50e2ZvbnQtc2l6ZToyMXB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMTYyMjdBO2xpbmUtaGVpZ2h0OjEuMX0KICBAbWVkaWEgKG1pbi13aWR0aDo3MDBweCl7CiAgICAubnB4LWMyNS1iYW5ke2dyaWQtdGVtcGxhdGUtY29sdW1uczoxLjI1ZnIgMS40NWZyIC44ZnJ9CiAgICAubnB4LWMyNS1iYW5kX19jZWxse2JvcmRlci1ib3R0b206MDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpfQogICAgLm5weC1jMjUtYmFuZF9fY2VsbC0tYnVkZ2V0e2JvcmRlci1yaWdodDowfQogIH0KPC9zdHlsZT48ZGl2IGNsYXNzPSJucHgtYzI1LWJhbmQiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2JhciIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj48ZGl2IGNsYXNzPSJucHgtYzI1LWJhbmRfX2NlbGwgbnB4LWMyNS1iYW5kX19jZWxsLS1sZWFkIj48c3BhbiBjbGFzcz0ibnB4LWMyNS1iYW5kX19pbmkiIGFyaWEtaGlkZGVuPSJ0cnVlIj5MRzwvc3Bhbj48c3BhbiBjbGFzcz0ibnB4LWMyNS1iYW5kX19jb2wiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2xibCI+UHJvamVjdCBsZWFkZXI8L3NwYW4+PHNwYW4gY2xhc3M9Im5weC1jMjUtYmFuZF9fbmFtZSI+TGHDq3RpdGlhIEdpcmFsZGk8L3NwYW4+PHNwYW4gY2xhc3M9Im5weC1jMjUtYmFuZF9fc3ViIj5JbnJpYSByZXNlYXJjaGVyPC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWJhbmRfX2NlbGwiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2xibCI+Q2FsbCBheGlzPC9zcGFuPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2F4aXMiPk9wZW4gY2FsbCBmb3IgQUkgZm9yIEhQQzwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWJhbmRfX2NlbGwgbnB4LWMyNS1iYW5kX19jZWxsLS1idWRnZXQiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2xibCI+QnVkZ2V0PC9zcGFuPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2Ftb3VudCI+4oKsODAwSzwvc3Bhbj48L2Rpdj48L2Rpdj4=[\/vc_raw_html][vc_empty_space empty_h=\u00a0\u00bb2&Prime;][vc_column_text text_lead=\u00a0\u00bbyes\u00a0\u00bb uncode_shortcode_id=\u00a0\u00bb809398&Prime;]<strong>Comment coordonner \u00e0 la fois le choix du niveau de fid\u00e9lit\u00e9, les m\u00e9thodes d&rsquo;optimisation et l&rsquo;allocation des ressources dans un environnement exascale ?<\/strong>[\/vc_column_text][vc_column_text uncode_shortcode_id=\u00a0\u00bb171502&Prime;]Le projet SAGE-HPC vise \u00e0 d\u00e9velopper une plateforme logicielle \u00e9volutive, ouverte et interop\u00e9rable destin\u00e9e \u00e0 l&rsquo;optimisation multifid\u00e9lit\u00e9 de probl\u00e8mes physiques complexes dans des environnements de calcul haute performance (HPC) \u00e0 l&rsquo;exascale. La r\u00e9solution de ces probl\u00e8mes d\u2019optimisation constitue un d\u00e9fi scientifique majeur en raison de la complexit\u00e9 des ph\u00e9nom\u00e8nes physiques en jeu et du co\u00fbt de calcul associ\u00e9 aux simulations \u00e0 haute fid\u00e9lit\u00e9. Pour relever ce d\u00e9fi, le projet s&rsquo;appuie \u00e0 la fois sur l&rsquo;utilisation coordonn\u00e9e de mod\u00e8les \u00e0 fid\u00e9lit\u00e9 variable \u2014 o\u00f9 des mod\u00e8les simplifi\u00e9s et peu co\u00fbteux guident l&rsquo;exploration de l&rsquo;espace des solutions, tandis que des mod\u00e8les \u00e0 haute fid\u00e9lit\u00e9 sont utilis\u00e9s de mani\u00e8re s\u00e9lective pour affiner les r\u00e9sultats \u2014 et sur l&rsquo;exploitation massive des ressources HPC exascale, permettant ainsi un traitement parall\u00e8le \u00e0 grande \u00e9chelle de ces approches.[\/vc_column_text][vc_empty_space empty_h=\u00a0\u00bb2&Prime;][vc_raw_html]PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBOdW1QRXggLSBCbG9jIHNjaGVtYSBkZSBwcmluY2lwZSBTQUdFLUhQQyArIGFwcGxpY2F0aW9ucyAoQ2FsbCAyMDI1KSAtIHYuMQogIE5hb3MgQWdlbmN5IC0gMjAyNi0wOC0xNQogIElOU0VSVElPTiA6IFJhdyBIVE1MIFVuY29kZSwgcm93IG5hdi1zYWdlLWhwYywgc291cyBsYSBsaWduZSBDYWxsIGF4aXMuCiAgQ09OVEVOVSA6IHNjaGVtYSByZWRlc3NpbmUgKEFJIC0gU0FHRS1IUEMgLSBIUEMpIHB1aXMgbGVzIDMKICBhcHBsaWNhdGlvbnMuIExpYmVsbGVzIHZlcmJhdGltIGRlIGxhIHNsaWRlLCB0ZXh0ZSBIVE1MIHRyYWR1aXNpYmxlLgogIFJlc3BvbnNpdmUgOiAzIGNvbG9ubmVzICsgZmxlY2hlcyBob3Jpem9udGFsZXMgKD49IDc2MHB4KSwgc2lub24KICBlbXBpbGVtZW50IGF2ZWMgZmxlY2hlcyBwaXZvdGVlcyA7IGNhcnRlcyBhcHBsaWNhdGlvbnMgMyAtPiAxLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+PHN0eWxlPi5ucHgtYzI1LXNhZ2V7ZGlzcGxheTpncmlkO2dhcDoxNHB4O2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktaXRlbXM6Y2VudGVyO2ZvbnQtZmFtaWx5OmluaGVyaXR9CiAgLm5weC1jMjUtc2FnZV9fY29se2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxNHB4O21heC13aWR0aDoyODBweH0KICAubnB4LWMyNS1zYWdlX19ub2Rle3dpZHRoOjEwNHB4O2hlaWdodDoxMDRweDtib3JkZXItcmFkaXVzOjk5OXB4O2JvcmRlcjoycHggc29saWQgIzdGQTNEODtiYWNrZ3JvdW5kOiNGRkZGRkY7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQtc2l6ZToxOHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMTYyMjdBO2xldHRlci1zcGFjaW5nOi4wNmVtfQogIC5ucHgtYzI1LXNhZ2VfX2h1Ynt3aWR0aDoxMzJweDtoZWlnaHQ6MTMycHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOiMxNjIyN0E7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojRkZGRkZGO2xldHRlci1zcGFjaW5nOi4wNGVtO3BhZGRpbmc6MCAxMnB4O2JveC1zaGFkb3c6MCA2cHggMjBweCByZ2JhKDIyLDM0LDEyMiwuMjIpfQogIC5ucHgtYzI1LXNhZ2VfX3R4dHtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjY7Y29sb3I6IzNGNDQ0Qzt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo2cHg7dGV4dC13cmFwOnByZXR0eX0KICAubnB4LWMyNS1zYWdlX19hcnJvd3tkaXNwbGF5OmZsZXg7Y29sb3I6I0YwODEzQzt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX0KICAubnB4LWMyNS1zdGVte2Rpc3BsYXk6bm9uZTtoZWlnaHQ6MzRweDttYXJnaW46MTRweCBhdXRvIDA7d2lkdGg6MnB4O2JhY2tncm91bmQ6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20scmdiYSgyMiwzNCwxMjIsLjUpIDAgNXB4LHRyYW5zcGFyZW50IDVweCAxMHB4KX0KICAubnB4LWMyNS1hcHBzX19raWNrZXJ7bWFyZ2luOjIycHggMCAwO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjYwMDtsZXR0ZXItc3BhY2luZzouMmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjojNkU3NDdFfQogIC5ucHgtYzI1LWFwcHN7ZGlzcGxheTpncmlkO2dyaWQtYXV0by1yb3dzOjFmcjtnYXA6MTZweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO21heC13aWR0aDo4NDBweDttYXJnaW46MTZweCBhdXRvIDB9CiAgLm5weC1jMjUtYXBwc19fY2FyZHtiYWNrZ3JvdW5kOiNGRkZGRkY7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjJweDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDtib3gtc2hhZG93OjAgMnB4IDEwcHggcmdiYSgwLDAsMCwuMDUpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xOHMgZWFzZSxib3gtc2hhZG93IC4xOHMgZWFzZX0KICAubnB4LWMyNS1hcHBzX19jYXJkOmhvdmVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpO2JveC1zaGFkb3c6MCA4cHggMjJweCByZ2JhKDAsMCwwLC4xMCl9CiAgLm5weC1jMjUtYXBwc19faWN7ZGlzcGxheTpmbGV4O2NvbG9yOiMxNjIyN0F9CiAgLm5weC1jMjUtYXBwc19fbGJse2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMUMxRTI0O2xldHRlci1zcGFjaW5nOi4wMmVtfQogIEBtZWRpYSAobWluLXdpZHRoOjYyMHB4KXsubnB4LWMyNS1hcHBze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMywxZnIpfS5ucHgtYzI1LXN0ZW17ZGlzcGxheTpibG9ja319CiAgQG1lZGlhIChtaW4td2lkdGg6NzYwcHgpewogICAgLm5weC1jMjUtc2FnZXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIGF1dG8gbWlubWF4KDAsMS4wNWZyKSBhdXRvIDFmcjtnYXA6MTBweDthbGlnbi1pdGVtczpzdGFydH0KICAgIC5ucHgtYzI1LXNhZ2VfX2Fycm93e3RyYW5zZm9ybTpub25lO21hcmdpbi10b3A6NTJweH0KICB9CiAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7Lm5weC1jMjUtYXBwc19fY2FyZHt0cmFuc2l0aW9uOm5vbmV9fQo8L3N0eWxlPjxkaXYgY2xhc3M9Im5weC1jMjUtc2FnZSIgYXJpYS1sYWJlbD0iU0FHRS1IUEMgcHJpbmNpcGxlOiBBSSBhbmQgSFBDIGNvbnZlcmdpbmciPjxkaXYgY2xhc3M9Im5weC1jMjUtc2FnZV9fY29sIj48c3BhbiBjbGFzcz0ibnB4LWMyNS1zYWdlX19ub2RlIj5BSTwvc3Bhbj48c3BhbiBjbGFzcz0ibnB4LWMyNS1zYWdlX190eHQiPjxzcGFuPk9wdGltaXphdGlvbiBtZXRob2RzIDogQk8sIERSTCwgTk4gYW5kIGh5YnJpZHM8L3NwYW4+PC9zcGFuPjwvZGl2PjxzcGFuIGNsYXNzPSJucHgtYzI1LXNhZ2VfX2Fycm93IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHN2ZyB3aWR0aD0iNDYiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCA0NiAxOCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTAgOWgzNCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMyI+PC9wYXRoPjxwYXRoIGQ9Im0zNCAyIDEwIDctMTAgN3oiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvc3ZnPjwvc3Bhbj48ZGl2IGNsYXNzPSJucHgtYzI1LXNhZ2VfX2NvbCI+PHNwYW4gY2xhc3M9Im5weC1jMjUtc2FnZV9faHViIj5TQUdFLUhQQzwvc3Bhbj48L2Rpdj48c3BhbiBjbGFzcz0ibnB4LWMyNS1zYWdlX19hcnJvdyIgYXJpYS1oaWRkZW49InRydWUiPjxzdmcgd2lkdGg9IjQ2IiBoZWlnaHQ9IjE4IiB2aWV3Qm94PSIwIDAgNDYgMTgiIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik00NiA5SDEyIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIzIj48L3BhdGg+PHBhdGggZD0iTTEyIDIgMiA5bDEwIDd6IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48L3N2Zz48L3NwYW4+PGRpdiBjbGFzcz0ibnB4LWMyNS1zYWdlX19jb2wiPjxzcGFuIGNsYXNzPSJucHgtYzI1LXNhZ2VfX25vZGUiPkhQQzwvc3Bhbj48c3BhbiBjbGFzcz0ibnB4LWMyNS1zYWdlX190eHQiPjxzcGFuPkV4YXNjYWxlIGNhcGFjaXR5IChFdXJvcGVhbiBtYWNoaW5lcyk8L3NwYW4+PHNwYW4+SHlicmlkIENQVS9HUFUgY29tcHV0aW5nPC9zcGFuPjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LXN0ZW0iIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2Rpdj48cCBjbGFzcz0ibnB4LWMyNS1hcHBzX19raWNrZXIiPkFwcGxpY2F0aW9uczwvcD48ZGl2IGNsYXNzPSJucHgtYzI1LWFwcHMiPjxkaXYgY2xhc3M9Im5weC1jMjUtYXBwc19fY2FyZCI+PHNwYW4gY2xhc3M9Im5weC1jMjUtYXBwc19faWMiIGFyaWEtaGlkZGVuPSJ0cnVlIj48c3ZnIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj48cGF0aCBkPSJNMiA4YzIuNC0yLjIgNC0yLjIgNi40IDAgMi40IDIuMiA0IDIuMiA2LjQgMCAyLjQtMi4yIDQtMi4yIDYuNCAwIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+PC9wYXRoPjxwYXRoIGQ9Ik0yIDE0YzIuNC0yLjIgNC0yLjIgNi40IDAgMi40IDIuMiA0IDIuMiA2LjQgMCAyLjQtMi4yIDQtMi4yIDYuNCAwIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+PC9wYXRoPjxwYXRoIGQ9Ik0yIDIwYzIuNC0yLjIgNC0yLjIgNi40IDAgMi40IDIuMiA0IDIuMiA2LjQgMCAyLjQtMi4yIDQtMi4yIDYuNCAwIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+PC9wYXRoPjwvc3ZnPjwvc3Bhbj48c3BhbiBjbGFzcz0ibnB4LWMyNS1hcHBzX19sYmwiPlN3aW1taW5nPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Im5weC1jMjUtYXBwc19fY2FyZCI+PHNwYW4gY2xhc3M9Im5weC1jMjUtYXBwc19faWMiIGFyaWEtaGlkZGVuPSJ0cnVlIj48c3ZnIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj48cGF0aCBkPSJNMTIgMi42YzEgMCAxLjcgMS41IDEuNyAzLjR2My4xbDcgNHYyLjJsLTctMi4xdjRsMi42IDJ2MS45TDEyIDIwLjJsLTQuMy45di0xLjlsMi42LTJ2LTRsLTcgMi4xVjEzbDctNFY2YzAtMS45LjctMy40IDEuNy0zLjR6IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjYiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjwvcGF0aD48L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9Im5weC1jMjUtYXBwc19fbGJsIj5BZXJvbmF1dGljczwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWFwcHNfX2NhcmQiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWFwcHNfX2ljIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTIuNiA3LjQgMTIgM2w5LjQgNC40TDEyIDExLjggMi42IDcuNHoiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNiIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PC9wYXRoPjxwYXRoIGQ9Im0yLjYgMTIuMiA5LjQgNC40IDkuNC00LjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNiIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PC9wYXRoPjxwYXRoIGQ9Im0yLjYgMTYuOCA5LjQgNC40IDkuNC00LjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNiIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PC9wYXRoPjwvc3ZnPjwvc3Bhbj48c3BhbiBjbGFzcz0ibnB4LWMyNS1hcHBzX19sYmwiPkdlb3BoeXNpY3M8L3NwYW4+PC9kaXY+PC9kaXY+[\/vc_raw_html][\/vc_column_inner][\/vc_row_inner][vc_row_inner limit_content=\u00a0\u00bb\u00a0\u00bb][vc_column_inner width=\u00a0\u00bb1\/1&Prime;][vc_empty_space empty_h=\u00a0\u00bb2&Prime;][vc_separator sep_color=\u00a0\u00bbcolor-prif\u00a0\u00bb uncode_shortcode_id=\u00a0\u00bb283929&Prime; sep_color_type=\u00a0\u00bbuncode-palette\u00a0\u00bb][vc_empty_space empty_h=\u00a0\u00bb2&Prime; el_id=\u00a0\u00bbnav-Koktails\u00a0\u00bb][\/vc_column_inner][\/vc_row_inner][vc_row_inner row_inner_height_percent=\u00a0\u00bb0&Prime; row_padding=\u00a0\u00bb0&Prime; overlay_alpha=\u00a0\u00bb50&Prime; gutter_size=\u00a0\u00bb3&Prime; shift_y=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; uncode_shortcode_id=\u00a0\u00bb515706&Prime; limit_content=\u00a0\u00bb\u00a0\u00bb][vc_column_inner column_width_percent=\u00a0\u00bb100&Prime; align_horizontal=\u00a0\u00bbalign_center\u00a0\u00bb gutter_size=\u00a0\u00bb3&Prime; style=\u00a0\u00bblight\u00a0\u00bb overlay_alpha=\u00a0\u00bb50&Prime; shift_x=\u00a0\u00bb0&Prime; shift_y=\u00a0\u00bb0&Prime; shift_y_down=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; medium_width=\u00a0\u00bb0&Prime; mobile_width=\u00a0\u00bb0&Prime; width=\u00a0\u00bb1\/1&Prime; uncode_shortcode_id=\u00a0\u00bb205708&Prime;][vc_custom_heading text_color=\u00a0\u00bbaccent\u00a0\u00bb heading_semantic=\u00a0\u00bbh6&Prime; text_size=\u00a0\u00bbh6&Prime; text_transform=\u00a0\u00bbuppercase\u00a0\u00bb uncode_shortcode_id=\u00a0\u00bb444225&Prime; text_color_type=\u00a0\u00bbuncode-palette\u00a0\u00bb]Appelez le 2025[\/vc_custom_heading][vc_custom_heading heading_semantic=\u00a0\u00bbh3&Prime; text_size=\u00a0\u00bbh1&Prime; uncode_shortcode_id=\u00a0\u00bb452549&Prime;]KOKTAILS[\/vc_custom_heading][vc_custom_heading text_color=\u00a0\u00bbcolor-jevc\u00a0\u00bb heading_semantic=\u00a0\u00bbh3&Prime; uncode_shortcode_id=\u00a0\u00bb616807&Prime; text_color_type=\u00a0\u00bbuncode-palette\u00a0\u00bb]Kokkos : la traduction et l&rsquo;interop\u00e9rabilit\u00e9 mises \u00e0 profit dans les logiciels[\/vc_custom_heading][vc_empty_space empty_h=\u00a0\u00bb2&Prime;][vc_raw_html]PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBOdW1QRXggLSBCbG9jIGJhbmRlYXUgZCBpZGVudGl0ZSBwcm9qZXQgLSBLT0tUQUlMUyAoQ2FsbCAyMDI1KSAtIHYuMS4yCiAgTmFvcyBBZ2VuY3kgLSAyMDI2LTA4LTE3CiAgSU5TRVJUSU9OIDogUmF3IEhUTUwgVW5jb2RlLCByb3cgbmF2LWtva3RhaWxzLCBzb3VzIGxlIHNvdXMtdGl0cmUKICBkZXZlbG9wcGUuIFJlbXBsYWNlIGxlIGJsb2MgbnB4LWMyNS1jYWxsYXhpcy1rb2t0YWlscy5odG1sICh2LjEpLgogIENPTlRFTlUgOiB1bmUgY2FydGUsIHRyb2lzIGNlbGx1bGVzIC0gUHJvamVjdCBsZWFkZXIgLyBDYWxsIGF4aXMKICAodmVyYmF0aW0pIC8gQnVkZ2V0LiBGaWxldCBzdXBlcmlldXIgZGVncmFkZSBtYXJpbmUtb3JhbmdlLgogIFBIT1RPIExFQURFUiA6IHJlbXBsYWNlciA8c3BhbiBjbGFzcz0ibnB4LWMyNS1iYW5kX19pbmkiPi4uLjwvc3Bhbj5wYXIgPGltZyBjbGFzcz0ibnB4LWMyNS1iYW5kX19waWMiIHNyYz0iVVJMIG1lZGlhdGhlcXVlIiBhbHQ9IiIgbG9hZGluZz0ibGF6eSI+IGxlIGpvdXIgb3UgbGUgcG9ydHJhaXQgZXN0IGZvdXJuaS4KICBSZXNwb25zaXZlIDogMyBjZWxsdWxlcyBlbiBsaWduZSAoPj0gNzAwcHgpLCBlbXBpbGVlcyBlbiBkZXNzb3VzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+PHN0eWxlPi5ucHgtYzI1LWJhbmR7bWF4LXdpZHRoOjg2MHB4O21hcmdpbjowIGF1dG87YmFja2dyb3VuZDojRkZGRkZGO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yYWRpdXM6MTJweDtib3gtc2hhZG93OjAgMnB4IDEwcHggcmdiYSgwLDAsMCwuMDUpO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtmb250LWZhbWlseTppbmhlcml0fQogIC5ucHgtYzI1LWJhbmRfX2Jhcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtoZWlnaHQ6NHB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMxNjIyN0EgMCUsIzE2MjI3QSA1NSUsI0YwODEzQyA1NSUsI0YwODEzQyAxMDAlKX0KICAubnB4LWMyNS1iYW5kX19jZWxse3BhZGRpbmc6MjBweCAxOHB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6NHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpO2JveC1zaXppbmc6Ym9yZGVyLWJveH0KICAubnB4LWMyNS1iYW5kX19jZWxsLS1sZWFke2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEzcHh9CiAgLm5weC1jMjUtYmFuZF9faW5pe3dpZHRoOjUycHg7aGVpZ2h0OjUycHg7ZmxleC1zaHJpbms6MDtib3JkZXItcmFkaXVzOjk5OXB4O2JvcmRlcjozcHggc29saWQgI0VFRjJGQTtiYWNrZ3JvdW5kOiNFRUYyRkE7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQtc2l6ZToxN3B4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMTYyMjdBO2xldHRlci1zcGFjaW5nOi4wNGVtfQogIC5ucHgtYzI1LWJhbmRfX3BpY3t3aWR0aDo1MnB4O2hlaWdodDo1MnB4O2ZsZXgtc2hyaW5rOjA7Ym9yZGVyLXJhZGl1czo5OTlweDtib3JkZXI6M3B4IHNvbGlkICNFRUYyRkE7b2JqZWN0LWZpdDpjb3ZlcjtkaXNwbGF5OmJsb2NrfQogIC5ucHgtYzI1LWJhbmRfX2NvbHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoycHg7bWluLXdpZHRoOjB9CiAgLm5weC1jMjUtYmFuZF9fbGJse2ZvbnQtc2l6ZToxMHB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMTZlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6IzZFNzQ3RX0KICAubnB4LWMyNS1iYW5kX19uYW1le2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxNjIyN0E7bGluZS1oZWlnaHQ6MS4zfQogIC5ucHgtYzI1LWJhbmRfX3N1Yntmb250LXNpemU6MTEuNXB4O2NvbG9yOiM1QTYwNjg7bGluZS1oZWlnaHQ6MS40fQogIC5ucHgtYzI1LWJhbmRfX2F4aXN7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1MDA7Y29sb3I6IzFDMUUyNDtsaW5lLWhlaWdodDoxLjU7dGV4dC13cmFwOnByZXR0eX0KICAubnB4LWMyNS1iYW5kX19jZWxsLS1idWRnZXR7YmFja2dyb3VuZDojRUVGMkZBO2JvcmRlci1ib3R0b206MH0KICAubnB4LWMyNS1iYW5kX19jZWxsLS1idWRnZXQgLm5weC1jMjUtYmFuZF9fbGJse2NvbG9yOiMxNjIyN0F9CiAgLm5weC1jMjUtYmFuZF9fYW1vdW50e2ZvbnQtc2l6ZToyMXB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMTYyMjdBO2xpbmUtaGVpZ2h0OjEuMX0KICBAbWVkaWEgKG1pbi13aWR0aDo3MDBweCl7CiAgICAubnB4LWMyNS1iYW5ke2dyaWQtdGVtcGxhdGUtY29sdW1uczoxLjI1ZnIgMS40NWZyIC44ZnJ9CiAgICAubnB4LWMyNS1iYW5kX19jZWxse2JvcmRlci1ib3R0b206MDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpfQogICAgLm5weC1jMjUtYmFuZF9fY2VsbC0tYnVkZ2V0e2JvcmRlci1yaWdodDowfQogIH0KPC9zdHlsZT48ZGl2IGNsYXNzPSJucHgtYzI1LWJhbmQiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2JhciIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj48ZGl2IGNsYXNzPSJucHgtYzI1LWJhbmRfX2NlbGwgbnB4LWMyNS1iYW5kX19jZWxsLS1sZWFkIj48c3BhbiBjbGFzcz0ibnB4LWMyNS1iYW5kX19pbmkiIGFyaWEtaGlkZGVuPSJ0cnVlIj5TQzwvc3Bhbj48c3BhbiBjbGFzcz0ibnB4LWMyNS1iYW5kX19jb2wiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2xibCI+UHJvamVjdCBsZWFkZXI8L3NwYW4+PHNwYW4gY2xhc3M9Im5weC1jMjUtYmFuZF9fbmFtZSI+U3TDqXBoYW5lIGRlIENoYWlzZW1hcnRpbjwvc3Bhbj48c3BhbiBjbGFzcz0ibnB4LWMyNS1iYW5kX19zdWIiPklGUEVOIGVuZ2luZWVyPC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWJhbmRfX2NlbGwiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2xibCI+Q2FsbCBheGlzPC9zcGFuPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2F4aXMiPlByb2dyYW1taW5nIG1vZGVscyBmb3IgYWNjZWxlcmF0ZWQgYXJjaGl0ZWN0dXJlczwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWJhbmRfX2NlbGwgbnB4LWMyNS1iYW5kX19jZWxsLS1idWRnZXQiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2xibCI+QnVkZ2V0PC9zcGFuPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2Ftb3VudCI+4oKsMSw3NTBLPC9zcGFuPjwvZGl2PjwvZGl2Pg==[\/vc_raw_html][vc_empty_space empty_h=\u00a0\u00bb2&Prime;][vc_column_text text_lead=\u00a0\u00bbyes\u00a0\u00bb uncode_shortcode_id=\u00a0\u00bb166332&Prime;]<strong>Une pile logicielle open source destin\u00e9e aux supercalculateurs exascale bas\u00e9s sur des GPU, s&rsquo;appuyant sur le mod\u00e8le de programmation Kokkos.<\/strong>[\/vc_column_text][vc_column_text uncode_shortcode_id=\u00a0\u00bb171502&Prime;]Le projet KOKTAILS vise \u00e0 am\u00e9liorer la portabilit\u00e9 des logiciels de simulation sur les architectures de calcul exascale, en contribuant au d\u00e9veloppement d\u2019une pile logicielle souveraine adapt\u00e9e aux supercalculateurs bas\u00e9s sur des GPU. Il s\u2019inscrit dans la strat\u00e9gie PEPR de NumPEx et contribue \u00e0 la souverainet\u00e9 num\u00e9rique fran\u00e7aise en mati\u00e8re de calcul haute performance (HPC). Il comprend le d\u00e9veloppement d\u2019un middleware \u00e9volutif visant \u00e0 garantir la portabilit\u00e9 des performances sur diverses architectures GPU, y compris des processeurs europ\u00e9ens tels que SiPearl Rhea. Le projet contribue ainsi \u00e0 la transition des applications existantes vers le calcul exascale, gr\u00e2ce \u00e0 la cr\u00e9ation d\u2019un \u00e9cosyst\u00e8me open source conforme \u00e0 la politique europ\u00e9enne en mati\u00e8re de souverainet\u00e9.[\/vc_column_text][vc_empty_space empty_h=\u00a0\u00bb2&Prime;][vc_raw_html]PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBOdW1QRXggLSBCbG9jIHN0cnVjdHVyZSBwcm9qZXQgS29rdGFpbHMgKDYgV1AgKyBwbGF0ZWZvcm1lcykgLSB2LjEKICBOYW9zIEFnZW5jeSAtIDIwMjYtMDgtMTUKICBJTlNFUlRJT04gOiBSYXcgSFRNTCBVbmNvZGUsIHJvdyBuYXYta29rdGFpbHMsIHNvdXMgbGEgbGlnbmUgQ2FsbCBheGlzLgogIENPTlRFTlUgOiBXUDEtV1A0IGVuIGdyaWxsZSwgV1A1IGVuIGJhbmRlYXUgdHJhbnN2ZXJzYWwsIFdQMCBlbiBzb2NsZSwKICBwdWlzIGxlIEgzIFByb2plY3QgdGFyZ2V0ZWQgcGxhdGZvcm1zLCBBcHBzIG9yIFByb3h5LWFwcHMgZXQgc2VzIGNoaXBzLgogIERPVUJMRSBGT1JNVUxBVElPTiA6IGRlc2NyaXB0aW9uIChsaXN0ZSB0ZXh0ZSBkZSBsYSBzbGlkZSkgKyBtZW50aW9uIGVuCiAgaXRhbGlxdWUgKGZvcm11bGF0aW9uIGR1IHNjaGVtYSkuIFBvdXIgbiBlbiBnYXJkZXIgcXUgdW5lLCBzdXBwcmltZXIgbGUKICA8ZGl2IGNsYXNzPSJucHgtYzI1LWtva19fYWx0Ij4uCiAgQ0hJUFMgOiBub24gY2xpcXVhYmxlcyAoYXVjdW5lIFVSTCBmb3VybmllIGEgY2Ugam91cikuCiAgUmVzcG9uc2l2ZSA6IFdQIDQgY29sICg+PSAxMTAwcHgpIC0gMngyICg+PSA1NjBweCkgLSBlbXBpbGVtZW50IDsKICBsIG9yZHJlIFdQMS4uV1A0IHB1aXMgV1A1IHB1aXMgV1AwIGVzdCBjb25zZXJ2ZSBhIGwgZW1waWxlbWVudC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPjxzdHlsZT4ubnB4LWMyNS1rb2tfX2tpY2tlcnttYXJnaW46MDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo2MDA7bGV0dGVyLXNwYWNpbmc6LjJlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6IzZFNzQ3RX0KICAubnB4LWMyNS1rb2t7ZGlzcGxheTpncmlkO2dyaWQtYXV0by1yb3dzOjFmcjtnYXA6MTZweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO21hcmdpbi10b3A6MTZweDtmb250LWZhbWlseTppbmhlcml0fQogIC5ucHgtYzI1LWtva19fY2FyZHtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyMHB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjlweDtib3gtc2hhZG93OjAgMnB4IDEwcHggcmdiYSgwLDAsMCwuMDUpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xOHMgZWFzZSxib3gtc2hhZG93IC4xOHMgZWFzZX0KICAubnB4LWMyNS1rb2tfX2NhcmQ6aG92ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7Ym94LXNoYWRvdzowIDhweCAyMnB4IHJnYmEoMCwwLDAsLjEwKX0KICAubnB4LWMyNS1rb2tfX2hke2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHh9CiAgLm5weC1jMjUta29rX193cHtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjE0ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfQogIC5ucHgtYzI1LWtva19fdHRse2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMUMxRTI0O2xldHRlci1zcGFjaW5nOi4wMmVtO2xpbmUtaGVpZ2h0OjEuMzV9CiAgLm5weC1jMjUta29rX19kZXNje2ZvbnQtc2l6ZToxM3B4O2NvbG9yOiM1QTYwNjg7bGluZS1oZWlnaHQ6MS42O3RleHQtd3JhcDpwcmV0dHl9CiAgLm5weC1jMjUta29rX19hbHR7bWFyZ2luLXRvcDphdXRvO3BhZGRpbmctdG9wOjEwcHg7Ym9yZGVyLXRvcDoxcHggZGFzaGVkIHJnYmEoMCwwLDAsLjE0KTtmb250LXNpemU6MTJweDtmb250LXN0eWxlOml0YWxpYztjb2xvcjojNkU3NDdFO2xpbmUtaGVpZ2h0OjEuNTU7dGV4dC13cmFwOnByZXR0eX0KICAubnB4LWMyNS1rb2tfX2NhcmQtLXdwMXtiYWNrZ3JvdW5kOiNGRkZBRkI7Ym9yZGVyOjEuNXB4IHNvbGlkICNFNTM4NEZ9CiAgLm5weC1jMjUta29rX19jYXJkLS13cDEgLm5weC1jMjUta29rX19oZHtjb2xvcjojRDMyRjQ3fQogIC5ucHgtYzI1LWtva19fY2FyZC0td3Aye2JhY2tncm91bmQ6I0ZGRkRGODtib3JkZXI6MS41cHggc29saWQgI0YxOEIxQn0KICAubnB4LWMyNS1rb2tfX2NhcmQtLXdwMiAubnB4LWMyNS1rb2tfX2hke2NvbG9yOiNERDdFMTJ9CiAgLm5weC1jMjUta29rX19jYXJkLS13cDN7YmFja2dyb3VuZDojRkRGREYyO2JvcmRlcjoxLjVweCBzb2xpZCAjQzdDOTI4fQogIC5ucHgtYzI1LWtva19fY2FyZC0td3AzIC5ucHgtYzI1LWtva19faGR7Y29sb3I6IzhBOEMwRn0KICAubnB4LWMyNS1rb2tfX2NhcmQtLXdwNHtiYWNrZ3JvdW5kOiNGQkZGRkE7Ym9yZGVyOjEuNXB4IHNvbGlkICM2OUI0MkR9CiAgLm5weC1jMjUta29rX19jYXJkLS13cDQgLm5weC1jMjUta29rX19oZHtjb2xvcjojNTVBMzFFfQogIC5ucHgtYzI1LWtva19fYmFuZHttYXJnaW4tdG9wOjE2cHg7YmFja2dyb3VuZDojRjlGQkZGO2JvcmRlcjoxLjVweCBzb2xpZCAjM0Q3NkQyO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweCAyMnB4O2JveC1zaGFkb3c6MCAycHggMTBweCByZ2JhKDAsMCwwLC4wNSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjE4cyBlYXNlLGJveC1zaGFkb3cgLjE4cyBlYXNlfQogIC5ucHgtYzI1LWtva19fYmFuZDpob3Zlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTtib3gtc2hhZG93OjAgOHB4IDIycHggcmdiYSgwLDAsMCwuMTApfQogIC5ucHgtYzI1LWtva19fYmFuZCAubnB4LWMyNS1rb2tfX2hke2NvbG9yOiMzRDc2RDI7ZmxleC1zaHJpbms6MH0KICAubnB4LWMyNS1rb2tfX2JhbmQgLm5weC1jMjUta29rX190dGx7ZmxleC1zaHJpbms6MH0KICAubnB4LWMyNS1rb2tfX2JhbmQgLm5weC1jMjUta29rX19kZXNje21pbi13aWR0aDoyMDBweDtmbGV4OjEgMSAyNjBweH0KICAubnB4LWMyNS1rb2tfX2JhbmQgLm5weC1jMjUta29rX19hbHR7bWFyZ2luLXRvcDowO3BhZGRpbmctdG9wOjA7Ym9yZGVyLXRvcDowO2ZsZXg6MSAxIDIyMHB4fQogIC5ucHgtYzI1LWtva19fYmFzZXttYXJnaW4tdG9wOjEycHg7YmFja2dyb3VuZDojRjFGM0Y2O2JvcmRlcjoxLjVweCBzb2xpZCAjNjQ3NDhCO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjE4cHggMjBweDtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4IDIwcHh9CiAgLm5weC1jMjUta29rX19iYXNlIC5ucHgtYzI1LWtva19faGR7Y29sb3I6IzU1NjA2RTtmbGV4LXNocmluazowfQogIC5ucHgtYzI1LWtva19fYmFzZSAubnB4LWMyNS1rb2tfX3R0bHtmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxLjR9CiAgLm5weC1jMjUta29rX19oM3ttYXJnaW46NTJweCAwIDA7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjE5cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxQzFFMjQ7bGluZS1oZWlnaHQ6MS4zNTt0ZXh0LXdyYXA6cHJldHR5fQogIC5ucHgtYzI1LWtva19fY2hpcHN7bWFyZ2luOjIwcHggYXV0byAwO21heC13aWR0aDo4NjBweDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxMnB4O2FsaWduLWl0ZW1zOmNlbnRlcn0KICAubnB4LWMyNS1rb2tfX3Jvd3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6MTBweH0KICAubnB4LWMyNS1rb2tfX2NoaXB7YmFja2dyb3VuZDojRkZGRkZGO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMTYpO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzo5cHggMjBweDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2MDA7Y29sb3I6IzNGNDQ0QztsZXR0ZXItc3BhY2luZzouMDNlbX0KICAubnB4LWMyNS1rb2tfX2NoaXAtLW1haW57Ym9yZGVyLWNvbG9yOnJnYmEoMjIsMzQsMTIyLC4zNSk7Y29sb3I6IzE2MjI3QX0KICBAbWVkaWEgKG1pbi13aWR0aDo1NjBweCl7Lm5weC1jMjUta29re2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMiwxZnIpfX0KICBAbWVkaWEgKG1pbi13aWR0aDoxMTAwcHgpey5ucHgtYzI1LWtva3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDQsMWZyKX19CiAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7Lm5weC1jMjUta29rX19jYXJkLC5ucHgtYzI1LWtva19fYmFuZHt0cmFuc2l0aW9uOm5vbmV9fQo8L3N0eWxlPjxwIGNsYXNzPSJucHgtYzI1LWtva19fa2lja2VyIj5Qcm9qZWN0IHN0cnVjdHVyZTwvcD48ZGl2IGNsYXNzPSJucHgtYzI1LWtvayI+PGRpdiBjbGFzcz0ibnB4LWMyNS1rb2tfX2NhcmQgbnB4LWMyNS1rb2tfX2NhcmQtLXdwMSI+PGRpdiBjbGFzcz0ibnB4LWMyNS1rb2tfX2hkIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgc3R5bGU9ImRpc3BsYXk6ZmxleCI+PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgN2gxMWwtMy0zTTIwIDE3SDlsMyAzIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PC9wYXRoPjxyZWN0IHg9IjMuMiIgeT0iMTIuMiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgcng9IjEuNCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS43Ij48L3JlY3Q+PHJlY3QgeD0iMTQuOCIgeT0iNS44IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiByeD0iMS40IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjciPjwvcmVjdD48L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9Im5weC1jMjUta29rX193cCI+V1AxPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Im5weC1jMjUta29rX190dGwiPkxlZ2FjeSBDb2RlIE1pZ3JhdGlvbjwvZGl2PjxkaXYgY2xhc3M9Im5weC1jMjUta29rX19kZXNjIj5BdXRvbWF0ZWQgdHJhbnNsYXRpb24gaW50byBHUFUgZnJhbWV3b3JrcyB1c2luZyBLb2trb3M8L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWtva19fYWx0Ij5Ub29saW5nIHRvIHN1cHBvcnQgdGhlIHRyYW5zaXRpb24gdG8gR1BVIHdpdGggS29ra29zPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS1rb2tfX2NhcmQgbnB4LWMyNS1rb2tfX2NhcmQtLXdwMiI+PGRpdiBjbGFzcz0ibnB4LWMyNS1rb2tfX2hkIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgc3R5bGU9ImRpc3BsYXk6ZmxleCI+PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTkgNi42IDQuNiAxMiA5IDE3LjRNMTUgNi42IDE5LjQgMTIgMTUgMTcuNCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS44IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjwvcGF0aD48cGF0aCBkPSJtMTMuMiA0LjYtMi40IDE0LjgiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj48L3BhdGg+PC9zdmc+PC9zcGFuPjxzcGFuIGNsYXNzPSJucHgtYzI1LWtva19fd3AiPldQMjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWtva19fdHRsIj5QeXRob24gYW5kIEFJIEludGVncmF0aW9uPC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS1rb2tfX2Rlc2MiPlRvb2xzIGZvciBQeXRob24gYW5kIEFJIGludGVncmF0aW9uIGludG8gc2ltdWxhdGlvbiB3b3JrZmxvd3M8L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWtva19fYWx0Ij5MZXZlcmFnaW5nIEFJLW9yaWVudGVkIGxhbmd1YWdlcyAmIHRvb2xzIGluIEtva2tvczwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Im5weC1jMjUta29rX19jYXJkIG5weC1jMjUta29rX19jYXJkLS13cDMiPjxkaXYgY2xhc3M9Im5weC1jMjUta29rX19oZCI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiIHN0eWxlPSJkaXNwbGF5OmZsZXgiPjxzdmcgd2lkdGg9IjIyIiBoZWlnaHQ9IjIyIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik0xMiAzLjIgMjEgOHY4bC05IDQuOEwzIDE2VjhsOS00Ljh6IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjciIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjwvcGF0aD48cGF0aCBkPSJNMyA4bDkgNC44TDIxIDhNMTIgMTIuOHY4TTcuNSA1LjZsOSA5TTE2LjUgNS42bC05IDkiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PC9wYXRoPjwvc3ZnPjwvc3Bhbj48c3BhbiBjbGFzcz0ibnB4LWMyNS1rb2tfX3dwIj5XUDM8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS1rb2tfX3R0bCI+TWVzaCBPcHRpbWl6YXRpb248L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWtva19fZGVzYyI+U29sdXRpb25zIGZvciB1bnN0cnVjdHVyZWQgYW5kIGhpZ2gtZGltZW5zaW9uYWwgbWVzaCBmb3IgRXhhc2NhbGU8L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWtva19fYWx0Ij5HUFUtZWZmaWNpZW50IG1lc2ggbWFuYWdlbWVudCBpbiBLb2trb3M8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWtva19fY2FyZCBucHgtYzI1LWtva19fY2FyZC0td3A0Ij48ZGl2IGNsYXNzPSJucHgtYzI1LWtva19faGQiPjxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBzdHlsZT0iZGlzcGxheTpmbGV4Ij48c3ZnIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj48cGF0aCBkPSJNNCA2LjVoOU0xNyA2LjVoM000IDE3LjVoM00xMSAxNy41aDkiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuOCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj48L3BhdGg+PGNpcmNsZSBjeD0iMTUiIGN5PSI2LjUiIHI9IjIuNCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS43Ij48L2NpcmNsZT48Y2lyY2xlIGN4PSI5IiBjeT0iMTcuNSIgcj0iMi40IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjciPjwvY2lyY2xlPjxwYXRoIGQ9Ik00IDEyaDE2IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjIgMi40IiBzdHJva2UtbGluZWNhcD0icm91bmQiPjwvcGF0aD48L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9Im5weC1jMjUta29rX193cCI+V1A0PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Im5weC1jMjUta29rX190dGwiPkh5YnJpZCBPcHRpbWl6YXRpb248L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWtva19fZGVzYyI+Q29tYmluaW5nIEtva2tvc+KAmSBzdGF0aWMgcG9ydGFiaWxpdHkgd2l0aCBTdGFyUFXigJlzIGR5bmFtaWMgc2NoZWR1bGluZzwvZGl2PjxkaXYgY2xhc3M9Im5weC1jMjUta29rX19hbHQiPkR5bmFtaWMgcGVyZm9ybWFuY2UgcG9ydGFiaWxpdHkgd2l0aCBLb2trb3M8L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWtva19fYmFuZCI+PGRpdiBjbGFzcz0ibnB4LWMyNS1rb2tfX2hkIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgc3R5bGU9ImRpc3BsYXk6ZmxleCI+PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHJlY3QgeD0iMy40IiB5PSIxMy42IiB3aWR0aD0iNyIgaGVpZ2h0PSI3IiByeD0iMS40IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjgiPjwvcmVjdD48cmVjdCB4PSIxMy42IiB5PSIxMy42IiB3aWR0aD0iNyIgaGVpZ2h0PSI3IiByeD0iMS40IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjgiPjwvcmVjdD48cmVjdCB4PSI4LjUiIHk9IjMuNCIgd2lkdGg9IjciIGhlaWdodD0iNyIgcng9IjEuNCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS44Ij48L3JlY3Q+PC9zdmc+PC9zcGFuPjxzcGFuIGNsYXNzPSJucHgtYzI1LWtva19fd3AiPldQNTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWtva19fdHRsIj5NaWRkbGV3YXJlIERldmVsb3BtZW50PC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS1rb2tfX2Rlc2MiPlNjYWxhYmxlIHRvb2xzIGZvciBvcHRpbWl6aW5nIGNvZGUgZXhlY3V0aW9uIG9uIEdQVSBhcmNoaXRlY3R1cmVzPC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS1rb2tfX2FsdCI+U2hhcmVkIGJ1aWxkaW5nIGJsb2NrcyAmIGRlbW9uc3RyYXRvciBzdXBwb3J0PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS1rb2tfX2Jhc2UiPjxkaXYgY2xhc3M9Im5weC1jMjUta29rX19oZCI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiIHN0eWxlPSJkaXNwbGF5OmZsZXgiPjxzdmcgd2lkdGg9IjIyIiBoZWlnaHQ9IjIyIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiPjxyZWN0IHg9IjUiIHk9IjQuNCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2LjIiIHJ4PSIyIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjgiPjwvcmVjdD48cGF0aCBkPSJNOSAzLjRoNnYyLjZIOXpNOC42IDExaDYuOE04LjYgMTVoNC40IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+PC9wYXRoPjwvc3ZnPjwvc3Bhbj48c3BhbiBjbGFzcz0ibnB4LWMyNS1rb2tfX3dwIj5XUDA8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS1rb2tfX3R0bCI+TWFuYWdlbWVudCwgZGlzc2VtaW5hdGlvbiBhbmQgdHJhaW5pbmc8L2Rpdj48L2Rpdj48aDMgY2xhc3M9Im5weC1jMjUta29rX19oMyI+UHJvamVjdCB0YXJnZXRlZCBwbGF0Zm9ybXMsIEFwcHMgb3IgUHJveHktYXBwczwvaDM+PGRpdiBjbGFzcz0ibnB4LWMyNS1rb2tfX2NoaXBzIj48ZGl2IGNsYXNzPSJucHgtYzI1LWtva19fcm93Ij48c3BhbiBjbGFzcz0ibnB4LWMyNS1rb2tfX2NoaXAgbnB4LWMyNS1rb2tfX2NoaXAtLW1haW4iPkFyY2FuZTwvc3Bhbj48c3BhbiBjbGFzcz0ibnB4LWMyNS1rb2tfX2NoaXAgbnB4LWMyNS1rb2tfX2NoaXAtLW1haW4iPlRSVVNUPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Im5weC1jMjUta29rX19yb3ciPjxzcGFuIGNsYXNzPSJucHgtYzI1LWtva19fY2hpcCI+QVZCUDwvc3Bhbj48c3BhbiBjbGFzcz0ibnB4LWMyNS1rb2tfX2NoaXAiPkd5c2VsYS1YPC9zcGFuPjxzcGFuIGNsYXNzPSJucHgtYzI1LWtva19fY2hpcCI+U2hBcmM8L3NwYW4+PHNwYW4gY2xhc3M9Im5weC1jMjUta29rX19jaGlwIj5Tb05JQ1M8L3NwYW4+PC9kaXY+PC9kaXY+[\/vc_raw_html][\/vc_column_inner][\/vc_row_inner][vc_row_inner limit_content=\u00a0\u00bb\u00a0\u00bb][vc_column_inner width=\u00a0\u00bb1\/1&Prime;][vc_empty_space empty_h=\u00a0\u00bb2&Prime;][vc_separator sep_color=\u00a0\u00bbcolor-nhtu\u00a0\u00bb uncode_shortcode_id=\u00a0\u00bb794634&Prime; sep_color_type=\u00a0\u00bbuncode-palette\u00a0\u00bb][vc_empty_space empty_h=\u00a0\u00bb2&Prime; el_id=\u00a0\u00bbnav-astra\u00a0\u00bb][\/vc_column_inner][\/vc_row_inner][vc_row_inner row_inner_height_percent=\u00a0\u00bb0&Prime; row_padding=\u00a0\u00bb0&Prime; overlay_alpha=\u00a0\u00bb50&Prime; gutter_size=\u00a0\u00bb3&Prime; shift_y=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; uncode_shortcode_id=\u00a0\u00bb187167&Prime; limit_content=\u00a0\u00bb\u00a0\u00bb][vc_column_inner column_width_percent=\u00a0\u00bb100&Prime; align_horizontal=\u00a0\u00bbalign_center\u00a0\u00bb gutter_size=\u00a0\u00bb3&Prime; style=\u00a0\u00bblight\u00a0\u00bb overlay_alpha=\u00a0\u00bb50&Prime; shift_x=\u00a0\u00bb0&Prime; shift_y=\u00a0\u00bb0&Prime; shift_y_down=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; medium_width=\u00a0\u00bb0&Prime; mobile_width=\u00a0\u00bb0&Prime; width=\u00a0\u00bb1\/1&Prime; uncode_shortcode_id=\u00a0\u00bb205708&Prime;][vc_custom_heading text_color=\u00a0\u00bbaccent\u00a0\u00bb heading_semantic=\u00a0\u00bbh6&Prime; text_size=\u00a0\u00bbh6&Prime; text_transform=\u00a0\u00bbuppercase\u00a0\u00bb uncode_shortcode_id=\u00a0\u00bb156028&Prime; text_color_type=\u00a0\u00bbuncode-palette\u00a0\u00bb]Appelez le 2025[\/vc_custom_heading][vc_custom_heading heading_semantic=\u00a0\u00bbh3&Prime; text_size=\u00a0\u00bbh1&Prime; uncode_shortcode_id=\u00a0\u00bb642025&Prime;]ASTRA[\/vc_custom_heading][vc_custom_heading text_color=\u00a0\u00bbcolor-jevc\u00a0\u00bb heading_semantic=\u00a0\u00bbh3&Prime; uncode_shortcode_id=\u00a0\u00bb897588&Prime; text_color_type=\u00a0\u00bbuncode-palette\u00a0\u00bb]T\u00e2ches avanc\u00e9es du FR-SRC et allocation des ressources[\/vc_custom_heading][vc_empty_space empty_h=\u00a0\u00bb2&Prime;][vc_raw_html]PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBOdW1QRXggLSBCbG9jIGJhbmRlYXUgZCBpZGVudGl0ZSBwcm9qZXQgLSBBU1RSQSAoQ2FsbCAyMDI1KSAtIHYuMS4yCiAgTmFvcyBBZ2VuY3kgLSAyMDI2LTA4LTE3CiAgSU5TRVJUSU9OIDogUmF3IEhUTUwgVW5jb2RlLCByb3cgbmF2LWFzdHJhLCBzb3VzIGxlIHNvdXMtdGl0cmUKICBkZXZlbG9wcGUuIFJlbXBsYWNlIGxlIGJsb2MgbnB4LWMyNS1jYWxsYXhpcy1hc3RyYS5odG1sICh2LjEpLgogIENPTlRFTlUgOiB1bmUgY2FydGUsIHRyb2lzIGNlbGx1bGVzIC0gUHJvamVjdCBsZWFkZXIgLyBDYWxsIGF4aXMKICAodmVyYmF0aW0pIC8gQnVkZ2V0LiBGaWxldCBzdXBlcmlldXIgZGVncmFkZSBtYXJpbmUtb3JhbmdlLgogIFBIT1RPIExFQURFUiA6IHJlbXBsYWNlciA8c3BhbiBjbGFzcz0ibnB4LWMyNS1iYW5kX19pbmkiPi4uLjwvc3Bhbj5wYXIgPGltZyBjbGFzcz0ibnB4LWMyNS1iYW5kX19waWMiIHNyYz0iVVJMIG1lZGlhdGhlcXVlIiBhbHQ9IiIgbG9hZGluZz0ibGF6eSI+IGxlIGpvdXIgb3UgbGUgcG9ydHJhaXQgZXN0IGZvdXJuaS4KICBSZXNwb25zaXZlIDogMyBjZWxsdWxlcyBlbiBsaWduZSAoPj0gNzAwcHgpLCBlbXBpbGVlcyBlbiBkZXNzb3VzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+PHN0eWxlPi5ucHgtYzI1LWJhbmR7bWF4LXdpZHRoOjg2MHB4O21hcmdpbjowIGF1dG87YmFja2dyb3VuZDojRkZGRkZGO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yYWRpdXM6MTJweDtib3gtc2hhZG93OjAgMnB4IDEwcHggcmdiYSgwLDAsMCwuMDUpO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtmb250LWZhbWlseTppbmhlcml0fQogIC5ucHgtYzI1LWJhbmRfX2Jhcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtoZWlnaHQ6NHB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMxNjIyN0EgMCUsIzE2MjI3QSA1NSUsI0YwODEzQyA1NSUsI0YwODEzQyAxMDAlKX0KICAubnB4LWMyNS1iYW5kX19jZWxse3BhZGRpbmc6MjBweCAxOHB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6NHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpO2JveC1zaXppbmc6Ym9yZGVyLWJveH0KICAubnB4LWMyNS1iYW5kX19jZWxsLS1sZWFke2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEzcHh9CiAgLm5weC1jMjUtYmFuZF9faW5pe3dpZHRoOjUycHg7aGVpZ2h0OjUycHg7ZmxleC1zaHJpbms6MDtib3JkZXItcmFkaXVzOjk5OXB4O2JvcmRlcjozcHggc29saWQgI0VFRjJGQTtiYWNrZ3JvdW5kOiNFRUYyRkE7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQtc2l6ZToxN3B4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMTYyMjdBO2xldHRlci1zcGFjaW5nOi4wNGVtfQogIC5ucHgtYzI1LWJhbmRfX3BpY3t3aWR0aDo1MnB4O2hlaWdodDo1MnB4O2ZsZXgtc2hyaW5rOjA7Ym9yZGVyLXJhZGl1czo5OTlweDtib3JkZXI6M3B4IHNvbGlkICNFRUYyRkE7b2JqZWN0LWZpdDpjb3ZlcjtkaXNwbGF5OmJsb2NrfQogIC5ucHgtYzI1LWJhbmRfX2NvbHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoycHg7bWluLXdpZHRoOjB9CiAgLm5weC1jMjUtYmFuZF9fbGJse2ZvbnQtc2l6ZToxMHB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMTZlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6IzZFNzQ3RX0KICAubnB4LWMyNS1iYW5kX19uYW1le2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxNjIyN0E7bGluZS1oZWlnaHQ6MS4zfQogIC5ucHgtYzI1LWJhbmRfX3N1Yntmb250LXNpemU6MTEuNXB4O2NvbG9yOiM1QTYwNjg7bGluZS1oZWlnaHQ6MS40fQogIC5ucHgtYzI1LWJhbmRfX2F4aXN7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1MDA7Y29sb3I6IzFDMUUyNDtsaW5lLWhlaWdodDoxLjU7dGV4dC13cmFwOnByZXR0eX0KICAubnB4LWMyNS1iYW5kX19jZWxsLS1idWRnZXR7YmFja2dyb3VuZDojRUVGMkZBO2JvcmRlci1ib3R0b206MH0KICAubnB4LWMyNS1iYW5kX19jZWxsLS1idWRnZXQgLm5weC1jMjUtYmFuZF9fbGJse2NvbG9yOiMxNjIyN0F9CiAgLm5weC1jMjUtYmFuZF9fYW1vdW50e2ZvbnQtc2l6ZToyMXB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMTYyMjdBO2xpbmUtaGVpZ2h0OjEuMX0KICBAbWVkaWEgKG1pbi13aWR0aDo3MDBweCl7CiAgICAubnB4LWMyNS1iYW5ke2dyaWQtdGVtcGxhdGUtY29sdW1uczoxLjI1ZnIgMS40NWZyIC44ZnJ9CiAgICAubnB4LWMyNS1iYW5kX19jZWxse2JvcmRlci1ib3R0b206MDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpfQogICAgLm5weC1jMjUtYmFuZF9fY2VsbC0tYnVkZ2V0e2JvcmRlci1yaWdodDowfQogIH0KPC9zdHlsZT48ZGl2IGNsYXNzPSJucHgtYzI1LWJhbmQiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2JhciIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj48ZGl2IGNsYXNzPSJucHgtYzI1LWJhbmRfX2NlbGwgbnB4LWMyNS1iYW5kX19jZWxsLS1sZWFkIj48c3BhbiBjbGFzcz0ibnB4LWMyNS1iYW5kX19pbmkiIGFyaWEtaGlkZGVuPSJ0cnVlIj5NTTwvc3Bhbj48c3BhbiBjbGFzcz0ibnB4LWMyNS1iYW5kX19jb2wiPjxzcGFuIGNsYXNzPSJucHgtYzI1LWJhbmRfX2xibCI+UHJvamVjdCBsZWFkZXI8L3NwYW4+PHNwYW4gY2xhc3M9Im5weC1jMjUtYmFuZF9fbmFtZSI+TWFyYy1BbnRvaW5lIE1pdmlsbGUtRGVzY2jDqm5lczwvc3Bhbj48c3BhbiBjbGFzcz0ibnB4LWMyNS1iYW5kX19zdWIiPkNOUlMgcmVzZWFyY2hlcjwvc3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS1iYW5kX19jZWxsIj48c3BhbiBjbGFzcz0ibnB4LWMyNS1iYW5kX19sYmwiPkNhbGwgYXhpczwvc3Bhbj48c3BhbiBjbGFzcz0ibnB4LWMyNS1iYW5kX19heGlzIj5FZmZpY2llbnQgd29ya2Zsb3dzIGZvciBzY2llbnRpZmljIGRhdGEgcHJvY2Vzc2luZywgdGhlIGNhc2Ugb2YgU0tBPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Im5weC1jMjUtYmFuZF9fY2VsbCBucHgtYzI1LWJhbmRfX2NlbGwtLWJ1ZGdldCI+PHNwYW4gY2xhc3M9Im5weC1jMjUtYmFuZF9fbGJsIj5CdWRnZXQ8L3NwYW4+PHNwYW4gY2xhc3M9Im5weC1jMjUtYmFuZF9fYW1vdW50Ij7igqw1NTBLPC9zcGFuPjwvZGl2PjwvZGl2Pg==[\/vc_raw_html][vc_empty_space empty_h=\u00a0\u00bb2&Prime;][vc_column_text uncode_shortcode_id=\u00a0\u00bb171502&Prime;]Ce projet de recherche porte sur la transformation majeure en cours dans le domaine de la radioastronomie, port\u00e9e par des observatoires de nouvelle g\u00e9n\u00e9ration tels que LOFAR 2.0 et le SKA. Ces instruments g\u00e9n\u00e8rent des ensembles de donn\u00e9es volumineux et h\u00e9t\u00e9rog\u00e8nes, r\u00e9partis sur plusieurs sites, qui ne peuvent \u00eatre trait\u00e9s efficacement \u00e0 l\u2019aide des m\u00e9thodes traditionnelles de traitement des donn\u00e9es. Le projet vise \u00e0 surmonter ces goulots d\u2019\u00e9tranglement structurels en d\u00e9veloppant une plateforme num\u00e9rique unifi\u00e9e et \u00e9volutive qui f\u00e9d\u00e8re les ressources de calcul haute performance (HPC), de cloud et de stockage d\u2019objets. Elle permettra l\u2019ex\u00e9cution de flux de travail complexes (y compris le traitement bas\u00e9 sur l\u2019IA) sur des infrastructures h\u00e9t\u00e9rog\u00e8nes gr\u00e2ce \u00e0 des technologies modernes de conteneurisation. Des principes cl\u00e9s tels que la provenance des donn\u00e9es, la reproductibilit\u00e9 et le calcul \u00e9conome en \u00e9nergie seront int\u00e9gr\u00e9s afin de prendre en charge \u00e0 la fois les flux de travail scientifiques interactifs et automatis\u00e9s.[\/vc_column_text][vc_empty_space empty_h=\u00a0\u00bb2&Prime;][vc_raw_html]PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBOdW1QRXggLSBCbG9jIEFTVFJBIEdvYWxzIC8gTWV0aG9kICsgZGVtb25zdHJhdGV1ciAoQ2FsbCAyMDI1KSAtIHYuMQogIE5hb3MgQWdlbmN5IC0gMjAyNi0wOC0xNQogIElOU0VSVElPTiA6IFJhdyBIVE1MIFVuY29kZSwgcm93IG5hdi1hc3RyYSwgc291cyBsYSBsaWduZSBDYWxsIGF4aXMuCiAgQ09OVEVOVSA6IEdvYWxzIGV0IE1ldGhvZCB2ZXJiYXRpbSBkdSBkZWNrIC0gbGVzIGdyYXBoaWVzIGR1IGNsaWVudCBzb250CiAgcmVwcm9kdWl0ZXMgdGVsbGVzIHF1ZWxsZXMgKGFzIHdlbGwgYWNjZXNzIHRvIHJlc3NvdXJjZXMsIGF1dGhlbnRpZmljYXRpb24pLAogIG5lIHBhcyBjb3JyaWdlciBzYW5zIGFyYml0cmFnZSBjbGllbnQuIFB1aXMgbGEgcGFzdGlsbGUgZGVtb25zdHJhdGV1ci4KICBSZXNwb25zaXZlIDogbGVzIGRldXggZW5jYXJ0cyBzb250IGVtcGlsZXMgYSB0b3V0ZXMgbGVzIGxhcmdldXJzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+PHN0eWxlPi5ucHgtYzI1LWdvYWxze21heC13aWR0aDo5MDBweDttYXJnaW46MCBhdXRvO2Rpc3BsYXk6Z3JpZDtnYXA6MTRweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO2ZvbnQtZmFtaWx5OmluaGVyaXR9CiAgLm5weC1jMjUtZ29hbHNfX2NhcmR7YmFja2dyb3VuZDojRkZGRkZGO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHggMjJweDtib3gtc2hhZG93OjAgMnB4IDEwcHggcmdiYSgwLDAsMCwuMDUpfQogIC5ucHgtYzI1LWdvYWxzX19jYXJkLS1nb2Fsc3tib3JkZXItbGVmdDozcHggc29saWQgIzE2MjI3QX0KICAubnB4LWMyNS1nb2Fsc19fY2FyZC0tbWV0aG9ke2JvcmRlci1sZWZ0OjNweCBzb2xpZCAjN0ZBM0Q4fQogIC5ucHgtYzI1LWdvYWxzX19jYXJkIHB7bWFyZ2luOjA7Zm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MS43NTtjb2xvcjojM0Y0NDRDO3RleHQtd3JhcDpwcmV0dHl9CiAgLm5weC1jMjUtZ29hbHNfX2NhcmQgc3Ryb25ne2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMTYyMjdBfQogIC5ucHgtYzI1LWdvYWxzX19kZW1ve21hcmdpbjoyMnB4IDAgMDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcn0KICAubnB4LWMyNS1nb2Fsc19fcGlsbHtiYWNrZ3JvdW5kOiNGREYxRTc7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI0MCwxMjksNjAsLjYpO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzoxMHB4IDIycHg7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOiNBODU0MDg7bGV0dGVyLXNwYWNpbmc6LjAyZW07dGV4dC1hbGlnbjpjZW50ZXI7bGluZS1oZWlnaHQ6MS40NX0KPC9zdHlsZT48ZGl2IGNsYXNzPSJucHgtYzI1LWdvYWxzIj48ZGl2IGNsYXNzPSJucHgtYzI1LWdvYWxzX19jYXJkIG5weC1jMjUtZ29hbHNfX2NhcmQtLWdvYWxzIj48cD48c3Ryb25nPkdvYWxzOjwvc3Ryb25nPiB3b3JrIGZvY3VzaW5nIG9uIDQgbWF0dXJlIHJhZGlvIGFzdHJvbm9teSBwaXBlbGluZXMgdG8gcHJvdmlkZSBkZXBsb3lhYmxlIHdvcmtmbG93cyBvbiBoZXRlcm9nZW5lb3VzIGRpc3RyaWJ1dGVkIGFyY2hpdGVjdHVyZXMgdG8gdGhvc2UgdGhhdCB3aWxsIGJlIGltcGxlbWVudGVkIGluIFNLQS48L3A+PC9kaXY+PGRpdiBjbGFzcz0ibnB4LWMyNS1nb2Fsc19fY2FyZCBucHgtYzI1LWdvYWxzX19jYXJkLS1tZXRob2QiPjxwPjxzdHJvbmc+TWV0aG9kOjwvc3Ryb25nPiBwcm92aWRlIGEgZ2VuZXJpYyBmcmFtZXdvcmsgZm9yIHdvcmtmbG93IGRldmVsb3BtZW50IGludGVncmF0aW5nIHRoZSBmZWRlcmF0aW9uIG9mIHRoZSBkYXRhIHN0b3JhZ2UvY29tcHV0ZS9leGVjdXRpb24gc2VydmljZXMgYXMgd2VsbCBhY2Nlc3MgdG8gcmVzc291cmNlcyAoZS5nLiBhdXRoZW50aWZpY2F0aW9uLCBkYXRhIGxvZ2lzdGljcywgZXRjKTwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJucHgtYzI1LWdvYWxzX19kZW1vIj48c3BhbiBjbGFzcz0ibnB4LWMyNS1nb2Fsc19fcGlsbCI+RGVwbG95bWVudCBkZW1vbnN0cmF0b3Igb24gdGhlIGZpcnN0IEZSLVNSQyBub2RlPC9zcGFuPjwvZGl2Pg==[\/vc_raw_html][vc_empty_space empty_h=\u00a0\u00bb2&Prime;][vc_raw_html]PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBOdW1QRXggLSBCbG9jIGdhbGVyaWUgQVNUUkEgLSA0IGRvbWFpbmVzIChDYWxsIDIwMjUpIC0gdi4xLjEKICBOYW9zIEFnZW5jeSAtIDIwMjYtMDgtMTUKICBJTlNFUlRJT04gOiBSYXcgSFRNTCBVbmNvZGUsIHJvdyBuYXYtYXN0cmEsIHNvdXMgbGUgYmxvYyBHb2FscyAvIE1ldGhvZC4KICBJTUFHRVMgOiBVUkxzIGRlIGxhIG1lZGlhdGhlcXVlIG51bXBleC5vcmcsIGF1Y3VuZSBhY3Rpb24gYSBwcmV2b2lyLgogIENoYXF1ZSBub20gZGUgZmljaGllciBjb3JyZXNwb25kIGJpZW4gYXUgdmlzdWVsIHF1IGlsIHBvcnRlLgogIExlZ2VuZGVzIHZlcmJhdGltIGRlIGxhIHNsaWRlIGNsaWVudC4gQ2FkcmFnZSBwYXIgQ1NTIChvYmplY3QtZml0KSwKICBsZXMgdmlzdWVscyBuZSBzb250IG5pIGRlZm9ybWVzIG5pIHJvZ25lcy4KICBNT0RJRklFUiBVTiBWSVNVRUwgOiByZW1wbGFjZXIgbGUgc3JjIGV0IGwgYXR0cmlidXQgYWx0IGR1IDxpbWc+Y29uY2VybmUsIGV0IGFqdXN0ZXIgd2lkdGggLyBoZWlnaHQgYXV4IGRpbWVuc2lvbnMgZHUgbm91dmVhdSBmaWNoaWVyLgogIFJlc3BvbnNpdmUgOiA0IGNvbG9ubmVzICg+PSAxMTAwcHgpIC0gMngyICg+PSA1NjBweCkgLSBlbXBpbGVtZW50Lgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+PHN0eWxlPi5ucHgtYzI1LWdhbHtkaXNwbGF5OmdyaWQ7Z3JpZC1hdXRvLXJvd3M6MWZyO2dhcDoxNnB4O2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7Zm9udC1mYW1pbHk6aW5oZXJpdH0KICAubnB4LWMyNS1nYWxfX2ZpZ3ttYXJnaW46MDtiYWNrZ3JvdW5kOiNGRkZGRkY7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJhZGl1czoxMnB4O292ZXJmbG93OmhpZGRlbjtib3gtc2hhZG93OjAgMnB4IDEwcHggcmdiYSgwLDAsMCwuMDUpO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjE4cyBlYXNlLGJveC1zaGFkb3cgLjE4cyBlYXNlfQogIC5ucHgtYzI1LWdhbF9fZmlnOmhvdmVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpO2JveC1zaGFkb3c6MCA4cHggMjJweCByZ2JhKDAsMCwwLC4xMCl9CiAgLm5weC1jMjUtZ2FsX19maWcgaW1ne2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzthc3BlY3QtcmF0aW86MS8xO29iamVjdC1maXQ6Y292ZXI7YmFja2dyb3VuZDojMEIwQjBEfQogIC5ucHgtYzI1LWdhbF9fY2Fwe3BhZGRpbmc6MTRweCAxNnB4O2ZvbnQtc2l6ZToxNC41cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxQzFFMjQ7bGV0dGVyLXNwYWNpbmc6LjAyZW19CiAgQG1lZGlhIChtaW4td2lkdGg6NTYwcHgpey5ucHgtYzI1LWdhbHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsMWZyKX19CiAgQG1lZGlhIChtaW4td2lkdGg6MTEwMHB4KXsubnB4LWMyNS1nYWx7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg0LDFmcil9fQogIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5ucHgtYzI1LWdhbF9fZmlne3RyYW5zaXRpb246bm9uZX19Cjwvc3R5bGU+PGRpdiBjbGFzcz0ibnB4LWMyNS1nYWwiPjxmaWd1cmUgY2xhc3M9Im5weC1jMjUtZ2FsX19maWciPjxpbWcgc3JjPSJodHRwczovL251bXBleC5vcmcvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzYvMjAyNi8wOC9hc3RyYS1wdWxzYXJzLnBuZyIgYWx0PSJQdWxzYXIgdGltaW5nIGFycmF5IGRpYWdyYW06IHB1bHNhcnMgYXJvdW5kIHRoZSBFYXJ0aCwgZ3Jhdml0YXRpb25hbCB3YXZlcyBhbmQgYSBzdXBlcm1hc3NpdmUgYmxhY2sgaG9sZSBiaW5hcnkiIHdpZHRoPSIzMzciIGhlaWdodD0iMzEyIiBsb2FkaW5nPSJsYXp5Ij48ZmlnY2FwdGlvbiBjbGFzcz0ibnB4LWMyNS1nYWxfX2NhcCI+UHVsc2FyczwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48ZmlndXJlIGNsYXNzPSJucHgtYzI1LWdhbF9fZmlnIj48aW1nIHNyYz0iaHR0cHM6Ly9udW1wZXgub3JnL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy82LzIwMjYvMDgvYXN0cmEtaW50ZXJzdGVsbGFyLW1lZGl1bS5wbmciIGFsdD0iUmFkaW8gaW1hZ2Ugb2YgdHdvIGJyaWdodCBibHVlIGVtaXNzaW9uIGxvYmVzIG9ic2VydmVkIGluIHRoZSBpbnRlcnN0ZWxsYXIgbWVkaXVtIiB3aWR0aD0iMzM4IiBoZWlnaHQ9IjMxMSIgbG9hZGluZz0ibGF6eSI+PGZpZ2NhcHRpb24gY2xhc3M9Im5weC1jMjUtZ2FsX19jYXAiPkludGVyc3RlbGxhciBtZWRpdW08L2ZpZ2NhcHRpb24+PC9maWd1cmU+PGZpZ3VyZSBjbGFzcz0ibnB4LWMyNS1nYWxfX2ZpZyI+PGltZyBzcmM9Imh0dHBzOi8vbnVtcGV4Lm9yZy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvNi8yMDI2LzA4L2FzdHJhLWxhcmdlLXNjYWxlLXN1cnZleXMucG5nIiBhbHQ9IldpZGUtZmllbGQgc3VydmV5IG1hcCBzaG93aW5nIGZpbGFtZW50cyBvZiB3YXJtIGdhcyBpbiBvcmFuZ2UgYW5kIHB1cnBsZSB0b25lcyIgd2lkdGg9IjMzNyIgaGVpZ2h0PSIzMTEiIGxvYWRpbmc9ImxhenkiPjxmaWdjYXB0aW9uIGNsYXNzPSJucHgtYzI1LWdhbF9fY2FwIj5MYXJnZS1zY2FsZSBzdXJ2ZXlzPC9maWdjYXB0aW9uPjwvZmlndXJlPjxmaWd1cmUgY2xhc3M9Im5weC1jMjUtZ2FsX19maWciPjxpbWcgc3JjPSJodHRwczovL251bXBleC5vcmcvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzYvMjAyNi8wOC9hc3RyYS1lcG9jaC1vZi1yZWlvbml6YXRpb24ucG5nIiBhbHQ9IlNpbXVsYXRpb24gb2YgaW9uaXplZCBidWJibGVzIHNjYXR0ZXJlZCBhY3Jvc3MgYSBkYXJrIHNreSBkdXJpbmcgdGhlIGVwb2NoIG9mIHJlaW9uaXphdGlvbiIgd2lkdGg9IjMzOCIgaGVpZ2h0PSIzMTAiIGxvYWRpbmc9ImxhenkiPjxmaWdjYXB0aW9uIGNsYXNzPSJucHgtYzI1LWdhbF9fY2FwIj5FcG9jaCBvZiByZWlvbml6YXRpb248L2ZpZ2NhcHRpb24+PC9maWd1cmU+PC9kaXY+[\/vc_raw_html][\/vc_column_inner][\/vc_row_inner][\/vc_column][\/vc_row]<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>[vc_row row_height_percent=\u00a0\u00bb0&Prime; overlay_alpha=\u00a0\u00bb50&Prime; gutter_size=\u00a0\u00bb3&Prime; column_width_percent=\u00a0\u00bb100&Prime; shift_y=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; sticky=\u00a0\u00bbyes\u00a0\u00bb content_parallax=\u00a0\u00bb0&Prime; uncode_shortcode_id=\u00a0\u00bb716742&Prime; css=\u00a0\u00bb.vc_custom_1785869798726{margin-top: 1% !important;}\u00a0\u00bb][vc_column width=\u00a0\u00bb1\/1&Prime;][vc_raw_html]PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBOdW1QRXgg4oCUIE1lbnUgZGUgc2VjdGlvbnMgc3RpY2t5IOKAlCB2LjYuNAogIE5hb3MgQWdlbmN5IMK3IDIwMjYtMDktMTAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKPHN0eWxlPgogIDpyb290eyAtLW5weC10b3A6IDYwcHg7IH0gLyogaGF1dGV1ciBkdSBoZWFkZXIgVW5jb2RlIHN0aWNreSAqLwogIC5ucHgtc3VibmF2ewogICAgYmFja2dyb3VuZDogI0UwOTkwMDsgLyogb3JhbmdlIGQnYWNjZW50dWF0aW9uIE51bVBFeCAqLwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwwLDAsLjA4KTsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICB3aWR0aDogMTAwJTsKICAgIHotaW5kZXg6IDQwOwogIH0KICAubnB4LXN1Ym5hdltoaWRkZW5deyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KICAubnB4LXN1Ym5hdi5ucHgtc3R1Y2t7IGJvcmRlci1yYWRpdXM6IDAgMCAxMnB4IDEycHg7IH0KICAubnB4LXN1Ym5hdi5ucHgtc3R1Y2t7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IHZhcigtLW5weC10b3ApOwogICAgbGVmdDogMDsgcmlnaHQ6IDA7CiAgfQogIC5ucHgtc3VibmF2X19pbm5lcnsKICAgIC8qIHYuNi40IDogbWV0cmlxdWVzIHBpbG90ZWVzIHBhciB2YXJpYWJsZXMuIExlcyB2YWxldXJzIGRlIHJlcGxpCiAgICAgICBTT05UIGNlbGxlcyBkZSBsYSB2LjYuMiA6IHNhbnMgSlMsIHJlbmR1IGlkZW50aXF1ZS4gKi8KICAgIG1heC13aWR0aDogMTE0MHB4OwogICAgbWFyZ2luOiAwIGF1dG87CiAgICBwYWRkaW5nOiAwIDI0cHg7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiBub3dyYXA7CiAgICBnYXA6IDAgdmFyKC0tbnB4LWdhcCwgMTBweCk7CiAgICBtaW4taGVpZ2h0OiA0NnB4OwogICAgcGFkZGluZy10b3A6IDZweDsKICAgIHBhZGRpbmctYm90dG9tOiA2cHg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZm9udC1zaXplOiB2YXIoLS1ucHgtZnMsIDExcHgpOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1ucHgtbHMsIC4xMmVtKTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgb3ZlcmZsb3cteTogaGlkZGVuOwogICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lOwogICAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lOwogICAgLyogZm9udC1mYW1pbHk6ICdQb3BwaW5zJywgc3lzdGVtLXVpLCBzYW5zLXNlcmlmOyAqLwogIH0KICAubnB4LXN1Ym5hdl9faW5uZXI6Oi13ZWJraXQtc2Nyb2xsYmFyeyBkaXNwbGF5OiBub25lOyB9CiAgLyogU3DDqWNpZmljaXTDqSByZW5mb3Jjw6llICsgIWltcG9ydGFudCA6IG5ldXRyYWxpc2UgbGVzIGNvdWxldXJzIGRlIGxpZW5zIGR1IHRow6htZSBVbmNvZGUgKG9yYW5nZSBhdSBzdXJ2b2wvY2xpYykgKi8KICBuYXYubnB4LXN1Ym5hdiAubnB4LXN1Ym5hdl9faW5uZXIgYSwKICBuYXYubnB4LXN1Ym5hdiAubnB4LXN1Ym5hdl9faW5uZXIgYTp2aXNpdGVkewogICAgY29sb3I6IHJnYmEoMjU1LDI1MCwyNDMsLjg4KSAhaW1wb3J0YW50OyAvKiBibGFuYyBjYXNzw6kgKi8KICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgcGFkZGluZzogOHB4IHZhcigtLW5weC1weCwgMTRweCk7CiAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgIHRyYW5zaXRpb246IGNvbG9yIC4xOHMsIGJhY2tncm91bmQtY29sb3IgLjE4czsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7ICAvKiB2LjYuNCA6IHVuIGxpYmVsbGUgbmUgc2UgY291cGUgamFtYWlzICovCiAgICBmbGV4OiAwIDAgYXV0bzsgICAgICAgLyogdi42LjQgOiBsZXMgcGFzdGlsbGVzIG5lIHNlIGNvbXByaW1lbnQgcGFzICovCiAgfQogIG5hdi5ucHgtc3VibmF2IC5ucHgtc3VibmF2X19pbm5lciBhOmhvdmVyLAogIG5hdi5ucHgtc3VibmF2IC5ucHgtc3VibmF2X19pbm5lciBhOmZvY3VzLAogIG5hdi5ucHgtc3VibmF2IC5ucHgtc3VibmF2X19pbm5lciBhOmFjdGl2ZXsKICAgIGNvbG9yOiAjRkZGRkZGICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC4xMik7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDsKICB9CiAgbmF2Lm5weC1zdWJuYXYgLm5weC1zdWJuYXZfX2lubmVyIGEubnB4LWFjdGl2ZSwKICBuYXYubnB4LXN1Ym5hdiAubnB4LXN1Ym5hdl9faW5uZXIgYS5ucHgtYWN0aXZlOmhvdmVyewogICAgY29sb3I6ICNGRkZGRkYgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICNBODZGMDA7IC8qIG9yYW5nZSBmb25jw6ksIGFwbGF0IHNpbXBsZSAqLwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICB9Cjwvc3R5bGU+Cgo8bmF2IGNsYXNzPSJucHgtc3VibmF2IiBhcmlhLWxhYmVsPSJQYWdlIHNlY3Rpb25zIiBoaWRkZW4+CiAgPGRpdiBjbGFzcz0ibnB4LXN1Ym5hdl9faW5uZXIiPjwvZGl2Pgo8L25hdj4KCjxzY3JpcHQ+CihmdW5jdGlvbigpewogICd1c2Ugc3RyaWN0JzsKCiAgLyogPT09PT09PT09PT09PT09PT09PT0gQ09ORklHIFNJVEUgPT09PT09PT09PT09PT09PT09PT0KICAgICBTZXVsZSB6b25lIMOgIGFkYXB0ZXIgcG91ciByw6l1dGlsaXNlciBsZSBibG9jIGFpbGxldXJzLiAqLwogIHZhciBQUkVGSVggPSAnbmF2LSc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHByw6lmaXhlIGRlcyBSb3cgSUQgw6AgZMOpdGVjdGVyICovCiAgdmFyIFNUUklQICA9IFsvLShlbnxmcikkL2ksIC8tZXhhLVthLXowLTldKyQvaV07ICAgLyogc3VmZml4ZXMgZCd1bmljaXTDqSDDoCBpZ25vcmVyICAqLwoKICAvKiBSZXBsaSBwb3VyIGxlcyBwYWdlcyBQQVMgRU5DT1JFIE1JR1LDiUVTIHZlcnMgbGUgcHLDqWZpeGUgbmF2LQogICAgICh0eXBpcXVlbWVudCBsZXMgdHJhZHVjdGlvbnMgV1BNTCBkb250IGxlcyBSb3cgSUQgbidvbnQgcGFzIMOpdMOpCiAgICAgcmVub21tw6lzKS4gVXRpbGlzw6kgVU5JUVVFTUVOVCBzaSBsYSBwYWdlIG5lIGNvbnRpZW50IGF1Y3VuZSByb3cKICAgICDCqyBuYXYtIMK7LiBSZXByZW5kIGxlcyBjbMOpcyBkZSBsYSB2LjUgOiB1bmUgcm93IG5vbW3DqWUKICAgICDCqyBjb25zb3J0aXVtLWV4YS1tYS1lbiDCuyBvdSBzaW1wbGVtZW50IMKrIGNvbnNvcnRpdW0gwrsgZXN0CiAgICAgcmV0cm91dsOpZS4gTGlzdGUgZmVybcOpZSA9IGF1Y3VuIHJpc3F1ZSBkZSBmYXV4IHBvc2l0aWYuICovCiAgdmFyIExFR0FDWV9LRVlTID0gWwogICAgJ292ZXJ2aWV3JywgJ2NvbnNvcnRpdW0nLCAncmVzdWx0cycsICdtZXRyaWNzJywgJ3NvZnR3YXJlJywKICAgICduZXdzJywgJ2V2ZW50cycsICdhZ2VuZGEnLCAndGVhbScsICdjb250YWN0JwogIF07CgogIHZhciBMQUJFTFMgPSB7CiAgICAvKiBMaWJlbGzDqXMgcHLDqWbDqXLDqXMgcGFyIGNsw6kuIFRvdXRlIGNsw6kgYWJzZW50ZSBlc3QgYWZmaWNow6llCiAgICAgICBjYXBpdGFsaXPDqWUgdGVsbGUgcXVlbGxlIChuYXYtam9pbi11cyAtPiDCqyBKb2luIFVzIMK7KS4gKi8KICAgIGVuOiB7CiAgICAgICdjb25zb3J0aXVtJzogJ0NvbnNvcnRpdW0gJiBXb3JrcGFja2FnZXMnLAogICAgICAncmVzdWx0cyc6ICAgICdSZXN1bHRzICYgSW1wYWN0JywKICAgICAgJ21ldHJpY3MnOiAgICAnUHJvamVjdCBNZXRyaWNzJywKICAgICAgJ3RlYW0nOiAgICAgICAnVGhlIFRlYW0nCiAgICB9LAogICAgZnI6IHsKICAgICAgJ292ZXJ2aWV3JzogICAnUHLDqXNlbnRhdGlvbicsCiAgICAgICdjb25zb3J0aXVtJzogJ0NvbnNvcnRpdW0gZXQgbG90cyBkZSB0cmF2YWlsJywKICAgICAgJ3Jlc3VsdHMnOiAgICAnUsOpc3VsdGF0cyBldCBpbXBhY3QnLAogICAgICAnbWV0cmljcyc6ICAgICdDaGlmZnJlcyBjbMOpcycsCiAgICAgICdzb2Z0d2FyZSc6ICAgJ0xvZ2ljaWVscycsCiAgICAgICduZXdzJzogICAgICAgJ0FjdHVhbGl0w6lzJywKICAgICAgJ2V2ZW50cyc6ICAgICAnw4l2w6huZW1lbnRzJywKICAgICAgJ3RlYW0nOiAgICAgICAnTOKAmcOpcXVpcGUnCiAgICB9CiAgfTsKICB2YXIgU1RJQ0tfTU9ERSA9ICd1bmNvZGUnOyAvKiAndW5jb2RlJyA9IGxhIHJvdyBnw6hyZSBsZSBzdGlja3kgwrcgJ2pzJyA9IGxlIHNjcmlwdCBjb2xsZSBsdWktbcOqbWUgKi8KICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKICB2YXIgREVCVUcgPSAvWz8mXW5weGRlYnVnPTEvLnRlc3Qod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7CiAgZnVuY3Rpb24gbG9nKCl7CiAgICBpZighREVCVUcgfHwgIXdpbmRvdy5jb25zb2xlIHx8ICFjb25zb2xlLmxvZykgcmV0dXJuOwogICAgY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgWydbbnB4LXN1Ym5hdl0nXS5jb25jYXQoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKSk7CiAgfQoKICAvKiAtLS0tIExhbmd1ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgPGh0bWwgbGFuZz4gcG9zw6kgcGFyIFdQTUwuIFJlcGxpcyBzdWNjZXNzaWZzIHNpIGwnYXR0cmlidXQgbWFucXVlIDoKICAgICB1biBhbmPDqnRyZSBwb3J0ZXVyIGRlIGxhbmcsIHB1aXMgbGVzIGNsYXNzZXMgZHUgYm9keS4gKi8KICBmdW5jdGlvbiBkZXRlY3RMYW5nKGVsKXsKICAgIHZhciB0YWcgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJykgfHwgJyc7CiAgICBpZighdGFnICYmIGVsICYmIGVsLmNsb3Nlc3QpewogICAgICB2YXIgaG9zdCA9IGVsLmNsb3Nlc3QoJ1tsYW5nXScpOwogICAgICBpZihob3N0KXsgdGFnID0gaG9zdC5nZXRBdHRyaWJ1dGUoJ2xhbmcnKSB8fCAnJzsgfQogICAgfQogICAgaWYoIXRhZyl7CiAgICAgIHZhciBjbHMgPSAoZG9jdW1lbnQuYm9keSAmJiBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSkgfHwgJyc7CiAgICAgIGlmKC8oPzpsYW5nfGxhbmd1YWdlKS1mclxifGZyW18tXUZSL2kudGVzdChjbHMpKXsgdGFnID0gJ2ZyJzsgfQogICAgfQogICAgcmV0dXJuIC9eZnIvaS50ZXN0KHRhZykgPyAnZnInIDogJ2VuJzsKICB9CgogIGZ1bmN0aW9uIGtleU9mKGlkKXsKICAgIHZhciBrID0gaWQuc2xpY2UoUFJFRklYLmxlbmd0aCkudG9Mb3dlckNhc2UoKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBTVFJJUC5sZW5ndGg7IGkrKyl7IGsgPSBrLnJlcGxhY2UoU1RSSVBbaV0sICcnKTsgfQogICAgcmV0dXJuIGs7CiAgfQogIGZ1bmN0aW9uIHRpdGxlQ2FzZShrZXkpewogICAgcmV0dXJuIGtleS5zcGxpdCgnLScpLm1hcChmdW5jdGlvbih3KXsKICAgICAgcmV0dXJuIHcgPyB3LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdy5zbGljZSgxKSA6IHc7CiAgICB9KS5qb2luKCcgJyk7CiAgfQoKICAvKiBEb3VibGUgc8OpY3VyaXTDqSA6IMOpY2FydGUgbGVzIG1lbnVzIGfDqW7DqXLDqXMgcGFyIFdvcmRQcmVzcyBldCB0b3V0IGNlCiAgICAgcXVpIHZpdCBkYW5zIGxhIG5hdmlnYXRpb24gb3UgbGUgaGVhZGVyIOKAlCBpbmNoYW5nw6kgZGVwdWlzIGxhIHYuNi4xLiAqLwogIGZ1bmN0aW9uIGlzU2VjdGlvbkNhbmRpZGF0ZShlbCl7CiAgICB2YXIgdGFnID0gZWwudGFnTmFtZTsKICAgIGlmKHRhZyA9PT0gJ1VMJyB8fCB0YWcgPT09ICdMSScgfHwgdGFnID09PSAnQScgfHwgdGFnID09PSAnTkFWJyl7IHJldHVybiBmYWxzZTsgfQogICAgaWYoZWwuY2xvc2VzdCAmJiBlbC5jbG9zZXN0KCduYXYsIGhlYWRlciwgLm5weC1zdWJuYXYnKSl7IHJldHVybiBmYWxzZTsgfQogICAgcmV0dXJuIHRydWU7CiAgfQoKICBmdW5jdGlvbiBpbkRvY3VtZW50T3JkZXIoYSwgYil7CiAgICB2YXIgcG9zID0gYS5zZWN0aW9uLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIuc2VjdGlvbik7CiAgICByZXR1cm4gKHBvcyAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKSA\/IC0xIDogMTsKICB9CgogIC8qIC0tLS0gRMOpY291dmVydGUgZGVzIHNlY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgMSkgTW9kZSBub21pbmFsIDogdG91dGVzIGxlcyByb3dzIGRvbnQgbCdpZCBjb21tZW5jZSBwYXIgwqsgbmF2LSDCuy4KICAgICAyKSBSZXBsaSA6IHNpIGV0IHNldWxlbWVudCBzaSBsZSBtb2RlIDEgbmUgZG9ubmUgUklFTiwgb24gY2hlcmNoZQogICAgICAgIGxlcyBjbMOpcyBow6lyaXTDqWVzIGRlIGxhIHYuNSwgYXZlYyBvdSBzYW5zIHN1ZmZpeGUuCiAgICAgUmVudm9pZSB7IGVudHJpZXM6IFsuLi5dLCBtb2RlOiAncHJlZml4JyB8ICdsZWdhY3knIHwgJ25vbmUnIH0uICovCiAgZnVuY3Rpb24gZGlzY292ZXIoZGljdCl7CiAgICB2YXIgc2VlbiA9IE9iamVjdC5jcmVhdGUobnVsbCksIGVudHJpZXMgPSBbXTsKCiAgICBmdW5jdGlvbiBwdXNoKGVsLCBrZXkpewogICAgICBpZighZWwgfHwgIWtleSB8fCBzZWVuW2tleV0peyByZXR1cm47IH0KICAgICAgc2VlbltrZXldID0gdHJ1ZTsKICAgICAgZW50cmllcy5wdXNoKHsgc2VjdGlvbjogZWwsIGtleToga2V5LCBsYWJlbDogZGljdFtrZXldIHx8IHRpdGxlQ2FzZShrZXkpIH0pOwogICAgfQoKICAgIHZhciBmb3VuZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZF49IicgKyBQUkVGSVggKyAnIl0nKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBmb3VuZC5sZW5ndGg7IGkrKyl7CiAgICAgIGlmKCFpc1NlY3Rpb25DYW5kaWRhdGUoZm91bmRbaV0pKXsgY29udGludWU7IH0KICAgICAgcHVzaChmb3VuZFtpXSwga2V5T2YoZm91bmRbaV0uaWQpKTsKICAgIH0KICAgIGlmKGVudHJpZXMubGVuZ3RoKXsKICAgICAgd2FybklmUGFydGlhbGx5TWlncmF0ZWQoc2Vlbik7CiAgICAgIHJldHVybiB7IGVudHJpZXM6IGVudHJpZXMsIG1vZGU6ICdwcmVmaXgnIH07CiAgICB9CgogICAgZm9yKHZhciBqID0gMDsgaiA8IExFR0FDWV9LRVlTLmxlbmd0aDsgaisrKXsKICAgICAgdmFyIGsgID0gTEVHQUNZX0tFWVNbal07CiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGspIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tpZF49IicgKyBrICsgJy0iXScpOwogICAgICBpZihlbCAmJiBpc1NlY3Rpb25DYW5kaWRhdGUoZWwpKXsgcHVzaChlbCwgayk7IH0KICAgIH0KICAgIGlmKGVudHJpZXMubGVuZ3RoKXsKICAgICAgZW50cmllcy5zb3J0KGluRG9jdW1lbnRPcmRlcik7IC8qIGxhIGxpc3RlIGRlcyBjbMOpcyBuZSBzdWl0IHBhcyBsJ29yZHJlIGRlIGxhIHBhZ2UgKi8KICAgICAgcmV0dXJuIHsgZW50cmllczogZW50cmllcywgbW9kZTogJ2xlZ2FjeScgfTsKICAgIH0KCiAgICByZXR1cm4geyBlbnRyaWVzOiBlbnRyaWVzLCBtb2RlOiAnbm9uZScgfTsKICB9CgogIC8qIC0tLS0gTWlncmF0aW9uIHBhcnRpZWxsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIENhcyBwacOoZ2UgOiBzdXIgdW5lIG3Dqm1lIHBhZ2UgY2VydGFpbmVzIHJvd3Mgb250IMOpdMOpIHJlbm9tbcOpZXMgZW4KICAgICBuYXYt4oCmIGV0IGQnYXV0cmVzIG5vbi4gTGUgbW9kZSBub21pbmFsIGwnZW1wb3J0ZSBldCBsZXMgcm93cyBub24KICAgICByZW5vbW3DqWVzIGRpc3BhcmFpc3NlbnQgU0lMRU5DSUVVU0VNRU5UIGR1IG1lbnUuIE9uIGxlIHNpZ25hbGUuICovCiAgZnVuY3Rpb24gd2FybklmUGFydGlhbGx5TWlncmF0ZWQoc2Vlbil7CiAgICBpZighd2luZG93LmNvbnNvbGUgfHwgIWNvbnNvbGUud2Fybil7IHJldHVybjsgfQogICAgdmFyIHN0cmFnZ2xlcnMgPSBbXTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBMRUdBQ1lfS0VZUy5sZW5ndGg7IGkrKyl7CiAgICAgIHZhciBrID0gTEVHQUNZX0tFWVNbaV07CiAgICAgIGlmKHNlZW5ba10peyBjb250aW51ZTsgfSAvKiBkw6lqw6AgcHLDqXNlbnQgdmlhIHVuZSByb3cgbmF2LSAqLwogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChrKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbaWRePSInICsgayArICctIl0nKTsKICAgICAgaWYoZWwgJiYgaXNTZWN0aW9uQ2FuZGlkYXRlKGVsKSl7IHN0cmFnZ2xlcnMucHVzaChrICsgJyAoIycgKyBlbC5pZCArICcpJyk7IH0KICAgIH0KICAgIGlmKCFzdHJhZ2dsZXJzLmxlbmd0aCl7IHJldHVybjsgfQogICAgY29uc29sZS53YXJuKAogICAgICAnW25weC1zdWJuYXZdIE1pZ3JhdGlvbiBpbmNvbXBsZXRlIHN1ciBjZXR0ZSBwYWdlIDogJyArIHN0cmFnZ2xlcnMubGVuZ3RoICsKICAgICAgJyByb3cocykgcG9ydGVudCBlbmNvcmUgdW4gYW5jaWVuIFJvdyBJRCBldCBzb250IEFCU0VOVEVTIGR1IG1lbnUgLT4gJyArCiAgICAgIHN0cmFnZ2xlcnMuam9pbignLCAnKSArICdcbicgKwogICAgICAnTGVzIHJlbm9tbWVyIGF2ZWMgbGUgcHJlZml4ZSAiJyArIFBSRUZJWCArICciIChleC4gJyArIFBSRUZJWCArIExFR0FDWV9LRVlTWzBdICsgJykuJwogICAgKTsKICB9CgogIC8qIC0tLS0gTWVzc2FnZSBkZSBkaWFnbm9zdGljIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIEludmlzaWJsZSBwb3VyIGxlcyB2aXNpdGV1cnMsIGTDqWNpc2lmIHBvdXIgbGEgcGVyc29ubmUgcXVpIHJlcHJlbmQKICAgICBsZSBkb3NzaWVyIDogb24gZGl0IGNlIHF1aSBhIMOpdMOpIGNoZXJjaMOpIGV0IGNlIHF1aSBhIMOpdMOpIHRyb3V2w6kuICovCiAgZnVuY3Rpb24gd2Fybk5vdGhpbmdGb3VuZCgpewogICAgaWYoIXdpbmRvdy5jb25zb2xlIHx8ICFjb25zb2xlLndhcm4peyByZXR1cm47IH0KICAgIHZhciB3aXRoSWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaWRdJyk7CiAgICBjb25zb2xlLndhcm4oCiAgICAgICdbbnB4LXN1Ym5hdl0gQXVjdW5lIHNlY3Rpb24gdHJvdXbDqWUgOiBsYSBiYXJyZSByZXN0ZSBtYXNxdcOpZS5cbicgKwogICAgICAnLSBSZWNoZXJjaMOpIGVuIHByaW9yaXTDqSA6IGRlcyBSb3cgSUQgY29tbWVuw6dhbnQgcGFyICInICsgUFJFRklYICsgJyIgKGV4LiBuYXYtb3ZlcnZpZXcpLlxuJyArCiAgICAgICctIFB1aXMsIGVuIHJlcGxpLCBsZXMgY2xlcyBoZXJpdGVlcyA6ICcgKyBMRUdBQ1lfS0VZUy5qb2luKCcsICcpICsgJy5cbicgKwogICAgICAnLSBQYWdlIGxhbmc9IicgKyAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnbGFuZycpIHx8ICcoYWJzZW50KScpICsgJyIsICcgKwogICAgICB3aXRoSWQubGVuZ3RoICsgJyBlbGVtZW50KHMpIHBvcnRlbnQgdW4gaWQuXG4nICsKICAgICAgJy0gQ2F1c2UgbGEgcGx1cyBmcmVxdWVudGUgOiBsZXMgUm93IElEIGRlIENFVFRFIHBhZ2UgbmUgc29udCBwYXMgbm9tbWVzLiAnICsKICAgICAgJ1NvdXMgV1BNTCB1bmUgdHJhZHVjdGlvbiBlc3QgdW4gcG9zdCBkaXN0aW5jdCDigJQgcmVub21tZXIgbGVzIFJvdyBJRCBkZSBsYSBwYWdlICcgKwogICAgICAnc291cmNlIG5lIHJlbm9tbWUgcGFzIGNldXggZGUgbGEgdHJhZHVjdGlvbiA6IGlsIGZhdXQgbGVzIHNhaXNpciBzdXIgY2hhcXVlIGxhbmd1ZS5cbicgKwogICAgICAnLSBQb3VyIGxhIGxpc3RlIGRlcyBpZHMgcHJlc2VudHMsIHJlY2hhcmdlciBsYSBwYWdlIGF2ZWMgP25weGRlYnVnPTEnCiAgICApOwogICAgaWYoREVCVUcpewogICAgICB2YXIgaWRzID0gW107CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCB3aXRoSWQubGVuZ3RoOyBpKyspeyBpZHMucHVzaCh3aXRoSWRbaV0uaWQpOyB9CiAgICAgIGNvbnNvbGUud2FybignW25weC1zdWJuYXZdIGlkcyBwcmVzZW50cyBzdXIgbGEgcGFnZSA6JywgaWRzKTsKICAgIH0KICB9CgogIC8qIC0tLS0gSW5pdGlhbGlzYXRpb24gZCd1bmUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBSZW52b2llIHRydWUgc2kgbGEgYmFycmUgYSDDqXTDqSBjb25zdHJ1aXRlLCBmYWxzZSBzJ2lsIG4neSBhdmFpdAogICAgIGF1Y3VuZSBzZWN0aW9uIChsJ2luc3RhbmNlIHJlc3RlIGFsb3JzIMOpbGlnaWJsZSDDoCB1bmUgbm91dmVsbGUKICAgICB0ZW50YXRpdmUgOiBkYXRhLW5weC1yZWFkeSBuJ2VzdCBwb3PDqSBxdSdlbiBjYXMgZGUgc3VjY8OocykuICovCiAgZnVuY3Rpb24gaW5pdChuYXYpewogICAgdmFyIGlubmVyID0gbmF2LnF1ZXJ5U2VsZWN0b3IoJy5ucHgtc3VibmF2X19pbm5lcicpOwogICAgaWYoIWlubmVyKXsKICAgICAgbmF2LnNldEF0dHJpYnV0ZSgnZGF0YS1ucHgtcmVhZHknLCAnMScpOyAvKiBiYWxpc2FnZSBpbmF0dGVuZHUgOiBuZSBwYXMgYm91Y2xlciBkZXNzdXMgKi8KICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgdmFyIGxhbmcgID0gZGV0ZWN0TGFuZyhuYXYpOwogICAgdmFyIGRpY3QgID0gTEFCRUxTW2xhbmddIHx8IHt9OwogICAgdmFyIGZvdW5kID0gZGlzY292ZXIoZGljdCk7CiAgICB2YXIgZW50cmllcyA9IGZvdW5kLmVudHJpZXM7CgogICAgaWYoIWVudHJpZXMubGVuZ3RoKXsgcmV0dXJuIGZhbHNlOyB9CgogICAgbmF2LnNldEF0dHJpYnV0ZSgnZGF0YS1ucHgtcmVhZHknLCAnMScpOwogICAgbG9nKCdtb2RlID0nLCBmb3VuZC5tb2RlLCAnfCBsYW5nID0nLCBsYW5nLCAnfCBlbnRyZWVzID0nLCBlbnRyaWVzLm1hcChmdW5jdGlvbihlKXsKICAgICAgcmV0dXJuIGUua2V5ICsgJyAtPiAnICsgZS5sYWJlbCArICcgKCMnICsgZS5zZWN0aW9uLmlkICsgJyknOwogICAgfSkpOwoKICAgIGlubmVyLmlubmVySFRNTCA9ICcnOwogICAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uKGUpewogICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgICAgYS5ocmVmID0gJyMnICsgZS5zZWN0aW9uLmlkOwogICAgICBhLnRleHRDb250ZW50ID0gZS5sYWJlbDsKICAgICAgaW5uZXIuYXBwZW5kQ2hpbGQoYSk7CiAgICAgIGUubGluayA9IGE7CiAgICB9KTsKICAgIG5hdi5yZW1vdmVBdHRyaWJ1dGUoJ2hpZGRlbicpOwoKICAgIC8qIC0tLS0gdi42LjQgOiBsYSBiYXJyZSB0aWVudCBzdXIgdW5lIGxpZ25lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgZmxleC13cmFwOm5vd3JhcCBzdXBwcmltZSBsYSAyZSBsaWduZS4gT24gbWVzdXJlIGV0IG9uIHJldGllbnQgbGUKICAgICAgIFBSRU1JRVIgcGFsaWVyIHF1aSByZW50cmUuIExlIHBhbGllciAwIGVzdCBsZSByZW5kdSB2LjYuMiA6IHVuZQogICAgICAgYmFycmUgcXVpIHJlbnRyYWl0IGRlamEgbmUgYm91Z2UgcGFzIGQndW4gcGl4ZWwuIFNpIG1lbWUgbGUKICAgICAgIHBsYW5jaGVyIGRlYm9yZGUgKHRlbGVwaG9uZSksIGxhIGJhcnJlIGRlZmlsZSBob3Jpem9udGFsZW1lbnQuCiAgICAgICBUb3V0IGVzdCBlbnZlbG9wcGUgOiBlbiBjYXMgZCdlcnJldXIgb24gcmV2aWVudCBhdSBwYWxpZXIgMC4gKi8KICAgIHZhciBTVEVQUyA9IFsKICAgICAgeyBmczogJzExcHgnLCAgIGxzOiAnLjEyZW0nLCBweDogJzE0cHgnLCBnYXA6ICcxMHB4JyB9LCAvKiByZW5kdSB2LjYuMiAqLwogICAgICB7IGZzOiAnMTFweCcsICAgbHM6ICcuMDllbScsIHB4OiAnMTNweCcsIGdhcDogJzlweCcgIH0sCiAgICAgIHsgZnM6ICcxMC41cHgnLCBsczogJy4wN2VtJywgcHg6ICcxMnB4JywgZ2FwOiAnOHB4JyAgfSwKICAgICAgeyBmczogJzEwcHgnLCAgIGxzOiAnLjA2ZW0nLCBweDogJzExcHgnLCBnYXA6ICc3cHgnICB9LAogICAgICB7IGZzOiAnOS41cHgnLCAgbHM6ICcuMDVlbScsIHB4OiAnMTBweCcsIGdhcDogJzZweCcgIH0sCiAgICAgIHsgZnM6ICc5cHgnLCAgICBsczogJy4wNGVtJywgcHg6ICc5cHgnLCAgZ2FwOiAnNXB4JyAgfSAgLyogcGxhbmNoZXIgKi8KICAgIF07CiAgICBmdW5jdGlvbiBhcHBseVN0ZXAocyl7CiAgICAgIHZhciBzdCA9IGlubmVyLnN0eWxlOwogICAgICBzdC5zZXRQcm9wZXJ0eSgnLS1ucHgtZnMnLCAgcy5mcyk7CiAgICAgIHN0LnNldFByb3BlcnR5KCctLW5weC1scycsICBzLmxzKTsKICAgICAgc3Quc2V0UHJvcGVydHkoJy0tbnB4LXB4JywgIHMucHgpOwogICAgICBzdC5zZXRQcm9wZXJ0eSgnLS1ucHgtZ2FwJywgcy5nYXApOwogICAgfQogICAgZnVuY3Rpb24gb3ZlcmZsb3dpbmcoKXsgcmV0dXJuIGlubmVyLnNjcm9sbFdpZHRoID4gaW5uZXIuY2xpZW50V2lkdGggKyAxOyB9CgogICAgdmFyIGZpdHRpbmcgPSBmYWxzZSwgbGFzdFcgPSAtMTsKICAgIGZ1bmN0aW9uIGZpdCgpewogICAgICBpZihmaXR0aW5nKXsgcmV0dXJuOyB9CiAgICAgIGZpdHRpbmcgPSB0cnVlOwogICAgICB0cnl7CiAgICAgICAgLyogQmFycmUgbm9uIG1lc3VyYWJsZSAobWFzcXVlZSwgb25nbGV0IHJlcGxpZSkgOiBuZSByaWVuIGNvbmNsdXJlLiAqLwogICAgICAgIGlmKGlubmVyLmNsaWVudFdpZHRoID4gNDApewogICAgICAgICAgdmFyIGksIGNob3NlbiA9IFNURVBTLmxlbmd0aCAtIDE7CiAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBTVEVQUy5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgIGFwcGx5U3RlcChTVEVQU1tpXSk7CiAgICAgICAgICAgIGlmKCFvdmVyZmxvd2luZygpKXsgY2hvc2VuID0gaTsgYnJlYWs7IH0KICAgICAgICAgIH0KICAgICAgICAgIGlmKGNob3NlbiAhPT0gaSl7IGFwcGx5U3RlcChTVEVQU1tjaG9zZW5dKTsgfQogICAgICAgICAgbGFzdFcgPSBuYXYuY2xpZW50V2lkdGg7CiAgICAgICAgfQogICAgICB9Y2F0Y2goZXJyKXsKICAgICAgICBhcHBseVN0ZXAoU1RFUFNbMF0pOyAgLyogamFtYWlzIGRlIGJhcnJlIGNhc3NlZSAqLwogICAgICB9CiAgICAgIGZpdHRpbmcgPSBmYWxzZTsKICAgIH0KICAgIGZpdCgpOwoKICAgIC8qIExhIHBvbGljZSBkdSB0aGVtZSBhcnJpdmUgZW4gYXN5bmNocm9uZSA6IHJlbWVzdXJlciBhIHNvbiBhcnJpdmVlLiAqLwogICAgaWYoZG9jdW1lbnQuZm9udHMgJiYgZG9jdW1lbnQuZm9udHMucmVhZHkgJiYgZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbil7CiAgICAgIHRyeXsgZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbihmaXQsIGZpdCk7IH1jYXRjaChlcnIpe30KICAgIH0KICAgIHNldFRpbWVvdXQoZml0LCA2MDApOwogICAgc2V0VGltZW91dChmaXQsIDIwMDApOwoKICAgIC8qIExlIHBhc3NhZ2UgZW4gc3RpY2t5IGNoYW5nZSBsYSBsYXJnZXVyIHNhbnMgZXZlbmVtZW50IHJlc2l6ZS4gKi8KICAgIGlmKHdpbmRvdy5SZXNpemVPYnNlcnZlcil7CiAgICAgIHRyeXsKICAgICAgICBuZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24oKXsKICAgICAgICAgIGlmKG5hdi5jbGllbnRXaWR0aCAhPT0gbGFzdFcpeyBmaXQoKTsgfQogICAgICAgIH0pLm9ic2VydmUobmF2KTsKICAgICAgfWNhdGNoKGVycil7fQogICAgfQoKICAgIC8qIEVuIG1vZGUgZGVmaWxlbWVudCwgZ2FyZGVyIGxhIHBhc3RpbGxlIGFjdGl2ZSB2aXNpYmxlLiAqLwogICAgZnVuY3Rpb24gcmV2ZWFsKGxpbmspewogICAgICBpZighbGluayB8fCAhb3ZlcmZsb3dpbmcoKSl7IHJldHVybjsgfQogICAgICB2YXIgbCA9IGxpbmsub2Zmc2V0TGVmdCwgciA9IGwgKyBsaW5rLm9mZnNldFdpZHRoOwogICAgICB2YXIgdnMgPSBpbm5lci5zY3JvbGxMZWZ0LCB2ZSA9IHZzICsgaW5uZXIuY2xpZW50V2lkdGg7CiAgICAgIGlmKGwgPCB2cyl7IGlubmVyLnNjcm9sbExlZnQgPSBNYXRoLm1heCgwLCBsIC0gMTIpOyB9CiAgICAgIGVsc2UgaWYociA+IHZlKXsgaW5uZXIuc2Nyb2xsTGVmdCA9IHIgLSBpbm5lci5jbGllbnRXaWR0aCArIDEyOyB9CiAgICB9CgogICAgZnVuY3Rpb24gdG9wT2Zmc2V0KCl7CiAgICAgIHZhciB2ID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0tbnB4LXRvcCcpOwogICAgICByZXR1cm4gcGFyc2VJbnQodiwgMTApIHx8IDA7CiAgICB9CiAgICAvKiBEw6lmaWxlbWVudCBhdmVjIGNvbXBlbnNhdGlvbiBkZXMgZGV1eCBtZW51cy4gKi8KICAgIGZ1bmN0aW9uIHRvdGFsT2Zmc2V0KCl7IHJldHVybiB0b3BPZmZzZXQoKSArIG5hdi5vZmZzZXRIZWlnaHQgKyA4OyB9CgogICAgLyogLS0tLSBDb2xsYWdlIDogZml4ZWQgKyBwbGFjZWhvbGRlciBhbnRpLXNhdXQgKG1vZGUgJ2pzJykgLS0tLSAqLwogICAgdmFyIHBoID0gbnVsbDsKICAgIGlmKFNUSUNLX01PREUgPT09ICdqcycpewogICAgICBwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICBwaC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICBuYXYucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocGgsIG5hdik7CiAgICB9CiAgICBmdW5jdGlvbiBzdGljaygpewogICAgICBpZighcGgpeyByZXR1cm47IH0KICAgICAgdmFyIGFuY2hvciA9IChwaC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScpID8gbmF2IDogcGg7CiAgICAgIHZhciBzaG91bGQgPSBhbmNob3IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIDw9IHRvcE9mZnNldCgpOwogICAgICBpZihzaG91bGQgJiYgIW5hdi5jbGFzc0xpc3QuY29udGFpbnMoJ25weC1zdHVjaycpKXsKICAgICAgICBwaC5zdHlsZS5oZWlnaHQgID0gbmF2Lm9mZnNldEhlaWdodCArICdweCc7CiAgICAgICAgcGguc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgbmF2LmNsYXNzTGlzdC5hZGQoJ25weC1zdHVjaycpOwogICAgICB9ZWxzZSBpZighc2hvdWxkICYmIG5hdi5jbGFzc0xpc3QuY29udGFpbnMoJ25weC1zdHVjaycpKXsKICAgICAgICBuYXYuY2xhc3NMaXN0LnJlbW92ZSgnbnB4LXN0dWNrJyk7CiAgICAgICAgcGguc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgfQogICAgfQoKICAgIC8qIC0tLS0gU2VjdGlvbiBhY3RpdmUgLS0tLSAqLwogICAgdmFyIGxhc3RDdXJyZW50ID0gbnVsbDsKICAgIGZ1bmN0aW9uIGhpZ2hsaWdodCgpewogICAgICB2YXIgbGltaXQgPSB0b3RhbE9mZnNldCgpICsgNDsKICAgICAgdmFyIGN1cnJlbnQgPSBudWxsOwogICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZSl7CiAgICAgICAgaWYoZS5zZWN0aW9uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCA8PSBsaW1pdCl7IGN1cnJlbnQgPSBlOyB9CiAgICAgIH0pOwogICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZSl7CiAgICAgICAgZS5saW5rLmNsYXNzTGlzdC50b2dnbGUoJ25weC1hY3RpdmUnLCBlID09PSBjdXJyZW50KTsKICAgICAgfSk7CiAgICAgIGlmKGN1cnJlbnQgIT09IGxhc3RDdXJyZW50KXsKICAgICAgICBsYXN0Q3VycmVudCA9IGN1cnJlbnQ7CiAgICAgICAgaWYoY3VycmVudCl7IHJldmVhbChjdXJyZW50LmxpbmspOyB9CiAgICAgIH0KICAgIH0KCiAgICAvKiAtLS0tIENsaWMgc3VyIHVuZSBlbnRyw6llIC0tLS0gKi8KICAgIHZhciBzbW9vdGggPSAhd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlczsKICAgIGVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlKXsKICAgICAgZS5saW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgdmFyIHkgPSBlLnNlY3Rpb24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0IC0gdG90YWxPZmZzZXQoKTsKICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IHksIGJlaGF2aW9yOiBzbW9vdGggPyAnc21vb3RoJyA6ICdhdXRvJyB9KTsKICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgJyMnICsgZS5zZWN0aW9uLmlkKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBmdW5jdGlvbiBvblNjcm9sbCgpeyBzdGljaygpOyBoaWdobGlnaHQoKTsgfQogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSk7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZnVuY3Rpb24oKXsgZml0KCk7IG9uU2Nyb2xsKCk7IH0pOwogICAgb25TY3JvbGwoKTsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLyogLS0tLSBBbW9yw6dhZ2UgOiB0b3V0ZXMgbGVzIGluc3RhbmNlcywgYXZlYyBxdWVscXVlcyByZWxhbmNlcyAtLS0tLS0KICAgICBMZXMgcm93cyBVbmNvZGUgcGV1dmVudCDDqnRyZSBpbmplY3TDqWVzIGFwcsOocyBsZSBET01Db250ZW50TG9hZGVkCiAgICAgKGxhenkgLyBBSkFYKSA6IG9uIHJldGVudGUgcGVuZGFudCB+Miw1IHMgYXZhbnQgZGUgY29uY2x1cmUuICovCiAgZnVuY3Rpb24gYm9vdCgpewogICAgdmFyIG5hdnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubnB4LXN1Ym5hdjpub3QoW2RhdGEtbnB4LXJlYWR5XSknKTsKICAgIHZhciBwZW5kaW5nID0gMDsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBuYXZzLmxlbmd0aDsgaSsrKXsKICAgICAgaWYoIWluaXQobmF2c1tpXSkpeyBwZW5kaW5nKys7IH0KICAgIH0KICAgIHJldHVybiBwZW5kaW5nOwogIH0KCiAgZnVuY3Rpb24gcnVuKCl7CiAgICBpZihib290KCkgPT09IDApeyByZXR1cm47IH0KICAgIHZhciB0cmllcyA9IDA7CiAgICB2YXIgdGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICB0cmllcysrOwogICAgICB2YXIgbGFzdCA9IHRyaWVzID49IDY7IC8qIDYgeCA0MDAgbXMgKi8KICAgICAgaWYoYm9vdCgpID09PSAwIHx8IGxhc3QpewogICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpOwogICAgICAgIGlmKGxhc3QgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm5weC1zdWJuYXY6bm90KFtkYXRhLW5weC1yZWFkeV0pJykpewogICAgICAgICAgd2Fybk5vdGhpbmdGb3VuZCgpOwogICAgICAgIH0KICAgICAgfQogICAgfSwgNDAwKTsKICB9CgogIGlmKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJyl7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgcnVuKTsKICB9ZWxzZXsKICAgIHJ1bigpOwogIH0KfSkoKTsKPC9zY3JpcHQ+[\/vc_raw_html][\/vc_column][\/vc_row][vc_row unlock_row_content=\u00a0\u00bbyes\u00a0\u00bb row_height_percent=\u00a0\u00bb0&Prime; override_padding=\u00a0\u00bbyes\u00a0\u00bb h_padding=\u00a0\u00bb5&Prime; top_padding=\u00a0\u00bb5&Prime; bottom_padding=\u00a0\u00bb5&Prime; [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"iawp_total_views":5,"footnotes":"","_members_access_role":[],"_members_access_error":""},"class_list":["post-3567","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Projets \u2013 Appel \u00e0 projets 2025 - NumPEx<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/numpex.org\/fr\/projets-appel-a-projets-2025\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Projets \u2013 Appel \u00e0 projets 2025 - NumPEx\" \/>\n<meta property=\"og:description\" content=\"[vc_row row_height_percent=\u00a0\u00bb0&Prime; overlay_alpha=\u00a0\u00bb50&Prime; gutter_size=\u00a0\u00bb3&Prime; column_width_percent=\u00a0\u00bb100&Prime; shift_y=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; sticky=\u00a0\u00bbyes\u00a0\u00bb content_parallax=\u00a0\u00bb0&Prime; uncode_shortcode_id=\u00a0\u00bb716742&Prime; css=\u00a0\u00bb.vc_custom_1785869798726{margin-top: 1% !important;}\u00a0\u00bb][vc_column width=\u00a0\u00bb1\/1&Prime;][vc_raw_html]PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBOdW1QRXgg4oCUIE1lbnUgZGUgc2VjdGlvbnMgc3RpY2t5IOKAlCB2LjYuNAogIE5hb3MgQWdlbmN5IMK3IDIwMjYtMDktMTAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKPHN0eWxlPgogIDpyb290eyAtLW5weC10b3A6IDYwcHg7IH0gLyogaGF1dGV1ciBkdSBoZWFkZXIgVW5jb2RlIHN0aWNreSAqLwogIC5ucHgtc3VibmF2ewogICAgYmFja2dyb3VuZDogI0UwOTkwMDsgLyogb3JhbmdlIGQnYWNjZW50dWF0aW9uIE51bVBFeCAqLwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwwLDAsLjA4KTsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICB3aWR0aDogMTAwJTsKICAgIHotaW5kZXg6IDQwOwogIH0KICAubnB4LXN1Ym5hdltoaWRkZW5deyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KICAubnB4LXN1Ym5hdi5ucHgtc3R1Y2t7IGJvcmRlci1yYWRpdXM6IDAgMCAxMnB4IDEycHg7IH0KICAubnB4LXN1Ym5hdi5ucHgtc3R1Y2t7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IHZhcigtLW5weC10b3ApOwogICAgbGVmdDogMDsgcmlnaHQ6IDA7CiAgfQogIC5ucHgtc3VibmF2X19pbm5lcnsKICAgIC8qIHYuNi40IDogbWV0cmlxdWVzIHBpbG90ZWVzIHBhciB2YXJpYWJsZXMuIExlcyB2YWxldXJzIGRlIHJlcGxpCiAgICAgICBTT05UIGNlbGxlcyBkZSBsYSB2LjYuMiA6IHNhbnMgSlMsIHJlbmR1IGlkZW50aXF1ZS4gKi8KICAgIG1heC13aWR0aDogMTE0MHB4OwogICAgbWFyZ2luOiAwIGF1dG87CiAgICBwYWRkaW5nOiAwIDI0cHg7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiBub3dyYXA7CiAgICBnYXA6IDAgdmFyKC0tbnB4LWdhcCwgMTBweCk7CiAgICBtaW4taGVpZ2h0OiA0NnB4OwogICAgcGFkZGluZy10b3A6IDZweDsKICAgIHBhZGRpbmctYm90dG9tOiA2cHg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZm9udC1zaXplOiB2YXIoLS1ucHgtZnMsIDExcHgpOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1ucHgtbHMsIC4xMmVtKTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgb3ZlcmZsb3cteTogaGlkZGVuOwogICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lOwogICAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lOwogICAgLyogZm9udC1mYW1pbHk6ICdQb3BwaW5zJywgc3lzdGVtLXVpLCBzYW5zLXNlcmlmOyAqLwogIH0KICAubnB4LXN1Ym5hdl9faW5uZXI6Oi13ZWJraXQtc2Nyb2xsYmFyeyBkaXNwbGF5OiBub25lOyB9CiAgLyogU3DDqWNpZmljaXTDqSByZW5mb3Jjw6llICsgIWltcG9ydGFudCA6IG5ldXRyYWxpc2UgbGVzIGNvdWxldXJzIGRlIGxpZW5zIGR1IHRow6htZSBVbmNvZGUgKG9yYW5nZSBhdSBzdXJ2b2wvY2xpYykgKi8KICBuYXYubnB4LXN1Ym5hdiAubnB4LXN1Ym5hdl9faW5uZXIgYSwKICBuYXYubnB4LXN1Ym5hdiAubnB4LXN1Ym5hdl9faW5uZXIgYTp2aXNpdGVkewogICAgY29sb3I6IHJnYmEoMjU1LDI1MCwyNDMsLjg4KSAhaW1wb3J0YW50OyAvKiBibGFuYyBjYXNzw6kgKi8KICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgcGFkZGluZzogOHB4IHZhcigtLW5weC1weCwgMTRweCk7CiAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgIHRyYW5zaXRpb246IGNvbG9yIC4xOHMsIGJhY2tncm91bmQtY29sb3IgLjE4czsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7ICAvKiB2LjYuNCA6IHVuIGxpYmVsbGUgbmUgc2UgY291cGUgamFtYWlzICovCiAgICBmbGV4OiAwIDAgYXV0bzsgICAgICAgLyogdi42LjQgOiBsZXMgcGFzdGlsbGVzIG5lIHNlIGNvbXByaW1lbnQgcGFzICovCiAgfQogIG5hdi5ucHgtc3VibmF2IC5ucHgtc3VibmF2X19pbm5lciBhOmhvdmVyLAogIG5hdi5ucHgtc3VibmF2IC5ucHgtc3VibmF2X19pbm5lciBhOmZvY3VzLAogIG5hdi5ucHgtc3VibmF2IC5ucHgtc3VibmF2X19pbm5lciBhOmFjdGl2ZXsKICAgIGNvbG9yOiAjRkZGRkZGICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC4xMik7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDsKICB9CiAgbmF2Lm5weC1zdWJuYXYgLm5weC1zdWJuYXZfX2lubmVyIGEubnB4LWFjdGl2ZSwKICBuYXYubnB4LXN1Ym5hdiAubnB4LXN1Ym5hdl9faW5uZXIgYS5ucHgtYWN0aXZlOmhvdmVyewogICAgY29sb3I6ICNGRkZGRkYgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICNBODZGMDA7IC8qIG9yYW5nZSBmb25jw6ksIGFwbGF0IHNpbXBsZSAqLwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICB9Cjwvc3R5bGU+Cgo8bmF2IGNsYXNzPSJucHgtc3VibmF2IiBhcmlhLWxhYmVsPSJQYWdlIHNlY3Rpb25zIiBoaWRkZW4+CiAgPGRpdiBjbGFzcz0ibnB4LXN1Ym5hdl9faW5uZXIiPjwvZGl2Pgo8L25hdj4KCjxzY3JpcHQ+CihmdW5jdGlvbigpewogICd1c2Ugc3RyaWN0JzsKCiAgLyogPT09PT09PT09PT09PT09PT09PT0gQ09ORklHIFNJVEUgPT09PT09PT09PT09PT09PT09PT0KICAgICBTZXVsZSB6b25lIMOgIGFkYXB0ZXIgcG91ciByw6l1dGlsaXNlciBsZSBibG9jIGFpbGxldXJzLiAqLwogIHZhciBQUkVGSVggPSAnbmF2LSc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHByw6lmaXhlIGRlcyBSb3cgSUQgw6AgZMOpdGVjdGVyICovCiAgdmFyIFNUUklQICA9IFsvLShlbnxmcikkL2ksIC8tZXhhLVthLXowLTldKyQvaV07ICAgLyogc3VmZml4ZXMgZCd1bmljaXTDqSDDoCBpZ25vcmVyICAqLwoKICAvKiBSZXBsaSBwb3VyIGxlcyBwYWdlcyBQQVMgRU5DT1JFIE1JR1LDiUVTIHZlcnMgbGUgcHLDqWZpeGUgbmF2LQogICAgICh0eXBpcXVlbWVudCBsZXMgdHJhZHVjdGlvbnMgV1BNTCBkb250IGxlcyBSb3cgSUQgbidvbnQgcGFzIMOpdMOpCiAgICAgcmVub21tw6lzKS4gVXRpbGlzw6kgVU5JUVVFTUVOVCBzaSBsYSBwYWdlIG5lIGNvbnRpZW50IGF1Y3VuZSByb3cKICAgICDCqyBuYXYtIMK7LiBSZXByZW5kIGxlcyBjbMOpcyBkZSBsYSB2LjUgOiB1bmUgcm93IG5vbW3DqWUKICAgICDCqyBjb25zb3J0aXVtLWV4YS1tYS1lbiDCuyBvdSBzaW1wbGVtZW50IMKrIGNvbnNvcnRpdW0gwrsgZXN0CiAgICAgcmV0cm91dsOpZS4gTGlzdGUgZmVybcOpZSA9IGF1Y3VuIHJpc3F1ZSBkZSBmYXV4IHBvc2l0aWYuICovCiAgdmFyIExFR0FDWV9LRVlTID0gWwogICAgJ292ZXJ2aWV3JywgJ2NvbnNvcnRpdW0nLCAncmVzdWx0cycsICdtZXRyaWNzJywgJ3NvZnR3YXJlJywKICAgICduZXdzJywgJ2V2ZW50cycsICdhZ2VuZGEnLCAndGVhbScsICdjb250YWN0JwogIF07CgogIHZhciBMQUJFTFMgPSB7CiAgICAvKiBMaWJlbGzDqXMgcHLDqWbDqXLDqXMgcGFyIGNsw6kuIFRvdXRlIGNsw6kgYWJzZW50ZSBlc3QgYWZmaWNow6llCiAgICAgICBjYXBpdGFsaXPDqWUgdGVsbGUgcXVlbGxlIChuYXYtam9pbi11cyAtPiDCqyBKb2luIFVzIMK7KS4gKi8KICAgIGVuOiB7CiAgICAgICdjb25zb3J0aXVtJzogJ0NvbnNvcnRpdW0gJiBXb3JrcGFja2FnZXMnLAogICAgICAncmVzdWx0cyc6ICAgICdSZXN1bHRzICYgSW1wYWN0JywKICAgICAgJ21ldHJpY3MnOiAgICAnUHJvamVjdCBNZXRyaWNzJywKICAgICAgJ3RlYW0nOiAgICAgICAnVGhlIFRlYW0nCiAgICB9LAogICAgZnI6IHsKICAgICAgJ292ZXJ2aWV3JzogICAnUHLDqXNlbnRhdGlvbicsCiAgICAgICdjb25zb3J0aXVtJzogJ0NvbnNvcnRpdW0gZXQgbG90cyBkZSB0cmF2YWlsJywKICAgICAgJ3Jlc3VsdHMnOiAgICAnUsOpc3VsdGF0cyBldCBpbXBhY3QnLAogICAgICAnbWV0cmljcyc6ICAgICdDaGlmZnJlcyBjbMOpcycsCiAgICAgICdzb2Z0d2FyZSc6ICAgJ0xvZ2ljaWVscycsCiAgICAgICduZXdzJzogICAgICAgJ0FjdHVhbGl0w6lzJywKICAgICAgJ2V2ZW50cyc6ICAgICAnw4l2w6huZW1lbnRzJywKICAgICAgJ3RlYW0nOiAgICAgICAnTOKAmcOpcXVpcGUnCiAgICB9CiAgfTsKICB2YXIgU1RJQ0tfTU9ERSA9ICd1bmNvZGUnOyAvKiAndW5jb2RlJyA9IGxhIHJvdyBnw6hyZSBsZSBzdGlja3kgwrcgJ2pzJyA9IGxlIHNjcmlwdCBjb2xsZSBsdWktbcOqbWUgKi8KICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKICB2YXIgREVCVUcgPSAvWz8mXW5weGRlYnVnPTEvLnRlc3Qod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7CiAgZnVuY3Rpb24gbG9nKCl7CiAgICBpZighREVCVUcgfHwgIXdpbmRvdy5jb25zb2xlIHx8ICFjb25zb2xlLmxvZykgcmV0dXJuOwogICAgY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgWydbbnB4LXN1Ym5hdl0nXS5jb25jYXQoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKSk7CiAgfQoKICAvKiAtLS0tIExhbmd1ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgPGh0bWwgbGFuZz4gcG9zw6kgcGFyIFdQTUwuIFJlcGxpcyBzdWNjZXNzaWZzIHNpIGwnYXR0cmlidXQgbWFucXVlIDoKICAgICB1biBhbmPDqnRyZSBwb3J0ZXVyIGRlIGxhbmcsIHB1aXMgbGVzIGNsYXNzZXMgZHUgYm9keS4gKi8KICBmdW5jdGlvbiBkZXRlY3RMYW5nKGVsKXsKICAgIHZhciB0YWcgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJykgfHwgJyc7CiAgICBpZighdGFnICYmIGVsICYmIGVsLmNsb3Nlc3QpewogICAgICB2YXIgaG9zdCA9IGVsLmNsb3Nlc3QoJ1tsYW5nXScpOwogICAgICBpZihob3N0KXsgdGFnID0gaG9zdC5nZXRBdHRyaWJ1dGUoJ2xhbmcnKSB8fCAnJzsgfQogICAgfQogICAgaWYoIXRhZyl7CiAgICAgIHZhciBjbHMgPSAoZG9jdW1lbnQuYm9keSAmJiBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSkgfHwgJyc7CiAgICAgIGlmKC8oPzpsYW5nfGxhbmd1YWdlKS1mclxifGZyW18tXUZSL2kudGVzdChjbHMpKXsgdGFnID0gJ2ZyJzsgfQogICAgfQogICAgcmV0dXJuIC9eZnIvaS50ZXN0KHRhZykgPyAnZnInIDogJ2VuJzsKICB9CgogIGZ1bmN0aW9uIGtleU9mKGlkKXsKICAgIHZhciBrID0gaWQuc2xpY2UoUFJFRklYLmxlbmd0aCkudG9Mb3dlckNhc2UoKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBTVFJJUC5sZW5ndGg7IGkrKyl7IGsgPSBrLnJlcGxhY2UoU1RSSVBbaV0sICcnKTsgfQogICAgcmV0dXJuIGs7CiAgfQogIGZ1bmN0aW9uIHRpdGxlQ2FzZShrZXkpewogICAgcmV0dXJuIGtleS5zcGxpdCgnLScpLm1hcChmdW5jdGlvbih3KXsKICAgICAgcmV0dXJuIHcgPyB3LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdy5zbGljZSgxKSA6IHc7CiAgICB9KS5qb2luKCcgJyk7CiAgfQoKICAvKiBEb3VibGUgc8OpY3VyaXTDqSA6IMOpY2FydGUgbGVzIG1lbnVzIGfDqW7DqXLDqXMgcGFyIFdvcmRQcmVzcyBldCB0b3V0IGNlCiAgICAgcXVpIHZpdCBkYW5zIGxhIG5hdmlnYXRpb24gb3UgbGUgaGVhZGVyIOKAlCBpbmNoYW5nw6kgZGVwdWlzIGxhIHYuNi4xLiAqLwogIGZ1bmN0aW9uIGlzU2VjdGlvbkNhbmRpZGF0ZShlbCl7CiAgICB2YXIgdGFnID0gZWwudGFnTmFtZTsKICAgIGlmKHRhZyA9PT0gJ1VMJyB8fCB0YWcgPT09ICdMSScgfHwgdGFnID09PSAnQScgfHwgdGFnID09PSAnTkFWJyl7IHJldHVybiBmYWxzZTsgfQogICAgaWYoZWwuY2xvc2VzdCAmJiBlbC5jbG9zZXN0KCduYXYsIGhlYWRlciwgLm5weC1zdWJuYXYnKSl7IHJldHVybiBmYWxzZTsgfQogICAgcmV0dXJuIHRydWU7CiAgfQoKICBmdW5jdGlvbiBpbkRvY3VtZW50T3JkZXIoYSwgYil7CiAgICB2YXIgcG9zID0gYS5zZWN0aW9uLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIuc2VjdGlvbik7CiAgICByZXR1cm4gKHBvcyAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKSA\/IC0xIDogMTsKICB9CgogIC8qIC0tLS0gRMOpY291dmVydGUgZGVzIHNlY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgMSkgTW9kZSBub21pbmFsIDogdG91dGVzIGxlcyByb3dzIGRvbnQgbCdpZCBjb21tZW5jZSBwYXIgwqsgbmF2LSDCuy4KICAgICAyKSBSZXBsaSA6IHNpIGV0IHNldWxlbWVudCBzaSBsZSBtb2RlIDEgbmUgZG9ubmUgUklFTiwgb24gY2hlcmNoZQogICAgICAgIGxlcyBjbMOpcyBow6lyaXTDqWVzIGRlIGxhIHYuNSwgYXZlYyBvdSBzYW5zIHN1ZmZpeGUuCiAgICAgUmVudm9pZSB7IGVudHJpZXM6IFsuLi5dLCBtb2RlOiAncHJlZml4JyB8ICdsZWdhY3knIHwgJ25vbmUnIH0uICovCiAgZnVuY3Rpb24gZGlzY292ZXIoZGljdCl7CiAgICB2YXIgc2VlbiA9IE9iamVjdC5jcmVhdGUobnVsbCksIGVudHJpZXMgPSBbXTsKCiAgICBmdW5jdGlvbiBwdXNoKGVsLCBrZXkpewogICAgICBpZighZWwgfHwgIWtleSB8fCBzZWVuW2tleV0peyByZXR1cm47IH0KICAgICAgc2VlbltrZXldID0gdHJ1ZTsKICAgICAgZW50cmllcy5wdXNoKHsgc2VjdGlvbjogZWwsIGtleToga2V5LCBsYWJlbDogZGljdFtrZXldIHx8IHRpdGxlQ2FzZShrZXkpIH0pOwogICAgfQoKICAgIHZhciBmb3VuZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZF49IicgKyBQUkVGSVggKyAnIl0nKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBmb3VuZC5sZW5ndGg7IGkrKyl7CiAgICAgIGlmKCFpc1NlY3Rpb25DYW5kaWRhdGUoZm91bmRbaV0pKXsgY29udGludWU7IH0KICAgICAgcHVzaChmb3VuZFtpXSwga2V5T2YoZm91bmRbaV0uaWQpKTsKICAgIH0KICAgIGlmKGVudHJpZXMubGVuZ3RoKXsKICAgICAgd2FybklmUGFydGlhbGx5TWlncmF0ZWQoc2Vlbik7CiAgICAgIHJldHVybiB7IGVudHJpZXM6IGVudHJpZXMsIG1vZGU6ICdwcmVmaXgnIH07CiAgICB9CgogICAgZm9yKHZhciBqID0gMDsgaiA8IExFR0FDWV9LRVlTLmxlbmd0aDsgaisrKXsKICAgICAgdmFyIGsgID0gTEVHQUNZX0tFWVNbal07CiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGspIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tpZF49IicgKyBrICsgJy0iXScpOwogICAgICBpZihlbCAmJiBpc1NlY3Rpb25DYW5kaWRhdGUoZWwpKXsgcHVzaChlbCwgayk7IH0KICAgIH0KICAgIGlmKGVudHJpZXMubGVuZ3RoKXsKICAgICAgZW50cmllcy5zb3J0KGluRG9jdW1lbnRPcmRlcik7IC8qIGxhIGxpc3RlIGRlcyBjbMOpcyBuZSBzdWl0IHBhcyBsJ29yZHJlIGRlIGxhIHBhZ2UgKi8KICAgICAgcmV0dXJuIHsgZW50cmllczogZW50cmllcywgbW9kZTogJ2xlZ2FjeScgfTsKICAgIH0KCiAgICByZXR1cm4geyBlbnRyaWVzOiBlbnRyaWVzLCBtb2RlOiAnbm9uZScgfTsKICB9CgogIC8qIC0tLS0gTWlncmF0aW9uIHBhcnRpZWxsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIENhcyBwacOoZ2UgOiBzdXIgdW5lIG3Dqm1lIHBhZ2UgY2VydGFpbmVzIHJvd3Mgb250IMOpdMOpIHJlbm9tbcOpZXMgZW4KICAgICBuYXYt4oCmIGV0IGQnYXV0cmVzIG5vbi4gTGUgbW9kZSBub21pbmFsIGwnZW1wb3J0ZSBldCBsZXMgcm93cyBub24KICAgICByZW5vbW3DqWVzIGRpc3BhcmFpc3NlbnQgU0lMRU5DSUVVU0VNRU5UIGR1IG1lbnUuIE9uIGxlIHNpZ25hbGUuICovCiAgZnVuY3Rpb24gd2FybklmUGFydGlhbGx5TWlncmF0ZWQoc2Vlbil7CiAgICBpZighd2luZG93LmNvbnNvbGUgfHwgIWNvbnNvbGUud2Fybil7IHJldHVybjsgfQogICAgdmFyIHN0cmFnZ2xlcnMgPSBbXTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBMRUdBQ1lfS0VZUy5sZW5ndGg7IGkrKyl7CiAgICAgIHZhciBrID0gTEVHQUNZX0tFWVNbaV07CiAgICAgIGlmKHNlZW5ba10peyBjb250aW51ZTsgfSAvKiBkw6lqw6AgcHLDqXNlbnQgdmlhIHVuZSByb3cgbmF2LSAqLwogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChrKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbaWRePSInICsgayArICctIl0nKTsKICAgICAgaWYoZWwgJiYgaXNTZWN0aW9uQ2FuZGlkYXRlKGVsKSl7IHN0cmFnZ2xlcnMucHVzaChrICsgJyAoIycgKyBlbC5pZCArICcpJyk7IH0KICAgIH0KICAgIGlmKCFzdHJhZ2dsZXJzLmxlbmd0aCl7IHJldHVybjsgfQogICAgY29uc29sZS53YXJuKAogICAgICAnW25weC1zdWJuYXZdIE1pZ3JhdGlvbiBpbmNvbXBsZXRlIHN1ciBjZXR0ZSBwYWdlIDogJyArIHN0cmFnZ2xlcnMubGVuZ3RoICsKICAgICAgJyByb3cocykgcG9ydGVudCBlbmNvcmUgdW4gYW5jaWVuIFJvdyBJRCBldCBzb250IEFCU0VOVEVTIGR1IG1lbnUgLT4gJyArCiAgICAgIHN0cmFnZ2xlcnMuam9pbignLCAnKSArICdcbicgKwogICAgICAnTGVzIHJlbm9tbWVyIGF2ZWMgbGUgcHJlZml4ZSAiJyArIFBSRUZJWCArICciIChleC4gJyArIFBSRUZJWCArIExFR0FDWV9LRVlTWzBdICsgJykuJwogICAgKTsKICB9CgogIC8qIC0tLS0gTWVzc2FnZSBkZSBkaWFnbm9zdGljIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIEludmlzaWJsZSBwb3VyIGxlcyB2aXNpdGV1cnMsIGTDqWNpc2lmIHBvdXIgbGEgcGVyc29ubmUgcXVpIHJlcHJlbmQKICAgICBsZSBkb3NzaWVyIDogb24gZGl0IGNlIHF1aSBhIMOpdMOpIGNoZXJjaMOpIGV0IGNlIHF1aSBhIMOpdMOpIHRyb3V2w6kuICovCiAgZnVuY3Rpb24gd2Fybk5vdGhpbmdGb3VuZCgpewogICAgaWYoIXdpbmRvdy5jb25zb2xlIHx8ICFjb25zb2xlLndhcm4peyByZXR1cm47IH0KICAgIHZhciB3aXRoSWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaWRdJyk7CiAgICBjb25zb2xlLndhcm4oCiAgICAgICdbbnB4LXN1Ym5hdl0gQXVjdW5lIHNlY3Rpb24gdHJvdXbDqWUgOiBsYSBiYXJyZSByZXN0ZSBtYXNxdcOpZS5cbicgKwogICAgICAnLSBSZWNoZXJjaMOpIGVuIHByaW9yaXTDqSA6IGRlcyBSb3cgSUQgY29tbWVuw6dhbnQgcGFyICInICsgUFJFRklYICsgJyIgKGV4LiBuYXYtb3ZlcnZpZXcpLlxuJyArCiAgICAgICctIFB1aXMsIGVuIHJlcGxpLCBsZXMgY2xlcyBoZXJpdGVlcyA6ICcgKyBMRUdBQ1lfS0VZUy5qb2luKCcsICcpICsgJy5cbicgKwogICAgICAnLSBQYWdlIGxhbmc9IicgKyAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnbGFuZycpIHx8ICcoYWJzZW50KScpICsgJyIsICcgKwogICAgICB3aXRoSWQubGVuZ3RoICsgJyBlbGVtZW50KHMpIHBvcnRlbnQgdW4gaWQuXG4nICsKICAgICAgJy0gQ2F1c2UgbGEgcGx1cyBmcmVxdWVudGUgOiBsZXMgUm93IElEIGRlIENFVFRFIHBhZ2UgbmUgc29udCBwYXMgbm9tbWVzLiAnICsKICAgICAgJ1NvdXMgV1BNTCB1bmUgdHJhZHVjdGlvbiBlc3QgdW4gcG9zdCBkaXN0aW5jdCDigJQgcmVub21tZXIgbGVzIFJvdyBJRCBkZSBsYSBwYWdlICcgKwogICAgICAnc291cmNlIG5lIHJlbm9tbWUgcGFzIGNldXggZGUgbGEgdHJhZHVjdGlvbiA6IGlsIGZhdXQgbGVzIHNhaXNpciBzdXIgY2hhcXVlIGxhbmd1ZS5cbicgKwogICAgICAnLSBQb3VyIGxhIGxpc3RlIGRlcyBpZHMgcHJlc2VudHMsIHJlY2hhcmdlciBsYSBwYWdlIGF2ZWMgP25weGRlYnVnPTEnCiAgICApOwogICAgaWYoREVCVUcpewogICAgICB2YXIgaWRzID0gW107CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCB3aXRoSWQubGVuZ3RoOyBpKyspeyBpZHMucHVzaCh3aXRoSWRbaV0uaWQpOyB9CiAgICAgIGNvbnNvbGUud2FybignW25weC1zdWJuYXZdIGlkcyBwcmVzZW50cyBzdXIgbGEgcGFnZSA6JywgaWRzKTsKICAgIH0KICB9CgogIC8qIC0tLS0gSW5pdGlhbGlzYXRpb24gZCd1bmUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBSZW52b2llIHRydWUgc2kgbGEgYmFycmUgYSDDqXTDqSBjb25zdHJ1aXRlLCBmYWxzZSBzJ2lsIG4neSBhdmFpdAogICAgIGF1Y3VuZSBzZWN0aW9uIChsJ2luc3RhbmNlIHJlc3RlIGFsb3JzIMOpbGlnaWJsZSDDoCB1bmUgbm91dmVsbGUKICAgICB0ZW50YXRpdmUgOiBkYXRhLW5weC1yZWFkeSBuJ2VzdCBwb3PDqSBxdSdlbiBjYXMgZGUgc3VjY8OocykuICovCiAgZnVuY3Rpb24gaW5pdChuYXYpewogICAgdmFyIGlubmVyID0gbmF2LnF1ZXJ5U2VsZWN0b3IoJy5ucHgtc3VibmF2X19pbm5lcicpOwogICAgaWYoIWlubmVyKXsKICAgICAgbmF2LnNldEF0dHJpYnV0ZSgnZGF0YS1ucHgtcmVhZHknLCAnMScpOyAvKiBiYWxpc2FnZSBpbmF0dGVuZHUgOiBuZSBwYXMgYm91Y2xlciBkZXNzdXMgKi8KICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgdmFyIGxhbmcgID0gZGV0ZWN0TGFuZyhuYXYpOwogICAgdmFyIGRpY3QgID0gTEFCRUxTW2xhbmddIHx8IHt9OwogICAgdmFyIGZvdW5kID0gZGlzY292ZXIoZGljdCk7CiAgICB2YXIgZW50cmllcyA9IGZvdW5kLmVudHJpZXM7CgogICAgaWYoIWVudHJpZXMubGVuZ3RoKXsgcmV0dXJuIGZhbHNlOyB9CgogICAgbmF2LnNldEF0dHJpYnV0ZSgnZGF0YS1ucHgtcmVhZHknLCAnMScpOwogICAgbG9nKCdtb2RlID0nLCBmb3VuZC5tb2RlLCAnfCBsYW5nID0nLCBsYW5nLCAnfCBlbnRyZWVzID0nLCBlbnRyaWVzLm1hcChmdW5jdGlvbihlKXsKICAgICAgcmV0dXJuIGUua2V5ICsgJyAtPiAnICsgZS5sYWJlbCArICcgKCMnICsgZS5zZWN0aW9uLmlkICsgJyknOwogICAgfSkpOwoKICAgIGlubmVyLmlubmVySFRNTCA9ICcnOwogICAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uKGUpewogICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgICAgYS5ocmVmID0gJyMnICsgZS5zZWN0aW9uLmlkOwogICAgICBhLnRleHRDb250ZW50ID0gZS5sYWJlbDsKICAgICAgaW5uZXIuYXBwZW5kQ2hpbGQoYSk7CiAgICAgIGUubGluayA9IGE7CiAgICB9KTsKICAgIG5hdi5yZW1vdmVBdHRyaWJ1dGUoJ2hpZGRlbicpOwoKICAgIC8qIC0tLS0gdi42LjQgOiBsYSBiYXJyZSB0aWVudCBzdXIgdW5lIGxpZ25lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgZmxleC13cmFwOm5vd3JhcCBzdXBwcmltZSBsYSAyZSBsaWduZS4gT24gbWVzdXJlIGV0IG9uIHJldGllbnQgbGUKICAgICAgIFBSRU1JRVIgcGFsaWVyIHF1aSByZW50cmUuIExlIHBhbGllciAwIGVzdCBsZSByZW5kdSB2LjYuMiA6IHVuZQogICAgICAgYmFycmUgcXVpIHJlbnRyYWl0IGRlamEgbmUgYm91Z2UgcGFzIGQndW4gcGl4ZWwuIFNpIG1lbWUgbGUKICAgICAgIHBsYW5jaGVyIGRlYm9yZGUgKHRlbGVwaG9uZSksIGxhIGJhcnJlIGRlZmlsZSBob3Jpem9udGFsZW1lbnQuCiAgICAgICBUb3V0IGVzdCBlbnZlbG9wcGUgOiBlbiBjYXMgZCdlcnJldXIgb24gcmV2aWVudCBhdSBwYWxpZXIgMC4gKi8KICAgIHZhciBTVEVQUyA9IFsKICAgICAgeyBmczogJzExcHgnLCAgIGxzOiAnLjEyZW0nLCBweDogJzE0cHgnLCBnYXA6ICcxMHB4JyB9LCAvKiByZW5kdSB2LjYuMiAqLwogICAgICB7IGZzOiAnMTFweCcsICAgbHM6ICcuMDllbScsIHB4OiAnMTNweCcsIGdhcDogJzlweCcgIH0sCiAgICAgIHsgZnM6ICcxMC41cHgnLCBsczogJy4wN2VtJywgcHg6ICcxMnB4JywgZ2FwOiAnOHB4JyAgfSwKICAgICAgeyBmczogJzEwcHgnLCAgIGxzOiAnLjA2ZW0nLCBweDogJzExcHgnLCBnYXA6ICc3cHgnICB9LAogICAgICB7IGZzOiAnOS41cHgnLCAgbHM6ICcuMDVlbScsIHB4OiAnMTBweCcsIGdhcDogJzZweCcgIH0sCiAgICAgIHsgZnM6ICc5cHgnLCAgICBsczogJy4wNGVtJywgcHg6ICc5cHgnLCAgZ2FwOiAnNXB4JyAgfSAgLyogcGxhbmNoZXIgKi8KICAgIF07CiAgICBmdW5jdGlvbiBhcHBseVN0ZXAocyl7CiAgICAgIHZhciBzdCA9IGlubmVyLnN0eWxlOwogICAgICBzdC5zZXRQcm9wZXJ0eSgnLS1ucHgtZnMnLCAgcy5mcyk7CiAgICAgIHN0LnNldFByb3BlcnR5KCctLW5weC1scycsICBzLmxzKTsKICAgICAgc3Quc2V0UHJvcGVydHkoJy0tbnB4LXB4JywgIHMucHgpOwogICAgICBzdC5zZXRQcm9wZXJ0eSgnLS1ucHgtZ2FwJywgcy5nYXApOwogICAgfQogICAgZnVuY3Rpb24gb3ZlcmZsb3dpbmcoKXsgcmV0dXJuIGlubmVyLnNjcm9sbFdpZHRoID4gaW5uZXIuY2xpZW50V2lkdGggKyAxOyB9CgogICAgdmFyIGZpdHRpbmcgPSBmYWxzZSwgbGFzdFcgPSAtMTsKICAgIGZ1bmN0aW9uIGZpdCgpewogICAgICBpZihmaXR0aW5nKXsgcmV0dXJuOyB9CiAgICAgIGZpdHRpbmcgPSB0cnVlOwogICAgICB0cnl7CiAgICAgICAgLyogQmFycmUgbm9uIG1lc3VyYWJsZSAobWFzcXVlZSwgb25nbGV0IHJlcGxpZSkgOiBuZSByaWVuIGNvbmNsdXJlLiAqLwogICAgICAgIGlmKGlubmVyLmNsaWVudFdpZHRoID4gNDApewogICAgICAgICAgdmFyIGksIGNob3NlbiA9IFNURVBTLmxlbmd0aCAtIDE7CiAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBTVEVQUy5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgIGFwcGx5U3RlcChTVEVQU1tpXSk7CiAgICAgICAgICAgIGlmKCFvdmVyZmxvd2luZygpKXsgY2hvc2VuID0gaTsgYnJlYWs7IH0KICAgICAgICAgIH0KICAgICAgICAgIGlmKGNob3NlbiAhPT0gaSl7IGFwcGx5U3RlcChTVEVQU1tjaG9zZW5dKTsgfQogICAgICAgICAgbGFzdFcgPSBuYXYuY2xpZW50V2lkdGg7CiAgICAgICAgfQogICAgICB9Y2F0Y2goZXJyKXsKICAgICAgICBhcHBseVN0ZXAoU1RFUFNbMF0pOyAgLyogamFtYWlzIGRlIGJhcnJlIGNhc3NlZSAqLwogICAgICB9CiAgICAgIGZpdHRpbmcgPSBmYWxzZTsKICAgIH0KICAgIGZpdCgpOwoKICAgIC8qIExhIHBvbGljZSBkdSB0aGVtZSBhcnJpdmUgZW4gYXN5bmNocm9uZSA6IHJlbWVzdXJlciBhIHNvbiBhcnJpdmVlLiAqLwogICAgaWYoZG9jdW1lbnQuZm9udHMgJiYgZG9jdW1lbnQuZm9udHMucmVhZHkgJiYgZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbil7CiAgICAgIHRyeXsgZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbihmaXQsIGZpdCk7IH1jYXRjaChlcnIpe30KICAgIH0KICAgIHNldFRpbWVvdXQoZml0LCA2MDApOwogICAgc2V0VGltZW91dChmaXQsIDIwMDApOwoKICAgIC8qIExlIHBhc3NhZ2UgZW4gc3RpY2t5IGNoYW5nZSBsYSBsYXJnZXVyIHNhbnMgZXZlbmVtZW50IHJlc2l6ZS4gKi8KICAgIGlmKHdpbmRvdy5SZXNpemVPYnNlcnZlcil7CiAgICAgIHRyeXsKICAgICAgICBuZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24oKXsKICAgICAgICAgIGlmKG5hdi5jbGllbnRXaWR0aCAhPT0gbGFzdFcpeyBmaXQoKTsgfQogICAgICAgIH0pLm9ic2VydmUobmF2KTsKICAgICAgfWNhdGNoKGVycil7fQogICAgfQoKICAgIC8qIEVuIG1vZGUgZGVmaWxlbWVudCwgZ2FyZGVyIGxhIHBhc3RpbGxlIGFjdGl2ZSB2aXNpYmxlLiAqLwogICAgZnVuY3Rpb24gcmV2ZWFsKGxpbmspewogICAgICBpZighbGluayB8fCAhb3ZlcmZsb3dpbmcoKSl7IHJldHVybjsgfQogICAgICB2YXIgbCA9IGxpbmsub2Zmc2V0TGVmdCwgciA9IGwgKyBsaW5rLm9mZnNldFdpZHRoOwogICAgICB2YXIgdnMgPSBpbm5lci5zY3JvbGxMZWZ0LCB2ZSA9IHZzICsgaW5uZXIuY2xpZW50V2lkdGg7CiAgICAgIGlmKGwgPCB2cyl7IGlubmVyLnNjcm9sbExlZnQgPSBNYXRoLm1heCgwLCBsIC0gMTIpOyB9CiAgICAgIGVsc2UgaWYociA+IHZlKXsgaW5uZXIuc2Nyb2xsTGVmdCA9IHIgLSBpbm5lci5jbGllbnRXaWR0aCArIDEyOyB9CiAgICB9CgogICAgZnVuY3Rpb24gdG9wT2Zmc2V0KCl7CiAgICAgIHZhciB2ID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0tbnB4LXRvcCcpOwogICAgICByZXR1cm4gcGFyc2VJbnQodiwgMTApIHx8IDA7CiAgICB9CiAgICAvKiBEw6lmaWxlbWVudCBhdmVjIGNvbXBlbnNhdGlvbiBkZXMgZGV1eCBtZW51cy4gKi8KICAgIGZ1bmN0aW9uIHRvdGFsT2Zmc2V0KCl7IHJldHVybiB0b3BPZmZzZXQoKSArIG5hdi5vZmZzZXRIZWlnaHQgKyA4OyB9CgogICAgLyogLS0tLSBDb2xsYWdlIDogZml4ZWQgKyBwbGFjZWhvbGRlciBhbnRpLXNhdXQgKG1vZGUgJ2pzJykgLS0tLSAqLwogICAgdmFyIHBoID0gbnVsbDsKICAgIGlmKFNUSUNLX01PREUgPT09ICdqcycpewogICAgICBwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICBwaC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICBuYXYucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocGgsIG5hdik7CiAgICB9CiAgICBmdW5jdGlvbiBzdGljaygpewogICAgICBpZighcGgpeyByZXR1cm47IH0KICAgICAgdmFyIGFuY2hvciA9IChwaC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScpID8gbmF2IDogcGg7CiAgICAgIHZhciBzaG91bGQgPSBhbmNob3IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIDw9IHRvcE9mZnNldCgpOwogICAgICBpZihzaG91bGQgJiYgIW5hdi5jbGFzc0xpc3QuY29udGFpbnMoJ25weC1zdHVjaycpKXsKICAgICAgICBwaC5zdHlsZS5oZWlnaHQgID0gbmF2Lm9mZnNldEhlaWdodCArICdweCc7CiAgICAgICAgcGguc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgbmF2LmNsYXNzTGlzdC5hZGQoJ25weC1zdHVjaycpOwogICAgICB9ZWxzZSBpZighc2hvdWxkICYmIG5hdi5jbGFzc0xpc3QuY29udGFpbnMoJ25weC1zdHVjaycpKXsKICAgICAgICBuYXYuY2xhc3NMaXN0LnJlbW92ZSgnbnB4LXN0dWNrJyk7CiAgICAgICAgcGguc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgfQogICAgfQoKICAgIC8qIC0tLS0gU2VjdGlvbiBhY3RpdmUgLS0tLSAqLwogICAgdmFyIGxhc3RDdXJyZW50ID0gbnVsbDsKICAgIGZ1bmN0aW9uIGhpZ2hsaWdodCgpewogICAgICB2YXIgbGltaXQgPSB0b3RhbE9mZnNldCgpICsgNDsKICAgICAgdmFyIGN1cnJlbnQgPSBudWxsOwogICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZSl7CiAgICAgICAgaWYoZS5zZWN0aW9uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCA8PSBsaW1pdCl7IGN1cnJlbnQgPSBlOyB9CiAgICAgIH0pOwogICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZSl7CiAgICAgICAgZS5saW5rLmNsYXNzTGlzdC50b2dnbGUoJ25weC1hY3RpdmUnLCBlID09PSBjdXJyZW50KTsKICAgICAgfSk7CiAgICAgIGlmKGN1cnJlbnQgIT09IGxhc3RDdXJyZW50KXsKICAgICAgICBsYXN0Q3VycmVudCA9IGN1cnJlbnQ7CiAgICAgICAgaWYoY3VycmVudCl7IHJldmVhbChjdXJyZW50LmxpbmspOyB9CiAgICAgIH0KICAgIH0KCiAgICAvKiAtLS0tIENsaWMgc3VyIHVuZSBlbnRyw6llIC0tLS0gKi8KICAgIHZhciBzbW9vdGggPSAhd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlczsKICAgIGVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlKXsKICAgICAgZS5saW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgdmFyIHkgPSBlLnNlY3Rpb24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0IC0gdG90YWxPZmZzZXQoKTsKICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IHksIGJlaGF2aW9yOiBzbW9vdGggPyAnc21vb3RoJyA6ICdhdXRvJyB9KTsKICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgJyMnICsgZS5zZWN0aW9uLmlkKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBmdW5jdGlvbiBvblNjcm9sbCgpeyBzdGljaygpOyBoaWdobGlnaHQoKTsgfQogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSk7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZnVuY3Rpb24oKXsgZml0KCk7IG9uU2Nyb2xsKCk7IH0pOwogICAgb25TY3JvbGwoKTsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLyogLS0tLSBBbW9yw6dhZ2UgOiB0b3V0ZXMgbGVzIGluc3RhbmNlcywgYXZlYyBxdWVscXVlcyByZWxhbmNlcyAtLS0tLS0KICAgICBMZXMgcm93cyBVbmNvZGUgcGV1dmVudCDDqnRyZSBpbmplY3TDqWVzIGFwcsOocyBsZSBET01Db250ZW50TG9hZGVkCiAgICAgKGxhenkgLyBBSkFYKSA6IG9uIHJldGVudGUgcGVuZGFudCB+Miw1IHMgYXZhbnQgZGUgY29uY2x1cmUuICovCiAgZnVuY3Rpb24gYm9vdCgpewogICAgdmFyIG5hdnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubnB4LXN1Ym5hdjpub3QoW2RhdGEtbnB4LXJlYWR5XSknKTsKICAgIHZhciBwZW5kaW5nID0gMDsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBuYXZzLmxlbmd0aDsgaSsrKXsKICAgICAgaWYoIWluaXQobmF2c1tpXSkpeyBwZW5kaW5nKys7IH0KICAgIH0KICAgIHJldHVybiBwZW5kaW5nOwogIH0KCiAgZnVuY3Rpb24gcnVuKCl7CiAgICBpZihib290KCkgPT09IDApeyByZXR1cm47IH0KICAgIHZhciB0cmllcyA9IDA7CiAgICB2YXIgdGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICB0cmllcysrOwogICAgICB2YXIgbGFzdCA9IHRyaWVzID49IDY7IC8qIDYgeCA0MDAgbXMgKi8KICAgICAgaWYoYm9vdCgpID09PSAwIHx8IGxhc3QpewogICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpOwogICAgICAgIGlmKGxhc3QgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm5weC1zdWJuYXY6bm90KFtkYXRhLW5weC1yZWFkeV0pJykpewogICAgICAgICAgd2Fybk5vdGhpbmdGb3VuZCgpOwogICAgICAgIH0KICAgICAgfQogICAgfSwgNDAwKTsKICB9CgogIGlmKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJyl7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgcnVuKTsKICB9ZWxzZXsKICAgIHJ1bigpOwogIH0KfSkoKTsKPC9zY3JpcHQ+[\/vc_raw_html][\/vc_column][\/vc_row][vc_row unlock_row_content=\u00a0\u00bbyes\u00a0\u00bb row_height_percent=\u00a0\u00bb0&Prime; override_padding=\u00a0\u00bbyes\u00a0\u00bb h_padding=\u00a0\u00bb5&Prime; top_padding=\u00a0\u00bb5&Prime; bottom_padding=\u00a0\u00bb5&Prime; [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/numpex.org\/fr\/projets-appel-a-projets-2025\/\" \/>\n<meta property=\"og:site_name\" content=\"NumPEx\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-10T20:28:49+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"63 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/numpex.org\\\/fr\\\/projets-appel-a-projets-2025\\\/\",\"url\":\"https:\\\/\\\/numpex.org\\\/fr\\\/projets-appel-a-projets-2025\\\/\",\"name\":\"Projets \u2013 Appel \u00e0 projets 2025 - NumPEx\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/numpex.org\\\/fr\\\/#website\"},\"datePublished\":\"2026-08-15T21:49:43+00:00\",\"dateModified\":\"2026-09-10T20:28:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/numpex.org\\\/fr\\\/projets-appel-a-projets-2025\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/numpex.org\\\/fr\\\/projets-appel-a-projets-2025\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/numpex.org\\\/fr\\\/projets-appel-a-projets-2025\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/numpex.org\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Projets \u2013 Appel \u00e0 projets 2025\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/numpex.org\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/numpex.org\\\/fr\\\/\",\"name\":\"NumPEx\",\"description\":\"Digital for Exascale\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/numpex.org\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Projets \u2013 Appel \u00e0 projets 2025 - NumPEx","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/numpex.org\/fr\/projets-appel-a-projets-2025\/","og_locale":"fr_FR","og_type":"article","og_title":"Projets \u2013 Appel \u00e0 projets 2025 - NumPEx","og_description":"[vc_row row_height_percent=\u00a0\u00bb0&Prime; overlay_alpha=\u00a0\u00bb50&Prime; gutter_size=\u00a0\u00bb3&Prime; column_width_percent=\u00a0\u00bb100&Prime; shift_y=\u00a0\u00bb0&Prime; z_index=\u00a0\u00bb0&Prime; sticky=\u00a0\u00bbyes\u00a0\u00bb content_parallax=\u00a0\u00bb0&Prime; uncode_shortcode_id=\u00a0\u00bb716742&Prime; css=\u00a0\u00bb.vc_custom_1785869798726{margin-top: 1% !important;}\u00a0\u00bb][vc_column width=\u00a0\u00bb1\/1&Prime;][vc_raw_html]PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBOdW1QRXgg4oCUIE1lbnUgZGUgc2VjdGlvbnMgc3RpY2t5IOKAlCB2LjYuNAogIE5hb3MgQWdlbmN5IMK3IDIwMjYtMDktMTAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKPHN0eWxlPgogIDpyb290eyAtLW5weC10b3A6IDYwcHg7IH0gLyogaGF1dGV1ciBkdSBoZWFkZXIgVW5jb2RlIHN0aWNreSAqLwogIC5ucHgtc3VibmF2ewogICAgYmFja2dyb3VuZDogI0UwOTkwMDsgLyogb3JhbmdlIGQnYWNjZW50dWF0aW9uIE51bVBFeCAqLwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwwLDAsLjA4KTsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICB3aWR0aDogMTAwJTsKICAgIHotaW5kZXg6IDQwOwogIH0KICAubnB4LXN1Ym5hdltoaWRkZW5deyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KICAubnB4LXN1Ym5hdi5ucHgtc3R1Y2t7IGJvcmRlci1yYWRpdXM6IDAgMCAxMnB4IDEycHg7IH0KICAubnB4LXN1Ym5hdi5ucHgtc3R1Y2t7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IHZhcigtLW5weC10b3ApOwogICAgbGVmdDogMDsgcmlnaHQ6IDA7CiAgfQogIC5ucHgtc3VibmF2X19pbm5lcnsKICAgIC8qIHYuNi40IDogbWV0cmlxdWVzIHBpbG90ZWVzIHBhciB2YXJpYWJsZXMuIExlcyB2YWxldXJzIGRlIHJlcGxpCiAgICAgICBTT05UIGNlbGxlcyBkZSBsYSB2LjYuMiA6IHNhbnMgSlMsIHJlbmR1IGlkZW50aXF1ZS4gKi8KICAgIG1heC13aWR0aDogMTE0MHB4OwogICAgbWFyZ2luOiAwIGF1dG87CiAgICBwYWRkaW5nOiAwIDI0cHg7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiBub3dyYXA7CiAgICBnYXA6IDAgdmFyKC0tbnB4LWdhcCwgMTBweCk7CiAgICBtaW4taGVpZ2h0OiA0NnB4OwogICAgcGFkZGluZy10b3A6IDZweDsKICAgIHBhZGRpbmctYm90dG9tOiA2cHg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZm9udC1zaXplOiB2YXIoLS1ucHgtZnMsIDExcHgpOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1ucHgtbHMsIC4xMmVtKTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgb3ZlcmZsb3cteTogaGlkZGVuOwogICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lOwogICAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lOwogICAgLyogZm9udC1mYW1pbHk6ICdQb3BwaW5zJywgc3lzdGVtLXVpLCBzYW5zLXNlcmlmOyAqLwogIH0KICAubnB4LXN1Ym5hdl9faW5uZXI6Oi13ZWJraXQtc2Nyb2xsYmFyeyBkaXNwbGF5OiBub25lOyB9CiAgLyogU3DDqWNpZmljaXTDqSByZW5mb3Jjw6llICsgIWltcG9ydGFudCA6IG5ldXRyYWxpc2UgbGVzIGNvdWxldXJzIGRlIGxpZW5zIGR1IHRow6htZSBVbmNvZGUgKG9yYW5nZSBhdSBzdXJ2b2wvY2xpYykgKi8KICBuYXYubnB4LXN1Ym5hdiAubnB4LXN1Ym5hdl9faW5uZXIgYSwKICBuYXYubnB4LXN1Ym5hdiAubnB4LXN1Ym5hdl9faW5uZXIgYTp2aXNpdGVkewogICAgY29sb3I6IHJnYmEoMjU1LDI1MCwyNDMsLjg4KSAhaW1wb3J0YW50OyAvKiBibGFuYyBjYXNzw6kgKi8KICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgcGFkZGluZzogOHB4IHZhcigtLW5weC1weCwgMTRweCk7CiAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgIHRyYW5zaXRpb246IGNvbG9yIC4xOHMsIGJhY2tncm91bmQtY29sb3IgLjE4czsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7ICAvKiB2LjYuNCA6IHVuIGxpYmVsbGUgbmUgc2UgY291cGUgamFtYWlzICovCiAgICBmbGV4OiAwIDAgYXV0bzsgICAgICAgLyogdi42LjQgOiBsZXMgcGFzdGlsbGVzIG5lIHNlIGNvbXByaW1lbnQgcGFzICovCiAgfQogIG5hdi5ucHgtc3VibmF2IC5ucHgtc3VibmF2X19pbm5lciBhOmhvdmVyLAogIG5hdi5ucHgtc3VibmF2IC5ucHgtc3VibmF2X19pbm5lciBhOmZvY3VzLAogIG5hdi5ucHgtc3VibmF2IC5ucHgtc3VibmF2X19pbm5lciBhOmFjdGl2ZXsKICAgIGNvbG9yOiAjRkZGRkZGICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC4xMik7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDsKICB9CiAgbmF2Lm5weC1zdWJuYXYgLm5weC1zdWJuYXZfX2lubmVyIGEubnB4LWFjdGl2ZSwKICBuYXYubnB4LXN1Ym5hdiAubnB4LXN1Ym5hdl9faW5uZXIgYS5ucHgtYWN0aXZlOmhvdmVyewogICAgY29sb3I6ICNGRkZGRkYgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICNBODZGMDA7IC8qIG9yYW5nZSBmb25jw6ksIGFwbGF0IHNpbXBsZSAqLwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICB9Cjwvc3R5bGU+Cgo8bmF2IGNsYXNzPSJucHgtc3VibmF2IiBhcmlhLWxhYmVsPSJQYWdlIHNlY3Rpb25zIiBoaWRkZW4+CiAgPGRpdiBjbGFzcz0ibnB4LXN1Ym5hdl9faW5uZXIiPjwvZGl2Pgo8L25hdj4KCjxzY3JpcHQ+CihmdW5jdGlvbigpewogICd1c2Ugc3RyaWN0JzsKCiAgLyogPT09PT09PT09PT09PT09PT09PT0gQ09ORklHIFNJVEUgPT09PT09PT09PT09PT09PT09PT0KICAgICBTZXVsZSB6b25lIMOgIGFkYXB0ZXIgcG91ciByw6l1dGlsaXNlciBsZSBibG9jIGFpbGxldXJzLiAqLwogIHZhciBQUkVGSVggPSAnbmF2LSc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHByw6lmaXhlIGRlcyBSb3cgSUQgw6AgZMOpdGVjdGVyICovCiAgdmFyIFNUUklQICA9IFsvLShlbnxmcikkL2ksIC8tZXhhLVthLXowLTldKyQvaV07ICAgLyogc3VmZml4ZXMgZCd1bmljaXTDqSDDoCBpZ25vcmVyICAqLwoKICAvKiBSZXBsaSBwb3VyIGxlcyBwYWdlcyBQQVMgRU5DT1JFIE1JR1LDiUVTIHZlcnMgbGUgcHLDqWZpeGUgbmF2LQogICAgICh0eXBpcXVlbWVudCBsZXMgdHJhZHVjdGlvbnMgV1BNTCBkb250IGxlcyBSb3cgSUQgbidvbnQgcGFzIMOpdMOpCiAgICAgcmVub21tw6lzKS4gVXRpbGlzw6kgVU5JUVVFTUVOVCBzaSBsYSBwYWdlIG5lIGNvbnRpZW50IGF1Y3VuZSByb3cKICAgICDCqyBuYXYtIMK7LiBSZXByZW5kIGxlcyBjbMOpcyBkZSBsYSB2LjUgOiB1bmUgcm93IG5vbW3DqWUKICAgICDCqyBjb25zb3J0aXVtLWV4YS1tYS1lbiDCuyBvdSBzaW1wbGVtZW50IMKrIGNvbnNvcnRpdW0gwrsgZXN0CiAgICAgcmV0cm91dsOpZS4gTGlzdGUgZmVybcOpZSA9IGF1Y3VuIHJpc3F1ZSBkZSBmYXV4IHBvc2l0aWYuICovCiAgdmFyIExFR0FDWV9LRVlTID0gWwogICAgJ292ZXJ2aWV3JywgJ2NvbnNvcnRpdW0nLCAncmVzdWx0cycsICdtZXRyaWNzJywgJ3NvZnR3YXJlJywKICAgICduZXdzJywgJ2V2ZW50cycsICdhZ2VuZGEnLCAndGVhbScsICdjb250YWN0JwogIF07CgogIHZhciBMQUJFTFMgPSB7CiAgICAvKiBMaWJlbGzDqXMgcHLDqWbDqXLDqXMgcGFyIGNsw6kuIFRvdXRlIGNsw6kgYWJzZW50ZSBlc3QgYWZmaWNow6llCiAgICAgICBjYXBpdGFsaXPDqWUgdGVsbGUgcXVlbGxlIChuYXYtam9pbi11cyAtPiDCqyBKb2luIFVzIMK7KS4gKi8KICAgIGVuOiB7CiAgICAgICdjb25zb3J0aXVtJzogJ0NvbnNvcnRpdW0gJiBXb3JrcGFja2FnZXMnLAogICAgICAncmVzdWx0cyc6ICAgICdSZXN1bHRzICYgSW1wYWN0JywKICAgICAgJ21ldHJpY3MnOiAgICAnUHJvamVjdCBNZXRyaWNzJywKICAgICAgJ3RlYW0nOiAgICAgICAnVGhlIFRlYW0nCiAgICB9LAogICAgZnI6IHsKICAgICAgJ292ZXJ2aWV3JzogICAnUHLDqXNlbnRhdGlvbicsCiAgICAgICdjb25zb3J0aXVtJzogJ0NvbnNvcnRpdW0gZXQgbG90cyBkZSB0cmF2YWlsJywKICAgICAgJ3Jlc3VsdHMnOiAgICAnUsOpc3VsdGF0cyBldCBpbXBhY3QnLAogICAgICAnbWV0cmljcyc6ICAgICdDaGlmZnJlcyBjbMOpcycsCiAgICAgICdzb2Z0d2FyZSc6ICAgJ0xvZ2ljaWVscycsCiAgICAgICduZXdzJzogICAgICAgJ0FjdHVhbGl0w6lzJywKICAgICAgJ2V2ZW50cyc6ICAgICAnw4l2w6huZW1lbnRzJywKICAgICAgJ3RlYW0nOiAgICAgICAnTOKAmcOpcXVpcGUnCiAgICB9CiAgfTsKICB2YXIgU1RJQ0tfTU9ERSA9ICd1bmNvZGUnOyAvKiAndW5jb2RlJyA9IGxhIHJvdyBnw6hyZSBsZSBzdGlja3kgwrcgJ2pzJyA9IGxlIHNjcmlwdCBjb2xsZSBsdWktbcOqbWUgKi8KICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKICB2YXIgREVCVUcgPSAvWz8mXW5weGRlYnVnPTEvLnRlc3Qod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7CiAgZnVuY3Rpb24gbG9nKCl7CiAgICBpZighREVCVUcgfHwgIXdpbmRvdy5jb25zb2xlIHx8ICFjb25zb2xlLmxvZykgcmV0dXJuOwogICAgY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgWydbbnB4LXN1Ym5hdl0nXS5jb25jYXQoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKSk7CiAgfQoKICAvKiAtLS0tIExhbmd1ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgPGh0bWwgbGFuZz4gcG9zw6kgcGFyIFdQTUwuIFJlcGxpcyBzdWNjZXNzaWZzIHNpIGwnYXR0cmlidXQgbWFucXVlIDoKICAgICB1biBhbmPDqnRyZSBwb3J0ZXVyIGRlIGxhbmcsIHB1aXMgbGVzIGNsYXNzZXMgZHUgYm9keS4gKi8KICBmdW5jdGlvbiBkZXRlY3RMYW5nKGVsKXsKICAgIHZhciB0YWcgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJykgfHwgJyc7CiAgICBpZighdGFnICYmIGVsICYmIGVsLmNsb3Nlc3QpewogICAgICB2YXIgaG9zdCA9IGVsLmNsb3Nlc3QoJ1tsYW5nXScpOwogICAgICBpZihob3N0KXsgdGFnID0gaG9zdC5nZXRBdHRyaWJ1dGUoJ2xhbmcnKSB8fCAnJzsgfQogICAgfQogICAgaWYoIXRhZyl7CiAgICAgIHZhciBjbHMgPSAoZG9jdW1lbnQuYm9keSAmJiBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSkgfHwgJyc7CiAgICAgIGlmKC8oPzpsYW5nfGxhbmd1YWdlKS1mclxifGZyW18tXUZSL2kudGVzdChjbHMpKXsgdGFnID0gJ2ZyJzsgfQogICAgfQogICAgcmV0dXJuIC9eZnIvaS50ZXN0KHRhZykgPyAnZnInIDogJ2VuJzsKICB9CgogIGZ1bmN0aW9uIGtleU9mKGlkKXsKICAgIHZhciBrID0gaWQuc2xpY2UoUFJFRklYLmxlbmd0aCkudG9Mb3dlckNhc2UoKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBTVFJJUC5sZW5ndGg7IGkrKyl7IGsgPSBrLnJlcGxhY2UoU1RSSVBbaV0sICcnKTsgfQogICAgcmV0dXJuIGs7CiAgfQogIGZ1bmN0aW9uIHRpdGxlQ2FzZShrZXkpewogICAgcmV0dXJuIGtleS5zcGxpdCgnLScpLm1hcChmdW5jdGlvbih3KXsKICAgICAgcmV0dXJuIHcgPyB3LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdy5zbGljZSgxKSA6IHc7CiAgICB9KS5qb2luKCcgJyk7CiAgfQoKICAvKiBEb3VibGUgc8OpY3VyaXTDqSA6IMOpY2FydGUgbGVzIG1lbnVzIGfDqW7DqXLDqXMgcGFyIFdvcmRQcmVzcyBldCB0b3V0IGNlCiAgICAgcXVpIHZpdCBkYW5zIGxhIG5hdmlnYXRpb24gb3UgbGUgaGVhZGVyIOKAlCBpbmNoYW5nw6kgZGVwdWlzIGxhIHYuNi4xLiAqLwogIGZ1bmN0aW9uIGlzU2VjdGlvbkNhbmRpZGF0ZShlbCl7CiAgICB2YXIgdGFnID0gZWwudGFnTmFtZTsKICAgIGlmKHRhZyA9PT0gJ1VMJyB8fCB0YWcgPT09ICdMSScgfHwgdGFnID09PSAnQScgfHwgdGFnID09PSAnTkFWJyl7IHJldHVybiBmYWxzZTsgfQogICAgaWYoZWwuY2xvc2VzdCAmJiBlbC5jbG9zZXN0KCduYXYsIGhlYWRlciwgLm5weC1zdWJuYXYnKSl7IHJldHVybiBmYWxzZTsgfQogICAgcmV0dXJuIHRydWU7CiAgfQoKICBmdW5jdGlvbiBpbkRvY3VtZW50T3JkZXIoYSwgYil7CiAgICB2YXIgcG9zID0gYS5zZWN0aW9uLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIuc2VjdGlvbik7CiAgICByZXR1cm4gKHBvcyAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKSA\/IC0xIDogMTsKICB9CgogIC8qIC0tLS0gRMOpY291dmVydGUgZGVzIHNlY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgMSkgTW9kZSBub21pbmFsIDogdG91dGVzIGxlcyByb3dzIGRvbnQgbCdpZCBjb21tZW5jZSBwYXIgwqsgbmF2LSDCuy4KICAgICAyKSBSZXBsaSA6IHNpIGV0IHNldWxlbWVudCBzaSBsZSBtb2RlIDEgbmUgZG9ubmUgUklFTiwgb24gY2hlcmNoZQogICAgICAgIGxlcyBjbMOpcyBow6lyaXTDqWVzIGRlIGxhIHYuNSwgYXZlYyBvdSBzYW5zIHN1ZmZpeGUuCiAgICAgUmVudm9pZSB7IGVudHJpZXM6IFsuLi5dLCBtb2RlOiAncHJlZml4JyB8ICdsZWdhY3knIHwgJ25vbmUnIH0uICovCiAgZnVuY3Rpb24gZGlzY292ZXIoZGljdCl7CiAgICB2YXIgc2VlbiA9IE9iamVjdC5jcmVhdGUobnVsbCksIGVudHJpZXMgPSBbXTsKCiAgICBmdW5jdGlvbiBwdXNoKGVsLCBrZXkpewogICAgICBpZighZWwgfHwgIWtleSB8fCBzZWVuW2tleV0peyByZXR1cm47IH0KICAgICAgc2VlbltrZXldID0gdHJ1ZTsKICAgICAgZW50cmllcy5wdXNoKHsgc2VjdGlvbjogZWwsIGtleToga2V5LCBsYWJlbDogZGljdFtrZXldIHx8IHRpdGxlQ2FzZShrZXkpIH0pOwogICAgfQoKICAgIHZhciBmb3VuZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZF49IicgKyBQUkVGSVggKyAnIl0nKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBmb3VuZC5sZW5ndGg7IGkrKyl7CiAgICAgIGlmKCFpc1NlY3Rpb25DYW5kaWRhdGUoZm91bmRbaV0pKXsgY29udGludWU7IH0KICAgICAgcHVzaChmb3VuZFtpXSwga2V5T2YoZm91bmRbaV0uaWQpKTsKICAgIH0KICAgIGlmKGVudHJpZXMubGVuZ3RoKXsKICAgICAgd2FybklmUGFydGlhbGx5TWlncmF0ZWQoc2Vlbik7CiAgICAgIHJldHVybiB7IGVudHJpZXM6IGVudHJpZXMsIG1vZGU6ICdwcmVmaXgnIH07CiAgICB9CgogICAgZm9yKHZhciBqID0gMDsgaiA8IExFR0FDWV9LRVlTLmxlbmd0aDsgaisrKXsKICAgICAgdmFyIGsgID0gTEVHQUNZX0tFWVNbal07CiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGspIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tpZF49IicgKyBrICsgJy0iXScpOwogICAgICBpZihlbCAmJiBpc1NlY3Rpb25DYW5kaWRhdGUoZWwpKXsgcHVzaChlbCwgayk7IH0KICAgIH0KICAgIGlmKGVudHJpZXMubGVuZ3RoKXsKICAgICAgZW50cmllcy5zb3J0KGluRG9jdW1lbnRPcmRlcik7IC8qIGxhIGxpc3RlIGRlcyBjbMOpcyBuZSBzdWl0IHBhcyBsJ29yZHJlIGRlIGxhIHBhZ2UgKi8KICAgICAgcmV0dXJuIHsgZW50cmllczogZW50cmllcywgbW9kZTogJ2xlZ2FjeScgfTsKICAgIH0KCiAgICByZXR1cm4geyBlbnRyaWVzOiBlbnRyaWVzLCBtb2RlOiAnbm9uZScgfTsKICB9CgogIC8qIC0tLS0gTWlncmF0aW9uIHBhcnRpZWxsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIENhcyBwacOoZ2UgOiBzdXIgdW5lIG3Dqm1lIHBhZ2UgY2VydGFpbmVzIHJvd3Mgb250IMOpdMOpIHJlbm9tbcOpZXMgZW4KICAgICBuYXYt4oCmIGV0IGQnYXV0cmVzIG5vbi4gTGUgbW9kZSBub21pbmFsIGwnZW1wb3J0ZSBldCBsZXMgcm93cyBub24KICAgICByZW5vbW3DqWVzIGRpc3BhcmFpc3NlbnQgU0lMRU5DSUVVU0VNRU5UIGR1IG1lbnUuIE9uIGxlIHNpZ25hbGUuICovCiAgZnVuY3Rpb24gd2FybklmUGFydGlhbGx5TWlncmF0ZWQoc2Vlbil7CiAgICBpZighd2luZG93LmNvbnNvbGUgfHwgIWNvbnNvbGUud2Fybil7IHJldHVybjsgfQogICAgdmFyIHN0cmFnZ2xlcnMgPSBbXTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBMRUdBQ1lfS0VZUy5sZW5ndGg7IGkrKyl7CiAgICAgIHZhciBrID0gTEVHQUNZX0tFWVNbaV07CiAgICAgIGlmKHNlZW5ba10peyBjb250aW51ZTsgfSAvKiBkw6lqw6AgcHLDqXNlbnQgdmlhIHVuZSByb3cgbmF2LSAqLwogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChrKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbaWRePSInICsgayArICctIl0nKTsKICAgICAgaWYoZWwgJiYgaXNTZWN0aW9uQ2FuZGlkYXRlKGVsKSl7IHN0cmFnZ2xlcnMucHVzaChrICsgJyAoIycgKyBlbC5pZCArICcpJyk7IH0KICAgIH0KICAgIGlmKCFzdHJhZ2dsZXJzLmxlbmd0aCl7IHJldHVybjsgfQogICAgY29uc29sZS53YXJuKAogICAgICAnW25weC1zdWJuYXZdIE1pZ3JhdGlvbiBpbmNvbXBsZXRlIHN1ciBjZXR0ZSBwYWdlIDogJyArIHN0cmFnZ2xlcnMubGVuZ3RoICsKICAgICAgJyByb3cocykgcG9ydGVudCBlbmNvcmUgdW4gYW5jaWVuIFJvdyBJRCBldCBzb250IEFCU0VOVEVTIGR1IG1lbnUgLT4gJyArCiAgICAgIHN0cmFnZ2xlcnMuam9pbignLCAnKSArICdcbicgKwogICAgICAnTGVzIHJlbm9tbWVyIGF2ZWMgbGUgcHJlZml4ZSAiJyArIFBSRUZJWCArICciIChleC4gJyArIFBSRUZJWCArIExFR0FDWV9LRVlTWzBdICsgJykuJwogICAgKTsKICB9CgogIC8qIC0tLS0gTWVzc2FnZSBkZSBkaWFnbm9zdGljIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIEludmlzaWJsZSBwb3VyIGxlcyB2aXNpdGV1cnMsIGTDqWNpc2lmIHBvdXIgbGEgcGVyc29ubmUgcXVpIHJlcHJlbmQKICAgICBsZSBkb3NzaWVyIDogb24gZGl0IGNlIHF1aSBhIMOpdMOpIGNoZXJjaMOpIGV0IGNlIHF1aSBhIMOpdMOpIHRyb3V2w6kuICovCiAgZnVuY3Rpb24gd2Fybk5vdGhpbmdGb3VuZCgpewogICAgaWYoIXdpbmRvdy5jb25zb2xlIHx8ICFjb25zb2xlLndhcm4peyByZXR1cm47IH0KICAgIHZhciB3aXRoSWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaWRdJyk7CiAgICBjb25zb2xlLndhcm4oCiAgICAgICdbbnB4LXN1Ym5hdl0gQXVjdW5lIHNlY3Rpb24gdHJvdXbDqWUgOiBsYSBiYXJyZSByZXN0ZSBtYXNxdcOpZS5cbicgKwogICAgICAnLSBSZWNoZXJjaMOpIGVuIHByaW9yaXTDqSA6IGRlcyBSb3cgSUQgY29tbWVuw6dhbnQgcGFyICInICsgUFJFRklYICsgJyIgKGV4LiBuYXYtb3ZlcnZpZXcpLlxuJyArCiAgICAgICctIFB1aXMsIGVuIHJlcGxpLCBsZXMgY2xlcyBoZXJpdGVlcyA6ICcgKyBMRUdBQ1lfS0VZUy5qb2luKCcsICcpICsgJy5cbicgKwogICAgICAnLSBQYWdlIGxhbmc9IicgKyAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnbGFuZycpIHx8ICcoYWJzZW50KScpICsgJyIsICcgKwogICAgICB3aXRoSWQubGVuZ3RoICsgJyBlbGVtZW50KHMpIHBvcnRlbnQgdW4gaWQuXG4nICsKICAgICAgJy0gQ2F1c2UgbGEgcGx1cyBmcmVxdWVudGUgOiBsZXMgUm93IElEIGRlIENFVFRFIHBhZ2UgbmUgc29udCBwYXMgbm9tbWVzLiAnICsKICAgICAgJ1NvdXMgV1BNTCB1bmUgdHJhZHVjdGlvbiBlc3QgdW4gcG9zdCBkaXN0aW5jdCDigJQgcmVub21tZXIgbGVzIFJvdyBJRCBkZSBsYSBwYWdlICcgKwogICAgICAnc291cmNlIG5lIHJlbm9tbWUgcGFzIGNldXggZGUgbGEgdHJhZHVjdGlvbiA6IGlsIGZhdXQgbGVzIHNhaXNpciBzdXIgY2hhcXVlIGxhbmd1ZS5cbicgKwogICAgICAnLSBQb3VyIGxhIGxpc3RlIGRlcyBpZHMgcHJlc2VudHMsIHJlY2hhcmdlciBsYSBwYWdlIGF2ZWMgP25weGRlYnVnPTEnCiAgICApOwogICAgaWYoREVCVUcpewogICAgICB2YXIgaWRzID0gW107CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCB3aXRoSWQubGVuZ3RoOyBpKyspeyBpZHMucHVzaCh3aXRoSWRbaV0uaWQpOyB9CiAgICAgIGNvbnNvbGUud2FybignW25weC1zdWJuYXZdIGlkcyBwcmVzZW50cyBzdXIgbGEgcGFnZSA6JywgaWRzKTsKICAgIH0KICB9CgogIC8qIC0tLS0gSW5pdGlhbGlzYXRpb24gZCd1bmUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBSZW52b2llIHRydWUgc2kgbGEgYmFycmUgYSDDqXTDqSBjb25zdHJ1aXRlLCBmYWxzZSBzJ2lsIG4neSBhdmFpdAogICAgIGF1Y3VuZSBzZWN0aW9uIChsJ2luc3RhbmNlIHJlc3RlIGFsb3JzIMOpbGlnaWJsZSDDoCB1bmUgbm91dmVsbGUKICAgICB0ZW50YXRpdmUgOiBkYXRhLW5weC1yZWFkeSBuJ2VzdCBwb3PDqSBxdSdlbiBjYXMgZGUgc3VjY8OocykuICovCiAgZnVuY3Rpb24gaW5pdChuYXYpewogICAgdmFyIGlubmVyID0gbmF2LnF1ZXJ5U2VsZWN0b3IoJy5ucHgtc3VibmF2X19pbm5lcicpOwogICAgaWYoIWlubmVyKXsKICAgICAgbmF2LnNldEF0dHJpYnV0ZSgnZGF0YS1ucHgtcmVhZHknLCAnMScpOyAvKiBiYWxpc2FnZSBpbmF0dGVuZHUgOiBuZSBwYXMgYm91Y2xlciBkZXNzdXMgKi8KICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgdmFyIGxhbmcgID0gZGV0ZWN0TGFuZyhuYXYpOwogICAgdmFyIGRpY3QgID0gTEFCRUxTW2xhbmddIHx8IHt9OwogICAgdmFyIGZvdW5kID0gZGlzY292ZXIoZGljdCk7CiAgICB2YXIgZW50cmllcyA9IGZvdW5kLmVudHJpZXM7CgogICAgaWYoIWVudHJpZXMubGVuZ3RoKXsgcmV0dXJuIGZhbHNlOyB9CgogICAgbmF2LnNldEF0dHJpYnV0ZSgnZGF0YS1ucHgtcmVhZHknLCAnMScpOwogICAgbG9nKCdtb2RlID0nLCBmb3VuZC5tb2RlLCAnfCBsYW5nID0nLCBsYW5nLCAnfCBlbnRyZWVzID0nLCBlbnRyaWVzLm1hcChmdW5jdGlvbihlKXsKICAgICAgcmV0dXJuIGUua2V5ICsgJyAtPiAnICsgZS5sYWJlbCArICcgKCMnICsgZS5zZWN0aW9uLmlkICsgJyknOwogICAgfSkpOwoKICAgIGlubmVyLmlubmVySFRNTCA9ICcnOwogICAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uKGUpewogICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgICAgYS5ocmVmID0gJyMnICsgZS5zZWN0aW9uLmlkOwogICAgICBhLnRleHRDb250ZW50ID0gZS5sYWJlbDsKICAgICAgaW5uZXIuYXBwZW5kQ2hpbGQoYSk7CiAgICAgIGUubGluayA9IGE7CiAgICB9KTsKICAgIG5hdi5yZW1vdmVBdHRyaWJ1dGUoJ2hpZGRlbicpOwoKICAgIC8qIC0tLS0gdi42LjQgOiBsYSBiYXJyZSB0aWVudCBzdXIgdW5lIGxpZ25lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgZmxleC13cmFwOm5vd3JhcCBzdXBwcmltZSBsYSAyZSBsaWduZS4gT24gbWVzdXJlIGV0IG9uIHJldGllbnQgbGUKICAgICAgIFBSRU1JRVIgcGFsaWVyIHF1aSByZW50cmUuIExlIHBhbGllciAwIGVzdCBsZSByZW5kdSB2LjYuMiA6IHVuZQogICAgICAgYmFycmUgcXVpIHJlbnRyYWl0IGRlamEgbmUgYm91Z2UgcGFzIGQndW4gcGl4ZWwuIFNpIG1lbWUgbGUKICAgICAgIHBsYW5jaGVyIGRlYm9yZGUgKHRlbGVwaG9uZSksIGxhIGJhcnJlIGRlZmlsZSBob3Jpem9udGFsZW1lbnQuCiAgICAgICBUb3V0IGVzdCBlbnZlbG9wcGUgOiBlbiBjYXMgZCdlcnJldXIgb24gcmV2aWVudCBhdSBwYWxpZXIgMC4gKi8KICAgIHZhciBTVEVQUyA9IFsKICAgICAgeyBmczogJzExcHgnLCAgIGxzOiAnLjEyZW0nLCBweDogJzE0cHgnLCBnYXA6ICcxMHB4JyB9LCAvKiByZW5kdSB2LjYuMiAqLwogICAgICB7IGZzOiAnMTFweCcsICAgbHM6ICcuMDllbScsIHB4OiAnMTNweCcsIGdhcDogJzlweCcgIH0sCiAgICAgIHsgZnM6ICcxMC41cHgnLCBsczogJy4wN2VtJywgcHg6ICcxMnB4JywgZ2FwOiAnOHB4JyAgfSwKICAgICAgeyBmczogJzEwcHgnLCAgIGxzOiAnLjA2ZW0nLCBweDogJzExcHgnLCBnYXA6ICc3cHgnICB9LAogICAgICB7IGZzOiAnOS41cHgnLCAgbHM6ICcuMDVlbScsIHB4OiAnMTBweCcsIGdhcDogJzZweCcgIH0sCiAgICAgIHsgZnM6ICc5cHgnLCAgICBsczogJy4wNGVtJywgcHg6ICc5cHgnLCAgZ2FwOiAnNXB4JyAgfSAgLyogcGxhbmNoZXIgKi8KICAgIF07CiAgICBmdW5jdGlvbiBhcHBseVN0ZXAocyl7CiAgICAgIHZhciBzdCA9IGlubmVyLnN0eWxlOwogICAgICBzdC5zZXRQcm9wZXJ0eSgnLS1ucHgtZnMnLCAgcy5mcyk7CiAgICAgIHN0LnNldFByb3BlcnR5KCctLW5weC1scycsICBzLmxzKTsKICAgICAgc3Quc2V0UHJvcGVydHkoJy0tbnB4LXB4JywgIHMucHgpOwogICAgICBzdC5zZXRQcm9wZXJ0eSgnLS1ucHgtZ2FwJywgcy5nYXApOwogICAgfQogICAgZnVuY3Rpb24gb3ZlcmZsb3dpbmcoKXsgcmV0dXJuIGlubmVyLnNjcm9sbFdpZHRoID4gaW5uZXIuY2xpZW50V2lkdGggKyAxOyB9CgogICAgdmFyIGZpdHRpbmcgPSBmYWxzZSwgbGFzdFcgPSAtMTsKICAgIGZ1bmN0aW9uIGZpdCgpewogICAgICBpZihmaXR0aW5nKXsgcmV0dXJuOyB9CiAgICAgIGZpdHRpbmcgPSB0cnVlOwogICAgICB0cnl7CiAgICAgICAgLyogQmFycmUgbm9uIG1lc3VyYWJsZSAobWFzcXVlZSwgb25nbGV0IHJlcGxpZSkgOiBuZSByaWVuIGNvbmNsdXJlLiAqLwogICAgICAgIGlmKGlubmVyLmNsaWVudFdpZHRoID4gNDApewogICAgICAgICAgdmFyIGksIGNob3NlbiA9IFNURVBTLmxlbmd0aCAtIDE7CiAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBTVEVQUy5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgIGFwcGx5U3RlcChTVEVQU1tpXSk7CiAgICAgICAgICAgIGlmKCFvdmVyZmxvd2luZygpKXsgY2hvc2VuID0gaTsgYnJlYWs7IH0KICAgICAgICAgIH0KICAgICAgICAgIGlmKGNob3NlbiAhPT0gaSl7IGFwcGx5U3RlcChTVEVQU1tjaG9zZW5dKTsgfQogICAgICAgICAgbGFzdFcgPSBuYXYuY2xpZW50V2lkdGg7CiAgICAgICAgfQogICAgICB9Y2F0Y2goZXJyKXsKICAgICAgICBhcHBseVN0ZXAoU1RFUFNbMF0pOyAgLyogamFtYWlzIGRlIGJhcnJlIGNhc3NlZSAqLwogICAgICB9CiAgICAgIGZpdHRpbmcgPSBmYWxzZTsKICAgIH0KICAgIGZpdCgpOwoKICAgIC8qIExhIHBvbGljZSBkdSB0aGVtZSBhcnJpdmUgZW4gYXN5bmNocm9uZSA6IHJlbWVzdXJlciBhIHNvbiBhcnJpdmVlLiAqLwogICAgaWYoZG9jdW1lbnQuZm9udHMgJiYgZG9jdW1lbnQuZm9udHMucmVhZHkgJiYgZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbil7CiAgICAgIHRyeXsgZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbihmaXQsIGZpdCk7IH1jYXRjaChlcnIpe30KICAgIH0KICAgIHNldFRpbWVvdXQoZml0LCA2MDApOwogICAgc2V0VGltZW91dChmaXQsIDIwMDApOwoKICAgIC8qIExlIHBhc3NhZ2UgZW4gc3RpY2t5IGNoYW5nZSBsYSBsYXJnZXVyIHNhbnMgZXZlbmVtZW50IHJlc2l6ZS4gKi8KICAgIGlmKHdpbmRvdy5SZXNpemVPYnNlcnZlcil7CiAgICAgIHRyeXsKICAgICAgICBuZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24oKXsKICAgICAgICAgIGlmKG5hdi5jbGllbnRXaWR0aCAhPT0gbGFzdFcpeyBmaXQoKTsgfQogICAgICAgIH0pLm9ic2VydmUobmF2KTsKICAgICAgfWNhdGNoKGVycil7fQogICAgfQoKICAgIC8qIEVuIG1vZGUgZGVmaWxlbWVudCwgZ2FyZGVyIGxhIHBhc3RpbGxlIGFjdGl2ZSB2aXNpYmxlLiAqLwogICAgZnVuY3Rpb24gcmV2ZWFsKGxpbmspewogICAgICBpZighbGluayB8fCAhb3ZlcmZsb3dpbmcoKSl7IHJldHVybjsgfQogICAgICB2YXIgbCA9IGxpbmsub2Zmc2V0TGVmdCwgciA9IGwgKyBsaW5rLm9mZnNldFdpZHRoOwogICAgICB2YXIgdnMgPSBpbm5lci5zY3JvbGxMZWZ0LCB2ZSA9IHZzICsgaW5uZXIuY2xpZW50V2lkdGg7CiAgICAgIGlmKGwgPCB2cyl7IGlubmVyLnNjcm9sbExlZnQgPSBNYXRoLm1heCgwLCBsIC0gMTIpOyB9CiAgICAgIGVsc2UgaWYociA+IHZlKXsgaW5uZXIuc2Nyb2xsTGVmdCA9IHIgLSBpbm5lci5jbGllbnRXaWR0aCArIDEyOyB9CiAgICB9CgogICAgZnVuY3Rpb24gdG9wT2Zmc2V0KCl7CiAgICAgIHZhciB2ID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0tbnB4LXRvcCcpOwogICAgICByZXR1cm4gcGFyc2VJbnQodiwgMTApIHx8IDA7CiAgICB9CiAgICAvKiBEw6lmaWxlbWVudCBhdmVjIGNvbXBlbnNhdGlvbiBkZXMgZGV1eCBtZW51cy4gKi8KICAgIGZ1bmN0aW9uIHRvdGFsT2Zmc2V0KCl7IHJldHVybiB0b3BPZmZzZXQoKSArIG5hdi5vZmZzZXRIZWlnaHQgKyA4OyB9CgogICAgLyogLS0tLSBDb2xsYWdlIDogZml4ZWQgKyBwbGFjZWhvbGRlciBhbnRpLXNhdXQgKG1vZGUgJ2pzJykgLS0tLSAqLwogICAgdmFyIHBoID0gbnVsbDsKICAgIGlmKFNUSUNLX01PREUgPT09ICdqcycpewogICAgICBwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICBwaC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICBuYXYucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocGgsIG5hdik7CiAgICB9CiAgICBmdW5jdGlvbiBzdGljaygpewogICAgICBpZighcGgpeyByZXR1cm47IH0KICAgICAgdmFyIGFuY2hvciA9IChwaC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScpID8gbmF2IDogcGg7CiAgICAgIHZhciBzaG91bGQgPSBhbmNob3IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIDw9IHRvcE9mZnNldCgpOwogICAgICBpZihzaG91bGQgJiYgIW5hdi5jbGFzc0xpc3QuY29udGFpbnMoJ25weC1zdHVjaycpKXsKICAgICAgICBwaC5zdHlsZS5oZWlnaHQgID0gbmF2Lm9mZnNldEhlaWdodCArICdweCc7CiAgICAgICAgcGguc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgbmF2LmNsYXNzTGlzdC5hZGQoJ25weC1zdHVjaycpOwogICAgICB9ZWxzZSBpZighc2hvdWxkICYmIG5hdi5jbGFzc0xpc3QuY29udGFpbnMoJ25weC1zdHVjaycpKXsKICAgICAgICBuYXYuY2xhc3NMaXN0LnJlbW92ZSgnbnB4LXN0dWNrJyk7CiAgICAgICAgcGguc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgfQogICAgfQoKICAgIC8qIC0tLS0gU2VjdGlvbiBhY3RpdmUgLS0tLSAqLwogICAgdmFyIGxhc3RDdXJyZW50ID0gbnVsbDsKICAgIGZ1bmN0aW9uIGhpZ2hsaWdodCgpewogICAgICB2YXIgbGltaXQgPSB0b3RhbE9mZnNldCgpICsgNDsKICAgICAgdmFyIGN1cnJlbnQgPSBudWxsOwogICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZSl7CiAgICAgICAgaWYoZS5zZWN0aW9uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCA8PSBsaW1pdCl7IGN1cnJlbnQgPSBlOyB9CiAgICAgIH0pOwogICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZSl7CiAgICAgICAgZS5saW5rLmNsYXNzTGlzdC50b2dnbGUoJ25weC1hY3RpdmUnLCBlID09PSBjdXJyZW50KTsKICAgICAgfSk7CiAgICAgIGlmKGN1cnJlbnQgIT09IGxhc3RDdXJyZW50KXsKICAgICAgICBsYXN0Q3VycmVudCA9IGN1cnJlbnQ7CiAgICAgICAgaWYoY3VycmVudCl7IHJldmVhbChjdXJyZW50LmxpbmspOyB9CiAgICAgIH0KICAgIH0KCiAgICAvKiAtLS0tIENsaWMgc3VyIHVuZSBlbnRyw6llIC0tLS0gKi8KICAgIHZhciBzbW9vdGggPSAhd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlczsKICAgIGVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlKXsKICAgICAgZS5saW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgdmFyIHkgPSBlLnNlY3Rpb24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0IC0gdG90YWxPZmZzZXQoKTsKICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IHksIGJlaGF2aW9yOiBzbW9vdGggPyAnc21vb3RoJyA6ICdhdXRvJyB9KTsKICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgJyMnICsgZS5zZWN0aW9uLmlkKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBmdW5jdGlvbiBvblNjcm9sbCgpeyBzdGljaygpOyBoaWdobGlnaHQoKTsgfQogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSk7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZnVuY3Rpb24oKXsgZml0KCk7IG9uU2Nyb2xsKCk7IH0pOwogICAgb25TY3JvbGwoKTsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLyogLS0tLSBBbW9yw6dhZ2UgOiB0b3V0ZXMgbGVzIGluc3RhbmNlcywgYXZlYyBxdWVscXVlcyByZWxhbmNlcyAtLS0tLS0KICAgICBMZXMgcm93cyBVbmNvZGUgcGV1dmVudCDDqnRyZSBpbmplY3TDqWVzIGFwcsOocyBsZSBET01Db250ZW50TG9hZGVkCiAgICAgKGxhenkgLyBBSkFYKSA6IG9uIHJldGVudGUgcGVuZGFudCB+Miw1IHMgYXZhbnQgZGUgY29uY2x1cmUuICovCiAgZnVuY3Rpb24gYm9vdCgpewogICAgdmFyIG5hdnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubnB4LXN1Ym5hdjpub3QoW2RhdGEtbnB4LXJlYWR5XSknKTsKICAgIHZhciBwZW5kaW5nID0gMDsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBuYXZzLmxlbmd0aDsgaSsrKXsKICAgICAgaWYoIWluaXQobmF2c1tpXSkpeyBwZW5kaW5nKys7IH0KICAgIH0KICAgIHJldHVybiBwZW5kaW5nOwogIH0KCiAgZnVuY3Rpb24gcnVuKCl7CiAgICBpZihib290KCkgPT09IDApeyByZXR1cm47IH0KICAgIHZhciB0cmllcyA9IDA7CiAgICB2YXIgdGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICB0cmllcysrOwogICAgICB2YXIgbGFzdCA9IHRyaWVzID49IDY7IC8qIDYgeCA0MDAgbXMgKi8KICAgICAgaWYoYm9vdCgpID09PSAwIHx8IGxhc3QpewogICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpOwogICAgICAgIGlmKGxhc3QgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm5weC1zdWJuYXY6bm90KFtkYXRhLW5weC1yZWFkeV0pJykpewogICAgICAgICAgd2Fybk5vdGhpbmdGb3VuZCgpOwogICAgICAgIH0KICAgICAgfQogICAgfSwgNDAwKTsKICB9CgogIGlmKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJyl7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgcnVuKTsKICB9ZWxzZXsKICAgIHJ1bigpOwogIH0KfSkoKTsKPC9zY3JpcHQ+[\/vc_raw_html][\/vc_column][\/vc_row][vc_row unlock_row_content=\u00a0\u00bbyes\u00a0\u00bb row_height_percent=\u00a0\u00bb0&Prime; override_padding=\u00a0\u00bbyes\u00a0\u00bb h_padding=\u00a0\u00bb5&Prime; top_padding=\u00a0\u00bb5&Prime; bottom_padding=\u00a0\u00bb5&Prime; [&hellip;]","og_url":"https:\/\/numpex.org\/fr\/projets-appel-a-projets-2025\/","og_site_name":"NumPEx","article_modified_time":"2026-09-10T20:28:49+00:00","twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"63 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/numpex.org\/fr\/projets-appel-a-projets-2025\/","url":"https:\/\/numpex.org\/fr\/projets-appel-a-projets-2025\/","name":"Projets \u2013 Appel \u00e0 projets 2025 - NumPEx","isPartOf":{"@id":"https:\/\/numpex.org\/fr\/#website"},"datePublished":"2026-08-15T21:49:43+00:00","dateModified":"2026-09-10T20:28:49+00:00","breadcrumb":{"@id":"https:\/\/numpex.org\/fr\/projets-appel-a-projets-2025\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/numpex.org\/fr\/projets-appel-a-projets-2025\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/numpex.org\/fr\/projets-appel-a-projets-2025\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/numpex.org\/fr\/"},{"@type":"ListItem","position":2,"name":"Projets \u2013 Appel \u00e0 projets 2025"}]},{"@type":"WebSite","@id":"https:\/\/numpex.org\/fr\/#website","url":"https:\/\/numpex.org\/fr\/","name":"NumPEx","description":"Digital for Exascale","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/numpex.org\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/numpex.org\/fr\/wp-json\/wp\/v2\/pages\/3567","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/numpex.org\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/numpex.org\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/numpex.org\/fr\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/numpex.org\/fr\/wp-json\/wp\/v2\/comments?post=3567"}],"version-history":[{"count":24,"href":"https:\/\/numpex.org\/fr\/wp-json\/wp\/v2\/pages\/3567\/revisions"}],"predecessor-version":[{"id":4080,"href":"https:\/\/numpex.org\/fr\/wp-json\/wp\/v2\/pages\/3567\/revisions\/4080"}],"wp:attachment":[{"href":"https:\/\/numpex.org\/fr\/wp-json\/wp\/v2\/media?parent=3567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}