valtech-components 2.0.849 → 2.0.850
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/organisms/mfa-modal/mfa-modal.component.mjs +19 -5
- package/esm2022/lib/services/i18n/default-content.mjs +3 -1
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +20 -4
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/mfa-modal/mfa-modal.component.d.ts +4 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -447,6 +447,7 @@ export const VALTECH_DEFAULT_CONTENT = {
|
|
|
447
447
|
mfaEnabledOk: '¡MFA habilitado correctamente!',
|
|
448
448
|
mfaDisabledOk: 'MFA deshabilitado correctamente.',
|
|
449
449
|
mfaCodesCopied: 'Códigos copiados al portapapeles.',
|
|
450
|
+
mfaSecretCopied: 'Secreto copiado al portapapeles.',
|
|
450
451
|
mfaErrorInvalidCode: 'Código incorrecto.',
|
|
451
452
|
mfaErrorExpiredCode: 'El código ha expirado. Solicita uno nuevo.',
|
|
452
453
|
mfaErrorCodeUsed: 'Este código ya fue utilizado.',
|
|
@@ -603,6 +604,7 @@ export const VALTECH_DEFAULT_CONTENT = {
|
|
|
603
604
|
mfaEnabledOk: 'MFA enabled successfully!',
|
|
604
605
|
mfaDisabledOk: 'MFA disabled successfully.',
|
|
605
606
|
mfaCodesCopied: 'Codes copied to clipboard.',
|
|
607
|
+
mfaSecretCopied: 'Secret copied to clipboard.',
|
|
606
608
|
mfaErrorInvalidCode: 'Incorrect code.',
|
|
607
609
|
mfaErrorExpiredCode: 'The code has expired. Request a new one.',
|
|
608
610
|
mfaErrorCodeUsed: 'This code was already used.',
|
|
@@ -724,4 +726,4 @@ export const VALTECH_DEFAULT_CONTENT = {
|
|
|
724
726
|
},
|
|
725
727
|
},
|
|
726
728
|
};
|
|
727
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jb250ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9pMThuL2RlZmF1bHQtY29udGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQWlCO0lBQ25ELE9BQU8sRUFBRTtRQUNQLEVBQUUsRUFBRTtZQUNGLG1CQUFtQjtZQUNuQixNQUFNLEVBQUUsUUFBUTtZQUNoQixNQUFNLEVBQUUsVUFBVTtZQUNsQixJQUFJLEVBQUUsU0FBUztZQUNmLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLElBQUksRUFBRSxRQUFRO1lBQ2QsS0FBSyxFQUFFLFFBQVE7WUFDZixJQUFJLEVBQUUsUUFBUTtZQUNkLElBQUksRUFBRSxXQUFXO1lBQ2pCLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLFNBQVMsRUFBRSxXQUFXO1lBRXRCLFVBQVU7WUFDVixPQUFPLEVBQUUsT0FBTztZQUNoQixLQUFLLEVBQUUsT0FBTztZQUNkLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLElBQUksRUFBRSxhQUFhO1lBRW5CLGlCQUFpQjtZQUNqQixhQUFhLEVBQUUsdUNBQXVDO1lBQ3RELGFBQWEsRUFBRSx1Q0FBdUM7WUFFdEQsbUJBQW1CO1lBQ25CLFNBQVMsRUFBRSw4QkFBOEI7WUFDekMsUUFBUSxFQUFFLHlCQUF5QjtZQUVuQyxhQUFhO1lBQ2IsSUFBSSxFQUFFLFFBQVE7WUFDZCxRQUFRLEVBQUUsZUFBZTtZQUN6QixPQUFPLEVBQUUsUUFBUTtZQUNqQixNQUFNLEVBQUUsZUFBZTtZQUV2QixnQ0FBZ0M7WUFDaEMsV0FBVyxFQUFFLGFBQWE7WUFDMUIsYUFBYSxFQUFFLGVBQWU7WUFDOUIsV0FBVyxFQUFFLGVBQWU7WUFFNUIs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QUFFLHVCQUF1QjtZQUNwQyxhQUFhLEVBQUUsOENBQThDO1lBQzdELFlBQVksRUFBRSxnREFBZ0Q7WUFDOUQsYUFBYSxFQUFFLHVDQUF1QztZQUN0RCxZQUFZLEVBQUUsbUNBQW1DO1lBQ2pELFVBQVUsRUFBRSxzQkFBc0I7U0FDbkM7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZW50U3RvcmUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBUcmFkdWNjaW9uZXMgcG9yIGRlZmVjdG8gZGUgdmFsdGVjaC1jb21wb25lbnRzLlxuICpcbiAqIEVzdGFzIHRyYWR1Y2Npb25lcyBzZSBjYXJnYW4gYXV0b23DoXRpY2FtZW50ZSBjdWFuZG8gc2UgdXNhIHByb3ZpZGVWYWx0ZWNoSTE4bigpXG4gKiBzaW4gbmVjZXNpZGFkIGRlIGNvbmZpZ3VyYWNpw7NuIGFkaWNpb25hbC5cbiAqXG4gKiBMYXMgYXBwcyBwdWVkZW4gc29icmVzY3JpYmlyIGN1YWxxdWllciBrZXkgcGFzYW5kbyBzdSBwcm9waW8gY29udGVudDpcbiAqXG4gKiBAZXhhbXBsZSBTb2JyZXNjcmliaXIgdHJhZHVjY2lvbmVzIGVzcGVjw61maWNhc1xuICogYGBgdHlwZXNjcmlwdFxuICogcHJvdmlkZVZhbHRlY2hJMThuKHtcbiAqICAgY29udGVudDoge1xuICogICAgIF9nbG9iYWw6IHtcbiAqICAgICAgIGVzOiB7IHN1Y2Nlc3M6ICfCoUxvIGhpY2ltb3MhJyB9LCAgLy8gU29icmVzY3JpYmUgc29sbyBlc3RhIGtleVxuICogICAgICAgZW46IHsgc3VjY2VzczogJ1dlIGRpZCBpdCEnIH0sXG4gKiAgICAgfSxcbiAqICAgfSxcbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBEZXNhY3RpdmFyIHRyYWR1Y2Npb25lcyBwb3IgZGVmZWN0b1xuICogYGBgdHlwZXNjcmlwdFxuICogcHJvdmlkZVZhbHRlY2hJMThuKHtcbiAqICAgaW5jbHVkZURlZmF1bHRDb250ZW50OiBmYWxzZSxcbiAqICAgY29udGVudDogTVlfQ1VTVE9NX0NPTlRFTlQsXG4gKiB9KVxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBWQUxURUNIX0RFRkFVTFRfQ09OVEVOVDogQ29udGVudFN0b3JlID0ge1xuICBfZ2xvYmFsOiB7XG4gICAgZXM6IHtcbiAgICAgIC8vIEFjY2lvbmVzIGNvbXVuZXNcbiAgICAgIHN1Ym1pdDogJ0VudmlhcicsXG4gICAgICBjYW5jZWw6ICdDYW5jZWxhcicsXG4gICAgICBzYXZlOiAnR3VhcmRhcicsXG4gICAgICBkZWxldGU6ICdFbGltaW5hcicsXG4gICAgICBlZGl0OiAnRWRpdGFyJyxcbiAgICAgIGNsb3NlOiAnQ2VycmFyJyxcbiAgICAgIGJhY2s6ICdWb2x2ZXInLFxuICAgICAgbmV4dDogJ1NpZ3VpZW50ZScsXG4gICAgICBwcmV2aW91czogJ0FudGVyaW9yJyxcbiAgICAgIGxvYWRpbmc6ICdDYXJnYW5kby4uLicsXG4gICAgICBzZWFyY2g6ICdCdXNjYXInLFxuICAgICAgbGVhcm5Nb3JlOiAnU2FiZXIgbcOhcycsXG5cbiAgICAgIC8vIEVzdGFkb3NcbiAgICAgIHN1Y2Nlc3M6ICfDiXhpdG8nLFxuICAgICAgZXJyb3I6ICdFcnJvcicsXG4gICAgICB3YXJuaW5nOiAnQWR2ZXJ0ZW5jaWEnLFxuICAgICAgaW5mbzogJ0luZm9ybWFjacOzbicsXG5cbiAgICAgIC8vIENvbmZpcm1hY2lvbmVzXG4gICAgICBjb25maXJtRGVsZXRlOiAnwr9Fc3TDoXMgc2VndXJvIGRlIHF1ZSBkZXNlYXMgZWxpbWluYXI/JyxcbiAgICAgIGNvbmZpcm1DYW5jZWw6ICfCv0VzdMOhcyBzZWd1cm8gZGUgcXVlIGRlc2VhcyBjYW5jZWxhcj8nLFxuXG4gICAgICAvLyBNZW5zYWplcyBjb211bmVzXG4gICAgICBub1Jlc3VsdHM6ICdObyBzZSBlbmNvbnRyYXJvbiByZXN1bHRhZG9zJyxcbiAgICAgIHJlcXVpcmVkOiAnRXN0ZSBjYW1wbyBlcyByZXF1ZXJpZG8nLFxuXG4gICAgICAvLyBOYXZlZ2FjacOzblxuICAgICAgaG9tZTogJ0luaWNpbycsXG4gICAgICBzZXR0aW5nczogJ0NvbmZpZ3VyYWNpw7NuJyxcbiAgICAgIHByb2ZpbGU6ICdQZXJmaWwnLFxuICAgICAgbG9nb3V0OiAnQ2VycmFyIHNlc2nDs24nLFxuXG4gICAgICAvLyBHcmVldGluZ3MgKHNhbHVkbyBzZWfDum4gaG9yYSlcbiAgICAgIGdvb2RNb3JuaW5nOiAnQnVlbm9zIGTDrWFzJyxcbiAgICAgIGdvb2RBZnRlcm5vb246ICdCdWVuYXMgdGFyZGVzJyxcbiAgICAgIGdvb2RFdmVuaW5nOiAnQnVlbmFzIG5vY2hlcycsXG5cbiAgICAgIC8vIEF1dGgg4oCUIGNvbmZpcm1hY2nDs24gY2llcnJlIGRlIHNlc2nDs25cbiAgICAgIGxvZ291dENvbmZpcm1UaXRsZTogJ0NlcnJhciBzZXNpw7NuJyxcbiAgICAgIGxvZ291dENvbmZpcm1NZXNzYWdlOiAnwr9TZWd1cm8gcXVlIGRlc2VhcyBjZXJyYXIgc2VzacOzbj8nLFxuXG4gICAgICAvLyBJZGlvbWFzXG4gICAgICBsYW5ndWFnZU5hbWVfZXM6ICdFc3Bhw7FvbCcsXG4gICAgICBsYW5ndWFnZU5hbWVfZW46ICdFbmdsaXNoJyxcblxuICAgICAgLy8gQ29tcG9uZW50ZXMgLSBNb2RhbGVzL1NlbGVjdHNcbiAgICAgIG9rOiAnQWNlcHRhcicsXG4gICAgICBzZWxlY3RPcHRpb246ICdTZWxlY2Npb25hciBvcGNpw7NuJyxcbiAgICAgIHNlbGVjdFBsYWNlaG9sZGVyOiAnU2VsZWNjaW9uYXIuLi4nLFxuICAgICAgaXRlbXNTZWxlY3RlZDogJ2VsZW1lbnRvcyBzZWxlY2Npb25hZG9zJyxcbiAgICAgIHNlbGVjdEFsbDogJ1NlbGVjY2lvbmFyIHRvZG9zJyxcbiAgICAgIGNsZWFyOiAnTGltcGlhcicsXG4gICAgICBhcHBseTogJ0FwbGljYXInLFxuXG4gICAgICAvLyBDb21wb25lbnRlcyAtIEZlY2hhc1xuICAgICAgc3RhcnREYXRlOiAnRmVjaGEgaW5pY2lvJyxcbiAgICAgIGVuZERhdGU6ICdGZWNoYSBmaW4nLFxuICAgICAgZGF5OiAnZMOtYScsXG4gICAgICBkYXlzOiAnZMOtYXMnLFxuXG4gICAgICAvLyBDb21wb25lbnRlcyAtIEZvcm11bGFyaW9zXG4gICAgICB1cGxvYWRGaWxlOiAnU3ViaXIgYXJjaGl2bycsXG4gICAgICBub0ZpbGVTZWxlY3RlZDogJ05vIGhhcyBzZWxlY2Npb25hZG8gYXJjaGl2bycsXG4gICAgICB0aXRsZTogJ1TDrXR1bG8nLFxuICAgICAgZGVzY3JpcHRpb246ICdEZXNjcmlwY2nDs24nLFxuICAgICAgZmVlZGJhY2tUeXBlOiAnVGlwbyBkZSBmZWVkYmFjaycsXG4gICAgICBmZWVkYmFja1N1Y2Nlc3M6ICdGZWVkYmFjayBlbnZpYWRvIGV4aXRvc2FtZW50ZScsXG4gICAgICBmZWVkYmFja0Vycm9yOiAnRXJyb3IgYWwgZW52aWFyIGVsIGZlZWRiYWNrJyxcbiAgICAgIHRpdGxlUGxhY2Vob2xkZXI6ICdEZXNjcmliZSBicmV2ZW1lbnRlLi4uJyxcbiAgICAgIHRpdGxlVmFsaWRhdGlvbjogJ0VsIHTDrXR1bG8gZGViZSB0ZW5lciBlbnRyZSA1IHkgMjAwIGNhcmFjdGVyZXMnLFxuICAgICAgZGVzY3JpcHRpb25QbGFjZWhvbGRlcjogJ1Byb3BvcmNpb25hIG3DoXMgZGV0YWxsZXMuLi4nLFxuICAgICAgZGVzY3JpcHRpb25WYWxpZGF0aW9uOiAnTGEgZGVzY3JpcGNpw7NuIGRlYmUgdGVuZXIgZW50cmUgMTAgeSA1MDAwIGNhcmFjdGVyZXMnLFxuXG4gICAgICAvLyBDb21wb25lbnRlcyAtIELDunNxdWVkYS9HcmlkXG4gICAgICBzZWFyY2hOdW1iZXI6ICdCdXNjYXIgbsO6bWVyby4uLicsXG4gICAgICBzZWxlY3RlZDogJ3NlbGVjY2lvbmFkby9zJyxcbiAgICAgIG1heDogJ23DoXg6JyxcblxuICAgICAgLy8gQ29tcG9uZW50ZXMgLSBMaXN0YXNcbiAgICAgIGxvYWRNb3JlQ29tbWVudHM6ICdDYXJnYXIgbcOhcyBjb21lbnRhcmlvcycsXG4gICAgICBub0RhdGE6ICdObyBoYXkgZGF0b3MnLFxuICAgICAgbm9SZWNvcmRzRm91bmQ6ICdObyBzZSBlbmNvbnRyYXJvbiByZWdpc3Ryb3MgcGFyYSBtb3N0cmFyLicsXG5cbiAgICAgIC8vIENvbXBvbmVudGVzIC0gQWNjaW9uZXNcbiAgICAgIGNvcGllZFRvQ2xpcGJvYXJkOiAnwqFDb3BpYWRvIGFsIHBvcnRhcGFwZWxlcyEnLFxuICAgICAgbGFuZ3VhZ2U6ICdJZGlvbWEnLFxuICAgICAgc2VsZWN0TGFuZ3VhZ2U6ICdTZWxlY2Npb25hciBpZGlvbWEuLi4nLFxuICAgICAgZG93bmxvYWQ6ICdEZXNjYXJnYXInLFxuICAgICAgY29weTogJ0NvcGlhcicsXG4gICAgICBzaGFyZTogJ0NvbXBhcnRpcicsXG5cbiAgICAgIC8vIENvbXBvbmVudGVzIC0gRGF0YSBUYWJsZSAvIFBhZ2luYWNpw7NuXG4gICAgICBhY3Rpb25zOiAnQWNjaW9uZXMnLFxuICAgICAgc2hvd2luZzogJ01vc3RyYW5kbycsXG4gICAgICBvZjogJ2RlJyxcbiAgICAgIHBlclBhZ2U6ICdwb3IgcMOhZ2luYScsXG4gICAgICBmaXJzdFBhZ2U6ICdQcmltZXJhIHDDoWdpbmEnLFxuICAgICAgcHJldmlvdXNQYWdlOiAnUMOhZ2luYSBhbnRlcmlvcicsXG4gICAgICBuZXh0UGFnZTogJ1DDoWdpbmEgc2lndWllbnRlJyxcbiAgICAgIGxhc3RQYWdlOiAnw5psdGltYSBww6FnaW5hJyxcblxuICAgICAgLy8gQ29tcG9uZW50ZXMgLSBQYXJ0aWNpcGFudCBDYXJkXG4gICAgICB3aW5uZXI6ICdHYW5hZG9yJyxcbiAgICAgIHRpY2tldDogJ2JvbGV0bycsXG4gICAgICB0aWNrZXRzOiAnYm9sZXRvcycsXG4gICAgICBtb3JlOiAnbcOhcycsXG4gICAgICBub3RlczogJ05vdGFzOicsXG5cbiAgICAgIC8vIEZvb3RlclxuICAgICAgYWxsUmlnaHRzUmVzZXJ2ZWQ6ICdUb2RvcyBsb3MgZGVyZWNob3MgcmVzZXJ2YWRvcy4nLFxuXG4gICAgICAvLyBDbGlwYm9hcmRcbiAgICAgIGxpbmtDb3BpZWQ6ICfCoUVubGFjZSBjb3BpYWRvIScsXG5cbiAgICAgIC8vIFNlbGVjdGlvblxuICAgICAgc2VsZWN0OiAnU2VsZWNjaW9uYXInLFxuICAgICAgc2VsZWN0T3B0aW9uczogJ1NlbGVjY2lvbmFyIG9wY2lvbmVzJyxcblxuICAgICAgLy8gQ29tbWVudHNcbiAgICAgIHBpbm5lZDogJ0ZpamFkbycsXG4gICAgICBlZGl0ZWQ6ICcoZWRpdGFkbyknLFxuICAgICAgc2hvd0NvbW1lbnQ6ICdNb3N0cmFyIGNvbWVudGFyaW8nLFxuICAgICAgaGlkZVJlcGxpZXM6ICdPY3VsdGFyIHJlc3B1ZXN0YXMnLFxuICAgICAgbG9hZE1vcmVSZXBsaWVzOiAnQ2FyZ2FyIG3DoXMgcmVzcHVlc3RhcycsXG4gICAgICB2aWV3UmVwbGllczogJ1ZlciByZXNwdWVzdGFzJyxcbiAgICAgIGNvbW1lbnRzOiAnQ29tZW50YXJpb3MnLFxuICAgICAgbm9Db21tZW50c1lldDogJ1NpbiBjb21lbnRhcmlvcyBhw7puJyxcbiAgICAgIHB1Ymxpc2g6ICdQdWJsaWNhcicsXG4gICAgICBzb3J0Qnk6ICdPcmRlbmFyIHBvcicsXG4gICAgICB3cml0ZUNvbW1lbnQ6ICdFc2NyaWJlIHVuIGNvbWVudGFyaW8uLi4nLFxuICAgICAgYmVGaXJzdFRvQ29tbWVudDogJ8KhU8OpIGVsIHByaW1lcm8gZW4gY29tcGFydGlyIHR1IG9waW5pw7NuIScsXG5cbiAgICAgIC8vIFRpbWVzdGFtcHNcbiAgICAgIGp1c3ROb3c6ICdBaG9yYSBtaXNtbycsXG4gICAgICBtaW51dGVzQWdvOiAnaGFjZSB7bWludXRlc31tJyxcbiAgICAgIGhvdXJzQWdvOiAnaGFjZSB7aG91cnN9aCcsXG4gICAgICBkYXlzQWdvOiAnaGFjZSB7ZGF5c31kJyxcblxuICAgICAgLy8gTGlzdHNcbiAgICAgIGxvYWRNb3JlOiAnQ2FyZ2FyIG3DoXMnLFxuICAgICAgbm9Nb3JlSXRlbXM6ICdObyBoYXkgbcOhcyBpdGVtcycsXG4gICAgICBsb2FkaW5nSXRlbXM6ICdDYXJnYW5kbyBpdGVtcy4uLicsXG4gICAgICBhbGxJdGVtc0xvYWRlZDogJ1RvZG9zIGxvcyBpdGVtcyBoYW4gc2lkbyBjYXJnYWRvcycsXG4gICAgICBlcnJvck9jY3VycmVkOiAnT2N1cnJpw7MgdW4gZXJyb3InLFxuICAgICAgcmV0cnk6ICdSZWludGVudGFyJyxcblxuICAgICAgLy8gTmF2aWdhdGlvblxuICAgICAgc2VlTW9yZTogJ1ZlciBtw6FzJyxcblxuICAgICAgLy8gRm9ybXMgLSBSYW5nZVxuICAgICAgZnJvbTogJ0luaWNpYWwnLFxuICAgICAgdG86ICdGaW5hbCcsXG5cbiAgICAgIC8vIFN0ZXBwZXJcbiAgICAgIGRlY3JlYXNlOiAnRGlzbWludWlyJyxcbiAgICAgIGluY3JlYXNlOiAnQXVtZW50YXInLFxuXG4gICAgICAvLyBNaXNjXG4gICAgICByYW5kb206ICdBbGVhdG9yaW8nLFxuICAgICAgcHVsbFRvUmVmcmVzaDogJ0FycmFzdHJhIHBhcmEgYWN0dWFsaXphcicsXG4gICAgICB0aW1lRXhwaXJlZDogJ1RpZW1wbyBhZ290YWRvJyxcbiAgICAgIHFyQ29kZTogJ0PDs2RpZ28gUVInLFxuXG4gICAgICAvLyBQYXltZW50IHN0YXR1c1xuICAgICAgcGF5bWVudFBlbmRpbmc6ICdQZW5kaWVudGUnLFxuICAgICAgcGF5bWVudFByb2Nlc3Npbmc6ICdQcm9jZXNhbmRvJyxcbiAgICAgIHBheW1lbnRQYWlkOiAnUGFnYWRvJyxcbiAgICAgIHBheW1lbnRSZWZ1bmRlZDogJ1JlZW1ib2xzYWRvJyxcbiAgICAgIHBheW1lbnRGYWlsZWQ6ICdGYWxsaWRvJyxcbiAgICB9LFxuICAgIGVuOiB7XG4gICAgICAvLyBDb21tb24gYWN0aW9uc1xuICAgICAgc3VibWl0OiAnU3VibWl0JyxcbiAgICAgIGNhbmNlbDogJ0NhbmNlbCcsXG4gICAgICBzYXZlOiAnU2F2ZScsXG4gICAgICBkZWxldGU6ICdEZWxldGUnLFxuICAgICAgZWRpdDogJ0VkaXQnLFxuICAgICAgY2xvc2U6ICdDbG9zZScsXG4gICAgICBiYWNrOiAnQmFjaycsXG4gICAgICBuZXh0OiAnTmV4dCcsXG4gICAgICBwcmV2aW91czogJ1ByZXZpb3VzJyxcbiAgICAgIGxvYWRpbmc6ICdMb2FkaW5nLi4uJyxcbiAgICAgIHNlYXJjaDogJ1NlYXJjaCcsXG4gICAgICBsZWFybk1vcmU6ICdMZWFybiBtb3JlJyxcblxuICAgICAgLy8gU3RhdGVzXG4gICAgICBzdWNjZXNzOiAnU3VjY2VzcycsXG4gICAgICBlcnJvcjogJ0Vycm9yJyxcbiAgICAgIHdhcm5pbmc6ICdXYXJuaW5nJyxcbiAgICAgIGluZm86ICdJbmZvcm1hdGlvbicsXG5cbiAgICAgIC8vIENvbmZpcm1hdGlvbnNcbiAgICAgIGNvbmZpcm1EZWxldGU6ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlPycsXG4gICAgICBjb25maXJtQ2FuY2VsOiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNhbmNlbD8nLFxuXG4gICAgICAvLyBDb21tb24gbWVzc2FnZXNcbiAgICAgIG5vUmVzdWx0czogJ05vIHJlc3VsdHMgZm91bmQnLFxuICAgICAgcmVxdWlyZWQ6ICdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkJyxcblxuICAgICAgLy8gTmF2aWdhdGlvblxuICAgICAgaG9tZTogJ0hvbWUnLFxuICAgICAgc2V0dGluZ3M6ICdTZXR0aW5ncycsXG4gICAgICBwcm9maWxlOiAnUHJvZmlsZScsXG4gICAgICBsb2dvdXQ6ICdMb2cgb3V0JyxcblxuICAgICAgLy8gR3JlZXRpbmdzICh0aW1lLW9mLWRheSBzYWx1dGF0aW9uKVxuICAgICAgZ29vZE1vcm5pbmc6ICdHb29kIG1vcm5pbmcnLFxuICAgICAgZ29vZEFmdGVybm9vbjogJ0dvb2QgYWZ0ZXJub29uJyxcbiAgICAgIGdvb2RFdmVuaW5nOiAnR29vZCBldmVuaW5nJyxcblxuICAgICAgLy8gQXV0aCDigJQgc2lnbiBvdXQgY29uZmlybWF0aW9uXG4gICAgICBsb2dvdXRDb25maXJtVGl0bGU6ICdTaWduIG91dCcsXG4gICAgICBsb2dvdXRDb25maXJtTWVzc2FnZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBzaWduIG91dD8nLFxuXG4gICAgICAvLyBMYW5ndWFnZXNcbiAgICAgIGxhbmd1YWdlTmFtZV9lczogJ0VzcGHDsW9sJyxcbiAgICAgIGxhbmd1YWdlTmFtZV9lbjogJ0VuZ2xpc2gnLFxuXG4gICAgICAvLyBDb21wb25lbnRzIC0gTW9kYWxzL1NlbGVjdHNcbiAgICAgIG9rOiAnT0snLFxuICAgICAgc2VsZWN0T3B0aW9uOiAnU2VsZWN0IG9wdGlvbicsXG4gICAgICBzZWxlY3RQbGFjZWhvbGRlcjogJ1NlbGVjdC4uLicsXG4gICAgICBpdGVtc1NlbGVjdGVkOiAnaXRlbXMgc2VsZWN0ZWQnLFxuICAgICAgc2VsZWN0QWxsOiAnU2VsZWN0IGFsbCcsXG4gICAgICBjbGVhcjogJ0NsZWFyJyxcbiAgICAgIGFwcGx5OiAnQXBwbHknLFxuXG4gICAgICAvLyBDb21wb25lbnRzIC0gRGF0ZXNcbiAgICAgIHN0YXJ0RGF0ZTogJ1N0YXJ0IGRhdGUnLFxuICAgICAgZW5kRGF0ZTogJ0VuZCBkYXRlJyxcbiAgICAgIGRheTogJ2RheScsXG4gICAgICBkYXlzOiAnZGF5cycsXG5cbiAgICAgIC8vIENvbXBvbmVudHMgLSBGb3Jtc1xuICAgICAgdXBsb2FkRmlsZTogJ1VwbG9hZCBmaWxlJyxcbiAgICAgIG5vRmlsZVNlbGVjdGVkOiAnTm8gZmlsZSBzZWxlY3RlZCcsXG4gICAgICB0aXRsZTogJ1RpdGxlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24nLFxuICAgICAgZmVlZGJhY2tUeXBlOiAnRmVlZGJhY2sgdHlwZScsXG4gICAgICBmZWVkYmFja1N1Y2Nlc3M6ICdGZWVkYmFjayBzZW50IHN1Y2Nlc3NmdWxseScsXG4gICAgICBmZWVkYmFja0Vycm9yOiAnRXJyb3Igc2VuZGluZyBmZWVkYmFjaycsXG4gICAgICB0aXRsZVBsYWNlaG9sZGVyOiAnRGVzY3JpYmUgYnJpZWZseS4uLicsXG4gICAgICB0aXRsZVZhbGlkYXRpb246ICdUaXRsZSBtdXN0IGJlIGJldHdlZW4gNSBhbmQgMjAwIGNoYXJhY3RlcnMnLFxuICAgICAgZGVzY3JpcHRpb25QbGFjZWhvbGRlcjogJ1Byb3ZpZGUgbW9yZSBkZXRhaWxzLi4uJyxcbiAgICAgIGRlc2NyaXB0aW9uVmFsaWRhdGlvbjogJ0Rlc2NyaXB0aW9uIG11c3QgYmUgYmV0d2VlbiAxMCBhbmQgNTAwMCBjaGFyYWN0ZXJzJyxcblxuICAgICAgLy8gQ29tcG9uZW50cyAtIFNlYXJjaC9HcmlkXG4gICAgICBzZWFyY2hOdW1iZXI6ICdTZWFyY2ggbnVtYmVyLi4uJyxcbiAgICAgIHNlbGVjdGVkOiAnc2VsZWN0ZWQnLFxuICAgICAgbWF4OiAnbWF4OicsXG5cbiAgICAgIC8vIENvbXBvbmVudHMgLSBMaXN0c1xuICAgICAgbG9hZE1vcmVDb21tZW50czogJ0xvYWQgbW9yZSBjb21tZW50cycsXG4gICAgICBub0RhdGE6ICdObyBkYXRhJyxcbiAgICAgIG5vUmVjb3Jkc0ZvdW5kOiAnTm8gcmVjb3JkcyBmb3VuZCB0byBkaXNwbGF5LicsXG5cbiAgICAgIC8vIENvbXBvbmVudHMgLSBBY3Rpb25zXG4gICAgICBjb3BpZWRUb0NsaXBib2FyZDogJ0NvcGllZCB0byBjbGlwYm9hcmQhJyxcbiAgICAgIGxhbmd1YWdlOiAnTGFuZ3VhZ2UnLFxuICAgICAgc2VsZWN0TGFuZ3VhZ2U6ICdTZWxlY3QgbGFuZ3VhZ2UuLi4nLFxuICAgICAgZG93bmxvYWQ6ICdEb3dubG9hZCcsXG4gICAgICBjb3B5OiAnQ29weScsXG4gICAgICBzaGFyZTogJ1NoYXJlJyxcblxuICAgICAgLy8gQ29tcG9uZW50cyAtIERhdGEgVGFibGUgLyBQYWdpbmF0aW9uXG4gICAgICBhY3Rpb25zOiAnQWN0aW9ucycsXG4gICAgICBzaG93aW5nOiAnU2hvd2luZycsXG4gICAgICBvZjogJ29mJyxcbiAgICAgIHBlclBhZ2U6ICdwZXIgcGFnZScsXG4gICAgICBmaXJzdFBhZ2U6ICdGaXJzdCBwYWdlJyxcbiAgICAgIHByZXZpb3VzUGFnZTogJ1ByZXZpb3VzIHBhZ2UnLFxuICAgICAgbmV4dFBhZ2U6ICdOZXh0IHBhZ2UnLFxuICAgICAgbGFzdFBhZ2U6ICdMYXN0IHBhZ2UnLFxuXG4gICAgICAvLyBDb21wb25lbnRzIC0gUGFydGljaXBhbnQgQ2FyZFxuICAgICAgd2lubmVyOiAnV2lubmVyJyxcbiAgICAgIHRpY2tldDogJ3RpY2tldCcsXG4gICAgICB0aWNrZXRzOiAndGlja2V0cycsXG4gICAgICBtb3JlOiAnbW9yZScsXG4gICAgICBub3RlczogJ05vdGVzOicsXG5cbiAgICAgIC8vIEZvb3RlclxuICAgICAgYWxsUmlnaHRzUmVzZXJ2ZWQ6ICdBbGwgcmlnaHRzIHJlc2VydmVkLicsXG5cbiAgICAgIC8vIENsaXBib2FyZFxuICAgICAgbGlua0NvcGllZDogJ0xpbmsgY29waWVkIScsXG5cbiAgICAgIC8vIFNlbGVjdGlvblxuICAgICAgc2VsZWN0OiAnU2VsZWN0JyxcbiAgICAgIHNlbGVjdE9wdGlvbnM6ICdTZWxlY3Qgb3B0aW9ucycsXG5cbiAgICAgIC8vIENvbW1lbnRzXG4gICAgICBwaW5uZWQ6ICdQaW5uZWQnLFxuICAgICAgZWRpdGVkOiAnKGVkaXRlZCknLFxuICAgICAgc2hvd0NvbW1lbnQ6ICdTaG93IGNvbW1lbnQnLFxuICAgICAgaGlkZVJlcGxpZXM6ICdIaWRlIHJlcGxpZXMnLFxuICAgICAgbG9hZE1vcmVSZXBsaWVzOiAnTG9hZCBtb3JlIHJlcGxpZXMnLFxuICAgICAgdmlld1JlcGxpZXM6ICdWaWV3IHJlcGxpZXMnLFxuICAgICAgY29tbWVudHM6ICdDb21tZW50cycsXG4gICAgICBub0NvbW1lbnRzWWV0OiAnTm8gY29tbWVudHMgeWV0JyxcbiAgICAgIHB1Ymxpc2g6ICdQdWJsaXNoJyxcbiAgICAgIHNvcnRCeTogJ1NvcnQgYnknLFxuICAgICAgd3JpdGVDb21tZW50OiAnV3JpdGUgYSBjb21tZW50Li4uJyxcbiAgICAgIGJlRmlyc3RUb0NvbW1lbnQ6ICdCZSB0aGUgZmlyc3QgdG8gc2hhcmUgeW91ciB0aG91Z2h0cyEnLFxuXG4gICAgICAvLyBUaW1lc3RhbXBzXG4gICAgICBqdXN0Tm93OiAnSnVzdCBub3cnLFxuICAgICAgbWludXRlc0FnbzogJ3ttaW51dGVzfW0gYWdvJyxcbiAgICAgIGhvdXJzQWdvOiAne2hvdXJzfWggYWdvJyxcbiAgICAgIGRheXNBZ286ICd7ZGF5c31kIGFnbycsXG5cbiAgICAgIC8vIExpc3RzXG4gICAgICBsb2FkTW9yZTogJ0xvYWQgbW9yZScsXG4gICAgICBub01vcmVJdGVtczogJ05vIG1vcmUgaXRlbXMnLFxuICAgICAgbG9hZGluZ0l0ZW1zOiAnTG9hZGluZyBpdGVtcy4uLicsXG4gICAgICBhbGxJdGVtc0xvYWRlZDogJ0FsbCBpdGVtcyBsb2FkZWQnLFxuICAgICAgZXJyb3JPY2N1cnJlZDogJ0FuIGVycm9yIG9jY3VycmVkJyxcbiAgICAgIHJldHJ5OiAnUmV0cnknLFxuXG4gICAgICAvLyBOYXZpZ2F0aW9uXG4gICAgICBzZWVNb3JlOiAnU2VlIG1vcmUnLFxuXG4gICAgICAvLyBGb3JtcyAtIFJhbmdlXG4gICAgICBmcm9tOiAnRnJvbScsXG4gICAgICB0bzogJ1RvJyxcblxuICAgICAgLy8gU3RlcHBlclxuICAgICAgZGVjcmVhc2U6ICdEZWNyZWFzZScsXG4gICAgICBpbmNyZWFzZTogJ0luY3JlYXNlJyxcblxuICAgICAgLy8gTWlzY1xuICAgICAgcmFuZG9tOiAnUmFuZG9tJyxcbiAgICAgIHB1bGxUb1JlZnJlc2g6ICdQdWxsIHRvIHJlZnJlc2gnLFxuICAgICAgdGltZUV4cGlyZWQ6ICdUaW1lIGV4cGlyZWQnLFxuICAgICAgcXJDb2RlOiAnUVIgQ29kZScsXG5cbiAgICAgIC8vIFBheW1lbnQgc3RhdHVzXG4gICAgICBwYXltZW50UGVuZGluZzogJ1BlbmRpbmcnLFxuICAgICAgcGF5bWVudFByb2Nlc3Npbmc6ICdQcm9jZXNzaW5nJyxcbiAgICAgIHBheW1lbnRQYWlkOiAnUGFpZCcsXG4gICAgICBwYXltZW50UmVmdW5kZWQ6ICdSZWZ1bmRlZCcsXG4gICAgICBwYXltZW50RmFpbGVkOiAnRmFpbGVkJyxcbiAgICB9LFxuICB9LFxuXG4gIF9hdXRoOiB7XG4gICAgZXM6IHtcbiAgICAgIC8vIExvZ2luXG4gICAgICBsb2dpblRpdGxlOiAnSW5pY2lhciBzZXNpw7NuJyxcbiAgICAgIGVtYWlsOiAnQ29ycmVvIGVsZWN0csOzbmljbycsXG4gICAgICBlbWFpbFBsYWNlaG9sZGVyOiAndHVAZW1haWwuY29tJyxcbiAgICAgIGVtYWlsUmVxdWlyZWQ6ICdFbCBjb3JyZW8gZXMgcmVxdWVyaWRvJyxcbiAgICAgIGVtYWlsSW52YWxpZDogJ0luZ3Jlc2EgdW4gY29ycmVvIHbDoWxpZG8nLFxuICAgICAgcGFzc3dvcmQ6ICdDb250cmFzZcOxYScsXG4gICAgICBwYXNzd29yZFBsYWNlaG9sZGVyOiAn4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCiJyxcbiAgICAgIHBhc3N3b3JkUmVxdWlyZWQ6ICdMYSBjb250cmFzZcOxYSBlcyByZXF1ZXJpZGEnLFxuICAgICAgbG9naW5TdWJtaXQ6ICdJbmljaWFyIHNlc2nDs24nLFxuXG4gICAgICAvLyBPQXV0aFxuICAgICAgb3JDb250aW51ZVdpdGg6ICdvIGNvbnRpbsO6YSBjb24nLFxuICAgICAgY29udGludWVXaXRoR29vZ2xlOiAnQ29udGludWFyIGNvbiBHb29nbGUnLFxuICAgICAgY29udGludWVXaXRoQXBwbGU6ICdDb250aW51YXIgY29uIEFwcGxlJyxcbiAgICAgIGNvbnRpbnVlV2l0aE1pY3Jvc29mdDogJ0NvbnRpbnVhciBjb24gTWljcm9zb2Z0JyxcbiAgICAgIGNvbm5lY3Rpbmc6ICdDb25lY3RhbmRvLi4uJyxcblxuICAgICAgLy8gUmVnaXN0ZXJcbiAgICAgIHJlZ2lzdGVyVGl0bGU6ICdDcmVhciBjdWVudGEnLFxuICAgICAgZnVsbE5hbWU6ICdOb21icmUgY29tcGxldG8nLFxuICAgICAgbmFtZVBsYWNlaG9sZGVyOiAnVHUgbm9tYnJlJyxcbiAgICAgIG5hbWVSZXF1aXJlZDogJ0VsIG5vbWJyZSBlcyByZXF1ZXJpZG8nLFxuICAgICAgbmFtZU1pbkxlbmd0aDogJ03DrW5pbW8gMiBjYXJhY3RlcmVzJyxcbiAgICAgIHBhc3N3b3JkTWluTGVuZ3RoOiAnTcOtbmltbyA4IGNhcmFjdGVyZXMnLFxuICAgICAgcmVnaXN0ZXJTdWJtaXQ6ICdSZWdpc3RyYXJzZScsXG4gICAgICBub0FjY291bnQ6ICfCv05vIHRpZW5lcyBjdWVudGE/JyxcbiAgICAgIHJlZ2lzdGVyOiAnUmVnaXN0cmFyc2UnLFxuICAgICAgaGFzQWNjb3VudDogJ8K/WWEgdGllbmVzIGN1ZW50YT8nLFxuICAgICAgc2lnbkluOiAnSW5pY2lhciBzZXNpw7NuJyxcblxuICAgICAgLy8gVmVyaWZ5IGVtYWlsXG4gICAgICB2ZXJpZnlUaXRsZTogJ1ZlcmlmaWNhciBjb3JyZW8nLFxuICAgICAgdmVyaWZ5RGVzY3JpcHRpb246ICdJbmdyZXNhIGVsIGPDs2RpZ28gZGUgdmVyaWZpY2FjacOzbiBlbnZpYWRvIGEgdHUgY29ycmVvLicsXG4gICAgICB2ZXJpZnlTdWJtaXQ6ICdWZXJpZmljYXInLFxuICAgICAgY29kZVJlcXVpcmVkOiAnRWwgY8OzZGlnbyBlcyByZXF1ZXJpZG8nLFxuICAgICAgY29kZU1pbkxlbmd0aDogJ0luZ3Jlc2EgbG9zIDYgZMOtZ2l0b3MnLFxuICAgICAgbm9Db2RlUmVjZWl2ZWQ6ICfCv05vIGhhcyByZWNpYmlkbyB0dSBjw7NkaWdvPycsXG4gICAgICByZXNlbmQ6ICdSZWVudmlhcicsXG4gICAgICByZXNlbmRJbjogJ1JlZW52aWFyIGVuIHtzZWNvbmRzfXMnLFxuICAgICAgY29kZVNlbnQ6ICdDw7NkaWdvIHJlZW52aWFkby4gUmV2aXNhIHR1IGVtYWlsLicsXG4gICAgICBlbWFpbFZlcmlmaWVkOiAnwqFFbWFpbCB2ZXJpZmljYWRvISBCaWVudmVuaWRvLicsXG5cbiAgICAgIC8vIE1GQVxuICAgICAgbWZhVGl0bGU6ICdWZXJpZmljYWNpw7NuIE1GQScsXG4gICAgICBtZmFUT1RQOiAnSW5ncmVzYSBlbCBjw7NkaWdvIGRlIHR1IGFwcCBkZSBhdXRlbnRpY2FjacOzbicsXG4gICAgICBtZmFFbWFpbDogJ0luZ3Jlc2EgZWwgY8OzZGlnbyBlbnZpYWRvIGEgdHUgY29ycmVvJyxcbiAgICAgIG1mYVNNUzogJ0luZ3Jlc2EgZWwgY8OzZGlnbyBlbnZpYWRvIGEgdHUgdGVsw6lmb25vJyxcblxuICAgICAgLy8gRm9yZ290L1Jlc2V0IHBhc3N3b3JkXG4gICAgICBmb3Jnb3RUaXRsZTogJ1JlY3VwZXJhciBjb250cmFzZcOxYScsXG4gICAgICBmb3Jnb3REZXNjcmlwdGlvbjogJ0luZ3Jlc2EgdHUgY29ycmVvIGVsZWN0csOzbmljbyB5IHRlIGVudmlhcmVtb3MgdW4gY8OzZGlnby4nLFxuICAgICAgZm9yZ290U3VibWl0OiAnRW52aWFyIGPDs2RpZ28nLFxuICAgICAgZm9yZ290TGluazogJ8K/T2x2aWRhc3RlIHR1IGNvbnRyYXNlw7FhPycsXG4gICAgICByZWNvdmVyUGFzc3dvcmQ6ICdSZWN1cGVyYXIgY29udHJhc2XDsWEnLFxuICAgICAgcmVzZXRUaXRsZTogJ1Jlc3RhYmxlY2VyIGNvbnRyYXNlw7FhJyxcbiAgICAgIHJlc2V0RGVzY3JpcHRpb246ICdIZW1vcyBlbnZpYWRvIHVuIGPDs2RpZ28gZGUgdmVyaWZpY2FjacOzbiBhIHR1IGNvcnJlby4nLFxuICAgICAgbmV3UGFzc3dvcmQ6ICdOdWV2YSBjb250cmFzZcOxYScsXG4gICAgICBuZXdQYXNzd29yZEhpbnQ6ICdNw61uaW1vIDggY2FyYWN0ZXJlcycsXG4gICAgICByZXNldFN1Ym1pdDogJ0NhbWJpYXIgY29udHJhc2XDsWEnLFxuICAgICAgcGFzc3dvcmRVcGRhdGVkOiAnwqFDb250cmFzZcOxYSBhY3R1YWxpemFkYSEgWWEgcHVlZGVzIGluaWNpYXIgc2VzacOzbi4nLFxuXG4gICAgICAvLyBDaGFuZ2UgcGFzc3dvcmQgKHNlc2nDs24gYWN0aXZhKVxuICAgICAgY2hhbmdlUGFzc3dvcmRUaXRsZTogJ0NhbWJpYXIgY29udHJhc2XDsWEnLFxuICAgICAgY2hhbmdlUGFzc3dvcmREZXNjcmlwdGlvbjogJ0luZ3Jlc2EgdHUgY29udHJhc2XDsWEgYWN0dWFsIHkgbGEgbnVldmEuJyxcbiAgICAgIGN1cnJlbnRQYXNzd29yZDogJ0NvbnRyYXNlw7FhIGFjdHVhbCcsXG4gICAgICBjdXJyZW50UGFzc3dvcmRSZXF1aXJlZDogJ0xhIGNvbnRyYXNlw7FhIGFjdHVhbCBlcyByZXF1ZXJpZGEnLFxuICAgICAgY2hhbmdlUGFzc3dvcmRTdWJtaXQ6ICdDYW1iaWFyIGNvbnRyYXNlw7FhJyxcbiAgICAgIHBhc3N3b3JkQ2hhbmdlZFN1Y2Nlc3M6ICfCoUNvbnRyYXNlw7FhIGFjdHVhbGl6YWRhIScsXG4gICAgICBlcnJvckN1cnJlbnRQYXNzd29yZFdyb25nOiAnTGEgY29udHJhc2XDsWEgYWN0dWFsIGVzIGluY29ycmVjdGEnLFxuICAgICAgZXJyb3JTYW1lUGFzc3dvcmQ6ICdMYSBudWV2YSBjb250cmFzZcOxYSBkZWJlIHNlciBkaWZlcmVudGUgYSBsYSBhY3R1YWwnLFxuXG4gICAgICAvLyBTZXQgcGFzc3dvcmQgKGN1ZW50YSBPQXV0aC1vbmx5KVxuICAgICAgc2V0UGFzc3dvcmRUaXRsZTogJ0NyZWFyIGNvbnRyYXNlw7FhJyxcbiAgICAgIHNldFBhc3N3b3JkRGVzY3JpcHRpb246XG4gICAgICAgICdUdSBjdWVudGEgdXNhIGluaWNpbyBkZSBzZXNpw7NuIHNvY2lhbC4gQ3JlYSB1bmEgY29udHJhc2XDsWEgcGFyYSBlbnRyYXIgdGFtYmnDqW4gY29uIHR1IGNvcnJlby4nLFxuICAgICAgc2V0UGFzc3dvcmRTdWJtaXQ6ICdDcmVhciBjb250cmFzZcOxYScsXG4gICAgICBzZXRQYXNzd29yZENvbmZpcm1UaXRsZTogJ8K/Q3JlYXIgY29udHJhc2XDsWE/JyxcbiAgICAgIHNldFBhc3N3b3JkQ29uZmlybU1lc3NhZ2U6XG4gICAgICAgICdQb2Ryw6FzIGluaWNpYXIgc2VzacOzbiBjb24gdHUgY29ycmVvIHkgY29udHJhc2XDsWEsIGFkZW3DoXMgZGUgdHUgY3VlbnRhIHNvY2lhbC4gTm8gcGVyZGVyw6FzIGVsIGFjY2VzbyBzb2NpYWwuJyxcbiAgICAgIHNldFBhc3N3b3JkQ29uZmlybU9rOiAnQ3JlYXIgY29udHJhc2XDsWEnLFxuICAgICAgc2V0UGFzc3dvcmRDb25maXJtQ2FuY2VsOiAnQ2FuY2VsYXInLFxuICAgICAgcGFzc3dvcmRTZXRTdWNjZXNzOiAnwqFDb250cmFzZcOxYSBjcmVhZGEhJyxcbiAgICAgIGVycm9yUGFzc3dvcmRBbHJlYWR5U2V0OiAnRXN0YSBjdWVudGEgeWEgdGllbmUgdW5hIGNvbnRyYXNlw7FhLicsXG5cbiAgICAgIC8vIE1GQSDigJQgYXV0ZW50aWNhY2nDs24gZW4gZG9zIHBhc29zXG4gICAgICBtZmFNYW5hZ2VUaXRsZTogJ0F1dGVudGljYWNpw7NuIGVuIGRvcyBwYXNvcycsXG4gICAgICBtZmFFbmFibGVkTGFiZWw6ICdNRkEgaGFiaWxpdGFkbycsXG4gICAgICBtZmFEaXNhYmxlZExhYmVsOiAnTUZBIGRlc2hhYmlsaXRhZG8nLFxuICAgICAgbWZhRGlzYWJsZWRIaW50OiAnSGFiaWxpdGEgTUZBIHBhcmEgbWF5b3Igc2VndXJpZGFkIGVuIHR1IGN1ZW50YS4nLFxuICAgICAgbWZhRW5hYmxlQnV0dG9uOiAnSGFiaWxpdGFyIE1GQScsXG4gICAgICBtZmFEaXNhYmxlQnV0dG9uOiAnRGVzaGFiaWxpdGFyIE1GQScsXG4gICAgICBtZmFFbmFibGVUaXRsZTogJ0hhYmlsaXRhciBNRkEnLFxuICAgICAgbWZhTWV0aG9kUHJvbXB0OiAnRWxpZ2UgZWwgbcOpdG9kbyBkZSB2ZXJpZmljYWNpw7NuOicsXG4gICAgICBtZmFNZXRob2RUb3RwOiAnQXBwIGRlIGF1dGVudGljYWNpw7NuJyxcbiAgICAgIG1mYU1ldGhvZFRvdHBIaW50OiAnVXNhIEdvb2dsZSBBdXRoZW50aWNhdG9yIHUgb3RyYSBhcHAgKHJlY29tZW5kYWRvKS4nLFxuICAgICAgbWZhTWV0aG9kRW1haWw6ICdDb3JyZW8gZWxlY3Ryw7NuaWNvJyxcbiAgICAgIG1mYU1ldGhvZEVtYWlsSGludDogJ1JlY2liZSBjw7NkaWdvcyBlbiB0dSBjb3JyZW8uJyxcbiAgICAgIG1mYU1ldGhvZFNtczogJ1NNUycsXG4gICAgICBtZmFNZXRob2RTbXNIaW50OiAnUmVjaWJlIGPDs2RpZ29zIHBvciBtZW5zYWplIGRlIHRleHRvLicsXG4gICAgICBtZmFQaG9uZUxhYmVsOiAnVGVsw6lmb25vJyxcbiAgICAgIG1mYVBob25lSW52YWxpZDogJ0luZ3Jlc2EgdW4gbsO6bWVybyB2w6FsaWRvIGVuIGZvcm1hdG8gRS4xNjQgKGVqOiArNTY5MTIzNDU2NzgpLicsXG4gICAgICBtZmFQaG9uZVJlZ2lzdGVyZWQ6ICdUZWzDqWZvbm8gcmVnaXN0cmFkbycsXG4gICAgICBtZmFDb250aW51ZTogJ0NvbnRpbnVhcicsXG4gICAgICBtZmFDYW5jZWw6ICdDYW5jZWxhcicsXG4gICAgICBtZmFUb3RwU2V0dXBUaXRsZTogJ0NvbmZpZ3VyYXIgYXBwIGRlIGF1dGVudGljYWNpw7NuJyxcbiAgICAgIG1mYVRvdHBTdGVwMTogJ1Bhc28gMSDigJQgRXNjYW5lYSBlbCBjw7NkaWdvIFFSIGNvbiB0dSBhcHAgZGUgYXV0ZW50aWNhY2nDs24uJyxcbiAgICAgIG1mYVRvdHBNYW51YWxFbnRyeTogJ8K/Tm8gcHVlZGVzIGVzY2FuZWFyPyBJbmdyZXNhIGVzdGUgY8OzZGlnbyBtYW51YWxtZW50ZTonLFxuICAgICAgbWZhVG90cFN0ZXAyOiAnUGFzbyAyIOKAlCBJbmdyZXNhIGVsIGPDs2RpZ28gZGUgNiBkw61naXRvcyBkZSB0dSBhcHA6JyxcbiAgICAgIG1mYVRvdHBWZXJpZnk6ICdWZXJpZmljYXIgeSBhY3RpdmFyJyxcbiAgICAgIG1mYUNvbmZpcm1UaXRsZTogJ0NvbmZpcm1hciBNRkEnLFxuICAgICAgbWZhQ29uZmlybVByb21wdEVtYWlsOiAnSW5ncmVzYSBlbCBjw7NkaWdvIGRlIDYgZMOtZ2l0b3MgZW52aWFkbyBhIHR1IGNvcnJlby4nLFxuICAgICAgbWZhQ29uZmlybVByb21wdFNtczogJ0luZ3Jlc2EgZWwgY8OzZGlnbyBkZSA2IGTDrWdpdG9zIGVudmlhZG8gYSB0dSB0ZWzDqWZvbm8uJyxcbiAgICAgIG1mYUNvbmZpcm1CdXR0b246ICdDb25maXJtYXInLFxuICAgICAgbWZhTm9Db2RlOiAnwr9ObyByZWNpYmlzdGUgZWwgY8OzZGlnbz8nLFxuICAgICAgbWZhUmVzZW5kOiAnUmVlbnZpYXInLFxuICAgICAgbWZhUmVzZW5kSW46ICdSZWVudmlhciBlbicsXG4gICAgICBtZmFCYWNrdXBDb2Rlc1RpdGxlOiAnQ8OzZGlnb3MgZGUgcmVzcGFsZG8nLFxuICAgICAgbWZhQmFja3VwQ29kZXNBdmFpbGFibGU6ICdDw7NkaWdvcyBkaXNwb25pYmxlcycsXG4gICAgICBtZmFCYWNrdXBDb2Rlc0xvdzogJ1RlIHF1ZWRhbiBwb2NvcyBjw7NkaWdvcy4gQ29uc2lkZXJhIHJlZ2VuZXJhcmxvcy4nLFxuICAgICAgbWZhQmFja3VwQ29kZXNTYXZlV2FybmluZzogJ0ltcG9ydGFudGU6IGd1YXJkYSBlc3RvcyBjw7NkaWdvcyBkZSByZXNwYWxkby4nLFxuICAgICAgbWZhQmFja3VwQ29kZXNFeHBsYWluOlxuICAgICAgICAnU2kgcGllcmRlcyBhY2Nlc28gYSB0dSBhcHAsIGVzdG9zIGPDs2RpZ29zIHRlIHBlcm1pdGVuIGVudHJhci4gQ2FkYSB1bm8gc2UgdXNhIHVuYSBzb2xhIHZlei4nLFxuICAgICAgbWZhQ29weUNvZGVzOiAnQ29waWFyIGPDs2RpZ29zJyxcbiAgICAgIG1mYVJlZ2VuZXJhdGVDb2RlczogJ1JlZ2VuZXJhciBjw7NkaWdvcyBkZSByZXNwYWxkbycsXG4gICAgICBtZmFEaXNhYmxlVGl0bGU6ICdEZXNoYWJpbGl0YXIgTUZBJyxcbiAgICAgIG1mYURpc2FibGVQcm9tcHQ6ICdJbmdyZXNhIHR1IGNvbnRyYXNlw7FhIHBhcmEgZGVzaGFiaWxpdGFyIE1GQS4nLFxuICAgICAgbWZhUGFzc3dvcmRMYWJlbDogJ0NvbnRyYXNlw7FhJyxcbiAgICAgIG1mYUNvZGVJbnZhbGlkOiAnSW5ncmVzYSB1biBjw7NkaWdvIHbDoWxpZG8gZGUgNiBkw61naXRvcy4nLFxuICAgICAgbWZhUGFzc3dvcmRSZXF1aXJlZDogJ0luZ3Jlc2EgdHUgY29udHJhc2XDsWEuJyxcbiAgICAgIG1mYUVuYWJsZWRPazogJ8KhTUZBIGhhYmlsaXRhZG8gY29ycmVjdGFtZW50ZSEnLFxuICAgICAgbWZhRGlzYWJsZWRPazogJ01GQSBkZXNoYWJpbGl0YWRvIGNvcnJlY3RhbWVudGUuJyxcbiAgICAgIG1mYUNvZGVzQ29waWVkOiAnQ8OzZGlnb3MgY29waWFkb3MgYWwgcG9ydGFwYXBlbGVzLicsXG4gICAgICBtZmFFcnJvckludmFsaWRDb2RlOiAnQ8OzZGlnbyBpbmNvcnJlY3RvLicsXG4gICAgICBtZmFFcnJvckV4cGlyZWRDb2RlOiAnRWwgY8OzZGlnbyBoYSBleHBpcmFkby4gU29saWNpdGEgdW5vIG51ZXZvLicsXG4gICAgICBtZmFFcnJvckNvZGVVc2VkOiAnRXN0ZSBjw7NkaWdvIHlhIGZ1ZSB1dGlsaXphZG8uJyxcbiAgICAgIG1mYUVycm9yQWxyZWFkeUFjdGl2ZTogJ01GQSB5YSBlc3TDoSBoYWJpbGl0YWRvLicsXG4gICAgICBtZmFFcnJvck5vdEVuYWJsZWQ6ICdNRkEgbm8gZXN0w6EgaGFiaWxpdGFkby4nLFxuICAgICAgbWZhRXJyb3JQaG9uZVJlcXVpcmVkOiAnTsO6bWVybyBkZSB0ZWzDqWZvbm8gcmVxdWVyaWRvLicsXG4gICAgICBtZmFFcnJvclBob25lRXhpc3RzOiAnRXN0ZSB0ZWzDqWZvbm8geWEgZXN0w6EgZW4gdXNvLicsXG5cbiAgICAgIC8vIExlZ2FsXG4gICAgICBsZWdhbFByZWZpeDogJ1V0aWxpemFtb3MgbG9zIHNlcnZpY2lvcyBkZScsXG4gICAgICBsZWdhbFN1ZmZpeDogJ3BhcmEgb2ZyZWNlcnRlIHVuYSBleHBlcmllbmNpYSBzZWd1cmEuIEFsIGluaWNpYXIgc2VzacOzbiwgYWNlcHRhcyBudWVzdHJvcycsXG4gICAgICB0ZXJtc0FuZENvbmRpdGlvbnM6ICdUw6lybWlub3MgeSBDb25kaWNpb25lcycsXG4gICAgICBhbmQ6ICd5JyxcbiAgICAgIHByaXZhY3lQb2xpY3k6ICdQb2zDrXRpY2EgZGUgUHJpdmFjaWRhZCcsXG5cbiAgICAgIC8vIEFjY2lvbmVzIGdlbsOpcmljYXNcbiAgICAgIGNsb3NlOiAnQ2VycmFyJyxcblxuICAgICAgLy8gVG9hc3RzXG4gICAgICB3ZWxjb21lOiAnwqFCaWVudmVuaWRvIScsXG4gICAgICBjb21wbGV0ZUFsbEZpZWxkczogJ0NvbXBsZXRhIHRvZG9zIGxvcyBjYW1wb3MuJyxcbiAgICAgIGVudGVyRW1haWw6ICdJbmdyZXNhIHR1IGNvcnJlbyBlbGVjdHLDs25pY28uJyxcblxuICAgICAgLy8gRXJyb3JzIChtYXBlYWRvcyBkZSBjw7NkaWdvcyBiYWNrZW5kKVxuICAgICAgZXJyb3JJbnZhbGlkQ3JlZGVudGlhbHM6ICdDb3JyZW8gbyBjb250cmFzZcOxYSBpbmNvcnJlY3RvcycsXG4gICAgICBlcnJvckVtYWlsTm90VmVyaWZpZWQ6ICdEZWJlcyB2ZXJpZmljYXIgdHUgY29ycmVvIGVsZWN0csOzbmljbycsXG4gICAgICBlcnJvckFjY291bnRTdXNwZW5kZWQ6ICdUdSBjdWVudGEgaGEgc2lkbyBzdXNwZW5kaWRhJyxcbiAgICAgIGVycm9yRW1haWxFeGlzdHM6ICdFc3RlIGNvcnJlbyB5YSBlc3TDoSByZWdpc3RyYWRvJyxcbiAgICAgIGVycm9yV2Vha1Bhc3N3b3JkOiAnTGEgY29udHJhc2XDsWEgZXMgbXV5IGTDqWJpbCcsXG4gICAgICBlcnJvckludmFsaWRDb2RlOiAnQ8OzZGlnbyBpbmNvcnJlY3RvJyxcbiAgICAgIGVycm9yRXhwaXJlZENvZGU6ICdFbCBjw7NkaWdvIGhhIGV4cGlyYWRvLiBTb2xpY2l0YSB1bm8gbnVldm8uJyxcbiAgICAgIGVycm9yVG9vTWFueUF0dGVtcHRzOiAnRGVtYXNpYWRvcyBpbnRlbnRvcywgaW50ZW50YSBtw6FzIHRhcmRlJyxcbiAgICAgIGVycm9yTUZBSW52YWxpZENvZGU6ICdDw7NkaWdvIGRlIHZlcmlmaWNhY2nDs24gaW5jb3JyZWN0bycsXG4gICAgICBlcnJvclBvcHVwQmxvY2tlZDogJ1BvciBmYXZvciwgcGVybWl0ZSB2ZW50YW5hcyBlbWVyZ2VudGVzJyxcbiAgICAgIGVycm9yT0F1dGhGYWlsZWQ6ICdFcnJvciBkZSBhdXRlbnRpY2FjacOzbicsXG4gICAgICBlcnJvckdlbmVyaWM6ICdIYSBvY3VycmlkbyB1biBlcnJvci4gSW50ZW50YSBkZSBudWV2by4nLFxuICAgIH0sXG4gICAgZW46IHtcbiAgICAgIC8vIExvZ2luXG4gICAgICBsb2dpblRpdGxlOiAnU2lnbiBpbicsXG4gICAgICBlbWFpbDogJ0VtYWlsJyxcbiAgICAgIGVtYWlsUGxhY2Vob2xkZXI6ICd5b3VAZW1haWwuY29tJyxcbiAgICAgIGVtYWlsUmVxdWlyZWQ6ICdFbWFpbCBpcyByZXF1aXJlZCcsXG4gICAgICBlbWFpbEludmFsaWQ6ICdFbnRlciBhIHZhbGlkIGVtYWlsJyxcbiAgICAgIHBhc3N3b3JkOiAnUGFzc3dvcmQnLFxuICAgICAgcGFzc3dvcmRQbGFjZWhvbGRlcjogJ+KAouKAouKAouKAouKAouKAouKAouKAoicsXG4gICAgICBwYXNzd29yZFJlcXVpcmVkOiAnUGFzc3dvcmQgaXMgcmVxdWlyZWQnLFxuICAgICAgbG9naW5TdWJtaXQ6ICdTaWduIGluJyxcblxuICAgICAgLy8gT0F1dGhcbiAgICAgIG9yQ29udGludWVXaXRoOiAnb3IgY29udGludWUgd2l0aCcsXG4gICAgICBjb250aW51ZVdpdGhHb29nbGU6ICdDb250aW51ZSB3aXRoIEdvb2dsZScsXG4gICAgICBjb250aW51ZVdpdGhBcHBsZTogJ0NvbnRpbnVlIHdpdGggQXBwbGUnLFxuICAgICAgY29udGludWVXaXRoTWljcm9zb2Z0OiAnQ29udGludWUgd2l0aCBNaWNyb3NvZnQnLFxuICAgICAgY29ubmVjdGluZzogJ0Nvbm5lY3RpbmcuLi4nLFxuXG4gICAgICAvLyBSZWdpc3RlclxuICAgICAgcmVnaXN0ZXJUaXRsZTogJ0NyZWF0ZSBhY2NvdW50JyxcbiAgICAgIGZ1bGxOYW1lOiAnRnVsbCBuYW1lJyxcbiAgICAgIG5hbWVQbGFjZWhvbGRlcjogJ1lvdXIgbmFtZScsXG4gICAgICBuYW1lUmVxdWlyZWQ6ICdOYW1lIGlzIHJlcXVpcmVkJyxcbiAgICAgIG5hbWVNaW5MZW5ndGg6ICdNaW5pbXVtIDIgY2hhcmFjdGVycycsXG4gICAgICBwYXNzd29yZE1pbkxlbmd0aDogJ01pbmltdW0gOCBjaGFyYWN0ZXJzJyxcbiAgICAgIHJlZ2lzdGVyU3VibWl0OiAnU2lnbiB1cCcsXG4gICAgICBub0FjY291bnQ6IFwiRG9uJ3QgaGF2ZSBhbiBhY2NvdW50P1wiLFxuICAgICAgcmVnaXN0ZXI6ICdTaWduIHVwJyxcbiAgICAgIGhhc0FjY291bnQ6ICdBbHJlYWR5IGhhdmUgYW4gYWNjb3VudD8nLFxuICAgICAgc2lnbkluOiAnU2lnbiBpbicsXG5cbiAgICAgIC8vIFZlcmlmeSBlbWFpbFxuICAgICAgdmVyaWZ5VGl0bGU6ICdWZXJpZnkgZW1haWwnLFxuICAgICAgdmVyaWZ5RGVzY3JpcHRpb246ICdFbnRlciB0aGUgdmVyaWZpY2F0aW9uIGNvZGUgc2VudCB0byB5b3VyIGVtYWlsLicsXG4gICAgICB2ZXJpZnlTdWJtaXQ6ICdWZXJpZnknLFxuICAgICAgY29kZVJlcXVpcmVkOiAnQ29kZSBpcyByZXF1aXJlZCcsXG4gICAgICBjb2RlTWluTGVuZ3RoOiAnRW50ZXIgYWxsIDYgZGlnaXRzJyxcbiAgICAgIG5vQ29kZVJlY2VpdmVkOiBcIkRpZG4ndCByZWNlaXZlIHlvdXIgY29kZT9cIixcbiAgICAgIHJlc2VuZDogJ1Jlc2VuZCcsXG4gICAgICByZXNlbmRJbjogJ1Jlc2VuZCBpbiB7c2Vjb25kc31zJyxcbiAgICAgIGNvZGVTZW50OiAnQ29kZSByZXNlbnQuIENoZWNrIHlvdXIgZW1haWwuJyxcbiAgICAgIGVtYWlsVmVyaWZpZWQ6ICdFbWFpbCB2ZXJpZmllZCEgV2VsY29tZS4nLFxuXG4gICAgICAvLyBNRkFcbiAgICAgIG1mYVRpdGxlOiAnTUZBIFZlcmlmaWNhdGlvbicsXG4gICAgICBtZmFUT1RQOiAnRW50ZXIgdGhlIGNvZGUgZnJvbSB5b3VyIGF1dGhlbnRpY2F0b3IgYXBwJyxcbiAgICAgIG1mYUVtYWlsOiAnRW50ZXIgdGhlIGNvZGUgc2VudCB0byB5b3VyIGVtYWlsJyxcbiAgICAgIG1mYVNNUzogJ0VudGVyIHRoZSBjb2RlIHNlbnQgdG8geW91ciBwaG9uZScsXG5cbiAgICAgIC8vIEZvcmdvdC9SZXNldCBwYXNzd29yZFxuICAgICAgZm9yZ290VGl0bGU6ICdSZWNvdmVyIHBhc3N3b3JkJyxcbiAgICAgIGZvcmdvdERlc2NyaXB0aW9uOiAnRW50ZXIgeW91ciBlbWFpbCBhbmQgd2Ugd2lsbCBzZW5kIHlvdSBhIGNvZGUuJyxcbiAgICAgIGZvcmdvdFN1Ym1pdDogJ1NlbmQgY29kZScsXG4gICAgICBmb3Jnb3RMaW5rOiAnRm9yZ290IHlvdXIgcGFzc3dvcmQ/JyxcbiAgICAgIHJlY292ZXJQYXNzd29yZDogJ1JlY292ZXIgcGFzc3dvcmQnLFxuICAgICAgcmVzZXRUaXRsZTogJ1Jlc2V0IHBhc3N3b3JkJyxcbiAgICAgIHJlc2V0RGVzY3JpcHRpb246ICdXZSBoYXZlIHNlbnQgYSB2ZXJpZmljYXRpb24gY29kZSB0byB5b3VyIGVtYWlsLicsXG4gICAgICBuZXdQYXNzd29yZDogJ05ldyBwYXNzd29yZCcsXG4gICAgICBuZXdQYXNzd29yZEhpbnQ6ICdNaW5pbXVtIDggY2hhcmFjdGVycycsXG4gICAgICByZXNldFN1Ym1pdDogJ0NoYW5nZSBwYXNzd29yZCcsXG4gICAgICBwYXNzd29yZFVwZGF0ZWQ6ICdQYXNzd29yZCB1cGRhdGVkISBZb3UgY2FuIG5vdyBzaWduIGluLicsXG5cbiAgICAgIC8vIENoYW5nZSBwYXNzd29yZCAoYWN0aXZlIHNlc3Npb24pXG4gICAgICBjaGFuZ2VQYXNzd29yZFRpdGxlOiAnQ2hhbmdlIHBhc3N3b3JkJyxcbiAgICAgIGNoYW5nZVBhc3N3b3JkRGVzY3JpcHRpb246ICdFbnRlciB5b3VyIGN1cnJlbnQgcGFzc3dvcmQgYW5kIHRoZSBuZXcgb25lLicsXG4gICAgICBjdXJyZW50UGFzc3dvcmQ6ICdDdXJyZW50IHBhc3N3b3JkJyxcbiAgICAgIGN1cnJlbnRQYXNzd29yZFJlcXVpcmVkOiAnQ3VycmVudCBwYXNzd29yZCBpcyByZXF1aXJlZCcsXG4gICAgICBjaGFuZ2VQYXNzd29yZFN1Ym1pdDogJ0NoYW5nZSBwYXNzd29yZCcsXG4gICAgICBwYXNzd29yZENoYW5nZWRTdWNjZXNzOiAnUGFzc3dvcmQgdXBkYXRlZCEnLFxuICAgICAgZXJyb3JDdXJyZW50UGFzc3dvcmRXcm9uZzogJ0N1cnJlbnQgcGFzc3dvcmQgaXMgaW5jb3JyZWN0JyxcbiAgICAgIGVycm9yU2FtZVBhc3N3b3JkOiAnTmV3IHBhc3N3b3JkIG11c3QgYmUgZGlmZmVyZW50IGZyb20gdGhlIGN1cnJlbnQgb25lJyxcblxuICAgICAgLy8gU2V0IHBhc3N3b3JkIChPQXV0aC1vbmx5IGFjY291bnQpXG4gICAgICBzZXRQYXNzd29yZFRpdGxlOiAnQ3JlYXRlIHBhc3N3b3JkJyxcbiAgICAgIHNldFBhc3N3b3JkRGVzY3JpcHRpb246XG4gICAgICAgICdZb3VyIGFjY291bnQgdXNlcyBzb2NpYWwgc2lnbi1pbi4gQ3JlYXRlIGEgcGFzc3dvcmQgdG8gYWxzbyBzaWduIGluIHdpdGggeW91ciBlbWFpbC4nLFxuICAgICAgc2V0UGFzc3dvcmRTdWJtaXQ6ICdDcmVhdGUgcGFzc3dvcmQnLFxuICAgICAgc2V0UGFzc3dvcmRDb25maXJtVGl0bGU6ICdDcmVhdGUgcGFzc3dvcmQ/JyxcbiAgICAgIHNldFBhc3N3b3JkQ29uZmlybU1lc3NhZ2U6XG4gICAgICAgICdZb3Ugd2lsbCBiZSBhYmxlIHRvIHNpZ24gaW4gd2l0aCB5b3VyIGVtYWlsIGFuZCBwYXNzd29yZCwgaW4gYWRkaXRpb24gdG8geW91ciBzb2NpYWwgYWNjb3VudC4gWW91IHdpbGwgbm90IGxvc2Ugc29jaWFsIGFjY2Vzcy4nLFxuICAgICAgc2V0UGFzc3dvcmRDb25maXJtT2s6ICdDcmVhdGUgcGFzc3dvcmQnLFxuICAgICAgc2V0UGFzc3dvcmRDb25maXJtQ2FuY2VsOiAnQ2FuY2VsJyxcbiAgICAgIHBhc3N3b3JkU2V0U3VjY2VzczogJ1Bhc3N3b3JkIGNyZWF0ZWQhJyxcbiAgICAgIGVycm9yUGFzc3dvcmRBbHJlYWR5U2V0OiAnVGhpcyBhY2NvdW50IGFscmVhZHkgaGFzIGEgcGFzc3dvcmQuJyxcblxuICAgICAgLy8gTUZBIOKAlCB0d28tZmFjdG9yIGF1dGhlbnRpY2F0aW9uXG4gICAgICBtZmFNYW5hZ2VUaXRsZTogJ1R3by1mYWN0b3IgYXV0aGVudGljYXRpb24nLFxuICAgICAgbWZhRW5hYmxlZExhYmVsOiAnTUZBIGVuYWJsZWQnLFxuICAgICAgbWZhRGlzYWJsZWRMYWJlbDogJ01GQSBkaXNhYmxlZCcsXG4gICAgICBtZmFEaXNhYmxlZEhpbnQ6ICdFbmFibGUgTUZBIGZvciBleHRyYSBhY2NvdW50IHNlY3VyaXR5LicsXG4gICAgICBtZmFFbmFibGVCdXR0b246ICdFbmFibGUgTUZBJyxcbiAgICAgIG1mYURpc2FibGVCdXR0b246ICdEaXNhYmxlIE1GQScsXG4gICAgICBtZmFFbmFibGVUaXRsZTogJ0VuYWJsZSBNRkEnLFxuICAgICAgbWZhTWV0aG9kUHJvbXB0OiAnQ2hvb3NlIHlvdXIgdmVyaWZpY2F0aW9uIG1ldGhvZDonLFxuICAgICAgbWZhTWV0aG9kVG90cDogJ0F1dGhlbnRpY2F0b3IgYXBwJyxcbiAgICAgIG1mYU1ldGhvZFRvdHBIaW50OiAnVXNlIEdvb2dsZSBBdXRoZW50aWNhdG9yIG9yIGFub3RoZXIgYXBwIChyZWNvbW1lbmRlZCkuJyxcbiAgICAgIG1mYU1ldGhvZEVtYWlsOiAnRW1haWwnLFxuICAgICAgbWZhTWV0aG9kRW1haWxIaW50OiAnUmVjZWl2ZSBjb2RlcyBpbiB5b3VyIGVtYWlsLicsXG4gICAgICBtZmFNZXRob2RTbXM6ICdTTVMnLFxuICAgICAgbWZhTWV0aG9kU21zSGludDogJ1JlY2VpdmUgY29kZXMgYnkgdGV4dCBtZXNzYWdlLicsXG4gICAgICBtZmFQaG9uZUxhYmVsOiAnUGhvbmUnLFxuICAgICAgbWZhUGhvbmVJbnZhbGlkOiAnRW50ZXIgYSB2YWxpZCBudW1iZXIgaW4gRS4xNjQgZm9ybWF0IChlLmcuICs1NjkxMjM0NTY3OCkuJyxcbiAgICAgIG1mYVBob25lUmVnaXN0ZXJlZDogJ1JlZ2lzdGVyZWQgcGhvbmUnLFxuICAgICAgbWZhQ29udGludWU6ICdDb250aW51ZScsXG4gICAgICBtZmFDYW5jZWw6ICdDYW5jZWwnLFxuICAgICAgbWZhVG90cFNldHVwVGl0bGU6ICdTZXQgdXAgYXV0aGVudGljYXRvciBhcHAnLFxuICAgICAgbWZhVG90cFN0ZXAxOiAnU3RlcCAxIOKAlCBTY2FuIHRoZSBRUiBjb2RlIHdpdGggeW91ciBhdXRoZW50aWNhdG9yIGFwcC4nLFxuICAgICAgbWZhVG90cE1hbnVhbEVudHJ5OiBcIkNhbid0IHNjYW4/IEVudGVyIHRoaXMgY29kZSBtYW51YWxseTpcIixcbiAgICAgIG1mYVRvdHBTdGVwMjogJ1N0ZXAgMiDigJQgRW50ZXIgdGhlIDYtZGlnaXQgY29kZSBmcm9tIHlvdXIgYXBwOicsXG4gICAgICBtZmFUb3RwVmVyaWZ5OiAnVmVyaWZ5IGFuZCBhY3RpdmF0ZScsXG4gICAgICBtZmFDb25maXJtVGl0bGU6ICdDb25maXJtIE1GQScsXG4gICAgICBtZmFDb25maXJtUHJvbXB0RW1haWw6ICdFbnRlciB0aGUgNi1kaWdpdCBjb2RlIHNlbnQgdG8geW91ciBlbWFpbC4nLFxuICAgICAgbWZhQ29uZmlybVByb21wdFNtczogJ0VudGVyIHRoZSA2LWRpZ2l0IGNvZGUgc2VudCB0byB5b3VyIHBob25lLicsXG4gICAgICBtZmFDb25maXJtQnV0dG9uOiAnQ29uZmlybScsXG4gICAgICBtZmFOb0NvZGU6IFwiRGlkbid0IHJlY2VpdmUgdGhlIGNvZGU/XCIsXG4gICAgICBtZmFSZXNlbmQ6ICdSZXNlbmQnLFxuICAgICAgbWZhUmVzZW5kSW46ICdSZXNlbmQgaW4nLFxuICAgICAgbWZhQmFja3VwQ29kZXNUaXRsZTogJ0JhY2t1cCBjb2RlcycsXG4gICAgICBtZmFCYWNrdXBDb2Rlc0F2YWlsYWJsZTogJ0F2YWlsYWJsZSBjb2RlcycsXG4gICAgICBtZmFCYWNrdXBDb2Rlc0xvdzogJ1lvdSBoYXZlIGZldyBjb2RlcyBsZWZ0LiBDb25zaWRlciByZWdlbmVyYXRpbmcgdGhlbS4nLFxuICAgICAgbWZhQmFja3VwQ29kZXNTYXZlV2FybmluZzogJ0ltcG9ydGFudDogc2F2ZSB0aGVzZSBiYWNrdXAgY29kZXMuJyxcbiAgICAgIG1mYUJhY2t1cENvZGVzRXhwbGFpbjpcbiAgICAgICAgJ0lmIHlvdSBsb3NlIGFjY2VzcyB0byB5b3VyIGFwcCwgdGhlc2UgY29kZXMgbGV0IHlvdSBzaWduIGluLiBFYWNoIGNhbiBiZSB1c2VkIG9uY2UuJyxcbiAgICAgIG1mYUNvcHlDb2RlczogJ0NvcHkgY29kZXMnLFxuICAgICAgbWZhUmVnZW5lcmF0ZUNvZGVzOiAnUmVnZW5lcmF0ZSBiYWNrdXAgY29kZXMnLFxuICAgICAgbWZhRGlzYWJsZVRpdGxlOiAnRGlzYWJsZSBNRkEnLFxuICAgICAgbWZhRGlzYWJsZVByb21wdDogJ0VudGVyIHlvdXIgcGFzc3dvcmQgdG8gZGlzYWJsZSBNRkEuJyxcbiAgICAgIG1mYVBhc3N3b3JkTGFiZWw6ICdQYXNzd29yZCcsXG4gICAgICBtZmFDb2RlSW52YWxpZDogJ0VudGVyIGEgdmFsaWQgNi1kaWdpdCBjb2RlLicsXG4gICAgICBtZmFQYXNzd29yZFJlcXVpcmVkOiAnRW50ZXIgeW91ciBwYXNzd29yZC4nLFxuICAgICAgbWZhRW5hYmxlZE9rOiAnTUZBIGVuYWJsZWQgc3VjY2Vzc2Z1bGx5IScsXG4gICAgICBtZmFEaXNhYmxlZE9rOiAnTUZBIGRpc2FibGVkIHN1Y2Nlc3NmdWxseS4nLFxuICAgICAgbWZhQ29kZXNDb3BpZWQ6ICdDb2RlcyBjb3BpZWQgdG8gY2xpcGJvYXJkLicsXG4gICAgICBtZmFFcnJvckludmFsaWRDb2RlOiAnSW5jb3JyZWN0IGNvZGUuJyxcbiAgICAgIG1mYUVycm9yRXhwaXJlZENvZGU6ICdUaGUgY29kZSBoYXMgZXhwaXJlZC4gUmVxdWVzdCBhIG5ldyBvbmUuJyxcbiAgICAgIG1mYUVycm9yQ29kZVVzZWQ6ICdUaGlzIGNvZGUgd2FzIGFscmVhZHkgdXNlZC4nLFxuICAgICAgbWZhRXJyb3JBbHJlYWR5QWN0aXZlOiAnTUZBIGlzIGFscmVhZHkgZW5hYmxlZC4nLFxuICAgICAgbWZhRXJyb3JOb3RFbmFibGVkOiAnTUZBIGlzIG5vdCBlbmFibGVkLicsXG4gICAgICBtZmFFcnJvclBob25lUmVxdWlyZWQ6ICdQaG9uZSBudW1iZXIgcmVxdWlyZWQuJyxcbiAgICAgIG1mYUVycm9yUGhvbmVFeGlzdHM6ICdUaGlzIHBob25lIGlzIGFscmVhZHkgaW4gdXNlLicsXG5cbiAgICAgIC8vIExlZ2FsXG4gICAgICBsZWdhbFByZWZpeDogJ1dlIHVzZSB0aGUgc2VydmljZXMgb2YnLFxuICAgICAgbGVnYWxTdWZmaXg6ICd0byBvZmZlciB5b3UgYSBzZWN1cmUgZXhwZXJpZW5jZS4gQnkgc2lnbmluZyBpbiwgeW91IGFjY2VwdCBvdXInLFxuICAgICAgdGVybXNBbmRDb25kaXRpb25zOiAnVGVybXMgYW5kIENvbmRpdGlvbnMnLFxuICAgICAgYW5kOiAnYW5kJyxcbiAgICAgIHByaXZhY3lQb2xpY3k6ICdQcml2YWN5IFBvbGljeScsXG5cbiAgICAgIC8vIEFjY2lvbmVzIGdlbsOpcmljYXNcbiAgICAgIGNsb3NlOiAnQ2xvc2UnLFxuXG4gICAgICAvLyBUb2FzdHNcbiAgICAgIHdlbGNvbWU6ICdXZWxjb21lIScsXG4gICAgICBjb21wbGV0ZUFsbEZpZWxkczogJ0NvbXBsZXRlIGFsbCBmaWVsZHMuJyxcbiAgICAgIGVudGVyRW1haWw6ICdFbnRlciB5b3VyIGVtYWlsLicsXG5cbiAgICAgIC8vIEVycm9yc1xuICAgICAgZXJyb3JJbnZhbGlkQ3JlZGVudGlhbHM6ICdJbmNvcnJlY3QgZW1haWwgb3IgcGFzc3dvcmQnLFxuICAgICAgZXJyb3JFbWFpbE5vdFZlcmlmaWVkOiAnWW91IG11c3QgdmVyaWZ5IHlvdXIgZW1haWwnLFxuICAgICAgZXJyb3JBY2NvdW50U3VzcGVuZGVkOiAnWW91ciBhY2NvdW50IGhhcyBiZWVuIHN1c3BlbmRlZCcsXG4gICAgICBlcnJvckVtYWlsRXhpc3RzOiAnVGhpcyBlbWFpbCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQnLFxuICAgICAgZXJyb3JXZWFrUGFzc3dvcmQ6ICdQYXNzd29yZCBpcyB0b28gd2VhaycsXG4gICAgICBlcnJvckludmFsaWRDb2RlOiAnSW5jb3JyZWN0IGNvZGUnLFxuICAgICAgZXJyb3JFeHBpcmVkQ29kZTogJ0NvZGUgaGFzIGV4cGlyZWQuIFJlcXVlc3QgYSBuZXcgb25lLicsXG4gICAgICBlcnJvclRvb01hbnlBdHRlbXB0czogJ1RvbyBtYW55IGF0dGVtcHRzLCB0cnkgYWdhaW4gbGF0ZXInLFxuICAgICAgZXJyb3JNRkFJbnZhbGlkQ29kZTogJ0luY29ycmVjdCB2ZXJpZmljYXRpb24gY29kZScsXG4gICAgICBlcnJvclBvcHVwQmxvY2tlZDogJ1BsZWFzZSBhbGxvdyBwb3AtdXBzJyxcbiAgICAgIGVycm9yT0F1dGhGYWlsZWQ6ICdBdXRoZW50aWNhdGlvbiBlcnJvcicsXG4gICAgICBlcnJvckdlbmVyaWM6ICdBbiBlcnJvciBvY2N1cnJlZC4gUGxlYXNlIHRyeSBhZ2Fpbi4nLFxuICAgIH0sXG4gIH0sXG5cbiAgQXBwQ29uZmlnOiB7XG4gICAgZXM6IHtcbiAgICAgIC8vIFVwZGF0ZSBiYW5uZXJcbiAgICAgIHVwZGF0ZUF2YWlsYWJsZTogJ051ZXZhIHZlcnNpw7NuIGRpc3BvbmlibGUnLFxuICAgICAgdXBkYXRlTm93OiAnQWN0dWFsaXphciBhaG9yYScsXG4gICAgICBjbGlja1RvVXBkYXRlOiAnSGF6IGNsaWMgYXF1w60gcGFyYSBhY3R1YWxpemFyIGEgbGEgw7psdGltYSB2ZXJzacOzbicsXG5cbiAgICAgIC8vIE1haW50ZW5hbmNlIHBhZ2VcbiAgICAgIG1haW50ZW5hbmNlTW9kZTogJ1Npc3RlbWEgZW4gbWFudGVuaW1pZW50bycsXG4gICAgICBtYWludGVuYW5jZU1lc3NhZ2U6ICdFc3RhbW9zIHJlYWxpemFuZG8gbWVqb3Jhcy4gVnVlbHZlIHByb250by4nLFxuICAgIH0sXG4gICAgZW46IHtcbiAgICAgIC8vIFVwZGF0ZSBiYW5uZXJcbiAgICAgIHVwZGF0ZUF2YWlsYWJsZTogJ05ldyB2ZXJzaW9uIGF2YWlsYWJsZScsXG4gICAgICB1cGRhdGVOb3c6ICdVcGRhdGUgbm93JyxcbiAgICAgIGNsaWNrVG9VcGRhdGU6ICdDbGljayBoZXJlIHRvIHVwZGF0ZSB0byB0aGUgbGF0ZXN0IHZlcnNpb24nLFxuXG4gICAgICAvLyBNYWludGVuYW5jZSBwYWdlXG4gICAgICBtYWludGVuYW5jZU1vZGU6ICdTeXN0ZW0gdW5kZXIgbWFpbnRlbmFuY2UnLFxuICAgICAgbWFpbnRlbmFuY2VNZXNzYWdlOiAnV2UgYXJlIG1ha2luZyBpbXByb3ZlbWVudHMuIENvbWUgYmFjayBzb29uLicsXG4gICAgfSxcbiAgfSxcblxuICBGZWVkYmFjazoge1xuICAgIGVzOiB7XG4gICAgICBwYWdlVXNlZnVsUXVlc3Rpb246ICfCv1RlIHJlc3VsdMOzIMO6dGlsIGVzdGEgcMOhZ2luYT8nLFxuICAgICAgY29tbWVudFBsYWNlaG9sZGVyOiAnQ3XDqW50YW5vcyBjw7NtbyBwb2RlbW9zIG1lam9yYXIuLi4nLFxuICAgICAgdGhhbmtZb3VNZXNzYWdlOiAnwqFHcmFjaWFzIHBvciB0dSBmZWVkYmFjayEnLFxuICAgIH0sXG4gICAgZW46IHtcbiAgICAgIHBhZ2VVc2VmdWxRdWVzdGlvbjogJ1dhcyB0aGlzIHBhZ2UgaGVscGZ1bD8nLFxuICAgICAgY29tbWVudFBsYWNlaG9sZGVyOiAnVGVsbCB1cyBob3cgd2UgY2FuIGltcHJvdmUuLi4nLFxuICAgICAgdGhhbmtZb3VNZXNzYWdlOiAnVGhhbmtzIGZvciB5b3VyIGZlZWRiYWNrIScsXG4gICAgfSxcbiAgfSxcblxuICBDb250ZW50UmVhY3Rpb246IHtcbiAgICBlczoge1xuICAgICAgcXVlc3Rpb246ICfCv1RlIHJlc3VsdMOzIMO6dGlsIGVzdGUgY29udGVuaWRvPycsXG4gICAgICBjb21tZW50UGxhY2Vob2xkZXI6ICdDdcOpbnRhbm9zIG3DoXMgKG9wY2lvbmFsKS4uLicsXG4gICAgICBzdWJtaXQ6ICdFbnZpYXInLFxuICAgICAgdXBkYXRlOiAnQWN0dWFsaXphcicsXG4gICAgICB0aGFua1lvdTogJ8KhR3JhY2lhcyBwb3IgdHUgb3BpbmnDs24hJyxcbiAgICAgIHN1Ym1pdHRlZDogJ1R1IG9waW5pw7NuIGhhIHNpZG8gcmVnaXN0cmFkYScsXG4gICAgICBlcnJvclN1Ym1pdHRpbmc6ICdFcnJvciBhbCBlbnZpYXIuIEludGVudGEgZGUgbnVldm8uJyxcbiAgICB9LFxuICAgIGVuOiB7XG4gICAgICBxdWVzdGlvbjogJ1dhcyB0aGlzIGNvbnRlbnQgaGVscGZ1bD8nLFxuICAgICAgY29tbWVudFBsYWNlaG9sZGVyOiAnVGVsbCB1cyBtb3JlIChvcHRpb25hbCkuLi4nLFxuICAgICAgc3VibWl0OiAnU3VibWl0JyxcbiAgICAgIHVwZGF0ZTogJ1VwZGF0ZScsXG4gICAgICB0aGFua1lvdTogJ1RoYW5rcyBmb3IgeW91ciBmZWVkYmFjayEnLFxuICAgICAgc3VibWl0dGVkOiAnWW91ciBmZWVkYmFjayBoYXMgYmVlbiByZWNvcmRlZCcsXG4gICAgICBlcnJvclN1Ym1pdHRpbmc6ICdFcnJvciBzdWJtaXR0aW5nLiBQbGVhc2UgdHJ5IGFnYWluLicsXG4gICAgfSxcbiAgfSxcblxuICBBdmF0YXJVcGxvYWQ6IHtcbiAgICBlczoge1xuICAgICAgLy8gQWN0aW9uc1xuICAgICAgY2hhbmdlUGhvdG86ICdDYW1iaWFyIGZvdG8nLFxuICAgICAgY3JvcEltYWdlOiAnUmVjb3J0YXIgaW1hZ2VuJyxcbiAgICAgIGNvbmZpcm06ICdDb25maXJtYXInLFxuXG4gICAgICAvLyBTdGF0dXNcbiAgICAgIHVwbG9hZGluZzogJ1N1YmllbmRvIGZvdG8uLi4nLFxuICAgICAgdXBsb2FkU3VjY2VzczogJ0ZvdG8gYWN0dWFsaXphZGEnLFxuXG4gICAgICAvLyBFcnJvcnNcbiAgICAgIHVwbG9hZEVycm9yOiAnRXJyb3IgYWwgc3ViaXIgbGEgaW1hZ2VuJyxcbiAgICAgIHVwbG9hZFRpbWVvdXQ6ICdMYSBzdWJpZGEgdGFyZMOzIGRlbWFzaWFkby4gVmVyaWZpY2EgdHUgY29uZXhpw7NuLicsXG4gICAgICBuZXR3b3JrRXJyb3I6ICdFcnJvciBkZSByZWQuIFZlcmlmaWNhIHR1IGNvbmV4acOzbiBhIGludGVybmV0LicsXG4gICAgICBpbnZhbGlkRm9ybWF0OiAnRm9ybWF0byBubyB2w6FsaWRvLiBVc2EgSlBHLCBQTkcgbyBXZWJQLicsXG4gICAgICBmaWxlVG9vTGFyZ2U6ICdMYSBpbWFnZW4gZXMgbXV5IGdyYW5kZS4gTcOheGltbyAxME1CLicsXG4gICAgICBsb2FkRmFpbGVkOiAnTm8gc2UgcHVkbyBjYXJnYXIgbGEgaW1hZ2VuJyxcbiAgICB9LFxuICAgIGVuOiB7XG4gICAgICAvLyBBY3Rpb25zXG4gICAgICBjaGFuZ2VQaG90bzogJ0NoYW5nZSBwaG90bycsXG4gICAgICBjcm9wSW1hZ2U6ICdDcm9wIGltYWdlJyxcbiAgICAgIGNvbmZpcm06ICdDb25maXJtJyxcblxuICAgICAgLy8gU3RhdHVzXG4gICAgICB1cGxvYWRpbmc6ICdVcGxvYWRpbmcgcGhvdG8uLi4nLFxuICAgICAgdXBsb2FkU3VjY2VzczogJ1Bob3RvIHVwZGF0ZWQnLFxuXG4gICAgICAvLyBFcnJvcnNcbiAgICAgIHVwbG9hZEVycm9yOiAnRXJyb3IgdXBsb2FkaW5nIGltYWdlJyxcbiAgICAgIHVwbG9hZFRpbWVvdXQ6ICdVcGxvYWQgdG9vayB0b28gbG9uZy4gQ2hlY2sgeW91ciBjb25uZWN0aW9uLicsXG4gICAgICBuZXR3b3JrRXJyb3I6ICdOZXR3b3JrIGVycm9yLiBDaGVjayB5b3VyIGludGVybmV0IGNvbm5lY3Rpb24uJyxcbiAgICAgIGludmFsaWRGb3JtYXQ6ICdJbnZhbGlkIGZvcm1hdC4gVXNlIEpQRywgUE5HIG9yIFdlYlAuJyxcbiAgICAgIGZpbGVUb29MYXJnZTogJ0ltYWdlIGlzIHRvbyBsYXJnZS4gTWF4aW11bSAxME1CLicsXG4gICAgICBsb2FkRmFpbGVkOiAnQ291bGQgbm90IGxvYWQgaW1hZ2UnLFxuICAgIH0sXG4gIH0sXG59O1xuIl19
|
|
729
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jb250ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9pMThuL2RlZmF1bHQtY29udGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQWlCO0lBQ25ELE9BQU8sRUFBRTtRQUNQLEVBQUUsRUFBRTtZQUNGLG1CQUFtQjtZQUNuQixNQUFNLEVBQUUsUUFBUTtZQUNoQixNQUFNLEVBQUUsVUFBVTtZQUNsQixJQUFJLEVBQUUsU0FBUztZQUNmLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLElBQUksRUFBRSxRQUFRO1lBQ2QsS0FBSyxFQUFFLFFBQVE7WUFDZixJQUFJLEVBQUUsUUFBUTtZQUNkLElBQUksRUFBRSxXQUFXO1lBQ2pCLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLFNBQVMsRUFBRSxXQUFXO1lBRXRCLFVBQVU7WUFDVixPQUFPLEVBQUUsT0FBTztZQUNoQixLQUFLLEVBQUUsT0FBTztZQUNkLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLElBQUksRUFBRSxhQUFhO1lBRW5CLGlCQUFpQjtZQUNqQixhQUFhLEVBQUUsdUNBQXVDO1lBQ3RELGFBQWEsRUFBRSx1Q0FBdUM7WUFFdEQsbUJBQW1CO1lBQ25CLFNBQVMsRUFBRSw4QkFBOEI7WUFDekMsUUFBUSxFQUFFLHlCQUF5QjtZQUVuQyxhQUFhO1lBQ2IsSUFBSSxFQUFFLFFBQVE7WUFDZCxRQUFRLEVBQUUsZUFBZTtZQUN6QixPQUFPLEVBQUUsUUFBUTtZQUNqQixNQUFNLEVBQUUsZUFBZTtZQUV2QixnQ0FBZ0M7WUFDaEMsV0FBVyxFQUFFLGFBQWE7WUFDMUIsYUFBYSxFQUFFLGVBQWU7WUFDOUIsV0FBVyxFQUFFLGVBQWU7WUFFNUIs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b0I7WUFDL0IsYUFBYSxFQUFFLGVBQWU7WUFFOUIsU0FBUztZQUNULFdBQVcsRUFBRSx1QkFBdUI7WUFDcEMsYUFBYSxFQUFFLDhDQUE4QztZQUM3RCxZQUFZLEVBQUUsZ0RBQWdEO1lBQzlELGFBQWEsRUFBRSx1Q0FBdUM7WUFDdEQsWUFBWSxFQUFFLG1DQUFtQztZQUNqRCxVQUFVLEVBQUUsc0JBQXNCO1NBQ25DO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGVudFN0b3JlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogVHJhZHVjY2lvbmVzIHBvciBkZWZlY3RvIGRlIHZhbHRlY2gtY29tcG9uZW50cy5cbiAqXG4gKiBFc3RhcyB0cmFkdWNjaW9uZXMgc2UgY2FyZ2FuIGF1dG9tw6F0aWNhbWVudGUgY3VhbmRvIHNlIHVzYSBwcm92aWRlVmFsdGVjaEkxOG4oKVxuICogc2luIG5lY2VzaWRhZCBkZSBjb25maWd1cmFjacOzbiBhZGljaW9uYWwuXG4gKlxuICogTGFzIGFwcHMgcHVlZGVuIHNvYnJlc2NyaWJpciBjdWFscXVpZXIga2V5IHBhc2FuZG8gc3UgcHJvcGlvIGNvbnRlbnQ6XG4gKlxuICogQGV4YW1wbGUgU29icmVzY3JpYmlyIHRyYWR1Y2Npb25lcyBlc3BlY8OtZmljYXNcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHByb3ZpZGVWYWx0ZWNoSTE4bih7XG4gKiAgIGNvbnRlbnQ6IHtcbiAqICAgICBfZ2xvYmFsOiB7XG4gKiAgICAgICBlczogeyBzdWNjZXNzOiAnwqFMbyBoaWNpbW9zIScgfSwgIC8vIFNvYnJlc2NyaWJlIHNvbG8gZXN0YSBrZXlcbiAqICAgICAgIGVuOiB7IHN1Y2Nlc3M6ICdXZSBkaWQgaXQhJyB9LFxuICogICAgIH0sXG4gKiAgIH0sXG4gKiB9KVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgRGVzYWN0aXZhciB0cmFkdWNjaW9uZXMgcG9yIGRlZmVjdG9cbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHByb3ZpZGVWYWx0ZWNoSTE4bih7XG4gKiAgIGluY2x1ZGVEZWZhdWx0Q29udGVudDogZmFsc2UsXG4gKiAgIGNvbnRlbnQ6IE1ZX0NVU1RPTV9DT05URU5ULFxuICogfSlcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgVkFMVEVDSF9ERUZBVUxUX0NPTlRFTlQ6IENvbnRlbnRTdG9yZSA9IHtcbiAgX2dsb2JhbDoge1xuICAgIGVzOiB7XG4gICAgICAvLyBBY2Npb25lcyBjb211bmVzXG4gICAgICBzdWJtaXQ6ICdFbnZpYXInLFxuICAgICAgY2FuY2VsOiAnQ2FuY2VsYXInLFxuICAgICAgc2F2ZTogJ0d1YXJkYXInLFxuICAgICAgZGVsZXRlOiAnRWxpbWluYXInLFxuICAgICAgZWRpdDogJ0VkaXRhcicsXG4gICAgICBjbG9zZTogJ0NlcnJhcicsXG4gICAgICBiYWNrOiAnVm9sdmVyJyxcbiAgICAgIG5leHQ6ICdTaWd1aWVudGUnLFxuICAgICAgcHJldmlvdXM6ICdBbnRlcmlvcicsXG4gICAgICBsb2FkaW5nOiAnQ2FyZ2FuZG8uLi4nLFxuICAgICAgc2VhcmNoOiAnQnVzY2FyJyxcbiAgICAgIGxlYXJuTW9yZTogJ1NhYmVyIG3DoXMnLFxuXG4gICAgICAvLyBFc3RhZG9zXG4gICAgICBzdWNjZXNzOiAnw4l4aXRvJyxcbiAgICAgIGVycm9yOiAnRXJyb3InLFxuICAgICAgd2FybmluZzogJ0FkdmVydGVuY2lhJyxcbiAgICAgIGluZm86ICdJbmZvcm1hY2nDs24nLFxuXG4gICAgICAvLyBDb25maXJtYWNpb25lc1xuICAgICAgY29uZmlybURlbGV0ZTogJ8K/RXN0w6FzIHNlZ3VybyBkZSBxdWUgZGVzZWFzIGVsaW1pbmFyPycsXG4gICAgICBjb25maXJtQ2FuY2VsOiAnwr9Fc3TDoXMgc2VndXJvIGRlIHF1ZSBkZXNlYXMgY2FuY2VsYXI/JyxcblxuICAgICAgLy8gTWVuc2FqZXMgY29tdW5lc1xuICAgICAgbm9SZXN1bHRzOiAnTm8gc2UgZW5jb250cmFyb24gcmVzdWx0YWRvcycsXG4gICAgICByZXF1aXJlZDogJ0VzdGUgY2FtcG8gZXMgcmVxdWVyaWRvJyxcblxuICAgICAgLy8gTmF2ZWdhY2nDs25cbiAgICAgIGhvbWU6ICdJbmljaW8nLFxuICAgICAgc2V0dGluZ3M6ICdDb25maWd1cmFjacOzbicsXG4gICAgICBwcm9maWxlOiAnUGVyZmlsJyxcbiAgICAgIGxvZ291dDogJ0NlcnJhciBzZXNpw7NuJyxcblxuICAgICAgLy8gR3JlZXRpbmdzIChzYWx1ZG8gc2Vnw7puIGhvcmEpXG4gICAgICBnb29kTW9ybmluZzogJ0J1ZW5vcyBkw61hcycsXG4gICAgICBnb29kQWZ0ZXJub29uOiAnQnVlbmFzIHRhcmRlcycsXG4gICAgICBnb29kRXZlbmluZzogJ0J1ZW5hcyBub2NoZXMnLFxuXG4gICAgICAvLyBBdXRoIOKAlCBjb25maXJtYWNpw7NuIGNpZXJyZSBkZSBzZXNpw7NuXG4gICAgICBsb2dvdXRDb25maXJtVGl0bGU6ICdDZXJyYXIgc2VzacOzbicsXG4gICAgICBsb2dvdXRDb25maXJtTWVzc2FnZTogJ8K/U2VndXJvIHF1ZSBkZXNlYXMgY2VycmFyIHNlc2nDs24/JyxcblxuICAgICAgLy8gSWRpb21hc1xuICAgICAgbGFuZ3VhZ2VOYW1lX2VzOiAnRXNwYcOxb2wnLFxuICAgICAgbGFuZ3VhZ2VOYW1lX2VuOiAnRW5nbGlzaCcsXG5cbiAgICAgIC8vIENvbXBvbmVudGVzIC0gTW9kYWxlcy9TZWxlY3RzXG4gICAgICBvazogJ0FjZXB0YXInLFxuICAgICAgc2VsZWN0T3B0aW9uOiAnU2VsZWNjaW9uYXIgb3BjacOzbicsXG4gICAgICBzZWxlY3RQbGFjZWhvbGRlcjogJ1NlbGVjY2lvbmFyLi4uJyxcbiAgICAgIGl0ZW1zU2VsZWN0ZWQ6ICdlbGVtZW50b3Mgc2VsZWNjaW9uYWRvcycsXG4gICAgICBzZWxlY3RBbGw6ICdTZWxlY2Npb25hciB0b2RvcycsXG4gICAgICBjbGVhcjogJ0xpbXBpYXInLFxuICAgICAgYXBwbHk6ICdBcGxpY2FyJyxcblxuICAgICAgLy8gQ29tcG9uZW50ZXMgLSBGZWNoYXNcbiAgICAgIHN0YXJ0RGF0ZTogJ0ZlY2hhIGluaWNpbycsXG4gICAgICBlbmREYXRlOiAnRmVjaGEgZmluJyxcbiAgICAgIGRheTogJ2TDrWEnLFxuICAgICAgZGF5czogJ2TDrWFzJyxcblxuICAgICAgLy8gQ29tcG9uZW50ZXMgLSBGb3JtdWxhcmlvc1xuICAgICAgdXBsb2FkRmlsZTogJ1N1YmlyIGFyY2hpdm8nLFxuICAgICAgbm9GaWxlU2VsZWN0ZWQ6ICdObyBoYXMgc2VsZWNjaW9uYWRvIGFyY2hpdm8nLFxuICAgICAgdGl0bGU6ICdUw610dWxvJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcGNpw7NuJyxcbiAgICAgIGZlZWRiYWNrVHlwZTogJ1RpcG8gZGUgZmVlZGJhY2snLFxuICAgICAgZmVlZGJhY2tTdWNjZXNzOiAnRmVlZGJhY2sgZW52aWFkbyBleGl0b3NhbWVudGUnLFxuICAgICAgZmVlZGJhY2tFcnJvcjogJ0Vycm9yIGFsIGVudmlhciBlbCBmZWVkYmFjaycsXG4gICAgICB0aXRsZVBsYWNlaG9sZGVyOiAnRGVzY3JpYmUgYnJldmVtZW50ZS4uLicsXG4gICAgICB0aXRsZVZhbGlkYXRpb246ICdFbCB0w610dWxvIGRlYmUgdGVuZXIgZW50cmUgNSB5IDIwMCBjYXJhY3RlcmVzJyxcbiAgICAgIGRlc2NyaXB0aW9uUGxhY2Vob2xkZXI6ICdQcm9wb3JjaW9uYSBtw6FzIGRldGFsbGVzLi4uJyxcbiAgICAgIGRlc2NyaXB0aW9uVmFsaWRhdGlvbjogJ0xhIGRlc2NyaXBjacOzbiBkZWJlIHRlbmVyIGVudHJlIDEwIHkgNTAwMCBjYXJhY3RlcmVzJyxcblxuICAgICAgLy8gQ29tcG9uZW50ZXMgLSBCw7pzcXVlZGEvR3JpZFxuICAgICAgc2VhcmNoTnVtYmVyOiAnQnVzY2FyIG7Dum1lcm8uLi4nLFxuICAgICAgc2VsZWN0ZWQ6ICdzZWxlY2Npb25hZG8vcycsXG4gICAgICBtYXg6ICdtw6F4OicsXG5cbiAgICAgIC8vIENvbXBvbmVudGVzIC0gTGlzdGFzXG4gICAgICBsb2FkTW9yZUNvbW1lbnRzOiAnQ2FyZ2FyIG3DoXMgY29tZW50YXJpb3MnLFxuICAgICAgbm9EYXRhOiAnTm8gaGF5IGRhdG9zJyxcbiAgICAgIG5vUmVjb3Jkc0ZvdW5kOiAnTm8gc2UgZW5jb250cmFyb24gcmVnaXN0cm9zIHBhcmEgbW9zdHJhci4nLFxuXG4gICAgICAvLyBDb21wb25lbnRlcyAtIEFjY2lvbmVzXG4gICAgICBjb3BpZWRUb0NsaXBib2FyZDogJ8KhQ29waWFkbyBhbCBwb3J0YXBhcGVsZXMhJyxcbiAgICAgIGxhbmd1YWdlOiAnSWRpb21hJyxcbiAgICAgIHNlbGVjdExhbmd1YWdlOiAnU2VsZWNjaW9uYXIgaWRpb21hLi4uJyxcbiAgICAgIGRvd25sb2FkOiAnRGVzY2FyZ2FyJyxcbiAgICAgIGNvcHk6ICdDb3BpYXInLFxuICAgICAgc2hhcmU6ICdDb21wYXJ0aXInLFxuXG4gICAgICAvLyBDb21wb25lbnRlcyAtIERhdGEgVGFibGUgLyBQYWdpbmFjacOzblxuICAgICAgYWN0aW9uczogJ0FjY2lvbmVzJyxcbiAgICAgIHNob3dpbmc6ICdNb3N0cmFuZG8nLFxuICAgICAgb2Y6ICdkZScsXG4gICAgICBwZXJQYWdlOiAncG9yIHDDoWdpbmEnLFxuICAgICAgZmlyc3RQYWdlOiAnUHJpbWVyYSBww6FnaW5hJyxcbiAgICAgIHByZXZpb3VzUGFnZTogJ1DDoWdpbmEgYW50ZXJpb3InLFxuICAgICAgbmV4dFBhZ2U6ICdQw6FnaW5hIHNpZ3VpZW50ZScsXG4gICAgICBsYXN0UGFnZTogJ8OabHRpbWEgcMOhZ2luYScsXG5cbiAgICAgIC8vIENvbXBvbmVudGVzIC0gUGFydGljaXBhbnQgQ2FyZFxuICAgICAgd2lubmVyOiAnR2FuYWRvcicsXG4gICAgICB0aWNrZXQ6ICdib2xldG8nLFxuICAgICAgdGlja2V0czogJ2JvbGV0b3MnLFxuICAgICAgbW9yZTogJ23DoXMnLFxuICAgICAgbm90ZXM6ICdOb3RhczonLFxuXG4gICAgICAvLyBGb290ZXJcbiAgICAgIGFsbFJpZ2h0c1Jlc2VydmVkOiAnVG9kb3MgbG9zIGRlcmVjaG9zIHJlc2VydmFkb3MuJyxcblxuICAgICAgLy8gQ2xpcGJvYXJkXG4gICAgICBsaW5rQ29waWVkOiAnwqFFbmxhY2UgY29waWFkbyEnLFxuXG4gICAgICAvLyBTZWxlY3Rpb25cbiAgICAgIHNlbGVjdDogJ1NlbGVjY2lvbmFyJyxcbiAgICAgIHNlbGVjdE9wdGlvbnM6ICdTZWxlY2Npb25hciBvcGNpb25lcycsXG5cbiAgICAgIC8vIENvbW1lbnRzXG4gICAgICBwaW5uZWQ6ICdGaWphZG8nLFxuICAgICAgZWRpdGVkOiAnKGVkaXRhZG8pJyxcbiAgICAgIHNob3dDb21tZW50OiAnTW9zdHJhciBjb21lbnRhcmlvJyxcbiAgICAgIGhpZGVSZXBsaWVzOiAnT2N1bHRhciByZXNwdWVzdGFzJyxcbiAgICAgIGxvYWRNb3JlUmVwbGllczogJ0NhcmdhciBtw6FzIHJlc3B1ZXN0YXMnLFxuICAgICAgdmlld1JlcGxpZXM6ICdWZXIgcmVzcHVlc3RhcycsXG4gICAgICBjb21tZW50czogJ0NvbWVudGFyaW9zJyxcbiAgICAgIG5vQ29tbWVudHNZZXQ6ICdTaW4gY29tZW50YXJpb3MgYcO6bicsXG4gICAgICBwdWJsaXNoOiAnUHVibGljYXInLFxuICAgICAgc29ydEJ5OiAnT3JkZW5hciBwb3InLFxuICAgICAgd3JpdGVDb21tZW50OiAnRXNjcmliZSB1biBjb21lbnRhcmlvLi4uJyxcbiAgICAgIGJlRmlyc3RUb0NvbW1lbnQ6ICfCoVPDqSBlbCBwcmltZXJvIGVuIGNvbXBhcnRpciB0dSBvcGluacOzbiEnLFxuXG4gICAgICAvLyBUaW1lc3RhbXBzXG4gICAgICBqdXN0Tm93OiAnQWhvcmEgbWlzbW8nLFxuICAgICAgbWludXRlc0FnbzogJ2hhY2Uge21pbnV0ZXN9bScsXG4gICAgICBob3Vyc0FnbzogJ2hhY2Uge2hvdXJzfWgnLFxuICAgICAgZGF5c0FnbzogJ2hhY2Uge2RheXN9ZCcsXG5cbiAgICAgIC8vIExpc3RzXG4gICAgICBsb2FkTW9yZTogJ0NhcmdhciBtw6FzJyxcbiAgICAgIG5vTW9yZUl0ZW1zOiAnTm8gaGF5IG3DoXMgaXRlbXMnLFxuICAgICAgbG9hZGluZ0l0ZW1zOiAnQ2FyZ2FuZG8gaXRlbXMuLi4nLFxuICAgICAgYWxsSXRlbXNMb2FkZWQ6ICdUb2RvcyBsb3MgaXRlbXMgaGFuIHNpZG8gY2FyZ2Fkb3MnLFxuICAgICAgZXJyb3JPY2N1cnJlZDogJ09jdXJyacOzIHVuIGVycm9yJyxcbiAgICAgIHJldHJ5OiAnUmVpbnRlbnRhcicsXG5cbiAgICAgIC8vIE5hdmlnYXRpb25cbiAgICAgIHNlZU1vcmU6ICdWZXIgbcOhcycsXG5cbiAgICAgIC8vIEZvcm1zIC0gUmFuZ2VcbiAgICAgIGZyb206ICdJbmljaWFsJyxcbiAgICAgIHRvOiAnRmluYWwnLFxuXG4gICAgICAvLyBTdGVwcGVyXG4gICAgICBkZWNyZWFzZTogJ0Rpc21pbnVpcicsXG4gICAgICBpbmNyZWFzZTogJ0F1bWVudGFyJyxcblxuICAgICAgLy8gTWlzY1xuICAgICAgcmFuZG9tOiAnQWxlYXRvcmlvJyxcbiAgICAgIHB1bGxUb1JlZnJlc2g6ICdBcnJhc3RyYSBwYXJhIGFjdHVhbGl6YXInLFxuICAgICAgdGltZUV4cGlyZWQ6ICdUaWVtcG8gYWdvdGFkbycsXG4gICAgICBxckNvZGU6ICdDw7NkaWdvIFFSJyxcblxuICAgICAgLy8gUGF5bWVudCBzdGF0dXNcbiAgICAgIHBheW1lbnRQZW5kaW5nOiAnUGVuZGllbnRlJyxcbiAgICAgIHBheW1lbnRQcm9jZXNzaW5nOiAnUHJvY2VzYW5kbycsXG4gICAgICBwYXltZW50UGFpZDogJ1BhZ2FkbycsXG4gICAgICBwYXltZW50UmVmdW5kZWQ6ICdSZWVtYm9sc2FkbycsXG4gICAgICBwYXltZW50RmFpbGVkOiAnRmFsbGlkbycsXG4gICAgfSxcbiAgICBlbjoge1xuICAgICAgLy8gQ29tbW9uIGFjdGlvbnNcbiAgICAgIHN1Ym1pdDogJ1N1Ym1pdCcsXG4gICAgICBjYW5jZWw6ICdDYW5jZWwnLFxuICAgICAgc2F2ZTogJ1NhdmUnLFxuICAgICAgZGVsZXRlOiAnRGVsZXRlJyxcbiAgICAgIGVkaXQ6ICdFZGl0JyxcbiAgICAgIGNsb3NlOiAnQ2xvc2UnLFxuICAgICAgYmFjazogJ0JhY2snLFxuICAgICAgbmV4dDogJ05leHQnLFxuICAgICAgcHJldmlvdXM6ICdQcmV2aW91cycsXG4gICAgICBsb2FkaW5nOiAnTG9hZGluZy4uLicsXG4gICAgICBzZWFyY2g6ICdTZWFyY2gnLFxuICAgICAgbGVhcm5Nb3JlOiAnTGVhcm4gbW9yZScsXG5cbiAgICAgIC8vIFN0YXRlc1xuICAgICAgc3VjY2VzczogJ1N1Y2Nlc3MnLFxuICAgICAgZXJyb3I6ICdFcnJvcicsXG4gICAgICB3YXJuaW5nOiAnV2FybmluZycsXG4gICAgICBpbmZvOiAnSW5mb3JtYXRpb24nLFxuXG4gICAgICAvLyBDb25maXJtYXRpb25zXG4gICAgICBjb25maXJtRGVsZXRlOiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZT8nLFxuICAgICAgY29uZmlybUNhbmNlbDogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWw/JyxcblxuICAgICAgLy8gQ29tbW9uIG1lc3NhZ2VzXG4gICAgICBub1Jlc3VsdHM6ICdObyByZXN1bHRzIGZvdW5kJyxcbiAgICAgIHJlcXVpcmVkOiAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCcsXG5cbiAgICAgIC8vIE5hdmlnYXRpb25cbiAgICAgIGhvbWU6ICdIb21lJyxcbiAgICAgIHNldHRpbmdzOiAnU2V0dGluZ3MnLFxuICAgICAgcHJvZmlsZTogJ1Byb2ZpbGUnLFxuICAgICAgbG9nb3V0OiAnTG9nIG91dCcsXG5cbiAgICAgIC8vIEdyZWV0aW5ncyAodGltZS1vZi1kYXkgc2FsdXRhdGlvbilcbiAgICAgIGdvb2RNb3JuaW5nOiAnR29vZCBtb3JuaW5nJyxcbiAgICAgIGdvb2RBZnRlcm5vb246ICdHb29kIGFmdGVybm9vbicsXG4gICAgICBnb29kRXZlbmluZzogJ0dvb2QgZXZlbmluZycsXG5cbiAgICAgIC8vIEF1dGgg4oCUIHNpZ24gb3V0IGNvbmZpcm1hdGlvblxuICAgICAgbG9nb3V0Q29uZmlybVRpdGxlOiAnU2lnbiBvdXQnLFxuICAgICAgbG9nb3V0Q29uZmlybU1lc3NhZ2U6ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gc2lnbiBvdXQ/JyxcblxuICAgICAgLy8gTGFuZ3VhZ2VzXG4gICAgICBsYW5ndWFnZU5hbWVfZXM6ICdFc3Bhw7FvbCcsXG4gICAgICBsYW5ndWFnZU5hbWVfZW46ICdFbmdsaXNoJyxcblxuICAgICAgLy8gQ29tcG9uZW50cyAtIE1vZGFscy9TZWxlY3RzXG4gICAgICBvazogJ09LJyxcbiAgICAgIHNlbGVjdE9wdGlvbjogJ1NlbGVjdCBvcHRpb24nLFxuICAgICAgc2VsZWN0UGxhY2Vob2xkZXI6ICdTZWxlY3QuLi4nLFxuICAgICAgaXRlbXNTZWxlY3RlZDogJ2l0ZW1zIHNlbGVjdGVkJyxcbiAgICAgIHNlbGVjdEFsbDogJ1NlbGVjdCBhbGwnLFxuICAgICAgY2xlYXI6ICdDbGVhcicsXG4gICAgICBhcHBseTogJ0FwcGx5JyxcblxuICAgICAgLy8gQ29tcG9uZW50cyAtIERhdGVzXG4gICAgICBzdGFydERhdGU6ICdTdGFydCBkYXRlJyxcbiAgICAgIGVuZERhdGU6ICdFbmQgZGF0ZScsXG4gICAgICBkYXk6ICdkYXknLFxuICAgICAgZGF5czogJ2RheXMnLFxuXG4gICAgICAvLyBDb21wb25lbnRzIC0gRm9ybXNcbiAgICAgIHVwbG9hZEZpbGU6ICdVcGxvYWQgZmlsZScsXG4gICAgICBub0ZpbGVTZWxlY3RlZDogJ05vIGZpbGUgc2VsZWN0ZWQnLFxuICAgICAgdGl0bGU6ICdUaXRsZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uJyxcbiAgICAgIGZlZWRiYWNrVHlwZTogJ0ZlZWRiYWNrIHR5cGUnLFxuICAgICAgZmVlZGJhY2tTdWNjZXNzOiAnRmVlZGJhY2sgc2VudCBzdWNjZXNzZnVsbHknLFxuICAgICAgZmVlZGJhY2tFcnJvcjogJ0Vycm9yIHNlbmRpbmcgZmVlZGJhY2snLFxuICAgICAgdGl0bGVQbGFjZWhvbGRlcjogJ0Rlc2NyaWJlIGJyaWVmbHkuLi4nLFxuICAgICAgdGl0bGVWYWxpZGF0aW9uOiAnVGl0bGUgbXVzdCBiZSBiZXR3ZWVuIDUgYW5kIDIwMCBjaGFyYWN0ZXJzJyxcbiAgICAgIGRlc2NyaXB0aW9uUGxhY2Vob2xkZXI6ICdQcm92aWRlIG1vcmUgZGV0YWlscy4uLicsXG4gICAgICBkZXNjcmlwdGlvblZhbGlkYXRpb246ICdEZXNjcmlwdGlvbiBtdXN0IGJlIGJldHdlZW4gMTAgYW5kIDUwMDAgY2hhcmFjdGVycycsXG5cbiAgICAgIC8vIENvbXBvbmVudHMgLSBTZWFyY2gvR3JpZFxuICAgICAgc2VhcmNoTnVtYmVyOiAnU2VhcmNoIG51bWJlci4uLicsXG4gICAgICBzZWxlY3RlZDogJ3NlbGVjdGVkJyxcbiAgICAgIG1heDogJ21heDonLFxuXG4gICAgICAvLyBDb21wb25lbnRzIC0gTGlzdHNcbiAgICAgIGxvYWRNb3JlQ29tbWVudHM6ICdMb2FkIG1vcmUgY29tbWVudHMnLFxuICAgICAgbm9EYXRhOiAnTm8gZGF0YScsXG4gICAgICBub1JlY29yZHNGb3VuZDogJ05vIHJlY29yZHMgZm91bmQgdG8gZGlzcGxheS4nLFxuXG4gICAgICAvLyBDb21wb25lbnRzIC0gQWN0aW9uc1xuICAgICAgY29waWVkVG9DbGlwYm9hcmQ6ICdDb3BpZWQgdG8gY2xpcGJvYXJkIScsXG4gICAgICBsYW5ndWFnZTogJ0xhbmd1YWdlJyxcbiAgICAgIHNlbGVjdExhbmd1YWdlOiAnU2VsZWN0IGxhbmd1YWdlLi4uJyxcbiAgICAgIGRvd25sb2FkOiAnRG93bmxvYWQnLFxuICAgICAgY29weTogJ0NvcHknLFxuICAgICAgc2hhcmU6ICdTaGFyZScsXG5cbiAgICAgIC8vIENvbXBvbmVudHMgLSBEYXRhIFRhYmxlIC8gUGFnaW5hdGlvblxuICAgICAgYWN0aW9uczogJ0FjdGlvbnMnLFxuICAgICAgc2hvd2luZzogJ1Nob3dpbmcnLFxuICAgICAgb2Y6ICdvZicsXG4gICAgICBwZXJQYWdlOiAncGVyIHBhZ2UnLFxuICAgICAgZmlyc3RQYWdlOiAnRmlyc3QgcGFnZScsXG4gICAgICBwcmV2aW91c1BhZ2U6ICdQcmV2aW91cyBwYWdlJyxcbiAgICAgIG5leHRQYWdlOiAnTmV4dCBwYWdlJyxcbiAgICAgIGxhc3RQYWdlOiAnTGFzdCBwYWdlJyxcblxuICAgICAgLy8gQ29tcG9uZW50cyAtIFBhcnRpY2lwYW50IENhcmRcbiAgICAgIHdpbm5lcjogJ1dpbm5lcicsXG4gICAgICB0aWNrZXQ6ICd0aWNrZXQnLFxuICAgICAgdGlja2V0czogJ3RpY2tldHMnLFxuICAgICAgbW9yZTogJ21vcmUnLFxuICAgICAgbm90ZXM6ICdOb3RlczonLFxuXG4gICAgICAvLyBGb290ZXJcbiAgICAgIGFsbFJpZ2h0c1Jlc2VydmVkOiAnQWxsIHJpZ2h0cyByZXNlcnZlZC4nLFxuXG4gICAgICAvLyBDbGlwYm9hcmRcbiAgICAgIGxpbmtDb3BpZWQ6ICdMaW5rIGNvcGllZCEnLFxuXG4gICAgICAvLyBTZWxlY3Rpb25cbiAgICAgIHNlbGVjdDogJ1NlbGVjdCcsXG4gICAgICBzZWxlY3RPcHRpb25zOiAnU2VsZWN0IG9wdGlvbnMnLFxuXG4gICAgICAvLyBDb21tZW50c1xuICAgICAgcGlubmVkOiAnUGlubmVkJyxcbiAgICAgIGVkaXRlZDogJyhlZGl0ZWQpJyxcbiAgICAgIHNob3dDb21tZW50OiAnU2hvdyBjb21tZW50JyxcbiAgICAgIGhpZGVSZXBsaWVzOiAnSGlkZSByZXBsaWVzJyxcbiAgICAgIGxvYWRNb3JlUmVwbGllczogJ0xvYWQgbW9yZSByZXBsaWVzJyxcbiAgICAgIHZpZXdSZXBsaWVzOiAnVmlldyByZXBsaWVzJyxcbiAgICAgIGNvbW1lbnRzOiAnQ29tbWVudHMnLFxuICAgICAgbm9Db21tZW50c1lldDogJ05vIGNvbW1lbnRzIHlldCcsXG4gICAgICBwdWJsaXNoOiAnUHVibGlzaCcsXG4gICAgICBzb3J0Qnk6ICdTb3J0IGJ5JyxcbiAgICAgIHdyaXRlQ29tbWVudDogJ1dyaXRlIGEgY29tbWVudC4uLicsXG4gICAgICBiZUZpcnN0VG9Db21tZW50OiAnQmUgdGhlIGZpcnN0IHRvIHNoYXJlIHlvdXIgdGhvdWdodHMhJyxcblxuICAgICAgLy8gVGltZXN0YW1wc1xuICAgICAganVzdE5vdzogJ0p1c3Qgbm93JyxcbiAgICAgIG1pbnV0ZXNBZ286ICd7bWludXRlc31tIGFnbycsXG4gICAgICBob3Vyc0FnbzogJ3tob3Vyc31oIGFnbycsXG4gICAgICBkYXlzQWdvOiAne2RheXN9ZCBhZ28nLFxuXG4gICAgICAvLyBMaXN0c1xuICAgICAgbG9hZE1vcmU6ICdMb2FkIG1vcmUnLFxuICAgICAgbm9Nb3JlSXRlbXM6ICdObyBtb3JlIGl0ZW1zJyxcbiAgICAgIGxvYWRpbmdJdGVtczogJ0xvYWRpbmcgaXRlbXMuLi4nLFxuICAgICAgYWxsSXRlbXNMb2FkZWQ6ICdBbGwgaXRlbXMgbG9hZGVkJyxcbiAgICAgIGVycm9yT2NjdXJyZWQ6ICdBbiBlcnJvciBvY2N1cnJlZCcsXG4gICAgICByZXRyeTogJ1JldHJ5JyxcblxuICAgICAgLy8gTmF2aWdhdGlvblxuICAgICAgc2VlTW9yZTogJ1NlZSBtb3JlJyxcblxuICAgICAgLy8gRm9ybXMgLSBSYW5nZVxuICAgICAgZnJvbTogJ0Zyb20nLFxuICAgICAgdG86ICdUbycsXG5cbiAgICAgIC8vIFN0ZXBwZXJcbiAgICAgIGRlY3JlYXNlOiAnRGVjcmVhc2UnLFxuICAgICAgaW5jcmVhc2U6ICdJbmNyZWFzZScsXG5cbiAgICAgIC8vIE1pc2NcbiAgICAgIHJhbmRvbTogJ1JhbmRvbScsXG4gICAgICBwdWxsVG9SZWZyZXNoOiAnUHVsbCB0byByZWZyZXNoJyxcbiAgICAgIHRpbWVFeHBpcmVkOiAnVGltZSBleHBpcmVkJyxcbiAgICAgIHFyQ29kZTogJ1FSIENvZGUnLFxuXG4gICAgICAvLyBQYXltZW50IHN0YXR1c1xuICAgICAgcGF5bWVudFBlbmRpbmc6ICdQZW5kaW5nJyxcbiAgICAgIHBheW1lbnRQcm9jZXNzaW5nOiAnUHJvY2Vzc2luZycsXG4gICAgICBwYXltZW50UGFpZDogJ1BhaWQnLFxuICAgICAgcGF5bWVudFJlZnVuZGVkOiAnUmVmdW5kZWQnLFxuICAgICAgcGF5bWVudEZhaWxlZDogJ0ZhaWxlZCcsXG4gICAgfSxcbiAgfSxcblxuICBfYXV0aDoge1xuICAgIGVzOiB7XG4gICAgICAvLyBMb2dpblxuICAgICAgbG9naW5UaXRsZTogJ0luaWNpYXIgc2VzacOzbicsXG4gICAgICBlbWFpbDogJ0NvcnJlbyBlbGVjdHLDs25pY28nLFxuICAgICAgZW1haWxQbGFjZWhvbGRlcjogJ3R1QGVtYWlsLmNvbScsXG4gICAgICBlbWFpbFJlcXVpcmVkOiAnRWwgY29ycmVvIGVzIHJlcXVlcmlkbycsXG4gICAgICBlbWFpbEludmFsaWQ6ICdJbmdyZXNhIHVuIGNvcnJlbyB2w6FsaWRvJyxcbiAgICAgIHBhc3N3b3JkOiAnQ29udHJhc2XDsWEnLFxuICAgICAgcGFzc3dvcmRQbGFjZWhvbGRlcjogJ+KAouKAouKAouKAouKAouKAouKAouKAoicsXG4gICAgICBwYXNzd29yZFJlcXVpcmVkOiAnTGEgY29udHJhc2XDsWEgZXMgcmVxdWVyaWRhJyxcbiAgICAgIGxvZ2luU3VibWl0OiAnSW5pY2lhciBzZXNpw7NuJyxcblxuICAgICAgLy8gT0F1dGhcbiAgICAgIG9yQ29udGludWVXaXRoOiAnbyBjb250aW7DumEgY29uJyxcbiAgICAgIGNvbnRpbnVlV2l0aEdvb2dsZTogJ0NvbnRpbnVhciBjb24gR29vZ2xlJyxcbiAgICAgIGNvbnRpbnVlV2l0aEFwcGxlOiAnQ29udGludWFyIGNvbiBBcHBsZScsXG4gICAgICBjb250aW51ZVdpdGhNaWNyb3NvZnQ6ICdDb250aW51YXIgY29uIE1pY3Jvc29mdCcsXG4gICAgICBjb25uZWN0aW5nOiAnQ29uZWN0YW5kby4uLicsXG5cbiAgICAgIC8vIFJlZ2lzdGVyXG4gICAgICByZWdpc3RlclRpdGxlOiAnQ3JlYXIgY3VlbnRhJyxcbiAgICAgIGZ1bGxOYW1lOiAnTm9tYnJlIGNvbXBsZXRvJyxcbiAgICAgIG5hbWVQbGFjZWhvbGRlcjogJ1R1IG5vbWJyZScsXG4gICAgICBuYW1lUmVxdWlyZWQ6ICdFbCBub21icmUgZXMgcmVxdWVyaWRvJyxcbiAgICAgIG5hbWVNaW5MZW5ndGg6ICdNw61uaW1vIDIgY2FyYWN0ZXJlcycsXG4gICAgICBwYXNzd29yZE1pbkxlbmd0aDogJ03DrW5pbW8gOCBjYXJhY3RlcmVzJyxcbiAgICAgIHJlZ2lzdGVyU3VibWl0OiAnUmVnaXN0cmFyc2UnLFxuICAgICAgbm9BY2NvdW50OiAnwr9ObyB0aWVuZXMgY3VlbnRhPycsXG4gICAgICByZWdpc3RlcjogJ1JlZ2lzdHJhcnNlJyxcbiAgICAgIGhhc0FjY291bnQ6ICfCv1lhIHRpZW5lcyBjdWVudGE/JyxcbiAgICAgIHNpZ25JbjogJ0luaWNpYXIgc2VzacOzbicsXG5cbiAgICAgIC8vIFZlcmlmeSBlbWFpbFxuICAgICAgdmVyaWZ5VGl0bGU6ICdWZXJpZmljYXIgY29ycmVvJyxcbiAgICAgIHZlcmlmeURlc2NyaXB0aW9uOiAnSW5ncmVzYSBlbCBjw7NkaWdvIGRlIHZlcmlmaWNhY2nDs24gZW52aWFkbyBhIHR1IGNvcnJlby4nLFxuICAgICAgdmVyaWZ5U3VibWl0OiAnVmVyaWZpY2FyJyxcbiAgICAgIGNvZGVSZXF1aXJlZDogJ0VsIGPDs2RpZ28gZXMgcmVxdWVyaWRvJyxcbiAgICAgIGNvZGVNaW5MZW5ndGg6ICdJbmdyZXNhIGxvcyA2IGTDrWdpdG9zJyxcbiAgICAgIG5vQ29kZVJlY2VpdmVkOiAnwr9ObyBoYXMgcmVjaWJpZG8gdHUgY8OzZGlnbz8nLFxuICAgICAgcmVzZW5kOiAnUmVlbnZpYXInLFxuICAgICAgcmVzZW5kSW46ICdSZWVudmlhciBlbiB7c2Vjb25kc31zJyxcbiAgICAgIGNvZGVTZW50OiAnQ8OzZGlnbyByZWVudmlhZG8uIFJldmlzYSB0dSBlbWFpbC4nLFxuICAgICAgZW1haWxWZXJpZmllZDogJ8KhRW1haWwgdmVyaWZpY2FkbyEgQmllbnZlbmlkby4nLFxuXG4gICAgICAvLyBNRkFcbiAgICAgIG1mYVRpdGxlOiAnVmVyaWZpY2FjacOzbiBNRkEnLFxuICAgICAgbWZhVE9UUDogJ0luZ3Jlc2EgZWwgY8OzZGlnbyBkZSB0dSBhcHAgZGUgYXV0ZW50aWNhY2nDs24nLFxuICAgICAgbWZhRW1haWw6ICdJbmdyZXNhIGVsIGPDs2RpZ28gZW52aWFkbyBhIHR1IGNvcnJlbycsXG4gICAgICBtZmFTTVM6ICdJbmdyZXNhIGVsIGPDs2RpZ28gZW52aWFkbyBhIHR1IHRlbMOpZm9ubycsXG5cbiAgICAgIC8vIEZvcmdvdC9SZXNldCBwYXNzd29yZFxuICAgICAgZm9yZ290VGl0bGU6ICdSZWN1cGVyYXIgY29udHJhc2XDsWEnLFxuICAgICAgZm9yZ290RGVzY3JpcHRpb246ICdJbmdyZXNhIHR1IGNvcnJlbyBlbGVjdHLDs25pY28geSB0ZSBlbnZpYXJlbW9zIHVuIGPDs2RpZ28uJyxcbiAgICAgIGZvcmdvdFN1Ym1pdDogJ0VudmlhciBjw7NkaWdvJyxcbiAgICAgIGZvcmdvdExpbms6ICfCv09sdmlkYXN0ZSB0dSBjb250cmFzZcOxYT8nLFxuICAgICAgcmVjb3ZlclBhc3N3b3JkOiAnUmVjdXBlcmFyIGNvbnRyYXNlw7FhJyxcbiAgICAgIHJlc2V0VGl0bGU6ICdSZXN0YWJsZWNlciBjb250cmFzZcOxYScsXG4gICAgICByZXNldERlc2NyaXB0aW9uOiAnSGVtb3MgZW52aWFkbyB1biBjw7NkaWdvIGRlIHZlcmlmaWNhY2nDs24gYSB0dSBjb3JyZW8uJyxcbiAgICAgIG5ld1Bhc3N3b3JkOiAnTnVldmEgY29udHJhc2XDsWEnLFxuICAgICAgbmV3UGFzc3dvcmRIaW50OiAnTcOtbmltbyA4IGNhcmFjdGVyZXMnLFxuICAgICAgcmVzZXRTdWJtaXQ6ICdDYW1iaWFyIGNvbnRyYXNlw7FhJyxcbiAgICAgIHBhc3N3b3JkVXBkYXRlZDogJ8KhQ29udHJhc2XDsWEgYWN0dWFsaXphZGEhIFlhIHB1ZWRlcyBpbmljaWFyIHNlc2nDs24uJyxcblxuICAgICAgLy8gQ2hhbmdlIHBhc3N3b3JkIChzZXNpw7NuIGFjdGl2YSlcbiAgICAgIGNoYW5nZVBhc3N3b3JkVGl0bGU6ICdDYW1iaWFyIGNvbnRyYXNlw7FhJyxcbiAgICAgIGNoYW5nZVBhc3N3b3JkRGVzY3JpcHRpb246ICdJbmdyZXNhIHR1IGNvbnRyYXNlw7FhIGFjdHVhbCB5IGxhIG51ZXZhLicsXG4gICAgICBjdXJyZW50UGFzc3dvcmQ6ICdDb250cmFzZcOxYSBhY3R1YWwnLFxuICAgICAgY3VycmVudFBhc3N3b3JkUmVxdWlyZWQ6ICdMYSBjb250cmFzZcOxYSBhY3R1YWwgZXMgcmVxdWVyaWRhJyxcbiAgICAgIGNoYW5nZVBhc3N3b3JkU3VibWl0OiAnQ2FtYmlhciBjb250cmFzZcOxYScsXG4gICAgICBwYXNzd29yZENoYW5nZWRTdWNjZXNzOiAnwqFDb250cmFzZcOxYSBhY3R1YWxpemFkYSEnLFxuICAgICAgZXJyb3JDdXJyZW50UGFzc3dvcmRXcm9uZzogJ0xhIGNvbnRyYXNlw7FhIGFjdHVhbCBlcyBpbmNvcnJlY3RhJyxcbiAgICAgIGVycm9yU2FtZVBhc3N3b3JkOiAnTGEgbnVldmEgY29udHJhc2XDsWEgZGViZSBzZXIgZGlmZXJlbnRlIGEgbGEgYWN0dWFsJyxcblxuICAgICAgLy8gU2V0IHBhc3N3b3JkIChjdWVudGEgT0F1dGgtb25seSlcbiAgICAgIHNldFBhc3N3b3JkVGl0bGU6ICdDcmVhciBjb250cmFzZcOxYScsXG4gICAgICBzZXRQYXNzd29yZERlc2NyaXB0aW9uOlxuICAgICAgICAnVHUgY3VlbnRhIHVzYSBpbmljaW8gZGUgc2VzacOzbiBzb2NpYWwuIENyZWEgdW5hIGNvbnRyYXNlw7FhIHBhcmEgZW50cmFyIHRhbWJpw6luIGNvbiB0dSBjb3JyZW8uJyxcbiAgICAgIHNldFBhc3N3b3JkU3VibWl0OiAnQ3JlYXIgY29udHJhc2XDsWEnLFxuICAgICAgc2V0UGFzc3dvcmRDb25maXJtVGl0bGU6ICfCv0NyZWFyIGNvbnRyYXNlw7FhPycsXG4gICAgICBzZXRQYXNzd29yZENvbmZpcm1NZXNzYWdlOlxuICAgICAgICAnUG9kcsOhcyBpbmljaWFyIHNlc2nDs24gY29uIHR1IGNvcnJlbyB5IGNvbnRyYXNlw7FhLCBhZGVtw6FzIGRlIHR1IGN1ZW50YSBzb2NpYWwuIE5vIHBlcmRlcsOhcyBlbCBhY2Nlc28gc29jaWFsLicsXG4gICAgICBzZXRQYXNzd29yZENvbmZpcm1PazogJ0NyZWFyIGNvbnRyYXNlw7FhJyxcbiAgICAgIHNldFBhc3N3b3JkQ29uZmlybUNhbmNlbDogJ0NhbmNlbGFyJyxcbiAgICAgIHBhc3N3b3JkU2V0U3VjY2VzczogJ8KhQ29udHJhc2XDsWEgY3JlYWRhIScsXG4gICAgICBlcnJvclBhc3N3b3JkQWxyZWFkeVNldDogJ0VzdGEgY3VlbnRhIHlhIHRpZW5lIHVuYSBjb250cmFzZcOxYS4nLFxuXG4gICAgICAvLyBNRkEg4oCUIGF1dGVudGljYWNpw7NuIGVuIGRvcyBwYXNvc1xuICAgICAgbWZhTWFuYWdlVGl0bGU6ICdBdXRlbnRpY2FjacOzbiBlbiBkb3MgcGFzb3MnLFxuICAgICAgbWZhRW5hYmxlZExhYmVsOiAnTUZBIGhhYmlsaXRhZG8nLFxuICAgICAgbWZhRGlzYWJsZWRMYWJlbDogJ01GQSBkZXNoYWJpbGl0YWRvJyxcbiAgICAgIG1mYURpc2FibGVkSGludDogJ0hhYmlsaXRhIE1GQSBwYXJhIG1heW9yIHNlZ3VyaWRhZCBlbiB0dSBjdWVudGEuJyxcbiAgICAgIG1mYUVuYWJsZUJ1dHRvbjogJ0hhYmlsaXRhciBNRkEnLFxuICAgICAgbWZhRGlzYWJsZUJ1dHRvbjogJ0Rlc2hhYmlsaXRhciBNRkEnLFxuICAgICAgbWZhRW5hYmxlVGl0bGU6ICdIYWJpbGl0YXIgTUZBJyxcbiAgICAgIG1mYU1ldGhvZFByb21wdDogJ0VsaWdlIGVsIG3DqXRvZG8gZGUgdmVyaWZpY2FjacOzbjonLFxuICAgICAgbWZhTWV0aG9kVG90cDogJ0FwcCBkZSBhdXRlbnRpY2FjacOzbicsXG4gICAgICBtZmFNZXRob2RUb3RwSGludDogJ1VzYSBHb29nbGUgQXV0aGVudGljYXRvciB1IG90cmEgYXBwIChyZWNvbWVuZGFkbykuJyxcbiAgICAgIG1mYU1ldGhvZEVtYWlsOiAnQ29ycmVvIGVsZWN0csOzbmljbycsXG4gICAgICBtZmFNZXRob2RFbWFpbEhpbnQ6ICdSZWNpYmUgY8OzZGlnb3MgZW4gdHUgY29ycmVvLicsXG4gICAgICBtZmFNZXRob2RTbXM6ICdTTVMnLFxuICAgICAgbWZhTWV0aG9kU21zSGludDogJ1JlY2liZSBjw7NkaWdvcyBwb3IgbWVuc2FqZSBkZSB0ZXh0by4nLFxuICAgICAgbWZhUGhvbmVMYWJlbDogJ1RlbMOpZm9ubycsXG4gICAgICBtZmFQaG9uZUludmFsaWQ6ICdJbmdyZXNhIHVuIG7Dum1lcm8gdsOhbGlkbyBlbiBmb3JtYXRvIEUuMTY0IChlajogKzU2OTEyMzQ1Njc4KS4nLFxuICAgICAgbWZhUGhvbmVSZWdpc3RlcmVkOiAnVGVsw6lmb25vIHJlZ2lzdHJhZG8nLFxuICAgICAgbWZhQ29udGludWU6ICdDb250aW51YXInLFxuICAgICAgbWZhQ2FuY2VsOiAnQ2FuY2VsYXInLFxuICAgICAgbWZhVG90cFNldHVwVGl0bGU6ICdDb25maWd1cmFyIGFwcCBkZSBhdXRlbnRpY2FjacOzbicsXG4gICAgICBtZmFUb3RwU3RlcDE6ICdQYXNvIDEg4oCUIEVzY2FuZWEgZWwgY8OzZGlnbyBRUiBjb24gdHUgYXBwIGRlIGF1dGVudGljYWNpw7NuLicsXG4gICAgICBtZmFUb3RwTWFudWFsRW50cnk6ICfCv05vIHB1ZWRlcyBlc2NhbmVhcj8gSW5ncmVzYSBlc3RlIGPDs2RpZ28gbWFudWFsbWVudGU6JyxcbiAgICAgIG1mYVRvdHBTdGVwMjogJ1Bhc28gMiDigJQgSW5ncmVzYSBlbCBjw7NkaWdvIGRlIDYgZMOtZ2l0b3MgZGUgdHUgYXBwOicsXG4gICAgICBtZmFUb3RwVmVyaWZ5OiAnVmVyaWZpY2FyIHkgYWN0aXZhcicsXG4gICAgICBtZmFDb25maXJtVGl0bGU6ICdDb25maXJtYXIgTUZBJyxcbiAgICAgIG1mYUNvbmZpcm1Qcm9tcHRFbWFpbDogJ0luZ3Jlc2EgZWwgY8OzZGlnbyBkZSA2IGTDrWdpdG9zIGVudmlhZG8gYSB0dSBjb3JyZW8uJyxcbiAgICAgIG1mYUNvbmZpcm1Qcm9tcHRTbXM6ICdJbmdyZXNhIGVsIGPDs2RpZ28gZGUgNiBkw61naXRvcyBlbnZpYWRvIGEgdHUgdGVsw6lmb25vLicsXG4gICAgICBtZmFDb25maXJtQnV0dG9uOiAnQ29uZmlybWFyJyxcbiAgICAgIG1mYU5vQ29kZTogJ8K/Tm8gcmVjaWJpc3RlIGVsIGPDs2RpZ28/JyxcbiAgICAgIG1mYVJlc2VuZDogJ1JlZW52aWFyJyxcbiAgICAgIG1mYVJlc2VuZEluOiAnUmVlbnZpYXIgZW4nLFxuICAgICAgbWZhQmFja3VwQ29kZXNUaXRsZTogJ0PDs2RpZ29zIGRlIHJlc3BhbGRvJyxcbiAgICAgIG1mYUJhY2t1cENvZGVzQXZhaWxhYmxlOiAnQ8OzZGlnb3MgZGlzcG9uaWJsZXMnLFxuICAgICAgbWZhQmFja3VwQ29kZXNMb3c6ICdUZSBxdWVkYW4gcG9jb3MgY8OzZGlnb3MuIENvbnNpZGVyYSByZWdlbmVyYXJsb3MuJyxcbiAgICAgIG1mYUJhY2t1cENvZGVzU2F2ZVdhcm5pbmc6ICdJbXBvcnRhbnRlOiBndWFyZGEgZXN0b3MgY8OzZGlnb3MgZGUgcmVzcGFsZG8uJyxcbiAgICAgIG1mYUJhY2t1cENvZGVzRXhwbGFpbjpcbiAgICAgICAgJ1NpIHBpZXJkZXMgYWNjZXNvIGEgdHUgYXBwLCBlc3RvcyBjw7NkaWdvcyB0ZSBwZXJtaXRlbiBlbnRyYXIuIENhZGEgdW5vIHNlIHVzYSB1bmEgc29sYSB2ZXouJyxcbiAgICAgIG1mYUNvcHlDb2RlczogJ0NvcGlhciBjw7NkaWdvcycsXG4gICAgICBtZmFSZWdlbmVyYXRlQ29kZXM6ICdSZWdlbmVyYXIgY8OzZGlnb3MgZGUgcmVzcGFsZG8nLFxuICAgICAgbWZhRGlzYWJsZVRpdGxlOiAnRGVzaGFiaWxpdGFyIE1GQScsXG4gICAgICBtZmFEaXNhYmxlUHJvbXB0OiAnSW5ncmVzYSB0dSBjb250cmFzZcOxYSBwYXJhIGRlc2hhYmlsaXRhciBNRkEuJyxcbiAgICAgIG1mYVBhc3N3b3JkTGFiZWw6ICdDb250cmFzZcOxYScsXG4gICAgICBtZmFDb2RlSW52YWxpZDogJ0luZ3Jlc2EgdW4gY8OzZGlnbyB2w6FsaWRvIGRlIDYgZMOtZ2l0b3MuJyxcbiAgICAgIG1mYVBhc3N3b3JkUmVxdWlyZWQ6ICdJbmdyZXNhIHR1IGNvbnRyYXNlw7FhLicsXG4gICAgICBtZmFFbmFibGVkT2s6ICfCoU1GQSBoYWJpbGl0YWRvIGNvcnJlY3RhbWVudGUhJyxcbiAgICAgIG1mYURpc2FibGVkT2s6ICdNRkEgZGVzaGFiaWxpdGFkbyBjb3JyZWN0YW1lbnRlLicsXG4gICAgICBtZmFDb2Rlc0NvcGllZDogJ0PDs2RpZ29zIGNvcGlhZG9zIGFsIHBvcnRhcGFwZWxlcy4nLFxuICAgICAgbWZhU2VjcmV0Q29waWVkOiAnU2VjcmV0byBjb3BpYWRvIGFsIHBvcnRhcGFwZWxlcy4nLFxuICAgICAgbWZhRXJyb3JJbnZhbGlkQ29kZTogJ0PDs2RpZ28gaW5jb3JyZWN0by4nLFxuICAgICAgbWZhRXJyb3JFeHBpcmVkQ29kZTogJ0VsIGPDs2RpZ28gaGEgZXhwaXJhZG8uIFNvbGljaXRhIHVubyBudWV2by4nLFxuICAgICAgbWZhRXJyb3JDb2RlVXNlZDogJ0VzdGUgY8OzZGlnbyB5YSBmdWUgdXRpbGl6YWRvLicsXG4gICAgICBtZmFFcnJvckFscmVhZHlBY3RpdmU6ICdNRkEgeWEgZXN0w6EgaGFiaWxpdGFkby4nLFxuICAgICAgbWZhRXJyb3JOb3RFbmFibGVkOiAnTUZBIG5vIGVzdMOhIGhhYmlsaXRhZG8uJyxcbiAgICAgIG1mYUVycm9yUGhvbmVSZXF1aXJlZDogJ07Dum1lcm8gZGUgdGVsw6lmb25vIHJlcXVlcmlkby4nLFxuICAgICAgbWZhRXJyb3JQaG9uZUV4aXN0czogJ0VzdGUgdGVsw6lmb25vIHlhIGVzdMOhIGVuIHVzby4nLFxuXG4gICAgICAvLyBMZWdhbFxuICAgICAgbGVnYWxQcmVmaXg6ICdVdGlsaXphbW9zIGxvcyBzZXJ2aWNpb3MgZGUnLFxuICAgICAgbGVnYWxTdWZmaXg6ICdwYXJhIG9mcmVjZXJ0ZSB1bmEgZXhwZXJpZW5jaWEgc2VndXJhLiBBbCBpbmljaWFyIHNlc2nDs24sIGFjZXB0YXMgbnVlc3Ryb3MnLFxuICAgICAgdGVybXNBbmRDb25kaXRpb25zOiAnVMOpcm1pbm9zIHkgQ29uZGljaW9uZXMnLFxuICAgICAgYW5kOiAneScsXG4gICAgICBwcml2YWN5UG9saWN5OiAnUG9sw610aWNhIGRlIFByaXZhY2lkYWQnLFxuXG4gICAgICAvLyBBY2Npb25lcyBnZW7DqXJpY2FzXG4gICAgICBjbG9zZTogJ0NlcnJhcicsXG5cbiAgICAgIC8vIFRvYXN0c1xuICAgICAgd2VsY29tZTogJ8KhQmllbnZlbmlkbyEnLFxuICAgICAgY29tcGxldGVBbGxGaWVsZHM6ICdDb21wbGV0YSB0b2RvcyBsb3MgY2FtcG9zLicsXG4gICAgICBlbnRlckVtYWlsOiAnSW5ncmVzYSB0dSBjb3JyZW8gZWxlY3Ryw7NuaWNvLicsXG5cbiAgICAgIC8vIEVycm9ycyAobWFwZWFkb3MgZGUgY8OzZGlnb3MgYmFja2VuZClcbiAgICAgIGVycm9ySW52YWxpZENyZWRlbnRpYWxzOiAnQ29ycmVvIG8gY29udHJhc2XDsWEgaW5jb3JyZWN0b3MnLFxuICAgICAgZXJyb3JFbWFpbE5vdFZlcmlmaWVkOiAnRGViZXMgdmVyaWZpY2FyIHR1IGNvcnJlbyBlbGVjdHLDs25pY28nLFxuICAgICAgZXJyb3JBY2NvdW50U3VzcGVuZGVkOiAnVHUgY3VlbnRhIGhhIHNpZG8gc3VzcGVuZGlkYScsXG4gICAgICBlcnJvckVtYWlsRXhpc3RzOiAnRXN0ZSBjb3JyZW8geWEgZXN0w6EgcmVnaXN0cmFkbycsXG4gICAgICBlcnJvcldlYWtQYXNzd29yZDogJ0xhIGNvbnRyYXNlw7FhIGVzIG11eSBkw6liaWwnLFxuICAgICAgZXJyb3JJbnZhbGlkQ29kZTogJ0PDs2RpZ28gaW5jb3JyZWN0bycsXG4gICAgICBlcnJvckV4cGlyZWRDb2RlOiAnRWwgY8OzZGlnbyBoYSBleHBpcmFkby4gU29saWNpdGEgdW5vIG51ZXZvLicsXG4gICAgICBlcnJvclRvb01hbnlBdHRlbXB0czogJ0RlbWFzaWFkb3MgaW50ZW50b3MsIGludGVudGEgbcOhcyB0YXJkZScsXG4gICAgICBlcnJvck1GQUludmFsaWRDb2RlOiAnQ8OzZGlnbyBkZSB2ZXJpZmljYWNpw7NuIGluY29ycmVjdG8nLFxuICAgICAgZXJyb3JQb3B1cEJsb2NrZWQ6ICdQb3IgZmF2b3IsIHBlcm1pdGUgdmVudGFuYXMgZW1lcmdlbnRlcycsXG4gICAgICBlcnJvck9BdXRoRmFpbGVkOiAnRXJyb3IgZGUgYXV0ZW50aWNhY2nDs24nLFxuICAgICAgZXJyb3JHZW5lcmljOiAnSGEgb2N1cnJpZG8gdW4gZXJyb3IuIEludGVudGEgZGUgbnVldm8uJyxcbiAgICB9LFxuICAgIGVuOiB7XG4gICAgICAvLyBMb2dpblxuICAgICAgbG9naW5UaXRsZTogJ1NpZ24gaW4nLFxuICAgICAgZW1haWw6ICdFbWFpbCcsXG4gICAgICBlbWFpbFBsYWNlaG9sZGVyOiAneW91QGVtYWlsLmNvbScsXG4gICAgICBlbWFpbFJlcXVpcmVkOiAnRW1haWwgaXMgcmVxdWlyZWQnLFxuICAgICAgZW1haWxJbnZhbGlkOiAnRW50ZXIgYSB2YWxpZCBlbWFpbCcsXG4gICAgICBwYXNzd29yZDogJ1Bhc3N3b3JkJyxcbiAgICAgIHBhc3N3b3JkUGxhY2Vob2xkZXI6ICfigKLigKLigKLigKLigKLigKLigKLigKInLFxuICAgICAgcGFzc3dvcmRSZXF1aXJlZDogJ1Bhc3N3b3JkIGlzIHJlcXVpcmVkJyxcbiAgICAgIGxvZ2luU3VibWl0OiAnU2lnbiBpbicsXG5cbiAgICAgIC8vIE9BdXRoXG4gICAgICBvckNvbnRpbnVlV2l0aDogJ29yIGNvbnRpbnVlIHdpdGgnLFxuICAgICAgY29udGludWVXaXRoR29vZ2xlOiAnQ29udGludWUgd2l0aCBHb29nbGUnLFxuICAgICAgY29udGludWVXaXRoQXBwbGU6ICdDb250aW51ZSB3aXRoIEFwcGxlJyxcbiAgICAgIGNvbnRpbnVlV2l0aE1pY3Jvc29mdDogJ0NvbnRpbnVlIHdpdGggTWljcm9zb2Z0JyxcbiAgICAgIGNvbm5lY3Rpbmc6ICdDb25uZWN0aW5nLi4uJyxcblxuICAgICAgLy8gUmVnaXN0ZXJcbiAgICAgIHJlZ2lzdGVyVGl0bGU6ICdDcmVhdGUgYWNjb3VudCcsXG4gICAgICBmdWxsTmFtZTogJ0Z1bGwgbmFtZScsXG4gICAgICBuYW1lUGxhY2Vob2xkZXI6ICdZb3VyIG5hbWUnLFxuICAgICAgbmFtZVJlcXVpcmVkOiAnTmFtZSBpcyByZXF1aXJlZCcsXG4gICAgICBuYW1lTWluTGVuZ3RoOiAnTWluaW11bSAyIGNoYXJhY3RlcnMnLFxuICAgICAgcGFzc3dvcmRNaW5MZW5ndGg6ICdNaW5pbXVtIDggY2hhcmFjdGVycycsXG4gICAgICByZWdpc3RlclN1Ym1pdDogJ1NpZ24gdXAnLFxuICAgICAgbm9BY2NvdW50OiBcIkRvbid0IGhhdmUgYW4gYWNjb3VudD9cIixcbiAgICAgIHJlZ2lzdGVyOiAnU2lnbiB1cCcsXG4gICAgICBoYXNBY2NvdW50OiAnQWxyZWFkeSBoYXZlIGFuIGFjY291bnQ/JyxcbiAgICAgIHNpZ25JbjogJ1NpZ24gaW4nLFxuXG4gICAgICAvLyBWZXJpZnkgZW1haWxcbiAgICAgIHZlcmlmeVRpdGxlOiAnVmVyaWZ5IGVtYWlsJyxcbiAgICAgIHZlcmlmeURlc2NyaXB0aW9uOiAnRW50ZXIgdGhlIHZlcmlmaWNhdGlvbiBjb2RlIHNlbnQgdG8geW91ciBlbWFpbC4nLFxuICAgICAgdmVyaWZ5U3VibWl0OiAnVmVyaWZ5JyxcbiAgICAgIGNvZGVSZXF1aXJlZDogJ0NvZGUgaXMgcmVxdWlyZWQnLFxuICAgICAgY29kZU1pbkxlbmd0aDogJ0VudGVyIGFsbCA2IGRpZ2l0cycsXG4gICAgICBub0NvZGVSZWNlaXZlZDogXCJEaWRuJ3QgcmVjZWl2ZSB5b3VyIGNvZGU/XCIsXG4gICAgICByZXNlbmQ6ICdSZXNlbmQnLFxuICAgICAgcmVzZW5kSW46ICdSZXNlbmQgaW4ge3NlY29uZHN9cycsXG4gICAgICBjb2RlU2VudDogJ0NvZGUgcmVzZW50LiBDaGVjayB5b3VyIGVtYWlsLicsXG4gICAgICBlbWFpbFZlcmlmaWVkOiAnRW1haWwgdmVyaWZpZWQhIFdlbGNvbWUuJyxcblxuICAgICAgLy8gTUZBXG4gICAgICBtZmFUaXRsZTogJ01GQSBWZXJpZmljYXRpb24nLFxuICAgICAgbWZhVE9UUDogJ0VudGVyIHRoZSBjb2RlIGZyb20geW91ciBhdXRoZW50aWNhdG9yIGFwcCcsXG4gICAgICBtZmFFbWFpbDogJ0VudGVyIHRoZSBjb2RlIHNlbnQgdG8geW91ciBlbWFpbCcsXG4gICAgICBtZmFTTVM6ICdFbnRlciB0aGUgY29kZSBzZW50IHRvIHlvdXIgcGhvbmUnLFxuXG4gICAgICAvLyBGb3Jnb3QvUmVzZXQgcGFzc3dvcmRcbiAgICAgIGZvcmdvdFRpdGxlOiAnUmVjb3ZlciBwYXNzd29yZCcsXG4gICAgICBmb3Jnb3REZXNjcmlwdGlvbjogJ0VudGVyIHlvdXIgZW1haWwgYW5kIHdlIHdpbGwgc2VuZCB5b3UgYSBjb2RlLicsXG4gICAgICBmb3Jnb3RTdWJtaXQ6ICdTZW5kIGNvZGUnLFxuICAgICAgZm9yZ290TGluazogJ0ZvcmdvdCB5b3VyIHBhc3N3b3JkPycsXG4gICAgICByZWNvdmVyUGFzc3dvcmQ6ICdSZWNvdmVyIHBhc3N3b3JkJyxcbiAgICAgIHJlc2V0VGl0bGU6ICdSZXNldCBwYXNzd29yZCcsXG4gICAgICByZXNldERlc2NyaXB0aW9uOiAnV2UgaGF2ZSBzZW50IGEgdmVyaWZpY2F0aW9uIGNvZGUgdG8geW91ciBlbWFpbC4nLFxuICAgICAgbmV3UGFzc3dvcmQ6ICdOZXcgcGFzc3dvcmQnLFxuICAgICAgbmV3UGFzc3dvcmRIaW50OiAnTWluaW11bSA4IGNoYXJhY3RlcnMnLFxuICAgICAgcmVzZXRTdWJtaXQ6ICdDaGFuZ2UgcGFzc3dvcmQnLFxuICAgICAgcGFzc3dvcmRVcGRhdGVkOiAnUGFzc3dvcmQgdXBkYXRlZCEgWW91IGNhbiBub3cgc2lnbiBpbi4nLFxuXG4gICAgICAvLyBDaGFuZ2UgcGFzc3dvcmQgKGFjdGl2ZSBzZXNzaW9uKVxuICAgICAgY2hhbmdlUGFzc3dvcmRUaXRsZTogJ0NoYW5nZSBwYXNzd29yZCcsXG4gICAgICBjaGFuZ2VQYXNzd29yZERlc2NyaXB0aW9uOiAnRW50ZXIgeW91ciBjdXJyZW50IHBhc3N3b3JkIGFuZCB0aGUgbmV3IG9uZS4nLFxuICAgICAgY3VycmVudFBhc3N3b3JkOiAnQ3VycmVudCBwYXNzd29yZCcsXG4gICAgICBjdXJyZW50UGFzc3dvcmRSZXF1aXJlZDogJ0N1cnJlbnQgcGFzc3dvcmQgaXMgcmVxdWlyZWQnLFxuICAgICAgY2hhbmdlUGFzc3dvcmRTdWJtaXQ6ICdDaGFuZ2UgcGFzc3dvcmQnLFxuICAgICAgcGFzc3dvcmRDaGFuZ2VkU3VjY2VzczogJ1Bhc3N3b3JkIHVwZGF0ZWQhJyxcbiAgICAgIGVycm9yQ3VycmVudFBhc3N3b3JkV3Jvbmc6ICdDdXJyZW50IHBhc3N3b3JkIGlzIGluY29ycmVjdCcsXG4gICAgICBlcnJvclNhbWVQYXNzd29yZDogJ05ldyBwYXNzd29yZCBtdXN0IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBjdXJyZW50IG9uZScsXG5cbiAgICAgIC8vIFNldCBwYXNzd29yZCAoT0F1dGgtb25seSBhY2NvdW50KVxuICAgICAgc2V0UGFzc3dvcmRUaXRsZTogJ0NyZWF0ZSBwYXNzd29yZCcsXG4gICAgICBzZXRQYXNzd29yZERlc2NyaXB0aW9uOlxuICAgICAgICAnWW91ciBhY2NvdW50IHVzZXMgc29jaWFsIHNpZ24taW4uIENyZWF0ZSBhIHBhc3N3b3JkIHRvIGFsc28gc2lnbiBpbiB3aXRoIHlvdXIgZW1haWwuJyxcbiAgICAgIHNldFBhc3N3b3JkU3VibWl0OiAnQ3JlYXRlIHBhc3N3b3JkJyxcbiAgICAgIHNldFBhc3N3b3JkQ29uZmlybVRpdGxlOiAnQ3JlYXRlIHBhc3N3b3JkPycsXG4gICAgICBzZXRQYXNzd29yZENvbmZpcm1NZXNzYWdlOlxuICAgICAgICAnWW91IHdpbGwgYmUgYWJsZSB0byBzaWduIGluIHdpdGggeW91ciBlbWFpbCBhbmQgcGFzc3dvcmQsIGluIGFkZGl0aW9uIHRvIHlvdXIgc29jaWFsIGFjY291bnQuIFlvdSB3aWxsIG5vdCBsb3NlIHNvY2lhbCBhY2Nlc3MuJyxcbiAgICAgIHNldFBhc3N3b3JkQ29uZmlybU9rOiAnQ3JlYXRlIHBhc3N3b3JkJyxcbiAgICAgIHNldFBhc3N3b3JkQ29uZmlybUNhbmNlbDogJ0NhbmNlbCcsXG4gICAgICBwYXNzd29yZFNldFN1Y2Nlc3M6ICdQYXNzd29yZCBjcmVhdGVkIScsXG4gICAgICBlcnJvclBhc3N3b3JkQWxyZWFkeVNldDogJ1RoaXMgYWNjb3VudCBhbHJlYWR5IGhhcyBhIHBhc3N3b3JkLicsXG5cbiAgICAgIC8vIE1GQSDigJQgdHdvLWZhY3RvciBhdXRoZW50aWNhdGlvblxuICAgICAgbWZhTWFuYWdlVGl0bGU6ICdUd28tZmFjdG9yIGF1dGhlbnRpY2F0aW9uJyxcbiAgICAgIG1mYUVuYWJsZWRMYWJlbDogJ01GQSBlbmFibGVkJyxcbiAgICAgIG1mYURpc2FibGVkTGFiZWw6ICdNRkEgZGlzYWJsZWQnLFxuICAgICAgbWZhRGlzYWJsZWRIaW50OiAnRW5hYmxlIE1GQSBmb3IgZXh0cmEgYWNjb3VudCBzZWN1cml0eS4nLFxuICAgICAgbWZhRW5hYmxlQnV0dG9uOiAnRW5hYmxlIE1GQScsXG4gICAgICBtZmFEaXNhYmxlQnV0dG9uOiAnRGlzYWJsZSBNRkEnLFxuICAgICAgbWZhRW5hYmxlVGl0bGU6ICdFbmFibGUgTUZBJyxcbiAgICAgIG1mYU1ldGhvZFByb21wdDogJ0Nob29zZSB5b3VyIHZlcmlmaWNhdGlvbiBtZXRob2Q6JyxcbiAgICAgIG1mYU1ldGhvZFRvdHA6ICdBdXRoZW50aWNhdG9yIGFwcCcsXG4gICAgICBtZmFNZXRob2RUb3RwSGludDogJ1VzZSBHb29nbGUgQXV0aGVudGljYXRvciBvciBhbm90aGVyIGFwcCAocmVjb21tZW5kZWQpLicsXG4gICAgICBtZmFNZXRob2RFbWFpbDogJ0VtYWlsJyxcbiAgICAgIG1mYU1ldGhvZEVtYWlsSGludDogJ1JlY2VpdmUgY29kZXMgaW4geW91ciBlbWFpbC4nLFxuICAgICAgbWZhTWV0aG9kU21zOiAnU01TJyxcbiAgICAgIG1mYU1ldGhvZFNtc0hpbnQ6ICdSZWNlaXZlIGNvZGVzIGJ5IHRleHQgbWVzc2FnZS4nLFxuICAgICAgbWZhUGhvbmVMYWJlbDogJ1Bob25lJyxcbiAgICAgIG1mYVBob25lSW52YWxpZDogJ0VudGVyIGEgdmFsaWQgbnVtYmVyIGluIEUuMTY0IGZvcm1hdCAoZS5nLiArNTY5MTIzNDU2NzgpLicsXG4gICAgICBtZmFQaG9uZVJlZ2lzdGVyZWQ6ICdSZWdpc3RlcmVkIHBob25lJyxcbiAgICAgIG1mYUNvbnRpbnVlOiAnQ29udGludWUnLFxuICAgICAgbWZhQ2FuY2VsOiAnQ2FuY2VsJyxcbiAgICAgIG1mYVRvdHBTZXR1cFRpdGxlOiAnU2V0IHVwIGF1dGhlbnRpY2F0b3IgYXBwJyxcbiAgICAgIG1mYVRvdHBTdGVwMTogJ1N0ZXAgMSDigJQgU2NhbiB0aGUgUVIgY29kZSB3aXRoIHlvdXIgYXV0aGVudGljYXRvciBhcHAuJyxcbiAgICAgIG1mYVRvdHBNYW51YWxFbnRyeTogXCJDYW4ndCBzY2FuPyBFbnRlciB0aGlzIGNvZGUgbWFudWFsbHk6XCIsXG4gICAgICBtZmFUb3RwU3RlcDI6ICdTdGVwIDIg4oCUIEVudGVyIHRoZSA2LWRpZ2l0IGNvZGUgZnJvbSB5b3VyIGFwcDonLFxuICAgICAgbWZhVG90cFZlcmlmeTogJ1ZlcmlmeSBhbmQgYWN0aXZhdGUnLFxuICAgICAgbWZhQ29uZmlybVRpdGxlOiAnQ29uZmlybSBNRkEnLFxuICAgICAgbWZhQ29uZmlybVByb21wdEVtYWlsOiAnRW50ZXIgdGhlIDYtZGlnaXQgY29kZSBzZW50IHRvIHlvdXIgZW1haWwuJyxcbiAgICAgIG1mYUNvbmZpcm1Qcm9tcHRTbXM6ICdFbnRlciB0aGUgNi1kaWdpdCBjb2RlIHNlbnQgdG8geW91ciBwaG9uZS4nLFxuICAgICAgbWZhQ29uZmlybUJ1dHRvbjogJ0NvbmZpcm0nLFxuICAgICAgbWZhTm9Db2RlOiBcIkRpZG4ndCByZWNlaXZlIHRoZSBjb2RlP1wiLFxuICAgICAgbWZhUmVzZW5kOiAnUmVzZW5kJyxcbiAgICAgIG1mYVJlc2VuZEluOiAnUmVzZW5kIGluJyxcbiAgICAgIG1mYUJhY2t1cENvZGVzVGl0bGU6ICdCYWNrdXAgY29kZXMnLFxuICAgICAgbWZhQmFja3VwQ29kZXNBdmFpbGFibGU6ICdBdmFpbGFibGUgY29kZXMnLFxuICAgICAgbWZhQmFja3VwQ29kZXNMb3c6ICdZb3UgaGF2ZSBmZXcgY29kZXMgbGVmdC4gQ29uc2lkZXIgcmVnZW5lcmF0aW5nIHRoZW0uJyxcbiAgICAgIG1mYUJhY2t1cENvZGVzU2F2ZVdhcm5pbmc6ICdJbXBvcnRhbnQ6IHNhdmUgdGhlc2UgYmFja3VwIGNvZGVzLicsXG4gICAgICBtZmFCYWNrdXBDb2Rlc0V4cGxhaW46XG4gICAgICAgICdJZiB5b3UgbG9zZSBhY2Nlc3MgdG8geW91ciBhcHAsIHRoZXNlIGNvZGVzIGxldCB5b3Ugc2lnbiBpbi4gRWFjaCBjYW4gYmUgdXNlZCBvbmNlLicsXG4gICAgICBtZmFDb3B5Q29kZXM6ICdDb3B5IGNvZGVzJyxcbiAgICAgIG1mYVJlZ2VuZXJhdGVDb2RlczogJ1JlZ2VuZXJhdGUgYmFja3VwIGNvZGVzJyxcbiAgICAgIG1mYURpc2FibGVUaXRsZTogJ0Rpc2FibGUgTUZBJyxcbiAgICAgIG1mYURpc2FibGVQcm9tcHQ6ICdFbnRlciB5b3VyIHBhc3N3b3JkIHRvIGRpc2FibGUgTUZBLicsXG4gICAgICBtZmFQYXNzd29yZExhYmVsOiAnUGFzc3dvcmQnLFxuICAgICAgbWZhQ29kZUludmFsaWQ6ICdFbnRlciBhIHZhbGlkIDYtZGlnaXQgY29kZS4nLFxuICAgICAgbWZhUGFzc3dvcmRSZXF1aXJlZDogJ0VudGVyIHlvdXIgcGFzc3dvcmQuJyxcbiAgICAgIG1mYUVuYWJsZWRPazogJ01GQSBlbmFibGVkIHN1Y2Nlc3NmdWxseSEnLFxuICAgICAgbWZhRGlzYWJsZWRPazogJ01GQSBkaXNhYmxlZCBzdWNjZXNzZnVsbHkuJyxcbiAgICAgIG1mYUNvZGVzQ29waWVkOiAnQ29kZXMgY29waWVkIHRvIGNsaXBib2FyZC4nLFxuICAgICAgbWZhU2VjcmV0Q29waWVkOiAnU2VjcmV0IGNvcGllZCB0byBjbGlwYm9hcmQuJyxcbiAgICAgIG1mYUVycm9ySW52YWxpZENvZGU6ICdJbmNvcnJlY3QgY29kZS4nLFxuICAgICAgbWZhRXJyb3JFeHBpcmVkQ29kZTogJ1RoZSBjb2RlIGhhcyBleHBpcmVkLiBSZXF1ZXN0IGEgbmV3IG9uZS4nLFxuICAgICAgbWZhRXJyb3JDb2RlVXNlZDogJ1RoaXMgY29kZSB3YXMgYWxyZWFkeSB1c2VkLicsXG4gICAgICBtZmFFcnJvckFscmVhZHlBY3RpdmU6ICdNRkEgaXMgYWxyZWFkeSBlbmFibGVkLicsXG4gICAgICBtZmFFcnJvck5vdEVuYWJsZWQ6ICdNRkEgaXMgbm90IGVuYWJsZWQuJyxcbiAgICAgIG1mYUVycm9yUGhvbmVSZXF1aXJlZDogJ1Bob25lIG51bWJlciByZXF1aXJlZC4nLFxuICAgICAgbWZhRXJyb3JQaG9uZUV4aXN0czogJ1RoaXMgcGhvbmUgaXMgYWxyZWFkeSBpbiB1c2UuJyxcblxuICAgICAgLy8gTGVnYWxcbiAgICAgIGxlZ2FsUHJlZml4OiAnV2UgdXNlIHRoZSBzZXJ2aWNlcyBvZicsXG4gICAgICBsZWdhbFN1ZmZpeDogJ3RvIG9mZmVyIHlvdSBhIHNlY3VyZSBleHBlcmllbmNlLiBCeSBzaWduaW5nIGluLCB5b3UgYWNjZXB0IG91cicsXG4gICAgICB0ZXJtc0FuZENvbmRpdGlvbnM6ICdUZXJtcyBhbmQgQ29uZGl0aW9ucycsXG4gICAgICBhbmQ6ICdhbmQnLFxuICAgICAgcHJpdmFjeVBvbGljeTogJ1ByaXZhY3kgUG9saWN5JyxcblxuICAgICAgLy8gQWNjaW9uZXMgZ2Vuw6lyaWNhc1xuICAgICAgY2xvc2U6ICdDbG9zZScsXG5cbiAgICAgIC8vIFRvYXN0c1xuICAgICAgd2VsY29tZTogJ1dlbGNvbWUhJyxcbiAgICAgIGNvbXBsZXRlQWxsRmllbGRzOiAnQ29tcGxldGUgYWxsIGZpZWxkcy4nLFxuICAgICAgZW50ZXJFbWFpbDogJ0VudGVyIHlvdXIgZW1haWwuJyxcblxuICAgICAgLy8gRXJyb3JzXG4gICAgICBlcnJvckludmFsaWRDcmVkZW50aWFsczogJ0luY29ycmVjdCBlbWFpbCBvciBwYXNzd29yZCcsXG4gICAgICBlcnJvckVtYWlsTm90VmVyaWZpZWQ6ICdZb3UgbXVzdCB2ZXJpZnkgeW91ciBlbWFpbCcsXG4gICAgICBlcnJvckFjY291bnRTdXNwZW5kZWQ6ICdZb3VyIGFjY291bnQgaGFzIGJlZW4gc3VzcGVuZGVkJyxcbiAgICAgIGVycm9yRW1haWxFeGlzdHM6ICdUaGlzIGVtYWlsIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCcsXG4gICAgICBlcnJvcldlYWtQYXNzd29yZDogJ1Bhc3N3b3JkIGlzIHRvbyB3ZWFrJyxcbiAgICAgIGVycm9ySW52YWxpZENvZGU6ICdJbmNvcnJlY3QgY29kZScsXG4gICAgICBlcnJvckV4cGlyZWRDb2RlOiAnQ29kZSBoYXMgZXhwaXJlZC4gUmVxdWVzdCBhIG5ldyBvbmUuJyxcbiAgICAgIGVycm9yVG9vTWFueUF0dGVtcHRzOiAnVG9vIG1hbnkgYXR0ZW1wdHMsIHRyeSBhZ2FpbiBsYXRlcicsXG4gICAgICBlcnJvck1GQUludmFsaWRDb2RlOiAnSW5jb3JyZWN0IHZlcmlmaWNhdGlvbiBjb2RlJyxcbiAgICAgIGVycm9yUG9wdXBCbG9ja2VkOiAnUGxlYXNlIGFsbG93IHBvcC11cHMnLFxuICAgICAgZXJyb3JPQXV0aEZhaWxlZDogJ0F1dGhlbnRpY2F0aW9uIGVycm9yJyxcbiAgICAgIGVycm9yR2VuZXJpYzogJ0FuIGVycm9yIG9jY3VycmVkLiBQbGVhc2UgdHJ5IGFnYWluLicsXG4gICAgfSxcbiAgfSxcblxuICBBcHBDb25maWc6IHtcbiAgICBlczoge1xuICAgICAgLy8gVXBkYXRlIGJhbm5lclxuICAgICAgdXBkYXRlQXZhaWxhYmxlOiAnTnVldmEgdmVyc2nDs24gZGlzcG9uaWJsZScsXG4gICAgICB1cGRhdGVOb3c6ICdBY3R1YWxpemFyIGFob3JhJyxcbiAgICAgIGNsaWNrVG9VcGRhdGU6ICdIYXogY2xpYyBhcXXDrSBwYXJhIGFjdHVhbGl6YXIgYSBsYSDDumx0aW1hIHZlcnNpw7NuJyxcblxuICAgICAgLy8gTWFpbnRlbmFuY2UgcGFnZVxuICAgICAgbWFpbnRlbmFuY2VNb2RlOiAnU2lzdGVtYSBlbiBtYW50ZW5pbWllbnRvJyxcbiAgICAgIG1haW50ZW5hbmNlTWVzc2FnZTogJ0VzdGFtb3MgcmVhbGl6YW5kbyBtZWpvcmFzLiBWdWVsdmUgcHJvbnRvLicsXG4gICAgfSxcbiAgICBlbjoge1xuICAgICAgLy8gVXBkYXRlIGJhbm5lclxuICAgICAgdXBkYXRlQXZhaWxhYmxlOiAnTmV3IHZlcnNpb24gYXZhaWxhYmxlJyxcbiAgICAgIHVwZGF0ZU5vdzogJ1VwZGF0ZSBub3cnLFxuICAgICAgY2xpY2tUb1VwZGF0ZTogJ0NsaWNrIGhlcmUgdG8gdXBkYXRlIHRvIHRoZSBsYXRlc3QgdmVyc2lvbicsXG5cbiAgICAgIC8vIE1haW50ZW5hbmNlIHBhZ2VcbiAgICAgIG1haW50ZW5hbmNlTW9kZTogJ1N5c3RlbSB1bmRlciBtYWludGVuYW5jZScsXG4gICAgICBtYWludGVuYW5jZU1lc3NhZ2U6ICdXZSBhcmUgbWFraW5nIGltcHJvdmVtZW50cy4gQ29tZSBiYWNrIHNvb24uJyxcbiAgICB9LFxuICB9LFxuXG4gIEZlZWRiYWNrOiB7XG4gICAgZXM6IHtcbiAgICAgIHBhZ2VVc2VmdWxRdWVzdGlvbjogJ8K/VGUgcmVzdWx0w7Mgw7p0aWwgZXN0YSBww6FnaW5hPycsXG4gICAgICBjb21tZW50UGxhY2Vob2xkZXI6ICdDdcOpbnRhbm9zIGPDs21vIHBvZGVtb3MgbWVqb3Jhci4uLicsXG4gICAgICB0aGFua1lvdU1lc3NhZ2U6ICfCoUdyYWNpYXMgcG9yIHR1IGZlZWRiYWNrIScsXG4gICAgfSxcbiAgICBlbjoge1xuICAgICAgcGFnZVVzZWZ1bFF1ZXN0aW9uOiAnV2FzIHRoaXMgcGFnZSBoZWxwZnVsPycsXG4gICAgICBjb21tZW50UGxhY2Vob2xkZXI6ICdUZWxsIHVzIGhvdyB3ZSBjYW4gaW1wcm92ZS4uLicsXG4gICAgICB0aGFua1lvdU1lc3NhZ2U6ICdUaGFua3MgZm9yIHlvdXIgZmVlZGJhY2shJyxcbiAgICB9LFxuICB9LFxuXG4gIENvbnRlbnRSZWFjdGlvbjoge1xuICAgIGVzOiB7XG4gICAgICBxdWVzdGlvbjogJ8K/VGUgcmVzdWx0w7Mgw7p0aWwgZXN0ZSBjb250ZW5pZG8/JyxcbiAgICAgIGNvbW1lbnRQbGFjZWhvbGRlcjogJ0N1w6ludGFub3MgbcOhcyAob3BjaW9uYWwpLi4uJyxcbiAgICAgIHN1Ym1pdDogJ0VudmlhcicsXG4gICAgICB1cGRhdGU6ICdBY3R1YWxpemFyJyxcbiAgICAgIHRoYW5rWW91OiAnwqFHcmFjaWFzIHBvciB0dSBvcGluacOzbiEnLFxuICAgICAgc3VibWl0dGVkOiAnVHUgb3BpbmnDs24gaGEgc2lkbyByZWdpc3RyYWRhJyxcbiAgICAgIGVycm9yU3VibWl0dGluZzogJ0Vycm9yIGFsIGVudmlhci4gSW50ZW50YSBkZSBudWV2by4nLFxuICAgIH0sXG4gICAgZW46IHtcbiAgICAgIHF1ZXN0aW9uOiAnV2FzIHRoaXMgY29udGVudCBoZWxwZnVsPycsXG4gICAgICBjb21tZW50UGxhY2Vob2xkZXI6ICdUZWxsIHVzIG1vcmUgKG9wdGlvbmFsKS4uLicsXG4gICAgICBzdWJtaXQ6ICdTdWJtaXQnLFxuICAgICAgdXBkYXRlOiAnVXBkYXRlJyxcbiAgICAgIHRoYW5rWW91OiAnVGhhbmtzIGZvciB5b3VyIGZlZWRiYWNrIScsXG4gICAgICBzdWJtaXR0ZWQ6ICdZb3VyIGZlZWRiYWNrIGhhcyBiZWVuIHJlY29yZGVkJyxcbiAgICAgIGVycm9yU3VibWl0dGluZzogJ0Vycm9yIHN1Ym1pdHRpbmcuIFBsZWFzZSB0cnkgYWdhaW4uJyxcbiAgICB9LFxuICB9LFxuXG4gIEF2YXRhclVwbG9hZDoge1xuICAgIGVzOiB7XG4gICAgICAvLyBBY3Rpb25zXG4gICAgICBjaGFuZ2VQaG90bzogJ0NhbWJpYXIgZm90bycsXG4gICAgICBjcm9wSW1hZ2U6ICdSZWNvcnRhciBpbWFnZW4nLFxuICAgICAgY29uZmlybTogJ0NvbmZpcm1hcicsXG5cbiAgICAgIC8vIFN0YXR1c1xuICAgICAgdXBsb2FkaW5nOiAnU3ViaWVuZG8gZm90by4uLicsXG4gICAgICB1cGxvYWRTdWNjZXNzOiAnRm90byBhY3R1YWxpemFkYScsXG5cbiAgICAgIC8vIEVycm9yc1xuICAgICAgdXBsb2FkRXJyb3I6ICdFcnJvciBhbCBzdWJpciBsYSBpbWFnZW4nLFxuICAgICAgdXBsb2FkVGltZW91dDogJ0xhIHN1YmlkYSB0YXJkw7MgZGVtYXNpYWRvLiBWZXJpZmljYSB0dSBjb25leGnDs24uJyxcbiAgICAgIG5ldHdvcmtFcnJvcjogJ0Vycm9yIGRlIHJlZC4gVmVyaWZpY2EgdHUgY29uZXhpw7NuIGEgaW50ZXJuZXQuJyxcbiAgICAgIGludmFsaWRGb3JtYXQ6ICdGb3JtYXRvIG5vIHbDoWxpZG8uIFVzYSBKUEcsIFBORyBvIFdlYlAuJyxcbiAgICAgIGZpbGVUb29MYXJnZTogJ0xhIGltYWdlbiBlcyBtdXkgZ3JhbmRlLiBNw6F4aW1vIDEwTUIuJyxcbiAgICAgIGxvYWRGYWlsZWQ6ICdObyBzZSBwdWRvIGNhcmdhciBsYSBpbWFnZW4nLFxuICAgIH0sXG4gICAgZW46IHtcbiAgICAgIC8vIEFjdGlvbnNcbiAgICAgIGNoYW5nZVBob3RvOiAnQ2hhbmdlIHBob3RvJyxcbiAgICAgIGNyb3BJbWFnZTogJ0Nyb3AgaW1hZ2UnLFxuICAgICAgY29uZmlybTogJ0NvbmZpcm0nLFxuXG4gICAgICAvLyBTdGF0dXNcbiAgICAgIHVwbG9hZGluZzogJ1VwbG9hZGluZyBwaG90by4uLicsXG4gICAgICB1cGxvYWRTdWNjZXNzOiAnUGhvdG8gdXBkYXRlZCcsXG5cbiAgICAgIC8vIEVycm9yc1xuICAgICAgdXBsb2FkRXJyb3I6ICdFcnJvciB1cGxvYWRpbmcgaW1hZ2UnLFxuICAgICAgdXBsb2FkVGltZW91dDogJ1VwbG9hZCB0b29rIHRvbyBsb25nLiBDaGVjayB5b3VyIGNvbm5lY3Rpb24uJyxcbiAgICAgIG5ldHdvcmtFcnJvcjogJ05ldHdvcmsgZXJyb3IuIENoZWNrIHlvdXIgaW50ZXJuZXQgY29ubmVjdGlvbi4nLFxuICAgICAgaW52YWxpZEZvcm1hdDogJ0ludmFsaWQgZm9ybWF0LiBVc2UgSlBHLCBQTkcgb3IgV2ViUC4nLFxuICAgICAgZmlsZVRvb0xhcmdlOiAnSW1hZ2UgaXMgdG9vIGxhcmdlLiBNYXhpbXVtIDEwTUIuJyxcbiAgICAgIGxvYWRGYWlsZWQ6ICdDb3VsZCBub3QgbG9hZCBpbWFnZScsXG4gICAgfSxcbiAgfSxcbn07XG4iXX0=
|
package/esm2022/lib/version.mjs
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Current version of valtech-components.
|
|
3
3
|
* This is automatically updated during the publish process.
|
|
4
4
|
*/
|
|
5
|
-
export const VERSION = '2.0.
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
export const VERSION = '2.0.850';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC44NTAnO1xuIl19
|
|
@@ -53,7 +53,7 @@ import 'prismjs/components/prism-json';
|
|
|
53
53
|
* Current version of valtech-components.
|
|
54
54
|
* This is automatically updated during the publish process.
|
|
55
55
|
*/
|
|
56
|
-
const VERSION = '2.0.
|
|
56
|
+
const VERSION = '2.0.850';
|
|
57
57
|
|
|
58
58
|
/**
|
|
59
59
|
* Servicio para gestionar presets de componentes.
|
|
@@ -4401,6 +4401,7 @@ const VALTECH_DEFAULT_CONTENT = {
|
|
|
4401
4401
|
mfaEnabledOk: '¡MFA habilitado correctamente!',
|
|
4402
4402
|
mfaDisabledOk: 'MFA deshabilitado correctamente.',
|
|
4403
4403
|
mfaCodesCopied: 'Códigos copiados al portapapeles.',
|
|
4404
|
+
mfaSecretCopied: 'Secreto copiado al portapapeles.',
|
|
4404
4405
|
mfaErrorInvalidCode: 'Código incorrecto.',
|
|
4405
4406
|
mfaErrorExpiredCode: 'El código ha expirado. Solicita uno nuevo.',
|
|
4406
4407
|
mfaErrorCodeUsed: 'Este código ya fue utilizado.',
|
|
@@ -4557,6 +4558,7 @@ const VALTECH_DEFAULT_CONTENT = {
|
|
|
4557
4558
|
mfaEnabledOk: 'MFA enabled successfully!',
|
|
4558
4559
|
mfaDisabledOk: 'MFA disabled successfully.',
|
|
4559
4560
|
mfaCodesCopied: 'Codes copied to clipboard.',
|
|
4561
|
+
mfaSecretCopied: 'Secret copied to clipboard.',
|
|
4560
4562
|
mfaErrorInvalidCode: 'Incorrect code.',
|
|
4561
4563
|
mfaErrorExpiredCode: 'The code has expired. Request a new one.',
|
|
4562
4564
|
mfaErrorCodeUsed: 'This code was already used.',
|
|
@@ -31288,6 +31290,8 @@ class MfaModalComponent {
|
|
|
31288
31290
|
this.totpQr = signal(null);
|
|
31289
31291
|
/** Códigos de respaldo recién regenerados — se muestran una sola vez. */
|
|
31290
31292
|
this.regeneratedCodes = signal(null);
|
|
31293
|
+
/** Marca momentánea cuando el secreto TOTP se acaba de copiar (feedback visual). */
|
|
31294
|
+
this.copiedSecret = signal(false);
|
|
31291
31295
|
this.resendCooldown = signal(0);
|
|
31292
31296
|
this.pinControl = new FormControl('', [Validators.required, Validators.minLength(6), Validators.maxLength(6)]);
|
|
31293
31297
|
this.phoneControl = new FormControl('', [Validators.required, Validators.pattern(/^\+[1-9]\d{6,14}$/)]);
|
|
@@ -31330,7 +31334,7 @@ class MfaModalComponent {
|
|
|
31330
31334
|
state: this.working() ? ComponentStates.WORKING : ComponentStates.ENABLED,
|
|
31331
31335
|
}));
|
|
31332
31336
|
this.resendTimer = null;
|
|
31333
|
-
addIcons({ informationCircleOutline });
|
|
31337
|
+
addIcons({ informationCircleOutline, copyOutline, checkmarkOutline });
|
|
31334
31338
|
}
|
|
31335
31339
|
ngOnDestroy() {
|
|
31336
31340
|
this.stopCooldown();
|
|
@@ -31562,6 +31566,18 @@ class MfaModalComponent {
|
|
|
31562
31566
|
/* sin recurso de copia disponible */
|
|
31563
31567
|
}
|
|
31564
31568
|
}
|
|
31569
|
+
/** Copia el secreto TOTP al portapapeles + feedback visual (check) durante 2s. */
|
|
31570
|
+
async copySecret(secret) {
|
|
31571
|
+
try {
|
|
31572
|
+
await navigator.clipboard.writeText(secret);
|
|
31573
|
+
this.copiedSecret.set(true);
|
|
31574
|
+
this.showToast(this.t('mfaSecretCopied'));
|
|
31575
|
+
setTimeout(() => this.copiedSecret.set(false), 2000);
|
|
31576
|
+
}
|
|
31577
|
+
catch {
|
|
31578
|
+
/* sin recurso de copia disponible */
|
|
31579
|
+
}
|
|
31580
|
+
}
|
|
31565
31581
|
/** Etiqueta i18n legible para un método MFA. */
|
|
31566
31582
|
methodLabel(method) {
|
|
31567
31583
|
switch (method) {
|
|
@@ -31634,7 +31650,7 @@ class MfaModalComponent {
|
|
|
31634
31650
|
this.toast.show({ message, duration: 3500 });
|
|
31635
31651
|
}
|
|
31636
31652
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MfaModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31637
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: MfaModalComponent, isStandalone: true, selector: "val-mfa-modal", inputs: { isOpen: "isOpen", prefillCode: "prefillCode" }, outputs: { changed: "changed", dismissed: "dismissed" }, ngImport: i0, template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n <ion-content class=\"ion-padding\">\n <section class=\"mfa-modal\">\n <val-display [props]=\"{ content: t('mfaManageTitle'), size: 'small', color: 'dark' }\" />\n\n @switch (step()) { @case ('loading') {\n <div class=\"mfa-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @case ('status') { @if (mfaEnabled()) {\n <p class=\"mfa-status mfa-status--on\">{{ t('mfaEnabledLabel') }} \u00B7 {{ methodLabel(mfaMethod()) }}</p>\n\n @if (mfaMethod() === 'TOTP') {\n <div class=\"mfa-block\">\n <h3>{{ t('mfaBackupCodesTitle') }}</h3>\n <p class=\"mfa-text\">{{ t('mfaBackupCodesAvailable') }}: {{ backupCodesCount() }}</p>\n\n @if (regeneratedCodes(); as codes) {\n <div class=\"mfa-alert\">\n <ion-icon name=\"information-circle-outline\"></ion-icon>\n <p>{{ t('mfaBackupCodesSaveWarning') }} {{ t('mfaBackupCodesExplain') }}</p>\n </div>\n <div class=\"mfa-codes\">\n @for (code of codes; track code) {\n <code class=\"mfa-code\">{{ code }}</code>\n }\n </div>\n <ion-button expand=\"block\" color=\"dark\" fill=\"outline\" (click)=\"copyCodes(codes)\">\n {{ t('mfaCopyCodes') }}\n </ion-button>\n } @else { @if (backupCodesCount() < 3) {\n <div class=\"mfa-alert\">\n <ion-icon name=\"information-circle-outline\"></ion-icon>\n <p>{{ t('mfaBackupCodesLow') }}</p>\n </div>\n }\n <ion-button\n expand=\"block\"\n color=\"dark\"\n fill=\"outline\"\n [disabled]=\"working()\"\n (click)=\"regenerateBackupCodes()\"\n >\n @if (working()) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ t('mfaRegenerateCodes') }} }\n </ion-button>\n }\n </div>\n }\n\n <ion-button expand=\"block\" color=\"dark\" fill=\"outline\" (click)=\"goToDisable()\">\n {{ t('mfaDisableButton') }}\n </ion-button>\n } @else {\n <p class=\"mfa-status mfa-status--off\">{{ t('mfaDisabledLabel') }}</p>\n <p class=\"mfa-text\">{{ t('mfaDisabledHint') }}</p>\n <ion-button expand=\"block\" (click)=\"goToMethodSelect()\"> {{ t('mfaEnableButton') }} </ion-button>\n } } @case ('method-select') {\n <val-title [props]=\"{ content: t('mfaEnableTitle'), size: 'large', color: '', bold: false }\" />\n <p class=\"mfa-text\">{{ t('mfaMethodPrompt') }}</p>\n\n <ion-radio-group [value]=\"selectedMethod()\" (ionChange)=\"selectedMethod.set($event.detail.value)\">\n <ion-item>\n <ion-radio slot=\"start\" value=\"TOTP\"></ion-radio>\n <ion-label>\n <strong>{{ t('mfaMethodTotp') }}</strong>\n <p>{{ t('mfaMethodTotpHint') }}</p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-radio slot=\"start\" value=\"EMAIL\"></ion-radio>\n <ion-label>\n <strong>{{ t('mfaMethodEmail') }}</strong>\n <p>{{ t('mfaMethodEmailHint') }}</p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-radio slot=\"start\" value=\"SMS\"></ion-radio>\n <ion-label>\n <strong>{{ t('mfaMethodSms') }}</strong>\n <p>{{ t('mfaMethodSmsHint') }}</p>\n </ion-label>\n </ion-item>\n </ion-radio-group>\n\n @if (selectedMethod() === 'SMS' && !userPhone()) {\n <ion-input\n label=\"{{ t('mfaPhoneLabel') }}\"\n labelPlacement=\"floating\"\n fill=\"outline\"\n type=\"tel\"\n placeholder=\"+56912345678\"\n [formControl]=\"phoneControl\"\n ></ion-input>\n @if (phoneControl.invalid && phoneControl.touched) {\n <p class=\"mfa-error\">{{ t('mfaPhoneInvalid') }}</p>\n } } @if (selectedMethod() === 'SMS' && userPhone(); as phone) {\n <p class=\"mfa-text\">{{ t('mfaPhoneRegistered') }}: {{ phone }}</p>\n }\n\n <ion-button expand=\"block\" [disabled]=\"working()\" (click)=\"proceedWithMethod()\">\n @if (working()) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ t('mfaContinue') }} }\n </ion-button>\n <ion-button expand=\"block\" fill=\"clear\" color=\"dark\" (click)=\"backToStatus()\">\n {{ t('mfaCancel') }}\n </ion-button>\n } @case ('totp-setup') {\n <val-title [props]=\"{ content: t('mfaTotpSetupTitle'), size: 'large', color: '', bold: false }\" />\n <p class=\"mfa-text\">{{ t('mfaTotpStep1') }}</p>\n\n @if (totpQr(); as qr) {\n <div class=\"mfa-qr\">\n <val-qr-code [props]=\"{ qr: qr }\" />\n </div>\n } @if (totpSetup(); as setup) {\n <p class=\"mfa-text\">{{ t('mfaTotpManualEntry') }}</p>\n <code class=\"mfa-secret\">{{ setup.secret }}</code>\n\n <p class=\"mfa-text\">{{ t('mfaTotpStep2') }}</p>\n <div class=\"mfa-pin\">\n <val-pin-input [props]=\"pinInputProps\" />\n </div>\n\n <ion-button expand=\"block\" [disabled]=\"working()\" (click)=\"verifyTotp()\">\n @if (working()) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ t('mfaTotpVerify') }} }\n </ion-button>\n\n <div class=\"mfa-backup\">\n <h3>{{ t('mfaBackupCodesTitle') }}</h3>\n <div class=\"mfa-alert\">\n <ion-icon name=\"information-circle-outline\"></ion-icon>\n <p>{{ t('mfaBackupCodesSaveWarning') }} {{ t('mfaBackupCodesExplain') }}</p>\n </div>\n <div class=\"mfa-codes\">\n @for (code of setup.backupCodes; track code) {\n <code class=\"mfa-code\">{{ code }}</code>\n }\n </div>\n <ion-button expand=\"block\" color=\"dark\" fill=\"outline\" (click)=\"copyCodes(setup.backupCodes)\">\n {{ t('mfaCopyCodes') }}\n </ion-button>\n </div>\n }\n\n <ion-button expand=\"block\" fill=\"clear\" color=\"dark\" (click)=\"backToStatus()\">\n {{ t('mfaCancel') }}\n </ion-button>\n } @case ('code-confirm') {\n <val-title [props]=\"{ content: t('mfaConfirmTitle'), size: 'large', color: '', bold: false }\" />\n <p class=\"mfa-text\">\n {{ selectedMethod() === 'EMAIL' ? t('mfaConfirmPromptEmail') : t('mfaConfirmPromptSms') }}\n </p>\n\n <div class=\"mfa-pin\">\n <val-pin-input [props]=\"pinInputProps\" />\n </div>\n\n <ion-button expand=\"block\" [disabled]=\"working()\" (click)=\"confirmCode()\">\n @if (working()) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ t('mfaConfirmButton') }} }\n </ion-button>\n\n <p class=\"mfa-resend\">\n {{ t('mfaNoCode') }} @if (resendCooldown() > 0) {\n <span class=\"mfa-text\">{{ t('mfaResendIn') }} {{ resendCooldown() }}s</span>\n } @else {\n <a (click)=\"resendCode()\">{{ t('mfaResend') }}</a>\n }\n </p>\n\n <ion-button expand=\"block\" fill=\"clear\" color=\"dark\" (click)=\"backToStatus()\">\n {{ t('mfaCancel') }}\n </ion-button>\n } @case ('disable') {\n <val-form [props]=\"disableFormProps()\" (onSubmit)=\"onDisableSubmit($event)\" />\n <ion-button expand=\"block\" fill=\"clear\" color=\"dark\" (click)=\"backToStatus()\">\n {{ t('mfaCancel') }}\n </ion-button>\n } }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".mfa-modal{display:flex;flex-direction:column;gap:14px;padding-top:4px}.mfa-loading{display:flex;justify-content:center;padding:40px 0}.mfa-status{font-weight:600;margin:0}.mfa-status--on{color:var(--ion-color-success-shade)}.mfa-status--off{color:var(--ion-color-dark)}.mfa-text{color:var(--ion-color-dark);font-size:14px;margin:0}.mfa-error{color:var(--ion-color-danger);font-size:13px;margin:4px 0 0}.mfa-block,.mfa-backup{display:flex;flex-direction:column;gap:12px}.mfa-block{padding:16px;border-radius:14px;background:var(--ion-color-light)}.mfa-block h3,.mfa-backup h3{font-size:15px;font-weight:600;margin:0;color:var(--ion-color-dark)}.mfa-alert{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:10px;background:var(--ion-color-light);border-left:3px solid var(--ion-color-primary)}.mfa-alert ion-icon{font-size:20px;color:var(--ion-color-primary);flex-shrink:0;margin-top:1px}.mfa-alert p{margin:0;font-size:13px;line-height:1.45;color:var(--ion-color-dark)}.mfa-qr{display:flex;justify-content:center;padding:8px 0}.mfa-secret{display:block;padding:10px 12px;border-radius:8px;background:var(--ion-color-light);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:15px;letter-spacing:.04em;word-break:break-all;text-align:center}.mfa-pin{display:flex;justify-content:center;padding:8px 0}.mfa-codes{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding:12px;border-radius:12px;background:var(--ion-color-light)}.mfa-code{padding:8px;border-radius:6px;background:var(--ion-background-color, #fff);color:var(--ion-color-dark);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;text-align:center}.mfa-resend{text-align:center;font-size:14px;color:var(--ion-color-dark);margin:4px 0}.mfa-resend a{color:var(--ion-color-primary);cursor:pointer;font-weight:600}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonRadio, selector: "ion-radio", inputs: ["alignment", "color", "disabled", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonRadioGroup, selector: "ion-radio-group", inputs: ["allowEmptySelection", "compareWith", "errorText", "helperText", "name", "value"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: QrCodeComponent, selector: "val-qr-code", inputs: ["props"], outputs: ["actionComplete", "imageLoad", "imageError"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: PinInputComponent, selector: "val-pin-input", inputs: ["props"] }] }); }
|
|
31653
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: MfaModalComponent, isStandalone: true, selector: "val-mfa-modal", inputs: { isOpen: "isOpen", prefillCode: "prefillCode" }, outputs: { changed: "changed", dismissed: "dismissed" }, ngImport: i0, template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n <ion-content class=\"ion-padding\">\n <section class=\"mfa-modal\">\n <val-display [props]=\"{ content: t('mfaManageTitle'), size: 'small', color: 'dark' }\" />\n\n @switch (step()) { @case ('loading') {\n <div class=\"mfa-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @case ('status') { @if (mfaEnabled()) {\n <p class=\"mfa-status mfa-status--on\">{{ t('mfaEnabledLabel') }} \u00B7 {{ methodLabel(mfaMethod()) }}</p>\n\n @if (mfaMethod() === 'TOTP') {\n <div class=\"mfa-block\">\n <h3>{{ t('mfaBackupCodesTitle') }}</h3>\n <p class=\"mfa-text\">{{ t('mfaBackupCodesAvailable') }}: {{ backupCodesCount() }}</p>\n\n @if (regeneratedCodes(); as codes) {\n <div class=\"mfa-alert\">\n <ion-icon name=\"information-circle-outline\"></ion-icon>\n <p>{{ t('mfaBackupCodesSaveWarning') }} {{ t('mfaBackupCodesExplain') }}</p>\n </div>\n <div class=\"mfa-codes\">\n @for (code of codes; track code) {\n <code class=\"mfa-code\">{{ code }}</code>\n }\n </div>\n <ion-button expand=\"block\" color=\"dark\" fill=\"outline\" (click)=\"copyCodes(codes)\">\n {{ t('mfaCopyCodes') }}\n </ion-button>\n } @else { @if (backupCodesCount() < 3) {\n <div class=\"mfa-alert\">\n <ion-icon name=\"information-circle-outline\"></ion-icon>\n <p>{{ t('mfaBackupCodesLow') }}</p>\n </div>\n }\n <ion-button\n expand=\"block\"\n color=\"dark\"\n fill=\"outline\"\n [disabled]=\"working()\"\n (click)=\"regenerateBackupCodes()\"\n >\n @if (working()) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ t('mfaRegenerateCodes') }} }\n </ion-button>\n }\n </div>\n }\n\n <ion-button expand=\"block\" color=\"dark\" fill=\"outline\" (click)=\"goToDisable()\">\n {{ t('mfaDisableButton') }}\n </ion-button>\n } @else {\n <p class=\"mfa-status mfa-status--off\">{{ t('mfaDisabledLabel') }}</p>\n <p class=\"mfa-text\">{{ t('mfaDisabledHint') }}</p>\n <ion-button expand=\"block\" (click)=\"goToMethodSelect()\"> {{ t('mfaEnableButton') }} </ion-button>\n } } @case ('method-select') {\n <val-title [props]=\"{ content: t('mfaEnableTitle'), size: 'large', color: '', bold: false }\" />\n <p class=\"mfa-text\">{{ t('mfaMethodPrompt') }}</p>\n\n <ion-radio-group [value]=\"selectedMethod()\" (ionChange)=\"selectedMethod.set($event.detail.value)\">\n <ion-item>\n <ion-radio slot=\"start\" value=\"TOTP\"></ion-radio>\n <ion-label>\n <strong>{{ t('mfaMethodTotp') }}</strong>\n <p>{{ t('mfaMethodTotpHint') }}</p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-radio slot=\"start\" value=\"EMAIL\"></ion-radio>\n <ion-label>\n <strong>{{ t('mfaMethodEmail') }}</strong>\n <p>{{ t('mfaMethodEmailHint') }}</p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-radio slot=\"start\" value=\"SMS\"></ion-radio>\n <ion-label>\n <strong>{{ t('mfaMethodSms') }}</strong>\n <p>{{ t('mfaMethodSmsHint') }}</p>\n </ion-label>\n </ion-item>\n </ion-radio-group>\n\n @if (selectedMethod() === 'SMS' && !userPhone()) {\n <ion-input\n label=\"{{ t('mfaPhoneLabel') }}\"\n labelPlacement=\"floating\"\n fill=\"outline\"\n type=\"tel\"\n placeholder=\"+56912345678\"\n [formControl]=\"phoneControl\"\n ></ion-input>\n @if (phoneControl.invalid && phoneControl.touched) {\n <p class=\"mfa-error\">{{ t('mfaPhoneInvalid') }}</p>\n } } @if (selectedMethod() === 'SMS' && userPhone(); as phone) {\n <p class=\"mfa-text\">{{ t('mfaPhoneRegistered') }}: {{ phone }}</p>\n }\n\n <ion-button expand=\"block\" [disabled]=\"working()\" (click)=\"proceedWithMethod()\">\n @if (working()) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ t('mfaContinue') }} }\n </ion-button>\n <ion-button expand=\"block\" fill=\"clear\" color=\"dark\" (click)=\"backToStatus()\">\n {{ t('mfaCancel') }}\n </ion-button>\n } @case ('totp-setup') {\n <val-title [props]=\"{ content: t('mfaTotpSetupTitle'), size: 'large', color: '', bold: false }\" />\n <p class=\"mfa-text\">{{ t('mfaTotpStep1') }}</p>\n\n @if (totpQr(); as qr) {\n <div class=\"mfa-qr\">\n <val-qr-code [props]=\"{ qr: qr }\" />\n </div>\n } @if (totpSetup(); as setup) {\n <p class=\"mfa-text\">{{ t('mfaTotpManualEntry') }}</p>\n <div class=\"mfa-secret-row\">\n <code class=\"mfa-secret\">{{ setup.secret }}</code>\n <ion-button fill=\"clear\" size=\"small\" (click)=\"copySecret(setup.secret)\" [attr.aria-label]=\"t('copy')\">\n @if (copiedSecret()) {\n <ion-icon name=\"checkmark-outline\"></ion-icon>\n } @else {\n <ion-icon name=\"copy-outline\"></ion-icon>\n }\n </ion-button>\n </div>\n\n <p class=\"mfa-text\">{{ t('mfaTotpStep2') }}</p>\n <div class=\"mfa-pin\">\n <val-pin-input [props]=\"pinInputProps\" />\n </div>\n\n <ion-button expand=\"block\" [disabled]=\"working()\" (click)=\"verifyTotp()\">\n @if (working()) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ t('mfaTotpVerify') }} }\n </ion-button>\n\n <div class=\"mfa-backup\">\n <h3>{{ t('mfaBackupCodesTitle') }}</h3>\n <div class=\"mfa-alert\">\n <ion-icon name=\"information-circle-outline\"></ion-icon>\n <p>{{ t('mfaBackupCodesSaveWarning') }} {{ t('mfaBackupCodesExplain') }}</p>\n </div>\n <div class=\"mfa-codes\">\n @for (code of setup.backupCodes; track code) {\n <code class=\"mfa-code\">{{ code }}</code>\n }\n </div>\n <ion-button expand=\"block\" color=\"dark\" fill=\"outline\" (click)=\"copyCodes(setup.backupCodes)\">\n {{ t('mfaCopyCodes') }}\n </ion-button>\n </div>\n }\n\n <ion-button expand=\"block\" fill=\"clear\" color=\"dark\" (click)=\"backToStatus()\">\n {{ t('mfaCancel') }}\n </ion-button>\n } @case ('code-confirm') {\n <val-title [props]=\"{ content: t('mfaConfirmTitle'), size: 'large', color: '', bold: false }\" />\n <p class=\"mfa-text\">\n {{ selectedMethod() === 'EMAIL' ? t('mfaConfirmPromptEmail') : t('mfaConfirmPromptSms') }}\n </p>\n\n <div class=\"mfa-pin\">\n <val-pin-input [props]=\"pinInputProps\" />\n </div>\n\n <ion-button expand=\"block\" [disabled]=\"working()\" (click)=\"confirmCode()\">\n @if (working()) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ t('mfaConfirmButton') }} }\n </ion-button>\n\n <p class=\"mfa-resend\">\n {{ t('mfaNoCode') }} @if (resendCooldown() > 0) {\n <span class=\"mfa-text\">{{ t('mfaResendIn') }} {{ resendCooldown() }}s</span>\n } @else {\n <a (click)=\"resendCode()\">{{ t('mfaResend') }}</a>\n }\n </p>\n\n <ion-button expand=\"block\" fill=\"clear\" color=\"dark\" (click)=\"backToStatus()\">\n {{ t('mfaCancel') }}\n </ion-button>\n } @case ('disable') {\n <val-form [props]=\"disableFormProps()\" (onSubmit)=\"onDisableSubmit($event)\" />\n <ion-button expand=\"block\" fill=\"clear\" color=\"dark\" (click)=\"backToStatus()\">\n {{ t('mfaCancel') }}\n </ion-button>\n } }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".mfa-modal{display:flex;flex-direction:column;gap:14px;padding-top:4px}.mfa-loading{display:flex;justify-content:center;padding:40px 0}.mfa-status{display:inline-flex;align-items:center;width:fit-content;padding:4px 10px;border-radius:999px;font-size:13px;font-weight:600;margin:0}.mfa-status--on{color:var(--ion-color-success-shade);background:rgba(var(--ion-color-success-rgb),.12)}.mfa-status--off{color:var(--ion-color-medium-shade);background:var(--ion-color-light)}.mfa-secret-row{display:flex;align-items:center;gap:8px}.mfa-secret-row .mfa-secret{flex:1;margin:0}.mfa-secret-row ion-button{flex-shrink:0;--color: var(--ion-color-dark);margin:0}.mfa-text{color:var(--ion-color-dark);font-size:14px;margin:0}.mfa-error{color:var(--ion-color-danger);font-size:13px;margin:4px 0 0}.mfa-block,.mfa-backup{display:flex;flex-direction:column;gap:12px}.mfa-block{padding:16px;border-radius:14px;background:var(--ion-color-light)}.mfa-block h3,.mfa-backup h3{font-size:15px;font-weight:600;margin:0;color:var(--ion-color-dark)}.mfa-alert{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:10px;background:var(--ion-color-light);border-left:3px solid var(--ion-color-primary)}.mfa-alert ion-icon{font-size:20px;color:var(--ion-color-primary);flex-shrink:0;margin-top:1px}.mfa-alert p{margin:0;font-size:13px;line-height:1.45;color:var(--ion-color-dark)}.mfa-qr{display:flex;justify-content:center;padding:8px 0}.mfa-secret{display:block;padding:10px 12px;border-radius:8px;background:var(--ion-color-light);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:15px;letter-spacing:.04em;word-break:break-all;text-align:center}.mfa-pin{display:flex;justify-content:center;padding:8px 0}.mfa-codes{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding:12px;border-radius:12px;background:var(--ion-color-light)}.mfa-code{padding:8px;border-radius:6px;background:var(--ion-background-color, #fff);color:var(--ion-color-dark);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;text-align:center}.mfa-resend{text-align:center;font-size:14px;color:var(--ion-color-dark);margin:4px 0}.mfa-resend a{color:var(--ion-color-primary);cursor:pointer;font-weight:600}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonRadio, selector: "ion-radio", inputs: ["alignment", "color", "disabled", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonRadioGroup, selector: "ion-radio-group", inputs: ["allowEmptySelection", "compareWith", "errorText", "helperText", "name", "value"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: QrCodeComponent, selector: "val-qr-code", inputs: ["props"], outputs: ["actionComplete", "imageLoad", "imageError"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: PinInputComponent, selector: "val-pin-input", inputs: ["props"] }] }); }
|
|
31638
31654
|
}
|
|
31639
31655
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MfaModalComponent, decorators: [{
|
|
31640
31656
|
type: Component,
|
|
@@ -31658,7 +31674,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
31658
31674
|
QrCodeComponent,
|
|
31659
31675
|
TitleComponent,
|
|
31660
31676
|
PinInputComponent,
|
|
31661
|
-
], template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n <ion-content class=\"ion-padding\">\n <section class=\"mfa-modal\">\n <val-display [props]=\"{ content: t('mfaManageTitle'), size: 'small', color: 'dark' }\" />\n\n @switch (step()) { @case ('loading') {\n <div class=\"mfa-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @case ('status') { @if (mfaEnabled()) {\n <p class=\"mfa-status mfa-status--on\">{{ t('mfaEnabledLabel') }} \u00B7 {{ methodLabel(mfaMethod()) }}</p>\n\n @if (mfaMethod() === 'TOTP') {\n <div class=\"mfa-block\">\n <h3>{{ t('mfaBackupCodesTitle') }}</h3>\n <p class=\"mfa-text\">{{ t('mfaBackupCodesAvailable') }}: {{ backupCodesCount() }}</p>\n\n @if (regeneratedCodes(); as codes) {\n <div class=\"mfa-alert\">\n <ion-icon name=\"information-circle-outline\"></ion-icon>\n <p>{{ t('mfaBackupCodesSaveWarning') }} {{ t('mfaBackupCodesExplain') }}</p>\n </div>\n <div class=\"mfa-codes\">\n @for (code of codes; track code) {\n <code class=\"mfa-code\">{{ code }}</code>\n }\n </div>\n <ion-button expand=\"block\" color=\"dark\" fill=\"outline\" (click)=\"copyCodes(codes)\">\n {{ t('mfaCopyCodes') }}\n </ion-button>\n } @else { @if (backupCodesCount() < 3) {\n <div class=\"mfa-alert\">\n <ion-icon name=\"information-circle-outline\"></ion-icon>\n <p>{{ t('mfaBackupCodesLow') }}</p>\n </div>\n }\n <ion-button\n expand=\"block\"\n color=\"dark\"\n fill=\"outline\"\n [disabled]=\"working()\"\n (click)=\"regenerateBackupCodes()\"\n >\n @if (working()) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ t('mfaRegenerateCodes') }} }\n </ion-button>\n }\n </div>\n }\n\n <ion-button expand=\"block\" color=\"dark\" fill=\"outline\" (click)=\"goToDisable()\">\n {{ t('mfaDisableButton') }}\n </ion-button>\n } @else {\n <p class=\"mfa-status mfa-status--off\">{{ t('mfaDisabledLabel') }}</p>\n <p class=\"mfa-text\">{{ t('mfaDisabledHint') }}</p>\n <ion-button expand=\"block\" (click)=\"goToMethodSelect()\"> {{ t('mfaEnableButton') }} </ion-button>\n } } @case ('method-select') {\n <val-title [props]=\"{ content: t('mfaEnableTitle'), size: 'large', color: '', bold: false }\" />\n <p class=\"mfa-text\">{{ t('mfaMethodPrompt') }}</p>\n\n <ion-radio-group [value]=\"selectedMethod()\" (ionChange)=\"selectedMethod.set($event.detail.value)\">\n <ion-item>\n <ion-radio slot=\"start\" value=\"TOTP\"></ion-radio>\n <ion-label>\n <strong>{{ t('mfaMethodTotp') }}</strong>\n <p>{{ t('mfaMethodTotpHint') }}</p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-radio slot=\"start\" value=\"EMAIL\"></ion-radio>\n <ion-label>\n <strong>{{ t('mfaMethodEmail') }}</strong>\n <p>{{ t('mfaMethodEmailHint') }}</p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-radio slot=\"start\" value=\"SMS\"></ion-radio>\n <ion-label>\n <strong>{{ t('mfaMethodSms') }}</strong>\n <p>{{ t('mfaMethodSmsHint') }}</p>\n </ion-label>\n </ion-item>\n </ion-radio-group>\n\n @if (selectedMethod() === 'SMS' && !userPhone()) {\n <ion-input\n label=\"{{ t('mfaPhoneLabel') }}\"\n labelPlacement=\"floating\"\n fill=\"outline\"\n type=\"tel\"\n placeholder=\"+56912345678\"\n [formControl]=\"phoneControl\"\n ></ion-input>\n @if (phoneControl.invalid && phoneControl.touched) {\n <p class=\"mfa-error\">{{ t('mfaPhoneInvalid') }}</p>\n } } @if (selectedMethod() === 'SMS' && userPhone(); as phone) {\n <p class=\"mfa-text\">{{ t('mfaPhoneRegistered') }}: {{ phone }}</p>\n }\n\n <ion-button expand=\"block\" [disabled]=\"working()\" (click)=\"proceedWithMethod()\">\n @if (working()) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ t('mfaContinue') }} }\n </ion-button>\n <ion-button expand=\"block\" fill=\"clear\" color=\"dark\" (click)=\"backToStatus()\">\n {{ t('mfaCancel') }}\n </ion-button>\n } @case ('totp-setup') {\n <val-title [props]=\"{ content: t('mfaTotpSetupTitle'), size: 'large', color: '', bold: false }\" />\n <p class=\"mfa-text\">{{ t('mfaTotpStep1') }}</p>\n\n @if (totpQr(); as qr) {\n <div class=\"mfa-qr\">\n <val-qr-code [props]=\"{ qr: qr }\" />\n </div>\n } @if (totpSetup(); as setup) {\n <p class=\"mfa-text\">{{ t('mfaTotpManualEntry') }}</p>\n <code class=\"mfa-secret\">{{ setup.secret }}</code>\n\n <p class=\"mfa-text\">{{ t('mfaTotpStep2') }}</p>\n <div class=\"mfa-pin\">\n <val-pin-input [props]=\"pinInputProps\" />\n </div>\n\n <ion-button expand=\"block\" [disabled]=\"working()\" (click)=\"verifyTotp()\">\n @if (working()) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ t('mfaTotpVerify') }} }\n </ion-button>\n\n <div class=\"mfa-backup\">\n <h3>{{ t('mfaBackupCodesTitle') }}</h3>\n <div class=\"mfa-alert\">\n <ion-icon name=\"information-circle-outline\"></ion-icon>\n <p>{{ t('mfaBackupCodesSaveWarning') }} {{ t('mfaBackupCodesExplain') }}</p>\n </div>\n <div class=\"mfa-codes\">\n @for (code of setup.backupCodes; track code) {\n <code class=\"mfa-code\">{{ code }}</code>\n }\n </div>\n <ion-button expand=\"block\" color=\"dark\" fill=\"outline\" (click)=\"copyCodes(setup.backupCodes)\">\n {{ t('mfaCopyCodes') }}\n </ion-button>\n </div>\n }\n\n <ion-button expand=\"block\" fill=\"clear\" color=\"dark\" (click)=\"backToStatus()\">\n {{ t('mfaCancel') }}\n </ion-button>\n } @case ('code-confirm') {\n <val-title [props]=\"{ content: t('mfaConfirmTitle'), size: 'large', color: '', bold: false }\" />\n <p class=\"mfa-text\">\n {{ selectedMethod() === 'EMAIL' ? t('mfaConfirmPromptEmail') : t('mfaConfirmPromptSms') }}\n </p>\n\n <div class=\"mfa-pin\">\n <val-pin-input [props]=\"pinInputProps\" />\n </div>\n\n <ion-button expand=\"block\" [disabled]=\"working()\" (click)=\"confirmCode()\">\n @if (working()) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ t('mfaConfirmButton') }} }\n </ion-button>\n\n <p class=\"mfa-resend\">\n {{ t('mfaNoCode') }} @if (resendCooldown() > 0) {\n <span class=\"mfa-text\">{{ t('mfaResendIn') }} {{ resendCooldown() }}s</span>\n } @else {\n <a (click)=\"resendCode()\">{{ t('mfaResend') }}</a>\n }\n </p>\n\n <ion-button expand=\"block\" fill=\"clear\" color=\"dark\" (click)=\"backToStatus()\">\n {{ t('mfaCancel') }}\n </ion-button>\n } @case ('disable') {\n <val-form [props]=\"disableFormProps()\" (onSubmit)=\"onDisableSubmit($event)\" />\n <ion-button expand=\"block\" fill=\"clear\" color=\"dark\" (click)=\"backToStatus()\">\n {{ t('mfaCancel') }}\n </ion-button>\n } }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".mfa-modal{display:flex;flex-direction:column;gap:14px;padding-top:4px}.mfa-loading{display:flex;justify-content:center;padding:40px 0}.mfa-status{font-weight:600;margin:0}.mfa-status--on{color:var(--ion-color-success-shade)}.mfa-status--off{color:var(--ion-color-dark)}.mfa-text{color:var(--ion-color-dark);font-size:14px;margin:0}.mfa-error{color:var(--ion-color-danger);font-size:13px;margin:4px 0 0}.mfa-block,.mfa-backup{display:flex;flex-direction:column;gap:12px}.mfa-block{padding:16px;border-radius:14px;background:var(--ion-color-light)}.mfa-block h3,.mfa-backup h3{font-size:15px;font-weight:600;margin:0;color:var(--ion-color-dark)}.mfa-alert{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:10px;background:var(--ion-color-light);border-left:3px solid var(--ion-color-primary)}.mfa-alert ion-icon{font-size:20px;color:var(--ion-color-primary);flex-shrink:0;margin-top:1px}.mfa-alert p{margin:0;font-size:13px;line-height:1.45;color:var(--ion-color-dark)}.mfa-qr{display:flex;justify-content:center;padding:8px 0}.mfa-secret{display:block;padding:10px 12px;border-radius:8px;background:var(--ion-color-light);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:15px;letter-spacing:.04em;word-break:break-all;text-align:center}.mfa-pin{display:flex;justify-content:center;padding:8px 0}.mfa-codes{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding:12px;border-radius:12px;background:var(--ion-color-light)}.mfa-code{padding:8px;border-radius:6px;background:var(--ion-background-color, #fff);color:var(--ion-color-dark);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;text-align:center}.mfa-resend{text-align:center;font-size:14px;color:var(--ion-color-dark);margin:4px 0}.mfa-resend a{color:var(--ion-color-primary);cursor:pointer;font-weight:600}\n"] }]
|
|
31677
|
+
], template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n <ion-content class=\"ion-padding\">\n <section class=\"mfa-modal\">\n <val-display [props]=\"{ content: t('mfaManageTitle'), size: 'small', color: 'dark' }\" />\n\n @switch (step()) { @case ('loading') {\n <div class=\"mfa-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @case ('status') { @if (mfaEnabled()) {\n <p class=\"mfa-status mfa-status--on\">{{ t('mfaEnabledLabel') }} \u00B7 {{ methodLabel(mfaMethod()) }}</p>\n\n @if (mfaMethod() === 'TOTP') {\n <div class=\"mfa-block\">\n <h3>{{ t('mfaBackupCodesTitle') }}</h3>\n <p class=\"mfa-text\">{{ t('mfaBackupCodesAvailable') }}: {{ backupCodesCount() }}</p>\n\n @if (regeneratedCodes(); as codes) {\n <div class=\"mfa-alert\">\n <ion-icon name=\"information-circle-outline\"></ion-icon>\n <p>{{ t('mfaBackupCodesSaveWarning') }} {{ t('mfaBackupCodesExplain') }}</p>\n </div>\n <div class=\"mfa-codes\">\n @for (code of codes; track code) {\n <code class=\"mfa-code\">{{ code }}</code>\n }\n </div>\n <ion-button expand=\"block\" color=\"dark\" fill=\"outline\" (click)=\"copyCodes(codes)\">\n {{ t('mfaCopyCodes') }}\n </ion-button>\n } @else { @if (backupCodesCount() < 3) {\n <div class=\"mfa-alert\">\n <ion-icon name=\"information-circle-outline\"></ion-icon>\n <p>{{ t('mfaBackupCodesLow') }}</p>\n </div>\n }\n <ion-button\n expand=\"block\"\n color=\"dark\"\n fill=\"outline\"\n [disabled]=\"working()\"\n (click)=\"regenerateBackupCodes()\"\n >\n @if (working()) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ t('mfaRegenerateCodes') }} }\n </ion-button>\n }\n </div>\n }\n\n <ion-button expand=\"block\" color=\"dark\" fill=\"outline\" (click)=\"goToDisable()\">\n {{ t('mfaDisableButton') }}\n </ion-button>\n } @else {\n <p class=\"mfa-status mfa-status--off\">{{ t('mfaDisabledLabel') }}</p>\n <p class=\"mfa-text\">{{ t('mfaDisabledHint') }}</p>\n <ion-button expand=\"block\" (click)=\"goToMethodSelect()\"> {{ t('mfaEnableButton') }} </ion-button>\n } } @case ('method-select') {\n <val-title [props]=\"{ content: t('mfaEnableTitle'), size: 'large', color: '', bold: false }\" />\n <p class=\"mfa-text\">{{ t('mfaMethodPrompt') }}</p>\n\n <ion-radio-group [value]=\"selectedMethod()\" (ionChange)=\"selectedMethod.set($event.detail.value)\">\n <ion-item>\n <ion-radio slot=\"start\" value=\"TOTP\"></ion-radio>\n <ion-label>\n <strong>{{ t('mfaMethodTotp') }}</strong>\n <p>{{ t('mfaMethodTotpHint') }}</p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-radio slot=\"start\" value=\"EMAIL\"></ion-radio>\n <ion-label>\n <strong>{{ t('mfaMethodEmail') }}</strong>\n <p>{{ t('mfaMethodEmailHint') }}</p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-radio slot=\"start\" value=\"SMS\"></ion-radio>\n <ion-label>\n <strong>{{ t('mfaMethodSms') }}</strong>\n <p>{{ t('mfaMethodSmsHint') }}</p>\n </ion-label>\n </ion-item>\n </ion-radio-group>\n\n @if (selectedMethod() === 'SMS' && !userPhone()) {\n <ion-input\n label=\"{{ t('mfaPhoneLabel') }}\"\n labelPlacement=\"floating\"\n fill=\"outline\"\n type=\"tel\"\n placeholder=\"+56912345678\"\n [formControl]=\"phoneControl\"\n ></ion-input>\n @if (phoneControl.invalid && phoneControl.touched) {\n <p class=\"mfa-error\">{{ t('mfaPhoneInvalid') }}</p>\n } } @if (selectedMethod() === 'SMS' && userPhone(); as phone) {\n <p class=\"mfa-text\">{{ t('mfaPhoneRegistered') }}: {{ phone }}</p>\n }\n\n <ion-button expand=\"block\" [disabled]=\"working()\" (click)=\"proceedWithMethod()\">\n @if (working()) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ t('mfaContinue') }} }\n </ion-button>\n <ion-button expand=\"block\" fill=\"clear\" color=\"dark\" (click)=\"backToStatus()\">\n {{ t('mfaCancel') }}\n </ion-button>\n } @case ('totp-setup') {\n <val-title [props]=\"{ content: t('mfaTotpSetupTitle'), size: 'large', color: '', bold: false }\" />\n <p class=\"mfa-text\">{{ t('mfaTotpStep1') }}</p>\n\n @if (totpQr(); as qr) {\n <div class=\"mfa-qr\">\n <val-qr-code [props]=\"{ qr: qr }\" />\n </div>\n } @if (totpSetup(); as setup) {\n <p class=\"mfa-text\">{{ t('mfaTotpManualEntry') }}</p>\n <div class=\"mfa-secret-row\">\n <code class=\"mfa-secret\">{{ setup.secret }}</code>\n <ion-button fill=\"clear\" size=\"small\" (click)=\"copySecret(setup.secret)\" [attr.aria-label]=\"t('copy')\">\n @if (copiedSecret()) {\n <ion-icon name=\"checkmark-outline\"></ion-icon>\n } @else {\n <ion-icon name=\"copy-outline\"></ion-icon>\n }\n </ion-button>\n </div>\n\n <p class=\"mfa-text\">{{ t('mfaTotpStep2') }}</p>\n <div class=\"mfa-pin\">\n <val-pin-input [props]=\"pinInputProps\" />\n </div>\n\n <ion-button expand=\"block\" [disabled]=\"working()\" (click)=\"verifyTotp()\">\n @if (working()) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ t('mfaTotpVerify') }} }\n </ion-button>\n\n <div class=\"mfa-backup\">\n <h3>{{ t('mfaBackupCodesTitle') }}</h3>\n <div class=\"mfa-alert\">\n <ion-icon name=\"information-circle-outline\"></ion-icon>\n <p>{{ t('mfaBackupCodesSaveWarning') }} {{ t('mfaBackupCodesExplain') }}</p>\n </div>\n <div class=\"mfa-codes\">\n @for (code of setup.backupCodes; track code) {\n <code class=\"mfa-code\">{{ code }}</code>\n }\n </div>\n <ion-button expand=\"block\" color=\"dark\" fill=\"outline\" (click)=\"copyCodes(setup.backupCodes)\">\n {{ t('mfaCopyCodes') }}\n </ion-button>\n </div>\n }\n\n <ion-button expand=\"block\" fill=\"clear\" color=\"dark\" (click)=\"backToStatus()\">\n {{ t('mfaCancel') }}\n </ion-button>\n } @case ('code-confirm') {\n <val-title [props]=\"{ content: t('mfaConfirmTitle'), size: 'large', color: '', bold: false }\" />\n <p class=\"mfa-text\">\n {{ selectedMethod() === 'EMAIL' ? t('mfaConfirmPromptEmail') : t('mfaConfirmPromptSms') }}\n </p>\n\n <div class=\"mfa-pin\">\n <val-pin-input [props]=\"pinInputProps\" />\n </div>\n\n <ion-button expand=\"block\" [disabled]=\"working()\" (click)=\"confirmCode()\">\n @if (working()) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ t('mfaConfirmButton') }} }\n </ion-button>\n\n <p class=\"mfa-resend\">\n {{ t('mfaNoCode') }} @if (resendCooldown() > 0) {\n <span class=\"mfa-text\">{{ t('mfaResendIn') }} {{ resendCooldown() }}s</span>\n } @else {\n <a (click)=\"resendCode()\">{{ t('mfaResend') }}</a>\n }\n </p>\n\n <ion-button expand=\"block\" fill=\"clear\" color=\"dark\" (click)=\"backToStatus()\">\n {{ t('mfaCancel') }}\n </ion-button>\n } @case ('disable') {\n <val-form [props]=\"disableFormProps()\" (onSubmit)=\"onDisableSubmit($event)\" />\n <ion-button expand=\"block\" fill=\"clear\" color=\"dark\" (click)=\"backToStatus()\">\n {{ t('mfaCancel') }}\n </ion-button>\n } }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".mfa-modal{display:flex;flex-direction:column;gap:14px;padding-top:4px}.mfa-loading{display:flex;justify-content:center;padding:40px 0}.mfa-status{display:inline-flex;align-items:center;width:fit-content;padding:4px 10px;border-radius:999px;font-size:13px;font-weight:600;margin:0}.mfa-status--on{color:var(--ion-color-success-shade);background:rgba(var(--ion-color-success-rgb),.12)}.mfa-status--off{color:var(--ion-color-medium-shade);background:var(--ion-color-light)}.mfa-secret-row{display:flex;align-items:center;gap:8px}.mfa-secret-row .mfa-secret{flex:1;margin:0}.mfa-secret-row ion-button{flex-shrink:0;--color: var(--ion-color-dark);margin:0}.mfa-text{color:var(--ion-color-dark);font-size:14px;margin:0}.mfa-error{color:var(--ion-color-danger);font-size:13px;margin:4px 0 0}.mfa-block,.mfa-backup{display:flex;flex-direction:column;gap:12px}.mfa-block{padding:16px;border-radius:14px;background:var(--ion-color-light)}.mfa-block h3,.mfa-backup h3{font-size:15px;font-weight:600;margin:0;color:var(--ion-color-dark)}.mfa-alert{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:10px;background:var(--ion-color-light);border-left:3px solid var(--ion-color-primary)}.mfa-alert ion-icon{font-size:20px;color:var(--ion-color-primary);flex-shrink:0;margin-top:1px}.mfa-alert p{margin:0;font-size:13px;line-height:1.45;color:var(--ion-color-dark)}.mfa-qr{display:flex;justify-content:center;padding:8px 0}.mfa-secret{display:block;padding:10px 12px;border-radius:8px;background:var(--ion-color-light);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:15px;letter-spacing:.04em;word-break:break-all;text-align:center}.mfa-pin{display:flex;justify-content:center;padding:8px 0}.mfa-codes{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding:12px;border-radius:12px;background:var(--ion-color-light)}.mfa-code{padding:8px;border-radius:6px;background:var(--ion-background-color, #fff);color:var(--ion-color-dark);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;text-align:center}.mfa-resend{text-align:center;font-size:14px;color:var(--ion-color-dark);margin:4px 0}.mfa-resend a{color:var(--ion-color-primary);cursor:pointer;font-weight:600}\n"] }]
|
|
31662
31678
|
}], ctorParameters: () => [], propDecorators: { isOpen: [{
|
|
31663
31679
|
type: Input
|
|
31664
31680
|
}], prefillCode: [{
|