{"id":3226,"date":"2025-08-26T12:49:44","date_gmt":"2025-08-26T12:49:44","guid":{"rendered":"https:\/\/frimastudio.com\/?p=3226"},"modified":"2025-08-26T12:54:32","modified_gmt":"2025-08-26T12:54:32","slug":"inspiring-journey-jean-michel-morency","status":"publish","type":"post","link":"https:\/\/frimastudio.com\/en\/inspiring-journey-jean-michel-morency\/","title":{"rendered":"Inspiring Journey: Jean-Michel Morency"},"content":{"rendered":"<style>:root{--color-black: #0d0d1c;--color-white: #efeeeb;--color-white-pure: #ffffff;--color-gray: #d2d0c1;--color-gray-dark: #24272a;--color-blue: #2b79fc;--color-purple: #b25bee;--color-turquoise: #bef3df;--z-main: 1;--z-menu: 9;--z-loader: 10;--max-width: 1920px;--gutter: 24px;--scrollbar-width: 8px;--br-main: 16px}p{margin:0 0 3rem}p:last-child{margin-bottom:0}p.is-style-uppercase{text-transform:uppercase}p.is-style-preheading{color:#44bbd8;text-transform:uppercase}p.is-style-leadparagraph{font-weight:700}\n\/*# sourceMappingURL=data:application\/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9jc3MvX19zZXR0aW5ncy9fc3R5bGUtZ3VpZGUtdmFyaWFibGVzLnNjc3MiLCJwYXJ0cy9ndXRlbmJlcmcvY29yZS1wYXJhZ3JhcGgvc3R5bGUuc2NzcyIsImFzc2V0cy9jc3MvX19zZXR0aW5ncy9fdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFJRSx1QkFDQSx1QkFDQSw0QkFDQSxzQkFDQSwyQkFDQSxzQkFDQSx3QkFDQSwyQkFLQSxZQUNBLFlBQ0EsZUFLQSxvQkFDQSxlQUNBLHVCQUNBLGdCQ3ZCRixFQUNFLGdCQUVBLGFBQ0UsZ0JBR0YscUJBQ0UseUJBR0Ysc0JBQ0UsTUM0Q1EsUUQzQ1IseUJBR0YseUJBRUUiLCJmaWxlIjoicGFydHMvZ3V0ZW5iZXJnL2NvcmUtcGFyYWdyYXBoL3N0eWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIjpyb290IHtcbiAgLyoqXG5cdCogQ29sb3JzXG5cdCovXG4gIC0tY29sb3ItYmxhY2s6ICMwZDBkMWM7XG4gIC0tY29sb3Itd2hpdGU6ICNlZmVlZWI7XG4gIC0tY29sb3Itd2hpdGUtcHVyZTogI2ZmZmZmZjtcbiAgLS1jb2xvci1ncmF5OiAjZDJkMGMxO1xuICAtLWNvbG9yLWdyYXktZGFyazogIzI0MjcyYTtcbiAgLS1jb2xvci1ibHVlOiAjMmI3OWZjO1xuICAtLWNvbG9yLXB1cnBsZTogI2IyNWJlZTtcbiAgLS1jb2xvci10dXJxdW9pc2U6ICNiZWYzZGY7XG5cbiAgLyoqXG5cdCogWi1pbmRleFxuXHQqL1xuICAtLXotbWFpbjogMTtcbiAgLS16LW1lbnU6IDk7XG4gIC0tei1sb2FkZXI6IDEwO1xuXG4gIC8qKlxuICAgICogU2l6ZXNcbiAgICAqL1xuICAtLW1heC13aWR0aDogMTkyMHB4O1xuICAtLWd1dHRlcjogMjRweDtcbiAgLS1zY3JvbGxiYXItd2lkdGg6IDhweDtcbiAgLS1ici1tYWluOiAxNnB4O1xufVxuIiwiQGltcG9ydCBcIl9fc2V0dGluZ3MvaW5pdFwiO1xuXG4vKiBUZXh0IEVsZW1lbnRzICovXG5wIHtcbiAgbWFyZ2luOiAwIDAgcmVtKDMwKTtcblxuICAmOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAmLmlzLXN0eWxlLXVwcGVyY2FzZSB7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgfVxuXG4gICYuaXMtc3R5bGUtcHJlaGVhZGluZyB7XG4gICAgY29sb3I6ICRzZWNvbmRhcnk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgfVxuXG4gICYuaXMtc3R5bGUtbGVhZHBhcmFncmFwaCB7XG4gICAgLy8gQGluY2x1ZGUgZm9udCgxNiwgMjYpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG5cbiAgICBAaW5jbHVkZSBtZWRpYShcIj49bWRcIikge1xuICAgICAgLy8gQGluY2x1ZGUgZm9udCgxOCwgMjgpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gVkFSSUFCTEVTXG5cbi8vIENvbnRhaW5lciB3aWR0aCB2YXJpYWJsZXNcbiRjb250YWluZXItbW9iaWxlOiA3MjBweDtcbiRjb250YWluZXItbGc6IDk2MHB4O1xuJGNvbnRhaW5lci14bDogMTA4MHB4O1xuJGNvbnRhaW5lci14eGw6IDEyMDBweDtcbiRjb250YWluZXItbWF4OiAxNTAwcHg7XG4kY29udGFpbmVyLXBhZGRpbmc6IDM1OyAvL3B4XG5cbi8vIEJsb2NrIFNwYWNpbmdzXG4kc3BhY2luZy1tb2JpbGU6IDUwO1xuJHNwYWNpbmc6IDcwO1xuXG4kbWFyZ2luLW1vYmlsZTogNTA7XG4kbWFyZ2luOiA3MDtcblxuLy8gTWVkaWEgU3BhY2luZ1xuJG1lZGlhLW1hcmdpbjogMjA7IC8vcHhcblxuLy8gVHJhbnNpdGlvbnNcbiRkZWZhdWx0LXRyYW5zaXRpb24tc3BlZWQ6IDAuM3M7XG5cbi8vIE91dGxpbmVcbiRvdXRsaW5lOiAycHggc29saWQgYmx1ZTtcblxuLy9mb250c1xuJGZvbnQtYmFzZTogXCJGaWd0cmVlXCIsIHN5c3RlbS11aSwgc2Fucy1zZXJpZjtcbiRmb250LXNpemUtYmFzZTogMTY7XG4kbGluZS1oZWlnaHQtYmFzZTogMjg7XG5cbiRmb250LXNpemUtbW9iaWxlOiAxNDtcbiRsaW5lLWhlaWdodC1tb2JpbGU6IDI2O1xuXG4vLyBDT0xPUlNcbiRjb2xvci0tYmxhY2s6ICMwMDAwMDA7XG4kY29sb3ItLXdoaXRlOiAjZmZmZmZmO1xuXG4vLyBUZXh0XG4kdGV4dC1jb2xvci1iYXNlOiAjMDAwO1xuJHRleHQtbGlnaHQ6ICRjb2xvci0td2hpdGU7XG4kbGluay1jb2xvcjogI2MzMTMxMztcbiRsaW5rLWhvdmVyLWNvbG9yOiAjMjIyMjIyO1xuXG4vLyBUaGVtZSBDb2xvcnNcbiRjb2xvci0xOiAjNmM4ZTYzO1xuJGNvbG9yLTI6ICNlZDRmMzM7XG4kY29sb3ItMzogI2ZjYjUxNjtcbiRjb2xvci00OiAjMDBhNTk4O1xuJGNvbG9yLTU6ICNiOTljZDM7XG4kY29sb3ItNjogIzk5OTtcbiRjb2xvci03OiAjY2NjO1xuJGNvbG9yLTg6ICMxNzM2NWQ7XG4kY29sb3ItOTogI2NlMmQ0NTtcbiRjb2xvci0xMDogI2YyZjJmMjtcbiRjb2xvci0xMTogIzFhMWExYTtcblxuLy9cbiRwcmltYXJ5OiAjMDE0Mzg0O1xuJHNlY29uZGFyeTogIzQ0YmJkODtcblxuLy9cbiRjb2xvci1iZzogI2Y2ZjZmNjtcbiRib2R5LWJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cbi8vIEJSRUFLUE9JTlRTXG4kYnJlYWtwb2ludHM6IChcbiAgeHM6IDM1MHB4LFxuICBzbTogNTc2cHgsXG4gIG1kOiA3NjhweCxcbiAgbGc6IDk5MnB4LFxuICB4bDogMTI2MHB4LFxuICB4bC14eGw6IDE0MDBweCxcbiAgeHhsOiAxNTYwcHgsXG4gIG1heDogMTkyMHB4LFxuKTtcbiJdfQ== *\/\n<\/style>\n<p class=\"is-style-leadparagraph\">The inspiring journeys initiative aims to highlight members of our teams who stand out for their diverse backgrounds and unique experiences.<\/p>\n\n\n<style>:root{--color-black: #0d0d1c;--color-white: #efeeeb;--color-white-pure: #ffffff;--color-gray: #d2d0c1;--color-gray-dark: #24272a;--color-blue: #2b79fc;--color-purple: #b25bee;--color-turquoise: #bef3df;--z-main: 1;--z-menu: 9;--z-loader: 10;--max-width: 1920px;--gutter: 24px;--scrollbar-width: 8px;--br-main: 16px}h1,h2,h3,h4,h5,h6{margin:0 0 1.2em;color:#000}h1:only-child,h2:only-child,h3:only-child,h4:only-child,h5:only-child,h6:only-child{margin:0}h1.is-style-with-divider,h2.is-style-with-divider,h3.is-style-with-divider,h4.is-style-with-divider,h5.is-style-with-divider,h6.is-style-with-divider{position:relative;padding-bottom:5rem;margin-bottom:5.5rem}h1.is-style-with-divider:before,h2.is-style-with-divider:before,h3.is-style-with-divider:before,h4.is-style-with-divider:before,h5.is-style-with-divider:before,h6.is-style-with-divider:before{content:\"\";width:13.5rem;height:0.2rem;background-color:var(--color-black);left:0;bottom:0;position:absolute}@media(min-width: 992px){h1.is-style-with-divider,h2.is-style-with-divider,h3.is-style-with-divider,h4.is-style-with-divider,h5.is-style-with-divider,h6.is-style-with-divider{margin-bottom:8rem;padding-bottom:8rem}h1.is-style-with-divider:before,h2.is-style-with-divider:before,h3.is-style-with-divider:before,h4.is-style-with-divider:before,h5.is-style-with-divider:before,h6.is-style-with-divider:before{left:3.5rem}}h1{margin-bottom:1.2rem}h2{margin-bottom:1.4rem}h3{margin-bottom:1.9rem}h4{margin-bottom:2.2rem}h5{margin-bottom:2.4rem}h6{margin-bottom:2.3rem}\n\/*# sourceMappingURL=data:application\/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9jc3MvX19zZXR0aW5ncy9fc3R5bGUtZ3VpZGUtdmFyaWFibGVzLnNjc3MiLCJwYXJ0cy9ndXRlbmJlcmcvY29yZS1oZWFkaW5nL3N0eWxlLnNjc3MiLCJhc3NldHMvY3NzL19fc2V0dGluZ3MvX3ZhcmlhYmxlcy5zY3NzIiwiYXNzZXRzL2Nzcy9fX3NldHRpbmdzL19pbmNsdWRlLW1lZGlhLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFJRSx1QkFDQSx1QkFDQSw0QkFDQSxzQkFDQSwyQkFDQSxzQkFDQSx3QkFDQSwyQkFLQSxZQUNBLFlBQ0EsZUFLQSxvQkFDQSxlQUNBLHVCQUNBLGdCQ3ZCRixrQkFNRSxpQkFHQSxNQzJCZ0IsS0R6QmhCLG9GQUNFLFNBR0Ysc0pBQ0Usa0JBQ0Esb0JBQ0EscUJBRUEsZ01BQ0UsV0FDQSxjQUNBLGNBQ0Esb0NBQ0EsT0FDQSxTQUNBLGtCRWloQkYseUJGN2hCRixzSkFnQkksbUJBQ0Esb0JBRUEsZ01BQ0UsYUFNUixHQUNFLHFCQVVGLEdBQ0UscUJBV0YsR0FDRSxxQkFNRixHQUNFLHFCQU1GLEdBQ0UscUJBTUYsR0FDRSIsImZpbGUiOiJwYXJ0cy9ndXRlbmJlcmcvY29yZS1oZWFkaW5nL3N0eWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIjpyb290IHtcbiAgLyoqXG5cdCogQ29sb3JzXG5cdCovXG4gIC0tY29sb3ItYmxhY2s6ICMwZDBkMWM7XG4gIC0tY29sb3Itd2hpdGU6ICNlZmVlZWI7XG4gIC0tY29sb3Itd2hpdGUtcHVyZTogI2ZmZmZmZjtcbiAgLS1jb2xvci1ncmF5OiAjZDJkMGMxO1xuICAtLWNvbG9yLWdyYXktZGFyazogIzI0MjcyYTtcbiAgLS1jb2xvci1ibHVlOiAjMmI3OWZjO1xuICAtLWNvbG9yLXB1cnBsZTogI2IyNWJlZTtcbiAgLS1jb2xvci10dXJxdW9pc2U6ICNiZWYzZGY7XG5cbiAgLyoqXG5cdCogWi1pbmRleFxuXHQqL1xuICAtLXotbWFpbjogMTtcbiAgLS16LW1lbnU6IDk7XG4gIC0tei1sb2FkZXI6IDEwO1xuXG4gIC8qKlxuICAgICogU2l6ZXNcbiAgICAqL1xuICAtLW1heC13aWR0aDogMTkyMHB4O1xuICAtLWd1dHRlcjogMjRweDtcbiAgLS1zY3JvbGxiYXItd2lkdGg6IDhweDtcbiAgLS1ici1tYWluOiAxNnB4O1xufVxuIiwiQGltcG9ydCBcIl9fc2V0dGluZ3MvaW5pdFwiO1xuXG4vKiBIZWFkaW5ncyAqL1xuaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2IHtcbiAgbWFyZ2luOiAwIDAgMS4yZW07XG4gIC8vIGZvbnQtZmFtaWx5OiAkZm9udC1iYXNlO1xuICAvLyBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogJHRleHQtY29sb3ItYmFzZTtcblxuICAmOm9ubHktY2hpbGQge1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gICYuaXMtc3R5bGUtd2l0aC1kaXZpZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZy1ib3R0b206IHJlbSg1MCk7XG4gICAgbWFyZ2luLWJvdHRvbTogcmVtKDU1KTtcblxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICB3aWR0aDogcmVtKDEzNSk7XG4gICAgICBoZWlnaHQ6IHJlbSgyKTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJsYWNrKTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEoXCI+PWxnXCIpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IHJlbSg4MCk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogcmVtKDgwKTtcblxuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBsZWZ0OiByZW0oMzUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5oMSB7XG4gIG1hcmdpbi1ib3R0b206IHJlbSgxMik7XG4gIC8vIGxldHRlci1zcGFjaW5nOiByZW0oMi40NCk7XG4gIC8vIEBpbmNsdWRlIGZvbnQoNDAsIDQ4KTtcbiAgLy8gQGluY2x1ZGUgaDQtc3R5bGU7XG5cbiAgQGluY2x1ZGUgbWVkaWEoXCI+PW1kXCIpIHtcbiAgICAvLyBAaW5jbHVkZSBmb250KDQ5LCA1OC41OSk7XG4gIH1cbn1cblxuaDIge1xuICBtYXJnaW4tYm90dG9tOiByZW0oMTQpO1xuICAvLyBsZXR0ZXItc3BhY2luZzogcmVtKDEuOTUpO1xuICAvLyBmb250LXdlaWdodDogNzAwO1xuICAvLyBAaW5jbHVkZSBoNS1zdHlsZTtcbiAgLy8gQGluY2x1ZGUgZm9udCgzNSwgNDIpO1xuXG4gIEBpbmNsdWRlIG1lZGlhKFwiPj1sZ1wiKSB7XG4gICAgLy8gQGluY2x1ZGUgZm9udCgzMiwgMzgpO1xuICB9XG59XG5cbmgzIHtcbiAgbWFyZ2luLWJvdHRvbTogcmVtKDE5KTtcbiAgLy8gbGV0dGVyLXNwYWNpbmc6IHJlbSgxLjU2KTtcbiAgLy8gQGluY2x1ZGUgZm9udCgzMSwgMzcuNSk7XG4gIC8vIEBpbmNsdWRlIGg1LXN0eWxlO1xufVxuXG5oNCB7XG4gIG1hcmdpbi1ib3R0b206IHJlbSgyMik7XG4gIC8vIGxldHRlci1zcGFjaW5nOiByZW0oMS4yNSk7XG4gIC8vIEBpbmNsdWRlIGZvbnQoMjUsIDMwKTtcbiAgLy8gQGluY2x1ZGUgaDYtc3R5bGU7XG59XG5cbmg1IHtcbiAgbWFyZ2luLWJvdHRvbTogcmVtKDI0KTtcbiAgLy8gbGV0dGVyLXNwYWNpbmc6IHJlbSgxKTtcbiAgLy8gQGluY2x1ZGUgZm9udCgyMCwgMjQpO1xuICAvLyBAaW5jbHVkZSBib2R5LWwtc3R5bGU7XG59XG5cbmg2IHtcbiAgbWFyZ2luLWJvdHRvbTogcmVtKDIzKTtcbiAgLy8gbGV0dGVyLXNwYWNpbmc6IHJlbSgwLjgpO1xuICAvLyBAaW5jbHVkZSBmb250KDE2LCAxOS4yKTtcbiAgLy8gQGluY2x1ZGUgYm9keS1tLXN0eWxlO1xufVxuIiwiLy8gVkFSSUFCTEVTXG5cbi8vIENvbnRhaW5lciB3aWR0aCB2YXJpYWJsZXNcbiRjb250YWluZXItbW9iaWxlOiA3MjBweDtcbiRjb250YWluZXItbGc6IDk2MHB4O1xuJGNvbnRhaW5lci14bDogMTA4MHB4O1xuJGNvbnRhaW5lci14eGw6IDEyMDBweDtcbiRjb250YWluZXItbWF4OiAxNTAwcHg7XG4kY29udGFpbmVyLXBhZGRpbmc6IDM1OyAvL3B4XG5cbi8vIEJsb2NrIFNwYWNpbmdzXG4kc3BhY2luZy1tb2JpbGU6IDUwO1xuJHNwYWNpbmc6IDcwO1xuXG4kbWFyZ2luLW1vYmlsZTogNTA7XG4kbWFyZ2luOiA3MDtcblxuLy8gTWVkaWEgU3BhY2luZ1xuJG1lZGlhLW1hcmdpbjogMjA7IC8vcHhcblxuLy8gVHJhbnNpdGlvbnNcbiRkZWZhdWx0LXRyYW5zaXRpb24tc3BlZWQ6IDAuM3M7XG5cbi8vIE91dGxpbmVcbiRvdXRsaW5lOiAycHggc29saWQgYmx1ZTtcblxuLy9mb250c1xuJGZvbnQtYmFzZTogXCJGaWd0cmVlXCIsIHN5c3RlbS11aSwgc2Fucy1zZXJpZjtcbiRmb250LXNpemUtYmFzZTogMTY7XG4kbGluZS1oZWlnaHQtYmFzZTogMjg7XG5cbiRmb250LXNpemUtbW9iaWxlOiAxNDtcbiRsaW5lLWhlaWdodC1tb2JpbGU6IDI2O1xuXG4vLyBDT0xPUlNcbiRjb2xvci0tYmxhY2s6ICMwMDAwMDA7XG4kY29sb3ItLXdoaXRlOiAjZmZmZmZmO1xuXG4vLyBUZXh0XG4kdGV4dC1jb2xvci1iYXNlOiAjMDAwO1xuJHRleHQtbGlnaHQ6ICRjb2xvci0td2hpdGU7XG4kbGluay1jb2xvcjogI2MzMTMxMztcbiRsaW5rLWhvdmVyLWNvbG9yOiAjMjIyMjIyO1xuXG4vLyBUaGVtZSBDb2xvcnNcbiRjb2xvci0xOiAjNmM4ZTYzO1xuJGNvbG9yLTI6ICNlZDRmMzM7XG4kY29sb3ItMzogI2ZjYjUxNjtcbiRjb2xvci00OiAjMDBhNTk4O1xuJGNvbG9yLTU6ICNiOTljZDM7XG4kY29sb3ItNjogIzk5OTtcbiRjb2xvci03OiAjY2NjO1xuJGNvbG9yLTg6ICMxNzM2NWQ7XG4kY29sb3ItOTogI2NlMmQ0NTtcbiRjb2xvci0xMDogI2YyZjJmMjtcbiRjb2xvci0xMTogIzFhMWExYTtcblxuLy9cbiRwcmltYXJ5OiAjMDE0Mzg0O1xuJHNlY29uZGFyeTogIzQ0YmJkODtcblxuLy9cbiRjb2xvci1iZzogI2Y2ZjZmNjtcbiRib2R5LWJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cbi8vIEJSRUFLUE9JTlRTXG4kYnJlYWtwb2ludHM6IChcbiAgeHM6IDM1MHB4LFxuICBzbTogNTc2cHgsXG4gIG1kOiA3NjhweCxcbiAgbGc6IDk5MnB4LFxuICB4bDogMTI2MHB4LFxuICB4bC14eGw6IDE0MDBweCxcbiAgeHhsOiAxNTYwcHgsXG4gIG1heDogMTkyMHB4LFxuKTtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8gICAgIF8gICAgICAgICAgICBfICAgICAgICAgICBfICAgICAgICAgICAgICAgICAgICAgICAgICAgXyBfXG4vLyAgICAoXykgICAgICAgICAgfCB8ICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF8pXG4vLyAgICAgXyBfIF9fICAgX19ffCB8XyAgIF8gIF9ffCB8IF9fXyAgIF8gX18gX19fICAgX19fICBfX3wgfF8gIF9fIF9cbi8vICAgIHwgfCAnXyBcXCAvIF9ffCB8IHwgfCB8LyBfYCB8LyBfIFxcIHwgJ18gYCBfIFxcIC8gXyBcXC8gX2AgfCB8LyBfYCB8XG4vLyAgICB8IHwgfCB8IHwgKF9ffCB8IHxffCB8IChffCB8ICBfXy8gfCB8IHwgfCB8IHwgIF9fLyAoX3wgfCB8IChffCB8XG4vLyAgICB8X3xffCB8X3xcXF9fX3xffFxcX18sX3xcXF9fLF98XFxfX198IHxffCB8X3wgfF98XFxfX198XFxfXyxffF98XFxfXyxffFxuLy9cbi8vICAgICAgU2ltcGxlLCBlbGVnYW50IGFuZCBtYWludGFpbmFibGUgbWVkaWEgcXVlcmllcyBpbiBTYXNzXG4vLyAgICAgICAgICAgICAgICAgICAgICAgIHYxLjQuOVxuLy9cbi8vICAgICAgICAgICAgICAgIGh0dHA6Ly9pbmNsdWRlLW1lZGlhLmNvbVxuLy9cbi8vICAgICAgICAgQXV0aG9yczogRWR1YXJkbyBCb3VjYXMgKEBlZHVhcmRvYm91Y2FzKVxuLy8gICAgICAgICAgICAgICAgICBIdWdvIEdpcmF1ZGVsIChAaHVnb2dpcmF1ZGVsKVxuLy9cbi8vICAgICAgVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUIGxpY2Vuc2VcblxuXG4vLy8vXG4vLy8gaW5jbHVkZS1tZWRpYSBsaWJyYXJ5IHB1YmxpYyBjb25maWd1cmF0aW9uXG4vLy8gQGF1dGhvciBFZHVhcmRvIEJvdWNhc1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8vXG5cblxuLy8vXG4vLy8gQ3JlYXRlcyBhIGxpc3Qgb2YgZ2xvYmFsIGJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHNpbmdsZSBicmVha3BvaW50IHdpdGggdGhlIGxhYmVsIGBwaG9uZWBcbi8vLyAgJGJyZWFrcG9pbnRzOiAoJ3Bob25lJzogMzIwcHgpO1xuLy8vXG4kYnJlYWtwb2ludHM6IChcbiAgJ3Bob25lJzogMzIwcHgsXG4gICd0YWJsZXQnOiA3NjhweCxcbiAgJ2Rlc2t0b3AnOiAxMDI0cHhcbikgIWRlZmF1bHQ7XG5cblxuLy8vXG4vLy8gQ3JlYXRlcyBhIGxpc3Qgb2Ygc3RhdGljIGV4cHJlc3Npb25zIG9yIG1lZGlhIHR5cGVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHNpbmdsZSBtZWRpYSB0eXBlIChzY3JlZW4pXG4vLy8gICRtZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nOiAnc2NyZWVuJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHN0YXRpYyBleHByZXNzaW9uIHdpdGggbG9naWNhbCBkaXNqdW5jdGlvbiAoT1Igb3BlcmF0b3IpXG4vLy8gICRtZWRpYS1leHByZXNzaW9uczogKFxuLy8vICAgICdyZXRpbmEyeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpJ1xuLy8vICApO1xuLy8vXG4kbWVkaWEtZXhwcmVzc2lvbnM6IChcbiAgJ3NjcmVlbic6ICdzY3JlZW4nLFxuICAncHJpbnQnOiAncHJpbnQnLFxuICAnaGFuZGhlbGQnOiAnaGFuZGhlbGQnLFxuICAnbGFuZHNjYXBlJzogJyhvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICdwb3J0cmFpdCc6ICcob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICdyZXRpbmEyeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpLCAobWluLXJlc29sdXRpb246IDJkcHB4KScsXG4gICdyZXRpbmEzeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAzKSwgKG1pbi1yZXNvbHV0aW9uOiAzNTBkcGkpLCAobWluLXJlc29sdXRpb246IDNkcHB4KSdcbikgIWRlZmF1bHQ7XG5cblxuLy8vXG4vLy8gRGVmaW5lcyBhIG51bWJlciB0byBiZSBhZGRlZCBvciBzdWJ0cmFjdGVkIGZyb20gZWFjaCB1bml0IHdoZW4gZGVjbGFyaW5nIGJyZWFrcG9pbnRzIHdpdGggZXhjbHVzaXZlIGludGVydmFsc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEludGVydmFsIGZvciBwaXhlbHMgaXMgZGVmaW5lZCBhcyBgMWAgYnkgZGVmYXVsdFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPjEyOHB4Jykge31cbi8vL1xuLy8vICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiAxMjlweCkge31cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgZW1zIGlzIGRlZmluZWQgYXMgYDAuMDFgIGJ5IGRlZmF1bHRcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz4yMGVtJykge31cbi8vL1xuLy8vICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiAyMC4wMWVtKSB7fVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEludGVydmFsIGZvciByZW1zIGlzIGRlZmluZWQgYXMgYDAuMWAgYnkgZGVmYXVsdCwgdG8gYmUgdXNlZCB3aXRoIGBmb250LXNpemU6IDYyLjUlO2Bcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz4yLjByZW0nKSB7fVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IDIuMXJlbSkge31cbi8vL1xuJHVuaXQtaW50ZXJ2YWxzOiAoXG4gICdweCc6IDEsXG4gICdlbSc6IDAuMDEsXG4gICdyZW0nOiAwLjEsXG4gICcnOiAwXG4pICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBEZWZpbmVzIHdoZXRoZXIgc3VwcG9ydCBmb3IgbWVkaWEgcXVlcmllcyBpcyBhdmFpbGFibGUsIHVzZWZ1bCBmb3IgY3JlYXRpbmcgc2VwYXJhdGUgc3R5bGVzaGVldHNcbi8vLyBmb3IgYnJvd3NlcnMgdGhhdCBkb24ndCBzdXBwb3J0IG1lZGlhIHF1ZXJpZXMuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRGlzYWJsZXMgc3VwcG9ydCBmb3IgbWVkaWEgcXVlcmllc1xuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICAuZm9vIHtcbi8vLyAgICBjb2xvcjogdG9tYXRvO1xuLy8vICB9XG4vLy9cbiRpbS1tZWRpYS1zdXBwb3J0OiB0cnVlICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBTZWxlY3RzIHdoaWNoIGJyZWFrcG9pbnQgdG8gZW11bGF0ZSB3aGVuIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXMgaXMgZGlzYWJsZWQuIE1lZGlhIHF1ZXJpZXMgdGhhdCBzdGFydCBhdCBvclxuLy8vIGludGVyY2VwdCB0aGUgYnJlYWtwb2ludCB3aWxsIGJlIGRpc3BsYXllZCwgYW55IG90aGVycyB3aWxsIGJlIGlnbm9yZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludFxuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCc7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICAuZm9vIHtcbi8vLyAgICBjb2xvcjogdG9tYXRvO1xuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIE5PVCBzaG93IGJlY2F1c2UgaXQgZG9lcyBub3QgaW50ZXJjZXB0IHRoZSBkZXNrdG9wIGJyZWFrcG9pbnRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ3RhYmxldCc7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIE5vIG91dHB1dCAqL1xuLy8vXG4kaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBTZWxlY3RzIHdoaWNoIG1lZGlhIGV4cHJlc3Npb25zIGFyZSBhbGxvd2VkIGluIGFuIGV4cHJlc3Npb24gZm9yIGl0IHRvIGJlIHVzZWQgd2hlbiBtZWRpYSBxdWVyaWVzXG4vLy8gYXJlIG5vdCBzdXBwb3J0ZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludCBhbmQgY29udGFpbnMgb25seSBhY2NlcHRlZCBtZWRpYSBleHByZXNzaW9uc1xuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCc7XG4vLy8gICRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nKTtcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0JywgJ3NjcmVlbicpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgIC5mb28ge1xuLy8vICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBOT1Qgc2hvdyBiZWNhdXNlIGl0IGludGVyY2VwdHMgdGhlIHN0YXRpYyBicmVha3BvaW50IGJ1dCBjb250YWlucyBhIG1lZGlhIGV4cHJlc3Npb24gdGhhdCBpcyBub3QgYWNjZXB0ZWRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xuLy8vICAkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJyk7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcsICdyZXRpbmEyeCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogTm8gb3V0cHV0ICovXG4vLy9cbiRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nLCAncG9ydHJhaXQnLCAnbGFuZHNjYXBlJykgIWRlZmF1bHQ7XG5cbi8vLy9cbi8vLyBDcm9zcy1lbmdpbmUgbG9nZ2luZyBlbmdpbmVcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLy9cblxuXG4vLy9cbi8vLyBMb2cgYSBtZXNzYWdlIGVpdGhlciB3aXRoIGBAZXJyb3JgIGlmIHN1cHBvcnRlZFxuLy8vIGVsc2Ugd2l0aCBgQHdhcm5gLCB1c2luZyBgZmVhdHVyZS1leGlzdHMoJ2F0LWVycm9yJylgXG4vLy8gdG8gZGV0ZWN0IHN1cHBvcnQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1lc3NhZ2UgLSBNZXNzYWdlIHRvIGxvZ1xuLy8vXG5AZnVuY3Rpb24gaW0tbG9nKCRtZXNzYWdlKSB7XG4gIEBpZiBmZWF0dXJlLWV4aXN0cygnYXQtZXJyb3InKSB7XG4gICAgQGVycm9yICRtZXNzYWdlO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAkbWVzc2FnZTtcbiAgICAkXzogbm9vcCgpO1xuICB9XG5cbiAgQHJldHVybiAkbWVzc2FnZTtcbn1cblxuXG4vLy9cbi8vLyBXcmFwcGVyIG1peGluIGZvciB0aGUgbG9nIGZ1bmN0aW9uIHNvIGl0IGNhbiBiZSB1c2VkIHdpdGggYSBtb3JlIGZyaWVuZGx5XG4vLy8gQVBJIHRoYW4gYEBpZiBpbS1sb2coJy4uJykge31gIG9yIGAkXzogaW0tbG9nKCcuLicpYC4gQmFzaWNhbGx5LCB1c2UgdGhlIGZ1bmN0aW9uXG4vLy8gd2l0aGluIGZ1bmN0aW9ucyBiZWNhdXNlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBpbmNsdWRlIGEgbWl4aW4gaW4gYSBmdW5jdGlvblxuLy8vIGFuZCB1c2UgdGhlIG1peGluIGV2ZXJ5d2hlcmUgZWxzZSBiZWNhdXNlIGl0J3MgbXVjaCBtb3JlIGVsZWdhbnQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1lc3NhZ2UgLSBNZXNzYWdlIHRvIGxvZ1xuLy8vXG5AbWl4aW4gbG9nKCRtZXNzYWdlKSB7XG4gIEBpZiBpbS1sb2coJG1lc3NhZ2UpIHt9XG59XG5cblxuLy8vXG4vLy8gRnVuY3Rpb24gd2l0aCBubyBgQHJldHVybmAgY2FsbGVkIG5leHQgdG8gYEB3YXJuYCBpbiBTYXNzIDMuM1xuLy8vIHRvIHRyaWdnZXIgYSBjb21waWxpbmcgZXJyb3IgYW5kIHN0b3AgdGhlIHByb2Nlc3MuXG4vLy9cbkBmdW5jdGlvbiBub29wKCkge31cblxuLy8vXG4vLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGEgbGlzdCBvZiBjb25kaXRpb25zIGlzIGludGVyY2VwdGVkIGJ5IHRoZSBzdGF0aWMgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gICAkY29uZGl0aW9ucyAgLSBNZWRpYSBxdWVyeSBjb25kaXRpb25zXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29uZGl0aW9ucyBhcmUgaW50ZXJjZXB0ZWQgYnkgdGhlIHN0YXRpYyBicmVha3BvaW50XG4vLy9cbkBmdW5jdGlvbiBpbS1pbnRlcmNlcHRzLXN0YXRpYy1icmVha3BvaW50KCRjb25kaXRpb25zLi4uKSB7XG4gICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQpO1xuXG4gIEBpZiBub3QgJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUge1xuICAgIEBpZiBpbS1sb2coJ2AjeyRpbS1uby1tZWRpYS1icmVha3BvaW50fWAgaXMgbm90IGEgdmFsaWQgYnJlYWtwb2ludC4nKSB7fVxuICB9XG5cbiAgQGVhY2ggJGNvbmRpdGlvbiBpbiAkY29uZGl0aW9ucyB7XG4gICAgQGlmIG5vdCBtYXAtaGFzLWtleSgkbWVkaWEtZXhwcmVzc2lvbnMsICRjb25kaXRpb24pIHtcbiAgICAgICRvcGVyYXRvcjogZ2V0LWV4cHJlc3Npb24tb3BlcmF0b3IoJGNvbmRpdGlvbik7XG4gICAgICAkcHJlZml4OiBnZXQtZXhwcmVzc2lvbi1wcmVmaXgoJG9wZXJhdG9yKTtcbiAgICAgICR2YWx1ZTogZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGNvbmRpdGlvbiwgJG9wZXJhdG9yKTtcblxuICAgICAgQGlmICgkcHJlZml4ID09ICdtYXgnIGFuZCAkdmFsdWUgPD0gJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUpIG9yXG4gICAgICAgICAgKCRwcmVmaXggPT0gJ21pbicgYW5kICR2YWx1ZSA+ICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlKSB7XG4gICAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiBub3QgaW5kZXgoJGltLW5vLW1lZGlhLWV4cHJlc3Npb25zLCAkY29uZGl0aW9uKSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vL1xuLy8vIFBhcnNpbmcgZW5naW5lXG4vLy8gQGF1dGhvciBIdWdvIEdpcmF1ZGVsXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8vXG5cblxuLy8vXG4vLy8gR2V0IG9wZXJhdG9yIG9mIGFuIGV4cHJlc3Npb25cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCBvcGVyYXRvciBmcm9tXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gQW55IG9mIGA+PWAsIGA+YCwgYDw9YCwgYDxgLCBg4omlYCwgYOKJpGBcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRleHByZXNzaW9uKSB7XG4gIEBlYWNoICRvcGVyYXRvciBpbiAoJz49JywgJz4nLCAnPD0nLCAnPCcsICfiiaUnLCAn4omkJykge1xuICAgIEBpZiBzdHItaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAgICAgQHJldHVybiAkb3BlcmF0b3I7XG4gICAgfVxuICB9XG5cbiAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbnNpZGUgYSBmdW5jdGlvbiwgc28gd2UgaGF2ZSB0b1xuICAvLyByZWx5IG9uIHRoZSBgaW0tbG9nKC4uKWAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIGBsb2coLi4pYCBtaXhpbi4gQmVjYXVzZVxuICAvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cbiAgLy8gYSBkdW1teSB2YXJpYWJsZSwgc3VjaCBhcyBgJF9gLiBJZiBhbnlib2R5IGV2ZXIgcmFpc2UgYSBzY29waW5nIGlzc3VlIHdpdGhcbiAgLy8gU2FzcyAzLjMsIGNoYW5nZSB0aGlzIGxpbmUgaW4gYEBpZiBpbS1sb2coLi4pIHt9YCBpbnN0ZWFkLlxuICAkXzogaW0tbG9nKCdObyBvcGVyYXRvciBmb3VuZCBpbiBgI3skZXhwcmVzc2lvbn1gLicpO1xufVxuXG5cbi8vL1xuLy8vIEdldCBkaW1lbnNpb24gb2YgYW4gZXhwcmVzc2lvbiwgYmFzZWQgb24gYSBmb3VuZCBvcGVyYXRvclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBleHRyYWN0IGRpbWVuc2lvbiBmcm9tXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yIGZyb20gYCRleHByZXNzaW9uYFxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIGB3aWR0aGAgb3IgYGhlaWdodGAgKG9yIHBvdGVudGlhbGx5IGFueXRoaW5nIGVsc2UpXG4vLy9cbkBmdW5jdGlvbiBnZXQtZXhwcmVzc2lvbi1kaW1lbnNpb24oJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAkb3BlcmF0b3ItaW5kZXg6IHN0ci1pbmRleCgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHBhcnNlZC1kaW1lbnNpb246IHN0ci1zbGljZSgkZXhwcmVzc2lvbiwgMCwgJG9wZXJhdG9yLWluZGV4IC0gMSk7XG4gICRkaW1lbnNpb246ICd3aWR0aCc7XG5cbiAgQGlmIHN0ci1sZW5ndGgoJHBhcnNlZC1kaW1lbnNpb24pID4gMCB7XG4gICAgJGRpbWVuc2lvbjogJHBhcnNlZC1kaW1lbnNpb247XG4gIH1cblxuICBAcmV0dXJuICRkaW1lbnNpb247XG59XG5cblxuLy8vXG4vLy8gR2V0IGRpbWVuc2lvbiBwcmVmaXggYmFzZWQgb24gYW4gb3BlcmF0b3Jcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3BlcmF0b3IgLSBPcGVyYXRvclxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIGBtaW5gIG9yIGBtYXhgXG4vLy9cbkBmdW5jdGlvbiBnZXQtZXhwcmVzc2lvbi1wcmVmaXgoJG9wZXJhdG9yKSB7XG4gIEByZXR1cm4gaWYoaW5kZXgoKCc8JywgJzw9JywgJ+KJpCcpLCAkb3BlcmF0b3IpLCAnbWF4JywgJ21pbicpO1xufVxuXG5cbi8vL1xuLy8vIEdldCB2YWx1ZSBvZiBhbiBleHByZXNzaW9uLCBiYXNlZCBvbiBhIGZvdW5kIG9wZXJhdG9yXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGV4cHJlc3Npb24gLSBFeHByZXNzaW9uIHRvIGV4dHJhY3QgdmFsdWUgZnJvbVxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3BlcmF0b3IgLSBPcGVyYXRvciBmcm9tIGAkZXhwcmVzc2lvbmBcbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn0gLSBBIG51bWVyaWMgdmFsdWVcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLXZhbHVlKCRleHByZXNzaW9uLCAkb3BlcmF0b3IpIHtcbiAgJG9wZXJhdG9yLWluZGV4OiBzdHItaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG4gICR2YWx1ZTogc3RyLXNsaWNlKCRleHByZXNzaW9uLCAkb3BlcmF0b3ItaW5kZXggKyBzdHItbGVuZ3RoKCRvcGVyYXRvcikpO1xuXG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICR2YWx1ZSkge1xuICAgICR2YWx1ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICR2YWx1ZSk7XG4gIH0gQGVsc2Uge1xuICAgICR2YWx1ZTogdG8tbnVtYmVyKCR2YWx1ZSk7XG4gIH1cblxuICAkaW50ZXJ2YWw6IG1hcC1nZXQoJHVuaXQtaW50ZXJ2YWxzLCB1bml0KCR2YWx1ZSkpO1xuXG4gIEBpZiBub3QgJGludGVydmFsIHtcbiAgICAvLyBJdCBpcyBub3QgcG9zc2libGUgdG8gaW5jbHVkZSBhIG1peGluIGluc2lkZSBhIGZ1bmN0aW9uLCBzbyB3ZSBoYXZlIHRvXG4gICAgLy8gcmVseSBvbiB0aGUgYGltLWxvZyguLilgIGZ1bmN0aW9uIHJhdGhlciB0aGFuIHRoZSBgbG9nKC4uKWAgbWl4aW4uIEJlY2F1c2VcbiAgICAvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cbiAgICAvLyBhIGR1bW15IHZhcmlhYmxlLCBzdWNoIGFzIGAkX2AuIElmIGFueWJvZHkgZXZlciByYWlzZSBhIHNjb3BpbmcgaXNzdWUgd2l0aFxuICAgIC8vIFNhc3MgMy4zLCBjaGFuZ2UgdGhpcyBsaW5lIGluIGBAaWYgaW0tbG9nKC4uKSB7fWAgaW5zdGVhZC5cbiAgICAkXzogaW0tbG9nKCdVbmtub3duIHVuaXQgYCN7dW5pdCgkdmFsdWUpfWAuJyk7XG4gIH1cblxuICBAaWYgJG9wZXJhdG9yID09ICc+JyB7XG4gICAgJHZhbHVlOiAkdmFsdWUgKyAkaW50ZXJ2YWw7XG4gIH0gQGVsc2UgaWYgJG9wZXJhdG9yID09ICc8JyB7XG4gICAgJHZhbHVlOiAkdmFsdWUgLSAkaW50ZXJ2YWw7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuXG4vLy9cbi8vLyBQYXJzZSBhbiBleHByZXNzaW9uIHRvIHJldHVybiBhIHZhbGlkIG1lZGlhLXF1ZXJ5IGV4cHJlc3Npb25cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gcGFyc2Vcbi8vL1xuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBWYWxpZCBtZWRpYSBxdWVyeVxuLy8vXG5AZnVuY3Rpb24gcGFyc2UtZXhwcmVzc2lvbigkZXhwcmVzc2lvbikge1xuICAvLyBJZiBpdCBpcyBwYXJ0IG9mICRtZWRpYS1leHByZXNzaW9ucywgaXQgaGFzIG5vIG9wZXJhdG9yXG4gIC8vIHRoZW4gdGhlcmUgaXMgbm8gbmVlZCB0byBnbyBhbnkgZnVydGhlciwganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gIEBpZiBtYXAtaGFzLWtleSgkbWVkaWEtZXhwcmVzc2lvbnMsICRleHByZXNzaW9uKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRtZWRpYS1leHByZXNzaW9ucywgJGV4cHJlc3Npb24pO1xuICB9XG5cbiAgJG9wZXJhdG9yOiBnZXQtZXhwcmVzc2lvbi1vcGVyYXRvcigkZXhwcmVzc2lvbik7XG4gICRkaW1lbnNpb246IGdldC1leHByZXNzaW9uLWRpbWVuc2lvbigkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHByZWZpeDogZ2V0LWV4cHJlc3Npb24tcHJlZml4KCRvcGVyYXRvcik7XG4gICR2YWx1ZTogZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG5cbiAgQHJldHVybiAnKCN7JHByZWZpeH0tI3skZGltZW5zaW9ufTogI3skdmFsdWV9KSc7XG59XG5cbi8vL1xuLy8vIFNsaWNlIGAkbGlzdGAgYmV0d2VlbiBgJHN0YXJ0YCBhbmQgYCRlbmRgIGluZGV4ZXNcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdCAtIExpc3QgdG8gc2xpY2Vcbi8vLyBAcGFyYW0ge051bWJlcn0gJHN0YXJ0IFsxXSAtIFN0YXJ0IGluZGV4XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRlbmQgW2xlbmd0aCgkbGlzdCldIC0gRW5kIGluZGV4XG4vLy9cbi8vLyBAcmV0dXJuIHtMaXN0fSBTbGljZWQgbGlzdFxuLy8vXG5AZnVuY3Rpb24gc2xpY2UoJGxpc3QsICRzdGFydDogMSwgJGVuZDogbGVuZ3RoKCRsaXN0KSkge1xuICBAaWYgbGVuZ3RoKCRsaXN0KSA8IDEgb3IgJHN0YXJ0ID4gJGVuZCB7XG4gICAgQHJldHVybiAoKTtcbiAgfVxuXG4gICRyZXN1bHQ6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgdGhyb3VnaCAkZW5kIHtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgbnRoKCRsaXN0LCAkaSkpO1xuICB9XG5cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG4vLy8vXG4vLy8gU3RyaW5nIHRvIG51bWJlciBjb252ZXJ0ZXJcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLy9cblxuXG4vLy9cbi8vLyBDYXN0cyBhIHN0cmluZyBpbnRvIGEgbnVtYmVyXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJHZhbHVlIC0gVmFsdWUgdG8gYmUgcGFyc2VkXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9XG4vLy9cbkBmdW5jdGlvbiB0by1udW1iZXIoJHZhbHVlKSB7XG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gJ251bWJlcicge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHZhbHVlKSAhPSAnc3RyaW5nJyB7XG4gICAgJF86IGltLWxvZygnVmFsdWUgZm9yIGB0by1udW1iZXJgIHNob3VsZCBiZSBhIG51bWJlciBvciBhIHN0cmluZy4nKTtcbiAgfVxuXG4gICRmaXJzdC1jaGFyYWN0ZXI6IHN0ci1zbGljZSgkdmFsdWUsIDEsIDEpO1xuICAkcmVzdWx0OiAwO1xuICAkZGlnaXRzOiAwO1xuICAkbWludXM6ICgkZmlyc3QtY2hhcmFjdGVyID09ICctJyk7XG4gICRudW1iZXJzOiAoJzAnOiAwLCAnMSc6IDEsICcyJzogMiwgJzMnOiAzLCAnNCc6IDQsICc1JzogNSwgJzYnOiA2LCAnNyc6IDcsICc4JzogOCwgJzknOiA5KTtcblxuICAvLyBSZW1vdmUgKy8tIHNpZ24gaWYgcHJlc2VudCBhdCBmaXJzdCBjaGFyYWN0ZXJcbiAgQGlmICgkZmlyc3QtY2hhcmFjdGVyID09ICcrJyBvciAkZmlyc3QtY2hhcmFjdGVyID09ICctJykge1xuICAgICR2YWx1ZTogc3RyLXNsaWNlKCR2YWx1ZSwgMik7XG4gIH1cblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIHN0ci1sZW5ndGgoJHZhbHVlKSB7XG4gICAgJGNoYXJhY3Rlcjogc3RyLXNsaWNlKCR2YWx1ZSwgJGksICRpKTtcblxuICAgIEBpZiBub3QgKGluZGV4KG1hcC1rZXlzKCRudW1iZXJzKSwgJGNoYXJhY3Rlcikgb3IgJGNoYXJhY3RlciA9PSAnLicpIHtcbiAgICAgIEByZXR1cm4gdG8tbGVuZ3RoKGlmKCRtaW51cywgLSRyZXN1bHQsICRyZXN1bHQpLCBzdHItc2xpY2UoJHZhbHVlLCAkaSkpXG4gICAgfVxuXG4gICAgQGlmICRjaGFyYWN0ZXIgPT0gJy4nIHtcbiAgICAgICRkaWdpdHM6IDE7XG4gICAgfSBAZWxzZSBpZiAkZGlnaXRzID09IDAge1xuICAgICAgJHJlc3VsdDogJHJlc3VsdCAqIDEwICsgbWFwLWdldCgkbnVtYmVycywgJGNoYXJhY3Rlcik7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZGlnaXRzOiAkZGlnaXRzICogMTA7XG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICsgbWFwLWdldCgkbnVtYmVycywgJGNoYXJhY3RlcikgLyAkZGlnaXRzO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gaWYoJG1pbnVzLCAtJHJlc3VsdCwgJHJlc3VsdCk7XG59XG5cblxuLy8vXG4vLy8gQWRkIGAkdW5pdGAgdG8gYCR2YWx1ZWBcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBWYWx1ZSB0byBhZGQgdW5pdCB0b1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdW5pdCAtIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdW5pdFxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIGAkdmFsdWVgIGV4cHJlc3NlZCBpbiBgJHVuaXRgXG4vLy9cbkBmdW5jdGlvbiB0by1sZW5ndGgoJHZhbHVlLCAkdW5pdCkge1xuICAkdW5pdHM6ICgncHgnOiAxcHgsICdjbSc6IDFjbSwgJ21tJzogMW1tLCAnJSc6IDElLCAnY2gnOiAxY2gsICdwYyc6IDFwYywgJ2luJzogMWluLCAnZW0nOiAxZW0sICdyZW0nOiAxcmVtLCAncHQnOiAxcHQsICdleCc6IDFleCwgJ3Z3JzogMXZ3LCAndmgnOiAxdmgsICd2bWluJzogMXZtaW4sICd2bWF4JzogMXZtYXgpO1xuXG4gIEBpZiBub3QgaW5kZXgobWFwLWtleXMoJHVuaXRzKSwgJHVuaXQpIHtcbiAgICAkXzogaW0tbG9nKCdJbnZhbGlkIHVuaXQgYCN7JHVuaXR9YC4nKTtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlICogbWFwLWdldCgkdW5pdHMsICR1bml0KTtcbn1cblxuLy8vXG4vLy8gVGhpcyBtaXhpbiBhaW1zIGF0IHJlZGVmaW5pbmcgdGhlIGNvbmZpZ3VyYXRpb24ganVzdCBmb3IgdGhlIHNjb3BlIG9mXG4vLy8gdGhlIGNhbGwuIEl0IGlzIGhlbHBmdWwgd2hlbiBoYXZpbmcgYSBjb21wb25lbnQgbmVlZGluZyBhbiBleHRlbmRlZFxuLy8vIGNvbmZpZ3VyYXRpb24gc3VjaCBhcyBjdXN0b20gYnJlYWtwb2ludHMgKHJlZmVycmVkIHRvIGFzIHR3ZWFrcG9pbnRzKVxuLy8vIGZvciBpbnN0YW5jZS5cbi8vL1xuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICR0d2Vha3BvaW50cyBbKCldIC0gTWFwIG9mIHR3ZWFrcG9pbnRzIHRvIGJlIG1lcmdlZCB3aXRoIGAkYnJlYWtwb2ludHNgXG4vLy8gQHBhcmFtIHtNYXB9ICR0d2Vhay1tZWRpYS1leHByZXNzaW9ucyBbKCldIC0gTWFwIG9mIHR3ZWFrZWQgbWVkaWEgZXhwcmVzc2lvbnMgdG8gYmUgbWVyZ2VkIHdpdGggYCRtZWRpYS1leHByZXNzaW9uYFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEV4dGVuZCB0aGUgZ2xvYmFsIGJyZWFrcG9pbnRzIHdpdGggYSB0d2Vha3BvaW50XG4vLy8gIEBpbmNsdWRlIG1lZGlhLWNvbnRleHQoKCdjdXN0b20nOiA2NzhweCkpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnLCAnPD1jdXN0b20nKSB7XG4vLy8gICAgICAgLy8gLi4uXG4vLy8gICAgICB9XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRXh0ZW5kIHRoZSBnbG9iYWwgbWVkaWEgZXhwcmVzc2lvbnMgd2l0aCBhIGN1c3RvbSBvbmVcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgkdHdlYWstbWVkaWEtZXhwcmVzc2lvbnM6ICgnYWxsJzogJ2FsbCcpKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBAaW5jbHVkZSBtZWRpYSgnYWxsJywgJz5waG9uZScpIHtcbi8vLyAgICAgICAvLyAuLi5cbi8vLyAgICAgIH1cbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBFeHRlbmQgYm90aCBjb25maWd1cmF0aW9uIG1hcHNcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgoJ2N1c3RvbSc6IDY3OHB4KSwgKCdhbGwnOiAnYWxsJykpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCdhbGwnLCAnPnBob25lJywgJzw9Y3VzdG9tJykge1xuLy8vICAgICAgIC8vIC4uLlxuLy8vICAgICAgfVxuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG5AbWl4aW4gbWVkaWEtY29udGV4dCgkdHdlYWtwb2ludHM6ICgpLCAkdHdlYWstbWVkaWEtZXhwcmVzc2lvbnM6ICgpKSB7XG4gIC8vIFNhdmUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGdsb2JhbC1icmVha3BvaW50czogJGJyZWFrcG9pbnRzO1xuICAkZ2xvYmFsLW1lZGlhLWV4cHJlc3Npb25zOiAkbWVkaWEtZXhwcmVzc2lvbnM7XG5cbiAgLy8gVXBkYXRlIGdsb2JhbCBjb25maWd1cmF0aW9uXG4gICRicmVha3BvaW50czogbWFwLW1lcmdlKCRicmVha3BvaW50cywgJHR3ZWFrcG9pbnRzKSAhZ2xvYmFsO1xuICAkbWVkaWEtZXhwcmVzc2lvbnM6IG1hcC1tZXJnZSgkbWVkaWEtZXhwcmVzc2lvbnMsICR0d2Vhay1tZWRpYS1leHByZXNzaW9ucykgIWdsb2JhbDtcblxuICBAY29udGVudDtcblxuICAvLyBSZXN0b3JlIGdsb2JhbCBjb25maWd1cmF0aW9uXG4gICRicmVha3BvaW50czogJGdsb2JhbC1icmVha3BvaW50cyAhZ2xvYmFsO1xuICAkbWVkaWEtZXhwcmVzc2lvbnM6ICRnbG9iYWwtbWVkaWEtZXhwcmVzc2lvbnMgIWdsb2JhbDtcbn1cblxuLy8vL1xuLy8vIGluY2x1ZGUtbWVkaWEgcHVibGljIGV4cG9zZWQgQVBJXG4vLy8gQGF1dGhvciBFZHVhcmRvIEJvdWNhc1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8vXG5cblxuLy8vXG4vLy8gR2VuZXJhdGVzIGEgbWVkaWEgcXVlcnkgYmFzZWQgb24gYSBsaXN0IG9mIGNvbmRpdGlvbnNcbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gICAkY29uZGl0aW9ucyAgLSBNZWRpYSBxdWVyeSBjb25kaXRpb25zXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBhIHNpbmdsZSBzZXQgYnJlYWtwb2ludFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPnBob25lJykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCB0d28gc2V0IGJyZWFrcG9pbnRzXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnLCAnPD10YWJsZXQnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIGN1c3RvbSB2YWx1ZXNcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49MzU4cHgnLCAnPDg1MHB4JykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBzZXQgYnJlYWtwb2ludHMgd2l0aCBjdXN0b20gdmFsdWVzXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+ZGVza3RvcCcsICc8PTEzNTBweCcpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggYSBzdGF0aWMgZXhwcmVzc2lvblxuLy8vICBAaW5jbHVkZSBtZWRpYSgncmV0aW5hMngnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBNaXhpbmcgZXZlcnl0aGluZ1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj0zNTBweCcsICc8dGFibGV0JywgJ3JldGluYTN4JykgeyB9XG4vLy9cbkBtaXhpbiBtZWRpYSgkY29uZGl0aW9ucy4uLikge1xuICBAaWYgKCRpbS1tZWRpYS1zdXBwb3J0IGFuZCBsZW5ndGgoJGNvbmRpdGlvbnMpID09IDApIG9yXG4gICAgICAobm90ICRpbS1tZWRpYS1zdXBwb3J0IGFuZCBpbS1pbnRlcmNlcHRzLXN0YXRpYy1icmVha3BvaW50KCRjb25kaXRpb25zLi4uKSkge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIGlmICgkaW0tbWVkaWEtc3VwcG9ydCBhbmQgbGVuZ3RoKCRjb25kaXRpb25zKSA+IDApIHtcbiAgICBAbWVkaWEgI3t1bnF1b3RlKHBhcnNlLWV4cHJlc3Npb24obnRoKCRjb25kaXRpb25zLCAxKSkpfSB7XG4gICAgICAvLyBSZWN1cnNpdmUgY2FsbFxuICAgICAgQGluY2x1ZGUgbWVkaWEoc2xpY2UoJGNvbmRpdGlvbnMsIDIpLi4uKSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19 *\/\n<\/style>\n<h2 class=\"wp-block-heading\"><strong><strong>What is an inspiring journey at Frima?<\/strong><\/strong><\/h2>\n\n\n\n<p>It is a professional path that reflects both personal and professional growth. It can include career evolution, impactful involvement, alignment with the company\u2019s values, and more.<\/p>\n\n\n\n<p>With over 15 years of experience at Frima, Jean-Michel, Senior Concept Artist, shares key moments from his journey, lessons that shaped it, and what continues to fuel his commitment and creativity. Over the years, he has managed to evolve in his role, take on challenges, and contribute to numerous projects.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1. <strong>Jean-Michel, tell us about your journey at Frima<\/strong><\/strong><\/h2>\n\n\n\n<p>I could say I\u2019m part of the furniture at Frima, since I\u2019ve been working here for 17 years. <\/p>\n\n\n\n<p>I studied 2D animation at C\u00e9gep du Vieux Montr\u00e9al, then returned to Qu\u00e9bec City to start my career. I joined Frima as a 2D animator in a small team, dreaming of becoming an illustrator or concept artist. At that time, I was sometimes the only artist assigned to intellectual property projects, which allowed me to do a bit of everything: animation, 2D visuals, and UI design. This versatility was a real springboard. The turning point came when I was assigned an entirely 3D intellectual property, with no 2D animation to create. That project allowed me to fully dive into illustration and visual concept creation, marking the beginning of my transition to a 2D and concept artist role.<br><br>My experience and growth at Frima later led me to take on the position of assistant art director, a role in which I handled visual creation while also tracking tasks and giving feedback to artists to ensure artistic coherence across projects. In 2020, I was recommended for an art direction role, a challenge I accepted. While I was developing many new skills, I realized I preferred working directly on games. That\u2019s why, after three years, I decided to return as a senior concept artist, a decision I do not regret at all, because I truly feel in my element in this role.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2. <strong><strong><strong>What project are you most proud of so far? And why?<\/strong><\/strong><\/strong><\/strong><\/h2>\n\n\n\n<p>My favourite project was <a href=\"https:\/\/frimastudio.com\/en\/project\/disciples-liberation\/\"><em>Disciples: Liberation<\/em><\/a>. Beyond being closely aligned with my interests (a universe filled with knights, dragons, and witches) this project allowed me to get involved from the very first stages of development. As assistant art director, I had the chance to design most of the characters and actively contribute to building the game\u2019s visual and narrative universe.<br><br>This role also challenged me on the production side, especially with regard to budget and timelines. I developed strategies to reuse artistic elements in order to optimize the team\u2019s resources while maintaining high quality. These lessons in creative efficiency still serve me today, regardless of the project.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3. <strong>Which of Frima\u2019s values do you feel most strongly about?<\/strong><\/strong><\/h2>\n\n\n\n<p>Definitely the value of cooperation. It\u2019s something I really emphasized in my former role as an art director, where I had to interact with everyone. <strong>Each person is unique, and it\u2019s this complementarity that makes a team strong.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4. <strong>What advice would you give to someone starting out in the profession?<\/strong><\/strong><\/h2>\n\n\n\n<p><strong>I recommend that people work on their versatility. It\u2019s very helpful to have the flexibility to adapt to multiple artistic styles. <\/strong>A junior artist must be able to produce content that aligns with their colleagues\u2019 work and follows the project\u2019s artistic direction. They\u2019ll rarely be the only artist in their discipline on a team.<\/p>\n\n\n\n<p>Another tip: with the new reality of hybrid and remote work, it\u2019s important not to stay isolated or be afraid to ask for help.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5. <strong>What is a typical day like in your role?<\/strong><\/strong><\/h2>\n\n\n\n<p>I\u2019m quite involved with the different creative directors on the artistic side of projects. I also still have some involvement on the strategic side, given my years of experience. Often, my days start with team discussions. We review what\u2019s been done and share feedback.<\/p>\n\n\n\n<p>Then there\u2019s a lot of production work, like character and environment design, and collaboration with the creative team to prepare visuals and presentations for new concepts.<\/p>\n\n\n\n<p>Finally, there\u2019s a very important aspect of mentoring junior-level talent. I help with training plans and support the artists throughout their journey by giving feedback. I really enjoy mentoring, because it allows us to grow together. <strong>It\u2019s very rewarding to help a colleague reach their goals and excel as an artist. Plus, it helps sharpen my critical thinking and improve my communication skills.<\/strong> It\u2019s a win-win, as they say.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>6. <strong>What is your favourite video game ever?<\/strong><\/strong><\/h2>\n\n\n\n<p>My favourite game is <em>Bloodborne<\/em>. It\u2019s the kind of game I love \u2014 horror and combat \u2014 in a universe that fascinates me. What I especially like about the game are the mysteries within the universe that are communicated cryptically through the environment, story fragments you read, etc. These mysteries spark online communities that interpret the story. It would be a dream to create a game that could bring a community like that together.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong><strong>7. <strong>What other departments do you work with the most on a daily basis?<\/strong><\/strong><\/strong><\/h2>\n\n\n\n<p>I collaborate with the creative direction team, mainly on the development of new ideas. We often need mock-ups, so I have to make sure I clearly understand their vision. I also sometimes work with the prototyping team to create storyboards.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>8. <strong>What has been your favourite event or activity since you joined Frima and why?<\/strong><\/strong><\/h2>\n\n\n\n<p>My favourite event was Frima\u2019s 20th anniversary celebration at Village Vacances Valcartier. Management was very generous and spoiled us that day. It was great to see people from outside the Qu\u00e9bec City area and to meet in a different setting as well.<\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>At Frima, it\u2019s the people who make all the difference.&nbsp;<\/strong>Whether it\u2019s through their projects, their attitude, or their team spirit, employees are at the heart of everything we create. Want to learn more about our culture&nbsp;? Take a look at our&nbsp;<a href=\"https:\/\/frimastudio.com\/en\/careers\/\">careers page<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The inspiring journeys initiative aims to highlight members of our teams who stand out for their diverse backgrounds and unique experiences. What is an inspiring journey at&#8230;<\/p>\n","protected":false},"author":12,"featured_media":3231,"comment_status":"closed","ping_status":"closed","sticky":true,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","inline_featured_image":false,"footnotes":""},"categories":[114,50],"tags":[177],"class_list":["post-3226","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-studio-life","category-vie-de-studio-en","tag-inspiring-journey"],"acf":[],"_links":{"self":[{"href":"https:\/\/frimastudio.com\/en\/wp-json\/wp\/v2\/posts\/3226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/frimastudio.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/frimastudio.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/frimastudio.com\/en\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/frimastudio.com\/en\/wp-json\/wp\/v2\/comments?post=3226"}],"version-history":[{"count":4,"href":"https:\/\/frimastudio.com\/en\/wp-json\/wp\/v2\/posts\/3226\/revisions"}],"predecessor-version":[{"id":3242,"href":"https:\/\/frimastudio.com\/en\/wp-json\/wp\/v2\/posts\/3226\/revisions\/3242"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/frimastudio.com\/en\/wp-json\/wp\/v2\/media\/3231"}],"wp:attachment":[{"href":"https:\/\/frimastudio.com\/en\/wp-json\/wp\/v2\/media?parent=3226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/frimastudio.com\/en\/wp-json\/wp\/v2\/categories?post=3226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/frimastudio.com\/en\/wp-json\/wp\/v2\/tags?post=3226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}