/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./public/js/components/product/OptionSetComponent.vue?vue&type=style&index=0&id=66141aab&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.option-set-label[data-v-66141aab] {
        display: block;
}
.option-set-label-active[data-v-66141aab], .option-set-label-active[data-v-66141aab]:hover {
        background-position-x: 14px;
        padding-left: 40px;
}

/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./public/js/components/product/StepComponent.vue?vue&type=style&index=0&id=1a4d1386&scoped=true&lang=css ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.step[data-v-1a4d1386] {
        margin-bottom: 30px;
}

/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./public/js/components/product/ProductLegacyRightComponent.vue?vue&type=style&index=0&id=8e2a91a4&scoped=true&lang=css ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.sticky-offset[data-v-8e2a91a4] {
        top: 56px;
}
.add-to-cart-active[data-v-8e2a91a4]:hover {
        cursor: pointer;
}
.add-sample-link[data-v-8e2a91a4] {
        cursor: pointer;
        text-decoration: underline;
}
.product-form-right__attribute-row[data-v-8e2a91a4] {
        display: flex;
        border-width: 0px;
        border-bottom-width: 1px;
        border-style: dotted;
        --tw-border-opacity: 1;
        border-color: rgb(156 163 175 / var(--tw-border-opacity));
        padding-top: 0.5rem;
        padding-bottom: 0.5rem;
        line-height: 2rem;
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdENvbmZpZy4wNzg1MDc2YS5jc3MiLCJtYXBwaW5ncyI6Ijs7OztBQStGSTtRQUNJLGNBQWM7QUFDbEI7QUFDQTtRQUNJLDJCQUEyQjtRQUMzQixrQkFBa0I7QUFDdEI7Ozs7OztBQzFCQTtRQUNJLG1CQUFtQjtBQUN2Qjs7Ozs7O0FDbUhBO1FBQ0ksU0FBUztBQUNiO0FBQ0E7UUFDSSxlQUFlO0FBQ25CO0FBQ0E7UUFDSSxlQUFlO1FBQ2YsMEJBQTBCO0FBQzlCO0FBRUk7UUFBQSxhQUE2RztRQUE3RyxpQkFBNkc7UUFBN0csd0JBQTZHO1FBQTdHLG9CQUE2RztRQUE3RyxzQkFBNkc7UUFBN0cseURBQTZHO1FBQTdHLG1CQUE2RztRQUE3RyxzQkFBNkc7UUFBN0c7QUFBNkciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93d2hzaG9wLy4vcHVibGljL2pzL2NvbXBvbmVudHMvcHJvZHVjdC9PcHRpb25TZXRDb21wb25lbnQudnVlIiwid2VicGFjazovL3d3aHNob3AvLi9wdWJsaWMvanMvY29tcG9uZW50cy9wcm9kdWN0L1N0ZXBDb21wb25lbnQudnVlIiwid2VicGFjazovL3d3aHNob3AvLi9wdWJsaWMvanMvY29tcG9uZW50cy9wcm9kdWN0L1Byb2R1Y3RMZWdhY3lSaWdodENvbXBvbmVudC52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgOmlkPVwib3B0aW9uU2V0SWRcIj5cbiAgICAgICAgPGRpdiB2LW9uOmNsaWNrPVwidG9nZ2xlQWN0aXZlXCIgY2xhc3M9XCJvcHRpb24tc2V0LWxhYmVsXCIgOmNsYXNzPVwieyAnb3B0aW9uLXNldC1sYWJlbC1hY3RpdmUnOiBhY3RpdmUgfVwiPnt7IGluaXRTZXQubGFiZWx9fTwvZGl2PlxuICAgICAgICA8ZGl2IHYtaWY9XCJhY3RpdmVcIj5cbiAgICAgICAgICAgIDxvcHRpb24tc2V0LWNob2ljZXMgOmF0dHJpYnV0ZS1pZD1cImF0dHJpYnV0ZUlkXCIgOm9wdGlvbnM9XCJpbml0U2V0Lm9wdGlvbnNcIiA6Zmlyc3Qtc2V0PVwiZmlyc3RTZXRcIiA6c2V0LWxhYmVsPVwiaW5pdFNldC5sYWJlbFwiIHYtb246c2V0LWNvbG9yLXZhbHVlPVwic2V0Q29sb3JWYWx1ZVwiPjwvb3B0aW9uLXNldC1jaG9pY2VzPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IE9wdGlvblNldENob2ljZXNDb21wb25lbnQgZnJvbSAnLi9PcHRpb25TZXRDaG9pY2VzQ29tcG9uZW50JztcbiAgICBpbXBvcnQge21hcFN0b3Jlc30gZnJvbSBcInBpbmlhXCI7XG4gICAgaW1wb3J0IHt1c2VQcm9kdWN0Q29uZmlnU3RvcmV9IGZyb20gXCIuLi8uLi9waW5pYS1zdG9yZXMvcHJvZHVjdENvbmZpZ1N0b3JlXCI7XG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBwcm9wczogWydvcHRpb25TZXRJZCcsICdpbml0U2V0JywgJ2F0dHJpYnV0ZUlkJywgJ2ZpcnN0JywgJ3Byb2R1Y3QnXSxcbiAgICAgICAgZGF0YTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAnYWN0aXZlJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ2ZpcnN0U2V0JzogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgICAgIGpzb25PcHRpb25TZXRzICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9kdWN0Q29uZmlnU3RvcmUucHJvZHVjdEFjdGl2ZU9wdGlvblNldDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9kdWN0Q29uZmlnICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9kdWN0Q29uZmlnU3RvcmUucHJvZHVjdENvbmZpZ09iajtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi5tYXBTdG9yZXModXNlUHJvZHVjdENvbmZpZ1N0b3JlKVxuICAgICAgICB9LFxuICAgICAgICB3YXRjaDoge1xuICAgICAgICAgICAganNvbk9wdGlvblNldHM6IGZ1bmN0aW9uIChuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5hbUlBY3RpdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgJ29wdGlvbi1zZXQtY2hvaWNlcyc6IE9wdGlvblNldENob2ljZXNDb21wb25lbnQsXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIHNldENvbG9yVmFsdWU6IGZ1bmN0aW9uIChwYXlsb2FkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnc2V0LWNvbG9yLXZhbHVlJywgcGF5bG9hZClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0b2dnbGVBY3RpdmU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RDb25maWdTdG9yZS5zZXRQcm9kdWN0QWN0aXZlT3B0aW9uU2V0KHsnYXR0cmlidXRlSWQnOiB0aGlzLmF0dHJpYnV0ZUlkLCAnZ3JvdXBJZCc6IHRoaXMub3B0aW9uU2V0SWR9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbmRFY29tbWVyY2VJbXByZXNzaW9ucygpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYW1JQWN0aXZlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNldHMgPSBKU09OLnBhcnNlKHRoaXMuanNvbk9wdGlvblNldHMpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZUlkIGluIHNldHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHNbdGhpcy5hdHRyaWJ1dGVJZF0gPT09IHRoaXMub3B0aW9uU2V0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYXNQcmVTZXRWYWx1ZSgpIHtcbiAgICAgICAgICAgICAgICBsZXQgaXNQcmVTZXRGbGFnID0gZmFsc2VcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTZXQub3B0aW9ucy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsLmlkID09PSBwYXJzZUludCh0aGlzLnByb2R1Y3RDb25maWdbdGhpcy5hdHRyaWJ1dGVJZF0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1ByZVNldEZsYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIHJldHVybiBpc1ByZVNldEZsYWc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VuZEVjb21tZXJjZUltcHJlc3Npb25zOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbGV0IGVjb21tZXJjZURhdGEgPSBbXVxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNldC5vcHRpb25zLmZvckVhY2goZnVuY3Rpb24gKHJvdykge1xuICAgICAgICAgICAgICAgICAgICBlY29tbWVyY2VEYXRhLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMucHJvZHVjdC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMucHJvZHVjdC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmQ6IHRoaXMucHJvZHVjdC5yYW5nZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiB0aGlzLmluaXRTZXQubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50OiByb3cubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9LCB0aGlzKVxuXG4gICAgICAgICAgICAgICAgd2luZG93LmRhdGFMYXllciA9IHdpbmRvdy5kYXRhTGF5ZXIgfHwgW107XG4gICAgICAgICAgICAgICAgd2luZG93LmRhdGFMYXllci5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgJ2Vjb21tZXJjZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdpbXByZXNzaW9ucyc6IGVjb21tZXJjZURhdGEsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlZCgpIHtcbiAgICAgICAgICAgIHRoaXMuZmlyc3RTZXQgPSAhdGhpcy5oYXNQcmVTZXRWYWx1ZSgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZmlyc3QgPT09IHRoaXMub3B0aW9uU2V0SWQgfHwgIXRoaXMuZmlyc3RTZXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUFjdGl2ZSgpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbiAgICAub3B0aW9uLXNldC1sYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgICAub3B0aW9uLXNldC1sYWJlbC1hY3RpdmUsIC5vcHRpb24tc2V0LWxhYmVsLWFjdGl2ZTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogMTRweDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA0MHB4O1xuICAgIH1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cInN0ZXBcIj5cbiAgICAgICAgPGRpdiB2LWlmPVwiZGFrPT09dHJ1ZVwiIGNsYXNzPVwidGx3ZC1tdC0wIHRsd2QtbWItNCB0bHdkLXAtNCB0bHdkLWZvbnQtc2FucyB0bHdkLXRleHQtbGcgdGx3ZC1iZy1zZWNvbmRhcnktZGFya1wiID57eyBwYXJzZWRUcmFuc2xhdGlvbnMuU1RFUCB9fSB7eyBudW1iZXIgfX08L2Rpdj5cbiAgICAgICAgPGRpdiB2LWVsc2UgY2xhc3M9XCJ0bHdkLW10LTAgdGx3ZC1tYi02IHRsd2QtZm9udC1zZXJpZiB0bHdkLXRleHQtMnhsIG1kOnRsd2QtdGV4dC0zeGxcIj57eyBwYXJzZWRUcmFuc2xhdGlvbnMuU1RFUCB9fSB7eyBudW1iZXIgfX08L2Rpdj5cbiAgICAgICAgPGF0dHJpYnV0ZVxuICAgICAgICAgICAgdi1mb3I9XCIoYXR0cmlidXRlLCBpbmRleCkgaW4gYXR0cmlidXRlc1wiXG4gICAgICAgICAgICA6a2V5PVwiaW5kZXhcIlxuICAgICAgICAgICAgOnJlcXVpcmVkPVwiYXR0cmlidXRlLnJlcXVpcmVkXCJcbiAgICAgICAgICAgIDpjb2RlPVwiYXR0cmlidXRlLmNvZGVcIlxuICAgICAgICAgICAgOm9wdGlvbnM9XCJhdHRyaWJ1dGUub3B0aW9uc1wiXG4gICAgICAgICAgICA6YXR0cmlidXRlLWxhYmVsPVwiYXR0cmlidXRlLmxhYmVsXCJcbiAgICAgICAgICAgIDphdHRyaWJ1dGUtbGFiZWwtbG9uZz1cImF0dHJpYnV0ZS5sYWJlbExvbmdcIlxuICAgICAgICAgICAgOmF0dHJpYnV0ZS1kZXNjcmlwdGlvbj1cImF0dHJpYnV0ZS5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICA6YXR0cmlidXRlLWRlc2NyaXB0aW9uLWxvbmc9XCJhdHRyaWJ1dGUuZGVzY3JpcHRpb25Mb25nXCJcbiAgICAgICAgICAgIDphdHRyaWJ1dGUtdHlwZT1cImF0dHJpYnV0ZS50eXBlXCJcbiAgICAgICAgICAgIDphdHRyaWJ1dGUtaWQ9XCJhdHRyaWJ1dGUuYXR0cmlidXRlSWRcIlxuICAgICAgICAgICAgOmF0dHJpYnV0ZS1taW49XCJhdHRyaWJ1dGUubWluXCJcbiAgICAgICAgICAgIDphdHRyaWJ1dGUtbWF4PVwiYXR0cmlidXRlLm1heFwiXG4gICAgICAgICAgICA6YXR0cmlidXRlLWluZGV4PVwiaW5kZXhcIlxuICAgICAgICAgICAgOnVzZS1maXJzdC1vcHRpb249XCJhdHRyaWJ1dGUudXNlRmlyc3RPcHRpb25cIlxuICAgICAgICAgICAgOmF1dG9zZWxlY3QtZmlyc3Q9XCJhdHRyaWJ1dGUuYXV0b1NlbGVjdEZpcnN0XCJcbiAgICAgICAgICAgIDpwcmVzZXQ9XCJwcmVzZXRcIlxuICAgICAgICAgICAgOnByb2R1Y3Q9XCJwcm9kdWN0XCJcbiAgICAgICAgICAgIDphZHZhbmNlZENvbmRpdGlvbnNFcnJvcnM9XCJhZHZhbmNlZENvbmRpdGlvbnNFcnJvcnNcIlxuICAgICAgICAgICAgOmFkdmFuY2VkQ29uZGl0aW9uc0hpZGU9XCJhZHZhbmNlZENvbmRpdGlvbnNIaWRlXCJcbiAgICAgICAgICAgIDpzdGVwPVwibnVtYmVyXCJcbiAgICAgICAgICAgIDpjdXJyZW50LWF0dHJpYnV0ZS1pbmRleD1cInByb2R1Y3RDb25maWdTdG9yZS5jdXJyZW50QXR0cmlidXRlSW5kZXhcIlxuICAgICAgICAgICAgOnVybFVwZGF0ZT1cInVybFVwZGF0ZVwiXG4gICAgICAgICAgICA6dXJsSWRlbnRpZmllcj1cInVybElkZW50aWZpZXJcIlxuICAgICAgICAgICAgQGhpZGVTdGVwPVwiaGlkZVN0ZXBcIlxuICAgICAgICA+PC9hdHRyaWJ1dGU+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCBBdHRyaWJ1dGVDb21wb25lbnQgZnJvbSAnLi9BdHRyaWJ1dGVDb21wb25lbnQnO1xuICAgIGltcG9ydCB7bWFwU3RvcmVzfSBmcm9tIFwicGluaWFcIjtcbiAgICBpbXBvcnQge3VzZVByb2R1Y3RDb25maWdTdG9yZX0gZnJvbSBcIi4uLy4uL3BpbmlhLXN0b3Jlcy9wcm9kdWN0Q29uZmlnU3RvcmVcIjtcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgcHJvcHM6IFsnYXR0cmlidXRlcycsICdudW1iZXInLCAncHJlc2V0cycsICdhZHZhbmNlZENvbmRpdGlvbnNFcnJvcnMnLCAnYWR2YW5jZWRDb25kaXRpb25zSGlkZScsICdwcm9kdWN0JywgJ3VybFVwZGF0ZScsICd1cmxJZGVudGlmaWVyJywgJ2RhayddLFxuICAgICAgICBkYXRhKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAnaW5pdGlhbFJlcXVlc3QnOiB0cnVlLFxuICAgICAgICAgICAgICAgICdwcmVzZXQnOiBudWxsLFxuICAgICAgICAgICAgICAgICdzdGVwTnVtYmVyJzogdGhpcy5udW1iZXJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgJ2F0dHJpYnV0ZSc6IEF0dHJpYnV0ZUNvbXBvbmVudCxcbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgZ2V0U3RlcE51bWJlcigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQodGhpcy5zdGVwTnVtYmVyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoaWRlU3RlcCh0b0hpZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAodG9IaWRlICYmIHRoaXMuYXR0cmlidXRlcy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoJ2hpZGVTdGVwJywgdGhpcy5udW1iZXIpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgcGFyc2VkVHJhbnNsYXRpb25zOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh0aGlzLnByb2R1Y3RDb25maWdTdG9yZS50cmFuc2xhdGlvbnMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLm1hcFN0b3Jlcyh1c2VQcm9kdWN0Q29uZmlnU3RvcmUpLFxuXG4gICAgICAgIH0sXG4gICAgICAgIGJlZm9yZVVwZGF0ZSgpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFJlcXVlc3QgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbiAgICAuc3RlcCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgfVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwibmF2YmFyIHAtMCBzdGlja3ktdG9wIHN0aWNreS1vZmZzZXQgdGx3ZC16LTQwXCIgdi1pZj1cIk9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmxlbmd0aCA+IDAgfHwgaXNTaW1wbGVQcm9kdWN0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWZvcm0tcmlnaHQtb3ZlcnZpZXcgdGx3ZC13LWZ1bGxcIj5cbiAgICAgICAgICAgIDxkaXYgdi1pZj1cImRhaz09PXRydWVcIiBjbGFzcz1cInRsd2QtbXQtMCB0bHdkLW1iLTQgdGx3ZC1wLTQgdGx3ZC1mb250LXNhbnMgdGx3ZC10ZXh0LWxnIHRsd2QtdGV4dC13aGl0ZSB0bHdkLWJnLXByaW1hcnkgdGx3ZC1mb250LXNlbWlib2xkXCIgPnt7IHBhcnNlZFRyYW5zbGF0aW9ucy5ZT1VSX1BST0RVQ1RfWCB9fSB7eyB0aXRsZSB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiB2LWVsc2UgY2xhc3M9XCJ0bHdkLW10LTAgdGx3ZC1tYi02IHRsd2QtZm9udC1zZXJpZiB0bHdkLXRleHQtMS41eGwgbWQ6dGx3ZC10ZXh0LTIuNXhsXCI+e3sgcGFyc2VkVHJhbnNsYXRpb25zLllPVVJfUFJPRFVDVF9YIH19IHt7IHRpdGxlIH19PC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWltYWdlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRsd2QtZmxleCB0bHdkLWdhcC0zXCIgdi1pZj1cImFjdGl2ZUltYWdlICYmIGltYWdlcy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0bHdkLXctNC81XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSA6aHJlZj1cImFjdGl2ZUltYWdlXCIgQGNsaWNrLnN0b3AucHJldmVudD1cIm9wZW5HYWxsZXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyA6c3JjPVwiYWN0aXZlSW1hZ2VcIiBjbGFzcz1cImltZy1mbHVpZCBjb25maWctaW1hZ2UtYWx0ZXJuYXRlIGNvbmZpZy1pbWFnZS1hbHRlcm5hdGUgbXItMlwiIGFsdD1cIlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGx3ZC13LTEvNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1mb3I9XCIoaW1nLCBpbmRleCkgaW4gaW1hZ2VzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyA6Y2xhc3M9XCJoaWdobGlnaHRJbWFnZShpbWcpXCIgOnNyYz1cImltZ1wiIEBjbGljaz1cInN3aXRjaEltYWdlKGltZywgaW5kZXgpXCIgQG1vdXNlb3Zlcj1cInByZWxvYWRJbWFnZShpbWcpXCIgY2xhc3M9XCJpbWctZmx1aWQgY29uZmlnLWltYWdlLWFsdGVybmF0ZSBjb25maWctaW1hZ2UtdGh1bWJuYWlsIHAtMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgdi1lbHNlPlxuICAgICAgICAgICAgICAgICAgICA8YSA6aHJlZj1cImFjdGl2ZUltYWdlXCIgQGNsaWNrLnN0b3AucHJldmVudD1cIm9wZW5JbWFnZVwiIGNsYXNzPVwiZ2xpZ2h0Ym94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIDpzcmM9XCJhY3RpdmVJbWFnZVwiIGNsYXNzPVwiaW1nLWZsdWlkXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1mb3JtLXJpZ2h0LWF0dHJpYnV0ZXNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJwcmljZSAmJiAhZXJyb3IubGVuZ3RoICYmICFpc1NpbXBsZVByb2R1Y3RcIiBjbGFzcz1cInByb2R1Y3QtZm9ybS1yaWdodF9fYXR0cmlidXRlLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBwYXJzZWRUcmFuc2xhdGlvbnMuUFJJQ0UgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0bHdkLWZsZXgtZ3JvdyB0bHdkLXRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGx3ZC1saW5lLXRocm91Z2ggdGx3ZC10ZXh0LXhsXCIgdi1pZj1cIm9yaWdpbmFsUHJpY2VcIj57eyBjdXJyZW5jeVN5bWJvbCB9fSB7eyBvcmlnaW5hbFByaWNlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmljZS1hdHRyXCI+e3sgY3VycmVuY3lTeW1ib2wgfX0ge3sgcHJpY2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhdC1pbmZvXCI+e3sgcGFyc2VkVHJhbnNsYXRpb25zLklOQ0xfVkFUIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1mb3JtLXJpZ2h0X19hdHRyaWJ1dGUtcm93XCIgdi1pZj1cImRlbGl2ZXJ5XCIgdi1odG1sPVwiZGVsaXZlcnlcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8dGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgdi1mb3I9XCIoYXR0cmlidXRlLCBpbmRleCkgaW4gYXR0cmlidXRlc1wiIDprZXk9XCJpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1mb3JtLXJpZ2h0X19hdHRyaWJ1dGUtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1mb3JtLXJpZ2h0X19hdHRyaWJ1dGUtbGFiZWxcIj57eyBhdHRyaWJ1dGUubGFiZWwgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0bHdkLWZsZXgtZ3JvdyB0bHdkLXRleHQtcmlnaHQgcHJvZHVjdC1mb3JtLXJpZ2h0X19hdHRyaWJ1dGUtdmFsdWVcIj57eyBhdHRyaWJ1dGUuY2hvaWNlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJPYmplY3Qua2V5cyhnbGFzc1NpemUpLmxlbmd0aCA+IDAgJiYgYXR0cmlidXRlLmNvZGUgPT09ICdNZWFzdXJlQ29kZSdcIiBjbGFzcz1cInJvdyBvdmVydmlldy1hdHRyIGF0dHItaW5mb3JtYXRpb25hbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29sLTUnPnt7IHBhcnNlZFRyYW5zbGF0aW9ucy5TS1lMSVRFX0dMQVNTX1dEIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdjb2wtNyB0bHdkLXRleHQtcmlnaHQnPjxpIGNsYXNzPVwiZmEgZmEtYXJyb3dzLWFsdC1oXCI+PC9pPiB7eyBnbGFzc1NpemUuZ2xhc3NXaWR0aCB9fSBtbTxiciAvPiA8aSBjbGFzcz1cImZhIGZhLWFycm93cy1hbHQtdlwiPjwvaT4ge3sgZ2xhc3NTaXplLmdsYXNzRHJvcCB9fSBtbTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cInByaWNlICYmICFlcnJvci5sZW5ndGhcIiBjbGFzcz1cInByb2R1Y3QtZm9ybS1yaWdodF9fYXR0cmlidXRlLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBwYXJzZWRUcmFuc2xhdGlvbnMuUFJJQ0UgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0bHdkLWZsZXgtZ3JvdyB0bHdkLXRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGx3ZC1saW5lLXRocm91Z2ggdGx3ZC10ZXh0LXhsXCIgdi1pZj1cIm9yaWdpbmFsUHJpY2VcIj57eyBjdXJyZW5jeVN5bWJvbCB9fSB7eyBvcmlnaW5hbFByaWNlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmljZS1hdHRyXCI+e3sgY3VycmVuY3lTeW1ib2wgfX0ge3sgcHJpY2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhdC1pbmZvXCI+e3sgcGFyc2VkVHJhbnNsYXRpb25zLklOQ0xfVkFUIH19ICh7eyB2YXRQZXJjZW50YWdlIH19JSk8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cInByaWNlICYmICFlcnJvci5sZW5ndGhcIiBjbGFzcz0ndGx3ZC10ZXh0LXJpZ2h0JyB2LWh0bWw9XCJzaGlwcGluZ0Nvc3RcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGx3ZC1weS0yIHRsd2QtYm9yZGVyLWRvdHRlZCB0bHdkLWJvcmRlci1ncmF5LTQwMCB0bHdkLWJvcmRlci0wIHRsd2QtYm9yZGVyLWJcIiB2LWlmPVwiZGVsaXZlcnlcIiB2LWh0bWw9XCJkZWxpdmVyeVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgdi1pZj1cImVycm9yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGx3ZC1sZWFkaW5nLTUgdGx3ZC1tLTQgdGx3ZC10ZXh0LWNlbnRlclwiIHYtaHRtbD1cImVycm9yXCI+PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1iLTNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZC10by1jYXJ0IGJ0bi1ibG9ja1wiIDpjbGFzcz1cInsnYWRkLXRvLWNhcnQtYWN0aXZlJzogcHJvZHVjdENvbmZpZ0lzVmFsaWR9XCIgdi1vbjpjbGljaz1cIiRlbWl0KCdhZGRUb0NhcnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcnQtdHh0XCI+e3sgcGFyc2VkVHJhbnNsYXRpb25zLkFERF9UT19DQVJUIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiB2LWlmPVwic2hvcFJhbmdlID09PSAnSldGJ1wiIGNsYXNzPVwiZC1ibG9jayBhZGQtc2FtcGxlLWxpbmtcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRsd2QtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJzYW5zLXNlcmlmXCIgQGNsaWNrPVwiJGVtaXQoJ2FkZFNhbXBsZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcnQtdHh0XCI+PGkgY2xhc3M9XCJmYXMgZmEtY3V0XCI+PC9pPiB7eyBwYXJzZWRUcmFuc2xhdGlvbnMuQUREX1NBTVBMRV9UT19DQVJUIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3gtYmVsb3ctYWRkLXRvLWNhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRsd2QtdGV4dC1jZW50ZXJcIj57eyBwYXJzZWRUcmFuc2xhdGlvbnMuQk9YX0JFTE9XX0FERF9UT19DQVJUIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwidHlwZW9mIHBhcnNlZFRyYW5zbGF0aW9uc1twcm9kdWN0LmxlYWRfdGltZV9zdHJdICE9PSAndW5kZWZpbmVkJ1wiPnt7IHBhcnNlZFRyYW5zbGF0aW9ucy5ERVNQQVRDSF9OT1RFX0xBQkVMICtgOiBgKyBwYXJzZWRUcmFuc2xhdGlvbnNbcHJvZHVjdC5sZWFkX3RpbWVfc3RyXSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IEdMaWdodGJveCBmcm9tICdnbGlnaHRib3gnO1xuICAgIGltcG9ydCB7bWFwU3RvcmVzfSBmcm9tIFwicGluaWFcIjtcbiAgICBpbXBvcnQge3VzZVByb2R1Y3RDb25maWdTdG9yZX0gZnJvbSBcIi4uLy4uL3BpbmlhLXN0b3Jlcy9wcm9kdWN0Q29uZmlnU3RvcmVcIjtcblxuICAgIGxldCBnbGlnaHRib3ggPSBuZXcgR0xpZ2h0Ym94KCk7XG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIHByb3BzOiBbXG4gICAgICAgICAgICAncHJvZHVjdCcsXG4gICAgICAgICAgICAnc3RlcHMnLFxuICAgICAgICAgICAgJ2pzb25SZWFkYWJsZUNvbmZpZycsXG4gICAgICAgICAgICAnaW1hZ2VzJyxcbiAgICAgICAgICAgICdwcmljZScsXG4gICAgICAgICAgICAnb3JpZ2luYWxQcmljZScsXG4gICAgICAgICAgICAnZGVsaXZlcnknLFxuICAgICAgICAgICAgJ3NoaXBwaW5nQ29zdCcsXG4gICAgICAgICAgICAnZ2xhc3NTaXplJyxcbiAgICAgICAgICAgICd0aXRsZScsXG4gICAgICAgICAgICAnY3VycmVuY3lTeW1ib2wnLFxuICAgICAgICAgICAgJ3Byb2R1Y3RDb25maWdJc1ZhbGlkJyxcbiAgICAgICAgICAgICdpc1NpbXBsZVByb2R1Y3QnLFxuICAgICAgICAgICAgJ3Nob3BSYW5nZScsXG4gICAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICAgJ3ZhdFBlcmNlbnRhZ2UnLFxuICAgICAgICAgICAgJ2RhaydcbiAgICAgICAgXSxcbiAgICAgICAgZGF0YTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVJbWFnZTogbnVsbCxcbiAgICAgICAgICAgICAgICBhY3RpdmVJbmRleDogMFxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2RzOiB7XG4gICAgICAgICAgICBzZXRJbWFnZXMgKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmltYWdlcyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHRoaXMuaW1hZ2VzKSA/IHRoaXMuc3dpdGNoSW1hZ2UodGhpcy5pbWFnZXNbMF0pOiB0aGlzLnN3aXRjaEltYWdlKHRoaXMuaW1hZ2VzLm1haW4pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByZWxvYWRJbWFnZShzcmMpIHtcbiAgICAgICAgICAgICAgICBzcmMgPSBzcmMucmVwbGFjZSgndy0xMDAnLCAndy04MDAnKTtcbiAgICAgICAgICAgICAgICBsZXQgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICAgICAgaW1nLnNyYyA9IHNyYztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzd2l0Y2hJbWFnZShzcmMsIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgc3JjID0gc3JjLnJlcGxhY2UoJ3ctMTAwJywgJ3ctODAwJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVJbWFnZSA9IHNyYztcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWdobGlnaHRJbWFnZShzcmMpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVJbWFnZSA9PT0gc3JjLnJlcGxhY2UoJ3ctMTAwJywgJ3ctODAwJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdjb25maWctaW1hZ2UtYWx0ZXJuYXRlLWFjdGl2ZSdcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3BlbkltYWdlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZ2xpZ2h0Ym94LnNldEVsZW1lbnRzKFt7J2hyZWYnOiB0aGlzLmFjdGl2ZUltYWdlLnJlcGxhY2UoJ3ctMTAwJywgJ3ctODAwJyl9XSk7XG4gICAgICAgICAgICAgICAgZ2xpZ2h0Ym94Lm9wZW4oKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvcGVuR2FsbGVyeTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuaW1hZ2VzKSkge1xuICAgICAgICAgICAgICAgICAgICBnbGlnaHRib3guc2V0RWxlbWVudHModGhpcy5pbWFnZXMubWFwKGVsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7J2hyZWYnOiBlbC5yZXBsYWNlKCd3LTEwMCcsICd3LTgwMCcpLCAndHlwZSc6ICdpbWFnZSd9XG4gICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBnbGlnaHRib3gub3BlbkF0KHRoaXMuYWN0aXZlSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgYXR0cmlidXRlczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGxldCBhdHRycyA9IFtdO1xuICAgICAgICAgICAgICAgIGxldCByZWFkYWJsZUNvbmZpZyA9IEpTT04ucGFyc2UodGhpcy5qc29uUmVhZGFibGVDb25maWcpO1xuICAgICAgICAgICAgICAgIGxldCBjaG9pY2U7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgeCBpbiB0aGlzLnN0ZXBzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RlcHNbeF0uZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhdHRySWQgPSB0aGlzLnN0ZXBzW3hdW2luZGV4XS5hdHRyaWJ1dGVJZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVhZGFibGVDb25maWdbYXR0cklkXSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZSA9IHJlYWRhYmxlQ29uZmlnW2F0dHJJZF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZSA9IHRoaXMucGFyc2VkVHJhbnNsYXRpb25zLkZJTExfSU47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRycy5wdXNoKHtsYWJlbDogdGhpcy5zdGVwc1t4XVtpbmRleF0ubGFiZWwsIGNvZGU6IHRoaXMuc3RlcHNbeF1baW5kZXhdLmNvZGUsIGNob2ljZTogY2hvaWNlfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJzO1xuXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFyc2VkVHJhbnNsYXRpb25zOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh0aGlzLnByb2R1Y3RDb25maWdTdG9yZS50cmFuc2xhdGlvbnMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLm1hcFN0b3Jlcyh1c2VQcm9kdWN0Q29uZmlnU3RvcmUpXG4gICAgICAgIH0sXG4gICAgICAgIHdhdGNoOiB7XG4gICAgICAgICAgICBpbWFnZXMoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRJbWFnZXMoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb3VudGVkKCkge1xuICAgICAgICAgICAgdGhpcy5zZXRJbWFnZXMoKVxuICAgICAgICB9XG4gICAgfVxuPC9zY3JpcHQ+XG48c3R5bGUgc2NvcGVkPlxuICAgIC5zdGlja3ktb2Zmc2V0IHtcbiAgICAgICAgdG9wOiA1NnB4O1xuICAgIH1cbiAgICAuYWRkLXRvLWNhcnQtYWN0aXZlOmhvdmVyIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbiAgICAuYWRkLXNhbXBsZS1saW5rIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG4gICAgLnByb2R1Y3QtZm9ybS1yaWdodF9fYXR0cmlidXRlLXJvdyB7XG4gICAgICAgIEBhcHBseSB0bHdkLWZsZXggdGx3ZC1sZWFkaW5nLTggdGx3ZC1weS0yIHRsd2QtYm9yZGVyLWRvdHRlZCB0bHdkLWJvcmRlci1ncmF5LTQwMCB0bHdkLWJvcmRlci0wIHRsd2QtYm9yZGVyLWI7XG4gICAgfVxuPC9zdHlsZT4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/